[
  {
    "path": ".gitignore",
    "content": "cache/*\nFlibusta.Net/*\nFlibustaSQL/*"
  },
  {
    "path": "LICENSE",
    "content": "                    GNU GENERAL PUBLIC LICENSE\n                       Version 2, June 1991\n\n Copyright (C) 1989, 1991 Free Software Foundation, Inc.,\n 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA\n Everyone is permitted to copy and distribute verbatim copies\n of this license document, but changing it is not allowed.\n\n                            Preamble\n\n  The licenses for most software are designed to take away your\nfreedom to share and change it.  By contrast, the GNU General Public\nLicense is intended to guarantee your freedom to share and change free\nsoftware--to make sure the software is free for all its users.  This\nGeneral Public License applies to most of the Free Software\nFoundation's software and to any other program whose authors commit to\nusing it.  (Some other Free Software Foundation software is covered by\nthe GNU Lesser General Public License instead.)  You can apply it to\nyour programs, too.\n\n  When we speak of free software, we are referring to freedom, not\nprice.  Our General Public Licenses are designed to make sure that you\nhave the freedom to distribute copies of free software (and charge for\nthis service if you wish), that you receive source code or can get it\nif you want it, that you can change the software or use pieces of it\nin new free programs; and that you know you can do these things.\n\n  To protect your rights, we need to make restrictions that forbid\nanyone to deny you these rights or to ask you to surrender the rights.\nThese restrictions translate to certain responsibilities for you if you\ndistribute copies of the software, or if you modify it.\n\n  For example, if you distribute copies of such a program, whether\ngratis or for a fee, you must give the recipients all the rights that\nyou have.  You must make sure that they, too, receive or can get the\nsource code.  And you must show them these terms so they know their\nrights.\n\n  We protect your rights with two steps: (1) copyright the software, and\n(2) offer you this license which gives you legal permission to copy,\ndistribute and/or modify the software.\n\n  Also, for each author's protection and ours, we want to make certain\nthat everyone understands that there is no warranty for this free\nsoftware.  If the software is modified by someone else and passed on, we\nwant its recipients to know that what they have is not the original, so\nthat any problems introduced by others will not reflect on the original\nauthors' reputations.\n\n  Finally, any free program is threatened constantly by software\npatents.  We wish to avoid the danger that redistributors of a free\nprogram will individually obtain patent licenses, in effect making the\nprogram proprietary.  To prevent this, we have made it clear that any\npatent must be licensed for everyone's free use or not licensed at all.\n\n  The precise terms and conditions for copying, distribution and\nmodification follow.\n\n                    GNU GENERAL PUBLIC LICENSE\n   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION\n\n  0. This License applies to any program or other work which contains\na notice placed by the copyright holder saying it may be distributed\nunder the terms of this General Public License.  The \"Program\", below,\nrefers to any such program or work, and a \"work based on the Program\"\nmeans either the Program or any derivative work under copyright law:\nthat is to say, a work containing the Program or a portion of it,\neither verbatim or with modifications and/or translated into another\nlanguage.  (Hereinafter, translation is included without limitation in\nthe term \"modification\".)  Each licensee is addressed as \"you\".\n\nActivities other than copying, distribution and modification are not\ncovered by this License; they are outside its scope.  The act of\nrunning the Program is not restricted, and the output from the Program\nis covered only if its contents constitute a work based on the\nProgram (independent of having been made by running the Program).\nWhether that is true depends on what the Program does.\n\n  1. You may copy and distribute verbatim copies of the Program's\nsource code as you receive it, in any medium, provided that you\nconspicuously and appropriately publish on each copy an appropriate\ncopyright notice and disclaimer of warranty; keep intact all the\nnotices that refer to this License and to the absence of any warranty;\nand give any other recipients of the Program a copy of this License\nalong with the Program.\n\nYou may charge a fee for the physical act of transferring a copy, and\nyou may at your option offer warranty protection in exchange for a fee.\n\n  2. You may modify your copy or copies of the Program or any portion\nof it, thus forming a work based on the Program, and copy and\ndistribute such modifications or work under the terms of Section 1\nabove, provided that you also meet all of these conditions:\n\n    a) You must cause the modified files to carry prominent notices\n    stating that you changed the files and the date of any change.\n\n    b) You must cause any work that you distribute or publish, that in\n    whole or in part contains or is derived from the Program or any\n    part thereof, to be licensed as a whole at no charge to all third\n    parties under the terms of this License.\n\n    c) If the modified program normally reads commands interactively\n    when run, you must cause it, when started running for such\n    interactive use in the most ordinary way, to print or display an\n    announcement including an appropriate copyright notice and a\n    notice that there is no warranty (or else, saying that you provide\n    a warranty) and that users may redistribute the program under\n    these conditions, and telling the user how to view a copy of this\n    License.  (Exception: if the Program itself is interactive but\n    does not normally print such an announcement, your work based on\n    the Program is not required to print an announcement.)\n\nThese requirements apply to the modified work as a whole.  If\nidentifiable sections of that work are not derived from the Program,\nand can be reasonably considered independent and separate works in\nthemselves, then this License, and its terms, do not apply to those\nsections when you distribute them as separate works.  But when you\ndistribute the same sections as part of a whole which is a work based\non the Program, the distribution of the whole must be on the terms of\nthis License, whose permissions for other licensees extend to the\nentire whole, and thus to each and every part regardless of who wrote it.\n\nThus, it is not the intent of this section to claim rights or contest\nyour rights to work written entirely by you; rather, the intent is to\nexercise the right to control the distribution of derivative or\ncollective works based on the Program.\n\nIn addition, mere aggregation of another work not based on the Program\nwith the Program (or with a work based on the Program) on a volume of\na storage or distribution medium does not bring the other work under\nthe scope of this License.\n\n  3. You may copy and distribute the Program (or a work based on it,\nunder Section 2) in object code or executable form under the terms of\nSections 1 and 2 above provided that you also do one of the following:\n\n    a) Accompany it with the complete corresponding machine-readable\n    source code, which must be distributed under the terms of Sections\n    1 and 2 above on a medium customarily used for software interchange; or,\n\n    b) Accompany it with a written offer, valid for at least three\n    years, to give any third party, for a charge no more than your\n    cost of physically performing source distribution, a complete\n    machine-readable copy of the corresponding source code, to be\n    distributed under the terms of Sections 1 and 2 above on a medium\n    customarily used for software interchange; or,\n\n    c) Accompany it with the information you received as to the offer\n    to distribute corresponding source code.  (This alternative is\n    allowed only for noncommercial distribution and only if you\n    received the program in object code or executable form with such\n    an offer, in accord with Subsection b above.)\n\nThe source code for a work means the preferred form of the work for\nmaking modifications to it.  For an executable work, complete source\ncode means all the source code for all modules it contains, plus any\nassociated interface definition files, plus the scripts used to\ncontrol compilation and installation of the executable.  However, as a\nspecial exception, the source code distributed need not include\nanything that is normally distributed (in either source or binary\nform) with the major components (compiler, kernel, and so on) of the\noperating system on which the executable runs, unless that component\nitself accompanies the executable.\n\nIf distribution of executable or object code is made by offering\naccess to copy from a designated place, then offering equivalent\naccess to copy the source code from the same place counts as\ndistribution of the source code, even though third parties are not\ncompelled to copy the source along with the object code.\n\n  4. You may not copy, modify, sublicense, or distribute the Program\nexcept as expressly provided under this License.  Any attempt\notherwise to copy, modify, sublicense or distribute the Program is\nvoid, and will automatically terminate your rights under this License.\nHowever, parties who have received copies, or rights, from you under\nthis License will not have their licenses terminated so long as such\nparties remain in full compliance.\n\n  5. You are not required to accept this License, since you have not\nsigned it.  However, nothing else grants you permission to modify or\ndistribute the Program or its derivative works.  These actions are\nprohibited by law if you do not accept this License.  Therefore, by\nmodifying or distributing the Program (or any work based on the\nProgram), you indicate your acceptance of this License to do so, and\nall its terms and conditions for copying, distributing or modifying\nthe Program or works based on it.\n\n  6. Each time you redistribute the Program (or any work based on the\nProgram), the recipient automatically receives a license from the\noriginal licensor to copy, distribute or modify the Program subject to\nthese terms and conditions.  You may not impose any further\nrestrictions on the recipients' exercise of the rights granted herein.\nYou are not responsible for enforcing compliance by third parties to\nthis License.\n\n  7. If, as a consequence of a court judgment or allegation of patent\ninfringement or for any other reason (not limited to patent issues),\nconditions are imposed on you (whether by court order, agreement or\notherwise) that contradict the conditions of this License, they do not\nexcuse you from the conditions of this License.  If you cannot\ndistribute so as to satisfy simultaneously your obligations under this\nLicense and any other pertinent obligations, then as a consequence you\nmay not distribute the Program at all.  For example, if a patent\nlicense would not permit royalty-free redistribution of the Program by\nall those who receive copies directly or indirectly through you, then\nthe only way you could satisfy both it and this License would be to\nrefrain entirely from distribution of the Program.\n\nIf any portion of this section is held invalid or unenforceable under\nany particular circumstance, the balance of the section is intended to\napply and the section as a whole is intended to apply in other\ncircumstances.\n\nIt is not the purpose of this section to induce you to infringe any\npatents or other property right claims or to contest validity of any\nsuch claims; this section has the sole purpose of protecting the\nintegrity of the free software distribution system, which is\nimplemented by public license practices.  Many people have made\ngenerous contributions to the wide range of software distributed\nthrough that system in reliance on consistent application of that\nsystem; it is up to the author/donor to decide if he or she is willing\nto distribute software through any other system and a licensee cannot\nimpose that choice.\n\nThis section is intended to make thoroughly clear what is believed to\nbe a consequence of the rest of this License.\n\n  8. If the distribution and/or use of the Program is restricted in\ncertain countries either by patents or by copyrighted interfaces, the\noriginal copyright holder who places the Program under this License\nmay add an explicit geographical distribution limitation excluding\nthose countries, so that distribution is permitted only in or among\ncountries not thus excluded.  In such case, this License incorporates\nthe limitation as if written in the body of this License.\n\n  9. The Free Software Foundation may publish revised and/or new versions\nof the General Public License from time to time.  Such new versions will\nbe similar in spirit to the present version, but may differ in detail to\naddress new problems or concerns.\n\nEach version is given a distinguishing version number.  If the Program\nspecifies a version number of this License which applies to it and \"any\nlater version\", you have the option of following the terms and conditions\neither of that version or of any later version published by the Free\nSoftware Foundation.  If the Program does not specify a version number of\nthis License, you may choose any version ever published by the Free Software\nFoundation.\n\n  10. If you wish to incorporate parts of the Program into other free\nprograms whose distribution conditions are different, write to the author\nto ask for permission.  For software which is copyrighted by the Free\nSoftware Foundation, write to the Free Software Foundation; we sometimes\nmake exceptions for this.  Our decision will be guided by the two goals\nof preserving the free status of all derivatives of our free software and\nof promoting the sharing and reuse of software generally.\n\n                            NO WARRANTY\n\n  11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY\nFOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW.  EXCEPT WHEN\nOTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES\nPROVIDE THE PROGRAM \"AS IS\" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED\nOR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF\nMERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.  THE ENTIRE RISK AS\nTO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU.  SHOULD THE\nPROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,\nREPAIR OR CORRECTION.\n\n  12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING\nWILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR\nREDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,\nINCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING\nOUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED\nTO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY\nYOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER\nPROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE\nPOSSIBILITY OF SUCH DAMAGES.\n\n                     END OF TERMS AND CONDITIONS\n\n            How to Apply These Terms to Your New Programs\n\n  If you develop a new program, and you want it to be of the greatest\npossible use to the public, the best way to achieve this is to make it\nfree software which everyone can redistribute and change under these terms.\n\n  To do so, attach the following notices to the program.  It is safest\nto attach them to the start of each source file to most effectively\nconvey the exclusion of warranty; and each file should have at least\nthe \"copyright\" line and a pointer to where the full notice is found.\n\n    <one line to give the program's name and a brief idea of what it does.>\n    Copyright (C) <year>  <name of author>\n\n    This program is free software; you can redistribute it and/or modify\n    it under the terms of the GNU General Public License as published by\n    the Free Software Foundation; either version 2 of the License, or\n    (at your option) any later version.\n\n    This program is distributed in the hope that it will be useful,\n    but WITHOUT ANY WARRANTY; without even the implied warranty of\n    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n    GNU General Public License for more details.\n\n    You should have received a copy of the GNU General Public License along\n    with this program; if not, write to the Free Software Foundation, Inc.,\n    51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.\n\nAlso add information on how to contact you by electronic and paper mail.\n\nIf the program is interactive, make it output a short notice like this\nwhen it starts in an interactive mode:\n\n    Gnomovision version 69, Copyright (C) year name of author\n    Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.\n    This is free software, and you are welcome to redistribute it\n    under certain conditions; type `show c' for details.\n\nThe hypothetical commands `show w' and `show c' should show the appropriate\nparts of the General Public License.  Of course, the commands you use may\nbe called something other than `show w' and `show c'; they could even be\nmouse-clicks or menu items--whatever suits your program.\n\nYou should also get your employer (if you work as a programmer) or your\nschool, if any, to sign a \"copyright disclaimer\" for the program, if\nnecessary.  Here is a sample; alter the names:\n\n  Yoyodyne, Inc., hereby disclaims all copyright interest in the program\n  `Gnomovision' (which makes passes at compilers) written by James Hacker.\n\n  <signature of Ty Coon>, 1 April 1989\n  Ty Coon, President of Vice\n\nThis General Public License does not permit incorporating your program into\nproprietary programs.  If your program is a subroutine library, you may\nconsider it more useful to permit linking proprietary applications with the\nlibrary.  If this is what you want to do, use the GNU Lesser General\nPublic License instead of this License.\n"
  },
  {
    "path": "README.md",
    "content": "# Docker-контейнер для локальной копии Флибусты.\n\nОтображение книг, поиск по заголовкам, сборникам, авторам, жанрам. Открываются в браузере форматы fb2, docx, rtf, mobi, epub, txt, html. Для fb2 сохраняется позиция чтения.\n\nВозможность создания \"книжных полок\" для избранных книг, авторов и сборников.\n\nВстроенный сервис OPDS для читалок.\n\n|![x](blob/x1.png)|![x](blob/x2.png)|![x](blob/x3.png)|![x](blob/x4.png)|\n|---|---|---|---|\n## Установка:\n\n1. Установить сервисы docker для вашего сервера.\n2. Разместить файлы проекта в каталог на сервере.\n3. Для выполнения обновления необходимо разместить фалы дампа Флибусты (*.sql) в каталог FlibustaSQL.\n4. Файлы архивов Флибусты (*.zip) необходимо размещать в каталоге Flibusta.Net.\n5. Выполнить docker-compose build\n6. Выполнить docker-compose up -d\n7. Локальный портал будет доступен на порту 27100. Доступен также OPDS каталог: /opds/\n8. Выполнить \"Обновление базы\" через пункт меню \"Сервис\"\n\nКаталоги FlibustaSQL, cache и их подкаталоги должны иметь права на запись для контейнера. Скрипты в каталоге /application/tools/ должны иметь права на выполнение.\n\nДля обновления базы с новыми файлами выполнить пункты 3, 4, 5, 9\n\n## Переменные окружения для docker-compose (docker-compose environmnet variables):\n\nПараметры базы данных можно определить в docker-compose.yml. \n\nОбраз может использовать следующие переменные окружения\n\n1. `FLIBUSTA_DBUSER` user базы данных. По умолчанию (если переменная не определена в файле) flibusta\n2. `FLUBUSTA_DBNAME` имя схемы ( инстанса) базы данных. По умолчанию (если переменная не определена в файле) flibusta\n3. `FLIBUSTA_DBTYPE` тип базы данных. В текущей версии поддерживается только postgres\n4. `FLIBUSTA_DBHOST` имя хоста на которой установлена база данных. В докере по умолчанию совпадает с именем сервиса \n                        определяющего базу данных. По умолчанию postgres\n5. `FLIBUSTA_DBPASSWORD`  пароль user базы данных. См. обсуждение в следующем абзаце. По умолчанию flibusta\n\n\nBest practices docker compose не рекомендуют хранить пароль в переменной  ( и тем более не рекомендуется задавать пароль в коде).\nДля хранения паролей в есть механизм secrets. Можно создать текстовой файл содержащий единственную \nстрочку с паролем и указать полный путь к нему в глобальном разделе secrets. Обратите внимание на premissions файла - он должен быть\nдоступен для чтения для php из образа, в идеале только ему. Юзер под которым бежит php-fpm в pool www-data ( user id 82). Это стандартный \nuser из официального образа. Возможно он не существует на вашей системе. Можно дать числовой  uid файлу если нет желания или возможности создать user. достаточно выполнить `sudo chown 82 /path/to/file`  \n   \n## Конфигурация docker container для работы с reverse proxy и внешним сервером базы данных\n\nDocker compose файл, используемый по умолчанию, поднимает веб сервер и базу данных для локального зеркала Флибусты. Однако, часто вебсервер и база данных уже работают на NAS. \nВ таком случае можно использовать их и сэкономить ресурсы сервера не поднимая несколько инстансов параллельно. Кроме того, использование централизованного reverse proxy может дать некотрые дополнительные преимущества. Папка application/tools/external_services_config \nсодержит необходимые скрипты и конфигурационные файлы для работы в такой конфигурации, а  [README](application/tools/external_services_config/README.md) описывает процесс конфигурации.\n\n\n"
  },
  {
    "path": "application/dbinit.php",
    "content": "<?php\n$dbname = getenv('FLIBUSTA_DBNAME')?getenv('FLIBUSTA_DBNAME'):'flibusta';\n$dbhost = getenv('FLIBUSTA_DBHOST')?getenv('FLIBUSTA_DBHOST'):'postgres';\n$dbuser = getenv('FLIBUSTA_DBUSER')?getenv('FLIBUSTA_DBUSER'):'flibusta';\nif (getenv('FLIBUSTA_DBPASSWORD_FILE')){\n\t\t$dbpasswd = file_get_contents(getenv('FLIBUSTA_DBPASSWORD_FILE'));\n\t\tif ($dbpasswd) $dbpasswd = trim($dbpasswd);\n}\nif (empty($dbpasswd))\n\t$dbpasswd = getenv('FLIBUSTA_DBPASSWORD')?getenv('FLIBUSTA_DBPASSWORD'):'flibusta';\n\n$dbtype = getenv('FLIBUSTA_DBTYPE')?trim(strtolower(getenv('FLIBUSTA_DBTYPE'))):'postgres';\nif ($dbtype != 'postgres') { // check for valid type, currently only postgress is supported, but in the future others e.g. mysql will be added\n\terror_log('unsupported db type '.$dbtype.', reverting to postgress');\n\t$dbtype = 'postgres';\n}\n$dsn = match($dbtype) {\n\t'postgres' => \"pgsql:host=\".$dbhost.\";dbname=\".$dbname.\";options='--client_encoding=UTF8'\",\n\t// dsn for supported db types should be added here\n\tdefault => \"pgsql:host=\".$dbhost.\";dbname=\".$dbname.\";options='--client_encoding=UTF8'\"\n};\n\ntry {\n\t$dbh = new PDO($dsn, $dbuser, $dbpasswd);\n\t$dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);\n\t$dbh->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);\n\t$dbh->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_OBJ);\n} catch(Exception $e) {\n\tprint_r($e);\n}\n\n?>"
  },
  {
    "path": "application/djvu.php",
    "content": "<?PHP\n        // $Id$\n        // $Author$\n \n// Class: FreeMED.Djvu\n//\n//      Wrapper class to handle Djvu documents.\n//\nclass Djvu {\n \n        var $filename;\n \n        // Constructor: Djvu\n        //\n        // Parameters:\n        //\n        //      $filename - Filename of source DjVu file.\n        //\n        function Djvu ( $filename ) {\n                $this->filename = $filename;\n                if (!file_exists($filename)) { die (\"Djvu: file does not exist \\\"$filename\\\"\"); }\n        } // end constructor\n \n        // Method: NumberOfPages\n        //\n        // Returns:\n        //\n        //      Number of pages in the current Djvu document.\n        //\n        function NumberOfPages ( ) {\n                $filename = $this->filename;\n \n                // Get basic info dump from file\n                $info = `djvudump \"$filename\" | grep \"Document directory\"`;\n \n                // If no info, one page\n                if (empty($info)) { return 1; }\n \n                // Split down to page number\n                $_h1 = explode(\", \", $info);\n                $_h2 = explode(\" \", trim($_h1[1]));\n \n                // Return next to last segment\n                return $_h2[count($_h2)-2];\n        } // end method NumberOfPages\n \n        // Method: GetPage\n        //\n        //      Get page image\n        //\n        // Parameters:\n        //\n        //      $page - Page number to return\n        //\n        //      $contents - (optional) Boolean, return the contents instead of the\n        //      filename. Defaults to false.\n        //\n        //      $force_ps - (optional) Boolean, force no JPEG conversion. Defaults\n        //      to false.\n        //\n        //      $force_rotate - (optional) Boolean, force 90 degree rotation\n        //\n        // Returns:\n        //\n        //      Either JPEG image of file in string or name of temporary file.\n        //\n        function GetPage ( $page, $contents = false, $force_ps = false, $force_rotation = true ) {\n                $filename = $this->filename;\n \n                $s = $size.\"x\".$size;\n \n                $_t = tempnam('/tmp', 'fmdjvu');\n                $rotate = $force_rotation ? \" -rotate 90 \" : \"\";\n                if ($force_ps) {\n                        // No conversion ...\n                        $t = $_t.'.ps';\n                        $temp = `djvups -page=$page \"$filename\" | /usr/bin/convert - ${rotate} \"$t\"`;\n                } else {\n                        // Force convert to JPEG\n                        $t = $_t.'.jpg';\n                        $temp = `djvups -page=$page \"$filename\" | /usr/bin/convert - ${rotate} \"$t\"`;\n                }\n \n                if ($contents) {\n                        ob_start();\n                        readfile($t);\n                        $c = ob_get_contents();\n                        ob_end_clean();\n \n                        unlink ($_t);\n                        unlink ($t);\n               \n                        return $c;\n                } else {\n                        unlink ($_t);\n                        return $t;\n                }\n        } // end method GetPage\n \n        // Method: GetPageThumbnail\n        //\n        //      Get textual content of a page thumbnail.\n        //\n        // Parameters:\n        //\n        //      $page - Page number\n        //\n        //      $size - (optional) Maximum dimension of thumbnail. Defaults to 300 (px).\n        //\n        // Returns:\n        //\n        //      String containing JPEG thumbnail of specified page.\n        //\n        function GetPageThumbnail ( $page, $size=300 ) {\n                $filename = $this->filename;\n \n                $s = $size.\"x\".$size;\n \n                $_t = tempnam('/tmp', 'fmdjvu');\n                $t = $_t.'.jpg';\n                $temp = `djvups -page=$page \"$filename\" | convert - -scale $s \"$t\"`;\n                $temp = `djvups -page=$page \"$filename\" | convert - \"$t\"`;\n                ob_start();\n                readfile($t);\n                $contents = ob_get_contents();\n                ob_end_clean();\n \n                unlink ($_t);\n                unlink ($t);\n               \n                return $contents;\n        } // end method GetPageThumbnail\n \n        // Method: StoredChunks\n        //\n        //      Get list of chunks contained in the parent DjVu file.\n        //\n        // Returns:\n        //\n        //      Array of chunk names.\n        //\n        function StoredChunks ( ) {\n                $filename = $this->filename;\n \n                $raw = `djvm -l \"$filename\"`;\n \n                // deal by line\n                $lines = explode(\"\\n\", $raw);\n \n                foreach ($lines as $__garbage => $line) {\n                        if (eregi('PAGE #', $line)) {\n                                // Split out contents ....\n                                $_h1 = explode('#', $line);\n                                $_h2 = explode(' ', trim($_h1[1]));\n \n                                $pages[] = trim($_h2[count($_h2) - 1]);\n                        }\n                }\n                return $pages;\n        } // end method StoredChunks\n \n} // end class Djvu\n \n"
  },
  {
    "path": "application/epub.php",
    "content": "<?php\n/**\n * PHP EPub Meta library\n *\n * @author Andreas Gohr <andi@splitbrain.org>\n */\nclass EPub {\n    public $xml; //FIXME change to protected, later\n    protected $xpath;\n    protected $file;\n    protected $meta;\n    protected $namespaces;\n    protected $imagetoadd='';\n\n    /**\n     * Constructor\n     *\n     * @param string $file path to epub file to work on\n     * @throws Exception if metadata could not be loaded\n     */\n    public function __construct($file){\n        // open file\n        $this->file = $file;\n        $zip = new ZipArchive();\n        if(!@$zip->open($this->file)){\n            throw new Exception('Failed to read epub file');\n        }\n\n        // read container data\n        $data = $zip->getFromName('META-INF/container.xml');\n        if($data == false){\n            throw new Exception('Failed to access epub container data');\n        }\n        $xml = new DOMDocument();\n        $xml->registerNodeClass('DOMElement','EPubDOMElement');\n        $xml->loadXML($data);\n        $xpath = new EPubDOMXPath($xml);\n        $nodes = $xpath->query('//n:rootfiles/n:rootfile[@media-type=\"application/oebps-package+xml\"]');\n        $this->meta = $nodes->item(0)->attr('full-path');\n\n        // load metadata\n        $data = $zip->getFromName($this->meta);\n        if(!$data){\n            throw new Exception('Failed to access epub metadata');\n        }\n        $this->xml =  new DOMDocument();\n        $this->xml->registerNodeClass('DOMElement','EPubDOMElement');\n        $this->xml->loadXML($data);\n        $this->xml->formatOutput = true;\n        $this->xpath = new EPubDOMXPath($this->xml);\n\n        $zip->close();\n    }\n\n    /**\n     * file name getter\n     */\n    public function file(){\n        return $this->file;\n    }\n\n    /**\n     * Writes back all meta data changes\n     */\n    public function save(){\n        $zip = new ZipArchive();\n        $res = @$zip->open($this->file, ZipArchive::CREATE);\n        if($res === false){\n            throw new Exception('Failed to write back metadata');\n        }\n        $zip->addFromString($this->meta,$this->xml->saveXML());\n        // add the cover image\n        if($this->imagetoadd){\n            $path = dirname('/'.$this->meta).'/php-epub-meta-cover.img'; // image path is relative to meta file\n            $path = ltrim($path,'/');\n\n            $zip->addFromString($path,file_get_contents($this->imagetoadd));\n            $this->imagetoadd='';\n        }\n        $zip->close();\n    }\n\n    /**\n     * Get or set the book author(s)\n     *\n     * Authors should be given with a \"file-as\" and a real name. The file as\n     * is used for sorting in e-readers.\n     *\n     * Example:\n     *\n     * array(\n     *      'Pratchett, Terry'   => 'Terry Pratchett',\n     *      'Simpson, Jacqeline' => 'Jacqueline Simpson',\n     * )\n     *\n     * @params array $authors\n     */\n    public function Authors($authors=false){\n        // set new data\n        if($authors !== false){\n            // Author where given as a comma separated list\n            if(is_string($authors)){\n                if($authors == ''){\n                    $authors = array();\n                }else{\n                    $authors = explode(',',$authors);\n                    $authors = array_map('trim',$authors);\n                }\n            }\n\n            // delete existing nodes\n            $nodes = $this->xpath->query('//opf:metadata/dc:creator[@opf:role=\"aut\"]');\n            foreach($nodes as $node) $node->delete();\n\n            // add new nodes\n            $parent = $this->xpath->query('//opf:metadata')->item(0);\n            foreach($authors as $as => $name){\n                if(is_int($as)) $as = $name; //numeric array given\n                $node = $parent->newChild('dc:creator',$name);\n                $node->attr('opf:role', 'aut');\n                $node->attr('opf:file-as', $as);\n            }\n\n            $this->reparse();\n        }\n\n        // read current data\n        $rolefix = false;\n        $authors = array();\n        $nodes = $this->xpath->query('//opf:metadata/dc:creator[@opf:role=\"aut\"]');\n        if($nodes->length == 0){\n            // no nodes where found, let's try again without role\n            $nodes = $this->xpath->query('//opf:metadata/dc:creator');\n            $rolefix = true;\n        }\n        foreach($nodes as $node){\n            $name = $node->nodeValue;\n            $as   = $node->attr('opf:file-as');\n            if(!$as){\n                $as = $name;\n                $node->attr('opf:file-as',$as);\n            }\n            if($rolefix){\n                $node->attr('opf:role','aut');\n            }\n            $authors[$as] = $name;\n        }\n        return $authors;\n    }\n\n    /**\n     * Set or get the book title\n     *\n     * @param string $title\n     */\n    public function Title($title=false){\n        return $this->getset('dc:title',$title);\n    }\n\n    /**\n     * Set or get the book's language\n     *\n     * @param string $lang\n     */\n    public function Language($lang=false){\n        return $this->getset('dc:language',$lang);\n    }\n\n    /**\n     * Set or get the book' publisher info\n     *\n     * @param string $publisher\n     */\n    public function Publisher($publisher=false){\n        return $this->getset('dc:publisher',$publisher);\n    }\n\n    /**\n     * Set or get the book's copyright info\n     *\n     * @param string $rights\n     */\n    public function Copyright($rights=false){\n        return $this->getset('dc:rights',$rights);\n    }\n\n    /**\n     * Set or get the book's description\n     *\n     * @param string $description\n     */\n    public function Description($description=false){\n        return $this->getset('dc:description',$description);\n    }\n\n    /**\n     * Set or get the book's ISBN number\n     *\n     * @param string $isbn\n     */\n    public function ISBN($isbn=false){\n        return $this->getset('dc:identifier',$isbn,'opf:scheme','ISBN');\n    }\n\n    /**\n     * Set or get the Google Books ID\n     *\n     * @param string $google\n     */\n    public function Google($google=false){\n        return $this->getset('dc:identifier',$google,'opf:scheme','GOOGLE');\n    }\n\n    /**\n     * Set or get the Amazon ID of the book\n     *\n     * @param string $amazon\n     */\n    public function Amazon($amazon=false){\n        return $this->getset('dc:identifier',$amazon,'opf:scheme','AMAZON');\n    }\n\n    /**\n     * Set or get the book's subjects (aka. tags)\n     *\n     * Subject should be given as array, but a comma separated string will also\n     * be accepted.\n     *\n     * @param array $subjects\n     */\n    public function Subjects($subjects=false){\n        // setter\n        if($subjects !== false){\n            if(is_string($subjects)){\n                if($subjects === ''){\n                    $subjects = array();\n                }else{\n                    $subjects = explode(',',$subjects);\n                    $subjects = array_map('trim',$subjects);\n                }\n            }\n\n            // delete previous\n            $nodes = $this->xpath->query('//opf:metadata/dc:subject');\n            foreach($nodes as $node){\n                $node->delete();\n            }\n            // add new ones\n            $parent = $this->xpath->query('//opf:metadata')->item(0);\n            foreach($subjects as $subj){\n                $node = $this->xml->createElement('dc:subject',htmlspecialchars($subj));\n                $node = $parent->appendChild($node);\n            }\n\n            $this->reparse();\n        }\n\n        //getter\n        $subjects = array();\n        $nodes = $this->xpath->query('//opf:metadata/dc:subject');\n        foreach($nodes as $node){\n            $subjects[] =  $node->nodeValue;\n        }\n        return $subjects;\n    }\n\n    /**\n     * Read the cover data\n     *\n     * Returns an associative array with the following keys:\n     *\n     *   mime  - filetype (usually image/jpeg)\n     *   data  - the binary image data\n     *   found - the internal path, or false if no image is set in epub\n     *\n     * When no image is set in the epub file, the binary data for a transparent\n     * GIF pixel is returned.\n     *\n     * When adding a new image this function return no or old data because the\n     * image contents are not in the epub file, yet. The image will be added when\n     * the save() method is called.\n     *\n     * @param  string $path local filesystem path to a new cover image\n     * @param  string $mime mime type of the given file\n     * @return array\n     */\n    public function Cover($path=false, $mime=false){\n        // set cover\n        if($path !== false){\n            // remove current pointer\n            $nodes = $this->xpath->query('//opf:metadata/opf:meta[@name=\"cover\"]');\n            foreach($nodes as $node) $node->delete();\n            // remove previous manifest entries if they where made by us\n            $nodes = $this->xpath->query('//opf:manifest/opf:item[@id=\"php-epub-meta-cover\"]');\n            foreach($nodes as $node) $node->delete();\n\n            if($path){\n                // add pointer\n                $parent = $this->xpath->query('//opf:metadata')->item(0);\n                $node = $parent->newChild('opf:meta');\n                $node->attr('opf:name','cover');\n                $node->attr('opf:content','php-epub-meta-cover');\n\n                // add manifest\n                $parent = $this->xpath->query('//opf:manifest')->item(0);\n                $node = $parent->newChild('opf:item');\n                $node->attr('id','php-epub-meta-cover');\n                $node->attr('opf:href','php-epub-meta-cover.img');\n                $node->attr('opf:media-type',$mime);\n\n                // remember path for save action\n                $this->imagetoadd = $path;\n            }\n\n            $this->reparse();\n        }\n\n        // load cover\n        $nodes = $this->xpath->query('//opf:metadata/opf:meta[@name=\"cover\"]');\n        if(!$nodes->length) return $this->no_cover();\n        $coverid = (String) $nodes->item(0)->attr('opf:content');\n        if(!$coverid) return $this->no_cover();\n\n        $nodes = $this->xpath->query('//opf:manifest/opf:item[@id=\"'.$coverid.'\"]');\n        if(!$nodes->length) return $this->no_cover();\n        $mime = $nodes->item(0)->attr('opf:media-type');\n        $path = $nodes->item(0)->attr('opf:href');\n        $path = dirname('/'.$this->meta).'/'.$path; // image path is relative to meta file\n        $path = ltrim($path,'/');\n\n        $zip = new ZipArchive();\n        if(!@$zip->open($this->file)){\n            throw new Exception('Failed to read epub file');\n        }\n        $data = $zip->getFromName($path);\n\n        return array(\n            'mime'  => $mime,\n            'data'  => $data,\n            'found' => $path\n        );\n    }\n\n    /**\n     * A simple getter/setter for simple meta attributes\n     *\n     * It should only be used for attributes that are expected to be unique\n     *\n     * @param string $item   XML node to set/get\n     * @param string $value  New node value\n     * @param string $att    Attribute name\n     * @param string $aval   Attribute value\n     */\n    protected function getset($item,$value=false,$att=false,$aval=false){\n        // construct xpath\n        $xpath = '//opf:metadata/'.$item;\n        if($att){\n            $xpath .= \"[@$att=\\\"$aval\\\"]\";\n        }\n\n        // set value\n        if($value !== false){\n            $value = htmlspecialchars($value);\n            $nodes = $this->xpath->query($xpath);\n            if($nodes->length == 1 ){\n                if($value === ''){\n                    // the user want's to empty this value -> delete the node\n                    $nodes->item(0)->delete();\n                }else{\n                    // replace value\n                    $nodes->item(0)->nodeValue = $value;\n                }\n            }else{\n                // if there are multiple matching nodes for some reason delete\n                // them. we'll replace them all with our own single one\n                foreach($nodes as $n) $n->delete();\n                // readd them\n                if($value){\n                    $parent = $this->xpath->query('//opf:metadata')->item(0);\n                    $node   = $this->xml->createElement($item,$value);\n                    $node   = $parent->appendChild($node);\n                    if($att) $node->attr($att,$aval);\n                }\n            }\n\n            $this->reparse();\n        }\n\n        // get value\n        $nodes = $this->xpath->query($xpath);\n        if($nodes->length){\n            return $nodes->item(0)->nodeValue;\n        }else{\n            return '';\n        }\n    }\n\n    /**\n     * Return a not found response for Cover()\n     */\n    protected function no_cover(){\n        return array(\n            'data'  => base64_decode('R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAEALAAAAAABAAEAAAIBTAA7'),\n            'mime'  => 'image/gif',\n            'found' => false\n        );\n    }\n\n    /**\n     * Reparse the DOM tree\n     *\n     * I had to rely on this because otherwise xpath failed to find the newly\n     * added nodes\n     */\n    protected function reparse() {\n        $this->xml->loadXML($this->xml->saveXML());\n        $this->xpath = new EPubDOMXPath($this->xml);\n    }\n}\n\nclass EPubDOMXPath extends DOMXPath {\n    public function __construct(DOMDocument $doc){\n        parent::__construct($doc);\n\n        if(is_a($doc->documentElement, 'EPubDOMElement')){\n            foreach($doc->documentElement->namespaces as $ns => $url){\n                $this->registerNamespace($ns,$url);\n            }\n        }\n    }\n}\n\nclass EPubDOMElement extends DOMElement {\n    public $namespaces = array(\n        'n'   => 'urn:oasis:names:tc:opendocument:xmlns:container',\n        'opf' => 'http://www.idpf.org/2007/opf',\n        'dc'  => 'http://purl.org/dc/elements/1.1/'\n    );\n\n\n    public function __construct($name, $value='', $namespaceURI=''){\n        list($ns,$name) = $this->splitns($name);\n        $value = htmlspecialchars($value);\n        if(!$namespaceURI && $ns){\n            $namespaceURI = $this->namespaces[$ns];\n        }\n        parent::__construct($name, $value, $namespaceURI);\n    }\n\n\n    /**\n     * Create and append a new child\n     *\n     * Works with our epub namespaces and omits default namespaces\n     */\n    public function newChild($name, $value=''){\n        list($ns,$local) = $this->splitns($name);\n        if($ns){\n            $nsuri = $this->namespaces[$ns];\n            if($this->isDefaultNamespace($nsuri)){\n                $name  = $local;\n                $nsuri = '';\n            }\n        }\n\n        // this doesn't call the construcor: $node = $this->ownerDocument->createElement($name,$value);\n        $node = new EPubDOMElement($name,$value,$nsuri);\n        return $this->appendChild($node);\n    }\n\n    /**\n     * Split given name in namespace prefix and local part\n     *\n     * @param  string $name\n     * @return array  (namespace, name)\n     */\n    public function splitns($name){\n        $list = explode(':',$name,2);\n        if(count($list) < 2) array_unshift($list,'');\n        return $list;\n    }\n\n    /**\n     * Simple EPub namespace aware attribute accessor\n     */\n    public function attr($attr,$value=null){\n        list($ns,$attr) = $this->splitns($attr);\n\n        $nsuri = '';\n        if($ns){\n            $nsuri = $this->namespaces[$ns];\n            if(!$this->namespaceURI){\n                if($this->isDefaultNamespace($nsuri)){\n                    $nsuri = '';\n                }\n            }elseif($this->namespaceURI == $nsuri){\n                 $nsuri = '';\n            }\n        }\n\n        if(!is_null($value)){\n            if($value === false){\n                // delete if false was given\n                if($nsuri){\n                    $this->removeAttributeNS($nsuri,$attr);\n                }else{\n                    $this->removeAttribute($attr);\n                }\n            }else{\n                // modify if value was given\n                if($nsuri){\n                    $this->setAttributeNS($nsuri,$attr,$value);\n                }else{\n                    $this->setAttribute($attr,$value);\n                }\n            }\n        }else{\n            // return value if none was given\n            if($nsuri){\n                return $this->getAttributeNS($nsuri,$attr);\n            }else{\n                return $this->getAttribute($attr);\n            }\n        }\n    }\n\n    /**\n     * Remove this node from the DOM\n     */\n    public function delete(){\n        $this->parentNode->removeChild($this);\n    }\n\n}\n\n\n"
  },
  {
    "path": "application/functions.php",
    "content": "<?php\n\nfunction bbc2html($content) {\n  $search = array (\n    '/(\\[b\\])(.*?)(\\[\\/b\\])/',\n    '/(\\[i\\])(.*?)(\\[\\/i\\])/',\n    '/(\\[u\\])(.*?)(\\[\\/u\\])/',\n    '/(\\[ul\\])(.*?)(\\[\\/ul\\])/',\n    '/(\\[li\\])(.*?)(\\[\\/li\\])/',\n    '/(\\[url=)(.*?)(\\])(.*?)(\\[\\/url\\])/',\n    '/(\\[url\\])(.*?)(\\[\\/url\\])/'\n  );\n\n  $replace = array (\n    '<strong>$2</strong>',\n    '<em>$2</em>',\n    '<u>$2</u>',\n    '<ul>$2</ul>',\n    '<li>$2</li>',\n    '<a href=\"$2\" target=\"_blank\">$4</a>',\n    '<a href=\"$2\" target=\"_blank\">$2</a>'\n  );\n\n  return preg_replace($search, $replace, $content);\n}\n\n\nfunction show_gpager($page_count, $block_size = 100) {\n\tglobal $url;\n\tif (isset($_GET['page'])) {\n\t\t$page = intval($_GET['page']);\n\t} else {\n\t\t$page = 0;\n\t}\n\tif ($page_count > 1) {\n\t\techo \"<nav><ul class='pagination pagination-sm'>\";\n\n\t\t$b1 = $page - $block_size;\n\t\t$b2 = $block_size + $page;\n\n\n\t\tif ($b1 < 1) {\n\t\t\t$b1 = 1;\n\t\t}\n\t\tif ($b2 > $page_count) {\n\t\t\t$b2 = $page_count;\n\t\t}\n\n    \tif ($b1 > 1) {\n \t\t\techo \"<li class='page-item'><a class='page-link' href='?page=\", $b1 - 2, \"' aria-label='Previous'><span aria-hidden='true'><i class='fas fa-angle-left'></i></span></a></li>\";\n\t    \t\n    \t}\n\n\t\tfor ($p = $b1; $p <= $b2; $p++) {\n\t\t\tif ($p == $page + 1) {\n\t\t\t\t$pv = 'active';\n\t\t\t} else {\n\t\t\t\t$pv = '';\n\t\t\t}\n\t\t\techo \"<li class='page-item $pv'><a class='page-link' href='?page=\", $p - 1, \"'>$p</a></li>\";\n\t\t}\n\t\t$pv = '';\t\t\n    \t\n    \tif ($b2 < $page_count) {\n    \t\techo \"<li class='page-item'><a class='page-link' href='?page=\", $b2, \"' aria-label='Next'><span aria-hidden='true'><i class='fas fa-angle-right'></i></span></a></li>\";\n    \t}\n\n\t\techo '</ul></nav>';\n\t}\n}\n\n\n\nfunction pg_array_parse($literal){\n    if ($literal == '') return;\n    preg_match_all('/(?<=^\\{|,)(([^,\"{]*)|\\s*\"((?:[^\"\\\\\\\\]|\\\\\\\\(?:.|[0-9]+|x[0-9a-f]+))*)\"\\s*)(,|(?<!^\\{)(?=\\}$))/i', $literal, $matches, PREG_SET_ORDER);\n    $values = [];\n    foreach ($matches as $match) {\n        $values[] = $match[3] != '' ? stripcslashes($match[3]) : (strtolower($match[2]) == 'null' ? null : $match[2]);\n    }\n    return $values;\n}\n\nfunction to_pg_array($set) {\n    settype($set, 'array'); // can be called with a scalar or array\n    $result = array();\n    foreach ($set as $t) {\n        if (is_array($t)) {\n            $result[] = to_pg_array($t);\n        } else {\n            $t = str_replace('\"', '\\\\\"', $t); // escape double quote\n            if (! is_numeric($t)) // quote only non-numeric values\n                $t = '\"' .addslashes($t) . '\"';\n            $result[] = $t;\n        }\n    }\n    return '{' . implode(\",\", $result) . '}'; // format\n}\n\n\nfunction book_small_pg($book, $webroot='',$full = false) {\n\tglobal $dbh, $user_uuid;\n\tif (!isset($book->bookid)) {\n\t\treturn;\n\t}\n\techo \"<div class='col-sm-2 col-6 mb-3'>\";\n\techo \"<div style='height: 100%' class='cover rounded text-center d-flex align-items-end flex-column'>\";\n\techo \"<a class='w-100' href='$webroot/book/view/$book->bookid'>\";\n\techo \"<img class='w-100 card-image rounded-top' src='$webroot/extract_cover.php?id=$book->bookid&small' />\";\n\n\t$dt =DateTime::createFromFormat('Y-m-d H:i:se', $book->time)->format('Y-m-d');\n\tif (trim($book->filetype) == 'fb2') {\n\t\t$ft = 'success';\n\t\t$fhref = \"$webroot/fb2.php?id=$book->bookid\";\n\t} else {\n\t\t$ft = 'secondary';\n\t\t$fhref = \"$webroot/usr.php?id=$book->bookid\";\n\t}\n\n\tif ($book->year != 0) {\n\t\t$year = $book->year;\n\t} else {\n\t\t$year = $dt;\n\t}\n\n\t$stmt = $dbh->prepare(\"SELECT COUNT(*) cnt FROM fav WHERE user_uuid=:uuid AND bookid=:id\");\n\t$stmt->bindParam(\":uuid\", $user_uuid);\n\t$stmt->bindParam(\":id\", $book->bookid);\n\t$stmt->execute();\n\tif ($stmt->fetch()->cnt > 0) {\n\t\t$fav = 'btn-primary';\n\t\t$fav_url = \"?unfav_book=$book->bookid\";\n\t} else {\n\t\t$fav = 'btn-outline-secondary';\n\t\t$fav_url = \"?fav_book=$book->bookid\";\n\t}\n\n\techo \"<div>$book->title</div></a>\";\n\techo \"<div class='btn-group w-100 mt-auto' role='group'>\";\n\techo \"<button type='button' class='btn btn-outline-secondary btn-sm'>$year</button>\";\n\techo \"<a href='$fhref' title='Скачать' type='button' class='btn btn-outline-$ft btn-sm'>$book->filetype</a>\";\n//\techo \"<button type='button' class='btn btn-outline-secondary btn-sm'>$book->lang</button>\";\n\techo \"<a href='$fav_url' title='В избранное' type='button' class='btn $fav btn-sm'><i class='fas fa-heart'></i></a>\";\n\t\n\techo \"</div></div></div>\\n\";\n}\n\nfunction book_info_pg($book, $webroot = '', $full = false) {\n\tglobal $dbh, $user_uuid;\n\tif (!isset($book->bookid)) {\n\t\treturn;\n\t}\n\techo \"<div class='hic card mb-3' itemscope='' itemtype='http://schema.org/Book'>\";\n//\techo \"<div class='card-header'>\";\n\techo \"<h4 class='rounded-top' style='background: #d0d0d0;'><a class='book-link' href='$webroot/book/view/$book->bookid'><i class='fas'></i> $book->title</h4></a>\";\n//\techo \"</div>\";\n\techo \"<div class='card-body'>\";\n\techo \"<div class='row'>\";\n\techo \"<div class='col-sm-2'>\";\n\techo \"<img class='w-100 card-image rounded cover' src='$webroot/extract_cover.php?id=$book->bookid&small' />\";\n\n\t$dt =DateTime::createFromFormat('Y-m-d H:i:se', $book->time)->format('Y-m-d');\n\tif (trim($book->filetype) == 'fb2') {\n\t\t$ft = 'success';\n\t\t$fhref = \"$webroot/fb2.php?id=$book->bookid\";\n\t} else {\n\t\t$ft = 'secondary';\n\t\t$fhref = \"$webroot/usr.php?id=$book->bookid\";\n\t}\n\n\tif ($book->year != 0) {\n\t\t$year = $book->year;\n\t} else {\n\t\t$year = $dt;\n\t}\n\t\n\n\techo \"<div class='btn-group w-100 mt-1' role='group'>\";\n\techo \"<button type='button' class='btn btn-outline-secondary btn-sm'>$year</button>\";\n\techo \"<a href='$fhref' title='Скачать' type='button' class='btn btn-outline-$ft btn-sm'>$book->filetype</a>\";\n//\techo \"<button type='button' class='btn btn-outline-secondary btn-sm'>$book->lang</button>\";\n\tif ($user_uuid != '') {\n\t\t$stmt = $dbh->prepare(\"SELECT COUNT(*) cnt FROM fav WHERE user_uuid=:uuid AND bookid=:id\");\n\t\t$stmt->bindParam(\":uuid\", $user_uuid);\n\t\t$stmt->bindParam(\":id\", $book->bookid);\n\t\t$stmt->execute();\n\t\tif ($stmt->fetch()->cnt > 0) {\n\t\t\t$fav = 'btn-primary';\n\t\t\t$fav_url = \"?unfav_book=$book->bookid\";\n\t\t} else {\n\t\t\t$fav = 'btn-outline-secondary';\n\t\t\t$fav_url = \"?fav_book=$book->bookid\";\n\t\t}\n\t\techo \"<a href='$fav_url' title='В избранное' type='button' class='btn $fav btn-sm'><i class='fas fa-heart'></i></a>\";\n\t}\n\techo \"</div>\";\n\t\n\techo \"</div><div class='col-sm-10'>\";\n\techo \"<div class='authors-list'>\";\n\t$stmt = $dbh->prepare(\"SELECT AvtorId, LastName, FirstName, nickname, middlename, File FROM libavtor a\n\t\tLEFT JOIN libavtorname USING(AvtorId)\n\t\tLEFT JOIN libapics USING(AvtorId)\n\t\tWHERE a.BookId=:id\");\n\t$stmt->bindParam(\":id\", $book->bookid);\n\t$stmt->execute();\n\twhile ($a = $stmt->fetch()) {\n\t\techo \"<div class='badge rounded-pill author'>\";\n\t\tif ($a->file != '') {\n\t\t\techo \"<img class='rounded-circle contact' src='$webroot/extract_author.php?id=$a->avtorid' />\";\t\n\t\t}\n\t\techo \"<a href='$webroot/author/view/$a->avtorid'>$a->lastname $a->middlename $a->firstname $a->nickname</a>\";\n\t\techo \"</div>\";\n\t}\n\techo \"</div>\";\n\n\n\techo \"<div style='margin-bottom: 3px;'>\";\n\t$genres = $dbh->prepare(\"SELECT GenreId, GenreDesc FROM libgenre \n\t\tJOIN libgenrelist USING(GenreId)\n\t\tWHERE BookId=$book->bookid\");\n\t$genres->execute();\n\twhile ($g = $genres->fetch()) {\n\t\techo \"<a class='badge bg-success p-1 text-white' href='$webroot/?gid=$g->genreid'>$g->genredesc</a> \";\n\t}\n\techo \"</div>\";\n\t\n\techo \"<div style='margin-bottom: 3px;'>\";\n\t$seq = $dbh->prepare(\"SELECT SeqId, SeqName, SeqNumb FROM libseq\n\t\t\t\tJOIN libseqname USING(SeqId)\n\t\t\t\tWHERE BookId=:id\");\n\t$seq->bindParam(\":id\", $book->bookid);\n\t$seq->execute();\n\twhile ($s = $seq->fetch()) {\n\t\techo \"<a class='badge bg-danger p-1 text-white' href='$webroot/?sid=$s->seqid'>$s->seqname \";\n\t\tif ($s->seqnumb > 0) {\n\t\t\techo \" $s->seqnumb\";\n\t\t}\n\t\techo \"</a> \";\n\t}\n\techo \"</div>\";\n\n\techo \"<div style='margin-bottom: 3px;'>\";\n\tif ($book->keywords != '') {\n\t\t$kw = explode(\",\", $book->keywords);\n\t\tforeach ($kw as $k) {\n\t\t\techo \"<a class='badge bg-secondary p-1 text-white' href='#'>$k</a> \";\n\t\t}\n\t}\n\techo \"</div>\";\n\n\techo \"<div style='font-size: 0.8em;'>\";\n\tif (isset($book->body)) {\n\t\tif ($full) {\n\t\t\techo \"<p>\" . trim($book->body) . \"</p>\";\n\t\t} else {\n\t\t\techo \"<p>\" . cut_str(trim(strip_tags($book->body))) . \"</p>\";\n\t\t}\n\t}\n\techo \"</div>\";\n\n\techo \"</div>\";\n\techo \"</div>\";\n\techo \"</div></div>\\n\";\n}\n\ndate_default_timezone_set('Europe/Minsk');\ndate_default_timezone_set('Etc/GMT-3');\nsetlocale(LC_ALL, 'rus_RUS');\n\n$m_time = explode(\" \",microtime());\n$m_time = $m_time[0] + $m_time[1];\n$starttime = $m_time;\n$sql_time = 0;\n\n\n$cdt = date('Y-m-d H:i:s');\n$today_from =  date('Y-m-d') . ' 00:00:00';\n$today_to   = date('Y-m-d') . ' 23:59:59';\n\n\nfunction russian_date() {\n $translation = array(\n \"am\" => \"дп\",\n \"pm\" => \"пп\",\n \"AM\" => \"ДП\",\n \"PM\" => \"ПП\",\n \"Monday\" => \"Понедельник\",\n \"Mon\" => \"Пн\",\n \"Tuesday\" => \"Вторник\",\n \"Tue\" => \"Вт\",\n \"Wednesday\" => \"Среда\",\n \"Wed\" => \"Ср\",\n \"Thursday\" => \"Четверг\",\n \"Thu\" => \"Чт\",\n \"Friday\" => \"Пятница\",\n \"Fri\" => \"Пт\",\n \"Saturday\" => \"Суббота\",\n \"Sat\" => \"Сб\",\n \"Sunday\" => \"Воскресенье\",\n \"Sun\" => \"Вс\",\n \"January\" => \"Января\",\n \"Jan\" => \"Янв\",\n \"February\" => \"Февраля\",\n \"Feb\" => \"Фев\",\n \"March\" => \"Марта\",\n \"Mar\" => \"Мар\",\n \"April\" => \"Апреля\",\n \"Apr\" => \"Апр\",\n \"May\" => \"Мая\",\n \"May\" => \"Мая\",\n \"June\" => \"Июня\",\n \"Jun\" => \"Июн\",\n \"July\" => \"Июля\",\n \"Jul\" => \"Июл\",\n \"August\" => \"Августа\",\n \"Aug\" => \"Авг\",\n \"September\" => \"Сентября\",\n \"Sep\" => \"Сен\",\n \"October\" => \"Октября\",\n \"Oct\" => \"Окт\",\n \"November\" => \"Ноября\",\n \"Nov\" => \"Ноя\",\n \"December\" => \"Декабря\",\n \"Dec\" => \"Дек\",\n \"st\" => \"ое\",\n \"nd\" => \"ое\",\n \"rd\" => \"е\",\n \"th\" => \"ое\",\n );\n if (func_num_args() > 1) {\n\t$timestamp = func_get_arg(1);\n\treturn strtr(date(func_get_arg(0), $timestamp), $translation);\n } else {\n\treturn strtr(date(func_get_arg(0)), $translation);\n };\n}\n/***************************************************************************/\nfunction transliterate($string){\n  $cyr=array(\n     \"Щ\", \"Ш\", \"Ч\",\"Ц\", \"Ю\", \"Я\", \"Ж\",\"А\",\"Б\",\"В\",\n     \"Г\",\"Д\",\"Е\",\"Ё\",\"З\",\"И\",\"Й\",\"К\",\"Л\",\"М\",\"Н\",\n     \"О\",\"П\",\"Р\",\"С\",\"Т\",\"У\",\"Ф\",\"Х\",\"Ь\",\"Ы\",\"Ъ\",\n     \"Э\",\"Є\", \"Ї\",\"І\",\n     \"щ\", \"ш\", \"ч\",\"ц\", \"ю\", \"я\", \"ж\",\"а\",\"б\",\"в\",\n     \"г\",\"д\",\"е\",\"ё\",\"з\",\"и\",\"й\",\"к\",\"л\",\"м\",\"н\",\n     \"о\",\"п\",\"р\",\"с\",\"т\",\"у\",\"ф\",\"х\",\"ь\",\"ы\",\"ъ\",\n     \"э\",\"є\", \"ї\",\"і\", \" \"\n  );\n  $lat=array(\n     \"Shch\",\"Sh\",\"Ch\",\"C\",\"Yu\",\"Ya\",\"J\",\"A\",\"B\",\"V\",\n     \"G\",\"D\",\"e\",\"e\",\"Z\",\"I\",\"y\",\"K\",\"L\",\"M\",\"N\",\n     \"O\",\"P\",\"R\",\"S\",\"T\",\"U\",\"F\",\"H\",\"\", \n     \"Y\",\"\" ,\"E\",\"E\",\"Yi\",\"I\",\n     \"shch\",\"sh\",\"ch\",\"c\",\"Yu\",\"Ya\",\"j\",\"a\",\"b\",\"v\",\n     \"g\",\"d\",\"e\",\"e\",\"z\",\"i\",\"y\",\"k\",\"l\",\"m\",\"n\",\n     \"o\",\"p\",\"r\",\"s\",\"t\",\"u\",\"f\",\"h\",\n     \"\", \"y\",\"\" ,\"e\",\"e\",\"yi\",\"i\", \"%20\"\n  );\n  for($i=0; $i<count($cyr); $i++)  {\n     $c_cyr = $cyr[$i];\n     $c_lat = $lat[$i];\n     $string = str_replace($c_cyr, $c_lat, $string);\n  }\n  $string = \n  \tpreg_replace(\n  \t\t\"/([qwrtpsdfghklzxcvbnmQWRTPSDFGHKLZXCVBNM]+)[jJ]e/\", \n  \t\t\"\\${1}e\", $string);\n/*  $string = \n  \tpreg_replace(\n  \t\t\"/([qwrtpsdfghklzxcvbnmQWRTPSDFGHKLZXCVBNM]+)[jJ]/\", \n  \t\t\"\\${1}'\", $string);*/\n  $string = preg_replace(\"/([eyuioaEYUIOA]+)[Kk]h/\", \"\\${1}h\", $string);\n  $string = preg_replace(\"/^kh/\", \"h\", $string);\n  $string = preg_replace(\"/^Kh/\", \"H\", $string);\n  return $string;\n}\n\n\nfunction stars($rating, $webroot) {\n    $fullStar = '<img alt=\"1\" class=\"star\" src=\"'.$webroot.'/i/s1.png\" />';\n    $emptyStar = '<img alt=\"0\" class=\"star\" src=\"'.$webroot.'/i/s0.png\" />';\n    $rating = $rating <= 5?$rating:5;\n    $fullStarCount = (int)$rating;\n    $emptyStarCount = 5 - $fullStarCount;\n    $html = str_repeat($fullStar,$fullStarCount);\n    $html .= str_repeat($emptyStar,$emptyStarCount);\n    echo $html;\n}\n\n/***************************************************************************/\nfunction cut_str($string, $maxlen=700) {\n    $len = (mb_strlen($string) > $maxlen)\n        ? mb_strripos(mb_substr($string, 0, $maxlen), ' ')\n        : $maxlen\n    ;\n    $cutStr = mb_substr($string, 0, $len);\n    return (mb_strlen($string) > $maxlen)\n        ? $cutStr . '...'\n        : $cutStr\n    ;\n}\n\n/***************************************************************************/\nfunction cut_str2($string, $maxlen=700) {\n    $len = (mb_strlen($string) > $maxlen)\n        ? mb_strripos(mb_substr($string, 0, $maxlen), ' ')\n        : $maxlen\n    ;\n    $cutStr = mb_substr($string, 0, $len);\n    return $cutStr . $len;\n}\n\n/***************************************************************************/\nfunction clean_str($input) {\n  if (!$input)\n\treturn $input;\n\n  $input = strip_tags($input);\n\n  $input = str_replace (\"\\n\",\" \", $input);\n  $input = str_replace (\"\\r\",\"\", $input);\n\n  $input = preg_replace(\"/[^(\\w)|(\\x7F-\\xFF)|^(_,\\-,\\.,\\;,\\@)|(\\s)]/\", \" \", $input);\n\n  return $input;\n}\n\n/***************************************************************************/\nfunction decode_gurl($webroot,$mobile = false)  {\n  global $last_modified, $url, $robot;\n  global $sex_post;\n\n \n  $urlx = parse_url(urldecode($_SERVER['REQUEST_URI']));\n\n  //remove leading webroot e.g. http://192.168.1.101/flibusta/authors/index.php should produce module= authors\n  // note this assumes path is not utf-8\n  $path = $urlx['path'];\n  if (!empty($webroot) && str_starts_with($path,$webroot) ) {\n\t\t$path = substr($path, strlen($webroot));\n  }\n  list($x, $module, $action, $var1, $var2, $var3) = array_pad(explode('/', $path), 6, null);\n  $url = new stdClass();\n\n  $url->mod = safe_str($module);\n  $url->action = safe_str($action);\n  $url->var1 = intval($var1);\n  $url->var2 = intval($var2);\n  $url->var3 = intval($var3); \n  $url->title = '';\n  $url->description = '';\n  $url->mod_path = '';\n  $url->mod_menu = '';\n  $url->image = '';\n  $url->noindex = 0;\n  $url->index = 1;\n  $url->follow = 1;\n  $url->module_menu = '';\n  $url->js = array();\n  $url->editor = 0;\n  $url->access = 0;\n  $url->canonical = '';\n\n  $menu = true;\n\n  if ($url->mod == '') {\n    $url->mod ='primary';\n  }\n\n  if (file_exists(ROOT_PATH . 'modules/' . $url->mod . '/module.conf')) {\n    $last_modified = gmdate('D, d M Y H:i:s', filemtime(ROOT_PATH . 'modules/' . $url->mod . '/index.php')) . ' GMT';\n    $url->module = ROOT_PATH . 'modules/' . $url->mod . '/index.php';\n    $url->mod_path = ROOT_PATH . 'modules/' . $url->mod . '/';\n    include(ROOT_PATH . 'modules/' . $url->mod . '/module.conf');\n  } else {\n    $menu = false;\n    include(ROOT_PATH . 'modules/404/module.conf');\n    $url->module = ROOT_PATH . 'modules/404/index.php';\n    $url->mod = '404';  \n  }\n\n  if ($url->access > 0) {\n   // if (!is_admin()) {\n      include(ROOT_PATH . 'modules/403/module.conf');\n      $url->module = ROOT_PATH . 'modules/403/index.php';\n      $url->mod = '403';\n      $menu = false;\n   // }\n  }\n\n  if ( (file_exists(ROOT_PATH . 'modules/' . $url->mod . '/module_menu.php')) && ($menu) ) {\n    $url->module_menu = ROOT_PATH . 'modules/' . $url->mod . '/module_menu.php';\n  }\n\n  return $url;\n}\n\nfunction safe_str($str) {\n        return ($str)?preg_replace(\"/[^A-Za-z0-9 -_]/\", '', $str):$str;\n}\n\n\nfunction mobile() {\n        $devices = array(\n                \"android\" => \"android.*mobile\",\n                \"androidtablet\" => \"android(?!.*mobile)\",\n                \"iphone\" => \"(iphone|ipod)\",\n                \"ipad\" => \"(ipad)\",\n                \"generic\" => \"(kindle|mobile|mmp|midp|pocket|psp|symbian|smartphone|treo|up.browser|up.link|vodafone|wap|opera mini)\"\n        );\n        $isMobile = false;\n        if (isset($_SERVER['HTTP_USER_AGENT'])) {\n                $userAgent = $_SERVER['HTTP_USER_AGENT'];\n        } else {\n                $userAgent = \"\";\n        }\n        if (isset($_SERVER['HTTP_ACCEPT'])) {\n               $accept = $_SERVER['HTTP_ACCEPT'];\n        } else {\n                $accept = '';\n        }\n        if (isset($_SERVER['HTTP_X_WAP_PROFILE']) || isset($_SERVER['HTTP_PROFILE'])) {\n                $isMobile = true;\n        } elseif (strpos($accept, 'text/vnd.wap.wml') > 0 || strpos($accept, 'application/vnd.wap.xhtml+xml') > 0) {\n                $isMobile = true;\n        } else {\n                foreach ($devices as $device => $regexp) {\n                        if (preg_match(\"/\" . $devices[strtolower($device)] . \"/i\", $userAgent)) {\n                                $isMobile = true;\n                        }\n                }\n        }\n        return $isMobile;\n}\n\nfunction formatSizeUnits($bytes)\n    {\n        if ($bytes >= 1073741824)\n        {\n            $bytes = number_format($bytes / 1073741824, 2) . ' GB';\n        }\n        elseif ($bytes >= 1048576)\n        {\n            $bytes = number_format($bytes / 1048576, 2) . ' MB';\n        }\n        elseif ($bytes >= 1024)\n        {\n            $bytes = number_format($bytes / 1024, 2) . ' KB';\n        }\n        elseif ($bytes > 1)\n        {\n            $bytes = $bytes . ' bytes';\n        }\n        elseif ($bytes == 1)\n        {\n            $bytes = $bytes . ' byte';\n        }\n        else\n        {\n            $bytes = '0 bytes';\n        }\n\n        return $bytes;\n    }\n\nfunction opds_book($b,$webroot = '') {\n\tglobal $dbh;\n\techo \"\\n<entry> <updated>\" . $b->time . \"</updated>\";\n\techo \" <id>tag:book:$b->bookid</id>\";\n\techo \" <title>\" . htmlspecialchars($b->title) . \"</title>\";\n\n\t$ann = $dbh->prepare(\"SELECT body annotation FROM libbannotations WHERE bookid=:id LIMIT 1\");\n\t$ann->bindParam(\":id\", $b->bookid);\n\t$ann->execute();\n\tif ($tmp = $ann->fetch()) {\n\t\t$an = $tmp->annotation;\n\t} else {\n\t\t$an = '';\n\t}\n\t$genres = $dbh->prepare(\"SELECT genrecode, GenreId, GenreDesc FROM libgenre \n\t\tJOIN libgenrelist USING(GenreId)\n\t\tWHERE bookid=:id\");\n\t$genres->bindParam(\":id\", $b->bookid);\n\t$genres->execute();\n\twhile ($g = $genres->fetch()) {\n\t\techo \"<category term='$webroot/subject/\" . urlencode($g->genrecode) . \"' label='$g->genredesc'/>\";\n\t}\n\n\t$sq = '';\n\t$seq = $dbh->prepare(\"SELECT SeqId, SeqName, SeqNumb FROM libseq\n\t\tJOIN libseqname USING(SeqId)\n\t\tWHERE BookId=:id\");\n\t$seq->bindParam(\":id\", $b->bookid);\n\t$seq->execute();\n\twhile ($s = $seq->fetch()) {\n\t\t$ssq = $s->seqname;\n\t\tif ($s->seqnumb > 0) {\n\t\t\t$ssq .= \" ($s->seqnumb) \";\n\t\t}\n\t\t$sq .= $ssq;\n\t\techo \" <link href='$webroot/opds/list?seq_id=\".$s->seqid.\"' rel='related' type='application/atom+xml' title='Все книги серии &quot;$ssq&quot;' />\";\n\t}\n\tif ($sq != '') {\n\t\t$sq = \"Сборник: $sq\";\n\t}\n\n\n\techo \"<author>\";\n\t$au = $dbh->prepare(\"SELECT AvtorId, LastName, FirstName, nickname, middlename, File FROM libavtor a\n\t\tLEFT JOIN libavtorname USING(AvtorId)\n\t\tLEFT JOIN libapics USING(AvtorId)\n\t\tWHERE a.bookid=:id\");\n\t$au->bindParam(\":id\", $b->bookid);\n\t$au->execute();\n\twhile ($a = $au->fetch()) {\n\t\techo \"<name>$a->lastname $a->firstname $a->middlename</name>\";\n\t\techo \"<uri>/opds/author?author_id=$a->avtorid</uri>\";\n\t}\n\techo \"</author>\";\n\t$au->execute();\n\twhile ($a = $au->fetch()) {\n\t\techo \"\\n <link href='$webroot/opds/list?author_id=$a->avtorid' rel='related' type='application/atom+xml' title='Все книги автора $a->lastname $a->firstname $a->middlename' />\";\n\t}\n\techo \" <dc:language>\" . trim($b->lang) . \"</dc:language>\";\n\tif ($b->year > 0) {\n\t\techo \" <dc:issued>$b->year</dc:issued>\";\n\t}\n\t\n\t// Include the type of the book as <dc:format> element\n\techo \" <dc:format>\" . trim($b->filetype) . \"</dc:format>\";\n\t\n\t// Include the size of the book as <dcterms:extent> element using the FileSize attribute from $b\n\techo \" <dcterms:extent>\" . formatSizeUnits($b->filesize) . \" bytes</dcterms:extent>\";\n\t\n\techo \"\\n <summary type='text'>\" . strip_tags($an);\n\techo \"\\n $sq \";\n\techo \"\\n $b->keywords\";\n\tif ($b->year > 0) {\n\t\techo \"\\n Год издания: $b->year\";\n\t}\n\techo \"\\n Формат: $b->filetype\";\n\techo \"\\n Язык: $b->lang\";\n\techo \"\\n Размер: \" . formatSizeUnits($b->filesize);\n\techo \"\\n </summary>\";\n\n\techo \"\\n <link rel='http://opds-spec.org/image/thumbnail' href='$webroot/extract_cover.php?id=$b->bookid' type='image/jpeg'/>\";\n\techo \"\\n <link rel='http://opds-spec.org/image' href='$webroot/extract_cover.php?id=$b->bookid' type='image/jpeg'/>\";\n\tif (trim($b->filetype) == 'fb2') {\n\t\t$ur = 'fb2';\n\t} else {\n\t\t$ur = 'usr';\n\t}\n\techo \"\\n <link href='$webroot/$ur.php?id=$b->bookid' rel='http://opds-spec.org/acquisition/open-access' type='application/\" . trim($b->filetype) . \"' />\";\n\techo \"\\n <link href='$webroot/book/view/$b->bookid' rel='alternate' type='text/html' title='Книга на сайте' />\";\n\n\techo \"</entry>\\n\";\n}\n"
  },
  {
    "path": "application/init.php",
    "content": "<?php\ndefine('ROOT_PATH', '/application/');\ndefine('RECORDS_PAGE', 10);\ndefine('BOOKS_PAGE', 10);\ndefine('AUTHORS_PAGE', 50);\ndefine('SERIES_PAGE', 50);\ndefine('OPDS_FEED_COUNT', 100);\ndefine('COUNT_BOOKS', true);\ninclude(ROOT_PATH . 'functions.php');\ninclude(ROOT_PATH . 'dbinit.php');\ninclude_once(ROOT_PATH . 'webroot.php');\nsession_set_cookie_params(3600 * 24 * 31 * 12,\"/\");\n#session_start();\n\nerror_reporting(E_ALL);\n\n$cdt = date('Y-m-d H:i:s');\n\n"
  },
  {
    "path": "application/modules/404/index.php",
    "content": "<?php\nheader(\"HTTP/1.1 404 Not Found\");\nheader(\"Status: 404 Not Found\");\n\n\n"
  },
  {
    "path": "application/modules/404/module.conf",
    "content": "<?php\n$url->title = 'Страница не найдена';\n#$url->keywords .= '';\nheader(\"HTTP/1.0 404 Not Found\");\n"
  },
  {
    "path": "application/modules/author/index.php",
    "content": "<?php\ninclude_once(ROOT_PATH . \"webroot.php\");\n$stmt = $dbh->prepare(\"SELECT * FROM libavtorname LEFT JOIN libapics USING(AvtorId) WHERE avtorid=:id\");\n$stmt->bindParam(\":id\", $url->var1);\n$stmt->execute();\n$a = $stmt->fetch();\n\necho \"<div class='card mb-3'>\";\necho \"<div class='card-header'><h3>$a->lastname $a->firstname $a->middlename $a->nickname</h3></div>\";\necho \"<div class='card-body'><div class='row'>\";\n\necho \"<div class='col-sm-2 mb-3'>\";\nif (isset($a->file)) {\n\techo \"<img src='$webroot/extract_author.php?id=$a->avtorid' style='width: 100%;' class='card-image' /><br />\";\t\n}\necho \"<a class='btn btn-primary mt-2 w-100' href='$webroot/?aid=$a->avtorid'>Книги автора</a>\";\n\ntry {\n\t$stmt = $dbh->prepare(\"SELECT COUNT(*) cnt FROM fav WHERE user_uuid=:uuid AND avtorid=:id\");\n\t$stmt->bindParam(\":uuid\", $user_uuid);\n\t$stmt->bindParam(\":id\", $a->avtorid);\n\t$stmt->execute();\n\t$is_fav = ($stmt->fetch()->cnt > 0);\n\tif (!$is_fav) {\n\t\techo \"<a class='btn btn-secondary mt-2 w-100' href='$webroot/?fav_author=$a->avtorid'>В избранное</a>\";\n\t} else {\n\t\techo \"<a class='btn btn-warning mt-2 w-100' href='$webroot/?unfav_author=$a->avtorid'>Из избранного</a>\";\n\t}\n} catch (PDOException $e) {\n\t//\n}\n\necho \"</div>\";\necho \"<div class='col-sm-10 mb-3'>\";\n\n$stmt = $dbh->prepare(\"SELECT * FROM libaannotations WHERE AvtorId=:id\");\n$stmt->bindParam(\":id\", $url->var1);\n$stmt->execute();\nwhile ($an = $stmt->fetch()) {\n\techo \"$an->title<br />\";\n\techo \"<p>\", bbc2html(nl2br($an->body)), \"</p>\";\n}\necho '</div>';\n\n\n\necho \"</div></div></div>\";\n\n"
  },
  {
    "path": "application/modules/author/module.conf",
    "content": ""
  },
  {
    "path": "application/modules/authors/index.php",
    "content": "<style>\n.c {\n\tbackground: #eee;\n\tborder-radius: 50%;\n\tborder-color: #eee;\n}\n</style>\n\n<?php\n\ninclude_once(ROOT_PATH . \"webroot.php\");\n$filter2 = \"\";\n$letter = 'А%';\n$get = '';\n\nif (isset($_GET['q'])) {\n\t$get = mb_strtolower($_GET['q']);\n\t$letter = '%' . $get;\n\t$_SESSION['authors_letter'] = $get;\n}\n\nif (isset($_SESSION['authors_letter'])) {\n\t$get = $_SESSION['authors_letter'];\n}\nif (isset($_GET['letter'])) {\n\t$get = mb_strtolower($_GET['letter']);\n}\nif ($get != '') {\n\t$_SESSION['authors_letter'] = $get;\n\t$letter = $get . \"%\";\n} else {\n\tunset($_SESSION['series_letter']);\n}\n\necho \"<ul class='pagination'>\";\n\tforeach (range(chr(0xC0), chr(0xDF)) as $b) {\n\t\t$l = iconv('CP1251', 'UTF-8', $b);\n\t\tif ($l == mb_strtoupper($get)) {\n\t\t\t$cc = 'active';\n\t\t} else {\n\t\t\t$cc = '';\n\t\t}\n\t\techo \"<li class='page-item $cc'><a class='page-link' href='$webroot/authors/?letter=\" . urlencode($l) . \"'>$l</a></li>\";\n\t}\necho \"</ul>\";\necho \"<ul class='pagination'>\";\n\tforeach (range('A', 'Z') as $b) {\n\t\t$l = iconv('CP1251', 'UTF-8', $b);\n\t\tif ($l == mb_strtoupper($get)) {\n\t\t\t$cc = 'active';\n\t\t} else {\n\t\t\t$cc = '';\n\t\t}\n\t\techo \"<li class='page-item $cc'><a class='page-link' href='$webroot/authors/?letter=\" . urlencode($l) . \"'>$l</a></li>\";\n\t}\n\necho \"</ul>\";\n\n\necho \"<form action='$webroot/authors/'>\\n\";\n?>\n<div class=\"input-group mb-3\">\n  <input name=\"q\" type=\"text\" class=\"form-control\" placeholder=\"Поиск автора\" aria-label=\"Поиск серии\" aria-describedby=\"basic-addon2\">\n  <div class=\"input-group-append\">\n\n    <input type='submit' class=\"btn btn-outline-secondary\" value='Поиск' type=\"button\">\n  </div>\n</div>\n</form>\n\n<?php\n$start = AUTHORS_PAGE * $page;\n\n$stmt = $dbh->prepare(\"SELECT COUNT(*) cnt FROM libavtorname WHERE lower(libavtorname.lastname) LIKE :letter\");\n$stmt->bindParam(\":letter\", $letter);\n$stmt->execute();\n$cnt = $stmt->fetch()->cnt;\n\n$stmt = $dbh->prepare(\"SELECT *,\n\t\t(SELECT COUNT(*) FROM libavtor WHERE libavtor.avtorid=libavtorname.avtorid) cnt\n\t\tFROM libavtorname\n\t\tLEFT JOIN libapics USING(AvtorId)\n\t\tWHERE LOWER(libavtorname.lastname) LIKE :letter\n\t\tORDER BY firstname LIMIT \" . AUTHORS_PAGE . \" OFFSET $start\");\n$stmt->bindParam(\":letter\", $letter);\n$stmt->execute();\n\necho '<div class=\"row\">';\nshow_gpager(ceil($cnt / AUTHORS_PAGE), 5);\nwhile ($a = $stmt->fetch()) {\n\tif ($a->cnt > 0) {\n\t\techo \"<div class='col col-sm-6 mb-3 d-flex justify-content-between'>\";\n\t\techo \"<a class='mw-100 rounded-pill author' href='$webroot/author/view/$a->avtorid'>\";\n\t\tif ($a->file != '') {\n\t\t\techo \"<img class='rounded-circle contact' src='$webroot/extract_author.php?id=$a->avtorid' />\";\t\n\t\t}\n\t\techo \"&nbsp;$a->lastname $a->firstname $a->middlename $a->nickname&nbsp;</a>\";\n\t\techo \"<div class='badge bg-secondary'>$a->cnt</div>\";\n\t\techo \"</div>\";\n\n\t}\n}\necho \"</div>\";\n\nshow_gpager(ceil($cnt / AUTHORS_PAGE), 5);\n"
  },
  {
    "path": "application/modules/authors/module.conf",
    "content": "<?php\n$url->title = 'Авторы';\n"
  },
  {
    "path": "application/modules/book/djvu.php",
    "content": "<?php\ninclude_once(ROOT_PATH . \"webroot.php\");\necho \"<script src='$webroot/js/djvu.js'></script>\\n\";\necho \"<script src='$webroot/js/djvu_viewer.js'></script>\\n\";\n?>\n<script>\nwindow.ViewerInstance = new DjVu.Viewer();\nwindow.ViewerInstance.render(\n        document.querySelector(\"#reader\")\n);\nwindow.ViewerInstance.configure({\n\tviewMode: 'single', //'continuous',\n\tlanguage: 'ru'\n});\nwindow.ViewerInstance.loadDocumentByUrl(url);\nwindow.ViewerInstance.configure({\n\tviewMode: 'single', //'continuous',\n\tlanguage: 'ru'\n});\n</script>\n\n"
  },
  {
    "path": "application/modules/book/docx.php",
    "content": "<?php\ninclude_once(ROOT_PATH . \"webroot.php\");\necho \"<script src='$webroot/js/jszip.min.js'></script>\\n\";\necho \"<script src='$webroot/js/docx-preview.min.js'></script>\\n\";\n?>\n<script>\nvar reader = new FileReader();\nfetch(url).then(res => res.arrayBuffer()).then(arrayBuffer => {\n\tdocx.renderAsync(arrayBuffer, document.getElementById(\"reader\"));\n});\n</script>\n\n"
  },
  {
    "path": "application/modules/book/epub.php",
    "content": "<?php\necho \"<script src='$webroot/js/jszip.min.js'></script>\";\necho \"<script src='$webroot/js/epub.min.js'></script>\";\n?>\n<script>\nconst book = ePub({ replacements: 'blobUrl' });\nbook.open(url, 'epub');\nvar r = book.renderTo(document.body, {\n\tflow: \"scrolled-doc\",\n        manager: \"continuous\",\n//        flow: \"scrolled\",\n        width: \"69%\"\n});\nr.themes.default({\n\tp: {\n\t\t'font-size': '1.2rem;',\n\t\t'font-weight': '400;',\n\t\t'line-height': '1.7;',\n\t\t'color': '#333;',\n\t\t'font-family': 'sans-serif;',\n\t\t'margin-bottom': '15px;'\n\t}\n});\nvar displayed = r.display();\n\nr.reportLocation();\n\n\n</script>\n\n"
  },
  {
    "path": "application/modules/book/fb.php",
    "content": "<script>\nvar isScrolling;\n\nwindow.addEventListener('scroll', function ( event ) {\n\twindow.clearTimeout( isScrolling );\n\tisScrolling = setTimeout(function() {\n\t\tconsole.log( this.scrollY );\n\t\tvar x = new XMLHttpRequest();\n\t\tx.open(\"GET\", \"<?php echo \"$webroot/save_position.php?user_uuid=$user_uuid&bookid=$url->var1&pos=\";?>\" \n\t\t+ (100 / document.body.scrollHeight * this.scrollY), true);\n\t\tx.send(null);\n\t}, 66);\n\n}, false);\n</script>\n\n\n<?php\n\nif ($user_uuid != \"\") {\n\t$stmt = $dbh->prepare(\"SELECT pos FROM progress WHERE user_uuid=:uuid AND bookid=:id LIMIT 1\");\n\t$stmt->bindParam(\":uuid\", $user_uuid);\n\t$stmt->bindParam(\":id\", $url->var1);\n\t$stmt->execute();\n\tif ($p = $stmt->fetch()) {\n\t\techo \"<script>\";\n\t\techo 'document.addEventListener(\"DOMContentLoaded\", function(event) {';\n\t\techo \"window.scrollTo(0, (document.body.scrollHeight / 100 *\" . $p->pos . \"));\\n\";\n\t\techo \"});\\n\";\n\t\techo \"</script>\";\n\t}\n}\n\n\n$content = '';\n$data = $zip->getFromName(\"$url->var1.fb2\");\n\n$fb2 = simplexml_load_string($data);\necho ($fb2 ? '' : 'FB2 Parse Error'), PHP_EOL;\n\n$images = array();\nforeach ($fb2->binary as $binary) {\n\t$id = $binary->attributes()['id'];\n\t$images[\"$id\"] = $binary;\n}\n\nif (isset($fb2->body->section)) {\n\tforeach ($fb2->body->section as $section) {\n\t\t$s = $section->asXML();\n\t\t$s = str_replace(\"<title>\", \"<subtitle>\", $s);\n\t\t$s = str_replace(\"</title>\", \"</subtitle>\", $s);\n\t\t$s = str_replace('<image l:href=\"#', '<img style=\"width:100%;\" src=\"', $s);\n\t\tforeach (array_keys($images) as $i) {\n\t\t\t$s = str_replace($i, \"data:image/jpeg;base64,\" . $images[$i], $s);\n\t\t}\n\t\t$content .= $s;\n\t}\n} else {\n\t$s = $fb2->body->asXML();\n\t$s = str_replace(\"<title>\", \"<subtitle>\", $s);\n\t$s = str_replace(\"</title>\", \"</subtitle>\", $s);\n\t$s = str_replace('<image l:href=\"#', '<img style=\"width:100%;\" src=\"', $s);\n\tforeach (array_keys($images) as $i) {\n\t\t$s = str_replace($i, \"data:image/jpeg;base64,\" . $images[$i], $s);\n\t}\n\t$content .= $s;\n}\necho str_replace(\"<p>***</p>\",  '<div class=\"divider div-transparent div-dot\"></div>', str_replace(\"section>>\", \"section>\", $content));\n\n"
  },
  {
    "path": "application/modules/book/html.php",
    "content": "<script>\nvar reader = new FileReader();\nfetch(url).then(res => res.arrayBuffer()).then(arrayBuffer => {\n\tvar td = new TextDecoder(\"windows-1251\");\n\tvar htm = td.decode(arrayBuffer);\n\tdocument.getElementById(\"reader\").insertAdjacentHTML('beforeend', htm);\n});\n</script>\n\n"
  },
  {
    "path": "application/modules/book/index.php",
    "content": "<?php\necho \"<script>var url = '$webroot/usr.php?id=$url->var1';</script>\";\n\nfunction nl2p($string) {\n    $paragraphs = '';\n\n    foreach (explode(\"\\n\", $string) as $line) {\n        if (trim($line)) {\n            $paragraphs .= '<p>' . $line . '</p>';\n        }\n    }\n\n    return $paragraphs;\n}\nbook_info_pg($book, $webroot, true);\n\necho \"<div class='card card-body p-3'><ul>\";\n\n$stmt = $dbh->prepare(\"SELECT name, text FROM libreviews WHERE bookid=:id ORDER BY time\");\n$stmt->bindParam(\":id\", $url->var1);\n$stmt->execute();\n\nwhile ($r = $stmt->fetch()) {\n\techo \"<li><span class='badge bg-secondary'>$r->name</span> \" . stripslashes($r->text) . \"</li>\";\n}\n\necho \"</ul></div>\";\n\t\n\nfunction str_replace_first($from, $to, $content) { \n    $from = '/'.preg_quote($from, '/').'/';\n    return preg_replace($from, $to, $content, 1);\n}\n\n\n$ext = strtolower(trim($book->filetype));\n\nif ($ext == 'fb2') {\n\t$stmt = $dbh->prepare(\"SELECT * FROM book_zip WHERE $url->var1 BETWEEN start_id AND end_id AND usr=0\");\n} else {\n\t$stmt = $dbh->prepare(\"SELECT * FROM book_zip WHERE $url->var1 BETWEEN start_id AND end_id AND usr=1\");\n}\n$stmt->execute();\n$zip_name = $stmt->fetch()->filename;\n$zip = new ZipArchive(); \n\necho \"<div id='reader' class='reader'>\";\nif ($zip->open(ROOT_PATH . \"flibusta/\" . $zip_name)) {\n\tif ($ext == 'fb2') {\n\t\tinclude('fb.php');\n\t}\n\n\tif ($ext == 'txt') {\n\t\tinclude('txt.php');\n\t}\n\n\tif ($ext == 'epub') {\n\t\tinclude('epub.php');\n\t}\n\n\tif ($ext == 'pdf') {\n\t\tinclude('pdf.php');\n\t}\n\n\tif ($ext == 'mobi') {\n\t\tinclude('mobi.php');\n\t}\n\n\tif (($ext == 'djvu') || ($ext == 'djv')) {\n\t\tinclude('djvu.php');\n\t}\n\n\tif ($ext == 'rtf') {\n\t\tinclude('rtf.php');\n\t}\n\n\tif ($ext == 'docx') {\n\t\tinclude('docx.php');\n\t}\n\n\tif (($ext == 'html') || ($ext == 'htm')) {\n\t\tinclude('html.php');\n\t}\n\n\t$zip->close();\n}\n\n\n?>\n</div>\n"
  },
  {
    "path": "application/modules/book/mobi.php",
    "content": "<?php \necho \"<script src='$webroot/js/mobi.min.js'></script>\\n\"; ?>\n<script>\nvar reader = new FileReader();\n\nfetch(url).then(res => res.arrayBuffer()).then(arrayBuffer => {\n\tnew MobiFile(arrayBuffer).render_to(\"reader\");\n});\n</script>\n\n"
  },
  {
    "path": "application/modules/book/module.conf",
    "content": "<?php\nglobal $url, $book, $dbh;\n\n\n$stmt = $dbh->prepare(\"SELECT b.*,\n        (SELECT Body FROM libbannotations WHERE BookId=b.BookId LIMIT 1) Body\n                FROM libbook b WHERE bookid=:id LIMIT 1\");\n\n$stmt->bindParam(\":id\", $url->var1);\n\ntry {\n\t$stmt->execute();\n\t$book = $stmt->fetch(PDO::FETCH_OBJ);\n} catch (Exception $e) {\n\t$protocol = (isset($_SERVER['SERVER_PROTOCOL']) ? $_SERVER['SERVER_PROTOCOL'] : 'HTTP/1.0');\n        header($protocol . ' 504 Gateway Time-out');\n\n\techo \"<div class='card m-3 border-danger'><div class='card-header bg-danger'>База данных</div><div class='card-body'>\";\n\techo \"<h3>\" . $e->getMessage() . \"</h3>\";\n\techo \"<p>Попробуйте упростить параметры поиска, убрать часть тэгов, направленность. Сервер маленький ^^.</p>\";\n\techo \"</div></div>\";\n}\n\n\nif (isset($book->bookid)) {\n\t$url->title = $book->title;\n\n}\n\n"
  },
  {
    "path": "application/modules/book/pdf.php",
    "content": "<?php\necho \"<script src='$webroot/js/pdf.js'></script>\\n\"; ?>\n\n<script>\nvar pdfjsLib = window['pdfjs-dist/build/pdf'];\n\n<?php echo \"pdfjsLib.GlobalWorkerOptions.workerSrc = '$webroot/js/pdf.worker.js';\\n\"; ?>\n\nvar currPage = 1;\nvar numPages = 0;\nvar thePDF = null;\n\npdfjsLib.getDocument(url).promise.then(function(pdf) {\n        thePDF = pdf;\n        numPages = pdf.numPages;\n        pdf.getPage( 1 ).then( handlePages );\n});\n\n\nfunction handlePages(page) {\n    var viewport = page.getViewport( {scale: 1.5} );\n\n\tviewer = document.getElementById('reader');\n    var canvas = document.createElement( \"canvas\" );\n    canvas.style.display = \"block\";\n    var context = canvas.getContext('2d');\n\n    viewer.appendChild(canvas);            \n    canvas.height = viewport.height;\n    canvas.width = viewport.width;\n    page.render({canvasContext: context, viewport: viewport});\n    var line = document.createElement(\"hr\");\n    document.body.appendChild( line );\n\n    currPage++;\n    if ( thePDF !== null && currPage <= numPages ) {\n        thePDF.getPage( currPage ).then( handlePages );\n    }\n}\n\n</script>\n\n"
  },
  {
    "path": "application/modules/book/rtf.php",
    "content": "<?php\necho <<< __HTML\n<script src=\"$webroot/js/WMFJS.bundle.js\"></script>\n<script src=\"$webroot/js/EMFJS.bundle.js\"></script>\n<script src=\"$webroot/js/RTFJS.bundle.js\"></script>\n<script>\n__HTML\n?>\nvar reader = new FileReader();\n\nfetch(url).then(res => res.arrayBuffer()).then(arrayBuffer => {\n\tRTFJS.loggingEnabled(false);\n\tWMFJS.loggingEnabled(false);\n\tEMFJS.loggingEnabled(false);\n\n\tconst doc = new RTFJS.Document(arrayBuffer);\n\n\tdoc.render().then(html => {\n\t\tviewer = document.getElementById('reader');\n        \tviewer.append(...html);\n        });\n});\n</script>\n"
  },
  {
    "path": "application/modules/book/txt.php",
    "content": "<?php\n\n$content = $zip->getFromName(\"$url->var1.txt\");\nif (!mb_detect_encoding($content, 'UTF-8', true)) {\n\t$content =iconv('windows-1251//IGNORE', 'UTF-8//IGNORE', $content);\n}\n$content = nl2p($content);\necho \"<section>\";\necho str_replace(\"<p>***</p>\",  '<div class=\"divider div-transparent div-dot\"></div>', str_replace(\"section>>\", \"section>\", $content));\necho \"</section>\";\n\n"
  },
  {
    "path": "application/modules/fav/index.php",
    "content": "<?php\n$stmt = $dbh->prepare(\"SELECT COUNT(*) cnt FROM fav_users\");\n$stmt->execute();\n$fav_count = $stmt->fetch()->cnt;\n\nif ($fav_count == 0) {\n\tdie(\"Книжные полки не определены\");\n}\n\n$stmt = $dbh->prepare(\"SELECT *\n\t\tFROM fav\n\t\tLEFT JOIN libavtorname USING(AvtorId)\n\t\tLEFT JOIN libapics USING(AvtorId)\n\t\tWHERE user_uuid=:uuid AND avtorid IS NOT NULL\");\n$stmt->bindParam(\":uuid\", $user_uuid);\n\ntry {\n\t$stmt->execute();\n} catch (PDOException $e) {\n\t//\n}\n\necho '<div class=\"row\">';\nwhile ($a = $stmt->fetch()) {\n\techo \"<div class='col col-sm-333 mb-3 d-flex justify-content-between'>\";\n\techo \"<a class='mw-100 rounded-pill author' href='$webroot/author/view/$a->avtorid'>\";\n\tif ($a->file != '') {\n\t\techo \"<img class='rounded-circle contact' src='$webroot/extract_author.php?id=$a->avtorid' />\";\t\n\t}\n\techo \"&nbsp;$a->lastname $a->firstname $a->middlename $a->nickname&nbsp;</a>\";\n\techo \"</div>\";\n}\necho \"</div>\";\n\n\n$stmt = $dbh->prepare(\"SELECT *\n\t\tFROM fav\n\t\tLEFT JOIN libseqname USING(seqid)\n\t\tWHERE user_uuid=:uuid AND seqid IS NOT NULL\");\n$stmt->bindParam(\":uuid\", $user_uuid);\n\necho '<div class=\"row\">';\necho '<div class=\"col mb-3\">';\necho '<div class=\"block\">';\ntry {\n$stmt->execute();\nwhile ($s = $stmt->fetch()) {\n\techo \"<a class='btn btn-sm btn-dark' href='$webroot/?sid=$s->seqid'>\";\n\techo \"&nbsp;$s->seqname&nbsp;</a> \";\n}\n\n} catch (PDOException $e) {\n\tprint_r($e);\n}\necho \"</div>\";\necho \"</div>\";\necho \"</div>\";\n\n$stmt = $dbh->prepare(\"SELECT DISTINCT b.*\n\t\tFROM fav f\n\t\tLEFT JOIN libbook b USING(bookid)\n\t\tWHERE user_uuid=:uuid AND f.bookid IS NOT NULL\");\n$stmt->bindParam(\":uuid\", $user_uuid);\n$stmt->execute();\n\n$cnt = $stmt->rowCount();\n\n//show_gpager(ceil($cnt / RECORDS_PAGE), 5);\n\necho \"<div class='contaner'>\";\necho \"<div class='row equal'>\";\n\n$c = 0;\nwhile ($book = $stmt->fetch()) {\n\t$c++;\n\tif ($c > 10) {\n//\t\tbreak;\n\t}\n\tbook_small_pg($book,$webroot);\n}\necho \"</div>\";\necho \"</div>\";\n\n//show_gpager(ceil($cnt / RECORDS_PAGE), 5);\n\n"
  },
  {
    "path": "application/modules/fav/module.conf",
    "content": "<?php\n$url->title = 'Книжная полка - Избранное';\n"
  },
  {
    "path": "application/modules/favlist/index.php",
    "content": "<?php \necho '<div class=\"block rounded\" style=\"margin-bottom:8px;\"><form action=\"'.$webroot.'/favlist/\">'; ?>\n<div class=\"input-group mb-3\">\n   <input name=\"new_uuid\" type=\"text\" class=\"form-control\" placeholder=\"Новая полка\" aria-label=\"Новая полка\" aria-describedby=\"basic-addon2\">\n   <div class=\"input-group-append\">\n   <input type=\"submit\" class=\"btn btn-outline-secondary\" value=\"Создать\">\n </div>\n</div>\n</form>\n</div>\n\n<?php\n$stmt = $dbh->query(\"SELECT * FROM fav_users\");\n\necho '<div class=\"row\">';\nwhile ($a = $stmt->fetch()) {\n\techo \"<div class='col-sm-6'>\";\n\techo \"<div class='card mb-3'>\";\n\n\techo \"<div class='card-header'>\";\n\techo \"<a href='$webroot/fav/?login_uuid=$a->user_uuid'>$a->name</a>\";\n\techo \"</div>\";\n\n\techo \"<div class='card-body'>\";\n\t$bs = $dbh->prepare(\"SELECT (SELECT COUNT(*) cnt FROM fav WHERE user_uuid=:uuid AND bookid is not null) bcnt, (SELECT COUNT(*) cnt FROM fav WHERE user_uuid=:uuid AND avtorid is not null) acnt, (SELECT COUNT(*) cnt FROM fav WHERE user_uuid=:uuid AND seqid is not null) scnt\");\n\t$bs->bindParam(\":uuid\", $a->user_uuid);\n\t$bs->execute();\n\t$sta = $bs->fetch();\n\techo '<ul class=\"list-group list-group-horizontal\">';\n\techo \"<li class='list-group-item flex-fill'>Книг: $sta->bcnt</li>\";\n\techo \"<li class='list-group-item flex-fill'>Авторов: $sta->acnt</li>\";\n\techo \"<li class='list-group-item flex-fill'>Серий: $sta->scnt</li>\";\n\techo \"</ul>\";\n\techo \"</div>\";\n\n\techo \"<div class='card-footer'>\";\n\techo \"<a class='btn btn-danger btn-sm float-end' href='$webroot/favlist/?delete_uuid=$a->user_uuid'>Удалить</a>\";\n\techo \"</div>\";\n\n\techo \"</div>\";\n\techo \"</div>\";\n}\necho \"</div>\";\n\n"
  },
  {
    "path": "application/modules/favlist/module.conf",
    "content": "<?php\n$url->title = 'Выбор книжной полки';\n"
  },
  {
    "path": "application/modules/genres/index.php",
    "content": "<style>\n.c {\n\tbackground: #eee;\n\tborder-radius: 50%;\n\tborder-color: #eee;\n}\n</style>\n\n<?php\n$stmt = $dbh->prepare(\"SELECT g.GenreMeta\n\tFROM libgenrelist g\n\tGROUP BY g.GenreMeta\n\tORDER BY (SELECT COUNT(*) FROM libgenrelist a WHERE g.GenreMeta=a.GenreMeta) DESC\");\n$stmt->execute();\n$cn = 10;\n\n\necho \"<div class='container'><div class='row'>\";\n\nwhile ($bg = $stmt->fetch()) {\n\t$cn++;\n\tif ($cn > 0) {\n\t\t$cn = 0;\n\t}\n\n\techo \"<div class='col-sm-6 mb-3'>\";\n\techo \"<div class='card'>\";\n\n\techo \"<div class='card-header'><h3>$bg->genremeta</h3></div>\";\n\n\techo \"<div class='card-body'>\";\n\n\t$st2 = $dbh->prepare(\"SELECT libgenrelist.genreid, libgenrelist.genremeta, libgenrelist.genredesc,\n\t\t(SELECT COUNT(*) FROM libgenre WHERE libgenre.GenreId=libgenrelist.GenreId) cnt\n\t\tFROM libgenrelist\n\t\tWHERE GenreMeta=:meta\n\t\tORDER BY genredesc\");\n\t$st2->bindParam(\":meta\", $bg->genremeta);\n\t$st2->execute();\n\twhile ($g = $st2->fetch()) {\t\n\t\techo \"<div class='mb-1'>\";\n\t\techo \"<a class='btn btn-outline-primary btn-sm' href='$webroot/?gid=$g->genreid/'>$g->genredesc</a> \";\n\t\techo \"<a class='btn btn-outline-danger btn-sm' href='$webroot/?xgid=$g->genreid'>Исключить</a>\";\n\t        echo \"<span class='float-sm-end'>$g->cnt</span></div>\";\n\t}\n\t\n\techo \"</div>\";\n\techo \"</div>\";\n\techo \"</div>\";\n\n}\necho \"</div></div>\";\n"
  },
  {
    "path": "application/modules/genres/module.conf",
    "content": "<?php\n$url->title = 'Жанры';\n"
  },
  {
    "path": "application/modules/opds/index.php",
    "content": ""
  },
  {
    "path": "application/modules/opds/module.conf",
    "content": ""
  },
  {
    "path": "application/modules/primary/index.php",
    "content": "<?php\nif (isset($_GET['fb2'])) {\n\tif ($_GET['fb2'] == '') {\n\t\tunset($_SESSION['fb2']);\n\t} else {\n\t\t$_SESSION['fb2'] = true;\n\t}\n}\nif (isset($_GET['ru'])) {\n\tif ($_GET['ru'] == '') {\n\t\tunset($_SESSION['ru']);\n\t} else {\n\t\t$_SESSION['ru'] = true;\n\t}\n}\nif (isset($_GET['q'])) {\n\tif ($_GET['q'] == '') {\n\t\tunset($_SESSION['search']);\n\t} else {\n\t\t$get = mb_strtolower($_GET['q']);\n\t\t$search = str_replace(' ', '&', $get);\n\t\t$_SESSION['search'] = $search;\n\t}\n}\n\nif (isset($_GET['aid'])) {\n\tif ($_GET['aid'] == '') {\n\t\tunset($_SESSION['filter_author']);\n\t} else {\n\t\t$_SESSION['filter_author'] = intval($_GET['aid']);\n\t}\n}\n\n\nif (isset($_GET['gid'])) {\n\tif ($_GET['gid'] == '') {\n\t\tunset($_SESSION['filter_genre']);\n\t} else {\n\t\t$_SESSION['filter_genre'] = intval($_GET['gid']);\n\t}\n}\n\nif (isset($_GET['sid'])) {\n\tif ($_GET['sid'] == '') {\n\t\tunset($_SESSION['filter_series']);\n\t} else {\n\t\t$_SESSION['filter_series'] = intval($_GET['sid']);\n\t}\n}\n\n\n\nif (isset($_GET['xgid'])) {\n\tif ($_GET['xgid'] == '') {\n\t\tunset($_SESSION['filter_xgenre']);\n\t} else {\n\t\tif ($_SESSION['filter_genre'] == intval($_GET['xgid'])) {\n\t\t\tunset($_SESSION['filter_genre']);\n\t\t}\n\t\t$_SESSION['filter_xgenre'] = intval($_GET['xgid']);\n\t}\n}\n\n\n$filter = '';\n$fcontent = '';\n$join = '';\n$cols = '';\n\n\n$fcontent .= '<div class=\"btn-group mt-1 me-1\" role=\"group\">';\nif (isset($_SESSION['fb2'])) {\n\t$filter .= \"AND filetype='fb2' \";\n\t$fcontent .= \"<a class='btn bg-dark text-white bg-opacity-90 text-white' href='$webroot/?fb2'>Только FB2</a> \";\n} else {\n\t$fcontent .= \"<a class='btn bg-dark text-white bg-opacity-50 text-white' href='$webroot/?fb2=1'>Все форматы</a> \";\n}\n\nif (isset($_SESSION['ru'])) {\n\t$filter .= \"AND lang='ru' \";\n\t$fcontent .= \"<a class='btn bg-success text-white bg-opacity-90 text-white' href='$webroot/?ru'>На русском</a> \";\n} else {\n\t$fcontent .= \"<a class='btn bg-success text-white bg-opacity-50 text-white' href='$webroot/?ru=1'>Все языки</a> \";\n}\n$fcontent .= '</div>';\n\nif (isset($_SESSION['filter_author'])) {\n\t$do_cnt = true;\n\t$filter .= 'AND avtorid=:aid ';\n\t$join .= 'LEFT JOIN libavtor a USING(BookId) ';\n\t$stmt = $dbh->prepare(\"SELECT * FROM libavtorname\n\t\tLEFT JOIN libapics USING(AvtorId)\n\t\tWHERE AvtorId=:id\");\n\t$stmt->bindParam(\":id\", $_SESSION['filter_author']);\n\t$stmt->execute();\n\t$a = $stmt->fetch();\n\n\t$fcontent .= \"<div class='badge rounded-pill author'>\";\n\tif ($a->file != '') {\n\t\t$fcontent .= \"<img class='rounded-circle contact' src='$webroot/extract_author.php?id=$a->avtorid' />\";\n\t}\n\t$fcontent .= \"<a href='$webroot/?aid'>$a->lastname $a->firstname $a->middlename $a->nickname</a> <i class='fas fa-times-circle'></i></div> \";\n}\n\nif (isset($_SESSION['filter_genre'])) {\n\t$filter .= 'AND g.genreid=:gid ';\n\t$join .= 'LEFT JOIN libgenre g USING(BookId) ';\n\t$stmt = $dbh->prepare(\"SELECT * FROM libgenrelist\n\t\tWHERE genreid=:id\");\n\t$stmt->bindParam(\":id\", $_SESSION['filter_genre']);\n\t$stmt->execute();\n\t$g = $stmt->fetch();\n\n\t$fcontent .= \"<div class='badge bg-success p-1 text-white'>\";\n\t$fcontent .= \"<a class='text-white' href='$webroot/?xgid=$g->genreid'>$g->genremeta: $g->genredesc <i class='fas fa-times-circle'></i></a></div> \";\n}\n\nif (isset($_SESSION['filter_xgenre'])) {\n\t$filter .= 'AND (SELECT COUNT(*) FROM libgenre xg WHERE xg.BookId=B.BookId AND xg.genreid=:xgid) = 0';\n\t$stmt = $dbh->prepare(\"SELECT * FROM libgenrelist\n\t\tWHERE genreid=:id\");\n\t$stmt->bindParam(\":id\", $_SESSION['filter_xgenre']);\n\t$stmt->execute();\n\t$xg = $stmt->fetch();\n\n\t$fcontent .= \"<div class='badge bg-secondary p-1 text-white'>\";\n\t$fcontent .= \"<a style='text-decoration: line-through;' class='text-white' href='$webroot/?xgid'>$xg->genremeta: $xg->genredesc <i class='fas fa-times-circle'></i></a></div> \";\n}\n\n\nif (isset($_SESSION['filter_series'])) {\n\t$do_cnt = true;\n\t$cols = 's.seqnumb,';\n\t$filter .= 'AND seqid=:sid ';\n\t$join .= 'LEFT JOIN libseq s USING(BookId) ';\n\t$stmt = $dbh->prepare(\"SELECT * FROM libseqname\n\t\tWHERE seqid=:id\");\n\t$stmt->bindParam(\":id\", $_SESSION['filter_series']);\n\t$stmt->execute();\n\t$s = $stmt->fetch();\n\n\t$fcontent .= \"<div class='badge bg-danger p-1 text-white'>\";\n\t$fcontent .= \"<a class='text-white' href='$webroot/?sid'>$s->seqname <i class='fas fa-times-circle'></i></a></div> \";\n\t$order = \"s.seqnumb, $order\";\n\t$seqname = $s->seqname;\n\t$seqid = $_SESSION['filter_series'];\n}\n\nif (isset($_SESSION['search'])) {\n\t$filter .= \"AND vector @@ to_tsquery('russian', :search) \";\n\t$join .= 'LEFT JOIN libbook_ts USING(bookid) ';\n\n\t$fcontent .= \"<div class='badge bg-success p-1 text-white'>\";\n\t$fcontent .= \"<a class='text-white' href='$webroot/?q'>\" . $_SESSION['search'] . \" <i class='fas fa-times-circle'></i></a></div> \";\n}\n\nif (isset($_SESSION['filter_series'])) {\n\t$fcontent .= \"<a class='btn btn-sm btn-info float-end' href='$webroot/?fav_seq=$seqid'>$seqname в Избранное</a> \";\n}\n\necho \"<div class='block rounded' style='margin-bottom:8px;'>\";\necho \"<form action='$webroot/'>\";\n?>\n\n<div class=\"input-group mb-3\">\n   <input name=\"q\" type=\"text\" class=\"form-control\" placeholder=\"Поиск по названию\" aria-label=\"Поиск серии\" aria-describedby=\"basic-addon2\">\n   <div class=\"input-group-append\">\n   <input type='submit' class=\"btn btn-outline-secondary\" value='Поиск' type=\"button\">\n\n </div>\n</div>\n</form>\n<?php\necho $fcontent;\n\necho \"</div>\";\n\n\n$sql = \"SELECT *, $cols\n        (SELECT Body FROM libbannotations WHERE BookId=b.BookId LIMIT 1) Body\n\t\tFROM libbook b\n\t\t$join\n\t\tWHERE deleted='0'\n\t\t$filter\n\t\tORDER BY $order LIMIT \" . RECORDS_PAGE . \" OFFSET $start\";\n\n//echo \"$sql\";\n\n$stmt = $dbh->prepare($sql);\n\nif (isset($_SESSION['filter_author'])) {\n\t$stmt->bindParam(\":aid\", $_SESSION['filter_author']);\n}\nif (isset($_SESSION['filter_genre'])) {\n\t$stmt->bindParam(\":gid\", $_SESSION['filter_genre']);\n}\nif (isset($_SESSION['filter_xgenre'])) {\n\t$stmt->bindParam(\":xgid\", $_SESSION['filter_xgenre']);\n}\nif (isset($_SESSION['filter_series'])) {\n\t$stmt->bindParam(\":sid\", $_SESSION['filter_series']);\n}\nif (isset($_SESSION['search'])) {\n\t$stmt->bindParam(\":search\", $_SESSION['search']);\n}\n\n\ntry {\n\t$stmt->execute();\n} catch (Exception $e) {\n\t$protocol = (isset($_SERVER['SERVER_PROTOCOL']) ? $_SERVER['SERVER_PROTOCOL'] : 'HTTP/1.0');\n        header($protocol . ' 504 Gateway Time-out');\n\n\techo \"<div class='card m-3 border-danger'><div class='card-header bg-danger'>База данных</div><div class='card-body'>\";\n\techo \"<h3>\" . $e->getMessage() . \"</h3>\";\n\techo \"<p>Попробуйте упростить параметры поиска, убрать часть тэгов, направленность. Сервер маленький ^^.</p>\";\n\techo \"</div></div>\";\n}\n\nif (COUNT_BOOKS) {\n\t$sql = \"SELECT COUNT(*) cnt\n\t\tFROM libbook b\n\t\t$join\n\t\tWHERE deleted='0'\n\t\t$filter\";\n\t$stt = $dbh->prepare($sql);\n\n\tif (isset($_SESSION['filter_author'])) {\n\t\t$stt->bindParam(\":aid\", $_SESSION['filter_author']);\n\t}\n\tif (isset($_SESSION['filter_genre'])) {\n\t\t$stt->bindParam(\":gid\", $_SESSION['filter_genre']);\n\t}\n\tif (isset($_SESSION['filter_xgenre'])) {\n\t\t$stt->bindParam(\":xgid\", $_SESSION['filter_xgenre']);\n\t}\n\tif (isset($_SESSION['filter_series'])) {\n\t\t$stt->bindParam(\":sid\", $_SESSION['filter_series']);\n\t}\n\tif (isset($_SESSION['search'])) {\n\t\t$stt->bindParam(\":search\", $_SESSION['search']);\n\t}\n\n\t$stt->execute();\n\t$cnt = $stt->fetch()->cnt;\n\techo \"<span class='badge bg-primary mb-1'>Найдено: $cnt</span> \";\n} else {\n\t$cnt = 2000;\n}\n\n$rcnt = $stmt->rowCount();\nif ($rcnt < RECORDS_PAGE) {\n\t$cnt = $page * RECORDS_PAGE + $rcnt;\n}\n\nshow_gpager(ceil($cnt / RECORDS_PAGE), 5);\n\n$c = 0;\nwhile ($book = $stmt->fetch()) {\n\t$c++;\n\tif ($c > 10) {\n\t\tbreak;\n\t}\n\tbook_info_pg($book, $webroot);\n}\n\nshow_gpager(ceil($cnt / RECORDS_PAGE), 5);\n\n"
  },
  {
    "path": "application/modules/primary/module.conf",
    "content": ""
  },
  {
    "path": "application/modules/series/index.php",
    "content": "<style>\n.c {\n\tbackground: #eee;\n\tborder-radius: 50%;\n\tborder-color: #eee;\n}\n</style>\n\n<?php\n\n$filter2 = \"\";\n$letter = 'А%';\n$get = '';\n\nif (isset($_GET['q'])) {\n\t$get = mb_strtolower($_GET['q']);\n\t$letter = '%' . $get;\n\t$_SESSION['series_letter'] = $get;\n}\n\nif (isset($_SESSION['series_letter'])) {\n\t$get = $_SESSION['series_letter'];\n}\nif (isset($_GET['letter'])) {\n\t$get = mb_strtolower($_GET['letter']);\n}\nif ($get != '') {\n\t$_SESSION['series_letter'] = $get;\n\t$letter = $get . \"%\";\n} else {\n\tunset($_SESSION['series_letter']);\n}\n\necho \"<ul class='pagination'>\";\n\tforeach (range(chr(0xC0), chr(0xDF)) as $b) {\n\t\t$l = iconv('CP1251', 'UTF-8', $b);\n\t\tif ($l == mb_strtoupper($get)) {\n\t\t\t$cc = 'active';\n\t\t} else {\n\t\t\t$cc = '';\n\t\t}\n\t\techo \"<li class='page-item $cc'><a class='page-link' href='$webroot/series/?letter=\" . urlencode($l) . \"'>$l</a></li>\";\n\t}\necho \"</ul>\";\necho \"<ul class='pagination'>\";\n\tforeach (range('A', 'Z') as $b) {\n\t\t$l = iconv('CP1251', 'UTF-8', $b);\n\t\tif ($l == mb_strtoupper($get)) {\n\t\t\t$cc = 'active';\n\t\t} else {\n\t\t\t$cc = '';\n\t\t}\n\t\techo \"<li class='page-item $cc'><a class='page-link' href='$webroot/series/?letter=\" . urlencode($l) . \"'>$l</a></li>\";\n\t}\n\necho \"</ul>\";\n\n\necho \"<form action='$webroot/series/'>\\n\";\n?>\n<div class=\"input-group mb-3\">\n  <input name=\"q\" type=\"text\" class=\"form-control\" placeholder=\"Поиск серии\" aria-label=\"Поиск серии\" aria-describedby=\"basic-addon2\">\n  <div class=\"input-group-append\">\n\n    <input type='submit' class=\"btn btn-outline-secondary\" value='Поиск' type=\"button\">\n  </div>\n</div>\n</form>\n\n<?php\n$start = SERIES_PAGE * $page;\n\n$stmt = $dbh->prepare(\"SELECT COUNT(*) cnt FROM libseqname WHERE lower(libseqname.SeqName) LIKE :letter\");\n$stmt->bindParam(\":letter\", $letter);\n$stmt->execute();\n$cnt = $stmt->fetch()->cnt;\n\n$stmt = $dbh->prepare(\"SELECT SeqName, SeqId,\n\t\t(SELECT COUNT(*) FROM libseq WHERE libseq.SeqId=libseqname.SeqId) cnt\n\t\tFROM libseqname \n\t\tWHERE LOWER(libseqname.SeqName) LIKE :letter\n\t\tORDER BY seqname LIMIT \" . SERIES_PAGE . \" OFFSET $start\");\n$stmt->bindParam(\":letter\", $letter);\n$stmt->execute();\n\necho '<div class=\"row\">';\nshow_gpager(ceil($cnt / SERIES_PAGE), 5);\nwhile ($bs = $stmt->fetch()) {\n\tif ($bs->cnt > 0) {\n\t\techo \"<div class='col col-sm-6 mb-3 d-flex justify-content-between'><a class='mw-100 text-dark' href='$webroot/?sid=$bs->seqid'>$bs->seqname</a><span class='badge bg-secondary'>$bs->cnt</span></div>\";\n\t}\n}\necho \"</div>\";\n\nshow_gpager(ceil($cnt / SERIES_PAGE), 5);\n\n"
  },
  {
    "path": "application/modules/series/module.conf",
    "content": "<?php\n$url->title = 'Жанры';\n"
  },
  {
    "path": "application/modules/service/index.php",
    "content": "\n<div class='row'>\n<div class=\"col-sm-6\">\n<div class='card'>\n<h4 class=\"rounded-top p-1\" style=\"background: #d0d0d0;\">Статистика</h4>\n<div class='card-body'>\n<?php\n$status_import = (trim(shell_exec('ps aux|grep app_|grep -v grep') ?? '') !== '');\n\nfunction get_ds($path){\n\t$io = popen ( '/usr/bin/du -sk ' . $path, 'r' );\n\t$size = fgets ( $io, 4096);\n\t$size = substr ( $size, 0, strpos ( $size, \"\\t\" ) );\n\tpclose ( $io );\n\treturn round($size / 1024, 1);\n}\n\nif (!$status_import) {\n\t$cache_size = get_ds(\"/application/cache/covers\") + get_ds(\"/application/cache/authors\");\n\t$books_size = round(get_ds(\"/application/flibusta\") / 1024, 1);\n\t$qtotal = $dbh->query(\"SELECT (SELECT MAX(time) FROM libbook) mmod, (SELECT COUNT(*) FROM libbook) bcnt, (SELECT COUNT(*) FROM libbook WHERE deleted='0') bdcnt\");\n\t$qtotal->execute();\n\t$total = $qtotal->fetch();\n\techo \"<table class='table'><tbody>\";\n\techo \"<tr><td>Актуальность базы:</td><td>$total->mmod</td></tr>\";\n\techo \"<tr><td>Всего произведений:</td><td>$total->bcnt</td></tr>\";\n\techo \"<tr><td>Размер архива:</td><td>$books_size Gb</td></tr>\";\n\techo \"<tr><td>Размер кэша:</td><td>$cache_size Mb</td></tr>\";\n\techo \"</tbody></table>\";\n} else {\n\techo \"Идёт процесс импорта...\";\n}\n?>\n</div>\n</div>\n</div>\n\n<div class=\"col-sm-6\">\n<div class='card'>\n<h4 class=\"rounded-top p-1\" style=\"background: #d0d0d0;\">Операции</h4>\n<div class='card-body'>\n<?php\n\n\nif (isset($_GET['empty'])) {\n\tshell_exec('rm /application/cache/authors/*');\n\tshell_exec('rm /application/cache/covers/*');\n\theader(\"location:$webroot/service/\");\n}\n\nif (!$status_import) {\n\tif (isset($_GET['import'])) {\n\t\tshell_exec('stdbuf -o0 /application/tools/app_import_sql.sh 2>/dev/null >/dev/null &');\n\t\t$status_fetch = true;\n\t\theader(\"location:$webroot/service/\");\n\t}\n\tif (isset($_GET['reindex'])) {\n\t\tshell_exec('stdbuf -o0 /application/tools/app_reindex.sh 2>/dev/null >/dev/null &');\n\t\t$status_fetch = true;\n\t\theader(\"location:$webroot/service/\");\n\t}\n}\n\nif ($status_import) {\n\t$status = 'disabled';\n} else {\n\t$status = '';\n}\necho \"<div class='d-flex justify-content-between'>\";\necho \"<a class='btn btn-primary m-1 $status' href='?import=sql'>Обновить базу</a> \";\necho \"<a class='btn btn-warning m-1' href='?empty=cache'>Очистить кэш</a> \";\necho \"<a class='btn btn-warning m-1' href='?reindex'>Сканирование ZIP</a> \";\necho \"</div>\";\n\nif ($status_import) {\n\t$op = file_get_contents('/application/sql/status');;\n\techo \"<div class='d-flex align-items-center m-3'>\";\n\techo nl2br($op);\n\techo \"<div class='spinner-border ms-auto' role='status' aria-hidden='true'></div></div>\";\n\theader(\"Refresh:10\");\n}\n\n?>\n</div>\n</div>\n</div>\n\n</div>\n\n<div class='row'>\n<div class=\"col-sm-12 mt-3\">\n<div class='card'>\n<div class='card-body'>\n<p>\nДля выполнения обновления необходимо разместить фалы дампа Флибусты (*.sql) в каталог FlibustaSQL. Процесс занимает до 30 минут, в зависимости от быстродействия сервера (SSD значительно увеличивает скорость импорта)\n</p>\n<p>\nЧтобы отображались фото авторов и обложек для форматов, отличных от FB2, необходимо разместить в каталоге cache файлы архивов lib.a.attached.zip и lib.b.attached.zip соответственно.\nВ кэше хранятся распакованные фото авторов и обложек для FB2, а также их уменьшенные версии.</p>\n<p>Файлы архивов Флибусты (*.zip) необходимо размещать в каталоге Flibusta.Net. Обрабатываются также файлы ежедневных обновлений, но обязательно необходимо подгружать свежие SQL файлы.</p>\n<?php echo \"<p>Доступен также OPDS-каталог для читалок: <a href='$webroot/opds/'>/opds/</a></p>\"; ?>\n<p><b>Каталоги FlibustaSQL, cache и их подкаталоги должны иметь права на запись для контейнера. Скрипты в каталоге /application/tools/ должны иметь права на выполнение.</b></p>\n</div></div></div></div>\n\n"
  },
  {
    "path": "application/modules/service/module.conf",
    "content": "<?php\nglobal $url;\n\n$url->title = 'Сервис и настройки';\n"
  },
  {
    "path": "application/opds/author.php",
    "content": "<?php\nheader('Content-Type: application/atom+xml; charset=utf-8');\necho '<?xml version=\"1.0\" encoding=\"utf-8\"?>';echo \"\\n\";\necho '<feed xmlns=\"http://www.w3.org/2005/Atom\" xmlns:dc=\"http://purl.org/dc/terms/\" xmlns:os=\"http://a9.com/-/spec/opensearch/1.1/\" xmlns:opds=\"https://specs.opds.io/opds-1.2\">';\n\n$author_id = $_GET['author_id'];\nif ($author_id == '')\n    die('author.php called without specifying id');\n\n$seq_mode = isset($_GET['seq']);\nif (! $seq_mode)  {  \n    $stmt = $dbh->prepare(\"SELECT a.LastName as LastName, a.MiddleName as MiddleName, a.FirstName as FirstName, a.NickName as NickName,\n        aa.Body as Body,  p.File as picFile \n        from libavtorname a \n        LEFT JOIN libaannotations aa on a.avtorid = aa.avtorid\n        LEFT JOIN libapics p on a.avtorid=p.avtorid\n        where a.avtorID=:authorid \");\n} else {\n    $stmt = $dbh->prepare(\"SELECT LastName, MiddleName, FirstName, NickName from libavtorname where avtorID=:authorid \");\n}\n\n$stmt->bindParam(':authorid', $author_id);\n$stmt->execute();\nif ($a = $stmt->fetchObject()){\n    $author_name = ($a->nickname !='')?\"$a->firstname $a->middlename $a->lastname ($a->nickname)\"\n                            :\"$a->firstname  $a->middlename $a->lastname\";\n   \n    if ($seq_mode) { // show list of sequences with current author's works\n       \n        echo <<<_XML\n        <id>tag:author:$author_id:sequences</id>\n        <title>$author_name : Книги по сериям</title>\n        <updated>$cdt</updated>\n        <icon>/favicon.ico</icon>\n        <link href=\"$webroot/opds-opensearch.xml.php\" rel=\"search\" type=\"application/opensearchdescription+xml\" />\n        <link href=\"$webroot/opds/search?by=author&searchTerm={searchTerms}\" rel=\"search\" type=\"application/atom+xml\" />\n        <link href=\"$webroot/opds\" rel=\"start\" type=\"application/atom+xml;profile=opds-catalog\" />\n        _XML;\n        $sequences = $dbh->prepare(\"SELECT distinct sn.seqid seqid, sn.seqname seqname\n        from libseqname sn, libseq s, libavtor a \n        where sn.seqid = s.seqid and s.bookId= a.bookId and a.avtorId= :aid\");\n        $sequences->bindParam(\":aid\", $author_id);\n        $sequences->execute();\n        while($seq = $sequences->fetchObject()){\n            echo \"<entry>\\n\";\n            echo \"<updated>$cdt</updated>\\n\";\n            echo \"<title>\"  . htmlspecialchars($seq->seqname ?? '') . \"</title>\\n\";\n            echo \"<link href='$webroot/opds/list?seq_id=$seq->seqid'  type='application/atom+xml;profile=opds-catalog' />\\n\";\n            echo \"</entry>\\n\";\n        }\n        $sequences = null;\n    } else {\n        echo <<<_XML\n        <id>tag:author:$author_id</id>\n        <title>$author_name</title>\n        <updated>$cdt</updated>\n        <icon>/favicon.ico</icon>\n        <link href=\"$webroot/opds-opensearch.xml\" rel=\"search\" type=\"application/opensearchdescription+xml\" />\n        <link href=\"$webroot/opds/search?by=author&amp;searchTerm={searchTerms}\" rel=\"search\" type=\"application/atom+xml\" />\n        <link href=\"$webroot/opds\" rel=\"start\" type=\"application/atom+xml;profile=opds-catalog\" />\n\n        _XML;\n        if ($a->body != '') {\n            echo <<<_XML\n            <entry>\n            <updated>$cdt</updated>\n            <id>tag:author:bio:$author_id</id>\n            <title>Об авторе</title>\n            _XML;\n            if (!is_null($a->picfile)){\n                echo <<<_XML\n                    <link href=\"$webroot/extract_author.php?id=$author_id\" rel=\"http://opds-spec.org/image\" type=\"image/jpeg\" />\n                    <link href=\"$webroot/extract_author.php?id=$author_id\" rel=\"x-stanza-cover-image\" type=\"image/jpeg\" />\n                    <link href=\"$webroot/extract_author.php?id=$author_id\" rel=\"http://opds-spec.org/image/thumbnail\" type=\"image/jpeg\" />\n                    <link href=\"$webroot/extract_author.php?id=$author_id\" rel=\"x-stanza-cover-image-thumbnail\" type=\"image/jpeg\" /> \n\n                _XML;\n            }\n            //echo '<content type = \"text/html\">';\n            echo '<content type=\"text/html\">';\n           /* if (!is_null($a->picfile)){\n                echo \"&lt;img src=&quot;/extract_author.php?id=$author_id&quot; align=left style=&quot;border:5px solid #ededed; margin: 12px;&quot;&gt;&lt;p&gt;\\n\";\n            }*/\n            echo $a->body;\n            echo \"\\n\";\n            echo <<< _XML\n                </content>\n                <link href=\"$webroot/author/view/$author_id\" rel=\"alternate\" type=\"text/html\" title=\"Страница автора на сайте\" />\n                <link href=\"$webroot/author/view/$author_id\" rel=\"http://opds-spec.org/acquisition\" type=\"text/html\" title=\"Страница автора на сайте\" />\n                <link href=\"$webroot/opds/list?author_id=$author_id&amp;display_type=alphabet\" rel=\"http://www.feedbooks.com/opds/facet\" type=\"application/atom+xml;profile=opds-catalog\" title=\"Книги автора по алфавиту\" />\n                <link href=\"$webroot/opds/author?author_id=$author_id&amp;seq=1\" rel=\"http://www.feedbooks.com/opds/facet\" type=\"application/atom+xml;profile=opds-catalog\" title=\"Книжные серии с произведениями автора\" />\n                <link href=\"$webroot/opds/list?author_id=$author_id&amp;display_type=sequenceless\" rel=\"http://www.feedbooks.com/opds/facet\" type=\"application/atom+xml;profile=opds-catalog\" title=\"Книги автора вне серий\" />\n            </entry>\n            _XML;\n        }\n        echo <<< _XML\n        <entry>\n        <updated>$cdt</updated>\n        <title>Все книги автора (без сортировки)</title>\n        <id>tag:author:$author_id:list</id>\n        <link href=\"$webroot/opds/list?author_id=$author_id\" type=\"application/atom+xml;profile=opds-catalog\" />\n        </entry>\n        <entry>\n        <updated>$cdt</updated>\n        <title>Книги автора по алфавиту</title>\n        <id>tag:author:$author_id:alphabet</id>\n        <link href=\"$webroot/opds/list?author_id=$author_id&amp;display_type=alphabet\" type=\"application/atom+xml;profile=opds-catalog\" />\n        </entry>\n        <entry>\n        <updated>$cdt</updated>\n        <title>Книги автора по году издания</title>\n        <id>tag:author:$author_id:year</id>\n        <link href=\"$webroot/opds/list?author_id=$author_id&amp;display_type=year\" type=\"application/atom+xml;profile=opds-catalog\" />\n        </entry>\n        <entry>\n        <updated>$cdt</updated>\n        <title>Книжные серии с произведениями автора</title>\n        <id>tag:author:$author_id:sequences</id>\n        <link href=\"$webroot/opds/author?author_id=$author_id&amp;seq=1\" type=\"application/atom+xml;profile=opds-catalog\" />\n        </entry>\n        <entry>\n        <updated>$cdt</updated>\n        <title>Произведения  вне серий</title>\n        <id>tag:author:$author_id:sequenceless</id>\n        <link href=\"$webroot/opds/list?author_id=$author_id&amp;display_type=sequenceless\" type=\"application/atom+xml;profile=opds-catalog\" />\n        </entry>\n        _XML;\n    } \n}\nelse \n    die(\"author with id $author_id not found in the data base\");\n$stmt = null;\n?>\n</feed>\n"
  },
  {
    "path": "application/opds/authorsindex.php",
    "content": "<?php\nheader('Content-Type: application/atom+xml; charset=utf-8');\n\n$letters = $_GET['letters'] ?? '';\n\nif ($letters !== '') {\n    $length_letters = mb_strlen($letters, 'UTF-8');\n} else {\n    $length_letters = 0; // Установите подходящее значение по умолчанию\n}\n\necho '<?xml version=\"1.0\" encoding=\"utf-8\"?>';\necho <<< _XML\n <feed xmlns=\"http://www.w3.org/2005/Atom\" xmlns:dc=\"http://purl.org/dc/terms/\" xmlns:os=\"http://a9.com/-/spec/opensearch/1.1/\" xmlns:opds=\"http://opds-spec.org/2010/catalog\"> <id>tag:root:authors</id>\n <title>Книги по авторам</title>\n <updated>$cdt</updated>\n <icon>/favicon.ico</icon>\n <link href=\"$webroot/opds-opensearch.xml.php\" rel=\"search\" type=\"application/opensearchdescription+xml\" />\n <link href=\"$webroot/opds/authorsindex?letters={searchTerms}\" rel=\"search\" type=\"application/atom+xml\" />\n <link href=\"$webroot/opds\" rel=\"start\" type=\"application/atom+xml;profile=opds-catalog\" />\\n\n_XML;\n\n$query=\"\n\tSELECT UPPER(SUBSTR(LastName, 1, \".($length_letters + 1).\")) as alpha, COUNT(*) as cnt\n\tFROM libavtorname\n\tWHERE UPPER(SUBSTR(LastName, 1, \".($length_letters + 1).\")) SIMILAR TO '\".$letters.\"[A-ZА-Я]'\n\tGROUP BY UPPER(SUBSTR(LastName, 1, \".($length_letters + 1).\"))\n\tORDER BY alpha\";\n$ai = $dbh->query($query);\nwhile ($ach = $ai->fetchObject()) {\n\techo \"\\n<entry> <updated>$cdt</updated>\";\n\techo \"<id>tag:authors:$ach->alpha</id>\";\n\techo \"<title>$ach->alpha</title>\";\n\techo \"<content type='text'>$ach->cnt авторов на $ach->alpha</content>\";\n\tif ($ach->cnt>500) {\n\t\t$url=\"$webroot/opds/authorsindex?letters=$ach->alpha\";\n\t} else {\n\t\t$url=\"$webroot/opds/search?by=author&amp;q=$ach->alpha\";\n\t}\n\techo \"<link href='$url' type='application/atom+xml;profile=opds-catalog' />\";\n\techo \"</entry>\";\n}\necho '</feed>';\n?>"
  },
  {
    "path": "application/opds/fav.php",
    "content": "<?php\nheader('Content-Type: application/atom+xml; charset=utf-8');\necho '<?xml version=\"1.0\" encoding=\"utf-8\"?>';\necho <<< _XML\n<feed xmlns=\"http://www.w3.org/2005/Atom\" xmlns:dc=\"http://purl.org/dc/terms/\" xmlns:os=\"http://a9.com/-/spec/opensearch/1.1/\" xmlns:opds=\"http://opds-spec.org/2010/catalog\">\n<id>tag:root:home</id>\n<title>Книги по авторам</title>\n_XML;\necho \"<updated>$cdt</updated>\";\necho <<< _XML\n<icon>/favicon.ico</icon>\n<link href=\"$webroot/opds-opensearch.xml.php\" rel=\"search\" type=\"application/opensearchdescription+xml\" />\n<link href=\"$webroot/opds/search?q={searchTerms}\" rel=\"search\" type=\"application/atom+xml\" />\n<link href=\"$webroot/opds/\" rel=\"start\" type=\"application/atom+xml;profile=opds-catalog\" />\n_XML;\necho \"<link href=\".$webroot.'/opds/fav/?uuid='.$_GET['uuid'].' rel=\"self\" type=\"application/atom+xml;profile=opds-catalog\" />';\n \n$uuid = $_GET['uuid'];\n$books = $dbh->prepare(\"SELECT DISTINCT b.*\n\t\tFROM fav f\n\t\tLEFT JOIN libbook b USING(bookid)\n\t\tWHERE user_uuid=:uuid AND f.bookid IS NOT NULL\");\n$books->bindParam(\":uuid\", $uuid);\n$books->execute();\n\nwhile ($b = $books->fetch()) {\n\topds_book($b, $webroot);\n}\n\necho \"</feed>\";\n?>\n"
  },
  {
    "path": "application/opds/favs.php",
    "content": "<?php\nheader('Content-Type: application/atom+xml; charset=utf-8');\necho '<?xml version=\"1.0\" encoding=\"utf-8\"?>';\necho <<< _XML\n <feed xmlns=\"http://www.w3.org/2005/Atom\" xmlns:dc=\"http://purl.org/dc/terms/\" xmlns:os=\"http://a9.com/-/spec/opensearch/1.1/\" xmlns:opds=\"http://opds-spec.org/2010/catalog\"> <id>tag:root</id>\n <title>Книжные полки</title>\n _XML;\n echo \"<updated>$cdt</updated>\";\n echo <<< _XML\n <icon>/favicon.ico</icon>\n <link href=\"$webroot/opds-opensearch.xml.php\" rel=\"search\" type=\"application/opensearchdescription+xml\" />\n <link href=\"$webroot/opds/search?q={searchTerms}\" rel=\"search\" type=\"application/atom+xml\" />\n <link href=\"$webroot/opds/\" rel=\"start\" type=\"application/atom+xml;profile=opds-catalog\" />\n <link href=\"$webroot/opds/favs/\" rel=\"self\" type=\"application/atom+xml;profile=opds-catalog\" />\n_XML;\n\n$favs = $dbh->prepare(\"SELECT * FROM fav_users\");\n$favs->execute();\n\nwhile ($fav = $favs->fetch()) {\n\techo \"<entry> <updated>$cdt</updated>\";\n\techo \" <id>tag:fav:$fav->user_uuid</id>\";\n\techo \" <title>$fav->name</title>\";\n\techo \" <content type='text'></content>\";\n\techo \" <link href='$webroot/opds/fav/?uuid=$fav->user_uuid' type='application/atom+xml;profile=opds-catalog' />\";\n\techo \"</entry>\";\n}\n\necho '</feed>';\n?>\n"
  },
  {
    "path": "application/opds/genres.php",
    "content": "<?php\nheader('Content-Type: application/atom+xml; charset=utf-8');\necho '<?xml version=\"1.0\" encoding=\"utf-8\"?>';\necho <<< _XML\n <feed xmlns=\"http://www.w3.org/2005/Atom\" xmlns:dc=\"http://purl.org/dc/terms/\" xmlns:os=\"http://a9.com/-/spec/opensearch/1.1/\" xmlns:opds=\"http://opds-spec.org/2010/catalog\"> <id>tag:root</id>\n <title>Категории жанров</title>\n _XML;\necho  \"<updated>$cdt</updated>\";\necho <<< _XML\n <icon>/favicon.ico</icon>\n <link href=\"$webroot/opds-opensearch.xml.php\" rel=\"search\" type=\"application/opensearchdescription+xml\" />\n <link href=\"$webroot/opds/search?q={searchTerms}\" rel=\"search\" type=\"application/atom+xml\" />\n <link href=\"$webroot/opds/\" rel=\"start\" type=\"application/atom+xml;profile=opds-catalog\" />\n <link href=\"$webroot/opds/genres/\" rel=\"self\" type=\"application/atom+xml;profile=opds-catalog\" />\n_XML;\n$gs = $dbh->prepare(\"SELECT DISTINCT(genremeta) genre FROM libgenrelist ORDER BY genre\");\n$gs->execute();\n\nwhile ($g = $gs->fetch()) {\n\techo \"<entry> <updated>$cdt</updated>\";\n\techo \" <id>tag:genre:\" . urlencode($g->genre) . \"</id>\";\n\techo \" <title>$g->genre</title>\";\n\techo \" <content type='text'></content>\";\n\techo \" <link href='$webroot/opds/listgenres/?id=\" . urlencode($g->genre) . \"' type='application/atom+xml;profile=opds-catalog' />\";\n\techo \"</entry>\\n\";\n}\necho \"</feed>\";\n?>\n\n"
  },
  {
    "path": "application/opds/index.php",
    "content": "<?php\nswitch ($url->action) {\n\tcase 'list':\n\t\tinclude('list.php');\n\t\tbreak;\n\tcase 'authorsindex':\n\t\tinclude('authorsindex.php');\n\t\tbreak;\n\tcase 'author':\n\t\tinclude('author.php');\n\t\tbreak;\n\tcase 'sequencesindex':\n\t\tinclude('sequencesindex.php');\n\t\tbreak;\n\tcase 'genres':\n\t\tinclude('genres.php');\n\t\tbreak;\n\tcase 'listgenres':\n\t\tinclude('listgenres.php');\n\t\tbreak;\n\tcase 'fav':\n\t\tinclude('fav.php');\n\t\tbreak;\n\tcase 'favs':\n\t\tinclude('favs.php');\n\t\tbreak;\n\tcase 'search':\n\t\tinclude('search.php');\n\t\tbreak;\n\n\tdefault:\n\t\tinclude('main.php');\n}\n"
  },
  {
    "path": "application/opds/list.php",
    "content": "<?php\nheader('Content-Type: application/atom+xml; charset=utf-8');\necho '<?xml version=\"1.0\" encoding=\"utf-8\"?>';\n\n$filter = \"deleted='0' \";\n$join = '';\n\n$orderby = ' time DESC ';\n\n$title = 'в новинках';\n\nif (isset($_GET['genre_id'])) {\n\t$gid = intval($_GET['genre_id']);\n\t$filter .= 'AND genreid=:gid ';\n\t$join .= 'LEFT JOIN libgenre g USING(BookId) ';\n\t$orderby = ' time DESC ';\n\t$stmt = $dbh->prepare(\"SELECT * FROM libgenrelist\n\t\tWHERE genreid=:gid\");\n\t$stmt->bindParam(\":gid\", $gid);\n\t$stmt->execute();\n\t$g = $stmt->fetch();\n\t$title = \"в $g->genremeta: $g->genredesc\";\n}\n\nif (isset($_GET['seq_id'])) {\n\t$sid = intval($_GET['seq_id']);\n\t$filter .= 'AND seqid=:sid';\n\t$join .= 'LEFT JOIN libseq s USING(BookId) ';\n\t$orderby = \" s.seqnumb \";\n\t$stmt = $dbh->prepare(\"SELECT * FROM libseqname\n\t\tWHERE seqid=:sid\");\n\t$stmt->bindParam(\":sid\", $sid);\n\t$stmt->execute();\n\t$s = $stmt->fetch();\n\t$title = \"в сборнике $s->seqname\";\n}\n\nif (isset($_GET['author_id'])) {\n\t$aid = intval($_GET['author_id']);\n\t$filter .= 'AND avtorid=:aid ';\n\t$join .= 'JOIN libavtor USING (bookid) JOIN libavtorname USING (avtorid) ';\n\t\n\t$display_type = (isset($_GET['display_type']))? ($_GET['display_type'] ?? '') : '';\n\tif ($display_type == 'sequenceless') {\n\t\t$filter .= 'AND s.seqid is null ';\n\t\t$join .= ' LEFT JOIN libseq s ON s.bookId= b.bookId ';\n\t\t$orderby = ' time DESC ';\n\t} else if ($display_type == 'year'){\n\t\t$orderby = ' year ';\n\t} else if ($display_type == 'alphabet') {\n\t\t$orderby = ' title ';\n\t} else {\n\t\t$orderby = ' time DESC ';\n\t}\n\t$stmt = $dbh->prepare(\"SELECT * FROM libavtorname WHERE avtorid=:aid\");\n\t$stmt->bindParam(\":aid\", $aid);\n\t$stmt->execute();\n\t$a = $stmt->fetch();\n\t$title = ($a->nickname !='')?\"$a->firstname $a->middlename $a->lastname ($a->nickname)\"\n\t\t\t:\"$a->firstname  $a->middlename $a->lastname\";\n} \n\necho <<< _XML\n<feed xmlns=\"http://www.w3.org/2005/Atom\" xmlns:dc=\"http://purl.org/dc/terms/\" xmlns:os=\"http://a9.com/-/spec/opensearch/1.1/\" xmlns:opds=\"http://opds-spec.org/2010/catalog\">\n<id>tag:root:home</id>\n_XML;\necho \"<title>Книги $title</title>\";\necho \"<updated>$cdt</updated>\";\necho <<< _XML\n<icon>/favicon.ico</icon>\n<link href=\"$webroot/opds-opensearch.xml.php\" rel=\"search\" type=\"application/opensearchdescription+xml\" />\n<link href=\"$webroot/opds/search?q={searchTerms}\" rel=\"search\" type=\"application/atom+xml\" />\n<link href=\"$webroot/opds/\" rel=\"start\" type=\"application/atom+xml;profile=opds-catalog\" />\\n\n_XML;\n\n$books = $dbh->prepare(\"SELECT b.*\n\tFROM libbook b\n\t$join\n\tWHERE\n\t$filter\n\tORDER BY $orderby\n\tLIMIT \". OPDS_FEED_COUNT);\n\nif (isset($_GET['genre_id'])) {\n\t$books->bindParam(\":gid\", $gid);\n}\n\nif (isset($_GET['seq_id'])) {\n\t$books->bindParam(\":sid\", $sid);\n}\n\nif (isset($_GET['author_id'])) {\n\t$books->bindParam(\":aid\", $aid);\n}\n\n$books->execute();\n\nwhile ($b = $books->fetch()) {\n\topds_book($b, $webroot);\n}\n\necho \"</feed>\";\n?>"
  },
  {
    "path": "application/opds/listgenres.php",
    "content": "<?php\nheader('Content-Type: application/atom+xml; charset=utf-8');\necho '<?xml version=\"1.0\" encoding=\"utf-8\"?>';\necho '<feed xmlns=\"http://www.w3.org/2005/Atom\" xmlns:dc=\"http://purl.org/dc/terms/\" xmlns:os=\"http://a9.com/-/spec/opensearch/1.1/\" xmlns:opds=\"http://opds-spec.org/2010/catalog\"> <id>tag:root</id>';\necho \"<title>Жанры в \".$_GET['id'].\"</title>\";\necho \"<updated>$cdt</updated>\";\necho  <<< _XML\n <icon>/favicon.ico</icon>\n <link href=\"$webroot/opds-opensearch.xml.php\" rel=\"search\" type=\"application/opensearchdescription+xml\" />\n <link href=\"$webroot/opds/search?q={searchTerms}\" rel=\"search\" type=\"application/atom+xml\" />\n <link href=\"$webroot/opds/\" rel=\"start\" type=\"application/atom+xml;profile=opds-catalog\" />\n\n _XML;\n\n$gs = $dbh->prepare(\"SELECT *,\n\t(SELECT COUNT(*) FROM libgenre WHERE libgenre.genreid=g.genreid) cnt\n\tFROM libgenrelist g\n\tWHERE g.genremeta=:id\");\n$gs->bindParam(\":id\", $_GET['id']);\n$gs->execute();\n\nwhile ($g = $gs->fetch()) {\n\techo \"<entry> <updated>$cdt</updated>\";\n\techo \" <id>tag:genre:$g->genrecode</id>\";\n\techo \" <title>$g->genredesc</title>\";\n\techo \" <content type='text'>Книг: $g->cnt</content>\";\n\techo \" <link href='$webroot/opds/list/?genre_id=$g->genreid' type='application/atom+xml;profile=opds-catalog' />\";\n\techo \"</entry>\\n\";\n}\necho '</feed>';\n?>\n\n"
  },
  {
    "path": "application/opds/main.php",
    "content": "<?php\nheader('Content-Type: application/atom+xml; charset=utf-8');\necho '<?xml version=\"1.0\" encoding=\"utf-8\"?>';\necho <<< _XML\n \n<feed xmlns=\"http://www.w3.org/2005/Atom\" xmlns:dc=\"http://purl.org/dc/terms/\" xmlns:os=\"http://a9.com/-/spec/opensearch/1.1/\" xmlns:opds=\"https://specs.opds.io/opds-1.2\">\n <id>tag:root</id>\n <title>Домашняя библиотека</title>\n <icon>/favicon.ico</icon>\n <link href=\"$webroot/opds-opensearch.xml.php\" rel=\"search\" type=\"application/opensearchdescription+xml\" />\n <link href=\"$webroot/opds/search?q={searchTerms}\" rel=\"search\" type=\"application/atom+xml\" />\n <link href=\"$webroot/opds/\" rel=\"start\" type=\"application/atom+xml;profile=opds-catalog\" />\n <link href=\"$webroot/opds/\" rel=\"self\" type=\"application/atom+xml;profile=opds-catalog\" />\n<entry> \n <updated>$cdt</updated>\n <id>tag:root:new</id>\n <title>Новинки</title>\n <content type=\"text\">Последние поступления в библиотеку</content>\n <link href=\"$webroot/opds/list/\" rel=\"http://opds-spec.org/sort/new\" type=\"application/atom+xml;profile=opds-catalog\" />\n <link href=\"$webroot/opds/list/\" type=\"application/atom+xml;profile=opds-catalog\" />\n</entry>\n<entry> \n <updated>$cdt</updated>\n <id>tag:root:shelf</id>\n <title>Книжные полки</title>\n <content type=\"text\">Избранное</content>\n <link href=\"$webroot/opds/favs/\" type=\"application/atom+xml;profile=opds-catalog\" />\n</entry>\n<entry> <updated>$cdt</updated>\n <id>tag:root:genre</id>\n <title>По жанрам</title>\n <content type=\"text\">Поиск книг по жанрам</content>\n <link href=\"$webroot/opds/genres\" type=\"application/atom+xml;profile=opds-catalog\" />\n</entry>\n<entry> <updated>$cdt</updated>\n <id>tag:root:authors</id>\n <title>По авторам</title>\n <content type=\"text\">Поиск книг по авторам</content>\n <link href=\"$webroot/opds/authorsindex\" type=\"application/atom+xml;profile=opds-catalog\" />\n</entry>\n<entry> <updated>$cdt</updated>\n <id>tag:root:sequences</id>\n <title>По сериям</title>\n <content type=\"text\">Поиск книг по сериям</content>\n <link href=\"$webroot/opds/sequencesindex\" type=\"application/atom+xml;profile=opds-catalog\" />\n</entry>\n_XML \n?>\n</feed>"
  },
  {
    "path": "application/opds/search.php",
    "content": "<?php\n$search = $_GET['by'];\nswitch ($search) {\n\tcase 'author':\n\t\tinclude('search_author.php');\n\t\tbreak;\n\n\tdefault:\n\t\tinclude('search_book.php');\n}\n?>"
  },
  {
    "path": "application/opds/search_author.php",
    "content": "<?php\nheader('Content-Type: application/atom+xml; charset=utf-8');\necho '<?xml version=\"1.0\" encoding=\"utf-8\"?>';\necho <<< _XML\n <feed xmlns=\"http://www.w3.org/2005/Atom\" xmlns:dc=\"http://purl.org/dc/terms/\" xmlns:os=\"http://a9.com/-/spec/opensearch/1.1/\" xmlns:opds=\"http://opds-spec.org/2010/catalog\"> <id>tag:root:authors</id>\n <title>Поиск по авторам</title>\n <updated>$cdt</updated>\n <icon>/favicon.ico</icon>\n <link href=\"$webroot/opds-opensearch.xml.php\" rel=\"search\" type=\"application/opensearchdescription+xml\" />\n <link href=\"$webroot/opds/authorsindex?letters={searchTerm}\" rel=\"search\" type=\"application/atom+xml\" />\n <link href=\"$webroot/opds\" rel=\"start\" type=\"application/atom+xml;profile=opds-catalog\" />\n\n\n<entry> <updated>$cdt</updated>\n <id>tag:search:author</id>\n <title>Поиск авторов</title>\n <content type=\"text\">Поиск авторов по фамилии</content>\n <link href=\"$webroot/opds/authorsindex?letters={searchTerm}\" type=\"application/atom+xml;profile=opds-catalog\" />\n</entry>\n_XML;\n\n$q = $_GET['q'];\n\nif ($q == '') {\n\tdie(':(');\n}\n$queryParam = $q . '%';\n$authors = $dbh->prepare(\"SELECT *, \n\t\t(SELECT COUNT(*) FROM libavtor, libbook WHERE \n\t\tlibbook.deleted='0' AND\n\t\tlibbook.bookid=libavtor.bookid AND\n\t\tlibavtor.avtorid=libavtorname.avtorid) cnt\n\t\tFROM libavtorname\n\t\tWHERE lastname ILIKE :q ORDER BY lastname, firstname\");\n\t\t$authors->bindParam(\":q\", $queryParam);\n\t\t$authors->execute();\nwhile ($a = $authors->fetch()) {\n\tif ($a->cnt > 0) {\n\t\techo \"\\n<entry> <updated>$cdt</updated>\";\n\t\techo \" <id>tag:author:$a->avtorid</id>\";\n\t\techo \" <title>$a->lastname $a->firstname $a->middlename $a->nickname</title>\";\n\n\t\t$stmt = $dbh->query(\"SELECT COUNT(*) as cnt FROM libbook,libavtor WHERE deleted='0' AND libavtor.bookid=libbook.bookid AND libavtor.avtorid=$a->avtorid\");\n\t\t$stmt->execute();\n\t\t$books_cnt = $stmt->fetch()->cnt;\n\t\t$stmt = null;\n\t\techo \" <content type='text'>$books_cnt книг</content>\";\n\t\techo \" <link href='$webroot/opds/author?author_id=$a->avtorid' type='application/atom+xml;profile=opds-catalog' />\";\n\t\techo '</entry>';\n\t}\n}\n\n\n/*\necho \"<div class='mdl-color--white mdl-shadow--2dp mdl-cell mdl-cell--12-col mdl-grid'>\";\necho '<div class=\"mdl-grid\">';\n$seqs = DB::query(\"SELECT *,\n\t(SELECT COUNT(*) FROM libseq WHERE libseq.seqid=libseqname.SeqId) cnt\n\tFROM libseqname $filter4 ORDER BY seqname\");\n\nwhile ($s = $seqs->fetch_object()) {\n\tif ($s->cnt > 0) {\n\t\techo \"<div class='mdl-cell--4-col'>\";\n\n\t\techo \"<span class='mdl-chip' onclick=\\\"location='/library/seq/$s->SeqId'\\\">\";\n\n\t\techo \"<span class='mdl-chip__text'>$s->SeqName</span>\";\n\n\n\n\t\techo \"<span class='mdl-chip__action'>$s->cnt</span>\";\n\n\t\techo \"</span>\";\n\n\t\techo \"</div>\";\n\t}\n}\n*/\n?>\n</feed>"
  },
  {
    "path": "application/opds/search_book.php",
    "content": "<?php\nheader('Content-Type: application/atom+xml; charset=utf-8');\necho '<?xml version=\"1.0\" encoding=\"utf-8\"?>';\necho <<< _XML\n <feed xmlns=\"http://www.w3.org/2005/Atom\" xmlns:dc=\"http://purl.org/dc/terms/\" xmlns:os=\"http://a9.com/-/spec/opensearch/1.1/\" xmlns:opds=\"http://opds-spec.org/2010/catalog\"> <id>tag:root:authors</id>\n <title>Поиск по книгам</title>\n <updated>$cdt</updated>\n <icon>/favicon.ico</icon>\n <link href=\"$webroot/opds-opensearch.xml.php\" rel=\"search\" type=\"application/opensearchdescription+xml\" />\n <link href=\"$webroot/opds/search?q={searchTerms}\" rel=\"search\" type=\"application/atom+xml\" />\n <link href=\"$webroot/opds\" rel=\"start\" type=\"application/atom+xml;profile=opds-catalog\" />\n_XML;\n\n$q = $_GET['q'];\n$get = \"?q=$q\";\n\nif ($q == '') {\n\tdie(':(');\n}\n\n//$filter2 = \"AND libbook.Title LIKE \" . DB::es('%' . $q . '%');\n\n$books = $dbh->prepare(\"SELECT DISTINCT BookId, libbook.Title as BookTitle,\n        (SELECT Body FROM libbannotations WHERE BookId=libbook.BookId LIMIT 1) as Body\n\t\tFROM libbook\n\t\tJOIN libgenre USING(BookId) \n\t\tWHERE deleted='0' AND libbook.Title LIKE :q\n\t\tGROUP BY BookId, BookTitle, Body\n\t\tLIMIT 100\");\n\t\t$param = '%'.$q.'%';\n$books->bindParam(\":q\", $param);\n$books->execute();\n\nwhile ($b = $books->fetchObject()) {\n\techo \" <entry> <updated>$cdt</updated>\";\n\techo \" <id>tag:book:$b->bookid</id>\";\n\techo \" <title>\" . htmlspecialchars($b->booktitle) . \"</title>\";\n\n\t$as = '';\n\t$authors = $dbh->query(\"SELECT lastname, firstname, middlename FROM libavtorname, libavtor WHERE libavtor.BookId=$b->bookid AND libavtor.AvtorId=libavtorname.AvtorId ORDER BY LastName\");\n\twhile ($a = $authors->fetchObject()) {\n\t\t$as .= $a->lastname . \" \" . $a->firstname . \" \" . $a->middlename . \", \";\n\t}\n\t$authors = null;\n\n\techo \"<author> <name>$as</name>\";\n\techo \" <uri>/a/id</uri>\";\n\techo \"</author>\";\n\techo \" <content type='text/html'>\" . htmlspecialchars($b->body ?? '') . \"</content>\";\n\n\techo \"<link rel='http://opds-spec.org/image/thumbnail' href='$webroot/extract_cover.php?id=$b->bookid' type='image/jpeg'/>\";\n\techo \"<link rel='http://opds-spec.org/image' href='$webroot/extract_cover.php?id=$b->bookid' type='image/jpeg'/>\";\n\techo \" <link href='$webroot/fb2.php?id=$b->bookid' rel='http://opds-spec.org/acquisition/open-access' type='application/fb2+zip' />\";\n\n\techo \"</entry>\\n\";\n}\n$books = null;\n?>\n</feed>"
  },
  {
    "path": "application/opds/sequencesindex.php",
    "content": "<?php\nheader('Content-Type: application/atom+xml; charset=utf-8');\n\n$letters = $_GET['letters'] ?? '';\n\nif ($letters !== '') {\n    $length_letters = mb_strlen($letters, 'UTF-8');\n} else {\n    $length_letters = 0; // Установите подходящее значение по умолчанию\n}\n\necho '<?xml version=\"1.0\" encoding=\"utf-8\"?>';\necho <<< _XML\n <feed xmlns=\"http://www.w3.org/2005/Atom\" xmlns:dc=\"http://purl.org/dc/terms/\" xmlns:os=\"http://a9.com/-/spec/opensearch/1.1/\" xmlns:opds=\"http://opds-spec.org/2010/catalog\"> <id>tag:root:authors</id>\n <title>Книги по сериям</title>\n <updated>$cdt</updated>\n <icon>/favicon.ico</icon>\n <link href=\"$webroot/opds-opensearch.xml.php\" rel=\"search\" type=\"application/opensearchdescription+xml\" />\n <link href=\"$webroot/opds/authorsindex?letters={searchTerms}\" rel=\"search\" type=\"application/atom+xml\" />\n <link href=\"$webroot/opds\" rel=\"start\" type=\"application/atom+xml;profile=opds-catalog\" />\\n\n_XML;\n\n$query=\"\n\tSELECT UPPER(SUBSTR(SeqName, 1, \".($length_letters + 1).\")) as alpha, COUNT(*) as cnt\n\tFROM libseqname\n\tWHERE UPPER(SUBSTR(SeqName, 1, \".($length_letters + 1).\")) SIMILAR TO :pattern\n\tGROUP BY UPPER(SUBSTR(SeqName, 1, \".($length_letters + 1).\"))\n\tORDER BY alpha\";\n$ai = $dbh->prepare($query);\n$bindparam1 = $letters.\"_\";\n$ai->bindParam(\":pattern\",$bindparam1);\n$ai->execute();\nwhile ($ach = $ai->fetchObject()) {\n    if ($ach->cnt>30) {\n\t    echo \"\\n<entry>\\n <updated>$cdt</updated>\";\n\t    echo \"<id>tag:sequences:\".urlencode($ach->alpha).\"</id>\\n\";\n\t    echo \"<title>\".htmlspecialchars($ach->alpha).\"</title>\\n\";\n\t    echo \"<content type='text'>$ach->cnt книжных серий на \".htmlspecialchars($ach->alpha).\"</content>\\n\";\n        echo \"<link href='$webroot/opds/sequencesindex?letters=\".urlencode($ach->alpha).\"' type='application/atom+xml;profile=opds-catalog' />\\n\";\n\t\techo \"</entry>\";\n\t} else {\n        // list individual serie\n        $sq = $dbh->prepare(\"SELECT SeqName, SeqId \n                from libseqname \n                where UPPER(SUBSTR(SeqName, 1, \".($length_letters + 1).\")) = :pattern\n                ORDER BY UPPER(SeqName)\");\n        $sq->bindParam(\":pattern\",$ach->alpha);\n        $sq->execute();\n        while($s = $sq->fetchObject()){\n            echo \"\\n<entry>\\n <updated>$cdt</updated>\";\n\t        echo \"<id>tag:sequence:$s->seqid</id>\\n\";\n            echo \"<title>\". htmlspecialchars($s->seqname).\"</title>\\n\";\n            echo \" <content type='text'></content>\";\n\t        echo \" <link href='$webroot/opds/list?seq_id=\" . $s->seqid . \"' type='application/atom+xml;profile=opds-catalog' />\";\n\t        echo \"</entry>\";\n        }\n        $sq = null;\n\t}\n}\necho '</feed>';\n?>"
  },
  {
    "path": "application/public/bootstrap/css/bootstrap-grid.css",
    "content": "/*!\n * Bootstrap Grid v5.1.3 (https://getbootstrap.com/)\n * Copyright 2011-2021 The Bootstrap Authors\n * Copyright 2011-2021 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n */\n:root {\n  --bs-blue: #0d6efd;\n  --bs-indigo: #6610f2;\n  --bs-purple: #6f42c1;\n  --bs-pink: #d63384;\n  --bs-red: #dc3545;\n  --bs-orange: #fd7e14;\n  --bs-yellow: #ffc107;\n  --bs-green: #198754;\n  --bs-teal: #20c997;\n  --bs-cyan: #0dcaf0;\n  --bs-white: #fff;\n  --bs-gray: #6c757d;\n  --bs-gray-dark: #343a40;\n  --bs-gray-100: #f8f9fa;\n  --bs-gray-200: #e9ecef;\n  --bs-gray-300: #dee2e6;\n  --bs-gray-400: #ced4da;\n  --bs-gray-500: #adb5bd;\n  --bs-gray-600: #6c757d;\n  --bs-gray-700: #495057;\n  --bs-gray-800: #343a40;\n  --bs-gray-900: #212529;\n  --bs-primary: #0d6efd;\n  --bs-secondary: #6c757d;\n  --bs-success: #198754;\n  --bs-info: #0dcaf0;\n  --bs-warning: #ffc107;\n  --bs-danger: #dc3545;\n  --bs-light: #f8f9fa;\n  --bs-dark: #212529;\n  --bs-primary-rgb: 13, 110, 253;\n  --bs-secondary-rgb: 108, 117, 125;\n  --bs-success-rgb: 25, 135, 84;\n  --bs-info-rgb: 13, 202, 240;\n  --bs-warning-rgb: 255, 193, 7;\n  --bs-danger-rgb: 220, 53, 69;\n  --bs-light-rgb: 248, 249, 250;\n  --bs-dark-rgb: 33, 37, 41;\n  --bs-white-rgb: 255, 255, 255;\n  --bs-black-rgb: 0, 0, 0;\n  --bs-body-color-rgb: 33, 37, 41;\n  --bs-body-bg-rgb: 255, 255, 255;\n  --bs-font-sans-serif: system-ui, -apple-system, \"Segoe UI\", Roboto, \"Helvetica Neue\", Arial, \"Noto Sans\", \"Liberation Sans\", sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\", \"Noto Color Emoji\";\n  --bs-font-monospace: SFMono-Regular, Menlo, Monaco, Consolas, \"Liberation Mono\", \"Courier New\", monospace;\n  --bs-gradient: linear-gradient(180deg, rgba(255, 255, 255, 0.15), rgba(255, 255, 255, 0));\n  --bs-body-font-family: var(--bs-font-sans-serif);\n  --bs-body-font-size: 1rem;\n  --bs-body-font-weight: 400;\n  --bs-body-line-height: 1.5;\n  --bs-body-color: #212529;\n  --bs-body-bg: #fff;\n}\n\n.container,\n.container-fluid,\n.container-xxl,\n.container-xl,\n.container-lg,\n.container-md,\n.container-sm {\n  width: 100%;\n  padding-right: var(--bs-gutter-x, 0.75rem);\n  padding-left: var(--bs-gutter-x, 0.75rem);\n  margin-right: auto;\n  margin-left: auto;\n}\n\n@media (min-width: 576px) {\n  .container-sm, .container {\n    max-width: 540px;\n  }\n}\n@media (min-width: 768px) {\n  .container-md, .container-sm, .container {\n    max-width: 720px;\n  }\n}\n@media (min-width: 992px) {\n  .container-lg, .container-md, .container-sm, .container {\n    max-width: 960px;\n  }\n}\n@media (min-width: 1200px) {\n  .container-xl, .container-lg, .container-md, .container-sm, .container {\n    max-width: 1140px;\n  }\n}\n@media (min-width: 1400px) {\n  .container-xxl, .container-xl, .container-lg, .container-md, .container-sm, .container {\n    max-width: 1320px;\n  }\n}\n.row {\n  --bs-gutter-x: 1.5rem;\n  --bs-gutter-y: 0;\n  display: flex;\n  flex-wrap: wrap;\n  margin-top: calc(-1 * var(--bs-gutter-y));\n  margin-right: calc(-0.5 * var(--bs-gutter-x));\n  margin-left: calc(-0.5 * var(--bs-gutter-x));\n}\n.row > * {\n  box-sizing: border-box;\n  flex-shrink: 0;\n  width: 100%;\n  max-width: 100%;\n  padding-right: calc(var(--bs-gutter-x) * 0.5);\n  padding-left: calc(var(--bs-gutter-x) * 0.5);\n  margin-top: var(--bs-gutter-y);\n}\n\n.col {\n  flex: 1 0 0%;\n}\n\n.row-cols-auto > * {\n  flex: 0 0 auto;\n  width: auto;\n}\n\n.row-cols-1 > * {\n  flex: 0 0 auto;\n  width: 100%;\n}\n\n.row-cols-2 > * {\n  flex: 0 0 auto;\n  width: 50%;\n}\n\n.row-cols-3 > * {\n  flex: 0 0 auto;\n  width: 33.3333333333%;\n}\n\n.row-cols-4 > * {\n  flex: 0 0 auto;\n  width: 25%;\n}\n\n.row-cols-5 > * {\n  flex: 0 0 auto;\n  width: 20%;\n}\n\n.row-cols-6 > * {\n  flex: 0 0 auto;\n  width: 16.6666666667%;\n}\n\n.col-auto {\n  flex: 0 0 auto;\n  width: auto;\n}\n\n.col-1 {\n  flex: 0 0 auto;\n  width: 8.33333333%;\n}\n\n.col-2 {\n  flex: 0 0 auto;\n  width: 16.66666667%;\n}\n\n.col-3 {\n  flex: 0 0 auto;\n  width: 25%;\n}\n\n.col-4 {\n  flex: 0 0 auto;\n  width: 33.33333333%;\n}\n\n.col-5 {\n  flex: 0 0 auto;\n  width: 41.66666667%;\n}\n\n.col-6 {\n  flex: 0 0 auto;\n  width: 50%;\n}\n\n.col-7 {\n  flex: 0 0 auto;\n  width: 58.33333333%;\n}\n\n.col-8 {\n  flex: 0 0 auto;\n  width: 66.66666667%;\n}\n\n.col-9 {\n  flex: 0 0 auto;\n  width: 75%;\n}\n\n.col-10 {\n  flex: 0 0 auto;\n  width: 83.33333333%;\n}\n\n.col-11 {\n  flex: 0 0 auto;\n  width: 91.66666667%;\n}\n\n.col-12 {\n  flex: 0 0 auto;\n  width: 100%;\n}\n\n.offset-1 {\n  margin-left: 8.33333333%;\n}\n\n.offset-2 {\n  margin-left: 16.66666667%;\n}\n\n.offset-3 {\n  margin-left: 25%;\n}\n\n.offset-4 {\n  margin-left: 33.33333333%;\n}\n\n.offset-5 {\n  margin-left: 41.66666667%;\n}\n\n.offset-6 {\n  margin-left: 50%;\n}\n\n.offset-7 {\n  margin-left: 58.33333333%;\n}\n\n.offset-8 {\n  margin-left: 66.66666667%;\n}\n\n.offset-9 {\n  margin-left: 75%;\n}\n\n.offset-10 {\n  margin-left: 83.33333333%;\n}\n\n.offset-11 {\n  margin-left: 91.66666667%;\n}\n\n.g-0,\n.gx-0 {\n  --bs-gutter-x: 0;\n}\n\n.g-0,\n.gy-0 {\n  --bs-gutter-y: 0;\n}\n\n.g-1,\n.gx-1 {\n  --bs-gutter-x: 0.25rem;\n}\n\n.g-1,\n.gy-1 {\n  --bs-gutter-y: 0.25rem;\n}\n\n.g-2,\n.gx-2 {\n  --bs-gutter-x: 0.5rem;\n}\n\n.g-2,\n.gy-2 {\n  --bs-gutter-y: 0.5rem;\n}\n\n.g-3,\n.gx-3 {\n  --bs-gutter-x: 1rem;\n}\n\n.g-3,\n.gy-3 {\n  --bs-gutter-y: 1rem;\n}\n\n.g-4,\n.gx-4 {\n  --bs-gutter-x: 1.5rem;\n}\n\n.g-4,\n.gy-4 {\n  --bs-gutter-y: 1.5rem;\n}\n\n.g-5,\n.gx-5 {\n  --bs-gutter-x: 3rem;\n}\n\n.g-5,\n.gy-5 {\n  --bs-gutter-y: 3rem;\n}\n\n@media (min-width: 576px) {\n  .col-sm {\n    flex: 1 0 0%;\n  }\n\n  .row-cols-sm-auto > * {\n    flex: 0 0 auto;\n    width: auto;\n  }\n\n  .row-cols-sm-1 > * {\n    flex: 0 0 auto;\n    width: 100%;\n  }\n\n  .row-cols-sm-2 > * {\n    flex: 0 0 auto;\n    width: 50%;\n  }\n\n  .row-cols-sm-3 > * {\n    flex: 0 0 auto;\n    width: 33.3333333333%;\n  }\n\n  .row-cols-sm-4 > * {\n    flex: 0 0 auto;\n    width: 25%;\n  }\n\n  .row-cols-sm-5 > * {\n    flex: 0 0 auto;\n    width: 20%;\n  }\n\n  .row-cols-sm-6 > * {\n    flex: 0 0 auto;\n    width: 16.6666666667%;\n  }\n\n  .col-sm-auto {\n    flex: 0 0 auto;\n    width: auto;\n  }\n\n  .col-sm-1 {\n    flex: 0 0 auto;\n    width: 8.33333333%;\n  }\n\n  .col-sm-2 {\n    flex: 0 0 auto;\n    width: 16.66666667%;\n  }\n\n  .col-sm-3 {\n    flex: 0 0 auto;\n    width: 25%;\n  }\n\n  .col-sm-4 {\n    flex: 0 0 auto;\n    width: 33.33333333%;\n  }\n\n  .col-sm-5 {\n    flex: 0 0 auto;\n    width: 41.66666667%;\n  }\n\n  .col-sm-6 {\n    flex: 0 0 auto;\n    width: 50%;\n  }\n\n  .col-sm-7 {\n    flex: 0 0 auto;\n    width: 58.33333333%;\n  }\n\n  .col-sm-8 {\n    flex: 0 0 auto;\n    width: 66.66666667%;\n  }\n\n  .col-sm-9 {\n    flex: 0 0 auto;\n    width: 75%;\n  }\n\n  .col-sm-10 {\n    flex: 0 0 auto;\n    width: 83.33333333%;\n  }\n\n  .col-sm-11 {\n    flex: 0 0 auto;\n    width: 91.66666667%;\n  }\n\n  .col-sm-12 {\n    flex: 0 0 auto;\n    width: 100%;\n  }\n\n  .offset-sm-0 {\n    margin-left: 0;\n  }\n\n  .offset-sm-1 {\n    margin-left: 8.33333333%;\n  }\n\n  .offset-sm-2 {\n    margin-left: 16.66666667%;\n  }\n\n  .offset-sm-3 {\n    margin-left: 25%;\n  }\n\n  .offset-sm-4 {\n    margin-left: 33.33333333%;\n  }\n\n  .offset-sm-5 {\n    margin-left: 41.66666667%;\n  }\n\n  .offset-sm-6 {\n    margin-left: 50%;\n  }\n\n  .offset-sm-7 {\n    margin-left: 58.33333333%;\n  }\n\n  .offset-sm-8 {\n    margin-left: 66.66666667%;\n  }\n\n  .offset-sm-9 {\n    margin-left: 75%;\n  }\n\n  .offset-sm-10 {\n    margin-left: 83.33333333%;\n  }\n\n  .offset-sm-11 {\n    margin-left: 91.66666667%;\n  }\n\n  .g-sm-0,\n.gx-sm-0 {\n    --bs-gutter-x: 0;\n  }\n\n  .g-sm-0,\n.gy-sm-0 {\n    --bs-gutter-y: 0;\n  }\n\n  .g-sm-1,\n.gx-sm-1 {\n    --bs-gutter-x: 0.25rem;\n  }\n\n  .g-sm-1,\n.gy-sm-1 {\n    --bs-gutter-y: 0.25rem;\n  }\n\n  .g-sm-2,\n.gx-sm-2 {\n    --bs-gutter-x: 0.5rem;\n  }\n\n  .g-sm-2,\n.gy-sm-2 {\n    --bs-gutter-y: 0.5rem;\n  }\n\n  .g-sm-3,\n.gx-sm-3 {\n    --bs-gutter-x: 1rem;\n  }\n\n  .g-sm-3,\n.gy-sm-3 {\n    --bs-gutter-y: 1rem;\n  }\n\n  .g-sm-4,\n.gx-sm-4 {\n    --bs-gutter-x: 1.5rem;\n  }\n\n  .g-sm-4,\n.gy-sm-4 {\n    --bs-gutter-y: 1.5rem;\n  }\n\n  .g-sm-5,\n.gx-sm-5 {\n    --bs-gutter-x: 3rem;\n  }\n\n  .g-sm-5,\n.gy-sm-5 {\n    --bs-gutter-y: 3rem;\n  }\n}\n@media (min-width: 768px) {\n  .col-md {\n    flex: 1 0 0%;\n  }\n\n  .row-cols-md-auto > * {\n    flex: 0 0 auto;\n    width: auto;\n  }\n\n  .row-cols-md-1 > * {\n    flex: 0 0 auto;\n    width: 100%;\n  }\n\n  .row-cols-md-2 > * {\n    flex: 0 0 auto;\n    width: 50%;\n  }\n\n  .row-cols-md-3 > * {\n    flex: 0 0 auto;\n    width: 33.3333333333%;\n  }\n\n  .row-cols-md-4 > * {\n    flex: 0 0 auto;\n    width: 25%;\n  }\n\n  .row-cols-md-5 > * {\n    flex: 0 0 auto;\n    width: 20%;\n  }\n\n  .row-cols-md-6 > * {\n    flex: 0 0 auto;\n    width: 16.6666666667%;\n  }\n\n  .col-md-auto {\n    flex: 0 0 auto;\n    width: auto;\n  }\n\n  .col-md-1 {\n    flex: 0 0 auto;\n    width: 8.33333333%;\n  }\n\n  .col-md-2 {\n    flex: 0 0 auto;\n    width: 16.66666667%;\n  }\n\n  .col-md-3 {\n    flex: 0 0 auto;\n    width: 25%;\n  }\n\n  .col-md-4 {\n    flex: 0 0 auto;\n    width: 33.33333333%;\n  }\n\n  .col-md-5 {\n    flex: 0 0 auto;\n    width: 41.66666667%;\n  }\n\n  .col-md-6 {\n    flex: 0 0 auto;\n    width: 50%;\n  }\n\n  .col-md-7 {\n    flex: 0 0 auto;\n    width: 58.33333333%;\n  }\n\n  .col-md-8 {\n    flex: 0 0 auto;\n    width: 66.66666667%;\n  }\n\n  .col-md-9 {\n    flex: 0 0 auto;\n    width: 75%;\n  }\n\n  .col-md-10 {\n    flex: 0 0 auto;\n    width: 83.33333333%;\n  }\n\n  .col-md-11 {\n    flex: 0 0 auto;\n    width: 91.66666667%;\n  }\n\n  .col-md-12 {\n    flex: 0 0 auto;\n    width: 100%;\n  }\n\n  .offset-md-0 {\n    margin-left: 0;\n  }\n\n  .offset-md-1 {\n    margin-left: 8.33333333%;\n  }\n\n  .offset-md-2 {\n    margin-left: 16.66666667%;\n  }\n\n  .offset-md-3 {\n    margin-left: 25%;\n  }\n\n  .offset-md-4 {\n    margin-left: 33.33333333%;\n  }\n\n  .offset-md-5 {\n    margin-left: 41.66666667%;\n  }\n\n  .offset-md-6 {\n    margin-left: 50%;\n  }\n\n  .offset-md-7 {\n    margin-left: 58.33333333%;\n  }\n\n  .offset-md-8 {\n    margin-left: 66.66666667%;\n  }\n\n  .offset-md-9 {\n    margin-left: 75%;\n  }\n\n  .offset-md-10 {\n    margin-left: 83.33333333%;\n  }\n\n  .offset-md-11 {\n    margin-left: 91.66666667%;\n  }\n\n  .g-md-0,\n.gx-md-0 {\n    --bs-gutter-x: 0;\n  }\n\n  .g-md-0,\n.gy-md-0 {\n    --bs-gutter-y: 0;\n  }\n\n  .g-md-1,\n.gx-md-1 {\n    --bs-gutter-x: 0.25rem;\n  }\n\n  .g-md-1,\n.gy-md-1 {\n    --bs-gutter-y: 0.25rem;\n  }\n\n  .g-md-2,\n.gx-md-2 {\n    --bs-gutter-x: 0.5rem;\n  }\n\n  .g-md-2,\n.gy-md-2 {\n    --bs-gutter-y: 0.5rem;\n  }\n\n  .g-md-3,\n.gx-md-3 {\n    --bs-gutter-x: 1rem;\n  }\n\n  .g-md-3,\n.gy-md-3 {\n    --bs-gutter-y: 1rem;\n  }\n\n  .g-md-4,\n.gx-md-4 {\n    --bs-gutter-x: 1.5rem;\n  }\n\n  .g-md-4,\n.gy-md-4 {\n    --bs-gutter-y: 1.5rem;\n  }\n\n  .g-md-5,\n.gx-md-5 {\n    --bs-gutter-x: 3rem;\n  }\n\n  .g-md-5,\n.gy-md-5 {\n    --bs-gutter-y: 3rem;\n  }\n}\n@media (min-width: 992px) {\n  .col-lg {\n    flex: 1 0 0%;\n  }\n\n  .row-cols-lg-auto > * {\n    flex: 0 0 auto;\n    width: auto;\n  }\n\n  .row-cols-lg-1 > * {\n    flex: 0 0 auto;\n    width: 100%;\n  }\n\n  .row-cols-lg-2 > * {\n    flex: 0 0 auto;\n    width: 50%;\n  }\n\n  .row-cols-lg-3 > * {\n    flex: 0 0 auto;\n    width: 33.3333333333%;\n  }\n\n  .row-cols-lg-4 > * {\n    flex: 0 0 auto;\n    width: 25%;\n  }\n\n  .row-cols-lg-5 > * {\n    flex: 0 0 auto;\n    width: 20%;\n  }\n\n  .row-cols-lg-6 > * {\n    flex: 0 0 auto;\n    width: 16.6666666667%;\n  }\n\n  .col-lg-auto {\n    flex: 0 0 auto;\n    width: auto;\n  }\n\n  .col-lg-1 {\n    flex: 0 0 auto;\n    width: 8.33333333%;\n  }\n\n  .col-lg-2 {\n    flex: 0 0 auto;\n    width: 16.66666667%;\n  }\n\n  .col-lg-3 {\n    flex: 0 0 auto;\n    width: 25%;\n  }\n\n  .col-lg-4 {\n    flex: 0 0 auto;\n    width: 33.33333333%;\n  }\n\n  .col-lg-5 {\n    flex: 0 0 auto;\n    width: 41.66666667%;\n  }\n\n  .col-lg-6 {\n    flex: 0 0 auto;\n    width: 50%;\n  }\n\n  .col-lg-7 {\n    flex: 0 0 auto;\n    width: 58.33333333%;\n  }\n\n  .col-lg-8 {\n    flex: 0 0 auto;\n    width: 66.66666667%;\n  }\n\n  .col-lg-9 {\n    flex: 0 0 auto;\n    width: 75%;\n  }\n\n  .col-lg-10 {\n    flex: 0 0 auto;\n    width: 83.33333333%;\n  }\n\n  .col-lg-11 {\n    flex: 0 0 auto;\n    width: 91.66666667%;\n  }\n\n  .col-lg-12 {\n    flex: 0 0 auto;\n    width: 100%;\n  }\n\n  .offset-lg-0 {\n    margin-left: 0;\n  }\n\n  .offset-lg-1 {\n    margin-left: 8.33333333%;\n  }\n\n  .offset-lg-2 {\n    margin-left: 16.66666667%;\n  }\n\n  .offset-lg-3 {\n    margin-left: 25%;\n  }\n\n  .offset-lg-4 {\n    margin-left: 33.33333333%;\n  }\n\n  .offset-lg-5 {\n    margin-left: 41.66666667%;\n  }\n\n  .offset-lg-6 {\n    margin-left: 50%;\n  }\n\n  .offset-lg-7 {\n    margin-left: 58.33333333%;\n  }\n\n  .offset-lg-8 {\n    margin-left: 66.66666667%;\n  }\n\n  .offset-lg-9 {\n    margin-left: 75%;\n  }\n\n  .offset-lg-10 {\n    margin-left: 83.33333333%;\n  }\n\n  .offset-lg-11 {\n    margin-left: 91.66666667%;\n  }\n\n  .g-lg-0,\n.gx-lg-0 {\n    --bs-gutter-x: 0;\n  }\n\n  .g-lg-0,\n.gy-lg-0 {\n    --bs-gutter-y: 0;\n  }\n\n  .g-lg-1,\n.gx-lg-1 {\n    --bs-gutter-x: 0.25rem;\n  }\n\n  .g-lg-1,\n.gy-lg-1 {\n    --bs-gutter-y: 0.25rem;\n  }\n\n  .g-lg-2,\n.gx-lg-2 {\n    --bs-gutter-x: 0.5rem;\n  }\n\n  .g-lg-2,\n.gy-lg-2 {\n    --bs-gutter-y: 0.5rem;\n  }\n\n  .g-lg-3,\n.gx-lg-3 {\n    --bs-gutter-x: 1rem;\n  }\n\n  .g-lg-3,\n.gy-lg-3 {\n    --bs-gutter-y: 1rem;\n  }\n\n  .g-lg-4,\n.gx-lg-4 {\n    --bs-gutter-x: 1.5rem;\n  }\n\n  .g-lg-4,\n.gy-lg-4 {\n    --bs-gutter-y: 1.5rem;\n  }\n\n  .g-lg-5,\n.gx-lg-5 {\n    --bs-gutter-x: 3rem;\n  }\n\n  .g-lg-5,\n.gy-lg-5 {\n    --bs-gutter-y: 3rem;\n  }\n}\n@media (min-width: 1200px) {\n  .col-xl {\n    flex: 1 0 0%;\n  }\n\n  .row-cols-xl-auto > * {\n    flex: 0 0 auto;\n    width: auto;\n  }\n\n  .row-cols-xl-1 > * {\n    flex: 0 0 auto;\n    width: 100%;\n  }\n\n  .row-cols-xl-2 > * {\n    flex: 0 0 auto;\n    width: 50%;\n  }\n\n  .row-cols-xl-3 > * {\n    flex: 0 0 auto;\n    width: 33.3333333333%;\n  }\n\n  .row-cols-xl-4 > * {\n    flex: 0 0 auto;\n    width: 25%;\n  }\n\n  .row-cols-xl-5 > * {\n    flex: 0 0 auto;\n    width: 20%;\n  }\n\n  .row-cols-xl-6 > * {\n    flex: 0 0 auto;\n    width: 16.6666666667%;\n  }\n\n  .col-xl-auto {\n    flex: 0 0 auto;\n    width: auto;\n  }\n\n  .col-xl-1 {\n    flex: 0 0 auto;\n    width: 8.33333333%;\n  }\n\n  .col-xl-2 {\n    flex: 0 0 auto;\n    width: 16.66666667%;\n  }\n\n  .col-xl-3 {\n    flex: 0 0 auto;\n    width: 25%;\n  }\n\n  .col-xl-4 {\n    flex: 0 0 auto;\n    width: 33.33333333%;\n  }\n\n  .col-xl-5 {\n    flex: 0 0 auto;\n    width: 41.66666667%;\n  }\n\n  .col-xl-6 {\n    flex: 0 0 auto;\n    width: 50%;\n  }\n\n  .col-xl-7 {\n    flex: 0 0 auto;\n    width: 58.33333333%;\n  }\n\n  .col-xl-8 {\n    flex: 0 0 auto;\n    width: 66.66666667%;\n  }\n\n  .col-xl-9 {\n    flex: 0 0 auto;\n    width: 75%;\n  }\n\n  .col-xl-10 {\n    flex: 0 0 auto;\n    width: 83.33333333%;\n  }\n\n  .col-xl-11 {\n    flex: 0 0 auto;\n    width: 91.66666667%;\n  }\n\n  .col-xl-12 {\n    flex: 0 0 auto;\n    width: 100%;\n  }\n\n  .offset-xl-0 {\n    margin-left: 0;\n  }\n\n  .offset-xl-1 {\n    margin-left: 8.33333333%;\n  }\n\n  .offset-xl-2 {\n    margin-left: 16.66666667%;\n  }\n\n  .offset-xl-3 {\n    margin-left: 25%;\n  }\n\n  .offset-xl-4 {\n    margin-left: 33.33333333%;\n  }\n\n  .offset-xl-5 {\n    margin-left: 41.66666667%;\n  }\n\n  .offset-xl-6 {\n    margin-left: 50%;\n  }\n\n  .offset-xl-7 {\n    margin-left: 58.33333333%;\n  }\n\n  .offset-xl-8 {\n    margin-left: 66.66666667%;\n  }\n\n  .offset-xl-9 {\n    margin-left: 75%;\n  }\n\n  .offset-xl-10 {\n    margin-left: 83.33333333%;\n  }\n\n  .offset-xl-11 {\n    margin-left: 91.66666667%;\n  }\n\n  .g-xl-0,\n.gx-xl-0 {\n    --bs-gutter-x: 0;\n  }\n\n  .g-xl-0,\n.gy-xl-0 {\n    --bs-gutter-y: 0;\n  }\n\n  .g-xl-1,\n.gx-xl-1 {\n    --bs-gutter-x: 0.25rem;\n  }\n\n  .g-xl-1,\n.gy-xl-1 {\n    --bs-gutter-y: 0.25rem;\n  }\n\n  .g-xl-2,\n.gx-xl-2 {\n    --bs-gutter-x: 0.5rem;\n  }\n\n  .g-xl-2,\n.gy-xl-2 {\n    --bs-gutter-y: 0.5rem;\n  }\n\n  .g-xl-3,\n.gx-xl-3 {\n    --bs-gutter-x: 1rem;\n  }\n\n  .g-xl-3,\n.gy-xl-3 {\n    --bs-gutter-y: 1rem;\n  }\n\n  .g-xl-4,\n.gx-xl-4 {\n    --bs-gutter-x: 1.5rem;\n  }\n\n  .g-xl-4,\n.gy-xl-4 {\n    --bs-gutter-y: 1.5rem;\n  }\n\n  .g-xl-5,\n.gx-xl-5 {\n    --bs-gutter-x: 3rem;\n  }\n\n  .g-xl-5,\n.gy-xl-5 {\n    --bs-gutter-y: 3rem;\n  }\n}\n@media (min-width: 1400px) {\n  .col-xxl {\n    flex: 1 0 0%;\n  }\n\n  .row-cols-xxl-auto > * {\n    flex: 0 0 auto;\n    width: auto;\n  }\n\n  .row-cols-xxl-1 > * {\n    flex: 0 0 auto;\n    width: 100%;\n  }\n\n  .row-cols-xxl-2 > * {\n    flex: 0 0 auto;\n    width: 50%;\n  }\n\n  .row-cols-xxl-3 > * {\n    flex: 0 0 auto;\n    width: 33.3333333333%;\n  }\n\n  .row-cols-xxl-4 > * {\n    flex: 0 0 auto;\n    width: 25%;\n  }\n\n  .row-cols-xxl-5 > * {\n    flex: 0 0 auto;\n    width: 20%;\n  }\n\n  .row-cols-xxl-6 > * {\n    flex: 0 0 auto;\n    width: 16.6666666667%;\n  }\n\n  .col-xxl-auto {\n    flex: 0 0 auto;\n    width: auto;\n  }\n\n  .col-xxl-1 {\n    flex: 0 0 auto;\n    width: 8.33333333%;\n  }\n\n  .col-xxl-2 {\n    flex: 0 0 auto;\n    width: 16.66666667%;\n  }\n\n  .col-xxl-3 {\n    flex: 0 0 auto;\n    width: 25%;\n  }\n\n  .col-xxl-4 {\n    flex: 0 0 auto;\n    width: 33.33333333%;\n  }\n\n  .col-xxl-5 {\n    flex: 0 0 auto;\n    width: 41.66666667%;\n  }\n\n  .col-xxl-6 {\n    flex: 0 0 auto;\n    width: 50%;\n  }\n\n  .col-xxl-7 {\n    flex: 0 0 auto;\n    width: 58.33333333%;\n  }\n\n  .col-xxl-8 {\n    flex: 0 0 auto;\n    width: 66.66666667%;\n  }\n\n  .col-xxl-9 {\n    flex: 0 0 auto;\n    width: 75%;\n  }\n\n  .col-xxl-10 {\n    flex: 0 0 auto;\n    width: 83.33333333%;\n  }\n\n  .col-xxl-11 {\n    flex: 0 0 auto;\n    width: 91.66666667%;\n  }\n\n  .col-xxl-12 {\n    flex: 0 0 auto;\n    width: 100%;\n  }\n\n  .offset-xxl-0 {\n    margin-left: 0;\n  }\n\n  .offset-xxl-1 {\n    margin-left: 8.33333333%;\n  }\n\n  .offset-xxl-2 {\n    margin-left: 16.66666667%;\n  }\n\n  .offset-xxl-3 {\n    margin-left: 25%;\n  }\n\n  .offset-xxl-4 {\n    margin-left: 33.33333333%;\n  }\n\n  .offset-xxl-5 {\n    margin-left: 41.66666667%;\n  }\n\n  .offset-xxl-6 {\n    margin-left: 50%;\n  }\n\n  .offset-xxl-7 {\n    margin-left: 58.33333333%;\n  }\n\n  .offset-xxl-8 {\n    margin-left: 66.66666667%;\n  }\n\n  .offset-xxl-9 {\n    margin-left: 75%;\n  }\n\n  .offset-xxl-10 {\n    margin-left: 83.33333333%;\n  }\n\n  .offset-xxl-11 {\n    margin-left: 91.66666667%;\n  }\n\n  .g-xxl-0,\n.gx-xxl-0 {\n    --bs-gutter-x: 0;\n  }\n\n  .g-xxl-0,\n.gy-xxl-0 {\n    --bs-gutter-y: 0;\n  }\n\n  .g-xxl-1,\n.gx-xxl-1 {\n    --bs-gutter-x: 0.25rem;\n  }\n\n  .g-xxl-1,\n.gy-xxl-1 {\n    --bs-gutter-y: 0.25rem;\n  }\n\n  .g-xxl-2,\n.gx-xxl-2 {\n    --bs-gutter-x: 0.5rem;\n  }\n\n  .g-xxl-2,\n.gy-xxl-2 {\n    --bs-gutter-y: 0.5rem;\n  }\n\n  .g-xxl-3,\n.gx-xxl-3 {\n    --bs-gutter-x: 1rem;\n  }\n\n  .g-xxl-3,\n.gy-xxl-3 {\n    --bs-gutter-y: 1rem;\n  }\n\n  .g-xxl-4,\n.gx-xxl-4 {\n    --bs-gutter-x: 1.5rem;\n  }\n\n  .g-xxl-4,\n.gy-xxl-4 {\n    --bs-gutter-y: 1.5rem;\n  }\n\n  .g-xxl-5,\n.gx-xxl-5 {\n    --bs-gutter-x: 3rem;\n  }\n\n  .g-xxl-5,\n.gy-xxl-5 {\n    --bs-gutter-y: 3rem;\n  }\n}\n.d-inline {\n  display: inline !important;\n}\n\n.d-inline-block {\n  display: inline-block !important;\n}\n\n.d-block {\n  display: block !important;\n}\n\n.d-grid {\n  display: grid !important;\n}\n\n.d-table {\n  display: table !important;\n}\n\n.d-table-row {\n  display: table-row !important;\n}\n\n.d-table-cell {\n  display: table-cell !important;\n}\n\n.d-flex {\n  display: flex !important;\n}\n\n.d-inline-flex {\n  display: inline-flex !important;\n}\n\n.d-none {\n  display: none !important;\n}\n\n.flex-fill {\n  flex: 1 1 auto !important;\n}\n\n.flex-row {\n  flex-direction: row !important;\n}\n\n.flex-column {\n  flex-direction: column !important;\n}\n\n.flex-row-reverse {\n  flex-direction: row-reverse !important;\n}\n\n.flex-column-reverse {\n  flex-direction: column-reverse !important;\n}\n\n.flex-grow-0 {\n  flex-grow: 0 !important;\n}\n\n.flex-grow-1 {\n  flex-grow: 1 !important;\n}\n\n.flex-shrink-0 {\n  flex-shrink: 0 !important;\n}\n\n.flex-shrink-1 {\n  flex-shrink: 1 !important;\n}\n\n.flex-wrap {\n  flex-wrap: wrap !important;\n}\n\n.flex-nowrap {\n  flex-wrap: nowrap !important;\n}\n\n.flex-wrap-reverse {\n  flex-wrap: wrap-reverse !important;\n}\n\n.justify-content-start {\n  justify-content: flex-start !important;\n}\n\n.justify-content-end {\n  justify-content: flex-end !important;\n}\n\n.justify-content-center {\n  justify-content: center !important;\n}\n\n.justify-content-between {\n  justify-content: space-between !important;\n}\n\n.justify-content-around {\n  justify-content: space-around !important;\n}\n\n.justify-content-evenly {\n  justify-content: space-evenly !important;\n}\n\n.align-items-start {\n  align-items: flex-start !important;\n}\n\n.align-items-end {\n  align-items: flex-end !important;\n}\n\n.align-items-center {\n  align-items: center !important;\n}\n\n.align-items-baseline {\n  align-items: baseline !important;\n}\n\n.align-items-stretch {\n  align-items: stretch !important;\n}\n\n.align-content-start {\n  align-content: flex-start !important;\n}\n\n.align-content-end {\n  align-content: flex-end !important;\n}\n\n.align-content-center {\n  align-content: center !important;\n}\n\n.align-content-between {\n  align-content: space-between !important;\n}\n\n.align-content-around {\n  align-content: space-around !important;\n}\n\n.align-content-stretch {\n  align-content: stretch !important;\n}\n\n.align-self-auto {\n  align-self: auto !important;\n}\n\n.align-self-start {\n  align-self: flex-start !important;\n}\n\n.align-self-end {\n  align-self: flex-end !important;\n}\n\n.align-self-center {\n  align-self: center !important;\n}\n\n.align-self-baseline {\n  align-self: baseline !important;\n}\n\n.align-self-stretch {\n  align-self: stretch !important;\n}\n\n.order-first {\n  order: -1 !important;\n}\n\n.order-0 {\n  order: 0 !important;\n}\n\n.order-1 {\n  order: 1 !important;\n}\n\n.order-2 {\n  order: 2 !important;\n}\n\n.order-3 {\n  order: 3 !important;\n}\n\n.order-4 {\n  order: 4 !important;\n}\n\n.order-5 {\n  order: 5 !important;\n}\n\n.order-last {\n  order: 6 !important;\n}\n\n.m-0 {\n  margin: 0 !important;\n}\n\n.m-1 {\n  margin: 0.25rem !important;\n}\n\n.m-2 {\n  margin: 0.5rem !important;\n}\n\n.m-3 {\n  margin: 1rem !important;\n}\n\n.m-4 {\n  margin: 1.5rem !important;\n}\n\n.m-5 {\n  margin: 3rem !important;\n}\n\n.m-auto {\n  margin: auto !important;\n}\n\n.mx-0 {\n  margin-right: 0 !important;\n  margin-left: 0 !important;\n}\n\n.mx-1 {\n  margin-right: 0.25rem !important;\n  margin-left: 0.25rem !important;\n}\n\n.mx-2 {\n  margin-right: 0.5rem !important;\n  margin-left: 0.5rem !important;\n}\n\n.mx-3 {\n  margin-right: 1rem !important;\n  margin-left: 1rem !important;\n}\n\n.mx-4 {\n  margin-right: 1.5rem !important;\n  margin-left: 1.5rem !important;\n}\n\n.mx-5 {\n  margin-right: 3rem !important;\n  margin-left: 3rem !important;\n}\n\n.mx-auto {\n  margin-right: auto !important;\n  margin-left: auto !important;\n}\n\n.my-0 {\n  margin-top: 0 !important;\n  margin-bottom: 0 !important;\n}\n\n.my-1 {\n  margin-top: 0.25rem !important;\n  margin-bottom: 0.25rem !important;\n}\n\n.my-2 {\n  margin-top: 0.5rem !important;\n  margin-bottom: 0.5rem !important;\n}\n\n.my-3 {\n  margin-top: 1rem !important;\n  margin-bottom: 1rem !important;\n}\n\n.my-4 {\n  margin-top: 1.5rem !important;\n  margin-bottom: 1.5rem !important;\n}\n\n.my-5 {\n  margin-top: 3rem !important;\n  margin-bottom: 3rem !important;\n}\n\n.my-auto {\n  margin-top: auto !important;\n  margin-bottom: auto !important;\n}\n\n.mt-0 {\n  margin-top: 0 !important;\n}\n\n.mt-1 {\n  margin-top: 0.25rem !important;\n}\n\n.mt-2 {\n  margin-top: 0.5rem !important;\n}\n\n.mt-3 {\n  margin-top: 1rem !important;\n}\n\n.mt-4 {\n  margin-top: 1.5rem !important;\n}\n\n.mt-5 {\n  margin-top: 3rem !important;\n}\n\n.mt-auto {\n  margin-top: auto !important;\n}\n\n.me-0 {\n  margin-right: 0 !important;\n}\n\n.me-1 {\n  margin-right: 0.25rem !important;\n}\n\n.me-2 {\n  margin-right: 0.5rem !important;\n}\n\n.me-3 {\n  margin-right: 1rem !important;\n}\n\n.me-4 {\n  margin-right: 1.5rem !important;\n}\n\n.me-5 {\n  margin-right: 3rem !important;\n}\n\n.me-auto {\n  margin-right: auto !important;\n}\n\n.mb-0 {\n  margin-bottom: 0 !important;\n}\n\n.mb-1 {\n  margin-bottom: 0.25rem !important;\n}\n\n.mb-2 {\n  margin-bottom: 0.5rem !important;\n}\n\n.mb-3 {\n  margin-bottom: 1rem !important;\n}\n\n.mb-4 {\n  margin-bottom: 1.5rem !important;\n}\n\n.mb-5 {\n  margin-bottom: 3rem !important;\n}\n\n.mb-auto {\n  margin-bottom: auto !important;\n}\n\n.ms-0 {\n  margin-left: 0 !important;\n}\n\n.ms-1 {\n  margin-left: 0.25rem !important;\n}\n\n.ms-2 {\n  margin-left: 0.5rem !important;\n}\n\n.ms-3 {\n  margin-left: 1rem !important;\n}\n\n.ms-4 {\n  margin-left: 1.5rem !important;\n}\n\n.ms-5 {\n  margin-left: 3rem !important;\n}\n\n.ms-auto {\n  margin-left: auto !important;\n}\n\n.p-0 {\n  padding: 0 !important;\n}\n\n.p-1 {\n  padding: 0.25rem !important;\n}\n\n.p-2 {\n  padding: 0.5rem !important;\n}\n\n.p-3 {\n  padding: 1rem !important;\n}\n\n.p-4 {\n  padding: 1.5rem !important;\n}\n\n.p-5 {\n  padding: 3rem !important;\n}\n\n.px-0 {\n  padding-right: 0 !important;\n  padding-left: 0 !important;\n}\n\n.px-1 {\n  padding-right: 0.25rem !important;\n  padding-left: 0.25rem !important;\n}\n\n.px-2 {\n  padding-right: 0.5rem !important;\n  padding-left: 0.5rem !important;\n}\n\n.px-3 {\n  padding-right: 1rem !important;\n  padding-left: 1rem !important;\n}\n\n.px-4 {\n  padding-right: 1.5rem !important;\n  padding-left: 1.5rem !important;\n}\n\n.px-5 {\n  padding-right: 3rem !important;\n  padding-left: 3rem !important;\n}\n\n.py-0 {\n  padding-top: 0 !important;\n  padding-bottom: 0 !important;\n}\n\n.py-1 {\n  padding-top: 0.25rem !important;\n  padding-bottom: 0.25rem !important;\n}\n\n.py-2 {\n  padding-top: 0.5rem !important;\n  padding-bottom: 0.5rem !important;\n}\n\n.py-3 {\n  padding-top: 1rem !important;\n  padding-bottom: 1rem !important;\n}\n\n.py-4 {\n  padding-top: 1.5rem !important;\n  padding-bottom: 1.5rem !important;\n}\n\n.py-5 {\n  padding-top: 3rem !important;\n  padding-bottom: 3rem !important;\n}\n\n.pt-0 {\n  padding-top: 0 !important;\n}\n\n.pt-1 {\n  padding-top: 0.25rem !important;\n}\n\n.pt-2 {\n  padding-top: 0.5rem !important;\n}\n\n.pt-3 {\n  padding-top: 1rem !important;\n}\n\n.pt-4 {\n  padding-top: 1.5rem !important;\n}\n\n.pt-5 {\n  padding-top: 3rem !important;\n}\n\n.pe-0 {\n  padding-right: 0 !important;\n}\n\n.pe-1 {\n  padding-right: 0.25rem !important;\n}\n\n.pe-2 {\n  padding-right: 0.5rem !important;\n}\n\n.pe-3 {\n  padding-right: 1rem !important;\n}\n\n.pe-4 {\n  padding-right: 1.5rem !important;\n}\n\n.pe-5 {\n  padding-right: 3rem !important;\n}\n\n.pb-0 {\n  padding-bottom: 0 !important;\n}\n\n.pb-1 {\n  padding-bottom: 0.25rem !important;\n}\n\n.pb-2 {\n  padding-bottom: 0.5rem !important;\n}\n\n.pb-3 {\n  padding-bottom: 1rem !important;\n}\n\n.pb-4 {\n  padding-bottom: 1.5rem !important;\n}\n\n.pb-5 {\n  padding-bottom: 3rem !important;\n}\n\n.ps-0 {\n  padding-left: 0 !important;\n}\n\n.ps-1 {\n  padding-left: 0.25rem !important;\n}\n\n.ps-2 {\n  padding-left: 0.5rem !important;\n}\n\n.ps-3 {\n  padding-left: 1rem !important;\n}\n\n.ps-4 {\n  padding-left: 1.5rem !important;\n}\n\n.ps-5 {\n  padding-left: 3rem !important;\n}\n\n@media (min-width: 576px) {\n  .d-sm-inline {\n    display: inline !important;\n  }\n\n  .d-sm-inline-block {\n    display: inline-block !important;\n  }\n\n  .d-sm-block {\n    display: block !important;\n  }\n\n  .d-sm-grid {\n    display: grid !important;\n  }\n\n  .d-sm-table {\n    display: table !important;\n  }\n\n  .d-sm-table-row {\n    display: table-row !important;\n  }\n\n  .d-sm-table-cell {\n    display: table-cell !important;\n  }\n\n  .d-sm-flex {\n    display: flex !important;\n  }\n\n  .d-sm-inline-flex {\n    display: inline-flex !important;\n  }\n\n  .d-sm-none {\n    display: none !important;\n  }\n\n  .flex-sm-fill {\n    flex: 1 1 auto !important;\n  }\n\n  .flex-sm-row {\n    flex-direction: row !important;\n  }\n\n  .flex-sm-column {\n    flex-direction: column !important;\n  }\n\n  .flex-sm-row-reverse {\n    flex-direction: row-reverse !important;\n  }\n\n  .flex-sm-column-reverse {\n    flex-direction: column-reverse !important;\n  }\n\n  .flex-sm-grow-0 {\n    flex-grow: 0 !important;\n  }\n\n  .flex-sm-grow-1 {\n    flex-grow: 1 !important;\n  }\n\n  .flex-sm-shrink-0 {\n    flex-shrink: 0 !important;\n  }\n\n  .flex-sm-shrink-1 {\n    flex-shrink: 1 !important;\n  }\n\n  .flex-sm-wrap {\n    flex-wrap: wrap !important;\n  }\n\n  .flex-sm-nowrap {\n    flex-wrap: nowrap !important;\n  }\n\n  .flex-sm-wrap-reverse {\n    flex-wrap: wrap-reverse !important;\n  }\n\n  .justify-content-sm-start {\n    justify-content: flex-start !important;\n  }\n\n  .justify-content-sm-end {\n    justify-content: flex-end !important;\n  }\n\n  .justify-content-sm-center {\n    justify-content: center !important;\n  }\n\n  .justify-content-sm-between {\n    justify-content: space-between !important;\n  }\n\n  .justify-content-sm-around {\n    justify-content: space-around !important;\n  }\n\n  .justify-content-sm-evenly {\n    justify-content: space-evenly !important;\n  }\n\n  .align-items-sm-start {\n    align-items: flex-start !important;\n  }\n\n  .align-items-sm-end {\n    align-items: flex-end !important;\n  }\n\n  .align-items-sm-center {\n    align-items: center !important;\n  }\n\n  .align-items-sm-baseline {\n    align-items: baseline !important;\n  }\n\n  .align-items-sm-stretch {\n    align-items: stretch !important;\n  }\n\n  .align-content-sm-start {\n    align-content: flex-start !important;\n  }\n\n  .align-content-sm-end {\n    align-content: flex-end !important;\n  }\n\n  .align-content-sm-center {\n    align-content: center !important;\n  }\n\n  .align-content-sm-between {\n    align-content: space-between !important;\n  }\n\n  .align-content-sm-around {\n    align-content: space-around !important;\n  }\n\n  .align-content-sm-stretch {\n    align-content: stretch !important;\n  }\n\n  .align-self-sm-auto {\n    align-self: auto !important;\n  }\n\n  .align-self-sm-start {\n    align-self: flex-start !important;\n  }\n\n  .align-self-sm-end {\n    align-self: flex-end !important;\n  }\n\n  .align-self-sm-center {\n    align-self: center !important;\n  }\n\n  .align-self-sm-baseline {\n    align-self: baseline !important;\n  }\n\n  .align-self-sm-stretch {\n    align-self: stretch !important;\n  }\n\n  .order-sm-first {\n    order: -1 !important;\n  }\n\n  .order-sm-0 {\n    order: 0 !important;\n  }\n\n  .order-sm-1 {\n    order: 1 !important;\n  }\n\n  .order-sm-2 {\n    order: 2 !important;\n  }\n\n  .order-sm-3 {\n    order: 3 !important;\n  }\n\n  .order-sm-4 {\n    order: 4 !important;\n  }\n\n  .order-sm-5 {\n    order: 5 !important;\n  }\n\n  .order-sm-last {\n    order: 6 !important;\n  }\n\n  .m-sm-0 {\n    margin: 0 !important;\n  }\n\n  .m-sm-1 {\n    margin: 0.25rem !important;\n  }\n\n  .m-sm-2 {\n    margin: 0.5rem !important;\n  }\n\n  .m-sm-3 {\n    margin: 1rem !important;\n  }\n\n  .m-sm-4 {\n    margin: 1.5rem !important;\n  }\n\n  .m-sm-5 {\n    margin: 3rem !important;\n  }\n\n  .m-sm-auto {\n    margin: auto !important;\n  }\n\n  .mx-sm-0 {\n    margin-right: 0 !important;\n    margin-left: 0 !important;\n  }\n\n  .mx-sm-1 {\n    margin-right: 0.25rem !important;\n    margin-left: 0.25rem !important;\n  }\n\n  .mx-sm-2 {\n    margin-right: 0.5rem !important;\n    margin-left: 0.5rem !important;\n  }\n\n  .mx-sm-3 {\n    margin-right: 1rem !important;\n    margin-left: 1rem !important;\n  }\n\n  .mx-sm-4 {\n    margin-right: 1.5rem !important;\n    margin-left: 1.5rem !important;\n  }\n\n  .mx-sm-5 {\n    margin-right: 3rem !important;\n    margin-left: 3rem !important;\n  }\n\n  .mx-sm-auto {\n    margin-right: auto !important;\n    margin-left: auto !important;\n  }\n\n  .my-sm-0 {\n    margin-top: 0 !important;\n    margin-bottom: 0 !important;\n  }\n\n  .my-sm-1 {\n    margin-top: 0.25rem !important;\n    margin-bottom: 0.25rem !important;\n  }\n\n  .my-sm-2 {\n    margin-top: 0.5rem !important;\n    margin-bottom: 0.5rem !important;\n  }\n\n  .my-sm-3 {\n    margin-top: 1rem !important;\n    margin-bottom: 1rem !important;\n  }\n\n  .my-sm-4 {\n    margin-top: 1.5rem !important;\n    margin-bottom: 1.5rem !important;\n  }\n\n  .my-sm-5 {\n    margin-top: 3rem !important;\n    margin-bottom: 3rem !important;\n  }\n\n  .my-sm-auto {\n    margin-top: auto !important;\n    margin-bottom: auto !important;\n  }\n\n  .mt-sm-0 {\n    margin-top: 0 !important;\n  }\n\n  .mt-sm-1 {\n    margin-top: 0.25rem !important;\n  }\n\n  .mt-sm-2 {\n    margin-top: 0.5rem !important;\n  }\n\n  .mt-sm-3 {\n    margin-top: 1rem !important;\n  }\n\n  .mt-sm-4 {\n    margin-top: 1.5rem !important;\n  }\n\n  .mt-sm-5 {\n    margin-top: 3rem !important;\n  }\n\n  .mt-sm-auto {\n    margin-top: auto !important;\n  }\n\n  .me-sm-0 {\n    margin-right: 0 !important;\n  }\n\n  .me-sm-1 {\n    margin-right: 0.25rem !important;\n  }\n\n  .me-sm-2 {\n    margin-right: 0.5rem !important;\n  }\n\n  .me-sm-3 {\n    margin-right: 1rem !important;\n  }\n\n  .me-sm-4 {\n    margin-right: 1.5rem !important;\n  }\n\n  .me-sm-5 {\n    margin-right: 3rem !important;\n  }\n\n  .me-sm-auto {\n    margin-right: auto !important;\n  }\n\n  .mb-sm-0 {\n    margin-bottom: 0 !important;\n  }\n\n  .mb-sm-1 {\n    margin-bottom: 0.25rem !important;\n  }\n\n  .mb-sm-2 {\n    margin-bottom: 0.5rem !important;\n  }\n\n  .mb-sm-3 {\n    margin-bottom: 1rem !important;\n  }\n\n  .mb-sm-4 {\n    margin-bottom: 1.5rem !important;\n  }\n\n  .mb-sm-5 {\n    margin-bottom: 3rem !important;\n  }\n\n  .mb-sm-auto {\n    margin-bottom: auto !important;\n  }\n\n  .ms-sm-0 {\n    margin-left: 0 !important;\n  }\n\n  .ms-sm-1 {\n    margin-left: 0.25rem !important;\n  }\n\n  .ms-sm-2 {\n    margin-left: 0.5rem !important;\n  }\n\n  .ms-sm-3 {\n    margin-left: 1rem !important;\n  }\n\n  .ms-sm-4 {\n    margin-left: 1.5rem !important;\n  }\n\n  .ms-sm-5 {\n    margin-left: 3rem !important;\n  }\n\n  .ms-sm-auto {\n    margin-left: auto !important;\n  }\n\n  .p-sm-0 {\n    padding: 0 !important;\n  }\n\n  .p-sm-1 {\n    padding: 0.25rem !important;\n  }\n\n  .p-sm-2 {\n    padding: 0.5rem !important;\n  }\n\n  .p-sm-3 {\n    padding: 1rem !important;\n  }\n\n  .p-sm-4 {\n    padding: 1.5rem !important;\n  }\n\n  .p-sm-5 {\n    padding: 3rem !important;\n  }\n\n  .px-sm-0 {\n    padding-right: 0 !important;\n    padding-left: 0 !important;\n  }\n\n  .px-sm-1 {\n    padding-right: 0.25rem !important;\n    padding-left: 0.25rem !important;\n  }\n\n  .px-sm-2 {\n    padding-right: 0.5rem !important;\n    padding-left: 0.5rem !important;\n  }\n\n  .px-sm-3 {\n    padding-right: 1rem !important;\n    padding-left: 1rem !important;\n  }\n\n  .px-sm-4 {\n    padding-right: 1.5rem !important;\n    padding-left: 1.5rem !important;\n  }\n\n  .px-sm-5 {\n    padding-right: 3rem !important;\n    padding-left: 3rem !important;\n  }\n\n  .py-sm-0 {\n    padding-top: 0 !important;\n    padding-bottom: 0 !important;\n  }\n\n  .py-sm-1 {\n    padding-top: 0.25rem !important;\n    padding-bottom: 0.25rem !important;\n  }\n\n  .py-sm-2 {\n    padding-top: 0.5rem !important;\n    padding-bottom: 0.5rem !important;\n  }\n\n  .py-sm-3 {\n    padding-top: 1rem !important;\n    padding-bottom: 1rem !important;\n  }\n\n  .py-sm-4 {\n    padding-top: 1.5rem !important;\n    padding-bottom: 1.5rem !important;\n  }\n\n  .py-sm-5 {\n    padding-top: 3rem !important;\n    padding-bottom: 3rem !important;\n  }\n\n  .pt-sm-0 {\n    padding-top: 0 !important;\n  }\n\n  .pt-sm-1 {\n    padding-top: 0.25rem !important;\n  }\n\n  .pt-sm-2 {\n    padding-top: 0.5rem !important;\n  }\n\n  .pt-sm-3 {\n    padding-top: 1rem !important;\n  }\n\n  .pt-sm-4 {\n    padding-top: 1.5rem !important;\n  }\n\n  .pt-sm-5 {\n    padding-top: 3rem !important;\n  }\n\n  .pe-sm-0 {\n    padding-right: 0 !important;\n  }\n\n  .pe-sm-1 {\n    padding-right: 0.25rem !important;\n  }\n\n  .pe-sm-2 {\n    padding-right: 0.5rem !important;\n  }\n\n  .pe-sm-3 {\n    padding-right: 1rem !important;\n  }\n\n  .pe-sm-4 {\n    padding-right: 1.5rem !important;\n  }\n\n  .pe-sm-5 {\n    padding-right: 3rem !important;\n  }\n\n  .pb-sm-0 {\n    padding-bottom: 0 !important;\n  }\n\n  .pb-sm-1 {\n    padding-bottom: 0.25rem !important;\n  }\n\n  .pb-sm-2 {\n    padding-bottom: 0.5rem !important;\n  }\n\n  .pb-sm-3 {\n    padding-bottom: 1rem !important;\n  }\n\n  .pb-sm-4 {\n    padding-bottom: 1.5rem !important;\n  }\n\n  .pb-sm-5 {\n    padding-bottom: 3rem !important;\n  }\n\n  .ps-sm-0 {\n    padding-left: 0 !important;\n  }\n\n  .ps-sm-1 {\n    padding-left: 0.25rem !important;\n  }\n\n  .ps-sm-2 {\n    padding-left: 0.5rem !important;\n  }\n\n  .ps-sm-3 {\n    padding-left: 1rem !important;\n  }\n\n  .ps-sm-4 {\n    padding-left: 1.5rem !important;\n  }\n\n  .ps-sm-5 {\n    padding-left: 3rem !important;\n  }\n}\n@media (min-width: 768px) {\n  .d-md-inline {\n    display: inline !important;\n  }\n\n  .d-md-inline-block {\n    display: inline-block !important;\n  }\n\n  .d-md-block {\n    display: block !important;\n  }\n\n  .d-md-grid {\n    display: grid !important;\n  }\n\n  .d-md-table {\n    display: table !important;\n  }\n\n  .d-md-table-row {\n    display: table-row !important;\n  }\n\n  .d-md-table-cell {\n    display: table-cell !important;\n  }\n\n  .d-md-flex {\n    display: flex !important;\n  }\n\n  .d-md-inline-flex {\n    display: inline-flex !important;\n  }\n\n  .d-md-none {\n    display: none !important;\n  }\n\n  .flex-md-fill {\n    flex: 1 1 auto !important;\n  }\n\n  .flex-md-row {\n    flex-direction: row !important;\n  }\n\n  .flex-md-column {\n    flex-direction: column !important;\n  }\n\n  .flex-md-row-reverse {\n    flex-direction: row-reverse !important;\n  }\n\n  .flex-md-column-reverse {\n    flex-direction: column-reverse !important;\n  }\n\n  .flex-md-grow-0 {\n    flex-grow: 0 !important;\n  }\n\n  .flex-md-grow-1 {\n    flex-grow: 1 !important;\n  }\n\n  .flex-md-shrink-0 {\n    flex-shrink: 0 !important;\n  }\n\n  .flex-md-shrink-1 {\n    flex-shrink: 1 !important;\n  }\n\n  .flex-md-wrap {\n    flex-wrap: wrap !important;\n  }\n\n  .flex-md-nowrap {\n    flex-wrap: nowrap !important;\n  }\n\n  .flex-md-wrap-reverse {\n    flex-wrap: wrap-reverse !important;\n  }\n\n  .justify-content-md-start {\n    justify-content: flex-start !important;\n  }\n\n  .justify-content-md-end {\n    justify-content: flex-end !important;\n  }\n\n  .justify-content-md-center {\n    justify-content: center !important;\n  }\n\n  .justify-content-md-between {\n    justify-content: space-between !important;\n  }\n\n  .justify-content-md-around {\n    justify-content: space-around !important;\n  }\n\n  .justify-content-md-evenly {\n    justify-content: space-evenly !important;\n  }\n\n  .align-items-md-start {\n    align-items: flex-start !important;\n  }\n\n  .align-items-md-end {\n    align-items: flex-end !important;\n  }\n\n  .align-items-md-center {\n    align-items: center !important;\n  }\n\n  .align-items-md-baseline {\n    align-items: baseline !important;\n  }\n\n  .align-items-md-stretch {\n    align-items: stretch !important;\n  }\n\n  .align-content-md-start {\n    align-content: flex-start !important;\n  }\n\n  .align-content-md-end {\n    align-content: flex-end !important;\n  }\n\n  .align-content-md-center {\n    align-content: center !important;\n  }\n\n  .align-content-md-between {\n    align-content: space-between !important;\n  }\n\n  .align-content-md-around {\n    align-content: space-around !important;\n  }\n\n  .align-content-md-stretch {\n    align-content: stretch !important;\n  }\n\n  .align-self-md-auto {\n    align-self: auto !important;\n  }\n\n  .align-self-md-start {\n    align-self: flex-start !important;\n  }\n\n  .align-self-md-end {\n    align-self: flex-end !important;\n  }\n\n  .align-self-md-center {\n    align-self: center !important;\n  }\n\n  .align-self-md-baseline {\n    align-self: baseline !important;\n  }\n\n  .align-self-md-stretch {\n    align-self: stretch !important;\n  }\n\n  .order-md-first {\n    order: -1 !important;\n  }\n\n  .order-md-0 {\n    order: 0 !important;\n  }\n\n  .order-md-1 {\n    order: 1 !important;\n  }\n\n  .order-md-2 {\n    order: 2 !important;\n  }\n\n  .order-md-3 {\n    order: 3 !important;\n  }\n\n  .order-md-4 {\n    order: 4 !important;\n  }\n\n  .order-md-5 {\n    order: 5 !important;\n  }\n\n  .order-md-last {\n    order: 6 !important;\n  }\n\n  .m-md-0 {\n    margin: 0 !important;\n  }\n\n  .m-md-1 {\n    margin: 0.25rem !important;\n  }\n\n  .m-md-2 {\n    margin: 0.5rem !important;\n  }\n\n  .m-md-3 {\n    margin: 1rem !important;\n  }\n\n  .m-md-4 {\n    margin: 1.5rem !important;\n  }\n\n  .m-md-5 {\n    margin: 3rem !important;\n  }\n\n  .m-md-auto {\n    margin: auto !important;\n  }\n\n  .mx-md-0 {\n    margin-right: 0 !important;\n    margin-left: 0 !important;\n  }\n\n  .mx-md-1 {\n    margin-right: 0.25rem !important;\n    margin-left: 0.25rem !important;\n  }\n\n  .mx-md-2 {\n    margin-right: 0.5rem !important;\n    margin-left: 0.5rem !important;\n  }\n\n  .mx-md-3 {\n    margin-right: 1rem !important;\n    margin-left: 1rem !important;\n  }\n\n  .mx-md-4 {\n    margin-right: 1.5rem !important;\n    margin-left: 1.5rem !important;\n  }\n\n  .mx-md-5 {\n    margin-right: 3rem !important;\n    margin-left: 3rem !important;\n  }\n\n  .mx-md-auto {\n    margin-right: auto !important;\n    margin-left: auto !important;\n  }\n\n  .my-md-0 {\n    margin-top: 0 !important;\n    margin-bottom: 0 !important;\n  }\n\n  .my-md-1 {\n    margin-top: 0.25rem !important;\n    margin-bottom: 0.25rem !important;\n  }\n\n  .my-md-2 {\n    margin-top: 0.5rem !important;\n    margin-bottom: 0.5rem !important;\n  }\n\n  .my-md-3 {\n    margin-top: 1rem !important;\n    margin-bottom: 1rem !important;\n  }\n\n  .my-md-4 {\n    margin-top: 1.5rem !important;\n    margin-bottom: 1.5rem !important;\n  }\n\n  .my-md-5 {\n    margin-top: 3rem !important;\n    margin-bottom: 3rem !important;\n  }\n\n  .my-md-auto {\n    margin-top: auto !important;\n    margin-bottom: auto !important;\n  }\n\n  .mt-md-0 {\n    margin-top: 0 !important;\n  }\n\n  .mt-md-1 {\n    margin-top: 0.25rem !important;\n  }\n\n  .mt-md-2 {\n    margin-top: 0.5rem !important;\n  }\n\n  .mt-md-3 {\n    margin-top: 1rem !important;\n  }\n\n  .mt-md-4 {\n    margin-top: 1.5rem !important;\n  }\n\n  .mt-md-5 {\n    margin-top: 3rem !important;\n  }\n\n  .mt-md-auto {\n    margin-top: auto !important;\n  }\n\n  .me-md-0 {\n    margin-right: 0 !important;\n  }\n\n  .me-md-1 {\n    margin-right: 0.25rem !important;\n  }\n\n  .me-md-2 {\n    margin-right: 0.5rem !important;\n  }\n\n  .me-md-3 {\n    margin-right: 1rem !important;\n  }\n\n  .me-md-4 {\n    margin-right: 1.5rem !important;\n  }\n\n  .me-md-5 {\n    margin-right: 3rem !important;\n  }\n\n  .me-md-auto {\n    margin-right: auto !important;\n  }\n\n  .mb-md-0 {\n    margin-bottom: 0 !important;\n  }\n\n  .mb-md-1 {\n    margin-bottom: 0.25rem !important;\n  }\n\n  .mb-md-2 {\n    margin-bottom: 0.5rem !important;\n  }\n\n  .mb-md-3 {\n    margin-bottom: 1rem !important;\n  }\n\n  .mb-md-4 {\n    margin-bottom: 1.5rem !important;\n  }\n\n  .mb-md-5 {\n    margin-bottom: 3rem !important;\n  }\n\n  .mb-md-auto {\n    margin-bottom: auto !important;\n  }\n\n  .ms-md-0 {\n    margin-left: 0 !important;\n  }\n\n  .ms-md-1 {\n    margin-left: 0.25rem !important;\n  }\n\n  .ms-md-2 {\n    margin-left: 0.5rem !important;\n  }\n\n  .ms-md-3 {\n    margin-left: 1rem !important;\n  }\n\n  .ms-md-4 {\n    margin-left: 1.5rem !important;\n  }\n\n  .ms-md-5 {\n    margin-left: 3rem !important;\n  }\n\n  .ms-md-auto {\n    margin-left: auto !important;\n  }\n\n  .p-md-0 {\n    padding: 0 !important;\n  }\n\n  .p-md-1 {\n    padding: 0.25rem !important;\n  }\n\n  .p-md-2 {\n    padding: 0.5rem !important;\n  }\n\n  .p-md-3 {\n    padding: 1rem !important;\n  }\n\n  .p-md-4 {\n    padding: 1.5rem !important;\n  }\n\n  .p-md-5 {\n    padding: 3rem !important;\n  }\n\n  .px-md-0 {\n    padding-right: 0 !important;\n    padding-left: 0 !important;\n  }\n\n  .px-md-1 {\n    padding-right: 0.25rem !important;\n    padding-left: 0.25rem !important;\n  }\n\n  .px-md-2 {\n    padding-right: 0.5rem !important;\n    padding-left: 0.5rem !important;\n  }\n\n  .px-md-3 {\n    padding-right: 1rem !important;\n    padding-left: 1rem !important;\n  }\n\n  .px-md-4 {\n    padding-right: 1.5rem !important;\n    padding-left: 1.5rem !important;\n  }\n\n  .px-md-5 {\n    padding-right: 3rem !important;\n    padding-left: 3rem !important;\n  }\n\n  .py-md-0 {\n    padding-top: 0 !important;\n    padding-bottom: 0 !important;\n  }\n\n  .py-md-1 {\n    padding-top: 0.25rem !important;\n    padding-bottom: 0.25rem !important;\n  }\n\n  .py-md-2 {\n    padding-top: 0.5rem !important;\n    padding-bottom: 0.5rem !important;\n  }\n\n  .py-md-3 {\n    padding-top: 1rem !important;\n    padding-bottom: 1rem !important;\n  }\n\n  .py-md-4 {\n    padding-top: 1.5rem !important;\n    padding-bottom: 1.5rem !important;\n  }\n\n  .py-md-5 {\n    padding-top: 3rem !important;\n    padding-bottom: 3rem !important;\n  }\n\n  .pt-md-0 {\n    padding-top: 0 !important;\n  }\n\n  .pt-md-1 {\n    padding-top: 0.25rem !important;\n  }\n\n  .pt-md-2 {\n    padding-top: 0.5rem !important;\n  }\n\n  .pt-md-3 {\n    padding-top: 1rem !important;\n  }\n\n  .pt-md-4 {\n    padding-top: 1.5rem !important;\n  }\n\n  .pt-md-5 {\n    padding-top: 3rem !important;\n  }\n\n  .pe-md-0 {\n    padding-right: 0 !important;\n  }\n\n  .pe-md-1 {\n    padding-right: 0.25rem !important;\n  }\n\n  .pe-md-2 {\n    padding-right: 0.5rem !important;\n  }\n\n  .pe-md-3 {\n    padding-right: 1rem !important;\n  }\n\n  .pe-md-4 {\n    padding-right: 1.5rem !important;\n  }\n\n  .pe-md-5 {\n    padding-right: 3rem !important;\n  }\n\n  .pb-md-0 {\n    padding-bottom: 0 !important;\n  }\n\n  .pb-md-1 {\n    padding-bottom: 0.25rem !important;\n  }\n\n  .pb-md-2 {\n    padding-bottom: 0.5rem !important;\n  }\n\n  .pb-md-3 {\n    padding-bottom: 1rem !important;\n  }\n\n  .pb-md-4 {\n    padding-bottom: 1.5rem !important;\n  }\n\n  .pb-md-5 {\n    padding-bottom: 3rem !important;\n  }\n\n  .ps-md-0 {\n    padding-left: 0 !important;\n  }\n\n  .ps-md-1 {\n    padding-left: 0.25rem !important;\n  }\n\n  .ps-md-2 {\n    padding-left: 0.5rem !important;\n  }\n\n  .ps-md-3 {\n    padding-left: 1rem !important;\n  }\n\n  .ps-md-4 {\n    padding-left: 1.5rem !important;\n  }\n\n  .ps-md-5 {\n    padding-left: 3rem !important;\n  }\n}\n@media (min-width: 992px) {\n  .d-lg-inline {\n    display: inline !important;\n  }\n\n  .d-lg-inline-block {\n    display: inline-block !important;\n  }\n\n  .d-lg-block {\n    display: block !important;\n  }\n\n  .d-lg-grid {\n    display: grid !important;\n  }\n\n  .d-lg-table {\n    display: table !important;\n  }\n\n  .d-lg-table-row {\n    display: table-row !important;\n  }\n\n  .d-lg-table-cell {\n    display: table-cell !important;\n  }\n\n  .d-lg-flex {\n    display: flex !important;\n  }\n\n  .d-lg-inline-flex {\n    display: inline-flex !important;\n  }\n\n  .d-lg-none {\n    display: none !important;\n  }\n\n  .flex-lg-fill {\n    flex: 1 1 auto !important;\n  }\n\n  .flex-lg-row {\n    flex-direction: row !important;\n  }\n\n  .flex-lg-column {\n    flex-direction: column !important;\n  }\n\n  .flex-lg-row-reverse {\n    flex-direction: row-reverse !important;\n  }\n\n  .flex-lg-column-reverse {\n    flex-direction: column-reverse !important;\n  }\n\n  .flex-lg-grow-0 {\n    flex-grow: 0 !important;\n  }\n\n  .flex-lg-grow-1 {\n    flex-grow: 1 !important;\n  }\n\n  .flex-lg-shrink-0 {\n    flex-shrink: 0 !important;\n  }\n\n  .flex-lg-shrink-1 {\n    flex-shrink: 1 !important;\n  }\n\n  .flex-lg-wrap {\n    flex-wrap: wrap !important;\n  }\n\n  .flex-lg-nowrap {\n    flex-wrap: nowrap !important;\n  }\n\n  .flex-lg-wrap-reverse {\n    flex-wrap: wrap-reverse !important;\n  }\n\n  .justify-content-lg-start {\n    justify-content: flex-start !important;\n  }\n\n  .justify-content-lg-end {\n    justify-content: flex-end !important;\n  }\n\n  .justify-content-lg-center {\n    justify-content: center !important;\n  }\n\n  .justify-content-lg-between {\n    justify-content: space-between !important;\n  }\n\n  .justify-content-lg-around {\n    justify-content: space-around !important;\n  }\n\n  .justify-content-lg-evenly {\n    justify-content: space-evenly !important;\n  }\n\n  .align-items-lg-start {\n    align-items: flex-start !important;\n  }\n\n  .align-items-lg-end {\n    align-items: flex-end !important;\n  }\n\n  .align-items-lg-center {\n    align-items: center !important;\n  }\n\n  .align-items-lg-baseline {\n    align-items: baseline !important;\n  }\n\n  .align-items-lg-stretch {\n    align-items: stretch !important;\n  }\n\n  .align-content-lg-start {\n    align-content: flex-start !important;\n  }\n\n  .align-content-lg-end {\n    align-content: flex-end !important;\n  }\n\n  .align-content-lg-center {\n    align-content: center !important;\n  }\n\n  .align-content-lg-between {\n    align-content: space-between !important;\n  }\n\n  .align-content-lg-around {\n    align-content: space-around !important;\n  }\n\n  .align-content-lg-stretch {\n    align-content: stretch !important;\n  }\n\n  .align-self-lg-auto {\n    align-self: auto !important;\n  }\n\n  .align-self-lg-start {\n    align-self: flex-start !important;\n  }\n\n  .align-self-lg-end {\n    align-self: flex-end !important;\n  }\n\n  .align-self-lg-center {\n    align-self: center !important;\n  }\n\n  .align-self-lg-baseline {\n    align-self: baseline !important;\n  }\n\n  .align-self-lg-stretch {\n    align-self: stretch !important;\n  }\n\n  .order-lg-first {\n    order: -1 !important;\n  }\n\n  .order-lg-0 {\n    order: 0 !important;\n  }\n\n  .order-lg-1 {\n    order: 1 !important;\n  }\n\n  .order-lg-2 {\n    order: 2 !important;\n  }\n\n  .order-lg-3 {\n    order: 3 !important;\n  }\n\n  .order-lg-4 {\n    order: 4 !important;\n  }\n\n  .order-lg-5 {\n    order: 5 !important;\n  }\n\n  .order-lg-last {\n    order: 6 !important;\n  }\n\n  .m-lg-0 {\n    margin: 0 !important;\n  }\n\n  .m-lg-1 {\n    margin: 0.25rem !important;\n  }\n\n  .m-lg-2 {\n    margin: 0.5rem !important;\n  }\n\n  .m-lg-3 {\n    margin: 1rem !important;\n  }\n\n  .m-lg-4 {\n    margin: 1.5rem !important;\n  }\n\n  .m-lg-5 {\n    margin: 3rem !important;\n  }\n\n  .m-lg-auto {\n    margin: auto !important;\n  }\n\n  .mx-lg-0 {\n    margin-right: 0 !important;\n    margin-left: 0 !important;\n  }\n\n  .mx-lg-1 {\n    margin-right: 0.25rem !important;\n    margin-left: 0.25rem !important;\n  }\n\n  .mx-lg-2 {\n    margin-right: 0.5rem !important;\n    margin-left: 0.5rem !important;\n  }\n\n  .mx-lg-3 {\n    margin-right: 1rem !important;\n    margin-left: 1rem !important;\n  }\n\n  .mx-lg-4 {\n    margin-right: 1.5rem !important;\n    margin-left: 1.5rem !important;\n  }\n\n  .mx-lg-5 {\n    margin-right: 3rem !important;\n    margin-left: 3rem !important;\n  }\n\n  .mx-lg-auto {\n    margin-right: auto !important;\n    margin-left: auto !important;\n  }\n\n  .my-lg-0 {\n    margin-top: 0 !important;\n    margin-bottom: 0 !important;\n  }\n\n  .my-lg-1 {\n    margin-top: 0.25rem !important;\n    margin-bottom: 0.25rem !important;\n  }\n\n  .my-lg-2 {\n    margin-top: 0.5rem !important;\n    margin-bottom: 0.5rem !important;\n  }\n\n  .my-lg-3 {\n    margin-top: 1rem !important;\n    margin-bottom: 1rem !important;\n  }\n\n  .my-lg-4 {\n    margin-top: 1.5rem !important;\n    margin-bottom: 1.5rem !important;\n  }\n\n  .my-lg-5 {\n    margin-top: 3rem !important;\n    margin-bottom: 3rem !important;\n  }\n\n  .my-lg-auto {\n    margin-top: auto !important;\n    margin-bottom: auto !important;\n  }\n\n  .mt-lg-0 {\n    margin-top: 0 !important;\n  }\n\n  .mt-lg-1 {\n    margin-top: 0.25rem !important;\n  }\n\n  .mt-lg-2 {\n    margin-top: 0.5rem !important;\n  }\n\n  .mt-lg-3 {\n    margin-top: 1rem !important;\n  }\n\n  .mt-lg-4 {\n    margin-top: 1.5rem !important;\n  }\n\n  .mt-lg-5 {\n    margin-top: 3rem !important;\n  }\n\n  .mt-lg-auto {\n    margin-top: auto !important;\n  }\n\n  .me-lg-0 {\n    margin-right: 0 !important;\n  }\n\n  .me-lg-1 {\n    margin-right: 0.25rem !important;\n  }\n\n  .me-lg-2 {\n    margin-right: 0.5rem !important;\n  }\n\n  .me-lg-3 {\n    margin-right: 1rem !important;\n  }\n\n  .me-lg-4 {\n    margin-right: 1.5rem !important;\n  }\n\n  .me-lg-5 {\n    margin-right: 3rem !important;\n  }\n\n  .me-lg-auto {\n    margin-right: auto !important;\n  }\n\n  .mb-lg-0 {\n    margin-bottom: 0 !important;\n  }\n\n  .mb-lg-1 {\n    margin-bottom: 0.25rem !important;\n  }\n\n  .mb-lg-2 {\n    margin-bottom: 0.5rem !important;\n  }\n\n  .mb-lg-3 {\n    margin-bottom: 1rem !important;\n  }\n\n  .mb-lg-4 {\n    margin-bottom: 1.5rem !important;\n  }\n\n  .mb-lg-5 {\n    margin-bottom: 3rem !important;\n  }\n\n  .mb-lg-auto {\n    margin-bottom: auto !important;\n  }\n\n  .ms-lg-0 {\n    margin-left: 0 !important;\n  }\n\n  .ms-lg-1 {\n    margin-left: 0.25rem !important;\n  }\n\n  .ms-lg-2 {\n    margin-left: 0.5rem !important;\n  }\n\n  .ms-lg-3 {\n    margin-left: 1rem !important;\n  }\n\n  .ms-lg-4 {\n    margin-left: 1.5rem !important;\n  }\n\n  .ms-lg-5 {\n    margin-left: 3rem !important;\n  }\n\n  .ms-lg-auto {\n    margin-left: auto !important;\n  }\n\n  .p-lg-0 {\n    padding: 0 !important;\n  }\n\n  .p-lg-1 {\n    padding: 0.25rem !important;\n  }\n\n  .p-lg-2 {\n    padding: 0.5rem !important;\n  }\n\n  .p-lg-3 {\n    padding: 1rem !important;\n  }\n\n  .p-lg-4 {\n    padding: 1.5rem !important;\n  }\n\n  .p-lg-5 {\n    padding: 3rem !important;\n  }\n\n  .px-lg-0 {\n    padding-right: 0 !important;\n    padding-left: 0 !important;\n  }\n\n  .px-lg-1 {\n    padding-right: 0.25rem !important;\n    padding-left: 0.25rem !important;\n  }\n\n  .px-lg-2 {\n    padding-right: 0.5rem !important;\n    padding-left: 0.5rem !important;\n  }\n\n  .px-lg-3 {\n    padding-right: 1rem !important;\n    padding-left: 1rem !important;\n  }\n\n  .px-lg-4 {\n    padding-right: 1.5rem !important;\n    padding-left: 1.5rem !important;\n  }\n\n  .px-lg-5 {\n    padding-right: 3rem !important;\n    padding-left: 3rem !important;\n  }\n\n  .py-lg-0 {\n    padding-top: 0 !important;\n    padding-bottom: 0 !important;\n  }\n\n  .py-lg-1 {\n    padding-top: 0.25rem !important;\n    padding-bottom: 0.25rem !important;\n  }\n\n  .py-lg-2 {\n    padding-top: 0.5rem !important;\n    padding-bottom: 0.5rem !important;\n  }\n\n  .py-lg-3 {\n    padding-top: 1rem !important;\n    padding-bottom: 1rem !important;\n  }\n\n  .py-lg-4 {\n    padding-top: 1.5rem !important;\n    padding-bottom: 1.5rem !important;\n  }\n\n  .py-lg-5 {\n    padding-top: 3rem !important;\n    padding-bottom: 3rem !important;\n  }\n\n  .pt-lg-0 {\n    padding-top: 0 !important;\n  }\n\n  .pt-lg-1 {\n    padding-top: 0.25rem !important;\n  }\n\n  .pt-lg-2 {\n    padding-top: 0.5rem !important;\n  }\n\n  .pt-lg-3 {\n    padding-top: 1rem !important;\n  }\n\n  .pt-lg-4 {\n    padding-top: 1.5rem !important;\n  }\n\n  .pt-lg-5 {\n    padding-top: 3rem !important;\n  }\n\n  .pe-lg-0 {\n    padding-right: 0 !important;\n  }\n\n  .pe-lg-1 {\n    padding-right: 0.25rem !important;\n  }\n\n  .pe-lg-2 {\n    padding-right: 0.5rem !important;\n  }\n\n  .pe-lg-3 {\n    padding-right: 1rem !important;\n  }\n\n  .pe-lg-4 {\n    padding-right: 1.5rem !important;\n  }\n\n  .pe-lg-5 {\n    padding-right: 3rem !important;\n  }\n\n  .pb-lg-0 {\n    padding-bottom: 0 !important;\n  }\n\n  .pb-lg-1 {\n    padding-bottom: 0.25rem !important;\n  }\n\n  .pb-lg-2 {\n    padding-bottom: 0.5rem !important;\n  }\n\n  .pb-lg-3 {\n    padding-bottom: 1rem !important;\n  }\n\n  .pb-lg-4 {\n    padding-bottom: 1.5rem !important;\n  }\n\n  .pb-lg-5 {\n    padding-bottom: 3rem !important;\n  }\n\n  .ps-lg-0 {\n    padding-left: 0 !important;\n  }\n\n  .ps-lg-1 {\n    padding-left: 0.25rem !important;\n  }\n\n  .ps-lg-2 {\n    padding-left: 0.5rem !important;\n  }\n\n  .ps-lg-3 {\n    padding-left: 1rem !important;\n  }\n\n  .ps-lg-4 {\n    padding-left: 1.5rem !important;\n  }\n\n  .ps-lg-5 {\n    padding-left: 3rem !important;\n  }\n}\n@media (min-width: 1200px) {\n  .d-xl-inline {\n    display: inline !important;\n  }\n\n  .d-xl-inline-block {\n    display: inline-block !important;\n  }\n\n  .d-xl-block {\n    display: block !important;\n  }\n\n  .d-xl-grid {\n    display: grid !important;\n  }\n\n  .d-xl-table {\n    display: table !important;\n  }\n\n  .d-xl-table-row {\n    display: table-row !important;\n  }\n\n  .d-xl-table-cell {\n    display: table-cell !important;\n  }\n\n  .d-xl-flex {\n    display: flex !important;\n  }\n\n  .d-xl-inline-flex {\n    display: inline-flex !important;\n  }\n\n  .d-xl-none {\n    display: none !important;\n  }\n\n  .flex-xl-fill {\n    flex: 1 1 auto !important;\n  }\n\n  .flex-xl-row {\n    flex-direction: row !important;\n  }\n\n  .flex-xl-column {\n    flex-direction: column !important;\n  }\n\n  .flex-xl-row-reverse {\n    flex-direction: row-reverse !important;\n  }\n\n  .flex-xl-column-reverse {\n    flex-direction: column-reverse !important;\n  }\n\n  .flex-xl-grow-0 {\n    flex-grow: 0 !important;\n  }\n\n  .flex-xl-grow-1 {\n    flex-grow: 1 !important;\n  }\n\n  .flex-xl-shrink-0 {\n    flex-shrink: 0 !important;\n  }\n\n  .flex-xl-shrink-1 {\n    flex-shrink: 1 !important;\n  }\n\n  .flex-xl-wrap {\n    flex-wrap: wrap !important;\n  }\n\n  .flex-xl-nowrap {\n    flex-wrap: nowrap !important;\n  }\n\n  .flex-xl-wrap-reverse {\n    flex-wrap: wrap-reverse !important;\n  }\n\n  .justify-content-xl-start {\n    justify-content: flex-start !important;\n  }\n\n  .justify-content-xl-end {\n    justify-content: flex-end !important;\n  }\n\n  .justify-content-xl-center {\n    justify-content: center !important;\n  }\n\n  .justify-content-xl-between {\n    justify-content: space-between !important;\n  }\n\n  .justify-content-xl-around {\n    justify-content: space-around !important;\n  }\n\n  .justify-content-xl-evenly {\n    justify-content: space-evenly !important;\n  }\n\n  .align-items-xl-start {\n    align-items: flex-start !important;\n  }\n\n  .align-items-xl-end {\n    align-items: flex-end !important;\n  }\n\n  .align-items-xl-center {\n    align-items: center !important;\n  }\n\n  .align-items-xl-baseline {\n    align-items: baseline !important;\n  }\n\n  .align-items-xl-stretch {\n    align-items: stretch !important;\n  }\n\n  .align-content-xl-start {\n    align-content: flex-start !important;\n  }\n\n  .align-content-xl-end {\n    align-content: flex-end !important;\n  }\n\n  .align-content-xl-center {\n    align-content: center !important;\n  }\n\n  .align-content-xl-between {\n    align-content: space-between !important;\n  }\n\n  .align-content-xl-around {\n    align-content: space-around !important;\n  }\n\n  .align-content-xl-stretch {\n    align-content: stretch !important;\n  }\n\n  .align-self-xl-auto {\n    align-self: auto !important;\n  }\n\n  .align-self-xl-start {\n    align-self: flex-start !important;\n  }\n\n  .align-self-xl-end {\n    align-self: flex-end !important;\n  }\n\n  .align-self-xl-center {\n    align-self: center !important;\n  }\n\n  .align-self-xl-baseline {\n    align-self: baseline !important;\n  }\n\n  .align-self-xl-stretch {\n    align-self: stretch !important;\n  }\n\n  .order-xl-first {\n    order: -1 !important;\n  }\n\n  .order-xl-0 {\n    order: 0 !important;\n  }\n\n  .order-xl-1 {\n    order: 1 !important;\n  }\n\n  .order-xl-2 {\n    order: 2 !important;\n  }\n\n  .order-xl-3 {\n    order: 3 !important;\n  }\n\n  .order-xl-4 {\n    order: 4 !important;\n  }\n\n  .order-xl-5 {\n    order: 5 !important;\n  }\n\n  .order-xl-last {\n    order: 6 !important;\n  }\n\n  .m-xl-0 {\n    margin: 0 !important;\n  }\n\n  .m-xl-1 {\n    margin: 0.25rem !important;\n  }\n\n  .m-xl-2 {\n    margin: 0.5rem !important;\n  }\n\n  .m-xl-3 {\n    margin: 1rem !important;\n  }\n\n  .m-xl-4 {\n    margin: 1.5rem !important;\n  }\n\n  .m-xl-5 {\n    margin: 3rem !important;\n  }\n\n  .m-xl-auto {\n    margin: auto !important;\n  }\n\n  .mx-xl-0 {\n    margin-right: 0 !important;\n    margin-left: 0 !important;\n  }\n\n  .mx-xl-1 {\n    margin-right: 0.25rem !important;\n    margin-left: 0.25rem !important;\n  }\n\n  .mx-xl-2 {\n    margin-right: 0.5rem !important;\n    margin-left: 0.5rem !important;\n  }\n\n  .mx-xl-3 {\n    margin-right: 1rem !important;\n    margin-left: 1rem !important;\n  }\n\n  .mx-xl-4 {\n    margin-right: 1.5rem !important;\n    margin-left: 1.5rem !important;\n  }\n\n  .mx-xl-5 {\n    margin-right: 3rem !important;\n    margin-left: 3rem !important;\n  }\n\n  .mx-xl-auto {\n    margin-right: auto !important;\n    margin-left: auto !important;\n  }\n\n  .my-xl-0 {\n    margin-top: 0 !important;\n    margin-bottom: 0 !important;\n  }\n\n  .my-xl-1 {\n    margin-top: 0.25rem !important;\n    margin-bottom: 0.25rem !important;\n  }\n\n  .my-xl-2 {\n    margin-top: 0.5rem !important;\n    margin-bottom: 0.5rem !important;\n  }\n\n  .my-xl-3 {\n    margin-top: 1rem !important;\n    margin-bottom: 1rem !important;\n  }\n\n  .my-xl-4 {\n    margin-top: 1.5rem !important;\n    margin-bottom: 1.5rem !important;\n  }\n\n  .my-xl-5 {\n    margin-top: 3rem !important;\n    margin-bottom: 3rem !important;\n  }\n\n  .my-xl-auto {\n    margin-top: auto !important;\n    margin-bottom: auto !important;\n  }\n\n  .mt-xl-0 {\n    margin-top: 0 !important;\n  }\n\n  .mt-xl-1 {\n    margin-top: 0.25rem !important;\n  }\n\n  .mt-xl-2 {\n    margin-top: 0.5rem !important;\n  }\n\n  .mt-xl-3 {\n    margin-top: 1rem !important;\n  }\n\n  .mt-xl-4 {\n    margin-top: 1.5rem !important;\n  }\n\n  .mt-xl-5 {\n    margin-top: 3rem !important;\n  }\n\n  .mt-xl-auto {\n    margin-top: auto !important;\n  }\n\n  .me-xl-0 {\n    margin-right: 0 !important;\n  }\n\n  .me-xl-1 {\n    margin-right: 0.25rem !important;\n  }\n\n  .me-xl-2 {\n    margin-right: 0.5rem !important;\n  }\n\n  .me-xl-3 {\n    margin-right: 1rem !important;\n  }\n\n  .me-xl-4 {\n    margin-right: 1.5rem !important;\n  }\n\n  .me-xl-5 {\n    margin-right: 3rem !important;\n  }\n\n  .me-xl-auto {\n    margin-right: auto !important;\n  }\n\n  .mb-xl-0 {\n    margin-bottom: 0 !important;\n  }\n\n  .mb-xl-1 {\n    margin-bottom: 0.25rem !important;\n  }\n\n  .mb-xl-2 {\n    margin-bottom: 0.5rem !important;\n  }\n\n  .mb-xl-3 {\n    margin-bottom: 1rem !important;\n  }\n\n  .mb-xl-4 {\n    margin-bottom: 1.5rem !important;\n  }\n\n  .mb-xl-5 {\n    margin-bottom: 3rem !important;\n  }\n\n  .mb-xl-auto {\n    margin-bottom: auto !important;\n  }\n\n  .ms-xl-0 {\n    margin-left: 0 !important;\n  }\n\n  .ms-xl-1 {\n    margin-left: 0.25rem !important;\n  }\n\n  .ms-xl-2 {\n    margin-left: 0.5rem !important;\n  }\n\n  .ms-xl-3 {\n    margin-left: 1rem !important;\n  }\n\n  .ms-xl-4 {\n    margin-left: 1.5rem !important;\n  }\n\n  .ms-xl-5 {\n    margin-left: 3rem !important;\n  }\n\n  .ms-xl-auto {\n    margin-left: auto !important;\n  }\n\n  .p-xl-0 {\n    padding: 0 !important;\n  }\n\n  .p-xl-1 {\n    padding: 0.25rem !important;\n  }\n\n  .p-xl-2 {\n    padding: 0.5rem !important;\n  }\n\n  .p-xl-3 {\n    padding: 1rem !important;\n  }\n\n  .p-xl-4 {\n    padding: 1.5rem !important;\n  }\n\n  .p-xl-5 {\n    padding: 3rem !important;\n  }\n\n  .px-xl-0 {\n    padding-right: 0 !important;\n    padding-left: 0 !important;\n  }\n\n  .px-xl-1 {\n    padding-right: 0.25rem !important;\n    padding-left: 0.25rem !important;\n  }\n\n  .px-xl-2 {\n    padding-right: 0.5rem !important;\n    padding-left: 0.5rem !important;\n  }\n\n  .px-xl-3 {\n    padding-right: 1rem !important;\n    padding-left: 1rem !important;\n  }\n\n  .px-xl-4 {\n    padding-right: 1.5rem !important;\n    padding-left: 1.5rem !important;\n  }\n\n  .px-xl-5 {\n    padding-right: 3rem !important;\n    padding-left: 3rem !important;\n  }\n\n  .py-xl-0 {\n    padding-top: 0 !important;\n    padding-bottom: 0 !important;\n  }\n\n  .py-xl-1 {\n    padding-top: 0.25rem !important;\n    padding-bottom: 0.25rem !important;\n  }\n\n  .py-xl-2 {\n    padding-top: 0.5rem !important;\n    padding-bottom: 0.5rem !important;\n  }\n\n  .py-xl-3 {\n    padding-top: 1rem !important;\n    padding-bottom: 1rem !important;\n  }\n\n  .py-xl-4 {\n    padding-top: 1.5rem !important;\n    padding-bottom: 1.5rem !important;\n  }\n\n  .py-xl-5 {\n    padding-top: 3rem !important;\n    padding-bottom: 3rem !important;\n  }\n\n  .pt-xl-0 {\n    padding-top: 0 !important;\n  }\n\n  .pt-xl-1 {\n    padding-top: 0.25rem !important;\n  }\n\n  .pt-xl-2 {\n    padding-top: 0.5rem !important;\n  }\n\n  .pt-xl-3 {\n    padding-top: 1rem !important;\n  }\n\n  .pt-xl-4 {\n    padding-top: 1.5rem !important;\n  }\n\n  .pt-xl-5 {\n    padding-top: 3rem !important;\n  }\n\n  .pe-xl-0 {\n    padding-right: 0 !important;\n  }\n\n  .pe-xl-1 {\n    padding-right: 0.25rem !important;\n  }\n\n  .pe-xl-2 {\n    padding-right: 0.5rem !important;\n  }\n\n  .pe-xl-3 {\n    padding-right: 1rem !important;\n  }\n\n  .pe-xl-4 {\n    padding-right: 1.5rem !important;\n  }\n\n  .pe-xl-5 {\n    padding-right: 3rem !important;\n  }\n\n  .pb-xl-0 {\n    padding-bottom: 0 !important;\n  }\n\n  .pb-xl-1 {\n    padding-bottom: 0.25rem !important;\n  }\n\n  .pb-xl-2 {\n    padding-bottom: 0.5rem !important;\n  }\n\n  .pb-xl-3 {\n    padding-bottom: 1rem !important;\n  }\n\n  .pb-xl-4 {\n    padding-bottom: 1.5rem !important;\n  }\n\n  .pb-xl-5 {\n    padding-bottom: 3rem !important;\n  }\n\n  .ps-xl-0 {\n    padding-left: 0 !important;\n  }\n\n  .ps-xl-1 {\n    padding-left: 0.25rem !important;\n  }\n\n  .ps-xl-2 {\n    padding-left: 0.5rem !important;\n  }\n\n  .ps-xl-3 {\n    padding-left: 1rem !important;\n  }\n\n  .ps-xl-4 {\n    padding-left: 1.5rem !important;\n  }\n\n  .ps-xl-5 {\n    padding-left: 3rem !important;\n  }\n}\n@media (min-width: 1400px) {\n  .d-xxl-inline {\n    display: inline !important;\n  }\n\n  .d-xxl-inline-block {\n    display: inline-block !important;\n  }\n\n  .d-xxl-block {\n    display: block !important;\n  }\n\n  .d-xxl-grid {\n    display: grid !important;\n  }\n\n  .d-xxl-table {\n    display: table !important;\n  }\n\n  .d-xxl-table-row {\n    display: table-row !important;\n  }\n\n  .d-xxl-table-cell {\n    display: table-cell !important;\n  }\n\n  .d-xxl-flex {\n    display: flex !important;\n  }\n\n  .d-xxl-inline-flex {\n    display: inline-flex !important;\n  }\n\n  .d-xxl-none {\n    display: none !important;\n  }\n\n  .flex-xxl-fill {\n    flex: 1 1 auto !important;\n  }\n\n  .flex-xxl-row {\n    flex-direction: row !important;\n  }\n\n  .flex-xxl-column {\n    flex-direction: column !important;\n  }\n\n  .flex-xxl-row-reverse {\n    flex-direction: row-reverse !important;\n  }\n\n  .flex-xxl-column-reverse {\n    flex-direction: column-reverse !important;\n  }\n\n  .flex-xxl-grow-0 {\n    flex-grow: 0 !important;\n  }\n\n  .flex-xxl-grow-1 {\n    flex-grow: 1 !important;\n  }\n\n  .flex-xxl-shrink-0 {\n    flex-shrink: 0 !important;\n  }\n\n  .flex-xxl-shrink-1 {\n    flex-shrink: 1 !important;\n  }\n\n  .flex-xxl-wrap {\n    flex-wrap: wrap !important;\n  }\n\n  .flex-xxl-nowrap {\n    flex-wrap: nowrap !important;\n  }\n\n  .flex-xxl-wrap-reverse {\n    flex-wrap: wrap-reverse !important;\n  }\n\n  .justify-content-xxl-start {\n    justify-content: flex-start !important;\n  }\n\n  .justify-content-xxl-end {\n    justify-content: flex-end !important;\n  }\n\n  .justify-content-xxl-center {\n    justify-content: center !important;\n  }\n\n  .justify-content-xxl-between {\n    justify-content: space-between !important;\n  }\n\n  .justify-content-xxl-around {\n    justify-content: space-around !important;\n  }\n\n  .justify-content-xxl-evenly {\n    justify-content: space-evenly !important;\n  }\n\n  .align-items-xxl-start {\n    align-items: flex-start !important;\n  }\n\n  .align-items-xxl-end {\n    align-items: flex-end !important;\n  }\n\n  .align-items-xxl-center {\n    align-items: center !important;\n  }\n\n  .align-items-xxl-baseline {\n    align-items: baseline !important;\n  }\n\n  .align-items-xxl-stretch {\n    align-items: stretch !important;\n  }\n\n  .align-content-xxl-start {\n    align-content: flex-start !important;\n  }\n\n  .align-content-xxl-end {\n    align-content: flex-end !important;\n  }\n\n  .align-content-xxl-center {\n    align-content: center !important;\n  }\n\n  .align-content-xxl-between {\n    align-content: space-between !important;\n  }\n\n  .align-content-xxl-around {\n    align-content: space-around !important;\n  }\n\n  .align-content-xxl-stretch {\n    align-content: stretch !important;\n  }\n\n  .align-self-xxl-auto {\n    align-self: auto !important;\n  }\n\n  .align-self-xxl-start {\n    align-self: flex-start !important;\n  }\n\n  .align-self-xxl-end {\n    align-self: flex-end !important;\n  }\n\n  .align-self-xxl-center {\n    align-self: center !important;\n  }\n\n  .align-self-xxl-baseline {\n    align-self: baseline !important;\n  }\n\n  .align-self-xxl-stretch {\n    align-self: stretch !important;\n  }\n\n  .order-xxl-first {\n    order: -1 !important;\n  }\n\n  .order-xxl-0 {\n    order: 0 !important;\n  }\n\n  .order-xxl-1 {\n    order: 1 !important;\n  }\n\n  .order-xxl-2 {\n    order: 2 !important;\n  }\n\n  .order-xxl-3 {\n    order: 3 !important;\n  }\n\n  .order-xxl-4 {\n    order: 4 !important;\n  }\n\n  .order-xxl-5 {\n    order: 5 !important;\n  }\n\n  .order-xxl-last {\n    order: 6 !important;\n  }\n\n  .m-xxl-0 {\n    margin: 0 !important;\n  }\n\n  .m-xxl-1 {\n    margin: 0.25rem !important;\n  }\n\n  .m-xxl-2 {\n    margin: 0.5rem !important;\n  }\n\n  .m-xxl-3 {\n    margin: 1rem !important;\n  }\n\n  .m-xxl-4 {\n    margin: 1.5rem !important;\n  }\n\n  .m-xxl-5 {\n    margin: 3rem !important;\n  }\n\n  .m-xxl-auto {\n    margin: auto !important;\n  }\n\n  .mx-xxl-0 {\n    margin-right: 0 !important;\n    margin-left: 0 !important;\n  }\n\n  .mx-xxl-1 {\n    margin-right: 0.25rem !important;\n    margin-left: 0.25rem !important;\n  }\n\n  .mx-xxl-2 {\n    margin-right: 0.5rem !important;\n    margin-left: 0.5rem !important;\n  }\n\n  .mx-xxl-3 {\n    margin-right: 1rem !important;\n    margin-left: 1rem !important;\n  }\n\n  .mx-xxl-4 {\n    margin-right: 1.5rem !important;\n    margin-left: 1.5rem !important;\n  }\n\n  .mx-xxl-5 {\n    margin-right: 3rem !important;\n    margin-left: 3rem !important;\n  }\n\n  .mx-xxl-auto {\n    margin-right: auto !important;\n    margin-left: auto !important;\n  }\n\n  .my-xxl-0 {\n    margin-top: 0 !important;\n    margin-bottom: 0 !important;\n  }\n\n  .my-xxl-1 {\n    margin-top: 0.25rem !important;\n    margin-bottom: 0.25rem !important;\n  }\n\n  .my-xxl-2 {\n    margin-top: 0.5rem !important;\n    margin-bottom: 0.5rem !important;\n  }\n\n  .my-xxl-3 {\n    margin-top: 1rem !important;\n    margin-bottom: 1rem !important;\n  }\n\n  .my-xxl-4 {\n    margin-top: 1.5rem !important;\n    margin-bottom: 1.5rem !important;\n  }\n\n  .my-xxl-5 {\n    margin-top: 3rem !important;\n    margin-bottom: 3rem !important;\n  }\n\n  .my-xxl-auto {\n    margin-top: auto !important;\n    margin-bottom: auto !important;\n  }\n\n  .mt-xxl-0 {\n    margin-top: 0 !important;\n  }\n\n  .mt-xxl-1 {\n    margin-top: 0.25rem !important;\n  }\n\n  .mt-xxl-2 {\n    margin-top: 0.5rem !important;\n  }\n\n  .mt-xxl-3 {\n    margin-top: 1rem !important;\n  }\n\n  .mt-xxl-4 {\n    margin-top: 1.5rem !important;\n  }\n\n  .mt-xxl-5 {\n    margin-top: 3rem !important;\n  }\n\n  .mt-xxl-auto {\n    margin-top: auto !important;\n  }\n\n  .me-xxl-0 {\n    margin-right: 0 !important;\n  }\n\n  .me-xxl-1 {\n    margin-right: 0.25rem !important;\n  }\n\n  .me-xxl-2 {\n    margin-right: 0.5rem !important;\n  }\n\n  .me-xxl-3 {\n    margin-right: 1rem !important;\n  }\n\n  .me-xxl-4 {\n    margin-right: 1.5rem !important;\n  }\n\n  .me-xxl-5 {\n    margin-right: 3rem !important;\n  }\n\n  .me-xxl-auto {\n    margin-right: auto !important;\n  }\n\n  .mb-xxl-0 {\n    margin-bottom: 0 !important;\n  }\n\n  .mb-xxl-1 {\n    margin-bottom: 0.25rem !important;\n  }\n\n  .mb-xxl-2 {\n    margin-bottom: 0.5rem !important;\n  }\n\n  .mb-xxl-3 {\n    margin-bottom: 1rem !important;\n  }\n\n  .mb-xxl-4 {\n    margin-bottom: 1.5rem !important;\n  }\n\n  .mb-xxl-5 {\n    margin-bottom: 3rem !important;\n  }\n\n  .mb-xxl-auto {\n    margin-bottom: auto !important;\n  }\n\n  .ms-xxl-0 {\n    margin-left: 0 !important;\n  }\n\n  .ms-xxl-1 {\n    margin-left: 0.25rem !important;\n  }\n\n  .ms-xxl-2 {\n    margin-left: 0.5rem !important;\n  }\n\n  .ms-xxl-3 {\n    margin-left: 1rem !important;\n  }\n\n  .ms-xxl-4 {\n    margin-left: 1.5rem !important;\n  }\n\n  .ms-xxl-5 {\n    margin-left: 3rem !important;\n  }\n\n  .ms-xxl-auto {\n    margin-left: auto !important;\n  }\n\n  .p-xxl-0 {\n    padding: 0 !important;\n  }\n\n  .p-xxl-1 {\n    padding: 0.25rem !important;\n  }\n\n  .p-xxl-2 {\n    padding: 0.5rem !important;\n  }\n\n  .p-xxl-3 {\n    padding: 1rem !important;\n  }\n\n  .p-xxl-4 {\n    padding: 1.5rem !important;\n  }\n\n  .p-xxl-5 {\n    padding: 3rem !important;\n  }\n\n  .px-xxl-0 {\n    padding-right: 0 !important;\n    padding-left: 0 !important;\n  }\n\n  .px-xxl-1 {\n    padding-right: 0.25rem !important;\n    padding-left: 0.25rem !important;\n  }\n\n  .px-xxl-2 {\n    padding-right: 0.5rem !important;\n    padding-left: 0.5rem !important;\n  }\n\n  .px-xxl-3 {\n    padding-right: 1rem !important;\n    padding-left: 1rem !important;\n  }\n\n  .px-xxl-4 {\n    padding-right: 1.5rem !important;\n    padding-left: 1.5rem !important;\n  }\n\n  .px-xxl-5 {\n    padding-right: 3rem !important;\n    padding-left: 3rem !important;\n  }\n\n  .py-xxl-0 {\n    padding-top: 0 !important;\n    padding-bottom: 0 !important;\n  }\n\n  .py-xxl-1 {\n    padding-top: 0.25rem !important;\n    padding-bottom: 0.25rem !important;\n  }\n\n  .py-xxl-2 {\n    padding-top: 0.5rem !important;\n    padding-bottom: 0.5rem !important;\n  }\n\n  .py-xxl-3 {\n    padding-top: 1rem !important;\n    padding-bottom: 1rem !important;\n  }\n\n  .py-xxl-4 {\n    padding-top: 1.5rem !important;\n    padding-bottom: 1.5rem !important;\n  }\n\n  .py-xxl-5 {\n    padding-top: 3rem !important;\n    padding-bottom: 3rem !important;\n  }\n\n  .pt-xxl-0 {\n    padding-top: 0 !important;\n  }\n\n  .pt-xxl-1 {\n    padding-top: 0.25rem !important;\n  }\n\n  .pt-xxl-2 {\n    padding-top: 0.5rem !important;\n  }\n\n  .pt-xxl-3 {\n    padding-top: 1rem !important;\n  }\n\n  .pt-xxl-4 {\n    padding-top: 1.5rem !important;\n  }\n\n  .pt-xxl-5 {\n    padding-top: 3rem !important;\n  }\n\n  .pe-xxl-0 {\n    padding-right: 0 !important;\n  }\n\n  .pe-xxl-1 {\n    padding-right: 0.25rem !important;\n  }\n\n  .pe-xxl-2 {\n    padding-right: 0.5rem !important;\n  }\n\n  .pe-xxl-3 {\n    padding-right: 1rem !important;\n  }\n\n  .pe-xxl-4 {\n    padding-right: 1.5rem !important;\n  }\n\n  .pe-xxl-5 {\n    padding-right: 3rem !important;\n  }\n\n  .pb-xxl-0 {\n    padding-bottom: 0 !important;\n  }\n\n  .pb-xxl-1 {\n    padding-bottom: 0.25rem !important;\n  }\n\n  .pb-xxl-2 {\n    padding-bottom: 0.5rem !important;\n  }\n\n  .pb-xxl-3 {\n    padding-bottom: 1rem !important;\n  }\n\n  .pb-xxl-4 {\n    padding-bottom: 1.5rem !important;\n  }\n\n  .pb-xxl-5 {\n    padding-bottom: 3rem !important;\n  }\n\n  .ps-xxl-0 {\n    padding-left: 0 !important;\n  }\n\n  .ps-xxl-1 {\n    padding-left: 0.25rem !important;\n  }\n\n  .ps-xxl-2 {\n    padding-left: 0.5rem !important;\n  }\n\n  .ps-xxl-3 {\n    padding-left: 1rem !important;\n  }\n\n  .ps-xxl-4 {\n    padding-left: 1.5rem !important;\n  }\n\n  .ps-xxl-5 {\n    padding-left: 3rem !important;\n  }\n}\n@media print {\n  .d-print-inline {\n    display: inline !important;\n  }\n\n  .d-print-inline-block {\n    display: inline-block !important;\n  }\n\n  .d-print-block {\n    display: block !important;\n  }\n\n  .d-print-grid {\n    display: grid !important;\n  }\n\n  .d-print-table {\n    display: table !important;\n  }\n\n  .d-print-table-row {\n    display: table-row !important;\n  }\n\n  .d-print-table-cell {\n    display: table-cell !important;\n  }\n\n  .d-print-flex {\n    display: flex !important;\n  }\n\n  .d-print-inline-flex {\n    display: inline-flex !important;\n  }\n\n  .d-print-none {\n    display: none !important;\n  }\n}\n\n/*# sourceMappingURL=bootstrap-grid.css.map */"
  },
  {
    "path": "application/public/bootstrap/css/bootstrap-grid.rtl.css",
    "content": "/*!\n * Bootstrap Grid v5.1.3 (https://getbootstrap.com/)\n * Copyright 2011-2021 The Bootstrap Authors\n * Copyright 2011-2021 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n */\n:root {\n  --bs-blue: #0d6efd;\n  --bs-indigo: #6610f2;\n  --bs-purple: #6f42c1;\n  --bs-pink: #d63384;\n  --bs-red: #dc3545;\n  --bs-orange: #fd7e14;\n  --bs-yellow: #ffc107;\n  --bs-green: #198754;\n  --bs-teal: #20c997;\n  --bs-cyan: #0dcaf0;\n  --bs-white: #fff;\n  --bs-gray: #6c757d;\n  --bs-gray-dark: #343a40;\n  --bs-gray-100: #f8f9fa;\n  --bs-gray-200: #e9ecef;\n  --bs-gray-300: #dee2e6;\n  --bs-gray-400: #ced4da;\n  --bs-gray-500: #adb5bd;\n  --bs-gray-600: #6c757d;\n  --bs-gray-700: #495057;\n  --bs-gray-800: #343a40;\n  --bs-gray-900: #212529;\n  --bs-primary: #0d6efd;\n  --bs-secondary: #6c757d;\n  --bs-success: #198754;\n  --bs-info: #0dcaf0;\n  --bs-warning: #ffc107;\n  --bs-danger: #dc3545;\n  --bs-light: #f8f9fa;\n  --bs-dark: #212529;\n  --bs-primary-rgb: 13, 110, 253;\n  --bs-secondary-rgb: 108, 117, 125;\n  --bs-success-rgb: 25, 135, 84;\n  --bs-info-rgb: 13, 202, 240;\n  --bs-warning-rgb: 255, 193, 7;\n  --bs-danger-rgb: 220, 53, 69;\n  --bs-light-rgb: 248, 249, 250;\n  --bs-dark-rgb: 33, 37, 41;\n  --bs-white-rgb: 255, 255, 255;\n  --bs-black-rgb: 0, 0, 0;\n  --bs-body-color-rgb: 33, 37, 41;\n  --bs-body-bg-rgb: 255, 255, 255;\n  --bs-font-sans-serif: system-ui, -apple-system, \"Segoe UI\", Roboto, \"Helvetica Neue\", Arial, \"Noto Sans\", \"Liberation Sans\", sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\", \"Noto Color Emoji\";\n  --bs-font-monospace: SFMono-Regular, Menlo, Monaco, Consolas, \"Liberation Mono\", \"Courier New\", monospace;\n  --bs-gradient: linear-gradient(180deg, rgba(255, 255, 255, 0.15), rgba(255, 255, 255, 0));\n  --bs-body-font-family: var(--bs-font-sans-serif);\n  --bs-body-font-size: 1rem;\n  --bs-body-font-weight: 400;\n  --bs-body-line-height: 1.5;\n  --bs-body-color: #212529;\n  --bs-body-bg: #fff;\n}\n\n.container,\n.container-fluid,\n.container-xxl,\n.container-xl,\n.container-lg,\n.container-md,\n.container-sm {\n  width: 100%;\n  padding-left: var(--bs-gutter-x, 0.75rem);\n  padding-right: var(--bs-gutter-x, 0.75rem);\n  margin-left: auto;\n  margin-right: auto;\n}\n\n@media (min-width: 576px) {\n  .container-sm, .container {\n    max-width: 540px;\n  }\n}\n@media (min-width: 768px) {\n  .container-md, .container-sm, .container {\n    max-width: 720px;\n  }\n}\n@media (min-width: 992px) {\n  .container-lg, .container-md, .container-sm, .container {\n    max-width: 960px;\n  }\n}\n@media (min-width: 1200px) {\n  .container-xl, .container-lg, .container-md, .container-sm, .container {\n    max-width: 1140px;\n  }\n}\n@media (min-width: 1400px) {\n  .container-xxl, .container-xl, .container-lg, .container-md, .container-sm, .container {\n    max-width: 1320px;\n  }\n}\n.row {\n  --bs-gutter-x: 1.5rem;\n  --bs-gutter-y: 0;\n  display: flex;\n  flex-wrap: wrap;\n  margin-top: calc(-1 * var(--bs-gutter-y));\n  margin-left: calc(-0.5 * var(--bs-gutter-x));\n  margin-right: calc(-0.5 * var(--bs-gutter-x));\n}\n.row > * {\n  box-sizing: border-box;\n  flex-shrink: 0;\n  width: 100%;\n  max-width: 100%;\n  padding-left: calc(var(--bs-gutter-x) * 0.5);\n  padding-right: calc(var(--bs-gutter-x) * 0.5);\n  margin-top: var(--bs-gutter-y);\n}\n\n.col {\n  flex: 1 0 0%;\n}\n\n.row-cols-auto > * {\n  flex: 0 0 auto;\n  width: auto;\n}\n\n.row-cols-1 > * {\n  flex: 0 0 auto;\n  width: 100%;\n}\n\n.row-cols-2 > * {\n  flex: 0 0 auto;\n  width: 50%;\n}\n\n.row-cols-3 > * {\n  flex: 0 0 auto;\n  width: 33.3333333333%;\n}\n\n.row-cols-4 > * {\n  flex: 0 0 auto;\n  width: 25%;\n}\n\n.row-cols-5 > * {\n  flex: 0 0 auto;\n  width: 20%;\n}\n\n.row-cols-6 > * {\n  flex: 0 0 auto;\n  width: 16.6666666667%;\n}\n\n.col-auto {\n  flex: 0 0 auto;\n  width: auto;\n}\n\n.col-1 {\n  flex: 0 0 auto;\n  width: 8.33333333%;\n}\n\n.col-2 {\n  flex: 0 0 auto;\n  width: 16.66666667%;\n}\n\n.col-3 {\n  flex: 0 0 auto;\n  width: 25%;\n}\n\n.col-4 {\n  flex: 0 0 auto;\n  width: 33.33333333%;\n}\n\n.col-5 {\n  flex: 0 0 auto;\n  width: 41.66666667%;\n}\n\n.col-6 {\n  flex: 0 0 auto;\n  width: 50%;\n}\n\n.col-7 {\n  flex: 0 0 auto;\n  width: 58.33333333%;\n}\n\n.col-8 {\n  flex: 0 0 auto;\n  width: 66.66666667%;\n}\n\n.col-9 {\n  flex: 0 0 auto;\n  width: 75%;\n}\n\n.col-10 {\n  flex: 0 0 auto;\n  width: 83.33333333%;\n}\n\n.col-11 {\n  flex: 0 0 auto;\n  width: 91.66666667%;\n}\n\n.col-12 {\n  flex: 0 0 auto;\n  width: 100%;\n}\n\n.offset-1 {\n  margin-right: 8.33333333%;\n}\n\n.offset-2 {\n  margin-right: 16.66666667%;\n}\n\n.offset-3 {\n  margin-right: 25%;\n}\n\n.offset-4 {\n  margin-right: 33.33333333%;\n}\n\n.offset-5 {\n  margin-right: 41.66666667%;\n}\n\n.offset-6 {\n  margin-right: 50%;\n}\n\n.offset-7 {\n  margin-right: 58.33333333%;\n}\n\n.offset-8 {\n  margin-right: 66.66666667%;\n}\n\n.offset-9 {\n  margin-right: 75%;\n}\n\n.offset-10 {\n  margin-right: 83.33333333%;\n}\n\n.offset-11 {\n  margin-right: 91.66666667%;\n}\n\n.g-0,\n.gx-0 {\n  --bs-gutter-x: 0;\n}\n\n.g-0,\n.gy-0 {\n  --bs-gutter-y: 0;\n}\n\n.g-1,\n.gx-1 {\n  --bs-gutter-x: 0.25rem;\n}\n\n.g-1,\n.gy-1 {\n  --bs-gutter-y: 0.25rem;\n}\n\n.g-2,\n.gx-2 {\n  --bs-gutter-x: 0.5rem;\n}\n\n.g-2,\n.gy-2 {\n  --bs-gutter-y: 0.5rem;\n}\n\n.g-3,\n.gx-3 {\n  --bs-gutter-x: 1rem;\n}\n\n.g-3,\n.gy-3 {\n  --bs-gutter-y: 1rem;\n}\n\n.g-4,\n.gx-4 {\n  --bs-gutter-x: 1.5rem;\n}\n\n.g-4,\n.gy-4 {\n  --bs-gutter-y: 1.5rem;\n}\n\n.g-5,\n.gx-5 {\n  --bs-gutter-x: 3rem;\n}\n\n.g-5,\n.gy-5 {\n  --bs-gutter-y: 3rem;\n}\n\n@media (min-width: 576px) {\n  .col-sm {\n    flex: 1 0 0%;\n  }\n\n  .row-cols-sm-auto > * {\n    flex: 0 0 auto;\n    width: auto;\n  }\n\n  .row-cols-sm-1 > * {\n    flex: 0 0 auto;\n    width: 100%;\n  }\n\n  .row-cols-sm-2 > * {\n    flex: 0 0 auto;\n    width: 50%;\n  }\n\n  .row-cols-sm-3 > * {\n    flex: 0 0 auto;\n    width: 33.3333333333%;\n  }\n\n  .row-cols-sm-4 > * {\n    flex: 0 0 auto;\n    width: 25%;\n  }\n\n  .row-cols-sm-5 > * {\n    flex: 0 0 auto;\n    width: 20%;\n  }\n\n  .row-cols-sm-6 > * {\n    flex: 0 0 auto;\n    width: 16.6666666667%;\n  }\n\n  .col-sm-auto {\n    flex: 0 0 auto;\n    width: auto;\n  }\n\n  .col-sm-1 {\n    flex: 0 0 auto;\n    width: 8.33333333%;\n  }\n\n  .col-sm-2 {\n    flex: 0 0 auto;\n    width: 16.66666667%;\n  }\n\n  .col-sm-3 {\n    flex: 0 0 auto;\n    width: 25%;\n  }\n\n  .col-sm-4 {\n    flex: 0 0 auto;\n    width: 33.33333333%;\n  }\n\n  .col-sm-5 {\n    flex: 0 0 auto;\n    width: 41.66666667%;\n  }\n\n  .col-sm-6 {\n    flex: 0 0 auto;\n    width: 50%;\n  }\n\n  .col-sm-7 {\n    flex: 0 0 auto;\n    width: 58.33333333%;\n  }\n\n  .col-sm-8 {\n    flex: 0 0 auto;\n    width: 66.66666667%;\n  }\n\n  .col-sm-9 {\n    flex: 0 0 auto;\n    width: 75%;\n  }\n\n  .col-sm-10 {\n    flex: 0 0 auto;\n    width: 83.33333333%;\n  }\n\n  .col-sm-11 {\n    flex: 0 0 auto;\n    width: 91.66666667%;\n  }\n\n  .col-sm-12 {\n    flex: 0 0 auto;\n    width: 100%;\n  }\n\n  .offset-sm-0 {\n    margin-right: 0;\n  }\n\n  .offset-sm-1 {\n    margin-right: 8.33333333%;\n  }\n\n  .offset-sm-2 {\n    margin-right: 16.66666667%;\n  }\n\n  .offset-sm-3 {\n    margin-right: 25%;\n  }\n\n  .offset-sm-4 {\n    margin-right: 33.33333333%;\n  }\n\n  .offset-sm-5 {\n    margin-right: 41.66666667%;\n  }\n\n  .offset-sm-6 {\n    margin-right: 50%;\n  }\n\n  .offset-sm-7 {\n    margin-right: 58.33333333%;\n  }\n\n  .offset-sm-8 {\n    margin-right: 66.66666667%;\n  }\n\n  .offset-sm-9 {\n    margin-right: 75%;\n  }\n\n  .offset-sm-10 {\n    margin-right: 83.33333333%;\n  }\n\n  .offset-sm-11 {\n    margin-right: 91.66666667%;\n  }\n\n  .g-sm-0,\n.gx-sm-0 {\n    --bs-gutter-x: 0;\n  }\n\n  .g-sm-0,\n.gy-sm-0 {\n    --bs-gutter-y: 0;\n  }\n\n  .g-sm-1,\n.gx-sm-1 {\n    --bs-gutter-x: 0.25rem;\n  }\n\n  .g-sm-1,\n.gy-sm-1 {\n    --bs-gutter-y: 0.25rem;\n  }\n\n  .g-sm-2,\n.gx-sm-2 {\n    --bs-gutter-x: 0.5rem;\n  }\n\n  .g-sm-2,\n.gy-sm-2 {\n    --bs-gutter-y: 0.5rem;\n  }\n\n  .g-sm-3,\n.gx-sm-3 {\n    --bs-gutter-x: 1rem;\n  }\n\n  .g-sm-3,\n.gy-sm-3 {\n    --bs-gutter-y: 1rem;\n  }\n\n  .g-sm-4,\n.gx-sm-4 {\n    --bs-gutter-x: 1.5rem;\n  }\n\n  .g-sm-4,\n.gy-sm-4 {\n    --bs-gutter-y: 1.5rem;\n  }\n\n  .g-sm-5,\n.gx-sm-5 {\n    --bs-gutter-x: 3rem;\n  }\n\n  .g-sm-5,\n.gy-sm-5 {\n    --bs-gutter-y: 3rem;\n  }\n}\n@media (min-width: 768px) {\n  .col-md {\n    flex: 1 0 0%;\n  }\n\n  .row-cols-md-auto > * {\n    flex: 0 0 auto;\n    width: auto;\n  }\n\n  .row-cols-md-1 > * {\n    flex: 0 0 auto;\n    width: 100%;\n  }\n\n  .row-cols-md-2 > * {\n    flex: 0 0 auto;\n    width: 50%;\n  }\n\n  .row-cols-md-3 > * {\n    flex: 0 0 auto;\n    width: 33.3333333333%;\n  }\n\n  .row-cols-md-4 > * {\n    flex: 0 0 auto;\n    width: 25%;\n  }\n\n  .row-cols-md-5 > * {\n    flex: 0 0 auto;\n    width: 20%;\n  }\n\n  .row-cols-md-6 > * {\n    flex: 0 0 auto;\n    width: 16.6666666667%;\n  }\n\n  .col-md-auto {\n    flex: 0 0 auto;\n    width: auto;\n  }\n\n  .col-md-1 {\n    flex: 0 0 auto;\n    width: 8.33333333%;\n  }\n\n  .col-md-2 {\n    flex: 0 0 auto;\n    width: 16.66666667%;\n  }\n\n  .col-md-3 {\n    flex: 0 0 auto;\n    width: 25%;\n  }\n\n  .col-md-4 {\n    flex: 0 0 auto;\n    width: 33.33333333%;\n  }\n\n  .col-md-5 {\n    flex: 0 0 auto;\n    width: 41.66666667%;\n  }\n\n  .col-md-6 {\n    flex: 0 0 auto;\n    width: 50%;\n  }\n\n  .col-md-7 {\n    flex: 0 0 auto;\n    width: 58.33333333%;\n  }\n\n  .col-md-8 {\n    flex: 0 0 auto;\n    width: 66.66666667%;\n  }\n\n  .col-md-9 {\n    flex: 0 0 auto;\n    width: 75%;\n  }\n\n  .col-md-10 {\n    flex: 0 0 auto;\n    width: 83.33333333%;\n  }\n\n  .col-md-11 {\n    flex: 0 0 auto;\n    width: 91.66666667%;\n  }\n\n  .col-md-12 {\n    flex: 0 0 auto;\n    width: 100%;\n  }\n\n  .offset-md-0 {\n    margin-right: 0;\n  }\n\n  .offset-md-1 {\n    margin-right: 8.33333333%;\n  }\n\n  .offset-md-2 {\n    margin-right: 16.66666667%;\n  }\n\n  .offset-md-3 {\n    margin-right: 25%;\n  }\n\n  .offset-md-4 {\n    margin-right: 33.33333333%;\n  }\n\n  .offset-md-5 {\n    margin-right: 41.66666667%;\n  }\n\n  .offset-md-6 {\n    margin-right: 50%;\n  }\n\n  .offset-md-7 {\n    margin-right: 58.33333333%;\n  }\n\n  .offset-md-8 {\n    margin-right: 66.66666667%;\n  }\n\n  .offset-md-9 {\n    margin-right: 75%;\n  }\n\n  .offset-md-10 {\n    margin-right: 83.33333333%;\n  }\n\n  .offset-md-11 {\n    margin-right: 91.66666667%;\n  }\n\n  .g-md-0,\n.gx-md-0 {\n    --bs-gutter-x: 0;\n  }\n\n  .g-md-0,\n.gy-md-0 {\n    --bs-gutter-y: 0;\n  }\n\n  .g-md-1,\n.gx-md-1 {\n    --bs-gutter-x: 0.25rem;\n  }\n\n  .g-md-1,\n.gy-md-1 {\n    --bs-gutter-y: 0.25rem;\n  }\n\n  .g-md-2,\n.gx-md-2 {\n    --bs-gutter-x: 0.5rem;\n  }\n\n  .g-md-2,\n.gy-md-2 {\n    --bs-gutter-y: 0.5rem;\n  }\n\n  .g-md-3,\n.gx-md-3 {\n    --bs-gutter-x: 1rem;\n  }\n\n  .g-md-3,\n.gy-md-3 {\n    --bs-gutter-y: 1rem;\n  }\n\n  .g-md-4,\n.gx-md-4 {\n    --bs-gutter-x: 1.5rem;\n  }\n\n  .g-md-4,\n.gy-md-4 {\n    --bs-gutter-y: 1.5rem;\n  }\n\n  .g-md-5,\n.gx-md-5 {\n    --bs-gutter-x: 3rem;\n  }\n\n  .g-md-5,\n.gy-md-5 {\n    --bs-gutter-y: 3rem;\n  }\n}\n@media (min-width: 992px) {\n  .col-lg {\n    flex: 1 0 0%;\n  }\n\n  .row-cols-lg-auto > * {\n    flex: 0 0 auto;\n    width: auto;\n  }\n\n  .row-cols-lg-1 > * {\n    flex: 0 0 auto;\n    width: 100%;\n  }\n\n  .row-cols-lg-2 > * {\n    flex: 0 0 auto;\n    width: 50%;\n  }\n\n  .row-cols-lg-3 > * {\n    flex: 0 0 auto;\n    width: 33.3333333333%;\n  }\n\n  .row-cols-lg-4 > * {\n    flex: 0 0 auto;\n    width: 25%;\n  }\n\n  .row-cols-lg-5 > * {\n    flex: 0 0 auto;\n    width: 20%;\n  }\n\n  .row-cols-lg-6 > * {\n    flex: 0 0 auto;\n    width: 16.6666666667%;\n  }\n\n  .col-lg-auto {\n    flex: 0 0 auto;\n    width: auto;\n  }\n\n  .col-lg-1 {\n    flex: 0 0 auto;\n    width: 8.33333333%;\n  }\n\n  .col-lg-2 {\n    flex: 0 0 auto;\n    width: 16.66666667%;\n  }\n\n  .col-lg-3 {\n    flex: 0 0 auto;\n    width: 25%;\n  }\n\n  .col-lg-4 {\n    flex: 0 0 auto;\n    width: 33.33333333%;\n  }\n\n  .col-lg-5 {\n    flex: 0 0 auto;\n    width: 41.66666667%;\n  }\n\n  .col-lg-6 {\n    flex: 0 0 auto;\n    width: 50%;\n  }\n\n  .col-lg-7 {\n    flex: 0 0 auto;\n    width: 58.33333333%;\n  }\n\n  .col-lg-8 {\n    flex: 0 0 auto;\n    width: 66.66666667%;\n  }\n\n  .col-lg-9 {\n    flex: 0 0 auto;\n    width: 75%;\n  }\n\n  .col-lg-10 {\n    flex: 0 0 auto;\n    width: 83.33333333%;\n  }\n\n  .col-lg-11 {\n    flex: 0 0 auto;\n    width: 91.66666667%;\n  }\n\n  .col-lg-12 {\n    flex: 0 0 auto;\n    width: 100%;\n  }\n\n  .offset-lg-0 {\n    margin-right: 0;\n  }\n\n  .offset-lg-1 {\n    margin-right: 8.33333333%;\n  }\n\n  .offset-lg-2 {\n    margin-right: 16.66666667%;\n  }\n\n  .offset-lg-3 {\n    margin-right: 25%;\n  }\n\n  .offset-lg-4 {\n    margin-right: 33.33333333%;\n  }\n\n  .offset-lg-5 {\n    margin-right: 41.66666667%;\n  }\n\n  .offset-lg-6 {\n    margin-right: 50%;\n  }\n\n  .offset-lg-7 {\n    margin-right: 58.33333333%;\n  }\n\n  .offset-lg-8 {\n    margin-right: 66.66666667%;\n  }\n\n  .offset-lg-9 {\n    margin-right: 75%;\n  }\n\n  .offset-lg-10 {\n    margin-right: 83.33333333%;\n  }\n\n  .offset-lg-11 {\n    margin-right: 91.66666667%;\n  }\n\n  .g-lg-0,\n.gx-lg-0 {\n    --bs-gutter-x: 0;\n  }\n\n  .g-lg-0,\n.gy-lg-0 {\n    --bs-gutter-y: 0;\n  }\n\n  .g-lg-1,\n.gx-lg-1 {\n    --bs-gutter-x: 0.25rem;\n  }\n\n  .g-lg-1,\n.gy-lg-1 {\n    --bs-gutter-y: 0.25rem;\n  }\n\n  .g-lg-2,\n.gx-lg-2 {\n    --bs-gutter-x: 0.5rem;\n  }\n\n  .g-lg-2,\n.gy-lg-2 {\n    --bs-gutter-y: 0.5rem;\n  }\n\n  .g-lg-3,\n.gx-lg-3 {\n    --bs-gutter-x: 1rem;\n  }\n\n  .g-lg-3,\n.gy-lg-3 {\n    --bs-gutter-y: 1rem;\n  }\n\n  .g-lg-4,\n.gx-lg-4 {\n    --bs-gutter-x: 1.5rem;\n  }\n\n  .g-lg-4,\n.gy-lg-4 {\n    --bs-gutter-y: 1.5rem;\n  }\n\n  .g-lg-5,\n.gx-lg-5 {\n    --bs-gutter-x: 3rem;\n  }\n\n  .g-lg-5,\n.gy-lg-5 {\n    --bs-gutter-y: 3rem;\n  }\n}\n@media (min-width: 1200px) {\n  .col-xl {\n    flex: 1 0 0%;\n  }\n\n  .row-cols-xl-auto > * {\n    flex: 0 0 auto;\n    width: auto;\n  }\n\n  .row-cols-xl-1 > * {\n    flex: 0 0 auto;\n    width: 100%;\n  }\n\n  .row-cols-xl-2 > * {\n    flex: 0 0 auto;\n    width: 50%;\n  }\n\n  .row-cols-xl-3 > * {\n    flex: 0 0 auto;\n    width: 33.3333333333%;\n  }\n\n  .row-cols-xl-4 > * {\n    flex: 0 0 auto;\n    width: 25%;\n  }\n\n  .row-cols-xl-5 > * {\n    flex: 0 0 auto;\n    width: 20%;\n  }\n\n  .row-cols-xl-6 > * {\n    flex: 0 0 auto;\n    width: 16.6666666667%;\n  }\n\n  .col-xl-auto {\n    flex: 0 0 auto;\n    width: auto;\n  }\n\n  .col-xl-1 {\n    flex: 0 0 auto;\n    width: 8.33333333%;\n  }\n\n  .col-xl-2 {\n    flex: 0 0 auto;\n    width: 16.66666667%;\n  }\n\n  .col-xl-3 {\n    flex: 0 0 auto;\n    width: 25%;\n  }\n\n  .col-xl-4 {\n    flex: 0 0 auto;\n    width: 33.33333333%;\n  }\n\n  .col-xl-5 {\n    flex: 0 0 auto;\n    width: 41.66666667%;\n  }\n\n  .col-xl-6 {\n    flex: 0 0 auto;\n    width: 50%;\n  }\n\n  .col-xl-7 {\n    flex: 0 0 auto;\n    width: 58.33333333%;\n  }\n\n  .col-xl-8 {\n    flex: 0 0 auto;\n    width: 66.66666667%;\n  }\n\n  .col-xl-9 {\n    flex: 0 0 auto;\n    width: 75%;\n  }\n\n  .col-xl-10 {\n    flex: 0 0 auto;\n    width: 83.33333333%;\n  }\n\n  .col-xl-11 {\n    flex: 0 0 auto;\n    width: 91.66666667%;\n  }\n\n  .col-xl-12 {\n    flex: 0 0 auto;\n    width: 100%;\n  }\n\n  .offset-xl-0 {\n    margin-right: 0;\n  }\n\n  .offset-xl-1 {\n    margin-right: 8.33333333%;\n  }\n\n  .offset-xl-2 {\n    margin-right: 16.66666667%;\n  }\n\n  .offset-xl-3 {\n    margin-right: 25%;\n  }\n\n  .offset-xl-4 {\n    margin-right: 33.33333333%;\n  }\n\n  .offset-xl-5 {\n    margin-right: 41.66666667%;\n  }\n\n  .offset-xl-6 {\n    margin-right: 50%;\n  }\n\n  .offset-xl-7 {\n    margin-right: 58.33333333%;\n  }\n\n  .offset-xl-8 {\n    margin-right: 66.66666667%;\n  }\n\n  .offset-xl-9 {\n    margin-right: 75%;\n  }\n\n  .offset-xl-10 {\n    margin-right: 83.33333333%;\n  }\n\n  .offset-xl-11 {\n    margin-right: 91.66666667%;\n  }\n\n  .g-xl-0,\n.gx-xl-0 {\n    --bs-gutter-x: 0;\n  }\n\n  .g-xl-0,\n.gy-xl-0 {\n    --bs-gutter-y: 0;\n  }\n\n  .g-xl-1,\n.gx-xl-1 {\n    --bs-gutter-x: 0.25rem;\n  }\n\n  .g-xl-1,\n.gy-xl-1 {\n    --bs-gutter-y: 0.25rem;\n  }\n\n  .g-xl-2,\n.gx-xl-2 {\n    --bs-gutter-x: 0.5rem;\n  }\n\n  .g-xl-2,\n.gy-xl-2 {\n    --bs-gutter-y: 0.5rem;\n  }\n\n  .g-xl-3,\n.gx-xl-3 {\n    --bs-gutter-x: 1rem;\n  }\n\n  .g-xl-3,\n.gy-xl-3 {\n    --bs-gutter-y: 1rem;\n  }\n\n  .g-xl-4,\n.gx-xl-4 {\n    --bs-gutter-x: 1.5rem;\n  }\n\n  .g-xl-4,\n.gy-xl-4 {\n    --bs-gutter-y: 1.5rem;\n  }\n\n  .g-xl-5,\n.gx-xl-5 {\n    --bs-gutter-x: 3rem;\n  }\n\n  .g-xl-5,\n.gy-xl-5 {\n    --bs-gutter-y: 3rem;\n  }\n}\n@media (min-width: 1400px) {\n  .col-xxl {\n    flex: 1 0 0%;\n  }\n\n  .row-cols-xxl-auto > * {\n    flex: 0 0 auto;\n    width: auto;\n  }\n\n  .row-cols-xxl-1 > * {\n    flex: 0 0 auto;\n    width: 100%;\n  }\n\n  .row-cols-xxl-2 > * {\n    flex: 0 0 auto;\n    width: 50%;\n  }\n\n  .row-cols-xxl-3 > * {\n    flex: 0 0 auto;\n    width: 33.3333333333%;\n  }\n\n  .row-cols-xxl-4 > * {\n    flex: 0 0 auto;\n    width: 25%;\n  }\n\n  .row-cols-xxl-5 > * {\n    flex: 0 0 auto;\n    width: 20%;\n  }\n\n  .row-cols-xxl-6 > * {\n    flex: 0 0 auto;\n    width: 16.6666666667%;\n  }\n\n  .col-xxl-auto {\n    flex: 0 0 auto;\n    width: auto;\n  }\n\n  .col-xxl-1 {\n    flex: 0 0 auto;\n    width: 8.33333333%;\n  }\n\n  .col-xxl-2 {\n    flex: 0 0 auto;\n    width: 16.66666667%;\n  }\n\n  .col-xxl-3 {\n    flex: 0 0 auto;\n    width: 25%;\n  }\n\n  .col-xxl-4 {\n    flex: 0 0 auto;\n    width: 33.33333333%;\n  }\n\n  .col-xxl-5 {\n    flex: 0 0 auto;\n    width: 41.66666667%;\n  }\n\n  .col-xxl-6 {\n    flex: 0 0 auto;\n    width: 50%;\n  }\n\n  .col-xxl-7 {\n    flex: 0 0 auto;\n    width: 58.33333333%;\n  }\n\n  .col-xxl-8 {\n    flex: 0 0 auto;\n    width: 66.66666667%;\n  }\n\n  .col-xxl-9 {\n    flex: 0 0 auto;\n    width: 75%;\n  }\n\n  .col-xxl-10 {\n    flex: 0 0 auto;\n    width: 83.33333333%;\n  }\n\n  .col-xxl-11 {\n    flex: 0 0 auto;\n    width: 91.66666667%;\n  }\n\n  .col-xxl-12 {\n    flex: 0 0 auto;\n    width: 100%;\n  }\n\n  .offset-xxl-0 {\n    margin-right: 0;\n  }\n\n  .offset-xxl-1 {\n    margin-right: 8.33333333%;\n  }\n\n  .offset-xxl-2 {\n    margin-right: 16.66666667%;\n  }\n\n  .offset-xxl-3 {\n    margin-right: 25%;\n  }\n\n  .offset-xxl-4 {\n    margin-right: 33.33333333%;\n  }\n\n  .offset-xxl-5 {\n    margin-right: 41.66666667%;\n  }\n\n  .offset-xxl-6 {\n    margin-right: 50%;\n  }\n\n  .offset-xxl-7 {\n    margin-right: 58.33333333%;\n  }\n\n  .offset-xxl-8 {\n    margin-right: 66.66666667%;\n  }\n\n  .offset-xxl-9 {\n    margin-right: 75%;\n  }\n\n  .offset-xxl-10 {\n    margin-right: 83.33333333%;\n  }\n\n  .offset-xxl-11 {\n    margin-right: 91.66666667%;\n  }\n\n  .g-xxl-0,\n.gx-xxl-0 {\n    --bs-gutter-x: 0;\n  }\n\n  .g-xxl-0,\n.gy-xxl-0 {\n    --bs-gutter-y: 0;\n  }\n\n  .g-xxl-1,\n.gx-xxl-1 {\n    --bs-gutter-x: 0.25rem;\n  }\n\n  .g-xxl-1,\n.gy-xxl-1 {\n    --bs-gutter-y: 0.25rem;\n  }\n\n  .g-xxl-2,\n.gx-xxl-2 {\n    --bs-gutter-x: 0.5rem;\n  }\n\n  .g-xxl-2,\n.gy-xxl-2 {\n    --bs-gutter-y: 0.5rem;\n  }\n\n  .g-xxl-3,\n.gx-xxl-3 {\n    --bs-gutter-x: 1rem;\n  }\n\n  .g-xxl-3,\n.gy-xxl-3 {\n    --bs-gutter-y: 1rem;\n  }\n\n  .g-xxl-4,\n.gx-xxl-4 {\n    --bs-gutter-x: 1.5rem;\n  }\n\n  .g-xxl-4,\n.gy-xxl-4 {\n    --bs-gutter-y: 1.5rem;\n  }\n\n  .g-xxl-5,\n.gx-xxl-5 {\n    --bs-gutter-x: 3rem;\n  }\n\n  .g-xxl-5,\n.gy-xxl-5 {\n    --bs-gutter-y: 3rem;\n  }\n}\n.d-inline {\n  display: inline !important;\n}\n\n.d-inline-block {\n  display: inline-block !important;\n}\n\n.d-block {\n  display: block !important;\n}\n\n.d-grid {\n  display: grid !important;\n}\n\n.d-table {\n  display: table !important;\n}\n\n.d-table-row {\n  display: table-row !important;\n}\n\n.d-table-cell {\n  display: table-cell !important;\n}\n\n.d-flex {\n  display: flex !important;\n}\n\n.d-inline-flex {\n  display: inline-flex !important;\n}\n\n.d-none {\n  display: none !important;\n}\n\n.flex-fill {\n  flex: 1 1 auto !important;\n}\n\n.flex-row {\n  flex-direction: row !important;\n}\n\n.flex-column {\n  flex-direction: column !important;\n}\n\n.flex-row-reverse {\n  flex-direction: row-reverse !important;\n}\n\n.flex-column-reverse {\n  flex-direction: column-reverse !important;\n}\n\n.flex-grow-0 {\n  flex-grow: 0 !important;\n}\n\n.flex-grow-1 {\n  flex-grow: 1 !important;\n}\n\n.flex-shrink-0 {\n  flex-shrink: 0 !important;\n}\n\n.flex-shrink-1 {\n  flex-shrink: 1 !important;\n}\n\n.flex-wrap {\n  flex-wrap: wrap !important;\n}\n\n.flex-nowrap {\n  flex-wrap: nowrap !important;\n}\n\n.flex-wrap-reverse {\n  flex-wrap: wrap-reverse !important;\n}\n\n.justify-content-start {\n  justify-content: flex-start !important;\n}\n\n.justify-content-end {\n  justify-content: flex-end !important;\n}\n\n.justify-content-center {\n  justify-content: center !important;\n}\n\n.justify-content-between {\n  justify-content: space-between !important;\n}\n\n.justify-content-around {\n  justify-content: space-around !important;\n}\n\n.justify-content-evenly {\n  justify-content: space-evenly !important;\n}\n\n.align-items-start {\n  align-items: flex-start !important;\n}\n\n.align-items-end {\n  align-items: flex-end !important;\n}\n\n.align-items-center {\n  align-items: center !important;\n}\n\n.align-items-baseline {\n  align-items: baseline !important;\n}\n\n.align-items-stretch {\n  align-items: stretch !important;\n}\n\n.align-content-start {\n  align-content: flex-start !important;\n}\n\n.align-content-end {\n  align-content: flex-end !important;\n}\n\n.align-content-center {\n  align-content: center !important;\n}\n\n.align-content-between {\n  align-content: space-between !important;\n}\n\n.align-content-around {\n  align-content: space-around !important;\n}\n\n.align-content-stretch {\n  align-content: stretch !important;\n}\n\n.align-self-auto {\n  align-self: auto !important;\n}\n\n.align-self-start {\n  align-self: flex-start !important;\n}\n\n.align-self-end {\n  align-self: flex-end !important;\n}\n\n.align-self-center {\n  align-self: center !important;\n}\n\n.align-self-baseline {\n  align-self: baseline !important;\n}\n\n.align-self-stretch {\n  align-self: stretch !important;\n}\n\n.order-first {\n  order: -1 !important;\n}\n\n.order-0 {\n  order: 0 !important;\n}\n\n.order-1 {\n  order: 1 !important;\n}\n\n.order-2 {\n  order: 2 !important;\n}\n\n.order-3 {\n  order: 3 !important;\n}\n\n.order-4 {\n  order: 4 !important;\n}\n\n.order-5 {\n  order: 5 !important;\n}\n\n.order-last {\n  order: 6 !important;\n}\n\n.m-0 {\n  margin: 0 !important;\n}\n\n.m-1 {\n  margin: 0.25rem !important;\n}\n\n.m-2 {\n  margin: 0.5rem !important;\n}\n\n.m-3 {\n  margin: 1rem !important;\n}\n\n.m-4 {\n  margin: 1.5rem !important;\n}\n\n.m-5 {\n  margin: 3rem !important;\n}\n\n.m-auto {\n  margin: auto !important;\n}\n\n.mx-0 {\n  margin-left: 0 !important;\n  margin-right: 0 !important;\n}\n\n.mx-1 {\n  margin-left: 0.25rem !important;\n  margin-right: 0.25rem !important;\n}\n\n.mx-2 {\n  margin-left: 0.5rem !important;\n  margin-right: 0.5rem !important;\n}\n\n.mx-3 {\n  margin-left: 1rem !important;\n  margin-right: 1rem !important;\n}\n\n.mx-4 {\n  margin-left: 1.5rem !important;\n  margin-right: 1.5rem !important;\n}\n\n.mx-5 {\n  margin-left: 3rem !important;\n  margin-right: 3rem !important;\n}\n\n.mx-auto {\n  margin-left: auto !important;\n  margin-right: auto !important;\n}\n\n.my-0 {\n  margin-top: 0 !important;\n  margin-bottom: 0 !important;\n}\n\n.my-1 {\n  margin-top: 0.25rem !important;\n  margin-bottom: 0.25rem !important;\n}\n\n.my-2 {\n  margin-top: 0.5rem !important;\n  margin-bottom: 0.5rem !important;\n}\n\n.my-3 {\n  margin-top: 1rem !important;\n  margin-bottom: 1rem !important;\n}\n\n.my-4 {\n  margin-top: 1.5rem !important;\n  margin-bottom: 1.5rem !important;\n}\n\n.my-5 {\n  margin-top: 3rem !important;\n  margin-bottom: 3rem !important;\n}\n\n.my-auto {\n  margin-top: auto !important;\n  margin-bottom: auto !important;\n}\n\n.mt-0 {\n  margin-top: 0 !important;\n}\n\n.mt-1 {\n  margin-top: 0.25rem !important;\n}\n\n.mt-2 {\n  margin-top: 0.5rem !important;\n}\n\n.mt-3 {\n  margin-top: 1rem !important;\n}\n\n.mt-4 {\n  margin-top: 1.5rem !important;\n}\n\n.mt-5 {\n  margin-top: 3rem !important;\n}\n\n.mt-auto {\n  margin-top: auto !important;\n}\n\n.me-0 {\n  margin-left: 0 !important;\n}\n\n.me-1 {\n  margin-left: 0.25rem !important;\n}\n\n.me-2 {\n  margin-left: 0.5rem !important;\n}\n\n.me-3 {\n  margin-left: 1rem !important;\n}\n\n.me-4 {\n  margin-left: 1.5rem !important;\n}\n\n.me-5 {\n  margin-left: 3rem !important;\n}\n\n.me-auto {\n  margin-left: auto !important;\n}\n\n.mb-0 {\n  margin-bottom: 0 !important;\n}\n\n.mb-1 {\n  margin-bottom: 0.25rem !important;\n}\n\n.mb-2 {\n  margin-bottom: 0.5rem !important;\n}\n\n.mb-3 {\n  margin-bottom: 1rem !important;\n}\n\n.mb-4 {\n  margin-bottom: 1.5rem !important;\n}\n\n.mb-5 {\n  margin-bottom: 3rem !important;\n}\n\n.mb-auto {\n  margin-bottom: auto !important;\n}\n\n.ms-0 {\n  margin-right: 0 !important;\n}\n\n.ms-1 {\n  margin-right: 0.25rem !important;\n}\n\n.ms-2 {\n  margin-right: 0.5rem !important;\n}\n\n.ms-3 {\n  margin-right: 1rem !important;\n}\n\n.ms-4 {\n  margin-right: 1.5rem !important;\n}\n\n.ms-5 {\n  margin-right: 3rem !important;\n}\n\n.ms-auto {\n  margin-right: auto !important;\n}\n\n.p-0 {\n  padding: 0 !important;\n}\n\n.p-1 {\n  padding: 0.25rem !important;\n}\n\n.p-2 {\n  padding: 0.5rem !important;\n}\n\n.p-3 {\n  padding: 1rem !important;\n}\n\n.p-4 {\n  padding: 1.5rem !important;\n}\n\n.p-5 {\n  padding: 3rem !important;\n}\n\n.px-0 {\n  padding-left: 0 !important;\n  padding-right: 0 !important;\n}\n\n.px-1 {\n  padding-left: 0.25rem !important;\n  padding-right: 0.25rem !important;\n}\n\n.px-2 {\n  padding-left: 0.5rem !important;\n  padding-right: 0.5rem !important;\n}\n\n.px-3 {\n  padding-left: 1rem !important;\n  padding-right: 1rem !important;\n}\n\n.px-4 {\n  padding-left: 1.5rem !important;\n  padding-right: 1.5rem !important;\n}\n\n.px-5 {\n  padding-left: 3rem !important;\n  padding-right: 3rem !important;\n}\n\n.py-0 {\n  padding-top: 0 !important;\n  padding-bottom: 0 !important;\n}\n\n.py-1 {\n  padding-top: 0.25rem !important;\n  padding-bottom: 0.25rem !important;\n}\n\n.py-2 {\n  padding-top: 0.5rem !important;\n  padding-bottom: 0.5rem !important;\n}\n\n.py-3 {\n  padding-top: 1rem !important;\n  padding-bottom: 1rem !important;\n}\n\n.py-4 {\n  padding-top: 1.5rem !important;\n  padding-bottom: 1.5rem !important;\n}\n\n.py-5 {\n  padding-top: 3rem !important;\n  padding-bottom: 3rem !important;\n}\n\n.pt-0 {\n  padding-top: 0 !important;\n}\n\n.pt-1 {\n  padding-top: 0.25rem !important;\n}\n\n.pt-2 {\n  padding-top: 0.5rem !important;\n}\n\n.pt-3 {\n  padding-top: 1rem !important;\n}\n\n.pt-4 {\n  padding-top: 1.5rem !important;\n}\n\n.pt-5 {\n  padding-top: 3rem !important;\n}\n\n.pe-0 {\n  padding-left: 0 !important;\n}\n\n.pe-1 {\n  padding-left: 0.25rem !important;\n}\n\n.pe-2 {\n  padding-left: 0.5rem !important;\n}\n\n.pe-3 {\n  padding-left: 1rem !important;\n}\n\n.pe-4 {\n  padding-left: 1.5rem !important;\n}\n\n.pe-5 {\n  padding-left: 3rem !important;\n}\n\n.pb-0 {\n  padding-bottom: 0 !important;\n}\n\n.pb-1 {\n  padding-bottom: 0.25rem !important;\n}\n\n.pb-2 {\n  padding-bottom: 0.5rem !important;\n}\n\n.pb-3 {\n  padding-bottom: 1rem !important;\n}\n\n.pb-4 {\n  padding-bottom: 1.5rem !important;\n}\n\n.pb-5 {\n  padding-bottom: 3rem !important;\n}\n\n.ps-0 {\n  padding-right: 0 !important;\n}\n\n.ps-1 {\n  padding-right: 0.25rem !important;\n}\n\n.ps-2 {\n  padding-right: 0.5rem !important;\n}\n\n.ps-3 {\n  padding-right: 1rem !important;\n}\n\n.ps-4 {\n  padding-right: 1.5rem !important;\n}\n\n.ps-5 {\n  padding-right: 3rem !important;\n}\n\n@media (min-width: 576px) {\n  .d-sm-inline {\n    display: inline !important;\n  }\n\n  .d-sm-inline-block {\n    display: inline-block !important;\n  }\n\n  .d-sm-block {\n    display: block !important;\n  }\n\n  .d-sm-grid {\n    display: grid !important;\n  }\n\n  .d-sm-table {\n    display: table !important;\n  }\n\n  .d-sm-table-row {\n    display: table-row !important;\n  }\n\n  .d-sm-table-cell {\n    display: table-cell !important;\n  }\n\n  .d-sm-flex {\n    display: flex !important;\n  }\n\n  .d-sm-inline-flex {\n    display: inline-flex !important;\n  }\n\n  .d-sm-none {\n    display: none !important;\n  }\n\n  .flex-sm-fill {\n    flex: 1 1 auto !important;\n  }\n\n  .flex-sm-row {\n    flex-direction: row !important;\n  }\n\n  .flex-sm-column {\n    flex-direction: column !important;\n  }\n\n  .flex-sm-row-reverse {\n    flex-direction: row-reverse !important;\n  }\n\n  .flex-sm-column-reverse {\n    flex-direction: column-reverse !important;\n  }\n\n  .flex-sm-grow-0 {\n    flex-grow: 0 !important;\n  }\n\n  .flex-sm-grow-1 {\n    flex-grow: 1 !important;\n  }\n\n  .flex-sm-shrink-0 {\n    flex-shrink: 0 !important;\n  }\n\n  .flex-sm-shrink-1 {\n    flex-shrink: 1 !important;\n  }\n\n  .flex-sm-wrap {\n    flex-wrap: wrap !important;\n  }\n\n  .flex-sm-nowrap {\n    flex-wrap: nowrap !important;\n  }\n\n  .flex-sm-wrap-reverse {\n    flex-wrap: wrap-reverse !important;\n  }\n\n  .justify-content-sm-start {\n    justify-content: flex-start !important;\n  }\n\n  .justify-content-sm-end {\n    justify-content: flex-end !important;\n  }\n\n  .justify-content-sm-center {\n    justify-content: center !important;\n  }\n\n  .justify-content-sm-between {\n    justify-content: space-between !important;\n  }\n\n  .justify-content-sm-around {\n    justify-content: space-around !important;\n  }\n\n  .justify-content-sm-evenly {\n    justify-content: space-evenly !important;\n  }\n\n  .align-items-sm-start {\n    align-items: flex-start !important;\n  }\n\n  .align-items-sm-end {\n    align-items: flex-end !important;\n  }\n\n  .align-items-sm-center {\n    align-items: center !important;\n  }\n\n  .align-items-sm-baseline {\n    align-items: baseline !important;\n  }\n\n  .align-items-sm-stretch {\n    align-items: stretch !important;\n  }\n\n  .align-content-sm-start {\n    align-content: flex-start !important;\n  }\n\n  .align-content-sm-end {\n    align-content: flex-end !important;\n  }\n\n  .align-content-sm-center {\n    align-content: center !important;\n  }\n\n  .align-content-sm-between {\n    align-content: space-between !important;\n  }\n\n  .align-content-sm-around {\n    align-content: space-around !important;\n  }\n\n  .align-content-sm-stretch {\n    align-content: stretch !important;\n  }\n\n  .align-self-sm-auto {\n    align-self: auto !important;\n  }\n\n  .align-self-sm-start {\n    align-self: flex-start !important;\n  }\n\n  .align-self-sm-end {\n    align-self: flex-end !important;\n  }\n\n  .align-self-sm-center {\n    align-self: center !important;\n  }\n\n  .align-self-sm-baseline {\n    align-self: baseline !important;\n  }\n\n  .align-self-sm-stretch {\n    align-self: stretch !important;\n  }\n\n  .order-sm-first {\n    order: -1 !important;\n  }\n\n  .order-sm-0 {\n    order: 0 !important;\n  }\n\n  .order-sm-1 {\n    order: 1 !important;\n  }\n\n  .order-sm-2 {\n    order: 2 !important;\n  }\n\n  .order-sm-3 {\n    order: 3 !important;\n  }\n\n  .order-sm-4 {\n    order: 4 !important;\n  }\n\n  .order-sm-5 {\n    order: 5 !important;\n  }\n\n  .order-sm-last {\n    order: 6 !important;\n  }\n\n  .m-sm-0 {\n    margin: 0 !important;\n  }\n\n  .m-sm-1 {\n    margin: 0.25rem !important;\n  }\n\n  .m-sm-2 {\n    margin: 0.5rem !important;\n  }\n\n  .m-sm-3 {\n    margin: 1rem !important;\n  }\n\n  .m-sm-4 {\n    margin: 1.5rem !important;\n  }\n\n  .m-sm-5 {\n    margin: 3rem !important;\n  }\n\n  .m-sm-auto {\n    margin: auto !important;\n  }\n\n  .mx-sm-0 {\n    margin-left: 0 !important;\n    margin-right: 0 !important;\n  }\n\n  .mx-sm-1 {\n    margin-left: 0.25rem !important;\n    margin-right: 0.25rem !important;\n  }\n\n  .mx-sm-2 {\n    margin-left: 0.5rem !important;\n    margin-right: 0.5rem !important;\n  }\n\n  .mx-sm-3 {\n    margin-left: 1rem !important;\n    margin-right: 1rem !important;\n  }\n\n  .mx-sm-4 {\n    margin-left: 1.5rem !important;\n    margin-right: 1.5rem !important;\n  }\n\n  .mx-sm-5 {\n    margin-left: 3rem !important;\n    margin-right: 3rem !important;\n  }\n\n  .mx-sm-auto {\n    margin-left: auto !important;\n    margin-right: auto !important;\n  }\n\n  .my-sm-0 {\n    margin-top: 0 !important;\n    margin-bottom: 0 !important;\n  }\n\n  .my-sm-1 {\n    margin-top: 0.25rem !important;\n    margin-bottom: 0.25rem !important;\n  }\n\n  .my-sm-2 {\n    margin-top: 0.5rem !important;\n    margin-bottom: 0.5rem !important;\n  }\n\n  .my-sm-3 {\n    margin-top: 1rem !important;\n    margin-bottom: 1rem !important;\n  }\n\n  .my-sm-4 {\n    margin-top: 1.5rem !important;\n    margin-bottom: 1.5rem !important;\n  }\n\n  .my-sm-5 {\n    margin-top: 3rem !important;\n    margin-bottom: 3rem !important;\n  }\n\n  .my-sm-auto {\n    margin-top: auto !important;\n    margin-bottom: auto !important;\n  }\n\n  .mt-sm-0 {\n    margin-top: 0 !important;\n  }\n\n  .mt-sm-1 {\n    margin-top: 0.25rem !important;\n  }\n\n  .mt-sm-2 {\n    margin-top: 0.5rem !important;\n  }\n\n  .mt-sm-3 {\n    margin-top: 1rem !important;\n  }\n\n  .mt-sm-4 {\n    margin-top: 1.5rem !important;\n  }\n\n  .mt-sm-5 {\n    margin-top: 3rem !important;\n  }\n\n  .mt-sm-auto {\n    margin-top: auto !important;\n  }\n\n  .me-sm-0 {\n    margin-left: 0 !important;\n  }\n\n  .me-sm-1 {\n    margin-left: 0.25rem !important;\n  }\n\n  .me-sm-2 {\n    margin-left: 0.5rem !important;\n  }\n\n  .me-sm-3 {\n    margin-left: 1rem !important;\n  }\n\n  .me-sm-4 {\n    margin-left: 1.5rem !important;\n  }\n\n  .me-sm-5 {\n    margin-left: 3rem !important;\n  }\n\n  .me-sm-auto {\n    margin-left: auto !important;\n  }\n\n  .mb-sm-0 {\n    margin-bottom: 0 !important;\n  }\n\n  .mb-sm-1 {\n    margin-bottom: 0.25rem !important;\n  }\n\n  .mb-sm-2 {\n    margin-bottom: 0.5rem !important;\n  }\n\n  .mb-sm-3 {\n    margin-bottom: 1rem !important;\n  }\n\n  .mb-sm-4 {\n    margin-bottom: 1.5rem !important;\n  }\n\n  .mb-sm-5 {\n    margin-bottom: 3rem !important;\n  }\n\n  .mb-sm-auto {\n    margin-bottom: auto !important;\n  }\n\n  .ms-sm-0 {\n    margin-right: 0 !important;\n  }\n\n  .ms-sm-1 {\n    margin-right: 0.25rem !important;\n  }\n\n  .ms-sm-2 {\n    margin-right: 0.5rem !important;\n  }\n\n  .ms-sm-3 {\n    margin-right: 1rem !important;\n  }\n\n  .ms-sm-4 {\n    margin-right: 1.5rem !important;\n  }\n\n  .ms-sm-5 {\n    margin-right: 3rem !important;\n  }\n\n  .ms-sm-auto {\n    margin-right: auto !important;\n  }\n\n  .p-sm-0 {\n    padding: 0 !important;\n  }\n\n  .p-sm-1 {\n    padding: 0.25rem !important;\n  }\n\n  .p-sm-2 {\n    padding: 0.5rem !important;\n  }\n\n  .p-sm-3 {\n    padding: 1rem !important;\n  }\n\n  .p-sm-4 {\n    padding: 1.5rem !important;\n  }\n\n  .p-sm-5 {\n    padding: 3rem !important;\n  }\n\n  .px-sm-0 {\n    padding-left: 0 !important;\n    padding-right: 0 !important;\n  }\n\n  .px-sm-1 {\n    padding-left: 0.25rem !important;\n    padding-right: 0.25rem !important;\n  }\n\n  .px-sm-2 {\n    padding-left: 0.5rem !important;\n    padding-right: 0.5rem !important;\n  }\n\n  .px-sm-3 {\n    padding-left: 1rem !important;\n    padding-right: 1rem !important;\n  }\n\n  .px-sm-4 {\n    padding-left: 1.5rem !important;\n    padding-right: 1.5rem !important;\n  }\n\n  .px-sm-5 {\n    padding-left: 3rem !important;\n    padding-right: 3rem !important;\n  }\n\n  .py-sm-0 {\n    padding-top: 0 !important;\n    padding-bottom: 0 !important;\n  }\n\n  .py-sm-1 {\n    padding-top: 0.25rem !important;\n    padding-bottom: 0.25rem !important;\n  }\n\n  .py-sm-2 {\n    padding-top: 0.5rem !important;\n    padding-bottom: 0.5rem !important;\n  }\n\n  .py-sm-3 {\n    padding-top: 1rem !important;\n    padding-bottom: 1rem !important;\n  }\n\n  .py-sm-4 {\n    padding-top: 1.5rem !important;\n    padding-bottom: 1.5rem !important;\n  }\n\n  .py-sm-5 {\n    padding-top: 3rem !important;\n    padding-bottom: 3rem !important;\n  }\n\n  .pt-sm-0 {\n    padding-top: 0 !important;\n  }\n\n  .pt-sm-1 {\n    padding-top: 0.25rem !important;\n  }\n\n  .pt-sm-2 {\n    padding-top: 0.5rem !important;\n  }\n\n  .pt-sm-3 {\n    padding-top: 1rem !important;\n  }\n\n  .pt-sm-4 {\n    padding-top: 1.5rem !important;\n  }\n\n  .pt-sm-5 {\n    padding-top: 3rem !important;\n  }\n\n  .pe-sm-0 {\n    padding-left: 0 !important;\n  }\n\n  .pe-sm-1 {\n    padding-left: 0.25rem !important;\n  }\n\n  .pe-sm-2 {\n    padding-left: 0.5rem !important;\n  }\n\n  .pe-sm-3 {\n    padding-left: 1rem !important;\n  }\n\n  .pe-sm-4 {\n    padding-left: 1.5rem !important;\n  }\n\n  .pe-sm-5 {\n    padding-left: 3rem !important;\n  }\n\n  .pb-sm-0 {\n    padding-bottom: 0 !important;\n  }\n\n  .pb-sm-1 {\n    padding-bottom: 0.25rem !important;\n  }\n\n  .pb-sm-2 {\n    padding-bottom: 0.5rem !important;\n  }\n\n  .pb-sm-3 {\n    padding-bottom: 1rem !important;\n  }\n\n  .pb-sm-4 {\n    padding-bottom: 1.5rem !important;\n  }\n\n  .pb-sm-5 {\n    padding-bottom: 3rem !important;\n  }\n\n  .ps-sm-0 {\n    padding-right: 0 !important;\n  }\n\n  .ps-sm-1 {\n    padding-right: 0.25rem !important;\n  }\n\n  .ps-sm-2 {\n    padding-right: 0.5rem !important;\n  }\n\n  .ps-sm-3 {\n    padding-right: 1rem !important;\n  }\n\n  .ps-sm-4 {\n    padding-right: 1.5rem !important;\n  }\n\n  .ps-sm-5 {\n    padding-right: 3rem !important;\n  }\n}\n@media (min-width: 768px) {\n  .d-md-inline {\n    display: inline !important;\n  }\n\n  .d-md-inline-block {\n    display: inline-block !important;\n  }\n\n  .d-md-block {\n    display: block !important;\n  }\n\n  .d-md-grid {\n    display: grid !important;\n  }\n\n  .d-md-table {\n    display: table !important;\n  }\n\n  .d-md-table-row {\n    display: table-row !important;\n  }\n\n  .d-md-table-cell {\n    display: table-cell !important;\n  }\n\n  .d-md-flex {\n    display: flex !important;\n  }\n\n  .d-md-inline-flex {\n    display: inline-flex !important;\n  }\n\n  .d-md-none {\n    display: none !important;\n  }\n\n  .flex-md-fill {\n    flex: 1 1 auto !important;\n  }\n\n  .flex-md-row {\n    flex-direction: row !important;\n  }\n\n  .flex-md-column {\n    flex-direction: column !important;\n  }\n\n  .flex-md-row-reverse {\n    flex-direction: row-reverse !important;\n  }\n\n  .flex-md-column-reverse {\n    flex-direction: column-reverse !important;\n  }\n\n  .flex-md-grow-0 {\n    flex-grow: 0 !important;\n  }\n\n  .flex-md-grow-1 {\n    flex-grow: 1 !important;\n  }\n\n  .flex-md-shrink-0 {\n    flex-shrink: 0 !important;\n  }\n\n  .flex-md-shrink-1 {\n    flex-shrink: 1 !important;\n  }\n\n  .flex-md-wrap {\n    flex-wrap: wrap !important;\n  }\n\n  .flex-md-nowrap {\n    flex-wrap: nowrap !important;\n  }\n\n  .flex-md-wrap-reverse {\n    flex-wrap: wrap-reverse !important;\n  }\n\n  .justify-content-md-start {\n    justify-content: flex-start !important;\n  }\n\n  .justify-content-md-end {\n    justify-content: flex-end !important;\n  }\n\n  .justify-content-md-center {\n    justify-content: center !important;\n  }\n\n  .justify-content-md-between {\n    justify-content: space-between !important;\n  }\n\n  .justify-content-md-around {\n    justify-content: space-around !important;\n  }\n\n  .justify-content-md-evenly {\n    justify-content: space-evenly !important;\n  }\n\n  .align-items-md-start {\n    align-items: flex-start !important;\n  }\n\n  .align-items-md-end {\n    align-items: flex-end !important;\n  }\n\n  .align-items-md-center {\n    align-items: center !important;\n  }\n\n  .align-items-md-baseline {\n    align-items: baseline !important;\n  }\n\n  .align-items-md-stretch {\n    align-items: stretch !important;\n  }\n\n  .align-content-md-start {\n    align-content: flex-start !important;\n  }\n\n  .align-content-md-end {\n    align-content: flex-end !important;\n  }\n\n  .align-content-md-center {\n    align-content: center !important;\n  }\n\n  .align-content-md-between {\n    align-content: space-between !important;\n  }\n\n  .align-content-md-around {\n    align-content: space-around !important;\n  }\n\n  .align-content-md-stretch {\n    align-content: stretch !important;\n  }\n\n  .align-self-md-auto {\n    align-self: auto !important;\n  }\n\n  .align-self-md-start {\n    align-self: flex-start !important;\n  }\n\n  .align-self-md-end {\n    align-self: flex-end !important;\n  }\n\n  .align-self-md-center {\n    align-self: center !important;\n  }\n\n  .align-self-md-baseline {\n    align-self: baseline !important;\n  }\n\n  .align-self-md-stretch {\n    align-self: stretch !important;\n  }\n\n  .order-md-first {\n    order: -1 !important;\n  }\n\n  .order-md-0 {\n    order: 0 !important;\n  }\n\n  .order-md-1 {\n    order: 1 !important;\n  }\n\n  .order-md-2 {\n    order: 2 !important;\n  }\n\n  .order-md-3 {\n    order: 3 !important;\n  }\n\n  .order-md-4 {\n    order: 4 !important;\n  }\n\n  .order-md-5 {\n    order: 5 !important;\n  }\n\n  .order-md-last {\n    order: 6 !important;\n  }\n\n  .m-md-0 {\n    margin: 0 !important;\n  }\n\n  .m-md-1 {\n    margin: 0.25rem !important;\n  }\n\n  .m-md-2 {\n    margin: 0.5rem !important;\n  }\n\n  .m-md-3 {\n    margin: 1rem !important;\n  }\n\n  .m-md-4 {\n    margin: 1.5rem !important;\n  }\n\n  .m-md-5 {\n    margin: 3rem !important;\n  }\n\n  .m-md-auto {\n    margin: auto !important;\n  }\n\n  .mx-md-0 {\n    margin-left: 0 !important;\n    margin-right: 0 !important;\n  }\n\n  .mx-md-1 {\n    margin-left: 0.25rem !important;\n    margin-right: 0.25rem !important;\n  }\n\n  .mx-md-2 {\n    margin-left: 0.5rem !important;\n    margin-right: 0.5rem !important;\n  }\n\n  .mx-md-3 {\n    margin-left: 1rem !important;\n    margin-right: 1rem !important;\n  }\n\n  .mx-md-4 {\n    margin-left: 1.5rem !important;\n    margin-right: 1.5rem !important;\n  }\n\n  .mx-md-5 {\n    margin-left: 3rem !important;\n    margin-right: 3rem !important;\n  }\n\n  .mx-md-auto {\n    margin-left: auto !important;\n    margin-right: auto !important;\n  }\n\n  .my-md-0 {\n    margin-top: 0 !important;\n    margin-bottom: 0 !important;\n  }\n\n  .my-md-1 {\n    margin-top: 0.25rem !important;\n    margin-bottom: 0.25rem !important;\n  }\n\n  .my-md-2 {\n    margin-top: 0.5rem !important;\n    margin-bottom: 0.5rem !important;\n  }\n\n  .my-md-3 {\n    margin-top: 1rem !important;\n    margin-bottom: 1rem !important;\n  }\n\n  .my-md-4 {\n    margin-top: 1.5rem !important;\n    margin-bottom: 1.5rem !important;\n  }\n\n  .my-md-5 {\n    margin-top: 3rem !important;\n    margin-bottom: 3rem !important;\n  }\n\n  .my-md-auto {\n    margin-top: auto !important;\n    margin-bottom: auto !important;\n  }\n\n  .mt-md-0 {\n    margin-top: 0 !important;\n  }\n\n  .mt-md-1 {\n    margin-top: 0.25rem !important;\n  }\n\n  .mt-md-2 {\n    margin-top: 0.5rem !important;\n  }\n\n  .mt-md-3 {\n    margin-top: 1rem !important;\n  }\n\n  .mt-md-4 {\n    margin-top: 1.5rem !important;\n  }\n\n  .mt-md-5 {\n    margin-top: 3rem !important;\n  }\n\n  .mt-md-auto {\n    margin-top: auto !important;\n  }\n\n  .me-md-0 {\n    margin-left: 0 !important;\n  }\n\n  .me-md-1 {\n    margin-left: 0.25rem !important;\n  }\n\n  .me-md-2 {\n    margin-left: 0.5rem !important;\n  }\n\n  .me-md-3 {\n    margin-left: 1rem !important;\n  }\n\n  .me-md-4 {\n    margin-left: 1.5rem !important;\n  }\n\n  .me-md-5 {\n    margin-left: 3rem !important;\n  }\n\n  .me-md-auto {\n    margin-left: auto !important;\n  }\n\n  .mb-md-0 {\n    margin-bottom: 0 !important;\n  }\n\n  .mb-md-1 {\n    margin-bottom: 0.25rem !important;\n  }\n\n  .mb-md-2 {\n    margin-bottom: 0.5rem !important;\n  }\n\n  .mb-md-3 {\n    margin-bottom: 1rem !important;\n  }\n\n  .mb-md-4 {\n    margin-bottom: 1.5rem !important;\n  }\n\n  .mb-md-5 {\n    margin-bottom: 3rem !important;\n  }\n\n  .mb-md-auto {\n    margin-bottom: auto !important;\n  }\n\n  .ms-md-0 {\n    margin-right: 0 !important;\n  }\n\n  .ms-md-1 {\n    margin-right: 0.25rem !important;\n  }\n\n  .ms-md-2 {\n    margin-right: 0.5rem !important;\n  }\n\n  .ms-md-3 {\n    margin-right: 1rem !important;\n  }\n\n  .ms-md-4 {\n    margin-right: 1.5rem !important;\n  }\n\n  .ms-md-5 {\n    margin-right: 3rem !important;\n  }\n\n  .ms-md-auto {\n    margin-right: auto !important;\n  }\n\n  .p-md-0 {\n    padding: 0 !important;\n  }\n\n  .p-md-1 {\n    padding: 0.25rem !important;\n  }\n\n  .p-md-2 {\n    padding: 0.5rem !important;\n  }\n\n  .p-md-3 {\n    padding: 1rem !important;\n  }\n\n  .p-md-4 {\n    padding: 1.5rem !important;\n  }\n\n  .p-md-5 {\n    padding: 3rem !important;\n  }\n\n  .px-md-0 {\n    padding-left: 0 !important;\n    padding-right: 0 !important;\n  }\n\n  .px-md-1 {\n    padding-left: 0.25rem !important;\n    padding-right: 0.25rem !important;\n  }\n\n  .px-md-2 {\n    padding-left: 0.5rem !important;\n    padding-right: 0.5rem !important;\n  }\n\n  .px-md-3 {\n    padding-left: 1rem !important;\n    padding-right: 1rem !important;\n  }\n\n  .px-md-4 {\n    padding-left: 1.5rem !important;\n    padding-right: 1.5rem !important;\n  }\n\n  .px-md-5 {\n    padding-left: 3rem !important;\n    padding-right: 3rem !important;\n  }\n\n  .py-md-0 {\n    padding-top: 0 !important;\n    padding-bottom: 0 !important;\n  }\n\n  .py-md-1 {\n    padding-top: 0.25rem !important;\n    padding-bottom: 0.25rem !important;\n  }\n\n  .py-md-2 {\n    padding-top: 0.5rem !important;\n    padding-bottom: 0.5rem !important;\n  }\n\n  .py-md-3 {\n    padding-top: 1rem !important;\n    padding-bottom: 1rem !important;\n  }\n\n  .py-md-4 {\n    padding-top: 1.5rem !important;\n    padding-bottom: 1.5rem !important;\n  }\n\n  .py-md-5 {\n    padding-top: 3rem !important;\n    padding-bottom: 3rem !important;\n  }\n\n  .pt-md-0 {\n    padding-top: 0 !important;\n  }\n\n  .pt-md-1 {\n    padding-top: 0.25rem !important;\n  }\n\n  .pt-md-2 {\n    padding-top: 0.5rem !important;\n  }\n\n  .pt-md-3 {\n    padding-top: 1rem !important;\n  }\n\n  .pt-md-4 {\n    padding-top: 1.5rem !important;\n  }\n\n  .pt-md-5 {\n    padding-top: 3rem !important;\n  }\n\n  .pe-md-0 {\n    padding-left: 0 !important;\n  }\n\n  .pe-md-1 {\n    padding-left: 0.25rem !important;\n  }\n\n  .pe-md-2 {\n    padding-left: 0.5rem !important;\n  }\n\n  .pe-md-3 {\n    padding-left: 1rem !important;\n  }\n\n  .pe-md-4 {\n    padding-left: 1.5rem !important;\n  }\n\n  .pe-md-5 {\n    padding-left: 3rem !important;\n  }\n\n  .pb-md-0 {\n    padding-bottom: 0 !important;\n  }\n\n  .pb-md-1 {\n    padding-bottom: 0.25rem !important;\n  }\n\n  .pb-md-2 {\n    padding-bottom: 0.5rem !important;\n  }\n\n  .pb-md-3 {\n    padding-bottom: 1rem !important;\n  }\n\n  .pb-md-4 {\n    padding-bottom: 1.5rem !important;\n  }\n\n  .pb-md-5 {\n    padding-bottom: 3rem !important;\n  }\n\n  .ps-md-0 {\n    padding-right: 0 !important;\n  }\n\n  .ps-md-1 {\n    padding-right: 0.25rem !important;\n  }\n\n  .ps-md-2 {\n    padding-right: 0.5rem !important;\n  }\n\n  .ps-md-3 {\n    padding-right: 1rem !important;\n  }\n\n  .ps-md-4 {\n    padding-right: 1.5rem !important;\n  }\n\n  .ps-md-5 {\n    padding-right: 3rem !important;\n  }\n}\n@media (min-width: 992px) {\n  .d-lg-inline {\n    display: inline !important;\n  }\n\n  .d-lg-inline-block {\n    display: inline-block !important;\n  }\n\n  .d-lg-block {\n    display: block !important;\n  }\n\n  .d-lg-grid {\n    display: grid !important;\n  }\n\n  .d-lg-table {\n    display: table !important;\n  }\n\n  .d-lg-table-row {\n    display: table-row !important;\n  }\n\n  .d-lg-table-cell {\n    display: table-cell !important;\n  }\n\n  .d-lg-flex {\n    display: flex !important;\n  }\n\n  .d-lg-inline-flex {\n    display: inline-flex !important;\n  }\n\n  .d-lg-none {\n    display: none !important;\n  }\n\n  .flex-lg-fill {\n    flex: 1 1 auto !important;\n  }\n\n  .flex-lg-row {\n    flex-direction: row !important;\n  }\n\n  .flex-lg-column {\n    flex-direction: column !important;\n  }\n\n  .flex-lg-row-reverse {\n    flex-direction: row-reverse !important;\n  }\n\n  .flex-lg-column-reverse {\n    flex-direction: column-reverse !important;\n  }\n\n  .flex-lg-grow-0 {\n    flex-grow: 0 !important;\n  }\n\n  .flex-lg-grow-1 {\n    flex-grow: 1 !important;\n  }\n\n  .flex-lg-shrink-0 {\n    flex-shrink: 0 !important;\n  }\n\n  .flex-lg-shrink-1 {\n    flex-shrink: 1 !important;\n  }\n\n  .flex-lg-wrap {\n    flex-wrap: wrap !important;\n  }\n\n  .flex-lg-nowrap {\n    flex-wrap: nowrap !important;\n  }\n\n  .flex-lg-wrap-reverse {\n    flex-wrap: wrap-reverse !important;\n  }\n\n  .justify-content-lg-start {\n    justify-content: flex-start !important;\n  }\n\n  .justify-content-lg-end {\n    justify-content: flex-end !important;\n  }\n\n  .justify-content-lg-center {\n    justify-content: center !important;\n  }\n\n  .justify-content-lg-between {\n    justify-content: space-between !important;\n  }\n\n  .justify-content-lg-around {\n    justify-content: space-around !important;\n  }\n\n  .justify-content-lg-evenly {\n    justify-content: space-evenly !important;\n  }\n\n  .align-items-lg-start {\n    align-items: flex-start !important;\n  }\n\n  .align-items-lg-end {\n    align-items: flex-end !important;\n  }\n\n  .align-items-lg-center {\n    align-items: center !important;\n  }\n\n  .align-items-lg-baseline {\n    align-items: baseline !important;\n  }\n\n  .align-items-lg-stretch {\n    align-items: stretch !important;\n  }\n\n  .align-content-lg-start {\n    align-content: flex-start !important;\n  }\n\n  .align-content-lg-end {\n    align-content: flex-end !important;\n  }\n\n  .align-content-lg-center {\n    align-content: center !important;\n  }\n\n  .align-content-lg-between {\n    align-content: space-between !important;\n  }\n\n  .align-content-lg-around {\n    align-content: space-around !important;\n  }\n\n  .align-content-lg-stretch {\n    align-content: stretch !important;\n  }\n\n  .align-self-lg-auto {\n    align-self: auto !important;\n  }\n\n  .align-self-lg-start {\n    align-self: flex-start !important;\n  }\n\n  .align-self-lg-end {\n    align-self: flex-end !important;\n  }\n\n  .align-self-lg-center {\n    align-self: center !important;\n  }\n\n  .align-self-lg-baseline {\n    align-self: baseline !important;\n  }\n\n  .align-self-lg-stretch {\n    align-self: stretch !important;\n  }\n\n  .order-lg-first {\n    order: -1 !important;\n  }\n\n  .order-lg-0 {\n    order: 0 !important;\n  }\n\n  .order-lg-1 {\n    order: 1 !important;\n  }\n\n  .order-lg-2 {\n    order: 2 !important;\n  }\n\n  .order-lg-3 {\n    order: 3 !important;\n  }\n\n  .order-lg-4 {\n    order: 4 !important;\n  }\n\n  .order-lg-5 {\n    order: 5 !important;\n  }\n\n  .order-lg-last {\n    order: 6 !important;\n  }\n\n  .m-lg-0 {\n    margin: 0 !important;\n  }\n\n  .m-lg-1 {\n    margin: 0.25rem !important;\n  }\n\n  .m-lg-2 {\n    margin: 0.5rem !important;\n  }\n\n  .m-lg-3 {\n    margin: 1rem !important;\n  }\n\n  .m-lg-4 {\n    margin: 1.5rem !important;\n  }\n\n  .m-lg-5 {\n    margin: 3rem !important;\n  }\n\n  .m-lg-auto {\n    margin: auto !important;\n  }\n\n  .mx-lg-0 {\n    margin-left: 0 !important;\n    margin-right: 0 !important;\n  }\n\n  .mx-lg-1 {\n    margin-left: 0.25rem !important;\n    margin-right: 0.25rem !important;\n  }\n\n  .mx-lg-2 {\n    margin-left: 0.5rem !important;\n    margin-right: 0.5rem !important;\n  }\n\n  .mx-lg-3 {\n    margin-left: 1rem !important;\n    margin-right: 1rem !important;\n  }\n\n  .mx-lg-4 {\n    margin-left: 1.5rem !important;\n    margin-right: 1.5rem !important;\n  }\n\n  .mx-lg-5 {\n    margin-left: 3rem !important;\n    margin-right: 3rem !important;\n  }\n\n  .mx-lg-auto {\n    margin-left: auto !important;\n    margin-right: auto !important;\n  }\n\n  .my-lg-0 {\n    margin-top: 0 !important;\n    margin-bottom: 0 !important;\n  }\n\n  .my-lg-1 {\n    margin-top: 0.25rem !important;\n    margin-bottom: 0.25rem !important;\n  }\n\n  .my-lg-2 {\n    margin-top: 0.5rem !important;\n    margin-bottom: 0.5rem !important;\n  }\n\n  .my-lg-3 {\n    margin-top: 1rem !important;\n    margin-bottom: 1rem !important;\n  }\n\n  .my-lg-4 {\n    margin-top: 1.5rem !important;\n    margin-bottom: 1.5rem !important;\n  }\n\n  .my-lg-5 {\n    margin-top: 3rem !important;\n    margin-bottom: 3rem !important;\n  }\n\n  .my-lg-auto {\n    margin-top: auto !important;\n    margin-bottom: auto !important;\n  }\n\n  .mt-lg-0 {\n    margin-top: 0 !important;\n  }\n\n  .mt-lg-1 {\n    margin-top: 0.25rem !important;\n  }\n\n  .mt-lg-2 {\n    margin-top: 0.5rem !important;\n  }\n\n  .mt-lg-3 {\n    margin-top: 1rem !important;\n  }\n\n  .mt-lg-4 {\n    margin-top: 1.5rem !important;\n  }\n\n  .mt-lg-5 {\n    margin-top: 3rem !important;\n  }\n\n  .mt-lg-auto {\n    margin-top: auto !important;\n  }\n\n  .me-lg-0 {\n    margin-left: 0 !important;\n  }\n\n  .me-lg-1 {\n    margin-left: 0.25rem !important;\n  }\n\n  .me-lg-2 {\n    margin-left: 0.5rem !important;\n  }\n\n  .me-lg-3 {\n    margin-left: 1rem !important;\n  }\n\n  .me-lg-4 {\n    margin-left: 1.5rem !important;\n  }\n\n  .me-lg-5 {\n    margin-left: 3rem !important;\n  }\n\n  .me-lg-auto {\n    margin-left: auto !important;\n  }\n\n  .mb-lg-0 {\n    margin-bottom: 0 !important;\n  }\n\n  .mb-lg-1 {\n    margin-bottom: 0.25rem !important;\n  }\n\n  .mb-lg-2 {\n    margin-bottom: 0.5rem !important;\n  }\n\n  .mb-lg-3 {\n    margin-bottom: 1rem !important;\n  }\n\n  .mb-lg-4 {\n    margin-bottom: 1.5rem !important;\n  }\n\n  .mb-lg-5 {\n    margin-bottom: 3rem !important;\n  }\n\n  .mb-lg-auto {\n    margin-bottom: auto !important;\n  }\n\n  .ms-lg-0 {\n    margin-right: 0 !important;\n  }\n\n  .ms-lg-1 {\n    margin-right: 0.25rem !important;\n  }\n\n  .ms-lg-2 {\n    margin-right: 0.5rem !important;\n  }\n\n  .ms-lg-3 {\n    margin-right: 1rem !important;\n  }\n\n  .ms-lg-4 {\n    margin-right: 1.5rem !important;\n  }\n\n  .ms-lg-5 {\n    margin-right: 3rem !important;\n  }\n\n  .ms-lg-auto {\n    margin-right: auto !important;\n  }\n\n  .p-lg-0 {\n    padding: 0 !important;\n  }\n\n  .p-lg-1 {\n    padding: 0.25rem !important;\n  }\n\n  .p-lg-2 {\n    padding: 0.5rem !important;\n  }\n\n  .p-lg-3 {\n    padding: 1rem !important;\n  }\n\n  .p-lg-4 {\n    padding: 1.5rem !important;\n  }\n\n  .p-lg-5 {\n    padding: 3rem !important;\n  }\n\n  .px-lg-0 {\n    padding-left: 0 !important;\n    padding-right: 0 !important;\n  }\n\n  .px-lg-1 {\n    padding-left: 0.25rem !important;\n    padding-right: 0.25rem !important;\n  }\n\n  .px-lg-2 {\n    padding-left: 0.5rem !important;\n    padding-right: 0.5rem !important;\n  }\n\n  .px-lg-3 {\n    padding-left: 1rem !important;\n    padding-right: 1rem !important;\n  }\n\n  .px-lg-4 {\n    padding-left: 1.5rem !important;\n    padding-right: 1.5rem !important;\n  }\n\n  .px-lg-5 {\n    padding-left: 3rem !important;\n    padding-right: 3rem !important;\n  }\n\n  .py-lg-0 {\n    padding-top: 0 !important;\n    padding-bottom: 0 !important;\n  }\n\n  .py-lg-1 {\n    padding-top: 0.25rem !important;\n    padding-bottom: 0.25rem !important;\n  }\n\n  .py-lg-2 {\n    padding-top: 0.5rem !important;\n    padding-bottom: 0.5rem !important;\n  }\n\n  .py-lg-3 {\n    padding-top: 1rem !important;\n    padding-bottom: 1rem !important;\n  }\n\n  .py-lg-4 {\n    padding-top: 1.5rem !important;\n    padding-bottom: 1.5rem !important;\n  }\n\n  .py-lg-5 {\n    padding-top: 3rem !important;\n    padding-bottom: 3rem !important;\n  }\n\n  .pt-lg-0 {\n    padding-top: 0 !important;\n  }\n\n  .pt-lg-1 {\n    padding-top: 0.25rem !important;\n  }\n\n  .pt-lg-2 {\n    padding-top: 0.5rem !important;\n  }\n\n  .pt-lg-3 {\n    padding-top: 1rem !important;\n  }\n\n  .pt-lg-4 {\n    padding-top: 1.5rem !important;\n  }\n\n  .pt-lg-5 {\n    padding-top: 3rem !important;\n  }\n\n  .pe-lg-0 {\n    padding-left: 0 !important;\n  }\n\n  .pe-lg-1 {\n    padding-left: 0.25rem !important;\n  }\n\n  .pe-lg-2 {\n    padding-left: 0.5rem !important;\n  }\n\n  .pe-lg-3 {\n    padding-left: 1rem !important;\n  }\n\n  .pe-lg-4 {\n    padding-left: 1.5rem !important;\n  }\n\n  .pe-lg-5 {\n    padding-left: 3rem !important;\n  }\n\n  .pb-lg-0 {\n    padding-bottom: 0 !important;\n  }\n\n  .pb-lg-1 {\n    padding-bottom: 0.25rem !important;\n  }\n\n  .pb-lg-2 {\n    padding-bottom: 0.5rem !important;\n  }\n\n  .pb-lg-3 {\n    padding-bottom: 1rem !important;\n  }\n\n  .pb-lg-4 {\n    padding-bottom: 1.5rem !important;\n  }\n\n  .pb-lg-5 {\n    padding-bottom: 3rem !important;\n  }\n\n  .ps-lg-0 {\n    padding-right: 0 !important;\n  }\n\n  .ps-lg-1 {\n    padding-right: 0.25rem !important;\n  }\n\n  .ps-lg-2 {\n    padding-right: 0.5rem !important;\n  }\n\n  .ps-lg-3 {\n    padding-right: 1rem !important;\n  }\n\n  .ps-lg-4 {\n    padding-right: 1.5rem !important;\n  }\n\n  .ps-lg-5 {\n    padding-right: 3rem !important;\n  }\n}\n@media (min-width: 1200px) {\n  .d-xl-inline {\n    display: inline !important;\n  }\n\n  .d-xl-inline-block {\n    display: inline-block !important;\n  }\n\n  .d-xl-block {\n    display: block !important;\n  }\n\n  .d-xl-grid {\n    display: grid !important;\n  }\n\n  .d-xl-table {\n    display: table !important;\n  }\n\n  .d-xl-table-row {\n    display: table-row !important;\n  }\n\n  .d-xl-table-cell {\n    display: table-cell !important;\n  }\n\n  .d-xl-flex {\n    display: flex !important;\n  }\n\n  .d-xl-inline-flex {\n    display: inline-flex !important;\n  }\n\n  .d-xl-none {\n    display: none !important;\n  }\n\n  .flex-xl-fill {\n    flex: 1 1 auto !important;\n  }\n\n  .flex-xl-row {\n    flex-direction: row !important;\n  }\n\n  .flex-xl-column {\n    flex-direction: column !important;\n  }\n\n  .flex-xl-row-reverse {\n    flex-direction: row-reverse !important;\n  }\n\n  .flex-xl-column-reverse {\n    flex-direction: column-reverse !important;\n  }\n\n  .flex-xl-grow-0 {\n    flex-grow: 0 !important;\n  }\n\n  .flex-xl-grow-1 {\n    flex-grow: 1 !important;\n  }\n\n  .flex-xl-shrink-0 {\n    flex-shrink: 0 !important;\n  }\n\n  .flex-xl-shrink-1 {\n    flex-shrink: 1 !important;\n  }\n\n  .flex-xl-wrap {\n    flex-wrap: wrap !important;\n  }\n\n  .flex-xl-nowrap {\n    flex-wrap: nowrap !important;\n  }\n\n  .flex-xl-wrap-reverse {\n    flex-wrap: wrap-reverse !important;\n  }\n\n  .justify-content-xl-start {\n    justify-content: flex-start !important;\n  }\n\n  .justify-content-xl-end {\n    justify-content: flex-end !important;\n  }\n\n  .justify-content-xl-center {\n    justify-content: center !important;\n  }\n\n  .justify-content-xl-between {\n    justify-content: space-between !important;\n  }\n\n  .justify-content-xl-around {\n    justify-content: space-around !important;\n  }\n\n  .justify-content-xl-evenly {\n    justify-content: space-evenly !important;\n  }\n\n  .align-items-xl-start {\n    align-items: flex-start !important;\n  }\n\n  .align-items-xl-end {\n    align-items: flex-end !important;\n  }\n\n  .align-items-xl-center {\n    align-items: center !important;\n  }\n\n  .align-items-xl-baseline {\n    align-items: baseline !important;\n  }\n\n  .align-items-xl-stretch {\n    align-items: stretch !important;\n  }\n\n  .align-content-xl-start {\n    align-content: flex-start !important;\n  }\n\n  .align-content-xl-end {\n    align-content: flex-end !important;\n  }\n\n  .align-content-xl-center {\n    align-content: center !important;\n  }\n\n  .align-content-xl-between {\n    align-content: space-between !important;\n  }\n\n  .align-content-xl-around {\n    align-content: space-around !important;\n  }\n\n  .align-content-xl-stretch {\n    align-content: stretch !important;\n  }\n\n  .align-self-xl-auto {\n    align-self: auto !important;\n  }\n\n  .align-self-xl-start {\n    align-self: flex-start !important;\n  }\n\n  .align-self-xl-end {\n    align-self: flex-end !important;\n  }\n\n  .align-self-xl-center {\n    align-self: center !important;\n  }\n\n  .align-self-xl-baseline {\n    align-self: baseline !important;\n  }\n\n  .align-self-xl-stretch {\n    align-self: stretch !important;\n  }\n\n  .order-xl-first {\n    order: -1 !important;\n  }\n\n  .order-xl-0 {\n    order: 0 !important;\n  }\n\n  .order-xl-1 {\n    order: 1 !important;\n  }\n\n  .order-xl-2 {\n    order: 2 !important;\n  }\n\n  .order-xl-3 {\n    order: 3 !important;\n  }\n\n  .order-xl-4 {\n    order: 4 !important;\n  }\n\n  .order-xl-5 {\n    order: 5 !important;\n  }\n\n  .order-xl-last {\n    order: 6 !important;\n  }\n\n  .m-xl-0 {\n    margin: 0 !important;\n  }\n\n  .m-xl-1 {\n    margin: 0.25rem !important;\n  }\n\n  .m-xl-2 {\n    margin: 0.5rem !important;\n  }\n\n  .m-xl-3 {\n    margin: 1rem !important;\n  }\n\n  .m-xl-4 {\n    margin: 1.5rem !important;\n  }\n\n  .m-xl-5 {\n    margin: 3rem !important;\n  }\n\n  .m-xl-auto {\n    margin: auto !important;\n  }\n\n  .mx-xl-0 {\n    margin-left: 0 !important;\n    margin-right: 0 !important;\n  }\n\n  .mx-xl-1 {\n    margin-left: 0.25rem !important;\n    margin-right: 0.25rem !important;\n  }\n\n  .mx-xl-2 {\n    margin-left: 0.5rem !important;\n    margin-right: 0.5rem !important;\n  }\n\n  .mx-xl-3 {\n    margin-left: 1rem !important;\n    margin-right: 1rem !important;\n  }\n\n  .mx-xl-4 {\n    margin-left: 1.5rem !important;\n    margin-right: 1.5rem !important;\n  }\n\n  .mx-xl-5 {\n    margin-left: 3rem !important;\n    margin-right: 3rem !important;\n  }\n\n  .mx-xl-auto {\n    margin-left: auto !important;\n    margin-right: auto !important;\n  }\n\n  .my-xl-0 {\n    margin-top: 0 !important;\n    margin-bottom: 0 !important;\n  }\n\n  .my-xl-1 {\n    margin-top: 0.25rem !important;\n    margin-bottom: 0.25rem !important;\n  }\n\n  .my-xl-2 {\n    margin-top: 0.5rem !important;\n    margin-bottom: 0.5rem !important;\n  }\n\n  .my-xl-3 {\n    margin-top: 1rem !important;\n    margin-bottom: 1rem !important;\n  }\n\n  .my-xl-4 {\n    margin-top: 1.5rem !important;\n    margin-bottom: 1.5rem !important;\n  }\n\n  .my-xl-5 {\n    margin-top: 3rem !important;\n    margin-bottom: 3rem !important;\n  }\n\n  .my-xl-auto {\n    margin-top: auto !important;\n    margin-bottom: auto !important;\n  }\n\n  .mt-xl-0 {\n    margin-top: 0 !important;\n  }\n\n  .mt-xl-1 {\n    margin-top: 0.25rem !important;\n  }\n\n  .mt-xl-2 {\n    margin-top: 0.5rem !important;\n  }\n\n  .mt-xl-3 {\n    margin-top: 1rem !important;\n  }\n\n  .mt-xl-4 {\n    margin-top: 1.5rem !important;\n  }\n\n  .mt-xl-5 {\n    margin-top: 3rem !important;\n  }\n\n  .mt-xl-auto {\n    margin-top: auto !important;\n  }\n\n  .me-xl-0 {\n    margin-left: 0 !important;\n  }\n\n  .me-xl-1 {\n    margin-left: 0.25rem !important;\n  }\n\n  .me-xl-2 {\n    margin-left: 0.5rem !important;\n  }\n\n  .me-xl-3 {\n    margin-left: 1rem !important;\n  }\n\n  .me-xl-4 {\n    margin-left: 1.5rem !important;\n  }\n\n  .me-xl-5 {\n    margin-left: 3rem !important;\n  }\n\n  .me-xl-auto {\n    margin-left: auto !important;\n  }\n\n  .mb-xl-0 {\n    margin-bottom: 0 !important;\n  }\n\n  .mb-xl-1 {\n    margin-bottom: 0.25rem !important;\n  }\n\n  .mb-xl-2 {\n    margin-bottom: 0.5rem !important;\n  }\n\n  .mb-xl-3 {\n    margin-bottom: 1rem !important;\n  }\n\n  .mb-xl-4 {\n    margin-bottom: 1.5rem !important;\n  }\n\n  .mb-xl-5 {\n    margin-bottom: 3rem !important;\n  }\n\n  .mb-xl-auto {\n    margin-bottom: auto !important;\n  }\n\n  .ms-xl-0 {\n    margin-right: 0 !important;\n  }\n\n  .ms-xl-1 {\n    margin-right: 0.25rem !important;\n  }\n\n  .ms-xl-2 {\n    margin-right: 0.5rem !important;\n  }\n\n  .ms-xl-3 {\n    margin-right: 1rem !important;\n  }\n\n  .ms-xl-4 {\n    margin-right: 1.5rem !important;\n  }\n\n  .ms-xl-5 {\n    margin-right: 3rem !important;\n  }\n\n  .ms-xl-auto {\n    margin-right: auto !important;\n  }\n\n  .p-xl-0 {\n    padding: 0 !important;\n  }\n\n  .p-xl-1 {\n    padding: 0.25rem !important;\n  }\n\n  .p-xl-2 {\n    padding: 0.5rem !important;\n  }\n\n  .p-xl-3 {\n    padding: 1rem !important;\n  }\n\n  .p-xl-4 {\n    padding: 1.5rem !important;\n  }\n\n  .p-xl-5 {\n    padding: 3rem !important;\n  }\n\n  .px-xl-0 {\n    padding-left: 0 !important;\n    padding-right: 0 !important;\n  }\n\n  .px-xl-1 {\n    padding-left: 0.25rem !important;\n    padding-right: 0.25rem !important;\n  }\n\n  .px-xl-2 {\n    padding-left: 0.5rem !important;\n    padding-right: 0.5rem !important;\n  }\n\n  .px-xl-3 {\n    padding-left: 1rem !important;\n    padding-right: 1rem !important;\n  }\n\n  .px-xl-4 {\n    padding-left: 1.5rem !important;\n    padding-right: 1.5rem !important;\n  }\n\n  .px-xl-5 {\n    padding-left: 3rem !important;\n    padding-right: 3rem !important;\n  }\n\n  .py-xl-0 {\n    padding-top: 0 !important;\n    padding-bottom: 0 !important;\n  }\n\n  .py-xl-1 {\n    padding-top: 0.25rem !important;\n    padding-bottom: 0.25rem !important;\n  }\n\n  .py-xl-2 {\n    padding-top: 0.5rem !important;\n    padding-bottom: 0.5rem !important;\n  }\n\n  .py-xl-3 {\n    padding-top: 1rem !important;\n    padding-bottom: 1rem !important;\n  }\n\n  .py-xl-4 {\n    padding-top: 1.5rem !important;\n    padding-bottom: 1.5rem !important;\n  }\n\n  .py-xl-5 {\n    padding-top: 3rem !important;\n    padding-bottom: 3rem !important;\n  }\n\n  .pt-xl-0 {\n    padding-top: 0 !important;\n  }\n\n  .pt-xl-1 {\n    padding-top: 0.25rem !important;\n  }\n\n  .pt-xl-2 {\n    padding-top: 0.5rem !important;\n  }\n\n  .pt-xl-3 {\n    padding-top: 1rem !important;\n  }\n\n  .pt-xl-4 {\n    padding-top: 1.5rem !important;\n  }\n\n  .pt-xl-5 {\n    padding-top: 3rem !important;\n  }\n\n  .pe-xl-0 {\n    padding-left: 0 !important;\n  }\n\n  .pe-xl-1 {\n    padding-left: 0.25rem !important;\n  }\n\n  .pe-xl-2 {\n    padding-left: 0.5rem !important;\n  }\n\n  .pe-xl-3 {\n    padding-left: 1rem !important;\n  }\n\n  .pe-xl-4 {\n    padding-left: 1.5rem !important;\n  }\n\n  .pe-xl-5 {\n    padding-left: 3rem !important;\n  }\n\n  .pb-xl-0 {\n    padding-bottom: 0 !important;\n  }\n\n  .pb-xl-1 {\n    padding-bottom: 0.25rem !important;\n  }\n\n  .pb-xl-2 {\n    padding-bottom: 0.5rem !important;\n  }\n\n  .pb-xl-3 {\n    padding-bottom: 1rem !important;\n  }\n\n  .pb-xl-4 {\n    padding-bottom: 1.5rem !important;\n  }\n\n  .pb-xl-5 {\n    padding-bottom: 3rem !important;\n  }\n\n  .ps-xl-0 {\n    padding-right: 0 !important;\n  }\n\n  .ps-xl-1 {\n    padding-right: 0.25rem !important;\n  }\n\n  .ps-xl-2 {\n    padding-right: 0.5rem !important;\n  }\n\n  .ps-xl-3 {\n    padding-right: 1rem !important;\n  }\n\n  .ps-xl-4 {\n    padding-right: 1.5rem !important;\n  }\n\n  .ps-xl-5 {\n    padding-right: 3rem !important;\n  }\n}\n@media (min-width: 1400px) {\n  .d-xxl-inline {\n    display: inline !important;\n  }\n\n  .d-xxl-inline-block {\n    display: inline-block !important;\n  }\n\n  .d-xxl-block {\n    display: block !important;\n  }\n\n  .d-xxl-grid {\n    display: grid !important;\n  }\n\n  .d-xxl-table {\n    display: table !important;\n  }\n\n  .d-xxl-table-row {\n    display: table-row !important;\n  }\n\n  .d-xxl-table-cell {\n    display: table-cell !important;\n  }\n\n  .d-xxl-flex {\n    display: flex !important;\n  }\n\n  .d-xxl-inline-flex {\n    display: inline-flex !important;\n  }\n\n  .d-xxl-none {\n    display: none !important;\n  }\n\n  .flex-xxl-fill {\n    flex: 1 1 auto !important;\n  }\n\n  .flex-xxl-row {\n    flex-direction: row !important;\n  }\n\n  .flex-xxl-column {\n    flex-direction: column !important;\n  }\n\n  .flex-xxl-row-reverse {\n    flex-direction: row-reverse !important;\n  }\n\n  .flex-xxl-column-reverse {\n    flex-direction: column-reverse !important;\n  }\n\n  .flex-xxl-grow-0 {\n    flex-grow: 0 !important;\n  }\n\n  .flex-xxl-grow-1 {\n    flex-grow: 1 !important;\n  }\n\n  .flex-xxl-shrink-0 {\n    flex-shrink: 0 !important;\n  }\n\n  .flex-xxl-shrink-1 {\n    flex-shrink: 1 !important;\n  }\n\n  .flex-xxl-wrap {\n    flex-wrap: wrap !important;\n  }\n\n  .flex-xxl-nowrap {\n    flex-wrap: nowrap !important;\n  }\n\n  .flex-xxl-wrap-reverse {\n    flex-wrap: wrap-reverse !important;\n  }\n\n  .justify-content-xxl-start {\n    justify-content: flex-start !important;\n  }\n\n  .justify-content-xxl-end {\n    justify-content: flex-end !important;\n  }\n\n  .justify-content-xxl-center {\n    justify-content: center !important;\n  }\n\n  .justify-content-xxl-between {\n    justify-content: space-between !important;\n  }\n\n  .justify-content-xxl-around {\n    justify-content: space-around !important;\n  }\n\n  .justify-content-xxl-evenly {\n    justify-content: space-evenly !important;\n  }\n\n  .align-items-xxl-start {\n    align-items: flex-start !important;\n  }\n\n  .align-items-xxl-end {\n    align-items: flex-end !important;\n  }\n\n  .align-items-xxl-center {\n    align-items: center !important;\n  }\n\n  .align-items-xxl-baseline {\n    align-items: baseline !important;\n  }\n\n  .align-items-xxl-stretch {\n    align-items: stretch !important;\n  }\n\n  .align-content-xxl-start {\n    align-content: flex-start !important;\n  }\n\n  .align-content-xxl-end {\n    align-content: flex-end !important;\n  }\n\n  .align-content-xxl-center {\n    align-content: center !important;\n  }\n\n  .align-content-xxl-between {\n    align-content: space-between !important;\n  }\n\n  .align-content-xxl-around {\n    align-content: space-around !important;\n  }\n\n  .align-content-xxl-stretch {\n    align-content: stretch !important;\n  }\n\n  .align-self-xxl-auto {\n    align-self: auto !important;\n  }\n\n  .align-self-xxl-start {\n    align-self: flex-start !important;\n  }\n\n  .align-self-xxl-end {\n    align-self: flex-end !important;\n  }\n\n  .align-self-xxl-center {\n    align-self: center !important;\n  }\n\n  .align-self-xxl-baseline {\n    align-self: baseline !important;\n  }\n\n  .align-self-xxl-stretch {\n    align-self: stretch !important;\n  }\n\n  .order-xxl-first {\n    order: -1 !important;\n  }\n\n  .order-xxl-0 {\n    order: 0 !important;\n  }\n\n  .order-xxl-1 {\n    order: 1 !important;\n  }\n\n  .order-xxl-2 {\n    order: 2 !important;\n  }\n\n  .order-xxl-3 {\n    order: 3 !important;\n  }\n\n  .order-xxl-4 {\n    order: 4 !important;\n  }\n\n  .order-xxl-5 {\n    order: 5 !important;\n  }\n\n  .order-xxl-last {\n    order: 6 !important;\n  }\n\n  .m-xxl-0 {\n    margin: 0 !important;\n  }\n\n  .m-xxl-1 {\n    margin: 0.25rem !important;\n  }\n\n  .m-xxl-2 {\n    margin: 0.5rem !important;\n  }\n\n  .m-xxl-3 {\n    margin: 1rem !important;\n  }\n\n  .m-xxl-4 {\n    margin: 1.5rem !important;\n  }\n\n  .m-xxl-5 {\n    margin: 3rem !important;\n  }\n\n  .m-xxl-auto {\n    margin: auto !important;\n  }\n\n  .mx-xxl-0 {\n    margin-left: 0 !important;\n    margin-right: 0 !important;\n  }\n\n  .mx-xxl-1 {\n    margin-left: 0.25rem !important;\n    margin-right: 0.25rem !important;\n  }\n\n  .mx-xxl-2 {\n    margin-left: 0.5rem !important;\n    margin-right: 0.5rem !important;\n  }\n\n  .mx-xxl-3 {\n    margin-left: 1rem !important;\n    margin-right: 1rem !important;\n  }\n\n  .mx-xxl-4 {\n    margin-left: 1.5rem !important;\n    margin-right: 1.5rem !important;\n  }\n\n  .mx-xxl-5 {\n    margin-left: 3rem !important;\n    margin-right: 3rem !important;\n  }\n\n  .mx-xxl-auto {\n    margin-left: auto !important;\n    margin-right: auto !important;\n  }\n\n  .my-xxl-0 {\n    margin-top: 0 !important;\n    margin-bottom: 0 !important;\n  }\n\n  .my-xxl-1 {\n    margin-top: 0.25rem !important;\n    margin-bottom: 0.25rem !important;\n  }\n\n  .my-xxl-2 {\n    margin-top: 0.5rem !important;\n    margin-bottom: 0.5rem !important;\n  }\n\n  .my-xxl-3 {\n    margin-top: 1rem !important;\n    margin-bottom: 1rem !important;\n  }\n\n  .my-xxl-4 {\n    margin-top: 1.5rem !important;\n    margin-bottom: 1.5rem !important;\n  }\n\n  .my-xxl-5 {\n    margin-top: 3rem !important;\n    margin-bottom: 3rem !important;\n  }\n\n  .my-xxl-auto {\n    margin-top: auto !important;\n    margin-bottom: auto !important;\n  }\n\n  .mt-xxl-0 {\n    margin-top: 0 !important;\n  }\n\n  .mt-xxl-1 {\n    margin-top: 0.25rem !important;\n  }\n\n  .mt-xxl-2 {\n    margin-top: 0.5rem !important;\n  }\n\n  .mt-xxl-3 {\n    margin-top: 1rem !important;\n  }\n\n  .mt-xxl-4 {\n    margin-top: 1.5rem !important;\n  }\n\n  .mt-xxl-5 {\n    margin-top: 3rem !important;\n  }\n\n  .mt-xxl-auto {\n    margin-top: auto !important;\n  }\n\n  .me-xxl-0 {\n    margin-left: 0 !important;\n  }\n\n  .me-xxl-1 {\n    margin-left: 0.25rem !important;\n  }\n\n  .me-xxl-2 {\n    margin-left: 0.5rem !important;\n  }\n\n  .me-xxl-3 {\n    margin-left: 1rem !important;\n  }\n\n  .me-xxl-4 {\n    margin-left: 1.5rem !important;\n  }\n\n  .me-xxl-5 {\n    margin-left: 3rem !important;\n  }\n\n  .me-xxl-auto {\n    margin-left: auto !important;\n  }\n\n  .mb-xxl-0 {\n    margin-bottom: 0 !important;\n  }\n\n  .mb-xxl-1 {\n    margin-bottom: 0.25rem !important;\n  }\n\n  .mb-xxl-2 {\n    margin-bottom: 0.5rem !important;\n  }\n\n  .mb-xxl-3 {\n    margin-bottom: 1rem !important;\n  }\n\n  .mb-xxl-4 {\n    margin-bottom: 1.5rem !important;\n  }\n\n  .mb-xxl-5 {\n    margin-bottom: 3rem !important;\n  }\n\n  .mb-xxl-auto {\n    margin-bottom: auto !important;\n  }\n\n  .ms-xxl-0 {\n    margin-right: 0 !important;\n  }\n\n  .ms-xxl-1 {\n    margin-right: 0.25rem !important;\n  }\n\n  .ms-xxl-2 {\n    margin-right: 0.5rem !important;\n  }\n\n  .ms-xxl-3 {\n    margin-right: 1rem !important;\n  }\n\n  .ms-xxl-4 {\n    margin-right: 1.5rem !important;\n  }\n\n  .ms-xxl-5 {\n    margin-right: 3rem !important;\n  }\n\n  .ms-xxl-auto {\n    margin-right: auto !important;\n  }\n\n  .p-xxl-0 {\n    padding: 0 !important;\n  }\n\n  .p-xxl-1 {\n    padding: 0.25rem !important;\n  }\n\n  .p-xxl-2 {\n    padding: 0.5rem !important;\n  }\n\n  .p-xxl-3 {\n    padding: 1rem !important;\n  }\n\n  .p-xxl-4 {\n    padding: 1.5rem !important;\n  }\n\n  .p-xxl-5 {\n    padding: 3rem !important;\n  }\n\n  .px-xxl-0 {\n    padding-left: 0 !important;\n    padding-right: 0 !important;\n  }\n\n  .px-xxl-1 {\n    padding-left: 0.25rem !important;\n    padding-right: 0.25rem !important;\n  }\n\n  .px-xxl-2 {\n    padding-left: 0.5rem !important;\n    padding-right: 0.5rem !important;\n  }\n\n  .px-xxl-3 {\n    padding-left: 1rem !important;\n    padding-right: 1rem !important;\n  }\n\n  .px-xxl-4 {\n    padding-left: 1.5rem !important;\n    padding-right: 1.5rem !important;\n  }\n\n  .px-xxl-5 {\n    padding-left: 3rem !important;\n    padding-right: 3rem !important;\n  }\n\n  .py-xxl-0 {\n    padding-top: 0 !important;\n    padding-bottom: 0 !important;\n  }\n\n  .py-xxl-1 {\n    padding-top: 0.25rem !important;\n    padding-bottom: 0.25rem !important;\n  }\n\n  .py-xxl-2 {\n    padding-top: 0.5rem !important;\n    padding-bottom: 0.5rem !important;\n  }\n\n  .py-xxl-3 {\n    padding-top: 1rem !important;\n    padding-bottom: 1rem !important;\n  }\n\n  .py-xxl-4 {\n    padding-top: 1.5rem !important;\n    padding-bottom: 1.5rem !important;\n  }\n\n  .py-xxl-5 {\n    padding-top: 3rem !important;\n    padding-bottom: 3rem !important;\n  }\n\n  .pt-xxl-0 {\n    padding-top: 0 !important;\n  }\n\n  .pt-xxl-1 {\n    padding-top: 0.25rem !important;\n  }\n\n  .pt-xxl-2 {\n    padding-top: 0.5rem !important;\n  }\n\n  .pt-xxl-3 {\n    padding-top: 1rem !important;\n  }\n\n  .pt-xxl-4 {\n    padding-top: 1.5rem !important;\n  }\n\n  .pt-xxl-5 {\n    padding-top: 3rem !important;\n  }\n\n  .pe-xxl-0 {\n    padding-left: 0 !important;\n  }\n\n  .pe-xxl-1 {\n    padding-left: 0.25rem !important;\n  }\n\n  .pe-xxl-2 {\n    padding-left: 0.5rem !important;\n  }\n\n  .pe-xxl-3 {\n    padding-left: 1rem !important;\n  }\n\n  .pe-xxl-4 {\n    padding-left: 1.5rem !important;\n  }\n\n  .pe-xxl-5 {\n    padding-left: 3rem !important;\n  }\n\n  .pb-xxl-0 {\n    padding-bottom: 0 !important;\n  }\n\n  .pb-xxl-1 {\n    padding-bottom: 0.25rem !important;\n  }\n\n  .pb-xxl-2 {\n    padding-bottom: 0.5rem !important;\n  }\n\n  .pb-xxl-3 {\n    padding-bottom: 1rem !important;\n  }\n\n  .pb-xxl-4 {\n    padding-bottom: 1.5rem !important;\n  }\n\n  .pb-xxl-5 {\n    padding-bottom: 3rem !important;\n  }\n\n  .ps-xxl-0 {\n    padding-right: 0 !important;\n  }\n\n  .ps-xxl-1 {\n    padding-right: 0.25rem !important;\n  }\n\n  .ps-xxl-2 {\n    padding-right: 0.5rem !important;\n  }\n\n  .ps-xxl-3 {\n    padding-right: 1rem !important;\n  }\n\n  .ps-xxl-4 {\n    padding-right: 1.5rem !important;\n  }\n\n  .ps-xxl-5 {\n    padding-right: 3rem !important;\n  }\n}\n@media print {\n  .d-print-inline {\n    display: inline !important;\n  }\n\n  .d-print-inline-block {\n    display: inline-block !important;\n  }\n\n  .d-print-block {\n    display: block !important;\n  }\n\n  .d-print-grid {\n    display: grid !important;\n  }\n\n  .d-print-table {\n    display: table !important;\n  }\n\n  .d-print-table-row {\n    display: table-row !important;\n  }\n\n  .d-print-table-cell {\n    display: table-cell !important;\n  }\n\n  .d-print-flex {\n    display: flex !important;\n  }\n\n  .d-print-inline-flex {\n    display: inline-flex !important;\n  }\n\n  .d-print-none {\n    display: none !important;\n  }\n}\n/*# sourceMappingURL=bootstrap-grid.rtl.css.map */"
  },
  {
    "path": "application/public/bootstrap/css/bootstrap-reboot.css",
    "content": "/*!\n * Bootstrap Reboot v5.1.3 (https://getbootstrap.com/)\n * Copyright 2011-2021 The Bootstrap Authors\n * Copyright 2011-2021 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * Forked from Normalize.css, licensed MIT (https://github.com/necolas/normalize.css/blob/master/LICENSE.md)\n */\n:root {\n  --bs-blue: #0d6efd;\n  --bs-indigo: #6610f2;\n  --bs-purple: #6f42c1;\n  --bs-pink: #d63384;\n  --bs-red: #dc3545;\n  --bs-orange: #fd7e14;\n  --bs-yellow: #ffc107;\n  --bs-green: #198754;\n  --bs-teal: #20c997;\n  --bs-cyan: #0dcaf0;\n  --bs-white: #fff;\n  --bs-gray: #6c757d;\n  --bs-gray-dark: #343a40;\n  --bs-gray-100: #f8f9fa;\n  --bs-gray-200: #e9ecef;\n  --bs-gray-300: #dee2e6;\n  --bs-gray-400: #ced4da;\n  --bs-gray-500: #adb5bd;\n  --bs-gray-600: #6c757d;\n  --bs-gray-700: #495057;\n  --bs-gray-800: #343a40;\n  --bs-gray-900: #212529;\n  --bs-primary: #0d6efd;\n  --bs-secondary: #6c757d;\n  --bs-success: #198754;\n  --bs-info: #0dcaf0;\n  --bs-warning: #ffc107;\n  --bs-danger: #dc3545;\n  --bs-light: #f8f9fa;\n  --bs-dark: #212529;\n  --bs-primary-rgb: 13, 110, 253;\n  --bs-secondary-rgb: 108, 117, 125;\n  --bs-success-rgb: 25, 135, 84;\n  --bs-info-rgb: 13, 202, 240;\n  --bs-warning-rgb: 255, 193, 7;\n  --bs-danger-rgb: 220, 53, 69;\n  --bs-light-rgb: 248, 249, 250;\n  --bs-dark-rgb: 33, 37, 41;\n  --bs-white-rgb: 255, 255, 255;\n  --bs-black-rgb: 0, 0, 0;\n  --bs-body-color-rgb: 33, 37, 41;\n  --bs-body-bg-rgb: 255, 255, 255;\n  --bs-font-sans-serif: system-ui, -apple-system, \"Segoe UI\", Roboto, \"Helvetica Neue\", Arial, \"Noto Sans\", \"Liberation Sans\", sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\", \"Noto Color Emoji\";\n  --bs-font-monospace: SFMono-Regular, Menlo, Monaco, Consolas, \"Liberation Mono\", \"Courier New\", monospace;\n  --bs-gradient: linear-gradient(180deg, rgba(255, 255, 255, 0.15), rgba(255, 255, 255, 0));\n  --bs-body-font-family: var(--bs-font-sans-serif);\n  --bs-body-font-size: 1rem;\n  --bs-body-font-weight: 400;\n  --bs-body-line-height: 1.5;\n  --bs-body-color: #212529;\n  --bs-body-bg: #fff;\n}\n\n*,\n*::before,\n*::after {\n  box-sizing: border-box;\n}\n\n@media (prefers-reduced-motion: no-preference) {\n  :root {\n    scroll-behavior: smooth;\n  }\n}\n\nbody {\n  margin: 0;\n  font-family: var(--bs-body-font-family);\n  font-size: var(--bs-body-font-size);\n  font-weight: var(--bs-body-font-weight);\n  line-height: var(--bs-body-line-height);\n  color: var(--bs-body-color);\n  text-align: var(--bs-body-text-align);\n  background-color: var(--bs-body-bg);\n  -webkit-text-size-adjust: 100%;\n  -webkit-tap-highlight-color: rgba(0, 0, 0, 0);\n}\n\nhr {\n  margin: 1rem 0;\n  color: inherit;\n  background-color: currentColor;\n  border: 0;\n  opacity: 0.25;\n}\n\nhr:not([size]) {\n  height: 1px;\n}\n\nh6, h5, h4, h3, h2, h1 {\n  margin-top: 0;\n  margin-bottom: 0.5rem;\n  font-weight: 500;\n  line-height: 1.2;\n}\n\nh1 {\n  font-size: calc(1.375rem + 1.5vw);\n}\n@media (min-width: 1200px) {\n  h1 {\n    font-size: 2.5rem;\n  }\n}\n\nh2 {\n  font-size: calc(1.325rem + 0.9vw);\n}\n@media (min-width: 1200px) {\n  h2 {\n    font-size: 2rem;\n  }\n}\n\nh3 {\n  font-size: calc(1.3rem + 0.6vw);\n}\n@media (min-width: 1200px) {\n  h3 {\n    font-size: 1.75rem;\n  }\n}\n\nh4 {\n  font-size: calc(1.275rem + 0.3vw);\n}\n@media (min-width: 1200px) {\n  h4 {\n    font-size: 1.5rem;\n  }\n}\n\nh5 {\n  font-size: 1.25rem;\n}\n\nh6 {\n  font-size: 1rem;\n}\n\np {\n  margin-top: 0;\n  margin-bottom: 1rem;\n}\n\nabbr[title],\nabbr[data-bs-original-title] {\n  -webkit-text-decoration: underline dotted;\n  text-decoration: underline dotted;\n  cursor: help;\n  -webkit-text-decoration-skip-ink: none;\n  text-decoration-skip-ink: none;\n}\n\naddress {\n  margin-bottom: 1rem;\n  font-style: normal;\n  line-height: inherit;\n}\n\nol,\nul {\n  padding-left: 2rem;\n}\n\nol,\nul,\ndl {\n  margin-top: 0;\n  margin-bottom: 1rem;\n}\n\nol ol,\nul ul,\nol ul,\nul ol {\n  margin-bottom: 0;\n}\n\ndt {\n  font-weight: 700;\n}\n\ndd {\n  margin-bottom: 0.5rem;\n  margin-left: 0;\n}\n\nblockquote {\n  margin: 0 0 1rem;\n}\n\nb,\nstrong {\n  font-weight: bolder;\n}\n\nsmall {\n  font-size: 0.875em;\n}\n\nmark {\n  padding: 0.2em;\n  background-color: #fcf8e3;\n}\n\nsub,\nsup {\n  position: relative;\n  font-size: 0.75em;\n  line-height: 0;\n  vertical-align: baseline;\n}\n\nsub {\n  bottom: -0.25em;\n}\n\nsup {\n  top: -0.5em;\n}\n\na {\n  color: #0d6efd;\n  text-decoration: underline;\n}\na:hover {\n  color: #0a58ca;\n}\n\na:not([href]):not([class]), a:not([href]):not([class]):hover {\n  color: inherit;\n  text-decoration: none;\n}\n\npre,\ncode,\nkbd,\nsamp {\n  font-family: var(--bs-font-monospace);\n  font-size: 1em;\n  direction: ltr /* rtl:ignore */;\n  unicode-bidi: bidi-override;\n}\n\npre {\n  display: block;\n  margin-top: 0;\n  margin-bottom: 1rem;\n  overflow: auto;\n  font-size: 0.875em;\n}\npre code {\n  font-size: inherit;\n  color: inherit;\n  word-break: normal;\n}\n\ncode {\n  font-size: 0.875em;\n  color: #d63384;\n  word-wrap: break-word;\n}\na > code {\n  color: inherit;\n}\n\nkbd {\n  padding: 0.2rem 0.4rem;\n  font-size: 0.875em;\n  color: #fff;\n  background-color: #212529;\n  border-radius: 0.2rem;\n}\nkbd kbd {\n  padding: 0;\n  font-size: 1em;\n  font-weight: 700;\n}\n\nfigure {\n  margin: 0 0 1rem;\n}\n\nimg,\nsvg {\n  vertical-align: middle;\n}\n\ntable {\n  caption-side: bottom;\n  border-collapse: collapse;\n}\n\ncaption {\n  padding-top: 0.5rem;\n  padding-bottom: 0.5rem;\n  color: #6c757d;\n  text-align: left;\n}\n\nth {\n  text-align: inherit;\n  text-align: -webkit-match-parent;\n}\n\nthead,\ntbody,\ntfoot,\ntr,\ntd,\nth {\n  border-color: inherit;\n  border-style: solid;\n  border-width: 0;\n}\n\nlabel {\n  display: inline-block;\n}\n\nbutton {\n  border-radius: 0;\n}\n\nbutton:focus:not(:focus-visible) {\n  outline: 0;\n}\n\ninput,\nbutton,\nselect,\noptgroup,\ntextarea {\n  margin: 0;\n  font-family: inherit;\n  font-size: inherit;\n  line-height: inherit;\n}\n\nbutton,\nselect {\n  text-transform: none;\n}\n\n[role=button] {\n  cursor: pointer;\n}\n\nselect {\n  word-wrap: normal;\n}\nselect:disabled {\n  opacity: 1;\n}\n\n[list]::-webkit-calendar-picker-indicator {\n  display: none;\n}\n\nbutton,\n[type=button],\n[type=reset],\n[type=submit] {\n  -webkit-appearance: button;\n}\nbutton:not(:disabled),\n[type=button]:not(:disabled),\n[type=reset]:not(:disabled),\n[type=submit]:not(:disabled) {\n  cursor: pointer;\n}\n\n::-moz-focus-inner {\n  padding: 0;\n  border-style: none;\n}\n\ntextarea {\n  resize: vertical;\n}\n\nfieldset {\n  min-width: 0;\n  padding: 0;\n  margin: 0;\n  border: 0;\n}\n\nlegend {\n  float: left;\n  width: 100%;\n  padding: 0;\n  margin-bottom: 0.5rem;\n  font-size: calc(1.275rem + 0.3vw);\n  line-height: inherit;\n}\n@media (min-width: 1200px) {\n  legend {\n    font-size: 1.5rem;\n  }\n}\nlegend + * {\n  clear: left;\n}\n\n::-webkit-datetime-edit-fields-wrapper,\n::-webkit-datetime-edit-text,\n::-webkit-datetime-edit-minute,\n::-webkit-datetime-edit-hour-field,\n::-webkit-datetime-edit-day-field,\n::-webkit-datetime-edit-month-field,\n::-webkit-datetime-edit-year-field {\n  padding: 0;\n}\n\n::-webkit-inner-spin-button {\n  height: auto;\n}\n\n[type=search] {\n  outline-offset: -2px;\n  -webkit-appearance: textfield;\n}\n\n/* rtl:raw:\n[type=\"tel\"],\n[type=\"url\"],\n[type=\"email\"],\n[type=\"number\"] {\n  direction: ltr;\n}\n*/\n::-webkit-search-decoration {\n  -webkit-appearance: none;\n}\n\n::-webkit-color-swatch-wrapper {\n  padding: 0;\n}\n\n::-webkit-file-upload-button {\n  font: inherit;\n}\n\n::file-selector-button {\n  font: inherit;\n}\n\n::-webkit-file-upload-button {\n  font: inherit;\n  -webkit-appearance: button;\n}\n\noutput {\n  display: inline-block;\n}\n\niframe {\n  border: 0;\n}\n\nsummary {\n  display: list-item;\n  cursor: pointer;\n}\n\nprogress {\n  vertical-align: baseline;\n}\n\n[hidden] {\n  display: none !important;\n}\n\n/*# sourceMappingURL=bootstrap-reboot.css.map */"
  },
  {
    "path": "application/public/bootstrap/css/bootstrap-reboot.rtl.css",
    "content": "/*!\n * Bootstrap Reboot v5.1.3 (https://getbootstrap.com/)\n * Copyright 2011-2021 The Bootstrap Authors\n * Copyright 2011-2021 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * Forked from Normalize.css, licensed MIT (https://github.com/necolas/normalize.css/blob/master/LICENSE.md)\n */\n:root {\n  --bs-blue: #0d6efd;\n  --bs-indigo: #6610f2;\n  --bs-purple: #6f42c1;\n  --bs-pink: #d63384;\n  --bs-red: #dc3545;\n  --bs-orange: #fd7e14;\n  --bs-yellow: #ffc107;\n  --bs-green: #198754;\n  --bs-teal: #20c997;\n  --bs-cyan: #0dcaf0;\n  --bs-white: #fff;\n  --bs-gray: #6c757d;\n  --bs-gray-dark: #343a40;\n  --bs-gray-100: #f8f9fa;\n  --bs-gray-200: #e9ecef;\n  --bs-gray-300: #dee2e6;\n  --bs-gray-400: #ced4da;\n  --bs-gray-500: #adb5bd;\n  --bs-gray-600: #6c757d;\n  --bs-gray-700: #495057;\n  --bs-gray-800: #343a40;\n  --bs-gray-900: #212529;\n  --bs-primary: #0d6efd;\n  --bs-secondary: #6c757d;\n  --bs-success: #198754;\n  --bs-info: #0dcaf0;\n  --bs-warning: #ffc107;\n  --bs-danger: #dc3545;\n  --bs-light: #f8f9fa;\n  --bs-dark: #212529;\n  --bs-primary-rgb: 13, 110, 253;\n  --bs-secondary-rgb: 108, 117, 125;\n  --bs-success-rgb: 25, 135, 84;\n  --bs-info-rgb: 13, 202, 240;\n  --bs-warning-rgb: 255, 193, 7;\n  --bs-danger-rgb: 220, 53, 69;\n  --bs-light-rgb: 248, 249, 250;\n  --bs-dark-rgb: 33, 37, 41;\n  --bs-white-rgb: 255, 255, 255;\n  --bs-black-rgb: 0, 0, 0;\n  --bs-body-color-rgb: 33, 37, 41;\n  --bs-body-bg-rgb: 255, 255, 255;\n  --bs-font-sans-serif: system-ui, -apple-system, \"Segoe UI\", Roboto, \"Helvetica Neue\", Arial, \"Noto Sans\", \"Liberation Sans\", sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\", \"Noto Color Emoji\";\n  --bs-font-monospace: SFMono-Regular, Menlo, Monaco, Consolas, \"Liberation Mono\", \"Courier New\", monospace;\n  --bs-gradient: linear-gradient(180deg, rgba(255, 255, 255, 0.15), rgba(255, 255, 255, 0));\n  --bs-body-font-family: var(--bs-font-sans-serif);\n  --bs-body-font-size: 1rem;\n  --bs-body-font-weight: 400;\n  --bs-body-line-height: 1.5;\n  --bs-body-color: #212529;\n  --bs-body-bg: #fff;\n}\n\n*,\n*::before,\n*::after {\n  box-sizing: border-box;\n}\n\n@media (prefers-reduced-motion: no-preference) {\n  :root {\n    scroll-behavior: smooth;\n  }\n}\n\nbody {\n  margin: 0;\n  font-family: var(--bs-body-font-family);\n  font-size: var(--bs-body-font-size);\n  font-weight: var(--bs-body-font-weight);\n  line-height: var(--bs-body-line-height);\n  color: var(--bs-body-color);\n  text-align: var(--bs-body-text-align);\n  background-color: var(--bs-body-bg);\n  -webkit-text-size-adjust: 100%;\n  -webkit-tap-highlight-color: rgba(0, 0, 0, 0);\n}\n\nhr {\n  margin: 1rem 0;\n  color: inherit;\n  background-color: currentColor;\n  border: 0;\n  opacity: 0.25;\n}\n\nhr:not([size]) {\n  height: 1px;\n}\n\nh6, h5, h4, h3, h2, h1 {\n  margin-top: 0;\n  margin-bottom: 0.5rem;\n  font-weight: 500;\n  line-height: 1.2;\n}\n\nh1 {\n  font-size: calc(1.375rem + 1.5vw);\n}\n@media (min-width: 1200px) {\n  h1 {\n    font-size: 2.5rem;\n  }\n}\n\nh2 {\n  font-size: calc(1.325rem + 0.9vw);\n}\n@media (min-width: 1200px) {\n  h2 {\n    font-size: 2rem;\n  }\n}\n\nh3 {\n  font-size: calc(1.3rem + 0.6vw);\n}\n@media (min-width: 1200px) {\n  h3 {\n    font-size: 1.75rem;\n  }\n}\n\nh4 {\n  font-size: calc(1.275rem + 0.3vw);\n}\n@media (min-width: 1200px) {\n  h4 {\n    font-size: 1.5rem;\n  }\n}\n\nh5 {\n  font-size: 1.25rem;\n}\n\nh6 {\n  font-size: 1rem;\n}\n\np {\n  margin-top: 0;\n  margin-bottom: 1rem;\n}\n\nabbr[title],\nabbr[data-bs-original-title] {\n  -webkit-text-decoration: underline dotted;\n  text-decoration: underline dotted;\n  cursor: help;\n  -webkit-text-decoration-skip-ink: none;\n  text-decoration-skip-ink: none;\n}\n\naddress {\n  margin-bottom: 1rem;\n  font-style: normal;\n  line-height: inherit;\n}\n\nol,\nul {\n  padding-right: 2rem;\n}\n\nol,\nul,\ndl {\n  margin-top: 0;\n  margin-bottom: 1rem;\n}\n\nol ol,\nul ul,\nol ul,\nul ol {\n  margin-bottom: 0;\n}\n\ndt {\n  font-weight: 700;\n}\n\ndd {\n  margin-bottom: 0.5rem;\n  margin-right: 0;\n}\n\nblockquote {\n  margin: 0 0 1rem;\n}\n\nb,\nstrong {\n  font-weight: bolder;\n}\n\nsmall {\n  font-size: 0.875em;\n}\n\nmark {\n  padding: 0.2em;\n  background-color: #fcf8e3;\n}\n\nsub,\nsup {\n  position: relative;\n  font-size: 0.75em;\n  line-height: 0;\n  vertical-align: baseline;\n}\n\nsub {\n  bottom: -0.25em;\n}\n\nsup {\n  top: -0.5em;\n}\n\na {\n  color: #0d6efd;\n  text-decoration: underline;\n}\na:hover {\n  color: #0a58ca;\n}\n\na:not([href]):not([class]), a:not([href]):not([class]):hover {\n  color: inherit;\n  text-decoration: none;\n}\n\npre,\ncode,\nkbd,\nsamp {\n  font-family: var(--bs-font-monospace);\n  font-size: 1em;\n  direction: ltr ;\n  unicode-bidi: bidi-override;\n}\n\npre {\n  display: block;\n  margin-top: 0;\n  margin-bottom: 1rem;\n  overflow: auto;\n  font-size: 0.875em;\n}\npre code {\n  font-size: inherit;\n  color: inherit;\n  word-break: normal;\n}\n\ncode {\n  font-size: 0.875em;\n  color: #d63384;\n  word-wrap: break-word;\n}\na > code {\n  color: inherit;\n}\n\nkbd {\n  padding: 0.2rem 0.4rem;\n  font-size: 0.875em;\n  color: #fff;\n  background-color: #212529;\n  border-radius: 0.2rem;\n}\nkbd kbd {\n  padding: 0;\n  font-size: 1em;\n  font-weight: 700;\n}\n\nfigure {\n  margin: 0 0 1rem;\n}\n\nimg,\nsvg {\n  vertical-align: middle;\n}\n\ntable {\n  caption-side: bottom;\n  border-collapse: collapse;\n}\n\ncaption {\n  padding-top: 0.5rem;\n  padding-bottom: 0.5rem;\n  color: #6c757d;\n  text-align: right;\n}\n\nth {\n  text-align: inherit;\n  text-align: -webkit-match-parent;\n}\n\nthead,\ntbody,\ntfoot,\ntr,\ntd,\nth {\n  border-color: inherit;\n  border-style: solid;\n  border-width: 0;\n}\n\nlabel {\n  display: inline-block;\n}\n\nbutton {\n  border-radius: 0;\n}\n\nbutton:focus:not(:focus-visible) {\n  outline: 0;\n}\n\ninput,\nbutton,\nselect,\noptgroup,\ntextarea {\n  margin: 0;\n  font-family: inherit;\n  font-size: inherit;\n  line-height: inherit;\n}\n\nbutton,\nselect {\n  text-transform: none;\n}\n\n[role=button] {\n  cursor: pointer;\n}\n\nselect {\n  word-wrap: normal;\n}\nselect:disabled {\n  opacity: 1;\n}\n\n[list]::-webkit-calendar-picker-indicator {\n  display: none;\n}\n\nbutton,\n[type=button],\n[type=reset],\n[type=submit] {\n  -webkit-appearance: button;\n}\nbutton:not(:disabled),\n[type=button]:not(:disabled),\n[type=reset]:not(:disabled),\n[type=submit]:not(:disabled) {\n  cursor: pointer;\n}\n\n::-moz-focus-inner {\n  padding: 0;\n  border-style: none;\n}\n\ntextarea {\n  resize: vertical;\n}\n\nfieldset {\n  min-width: 0;\n  padding: 0;\n  margin: 0;\n  border: 0;\n}\n\nlegend {\n  float: right;\n  width: 100%;\n  padding: 0;\n  margin-bottom: 0.5rem;\n  font-size: calc(1.275rem + 0.3vw);\n  line-height: inherit;\n}\n@media (min-width: 1200px) {\n  legend {\n    font-size: 1.5rem;\n  }\n}\nlegend + * {\n  clear: right;\n}\n\n::-webkit-datetime-edit-fields-wrapper,\n::-webkit-datetime-edit-text,\n::-webkit-datetime-edit-minute,\n::-webkit-datetime-edit-hour-field,\n::-webkit-datetime-edit-day-field,\n::-webkit-datetime-edit-month-field,\n::-webkit-datetime-edit-year-field {\n  padding: 0;\n}\n\n::-webkit-inner-spin-button {\n  height: auto;\n}\n\n[type=search] {\n  outline-offset: -2px;\n  -webkit-appearance: textfield;\n}\n\n[type=\"tel\"],\n[type=\"url\"],\n[type=\"email\"],\n[type=\"number\"] {\n  direction: ltr;\n}\n::-webkit-search-decoration {\n  -webkit-appearance: none;\n}\n\n::-webkit-color-swatch-wrapper {\n  padding: 0;\n}\n\n::-webkit-file-upload-button {\n  font: inherit;\n}\n\n::file-selector-button {\n  font: inherit;\n}\n\n::-webkit-file-upload-button {\n  font: inherit;\n  -webkit-appearance: button;\n}\n\noutput {\n  display: inline-block;\n}\n\niframe {\n  border: 0;\n}\n\nsummary {\n  display: list-item;\n  cursor: pointer;\n}\n\nprogress {\n  vertical-align: baseline;\n}\n\n[hidden] {\n  display: none !important;\n}\n/*# sourceMappingURL=bootstrap-reboot.rtl.css.map */"
  },
  {
    "path": "application/public/bootstrap/css/bootstrap-utilities.css",
    "content": "/*!\n * Bootstrap Utilities v5.1.3 (https://getbootstrap.com/)\n * Copyright 2011-2021 The Bootstrap Authors\n * Copyright 2011-2021 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n */\n.clearfix::after {\n  display: block;\n  clear: both;\n  content: \"\";\n}\n\n.link-primary {\n  color: #0d6efd;\n}\n.link-primary:hover, .link-primary:focus {\n  color: #0a58ca;\n}\n\n.link-secondary {\n  color: #6c757d;\n}\n.link-secondary:hover, .link-secondary:focus {\n  color: #565e64;\n}\n\n.link-success {\n  color: #198754;\n}\n.link-success:hover, .link-success:focus {\n  color: #146c43;\n}\n\n.link-info {\n  color: #0dcaf0;\n}\n.link-info:hover, .link-info:focus {\n  color: #3dd5f3;\n}\n\n.link-warning {\n  color: #ffc107;\n}\n.link-warning:hover, .link-warning:focus {\n  color: #ffcd39;\n}\n\n.link-danger {\n  color: #dc3545;\n}\n.link-danger:hover, .link-danger:focus {\n  color: #b02a37;\n}\n\n.link-light {\n  color: #f8f9fa;\n}\n.link-light:hover, .link-light:focus {\n  color: #f9fafb;\n}\n\n.link-dark {\n  color: #212529;\n}\n.link-dark:hover, .link-dark:focus {\n  color: #1a1e21;\n}\n\n.ratio {\n  position: relative;\n  width: 100%;\n}\n.ratio::before {\n  display: block;\n  padding-top: var(--bs-aspect-ratio);\n  content: \"\";\n}\n.ratio > * {\n  position: absolute;\n  top: 0;\n  left: 0;\n  width: 100%;\n  height: 100%;\n}\n\n.ratio-1x1 {\n  --bs-aspect-ratio: 100%;\n}\n\n.ratio-4x3 {\n  --bs-aspect-ratio: 75%;\n}\n\n.ratio-16x9 {\n  --bs-aspect-ratio: 56.25%;\n}\n\n.ratio-21x9 {\n  --bs-aspect-ratio: 42.8571428571%;\n}\n\n.fixed-top {\n  position: fixed;\n  top: 0;\n  right: 0;\n  left: 0;\n  z-index: 1030;\n}\n\n.fixed-bottom {\n  position: fixed;\n  right: 0;\n  bottom: 0;\n  left: 0;\n  z-index: 1030;\n}\n\n.sticky-top {\n  position: -webkit-sticky;\n  position: sticky;\n  top: 0;\n  z-index: 1020;\n}\n\n@media (min-width: 576px) {\n  .sticky-sm-top {\n    position: -webkit-sticky;\n    position: sticky;\n    top: 0;\n    z-index: 1020;\n  }\n}\n@media (min-width: 768px) {\n  .sticky-md-top {\n    position: -webkit-sticky;\n    position: sticky;\n    top: 0;\n    z-index: 1020;\n  }\n}\n@media (min-width: 992px) {\n  .sticky-lg-top {\n    position: -webkit-sticky;\n    position: sticky;\n    top: 0;\n    z-index: 1020;\n  }\n}\n@media (min-width: 1200px) {\n  .sticky-xl-top {\n    position: -webkit-sticky;\n    position: sticky;\n    top: 0;\n    z-index: 1020;\n  }\n}\n@media (min-width: 1400px) {\n  .sticky-xxl-top {\n    position: -webkit-sticky;\n    position: sticky;\n    top: 0;\n    z-index: 1020;\n  }\n}\n.hstack {\n  display: flex;\n  flex-direction: row;\n  align-items: center;\n  align-self: stretch;\n}\n\n.vstack {\n  display: flex;\n  flex: 1 1 auto;\n  flex-direction: column;\n  align-self: stretch;\n}\n\n.visually-hidden,\n.visually-hidden-focusable:not(:focus):not(:focus-within) {\n  position: absolute !important;\n  width: 1px !important;\n  height: 1px !important;\n  padding: 0 !important;\n  margin: -1px !important;\n  overflow: hidden !important;\n  clip: rect(0, 0, 0, 0) !important;\n  white-space: nowrap !important;\n  border: 0 !important;\n}\n\n.stretched-link::after {\n  position: absolute;\n  top: 0;\n  right: 0;\n  bottom: 0;\n  left: 0;\n  z-index: 1;\n  content: \"\";\n}\n\n.text-truncate {\n  overflow: hidden;\n  text-overflow: ellipsis;\n  white-space: nowrap;\n}\n\n.vr {\n  display: inline-block;\n  align-self: stretch;\n  width: 1px;\n  min-height: 1em;\n  background-color: currentColor;\n  opacity: 0.25;\n}\n\n.align-baseline {\n  vertical-align: baseline !important;\n}\n\n.align-top {\n  vertical-align: top !important;\n}\n\n.align-middle {\n  vertical-align: middle !important;\n}\n\n.align-bottom {\n  vertical-align: bottom !important;\n}\n\n.align-text-bottom {\n  vertical-align: text-bottom !important;\n}\n\n.align-text-top {\n  vertical-align: text-top !important;\n}\n\n.float-start {\n  float: left !important;\n}\n\n.float-end {\n  float: right !important;\n}\n\n.float-none {\n  float: none !important;\n}\n\n.opacity-0 {\n  opacity: 0 !important;\n}\n\n.opacity-25 {\n  opacity: 0.25 !important;\n}\n\n.opacity-50 {\n  opacity: 0.5 !important;\n}\n\n.opacity-75 {\n  opacity: 0.75 !important;\n}\n\n.opacity-100 {\n  opacity: 1 !important;\n}\n\n.overflow-auto {\n  overflow: auto !important;\n}\n\n.overflow-hidden {\n  overflow: hidden !important;\n}\n\n.overflow-visible {\n  overflow: visible !important;\n}\n\n.overflow-scroll {\n  overflow: scroll !important;\n}\n\n.d-inline {\n  display: inline !important;\n}\n\n.d-inline-block {\n  display: inline-block !important;\n}\n\n.d-block {\n  display: block !important;\n}\n\n.d-grid {\n  display: grid !important;\n}\n\n.d-table {\n  display: table !important;\n}\n\n.d-table-row {\n  display: table-row !important;\n}\n\n.d-table-cell {\n  display: table-cell !important;\n}\n\n.d-flex {\n  display: flex !important;\n}\n\n.d-inline-flex {\n  display: inline-flex !important;\n}\n\n.d-none {\n  display: none !important;\n}\n\n.shadow {\n  box-shadow: 0 0.5rem 1rem rgba(0, 0, 0, 0.15) !important;\n}\n\n.shadow-sm {\n  box-shadow: 0 0.125rem 0.25rem rgba(0, 0, 0, 0.075) !important;\n}\n\n.shadow-lg {\n  box-shadow: 0 1rem 3rem rgba(0, 0, 0, 0.175) !important;\n}\n\n.shadow-none {\n  box-shadow: none !important;\n}\n\n.position-static {\n  position: static !important;\n}\n\n.position-relative {\n  position: relative !important;\n}\n\n.position-absolute {\n  position: absolute !important;\n}\n\n.position-fixed {\n  position: fixed !important;\n}\n\n.position-sticky {\n  position: -webkit-sticky !important;\n  position: sticky !important;\n}\n\n.top-0 {\n  top: 0 !important;\n}\n\n.top-50 {\n  top: 50% !important;\n}\n\n.top-100 {\n  top: 100% !important;\n}\n\n.bottom-0 {\n  bottom: 0 !important;\n}\n\n.bottom-50 {\n  bottom: 50% !important;\n}\n\n.bottom-100 {\n  bottom: 100% !important;\n}\n\n.start-0 {\n  left: 0 !important;\n}\n\n.start-50 {\n  left: 50% !important;\n}\n\n.start-100 {\n  left: 100% !important;\n}\n\n.end-0 {\n  right: 0 !important;\n}\n\n.end-50 {\n  right: 50% !important;\n}\n\n.end-100 {\n  right: 100% !important;\n}\n\n.translate-middle {\n  transform: translate(-50%, -50%) !important;\n}\n\n.translate-middle-x {\n  transform: translateX(-50%) !important;\n}\n\n.translate-middle-y {\n  transform: translateY(-50%) !important;\n}\n\n.border {\n  border: 1px solid #dee2e6 !important;\n}\n\n.border-0 {\n  border: 0 !important;\n}\n\n.border-top {\n  border-top: 1px solid #dee2e6 !important;\n}\n\n.border-top-0 {\n  border-top: 0 !important;\n}\n\n.border-end {\n  border-right: 1px solid #dee2e6 !important;\n}\n\n.border-end-0 {\n  border-right: 0 !important;\n}\n\n.border-bottom {\n  border-bottom: 1px solid #dee2e6 !important;\n}\n\n.border-bottom-0 {\n  border-bottom: 0 !important;\n}\n\n.border-start {\n  border-left: 1px solid #dee2e6 !important;\n}\n\n.border-start-0 {\n  border-left: 0 !important;\n}\n\n.border-primary {\n  border-color: #0d6efd !important;\n}\n\n.border-secondary {\n  border-color: #6c757d !important;\n}\n\n.border-success {\n  border-color: #198754 !important;\n}\n\n.border-info {\n  border-color: #0dcaf0 !important;\n}\n\n.border-warning {\n  border-color: #ffc107 !important;\n}\n\n.border-danger {\n  border-color: #dc3545 !important;\n}\n\n.border-light {\n  border-color: #f8f9fa !important;\n}\n\n.border-dark {\n  border-color: #212529 !important;\n}\n\n.border-white {\n  border-color: #fff !important;\n}\n\n.border-1 {\n  border-width: 1px !important;\n}\n\n.border-2 {\n  border-width: 2px !important;\n}\n\n.border-3 {\n  border-width: 3px !important;\n}\n\n.border-4 {\n  border-width: 4px !important;\n}\n\n.border-5 {\n  border-width: 5px !important;\n}\n\n.w-25 {\n  width: 25% !important;\n}\n\n.w-50 {\n  width: 50% !important;\n}\n\n.w-75 {\n  width: 75% !important;\n}\n\n.w-100 {\n  width: 100% !important;\n}\n\n.w-auto {\n  width: auto !important;\n}\n\n.mw-100 {\n  max-width: 100% !important;\n}\n\n.vw-100 {\n  width: 100vw !important;\n}\n\n.min-vw-100 {\n  min-width: 100vw !important;\n}\n\n.h-25 {\n  height: 25% !important;\n}\n\n.h-50 {\n  height: 50% !important;\n}\n\n.h-75 {\n  height: 75% !important;\n}\n\n.h-100 {\n  height: 100% !important;\n}\n\n.h-auto {\n  height: auto !important;\n}\n\n.mh-100 {\n  max-height: 100% !important;\n}\n\n.vh-100 {\n  height: 100vh !important;\n}\n\n.min-vh-100 {\n  min-height: 100vh !important;\n}\n\n.flex-fill {\n  flex: 1 1 auto !important;\n}\n\n.flex-row {\n  flex-direction: row !important;\n}\n\n.flex-column {\n  flex-direction: column !important;\n}\n\n.flex-row-reverse {\n  flex-direction: row-reverse !important;\n}\n\n.flex-column-reverse {\n  flex-direction: column-reverse !important;\n}\n\n.flex-grow-0 {\n  flex-grow: 0 !important;\n}\n\n.flex-grow-1 {\n  flex-grow: 1 !important;\n}\n\n.flex-shrink-0 {\n  flex-shrink: 0 !important;\n}\n\n.flex-shrink-1 {\n  flex-shrink: 1 !important;\n}\n\n.flex-wrap {\n  flex-wrap: wrap !important;\n}\n\n.flex-nowrap {\n  flex-wrap: nowrap !important;\n}\n\n.flex-wrap-reverse {\n  flex-wrap: wrap-reverse !important;\n}\n\n.gap-0 {\n  gap: 0 !important;\n}\n\n.gap-1 {\n  gap: 0.25rem !important;\n}\n\n.gap-2 {\n  gap: 0.5rem !important;\n}\n\n.gap-3 {\n  gap: 1rem !important;\n}\n\n.gap-4 {\n  gap: 1.5rem !important;\n}\n\n.gap-5 {\n  gap: 3rem !important;\n}\n\n.justify-content-start {\n  justify-content: flex-start !important;\n}\n\n.justify-content-end {\n  justify-content: flex-end !important;\n}\n\n.justify-content-center {\n  justify-content: center !important;\n}\n\n.justify-content-between {\n  justify-content: space-between !important;\n}\n\n.justify-content-around {\n  justify-content: space-around !important;\n}\n\n.justify-content-evenly {\n  justify-content: space-evenly !important;\n}\n\n.align-items-start {\n  align-items: flex-start !important;\n}\n\n.align-items-end {\n  align-items: flex-end !important;\n}\n\n.align-items-center {\n  align-items: center !important;\n}\n\n.align-items-baseline {\n  align-items: baseline !important;\n}\n\n.align-items-stretch {\n  align-items: stretch !important;\n}\n\n.align-content-start {\n  align-content: flex-start !important;\n}\n\n.align-content-end {\n  align-content: flex-end !important;\n}\n\n.align-content-center {\n  align-content: center !important;\n}\n\n.align-content-between {\n  align-content: space-between !important;\n}\n\n.align-content-around {\n  align-content: space-around !important;\n}\n\n.align-content-stretch {\n  align-content: stretch !important;\n}\n\n.align-self-auto {\n  align-self: auto !important;\n}\n\n.align-self-start {\n  align-self: flex-start !important;\n}\n\n.align-self-end {\n  align-self: flex-end !important;\n}\n\n.align-self-center {\n  align-self: center !important;\n}\n\n.align-self-baseline {\n  align-self: baseline !important;\n}\n\n.align-self-stretch {\n  align-self: stretch !important;\n}\n\n.order-first {\n  order: -1 !important;\n}\n\n.order-0 {\n  order: 0 !important;\n}\n\n.order-1 {\n  order: 1 !important;\n}\n\n.order-2 {\n  order: 2 !important;\n}\n\n.order-3 {\n  order: 3 !important;\n}\n\n.order-4 {\n  order: 4 !important;\n}\n\n.order-5 {\n  order: 5 !important;\n}\n\n.order-last {\n  order: 6 !important;\n}\n\n.m-0 {\n  margin: 0 !important;\n}\n\n.m-1 {\n  margin: 0.25rem !important;\n}\n\n.m-2 {\n  margin: 0.5rem !important;\n}\n\n.m-3 {\n  margin: 1rem !important;\n}\n\n.m-4 {\n  margin: 1.5rem !important;\n}\n\n.m-5 {\n  margin: 3rem !important;\n}\n\n.m-auto {\n  margin: auto !important;\n}\n\n.mx-0 {\n  margin-right: 0 !important;\n  margin-left: 0 !important;\n}\n\n.mx-1 {\n  margin-right: 0.25rem !important;\n  margin-left: 0.25rem !important;\n}\n\n.mx-2 {\n  margin-right: 0.5rem !important;\n  margin-left: 0.5rem !important;\n}\n\n.mx-3 {\n  margin-right: 1rem !important;\n  margin-left: 1rem !important;\n}\n\n.mx-4 {\n  margin-right: 1.5rem !important;\n  margin-left: 1.5rem !important;\n}\n\n.mx-5 {\n  margin-right: 3rem !important;\n  margin-left: 3rem !important;\n}\n\n.mx-auto {\n  margin-right: auto !important;\n  margin-left: auto !important;\n}\n\n.my-0 {\n  margin-top: 0 !important;\n  margin-bottom: 0 !important;\n}\n\n.my-1 {\n  margin-top: 0.25rem !important;\n  margin-bottom: 0.25rem !important;\n}\n\n.my-2 {\n  margin-top: 0.5rem !important;\n  margin-bottom: 0.5rem !important;\n}\n\n.my-3 {\n  margin-top: 1rem !important;\n  margin-bottom: 1rem !important;\n}\n\n.my-4 {\n  margin-top: 1.5rem !important;\n  margin-bottom: 1.5rem !important;\n}\n\n.my-5 {\n  margin-top: 3rem !important;\n  margin-bottom: 3rem !important;\n}\n\n.my-auto {\n  margin-top: auto !important;\n  margin-bottom: auto !important;\n}\n\n.mt-0 {\n  margin-top: 0 !important;\n}\n\n.mt-1 {\n  margin-top: 0.25rem !important;\n}\n\n.mt-2 {\n  margin-top: 0.5rem !important;\n}\n\n.mt-3 {\n  margin-top: 1rem !important;\n}\n\n.mt-4 {\n  margin-top: 1.5rem !important;\n}\n\n.mt-5 {\n  margin-top: 3rem !important;\n}\n\n.mt-auto {\n  margin-top: auto !important;\n}\n\n.me-0 {\n  margin-right: 0 !important;\n}\n\n.me-1 {\n  margin-right: 0.25rem !important;\n}\n\n.me-2 {\n  margin-right: 0.5rem !important;\n}\n\n.me-3 {\n  margin-right: 1rem !important;\n}\n\n.me-4 {\n  margin-right: 1.5rem !important;\n}\n\n.me-5 {\n  margin-right: 3rem !important;\n}\n\n.me-auto {\n  margin-right: auto !important;\n}\n\n.mb-0 {\n  margin-bottom: 0 !important;\n}\n\n.mb-1 {\n  margin-bottom: 0.25rem !important;\n}\n\n.mb-2 {\n  margin-bottom: 0.5rem !important;\n}\n\n.mb-3 {\n  margin-bottom: 1rem !important;\n}\n\n.mb-4 {\n  margin-bottom: 1.5rem !important;\n}\n\n.mb-5 {\n  margin-bottom: 3rem !important;\n}\n\n.mb-auto {\n  margin-bottom: auto !important;\n}\n\n.ms-0 {\n  margin-left: 0 !important;\n}\n\n.ms-1 {\n  margin-left: 0.25rem !important;\n}\n\n.ms-2 {\n  margin-left: 0.5rem !important;\n}\n\n.ms-3 {\n  margin-left: 1rem !important;\n}\n\n.ms-4 {\n  margin-left: 1.5rem !important;\n}\n\n.ms-5 {\n  margin-left: 3rem !important;\n}\n\n.ms-auto {\n  margin-left: auto !important;\n}\n\n.p-0 {\n  padding: 0 !important;\n}\n\n.p-1 {\n  padding: 0.25rem !important;\n}\n\n.p-2 {\n  padding: 0.5rem !important;\n}\n\n.p-3 {\n  padding: 1rem !important;\n}\n\n.p-4 {\n  padding: 1.5rem !important;\n}\n\n.p-5 {\n  padding: 3rem !important;\n}\n\n.px-0 {\n  padding-right: 0 !important;\n  padding-left: 0 !important;\n}\n\n.px-1 {\n  padding-right: 0.25rem !important;\n  padding-left: 0.25rem !important;\n}\n\n.px-2 {\n  padding-right: 0.5rem !important;\n  padding-left: 0.5rem !important;\n}\n\n.px-3 {\n  padding-right: 1rem !important;\n  padding-left: 1rem !important;\n}\n\n.px-4 {\n  padding-right: 1.5rem !important;\n  padding-left: 1.5rem !important;\n}\n\n.px-5 {\n  padding-right: 3rem !important;\n  padding-left: 3rem !important;\n}\n\n.py-0 {\n  padding-top: 0 !important;\n  padding-bottom: 0 !important;\n}\n\n.py-1 {\n  padding-top: 0.25rem !important;\n  padding-bottom: 0.25rem !important;\n}\n\n.py-2 {\n  padding-top: 0.5rem !important;\n  padding-bottom: 0.5rem !important;\n}\n\n.py-3 {\n  padding-top: 1rem !important;\n  padding-bottom: 1rem !important;\n}\n\n.py-4 {\n  padding-top: 1.5rem !important;\n  padding-bottom: 1.5rem !important;\n}\n\n.py-5 {\n  padding-top: 3rem !important;\n  padding-bottom: 3rem !important;\n}\n\n.pt-0 {\n  padding-top: 0 !important;\n}\n\n.pt-1 {\n  padding-top: 0.25rem !important;\n}\n\n.pt-2 {\n  padding-top: 0.5rem !important;\n}\n\n.pt-3 {\n  padding-top: 1rem !important;\n}\n\n.pt-4 {\n  padding-top: 1.5rem !important;\n}\n\n.pt-5 {\n  padding-top: 3rem !important;\n}\n\n.pe-0 {\n  padding-right: 0 !important;\n}\n\n.pe-1 {\n  padding-right: 0.25rem !important;\n}\n\n.pe-2 {\n  padding-right: 0.5rem !important;\n}\n\n.pe-3 {\n  padding-right: 1rem !important;\n}\n\n.pe-4 {\n  padding-right: 1.5rem !important;\n}\n\n.pe-5 {\n  padding-right: 3rem !important;\n}\n\n.pb-0 {\n  padding-bottom: 0 !important;\n}\n\n.pb-1 {\n  padding-bottom: 0.25rem !important;\n}\n\n.pb-2 {\n  padding-bottom: 0.5rem !important;\n}\n\n.pb-3 {\n  padding-bottom: 1rem !important;\n}\n\n.pb-4 {\n  padding-bottom: 1.5rem !important;\n}\n\n.pb-5 {\n  padding-bottom: 3rem !important;\n}\n\n.ps-0 {\n  padding-left: 0 !important;\n}\n\n.ps-1 {\n  padding-left: 0.25rem !important;\n}\n\n.ps-2 {\n  padding-left: 0.5rem !important;\n}\n\n.ps-3 {\n  padding-left: 1rem !important;\n}\n\n.ps-4 {\n  padding-left: 1.5rem !important;\n}\n\n.ps-5 {\n  padding-left: 3rem !important;\n}\n\n.font-monospace {\n  font-family: var(--bs-font-monospace) !important;\n}\n\n.fs-1 {\n  font-size: calc(1.375rem + 1.5vw) !important;\n}\n\n.fs-2 {\n  font-size: calc(1.325rem + 0.9vw) !important;\n}\n\n.fs-3 {\n  font-size: calc(1.3rem + 0.6vw) !important;\n}\n\n.fs-4 {\n  font-size: calc(1.275rem + 0.3vw) !important;\n}\n\n.fs-5 {\n  font-size: 1.25rem !important;\n}\n\n.fs-6 {\n  font-size: 1rem !important;\n}\n\n.fst-italic {\n  font-style: italic !important;\n}\n\n.fst-normal {\n  font-style: normal !important;\n}\n\n.fw-light {\n  font-weight: 300 !important;\n}\n\n.fw-lighter {\n  font-weight: lighter !important;\n}\n\n.fw-normal {\n  font-weight: 400 !important;\n}\n\n.fw-bold {\n  font-weight: 700 !important;\n}\n\n.fw-bolder {\n  font-weight: bolder !important;\n}\n\n.lh-1 {\n  line-height: 1 !important;\n}\n\n.lh-sm {\n  line-height: 1.25 !important;\n}\n\n.lh-base {\n  line-height: 1.5 !important;\n}\n\n.lh-lg {\n  line-height: 2 !important;\n}\n\n.text-start {\n  text-align: left !important;\n}\n\n.text-end {\n  text-align: right !important;\n}\n\n.text-center {\n  text-align: center !important;\n}\n\n.text-decoration-none {\n  text-decoration: none !important;\n}\n\n.text-decoration-underline {\n  text-decoration: underline !important;\n}\n\n.text-decoration-line-through {\n  text-decoration: line-through !important;\n}\n\n.text-lowercase {\n  text-transform: lowercase !important;\n}\n\n.text-uppercase {\n  text-transform: uppercase !important;\n}\n\n.text-capitalize {\n  text-transform: capitalize !important;\n}\n\n.text-wrap {\n  white-space: normal !important;\n}\n\n.text-nowrap {\n  white-space: nowrap !important;\n}\n\n/* rtl:begin:remove */\n.text-break {\n  word-wrap: break-word !important;\n  word-break: break-word !important;\n}\n\n/* rtl:end:remove */\n.text-primary {\n  --bs-text-opacity: 1;\n  color: rgba(var(--bs-primary-rgb), var(--bs-text-opacity)) !important;\n}\n\n.text-secondary {\n  --bs-text-opacity: 1;\n  color: rgba(var(--bs-secondary-rgb), var(--bs-text-opacity)) !important;\n}\n\n.text-success {\n  --bs-text-opacity: 1;\n  color: rgba(var(--bs-success-rgb), var(--bs-text-opacity)) !important;\n}\n\n.text-info {\n  --bs-text-opacity: 1;\n  color: rgba(var(--bs-info-rgb), var(--bs-text-opacity)) !important;\n}\n\n.text-warning {\n  --bs-text-opacity: 1;\n  color: rgba(var(--bs-warning-rgb), var(--bs-text-opacity)) !important;\n}\n\n.text-danger {\n  --bs-text-opacity: 1;\n  color: rgba(var(--bs-danger-rgb), var(--bs-text-opacity)) !important;\n}\n\n.text-light {\n  --bs-text-opacity: 1;\n  color: rgba(var(--bs-light-rgb), var(--bs-text-opacity)) !important;\n}\n\n.text-dark {\n  --bs-text-opacity: 1;\n  color: rgba(var(--bs-dark-rgb), var(--bs-text-opacity)) !important;\n}\n\n.text-black {\n  --bs-text-opacity: 1;\n  color: rgba(var(--bs-black-rgb), var(--bs-text-opacity)) !important;\n}\n\n.text-white {\n  --bs-text-opacity: 1;\n  color: rgba(var(--bs-white-rgb), var(--bs-text-opacity)) !important;\n}\n\n.text-body {\n  --bs-text-opacity: 1;\n  color: rgba(var(--bs-body-color-rgb), var(--bs-text-opacity)) !important;\n}\n\n.text-muted {\n  --bs-text-opacity: 1;\n  color: #6c757d !important;\n}\n\n.text-black-50 {\n  --bs-text-opacity: 1;\n  color: rgba(0, 0, 0, 0.5) !important;\n}\n\n.text-white-50 {\n  --bs-text-opacity: 1;\n  color: rgba(255, 255, 255, 0.5) !important;\n}\n\n.text-reset {\n  --bs-text-opacity: 1;\n  color: inherit !important;\n}\n\n.text-opacity-25 {\n  --bs-text-opacity: 0.25;\n}\n\n.text-opacity-50 {\n  --bs-text-opacity: 0.5;\n}\n\n.text-opacity-75 {\n  --bs-text-opacity: 0.75;\n}\n\n.text-opacity-100 {\n  --bs-text-opacity: 1;\n}\n\n.bg-primary {\n  --bs-bg-opacity: 1;\n  background-color: rgba(var(--bs-primary-rgb), var(--bs-bg-opacity)) !important;\n}\n\n.bg-secondary {\n  --bs-bg-opacity: 1;\n  background-color: rgba(var(--bs-secondary-rgb), var(--bs-bg-opacity)) !important;\n}\n\n.bg-success {\n  --bs-bg-opacity: 1;\n  background-color: rgba(var(--bs-success-rgb), var(--bs-bg-opacity)) !important;\n}\n\n.bg-info {\n  --bs-bg-opacity: 1;\n  background-color: rgba(var(--bs-info-rgb), var(--bs-bg-opacity)) !important;\n}\n\n.bg-warning {\n  --bs-bg-opacity: 1;\n  background-color: rgba(var(--bs-warning-rgb), var(--bs-bg-opacity)) !important;\n}\n\n.bg-danger {\n  --bs-bg-opacity: 1;\n  background-color: rgba(var(--bs-danger-rgb), var(--bs-bg-opacity)) !important;\n}\n\n.bg-light {\n  --bs-bg-opacity: 1;\n  background-color: rgba(var(--bs-light-rgb), var(--bs-bg-opacity)) !important;\n}\n\n.bg-dark {\n  --bs-bg-opacity: 1;\n  background-color: rgba(var(--bs-dark-rgb), var(--bs-bg-opacity)) !important;\n}\n\n.bg-black {\n  --bs-bg-opacity: 1;\n  background-color: rgba(var(--bs-black-rgb), var(--bs-bg-opacity)) !important;\n}\n\n.bg-white {\n  --bs-bg-opacity: 1;\n  background-color: rgba(var(--bs-white-rgb), var(--bs-bg-opacity)) !important;\n}\n\n.bg-body {\n  --bs-bg-opacity: 1;\n  background-color: rgba(var(--bs-body-bg-rgb), var(--bs-bg-opacity)) !important;\n}\n\n.bg-transparent {\n  --bs-bg-opacity: 1;\n  background-color: transparent !important;\n}\n\n.bg-opacity-10 {\n  --bs-bg-opacity: 0.1;\n}\n\n.bg-opacity-25 {\n  --bs-bg-opacity: 0.25;\n}\n\n.bg-opacity-50 {\n  --bs-bg-opacity: 0.5;\n}\n\n.bg-opacity-75 {\n  --bs-bg-opacity: 0.75;\n}\n\n.bg-opacity-100 {\n  --bs-bg-opacity: 1;\n}\n\n.bg-gradient {\n  background-image: var(--bs-gradient) !important;\n}\n\n.user-select-all {\n  -webkit-user-select: all !important;\n  -moz-user-select: all !important;\n  user-select: all !important;\n}\n\n.user-select-auto {\n  -webkit-user-select: auto !important;\n  -moz-user-select: auto !important;\n  user-select: auto !important;\n}\n\n.user-select-none {\n  -webkit-user-select: none !important;\n  -moz-user-select: none !important;\n  user-select: none !important;\n}\n\n.pe-none {\n  pointer-events: none !important;\n}\n\n.pe-auto {\n  pointer-events: auto !important;\n}\n\n.rounded {\n  border-radius: 0.25rem !important;\n}\n\n.rounded-0 {\n  border-radius: 0 !important;\n}\n\n.rounded-1 {\n  border-radius: 0.2rem !important;\n}\n\n.rounded-2 {\n  border-radius: 0.25rem !important;\n}\n\n.rounded-3 {\n  border-radius: 0.3rem !important;\n}\n\n.rounded-circle {\n  border-radius: 50% !important;\n}\n\n.rounded-pill {\n  border-radius: 50rem !important;\n}\n\n.rounded-top {\n  border-top-left-radius: 0.25rem !important;\n  border-top-right-radius: 0.25rem !important;\n}\n\n.rounded-end {\n  border-top-right-radius: 0.25rem !important;\n  border-bottom-right-radius: 0.25rem !important;\n}\n\n.rounded-bottom {\n  border-bottom-right-radius: 0.25rem !important;\n  border-bottom-left-radius: 0.25rem !important;\n}\n\n.rounded-start {\n  border-bottom-left-radius: 0.25rem !important;\n  border-top-left-radius: 0.25rem !important;\n}\n\n.visible {\n  visibility: visible !important;\n}\n\n.invisible {\n  visibility: hidden !important;\n}\n\n@media (min-width: 576px) {\n  .float-sm-start {\n    float: left !important;\n  }\n\n  .float-sm-end {\n    float: right !important;\n  }\n\n  .float-sm-none {\n    float: none !important;\n  }\n\n  .d-sm-inline {\n    display: inline !important;\n  }\n\n  .d-sm-inline-block {\n    display: inline-block !important;\n  }\n\n  .d-sm-block {\n    display: block !important;\n  }\n\n  .d-sm-grid {\n    display: grid !important;\n  }\n\n  .d-sm-table {\n    display: table !important;\n  }\n\n  .d-sm-table-row {\n    display: table-row !important;\n  }\n\n  .d-sm-table-cell {\n    display: table-cell !important;\n  }\n\n  .d-sm-flex {\n    display: flex !important;\n  }\n\n  .d-sm-inline-flex {\n    display: inline-flex !important;\n  }\n\n  .d-sm-none {\n    display: none !important;\n  }\n\n  .flex-sm-fill {\n    flex: 1 1 auto !important;\n  }\n\n  .flex-sm-row {\n    flex-direction: row !important;\n  }\n\n  .flex-sm-column {\n    flex-direction: column !important;\n  }\n\n  .flex-sm-row-reverse {\n    flex-direction: row-reverse !important;\n  }\n\n  .flex-sm-column-reverse {\n    flex-direction: column-reverse !important;\n  }\n\n  .flex-sm-grow-0 {\n    flex-grow: 0 !important;\n  }\n\n  .flex-sm-grow-1 {\n    flex-grow: 1 !important;\n  }\n\n  .flex-sm-shrink-0 {\n    flex-shrink: 0 !important;\n  }\n\n  .flex-sm-shrink-1 {\n    flex-shrink: 1 !important;\n  }\n\n  .flex-sm-wrap {\n    flex-wrap: wrap !important;\n  }\n\n  .flex-sm-nowrap {\n    flex-wrap: nowrap !important;\n  }\n\n  .flex-sm-wrap-reverse {\n    flex-wrap: wrap-reverse !important;\n  }\n\n  .gap-sm-0 {\n    gap: 0 !important;\n  }\n\n  .gap-sm-1 {\n    gap: 0.25rem !important;\n  }\n\n  .gap-sm-2 {\n    gap: 0.5rem !important;\n  }\n\n  .gap-sm-3 {\n    gap: 1rem !important;\n  }\n\n  .gap-sm-4 {\n    gap: 1.5rem !important;\n  }\n\n  .gap-sm-5 {\n    gap: 3rem !important;\n  }\n\n  .justify-content-sm-start {\n    justify-content: flex-start !important;\n  }\n\n  .justify-content-sm-end {\n    justify-content: flex-end !important;\n  }\n\n  .justify-content-sm-center {\n    justify-content: center !important;\n  }\n\n  .justify-content-sm-between {\n    justify-content: space-between !important;\n  }\n\n  .justify-content-sm-around {\n    justify-content: space-around !important;\n  }\n\n  .justify-content-sm-evenly {\n    justify-content: space-evenly !important;\n  }\n\n  .align-items-sm-start {\n    align-items: flex-start !important;\n  }\n\n  .align-items-sm-end {\n    align-items: flex-end !important;\n  }\n\n  .align-items-sm-center {\n    align-items: center !important;\n  }\n\n  .align-items-sm-baseline {\n    align-items: baseline !important;\n  }\n\n  .align-items-sm-stretch {\n    align-items: stretch !important;\n  }\n\n  .align-content-sm-start {\n    align-content: flex-start !important;\n  }\n\n  .align-content-sm-end {\n    align-content: flex-end !important;\n  }\n\n  .align-content-sm-center {\n    align-content: center !important;\n  }\n\n  .align-content-sm-between {\n    align-content: space-between !important;\n  }\n\n  .align-content-sm-around {\n    align-content: space-around !important;\n  }\n\n  .align-content-sm-stretch {\n    align-content: stretch !important;\n  }\n\n  .align-self-sm-auto {\n    align-self: auto !important;\n  }\n\n  .align-self-sm-start {\n    align-self: flex-start !important;\n  }\n\n  .align-self-sm-end {\n    align-self: flex-end !important;\n  }\n\n  .align-self-sm-center {\n    align-self: center !important;\n  }\n\n  .align-self-sm-baseline {\n    align-self: baseline !important;\n  }\n\n  .align-self-sm-stretch {\n    align-self: stretch !important;\n  }\n\n  .order-sm-first {\n    order: -1 !important;\n  }\n\n  .order-sm-0 {\n    order: 0 !important;\n  }\n\n  .order-sm-1 {\n    order: 1 !important;\n  }\n\n  .order-sm-2 {\n    order: 2 !important;\n  }\n\n  .order-sm-3 {\n    order: 3 !important;\n  }\n\n  .order-sm-4 {\n    order: 4 !important;\n  }\n\n  .order-sm-5 {\n    order: 5 !important;\n  }\n\n  .order-sm-last {\n    order: 6 !important;\n  }\n\n  .m-sm-0 {\n    margin: 0 !important;\n  }\n\n  .m-sm-1 {\n    margin: 0.25rem !important;\n  }\n\n  .m-sm-2 {\n    margin: 0.5rem !important;\n  }\n\n  .m-sm-3 {\n    margin: 1rem !important;\n  }\n\n  .m-sm-4 {\n    margin: 1.5rem !important;\n  }\n\n  .m-sm-5 {\n    margin: 3rem !important;\n  }\n\n  .m-sm-auto {\n    margin: auto !important;\n  }\n\n  .mx-sm-0 {\n    margin-right: 0 !important;\n    margin-left: 0 !important;\n  }\n\n  .mx-sm-1 {\n    margin-right: 0.25rem !important;\n    margin-left: 0.25rem !important;\n  }\n\n  .mx-sm-2 {\n    margin-right: 0.5rem !important;\n    margin-left: 0.5rem !important;\n  }\n\n  .mx-sm-3 {\n    margin-right: 1rem !important;\n    margin-left: 1rem !important;\n  }\n\n  .mx-sm-4 {\n    margin-right: 1.5rem !important;\n    margin-left: 1.5rem !important;\n  }\n\n  .mx-sm-5 {\n    margin-right: 3rem !important;\n    margin-left: 3rem !important;\n  }\n\n  .mx-sm-auto {\n    margin-right: auto !important;\n    margin-left: auto !important;\n  }\n\n  .my-sm-0 {\n    margin-top: 0 !important;\n    margin-bottom: 0 !important;\n  }\n\n  .my-sm-1 {\n    margin-top: 0.25rem !important;\n    margin-bottom: 0.25rem !important;\n  }\n\n  .my-sm-2 {\n    margin-top: 0.5rem !important;\n    margin-bottom: 0.5rem !important;\n  }\n\n  .my-sm-3 {\n    margin-top: 1rem !important;\n    margin-bottom: 1rem !important;\n  }\n\n  .my-sm-4 {\n    margin-top: 1.5rem !important;\n    margin-bottom: 1.5rem !important;\n  }\n\n  .my-sm-5 {\n    margin-top: 3rem !important;\n    margin-bottom: 3rem !important;\n  }\n\n  .my-sm-auto {\n    margin-top: auto !important;\n    margin-bottom: auto !important;\n  }\n\n  .mt-sm-0 {\n    margin-top: 0 !important;\n  }\n\n  .mt-sm-1 {\n    margin-top: 0.25rem !important;\n  }\n\n  .mt-sm-2 {\n    margin-top: 0.5rem !important;\n  }\n\n  .mt-sm-3 {\n    margin-top: 1rem !important;\n  }\n\n  .mt-sm-4 {\n    margin-top: 1.5rem !important;\n  }\n\n  .mt-sm-5 {\n    margin-top: 3rem !important;\n  }\n\n  .mt-sm-auto {\n    margin-top: auto !important;\n  }\n\n  .me-sm-0 {\n    margin-right: 0 !important;\n  }\n\n  .me-sm-1 {\n    margin-right: 0.25rem !important;\n  }\n\n  .me-sm-2 {\n    margin-right: 0.5rem !important;\n  }\n\n  .me-sm-3 {\n    margin-right: 1rem !important;\n  }\n\n  .me-sm-4 {\n    margin-right: 1.5rem !important;\n  }\n\n  .me-sm-5 {\n    margin-right: 3rem !important;\n  }\n\n  .me-sm-auto {\n    margin-right: auto !important;\n  }\n\n  .mb-sm-0 {\n    margin-bottom: 0 !important;\n  }\n\n  .mb-sm-1 {\n    margin-bottom: 0.25rem !important;\n  }\n\n  .mb-sm-2 {\n    margin-bottom: 0.5rem !important;\n  }\n\n  .mb-sm-3 {\n    margin-bottom: 1rem !important;\n  }\n\n  .mb-sm-4 {\n    margin-bottom: 1.5rem !important;\n  }\n\n  .mb-sm-5 {\n    margin-bottom: 3rem !important;\n  }\n\n  .mb-sm-auto {\n    margin-bottom: auto !important;\n  }\n\n  .ms-sm-0 {\n    margin-left: 0 !important;\n  }\n\n  .ms-sm-1 {\n    margin-left: 0.25rem !important;\n  }\n\n  .ms-sm-2 {\n    margin-left: 0.5rem !important;\n  }\n\n  .ms-sm-3 {\n    margin-left: 1rem !important;\n  }\n\n  .ms-sm-4 {\n    margin-left: 1.5rem !important;\n  }\n\n  .ms-sm-5 {\n    margin-left: 3rem !important;\n  }\n\n  .ms-sm-auto {\n    margin-left: auto !important;\n  }\n\n  .p-sm-0 {\n    padding: 0 !important;\n  }\n\n  .p-sm-1 {\n    padding: 0.25rem !important;\n  }\n\n  .p-sm-2 {\n    padding: 0.5rem !important;\n  }\n\n  .p-sm-3 {\n    padding: 1rem !important;\n  }\n\n  .p-sm-4 {\n    padding: 1.5rem !important;\n  }\n\n  .p-sm-5 {\n    padding: 3rem !important;\n  }\n\n  .px-sm-0 {\n    padding-right: 0 !important;\n    padding-left: 0 !important;\n  }\n\n  .px-sm-1 {\n    padding-right: 0.25rem !important;\n    padding-left: 0.25rem !important;\n  }\n\n  .px-sm-2 {\n    padding-right: 0.5rem !important;\n    padding-left: 0.5rem !important;\n  }\n\n  .px-sm-3 {\n    padding-right: 1rem !important;\n    padding-left: 1rem !important;\n  }\n\n  .px-sm-4 {\n    padding-right: 1.5rem !important;\n    padding-left: 1.5rem !important;\n  }\n\n  .px-sm-5 {\n    padding-right: 3rem !important;\n    padding-left: 3rem !important;\n  }\n\n  .py-sm-0 {\n    padding-top: 0 !important;\n    padding-bottom: 0 !important;\n  }\n\n  .py-sm-1 {\n    padding-top: 0.25rem !important;\n    padding-bottom: 0.25rem !important;\n  }\n\n  .py-sm-2 {\n    padding-top: 0.5rem !important;\n    padding-bottom: 0.5rem !important;\n  }\n\n  .py-sm-3 {\n    padding-top: 1rem !important;\n    padding-bottom: 1rem !important;\n  }\n\n  .py-sm-4 {\n    padding-top: 1.5rem !important;\n    padding-bottom: 1.5rem !important;\n  }\n\n  .py-sm-5 {\n    padding-top: 3rem !important;\n    padding-bottom: 3rem !important;\n  }\n\n  .pt-sm-0 {\n    padding-top: 0 !important;\n  }\n\n  .pt-sm-1 {\n    padding-top: 0.25rem !important;\n  }\n\n  .pt-sm-2 {\n    padding-top: 0.5rem !important;\n  }\n\n  .pt-sm-3 {\n    padding-top: 1rem !important;\n  }\n\n  .pt-sm-4 {\n    padding-top: 1.5rem !important;\n  }\n\n  .pt-sm-5 {\n    padding-top: 3rem !important;\n  }\n\n  .pe-sm-0 {\n    padding-right: 0 !important;\n  }\n\n  .pe-sm-1 {\n    padding-right: 0.25rem !important;\n  }\n\n  .pe-sm-2 {\n    padding-right: 0.5rem !important;\n  }\n\n  .pe-sm-3 {\n    padding-right: 1rem !important;\n  }\n\n  .pe-sm-4 {\n    padding-right: 1.5rem !important;\n  }\n\n  .pe-sm-5 {\n    padding-right: 3rem !important;\n  }\n\n  .pb-sm-0 {\n    padding-bottom: 0 !important;\n  }\n\n  .pb-sm-1 {\n    padding-bottom: 0.25rem !important;\n  }\n\n  .pb-sm-2 {\n    padding-bottom: 0.5rem !important;\n  }\n\n  .pb-sm-3 {\n    padding-bottom: 1rem !important;\n  }\n\n  .pb-sm-4 {\n    padding-bottom: 1.5rem !important;\n  }\n\n  .pb-sm-5 {\n    padding-bottom: 3rem !important;\n  }\n\n  .ps-sm-0 {\n    padding-left: 0 !important;\n  }\n\n  .ps-sm-1 {\n    padding-left: 0.25rem !important;\n  }\n\n  .ps-sm-2 {\n    padding-left: 0.5rem !important;\n  }\n\n  .ps-sm-3 {\n    padding-left: 1rem !important;\n  }\n\n  .ps-sm-4 {\n    padding-left: 1.5rem !important;\n  }\n\n  .ps-sm-5 {\n    padding-left: 3rem !important;\n  }\n\n  .text-sm-start {\n    text-align: left !important;\n  }\n\n  .text-sm-end {\n    text-align: right !important;\n  }\n\n  .text-sm-center {\n    text-align: center !important;\n  }\n}\n@media (min-width: 768px) {\n  .float-md-start {\n    float: left !important;\n  }\n\n  .float-md-end {\n    float: right !important;\n  }\n\n  .float-md-none {\n    float: none !important;\n  }\n\n  .d-md-inline {\n    display: inline !important;\n  }\n\n  .d-md-inline-block {\n    display: inline-block !important;\n  }\n\n  .d-md-block {\n    display: block !important;\n  }\n\n  .d-md-grid {\n    display: grid !important;\n  }\n\n  .d-md-table {\n    display: table !important;\n  }\n\n  .d-md-table-row {\n    display: table-row !important;\n  }\n\n  .d-md-table-cell {\n    display: table-cell !important;\n  }\n\n  .d-md-flex {\n    display: flex !important;\n  }\n\n  .d-md-inline-flex {\n    display: inline-flex !important;\n  }\n\n  .d-md-none {\n    display: none !important;\n  }\n\n  .flex-md-fill {\n    flex: 1 1 auto !important;\n  }\n\n  .flex-md-row {\n    flex-direction: row !important;\n  }\n\n  .flex-md-column {\n    flex-direction: column !important;\n  }\n\n  .flex-md-row-reverse {\n    flex-direction: row-reverse !important;\n  }\n\n  .flex-md-column-reverse {\n    flex-direction: column-reverse !important;\n  }\n\n  .flex-md-grow-0 {\n    flex-grow: 0 !important;\n  }\n\n  .flex-md-grow-1 {\n    flex-grow: 1 !important;\n  }\n\n  .flex-md-shrink-0 {\n    flex-shrink: 0 !important;\n  }\n\n  .flex-md-shrink-1 {\n    flex-shrink: 1 !important;\n  }\n\n  .flex-md-wrap {\n    flex-wrap: wrap !important;\n  }\n\n  .flex-md-nowrap {\n    flex-wrap: nowrap !important;\n  }\n\n  .flex-md-wrap-reverse {\n    flex-wrap: wrap-reverse !important;\n  }\n\n  .gap-md-0 {\n    gap: 0 !important;\n  }\n\n  .gap-md-1 {\n    gap: 0.25rem !important;\n  }\n\n  .gap-md-2 {\n    gap: 0.5rem !important;\n  }\n\n  .gap-md-3 {\n    gap: 1rem !important;\n  }\n\n  .gap-md-4 {\n    gap: 1.5rem !important;\n  }\n\n  .gap-md-5 {\n    gap: 3rem !important;\n  }\n\n  .justify-content-md-start {\n    justify-content: flex-start !important;\n  }\n\n  .justify-content-md-end {\n    justify-content: flex-end !important;\n  }\n\n  .justify-content-md-center {\n    justify-content: center !important;\n  }\n\n  .justify-content-md-between {\n    justify-content: space-between !important;\n  }\n\n  .justify-content-md-around {\n    justify-content: space-around !important;\n  }\n\n  .justify-content-md-evenly {\n    justify-content: space-evenly !important;\n  }\n\n  .align-items-md-start {\n    align-items: flex-start !important;\n  }\n\n  .align-items-md-end {\n    align-items: flex-end !important;\n  }\n\n  .align-items-md-center {\n    align-items: center !important;\n  }\n\n  .align-items-md-baseline {\n    align-items: baseline !important;\n  }\n\n  .align-items-md-stretch {\n    align-items: stretch !important;\n  }\n\n  .align-content-md-start {\n    align-content: flex-start !important;\n  }\n\n  .align-content-md-end {\n    align-content: flex-end !important;\n  }\n\n  .align-content-md-center {\n    align-content: center !important;\n  }\n\n  .align-content-md-between {\n    align-content: space-between !important;\n  }\n\n  .align-content-md-around {\n    align-content: space-around !important;\n  }\n\n  .align-content-md-stretch {\n    align-content: stretch !important;\n  }\n\n  .align-self-md-auto {\n    align-self: auto !important;\n  }\n\n  .align-self-md-start {\n    align-self: flex-start !important;\n  }\n\n  .align-self-md-end {\n    align-self: flex-end !important;\n  }\n\n  .align-self-md-center {\n    align-self: center !important;\n  }\n\n  .align-self-md-baseline {\n    align-self: baseline !important;\n  }\n\n  .align-self-md-stretch {\n    align-self: stretch !important;\n  }\n\n  .order-md-first {\n    order: -1 !important;\n  }\n\n  .order-md-0 {\n    order: 0 !important;\n  }\n\n  .order-md-1 {\n    order: 1 !important;\n  }\n\n  .order-md-2 {\n    order: 2 !important;\n  }\n\n  .order-md-3 {\n    order: 3 !important;\n  }\n\n  .order-md-4 {\n    order: 4 !important;\n  }\n\n  .order-md-5 {\n    order: 5 !important;\n  }\n\n  .order-md-last {\n    order: 6 !important;\n  }\n\n  .m-md-0 {\n    margin: 0 !important;\n  }\n\n  .m-md-1 {\n    margin: 0.25rem !important;\n  }\n\n  .m-md-2 {\n    margin: 0.5rem !important;\n  }\n\n  .m-md-3 {\n    margin: 1rem !important;\n  }\n\n  .m-md-4 {\n    margin: 1.5rem !important;\n  }\n\n  .m-md-5 {\n    margin: 3rem !important;\n  }\n\n  .m-md-auto {\n    margin: auto !important;\n  }\n\n  .mx-md-0 {\n    margin-right: 0 !important;\n    margin-left: 0 !important;\n  }\n\n  .mx-md-1 {\n    margin-right: 0.25rem !important;\n    margin-left: 0.25rem !important;\n  }\n\n  .mx-md-2 {\n    margin-right: 0.5rem !important;\n    margin-left: 0.5rem !important;\n  }\n\n  .mx-md-3 {\n    margin-right: 1rem !important;\n    margin-left: 1rem !important;\n  }\n\n  .mx-md-4 {\n    margin-right: 1.5rem !important;\n    margin-left: 1.5rem !important;\n  }\n\n  .mx-md-5 {\n    margin-right: 3rem !important;\n    margin-left: 3rem !important;\n  }\n\n  .mx-md-auto {\n    margin-right: auto !important;\n    margin-left: auto !important;\n  }\n\n  .my-md-0 {\n    margin-top: 0 !important;\n    margin-bottom: 0 !important;\n  }\n\n  .my-md-1 {\n    margin-top: 0.25rem !important;\n    margin-bottom: 0.25rem !important;\n  }\n\n  .my-md-2 {\n    margin-top: 0.5rem !important;\n    margin-bottom: 0.5rem !important;\n  }\n\n  .my-md-3 {\n    margin-top: 1rem !important;\n    margin-bottom: 1rem !important;\n  }\n\n  .my-md-4 {\n    margin-top: 1.5rem !important;\n    margin-bottom: 1.5rem !important;\n  }\n\n  .my-md-5 {\n    margin-top: 3rem !important;\n    margin-bottom: 3rem !important;\n  }\n\n  .my-md-auto {\n    margin-top: auto !important;\n    margin-bottom: auto !important;\n  }\n\n  .mt-md-0 {\n    margin-top: 0 !important;\n  }\n\n  .mt-md-1 {\n    margin-top: 0.25rem !important;\n  }\n\n  .mt-md-2 {\n    margin-top: 0.5rem !important;\n  }\n\n  .mt-md-3 {\n    margin-top: 1rem !important;\n  }\n\n  .mt-md-4 {\n    margin-top: 1.5rem !important;\n  }\n\n  .mt-md-5 {\n    margin-top: 3rem !important;\n  }\n\n  .mt-md-auto {\n    margin-top: auto !important;\n  }\n\n  .me-md-0 {\n    margin-right: 0 !important;\n  }\n\n  .me-md-1 {\n    margin-right: 0.25rem !important;\n  }\n\n  .me-md-2 {\n    margin-right: 0.5rem !important;\n  }\n\n  .me-md-3 {\n    margin-right: 1rem !important;\n  }\n\n  .me-md-4 {\n    margin-right: 1.5rem !important;\n  }\n\n  .me-md-5 {\n    margin-right: 3rem !important;\n  }\n\n  .me-md-auto {\n    margin-right: auto !important;\n  }\n\n  .mb-md-0 {\n    margin-bottom: 0 !important;\n  }\n\n  .mb-md-1 {\n    margin-bottom: 0.25rem !important;\n  }\n\n  .mb-md-2 {\n    margin-bottom: 0.5rem !important;\n  }\n\n  .mb-md-3 {\n    margin-bottom: 1rem !important;\n  }\n\n  .mb-md-4 {\n    margin-bottom: 1.5rem !important;\n  }\n\n  .mb-md-5 {\n    margin-bottom: 3rem !important;\n  }\n\n  .mb-md-auto {\n    margin-bottom: auto !important;\n  }\n\n  .ms-md-0 {\n    margin-left: 0 !important;\n  }\n\n  .ms-md-1 {\n    margin-left: 0.25rem !important;\n  }\n\n  .ms-md-2 {\n    margin-left: 0.5rem !important;\n  }\n\n  .ms-md-3 {\n    margin-left: 1rem !important;\n  }\n\n  .ms-md-4 {\n    margin-left: 1.5rem !important;\n  }\n\n  .ms-md-5 {\n    margin-left: 3rem !important;\n  }\n\n  .ms-md-auto {\n    margin-left: auto !important;\n  }\n\n  .p-md-0 {\n    padding: 0 !important;\n  }\n\n  .p-md-1 {\n    padding: 0.25rem !important;\n  }\n\n  .p-md-2 {\n    padding: 0.5rem !important;\n  }\n\n  .p-md-3 {\n    padding: 1rem !important;\n  }\n\n  .p-md-4 {\n    padding: 1.5rem !important;\n  }\n\n  .p-md-5 {\n    padding: 3rem !important;\n  }\n\n  .px-md-0 {\n    padding-right: 0 !important;\n    padding-left: 0 !important;\n  }\n\n  .px-md-1 {\n    padding-right: 0.25rem !important;\n    padding-left: 0.25rem !important;\n  }\n\n  .px-md-2 {\n    padding-right: 0.5rem !important;\n    padding-left: 0.5rem !important;\n  }\n\n  .px-md-3 {\n    padding-right: 1rem !important;\n    padding-left: 1rem !important;\n  }\n\n  .px-md-4 {\n    padding-right: 1.5rem !important;\n    padding-left: 1.5rem !important;\n  }\n\n  .px-md-5 {\n    padding-right: 3rem !important;\n    padding-left: 3rem !important;\n  }\n\n  .py-md-0 {\n    padding-top: 0 !important;\n    padding-bottom: 0 !important;\n  }\n\n  .py-md-1 {\n    padding-top: 0.25rem !important;\n    padding-bottom: 0.25rem !important;\n  }\n\n  .py-md-2 {\n    padding-top: 0.5rem !important;\n    padding-bottom: 0.5rem !important;\n  }\n\n  .py-md-3 {\n    padding-top: 1rem !important;\n    padding-bottom: 1rem !important;\n  }\n\n  .py-md-4 {\n    padding-top: 1.5rem !important;\n    padding-bottom: 1.5rem !important;\n  }\n\n  .py-md-5 {\n    padding-top: 3rem !important;\n    padding-bottom: 3rem !important;\n  }\n\n  .pt-md-0 {\n    padding-top: 0 !important;\n  }\n\n  .pt-md-1 {\n    padding-top: 0.25rem !important;\n  }\n\n  .pt-md-2 {\n    padding-top: 0.5rem !important;\n  }\n\n  .pt-md-3 {\n    padding-top: 1rem !important;\n  }\n\n  .pt-md-4 {\n    padding-top: 1.5rem !important;\n  }\n\n  .pt-md-5 {\n    padding-top: 3rem !important;\n  }\n\n  .pe-md-0 {\n    padding-right: 0 !important;\n  }\n\n  .pe-md-1 {\n    padding-right: 0.25rem !important;\n  }\n\n  .pe-md-2 {\n    padding-right: 0.5rem !important;\n  }\n\n  .pe-md-3 {\n    padding-right: 1rem !important;\n  }\n\n  .pe-md-4 {\n    padding-right: 1.5rem !important;\n  }\n\n  .pe-md-5 {\n    padding-right: 3rem !important;\n  }\n\n  .pb-md-0 {\n    padding-bottom: 0 !important;\n  }\n\n  .pb-md-1 {\n    padding-bottom: 0.25rem !important;\n  }\n\n  .pb-md-2 {\n    padding-bottom: 0.5rem !important;\n  }\n\n  .pb-md-3 {\n    padding-bottom: 1rem !important;\n  }\n\n  .pb-md-4 {\n    padding-bottom: 1.5rem !important;\n  }\n\n  .pb-md-5 {\n    padding-bottom: 3rem !important;\n  }\n\n  .ps-md-0 {\n    padding-left: 0 !important;\n  }\n\n  .ps-md-1 {\n    padding-left: 0.25rem !important;\n  }\n\n  .ps-md-2 {\n    padding-left: 0.5rem !important;\n  }\n\n  .ps-md-3 {\n    padding-left: 1rem !important;\n  }\n\n  .ps-md-4 {\n    padding-left: 1.5rem !important;\n  }\n\n  .ps-md-5 {\n    padding-left: 3rem !important;\n  }\n\n  .text-md-start {\n    text-align: left !important;\n  }\n\n  .text-md-end {\n    text-align: right !important;\n  }\n\n  .text-md-center {\n    text-align: center !important;\n  }\n}\n@media (min-width: 992px) {\n  .float-lg-start {\n    float: left !important;\n  }\n\n  .float-lg-end {\n    float: right !important;\n  }\n\n  .float-lg-none {\n    float: none !important;\n  }\n\n  .d-lg-inline {\n    display: inline !important;\n  }\n\n  .d-lg-inline-block {\n    display: inline-block !important;\n  }\n\n  .d-lg-block {\n    display: block !important;\n  }\n\n  .d-lg-grid {\n    display: grid !important;\n  }\n\n  .d-lg-table {\n    display: table !important;\n  }\n\n  .d-lg-table-row {\n    display: table-row !important;\n  }\n\n  .d-lg-table-cell {\n    display: table-cell !important;\n  }\n\n  .d-lg-flex {\n    display: flex !important;\n  }\n\n  .d-lg-inline-flex {\n    display: inline-flex !important;\n  }\n\n  .d-lg-none {\n    display: none !important;\n  }\n\n  .flex-lg-fill {\n    flex: 1 1 auto !important;\n  }\n\n  .flex-lg-row {\n    flex-direction: row !important;\n  }\n\n  .flex-lg-column {\n    flex-direction: column !important;\n  }\n\n  .flex-lg-row-reverse {\n    flex-direction: row-reverse !important;\n  }\n\n  .flex-lg-column-reverse {\n    flex-direction: column-reverse !important;\n  }\n\n  .flex-lg-grow-0 {\n    flex-grow: 0 !important;\n  }\n\n  .flex-lg-grow-1 {\n    flex-grow: 1 !important;\n  }\n\n  .flex-lg-shrink-0 {\n    flex-shrink: 0 !important;\n  }\n\n  .flex-lg-shrink-1 {\n    flex-shrink: 1 !important;\n  }\n\n  .flex-lg-wrap {\n    flex-wrap: wrap !important;\n  }\n\n  .flex-lg-nowrap {\n    flex-wrap: nowrap !important;\n  }\n\n  .flex-lg-wrap-reverse {\n    flex-wrap: wrap-reverse !important;\n  }\n\n  .gap-lg-0 {\n    gap: 0 !important;\n  }\n\n  .gap-lg-1 {\n    gap: 0.25rem !important;\n  }\n\n  .gap-lg-2 {\n    gap: 0.5rem !important;\n  }\n\n  .gap-lg-3 {\n    gap: 1rem !important;\n  }\n\n  .gap-lg-4 {\n    gap: 1.5rem !important;\n  }\n\n  .gap-lg-5 {\n    gap: 3rem !important;\n  }\n\n  .justify-content-lg-start {\n    justify-content: flex-start !important;\n  }\n\n  .justify-content-lg-end {\n    justify-content: flex-end !important;\n  }\n\n  .justify-content-lg-center {\n    justify-content: center !important;\n  }\n\n  .justify-content-lg-between {\n    justify-content: space-between !important;\n  }\n\n  .justify-content-lg-around {\n    justify-content: space-around !important;\n  }\n\n  .justify-content-lg-evenly {\n    justify-content: space-evenly !important;\n  }\n\n  .align-items-lg-start {\n    align-items: flex-start !important;\n  }\n\n  .align-items-lg-end {\n    align-items: flex-end !important;\n  }\n\n  .align-items-lg-center {\n    align-items: center !important;\n  }\n\n  .align-items-lg-baseline {\n    align-items: baseline !important;\n  }\n\n  .align-items-lg-stretch {\n    align-items: stretch !important;\n  }\n\n  .align-content-lg-start {\n    align-content: flex-start !important;\n  }\n\n  .align-content-lg-end {\n    align-content: flex-end !important;\n  }\n\n  .align-content-lg-center {\n    align-content: center !important;\n  }\n\n  .align-content-lg-between {\n    align-content: space-between !important;\n  }\n\n  .align-content-lg-around {\n    align-content: space-around !important;\n  }\n\n  .align-content-lg-stretch {\n    align-content: stretch !important;\n  }\n\n  .align-self-lg-auto {\n    align-self: auto !important;\n  }\n\n  .align-self-lg-start {\n    align-self: flex-start !important;\n  }\n\n  .align-self-lg-end {\n    align-self: flex-end !important;\n  }\n\n  .align-self-lg-center {\n    align-self: center !important;\n  }\n\n  .align-self-lg-baseline {\n    align-self: baseline !important;\n  }\n\n  .align-self-lg-stretch {\n    align-self: stretch !important;\n  }\n\n  .order-lg-first {\n    order: -1 !important;\n  }\n\n  .order-lg-0 {\n    order: 0 !important;\n  }\n\n  .order-lg-1 {\n    order: 1 !important;\n  }\n\n  .order-lg-2 {\n    order: 2 !important;\n  }\n\n  .order-lg-3 {\n    order: 3 !important;\n  }\n\n  .order-lg-4 {\n    order: 4 !important;\n  }\n\n  .order-lg-5 {\n    order: 5 !important;\n  }\n\n  .order-lg-last {\n    order: 6 !important;\n  }\n\n  .m-lg-0 {\n    margin: 0 !important;\n  }\n\n  .m-lg-1 {\n    margin: 0.25rem !important;\n  }\n\n  .m-lg-2 {\n    margin: 0.5rem !important;\n  }\n\n  .m-lg-3 {\n    margin: 1rem !important;\n  }\n\n  .m-lg-4 {\n    margin: 1.5rem !important;\n  }\n\n  .m-lg-5 {\n    margin: 3rem !important;\n  }\n\n  .m-lg-auto {\n    margin: auto !important;\n  }\n\n  .mx-lg-0 {\n    margin-right: 0 !important;\n    margin-left: 0 !important;\n  }\n\n  .mx-lg-1 {\n    margin-right: 0.25rem !important;\n    margin-left: 0.25rem !important;\n  }\n\n  .mx-lg-2 {\n    margin-right: 0.5rem !important;\n    margin-left: 0.5rem !important;\n  }\n\n  .mx-lg-3 {\n    margin-right: 1rem !important;\n    margin-left: 1rem !important;\n  }\n\n  .mx-lg-4 {\n    margin-right: 1.5rem !important;\n    margin-left: 1.5rem !important;\n  }\n\n  .mx-lg-5 {\n    margin-right: 3rem !important;\n    margin-left: 3rem !important;\n  }\n\n  .mx-lg-auto {\n    margin-right: auto !important;\n    margin-left: auto !important;\n  }\n\n  .my-lg-0 {\n    margin-top: 0 !important;\n    margin-bottom: 0 !important;\n  }\n\n  .my-lg-1 {\n    margin-top: 0.25rem !important;\n    margin-bottom: 0.25rem !important;\n  }\n\n  .my-lg-2 {\n    margin-top: 0.5rem !important;\n    margin-bottom: 0.5rem !important;\n  }\n\n  .my-lg-3 {\n    margin-top: 1rem !important;\n    margin-bottom: 1rem !important;\n  }\n\n  .my-lg-4 {\n    margin-top: 1.5rem !important;\n    margin-bottom: 1.5rem !important;\n  }\n\n  .my-lg-5 {\n    margin-top: 3rem !important;\n    margin-bottom: 3rem !important;\n  }\n\n  .my-lg-auto {\n    margin-top: auto !important;\n    margin-bottom: auto !important;\n  }\n\n  .mt-lg-0 {\n    margin-top: 0 !important;\n  }\n\n  .mt-lg-1 {\n    margin-top: 0.25rem !important;\n  }\n\n  .mt-lg-2 {\n    margin-top: 0.5rem !important;\n  }\n\n  .mt-lg-3 {\n    margin-top: 1rem !important;\n  }\n\n  .mt-lg-4 {\n    margin-top: 1.5rem !important;\n  }\n\n  .mt-lg-5 {\n    margin-top: 3rem !important;\n  }\n\n  .mt-lg-auto {\n    margin-top: auto !important;\n  }\n\n  .me-lg-0 {\n    margin-right: 0 !important;\n  }\n\n  .me-lg-1 {\n    margin-right: 0.25rem !important;\n  }\n\n  .me-lg-2 {\n    margin-right: 0.5rem !important;\n  }\n\n  .me-lg-3 {\n    margin-right: 1rem !important;\n  }\n\n  .me-lg-4 {\n    margin-right: 1.5rem !important;\n  }\n\n  .me-lg-5 {\n    margin-right: 3rem !important;\n  }\n\n  .me-lg-auto {\n    margin-right: auto !important;\n  }\n\n  .mb-lg-0 {\n    margin-bottom: 0 !important;\n  }\n\n  .mb-lg-1 {\n    margin-bottom: 0.25rem !important;\n  }\n\n  .mb-lg-2 {\n    margin-bottom: 0.5rem !important;\n  }\n\n  .mb-lg-3 {\n    margin-bottom: 1rem !important;\n  }\n\n  .mb-lg-4 {\n    margin-bottom: 1.5rem !important;\n  }\n\n  .mb-lg-5 {\n    margin-bottom: 3rem !important;\n  }\n\n  .mb-lg-auto {\n    margin-bottom: auto !important;\n  }\n\n  .ms-lg-0 {\n    margin-left: 0 !important;\n  }\n\n  .ms-lg-1 {\n    margin-left: 0.25rem !important;\n  }\n\n  .ms-lg-2 {\n    margin-left: 0.5rem !important;\n  }\n\n  .ms-lg-3 {\n    margin-left: 1rem !important;\n  }\n\n  .ms-lg-4 {\n    margin-left: 1.5rem !important;\n  }\n\n  .ms-lg-5 {\n    margin-left: 3rem !important;\n  }\n\n  .ms-lg-auto {\n    margin-left: auto !important;\n  }\n\n  .p-lg-0 {\n    padding: 0 !important;\n  }\n\n  .p-lg-1 {\n    padding: 0.25rem !important;\n  }\n\n  .p-lg-2 {\n    padding: 0.5rem !important;\n  }\n\n  .p-lg-3 {\n    padding: 1rem !important;\n  }\n\n  .p-lg-4 {\n    padding: 1.5rem !important;\n  }\n\n  .p-lg-5 {\n    padding: 3rem !important;\n  }\n\n  .px-lg-0 {\n    padding-right: 0 !important;\n    padding-left: 0 !important;\n  }\n\n  .px-lg-1 {\n    padding-right: 0.25rem !important;\n    padding-left: 0.25rem !important;\n  }\n\n  .px-lg-2 {\n    padding-right: 0.5rem !important;\n    padding-left: 0.5rem !important;\n  }\n\n  .px-lg-3 {\n    padding-right: 1rem !important;\n    padding-left: 1rem !important;\n  }\n\n  .px-lg-4 {\n    padding-right: 1.5rem !important;\n    padding-left: 1.5rem !important;\n  }\n\n  .px-lg-5 {\n    padding-right: 3rem !important;\n    padding-left: 3rem !important;\n  }\n\n  .py-lg-0 {\n    padding-top: 0 !important;\n    padding-bottom: 0 !important;\n  }\n\n  .py-lg-1 {\n    padding-top: 0.25rem !important;\n    padding-bottom: 0.25rem !important;\n  }\n\n  .py-lg-2 {\n    padding-top: 0.5rem !important;\n    padding-bottom: 0.5rem !important;\n  }\n\n  .py-lg-3 {\n    padding-top: 1rem !important;\n    padding-bottom: 1rem !important;\n  }\n\n  .py-lg-4 {\n    padding-top: 1.5rem !important;\n    padding-bottom: 1.5rem !important;\n  }\n\n  .py-lg-5 {\n    padding-top: 3rem !important;\n    padding-bottom: 3rem !important;\n  }\n\n  .pt-lg-0 {\n    padding-top: 0 !important;\n  }\n\n  .pt-lg-1 {\n    padding-top: 0.25rem !important;\n  }\n\n  .pt-lg-2 {\n    padding-top: 0.5rem !important;\n  }\n\n  .pt-lg-3 {\n    padding-top: 1rem !important;\n  }\n\n  .pt-lg-4 {\n    padding-top: 1.5rem !important;\n  }\n\n  .pt-lg-5 {\n    padding-top: 3rem !important;\n  }\n\n  .pe-lg-0 {\n    padding-right: 0 !important;\n  }\n\n  .pe-lg-1 {\n    padding-right: 0.25rem !important;\n  }\n\n  .pe-lg-2 {\n    padding-right: 0.5rem !important;\n  }\n\n  .pe-lg-3 {\n    padding-right: 1rem !important;\n  }\n\n  .pe-lg-4 {\n    padding-right: 1.5rem !important;\n  }\n\n  .pe-lg-5 {\n    padding-right: 3rem !important;\n  }\n\n  .pb-lg-0 {\n    padding-bottom: 0 !important;\n  }\n\n  .pb-lg-1 {\n    padding-bottom: 0.25rem !important;\n  }\n\n  .pb-lg-2 {\n    padding-bottom: 0.5rem !important;\n  }\n\n  .pb-lg-3 {\n    padding-bottom: 1rem !important;\n  }\n\n  .pb-lg-4 {\n    padding-bottom: 1.5rem !important;\n  }\n\n  .pb-lg-5 {\n    padding-bottom: 3rem !important;\n  }\n\n  .ps-lg-0 {\n    padding-left: 0 !important;\n  }\n\n  .ps-lg-1 {\n    padding-left: 0.25rem !important;\n  }\n\n  .ps-lg-2 {\n    padding-left: 0.5rem !important;\n  }\n\n  .ps-lg-3 {\n    padding-left: 1rem !important;\n  }\n\n  .ps-lg-4 {\n    padding-left: 1.5rem !important;\n  }\n\n  .ps-lg-5 {\n    padding-left: 3rem !important;\n  }\n\n  .text-lg-start {\n    text-align: left !important;\n  }\n\n  .text-lg-end {\n    text-align: right !important;\n  }\n\n  .text-lg-center {\n    text-align: center !important;\n  }\n}\n@media (min-width: 1200px) {\n  .float-xl-start {\n    float: left !important;\n  }\n\n  .float-xl-end {\n    float: right !important;\n  }\n\n  .float-xl-none {\n    float: none !important;\n  }\n\n  .d-xl-inline {\n    display: inline !important;\n  }\n\n  .d-xl-inline-block {\n    display: inline-block !important;\n  }\n\n  .d-xl-block {\n    display: block !important;\n  }\n\n  .d-xl-grid {\n    display: grid !important;\n  }\n\n  .d-xl-table {\n    display: table !important;\n  }\n\n  .d-xl-table-row {\n    display: table-row !important;\n  }\n\n  .d-xl-table-cell {\n    display: table-cell !important;\n  }\n\n  .d-xl-flex {\n    display: flex !important;\n  }\n\n  .d-xl-inline-flex {\n    display: inline-flex !important;\n  }\n\n  .d-xl-none {\n    display: none !important;\n  }\n\n  .flex-xl-fill {\n    flex: 1 1 auto !important;\n  }\n\n  .flex-xl-row {\n    flex-direction: row !important;\n  }\n\n  .flex-xl-column {\n    flex-direction: column !important;\n  }\n\n  .flex-xl-row-reverse {\n    flex-direction: row-reverse !important;\n  }\n\n  .flex-xl-column-reverse {\n    flex-direction: column-reverse !important;\n  }\n\n  .flex-xl-grow-0 {\n    flex-grow: 0 !important;\n  }\n\n  .flex-xl-grow-1 {\n    flex-grow: 1 !important;\n  }\n\n  .flex-xl-shrink-0 {\n    flex-shrink: 0 !important;\n  }\n\n  .flex-xl-shrink-1 {\n    flex-shrink: 1 !important;\n  }\n\n  .flex-xl-wrap {\n    flex-wrap: wrap !important;\n  }\n\n  .flex-xl-nowrap {\n    flex-wrap: nowrap !important;\n  }\n\n  .flex-xl-wrap-reverse {\n    flex-wrap: wrap-reverse !important;\n  }\n\n  .gap-xl-0 {\n    gap: 0 !important;\n  }\n\n  .gap-xl-1 {\n    gap: 0.25rem !important;\n  }\n\n  .gap-xl-2 {\n    gap: 0.5rem !important;\n  }\n\n  .gap-xl-3 {\n    gap: 1rem !important;\n  }\n\n  .gap-xl-4 {\n    gap: 1.5rem !important;\n  }\n\n  .gap-xl-5 {\n    gap: 3rem !important;\n  }\n\n  .justify-content-xl-start {\n    justify-content: flex-start !important;\n  }\n\n  .justify-content-xl-end {\n    justify-content: flex-end !important;\n  }\n\n  .justify-content-xl-center {\n    justify-content: center !important;\n  }\n\n  .justify-content-xl-between {\n    justify-content: space-between !important;\n  }\n\n  .justify-content-xl-around {\n    justify-content: space-around !important;\n  }\n\n  .justify-content-xl-evenly {\n    justify-content: space-evenly !important;\n  }\n\n  .align-items-xl-start {\n    align-items: flex-start !important;\n  }\n\n  .align-items-xl-end {\n    align-items: flex-end !important;\n  }\n\n  .align-items-xl-center {\n    align-items: center !important;\n  }\n\n  .align-items-xl-baseline {\n    align-items: baseline !important;\n  }\n\n  .align-items-xl-stretch {\n    align-items: stretch !important;\n  }\n\n  .align-content-xl-start {\n    align-content: flex-start !important;\n  }\n\n  .align-content-xl-end {\n    align-content: flex-end !important;\n  }\n\n  .align-content-xl-center {\n    align-content: center !important;\n  }\n\n  .align-content-xl-between {\n    align-content: space-between !important;\n  }\n\n  .align-content-xl-around {\n    align-content: space-around !important;\n  }\n\n  .align-content-xl-stretch {\n    align-content: stretch !important;\n  }\n\n  .align-self-xl-auto {\n    align-self: auto !important;\n  }\n\n  .align-self-xl-start {\n    align-self: flex-start !important;\n  }\n\n  .align-self-xl-end {\n    align-self: flex-end !important;\n  }\n\n  .align-self-xl-center {\n    align-self: center !important;\n  }\n\n  .align-self-xl-baseline {\n    align-self: baseline !important;\n  }\n\n  .align-self-xl-stretch {\n    align-self: stretch !important;\n  }\n\n  .order-xl-first {\n    order: -1 !important;\n  }\n\n  .order-xl-0 {\n    order: 0 !important;\n  }\n\n  .order-xl-1 {\n    order: 1 !important;\n  }\n\n  .order-xl-2 {\n    order: 2 !important;\n  }\n\n  .order-xl-3 {\n    order: 3 !important;\n  }\n\n  .order-xl-4 {\n    order: 4 !important;\n  }\n\n  .order-xl-5 {\n    order: 5 !important;\n  }\n\n  .order-xl-last {\n    order: 6 !important;\n  }\n\n  .m-xl-0 {\n    margin: 0 !important;\n  }\n\n  .m-xl-1 {\n    margin: 0.25rem !important;\n  }\n\n  .m-xl-2 {\n    margin: 0.5rem !important;\n  }\n\n  .m-xl-3 {\n    margin: 1rem !important;\n  }\n\n  .m-xl-4 {\n    margin: 1.5rem !important;\n  }\n\n  .m-xl-5 {\n    margin: 3rem !important;\n  }\n\n  .m-xl-auto {\n    margin: auto !important;\n  }\n\n  .mx-xl-0 {\n    margin-right: 0 !important;\n    margin-left: 0 !important;\n  }\n\n  .mx-xl-1 {\n    margin-right: 0.25rem !important;\n    margin-left: 0.25rem !important;\n  }\n\n  .mx-xl-2 {\n    margin-right: 0.5rem !important;\n    margin-left: 0.5rem !important;\n  }\n\n  .mx-xl-3 {\n    margin-right: 1rem !important;\n    margin-left: 1rem !important;\n  }\n\n  .mx-xl-4 {\n    margin-right: 1.5rem !important;\n    margin-left: 1.5rem !important;\n  }\n\n  .mx-xl-5 {\n    margin-right: 3rem !important;\n    margin-left: 3rem !important;\n  }\n\n  .mx-xl-auto {\n    margin-right: auto !important;\n    margin-left: auto !important;\n  }\n\n  .my-xl-0 {\n    margin-top: 0 !important;\n    margin-bottom: 0 !important;\n  }\n\n  .my-xl-1 {\n    margin-top: 0.25rem !important;\n    margin-bottom: 0.25rem !important;\n  }\n\n  .my-xl-2 {\n    margin-top: 0.5rem !important;\n    margin-bottom: 0.5rem !important;\n  }\n\n  .my-xl-3 {\n    margin-top: 1rem !important;\n    margin-bottom: 1rem !important;\n  }\n\n  .my-xl-4 {\n    margin-top: 1.5rem !important;\n    margin-bottom: 1.5rem !important;\n  }\n\n  .my-xl-5 {\n    margin-top: 3rem !important;\n    margin-bottom: 3rem !important;\n  }\n\n  .my-xl-auto {\n    margin-top: auto !important;\n    margin-bottom: auto !important;\n  }\n\n  .mt-xl-0 {\n    margin-top: 0 !important;\n  }\n\n  .mt-xl-1 {\n    margin-top: 0.25rem !important;\n  }\n\n  .mt-xl-2 {\n    margin-top: 0.5rem !important;\n  }\n\n  .mt-xl-3 {\n    margin-top: 1rem !important;\n  }\n\n  .mt-xl-4 {\n    margin-top: 1.5rem !important;\n  }\n\n  .mt-xl-5 {\n    margin-top: 3rem !important;\n  }\n\n  .mt-xl-auto {\n    margin-top: auto !important;\n  }\n\n  .me-xl-0 {\n    margin-right: 0 !important;\n  }\n\n  .me-xl-1 {\n    margin-right: 0.25rem !important;\n  }\n\n  .me-xl-2 {\n    margin-right: 0.5rem !important;\n  }\n\n  .me-xl-3 {\n    margin-right: 1rem !important;\n  }\n\n  .me-xl-4 {\n    margin-right: 1.5rem !important;\n  }\n\n  .me-xl-5 {\n    margin-right: 3rem !important;\n  }\n\n  .me-xl-auto {\n    margin-right: auto !important;\n  }\n\n  .mb-xl-0 {\n    margin-bottom: 0 !important;\n  }\n\n  .mb-xl-1 {\n    margin-bottom: 0.25rem !important;\n  }\n\n  .mb-xl-2 {\n    margin-bottom: 0.5rem !important;\n  }\n\n  .mb-xl-3 {\n    margin-bottom: 1rem !important;\n  }\n\n  .mb-xl-4 {\n    margin-bottom: 1.5rem !important;\n  }\n\n  .mb-xl-5 {\n    margin-bottom: 3rem !important;\n  }\n\n  .mb-xl-auto {\n    margin-bottom: auto !important;\n  }\n\n  .ms-xl-0 {\n    margin-left: 0 !important;\n  }\n\n  .ms-xl-1 {\n    margin-left: 0.25rem !important;\n  }\n\n  .ms-xl-2 {\n    margin-left: 0.5rem !important;\n  }\n\n  .ms-xl-3 {\n    margin-left: 1rem !important;\n  }\n\n  .ms-xl-4 {\n    margin-left: 1.5rem !important;\n  }\n\n  .ms-xl-5 {\n    margin-left: 3rem !important;\n  }\n\n  .ms-xl-auto {\n    margin-left: auto !important;\n  }\n\n  .p-xl-0 {\n    padding: 0 !important;\n  }\n\n  .p-xl-1 {\n    padding: 0.25rem !important;\n  }\n\n  .p-xl-2 {\n    padding: 0.5rem !important;\n  }\n\n  .p-xl-3 {\n    padding: 1rem !important;\n  }\n\n  .p-xl-4 {\n    padding: 1.5rem !important;\n  }\n\n  .p-xl-5 {\n    padding: 3rem !important;\n  }\n\n  .px-xl-0 {\n    padding-right: 0 !important;\n    padding-left: 0 !important;\n  }\n\n  .px-xl-1 {\n    padding-right: 0.25rem !important;\n    padding-left: 0.25rem !important;\n  }\n\n  .px-xl-2 {\n    padding-right: 0.5rem !important;\n    padding-left: 0.5rem !important;\n  }\n\n  .px-xl-3 {\n    padding-right: 1rem !important;\n    padding-left: 1rem !important;\n  }\n\n  .px-xl-4 {\n    padding-right: 1.5rem !important;\n    padding-left: 1.5rem !important;\n  }\n\n  .px-xl-5 {\n    padding-right: 3rem !important;\n    padding-left: 3rem !important;\n  }\n\n  .py-xl-0 {\n    padding-top: 0 !important;\n    padding-bottom: 0 !important;\n  }\n\n  .py-xl-1 {\n    padding-top: 0.25rem !important;\n    padding-bottom: 0.25rem !important;\n  }\n\n  .py-xl-2 {\n    padding-top: 0.5rem !important;\n    padding-bottom: 0.5rem !important;\n  }\n\n  .py-xl-3 {\n    padding-top: 1rem !important;\n    padding-bottom: 1rem !important;\n  }\n\n  .py-xl-4 {\n    padding-top: 1.5rem !important;\n    padding-bottom: 1.5rem !important;\n  }\n\n  .py-xl-5 {\n    padding-top: 3rem !important;\n    padding-bottom: 3rem !important;\n  }\n\n  .pt-xl-0 {\n    padding-top: 0 !important;\n  }\n\n  .pt-xl-1 {\n    padding-top: 0.25rem !important;\n  }\n\n  .pt-xl-2 {\n    padding-top: 0.5rem !important;\n  }\n\n  .pt-xl-3 {\n    padding-top: 1rem !important;\n  }\n\n  .pt-xl-4 {\n    padding-top: 1.5rem !important;\n  }\n\n  .pt-xl-5 {\n    padding-top: 3rem !important;\n  }\n\n  .pe-xl-0 {\n    padding-right: 0 !important;\n  }\n\n  .pe-xl-1 {\n    padding-right: 0.25rem !important;\n  }\n\n  .pe-xl-2 {\n    padding-right: 0.5rem !important;\n  }\n\n  .pe-xl-3 {\n    padding-right: 1rem !important;\n  }\n\n  .pe-xl-4 {\n    padding-right: 1.5rem !important;\n  }\n\n  .pe-xl-5 {\n    padding-right: 3rem !important;\n  }\n\n  .pb-xl-0 {\n    padding-bottom: 0 !important;\n  }\n\n  .pb-xl-1 {\n    padding-bottom: 0.25rem !important;\n  }\n\n  .pb-xl-2 {\n    padding-bottom: 0.5rem !important;\n  }\n\n  .pb-xl-3 {\n    padding-bottom: 1rem !important;\n  }\n\n  .pb-xl-4 {\n    padding-bottom: 1.5rem !important;\n  }\n\n  .pb-xl-5 {\n    padding-bottom: 3rem !important;\n  }\n\n  .ps-xl-0 {\n    padding-left: 0 !important;\n  }\n\n  .ps-xl-1 {\n    padding-left: 0.25rem !important;\n  }\n\n  .ps-xl-2 {\n    padding-left: 0.5rem !important;\n  }\n\n  .ps-xl-3 {\n    padding-left: 1rem !important;\n  }\n\n  .ps-xl-4 {\n    padding-left: 1.5rem !important;\n  }\n\n  .ps-xl-5 {\n    padding-left: 3rem !important;\n  }\n\n  .text-xl-start {\n    text-align: left !important;\n  }\n\n  .text-xl-end {\n    text-align: right !important;\n  }\n\n  .text-xl-center {\n    text-align: center !important;\n  }\n}\n@media (min-width: 1400px) {\n  .float-xxl-start {\n    float: left !important;\n  }\n\n  .float-xxl-end {\n    float: right !important;\n  }\n\n  .float-xxl-none {\n    float: none !important;\n  }\n\n  .d-xxl-inline {\n    display: inline !important;\n  }\n\n  .d-xxl-inline-block {\n    display: inline-block !important;\n  }\n\n  .d-xxl-block {\n    display: block !important;\n  }\n\n  .d-xxl-grid {\n    display: grid !important;\n  }\n\n  .d-xxl-table {\n    display: table !important;\n  }\n\n  .d-xxl-table-row {\n    display: table-row !important;\n  }\n\n  .d-xxl-table-cell {\n    display: table-cell !important;\n  }\n\n  .d-xxl-flex {\n    display: flex !important;\n  }\n\n  .d-xxl-inline-flex {\n    display: inline-flex !important;\n  }\n\n  .d-xxl-none {\n    display: none !important;\n  }\n\n  .flex-xxl-fill {\n    flex: 1 1 auto !important;\n  }\n\n  .flex-xxl-row {\n    flex-direction: row !important;\n  }\n\n  .flex-xxl-column {\n    flex-direction: column !important;\n  }\n\n  .flex-xxl-row-reverse {\n    flex-direction: row-reverse !important;\n  }\n\n  .flex-xxl-column-reverse {\n    flex-direction: column-reverse !important;\n  }\n\n  .flex-xxl-grow-0 {\n    flex-grow: 0 !important;\n  }\n\n  .flex-xxl-grow-1 {\n    flex-grow: 1 !important;\n  }\n\n  .flex-xxl-shrink-0 {\n    flex-shrink: 0 !important;\n  }\n\n  .flex-xxl-shrink-1 {\n    flex-shrink: 1 !important;\n  }\n\n  .flex-xxl-wrap {\n    flex-wrap: wrap !important;\n  }\n\n  .flex-xxl-nowrap {\n    flex-wrap: nowrap !important;\n  }\n\n  .flex-xxl-wrap-reverse {\n    flex-wrap: wrap-reverse !important;\n  }\n\n  .gap-xxl-0 {\n    gap: 0 !important;\n  }\n\n  .gap-xxl-1 {\n    gap: 0.25rem !important;\n  }\n\n  .gap-xxl-2 {\n    gap: 0.5rem !important;\n  }\n\n  .gap-xxl-3 {\n    gap: 1rem !important;\n  }\n\n  .gap-xxl-4 {\n    gap: 1.5rem !important;\n  }\n\n  .gap-xxl-5 {\n    gap: 3rem !important;\n  }\n\n  .justify-content-xxl-start {\n    justify-content: flex-start !important;\n  }\n\n  .justify-content-xxl-end {\n    justify-content: flex-end !important;\n  }\n\n  .justify-content-xxl-center {\n    justify-content: center !important;\n  }\n\n  .justify-content-xxl-between {\n    justify-content: space-between !important;\n  }\n\n  .justify-content-xxl-around {\n    justify-content: space-around !important;\n  }\n\n  .justify-content-xxl-evenly {\n    justify-content: space-evenly !important;\n  }\n\n  .align-items-xxl-start {\n    align-items: flex-start !important;\n  }\n\n  .align-items-xxl-end {\n    align-items: flex-end !important;\n  }\n\n  .align-items-xxl-center {\n    align-items: center !important;\n  }\n\n  .align-items-xxl-baseline {\n    align-items: baseline !important;\n  }\n\n  .align-items-xxl-stretch {\n    align-items: stretch !important;\n  }\n\n  .align-content-xxl-start {\n    align-content: flex-start !important;\n  }\n\n  .align-content-xxl-end {\n    align-content: flex-end !important;\n  }\n\n  .align-content-xxl-center {\n    align-content: center !important;\n  }\n\n  .align-content-xxl-between {\n    align-content: space-between !important;\n  }\n\n  .align-content-xxl-around {\n    align-content: space-around !important;\n  }\n\n  .align-content-xxl-stretch {\n    align-content: stretch !important;\n  }\n\n  .align-self-xxl-auto {\n    align-self: auto !important;\n  }\n\n  .align-self-xxl-start {\n    align-self: flex-start !important;\n  }\n\n  .align-self-xxl-end {\n    align-self: flex-end !important;\n  }\n\n  .align-self-xxl-center {\n    align-self: center !important;\n  }\n\n  .align-self-xxl-baseline {\n    align-self: baseline !important;\n  }\n\n  .align-self-xxl-stretch {\n    align-self: stretch !important;\n  }\n\n  .order-xxl-first {\n    order: -1 !important;\n  }\n\n  .order-xxl-0 {\n    order: 0 !important;\n  }\n\n  .order-xxl-1 {\n    order: 1 !important;\n  }\n\n  .order-xxl-2 {\n    order: 2 !important;\n  }\n\n  .order-xxl-3 {\n    order: 3 !important;\n  }\n\n  .order-xxl-4 {\n    order: 4 !important;\n  }\n\n  .order-xxl-5 {\n    order: 5 !important;\n  }\n\n  .order-xxl-last {\n    order: 6 !important;\n  }\n\n  .m-xxl-0 {\n    margin: 0 !important;\n  }\n\n  .m-xxl-1 {\n    margin: 0.25rem !important;\n  }\n\n  .m-xxl-2 {\n    margin: 0.5rem !important;\n  }\n\n  .m-xxl-3 {\n    margin: 1rem !important;\n  }\n\n  .m-xxl-4 {\n    margin: 1.5rem !important;\n  }\n\n  .m-xxl-5 {\n    margin: 3rem !important;\n  }\n\n  .m-xxl-auto {\n    margin: auto !important;\n  }\n\n  .mx-xxl-0 {\n    margin-right: 0 !important;\n    margin-left: 0 !important;\n  }\n\n  .mx-xxl-1 {\n    margin-right: 0.25rem !important;\n    margin-left: 0.25rem !important;\n  }\n\n  .mx-xxl-2 {\n    margin-right: 0.5rem !important;\n    margin-left: 0.5rem !important;\n  }\n\n  .mx-xxl-3 {\n    margin-right: 1rem !important;\n    margin-left: 1rem !important;\n  }\n\n  .mx-xxl-4 {\n    margin-right: 1.5rem !important;\n    margin-left: 1.5rem !important;\n  }\n\n  .mx-xxl-5 {\n    margin-right: 3rem !important;\n    margin-left: 3rem !important;\n  }\n\n  .mx-xxl-auto {\n    margin-right: auto !important;\n    margin-left: auto !important;\n  }\n\n  .my-xxl-0 {\n    margin-top: 0 !important;\n    margin-bottom: 0 !important;\n  }\n\n  .my-xxl-1 {\n    margin-top: 0.25rem !important;\n    margin-bottom: 0.25rem !important;\n  }\n\n  .my-xxl-2 {\n    margin-top: 0.5rem !important;\n    margin-bottom: 0.5rem !important;\n  }\n\n  .my-xxl-3 {\n    margin-top: 1rem !important;\n    margin-bottom: 1rem !important;\n  }\n\n  .my-xxl-4 {\n    margin-top: 1.5rem !important;\n    margin-bottom: 1.5rem !important;\n  }\n\n  .my-xxl-5 {\n    margin-top: 3rem !important;\n    margin-bottom: 3rem !important;\n  }\n\n  .my-xxl-auto {\n    margin-top: auto !important;\n    margin-bottom: auto !important;\n  }\n\n  .mt-xxl-0 {\n    margin-top: 0 !important;\n  }\n\n  .mt-xxl-1 {\n    margin-top: 0.25rem !important;\n  }\n\n  .mt-xxl-2 {\n    margin-top: 0.5rem !important;\n  }\n\n  .mt-xxl-3 {\n    margin-top: 1rem !important;\n  }\n\n  .mt-xxl-4 {\n    margin-top: 1.5rem !important;\n  }\n\n  .mt-xxl-5 {\n    margin-top: 3rem !important;\n  }\n\n  .mt-xxl-auto {\n    margin-top: auto !important;\n  }\n\n  .me-xxl-0 {\n    margin-right: 0 !important;\n  }\n\n  .me-xxl-1 {\n    margin-right: 0.25rem !important;\n  }\n\n  .me-xxl-2 {\n    margin-right: 0.5rem !important;\n  }\n\n  .me-xxl-3 {\n    margin-right: 1rem !important;\n  }\n\n  .me-xxl-4 {\n    margin-right: 1.5rem !important;\n  }\n\n  .me-xxl-5 {\n    margin-right: 3rem !important;\n  }\n\n  .me-xxl-auto {\n    margin-right: auto !important;\n  }\n\n  .mb-xxl-0 {\n    margin-bottom: 0 !important;\n  }\n\n  .mb-xxl-1 {\n    margin-bottom: 0.25rem !important;\n  }\n\n  .mb-xxl-2 {\n    margin-bottom: 0.5rem !important;\n  }\n\n  .mb-xxl-3 {\n    margin-bottom: 1rem !important;\n  }\n\n  .mb-xxl-4 {\n    margin-bottom: 1.5rem !important;\n  }\n\n  .mb-xxl-5 {\n    margin-bottom: 3rem !important;\n  }\n\n  .mb-xxl-auto {\n    margin-bottom: auto !important;\n  }\n\n  .ms-xxl-0 {\n    margin-left: 0 !important;\n  }\n\n  .ms-xxl-1 {\n    margin-left: 0.25rem !important;\n  }\n\n  .ms-xxl-2 {\n    margin-left: 0.5rem !important;\n  }\n\n  .ms-xxl-3 {\n    margin-left: 1rem !important;\n  }\n\n  .ms-xxl-4 {\n    margin-left: 1.5rem !important;\n  }\n\n  .ms-xxl-5 {\n    margin-left: 3rem !important;\n  }\n\n  .ms-xxl-auto {\n    margin-left: auto !important;\n  }\n\n  .p-xxl-0 {\n    padding: 0 !important;\n  }\n\n  .p-xxl-1 {\n    padding: 0.25rem !important;\n  }\n\n  .p-xxl-2 {\n    padding: 0.5rem !important;\n  }\n\n  .p-xxl-3 {\n    padding: 1rem !important;\n  }\n\n  .p-xxl-4 {\n    padding: 1.5rem !important;\n  }\n\n  .p-xxl-5 {\n    padding: 3rem !important;\n  }\n\n  .px-xxl-0 {\n    padding-right: 0 !important;\n    padding-left: 0 !important;\n  }\n\n  .px-xxl-1 {\n    padding-right: 0.25rem !important;\n    padding-left: 0.25rem !important;\n  }\n\n  .px-xxl-2 {\n    padding-right: 0.5rem !important;\n    padding-left: 0.5rem !important;\n  }\n\n  .px-xxl-3 {\n    padding-right: 1rem !important;\n    padding-left: 1rem !important;\n  }\n\n  .px-xxl-4 {\n    padding-right: 1.5rem !important;\n    padding-left: 1.5rem !important;\n  }\n\n  .px-xxl-5 {\n    padding-right: 3rem !important;\n    padding-left: 3rem !important;\n  }\n\n  .py-xxl-0 {\n    padding-top: 0 !important;\n    padding-bottom: 0 !important;\n  }\n\n  .py-xxl-1 {\n    padding-top: 0.25rem !important;\n    padding-bottom: 0.25rem !important;\n  }\n\n  .py-xxl-2 {\n    padding-top: 0.5rem !important;\n    padding-bottom: 0.5rem !important;\n  }\n\n  .py-xxl-3 {\n    padding-top: 1rem !important;\n    padding-bottom: 1rem !important;\n  }\n\n  .py-xxl-4 {\n    padding-top: 1.5rem !important;\n    padding-bottom: 1.5rem !important;\n  }\n\n  .py-xxl-5 {\n    padding-top: 3rem !important;\n    padding-bottom: 3rem !important;\n  }\n\n  .pt-xxl-0 {\n    padding-top: 0 !important;\n  }\n\n  .pt-xxl-1 {\n    padding-top: 0.25rem !important;\n  }\n\n  .pt-xxl-2 {\n    padding-top: 0.5rem !important;\n  }\n\n  .pt-xxl-3 {\n    padding-top: 1rem !important;\n  }\n\n  .pt-xxl-4 {\n    padding-top: 1.5rem !important;\n  }\n\n  .pt-xxl-5 {\n    padding-top: 3rem !important;\n  }\n\n  .pe-xxl-0 {\n    padding-right: 0 !important;\n  }\n\n  .pe-xxl-1 {\n    padding-right: 0.25rem !important;\n  }\n\n  .pe-xxl-2 {\n    padding-right: 0.5rem !important;\n  }\n\n  .pe-xxl-3 {\n    padding-right: 1rem !important;\n  }\n\n  .pe-xxl-4 {\n    padding-right: 1.5rem !important;\n  }\n\n  .pe-xxl-5 {\n    padding-right: 3rem !important;\n  }\n\n  .pb-xxl-0 {\n    padding-bottom: 0 !important;\n  }\n\n  .pb-xxl-1 {\n    padding-bottom: 0.25rem !important;\n  }\n\n  .pb-xxl-2 {\n    padding-bottom: 0.5rem !important;\n  }\n\n  .pb-xxl-3 {\n    padding-bottom: 1rem !important;\n  }\n\n  .pb-xxl-4 {\n    padding-bottom: 1.5rem !important;\n  }\n\n  .pb-xxl-5 {\n    padding-bottom: 3rem !important;\n  }\n\n  .ps-xxl-0 {\n    padding-left: 0 !important;\n  }\n\n  .ps-xxl-1 {\n    padding-left: 0.25rem !important;\n  }\n\n  .ps-xxl-2 {\n    padding-left: 0.5rem !important;\n  }\n\n  .ps-xxl-3 {\n    padding-left: 1rem !important;\n  }\n\n  .ps-xxl-4 {\n    padding-left: 1.5rem !important;\n  }\n\n  .ps-xxl-5 {\n    padding-left: 3rem !important;\n  }\n\n  .text-xxl-start {\n    text-align: left !important;\n  }\n\n  .text-xxl-end {\n    text-align: right !important;\n  }\n\n  .text-xxl-center {\n    text-align: center !important;\n  }\n}\n@media (min-width: 1200px) {\n  .fs-1 {\n    font-size: 2.5rem !important;\n  }\n\n  .fs-2 {\n    font-size: 2rem !important;\n  }\n\n  .fs-3 {\n    font-size: 1.75rem !important;\n  }\n\n  .fs-4 {\n    font-size: 1.5rem !important;\n  }\n}\n@media print {\n  .d-print-inline {\n    display: inline !important;\n  }\n\n  .d-print-inline-block {\n    display: inline-block !important;\n  }\n\n  .d-print-block {\n    display: block !important;\n  }\n\n  .d-print-grid {\n    display: grid !important;\n  }\n\n  .d-print-table {\n    display: table !important;\n  }\n\n  .d-print-table-row {\n    display: table-row !important;\n  }\n\n  .d-print-table-cell {\n    display: table-cell !important;\n  }\n\n  .d-print-flex {\n    display: flex !important;\n  }\n\n  .d-print-inline-flex {\n    display: inline-flex !important;\n  }\n\n  .d-print-none {\n    display: none !important;\n  }\n}\n\n/*# sourceMappingURL=bootstrap-utilities.css.map */"
  },
  {
    "path": "application/public/bootstrap/css/bootstrap-utilities.rtl.css",
    "content": "/*!\n * Bootstrap Utilities v5.1.3 (https://getbootstrap.com/)\n * Copyright 2011-2021 The Bootstrap Authors\n * Copyright 2011-2021 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n */\n.clearfix::after {\n  display: block;\n  clear: both;\n  content: \"\";\n}\n\n.link-primary {\n  color: #0d6efd;\n}\n.link-primary:hover, .link-primary:focus {\n  color: #0a58ca;\n}\n\n.link-secondary {\n  color: #6c757d;\n}\n.link-secondary:hover, .link-secondary:focus {\n  color: #565e64;\n}\n\n.link-success {\n  color: #198754;\n}\n.link-success:hover, .link-success:focus {\n  color: #146c43;\n}\n\n.link-info {\n  color: #0dcaf0;\n}\n.link-info:hover, .link-info:focus {\n  color: #3dd5f3;\n}\n\n.link-warning {\n  color: #ffc107;\n}\n.link-warning:hover, .link-warning:focus {\n  color: #ffcd39;\n}\n\n.link-danger {\n  color: #dc3545;\n}\n.link-danger:hover, .link-danger:focus {\n  color: #b02a37;\n}\n\n.link-light {\n  color: #f8f9fa;\n}\n.link-light:hover, .link-light:focus {\n  color: #f9fafb;\n}\n\n.link-dark {\n  color: #212529;\n}\n.link-dark:hover, .link-dark:focus {\n  color: #1a1e21;\n}\n\n.ratio {\n  position: relative;\n  width: 100%;\n}\n.ratio::before {\n  display: block;\n  padding-top: var(--bs-aspect-ratio);\n  content: \"\";\n}\n.ratio > * {\n  position: absolute;\n  top: 0;\n  right: 0;\n  width: 100%;\n  height: 100%;\n}\n\n.ratio-1x1 {\n  --bs-aspect-ratio: 100%;\n}\n\n.ratio-4x3 {\n  --bs-aspect-ratio: 75%;\n}\n\n.ratio-16x9 {\n  --bs-aspect-ratio: 56.25%;\n}\n\n.ratio-21x9 {\n  --bs-aspect-ratio: 42.8571428571%;\n}\n\n.fixed-top {\n  position: fixed;\n  top: 0;\n  left: 0;\n  right: 0;\n  z-index: 1030;\n}\n\n.fixed-bottom {\n  position: fixed;\n  left: 0;\n  bottom: 0;\n  right: 0;\n  z-index: 1030;\n}\n\n.sticky-top {\n  position: -webkit-sticky;\n  position: sticky;\n  top: 0;\n  z-index: 1020;\n}\n\n@media (min-width: 576px) {\n  .sticky-sm-top {\n    position: -webkit-sticky;\n    position: sticky;\n    top: 0;\n    z-index: 1020;\n  }\n}\n@media (min-width: 768px) {\n  .sticky-md-top {\n    position: -webkit-sticky;\n    position: sticky;\n    top: 0;\n    z-index: 1020;\n  }\n}\n@media (min-width: 992px) {\n  .sticky-lg-top {\n    position: -webkit-sticky;\n    position: sticky;\n    top: 0;\n    z-index: 1020;\n  }\n}\n@media (min-width: 1200px) {\n  .sticky-xl-top {\n    position: -webkit-sticky;\n    position: sticky;\n    top: 0;\n    z-index: 1020;\n  }\n}\n@media (min-width: 1400px) {\n  .sticky-xxl-top {\n    position: -webkit-sticky;\n    position: sticky;\n    top: 0;\n    z-index: 1020;\n  }\n}\n.hstack {\n  display: flex;\n  flex-direction: row;\n  align-items: center;\n  align-self: stretch;\n}\n\n.vstack {\n  display: flex;\n  flex: 1 1 auto;\n  flex-direction: column;\n  align-self: stretch;\n}\n\n.visually-hidden,\n.visually-hidden-focusable:not(:focus):not(:focus-within) {\n  position: absolute !important;\n  width: 1px !important;\n  height: 1px !important;\n  padding: 0 !important;\n  margin: -1px !important;\n  overflow: hidden !important;\n  clip: rect(0, 0, 0, 0) !important;\n  white-space: nowrap !important;\n  border: 0 !important;\n}\n\n.stretched-link::after {\n  position: absolute;\n  top: 0;\n  left: 0;\n  bottom: 0;\n  right: 0;\n  z-index: 1;\n  content: \"\";\n}\n\n.text-truncate {\n  overflow: hidden;\n  text-overflow: ellipsis;\n  white-space: nowrap;\n}\n\n.vr {\n  display: inline-block;\n  align-self: stretch;\n  width: 1px;\n  min-height: 1em;\n  background-color: currentColor;\n  opacity: 0.25;\n}\n\n.align-baseline {\n  vertical-align: baseline !important;\n}\n\n.align-top {\n  vertical-align: top !important;\n}\n\n.align-middle {\n  vertical-align: middle !important;\n}\n\n.align-bottom {\n  vertical-align: bottom !important;\n}\n\n.align-text-bottom {\n  vertical-align: text-bottom !important;\n}\n\n.align-text-top {\n  vertical-align: text-top !important;\n}\n\n.float-start {\n  float: right !important;\n}\n\n.float-end {\n  float: left !important;\n}\n\n.float-none {\n  float: none !important;\n}\n\n.opacity-0 {\n  opacity: 0 !important;\n}\n\n.opacity-25 {\n  opacity: 0.25 !important;\n}\n\n.opacity-50 {\n  opacity: 0.5 !important;\n}\n\n.opacity-75 {\n  opacity: 0.75 !important;\n}\n\n.opacity-100 {\n  opacity: 1 !important;\n}\n\n.overflow-auto {\n  overflow: auto !important;\n}\n\n.overflow-hidden {\n  overflow: hidden !important;\n}\n\n.overflow-visible {\n  overflow: visible !important;\n}\n\n.overflow-scroll {\n  overflow: scroll !important;\n}\n\n.d-inline {\n  display: inline !important;\n}\n\n.d-inline-block {\n  display: inline-block !important;\n}\n\n.d-block {\n  display: block !important;\n}\n\n.d-grid {\n  display: grid !important;\n}\n\n.d-table {\n  display: table !important;\n}\n\n.d-table-row {\n  display: table-row !important;\n}\n\n.d-table-cell {\n  display: table-cell !important;\n}\n\n.d-flex {\n  display: flex !important;\n}\n\n.d-inline-flex {\n  display: inline-flex !important;\n}\n\n.d-none {\n  display: none !important;\n}\n\n.shadow {\n  box-shadow: 0 0.5rem 1rem rgba(0, 0, 0, 0.15) !important;\n}\n\n.shadow-sm {\n  box-shadow: 0 0.125rem 0.25rem rgba(0, 0, 0, 0.075) !important;\n}\n\n.shadow-lg {\n  box-shadow: 0 1rem 3rem rgba(0, 0, 0, 0.175) !important;\n}\n\n.shadow-none {\n  box-shadow: none !important;\n}\n\n.position-static {\n  position: static !important;\n}\n\n.position-relative {\n  position: relative !important;\n}\n\n.position-absolute {\n  position: absolute !important;\n}\n\n.position-fixed {\n  position: fixed !important;\n}\n\n.position-sticky {\n  position: -webkit-sticky !important;\n  position: sticky !important;\n}\n\n.top-0 {\n  top: 0 !important;\n}\n\n.top-50 {\n  top: 50% !important;\n}\n\n.top-100 {\n  top: 100% !important;\n}\n\n.bottom-0 {\n  bottom: 0 !important;\n}\n\n.bottom-50 {\n  bottom: 50% !important;\n}\n\n.bottom-100 {\n  bottom: 100% !important;\n}\n\n.start-0 {\n  right: 0 !important;\n}\n\n.start-50 {\n  right: 50% !important;\n}\n\n.start-100 {\n  right: 100% !important;\n}\n\n.end-0 {\n  left: 0 !important;\n}\n\n.end-50 {\n  left: 50% !important;\n}\n\n.end-100 {\n  left: 100% !important;\n}\n\n.translate-middle {\n  transform: translate(50%, -50%) !important;\n}\n\n.translate-middle-x {\n  transform: translateX(50%) !important;\n}\n\n.translate-middle-y {\n  transform: translateY(-50%) !important;\n}\n\n.border {\n  border: 1px solid #dee2e6 !important;\n}\n\n.border-0 {\n  border: 0 !important;\n}\n\n.border-top {\n  border-top: 1px solid #dee2e6 !important;\n}\n\n.border-top-0 {\n  border-top: 0 !important;\n}\n\n.border-end {\n  border-left: 1px solid #dee2e6 !important;\n}\n\n.border-end-0 {\n  border-left: 0 !important;\n}\n\n.border-bottom {\n  border-bottom: 1px solid #dee2e6 !important;\n}\n\n.border-bottom-0 {\n  border-bottom: 0 !important;\n}\n\n.border-start {\n  border-right: 1px solid #dee2e6 !important;\n}\n\n.border-start-0 {\n  border-right: 0 !important;\n}\n\n.border-primary {\n  border-color: #0d6efd !important;\n}\n\n.border-secondary {\n  border-color: #6c757d !important;\n}\n\n.border-success {\n  border-color: #198754 !important;\n}\n\n.border-info {\n  border-color: #0dcaf0 !important;\n}\n\n.border-warning {\n  border-color: #ffc107 !important;\n}\n\n.border-danger {\n  border-color: #dc3545 !important;\n}\n\n.border-light {\n  border-color: #f8f9fa !important;\n}\n\n.border-dark {\n  border-color: #212529 !important;\n}\n\n.border-white {\n  border-color: #fff !important;\n}\n\n.border-1 {\n  border-width: 1px !important;\n}\n\n.border-2 {\n  border-width: 2px !important;\n}\n\n.border-3 {\n  border-width: 3px !important;\n}\n\n.border-4 {\n  border-width: 4px !important;\n}\n\n.border-5 {\n  border-width: 5px !important;\n}\n\n.w-25 {\n  width: 25% !important;\n}\n\n.w-50 {\n  width: 50% !important;\n}\n\n.w-75 {\n  width: 75% !important;\n}\n\n.w-100 {\n  width: 100% !important;\n}\n\n.w-auto {\n  width: auto !important;\n}\n\n.mw-100 {\n  max-width: 100% !important;\n}\n\n.vw-100 {\n  width: 100vw !important;\n}\n\n.min-vw-100 {\n  min-width: 100vw !important;\n}\n\n.h-25 {\n  height: 25% !important;\n}\n\n.h-50 {\n  height: 50% !important;\n}\n\n.h-75 {\n  height: 75% !important;\n}\n\n.h-100 {\n  height: 100% !important;\n}\n\n.h-auto {\n  height: auto !important;\n}\n\n.mh-100 {\n  max-height: 100% !important;\n}\n\n.vh-100 {\n  height: 100vh !important;\n}\n\n.min-vh-100 {\n  min-height: 100vh !important;\n}\n\n.flex-fill {\n  flex: 1 1 auto !important;\n}\n\n.flex-row {\n  flex-direction: row !important;\n}\n\n.flex-column {\n  flex-direction: column !important;\n}\n\n.flex-row-reverse {\n  flex-direction: row-reverse !important;\n}\n\n.flex-column-reverse {\n  flex-direction: column-reverse !important;\n}\n\n.flex-grow-0 {\n  flex-grow: 0 !important;\n}\n\n.flex-grow-1 {\n  flex-grow: 1 !important;\n}\n\n.flex-shrink-0 {\n  flex-shrink: 0 !important;\n}\n\n.flex-shrink-1 {\n  flex-shrink: 1 !important;\n}\n\n.flex-wrap {\n  flex-wrap: wrap !important;\n}\n\n.flex-nowrap {\n  flex-wrap: nowrap !important;\n}\n\n.flex-wrap-reverse {\n  flex-wrap: wrap-reverse !important;\n}\n\n.gap-0 {\n  gap: 0 !important;\n}\n\n.gap-1 {\n  gap: 0.25rem !important;\n}\n\n.gap-2 {\n  gap: 0.5rem !important;\n}\n\n.gap-3 {\n  gap: 1rem !important;\n}\n\n.gap-4 {\n  gap: 1.5rem !important;\n}\n\n.gap-5 {\n  gap: 3rem !important;\n}\n\n.justify-content-start {\n  justify-content: flex-start !important;\n}\n\n.justify-content-end {\n  justify-content: flex-end !important;\n}\n\n.justify-content-center {\n  justify-content: center !important;\n}\n\n.justify-content-between {\n  justify-content: space-between !important;\n}\n\n.justify-content-around {\n  justify-content: space-around !important;\n}\n\n.justify-content-evenly {\n  justify-content: space-evenly !important;\n}\n\n.align-items-start {\n  align-items: flex-start !important;\n}\n\n.align-items-end {\n  align-items: flex-end !important;\n}\n\n.align-items-center {\n  align-items: center !important;\n}\n\n.align-items-baseline {\n  align-items: baseline !important;\n}\n\n.align-items-stretch {\n  align-items: stretch !important;\n}\n\n.align-content-start {\n  align-content: flex-start !important;\n}\n\n.align-content-end {\n  align-content: flex-end !important;\n}\n\n.align-content-center {\n  align-content: center !important;\n}\n\n.align-content-between {\n  align-content: space-between !important;\n}\n\n.align-content-around {\n  align-content: space-around !important;\n}\n\n.align-content-stretch {\n  align-content: stretch !important;\n}\n\n.align-self-auto {\n  align-self: auto !important;\n}\n\n.align-self-start {\n  align-self: flex-start !important;\n}\n\n.align-self-end {\n  align-self: flex-end !important;\n}\n\n.align-self-center {\n  align-self: center !important;\n}\n\n.align-self-baseline {\n  align-self: baseline !important;\n}\n\n.align-self-stretch {\n  align-self: stretch !important;\n}\n\n.order-first {\n  order: -1 !important;\n}\n\n.order-0 {\n  order: 0 !important;\n}\n\n.order-1 {\n  order: 1 !important;\n}\n\n.order-2 {\n  order: 2 !important;\n}\n\n.order-3 {\n  order: 3 !important;\n}\n\n.order-4 {\n  order: 4 !important;\n}\n\n.order-5 {\n  order: 5 !important;\n}\n\n.order-last {\n  order: 6 !important;\n}\n\n.m-0 {\n  margin: 0 !important;\n}\n\n.m-1 {\n  margin: 0.25rem !important;\n}\n\n.m-2 {\n  margin: 0.5rem !important;\n}\n\n.m-3 {\n  margin: 1rem !important;\n}\n\n.m-4 {\n  margin: 1.5rem !important;\n}\n\n.m-5 {\n  margin: 3rem !important;\n}\n\n.m-auto {\n  margin: auto !important;\n}\n\n.mx-0 {\n  margin-left: 0 !important;\n  margin-right: 0 !important;\n}\n\n.mx-1 {\n  margin-left: 0.25rem !important;\n  margin-right: 0.25rem !important;\n}\n\n.mx-2 {\n  margin-left: 0.5rem !important;\n  margin-right: 0.5rem !important;\n}\n\n.mx-3 {\n  margin-left: 1rem !important;\n  margin-right: 1rem !important;\n}\n\n.mx-4 {\n  margin-left: 1.5rem !important;\n  margin-right: 1.5rem !important;\n}\n\n.mx-5 {\n  margin-left: 3rem !important;\n  margin-right: 3rem !important;\n}\n\n.mx-auto {\n  margin-left: auto !important;\n  margin-right: auto !important;\n}\n\n.my-0 {\n  margin-top: 0 !important;\n  margin-bottom: 0 !important;\n}\n\n.my-1 {\n  margin-top: 0.25rem !important;\n  margin-bottom: 0.25rem !important;\n}\n\n.my-2 {\n  margin-top: 0.5rem !important;\n  margin-bottom: 0.5rem !important;\n}\n\n.my-3 {\n  margin-top: 1rem !important;\n  margin-bottom: 1rem !important;\n}\n\n.my-4 {\n  margin-top: 1.5rem !important;\n  margin-bottom: 1.5rem !important;\n}\n\n.my-5 {\n  margin-top: 3rem !important;\n  margin-bottom: 3rem !important;\n}\n\n.my-auto {\n  margin-top: auto !important;\n  margin-bottom: auto !important;\n}\n\n.mt-0 {\n  margin-top: 0 !important;\n}\n\n.mt-1 {\n  margin-top: 0.25rem !important;\n}\n\n.mt-2 {\n  margin-top: 0.5rem !important;\n}\n\n.mt-3 {\n  margin-top: 1rem !important;\n}\n\n.mt-4 {\n  margin-top: 1.5rem !important;\n}\n\n.mt-5 {\n  margin-top: 3rem !important;\n}\n\n.mt-auto {\n  margin-top: auto !important;\n}\n\n.me-0 {\n  margin-left: 0 !important;\n}\n\n.me-1 {\n  margin-left: 0.25rem !important;\n}\n\n.me-2 {\n  margin-left: 0.5rem !important;\n}\n\n.me-3 {\n  margin-left: 1rem !important;\n}\n\n.me-4 {\n  margin-left: 1.5rem !important;\n}\n\n.me-5 {\n  margin-left: 3rem !important;\n}\n\n.me-auto {\n  margin-left: auto !important;\n}\n\n.mb-0 {\n  margin-bottom: 0 !important;\n}\n\n.mb-1 {\n  margin-bottom: 0.25rem !important;\n}\n\n.mb-2 {\n  margin-bottom: 0.5rem !important;\n}\n\n.mb-3 {\n  margin-bottom: 1rem !important;\n}\n\n.mb-4 {\n  margin-bottom: 1.5rem !important;\n}\n\n.mb-5 {\n  margin-bottom: 3rem !important;\n}\n\n.mb-auto {\n  margin-bottom: auto !important;\n}\n\n.ms-0 {\n  margin-right: 0 !important;\n}\n\n.ms-1 {\n  margin-right: 0.25rem !important;\n}\n\n.ms-2 {\n  margin-right: 0.5rem !important;\n}\n\n.ms-3 {\n  margin-right: 1rem !important;\n}\n\n.ms-4 {\n  margin-right: 1.5rem !important;\n}\n\n.ms-5 {\n  margin-right: 3rem !important;\n}\n\n.ms-auto {\n  margin-right: auto !important;\n}\n\n.p-0 {\n  padding: 0 !important;\n}\n\n.p-1 {\n  padding: 0.25rem !important;\n}\n\n.p-2 {\n  padding: 0.5rem !important;\n}\n\n.p-3 {\n  padding: 1rem !important;\n}\n\n.p-4 {\n  padding: 1.5rem !important;\n}\n\n.p-5 {\n  padding: 3rem !important;\n}\n\n.px-0 {\n  padding-left: 0 !important;\n  padding-right: 0 !important;\n}\n\n.px-1 {\n  padding-left: 0.25rem !important;\n  padding-right: 0.25rem !important;\n}\n\n.px-2 {\n  padding-left: 0.5rem !important;\n  padding-right: 0.5rem !important;\n}\n\n.px-3 {\n  padding-left: 1rem !important;\n  padding-right: 1rem !important;\n}\n\n.px-4 {\n  padding-left: 1.5rem !important;\n  padding-right: 1.5rem !important;\n}\n\n.px-5 {\n  padding-left: 3rem !important;\n  padding-right: 3rem !important;\n}\n\n.py-0 {\n  padding-top: 0 !important;\n  padding-bottom: 0 !important;\n}\n\n.py-1 {\n  padding-top: 0.25rem !important;\n  padding-bottom: 0.25rem !important;\n}\n\n.py-2 {\n  padding-top: 0.5rem !important;\n  padding-bottom: 0.5rem !important;\n}\n\n.py-3 {\n  padding-top: 1rem !important;\n  padding-bottom: 1rem !important;\n}\n\n.py-4 {\n  padding-top: 1.5rem !important;\n  padding-bottom: 1.5rem !important;\n}\n\n.py-5 {\n  padding-top: 3rem !important;\n  padding-bottom: 3rem !important;\n}\n\n.pt-0 {\n  padding-top: 0 !important;\n}\n\n.pt-1 {\n  padding-top: 0.25rem !important;\n}\n\n.pt-2 {\n  padding-top: 0.5rem !important;\n}\n\n.pt-3 {\n  padding-top: 1rem !important;\n}\n\n.pt-4 {\n  padding-top: 1.5rem !important;\n}\n\n.pt-5 {\n  padding-top: 3rem !important;\n}\n\n.pe-0 {\n  padding-left: 0 !important;\n}\n\n.pe-1 {\n  padding-left: 0.25rem !important;\n}\n\n.pe-2 {\n  padding-left: 0.5rem !important;\n}\n\n.pe-3 {\n  padding-left: 1rem !important;\n}\n\n.pe-4 {\n  padding-left: 1.5rem !important;\n}\n\n.pe-5 {\n  padding-left: 3rem !important;\n}\n\n.pb-0 {\n  padding-bottom: 0 !important;\n}\n\n.pb-1 {\n  padding-bottom: 0.25rem !important;\n}\n\n.pb-2 {\n  padding-bottom: 0.5rem !important;\n}\n\n.pb-3 {\n  padding-bottom: 1rem !important;\n}\n\n.pb-4 {\n  padding-bottom: 1.5rem !important;\n}\n\n.pb-5 {\n  padding-bottom: 3rem !important;\n}\n\n.ps-0 {\n  padding-right: 0 !important;\n}\n\n.ps-1 {\n  padding-right: 0.25rem !important;\n}\n\n.ps-2 {\n  padding-right: 0.5rem !important;\n}\n\n.ps-3 {\n  padding-right: 1rem !important;\n}\n\n.ps-4 {\n  padding-right: 1.5rem !important;\n}\n\n.ps-5 {\n  padding-right: 3rem !important;\n}\n\n.font-monospace {\n  font-family: var(--bs-font-monospace) !important;\n}\n\n.fs-1 {\n  font-size: calc(1.375rem + 1.5vw) !important;\n}\n\n.fs-2 {\n  font-size: calc(1.325rem + 0.9vw) !important;\n}\n\n.fs-3 {\n  font-size: calc(1.3rem + 0.6vw) !important;\n}\n\n.fs-4 {\n  font-size: calc(1.275rem + 0.3vw) !important;\n}\n\n.fs-5 {\n  font-size: 1.25rem !important;\n}\n\n.fs-6 {\n  font-size: 1rem !important;\n}\n\n.fst-italic {\n  font-style: italic !important;\n}\n\n.fst-normal {\n  font-style: normal !important;\n}\n\n.fw-light {\n  font-weight: 300 !important;\n}\n\n.fw-lighter {\n  font-weight: lighter !important;\n}\n\n.fw-normal {\n  font-weight: 400 !important;\n}\n\n.fw-bold {\n  font-weight: 700 !important;\n}\n\n.fw-bolder {\n  font-weight: bolder !important;\n}\n\n.lh-1 {\n  line-height: 1 !important;\n}\n\n.lh-sm {\n  line-height: 1.25 !important;\n}\n\n.lh-base {\n  line-height: 1.5 !important;\n}\n\n.lh-lg {\n  line-height: 2 !important;\n}\n\n.text-start {\n  text-align: right !important;\n}\n\n.text-end {\n  text-align: left !important;\n}\n\n.text-center {\n  text-align: center !important;\n}\n\n.text-decoration-none {\n  text-decoration: none !important;\n}\n\n.text-decoration-underline {\n  text-decoration: underline !important;\n}\n\n.text-decoration-line-through {\n  text-decoration: line-through !important;\n}\n\n.text-lowercase {\n  text-transform: lowercase !important;\n}\n\n.text-uppercase {\n  text-transform: uppercase !important;\n}\n\n.text-capitalize {\n  text-transform: capitalize !important;\n}\n\n.text-wrap {\n  white-space: normal !important;\n}\n\n.text-nowrap {\n  white-space: nowrap !important;\n}\n.text-primary {\n  --bs-text-opacity: 1;\n  color: rgba(var(--bs-primary-rgb), var(--bs-text-opacity)) !important;\n}\n\n.text-secondary {\n  --bs-text-opacity: 1;\n  color: rgba(var(--bs-secondary-rgb), var(--bs-text-opacity)) !important;\n}\n\n.text-success {\n  --bs-text-opacity: 1;\n  color: rgba(var(--bs-success-rgb), var(--bs-text-opacity)) !important;\n}\n\n.text-info {\n  --bs-text-opacity: 1;\n  color: rgba(var(--bs-info-rgb), var(--bs-text-opacity)) !important;\n}\n\n.text-warning {\n  --bs-text-opacity: 1;\n  color: rgba(var(--bs-warning-rgb), var(--bs-text-opacity)) !important;\n}\n\n.text-danger {\n  --bs-text-opacity: 1;\n  color: rgba(var(--bs-danger-rgb), var(--bs-text-opacity)) !important;\n}\n\n.text-light {\n  --bs-text-opacity: 1;\n  color: rgba(var(--bs-light-rgb), var(--bs-text-opacity)) !important;\n}\n\n.text-dark {\n  --bs-text-opacity: 1;\n  color: rgba(var(--bs-dark-rgb), var(--bs-text-opacity)) !important;\n}\n\n.text-black {\n  --bs-text-opacity: 1;\n  color: rgba(var(--bs-black-rgb), var(--bs-text-opacity)) !important;\n}\n\n.text-white {\n  --bs-text-opacity: 1;\n  color: rgba(var(--bs-white-rgb), var(--bs-text-opacity)) !important;\n}\n\n.text-body {\n  --bs-text-opacity: 1;\n  color: rgba(var(--bs-body-color-rgb), var(--bs-text-opacity)) !important;\n}\n\n.text-muted {\n  --bs-text-opacity: 1;\n  color: #6c757d !important;\n}\n\n.text-black-50 {\n  --bs-text-opacity: 1;\n  color: rgba(0, 0, 0, 0.5) !important;\n}\n\n.text-white-50 {\n  --bs-text-opacity: 1;\n  color: rgba(255, 255, 255, 0.5) !important;\n}\n\n.text-reset {\n  --bs-text-opacity: 1;\n  color: inherit !important;\n}\n\n.text-opacity-25 {\n  --bs-text-opacity: 0.25;\n}\n\n.text-opacity-50 {\n  --bs-text-opacity: 0.5;\n}\n\n.text-opacity-75 {\n  --bs-text-opacity: 0.75;\n}\n\n.text-opacity-100 {\n  --bs-text-opacity: 1;\n}\n\n.bg-primary {\n  --bs-bg-opacity: 1;\n  background-color: rgba(var(--bs-primary-rgb), var(--bs-bg-opacity)) !important;\n}\n\n.bg-secondary {\n  --bs-bg-opacity: 1;\n  background-color: rgba(var(--bs-secondary-rgb), var(--bs-bg-opacity)) !important;\n}\n\n.bg-success {\n  --bs-bg-opacity: 1;\n  background-color: rgba(var(--bs-success-rgb), var(--bs-bg-opacity)) !important;\n}\n\n.bg-info {\n  --bs-bg-opacity: 1;\n  background-color: rgba(var(--bs-info-rgb), var(--bs-bg-opacity)) !important;\n}\n\n.bg-warning {\n  --bs-bg-opacity: 1;\n  background-color: rgba(var(--bs-warning-rgb), var(--bs-bg-opacity)) !important;\n}\n\n.bg-danger {\n  --bs-bg-opacity: 1;\n  background-color: rgba(var(--bs-danger-rgb), var(--bs-bg-opacity)) !important;\n}\n\n.bg-light {\n  --bs-bg-opacity: 1;\n  background-color: rgba(var(--bs-light-rgb), var(--bs-bg-opacity)) !important;\n}\n\n.bg-dark {\n  --bs-bg-opacity: 1;\n  background-color: rgba(var(--bs-dark-rgb), var(--bs-bg-opacity)) !important;\n}\n\n.bg-black {\n  --bs-bg-opacity: 1;\n  background-color: rgba(var(--bs-black-rgb), var(--bs-bg-opacity)) !important;\n}\n\n.bg-white {\n  --bs-bg-opacity: 1;\n  background-color: rgba(var(--bs-white-rgb), var(--bs-bg-opacity)) !important;\n}\n\n.bg-body {\n  --bs-bg-opacity: 1;\n  background-color: rgba(var(--bs-body-bg-rgb), var(--bs-bg-opacity)) !important;\n}\n\n.bg-transparent {\n  --bs-bg-opacity: 1;\n  background-color: transparent !important;\n}\n\n.bg-opacity-10 {\n  --bs-bg-opacity: 0.1;\n}\n\n.bg-opacity-25 {\n  --bs-bg-opacity: 0.25;\n}\n\n.bg-opacity-50 {\n  --bs-bg-opacity: 0.5;\n}\n\n.bg-opacity-75 {\n  --bs-bg-opacity: 0.75;\n}\n\n.bg-opacity-100 {\n  --bs-bg-opacity: 1;\n}\n\n.bg-gradient {\n  background-image: var(--bs-gradient) !important;\n}\n\n.user-select-all {\n  -webkit-user-select: all !important;\n  -moz-user-select: all !important;\n  user-select: all !important;\n}\n\n.user-select-auto {\n  -webkit-user-select: auto !important;\n  -moz-user-select: auto !important;\n  user-select: auto !important;\n}\n\n.user-select-none {\n  -webkit-user-select: none !important;\n  -moz-user-select: none !important;\n  user-select: none !important;\n}\n\n.pe-none {\n  pointer-events: none !important;\n}\n\n.pe-auto {\n  pointer-events: auto !important;\n}\n\n.rounded {\n  border-radius: 0.25rem !important;\n}\n\n.rounded-0 {\n  border-radius: 0 !important;\n}\n\n.rounded-1 {\n  border-radius: 0.2rem !important;\n}\n\n.rounded-2 {\n  border-radius: 0.25rem !important;\n}\n\n.rounded-3 {\n  border-radius: 0.3rem !important;\n}\n\n.rounded-circle {\n  border-radius: 50% !important;\n}\n\n.rounded-pill {\n  border-radius: 50rem !important;\n}\n\n.rounded-top {\n  border-top-right-radius: 0.25rem !important;\n  border-top-left-radius: 0.25rem !important;\n}\n\n.rounded-end {\n  border-top-left-radius: 0.25rem !important;\n  border-bottom-left-radius: 0.25rem !important;\n}\n\n.rounded-bottom {\n  border-bottom-left-radius: 0.25rem !important;\n  border-bottom-right-radius: 0.25rem !important;\n}\n\n.rounded-start {\n  border-bottom-right-radius: 0.25rem !important;\n  border-top-right-radius: 0.25rem !important;\n}\n\n.visible {\n  visibility: visible !important;\n}\n\n.invisible {\n  visibility: hidden !important;\n}\n\n@media (min-width: 576px) {\n  .float-sm-start {\n    float: right !important;\n  }\n\n  .float-sm-end {\n    float: left !important;\n  }\n\n  .float-sm-none {\n    float: none !important;\n  }\n\n  .d-sm-inline {\n    display: inline !important;\n  }\n\n  .d-sm-inline-block {\n    display: inline-block !important;\n  }\n\n  .d-sm-block {\n    display: block !important;\n  }\n\n  .d-sm-grid {\n    display: grid !important;\n  }\n\n  .d-sm-table {\n    display: table !important;\n  }\n\n  .d-sm-table-row {\n    display: table-row !important;\n  }\n\n  .d-sm-table-cell {\n    display: table-cell !important;\n  }\n\n  .d-sm-flex {\n    display: flex !important;\n  }\n\n  .d-sm-inline-flex {\n    display: inline-flex !important;\n  }\n\n  .d-sm-none {\n    display: none !important;\n  }\n\n  .flex-sm-fill {\n    flex: 1 1 auto !important;\n  }\n\n  .flex-sm-row {\n    flex-direction: row !important;\n  }\n\n  .flex-sm-column {\n    flex-direction: column !important;\n  }\n\n  .flex-sm-row-reverse {\n    flex-direction: row-reverse !important;\n  }\n\n  .flex-sm-column-reverse {\n    flex-direction: column-reverse !important;\n  }\n\n  .flex-sm-grow-0 {\n    flex-grow: 0 !important;\n  }\n\n  .flex-sm-grow-1 {\n    flex-grow: 1 !important;\n  }\n\n  .flex-sm-shrink-0 {\n    flex-shrink: 0 !important;\n  }\n\n  .flex-sm-shrink-1 {\n    flex-shrink: 1 !important;\n  }\n\n  .flex-sm-wrap {\n    flex-wrap: wrap !important;\n  }\n\n  .flex-sm-nowrap {\n    flex-wrap: nowrap !important;\n  }\n\n  .flex-sm-wrap-reverse {\n    flex-wrap: wrap-reverse !important;\n  }\n\n  .gap-sm-0 {\n    gap: 0 !important;\n  }\n\n  .gap-sm-1 {\n    gap: 0.25rem !important;\n  }\n\n  .gap-sm-2 {\n    gap: 0.5rem !important;\n  }\n\n  .gap-sm-3 {\n    gap: 1rem !important;\n  }\n\n  .gap-sm-4 {\n    gap: 1.5rem !important;\n  }\n\n  .gap-sm-5 {\n    gap: 3rem !important;\n  }\n\n  .justify-content-sm-start {\n    justify-content: flex-start !important;\n  }\n\n  .justify-content-sm-end {\n    justify-content: flex-end !important;\n  }\n\n  .justify-content-sm-center {\n    justify-content: center !important;\n  }\n\n  .justify-content-sm-between {\n    justify-content: space-between !important;\n  }\n\n  .justify-content-sm-around {\n    justify-content: space-around !important;\n  }\n\n  .justify-content-sm-evenly {\n    justify-content: space-evenly !important;\n  }\n\n  .align-items-sm-start {\n    align-items: flex-start !important;\n  }\n\n  .align-items-sm-end {\n    align-items: flex-end !important;\n  }\n\n  .align-items-sm-center {\n    align-items: center !important;\n  }\n\n  .align-items-sm-baseline {\n    align-items: baseline !important;\n  }\n\n  .align-items-sm-stretch {\n    align-items: stretch !important;\n  }\n\n  .align-content-sm-start {\n    align-content: flex-start !important;\n  }\n\n  .align-content-sm-end {\n    align-content: flex-end !important;\n  }\n\n  .align-content-sm-center {\n    align-content: center !important;\n  }\n\n  .align-content-sm-between {\n    align-content: space-between !important;\n  }\n\n  .align-content-sm-around {\n    align-content: space-around !important;\n  }\n\n  .align-content-sm-stretch {\n    align-content: stretch !important;\n  }\n\n  .align-self-sm-auto {\n    align-self: auto !important;\n  }\n\n  .align-self-sm-start {\n    align-self: flex-start !important;\n  }\n\n  .align-self-sm-end {\n    align-self: flex-end !important;\n  }\n\n  .align-self-sm-center {\n    align-self: center !important;\n  }\n\n  .align-self-sm-baseline {\n    align-self: baseline !important;\n  }\n\n  .align-self-sm-stretch {\n    align-self: stretch !important;\n  }\n\n  .order-sm-first {\n    order: -1 !important;\n  }\n\n  .order-sm-0 {\n    order: 0 !important;\n  }\n\n  .order-sm-1 {\n    order: 1 !important;\n  }\n\n  .order-sm-2 {\n    order: 2 !important;\n  }\n\n  .order-sm-3 {\n    order: 3 !important;\n  }\n\n  .order-sm-4 {\n    order: 4 !important;\n  }\n\n  .order-sm-5 {\n    order: 5 !important;\n  }\n\n  .order-sm-last {\n    order: 6 !important;\n  }\n\n  .m-sm-0 {\n    margin: 0 !important;\n  }\n\n  .m-sm-1 {\n    margin: 0.25rem !important;\n  }\n\n  .m-sm-2 {\n    margin: 0.5rem !important;\n  }\n\n  .m-sm-3 {\n    margin: 1rem !important;\n  }\n\n  .m-sm-4 {\n    margin: 1.5rem !important;\n  }\n\n  .m-sm-5 {\n    margin: 3rem !important;\n  }\n\n  .m-sm-auto {\n    margin: auto !important;\n  }\n\n  .mx-sm-0 {\n    margin-left: 0 !important;\n    margin-right: 0 !important;\n  }\n\n  .mx-sm-1 {\n    margin-left: 0.25rem !important;\n    margin-right: 0.25rem !important;\n  }\n\n  .mx-sm-2 {\n    margin-left: 0.5rem !important;\n    margin-right: 0.5rem !important;\n  }\n\n  .mx-sm-3 {\n    margin-left: 1rem !important;\n    margin-right: 1rem !important;\n  }\n\n  .mx-sm-4 {\n    margin-left: 1.5rem !important;\n    margin-right: 1.5rem !important;\n  }\n\n  .mx-sm-5 {\n    margin-left: 3rem !important;\n    margin-right: 3rem !important;\n  }\n\n  .mx-sm-auto {\n    margin-left: auto !important;\n    margin-right: auto !important;\n  }\n\n  .my-sm-0 {\n    margin-top: 0 !important;\n    margin-bottom: 0 !important;\n  }\n\n  .my-sm-1 {\n    margin-top: 0.25rem !important;\n    margin-bottom: 0.25rem !important;\n  }\n\n  .my-sm-2 {\n    margin-top: 0.5rem !important;\n    margin-bottom: 0.5rem !important;\n  }\n\n  .my-sm-3 {\n    margin-top: 1rem !important;\n    margin-bottom: 1rem !important;\n  }\n\n  .my-sm-4 {\n    margin-top: 1.5rem !important;\n    margin-bottom: 1.5rem !important;\n  }\n\n  .my-sm-5 {\n    margin-top: 3rem !important;\n    margin-bottom: 3rem !important;\n  }\n\n  .my-sm-auto {\n    margin-top: auto !important;\n    margin-bottom: auto !important;\n  }\n\n  .mt-sm-0 {\n    margin-top: 0 !important;\n  }\n\n  .mt-sm-1 {\n    margin-top: 0.25rem !important;\n  }\n\n  .mt-sm-2 {\n    margin-top: 0.5rem !important;\n  }\n\n  .mt-sm-3 {\n    margin-top: 1rem !important;\n  }\n\n  .mt-sm-4 {\n    margin-top: 1.5rem !important;\n  }\n\n  .mt-sm-5 {\n    margin-top: 3rem !important;\n  }\n\n  .mt-sm-auto {\n    margin-top: auto !important;\n  }\n\n  .me-sm-0 {\n    margin-left: 0 !important;\n  }\n\n  .me-sm-1 {\n    margin-left: 0.25rem !important;\n  }\n\n  .me-sm-2 {\n    margin-left: 0.5rem !important;\n  }\n\n  .me-sm-3 {\n    margin-left: 1rem !important;\n  }\n\n  .me-sm-4 {\n    margin-left: 1.5rem !important;\n  }\n\n  .me-sm-5 {\n    margin-left: 3rem !important;\n  }\n\n  .me-sm-auto {\n    margin-left: auto !important;\n  }\n\n  .mb-sm-0 {\n    margin-bottom: 0 !important;\n  }\n\n  .mb-sm-1 {\n    margin-bottom: 0.25rem !important;\n  }\n\n  .mb-sm-2 {\n    margin-bottom: 0.5rem !important;\n  }\n\n  .mb-sm-3 {\n    margin-bottom: 1rem !important;\n  }\n\n  .mb-sm-4 {\n    margin-bottom: 1.5rem !important;\n  }\n\n  .mb-sm-5 {\n    margin-bottom: 3rem !important;\n  }\n\n  .mb-sm-auto {\n    margin-bottom: auto !important;\n  }\n\n  .ms-sm-0 {\n    margin-right: 0 !important;\n  }\n\n  .ms-sm-1 {\n    margin-right: 0.25rem !important;\n  }\n\n  .ms-sm-2 {\n    margin-right: 0.5rem !important;\n  }\n\n  .ms-sm-3 {\n    margin-right: 1rem !important;\n  }\n\n  .ms-sm-4 {\n    margin-right: 1.5rem !important;\n  }\n\n  .ms-sm-5 {\n    margin-right: 3rem !important;\n  }\n\n  .ms-sm-auto {\n    margin-right: auto !important;\n  }\n\n  .p-sm-0 {\n    padding: 0 !important;\n  }\n\n  .p-sm-1 {\n    padding: 0.25rem !important;\n  }\n\n  .p-sm-2 {\n    padding: 0.5rem !important;\n  }\n\n  .p-sm-3 {\n    padding: 1rem !important;\n  }\n\n  .p-sm-4 {\n    padding: 1.5rem !important;\n  }\n\n  .p-sm-5 {\n    padding: 3rem !important;\n  }\n\n  .px-sm-0 {\n    padding-left: 0 !important;\n    padding-right: 0 !important;\n  }\n\n  .px-sm-1 {\n    padding-left: 0.25rem !important;\n    padding-right: 0.25rem !important;\n  }\n\n  .px-sm-2 {\n    padding-left: 0.5rem !important;\n    padding-right: 0.5rem !important;\n  }\n\n  .px-sm-3 {\n    padding-left: 1rem !important;\n    padding-right: 1rem !important;\n  }\n\n  .px-sm-4 {\n    padding-left: 1.5rem !important;\n    padding-right: 1.5rem !important;\n  }\n\n  .px-sm-5 {\n    padding-left: 3rem !important;\n    padding-right: 3rem !important;\n  }\n\n  .py-sm-0 {\n    padding-top: 0 !important;\n    padding-bottom: 0 !important;\n  }\n\n  .py-sm-1 {\n    padding-top: 0.25rem !important;\n    padding-bottom: 0.25rem !important;\n  }\n\n  .py-sm-2 {\n    padding-top: 0.5rem !important;\n    padding-bottom: 0.5rem !important;\n  }\n\n  .py-sm-3 {\n    padding-top: 1rem !important;\n    padding-bottom: 1rem !important;\n  }\n\n  .py-sm-4 {\n    padding-top: 1.5rem !important;\n    padding-bottom: 1.5rem !important;\n  }\n\n  .py-sm-5 {\n    padding-top: 3rem !important;\n    padding-bottom: 3rem !important;\n  }\n\n  .pt-sm-0 {\n    padding-top: 0 !important;\n  }\n\n  .pt-sm-1 {\n    padding-top: 0.25rem !important;\n  }\n\n  .pt-sm-2 {\n    padding-top: 0.5rem !important;\n  }\n\n  .pt-sm-3 {\n    padding-top: 1rem !important;\n  }\n\n  .pt-sm-4 {\n    padding-top: 1.5rem !important;\n  }\n\n  .pt-sm-5 {\n    padding-top: 3rem !important;\n  }\n\n  .pe-sm-0 {\n    padding-left: 0 !important;\n  }\n\n  .pe-sm-1 {\n    padding-left: 0.25rem !important;\n  }\n\n  .pe-sm-2 {\n    padding-left: 0.5rem !important;\n  }\n\n  .pe-sm-3 {\n    padding-left: 1rem !important;\n  }\n\n  .pe-sm-4 {\n    padding-left: 1.5rem !important;\n  }\n\n  .pe-sm-5 {\n    padding-left: 3rem !important;\n  }\n\n  .pb-sm-0 {\n    padding-bottom: 0 !important;\n  }\n\n  .pb-sm-1 {\n    padding-bottom: 0.25rem !important;\n  }\n\n  .pb-sm-2 {\n    padding-bottom: 0.5rem !important;\n  }\n\n  .pb-sm-3 {\n    padding-bottom: 1rem !important;\n  }\n\n  .pb-sm-4 {\n    padding-bottom: 1.5rem !important;\n  }\n\n  .pb-sm-5 {\n    padding-bottom: 3rem !important;\n  }\n\n  .ps-sm-0 {\n    padding-right: 0 !important;\n  }\n\n  .ps-sm-1 {\n    padding-right: 0.25rem !important;\n  }\n\n  .ps-sm-2 {\n    padding-right: 0.5rem !important;\n  }\n\n  .ps-sm-3 {\n    padding-right: 1rem !important;\n  }\n\n  .ps-sm-4 {\n    padding-right: 1.5rem !important;\n  }\n\n  .ps-sm-5 {\n    padding-right: 3rem !important;\n  }\n\n  .text-sm-start {\n    text-align: right !important;\n  }\n\n  .text-sm-end {\n    text-align: left !important;\n  }\n\n  .text-sm-center {\n    text-align: center !important;\n  }\n}\n@media (min-width: 768px) {\n  .float-md-start {\n    float: right !important;\n  }\n\n  .float-md-end {\n    float: left !important;\n  }\n\n  .float-md-none {\n    float: none !important;\n  }\n\n  .d-md-inline {\n    display: inline !important;\n  }\n\n  .d-md-inline-block {\n    display: inline-block !important;\n  }\n\n  .d-md-block {\n    display: block !important;\n  }\n\n  .d-md-grid {\n    display: grid !important;\n  }\n\n  .d-md-table {\n    display: table !important;\n  }\n\n  .d-md-table-row {\n    display: table-row !important;\n  }\n\n  .d-md-table-cell {\n    display: table-cell !important;\n  }\n\n  .d-md-flex {\n    display: flex !important;\n  }\n\n  .d-md-inline-flex {\n    display: inline-flex !important;\n  }\n\n  .d-md-none {\n    display: none !important;\n  }\n\n  .flex-md-fill {\n    flex: 1 1 auto !important;\n  }\n\n  .flex-md-row {\n    flex-direction: row !important;\n  }\n\n  .flex-md-column {\n    flex-direction: column !important;\n  }\n\n  .flex-md-row-reverse {\n    flex-direction: row-reverse !important;\n  }\n\n  .flex-md-column-reverse {\n    flex-direction: column-reverse !important;\n  }\n\n  .flex-md-grow-0 {\n    flex-grow: 0 !important;\n  }\n\n  .flex-md-grow-1 {\n    flex-grow: 1 !important;\n  }\n\n  .flex-md-shrink-0 {\n    flex-shrink: 0 !important;\n  }\n\n  .flex-md-shrink-1 {\n    flex-shrink: 1 !important;\n  }\n\n  .flex-md-wrap {\n    flex-wrap: wrap !important;\n  }\n\n  .flex-md-nowrap {\n    flex-wrap: nowrap !important;\n  }\n\n  .flex-md-wrap-reverse {\n    flex-wrap: wrap-reverse !important;\n  }\n\n  .gap-md-0 {\n    gap: 0 !important;\n  }\n\n  .gap-md-1 {\n    gap: 0.25rem !important;\n  }\n\n  .gap-md-2 {\n    gap: 0.5rem !important;\n  }\n\n  .gap-md-3 {\n    gap: 1rem !important;\n  }\n\n  .gap-md-4 {\n    gap: 1.5rem !important;\n  }\n\n  .gap-md-5 {\n    gap: 3rem !important;\n  }\n\n  .justify-content-md-start {\n    justify-content: flex-start !important;\n  }\n\n  .justify-content-md-end {\n    justify-content: flex-end !important;\n  }\n\n  .justify-content-md-center {\n    justify-content: center !important;\n  }\n\n  .justify-content-md-between {\n    justify-content: space-between !important;\n  }\n\n  .justify-content-md-around {\n    justify-content: space-around !important;\n  }\n\n  .justify-content-md-evenly {\n    justify-content: space-evenly !important;\n  }\n\n  .align-items-md-start {\n    align-items: flex-start !important;\n  }\n\n  .align-items-md-end {\n    align-items: flex-end !important;\n  }\n\n  .align-items-md-center {\n    align-items: center !important;\n  }\n\n  .align-items-md-baseline {\n    align-items: baseline !important;\n  }\n\n  .align-items-md-stretch {\n    align-items: stretch !important;\n  }\n\n  .align-content-md-start {\n    align-content: flex-start !important;\n  }\n\n  .align-content-md-end {\n    align-content: flex-end !important;\n  }\n\n  .align-content-md-center {\n    align-content: center !important;\n  }\n\n  .align-content-md-between {\n    align-content: space-between !important;\n  }\n\n  .align-content-md-around {\n    align-content: space-around !important;\n  }\n\n  .align-content-md-stretch {\n    align-content: stretch !important;\n  }\n\n  .align-self-md-auto {\n    align-self: auto !important;\n  }\n\n  .align-self-md-start {\n    align-self: flex-start !important;\n  }\n\n  .align-self-md-end {\n    align-self: flex-end !important;\n  }\n\n  .align-self-md-center {\n    align-self: center !important;\n  }\n\n  .align-self-md-baseline {\n    align-self: baseline !important;\n  }\n\n  .align-self-md-stretch {\n    align-self: stretch !important;\n  }\n\n  .order-md-first {\n    order: -1 !important;\n  }\n\n  .order-md-0 {\n    order: 0 !important;\n  }\n\n  .order-md-1 {\n    order: 1 !important;\n  }\n\n  .order-md-2 {\n    order: 2 !important;\n  }\n\n  .order-md-3 {\n    order: 3 !important;\n  }\n\n  .order-md-4 {\n    order: 4 !important;\n  }\n\n  .order-md-5 {\n    order: 5 !important;\n  }\n\n  .order-md-last {\n    order: 6 !important;\n  }\n\n  .m-md-0 {\n    margin: 0 !important;\n  }\n\n  .m-md-1 {\n    margin: 0.25rem !important;\n  }\n\n  .m-md-2 {\n    margin: 0.5rem !important;\n  }\n\n  .m-md-3 {\n    margin: 1rem !important;\n  }\n\n  .m-md-4 {\n    margin: 1.5rem !important;\n  }\n\n  .m-md-5 {\n    margin: 3rem !important;\n  }\n\n  .m-md-auto {\n    margin: auto !important;\n  }\n\n  .mx-md-0 {\n    margin-left: 0 !important;\n    margin-right: 0 !important;\n  }\n\n  .mx-md-1 {\n    margin-left: 0.25rem !important;\n    margin-right: 0.25rem !important;\n  }\n\n  .mx-md-2 {\n    margin-left: 0.5rem !important;\n    margin-right: 0.5rem !important;\n  }\n\n  .mx-md-3 {\n    margin-left: 1rem !important;\n    margin-right: 1rem !important;\n  }\n\n  .mx-md-4 {\n    margin-left: 1.5rem !important;\n    margin-right: 1.5rem !important;\n  }\n\n  .mx-md-5 {\n    margin-left: 3rem !important;\n    margin-right: 3rem !important;\n  }\n\n  .mx-md-auto {\n    margin-left: auto !important;\n    margin-right: auto !important;\n  }\n\n  .my-md-0 {\n    margin-top: 0 !important;\n    margin-bottom: 0 !important;\n  }\n\n  .my-md-1 {\n    margin-top: 0.25rem !important;\n    margin-bottom: 0.25rem !important;\n  }\n\n  .my-md-2 {\n    margin-top: 0.5rem !important;\n    margin-bottom: 0.5rem !important;\n  }\n\n  .my-md-3 {\n    margin-top: 1rem !important;\n    margin-bottom: 1rem !important;\n  }\n\n  .my-md-4 {\n    margin-top: 1.5rem !important;\n    margin-bottom: 1.5rem !important;\n  }\n\n  .my-md-5 {\n    margin-top: 3rem !important;\n    margin-bottom: 3rem !important;\n  }\n\n  .my-md-auto {\n    margin-top: auto !important;\n    margin-bottom: auto !important;\n  }\n\n  .mt-md-0 {\n    margin-top: 0 !important;\n  }\n\n  .mt-md-1 {\n    margin-top: 0.25rem !important;\n  }\n\n  .mt-md-2 {\n    margin-top: 0.5rem !important;\n  }\n\n  .mt-md-3 {\n    margin-top: 1rem !important;\n  }\n\n  .mt-md-4 {\n    margin-top: 1.5rem !important;\n  }\n\n  .mt-md-5 {\n    margin-top: 3rem !important;\n  }\n\n  .mt-md-auto {\n    margin-top: auto !important;\n  }\n\n  .me-md-0 {\n    margin-left: 0 !important;\n  }\n\n  .me-md-1 {\n    margin-left: 0.25rem !important;\n  }\n\n  .me-md-2 {\n    margin-left: 0.5rem !important;\n  }\n\n  .me-md-3 {\n    margin-left: 1rem !important;\n  }\n\n  .me-md-4 {\n    margin-left: 1.5rem !important;\n  }\n\n  .me-md-5 {\n    margin-left: 3rem !important;\n  }\n\n  .me-md-auto {\n    margin-left: auto !important;\n  }\n\n  .mb-md-0 {\n    margin-bottom: 0 !important;\n  }\n\n  .mb-md-1 {\n    margin-bottom: 0.25rem !important;\n  }\n\n  .mb-md-2 {\n    margin-bottom: 0.5rem !important;\n  }\n\n  .mb-md-3 {\n    margin-bottom: 1rem !important;\n  }\n\n  .mb-md-4 {\n    margin-bottom: 1.5rem !important;\n  }\n\n  .mb-md-5 {\n    margin-bottom: 3rem !important;\n  }\n\n  .mb-md-auto {\n    margin-bottom: auto !important;\n  }\n\n  .ms-md-0 {\n    margin-right: 0 !important;\n  }\n\n  .ms-md-1 {\n    margin-right: 0.25rem !important;\n  }\n\n  .ms-md-2 {\n    margin-right: 0.5rem !important;\n  }\n\n  .ms-md-3 {\n    margin-right: 1rem !important;\n  }\n\n  .ms-md-4 {\n    margin-right: 1.5rem !important;\n  }\n\n  .ms-md-5 {\n    margin-right: 3rem !important;\n  }\n\n  .ms-md-auto {\n    margin-right: auto !important;\n  }\n\n  .p-md-0 {\n    padding: 0 !important;\n  }\n\n  .p-md-1 {\n    padding: 0.25rem !important;\n  }\n\n  .p-md-2 {\n    padding: 0.5rem !important;\n  }\n\n  .p-md-3 {\n    padding: 1rem !important;\n  }\n\n  .p-md-4 {\n    padding: 1.5rem !important;\n  }\n\n  .p-md-5 {\n    padding: 3rem !important;\n  }\n\n  .px-md-0 {\n    padding-left: 0 !important;\n    padding-right: 0 !important;\n  }\n\n  .px-md-1 {\n    padding-left: 0.25rem !important;\n    padding-right: 0.25rem !important;\n  }\n\n  .px-md-2 {\n    padding-left: 0.5rem !important;\n    padding-right: 0.5rem !important;\n  }\n\n  .px-md-3 {\n    padding-left: 1rem !important;\n    padding-right: 1rem !important;\n  }\n\n  .px-md-4 {\n    padding-left: 1.5rem !important;\n    padding-right: 1.5rem !important;\n  }\n\n  .px-md-5 {\n    padding-left: 3rem !important;\n    padding-right: 3rem !important;\n  }\n\n  .py-md-0 {\n    padding-top: 0 !important;\n    padding-bottom: 0 !important;\n  }\n\n  .py-md-1 {\n    padding-top: 0.25rem !important;\n    padding-bottom: 0.25rem !important;\n  }\n\n  .py-md-2 {\n    padding-top: 0.5rem !important;\n    padding-bottom: 0.5rem !important;\n  }\n\n  .py-md-3 {\n    padding-top: 1rem !important;\n    padding-bottom: 1rem !important;\n  }\n\n  .py-md-4 {\n    padding-top: 1.5rem !important;\n    padding-bottom: 1.5rem !important;\n  }\n\n  .py-md-5 {\n    padding-top: 3rem !important;\n    padding-bottom: 3rem !important;\n  }\n\n  .pt-md-0 {\n    padding-top: 0 !important;\n  }\n\n  .pt-md-1 {\n    padding-top: 0.25rem !important;\n  }\n\n  .pt-md-2 {\n    padding-top: 0.5rem !important;\n  }\n\n  .pt-md-3 {\n    padding-top: 1rem !important;\n  }\n\n  .pt-md-4 {\n    padding-top: 1.5rem !important;\n  }\n\n  .pt-md-5 {\n    padding-top: 3rem !important;\n  }\n\n  .pe-md-0 {\n    padding-left: 0 !important;\n  }\n\n  .pe-md-1 {\n    padding-left: 0.25rem !important;\n  }\n\n  .pe-md-2 {\n    padding-left: 0.5rem !important;\n  }\n\n  .pe-md-3 {\n    padding-left: 1rem !important;\n  }\n\n  .pe-md-4 {\n    padding-left: 1.5rem !important;\n  }\n\n  .pe-md-5 {\n    padding-left: 3rem !important;\n  }\n\n  .pb-md-0 {\n    padding-bottom: 0 !important;\n  }\n\n  .pb-md-1 {\n    padding-bottom: 0.25rem !important;\n  }\n\n  .pb-md-2 {\n    padding-bottom: 0.5rem !important;\n  }\n\n  .pb-md-3 {\n    padding-bottom: 1rem !important;\n  }\n\n  .pb-md-4 {\n    padding-bottom: 1.5rem !important;\n  }\n\n  .pb-md-5 {\n    padding-bottom: 3rem !important;\n  }\n\n  .ps-md-0 {\n    padding-right: 0 !important;\n  }\n\n  .ps-md-1 {\n    padding-right: 0.25rem !important;\n  }\n\n  .ps-md-2 {\n    padding-right: 0.5rem !important;\n  }\n\n  .ps-md-3 {\n    padding-right: 1rem !important;\n  }\n\n  .ps-md-4 {\n    padding-right: 1.5rem !important;\n  }\n\n  .ps-md-5 {\n    padding-right: 3rem !important;\n  }\n\n  .text-md-start {\n    text-align: right !important;\n  }\n\n  .text-md-end {\n    text-align: left !important;\n  }\n\n  .text-md-center {\n    text-align: center !important;\n  }\n}\n@media (min-width: 992px) {\n  .float-lg-start {\n    float: right !important;\n  }\n\n  .float-lg-end {\n    float: left !important;\n  }\n\n  .float-lg-none {\n    float: none !important;\n  }\n\n  .d-lg-inline {\n    display: inline !important;\n  }\n\n  .d-lg-inline-block {\n    display: inline-block !important;\n  }\n\n  .d-lg-block {\n    display: block !important;\n  }\n\n  .d-lg-grid {\n    display: grid !important;\n  }\n\n  .d-lg-table {\n    display: table !important;\n  }\n\n  .d-lg-table-row {\n    display: table-row !important;\n  }\n\n  .d-lg-table-cell {\n    display: table-cell !important;\n  }\n\n  .d-lg-flex {\n    display: flex !important;\n  }\n\n  .d-lg-inline-flex {\n    display: inline-flex !important;\n  }\n\n  .d-lg-none {\n    display: none !important;\n  }\n\n  .flex-lg-fill {\n    flex: 1 1 auto !important;\n  }\n\n  .flex-lg-row {\n    flex-direction: row !important;\n  }\n\n  .flex-lg-column {\n    flex-direction: column !important;\n  }\n\n  .flex-lg-row-reverse {\n    flex-direction: row-reverse !important;\n  }\n\n  .flex-lg-column-reverse {\n    flex-direction: column-reverse !important;\n  }\n\n  .flex-lg-grow-0 {\n    flex-grow: 0 !important;\n  }\n\n  .flex-lg-grow-1 {\n    flex-grow: 1 !important;\n  }\n\n  .flex-lg-shrink-0 {\n    flex-shrink: 0 !important;\n  }\n\n  .flex-lg-shrink-1 {\n    flex-shrink: 1 !important;\n  }\n\n  .flex-lg-wrap {\n    flex-wrap: wrap !important;\n  }\n\n  .flex-lg-nowrap {\n    flex-wrap: nowrap !important;\n  }\n\n  .flex-lg-wrap-reverse {\n    flex-wrap: wrap-reverse !important;\n  }\n\n  .gap-lg-0 {\n    gap: 0 !important;\n  }\n\n  .gap-lg-1 {\n    gap: 0.25rem !important;\n  }\n\n  .gap-lg-2 {\n    gap: 0.5rem !important;\n  }\n\n  .gap-lg-3 {\n    gap: 1rem !important;\n  }\n\n  .gap-lg-4 {\n    gap: 1.5rem !important;\n  }\n\n  .gap-lg-5 {\n    gap: 3rem !important;\n  }\n\n  .justify-content-lg-start {\n    justify-content: flex-start !important;\n  }\n\n  .justify-content-lg-end {\n    justify-content: flex-end !important;\n  }\n\n  .justify-content-lg-center {\n    justify-content: center !important;\n  }\n\n  .justify-content-lg-between {\n    justify-content: space-between !important;\n  }\n\n  .justify-content-lg-around {\n    justify-content: space-around !important;\n  }\n\n  .justify-content-lg-evenly {\n    justify-content: space-evenly !important;\n  }\n\n  .align-items-lg-start {\n    align-items: flex-start !important;\n  }\n\n  .align-items-lg-end {\n    align-items: flex-end !important;\n  }\n\n  .align-items-lg-center {\n    align-items: center !important;\n  }\n\n  .align-items-lg-baseline {\n    align-items: baseline !important;\n  }\n\n  .align-items-lg-stretch {\n    align-items: stretch !important;\n  }\n\n  .align-content-lg-start {\n    align-content: flex-start !important;\n  }\n\n  .align-content-lg-end {\n    align-content: flex-end !important;\n  }\n\n  .align-content-lg-center {\n    align-content: center !important;\n  }\n\n  .align-content-lg-between {\n    align-content: space-between !important;\n  }\n\n  .align-content-lg-around {\n    align-content: space-around !important;\n  }\n\n  .align-content-lg-stretch {\n    align-content: stretch !important;\n  }\n\n  .align-self-lg-auto {\n    align-self: auto !important;\n  }\n\n  .align-self-lg-start {\n    align-self: flex-start !important;\n  }\n\n  .align-self-lg-end {\n    align-self: flex-end !important;\n  }\n\n  .align-self-lg-center {\n    align-self: center !important;\n  }\n\n  .align-self-lg-baseline {\n    align-self: baseline !important;\n  }\n\n  .align-self-lg-stretch {\n    align-self: stretch !important;\n  }\n\n  .order-lg-first {\n    order: -1 !important;\n  }\n\n  .order-lg-0 {\n    order: 0 !important;\n  }\n\n  .order-lg-1 {\n    order: 1 !important;\n  }\n\n  .order-lg-2 {\n    order: 2 !important;\n  }\n\n  .order-lg-3 {\n    order: 3 !important;\n  }\n\n  .order-lg-4 {\n    order: 4 !important;\n  }\n\n  .order-lg-5 {\n    order: 5 !important;\n  }\n\n  .order-lg-last {\n    order: 6 !important;\n  }\n\n  .m-lg-0 {\n    margin: 0 !important;\n  }\n\n  .m-lg-1 {\n    margin: 0.25rem !important;\n  }\n\n  .m-lg-2 {\n    margin: 0.5rem !important;\n  }\n\n  .m-lg-3 {\n    margin: 1rem !important;\n  }\n\n  .m-lg-4 {\n    margin: 1.5rem !important;\n  }\n\n  .m-lg-5 {\n    margin: 3rem !important;\n  }\n\n  .m-lg-auto {\n    margin: auto !important;\n  }\n\n  .mx-lg-0 {\n    margin-left: 0 !important;\n    margin-right: 0 !important;\n  }\n\n  .mx-lg-1 {\n    margin-left: 0.25rem !important;\n    margin-right: 0.25rem !important;\n  }\n\n  .mx-lg-2 {\n    margin-left: 0.5rem !important;\n    margin-right: 0.5rem !important;\n  }\n\n  .mx-lg-3 {\n    margin-left: 1rem !important;\n    margin-right: 1rem !important;\n  }\n\n  .mx-lg-4 {\n    margin-left: 1.5rem !important;\n    margin-right: 1.5rem !important;\n  }\n\n  .mx-lg-5 {\n    margin-left: 3rem !important;\n    margin-right: 3rem !important;\n  }\n\n  .mx-lg-auto {\n    margin-left: auto !important;\n    margin-right: auto !important;\n  }\n\n  .my-lg-0 {\n    margin-top: 0 !important;\n    margin-bottom: 0 !important;\n  }\n\n  .my-lg-1 {\n    margin-top: 0.25rem !important;\n    margin-bottom: 0.25rem !important;\n  }\n\n  .my-lg-2 {\n    margin-top: 0.5rem !important;\n    margin-bottom: 0.5rem !important;\n  }\n\n  .my-lg-3 {\n    margin-top: 1rem !important;\n    margin-bottom: 1rem !important;\n  }\n\n  .my-lg-4 {\n    margin-top: 1.5rem !important;\n    margin-bottom: 1.5rem !important;\n  }\n\n  .my-lg-5 {\n    margin-top: 3rem !important;\n    margin-bottom: 3rem !important;\n  }\n\n  .my-lg-auto {\n    margin-top: auto !important;\n    margin-bottom: auto !important;\n  }\n\n  .mt-lg-0 {\n    margin-top: 0 !important;\n  }\n\n  .mt-lg-1 {\n    margin-top: 0.25rem !important;\n  }\n\n  .mt-lg-2 {\n    margin-top: 0.5rem !important;\n  }\n\n  .mt-lg-3 {\n    margin-top: 1rem !important;\n  }\n\n  .mt-lg-4 {\n    margin-top: 1.5rem !important;\n  }\n\n  .mt-lg-5 {\n    margin-top: 3rem !important;\n  }\n\n  .mt-lg-auto {\n    margin-top: auto !important;\n  }\n\n  .me-lg-0 {\n    margin-left: 0 !important;\n  }\n\n  .me-lg-1 {\n    margin-left: 0.25rem !important;\n  }\n\n  .me-lg-2 {\n    margin-left: 0.5rem !important;\n  }\n\n  .me-lg-3 {\n    margin-left: 1rem !important;\n  }\n\n  .me-lg-4 {\n    margin-left: 1.5rem !important;\n  }\n\n  .me-lg-5 {\n    margin-left: 3rem !important;\n  }\n\n  .me-lg-auto {\n    margin-left: auto !important;\n  }\n\n  .mb-lg-0 {\n    margin-bottom: 0 !important;\n  }\n\n  .mb-lg-1 {\n    margin-bottom: 0.25rem !important;\n  }\n\n  .mb-lg-2 {\n    margin-bottom: 0.5rem !important;\n  }\n\n  .mb-lg-3 {\n    margin-bottom: 1rem !important;\n  }\n\n  .mb-lg-4 {\n    margin-bottom: 1.5rem !important;\n  }\n\n  .mb-lg-5 {\n    margin-bottom: 3rem !important;\n  }\n\n  .mb-lg-auto {\n    margin-bottom: auto !important;\n  }\n\n  .ms-lg-0 {\n    margin-right: 0 !important;\n  }\n\n  .ms-lg-1 {\n    margin-right: 0.25rem !important;\n  }\n\n  .ms-lg-2 {\n    margin-right: 0.5rem !important;\n  }\n\n  .ms-lg-3 {\n    margin-right: 1rem !important;\n  }\n\n  .ms-lg-4 {\n    margin-right: 1.5rem !important;\n  }\n\n  .ms-lg-5 {\n    margin-right: 3rem !important;\n  }\n\n  .ms-lg-auto {\n    margin-right: auto !important;\n  }\n\n  .p-lg-0 {\n    padding: 0 !important;\n  }\n\n  .p-lg-1 {\n    padding: 0.25rem !important;\n  }\n\n  .p-lg-2 {\n    padding: 0.5rem !important;\n  }\n\n  .p-lg-3 {\n    padding: 1rem !important;\n  }\n\n  .p-lg-4 {\n    padding: 1.5rem !important;\n  }\n\n  .p-lg-5 {\n    padding: 3rem !important;\n  }\n\n  .px-lg-0 {\n    padding-left: 0 !important;\n    padding-right: 0 !important;\n  }\n\n  .px-lg-1 {\n    padding-left: 0.25rem !important;\n    padding-right: 0.25rem !important;\n  }\n\n  .px-lg-2 {\n    padding-left: 0.5rem !important;\n    padding-right: 0.5rem !important;\n  }\n\n  .px-lg-3 {\n    padding-left: 1rem !important;\n    padding-right: 1rem !important;\n  }\n\n  .px-lg-4 {\n    padding-left: 1.5rem !important;\n    padding-right: 1.5rem !important;\n  }\n\n  .px-lg-5 {\n    padding-left: 3rem !important;\n    padding-right: 3rem !important;\n  }\n\n  .py-lg-0 {\n    padding-top: 0 !important;\n    padding-bottom: 0 !important;\n  }\n\n  .py-lg-1 {\n    padding-top: 0.25rem !important;\n    padding-bottom: 0.25rem !important;\n  }\n\n  .py-lg-2 {\n    padding-top: 0.5rem !important;\n    padding-bottom: 0.5rem !important;\n  }\n\n  .py-lg-3 {\n    padding-top: 1rem !important;\n    padding-bottom: 1rem !important;\n  }\n\n  .py-lg-4 {\n    padding-top: 1.5rem !important;\n    padding-bottom: 1.5rem !important;\n  }\n\n  .py-lg-5 {\n    padding-top: 3rem !important;\n    padding-bottom: 3rem !important;\n  }\n\n  .pt-lg-0 {\n    padding-top: 0 !important;\n  }\n\n  .pt-lg-1 {\n    padding-top: 0.25rem !important;\n  }\n\n  .pt-lg-2 {\n    padding-top: 0.5rem !important;\n  }\n\n  .pt-lg-3 {\n    padding-top: 1rem !important;\n  }\n\n  .pt-lg-4 {\n    padding-top: 1.5rem !important;\n  }\n\n  .pt-lg-5 {\n    padding-top: 3rem !important;\n  }\n\n  .pe-lg-0 {\n    padding-left: 0 !important;\n  }\n\n  .pe-lg-1 {\n    padding-left: 0.25rem !important;\n  }\n\n  .pe-lg-2 {\n    padding-left: 0.5rem !important;\n  }\n\n  .pe-lg-3 {\n    padding-left: 1rem !important;\n  }\n\n  .pe-lg-4 {\n    padding-left: 1.5rem !important;\n  }\n\n  .pe-lg-5 {\n    padding-left: 3rem !important;\n  }\n\n  .pb-lg-0 {\n    padding-bottom: 0 !important;\n  }\n\n  .pb-lg-1 {\n    padding-bottom: 0.25rem !important;\n  }\n\n  .pb-lg-2 {\n    padding-bottom: 0.5rem !important;\n  }\n\n  .pb-lg-3 {\n    padding-bottom: 1rem !important;\n  }\n\n  .pb-lg-4 {\n    padding-bottom: 1.5rem !important;\n  }\n\n  .pb-lg-5 {\n    padding-bottom: 3rem !important;\n  }\n\n  .ps-lg-0 {\n    padding-right: 0 !important;\n  }\n\n  .ps-lg-1 {\n    padding-right: 0.25rem !important;\n  }\n\n  .ps-lg-2 {\n    padding-right: 0.5rem !important;\n  }\n\n  .ps-lg-3 {\n    padding-right: 1rem !important;\n  }\n\n  .ps-lg-4 {\n    padding-right: 1.5rem !important;\n  }\n\n  .ps-lg-5 {\n    padding-right: 3rem !important;\n  }\n\n  .text-lg-start {\n    text-align: right !important;\n  }\n\n  .text-lg-end {\n    text-align: left !important;\n  }\n\n  .text-lg-center {\n    text-align: center !important;\n  }\n}\n@media (min-width: 1200px) {\n  .float-xl-start {\n    float: right !important;\n  }\n\n  .float-xl-end {\n    float: left !important;\n  }\n\n  .float-xl-none {\n    float: none !important;\n  }\n\n  .d-xl-inline {\n    display: inline !important;\n  }\n\n  .d-xl-inline-block {\n    display: inline-block !important;\n  }\n\n  .d-xl-block {\n    display: block !important;\n  }\n\n  .d-xl-grid {\n    display: grid !important;\n  }\n\n  .d-xl-table {\n    display: table !important;\n  }\n\n  .d-xl-table-row {\n    display: table-row !important;\n  }\n\n  .d-xl-table-cell {\n    display: table-cell !important;\n  }\n\n  .d-xl-flex {\n    display: flex !important;\n  }\n\n  .d-xl-inline-flex {\n    display: inline-flex !important;\n  }\n\n  .d-xl-none {\n    display: none !important;\n  }\n\n  .flex-xl-fill {\n    flex: 1 1 auto !important;\n  }\n\n  .flex-xl-row {\n    flex-direction: row !important;\n  }\n\n  .flex-xl-column {\n    flex-direction: column !important;\n  }\n\n  .flex-xl-row-reverse {\n    flex-direction: row-reverse !important;\n  }\n\n  .flex-xl-column-reverse {\n    flex-direction: column-reverse !important;\n  }\n\n  .flex-xl-grow-0 {\n    flex-grow: 0 !important;\n  }\n\n  .flex-xl-grow-1 {\n    flex-grow: 1 !important;\n  }\n\n  .flex-xl-shrink-0 {\n    flex-shrink: 0 !important;\n  }\n\n  .flex-xl-shrink-1 {\n    flex-shrink: 1 !important;\n  }\n\n  .flex-xl-wrap {\n    flex-wrap: wrap !important;\n  }\n\n  .flex-xl-nowrap {\n    flex-wrap: nowrap !important;\n  }\n\n  .flex-xl-wrap-reverse {\n    flex-wrap: wrap-reverse !important;\n  }\n\n  .gap-xl-0 {\n    gap: 0 !important;\n  }\n\n  .gap-xl-1 {\n    gap: 0.25rem !important;\n  }\n\n  .gap-xl-2 {\n    gap: 0.5rem !important;\n  }\n\n  .gap-xl-3 {\n    gap: 1rem !important;\n  }\n\n  .gap-xl-4 {\n    gap: 1.5rem !important;\n  }\n\n  .gap-xl-5 {\n    gap: 3rem !important;\n  }\n\n  .justify-content-xl-start {\n    justify-content: flex-start !important;\n  }\n\n  .justify-content-xl-end {\n    justify-content: flex-end !important;\n  }\n\n  .justify-content-xl-center {\n    justify-content: center !important;\n  }\n\n  .justify-content-xl-between {\n    justify-content: space-between !important;\n  }\n\n  .justify-content-xl-around {\n    justify-content: space-around !important;\n  }\n\n  .justify-content-xl-evenly {\n    justify-content: space-evenly !important;\n  }\n\n  .align-items-xl-start {\n    align-items: flex-start !important;\n  }\n\n  .align-items-xl-end {\n    align-items: flex-end !important;\n  }\n\n  .align-items-xl-center {\n    align-items: center !important;\n  }\n\n  .align-items-xl-baseline {\n    align-items: baseline !important;\n  }\n\n  .align-items-xl-stretch {\n    align-items: stretch !important;\n  }\n\n  .align-content-xl-start {\n    align-content: flex-start !important;\n  }\n\n  .align-content-xl-end {\n    align-content: flex-end !important;\n  }\n\n  .align-content-xl-center {\n    align-content: center !important;\n  }\n\n  .align-content-xl-between {\n    align-content: space-between !important;\n  }\n\n  .align-content-xl-around {\n    align-content: space-around !important;\n  }\n\n  .align-content-xl-stretch {\n    align-content: stretch !important;\n  }\n\n  .align-self-xl-auto {\n    align-self: auto !important;\n  }\n\n  .align-self-xl-start {\n    align-self: flex-start !important;\n  }\n\n  .align-self-xl-end {\n    align-self: flex-end !important;\n  }\n\n  .align-self-xl-center {\n    align-self: center !important;\n  }\n\n  .align-self-xl-baseline {\n    align-self: baseline !important;\n  }\n\n  .align-self-xl-stretch {\n    align-self: stretch !important;\n  }\n\n  .order-xl-first {\n    order: -1 !important;\n  }\n\n  .order-xl-0 {\n    order: 0 !important;\n  }\n\n  .order-xl-1 {\n    order: 1 !important;\n  }\n\n  .order-xl-2 {\n    order: 2 !important;\n  }\n\n  .order-xl-3 {\n    order: 3 !important;\n  }\n\n  .order-xl-4 {\n    order: 4 !important;\n  }\n\n  .order-xl-5 {\n    order: 5 !important;\n  }\n\n  .order-xl-last {\n    order: 6 !important;\n  }\n\n  .m-xl-0 {\n    margin: 0 !important;\n  }\n\n  .m-xl-1 {\n    margin: 0.25rem !important;\n  }\n\n  .m-xl-2 {\n    margin: 0.5rem !important;\n  }\n\n  .m-xl-3 {\n    margin: 1rem !important;\n  }\n\n  .m-xl-4 {\n    margin: 1.5rem !important;\n  }\n\n  .m-xl-5 {\n    margin: 3rem !important;\n  }\n\n  .m-xl-auto {\n    margin: auto !important;\n  }\n\n  .mx-xl-0 {\n    margin-left: 0 !important;\n    margin-right: 0 !important;\n  }\n\n  .mx-xl-1 {\n    margin-left: 0.25rem !important;\n    margin-right: 0.25rem !important;\n  }\n\n  .mx-xl-2 {\n    margin-left: 0.5rem !important;\n    margin-right: 0.5rem !important;\n  }\n\n  .mx-xl-3 {\n    margin-left: 1rem !important;\n    margin-right: 1rem !important;\n  }\n\n  .mx-xl-4 {\n    margin-left: 1.5rem !important;\n    margin-right: 1.5rem !important;\n  }\n\n  .mx-xl-5 {\n    margin-left: 3rem !important;\n    margin-right: 3rem !important;\n  }\n\n  .mx-xl-auto {\n    margin-left: auto !important;\n    margin-right: auto !important;\n  }\n\n  .my-xl-0 {\n    margin-top: 0 !important;\n    margin-bottom: 0 !important;\n  }\n\n  .my-xl-1 {\n    margin-top: 0.25rem !important;\n    margin-bottom: 0.25rem !important;\n  }\n\n  .my-xl-2 {\n    margin-top: 0.5rem !important;\n    margin-bottom: 0.5rem !important;\n  }\n\n  .my-xl-3 {\n    margin-top: 1rem !important;\n    margin-bottom: 1rem !important;\n  }\n\n  .my-xl-4 {\n    margin-top: 1.5rem !important;\n    margin-bottom: 1.5rem !important;\n  }\n\n  .my-xl-5 {\n    margin-top: 3rem !important;\n    margin-bottom: 3rem !important;\n  }\n\n  .my-xl-auto {\n    margin-top: auto !important;\n    margin-bottom: auto !important;\n  }\n\n  .mt-xl-0 {\n    margin-top: 0 !important;\n  }\n\n  .mt-xl-1 {\n    margin-top: 0.25rem !important;\n  }\n\n  .mt-xl-2 {\n    margin-top: 0.5rem !important;\n  }\n\n  .mt-xl-3 {\n    margin-top: 1rem !important;\n  }\n\n  .mt-xl-4 {\n    margin-top: 1.5rem !important;\n  }\n\n  .mt-xl-5 {\n    margin-top: 3rem !important;\n  }\n\n  .mt-xl-auto {\n    margin-top: auto !important;\n  }\n\n  .me-xl-0 {\n    margin-left: 0 !important;\n  }\n\n  .me-xl-1 {\n    margin-left: 0.25rem !important;\n  }\n\n  .me-xl-2 {\n    margin-left: 0.5rem !important;\n  }\n\n  .me-xl-3 {\n    margin-left: 1rem !important;\n  }\n\n  .me-xl-4 {\n    margin-left: 1.5rem !important;\n  }\n\n  .me-xl-5 {\n    margin-left: 3rem !important;\n  }\n\n  .me-xl-auto {\n    margin-left: auto !important;\n  }\n\n  .mb-xl-0 {\n    margin-bottom: 0 !important;\n  }\n\n  .mb-xl-1 {\n    margin-bottom: 0.25rem !important;\n  }\n\n  .mb-xl-2 {\n    margin-bottom: 0.5rem !important;\n  }\n\n  .mb-xl-3 {\n    margin-bottom: 1rem !important;\n  }\n\n  .mb-xl-4 {\n    margin-bottom: 1.5rem !important;\n  }\n\n  .mb-xl-5 {\n    margin-bottom: 3rem !important;\n  }\n\n  .mb-xl-auto {\n    margin-bottom: auto !important;\n  }\n\n  .ms-xl-0 {\n    margin-right: 0 !important;\n  }\n\n  .ms-xl-1 {\n    margin-right: 0.25rem !important;\n  }\n\n  .ms-xl-2 {\n    margin-right: 0.5rem !important;\n  }\n\n  .ms-xl-3 {\n    margin-right: 1rem !important;\n  }\n\n  .ms-xl-4 {\n    margin-right: 1.5rem !important;\n  }\n\n  .ms-xl-5 {\n    margin-right: 3rem !important;\n  }\n\n  .ms-xl-auto {\n    margin-right: auto !important;\n  }\n\n  .p-xl-0 {\n    padding: 0 !important;\n  }\n\n  .p-xl-1 {\n    padding: 0.25rem !important;\n  }\n\n  .p-xl-2 {\n    padding: 0.5rem !important;\n  }\n\n  .p-xl-3 {\n    padding: 1rem !important;\n  }\n\n  .p-xl-4 {\n    padding: 1.5rem !important;\n  }\n\n  .p-xl-5 {\n    padding: 3rem !important;\n  }\n\n  .px-xl-0 {\n    padding-left: 0 !important;\n    padding-right: 0 !important;\n  }\n\n  .px-xl-1 {\n    padding-left: 0.25rem !important;\n    padding-right: 0.25rem !important;\n  }\n\n  .px-xl-2 {\n    padding-left: 0.5rem !important;\n    padding-right: 0.5rem !important;\n  }\n\n  .px-xl-3 {\n    padding-left: 1rem !important;\n    padding-right: 1rem !important;\n  }\n\n  .px-xl-4 {\n    padding-left: 1.5rem !important;\n    padding-right: 1.5rem !important;\n  }\n\n  .px-xl-5 {\n    padding-left: 3rem !important;\n    padding-right: 3rem !important;\n  }\n\n  .py-xl-0 {\n    padding-top: 0 !important;\n    padding-bottom: 0 !important;\n  }\n\n  .py-xl-1 {\n    padding-top: 0.25rem !important;\n    padding-bottom: 0.25rem !important;\n  }\n\n  .py-xl-2 {\n    padding-top: 0.5rem !important;\n    padding-bottom: 0.5rem !important;\n  }\n\n  .py-xl-3 {\n    padding-top: 1rem !important;\n    padding-bottom: 1rem !important;\n  }\n\n  .py-xl-4 {\n    padding-top: 1.5rem !important;\n    padding-bottom: 1.5rem !important;\n  }\n\n  .py-xl-5 {\n    padding-top: 3rem !important;\n    padding-bottom: 3rem !important;\n  }\n\n  .pt-xl-0 {\n    padding-top: 0 !important;\n  }\n\n  .pt-xl-1 {\n    padding-top: 0.25rem !important;\n  }\n\n  .pt-xl-2 {\n    padding-top: 0.5rem !important;\n  }\n\n  .pt-xl-3 {\n    padding-top: 1rem !important;\n  }\n\n  .pt-xl-4 {\n    padding-top: 1.5rem !important;\n  }\n\n  .pt-xl-5 {\n    padding-top: 3rem !important;\n  }\n\n  .pe-xl-0 {\n    padding-left: 0 !important;\n  }\n\n  .pe-xl-1 {\n    padding-left: 0.25rem !important;\n  }\n\n  .pe-xl-2 {\n    padding-left: 0.5rem !important;\n  }\n\n  .pe-xl-3 {\n    padding-left: 1rem !important;\n  }\n\n  .pe-xl-4 {\n    padding-left: 1.5rem !important;\n  }\n\n  .pe-xl-5 {\n    padding-left: 3rem !important;\n  }\n\n  .pb-xl-0 {\n    padding-bottom: 0 !important;\n  }\n\n  .pb-xl-1 {\n    padding-bottom: 0.25rem !important;\n  }\n\n  .pb-xl-2 {\n    padding-bottom: 0.5rem !important;\n  }\n\n  .pb-xl-3 {\n    padding-bottom: 1rem !important;\n  }\n\n  .pb-xl-4 {\n    padding-bottom: 1.5rem !important;\n  }\n\n  .pb-xl-5 {\n    padding-bottom: 3rem !important;\n  }\n\n  .ps-xl-0 {\n    padding-right: 0 !important;\n  }\n\n  .ps-xl-1 {\n    padding-right: 0.25rem !important;\n  }\n\n  .ps-xl-2 {\n    padding-right: 0.5rem !important;\n  }\n\n  .ps-xl-3 {\n    padding-right: 1rem !important;\n  }\n\n  .ps-xl-4 {\n    padding-right: 1.5rem !important;\n  }\n\n  .ps-xl-5 {\n    padding-right: 3rem !important;\n  }\n\n  .text-xl-start {\n    text-align: right !important;\n  }\n\n  .text-xl-end {\n    text-align: left !important;\n  }\n\n  .text-xl-center {\n    text-align: center !important;\n  }\n}\n@media (min-width: 1400px) {\n  .float-xxl-start {\n    float: right !important;\n  }\n\n  .float-xxl-end {\n    float: left !important;\n  }\n\n  .float-xxl-none {\n    float: none !important;\n  }\n\n  .d-xxl-inline {\n    display: inline !important;\n  }\n\n  .d-xxl-inline-block {\n    display: inline-block !important;\n  }\n\n  .d-xxl-block {\n    display: block !important;\n  }\n\n  .d-xxl-grid {\n    display: grid !important;\n  }\n\n  .d-xxl-table {\n    display: table !important;\n  }\n\n  .d-xxl-table-row {\n    display: table-row !important;\n  }\n\n  .d-xxl-table-cell {\n    display: table-cell !important;\n  }\n\n  .d-xxl-flex {\n    display: flex !important;\n  }\n\n  .d-xxl-inline-flex {\n    display: inline-flex !important;\n  }\n\n  .d-xxl-none {\n    display: none !important;\n  }\n\n  .flex-xxl-fill {\n    flex: 1 1 auto !important;\n  }\n\n  .flex-xxl-row {\n    flex-direction: row !important;\n  }\n\n  .flex-xxl-column {\n    flex-direction: column !important;\n  }\n\n  .flex-xxl-row-reverse {\n    flex-direction: row-reverse !important;\n  }\n\n  .flex-xxl-column-reverse {\n    flex-direction: column-reverse !important;\n  }\n\n  .flex-xxl-grow-0 {\n    flex-grow: 0 !important;\n  }\n\n  .flex-xxl-grow-1 {\n    flex-grow: 1 !important;\n  }\n\n  .flex-xxl-shrink-0 {\n    flex-shrink: 0 !important;\n  }\n\n  .flex-xxl-shrink-1 {\n    flex-shrink: 1 !important;\n  }\n\n  .flex-xxl-wrap {\n    flex-wrap: wrap !important;\n  }\n\n  .flex-xxl-nowrap {\n    flex-wrap: nowrap !important;\n  }\n\n  .flex-xxl-wrap-reverse {\n    flex-wrap: wrap-reverse !important;\n  }\n\n  .gap-xxl-0 {\n    gap: 0 !important;\n  }\n\n  .gap-xxl-1 {\n    gap: 0.25rem !important;\n  }\n\n  .gap-xxl-2 {\n    gap: 0.5rem !important;\n  }\n\n  .gap-xxl-3 {\n    gap: 1rem !important;\n  }\n\n  .gap-xxl-4 {\n    gap: 1.5rem !important;\n  }\n\n  .gap-xxl-5 {\n    gap: 3rem !important;\n  }\n\n  .justify-content-xxl-start {\n    justify-content: flex-start !important;\n  }\n\n  .justify-content-xxl-end {\n    justify-content: flex-end !important;\n  }\n\n  .justify-content-xxl-center {\n    justify-content: center !important;\n  }\n\n  .justify-content-xxl-between {\n    justify-content: space-between !important;\n  }\n\n  .justify-content-xxl-around {\n    justify-content: space-around !important;\n  }\n\n  .justify-content-xxl-evenly {\n    justify-content: space-evenly !important;\n  }\n\n  .align-items-xxl-start {\n    align-items: flex-start !important;\n  }\n\n  .align-items-xxl-end {\n    align-items: flex-end !important;\n  }\n\n  .align-items-xxl-center {\n    align-items: center !important;\n  }\n\n  .align-items-xxl-baseline {\n    align-items: baseline !important;\n  }\n\n  .align-items-xxl-stretch {\n    align-items: stretch !important;\n  }\n\n  .align-content-xxl-start {\n    align-content: flex-start !important;\n  }\n\n  .align-content-xxl-end {\n    align-content: flex-end !important;\n  }\n\n  .align-content-xxl-center {\n    align-content: center !important;\n  }\n\n  .align-content-xxl-between {\n    align-content: space-between !important;\n  }\n\n  .align-content-xxl-around {\n    align-content: space-around !important;\n  }\n\n  .align-content-xxl-stretch {\n    align-content: stretch !important;\n  }\n\n  .align-self-xxl-auto {\n    align-self: auto !important;\n  }\n\n  .align-self-xxl-start {\n    align-self: flex-start !important;\n  }\n\n  .align-self-xxl-end {\n    align-self: flex-end !important;\n  }\n\n  .align-self-xxl-center {\n    align-self: center !important;\n  }\n\n  .align-self-xxl-baseline {\n    align-self: baseline !important;\n  }\n\n  .align-self-xxl-stretch {\n    align-self: stretch !important;\n  }\n\n  .order-xxl-first {\n    order: -1 !important;\n  }\n\n  .order-xxl-0 {\n    order: 0 !important;\n  }\n\n  .order-xxl-1 {\n    order: 1 !important;\n  }\n\n  .order-xxl-2 {\n    order: 2 !important;\n  }\n\n  .order-xxl-3 {\n    order: 3 !important;\n  }\n\n  .order-xxl-4 {\n    order: 4 !important;\n  }\n\n  .order-xxl-5 {\n    order: 5 !important;\n  }\n\n  .order-xxl-last {\n    order: 6 !important;\n  }\n\n  .m-xxl-0 {\n    margin: 0 !important;\n  }\n\n  .m-xxl-1 {\n    margin: 0.25rem !important;\n  }\n\n  .m-xxl-2 {\n    margin: 0.5rem !important;\n  }\n\n  .m-xxl-3 {\n    margin: 1rem !important;\n  }\n\n  .m-xxl-4 {\n    margin: 1.5rem !important;\n  }\n\n  .m-xxl-5 {\n    margin: 3rem !important;\n  }\n\n  .m-xxl-auto {\n    margin: auto !important;\n  }\n\n  .mx-xxl-0 {\n    margin-left: 0 !important;\n    margin-right: 0 !important;\n  }\n\n  .mx-xxl-1 {\n    margin-left: 0.25rem !important;\n    margin-right: 0.25rem !important;\n  }\n\n  .mx-xxl-2 {\n    margin-left: 0.5rem !important;\n    margin-right: 0.5rem !important;\n  }\n\n  .mx-xxl-3 {\n    margin-left: 1rem !important;\n    margin-right: 1rem !important;\n  }\n\n  .mx-xxl-4 {\n    margin-left: 1.5rem !important;\n    margin-right: 1.5rem !important;\n  }\n\n  .mx-xxl-5 {\n    margin-left: 3rem !important;\n    margin-right: 3rem !important;\n  }\n\n  .mx-xxl-auto {\n    margin-left: auto !important;\n    margin-right: auto !important;\n  }\n\n  .my-xxl-0 {\n    margin-top: 0 !important;\n    margin-bottom: 0 !important;\n  }\n\n  .my-xxl-1 {\n    margin-top: 0.25rem !important;\n    margin-bottom: 0.25rem !important;\n  }\n\n  .my-xxl-2 {\n    margin-top: 0.5rem !important;\n    margin-bottom: 0.5rem !important;\n  }\n\n  .my-xxl-3 {\n    margin-top: 1rem !important;\n    margin-bottom: 1rem !important;\n  }\n\n  .my-xxl-4 {\n    margin-top: 1.5rem !important;\n    margin-bottom: 1.5rem !important;\n  }\n\n  .my-xxl-5 {\n    margin-top: 3rem !important;\n    margin-bottom: 3rem !important;\n  }\n\n  .my-xxl-auto {\n    margin-top: auto !important;\n    margin-bottom: auto !important;\n  }\n\n  .mt-xxl-0 {\n    margin-top: 0 !important;\n  }\n\n  .mt-xxl-1 {\n    margin-top: 0.25rem !important;\n  }\n\n  .mt-xxl-2 {\n    margin-top: 0.5rem !important;\n  }\n\n  .mt-xxl-3 {\n    margin-top: 1rem !important;\n  }\n\n  .mt-xxl-4 {\n    margin-top: 1.5rem !important;\n  }\n\n  .mt-xxl-5 {\n    margin-top: 3rem !important;\n  }\n\n  .mt-xxl-auto {\n    margin-top: auto !important;\n  }\n\n  .me-xxl-0 {\n    margin-left: 0 !important;\n  }\n\n  .me-xxl-1 {\n    margin-left: 0.25rem !important;\n  }\n\n  .me-xxl-2 {\n    margin-left: 0.5rem !important;\n  }\n\n  .me-xxl-3 {\n    margin-left: 1rem !important;\n  }\n\n  .me-xxl-4 {\n    margin-left: 1.5rem !important;\n  }\n\n  .me-xxl-5 {\n    margin-left: 3rem !important;\n  }\n\n  .me-xxl-auto {\n    margin-left: auto !important;\n  }\n\n  .mb-xxl-0 {\n    margin-bottom: 0 !important;\n  }\n\n  .mb-xxl-1 {\n    margin-bottom: 0.25rem !important;\n  }\n\n  .mb-xxl-2 {\n    margin-bottom: 0.5rem !important;\n  }\n\n  .mb-xxl-3 {\n    margin-bottom: 1rem !important;\n  }\n\n  .mb-xxl-4 {\n    margin-bottom: 1.5rem !important;\n  }\n\n  .mb-xxl-5 {\n    margin-bottom: 3rem !important;\n  }\n\n  .mb-xxl-auto {\n    margin-bottom: auto !important;\n  }\n\n  .ms-xxl-0 {\n    margin-right: 0 !important;\n  }\n\n  .ms-xxl-1 {\n    margin-right: 0.25rem !important;\n  }\n\n  .ms-xxl-2 {\n    margin-right: 0.5rem !important;\n  }\n\n  .ms-xxl-3 {\n    margin-right: 1rem !important;\n  }\n\n  .ms-xxl-4 {\n    margin-right: 1.5rem !important;\n  }\n\n  .ms-xxl-5 {\n    margin-right: 3rem !important;\n  }\n\n  .ms-xxl-auto {\n    margin-right: auto !important;\n  }\n\n  .p-xxl-0 {\n    padding: 0 !important;\n  }\n\n  .p-xxl-1 {\n    padding: 0.25rem !important;\n  }\n\n  .p-xxl-2 {\n    padding: 0.5rem !important;\n  }\n\n  .p-xxl-3 {\n    padding: 1rem !important;\n  }\n\n  .p-xxl-4 {\n    padding: 1.5rem !important;\n  }\n\n  .p-xxl-5 {\n    padding: 3rem !important;\n  }\n\n  .px-xxl-0 {\n    padding-left: 0 !important;\n    padding-right: 0 !important;\n  }\n\n  .px-xxl-1 {\n    padding-left: 0.25rem !important;\n    padding-right: 0.25rem !important;\n  }\n\n  .px-xxl-2 {\n    padding-left: 0.5rem !important;\n    padding-right: 0.5rem !important;\n  }\n\n  .px-xxl-3 {\n    padding-left: 1rem !important;\n    padding-right: 1rem !important;\n  }\n\n  .px-xxl-4 {\n    padding-left: 1.5rem !important;\n    padding-right: 1.5rem !important;\n  }\n\n  .px-xxl-5 {\n    padding-left: 3rem !important;\n    padding-right: 3rem !important;\n  }\n\n  .py-xxl-0 {\n    padding-top: 0 !important;\n    padding-bottom: 0 !important;\n  }\n\n  .py-xxl-1 {\n    padding-top: 0.25rem !important;\n    padding-bottom: 0.25rem !important;\n  }\n\n  .py-xxl-2 {\n    padding-top: 0.5rem !important;\n    padding-bottom: 0.5rem !important;\n  }\n\n  .py-xxl-3 {\n    padding-top: 1rem !important;\n    padding-bottom: 1rem !important;\n  }\n\n  .py-xxl-4 {\n    padding-top: 1.5rem !important;\n    padding-bottom: 1.5rem !important;\n  }\n\n  .py-xxl-5 {\n    padding-top: 3rem !important;\n    padding-bottom: 3rem !important;\n  }\n\n  .pt-xxl-0 {\n    padding-top: 0 !important;\n  }\n\n  .pt-xxl-1 {\n    padding-top: 0.25rem !important;\n  }\n\n  .pt-xxl-2 {\n    padding-top: 0.5rem !important;\n  }\n\n  .pt-xxl-3 {\n    padding-top: 1rem !important;\n  }\n\n  .pt-xxl-4 {\n    padding-top: 1.5rem !important;\n  }\n\n  .pt-xxl-5 {\n    padding-top: 3rem !important;\n  }\n\n  .pe-xxl-0 {\n    padding-left: 0 !important;\n  }\n\n  .pe-xxl-1 {\n    padding-left: 0.25rem !important;\n  }\n\n  .pe-xxl-2 {\n    padding-left: 0.5rem !important;\n  }\n\n  .pe-xxl-3 {\n    padding-left: 1rem !important;\n  }\n\n  .pe-xxl-4 {\n    padding-left: 1.5rem !important;\n  }\n\n  .pe-xxl-5 {\n    padding-left: 3rem !important;\n  }\n\n  .pb-xxl-0 {\n    padding-bottom: 0 !important;\n  }\n\n  .pb-xxl-1 {\n    padding-bottom: 0.25rem !important;\n  }\n\n  .pb-xxl-2 {\n    padding-bottom: 0.5rem !important;\n  }\n\n  .pb-xxl-3 {\n    padding-bottom: 1rem !important;\n  }\n\n  .pb-xxl-4 {\n    padding-bottom: 1.5rem !important;\n  }\n\n  .pb-xxl-5 {\n    padding-bottom: 3rem !important;\n  }\n\n  .ps-xxl-0 {\n    padding-right: 0 !important;\n  }\n\n  .ps-xxl-1 {\n    padding-right: 0.25rem !important;\n  }\n\n  .ps-xxl-2 {\n    padding-right: 0.5rem !important;\n  }\n\n  .ps-xxl-3 {\n    padding-right: 1rem !important;\n  }\n\n  .ps-xxl-4 {\n    padding-right: 1.5rem !important;\n  }\n\n  .ps-xxl-5 {\n    padding-right: 3rem !important;\n  }\n\n  .text-xxl-start {\n    text-align: right !important;\n  }\n\n  .text-xxl-end {\n    text-align: left !important;\n  }\n\n  .text-xxl-center {\n    text-align: center !important;\n  }\n}\n@media (min-width: 1200px) {\n  .fs-1 {\n    font-size: 2.5rem !important;\n  }\n\n  .fs-2 {\n    font-size: 2rem !important;\n  }\n\n  .fs-3 {\n    font-size: 1.75rem !important;\n  }\n\n  .fs-4 {\n    font-size: 1.5rem !important;\n  }\n}\n@media print {\n  .d-print-inline {\n    display: inline !important;\n  }\n\n  .d-print-inline-block {\n    display: inline-block !important;\n  }\n\n  .d-print-block {\n    display: block !important;\n  }\n\n  .d-print-grid {\n    display: grid !important;\n  }\n\n  .d-print-table {\n    display: table !important;\n  }\n\n  .d-print-table-row {\n    display: table-row !important;\n  }\n\n  .d-print-table-cell {\n    display: table-cell !important;\n  }\n\n  .d-print-flex {\n    display: flex !important;\n  }\n\n  .d-print-inline-flex {\n    display: inline-flex !important;\n  }\n\n  .d-print-none {\n    display: none !important;\n  }\n}\n/*# sourceMappingURL=bootstrap-utilities.rtl.css.map */"
  },
  {
    "path": "application/public/bootstrap/css/bootstrap.css",
    "content": "@charset \"UTF-8\";\n/*!\n * Bootstrap v5.1.3 (https://getbootstrap.com/)\n * Copyright 2011-2021 The Bootstrap Authors\n * Copyright 2011-2021 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n */\n:root {\n  --bs-blue: #0d6efd;\n  --bs-indigo: #6610f2;\n  --bs-purple: #6f42c1;\n  --bs-pink: #d63384;\n  --bs-red: #dc3545;\n  --bs-orange: #fd7e14;\n  --bs-yellow: #ffc107;\n  --bs-green: #198754;\n  --bs-teal: #20c997;\n  --bs-cyan: #0dcaf0;\n  --bs-white: #fff;\n  --bs-gray: #6c757d;\n  --bs-gray-dark: #343a40;\n  --bs-gray-100: #f8f9fa;\n  --bs-gray-200: #e9ecef;\n  --bs-gray-300: #dee2e6;\n  --bs-gray-400: #ced4da;\n  --bs-gray-500: #adb5bd;\n  --bs-gray-600: #6c757d;\n  --bs-gray-700: #495057;\n  --bs-gray-800: #343a40;\n  --bs-gray-900: #212529;\n  --bs-primary: #0d6efd;\n  --bs-secondary: #6c757d;\n  --bs-success: #198754;\n  --bs-info: #0dcaf0;\n  --bs-warning: #ffc107;\n  --bs-danger: #dc3545;\n  --bs-light: #f8f9fa;\n  --bs-dark: #212529;\n  --bs-primary-rgb: 13, 110, 253;\n  --bs-secondary-rgb: 108, 117, 125;\n  --bs-success-rgb: 25, 135, 84;\n  --bs-info-rgb: 13, 202, 240;\n  --bs-warning-rgb: 255, 193, 7;\n  --bs-danger-rgb: 220, 53, 69;\n  --bs-light-rgb: 248, 249, 250;\n  --bs-dark-rgb: 33, 37, 41;\n  --bs-white-rgb: 255, 255, 255;\n  --bs-black-rgb: 0, 0, 0;\n  --bs-body-color-rgb: 33, 37, 41;\n  --bs-body-bg-rgb: 255, 255, 255;\n  --bs-font-sans-serif: system-ui, -apple-system, \"Segoe UI\", Roboto, \"Helvetica Neue\", Arial, \"Noto Sans\", \"Liberation Sans\", sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\", \"Noto Color Emoji\";\n  --bs-font-monospace: SFMono-Regular, Menlo, Monaco, Consolas, \"Liberation Mono\", \"Courier New\", monospace;\n  --bs-gradient: linear-gradient(180deg, rgba(255, 255, 255, 0.15), rgba(255, 255, 255, 0));\n  --bs-body-font-family: var(--bs-font-sans-serif);\n  --bs-body-font-size: 1rem;\n  --bs-body-font-weight: 400;\n  --bs-body-line-height: 1.5;\n  --bs-body-color: #212529;\n  --bs-body-bg: #fff;\n}\n\n*,\n*::before,\n*::after {\n  box-sizing: border-box;\n}\n\n@media (prefers-reduced-motion: no-preference) {\n  :root {\n    scroll-behavior: smooth;\n  }\n}\n\nbody {\n  margin: 0;\n  font-family: var(--bs-body-font-family);\n  font-size: var(--bs-body-font-size);\n  font-weight: var(--bs-body-font-weight);\n  line-height: var(--bs-body-line-height);\n  color: var(--bs-body-color);\n  text-align: var(--bs-body-text-align);\n  background-color: var(--bs-body-bg);\n  -webkit-text-size-adjust: 100%;\n  -webkit-tap-highlight-color: rgba(0, 0, 0, 0);\n}\n\nhr {\n  margin: 1rem 0;\n  color: inherit;\n  background-color: currentColor;\n  border: 0;\n  opacity: 0.25;\n}\n\nhr:not([size]) {\n  height: 1px;\n}\n\nh6, .h6, h5, .h5, h4, .h4, h3, .h3, h2, .h2, h1, .h1 {\n  margin-top: 0;\n  margin-bottom: 0.5rem;\n  font-weight: 500;\n  line-height: 1.2;\n}\n\nh1, .h1 {\n  font-size: calc(1.375rem + 1.5vw);\n}\n@media (min-width: 1200px) {\n  h1, .h1 {\n    font-size: 2.5rem;\n  }\n}\n\nh2, .h2 {\n  font-size: calc(1.325rem + 0.9vw);\n}\n@media (min-width: 1200px) {\n  h2, .h2 {\n    font-size: 2rem;\n  }\n}\n\nh3, .h3 {\n  font-size: calc(1.3rem + 0.6vw);\n}\n@media (min-width: 1200px) {\n  h3, .h3 {\n    font-size: 1.75rem;\n  }\n}\n\nh4, .h4 {\n  font-size: calc(1.275rem + 0.3vw);\n}\n@media (min-width: 1200px) {\n  h4, .h4 {\n    font-size: 1.5rem;\n  }\n}\n\nh5, .h5 {\n  font-size: 1.25rem;\n}\n\nh6, .h6 {\n  font-size: 1rem;\n}\n\np {\n  margin-top: 0;\n  margin-bottom: 1rem;\n}\n\nabbr[title],\nabbr[data-bs-original-title] {\n  -webkit-text-decoration: underline dotted;\n  text-decoration: underline dotted;\n  cursor: help;\n  -webkit-text-decoration-skip-ink: none;\n  text-decoration-skip-ink: none;\n}\n\naddress {\n  margin-bottom: 1rem;\n  font-style: normal;\n  line-height: inherit;\n}\n\nol,\nul {\n  padding-left: 2rem;\n}\n\nol,\nul,\ndl {\n  margin-top: 0;\n  margin-bottom: 1rem;\n}\n\nol ol,\nul ul,\nol ul,\nul ol {\n  margin-bottom: 0;\n}\n\ndt {\n  font-weight: 700;\n}\n\ndd {\n  margin-bottom: 0.5rem;\n  margin-left: 0;\n}\n\nblockquote {\n  margin: 0 0 1rem;\n}\n\nb,\nstrong {\n  font-weight: bolder;\n}\n\nsmall, .small {\n  font-size: 0.875em;\n}\n\nmark, .mark {\n  padding: 0.2em;\n  background-color: #fcf8e3;\n}\n\nsub,\nsup {\n  position: relative;\n  font-size: 0.75em;\n  line-height: 0;\n  vertical-align: baseline;\n}\n\nsub {\n  bottom: -0.25em;\n}\n\nsup {\n  top: -0.5em;\n}\n\na {\n  color: #0d6efd;\n  text-decoration: underline;\n}\na:hover {\n  color: #0a58ca;\n}\n\na:not([href]):not([class]), a:not([href]):not([class]):hover {\n  color: inherit;\n  text-decoration: none;\n}\n\npre,\ncode,\nkbd,\nsamp {\n  font-family: var(--bs-font-monospace);\n  font-size: 1em;\n  direction: ltr /* rtl:ignore */;\n  unicode-bidi: bidi-override;\n}\n\npre {\n  display: block;\n  margin-top: 0;\n  margin-bottom: 1rem;\n  overflow: auto;\n  font-size: 0.875em;\n}\npre code {\n  font-size: inherit;\n  color: inherit;\n  word-break: normal;\n}\n\ncode {\n  font-size: 0.875em;\n  color: #d63384;\n  word-wrap: break-word;\n}\na > code {\n  color: inherit;\n}\n\nkbd {\n  padding: 0.2rem 0.4rem;\n  font-size: 0.875em;\n  color: #fff;\n  background-color: #212529;\n  border-radius: 0.2rem;\n}\nkbd kbd {\n  padding: 0;\n  font-size: 1em;\n  font-weight: 700;\n}\n\nfigure {\n  margin: 0 0 1rem;\n}\n\nimg,\nsvg {\n  vertical-align: middle;\n}\n\ntable {\n  caption-side: bottom;\n  border-collapse: collapse;\n}\n\ncaption {\n  padding-top: 0.5rem;\n  padding-bottom: 0.5rem;\n  color: #6c757d;\n  text-align: left;\n}\n\nth {\n  text-align: inherit;\n  text-align: -webkit-match-parent;\n}\n\nthead,\ntbody,\ntfoot,\ntr,\ntd,\nth {\n  border-color: inherit;\n  border-style: solid;\n  border-width: 0;\n}\n\nlabel {\n  display: inline-block;\n}\n\nbutton {\n  border-radius: 0;\n}\n\nbutton:focus:not(:focus-visible) {\n  outline: 0;\n}\n\ninput,\nbutton,\nselect,\noptgroup,\ntextarea {\n  margin: 0;\n  font-family: inherit;\n  font-size: inherit;\n  line-height: inherit;\n}\n\nbutton,\nselect {\n  text-transform: none;\n}\n\n[role=button] {\n  cursor: pointer;\n}\n\nselect {\n  word-wrap: normal;\n}\nselect:disabled {\n  opacity: 1;\n}\n\n[list]::-webkit-calendar-picker-indicator {\n  display: none;\n}\n\nbutton,\n[type=button],\n[type=reset],\n[type=submit] {\n  -webkit-appearance: button;\n}\nbutton:not(:disabled),\n[type=button]:not(:disabled),\n[type=reset]:not(:disabled),\n[type=submit]:not(:disabled) {\n  cursor: pointer;\n}\n\n::-moz-focus-inner {\n  padding: 0;\n  border-style: none;\n}\n\ntextarea {\n  resize: vertical;\n}\n\nfieldset {\n  min-width: 0;\n  padding: 0;\n  margin: 0;\n  border: 0;\n}\n\nlegend {\n  float: left;\n  width: 100%;\n  padding: 0;\n  margin-bottom: 0.5rem;\n  font-size: calc(1.275rem + 0.3vw);\n  line-height: inherit;\n}\n@media (min-width: 1200px) {\n  legend {\n    font-size: 1.5rem;\n  }\n}\nlegend + * {\n  clear: left;\n}\n\n::-webkit-datetime-edit-fields-wrapper,\n::-webkit-datetime-edit-text,\n::-webkit-datetime-edit-minute,\n::-webkit-datetime-edit-hour-field,\n::-webkit-datetime-edit-day-field,\n::-webkit-datetime-edit-month-field,\n::-webkit-datetime-edit-year-field {\n  padding: 0;\n}\n\n::-webkit-inner-spin-button {\n  height: auto;\n}\n\n[type=search] {\n  outline-offset: -2px;\n  -webkit-appearance: textfield;\n}\n\n/* rtl:raw:\n[type=\"tel\"],\n[type=\"url\"],\n[type=\"email\"],\n[type=\"number\"] {\n  direction: ltr;\n}\n*/\n::-webkit-search-decoration {\n  -webkit-appearance: none;\n}\n\n::-webkit-color-swatch-wrapper {\n  padding: 0;\n}\n\n::-webkit-file-upload-button {\n  font: inherit;\n}\n\n::file-selector-button {\n  font: inherit;\n}\n\n::-webkit-file-upload-button {\n  font: inherit;\n  -webkit-appearance: button;\n}\n\noutput {\n  display: inline-block;\n}\n\niframe {\n  border: 0;\n}\n\nsummary {\n  display: list-item;\n  cursor: pointer;\n}\n\nprogress {\n  vertical-align: baseline;\n}\n\n[hidden] {\n  display: none !important;\n}\n\n.lead {\n  font-size: 1.25rem;\n  font-weight: 300;\n}\n\n.display-1 {\n  font-size: calc(1.625rem + 4.5vw);\n  font-weight: 300;\n  line-height: 1.2;\n}\n@media (min-width: 1200px) {\n  .display-1 {\n    font-size: 5rem;\n  }\n}\n\n.display-2 {\n  font-size: calc(1.575rem + 3.9vw);\n  font-weight: 300;\n  line-height: 1.2;\n}\n@media (min-width: 1200px) {\n  .display-2 {\n    font-size: 4.5rem;\n  }\n}\n\n.display-3 {\n  font-size: calc(1.525rem + 3.3vw);\n  font-weight: 300;\n  line-height: 1.2;\n}\n@media (min-width: 1200px) {\n  .display-3 {\n    font-size: 4rem;\n  }\n}\n\n.display-4 {\n  font-size: calc(1.475rem + 2.7vw);\n  font-weight: 300;\n  line-height: 1.2;\n}\n@media (min-width: 1200px) {\n  .display-4 {\n    font-size: 3.5rem;\n  }\n}\n\n.display-5 {\n  font-size: calc(1.425rem + 2.1vw);\n  font-weight: 300;\n  line-height: 1.2;\n}\n@media (min-width: 1200px) {\n  .display-5 {\n    font-size: 3rem;\n  }\n}\n\n.display-6 {\n  font-size: calc(1.375rem + 1.5vw);\n  font-weight: 300;\n  line-height: 1.2;\n}\n@media (min-width: 1200px) {\n  .display-6 {\n    font-size: 2.5rem;\n  }\n}\n\n.list-unstyled {\n  padding-left: 0;\n  list-style: none;\n}\n\n.list-inline {\n  padding-left: 0;\n  list-style: none;\n}\n\n.list-inline-item {\n  display: inline-block;\n}\n.list-inline-item:not(:last-child) {\n  margin-right: 0.5rem;\n}\n\n.initialism {\n  font-size: 0.875em;\n  text-transform: uppercase;\n}\n\n.blockquote {\n  margin-bottom: 1rem;\n  font-size: 1.25rem;\n}\n.blockquote > :last-child {\n  margin-bottom: 0;\n}\n\n.blockquote-footer {\n  margin-top: -1rem;\n  margin-bottom: 1rem;\n  font-size: 0.875em;\n  color: #6c757d;\n}\n.blockquote-footer::before {\n  content: \"— \";\n}\n\n.img-fluid {\n  max-width: 100%;\n  height: auto;\n}\n\n.img-thumbnail {\n  padding: 0.25rem;\n  background-color: #fff;\n  border: 1px solid #dee2e6;\n  border-radius: 0.25rem;\n  max-width: 100%;\n  height: auto;\n}\n\n.figure {\n  display: inline-block;\n}\n\n.figure-img {\n  margin-bottom: 0.5rem;\n  line-height: 1;\n}\n\n.figure-caption {\n  font-size: 0.875em;\n  color: #6c757d;\n}\n\n.container,\n.container-fluid,\n.container-xxl,\n.container-xl,\n.container-lg,\n.container-md,\n.container-sm {\n  width: 100%;\n  padding-right: var(--bs-gutter-x, 0.75rem);\n  padding-left: var(--bs-gutter-x, 0.75rem);\n  margin-right: auto;\n  margin-left: auto;\n}\n\n@media (min-width: 576px) {\n  .container-sm, .container {\n    max-width: 540px;\n  }\n}\n@media (min-width: 768px) {\n  .container-md, .container-sm, .container {\n    max-width: 720px;\n  }\n}\n@media (min-width: 992px) {\n  .container-lg, .container-md, .container-sm, .container {\n    max-width: 960px;\n  }\n}\n@media (min-width: 1200px) {\n  .container-xl, .container-lg, .container-md, .container-sm, .container {\n    max-width: 1140px;\n  }\n}\n@media (min-width: 1400px) {\n  .container-xxl, .container-xl, .container-lg, .container-md, .container-sm, .container {\n    max-width: 1320px;\n  }\n}\n.row {\n  --bs-gutter-x: 1.5rem;\n  --bs-gutter-y: 0;\n  display: flex;\n  flex-wrap: wrap;\n  margin-top: calc(-1 * var(--bs-gutter-y));\n  margin-right: calc(-0.5 * var(--bs-gutter-x));\n  margin-left: calc(-0.5 * var(--bs-gutter-x));\n}\n.row > * {\n  flex-shrink: 0;\n  width: 100%;\n  max-width: 100%;\n  padding-right: calc(var(--bs-gutter-x) * 0.5);\n  padding-left: calc(var(--bs-gutter-x) * 0.5);\n  margin-top: var(--bs-gutter-y);\n}\n\n.col {\n  flex: 1 0 0%;\n}\n\n.row-cols-auto > * {\n  flex: 0 0 auto;\n  width: auto;\n}\n\n.row-cols-1 > * {\n  flex: 0 0 auto;\n  width: 100%;\n}\n\n.row-cols-2 > * {\n  flex: 0 0 auto;\n  width: 50%;\n}\n\n.row-cols-3 > * {\n  flex: 0 0 auto;\n  width: 33.3333333333%;\n}\n\n.row-cols-4 > * {\n  flex: 0 0 auto;\n  width: 25%;\n}\n\n.row-cols-5 > * {\n  flex: 0 0 auto;\n  width: 20%;\n}\n\n.row-cols-6 > * {\n  flex: 0 0 auto;\n  width: 16.6666666667%;\n}\n\n.col-auto {\n  flex: 0 0 auto;\n  width: auto;\n}\n\n.col-1 {\n  flex: 0 0 auto;\n  width: 8.33333333%;\n}\n\n.col-2 {\n  flex: 0 0 auto;\n  width: 16.66666667%;\n}\n\n.col-3 {\n  flex: 0 0 auto;\n  width: 25%;\n}\n\n.col-4 {\n  flex: 0 0 auto;\n  width: 33.33333333%;\n}\n\n.col-5 {\n  flex: 0 0 auto;\n  width: 41.66666667%;\n}\n\n.col-6 {\n  flex: 0 0 auto;\n  width: 50%;\n}\n\n.col-7 {\n  flex: 0 0 auto;\n  width: 58.33333333%;\n}\n\n.col-8 {\n  flex: 0 0 auto;\n  width: 66.66666667%;\n}\n\n.col-9 {\n  flex: 0 0 auto;\n  width: 75%;\n}\n\n.col-10 {\n  flex: 0 0 auto;\n  width: 83.33333333%;\n}\n\n.col-11 {\n  flex: 0 0 auto;\n  width: 91.66666667%;\n}\n\n.col-12 {\n  flex: 0 0 auto;\n  width: 100%;\n}\n\n.offset-1 {\n  margin-left: 8.33333333%;\n}\n\n.offset-2 {\n  margin-left: 16.66666667%;\n}\n\n.offset-3 {\n  margin-left: 25%;\n}\n\n.offset-4 {\n  margin-left: 33.33333333%;\n}\n\n.offset-5 {\n  margin-left: 41.66666667%;\n}\n\n.offset-6 {\n  margin-left: 50%;\n}\n\n.offset-7 {\n  margin-left: 58.33333333%;\n}\n\n.offset-8 {\n  margin-left: 66.66666667%;\n}\n\n.offset-9 {\n  margin-left: 75%;\n}\n\n.offset-10 {\n  margin-left: 83.33333333%;\n}\n\n.offset-11 {\n  margin-left: 91.66666667%;\n}\n\n.g-0,\n.gx-0 {\n  --bs-gutter-x: 0;\n}\n\n.g-0,\n.gy-0 {\n  --bs-gutter-y: 0;\n}\n\n.g-1,\n.gx-1 {\n  --bs-gutter-x: 0.25rem;\n}\n\n.g-1,\n.gy-1 {\n  --bs-gutter-y: 0.25rem;\n}\n\n.g-2,\n.gx-2 {\n  --bs-gutter-x: 0.5rem;\n}\n\n.g-2,\n.gy-2 {\n  --bs-gutter-y: 0.5rem;\n}\n\n.g-3,\n.gx-3 {\n  --bs-gutter-x: 1rem;\n}\n\n.g-3,\n.gy-3 {\n  --bs-gutter-y: 1rem;\n}\n\n.g-4,\n.gx-4 {\n  --bs-gutter-x: 1.5rem;\n}\n\n.g-4,\n.gy-4 {\n  --bs-gutter-y: 1.5rem;\n}\n\n.g-5,\n.gx-5 {\n  --bs-gutter-x: 3rem;\n}\n\n.g-5,\n.gy-5 {\n  --bs-gutter-y: 3rem;\n}\n\n@media (min-width: 576px) {\n  .col-sm {\n    flex: 1 0 0%;\n  }\n\n  .row-cols-sm-auto > * {\n    flex: 0 0 auto;\n    width: auto;\n  }\n\n  .row-cols-sm-1 > * {\n    flex: 0 0 auto;\n    width: 100%;\n  }\n\n  .row-cols-sm-2 > * {\n    flex: 0 0 auto;\n    width: 50%;\n  }\n\n  .row-cols-sm-3 > * {\n    flex: 0 0 auto;\n    width: 33.3333333333%;\n  }\n\n  .row-cols-sm-4 > * {\n    flex: 0 0 auto;\n    width: 25%;\n  }\n\n  .row-cols-sm-5 > * {\n    flex: 0 0 auto;\n    width: 20%;\n  }\n\n  .row-cols-sm-6 > * {\n    flex: 0 0 auto;\n    width: 16.6666666667%;\n  }\n\n  .col-sm-auto {\n    flex: 0 0 auto;\n    width: auto;\n  }\n\n  .col-sm-1 {\n    flex: 0 0 auto;\n    width: 8.33333333%;\n  }\n\n  .col-sm-2 {\n    flex: 0 0 auto;\n    width: 16.66666667%;\n  }\n\n  .col-sm-3 {\n    flex: 0 0 auto;\n    width: 25%;\n  }\n\n  .col-sm-4 {\n    flex: 0 0 auto;\n    width: 33.33333333%;\n  }\n\n  .col-sm-5 {\n    flex: 0 0 auto;\n    width: 41.66666667%;\n  }\n\n  .col-sm-6 {\n    flex: 0 0 auto;\n    width: 50%;\n  }\n\n  .col-sm-7 {\n    flex: 0 0 auto;\n    width: 58.33333333%;\n  }\n\n  .col-sm-8 {\n    flex: 0 0 auto;\n    width: 66.66666667%;\n  }\n\n  .col-sm-9 {\n    flex: 0 0 auto;\n    width: 75%;\n  }\n\n  .col-sm-10 {\n    flex: 0 0 auto;\n    width: 83.33333333%;\n  }\n\n  .col-sm-11 {\n    flex: 0 0 auto;\n    width: 91.66666667%;\n  }\n\n  .col-sm-12 {\n    flex: 0 0 auto;\n    width: 100%;\n  }\n\n  .offset-sm-0 {\n    margin-left: 0;\n  }\n\n  .offset-sm-1 {\n    margin-left: 8.33333333%;\n  }\n\n  .offset-sm-2 {\n    margin-left: 16.66666667%;\n  }\n\n  .offset-sm-3 {\n    margin-left: 25%;\n  }\n\n  .offset-sm-4 {\n    margin-left: 33.33333333%;\n  }\n\n  .offset-sm-5 {\n    margin-left: 41.66666667%;\n  }\n\n  .offset-sm-6 {\n    margin-left: 50%;\n  }\n\n  .offset-sm-7 {\n    margin-left: 58.33333333%;\n  }\n\n  .offset-sm-8 {\n    margin-left: 66.66666667%;\n  }\n\n  .offset-sm-9 {\n    margin-left: 75%;\n  }\n\n  .offset-sm-10 {\n    margin-left: 83.33333333%;\n  }\n\n  .offset-sm-11 {\n    margin-left: 91.66666667%;\n  }\n\n  .g-sm-0,\n.gx-sm-0 {\n    --bs-gutter-x: 0;\n  }\n\n  .g-sm-0,\n.gy-sm-0 {\n    --bs-gutter-y: 0;\n  }\n\n  .g-sm-1,\n.gx-sm-1 {\n    --bs-gutter-x: 0.25rem;\n  }\n\n  .g-sm-1,\n.gy-sm-1 {\n    --bs-gutter-y: 0.25rem;\n  }\n\n  .g-sm-2,\n.gx-sm-2 {\n    --bs-gutter-x: 0.5rem;\n  }\n\n  .g-sm-2,\n.gy-sm-2 {\n    --bs-gutter-y: 0.5rem;\n  }\n\n  .g-sm-3,\n.gx-sm-3 {\n    --bs-gutter-x: 1rem;\n  }\n\n  .g-sm-3,\n.gy-sm-3 {\n    --bs-gutter-y: 1rem;\n  }\n\n  .g-sm-4,\n.gx-sm-4 {\n    --bs-gutter-x: 1.5rem;\n  }\n\n  .g-sm-4,\n.gy-sm-4 {\n    --bs-gutter-y: 1.5rem;\n  }\n\n  .g-sm-5,\n.gx-sm-5 {\n    --bs-gutter-x: 3rem;\n  }\n\n  .g-sm-5,\n.gy-sm-5 {\n    --bs-gutter-y: 3rem;\n  }\n}\n@media (min-width: 768px) {\n  .col-md {\n    flex: 1 0 0%;\n  }\n\n  .row-cols-md-auto > * {\n    flex: 0 0 auto;\n    width: auto;\n  }\n\n  .row-cols-md-1 > * {\n    flex: 0 0 auto;\n    width: 100%;\n  }\n\n  .row-cols-md-2 > * {\n    flex: 0 0 auto;\n    width: 50%;\n  }\n\n  .row-cols-md-3 > * {\n    flex: 0 0 auto;\n    width: 33.3333333333%;\n  }\n\n  .row-cols-md-4 > * {\n    flex: 0 0 auto;\n    width: 25%;\n  }\n\n  .row-cols-md-5 > * {\n    flex: 0 0 auto;\n    width: 20%;\n  }\n\n  .row-cols-md-6 > * {\n    flex: 0 0 auto;\n    width: 16.6666666667%;\n  }\n\n  .col-md-auto {\n    flex: 0 0 auto;\n    width: auto;\n  }\n\n  .col-md-1 {\n    flex: 0 0 auto;\n    width: 8.33333333%;\n  }\n\n  .col-md-2 {\n    flex: 0 0 auto;\n    width: 16.66666667%;\n  }\n\n  .col-md-3 {\n    flex: 0 0 auto;\n    width: 25%;\n  }\n\n  .col-md-4 {\n    flex: 0 0 auto;\n    width: 33.33333333%;\n  }\n\n  .col-md-5 {\n    flex: 0 0 auto;\n    width: 41.66666667%;\n  }\n\n  .col-md-6 {\n    flex: 0 0 auto;\n    width: 50%;\n  }\n\n  .col-md-7 {\n    flex: 0 0 auto;\n    width: 58.33333333%;\n  }\n\n  .col-md-8 {\n    flex: 0 0 auto;\n    width: 66.66666667%;\n  }\n\n  .col-md-9 {\n    flex: 0 0 auto;\n    width: 75%;\n  }\n\n  .col-md-10 {\n    flex: 0 0 auto;\n    width: 83.33333333%;\n  }\n\n  .col-md-11 {\n    flex: 0 0 auto;\n    width: 91.66666667%;\n  }\n\n  .col-md-12 {\n    flex: 0 0 auto;\n    width: 100%;\n  }\n\n  .offset-md-0 {\n    margin-left: 0;\n  }\n\n  .offset-md-1 {\n    margin-left: 8.33333333%;\n  }\n\n  .offset-md-2 {\n    margin-left: 16.66666667%;\n  }\n\n  .offset-md-3 {\n    margin-left: 25%;\n  }\n\n  .offset-md-4 {\n    margin-left: 33.33333333%;\n  }\n\n  .offset-md-5 {\n    margin-left: 41.66666667%;\n  }\n\n  .offset-md-6 {\n    margin-left: 50%;\n  }\n\n  .offset-md-7 {\n    margin-left: 58.33333333%;\n  }\n\n  .offset-md-8 {\n    margin-left: 66.66666667%;\n  }\n\n  .offset-md-9 {\n    margin-left: 75%;\n  }\n\n  .offset-md-10 {\n    margin-left: 83.33333333%;\n  }\n\n  .offset-md-11 {\n    margin-left: 91.66666667%;\n  }\n\n  .g-md-0,\n.gx-md-0 {\n    --bs-gutter-x: 0;\n  }\n\n  .g-md-0,\n.gy-md-0 {\n    --bs-gutter-y: 0;\n  }\n\n  .g-md-1,\n.gx-md-1 {\n    --bs-gutter-x: 0.25rem;\n  }\n\n  .g-md-1,\n.gy-md-1 {\n    --bs-gutter-y: 0.25rem;\n  }\n\n  .g-md-2,\n.gx-md-2 {\n    --bs-gutter-x: 0.5rem;\n  }\n\n  .g-md-2,\n.gy-md-2 {\n    --bs-gutter-y: 0.5rem;\n  }\n\n  .g-md-3,\n.gx-md-3 {\n    --bs-gutter-x: 1rem;\n  }\n\n  .g-md-3,\n.gy-md-3 {\n    --bs-gutter-y: 1rem;\n  }\n\n  .g-md-4,\n.gx-md-4 {\n    --bs-gutter-x: 1.5rem;\n  }\n\n  .g-md-4,\n.gy-md-4 {\n    --bs-gutter-y: 1.5rem;\n  }\n\n  .g-md-5,\n.gx-md-5 {\n    --bs-gutter-x: 3rem;\n  }\n\n  .g-md-5,\n.gy-md-5 {\n    --bs-gutter-y: 3rem;\n  }\n}\n@media (min-width: 992px) {\n  .col-lg {\n    flex: 1 0 0%;\n  }\n\n  .row-cols-lg-auto > * {\n    flex: 0 0 auto;\n    width: auto;\n  }\n\n  .row-cols-lg-1 > * {\n    flex: 0 0 auto;\n    width: 100%;\n  }\n\n  .row-cols-lg-2 > * {\n    flex: 0 0 auto;\n    width: 50%;\n  }\n\n  .row-cols-lg-3 > * {\n    flex: 0 0 auto;\n    width: 33.3333333333%;\n  }\n\n  .row-cols-lg-4 > * {\n    flex: 0 0 auto;\n    width: 25%;\n  }\n\n  .row-cols-lg-5 > * {\n    flex: 0 0 auto;\n    width: 20%;\n  }\n\n  .row-cols-lg-6 > * {\n    flex: 0 0 auto;\n    width: 16.6666666667%;\n  }\n\n  .col-lg-auto {\n    flex: 0 0 auto;\n    width: auto;\n  }\n\n  .col-lg-1 {\n    flex: 0 0 auto;\n    width: 8.33333333%;\n  }\n\n  .col-lg-2 {\n    flex: 0 0 auto;\n    width: 16.66666667%;\n  }\n\n  .col-lg-3 {\n    flex: 0 0 auto;\n    width: 25%;\n  }\n\n  .col-lg-4 {\n    flex: 0 0 auto;\n    width: 33.33333333%;\n  }\n\n  .col-lg-5 {\n    flex: 0 0 auto;\n    width: 41.66666667%;\n  }\n\n  .col-lg-6 {\n    flex: 0 0 auto;\n    width: 50%;\n  }\n\n  .col-lg-7 {\n    flex: 0 0 auto;\n    width: 58.33333333%;\n  }\n\n  .col-lg-8 {\n    flex: 0 0 auto;\n    width: 66.66666667%;\n  }\n\n  .col-lg-9 {\n    flex: 0 0 auto;\n    width: 75%;\n  }\n\n  .col-lg-10 {\n    flex: 0 0 auto;\n    width: 83.33333333%;\n  }\n\n  .col-lg-11 {\n    flex: 0 0 auto;\n    width: 91.66666667%;\n  }\n\n  .col-lg-12 {\n    flex: 0 0 auto;\n    width: 100%;\n  }\n\n  .offset-lg-0 {\n    margin-left: 0;\n  }\n\n  .offset-lg-1 {\n    margin-left: 8.33333333%;\n  }\n\n  .offset-lg-2 {\n    margin-left: 16.66666667%;\n  }\n\n  .offset-lg-3 {\n    margin-left: 25%;\n  }\n\n  .offset-lg-4 {\n    margin-left: 33.33333333%;\n  }\n\n  .offset-lg-5 {\n    margin-left: 41.66666667%;\n  }\n\n  .offset-lg-6 {\n    margin-left: 50%;\n  }\n\n  .offset-lg-7 {\n    margin-left: 58.33333333%;\n  }\n\n  .offset-lg-8 {\n    margin-left: 66.66666667%;\n  }\n\n  .offset-lg-9 {\n    margin-left: 75%;\n  }\n\n  .offset-lg-10 {\n    margin-left: 83.33333333%;\n  }\n\n  .offset-lg-11 {\n    margin-left: 91.66666667%;\n  }\n\n  .g-lg-0,\n.gx-lg-0 {\n    --bs-gutter-x: 0;\n  }\n\n  .g-lg-0,\n.gy-lg-0 {\n    --bs-gutter-y: 0;\n  }\n\n  .g-lg-1,\n.gx-lg-1 {\n    --bs-gutter-x: 0.25rem;\n  }\n\n  .g-lg-1,\n.gy-lg-1 {\n    --bs-gutter-y: 0.25rem;\n  }\n\n  .g-lg-2,\n.gx-lg-2 {\n    --bs-gutter-x: 0.5rem;\n  }\n\n  .g-lg-2,\n.gy-lg-2 {\n    --bs-gutter-y: 0.5rem;\n  }\n\n  .g-lg-3,\n.gx-lg-3 {\n    --bs-gutter-x: 1rem;\n  }\n\n  .g-lg-3,\n.gy-lg-3 {\n    --bs-gutter-y: 1rem;\n  }\n\n  .g-lg-4,\n.gx-lg-4 {\n    --bs-gutter-x: 1.5rem;\n  }\n\n  .g-lg-4,\n.gy-lg-4 {\n    --bs-gutter-y: 1.5rem;\n  }\n\n  .g-lg-5,\n.gx-lg-5 {\n    --bs-gutter-x: 3rem;\n  }\n\n  .g-lg-5,\n.gy-lg-5 {\n    --bs-gutter-y: 3rem;\n  }\n}\n@media (min-width: 1200px) {\n  .col-xl {\n    flex: 1 0 0%;\n  }\n\n  .row-cols-xl-auto > * {\n    flex: 0 0 auto;\n    width: auto;\n  }\n\n  .row-cols-xl-1 > * {\n    flex: 0 0 auto;\n    width: 100%;\n  }\n\n  .row-cols-xl-2 > * {\n    flex: 0 0 auto;\n    width: 50%;\n  }\n\n  .row-cols-xl-3 > * {\n    flex: 0 0 auto;\n    width: 33.3333333333%;\n  }\n\n  .row-cols-xl-4 > * {\n    flex: 0 0 auto;\n    width: 25%;\n  }\n\n  .row-cols-xl-5 > * {\n    flex: 0 0 auto;\n    width: 20%;\n  }\n\n  .row-cols-xl-6 > * {\n    flex: 0 0 auto;\n    width: 16.6666666667%;\n  }\n\n  .col-xl-auto {\n    flex: 0 0 auto;\n    width: auto;\n  }\n\n  .col-xl-1 {\n    flex: 0 0 auto;\n    width: 8.33333333%;\n  }\n\n  .col-xl-2 {\n    flex: 0 0 auto;\n    width: 16.66666667%;\n  }\n\n  .col-xl-3 {\n    flex: 0 0 auto;\n    width: 25%;\n  }\n\n  .col-xl-4 {\n    flex: 0 0 auto;\n    width: 33.33333333%;\n  }\n\n  .col-xl-5 {\n    flex: 0 0 auto;\n    width: 41.66666667%;\n  }\n\n  .col-xl-6 {\n    flex: 0 0 auto;\n    width: 50%;\n  }\n\n  .col-xl-7 {\n    flex: 0 0 auto;\n    width: 58.33333333%;\n  }\n\n  .col-xl-8 {\n    flex: 0 0 auto;\n    width: 66.66666667%;\n  }\n\n  .col-xl-9 {\n    flex: 0 0 auto;\n    width: 75%;\n  }\n\n  .col-xl-10 {\n    flex: 0 0 auto;\n    width: 83.33333333%;\n  }\n\n  .col-xl-11 {\n    flex: 0 0 auto;\n    width: 91.66666667%;\n  }\n\n  .col-xl-12 {\n    flex: 0 0 auto;\n    width: 100%;\n  }\n\n  .offset-xl-0 {\n    margin-left: 0;\n  }\n\n  .offset-xl-1 {\n    margin-left: 8.33333333%;\n  }\n\n  .offset-xl-2 {\n    margin-left: 16.66666667%;\n  }\n\n  .offset-xl-3 {\n    margin-left: 25%;\n  }\n\n  .offset-xl-4 {\n    margin-left: 33.33333333%;\n  }\n\n  .offset-xl-5 {\n    margin-left: 41.66666667%;\n  }\n\n  .offset-xl-6 {\n    margin-left: 50%;\n  }\n\n  .offset-xl-7 {\n    margin-left: 58.33333333%;\n  }\n\n  .offset-xl-8 {\n    margin-left: 66.66666667%;\n  }\n\n  .offset-xl-9 {\n    margin-left: 75%;\n  }\n\n  .offset-xl-10 {\n    margin-left: 83.33333333%;\n  }\n\n  .offset-xl-11 {\n    margin-left: 91.66666667%;\n  }\n\n  .g-xl-0,\n.gx-xl-0 {\n    --bs-gutter-x: 0;\n  }\n\n  .g-xl-0,\n.gy-xl-0 {\n    --bs-gutter-y: 0;\n  }\n\n  .g-xl-1,\n.gx-xl-1 {\n    --bs-gutter-x: 0.25rem;\n  }\n\n  .g-xl-1,\n.gy-xl-1 {\n    --bs-gutter-y: 0.25rem;\n  }\n\n  .g-xl-2,\n.gx-xl-2 {\n    --bs-gutter-x: 0.5rem;\n  }\n\n  .g-xl-2,\n.gy-xl-2 {\n    --bs-gutter-y: 0.5rem;\n  }\n\n  .g-xl-3,\n.gx-xl-3 {\n    --bs-gutter-x: 1rem;\n  }\n\n  .g-xl-3,\n.gy-xl-3 {\n    --bs-gutter-y: 1rem;\n  }\n\n  .g-xl-4,\n.gx-xl-4 {\n    --bs-gutter-x: 1.5rem;\n  }\n\n  .g-xl-4,\n.gy-xl-4 {\n    --bs-gutter-y: 1.5rem;\n  }\n\n  .g-xl-5,\n.gx-xl-5 {\n    --bs-gutter-x: 3rem;\n  }\n\n  .g-xl-5,\n.gy-xl-5 {\n    --bs-gutter-y: 3rem;\n  }\n}\n@media (min-width: 1400px) {\n  .col-xxl {\n    flex: 1 0 0%;\n  }\n\n  .row-cols-xxl-auto > * {\n    flex: 0 0 auto;\n    width: auto;\n  }\n\n  .row-cols-xxl-1 > * {\n    flex: 0 0 auto;\n    width: 100%;\n  }\n\n  .row-cols-xxl-2 > * {\n    flex: 0 0 auto;\n    width: 50%;\n  }\n\n  .row-cols-xxl-3 > * {\n    flex: 0 0 auto;\n    width: 33.3333333333%;\n  }\n\n  .row-cols-xxl-4 > * {\n    flex: 0 0 auto;\n    width: 25%;\n  }\n\n  .row-cols-xxl-5 > * {\n    flex: 0 0 auto;\n    width: 20%;\n  }\n\n  .row-cols-xxl-6 > * {\n    flex: 0 0 auto;\n    width: 16.6666666667%;\n  }\n\n  .col-xxl-auto {\n    flex: 0 0 auto;\n    width: auto;\n  }\n\n  .col-xxl-1 {\n    flex: 0 0 auto;\n    width: 8.33333333%;\n  }\n\n  .col-xxl-2 {\n    flex: 0 0 auto;\n    width: 16.66666667%;\n  }\n\n  .col-xxl-3 {\n    flex: 0 0 auto;\n    width: 25%;\n  }\n\n  .col-xxl-4 {\n    flex: 0 0 auto;\n    width: 33.33333333%;\n  }\n\n  .col-xxl-5 {\n    flex: 0 0 auto;\n    width: 41.66666667%;\n  }\n\n  .col-xxl-6 {\n    flex: 0 0 auto;\n    width: 50%;\n  }\n\n  .col-xxl-7 {\n    flex: 0 0 auto;\n    width: 58.33333333%;\n  }\n\n  .col-xxl-8 {\n    flex: 0 0 auto;\n    width: 66.66666667%;\n  }\n\n  .col-xxl-9 {\n    flex: 0 0 auto;\n    width: 75%;\n  }\n\n  .col-xxl-10 {\n    flex: 0 0 auto;\n    width: 83.33333333%;\n  }\n\n  .col-xxl-11 {\n    flex: 0 0 auto;\n    width: 91.66666667%;\n  }\n\n  .col-xxl-12 {\n    flex: 0 0 auto;\n    width: 100%;\n  }\n\n  .offset-xxl-0 {\n    margin-left: 0;\n  }\n\n  .offset-xxl-1 {\n    margin-left: 8.33333333%;\n  }\n\n  .offset-xxl-2 {\n    margin-left: 16.66666667%;\n  }\n\n  .offset-xxl-3 {\n    margin-left: 25%;\n  }\n\n  .offset-xxl-4 {\n    margin-left: 33.33333333%;\n  }\n\n  .offset-xxl-5 {\n    margin-left: 41.66666667%;\n  }\n\n  .offset-xxl-6 {\n    margin-left: 50%;\n  }\n\n  .offset-xxl-7 {\n    margin-left: 58.33333333%;\n  }\n\n  .offset-xxl-8 {\n    margin-left: 66.66666667%;\n  }\n\n  .offset-xxl-9 {\n    margin-left: 75%;\n  }\n\n  .offset-xxl-10 {\n    margin-left: 83.33333333%;\n  }\n\n  .offset-xxl-11 {\n    margin-left: 91.66666667%;\n  }\n\n  .g-xxl-0,\n.gx-xxl-0 {\n    --bs-gutter-x: 0;\n  }\n\n  .g-xxl-0,\n.gy-xxl-0 {\n    --bs-gutter-y: 0;\n  }\n\n  .g-xxl-1,\n.gx-xxl-1 {\n    --bs-gutter-x: 0.25rem;\n  }\n\n  .g-xxl-1,\n.gy-xxl-1 {\n    --bs-gutter-y: 0.25rem;\n  }\n\n  .g-xxl-2,\n.gx-xxl-2 {\n    --bs-gutter-x: 0.5rem;\n  }\n\n  .g-xxl-2,\n.gy-xxl-2 {\n    --bs-gutter-y: 0.5rem;\n  }\n\n  .g-xxl-3,\n.gx-xxl-3 {\n    --bs-gutter-x: 1rem;\n  }\n\n  .g-xxl-3,\n.gy-xxl-3 {\n    --bs-gutter-y: 1rem;\n  }\n\n  .g-xxl-4,\n.gx-xxl-4 {\n    --bs-gutter-x: 1.5rem;\n  }\n\n  .g-xxl-4,\n.gy-xxl-4 {\n    --bs-gutter-y: 1.5rem;\n  }\n\n  .g-xxl-5,\n.gx-xxl-5 {\n    --bs-gutter-x: 3rem;\n  }\n\n  .g-xxl-5,\n.gy-xxl-5 {\n    --bs-gutter-y: 3rem;\n  }\n}\n.table {\n  --bs-table-bg: transparent;\n  --bs-table-accent-bg: transparent;\n  --bs-table-striped-color: #212529;\n  --bs-table-striped-bg: rgba(0, 0, 0, 0.05);\n  --bs-table-active-color: #212529;\n  --bs-table-active-bg: rgba(0, 0, 0, 0.1);\n  --bs-table-hover-color: #212529;\n  --bs-table-hover-bg: rgba(0, 0, 0, 0.075);\n  width: 100%;\n  margin-bottom: 1rem;\n  color: #212529;\n  vertical-align: top;\n  border-color: #dee2e6;\n}\n.table > :not(caption) > * > * {\n  padding: 0.5rem 0.5rem;\n  background-color: var(--bs-table-bg);\n  border-bottom-width: 1px;\n  box-shadow: inset 0 0 0 9999px var(--bs-table-accent-bg);\n}\n.table > tbody {\n  vertical-align: inherit;\n}\n.table > thead {\n  vertical-align: bottom;\n}\n.table > :not(:first-child) {\n  border-top: 2px solid currentColor;\n}\n\n.caption-top {\n  caption-side: top;\n}\n\n.table-sm > :not(caption) > * > * {\n  padding: 0.25rem 0.25rem;\n}\n\n.table-bordered > :not(caption) > * {\n  border-width: 1px 0;\n}\n.table-bordered > :not(caption) > * > * {\n  border-width: 0 1px;\n}\n\n.table-borderless > :not(caption) > * > * {\n  border-bottom-width: 0;\n}\n.table-borderless > :not(:first-child) {\n  border-top-width: 0;\n}\n\n.table-striped > tbody > tr:nth-of-type(odd) > * {\n  --bs-table-accent-bg: var(--bs-table-striped-bg);\n  color: var(--bs-table-striped-color);\n}\n\n.table-active {\n  --bs-table-accent-bg: var(--bs-table-active-bg);\n  color: var(--bs-table-active-color);\n}\n\n.table-hover > tbody > tr:hover > * {\n  --bs-table-accent-bg: var(--bs-table-hover-bg);\n  color: var(--bs-table-hover-color);\n}\n\n.table-primary {\n  --bs-table-bg: #cfe2ff;\n  --bs-table-striped-bg: #c5d7f2;\n  --bs-table-striped-color: #000;\n  --bs-table-active-bg: #bacbe6;\n  --bs-table-active-color: #000;\n  --bs-table-hover-bg: #bfd1ec;\n  --bs-table-hover-color: #000;\n  color: #000;\n  border-color: #bacbe6;\n}\n\n.table-secondary {\n  --bs-table-bg: #e2e3e5;\n  --bs-table-striped-bg: #d7d8da;\n  --bs-table-striped-color: #000;\n  --bs-table-active-bg: #cbccce;\n  --bs-table-active-color: #000;\n  --bs-table-hover-bg: #d1d2d4;\n  --bs-table-hover-color: #000;\n  color: #000;\n  border-color: #cbccce;\n}\n\n.table-success {\n  --bs-table-bg: #d1e7dd;\n  --bs-table-striped-bg: #c7dbd2;\n  --bs-table-striped-color: #000;\n  --bs-table-active-bg: #bcd0c7;\n  --bs-table-active-color: #000;\n  --bs-table-hover-bg: #c1d6cc;\n  --bs-table-hover-color: #000;\n  color: #000;\n  border-color: #bcd0c7;\n}\n\n.table-info {\n  --bs-table-bg: #cff4fc;\n  --bs-table-striped-bg: #c5e8ef;\n  --bs-table-striped-color: #000;\n  --bs-table-active-bg: #badce3;\n  --bs-table-active-color: #000;\n  --bs-table-hover-bg: #bfe2e9;\n  --bs-table-hover-color: #000;\n  color: #000;\n  border-color: #badce3;\n}\n\n.table-warning {\n  --bs-table-bg: #fff3cd;\n  --bs-table-striped-bg: #f2e7c3;\n  --bs-table-striped-color: #000;\n  --bs-table-active-bg: #e6dbb9;\n  --bs-table-active-color: #000;\n  --bs-table-hover-bg: #ece1be;\n  --bs-table-hover-color: #000;\n  color: #000;\n  border-color: #e6dbb9;\n}\n\n.table-danger {\n  --bs-table-bg: #f8d7da;\n  --bs-table-striped-bg: #eccccf;\n  --bs-table-striped-color: #000;\n  --bs-table-active-bg: #dfc2c4;\n  --bs-table-active-color: #000;\n  --bs-table-hover-bg: #e5c7ca;\n  --bs-table-hover-color: #000;\n  color: #000;\n  border-color: #dfc2c4;\n}\n\n.table-light {\n  --bs-table-bg: #f8f9fa;\n  --bs-table-striped-bg: #ecedee;\n  --bs-table-striped-color: #000;\n  --bs-table-active-bg: #dfe0e1;\n  --bs-table-active-color: #000;\n  --bs-table-hover-bg: #e5e6e7;\n  --bs-table-hover-color: #000;\n  color: #000;\n  border-color: #dfe0e1;\n}\n\n.table-dark {\n  --bs-table-bg: #212529;\n  --bs-table-striped-bg: #2c3034;\n  --bs-table-striped-color: #fff;\n  --bs-table-active-bg: #373b3e;\n  --bs-table-active-color: #fff;\n  --bs-table-hover-bg: #323539;\n  --bs-table-hover-color: #fff;\n  color: #fff;\n  border-color: #373b3e;\n}\n\n.table-responsive {\n  overflow-x: auto;\n  -webkit-overflow-scrolling: touch;\n}\n\n@media (max-width: 575.98px) {\n  .table-responsive-sm {\n    overflow-x: auto;\n    -webkit-overflow-scrolling: touch;\n  }\n}\n@media (max-width: 767.98px) {\n  .table-responsive-md {\n    overflow-x: auto;\n    -webkit-overflow-scrolling: touch;\n  }\n}\n@media (max-width: 991.98px) {\n  .table-responsive-lg {\n    overflow-x: auto;\n    -webkit-overflow-scrolling: touch;\n  }\n}\n@media (max-width: 1199.98px) {\n  .table-responsive-xl {\n    overflow-x: auto;\n    -webkit-overflow-scrolling: touch;\n  }\n}\n@media (max-width: 1399.98px) {\n  .table-responsive-xxl {\n    overflow-x: auto;\n    -webkit-overflow-scrolling: touch;\n  }\n}\n.form-label {\n  margin-bottom: 0.5rem;\n}\n\n.col-form-label {\n  padding-top: calc(0.375rem + 1px);\n  padding-bottom: calc(0.375rem + 1px);\n  margin-bottom: 0;\n  font-size: inherit;\n  line-height: 1.5;\n}\n\n.col-form-label-lg {\n  padding-top: calc(0.5rem + 1px);\n  padding-bottom: calc(0.5rem + 1px);\n  font-size: 1.25rem;\n}\n\n.col-form-label-sm {\n  padding-top: calc(0.25rem + 1px);\n  padding-bottom: calc(0.25rem + 1px);\n  font-size: 0.875rem;\n}\n\n.form-text {\n  margin-top: 0.25rem;\n  font-size: 0.875em;\n  color: #6c757d;\n}\n\n.form-control {\n  display: block;\n  width: 100%;\n  padding: 0.375rem 0.75rem;\n  font-size: 1rem;\n  font-weight: 400;\n  line-height: 1.5;\n  color: #212529;\n  background-color: #fff;\n  background-clip: padding-box;\n  border: 1px solid #ced4da;\n  -webkit-appearance: none;\n  -moz-appearance: none;\n  appearance: none;\n  border-radius: 0.25rem;\n  transition: border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;\n}\n@media (prefers-reduced-motion: reduce) {\n  .form-control {\n    transition: none;\n  }\n}\n.form-control[type=file] {\n  overflow: hidden;\n}\n.form-control[type=file]:not(:disabled):not([readonly]) {\n  cursor: pointer;\n}\n.form-control:focus {\n  color: #212529;\n  background-color: #fff;\n  border-color: #86b7fe;\n  outline: 0;\n  box-shadow: 0 0 0 0.25rem rgba(13, 110, 253, 0.25);\n}\n.form-control::-webkit-date-and-time-value {\n  height: 1.5em;\n}\n.form-control::-moz-placeholder {\n  color: #6c757d;\n  opacity: 1;\n}\n.form-control::placeholder {\n  color: #6c757d;\n  opacity: 1;\n}\n.form-control:disabled, .form-control[readonly] {\n  background-color: #e9ecef;\n  opacity: 1;\n}\n.form-control::-webkit-file-upload-button {\n  padding: 0.375rem 0.75rem;\n  margin: -0.375rem -0.75rem;\n  -webkit-margin-end: 0.75rem;\n  margin-inline-end: 0.75rem;\n  color: #212529;\n  background-color: #e9ecef;\n  pointer-events: none;\n  border-color: inherit;\n  border-style: solid;\n  border-width: 0;\n  border-inline-end-width: 1px;\n  border-radius: 0;\n  -webkit-transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;\n  transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;\n}\n.form-control::file-selector-button {\n  padding: 0.375rem 0.75rem;\n  margin: -0.375rem -0.75rem;\n  -webkit-margin-end: 0.75rem;\n  margin-inline-end: 0.75rem;\n  color: #212529;\n  background-color: #e9ecef;\n  pointer-events: none;\n  border-color: inherit;\n  border-style: solid;\n  border-width: 0;\n  border-inline-end-width: 1px;\n  border-radius: 0;\n  transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;\n}\n@media (prefers-reduced-motion: reduce) {\n  .form-control::-webkit-file-upload-button {\n    -webkit-transition: none;\n    transition: none;\n  }\n  .form-control::file-selector-button {\n    transition: none;\n  }\n}\n.form-control:hover:not(:disabled):not([readonly])::-webkit-file-upload-button {\n  background-color: #dde0e3;\n}\n.form-control:hover:not(:disabled):not([readonly])::file-selector-button {\n  background-color: #dde0e3;\n}\n.form-control::-webkit-file-upload-button {\n  padding: 0.375rem 0.75rem;\n  margin: -0.375rem -0.75rem;\n  -webkit-margin-end: 0.75rem;\n  margin-inline-end: 0.75rem;\n  color: #212529;\n  background-color: #e9ecef;\n  pointer-events: none;\n  border-color: inherit;\n  border-style: solid;\n  border-width: 0;\n  border-inline-end-width: 1px;\n  border-radius: 0;\n  -webkit-transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;\n  transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;\n}\n@media (prefers-reduced-motion: reduce) {\n  .form-control::-webkit-file-upload-button {\n    -webkit-transition: none;\n    transition: none;\n  }\n}\n.form-control:hover:not(:disabled):not([readonly])::-webkit-file-upload-button {\n  background-color: #dde0e3;\n}\n\n.form-control-plaintext {\n  display: block;\n  width: 100%;\n  padding: 0.375rem 0;\n  margin-bottom: 0;\n  line-height: 1.5;\n  color: #212529;\n  background-color: transparent;\n  border: solid transparent;\n  border-width: 1px 0;\n}\n.form-control-plaintext.form-control-sm, .form-control-plaintext.form-control-lg {\n  padding-right: 0;\n  padding-left: 0;\n}\n\n.form-control-sm {\n  min-height: calc(1.5em + 0.5rem + 2px);\n  padding: 0.25rem 0.5rem;\n  font-size: 0.875rem;\n  border-radius: 0.2rem;\n}\n.form-control-sm::-webkit-file-upload-button {\n  padding: 0.25rem 0.5rem;\n  margin: -0.25rem -0.5rem;\n  -webkit-margin-end: 0.5rem;\n  margin-inline-end: 0.5rem;\n}\n.form-control-sm::file-selector-button {\n  padding: 0.25rem 0.5rem;\n  margin: -0.25rem -0.5rem;\n  -webkit-margin-end: 0.5rem;\n  margin-inline-end: 0.5rem;\n}\n.form-control-sm::-webkit-file-upload-button {\n  padding: 0.25rem 0.5rem;\n  margin: -0.25rem -0.5rem;\n  -webkit-margin-end: 0.5rem;\n  margin-inline-end: 0.5rem;\n}\n\n.form-control-lg {\n  min-height: calc(1.5em + 1rem + 2px);\n  padding: 0.5rem 1rem;\n  font-size: 1.25rem;\n  border-radius: 0.3rem;\n}\n.form-control-lg::-webkit-file-upload-button {\n  padding: 0.5rem 1rem;\n  margin: -0.5rem -1rem;\n  -webkit-margin-end: 1rem;\n  margin-inline-end: 1rem;\n}\n.form-control-lg::file-selector-button {\n  padding: 0.5rem 1rem;\n  margin: -0.5rem -1rem;\n  -webkit-margin-end: 1rem;\n  margin-inline-end: 1rem;\n}\n.form-control-lg::-webkit-file-upload-button {\n  padding: 0.5rem 1rem;\n  margin: -0.5rem -1rem;\n  -webkit-margin-end: 1rem;\n  margin-inline-end: 1rem;\n}\n\ntextarea.form-control {\n  min-height: calc(1.5em + 0.75rem + 2px);\n}\ntextarea.form-control-sm {\n  min-height: calc(1.5em + 0.5rem + 2px);\n}\ntextarea.form-control-lg {\n  min-height: calc(1.5em + 1rem + 2px);\n}\n\n.form-control-color {\n  width: 3rem;\n  height: auto;\n  padding: 0.375rem;\n}\n.form-control-color:not(:disabled):not([readonly]) {\n  cursor: pointer;\n}\n.form-control-color::-moz-color-swatch {\n  height: 1.5em;\n  border-radius: 0.25rem;\n}\n.form-control-color::-webkit-color-swatch {\n  height: 1.5em;\n  border-radius: 0.25rem;\n}\n\n.form-select {\n  display: block;\n  width: 100%;\n  padding: 0.375rem 2.25rem 0.375rem 0.75rem;\n  -moz-padding-start: calc(0.75rem - 3px);\n  font-size: 1rem;\n  font-weight: 400;\n  line-height: 1.5;\n  color: #212529;\n  background-color: #fff;\n  background-image: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23343a40' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M2 5l6 6 6-6'/%3e%3c/svg%3e\");\n  background-repeat: no-repeat;\n  background-position: right 0.75rem center;\n  background-size: 16px 12px;\n  border: 1px solid #ced4da;\n  border-radius: 0.25rem;\n  transition: border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;\n  -webkit-appearance: none;\n  -moz-appearance: none;\n  appearance: none;\n}\n@media (prefers-reduced-motion: reduce) {\n  .form-select {\n    transition: none;\n  }\n}\n.form-select:focus {\n  border-color: #86b7fe;\n  outline: 0;\n  box-shadow: 0 0 0 0.25rem rgba(13, 110, 253, 0.25);\n}\n.form-select[multiple], .form-select[size]:not([size=\"1\"]) {\n  padding-right: 0.75rem;\n  background-image: none;\n}\n.form-select:disabled {\n  background-color: #e9ecef;\n}\n.form-select:-moz-focusring {\n  color: transparent;\n  text-shadow: 0 0 0 #212529;\n}\n\n.form-select-sm {\n  padding-top: 0.25rem;\n  padding-bottom: 0.25rem;\n  padding-left: 0.5rem;\n  font-size: 0.875rem;\n  border-radius: 0.2rem;\n}\n\n.form-select-lg {\n  padding-top: 0.5rem;\n  padding-bottom: 0.5rem;\n  padding-left: 1rem;\n  font-size: 1.25rem;\n  border-radius: 0.3rem;\n}\n\n.form-check {\n  display: block;\n  min-height: 1.5rem;\n  padding-left: 1.5em;\n  margin-bottom: 0.125rem;\n}\n.form-check .form-check-input {\n  float: left;\n  margin-left: -1.5em;\n}\n\n.form-check-input {\n  width: 1em;\n  height: 1em;\n  margin-top: 0.25em;\n  vertical-align: top;\n  background-color: #fff;\n  background-repeat: no-repeat;\n  background-position: center;\n  background-size: contain;\n  border: 1px solid rgba(0, 0, 0, 0.25);\n  -webkit-appearance: none;\n  -moz-appearance: none;\n  appearance: none;\n  -webkit-print-color-adjust: exact;\n  color-adjust: exact;\n}\n.form-check-input[type=checkbox] {\n  border-radius: 0.25em;\n}\n.form-check-input[type=radio] {\n  border-radius: 50%;\n}\n.form-check-input:active {\n  filter: brightness(90%);\n}\n.form-check-input:focus {\n  border-color: #86b7fe;\n  outline: 0;\n  box-shadow: 0 0 0 0.25rem rgba(13, 110, 253, 0.25);\n}\n.form-check-input:checked {\n  background-color: #0d6efd;\n  border-color: #0d6efd;\n}\n.form-check-input:checked[type=checkbox] {\n  background-image: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3e%3cpath fill='none' stroke='%23fff' stroke-linecap='round' stroke-linejoin='round' stroke-width='3' d='M6 10l3 3l6-6'/%3e%3c/svg%3e\");\n}\n.form-check-input:checked[type=radio] {\n  background-image: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='2' fill='%23fff'/%3e%3c/svg%3e\");\n}\n.form-check-input[type=checkbox]:indeterminate {\n  background-color: #0d6efd;\n  border-color: #0d6efd;\n  background-image: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3e%3cpath fill='none' stroke='%23fff' stroke-linecap='round' stroke-linejoin='round' stroke-width='3' d='M6 10h8'/%3e%3c/svg%3e\");\n}\n.form-check-input:disabled {\n  pointer-events: none;\n  filter: none;\n  opacity: 0.5;\n}\n.form-check-input[disabled] ~ .form-check-label, .form-check-input:disabled ~ .form-check-label {\n  opacity: 0.5;\n}\n\n.form-switch {\n  padding-left: 2.5em;\n}\n.form-switch .form-check-input {\n  width: 2em;\n  margin-left: -2.5em;\n  background-image: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='rgba%280, 0, 0, 0.25%29'/%3e%3c/svg%3e\");\n  background-position: left center;\n  border-radius: 2em;\n  transition: background-position 0.15s ease-in-out;\n}\n@media (prefers-reduced-motion: reduce) {\n  .form-switch .form-check-input {\n    transition: none;\n  }\n}\n.form-switch .form-check-input:focus {\n  background-image: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='%2386b7fe'/%3e%3c/svg%3e\");\n}\n.form-switch .form-check-input:checked {\n  background-position: right center;\n  background-image: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='%23fff'/%3e%3c/svg%3e\");\n}\n\n.form-check-inline {\n  display: inline-block;\n  margin-right: 1rem;\n}\n\n.btn-check {\n  position: absolute;\n  clip: rect(0, 0, 0, 0);\n  pointer-events: none;\n}\n.btn-check[disabled] + .btn, .btn-check:disabled + .btn {\n  pointer-events: none;\n  filter: none;\n  opacity: 0.65;\n}\n\n.form-range {\n  width: 100%;\n  height: 1.5rem;\n  padding: 0;\n  background-color: transparent;\n  -webkit-appearance: none;\n  -moz-appearance: none;\n  appearance: none;\n}\n.form-range:focus {\n  outline: 0;\n}\n.form-range:focus::-webkit-slider-thumb {\n  box-shadow: 0 0 0 1px #fff, 0 0 0 0.25rem rgba(13, 110, 253, 0.25);\n}\n.form-range:focus::-moz-range-thumb {\n  box-shadow: 0 0 0 1px #fff, 0 0 0 0.25rem rgba(13, 110, 253, 0.25);\n}\n.form-range::-moz-focus-outer {\n  border: 0;\n}\n.form-range::-webkit-slider-thumb {\n  width: 1rem;\n  height: 1rem;\n  margin-top: -0.25rem;\n  background-color: #0d6efd;\n  border: 0;\n  border-radius: 1rem;\n  -webkit-transition: background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;\n  transition: background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;\n  -webkit-appearance: none;\n  appearance: none;\n}\n@media (prefers-reduced-motion: reduce) {\n  .form-range::-webkit-slider-thumb {\n    -webkit-transition: none;\n    transition: none;\n  }\n}\n.form-range::-webkit-slider-thumb:active {\n  background-color: #b6d4fe;\n}\n.form-range::-webkit-slider-runnable-track {\n  width: 100%;\n  height: 0.5rem;\n  color: transparent;\n  cursor: pointer;\n  background-color: #dee2e6;\n  border-color: transparent;\n  border-radius: 1rem;\n}\n.form-range::-moz-range-thumb {\n  width: 1rem;\n  height: 1rem;\n  background-color: #0d6efd;\n  border: 0;\n  border-radius: 1rem;\n  -moz-transition: background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;\n  transition: background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;\n  -moz-appearance: none;\n  appearance: none;\n}\n@media (prefers-reduced-motion: reduce) {\n  .form-range::-moz-range-thumb {\n    -moz-transition: none;\n    transition: none;\n  }\n}\n.form-range::-moz-range-thumb:active {\n  background-color: #b6d4fe;\n}\n.form-range::-moz-range-track {\n  width: 100%;\n  height: 0.5rem;\n  color: transparent;\n  cursor: pointer;\n  background-color: #dee2e6;\n  border-color: transparent;\n  border-radius: 1rem;\n}\n.form-range:disabled {\n  pointer-events: none;\n}\n.form-range:disabled::-webkit-slider-thumb {\n  background-color: #adb5bd;\n}\n.form-range:disabled::-moz-range-thumb {\n  background-color: #adb5bd;\n}\n\n.form-floating {\n  position: relative;\n}\n.form-floating > .form-control,\n.form-floating > .form-select {\n  height: calc(3.5rem + 2px);\n  line-height: 1.25;\n}\n.form-floating > label {\n  position: absolute;\n  top: 0;\n  left: 0;\n  height: 100%;\n  padding: 1rem 0.75rem;\n  pointer-events: none;\n  border: 1px solid transparent;\n  transform-origin: 0 0;\n  transition: opacity 0.1s ease-in-out, transform 0.1s ease-in-out;\n}\n@media (prefers-reduced-motion: reduce) {\n  .form-floating > label {\n    transition: none;\n  }\n}\n.form-floating > .form-control {\n  padding: 1rem 0.75rem;\n}\n.form-floating > .form-control::-moz-placeholder {\n  color: transparent;\n}\n.form-floating > .form-control::placeholder {\n  color: transparent;\n}\n.form-floating > .form-control:not(:-moz-placeholder-shown) {\n  padding-top: 1.625rem;\n  padding-bottom: 0.625rem;\n}\n.form-floating > .form-control:focus, .form-floating > .form-control:not(:placeholder-shown) {\n  padding-top: 1.625rem;\n  padding-bottom: 0.625rem;\n}\n.form-floating > .form-control:-webkit-autofill {\n  padding-top: 1.625rem;\n  padding-bottom: 0.625rem;\n}\n.form-floating > .form-select {\n  padding-top: 1.625rem;\n  padding-bottom: 0.625rem;\n}\n.form-floating > .form-control:not(:-moz-placeholder-shown) ~ label {\n  opacity: 0.65;\n  transform: scale(0.85) translateY(-0.5rem) translateX(0.15rem);\n}\n.form-floating > .form-control:focus ~ label,\n.form-floating > .form-control:not(:placeholder-shown) ~ label,\n.form-floating > .form-select ~ label {\n  opacity: 0.65;\n  transform: scale(0.85) translateY(-0.5rem) translateX(0.15rem);\n}\n.form-floating > .form-control:-webkit-autofill ~ label {\n  opacity: 0.65;\n  transform: scale(0.85) translateY(-0.5rem) translateX(0.15rem);\n}\n\n.input-group {\n  position: relative;\n  display: flex;\n  flex-wrap: wrap;\n  align-items: stretch;\n  width: 100%;\n}\n.input-group > .form-control,\n.input-group > .form-select {\n  position: relative;\n  flex: 1 1 auto;\n  width: 1%;\n  min-width: 0;\n}\n.input-group > .form-control:focus,\n.input-group > .form-select:focus {\n  z-index: 3;\n}\n.input-group .btn {\n  position: relative;\n  z-index: 2;\n}\n.input-group .btn:focus {\n  z-index: 3;\n}\n\n.input-group-text {\n  display: flex;\n  align-items: center;\n  padding: 0.375rem 0.75rem;\n  font-size: 1rem;\n  font-weight: 400;\n  line-height: 1.5;\n  color: #212529;\n  text-align: center;\n  white-space: nowrap;\n  background-color: #e9ecef;\n  border: 1px solid #ced4da;\n  border-radius: 0.25rem;\n}\n\n.input-group-lg > .form-control,\n.input-group-lg > .form-select,\n.input-group-lg > .input-group-text,\n.input-group-lg > .btn {\n  padding: 0.5rem 1rem;\n  font-size: 1.25rem;\n  border-radius: 0.3rem;\n}\n\n.input-group-sm > .form-control,\n.input-group-sm > .form-select,\n.input-group-sm > .input-group-text,\n.input-group-sm > .btn {\n  padding: 0.25rem 0.5rem;\n  font-size: 0.875rem;\n  border-radius: 0.2rem;\n}\n\n.input-group-lg > .form-select,\n.input-group-sm > .form-select {\n  padding-right: 3rem;\n}\n\n.input-group:not(.has-validation) > :not(:last-child):not(.dropdown-toggle):not(.dropdown-menu),\n.input-group:not(.has-validation) > .dropdown-toggle:nth-last-child(n+3) {\n  border-top-right-radius: 0;\n  border-bottom-right-radius: 0;\n}\n.input-group.has-validation > :nth-last-child(n+3):not(.dropdown-toggle):not(.dropdown-menu),\n.input-group.has-validation > .dropdown-toggle:nth-last-child(n+4) {\n  border-top-right-radius: 0;\n  border-bottom-right-radius: 0;\n}\n.input-group > :not(:first-child):not(.dropdown-menu):not(.valid-tooltip):not(.valid-feedback):not(.invalid-tooltip):not(.invalid-feedback) {\n  margin-left: -1px;\n  border-top-left-radius: 0;\n  border-bottom-left-radius: 0;\n}\n\n.valid-feedback {\n  display: none;\n  width: 100%;\n  margin-top: 0.25rem;\n  font-size: 0.875em;\n  color: #198754;\n}\n\n.valid-tooltip {\n  position: absolute;\n  top: 100%;\n  z-index: 5;\n  display: none;\n  max-width: 100%;\n  padding: 0.25rem 0.5rem;\n  margin-top: 0.1rem;\n  font-size: 0.875rem;\n  color: #fff;\n  background-color: rgba(25, 135, 84, 0.9);\n  border-radius: 0.25rem;\n}\n\n.was-validated :valid ~ .valid-feedback,\n.was-validated :valid ~ .valid-tooltip,\n.is-valid ~ .valid-feedback,\n.is-valid ~ .valid-tooltip {\n  display: block;\n}\n\n.was-validated .form-control:valid, .form-control.is-valid {\n  border-color: #198754;\n  padding-right: calc(1.5em + 0.75rem);\n  background-image: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%23198754' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e\");\n  background-repeat: no-repeat;\n  background-position: right calc(0.375em + 0.1875rem) center;\n  background-size: calc(0.75em + 0.375rem) calc(0.75em + 0.375rem);\n}\n.was-validated .form-control:valid:focus, .form-control.is-valid:focus {\n  border-color: #198754;\n  box-shadow: 0 0 0 0.25rem rgba(25, 135, 84, 0.25);\n}\n\n.was-validated textarea.form-control:valid, textarea.form-control.is-valid {\n  padding-right: calc(1.5em + 0.75rem);\n  background-position: top calc(0.375em + 0.1875rem) right calc(0.375em + 0.1875rem);\n}\n\n.was-validated .form-select:valid, .form-select.is-valid {\n  border-color: #198754;\n}\n.was-validated .form-select:valid:not([multiple]):not([size]), .was-validated .form-select:valid:not([multiple])[size=\"1\"], .form-select.is-valid:not([multiple]):not([size]), .form-select.is-valid:not([multiple])[size=\"1\"] {\n  padding-right: 4.125rem;\n  background-image: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23343a40' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M2 5l6 6 6-6'/%3e%3c/svg%3e\"), url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%23198754' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e\");\n  background-position: right 0.75rem center, center right 2.25rem;\n  background-size: 16px 12px, calc(0.75em + 0.375rem) calc(0.75em + 0.375rem);\n}\n.was-validated .form-select:valid:focus, .form-select.is-valid:focus {\n  border-color: #198754;\n  box-shadow: 0 0 0 0.25rem rgba(25, 135, 84, 0.25);\n}\n\n.was-validated .form-check-input:valid, .form-check-input.is-valid {\n  border-color: #198754;\n}\n.was-validated .form-check-input:valid:checked, .form-check-input.is-valid:checked {\n  background-color: #198754;\n}\n.was-validated .form-check-input:valid:focus, .form-check-input.is-valid:focus {\n  box-shadow: 0 0 0 0.25rem rgba(25, 135, 84, 0.25);\n}\n.was-validated .form-check-input:valid ~ .form-check-label, .form-check-input.is-valid ~ .form-check-label {\n  color: #198754;\n}\n\n.form-check-inline .form-check-input ~ .valid-feedback {\n  margin-left: 0.5em;\n}\n\n.was-validated .input-group .form-control:valid, .input-group .form-control.is-valid,\n.was-validated .input-group .form-select:valid,\n.input-group .form-select.is-valid {\n  z-index: 1;\n}\n.was-validated .input-group .form-control:valid:focus, .input-group .form-control.is-valid:focus,\n.was-validated .input-group .form-select:valid:focus,\n.input-group .form-select.is-valid:focus {\n  z-index: 3;\n}\n\n.invalid-feedback {\n  display: none;\n  width: 100%;\n  margin-top: 0.25rem;\n  font-size: 0.875em;\n  color: #dc3545;\n}\n\n.invalid-tooltip {\n  position: absolute;\n  top: 100%;\n  z-index: 5;\n  display: none;\n  max-width: 100%;\n  padding: 0.25rem 0.5rem;\n  margin-top: 0.1rem;\n  font-size: 0.875rem;\n  color: #fff;\n  background-color: rgba(220, 53, 69, 0.9);\n  border-radius: 0.25rem;\n}\n\n.was-validated :invalid ~ .invalid-feedback,\n.was-validated :invalid ~ .invalid-tooltip,\n.is-invalid ~ .invalid-feedback,\n.is-invalid ~ .invalid-tooltip {\n  display: block;\n}\n\n.was-validated .form-control:invalid, .form-control.is-invalid {\n  border-color: #dc3545;\n  padding-right: calc(1.5em + 0.75rem);\n  background-image: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12' width='12' height='12' fill='none' stroke='%23dc3545'%3e%3ccircle cx='6' cy='6' r='4.5'/%3e%3cpath stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/%3e%3ccircle cx='6' cy='8.2' r='.6' fill='%23dc3545' stroke='none'/%3e%3c/svg%3e\");\n  background-repeat: no-repeat;\n  background-position: right calc(0.375em + 0.1875rem) center;\n  background-size: calc(0.75em + 0.375rem) calc(0.75em + 0.375rem);\n}\n.was-validated .form-control:invalid:focus, .form-control.is-invalid:focus {\n  border-color: #dc3545;\n  box-shadow: 0 0 0 0.25rem rgba(220, 53, 69, 0.25);\n}\n\n.was-validated textarea.form-control:invalid, textarea.form-control.is-invalid {\n  padding-right: calc(1.5em + 0.75rem);\n  background-position: top calc(0.375em + 0.1875rem) right calc(0.375em + 0.1875rem);\n}\n\n.was-validated .form-select:invalid, .form-select.is-invalid {\n  border-color: #dc3545;\n}\n.was-validated .form-select:invalid:not([multiple]):not([size]), .was-validated .form-select:invalid:not([multiple])[size=\"1\"], .form-select.is-invalid:not([multiple]):not([size]), .form-select.is-invalid:not([multiple])[size=\"1\"] {\n  padding-right: 4.125rem;\n  background-image: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23343a40' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M2 5l6 6 6-6'/%3e%3c/svg%3e\"), url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12' width='12' height='12' fill='none' stroke='%23dc3545'%3e%3ccircle cx='6' cy='6' r='4.5'/%3e%3cpath stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/%3e%3ccircle cx='6' cy='8.2' r='.6' fill='%23dc3545' stroke='none'/%3e%3c/svg%3e\");\n  background-position: right 0.75rem center, center right 2.25rem;\n  background-size: 16px 12px, calc(0.75em + 0.375rem) calc(0.75em + 0.375rem);\n}\n.was-validated .form-select:invalid:focus, .form-select.is-invalid:focus {\n  border-color: #dc3545;\n  box-shadow: 0 0 0 0.25rem rgba(220, 53, 69, 0.25);\n}\n\n.was-validated .form-check-input:invalid, .form-check-input.is-invalid {\n  border-color: #dc3545;\n}\n.was-validated .form-check-input:invalid:checked, .form-check-input.is-invalid:checked {\n  background-color: #dc3545;\n}\n.was-validated .form-check-input:invalid:focus, .form-check-input.is-invalid:focus {\n  box-shadow: 0 0 0 0.25rem rgba(220, 53, 69, 0.25);\n}\n.was-validated .form-check-input:invalid ~ .form-check-label, .form-check-input.is-invalid ~ .form-check-label {\n  color: #dc3545;\n}\n\n.form-check-inline .form-check-input ~ .invalid-feedback {\n  margin-left: 0.5em;\n}\n\n.was-validated .input-group .form-control:invalid, .input-group .form-control.is-invalid,\n.was-validated .input-group .form-select:invalid,\n.input-group .form-select.is-invalid {\n  z-index: 2;\n}\n.was-validated .input-group .form-control:invalid:focus, .input-group .form-control.is-invalid:focus,\n.was-validated .input-group .form-select:invalid:focus,\n.input-group .form-select.is-invalid:focus {\n  z-index: 3;\n}\n\n.btn {\n  display: inline-block;\n  font-weight: 400;\n  line-height: 1.5;\n  color: #212529;\n  text-align: center;\n  text-decoration: none;\n  vertical-align: middle;\n  cursor: pointer;\n  -webkit-user-select: none;\n  -moz-user-select: none;\n  user-select: none;\n  background-color: transparent;\n  border: 1px solid transparent;\n  padding: 0.375rem 0.75rem;\n  font-size: 1rem;\n  border-radius: 0.25rem;\n  transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;\n}\n@media (prefers-reduced-motion: reduce) {\n  .btn {\n    transition: none;\n  }\n}\n.btn:hover {\n  color: #212529;\n}\n.btn-check:focus + .btn, .btn:focus {\n  outline: 0;\n  box-shadow: 0 0 0 0.25rem rgba(13, 110, 253, 0.25);\n}\n.btn:disabled, .btn.disabled, fieldset:disabled .btn {\n  pointer-events: none;\n  opacity: 0.65;\n}\n\n.btn-primary {\n  color: #fff;\n  background-color: #0d6efd;\n  border-color: #0d6efd;\n}\n.btn-primary:hover {\n  color: #fff;\n  background-color: #0b5ed7;\n  border-color: #0a58ca;\n}\n.btn-check:focus + .btn-primary, .btn-primary:focus {\n  color: #fff;\n  background-color: #0b5ed7;\n  border-color: #0a58ca;\n  box-shadow: 0 0 0 0.25rem rgba(49, 132, 253, 0.5);\n}\n.btn-check:checked + .btn-primary, .btn-check:active + .btn-primary, .btn-primary:active, .btn-primary.active, .show > .btn-primary.dropdown-toggle {\n  color: #fff;\n  background-color: #0a58ca;\n  border-color: #0a53be;\n}\n.btn-check:checked + .btn-primary:focus, .btn-check:active + .btn-primary:focus, .btn-primary:active:focus, .btn-primary.active:focus, .show > .btn-primary.dropdown-toggle:focus {\n  box-shadow: 0 0 0 0.25rem rgba(49, 132, 253, 0.5);\n}\n.btn-primary:disabled, .btn-primary.disabled {\n  color: #fff;\n  background-color: #0d6efd;\n  border-color: #0d6efd;\n}\n\n.btn-secondary {\n  color: #fff;\n  background-color: #6c757d;\n  border-color: #6c757d;\n}\n.btn-secondary:hover {\n  color: #fff;\n  background-color: #5c636a;\n  border-color: #565e64;\n}\n.btn-check:focus + .btn-secondary, .btn-secondary:focus {\n  color: #fff;\n  background-color: #5c636a;\n  border-color: #565e64;\n  box-shadow: 0 0 0 0.25rem rgba(130, 138, 145, 0.5);\n}\n.btn-check:checked + .btn-secondary, .btn-check:active + .btn-secondary, .btn-secondary:active, .btn-secondary.active, .show > .btn-secondary.dropdown-toggle {\n  color: #fff;\n  background-color: #565e64;\n  border-color: #51585e;\n}\n.btn-check:checked + .btn-secondary:focus, .btn-check:active + .btn-secondary:focus, .btn-secondary:active:focus, .btn-secondary.active:focus, .show > .btn-secondary.dropdown-toggle:focus {\n  box-shadow: 0 0 0 0.25rem rgba(130, 138, 145, 0.5);\n}\n.btn-secondary:disabled, .btn-secondary.disabled {\n  color: #fff;\n  background-color: #6c757d;\n  border-color: #6c757d;\n}\n\n.btn-success {\n  color: #fff;\n  background-color: #198754;\n  border-color: #198754;\n}\n.btn-success:hover {\n  color: #fff;\n  background-color: #157347;\n  border-color: #146c43;\n}\n.btn-check:focus + .btn-success, .btn-success:focus {\n  color: #fff;\n  background-color: #157347;\n  border-color: #146c43;\n  box-shadow: 0 0 0 0.25rem rgba(60, 153, 110, 0.5);\n}\n.btn-check:checked + .btn-success, .btn-check:active + .btn-success, .btn-success:active, .btn-success.active, .show > .btn-success.dropdown-toggle {\n  color: #fff;\n  background-color: #146c43;\n  border-color: #13653f;\n}\n.btn-check:checked + .btn-success:focus, .btn-check:active + .btn-success:focus, .btn-success:active:focus, .btn-success.active:focus, .show > .btn-success.dropdown-toggle:focus {\n  box-shadow: 0 0 0 0.25rem rgba(60, 153, 110, 0.5);\n}\n.btn-success:disabled, .btn-success.disabled {\n  color: #fff;\n  background-color: #198754;\n  border-color: #198754;\n}\n\n.btn-info {\n  color: #000;\n  background-color: #0dcaf0;\n  border-color: #0dcaf0;\n}\n.btn-info:hover {\n  color: #000;\n  background-color: #31d2f2;\n  border-color: #25cff2;\n}\n.btn-check:focus + .btn-info, .btn-info:focus {\n  color: #000;\n  background-color: #31d2f2;\n  border-color: #25cff2;\n  box-shadow: 0 0 0 0.25rem rgba(11, 172, 204, 0.5);\n}\n.btn-check:checked + .btn-info, .btn-check:active + .btn-info, .btn-info:active, .btn-info.active, .show > .btn-info.dropdown-toggle {\n  color: #000;\n  background-color: #3dd5f3;\n  border-color: #25cff2;\n}\n.btn-check:checked + .btn-info:focus, .btn-check:active + .btn-info:focus, .btn-info:active:focus, .btn-info.active:focus, .show > .btn-info.dropdown-toggle:focus {\n  box-shadow: 0 0 0 0.25rem rgba(11, 172, 204, 0.5);\n}\n.btn-info:disabled, .btn-info.disabled {\n  color: #000;\n  background-color: #0dcaf0;\n  border-color: #0dcaf0;\n}\n\n.btn-warning {\n  color: #000;\n  background-color: #ffc107;\n  border-color: #ffc107;\n}\n.btn-warning:hover {\n  color: #000;\n  background-color: #ffca2c;\n  border-color: #ffc720;\n}\n.btn-check:focus + .btn-warning, .btn-warning:focus {\n  color: #000;\n  background-color: #ffca2c;\n  border-color: #ffc720;\n  box-shadow: 0 0 0 0.25rem rgba(217, 164, 6, 0.5);\n}\n.btn-check:checked + .btn-warning, .btn-check:active + .btn-warning, .btn-warning:active, .btn-warning.active, .show > .btn-warning.dropdown-toggle {\n  color: #000;\n  background-color: #ffcd39;\n  border-color: #ffc720;\n}\n.btn-check:checked + .btn-warning:focus, .btn-check:active + .btn-warning:focus, .btn-warning:active:focus, .btn-warning.active:focus, .show > .btn-warning.dropdown-toggle:focus {\n  box-shadow: 0 0 0 0.25rem rgba(217, 164, 6, 0.5);\n}\n.btn-warning:disabled, .btn-warning.disabled {\n  color: #000;\n  background-color: #ffc107;\n  border-color: #ffc107;\n}\n\n.btn-danger {\n  color: #fff;\n  background-color: #dc3545;\n  border-color: #dc3545;\n}\n.btn-danger:hover {\n  color: #fff;\n  background-color: #bb2d3b;\n  border-color: #b02a37;\n}\n.btn-check:focus + .btn-danger, .btn-danger:focus {\n  color: #fff;\n  background-color: #bb2d3b;\n  border-color: #b02a37;\n  box-shadow: 0 0 0 0.25rem rgba(225, 83, 97, 0.5);\n}\n.btn-check:checked + .btn-danger, .btn-check:active + .btn-danger, .btn-danger:active, .btn-danger.active, .show > .btn-danger.dropdown-toggle {\n  color: #fff;\n  background-color: #b02a37;\n  border-color: #a52834;\n}\n.btn-check:checked + .btn-danger:focus, .btn-check:active + .btn-danger:focus, .btn-danger:active:focus, .btn-danger.active:focus, .show > .btn-danger.dropdown-toggle:focus {\n  box-shadow: 0 0 0 0.25rem rgba(225, 83, 97, 0.5);\n}\n.btn-danger:disabled, .btn-danger.disabled {\n  color: #fff;\n  background-color: #dc3545;\n  border-color: #dc3545;\n}\n\n.btn-light {\n  color: #000;\n  background-color: #f8f9fa;\n  border-color: #f8f9fa;\n}\n.btn-light:hover {\n  color: #000;\n  background-color: #f9fafb;\n  border-color: #f9fafb;\n}\n.btn-check:focus + .btn-light, .btn-light:focus {\n  color: #000;\n  background-color: #f9fafb;\n  border-color: #f9fafb;\n  box-shadow: 0 0 0 0.25rem rgba(211, 212, 213, 0.5);\n}\n.btn-check:checked + .btn-light, .btn-check:active + .btn-light, .btn-light:active, .btn-light.active, .show > .btn-light.dropdown-toggle {\n  color: #000;\n  background-color: #f9fafb;\n  border-color: #f9fafb;\n}\n.btn-check:checked + .btn-light:focus, .btn-check:active + .btn-light:focus, .btn-light:active:focus, .btn-light.active:focus, .show > .btn-light.dropdown-toggle:focus {\n  box-shadow: 0 0 0 0.25rem rgba(211, 212, 213, 0.5);\n}\n.btn-light:disabled, .btn-light.disabled {\n  color: #000;\n  background-color: #f8f9fa;\n  border-color: #f8f9fa;\n}\n\n.btn-dark {\n  color: #fff;\n  background-color: #212529;\n  border-color: #212529;\n}\n.btn-dark:hover {\n  color: #fff;\n  background-color: #1c1f23;\n  border-color: #1a1e21;\n}\n.btn-check:focus + .btn-dark, .btn-dark:focus {\n  color: #fff;\n  background-color: #1c1f23;\n  border-color: #1a1e21;\n  box-shadow: 0 0 0 0.25rem rgba(66, 70, 73, 0.5);\n}\n.btn-check:checked + .btn-dark, .btn-check:active + .btn-dark, .btn-dark:active, .btn-dark.active, .show > .btn-dark.dropdown-toggle {\n  color: #fff;\n  background-color: #1a1e21;\n  border-color: #191c1f;\n}\n.btn-check:checked + .btn-dark:focus, .btn-check:active + .btn-dark:focus, .btn-dark:active:focus, .btn-dark.active:focus, .show > .btn-dark.dropdown-toggle:focus {\n  box-shadow: 0 0 0 0.25rem rgba(66, 70, 73, 0.5);\n}\n.btn-dark:disabled, .btn-dark.disabled {\n  color: #fff;\n  background-color: #212529;\n  border-color: #212529;\n}\n\n.btn-outline-primary {\n  color: #0d6efd;\n  border-color: #0d6efd;\n}\n.btn-outline-primary:hover {\n  color: #fff;\n  background-color: #0d6efd;\n  border-color: #0d6efd;\n}\n.btn-check:focus + .btn-outline-primary, .btn-outline-primary:focus {\n  box-shadow: 0 0 0 0.25rem rgba(13, 110, 253, 0.5);\n}\n.btn-check:checked + .btn-outline-primary, .btn-check:active + .btn-outline-primary, .btn-outline-primary:active, .btn-outline-primary.active, .btn-outline-primary.dropdown-toggle.show {\n  color: #fff;\n  background-color: #0d6efd;\n  border-color: #0d6efd;\n}\n.btn-check:checked + .btn-outline-primary:focus, .btn-check:active + .btn-outline-primary:focus, .btn-outline-primary:active:focus, .btn-outline-primary.active:focus, .btn-outline-primary.dropdown-toggle.show:focus {\n  box-shadow: 0 0 0 0.25rem rgba(13, 110, 253, 0.5);\n}\n.btn-outline-primary:disabled, .btn-outline-primary.disabled {\n  color: #0d6efd;\n  background-color: transparent;\n}\n\n.btn-outline-secondary {\n  color: #6c757d;\n  border-color: #6c757d;\n}\n.btn-outline-secondary:hover {\n  color: #fff;\n  background-color: #6c757d;\n  border-color: #6c757d;\n}\n.btn-check:focus + .btn-outline-secondary, .btn-outline-secondary:focus {\n  box-shadow: 0 0 0 0.25rem rgba(108, 117, 125, 0.5);\n}\n.btn-check:checked + .btn-outline-secondary, .btn-check:active + .btn-outline-secondary, .btn-outline-secondary:active, .btn-outline-secondary.active, .btn-outline-secondary.dropdown-toggle.show {\n  color: #fff;\n  background-color: #6c757d;\n  border-color: #6c757d;\n}\n.btn-check:checked + .btn-outline-secondary:focus, .btn-check:active + .btn-outline-secondary:focus, .btn-outline-secondary:active:focus, .btn-outline-secondary.active:focus, .btn-outline-secondary.dropdown-toggle.show:focus {\n  box-shadow: 0 0 0 0.25rem rgba(108, 117, 125, 0.5);\n}\n.btn-outline-secondary:disabled, .btn-outline-secondary.disabled {\n  color: #6c757d;\n  background-color: transparent;\n}\n\n.btn-outline-success {\n  color: #198754;\n  border-color: #198754;\n}\n.btn-outline-success:hover {\n  color: #fff;\n  background-color: #198754;\n  border-color: #198754;\n}\n.btn-check:focus + .btn-outline-success, .btn-outline-success:focus {\n  box-shadow: 0 0 0 0.25rem rgba(25, 135, 84, 0.5);\n}\n.btn-check:checked + .btn-outline-success, .btn-check:active + .btn-outline-success, .btn-outline-success:active, .btn-outline-success.active, .btn-outline-success.dropdown-toggle.show {\n  color: #fff;\n  background-color: #198754;\n  border-color: #198754;\n}\n.btn-check:checked + .btn-outline-success:focus, .btn-check:active + .btn-outline-success:focus, .btn-outline-success:active:focus, .btn-outline-success.active:focus, .btn-outline-success.dropdown-toggle.show:focus {\n  box-shadow: 0 0 0 0.25rem rgba(25, 135, 84, 0.5);\n}\n.btn-outline-success:disabled, .btn-outline-success.disabled {\n  color: #198754;\n  background-color: transparent;\n}\n\n.btn-outline-info {\n  color: #0dcaf0;\n  border-color: #0dcaf0;\n}\n.btn-outline-info:hover {\n  color: #000;\n  background-color: #0dcaf0;\n  border-color: #0dcaf0;\n}\n.btn-check:focus + .btn-outline-info, .btn-outline-info:focus {\n  box-shadow: 0 0 0 0.25rem rgba(13, 202, 240, 0.5);\n}\n.btn-check:checked + .btn-outline-info, .btn-check:active + .btn-outline-info, .btn-outline-info:active, .btn-outline-info.active, .btn-outline-info.dropdown-toggle.show {\n  color: #000;\n  background-color: #0dcaf0;\n  border-color: #0dcaf0;\n}\n.btn-check:checked + .btn-outline-info:focus, .btn-check:active + .btn-outline-info:focus, .btn-outline-info:active:focus, .btn-outline-info.active:focus, .btn-outline-info.dropdown-toggle.show:focus {\n  box-shadow: 0 0 0 0.25rem rgba(13, 202, 240, 0.5);\n}\n.btn-outline-info:disabled, .btn-outline-info.disabled {\n  color: #0dcaf0;\n  background-color: transparent;\n}\n\n.btn-outline-warning {\n  color: #ffc107;\n  border-color: #ffc107;\n}\n.btn-outline-warning:hover {\n  color: #000;\n  background-color: #ffc107;\n  border-color: #ffc107;\n}\n.btn-check:focus + .btn-outline-warning, .btn-outline-warning:focus {\n  box-shadow: 0 0 0 0.25rem rgba(255, 193, 7, 0.5);\n}\n.btn-check:checked + .btn-outline-warning, .btn-check:active + .btn-outline-warning, .btn-outline-warning:active, .btn-outline-warning.active, .btn-outline-warning.dropdown-toggle.show {\n  color: #000;\n  background-color: #ffc107;\n  border-color: #ffc107;\n}\n.btn-check:checked + .btn-outline-warning:focus, .btn-check:active + .btn-outline-warning:focus, .btn-outline-warning:active:focus, .btn-outline-warning.active:focus, .btn-outline-warning.dropdown-toggle.show:focus {\n  box-shadow: 0 0 0 0.25rem rgba(255, 193, 7, 0.5);\n}\n.btn-outline-warning:disabled, .btn-outline-warning.disabled {\n  color: #ffc107;\n  background-color: transparent;\n}\n\n.btn-outline-danger {\n  color: #dc3545;\n  border-color: #dc3545;\n}\n.btn-outline-danger:hover {\n  color: #fff;\n  background-color: #dc3545;\n  border-color: #dc3545;\n}\n.btn-check:focus + .btn-outline-danger, .btn-outline-danger:focus {\n  box-shadow: 0 0 0 0.25rem rgba(220, 53, 69, 0.5);\n}\n.btn-check:checked + .btn-outline-danger, .btn-check:active + .btn-outline-danger, .btn-outline-danger:active, .btn-outline-danger.active, .btn-outline-danger.dropdown-toggle.show {\n  color: #fff;\n  background-color: #dc3545;\n  border-color: #dc3545;\n}\n.btn-check:checked + .btn-outline-danger:focus, .btn-check:active + .btn-outline-danger:focus, .btn-outline-danger:active:focus, .btn-outline-danger.active:focus, .btn-outline-danger.dropdown-toggle.show:focus {\n  box-shadow: 0 0 0 0.25rem rgba(220, 53, 69, 0.5);\n}\n.btn-outline-danger:disabled, .btn-outline-danger.disabled {\n  color: #dc3545;\n  background-color: transparent;\n}\n\n.btn-outline-light {\n  color: #f8f9fa;\n  border-color: #f8f9fa;\n}\n.btn-outline-light:hover {\n  color: #000;\n  background-color: #f8f9fa;\n  border-color: #f8f9fa;\n}\n.btn-check:focus + .btn-outline-light, .btn-outline-light:focus {\n  box-shadow: 0 0 0 0.25rem rgba(248, 249, 250, 0.5);\n}\n.btn-check:checked + .btn-outline-light, .btn-check:active + .btn-outline-light, .btn-outline-light:active, .btn-outline-light.active, .btn-outline-light.dropdown-toggle.show {\n  color: #000;\n  background-color: #f8f9fa;\n  border-color: #f8f9fa;\n}\n.btn-check:checked + .btn-outline-light:focus, .btn-check:active + .btn-outline-light:focus, .btn-outline-light:active:focus, .btn-outline-light.active:focus, .btn-outline-light.dropdown-toggle.show:focus {\n  box-shadow: 0 0 0 0.25rem rgba(248, 249, 250, 0.5);\n}\n.btn-outline-light:disabled, .btn-outline-light.disabled {\n  color: #f8f9fa;\n  background-color: transparent;\n}\n\n.btn-outline-dark {\n  color: #212529;\n  border-color: #212529;\n}\n.btn-outline-dark:hover {\n  color: #fff;\n  background-color: #212529;\n  border-color: #212529;\n}\n.btn-check:focus + .btn-outline-dark, .btn-outline-dark:focus {\n  box-shadow: 0 0 0 0.25rem rgba(33, 37, 41, 0.5);\n}\n.btn-check:checked + .btn-outline-dark, .btn-check:active + .btn-outline-dark, .btn-outline-dark:active, .btn-outline-dark.active, .btn-outline-dark.dropdown-toggle.show {\n  color: #fff;\n  background-color: #212529;\n  border-color: #212529;\n}\n.btn-check:checked + .btn-outline-dark:focus, .btn-check:active + .btn-outline-dark:focus, .btn-outline-dark:active:focus, .btn-outline-dark.active:focus, .btn-outline-dark.dropdown-toggle.show:focus {\n  box-shadow: 0 0 0 0.25rem rgba(33, 37, 41, 0.5);\n}\n.btn-outline-dark:disabled, .btn-outline-dark.disabled {\n  color: #212529;\n  background-color: transparent;\n}\n\n.btn-link {\n  font-weight: 400;\n  color: #0d6efd;\n  text-decoration: underline;\n}\n.btn-link:hover {\n  color: #0a58ca;\n}\n.btn-link:disabled, .btn-link.disabled {\n  color: #6c757d;\n}\n\n.btn-lg, .btn-group-lg > .btn {\n  padding: 0.5rem 1rem;\n  font-size: 1.25rem;\n  border-radius: 0.3rem;\n}\n\n.btn-sm, .btn-group-sm > .btn {\n  padding: 0.25rem 0.5rem;\n  font-size: 0.875rem;\n  border-radius: 0.2rem;\n}\n\n.fade {\n  transition: opacity 0.15s linear;\n}\n@media (prefers-reduced-motion: reduce) {\n  .fade {\n    transition: none;\n  }\n}\n.fade:not(.show) {\n  opacity: 0;\n}\n\n.collapse:not(.show) {\n  display: none;\n}\n\n.collapsing {\n  height: 0;\n  overflow: hidden;\n  transition: height 0.35s ease;\n}\n@media (prefers-reduced-motion: reduce) {\n  .collapsing {\n    transition: none;\n  }\n}\n.collapsing.collapse-horizontal {\n  width: 0;\n  height: auto;\n  transition: width 0.35s ease;\n}\n@media (prefers-reduced-motion: reduce) {\n  .collapsing.collapse-horizontal {\n    transition: none;\n  }\n}\n\n.dropup,\n.dropend,\n.dropdown,\n.dropstart {\n  position: relative;\n}\n\n.dropdown-toggle {\n  white-space: nowrap;\n}\n.dropdown-toggle::after {\n  display: inline-block;\n  margin-left: 0.255em;\n  vertical-align: 0.255em;\n  content: \"\";\n  border-top: 0.3em solid;\n  border-right: 0.3em solid transparent;\n  border-bottom: 0;\n  border-left: 0.3em solid transparent;\n}\n.dropdown-toggle:empty::after {\n  margin-left: 0;\n}\n\n.dropdown-menu {\n  position: absolute;\n  z-index: 1000;\n  display: none;\n  min-width: 10rem;\n  padding: 0.5rem 0;\n  margin: 0;\n  font-size: 1rem;\n  color: #212529;\n  text-align: left;\n  list-style: none;\n  background-color: #fff;\n  background-clip: padding-box;\n  border: 1px solid rgba(0, 0, 0, 0.15);\n  border-radius: 0.25rem;\n}\n.dropdown-menu[data-bs-popper] {\n  top: 100%;\n  left: 0;\n  margin-top: 0.125rem;\n}\n\n.dropdown-menu-start {\n  --bs-position: start;\n}\n.dropdown-menu-start[data-bs-popper] {\n  right: auto;\n  left: 0;\n}\n\n.dropdown-menu-end {\n  --bs-position: end;\n}\n.dropdown-menu-end[data-bs-popper] {\n  right: 0;\n  left: auto;\n}\n\n@media (min-width: 576px) {\n  .dropdown-menu-sm-start {\n    --bs-position: start;\n  }\n  .dropdown-menu-sm-start[data-bs-popper] {\n    right: auto;\n    left: 0;\n  }\n\n  .dropdown-menu-sm-end {\n    --bs-position: end;\n  }\n  .dropdown-menu-sm-end[data-bs-popper] {\n    right: 0;\n    left: auto;\n  }\n}\n@media (min-width: 768px) {\n  .dropdown-menu-md-start {\n    --bs-position: start;\n  }\n  .dropdown-menu-md-start[data-bs-popper] {\n    right: auto;\n    left: 0;\n  }\n\n  .dropdown-menu-md-end {\n    --bs-position: end;\n  }\n  .dropdown-menu-md-end[data-bs-popper] {\n    right: 0;\n    left: auto;\n  }\n}\n@media (min-width: 992px) {\n  .dropdown-menu-lg-start {\n    --bs-position: start;\n  }\n  .dropdown-menu-lg-start[data-bs-popper] {\n    right: auto;\n    left: 0;\n  }\n\n  .dropdown-menu-lg-end {\n    --bs-position: end;\n  }\n  .dropdown-menu-lg-end[data-bs-popper] {\n    right: 0;\n    left: auto;\n  }\n}\n@media (min-width: 1200px) {\n  .dropdown-menu-xl-start {\n    --bs-position: start;\n  }\n  .dropdown-menu-xl-start[data-bs-popper] {\n    right: auto;\n    left: 0;\n  }\n\n  .dropdown-menu-xl-end {\n    --bs-position: end;\n  }\n  .dropdown-menu-xl-end[data-bs-popper] {\n    right: 0;\n    left: auto;\n  }\n}\n@media (min-width: 1400px) {\n  .dropdown-menu-xxl-start {\n    --bs-position: start;\n  }\n  .dropdown-menu-xxl-start[data-bs-popper] {\n    right: auto;\n    left: 0;\n  }\n\n  .dropdown-menu-xxl-end {\n    --bs-position: end;\n  }\n  .dropdown-menu-xxl-end[data-bs-popper] {\n    right: 0;\n    left: auto;\n  }\n}\n.dropup .dropdown-menu[data-bs-popper] {\n  top: auto;\n  bottom: 100%;\n  margin-top: 0;\n  margin-bottom: 0.125rem;\n}\n.dropup .dropdown-toggle::after {\n  display: inline-block;\n  margin-left: 0.255em;\n  vertical-align: 0.255em;\n  content: \"\";\n  border-top: 0;\n  border-right: 0.3em solid transparent;\n  border-bottom: 0.3em solid;\n  border-left: 0.3em solid transparent;\n}\n.dropup .dropdown-toggle:empty::after {\n  margin-left: 0;\n}\n\n.dropend .dropdown-menu[data-bs-popper] {\n  top: 0;\n  right: auto;\n  left: 100%;\n  margin-top: 0;\n  margin-left: 0.125rem;\n}\n.dropend .dropdown-toggle::after {\n  display: inline-block;\n  margin-left: 0.255em;\n  vertical-align: 0.255em;\n  content: \"\";\n  border-top: 0.3em solid transparent;\n  border-right: 0;\n  border-bottom: 0.3em solid transparent;\n  border-left: 0.3em solid;\n}\n.dropend .dropdown-toggle:empty::after {\n  margin-left: 0;\n}\n.dropend .dropdown-toggle::after {\n  vertical-align: 0;\n}\n\n.dropstart .dropdown-menu[data-bs-popper] {\n  top: 0;\n  right: 100%;\n  left: auto;\n  margin-top: 0;\n  margin-right: 0.125rem;\n}\n.dropstart .dropdown-toggle::after {\n  display: inline-block;\n  margin-left: 0.255em;\n  vertical-align: 0.255em;\n  content: \"\";\n}\n.dropstart .dropdown-toggle::after {\n  display: none;\n}\n.dropstart .dropdown-toggle::before {\n  display: inline-block;\n  margin-right: 0.255em;\n  vertical-align: 0.255em;\n  content: \"\";\n  border-top: 0.3em solid transparent;\n  border-right: 0.3em solid;\n  border-bottom: 0.3em solid transparent;\n}\n.dropstart .dropdown-toggle:empty::after {\n  margin-left: 0;\n}\n.dropstart .dropdown-toggle::before {\n  vertical-align: 0;\n}\n\n.dropdown-divider {\n  height: 0;\n  margin: 0.5rem 0;\n  overflow: hidden;\n  border-top: 1px solid rgba(0, 0, 0, 0.15);\n}\n\n.dropdown-item {\n  display: block;\n  width: 100%;\n  padding: 0.25rem 1rem;\n  clear: both;\n  font-weight: 400;\n  color: #212529;\n  text-align: inherit;\n  text-decoration: none;\n  white-space: nowrap;\n  background-color: transparent;\n  border: 0;\n}\n.dropdown-item:hover, .dropdown-item:focus {\n  color: #1e2125;\n  background-color: #e9ecef;\n}\n.dropdown-item.active, .dropdown-item:active {\n  color: #fff;\n  text-decoration: none;\n  background-color: #0d6efd;\n}\n.dropdown-item.disabled, .dropdown-item:disabled {\n  color: #adb5bd;\n  pointer-events: none;\n  background-color: transparent;\n}\n\n.dropdown-menu.show {\n  display: block;\n}\n\n.dropdown-header {\n  display: block;\n  padding: 0.5rem 1rem;\n  margin-bottom: 0;\n  font-size: 0.875rem;\n  color: #6c757d;\n  white-space: nowrap;\n}\n\n.dropdown-item-text {\n  display: block;\n  padding: 0.25rem 1rem;\n  color: #212529;\n}\n\n.dropdown-menu-dark {\n  color: #dee2e6;\n  background-color: #343a40;\n  border-color: rgba(0, 0, 0, 0.15);\n}\n.dropdown-menu-dark .dropdown-item {\n  color: #dee2e6;\n}\n.dropdown-menu-dark .dropdown-item:hover, .dropdown-menu-dark .dropdown-item:focus {\n  color: #fff;\n  background-color: rgba(255, 255, 255, 0.15);\n}\n.dropdown-menu-dark .dropdown-item.active, .dropdown-menu-dark .dropdown-item:active {\n  color: #fff;\n  background-color: #0d6efd;\n}\n.dropdown-menu-dark .dropdown-item.disabled, .dropdown-menu-dark .dropdown-item:disabled {\n  color: #adb5bd;\n}\n.dropdown-menu-dark .dropdown-divider {\n  border-color: rgba(0, 0, 0, 0.15);\n}\n.dropdown-menu-dark .dropdown-item-text {\n  color: #dee2e6;\n}\n.dropdown-menu-dark .dropdown-header {\n  color: #adb5bd;\n}\n\n.btn-group,\n.btn-group-vertical {\n  position: relative;\n  display: inline-flex;\n  vertical-align: middle;\n}\n.btn-group > .btn,\n.btn-group-vertical > .btn {\n  position: relative;\n  flex: 1 1 auto;\n}\n.btn-group > .btn-check:checked + .btn,\n.btn-group > .btn-check:focus + .btn,\n.btn-group > .btn:hover,\n.btn-group > .btn:focus,\n.btn-group > .btn:active,\n.btn-group > .btn.active,\n.btn-group-vertical > .btn-check:checked + .btn,\n.btn-group-vertical > .btn-check:focus + .btn,\n.btn-group-vertical > .btn:hover,\n.btn-group-vertical > .btn:focus,\n.btn-group-vertical > .btn:active,\n.btn-group-vertical > .btn.active {\n  z-index: 1;\n}\n\n.btn-toolbar {\n  display: flex;\n  flex-wrap: wrap;\n  justify-content: flex-start;\n}\n.btn-toolbar .input-group {\n  width: auto;\n}\n\n.btn-group > .btn:not(:first-child),\n.btn-group > .btn-group:not(:first-child) {\n  margin-left: -1px;\n}\n.btn-group > .btn:not(:last-child):not(.dropdown-toggle),\n.btn-group > .btn-group:not(:last-child) > .btn {\n  border-top-right-radius: 0;\n  border-bottom-right-radius: 0;\n}\n.btn-group > .btn:nth-child(n+3),\n.btn-group > :not(.btn-check) + .btn,\n.btn-group > .btn-group:not(:first-child) > .btn {\n  border-top-left-radius: 0;\n  border-bottom-left-radius: 0;\n}\n\n.dropdown-toggle-split {\n  padding-right: 0.5625rem;\n  padding-left: 0.5625rem;\n}\n.dropdown-toggle-split::after, .dropup .dropdown-toggle-split::after, .dropend .dropdown-toggle-split::after {\n  margin-left: 0;\n}\n.dropstart .dropdown-toggle-split::before {\n  margin-right: 0;\n}\n\n.btn-sm + .dropdown-toggle-split, .btn-group-sm > .btn + .dropdown-toggle-split {\n  padding-right: 0.375rem;\n  padding-left: 0.375rem;\n}\n\n.btn-lg + .dropdown-toggle-split, .btn-group-lg > .btn + .dropdown-toggle-split {\n  padding-right: 0.75rem;\n  padding-left: 0.75rem;\n}\n\n.btn-group-vertical {\n  flex-direction: column;\n  align-items: flex-start;\n  justify-content: center;\n}\n.btn-group-vertical > .btn,\n.btn-group-vertical > .btn-group {\n  width: 100%;\n}\n.btn-group-vertical > .btn:not(:first-child),\n.btn-group-vertical > .btn-group:not(:first-child) {\n  margin-top: -1px;\n}\n.btn-group-vertical > .btn:not(:last-child):not(.dropdown-toggle),\n.btn-group-vertical > .btn-group:not(:last-child) > .btn {\n  border-bottom-right-radius: 0;\n  border-bottom-left-radius: 0;\n}\n.btn-group-vertical > .btn ~ .btn,\n.btn-group-vertical > .btn-group:not(:first-child) > .btn {\n  border-top-left-radius: 0;\n  border-top-right-radius: 0;\n}\n\n.nav {\n  display: flex;\n  flex-wrap: wrap;\n  padding-left: 0;\n  margin-bottom: 0;\n  list-style: none;\n}\n\n.nav-link {\n  display: block;\n  padding: 0.5rem 1rem;\n  color: #0d6efd;\n  text-decoration: none;\n  transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out;\n}\n@media (prefers-reduced-motion: reduce) {\n  .nav-link {\n    transition: none;\n  }\n}\n.nav-link:hover, .nav-link:focus {\n  color: #0a58ca;\n}\n.nav-link.disabled {\n  color: #6c757d;\n  pointer-events: none;\n  cursor: default;\n}\n\n.nav-tabs {\n  border-bottom: 1px solid #dee2e6;\n}\n.nav-tabs .nav-link {\n  margin-bottom: -1px;\n  background: none;\n  border: 1px solid transparent;\n  border-top-left-radius: 0.25rem;\n  border-top-right-radius: 0.25rem;\n}\n.nav-tabs .nav-link:hover, .nav-tabs .nav-link:focus {\n  border-color: #e9ecef #e9ecef #dee2e6;\n  isolation: isolate;\n}\n.nav-tabs .nav-link.disabled {\n  color: #6c757d;\n  background-color: transparent;\n  border-color: transparent;\n}\n.nav-tabs .nav-link.active,\n.nav-tabs .nav-item.show .nav-link {\n  color: #495057;\n  background-color: #fff;\n  border-color: #dee2e6 #dee2e6 #fff;\n}\n.nav-tabs .dropdown-menu {\n  margin-top: -1px;\n  border-top-left-radius: 0;\n  border-top-right-radius: 0;\n}\n\n.nav-pills .nav-link {\n  background: none;\n  border: 0;\n  border-radius: 0.25rem;\n}\n.nav-pills .nav-link.active,\n.nav-pills .show > .nav-link {\n  color: #fff;\n  background-color: #0d6efd;\n}\n\n.nav-fill > .nav-link,\n.nav-fill .nav-item {\n  flex: 1 1 auto;\n  text-align: center;\n}\n\n.nav-justified > .nav-link,\n.nav-justified .nav-item {\n  flex-basis: 0;\n  flex-grow: 1;\n  text-align: center;\n}\n\n.nav-fill .nav-item .nav-link,\n.nav-justified .nav-item .nav-link {\n  width: 100%;\n}\n\n.tab-content > .tab-pane {\n  display: none;\n}\n.tab-content > .active {\n  display: block;\n}\n\n.navbar {\n  position: relative;\n  display: flex;\n  flex-wrap: wrap;\n  align-items: center;\n  justify-content: space-between;\n  padding-top: 0.5rem;\n  padding-bottom: 0.5rem;\n}\n.navbar > .container,\n.navbar > .container-fluid,\n.navbar > .container-sm,\n.navbar > .container-md,\n.navbar > .container-lg,\n.navbar > .container-xl,\n.navbar > .container-xxl {\n  display: flex;\n  flex-wrap: inherit;\n  align-items: center;\n  justify-content: space-between;\n}\n.navbar-brand {\n  padding-top: 0.3125rem;\n  padding-bottom: 0.3125rem;\n  margin-right: 1rem;\n  font-size: 1.25rem;\n  text-decoration: none;\n  white-space: nowrap;\n}\n.navbar-nav {\n  display: flex;\n  flex-direction: column;\n  padding-left: 0;\n  margin-bottom: 0;\n  list-style: none;\n}\n.navbar-nav .nav-link {\n  padding-right: 0;\n  padding-left: 0;\n}\n.navbar-nav .dropdown-menu {\n  position: static;\n}\n\n.navbar-text {\n  padding-top: 0.5rem;\n  padding-bottom: 0.5rem;\n}\n\n.navbar-collapse {\n  flex-basis: 100%;\n  flex-grow: 1;\n  align-items: center;\n}\n\n.navbar-toggler {\n  padding: 0.25rem 0.75rem;\n  font-size: 1.25rem;\n  line-height: 1;\n  background-color: transparent;\n  border: 1px solid transparent;\n  border-radius: 0.25rem;\n  transition: box-shadow 0.15s ease-in-out;\n}\n@media (prefers-reduced-motion: reduce) {\n  .navbar-toggler {\n    transition: none;\n  }\n}\n.navbar-toggler:hover {\n  text-decoration: none;\n}\n.navbar-toggler:focus {\n  text-decoration: none;\n  outline: 0;\n  box-shadow: 0 0 0 0.25rem;\n}\n\n.navbar-toggler-icon {\n  display: inline-block;\n  width: 1.5em;\n  height: 1.5em;\n  vertical-align: middle;\n  background-repeat: no-repeat;\n  background-position: center;\n  background-size: 100%;\n}\n\n.navbar-nav-scroll {\n  max-height: var(--bs-scroll-height, 75vh);\n  overflow-y: auto;\n}\n\n@media (min-width: 576px) {\n  .navbar-expand-sm {\n    flex-wrap: nowrap;\n    justify-content: flex-start;\n  }\n  .navbar-expand-sm .navbar-nav {\n    flex-direction: row;\n  }\n  .navbar-expand-sm .navbar-nav .dropdown-menu {\n    position: absolute;\n  }\n  .navbar-expand-sm .navbar-nav .nav-link {\n    padding-right: 0.5rem;\n    padding-left: 0.5rem;\n  }\n  .navbar-expand-sm .navbar-nav-scroll {\n    overflow: visible;\n  }\n  .navbar-expand-sm .navbar-collapse {\n    display: flex !important;\n    flex-basis: auto;\n  }\n  .navbar-expand-sm .navbar-toggler {\n    display: none;\n  }\n  .navbar-expand-sm .offcanvas-header {\n    display: none;\n  }\n  .navbar-expand-sm .offcanvas {\n    position: inherit;\n    bottom: 0;\n    z-index: 1000;\n    flex-grow: 1;\n    visibility: visible !important;\n    background-color: transparent;\n    border-right: 0;\n    border-left: 0;\n    transition: none;\n    transform: none;\n  }\n  .navbar-expand-sm .offcanvas-top,\n.navbar-expand-sm .offcanvas-bottom {\n    height: auto;\n    border-top: 0;\n    border-bottom: 0;\n  }\n  .navbar-expand-sm .offcanvas-body {\n    display: flex;\n    flex-grow: 0;\n    padding: 0;\n    overflow-y: visible;\n  }\n}\n@media (min-width: 768px) {\n  .navbar-expand-md {\n    flex-wrap: nowrap;\n    justify-content: flex-start;\n  }\n  .navbar-expand-md .navbar-nav {\n    flex-direction: row;\n  }\n  .navbar-expand-md .navbar-nav .dropdown-menu {\n    position: absolute;\n  }\n  .navbar-expand-md .navbar-nav .nav-link {\n    padding-right: 0.5rem;\n    padding-left: 0.5rem;\n  }\n  .navbar-expand-md .navbar-nav-scroll {\n    overflow: visible;\n  }\n  .navbar-expand-md .navbar-collapse {\n    display: flex !important;\n    flex-basis: auto;\n  }\n  .navbar-expand-md .navbar-toggler {\n    display: none;\n  }\n  .navbar-expand-md .offcanvas-header {\n    display: none;\n  }\n  .navbar-expand-md .offcanvas {\n    position: inherit;\n    bottom: 0;\n    z-index: 1000;\n    flex-grow: 1;\n    visibility: visible !important;\n    background-color: transparent;\n    border-right: 0;\n    border-left: 0;\n    transition: none;\n    transform: none;\n  }\n  .navbar-expand-md .offcanvas-top,\n.navbar-expand-md .offcanvas-bottom {\n    height: auto;\n    border-top: 0;\n    border-bottom: 0;\n  }\n  .navbar-expand-md .offcanvas-body {\n    display: flex;\n    flex-grow: 0;\n    padding: 0;\n    overflow-y: visible;\n  }\n}\n@media (min-width: 992px) {\n  .navbar-expand-lg {\n    flex-wrap: nowrap;\n    justify-content: flex-start;\n  }\n  .navbar-expand-lg .navbar-nav {\n    flex-direction: row;\n  }\n  .navbar-expand-lg .navbar-nav .dropdown-menu {\n    position: absolute;\n  }\n  .navbar-expand-lg .navbar-nav .nav-link {\n    padding-right: 0.5rem;\n    padding-left: 0.5rem;\n  }\n  .navbar-expand-lg .navbar-nav-scroll {\n    overflow: visible;\n  }\n  .navbar-expand-lg .navbar-collapse {\n    display: flex !important;\n    flex-basis: auto;\n  }\n  .navbar-expand-lg .navbar-toggler {\n    display: none;\n  }\n  .navbar-expand-lg .offcanvas-header {\n    display: none;\n  }\n  .navbar-expand-lg .offcanvas {\n    position: inherit;\n    bottom: 0;\n    z-index: 1000;\n    flex-grow: 1;\n    visibility: visible !important;\n    background-color: transparent;\n    border-right: 0;\n    border-left: 0;\n    transition: none;\n    transform: none;\n  }\n  .navbar-expand-lg .offcanvas-top,\n.navbar-expand-lg .offcanvas-bottom {\n    height: auto;\n    border-top: 0;\n    border-bottom: 0;\n  }\n  .navbar-expand-lg .offcanvas-body {\n    display: flex;\n    flex-grow: 0;\n    padding: 0;\n    overflow-y: visible;\n  }\n}\n@media (min-width: 1200px) {\n  .navbar-expand-xl {\n    flex-wrap: nowrap;\n    justify-content: flex-start;\n  }\n  .navbar-expand-xl .navbar-nav {\n    flex-direction: row;\n  }\n  .navbar-expand-xl .navbar-nav .dropdown-menu {\n    position: absolute;\n  }\n  .navbar-expand-xl .navbar-nav .nav-link {\n    padding-right: 0.5rem;\n    padding-left: 0.5rem;\n  }\n  .navbar-expand-xl .navbar-nav-scroll {\n    overflow: visible;\n  }\n  .navbar-expand-xl .navbar-collapse {\n    display: flex !important;\n    flex-basis: auto;\n  }\n  .navbar-expand-xl .navbar-toggler {\n    display: none;\n  }\n  .navbar-expand-xl .offcanvas-header {\n    display: none;\n  }\n  .navbar-expand-xl .offcanvas {\n    position: inherit;\n    bottom: 0;\n    z-index: 1000;\n    flex-grow: 1;\n    visibility: visible !important;\n    background-color: transparent;\n    border-right: 0;\n    border-left: 0;\n    transition: none;\n    transform: none;\n  }\n  .navbar-expand-xl .offcanvas-top,\n.navbar-expand-xl .offcanvas-bottom {\n    height: auto;\n    border-top: 0;\n    border-bottom: 0;\n  }\n  .navbar-expand-xl .offcanvas-body {\n    display: flex;\n    flex-grow: 0;\n    padding: 0;\n    overflow-y: visible;\n  }\n}\n@media (min-width: 1400px) {\n  .navbar-expand-xxl {\n    flex-wrap: nowrap;\n    justify-content: flex-start;\n  }\n  .navbar-expand-xxl .navbar-nav {\n    flex-direction: row;\n  }\n  .navbar-expand-xxl .navbar-nav .dropdown-menu {\n    position: absolute;\n  }\n  .navbar-expand-xxl .navbar-nav .nav-link {\n    padding-right: 0.5rem;\n    padding-left: 0.5rem;\n  }\n  .navbar-expand-xxl .navbar-nav-scroll {\n    overflow: visible;\n  }\n  .navbar-expand-xxl .navbar-collapse {\n    display: flex !important;\n    flex-basis: auto;\n  }\n  .navbar-expand-xxl .navbar-toggler {\n    display: none;\n  }\n  .navbar-expand-xxl .offcanvas-header {\n    display: none;\n  }\n  .navbar-expand-xxl .offcanvas {\n    position: inherit;\n    bottom: 0;\n    z-index: 1000;\n    flex-grow: 1;\n    visibility: visible !important;\n    background-color: transparent;\n    border-right: 0;\n    border-left: 0;\n    transition: none;\n    transform: none;\n  }\n  .navbar-expand-xxl .offcanvas-top,\n.navbar-expand-xxl .offcanvas-bottom {\n    height: auto;\n    border-top: 0;\n    border-bottom: 0;\n  }\n  .navbar-expand-xxl .offcanvas-body {\n    display: flex;\n    flex-grow: 0;\n    padding: 0;\n    overflow-y: visible;\n  }\n}\n.navbar-expand {\n  flex-wrap: nowrap;\n  justify-content: flex-start;\n}\n.navbar-expand .navbar-nav {\n  flex-direction: row;\n}\n.navbar-expand .navbar-nav .dropdown-menu {\n  position: absolute;\n}\n.navbar-expand .navbar-nav .nav-link {\n  padding-right: 0.5rem;\n  padding-left: 0.5rem;\n}\n.navbar-expand .navbar-nav-scroll {\n  overflow: visible;\n}\n.navbar-expand .navbar-collapse {\n  display: flex !important;\n  flex-basis: auto;\n}\n.navbar-expand .navbar-toggler {\n  display: none;\n}\n.navbar-expand .offcanvas-header {\n  display: none;\n}\n.navbar-expand .offcanvas {\n  position: inherit;\n  bottom: 0;\n  z-index: 1000;\n  flex-grow: 1;\n  visibility: visible !important;\n  background-color: transparent;\n  border-right: 0;\n  border-left: 0;\n  transition: none;\n  transform: none;\n}\n.navbar-expand .offcanvas-top,\n.navbar-expand .offcanvas-bottom {\n  height: auto;\n  border-top: 0;\n  border-bottom: 0;\n}\n.navbar-expand .offcanvas-body {\n  display: flex;\n  flex-grow: 0;\n  padding: 0;\n  overflow-y: visible;\n}\n\n.navbar-light .navbar-brand {\n  color: rgba(0, 0, 0, 0.9);\n}\n.navbar-light .navbar-brand:hover, .navbar-light .navbar-brand:focus {\n  color: rgba(0, 0, 0, 0.9);\n}\n.navbar-light .navbar-nav .nav-link {\n  color: rgba(0, 0, 0, 0.55);\n}\n.navbar-light .navbar-nav .nav-link:hover, .navbar-light .navbar-nav .nav-link:focus {\n  color: rgba(0, 0, 0, 0.7);\n}\n.navbar-light .navbar-nav .nav-link.disabled {\n  color: rgba(0, 0, 0, 0.3);\n}\n.navbar-light .navbar-nav .show > .nav-link,\n.navbar-light .navbar-nav .nav-link.active {\n  color: rgba(0, 0, 0, 0.9);\n}\n.navbar-light .navbar-toggler {\n  color: rgba(0, 0, 0, 0.55);\n  border-color: rgba(0, 0, 0, 0.1);\n}\n.navbar-light .navbar-toggler-icon {\n  background-image: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'%3e%3cpath stroke='rgba%280, 0, 0, 0.55%29' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e\");\n}\n.navbar-light .navbar-text {\n  color: rgba(0, 0, 0, 0.55);\n}\n.navbar-light .navbar-text a,\n.navbar-light .navbar-text a:hover,\n.navbar-light .navbar-text a:focus {\n  color: rgba(0, 0, 0, 0.9);\n}\n\n.navbar-dark .navbar-brand {\n  color: #fff;\n}\n.navbar-dark .navbar-brand:hover, .navbar-dark .navbar-brand:focus {\n  color: #fff;\n}\n.navbar-dark .navbar-nav .nav-link {\n  color: rgba(255, 255, 255, 0.55);\n}\n.navbar-dark .navbar-nav .nav-link:hover, .navbar-dark .navbar-nav .nav-link:focus {\n  color: rgba(255, 255, 255, 0.75);\n}\n.navbar-dark .navbar-nav .nav-link.disabled {\n  color: rgba(255, 255, 255, 0.25);\n}\n.navbar-dark .navbar-nav .show > .nav-link,\n.navbar-dark .navbar-nav .nav-link.active {\n  color: #fff;\n}\n.navbar-dark .navbar-toggler {\n  color: rgba(255, 255, 255, 0.55);\n  border-color: rgba(255, 255, 255, 0.1);\n}\n.navbar-dark .navbar-toggler-icon {\n  background-image: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'%3e%3cpath stroke='rgba%28255, 255, 255, 0.55%29' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e\");\n}\n.navbar-dark .navbar-text {\n  color: rgba(255, 255, 255, 0.55);\n}\n.navbar-dark .navbar-text a,\n.navbar-dark .navbar-text a:hover,\n.navbar-dark .navbar-text a:focus {\n  color: #fff;\n}\n\n.card {\n  position: relative;\n  display: flex;\n  flex-direction: column;\n  min-width: 0;\n  word-wrap: break-word;\n  background-color: #fff;\n  background-clip: border-box;\n  border: 1px solid rgba(0, 0, 0, 0.125);\n  border-radius: 0.25rem;\n}\n.card > hr {\n  margin-right: 0;\n  margin-left: 0;\n}\n.card > .list-group {\n  border-top: inherit;\n  border-bottom: inherit;\n}\n.card > .list-group:first-child {\n  border-top-width: 0;\n  border-top-left-radius: calc(0.25rem - 1px);\n  border-top-right-radius: calc(0.25rem - 1px);\n}\n.card > .list-group:last-child {\n  border-bottom-width: 0;\n  border-bottom-right-radius: calc(0.25rem - 1px);\n  border-bottom-left-radius: calc(0.25rem - 1px);\n}\n.card > .card-header + .list-group,\n.card > .list-group + .card-footer {\n  border-top: 0;\n}\n\n.card-body {\n  flex: 1 1 auto;\n  padding: 1rem 1rem;\n}\n\n.card-title {\n  margin-bottom: 0.5rem;\n}\n\n.card-subtitle {\n  margin-top: -0.25rem;\n  margin-bottom: 0;\n}\n\n.card-text:last-child {\n  margin-bottom: 0;\n}\n\n.card-link + .card-link {\n  margin-left: 1rem;\n}\n\n.card-header {\n  padding: 0.5rem 1rem;\n  margin-bottom: 0;\n  background-color: rgba(0, 0, 0, 0.03);\n  border-bottom: 1px solid rgba(0, 0, 0, 0.125);\n}\n.card-header:first-child {\n  border-radius: calc(0.25rem - 1px) calc(0.25rem - 1px) 0 0;\n}\n\n.card-footer {\n  padding: 0.5rem 1rem;\n  background-color: rgba(0, 0, 0, 0.03);\n  border-top: 1px solid rgba(0, 0, 0, 0.125);\n}\n.card-footer:last-child {\n  border-radius: 0 0 calc(0.25rem - 1px) calc(0.25rem - 1px);\n}\n\n.card-header-tabs {\n  margin-right: -0.5rem;\n  margin-bottom: -0.5rem;\n  margin-left: -0.5rem;\n  border-bottom: 0;\n}\n\n.card-header-pills {\n  margin-right: -0.5rem;\n  margin-left: -0.5rem;\n}\n\n.card-img-overlay {\n  position: absolute;\n  top: 0;\n  right: 0;\n  bottom: 0;\n  left: 0;\n  padding: 1rem;\n  border-radius: calc(0.25rem - 1px);\n}\n\n.card-img,\n.card-img-top,\n.card-img-bottom {\n  width: 100%;\n}\n\n.card-img,\n.card-img-top {\n  border-top-left-radius: calc(0.25rem - 1px);\n  border-top-right-radius: calc(0.25rem - 1px);\n}\n\n.card-img,\n.card-img-bottom {\n  border-bottom-right-radius: calc(0.25rem - 1px);\n  border-bottom-left-radius: calc(0.25rem - 1px);\n}\n\n.card-group > .card {\n  margin-bottom: 0.75rem;\n}\n@media (min-width: 576px) {\n  .card-group {\n    display: flex;\n    flex-flow: row wrap;\n  }\n  .card-group > .card {\n    flex: 1 0 0%;\n    margin-bottom: 0;\n  }\n  .card-group > .card + .card {\n    margin-left: 0;\n    border-left: 0;\n  }\n  .card-group > .card:not(:last-child) {\n    border-top-right-radius: 0;\n    border-bottom-right-radius: 0;\n  }\n  .card-group > .card:not(:last-child) .card-img-top,\n.card-group > .card:not(:last-child) .card-header {\n    border-top-right-radius: 0;\n  }\n  .card-group > .card:not(:last-child) .card-img-bottom,\n.card-group > .card:not(:last-child) .card-footer {\n    border-bottom-right-radius: 0;\n  }\n  .card-group > .card:not(:first-child) {\n    border-top-left-radius: 0;\n    border-bottom-left-radius: 0;\n  }\n  .card-group > .card:not(:first-child) .card-img-top,\n.card-group > .card:not(:first-child) .card-header {\n    border-top-left-radius: 0;\n  }\n  .card-group > .card:not(:first-child) .card-img-bottom,\n.card-group > .card:not(:first-child) .card-footer {\n    border-bottom-left-radius: 0;\n  }\n}\n\n.accordion-button {\n  position: relative;\n  display: flex;\n  align-items: center;\n  width: 100%;\n  padding: 1rem 1.25rem;\n  font-size: 1rem;\n  color: #212529;\n  text-align: left;\n  background-color: #fff;\n  border: 0;\n  border-radius: 0;\n  overflow-anchor: none;\n  transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out, border-radius 0.15s ease;\n}\n@media (prefers-reduced-motion: reduce) {\n  .accordion-button {\n    transition: none;\n  }\n}\n.accordion-button:not(.collapsed) {\n  color: #0c63e4;\n  background-color: #e7f1ff;\n  box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.125);\n}\n.accordion-button:not(.collapsed)::after {\n  background-image: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%230c63e4'%3e%3cpath fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e\");\n  transform: rotate(-180deg);\n}\n.accordion-button::after {\n  flex-shrink: 0;\n  width: 1.25rem;\n  height: 1.25rem;\n  margin-left: auto;\n  content: \"\";\n  background-image: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23212529'%3e%3cpath fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e\");\n  background-repeat: no-repeat;\n  background-size: 1.25rem;\n  transition: transform 0.2s ease-in-out;\n}\n@media (prefers-reduced-motion: reduce) {\n  .accordion-button::after {\n    transition: none;\n  }\n}\n.accordion-button:hover {\n  z-index: 2;\n}\n.accordion-button:focus {\n  z-index: 3;\n  border-color: #86b7fe;\n  outline: 0;\n  box-shadow: 0 0 0 0.25rem rgba(13, 110, 253, 0.25);\n}\n\n.accordion-header {\n  margin-bottom: 0;\n}\n\n.accordion-item {\n  background-color: #fff;\n  border: 1px solid rgba(0, 0, 0, 0.125);\n}\n.accordion-item:first-of-type {\n  border-top-left-radius: 0.25rem;\n  border-top-right-radius: 0.25rem;\n}\n.accordion-item:first-of-type .accordion-button {\n  border-top-left-radius: calc(0.25rem - 1px);\n  border-top-right-radius: calc(0.25rem - 1px);\n}\n.accordion-item:not(:first-of-type) {\n  border-top: 0;\n}\n.accordion-item:last-of-type {\n  border-bottom-right-radius: 0.25rem;\n  border-bottom-left-radius: 0.25rem;\n}\n.accordion-item:last-of-type .accordion-button.collapsed {\n  border-bottom-right-radius: calc(0.25rem - 1px);\n  border-bottom-left-radius: calc(0.25rem - 1px);\n}\n.accordion-item:last-of-type .accordion-collapse {\n  border-bottom-right-radius: 0.25rem;\n  border-bottom-left-radius: 0.25rem;\n}\n\n.accordion-body {\n  padding: 1rem 1.25rem;\n}\n\n.accordion-flush .accordion-collapse {\n  border-width: 0;\n}\n.accordion-flush .accordion-item {\n  border-right: 0;\n  border-left: 0;\n  border-radius: 0;\n}\n.accordion-flush .accordion-item:first-child {\n  border-top: 0;\n}\n.accordion-flush .accordion-item:last-child {\n  border-bottom: 0;\n}\n.accordion-flush .accordion-item .accordion-button {\n  border-radius: 0;\n}\n\n.breadcrumb {\n  display: flex;\n  flex-wrap: wrap;\n  padding: 0 0;\n  margin-bottom: 1rem;\n  list-style: none;\n}\n\n.breadcrumb-item + .breadcrumb-item {\n  padding-left: 0.5rem;\n}\n.breadcrumb-item + .breadcrumb-item::before {\n  float: left;\n  padding-right: 0.5rem;\n  color: #6c757d;\n  content: var(--bs-breadcrumb-divider, \"/\") /* rtl: var(--bs-breadcrumb-divider, \"/\") */;\n}\n.breadcrumb-item.active {\n  color: #6c757d;\n}\n\n.pagination {\n  display: flex;\n  padding-left: 0;\n  list-style: none;\n}\n\n.page-link {\n  position: relative;\n  display: block;\n  color: #0d6efd;\n  text-decoration: none;\n  background-color: #fff;\n  border: 1px solid #dee2e6;\n  transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;\n}\n@media (prefers-reduced-motion: reduce) {\n  .page-link {\n    transition: none;\n  }\n}\n.page-link:hover {\n  z-index: 2;\n  color: #0a58ca;\n  background-color: #e9ecef;\n  border-color: #dee2e6;\n}\n.page-link:focus {\n  z-index: 3;\n  color: #0a58ca;\n  background-color: #e9ecef;\n  outline: 0;\n  box-shadow: 0 0 0 0.25rem rgba(13, 110, 253, 0.25);\n}\n\n.page-item:not(:first-child) .page-link {\n  margin-left: -1px;\n}\n.page-item.active .page-link {\n  z-index: 3;\n  color: #fff;\n  background-color: #0d6efd;\n  border-color: #0d6efd;\n}\n.page-item.disabled .page-link {\n  color: #6c757d;\n  pointer-events: none;\n  background-color: #fff;\n  border-color: #dee2e6;\n}\n\n.page-link {\n  padding: 0.375rem 0.75rem;\n}\n\n.page-item:first-child .page-link {\n  border-top-left-radius: 0.25rem;\n  border-bottom-left-radius: 0.25rem;\n}\n.page-item:last-child .page-link {\n  border-top-right-radius: 0.25rem;\n  border-bottom-right-radius: 0.25rem;\n}\n\n.pagination-lg .page-link {\n  padding: 0.75rem 1.5rem;\n  font-size: 1.25rem;\n}\n.pagination-lg .page-item:first-child .page-link {\n  border-top-left-radius: 0.3rem;\n  border-bottom-left-radius: 0.3rem;\n}\n.pagination-lg .page-item:last-child .page-link {\n  border-top-right-radius: 0.3rem;\n  border-bottom-right-radius: 0.3rem;\n}\n\n.pagination-sm .page-link {\n  padding: 0.25rem 0.5rem;\n  font-size: 0.875rem;\n}\n.pagination-sm .page-item:first-child .page-link {\n  border-top-left-radius: 0.2rem;\n  border-bottom-left-radius: 0.2rem;\n}\n.pagination-sm .page-item:last-child .page-link {\n  border-top-right-radius: 0.2rem;\n  border-bottom-right-radius: 0.2rem;\n}\n\n.badge {\n  display: inline-block;\n  padding: 0.35em 0.65em;\n  font-size: 0.75em;\n  font-weight: 700;\n  line-height: 1;\n  color: #fff;\n  text-align: center;\n  white-space: nowrap;\n  vertical-align: baseline;\n  border-radius: 0.25rem;\n}\n.badge:empty {\n  display: none;\n}\n\n.btn .badge {\n  position: relative;\n  top: -1px;\n}\n\n.alert {\n  position: relative;\n  padding: 1rem 1rem;\n  margin-bottom: 1rem;\n  border: 1px solid transparent;\n  border-radius: 0.25rem;\n}\n\n.alert-heading {\n  color: inherit;\n}\n\n.alert-link {\n  font-weight: 700;\n}\n\n.alert-dismissible {\n  padding-right: 3rem;\n}\n.alert-dismissible .btn-close {\n  position: absolute;\n  top: 0;\n  right: 0;\n  z-index: 2;\n  padding: 1.25rem 1rem;\n}\n\n.alert-primary {\n  color: #084298;\n  background-color: #cfe2ff;\n  border-color: #b6d4fe;\n}\n.alert-primary .alert-link {\n  color: #06357a;\n}\n\n.alert-secondary {\n  color: #41464b;\n  background-color: #e2e3e5;\n  border-color: #d3d6d8;\n}\n.alert-secondary .alert-link {\n  color: #34383c;\n}\n\n.alert-success {\n  color: #0f5132;\n  background-color: #d1e7dd;\n  border-color: #badbcc;\n}\n.alert-success .alert-link {\n  color: #0c4128;\n}\n\n.alert-info {\n  color: #055160;\n  background-color: #cff4fc;\n  border-color: #b6effb;\n}\n.alert-info .alert-link {\n  color: #04414d;\n}\n\n.alert-warning {\n  color: #664d03;\n  background-color: #fff3cd;\n  border-color: #ffecb5;\n}\n.alert-warning .alert-link {\n  color: #523e02;\n}\n\n.alert-danger {\n  color: #842029;\n  background-color: #f8d7da;\n  border-color: #f5c2c7;\n}\n.alert-danger .alert-link {\n  color: #6a1a21;\n}\n\n.alert-light {\n  color: #636464;\n  background-color: #fefefe;\n  border-color: #fdfdfe;\n}\n.alert-light .alert-link {\n  color: #4f5050;\n}\n\n.alert-dark {\n  color: #141619;\n  background-color: #d3d3d4;\n  border-color: #bcbebf;\n}\n.alert-dark .alert-link {\n  color: #101214;\n}\n\n@-webkit-keyframes progress-bar-stripes {\n  0% {\n    background-position-x: 1rem;\n  }\n}\n\n@keyframes progress-bar-stripes {\n  0% {\n    background-position-x: 1rem;\n  }\n}\n.progress {\n  display: flex;\n  height: 1rem;\n  overflow: hidden;\n  font-size: 0.75rem;\n  background-color: #e9ecef;\n  border-radius: 0.25rem;\n}\n\n.progress-bar {\n  display: flex;\n  flex-direction: column;\n  justify-content: center;\n  overflow: hidden;\n  color: #fff;\n  text-align: center;\n  white-space: nowrap;\n  background-color: #0d6efd;\n  transition: width 0.6s ease;\n}\n@media (prefers-reduced-motion: reduce) {\n  .progress-bar {\n    transition: none;\n  }\n}\n\n.progress-bar-striped {\n  background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n  background-size: 1rem 1rem;\n}\n\n.progress-bar-animated {\n  -webkit-animation: 1s linear infinite progress-bar-stripes;\n  animation: 1s linear infinite progress-bar-stripes;\n}\n@media (prefers-reduced-motion: reduce) {\n  .progress-bar-animated {\n    -webkit-animation: none;\n    animation: none;\n  }\n}\n\n.list-group {\n  display: flex;\n  flex-direction: column;\n  padding-left: 0;\n  margin-bottom: 0;\n  border-radius: 0.25rem;\n}\n\n.list-group-numbered {\n  list-style-type: none;\n  counter-reset: section;\n}\n.list-group-numbered > li::before {\n  content: counters(section, \".\") \". \";\n  counter-increment: section;\n}\n\n.list-group-item-action {\n  width: 100%;\n  color: #495057;\n  text-align: inherit;\n}\n.list-group-item-action:hover, .list-group-item-action:focus {\n  z-index: 1;\n  color: #495057;\n  text-decoration: none;\n  background-color: #f8f9fa;\n}\n.list-group-item-action:active {\n  color: #212529;\n  background-color: #e9ecef;\n}\n\n.list-group-item {\n  position: relative;\n  display: block;\n  padding: 0.5rem 1rem;\n  color: #212529;\n  text-decoration: none;\n  background-color: #fff;\n  border: 1px solid rgba(0, 0, 0, 0.125);\n}\n.list-group-item:first-child {\n  border-top-left-radius: inherit;\n  border-top-right-radius: inherit;\n}\n.list-group-item:last-child {\n  border-bottom-right-radius: inherit;\n  border-bottom-left-radius: inherit;\n}\n.list-group-item.disabled, .list-group-item:disabled {\n  color: #6c757d;\n  pointer-events: none;\n  background-color: #fff;\n}\n.list-group-item.active {\n  z-index: 2;\n  color: #fff;\n  background-color: #0d6efd;\n  border-color: #0d6efd;\n}\n.list-group-item + .list-group-item {\n  border-top-width: 0;\n}\n.list-group-item + .list-group-item.active {\n  margin-top: -1px;\n  border-top-width: 1px;\n}\n\n.list-group-horizontal {\n  flex-direction: row;\n}\n.list-group-horizontal > .list-group-item:first-child {\n  border-bottom-left-radius: 0.25rem;\n  border-top-right-radius: 0;\n}\n.list-group-horizontal > .list-group-item:last-child {\n  border-top-right-radius: 0.25rem;\n  border-bottom-left-radius: 0;\n}\n.list-group-horizontal > .list-group-item.active {\n  margin-top: 0;\n}\n.list-group-horizontal > .list-group-item + .list-group-item {\n  border-top-width: 1px;\n  border-left-width: 0;\n}\n.list-group-horizontal > .list-group-item + .list-group-item.active {\n  margin-left: -1px;\n  border-left-width: 1px;\n}\n\n@media (min-width: 576px) {\n  .list-group-horizontal-sm {\n    flex-direction: row;\n  }\n  .list-group-horizontal-sm > .list-group-item:first-child {\n    border-bottom-left-radius: 0.25rem;\n    border-top-right-radius: 0;\n  }\n  .list-group-horizontal-sm > .list-group-item:last-child {\n    border-top-right-radius: 0.25rem;\n    border-bottom-left-radius: 0;\n  }\n  .list-group-horizontal-sm > .list-group-item.active {\n    margin-top: 0;\n  }\n  .list-group-horizontal-sm > .list-group-item + .list-group-item {\n    border-top-width: 1px;\n    border-left-width: 0;\n  }\n  .list-group-horizontal-sm > .list-group-item + .list-group-item.active {\n    margin-left: -1px;\n    border-left-width: 1px;\n  }\n}\n@media (min-width: 768px) {\n  .list-group-horizontal-md {\n    flex-direction: row;\n  }\n  .list-group-horizontal-md > .list-group-item:first-child {\n    border-bottom-left-radius: 0.25rem;\n    border-top-right-radius: 0;\n  }\n  .list-group-horizontal-md > .list-group-item:last-child {\n    border-top-right-radius: 0.25rem;\n    border-bottom-left-radius: 0;\n  }\n  .list-group-horizontal-md > .list-group-item.active {\n    margin-top: 0;\n  }\n  .list-group-horizontal-md > .list-group-item + .list-group-item {\n    border-top-width: 1px;\n    border-left-width: 0;\n  }\n  .list-group-horizontal-md > .list-group-item + .list-group-item.active {\n    margin-left: -1px;\n    border-left-width: 1px;\n  }\n}\n@media (min-width: 992px) {\n  .list-group-horizontal-lg {\n    flex-direction: row;\n  }\n  .list-group-horizontal-lg > .list-group-item:first-child {\n    border-bottom-left-radius: 0.25rem;\n    border-top-right-radius: 0;\n  }\n  .list-group-horizontal-lg > .list-group-item:last-child {\n    border-top-right-radius: 0.25rem;\n    border-bottom-left-radius: 0;\n  }\n  .list-group-horizontal-lg > .list-group-item.active {\n    margin-top: 0;\n  }\n  .list-group-horizontal-lg > .list-group-item + .list-group-item {\n    border-top-width: 1px;\n    border-left-width: 0;\n  }\n  .list-group-horizontal-lg > .list-group-item + .list-group-item.active {\n    margin-left: -1px;\n    border-left-width: 1px;\n  }\n}\n@media (min-width: 1200px) {\n  .list-group-horizontal-xl {\n    flex-direction: row;\n  }\n  .list-group-horizontal-xl > .list-group-item:first-child {\n    border-bottom-left-radius: 0.25rem;\n    border-top-right-radius: 0;\n  }\n  .list-group-horizontal-xl > .list-group-item:last-child {\n    border-top-right-radius: 0.25rem;\n    border-bottom-left-radius: 0;\n  }\n  .list-group-horizontal-xl > .list-group-item.active {\n    margin-top: 0;\n  }\n  .list-group-horizontal-xl > .list-group-item + .list-group-item {\n    border-top-width: 1px;\n    border-left-width: 0;\n  }\n  .list-group-horizontal-xl > .list-group-item + .list-group-item.active {\n    margin-left: -1px;\n    border-left-width: 1px;\n  }\n}\n@media (min-width: 1400px) {\n  .list-group-horizontal-xxl {\n    flex-direction: row;\n  }\n  .list-group-horizontal-xxl > .list-group-item:first-child {\n    border-bottom-left-radius: 0.25rem;\n    border-top-right-radius: 0;\n  }\n  .list-group-horizontal-xxl > .list-group-item:last-child {\n    border-top-right-radius: 0.25rem;\n    border-bottom-left-radius: 0;\n  }\n  .list-group-horizontal-xxl > .list-group-item.active {\n    margin-top: 0;\n  }\n  .list-group-horizontal-xxl > .list-group-item + .list-group-item {\n    border-top-width: 1px;\n    border-left-width: 0;\n  }\n  .list-group-horizontal-xxl > .list-group-item + .list-group-item.active {\n    margin-left: -1px;\n    border-left-width: 1px;\n  }\n}\n.list-group-flush {\n  border-radius: 0;\n}\n.list-group-flush > .list-group-item {\n  border-width: 0 0 1px;\n}\n.list-group-flush > .list-group-item:last-child {\n  border-bottom-width: 0;\n}\n\n.list-group-item-primary {\n  color: #084298;\n  background-color: #cfe2ff;\n}\n.list-group-item-primary.list-group-item-action:hover, .list-group-item-primary.list-group-item-action:focus {\n  color: #084298;\n  background-color: #bacbe6;\n}\n.list-group-item-primary.list-group-item-action.active {\n  color: #fff;\n  background-color: #084298;\n  border-color: #084298;\n}\n\n.list-group-item-secondary {\n  color: #41464b;\n  background-color: #e2e3e5;\n}\n.list-group-item-secondary.list-group-item-action:hover, .list-group-item-secondary.list-group-item-action:focus {\n  color: #41464b;\n  background-color: #cbccce;\n}\n.list-group-item-secondary.list-group-item-action.active {\n  color: #fff;\n  background-color: #41464b;\n  border-color: #41464b;\n}\n\n.list-group-item-success {\n  color: #0f5132;\n  background-color: #d1e7dd;\n}\n.list-group-item-success.list-group-item-action:hover, .list-group-item-success.list-group-item-action:focus {\n  color: #0f5132;\n  background-color: #bcd0c7;\n}\n.list-group-item-success.list-group-item-action.active {\n  color: #fff;\n  background-color: #0f5132;\n  border-color: #0f5132;\n}\n\n.list-group-item-info {\n  color: #055160;\n  background-color: #cff4fc;\n}\n.list-group-item-info.list-group-item-action:hover, .list-group-item-info.list-group-item-action:focus {\n  color: #055160;\n  background-color: #badce3;\n}\n.list-group-item-info.list-group-item-action.active {\n  color: #fff;\n  background-color: #055160;\n  border-color: #055160;\n}\n\n.list-group-item-warning {\n  color: #664d03;\n  background-color: #fff3cd;\n}\n.list-group-item-warning.list-group-item-action:hover, .list-group-item-warning.list-group-item-action:focus {\n  color: #664d03;\n  background-color: #e6dbb9;\n}\n.list-group-item-warning.list-group-item-action.active {\n  color: #fff;\n  background-color: #664d03;\n  border-color: #664d03;\n}\n\n.list-group-item-danger {\n  color: #842029;\n  background-color: #f8d7da;\n}\n.list-group-item-danger.list-group-item-action:hover, .list-group-item-danger.list-group-item-action:focus {\n  color: #842029;\n  background-color: #dfc2c4;\n}\n.list-group-item-danger.list-group-item-action.active {\n  color: #fff;\n  background-color: #842029;\n  border-color: #842029;\n}\n\n.list-group-item-light {\n  color: #636464;\n  background-color: #fefefe;\n}\n.list-group-item-light.list-group-item-action:hover, .list-group-item-light.list-group-item-action:focus {\n  color: #636464;\n  background-color: #e5e5e5;\n}\n.list-group-item-light.list-group-item-action.active {\n  color: #fff;\n  background-color: #636464;\n  border-color: #636464;\n}\n\n.list-group-item-dark {\n  color: #141619;\n  background-color: #d3d3d4;\n}\n.list-group-item-dark.list-group-item-action:hover, .list-group-item-dark.list-group-item-action:focus {\n  color: #141619;\n  background-color: #bebebf;\n}\n.list-group-item-dark.list-group-item-action.active {\n  color: #fff;\n  background-color: #141619;\n  border-color: #141619;\n}\n\n.btn-close {\n  box-sizing: content-box;\n  width: 1em;\n  height: 1em;\n  padding: 0.25em 0.25em;\n  color: #000;\n  background: transparent url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23000'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e\") center/1em auto no-repeat;\n  border: 0;\n  border-radius: 0.25rem;\n  opacity: 0.5;\n}\n.btn-close:hover {\n  color: #000;\n  text-decoration: none;\n  opacity: 0.75;\n}\n.btn-close:focus {\n  outline: 0;\n  box-shadow: 0 0 0 0.25rem rgba(13, 110, 253, 0.25);\n  opacity: 1;\n}\n.btn-close:disabled, .btn-close.disabled {\n  pointer-events: none;\n  -webkit-user-select: none;\n  -moz-user-select: none;\n  user-select: none;\n  opacity: 0.25;\n}\n\n.btn-close-white {\n  filter: invert(1) grayscale(100%) brightness(200%);\n}\n\n.toast {\n  width: 350px;\n  max-width: 100%;\n  font-size: 0.875rem;\n  pointer-events: auto;\n  background-color: rgba(255, 255, 255, 0.85);\n  background-clip: padding-box;\n  border: 1px solid rgba(0, 0, 0, 0.1);\n  box-shadow: 0 0.5rem 1rem rgba(0, 0, 0, 0.15);\n  border-radius: 0.25rem;\n}\n.toast.showing {\n  opacity: 0;\n}\n.toast:not(.show) {\n  display: none;\n}\n\n.toast-container {\n  width: -webkit-max-content;\n  width: -moz-max-content;\n  width: max-content;\n  max-width: 100%;\n  pointer-events: none;\n}\n.toast-container > :not(:last-child) {\n  margin-bottom: 0.75rem;\n}\n\n.toast-header {\n  display: flex;\n  align-items: center;\n  padding: 0.5rem 0.75rem;\n  color: #6c757d;\n  background-color: rgba(255, 255, 255, 0.85);\n  background-clip: padding-box;\n  border-bottom: 1px solid rgba(0, 0, 0, 0.05);\n  border-top-left-radius: calc(0.25rem - 1px);\n  border-top-right-radius: calc(0.25rem - 1px);\n}\n.toast-header .btn-close {\n  margin-right: -0.375rem;\n  margin-left: 0.75rem;\n}\n\n.toast-body {\n  padding: 0.75rem;\n  word-wrap: break-word;\n}\n\n.modal {\n  position: fixed;\n  top: 0;\n  left: 0;\n  z-index: 1055;\n  display: none;\n  width: 100%;\n  height: 100%;\n  overflow-x: hidden;\n  overflow-y: auto;\n  outline: 0;\n}\n\n.modal-dialog {\n  position: relative;\n  width: auto;\n  margin: 0.5rem;\n  pointer-events: none;\n}\n.modal.fade .modal-dialog {\n  transition: transform 0.3s ease-out;\n  transform: translate(0, -50px);\n}\n@media (prefers-reduced-motion: reduce) {\n  .modal.fade .modal-dialog {\n    transition: none;\n  }\n}\n.modal.show .modal-dialog {\n  transform: none;\n}\n.modal.modal-static .modal-dialog {\n  transform: scale(1.02);\n}\n\n.modal-dialog-scrollable {\n  height: calc(100% - 1rem);\n}\n.modal-dialog-scrollable .modal-content {\n  max-height: 100%;\n  overflow: hidden;\n}\n.modal-dialog-scrollable .modal-body {\n  overflow-y: auto;\n}\n\n.modal-dialog-centered {\n  display: flex;\n  align-items: center;\n  min-height: calc(100% - 1rem);\n}\n\n.modal-content {\n  position: relative;\n  display: flex;\n  flex-direction: column;\n  width: 100%;\n  pointer-events: auto;\n  background-color: #fff;\n  background-clip: padding-box;\n  border: 1px solid rgba(0, 0, 0, 0.2);\n  border-radius: 0.3rem;\n  outline: 0;\n}\n\n.modal-backdrop {\n  position: fixed;\n  top: 0;\n  left: 0;\n  z-index: 1050;\n  width: 100vw;\n  height: 100vh;\n  background-color: #000;\n}\n.modal-backdrop.fade {\n  opacity: 0;\n}\n.modal-backdrop.show {\n  opacity: 0.5;\n}\n\n.modal-header {\n  display: flex;\n  flex-shrink: 0;\n  align-items: center;\n  justify-content: space-between;\n  padding: 1rem 1rem;\n  border-bottom: 1px solid #dee2e6;\n  border-top-left-radius: calc(0.3rem - 1px);\n  border-top-right-radius: calc(0.3rem - 1px);\n}\n.modal-header .btn-close {\n  padding: 0.5rem 0.5rem;\n  margin: -0.5rem -0.5rem -0.5rem auto;\n}\n\n.modal-title {\n  margin-bottom: 0;\n  line-height: 1.5;\n}\n\n.modal-body {\n  position: relative;\n  flex: 1 1 auto;\n  padding: 1rem;\n}\n\n.modal-footer {\n  display: flex;\n  flex-wrap: wrap;\n  flex-shrink: 0;\n  align-items: center;\n  justify-content: flex-end;\n  padding: 0.75rem;\n  border-top: 1px solid #dee2e6;\n  border-bottom-right-radius: calc(0.3rem - 1px);\n  border-bottom-left-radius: calc(0.3rem - 1px);\n}\n.modal-footer > * {\n  margin: 0.25rem;\n}\n\n@media (min-width: 576px) {\n  .modal-dialog {\n    max-width: 500px;\n    margin: 1.75rem auto;\n  }\n\n  .modal-dialog-scrollable {\n    height: calc(100% - 3.5rem);\n  }\n\n  .modal-dialog-centered {\n    min-height: calc(100% - 3.5rem);\n  }\n\n  .modal-sm {\n    max-width: 300px;\n  }\n}\n@media (min-width: 992px) {\n  .modal-lg,\n.modal-xl {\n    max-width: 800px;\n  }\n}\n@media (min-width: 1200px) {\n  .modal-xl {\n    max-width: 1140px;\n  }\n}\n.modal-fullscreen {\n  width: 100vw;\n  max-width: none;\n  height: 100%;\n  margin: 0;\n}\n.modal-fullscreen .modal-content {\n  height: 100%;\n  border: 0;\n  border-radius: 0;\n}\n.modal-fullscreen .modal-header {\n  border-radius: 0;\n}\n.modal-fullscreen .modal-body {\n  overflow-y: auto;\n}\n.modal-fullscreen .modal-footer {\n  border-radius: 0;\n}\n\n@media (max-width: 575.98px) {\n  .modal-fullscreen-sm-down {\n    width: 100vw;\n    max-width: none;\n    height: 100%;\n    margin: 0;\n  }\n  .modal-fullscreen-sm-down .modal-content {\n    height: 100%;\n    border: 0;\n    border-radius: 0;\n  }\n  .modal-fullscreen-sm-down .modal-header {\n    border-radius: 0;\n  }\n  .modal-fullscreen-sm-down .modal-body {\n    overflow-y: auto;\n  }\n  .modal-fullscreen-sm-down .modal-footer {\n    border-radius: 0;\n  }\n}\n@media (max-width: 767.98px) {\n  .modal-fullscreen-md-down {\n    width: 100vw;\n    max-width: none;\n    height: 100%;\n    margin: 0;\n  }\n  .modal-fullscreen-md-down .modal-content {\n    height: 100%;\n    border: 0;\n    border-radius: 0;\n  }\n  .modal-fullscreen-md-down .modal-header {\n    border-radius: 0;\n  }\n  .modal-fullscreen-md-down .modal-body {\n    overflow-y: auto;\n  }\n  .modal-fullscreen-md-down .modal-footer {\n    border-radius: 0;\n  }\n}\n@media (max-width: 991.98px) {\n  .modal-fullscreen-lg-down {\n    width: 100vw;\n    max-width: none;\n    height: 100%;\n    margin: 0;\n  }\n  .modal-fullscreen-lg-down .modal-content {\n    height: 100%;\n    border: 0;\n    border-radius: 0;\n  }\n  .modal-fullscreen-lg-down .modal-header {\n    border-radius: 0;\n  }\n  .modal-fullscreen-lg-down .modal-body {\n    overflow-y: auto;\n  }\n  .modal-fullscreen-lg-down .modal-footer {\n    border-radius: 0;\n  }\n}\n@media (max-width: 1199.98px) {\n  .modal-fullscreen-xl-down {\n    width: 100vw;\n    max-width: none;\n    height: 100%;\n    margin: 0;\n  }\n  .modal-fullscreen-xl-down .modal-content {\n    height: 100%;\n    border: 0;\n    border-radius: 0;\n  }\n  .modal-fullscreen-xl-down .modal-header {\n    border-radius: 0;\n  }\n  .modal-fullscreen-xl-down .modal-body {\n    overflow-y: auto;\n  }\n  .modal-fullscreen-xl-down .modal-footer {\n    border-radius: 0;\n  }\n}\n@media (max-width: 1399.98px) {\n  .modal-fullscreen-xxl-down {\n    width: 100vw;\n    max-width: none;\n    height: 100%;\n    margin: 0;\n  }\n  .modal-fullscreen-xxl-down .modal-content {\n    height: 100%;\n    border: 0;\n    border-radius: 0;\n  }\n  .modal-fullscreen-xxl-down .modal-header {\n    border-radius: 0;\n  }\n  .modal-fullscreen-xxl-down .modal-body {\n    overflow-y: auto;\n  }\n  .modal-fullscreen-xxl-down .modal-footer {\n    border-radius: 0;\n  }\n}\n.tooltip {\n  position: absolute;\n  z-index: 1080;\n  display: block;\n  margin: 0;\n  font-family: var(--bs-font-sans-serif);\n  font-style: normal;\n  font-weight: 400;\n  line-height: 1.5;\n  text-align: left;\n  text-align: start;\n  text-decoration: none;\n  text-shadow: none;\n  text-transform: none;\n  letter-spacing: normal;\n  word-break: normal;\n  word-spacing: normal;\n  white-space: normal;\n  line-break: auto;\n  font-size: 0.875rem;\n  word-wrap: break-word;\n  opacity: 0;\n}\n.tooltip.show {\n  opacity: 0.9;\n}\n.tooltip .tooltip-arrow {\n  position: absolute;\n  display: block;\n  width: 0.8rem;\n  height: 0.4rem;\n}\n.tooltip .tooltip-arrow::before {\n  position: absolute;\n  content: \"\";\n  border-color: transparent;\n  border-style: solid;\n}\n\n.bs-tooltip-top, .bs-tooltip-auto[data-popper-placement^=top] {\n  padding: 0.4rem 0;\n}\n.bs-tooltip-top .tooltip-arrow, .bs-tooltip-auto[data-popper-placement^=top] .tooltip-arrow {\n  bottom: 0;\n}\n.bs-tooltip-top .tooltip-arrow::before, .bs-tooltip-auto[data-popper-placement^=top] .tooltip-arrow::before {\n  top: -1px;\n  border-width: 0.4rem 0.4rem 0;\n  border-top-color: #000;\n}\n\n.bs-tooltip-end, .bs-tooltip-auto[data-popper-placement^=right] {\n  padding: 0 0.4rem;\n}\n.bs-tooltip-end .tooltip-arrow, .bs-tooltip-auto[data-popper-placement^=right] .tooltip-arrow {\n  left: 0;\n  width: 0.4rem;\n  height: 0.8rem;\n}\n.bs-tooltip-end .tooltip-arrow::before, .bs-tooltip-auto[data-popper-placement^=right] .tooltip-arrow::before {\n  right: -1px;\n  border-width: 0.4rem 0.4rem 0.4rem 0;\n  border-right-color: #000;\n}\n\n.bs-tooltip-bottom, .bs-tooltip-auto[data-popper-placement^=bottom] {\n  padding: 0.4rem 0;\n}\n.bs-tooltip-bottom .tooltip-arrow, .bs-tooltip-auto[data-popper-placement^=bottom] .tooltip-arrow {\n  top: 0;\n}\n.bs-tooltip-bottom .tooltip-arrow::before, .bs-tooltip-auto[data-popper-placement^=bottom] .tooltip-arrow::before {\n  bottom: -1px;\n  border-width: 0 0.4rem 0.4rem;\n  border-bottom-color: #000;\n}\n\n.bs-tooltip-start, .bs-tooltip-auto[data-popper-placement^=left] {\n  padding: 0 0.4rem;\n}\n.bs-tooltip-start .tooltip-arrow, .bs-tooltip-auto[data-popper-placement^=left] .tooltip-arrow {\n  right: 0;\n  width: 0.4rem;\n  height: 0.8rem;\n}\n.bs-tooltip-start .tooltip-arrow::before, .bs-tooltip-auto[data-popper-placement^=left] .tooltip-arrow::before {\n  left: -1px;\n  border-width: 0.4rem 0 0.4rem 0.4rem;\n  border-left-color: #000;\n}\n\n.tooltip-inner {\n  max-width: 200px;\n  padding: 0.25rem 0.5rem;\n  color: #fff;\n  text-align: center;\n  background-color: #000;\n  border-radius: 0.25rem;\n}\n\n.popover {\n  position: absolute;\n  top: 0;\n  left: 0 /* rtl:ignore */;\n  z-index: 1070;\n  display: block;\n  max-width: 276px;\n  font-family: var(--bs-font-sans-serif);\n  font-style: normal;\n  font-weight: 400;\n  line-height: 1.5;\n  text-align: left;\n  text-align: start;\n  text-decoration: none;\n  text-shadow: none;\n  text-transform: none;\n  letter-spacing: normal;\n  word-break: normal;\n  word-spacing: normal;\n  white-space: normal;\n  line-break: auto;\n  font-size: 0.875rem;\n  word-wrap: break-word;\n  background-color: #fff;\n  background-clip: padding-box;\n  border: 1px solid rgba(0, 0, 0, 0.2);\n  border-radius: 0.3rem;\n}\n.popover .popover-arrow {\n  position: absolute;\n  display: block;\n  width: 1rem;\n  height: 0.5rem;\n}\n.popover .popover-arrow::before, .popover .popover-arrow::after {\n  position: absolute;\n  display: block;\n  content: \"\";\n  border-color: transparent;\n  border-style: solid;\n}\n\n.bs-popover-top > .popover-arrow, .bs-popover-auto[data-popper-placement^=top] > .popover-arrow {\n  bottom: calc(-0.5rem - 1px);\n}\n.bs-popover-top > .popover-arrow::before, .bs-popover-auto[data-popper-placement^=top] > .popover-arrow::before {\n  bottom: 0;\n  border-width: 0.5rem 0.5rem 0;\n  border-top-color: rgba(0, 0, 0, 0.25);\n}\n.bs-popover-top > .popover-arrow::after, .bs-popover-auto[data-popper-placement^=top] > .popover-arrow::after {\n  bottom: 1px;\n  border-width: 0.5rem 0.5rem 0;\n  border-top-color: #fff;\n}\n\n.bs-popover-end > .popover-arrow, .bs-popover-auto[data-popper-placement^=right] > .popover-arrow {\n  left: calc(-0.5rem - 1px);\n  width: 0.5rem;\n  height: 1rem;\n}\n.bs-popover-end > .popover-arrow::before, .bs-popover-auto[data-popper-placement^=right] > .popover-arrow::before {\n  left: 0;\n  border-width: 0.5rem 0.5rem 0.5rem 0;\n  border-right-color: rgba(0, 0, 0, 0.25);\n}\n.bs-popover-end > .popover-arrow::after, .bs-popover-auto[data-popper-placement^=right] > .popover-arrow::after {\n  left: 1px;\n  border-width: 0.5rem 0.5rem 0.5rem 0;\n  border-right-color: #fff;\n}\n\n.bs-popover-bottom > .popover-arrow, .bs-popover-auto[data-popper-placement^=bottom] > .popover-arrow {\n  top: calc(-0.5rem - 1px);\n}\n.bs-popover-bottom > .popover-arrow::before, .bs-popover-auto[data-popper-placement^=bottom] > .popover-arrow::before {\n  top: 0;\n  border-width: 0 0.5rem 0.5rem 0.5rem;\n  border-bottom-color: rgba(0, 0, 0, 0.25);\n}\n.bs-popover-bottom > .popover-arrow::after, .bs-popover-auto[data-popper-placement^=bottom] > .popover-arrow::after {\n  top: 1px;\n  border-width: 0 0.5rem 0.5rem 0.5rem;\n  border-bottom-color: #fff;\n}\n.bs-popover-bottom .popover-header::before, .bs-popover-auto[data-popper-placement^=bottom] .popover-header::before {\n  position: absolute;\n  top: 0;\n  left: 50%;\n  display: block;\n  width: 1rem;\n  margin-left: -0.5rem;\n  content: \"\";\n  border-bottom: 1px solid #f0f0f0;\n}\n\n.bs-popover-start > .popover-arrow, .bs-popover-auto[data-popper-placement^=left] > .popover-arrow {\n  right: calc(-0.5rem - 1px);\n  width: 0.5rem;\n  height: 1rem;\n}\n.bs-popover-start > .popover-arrow::before, .bs-popover-auto[data-popper-placement^=left] > .popover-arrow::before {\n  right: 0;\n  border-width: 0.5rem 0 0.5rem 0.5rem;\n  border-left-color: rgba(0, 0, 0, 0.25);\n}\n.bs-popover-start > .popover-arrow::after, .bs-popover-auto[data-popper-placement^=left] > .popover-arrow::after {\n  right: 1px;\n  border-width: 0.5rem 0 0.5rem 0.5rem;\n  border-left-color: #fff;\n}\n\n.popover-header {\n  padding: 0.5rem 1rem;\n  margin-bottom: 0;\n  font-size: 1rem;\n  background-color: #f0f0f0;\n  border-bottom: 1px solid rgba(0, 0, 0, 0.2);\n  border-top-left-radius: calc(0.3rem - 1px);\n  border-top-right-radius: calc(0.3rem - 1px);\n}\n.popover-header:empty {\n  display: none;\n}\n\n.popover-body {\n  padding: 1rem 1rem;\n  color: #212529;\n}\n\n.carousel {\n  position: relative;\n}\n\n.carousel.pointer-event {\n  touch-action: pan-y;\n}\n\n.carousel-inner {\n  position: relative;\n  width: 100%;\n  overflow: hidden;\n}\n.carousel-inner::after {\n  display: block;\n  clear: both;\n  content: \"\";\n}\n\n.carousel-item {\n  position: relative;\n  display: none;\n  float: left;\n  width: 100%;\n  margin-right: -100%;\n  -webkit-backface-visibility: hidden;\n  backface-visibility: hidden;\n  transition: transform 0.6s ease-in-out;\n}\n@media (prefers-reduced-motion: reduce) {\n  .carousel-item {\n    transition: none;\n  }\n}\n\n.carousel-item.active,\n.carousel-item-next,\n.carousel-item-prev {\n  display: block;\n}\n\n/* rtl:begin:ignore */\n.carousel-item-next:not(.carousel-item-start),\n.active.carousel-item-end {\n  transform: translateX(100%);\n}\n\n.carousel-item-prev:not(.carousel-item-end),\n.active.carousel-item-start {\n  transform: translateX(-100%);\n}\n\n/* rtl:end:ignore */\n.carousel-fade .carousel-item {\n  opacity: 0;\n  transition-property: opacity;\n  transform: none;\n}\n.carousel-fade .carousel-item.active,\n.carousel-fade .carousel-item-next.carousel-item-start,\n.carousel-fade .carousel-item-prev.carousel-item-end {\n  z-index: 1;\n  opacity: 1;\n}\n.carousel-fade .active.carousel-item-start,\n.carousel-fade .active.carousel-item-end {\n  z-index: 0;\n  opacity: 0;\n  transition: opacity 0s 0.6s;\n}\n@media (prefers-reduced-motion: reduce) {\n  .carousel-fade .active.carousel-item-start,\n.carousel-fade .active.carousel-item-end {\n    transition: none;\n  }\n}\n\n.carousel-control-prev,\n.carousel-control-next {\n  position: absolute;\n  top: 0;\n  bottom: 0;\n  z-index: 1;\n  display: flex;\n  align-items: center;\n  justify-content: center;\n  width: 15%;\n  padding: 0;\n  color: #fff;\n  text-align: center;\n  background: none;\n  border: 0;\n  opacity: 0.5;\n  transition: opacity 0.15s ease;\n}\n@media (prefers-reduced-motion: reduce) {\n  .carousel-control-prev,\n.carousel-control-next {\n    transition: none;\n  }\n}\n.carousel-control-prev:hover, .carousel-control-prev:focus,\n.carousel-control-next:hover,\n.carousel-control-next:focus {\n  color: #fff;\n  text-decoration: none;\n  outline: 0;\n  opacity: 0.9;\n}\n\n.carousel-control-prev {\n  left: 0;\n}\n\n.carousel-control-next {\n  right: 0;\n}\n\n.carousel-control-prev-icon,\n.carousel-control-next-icon {\n  display: inline-block;\n  width: 2rem;\n  height: 2rem;\n  background-repeat: no-repeat;\n  background-position: 50%;\n  background-size: 100% 100%;\n}\n\n/* rtl:options: {\n  \"autoRename\": true,\n  \"stringMap\":[ {\n    \"name\"    : \"prev-next\",\n    \"search\"  : \"prev\",\n    \"replace\" : \"next\"\n  } ]\n} */\n.carousel-control-prev-icon {\n  background-image: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23fff'%3e%3cpath d='M11.354 1.646a.5.5 0 0 1 0 .708L5.707 8l5.647 5.646a.5.5 0 0 1-.708.708l-6-6a.5.5 0 0 1 0-.708l6-6a.5.5 0 0 1 .708 0z'/%3e%3c/svg%3e\");\n}\n\n.carousel-control-next-icon {\n  background-image: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23fff'%3e%3cpath d='M4.646 1.646a.5.5 0 0 1 .708 0l6 6a.5.5 0 0 1 0 .708l-6 6a.5.5 0 0 1-.708-.708L10.293 8 4.646 2.354a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e\");\n}\n\n.carousel-indicators {\n  position: absolute;\n  right: 0;\n  bottom: 0;\n  left: 0;\n  z-index: 2;\n  display: flex;\n  justify-content: center;\n  padding: 0;\n  margin-right: 15%;\n  margin-bottom: 1rem;\n  margin-left: 15%;\n  list-style: none;\n}\n.carousel-indicators [data-bs-target] {\n  box-sizing: content-box;\n  flex: 0 1 auto;\n  width: 30px;\n  height: 3px;\n  padding: 0;\n  margin-right: 3px;\n  margin-left: 3px;\n  text-indent: -999px;\n  cursor: pointer;\n  background-color: #fff;\n  background-clip: padding-box;\n  border: 0;\n  border-top: 10px solid transparent;\n  border-bottom: 10px solid transparent;\n  opacity: 0.5;\n  transition: opacity 0.6s ease;\n}\n@media (prefers-reduced-motion: reduce) {\n  .carousel-indicators [data-bs-target] {\n    transition: none;\n  }\n}\n.carousel-indicators .active {\n  opacity: 1;\n}\n\n.carousel-caption {\n  position: absolute;\n  right: 15%;\n  bottom: 1.25rem;\n  left: 15%;\n  padding-top: 1.25rem;\n  padding-bottom: 1.25rem;\n  color: #fff;\n  text-align: center;\n}\n\n.carousel-dark .carousel-control-prev-icon,\n.carousel-dark .carousel-control-next-icon {\n  filter: invert(1) grayscale(100);\n}\n.carousel-dark .carousel-indicators [data-bs-target] {\n  background-color: #000;\n}\n.carousel-dark .carousel-caption {\n  color: #000;\n}\n\n@-webkit-keyframes spinner-border {\n  to {\n    transform: rotate(360deg) /* rtl:ignore */;\n  }\n}\n\n@keyframes spinner-border {\n  to {\n    transform: rotate(360deg) /* rtl:ignore */;\n  }\n}\n.spinner-border {\n  display: inline-block;\n  width: 2rem;\n  height: 2rem;\n  vertical-align: -0.125em;\n  border: 0.25em solid currentColor;\n  border-right-color: transparent;\n  border-radius: 50%;\n  -webkit-animation: 0.75s linear infinite spinner-border;\n  animation: 0.75s linear infinite spinner-border;\n}\n\n.spinner-border-sm {\n  width: 1rem;\n  height: 1rem;\n  border-width: 0.2em;\n}\n\n@-webkit-keyframes spinner-grow {\n  0% {\n    transform: scale(0);\n  }\n  50% {\n    opacity: 1;\n    transform: none;\n  }\n}\n\n@keyframes spinner-grow {\n  0% {\n    transform: scale(0);\n  }\n  50% {\n    opacity: 1;\n    transform: none;\n  }\n}\n.spinner-grow {\n  display: inline-block;\n  width: 2rem;\n  height: 2rem;\n  vertical-align: -0.125em;\n  background-color: currentColor;\n  border-radius: 50%;\n  opacity: 0;\n  -webkit-animation: 0.75s linear infinite spinner-grow;\n  animation: 0.75s linear infinite spinner-grow;\n}\n\n.spinner-grow-sm {\n  width: 1rem;\n  height: 1rem;\n}\n\n@media (prefers-reduced-motion: reduce) {\n  .spinner-border,\n.spinner-grow {\n    -webkit-animation-duration: 1.5s;\n    animation-duration: 1.5s;\n  }\n}\n.offcanvas {\n  position: fixed;\n  bottom: 0;\n  z-index: 1045;\n  display: flex;\n  flex-direction: column;\n  max-width: 100%;\n  visibility: hidden;\n  background-color: #fff;\n  background-clip: padding-box;\n  outline: 0;\n  transition: transform 0.3s ease-in-out;\n}\n@media (prefers-reduced-motion: reduce) {\n  .offcanvas {\n    transition: none;\n  }\n}\n\n.offcanvas-backdrop {\n  position: fixed;\n  top: 0;\n  left: 0;\n  z-index: 1040;\n  width: 100vw;\n  height: 100vh;\n  background-color: #000;\n}\n.offcanvas-backdrop.fade {\n  opacity: 0;\n}\n.offcanvas-backdrop.show {\n  opacity: 0.5;\n}\n\n.offcanvas-header {\n  display: flex;\n  align-items: center;\n  justify-content: space-between;\n  padding: 1rem 1rem;\n}\n.offcanvas-header .btn-close {\n  padding: 0.5rem 0.5rem;\n  margin-top: -0.5rem;\n  margin-right: -0.5rem;\n  margin-bottom: -0.5rem;\n}\n\n.offcanvas-title {\n  margin-bottom: 0;\n  line-height: 1.5;\n}\n\n.offcanvas-body {\n  flex-grow: 1;\n  padding: 1rem 1rem;\n  overflow-y: auto;\n}\n\n.offcanvas-start {\n  top: 0;\n  left: 0;\n  width: 400px;\n  border-right: 1px solid rgba(0, 0, 0, 0.2);\n  transform: translateX(-100%);\n}\n\n.offcanvas-end {\n  top: 0;\n  right: 0;\n  width: 400px;\n  border-left: 1px solid rgba(0, 0, 0, 0.2);\n  transform: translateX(100%);\n}\n\n.offcanvas-top {\n  top: 0;\n  right: 0;\n  left: 0;\n  height: 30vh;\n  max-height: 100%;\n  border-bottom: 1px solid rgba(0, 0, 0, 0.2);\n  transform: translateY(-100%);\n}\n\n.offcanvas-bottom {\n  right: 0;\n  left: 0;\n  height: 30vh;\n  max-height: 100%;\n  border-top: 1px solid rgba(0, 0, 0, 0.2);\n  transform: translateY(100%);\n}\n\n.offcanvas.show {\n  transform: none;\n}\n\n.placeholder {\n  display: inline-block;\n  min-height: 1em;\n  vertical-align: middle;\n  cursor: wait;\n  background-color: currentColor;\n  opacity: 0.5;\n}\n.placeholder.btn::before {\n  display: inline-block;\n  content: \"\";\n}\n\n.placeholder-xs {\n  min-height: 0.6em;\n}\n\n.placeholder-sm {\n  min-height: 0.8em;\n}\n\n.placeholder-lg {\n  min-height: 1.2em;\n}\n\n.placeholder-glow .placeholder {\n  -webkit-animation: placeholder-glow 2s ease-in-out infinite;\n  animation: placeholder-glow 2s ease-in-out infinite;\n}\n\n@-webkit-keyframes placeholder-glow {\n  50% {\n    opacity: 0.2;\n  }\n}\n\n@keyframes placeholder-glow {\n  50% {\n    opacity: 0.2;\n  }\n}\n.placeholder-wave {\n  -webkit-mask-image: linear-gradient(130deg, #000 55%, rgba(0, 0, 0, 0.8) 75%, #000 95%);\n  mask-image: linear-gradient(130deg, #000 55%, rgba(0, 0, 0, 0.8) 75%, #000 95%);\n  -webkit-mask-size: 200% 100%;\n  mask-size: 200% 100%;\n  -webkit-animation: placeholder-wave 2s linear infinite;\n  animation: placeholder-wave 2s linear infinite;\n}\n\n@-webkit-keyframes placeholder-wave {\n  100% {\n    -webkit-mask-position: -200% 0%;\n    mask-position: -200% 0%;\n  }\n}\n\n@keyframes placeholder-wave {\n  100% {\n    -webkit-mask-position: -200% 0%;\n    mask-position: -200% 0%;\n  }\n}\n.clearfix::after {\n  display: block;\n  clear: both;\n  content: \"\";\n}\n\n.link-primary {\n  color: #0d6efd;\n}\n.link-primary:hover, .link-primary:focus {\n  color: #0a58ca;\n}\n\n.link-secondary {\n  color: #6c757d;\n}\n.link-secondary:hover, .link-secondary:focus {\n  color: #565e64;\n}\n\n.link-success {\n  color: #198754;\n}\n.link-success:hover, .link-success:focus {\n  color: #146c43;\n}\n\n.link-info {\n  color: #0dcaf0;\n}\n.link-info:hover, .link-info:focus {\n  color: #3dd5f3;\n}\n\n.link-warning {\n  color: #ffc107;\n}\n.link-warning:hover, .link-warning:focus {\n  color: #ffcd39;\n}\n\n.link-danger {\n  color: #dc3545;\n}\n.link-danger:hover, .link-danger:focus {\n  color: #b02a37;\n}\n\n.link-light {\n  color: #f8f9fa;\n}\n.link-light:hover, .link-light:focus {\n  color: #f9fafb;\n}\n\n.link-dark {\n  color: #212529;\n}\n.link-dark:hover, .link-dark:focus {\n  color: #1a1e21;\n}\n\n.ratio {\n  position: relative;\n  width: 100%;\n}\n.ratio::before {\n  display: block;\n  padding-top: var(--bs-aspect-ratio);\n  content: \"\";\n}\n.ratio > * {\n  position: absolute;\n  top: 0;\n  left: 0;\n  width: 100%;\n  height: 100%;\n}\n\n.ratio-1x1 {\n  --bs-aspect-ratio: 100%;\n}\n\n.ratio-4x3 {\n  --bs-aspect-ratio: 75%;\n}\n\n.ratio-16x9 {\n  --bs-aspect-ratio: 56.25%;\n}\n\n.ratio-21x9 {\n  --bs-aspect-ratio: 42.8571428571%;\n}\n\n.fixed-top {\n  position: fixed;\n  top: 0;\n  right: 0;\n  left: 0;\n  z-index: 1030;\n}\n\n.fixed-bottom {\n  position: fixed;\n  right: 0;\n  bottom: 0;\n  left: 0;\n  z-index: 1030;\n}\n\n.sticky-top {\n  position: -webkit-sticky;\n  position: sticky;\n  top: 0;\n  z-index: 1020;\n}\n\n@media (min-width: 576px) {\n  .sticky-sm-top {\n    position: -webkit-sticky;\n    position: sticky;\n    top: 0;\n    z-index: 1020;\n  }\n}\n@media (min-width: 768px) {\n  .sticky-md-top {\n    position: -webkit-sticky;\n    position: sticky;\n    top: 0;\n    z-index: 1020;\n  }\n}\n@media (min-width: 992px) {\n  .sticky-lg-top {\n    position: -webkit-sticky;\n    position: sticky;\n    top: 0;\n    z-index: 1020;\n  }\n}\n@media (min-width: 1200px) {\n  .sticky-xl-top {\n    position: -webkit-sticky;\n    position: sticky;\n    top: 0;\n    z-index: 1020;\n  }\n}\n@media (min-width: 1400px) {\n  .sticky-xxl-top {\n    position: -webkit-sticky;\n    position: sticky;\n    top: 0;\n    z-index: 1020;\n  }\n}\n.hstack {\n  display: flex;\n  flex-direction: row;\n  align-items: center;\n  align-self: stretch;\n}\n\n.vstack {\n  display: flex;\n  flex: 1 1 auto;\n  flex-direction: column;\n  align-self: stretch;\n}\n\n.visually-hidden,\n.visually-hidden-focusable:not(:focus):not(:focus-within) {\n  position: absolute !important;\n  width: 1px !important;\n  height: 1px !important;\n  padding: 0 !important;\n  margin: -1px !important;\n  overflow: hidden !important;\n  clip: rect(0, 0, 0, 0) !important;\n  white-space: nowrap !important;\n  border: 0 !important;\n}\n\n.stretched-link::after {\n  position: absolute;\n  top: 0;\n  right: 0;\n  bottom: 0;\n  left: 0;\n  z-index: 1;\n  content: \"\";\n}\n\n.text-truncate {\n  overflow: hidden;\n  text-overflow: ellipsis;\n  white-space: nowrap;\n}\n\n.vr {\n  display: inline-block;\n  align-self: stretch;\n  width: 1px;\n  min-height: 1em;\n  background-color: currentColor;\n  opacity: 0.25;\n}\n\n.align-baseline {\n  vertical-align: baseline !important;\n}\n\n.align-top {\n  vertical-align: top !important;\n}\n\n.align-middle {\n  vertical-align: middle !important;\n}\n\n.align-bottom {\n  vertical-align: bottom !important;\n}\n\n.align-text-bottom {\n  vertical-align: text-bottom !important;\n}\n\n.align-text-top {\n  vertical-align: text-top !important;\n}\n\n.float-start {\n  float: left !important;\n}\n\n.float-end {\n  float: right !important;\n}\n\n.float-none {\n  float: none !important;\n}\n\n.opacity-0 {\n  opacity: 0 !important;\n}\n\n.opacity-25 {\n  opacity: 0.25 !important;\n}\n\n.opacity-50 {\n  opacity: 0.5 !important;\n}\n\n.opacity-75 {\n  opacity: 0.75 !important;\n}\n\n.opacity-100 {\n  opacity: 1 !important;\n}\n\n.overflow-auto {\n  overflow: auto !important;\n}\n\n.overflow-hidden {\n  overflow: hidden !important;\n}\n\n.overflow-visible {\n  overflow: visible !important;\n}\n\n.overflow-scroll {\n  overflow: scroll !important;\n}\n\n.d-inline {\n  display: inline !important;\n}\n\n.d-inline-block {\n  display: inline-block !important;\n}\n\n.d-block {\n  display: block !important;\n}\n\n.d-grid {\n  display: grid !important;\n}\n\n.d-table {\n  display: table !important;\n}\n\n.d-table-row {\n  display: table-row !important;\n}\n\n.d-table-cell {\n  display: table-cell !important;\n}\n\n.d-flex {\n  display: flex !important;\n}\n\n.d-inline-flex {\n  display: inline-flex !important;\n}\n\n.d-none {\n  display: none !important;\n}\n\n.shadow {\n  box-shadow: 0 0.5rem 1rem rgba(0, 0, 0, 0.15) !important;\n}\n\n.shadow-sm {\n  box-shadow: 0 0.125rem 0.25rem rgba(0, 0, 0, 0.075) !important;\n}\n\n.shadow-lg {\n  box-shadow: 0 1rem 3rem rgba(0, 0, 0, 0.175) !important;\n}\n\n.shadow-none {\n  box-shadow: none !important;\n}\n\n.position-static {\n  position: static !important;\n}\n\n.position-relative {\n  position: relative !important;\n}\n\n.position-absolute {\n  position: absolute !important;\n}\n\n.position-fixed {\n  position: fixed !important;\n}\n\n.position-sticky {\n  position: -webkit-sticky !important;\n  position: sticky !important;\n}\n\n.top-0 {\n  top: 0 !important;\n}\n\n.top-50 {\n  top: 50% !important;\n}\n\n.top-100 {\n  top: 100% !important;\n}\n\n.bottom-0 {\n  bottom: 0 !important;\n}\n\n.bottom-50 {\n  bottom: 50% !important;\n}\n\n.bottom-100 {\n  bottom: 100% !important;\n}\n\n.start-0 {\n  left: 0 !important;\n}\n\n.start-50 {\n  left: 50% !important;\n}\n\n.start-100 {\n  left: 100% !important;\n}\n\n.end-0 {\n  right: 0 !important;\n}\n\n.end-50 {\n  right: 50% !important;\n}\n\n.end-100 {\n  right: 100% !important;\n}\n\n.translate-middle {\n  transform: translate(-50%, -50%) !important;\n}\n\n.translate-middle-x {\n  transform: translateX(-50%) !important;\n}\n\n.translate-middle-y {\n  transform: translateY(-50%) !important;\n}\n\n.border {\n  border: 1px solid #dee2e6 !important;\n}\n\n.border-0 {\n  border: 0 !important;\n}\n\n.border-top {\n  border-top: 1px solid #dee2e6 !important;\n}\n\n.border-top-0 {\n  border-top: 0 !important;\n}\n\n.border-end {\n  border-right: 1px solid #dee2e6 !important;\n}\n\n.border-end-0 {\n  border-right: 0 !important;\n}\n\n.border-bottom {\n  border-bottom: 1px solid #dee2e6 !important;\n}\n\n.border-bottom-0 {\n  border-bottom: 0 !important;\n}\n\n.border-start {\n  border-left: 1px solid #dee2e6 !important;\n}\n\n.border-start-0 {\n  border-left: 0 !important;\n}\n\n.border-primary {\n  border-color: #0d6efd !important;\n}\n\n.border-secondary {\n  border-color: #6c757d !important;\n}\n\n.border-success {\n  border-color: #198754 !important;\n}\n\n.border-info {\n  border-color: #0dcaf0 !important;\n}\n\n.border-warning {\n  border-color: #ffc107 !important;\n}\n\n.border-danger {\n  border-color: #dc3545 !important;\n}\n\n.border-light {\n  border-color: #f8f9fa !important;\n}\n\n.border-dark {\n  border-color: #212529 !important;\n}\n\n.border-white {\n  border-color: #fff !important;\n}\n\n.border-1 {\n  border-width: 1px !important;\n}\n\n.border-2 {\n  border-width: 2px !important;\n}\n\n.border-3 {\n  border-width: 3px !important;\n}\n\n.border-4 {\n  border-width: 4px !important;\n}\n\n.border-5 {\n  border-width: 5px !important;\n}\n\n.w-25 {\n  width: 25% !important;\n}\n\n.w-50 {\n  width: 50% !important;\n}\n\n.w-75 {\n  width: 75% !important;\n}\n\n.w-100 {\n  width: 100% !important;\n}\n\n.w-auto {\n  width: auto !important;\n}\n\n.mw-100 {\n  max-width: 100% !important;\n}\n\n.vw-100 {\n  width: 100vw !important;\n}\n\n.min-vw-100 {\n  min-width: 100vw !important;\n}\n\n.h-25 {\n  height: 25% !important;\n}\n\n.h-50 {\n  height: 50% !important;\n}\n\n.h-75 {\n  height: 75% !important;\n}\n\n.h-100 {\n  height: 100% !important;\n}\n\n.h-auto {\n  height: auto !important;\n}\n\n.mh-100 {\n  max-height: 100% !important;\n}\n\n.vh-100 {\n  height: 100vh !important;\n}\n\n.min-vh-100 {\n  min-height: 100vh !important;\n}\n\n.flex-fill {\n  flex: 1 1 auto !important;\n}\n\n.flex-row {\n  flex-direction: row !important;\n}\n\n.flex-column {\n  flex-direction: column !important;\n}\n\n.flex-row-reverse {\n  flex-direction: row-reverse !important;\n}\n\n.flex-column-reverse {\n  flex-direction: column-reverse !important;\n}\n\n.flex-grow-0 {\n  flex-grow: 0 !important;\n}\n\n.flex-grow-1 {\n  flex-grow: 1 !important;\n}\n\n.flex-shrink-0 {\n  flex-shrink: 0 !important;\n}\n\n.flex-shrink-1 {\n  flex-shrink: 1 !important;\n}\n\n.flex-wrap {\n  flex-wrap: wrap !important;\n}\n\n.flex-nowrap {\n  flex-wrap: nowrap !important;\n}\n\n.flex-wrap-reverse {\n  flex-wrap: wrap-reverse !important;\n}\n\n.gap-0 {\n  gap: 0 !important;\n}\n\n.gap-1 {\n  gap: 0.25rem !important;\n}\n\n.gap-2 {\n  gap: 0.5rem !important;\n}\n\n.gap-3 {\n  gap: 1rem !important;\n}\n\n.gap-4 {\n  gap: 1.5rem !important;\n}\n\n.gap-5 {\n  gap: 3rem !important;\n}\n\n.justify-content-start {\n  justify-content: flex-start !important;\n}\n\n.justify-content-end {\n  justify-content: flex-end !important;\n}\n\n.justify-content-center {\n  justify-content: center !important;\n}\n\n.justify-content-between {\n  justify-content: space-between !important;\n}\n\n.justify-content-around {\n  justify-content: space-around !important;\n}\n\n.justify-content-evenly {\n  justify-content: space-evenly !important;\n}\n\n.align-items-start {\n  align-items: flex-start !important;\n}\n\n.align-items-end {\n  align-items: flex-end !important;\n}\n\n.align-items-center {\n  align-items: center !important;\n}\n\n.align-items-baseline {\n  align-items: baseline !important;\n}\n\n.align-items-stretch {\n  align-items: stretch !important;\n}\n\n.align-content-start {\n  align-content: flex-start !important;\n}\n\n.align-content-end {\n  align-content: flex-end !important;\n}\n\n.align-content-center {\n  align-content: center !important;\n}\n\n.align-content-between {\n  align-content: space-between !important;\n}\n\n.align-content-around {\n  align-content: space-around !important;\n}\n\n.align-content-stretch {\n  align-content: stretch !important;\n}\n\n.align-self-auto {\n  align-self: auto !important;\n}\n\n.align-self-start {\n  align-self: flex-start !important;\n}\n\n.align-self-end {\n  align-self: flex-end !important;\n}\n\n.align-self-center {\n  align-self: center !important;\n}\n\n.align-self-baseline {\n  align-self: baseline !important;\n}\n\n.align-self-stretch {\n  align-self: stretch !important;\n}\n\n.order-first {\n  order: -1 !important;\n}\n\n.order-0 {\n  order: 0 !important;\n}\n\n.order-1 {\n  order: 1 !important;\n}\n\n.order-2 {\n  order: 2 !important;\n}\n\n.order-3 {\n  order: 3 !important;\n}\n\n.order-4 {\n  order: 4 !important;\n}\n\n.order-5 {\n  order: 5 !important;\n}\n\n.order-last {\n  order: 6 !important;\n}\n\n.m-0 {\n  margin: 0 !important;\n}\n\n.m-1 {\n  margin: 0.25rem !important;\n}\n\n.m-2 {\n  margin: 0.5rem !important;\n}\n\n.m-3 {\n  margin: 1rem !important;\n}\n\n.m-4 {\n  margin: 1.5rem !important;\n}\n\n.m-5 {\n  margin: 3rem !important;\n}\n\n.m-auto {\n  margin: auto !important;\n}\n\n.mx-0 {\n  margin-right: 0 !important;\n  margin-left: 0 !important;\n}\n\n.mx-1 {\n  margin-right: 0.25rem !important;\n  margin-left: 0.25rem !important;\n}\n\n.mx-2 {\n  margin-right: 0.5rem !important;\n  margin-left: 0.5rem !important;\n}\n\n.mx-3 {\n  margin-right: 1rem !important;\n  margin-left: 1rem !important;\n}\n\n.mx-4 {\n  margin-right: 1.5rem !important;\n  margin-left: 1.5rem !important;\n}\n\n.mx-5 {\n  margin-right: 3rem !important;\n  margin-left: 3rem !important;\n}\n\n.mx-auto {\n  margin-right: auto !important;\n  margin-left: auto !important;\n}\n\n.my-0 {\n  margin-top: 0 !important;\n  margin-bottom: 0 !important;\n}\n\n.my-1 {\n  margin-top: 0.25rem !important;\n  margin-bottom: 0.25rem !important;\n}\n\n.my-2 {\n  margin-top: 0.5rem !important;\n  margin-bottom: 0.5rem !important;\n}\n\n.my-3 {\n  margin-top: 1rem !important;\n  margin-bottom: 1rem !important;\n}\n\n.my-4 {\n  margin-top: 1.5rem !important;\n  margin-bottom: 1.5rem !important;\n}\n\n.my-5 {\n  margin-top: 3rem !important;\n  margin-bottom: 3rem !important;\n}\n\n.my-auto {\n  margin-top: auto !important;\n  margin-bottom: auto !important;\n}\n\n.mt-0 {\n  margin-top: 0 !important;\n}\n\n.mt-1 {\n  margin-top: 0.25rem !important;\n}\n\n.mt-2 {\n  margin-top: 0.5rem !important;\n}\n\n.mt-3 {\n  margin-top: 1rem !important;\n}\n\n.mt-4 {\n  margin-top: 1.5rem !important;\n}\n\n.mt-5 {\n  margin-top: 3rem !important;\n}\n\n.mt-auto {\n  margin-top: auto !important;\n}\n\n.me-0 {\n  margin-right: 0 !important;\n}\n\n.me-1 {\n  margin-right: 0.25rem !important;\n}\n\n.me-2 {\n  margin-right: 0.5rem !important;\n}\n\n.me-3 {\n  margin-right: 1rem !important;\n}\n\n.me-4 {\n  margin-right: 1.5rem !important;\n}\n\n.me-5 {\n  margin-right: 3rem !important;\n}\n\n.me-auto {\n  margin-right: auto !important;\n}\n\n.mb-0 {\n  margin-bottom: 0 !important;\n}\n\n.mb-1 {\n  margin-bottom: 0.25rem !important;\n}\n\n.mb-2 {\n  margin-bottom: 0.5rem !important;\n}\n\n.mb-3 {\n  margin-bottom: 1rem !important;\n}\n\n.mb-4 {\n  margin-bottom: 1.5rem !important;\n}\n\n.mb-5 {\n  margin-bottom: 3rem !important;\n}\n\n.mb-auto {\n  margin-bottom: auto !important;\n}\n\n.ms-0 {\n  margin-left: 0 !important;\n}\n\n.ms-1 {\n  margin-left: 0.25rem !important;\n}\n\n.ms-2 {\n  margin-left: 0.5rem !important;\n}\n\n.ms-3 {\n  margin-left: 1rem !important;\n}\n\n.ms-4 {\n  margin-left: 1.5rem !important;\n}\n\n.ms-5 {\n  margin-left: 3rem !important;\n}\n\n.ms-auto {\n  margin-left: auto !important;\n}\n\n.p-0 {\n  padding: 0 !important;\n}\n\n.p-1 {\n  padding: 0.25rem !important;\n}\n\n.p-2 {\n  padding: 0.5rem !important;\n}\n\n.p-3 {\n  padding: 1rem !important;\n}\n\n.p-4 {\n  padding: 1.5rem !important;\n}\n\n.p-5 {\n  padding: 3rem !important;\n}\n\n.px-0 {\n  padding-right: 0 !important;\n  padding-left: 0 !important;\n}\n\n.px-1 {\n  padding-right: 0.25rem !important;\n  padding-left: 0.25rem !important;\n}\n\n.px-2 {\n  padding-right: 0.5rem !important;\n  padding-left: 0.5rem !important;\n}\n\n.px-3 {\n  padding-right: 1rem !important;\n  padding-left: 1rem !important;\n}\n\n.px-4 {\n  padding-right: 1.5rem !important;\n  padding-left: 1.5rem !important;\n}\n\n.px-5 {\n  padding-right: 3rem !important;\n  padding-left: 3rem !important;\n}\n\n.py-0 {\n  padding-top: 0 !important;\n  padding-bottom: 0 !important;\n}\n\n.py-1 {\n  padding-top: 0.25rem !important;\n  padding-bottom: 0.25rem !important;\n}\n\n.py-2 {\n  padding-top: 0.5rem !important;\n  padding-bottom: 0.5rem !important;\n}\n\n.py-3 {\n  padding-top: 1rem !important;\n  padding-bottom: 1rem !important;\n}\n\n.py-4 {\n  padding-top: 1.5rem !important;\n  padding-bottom: 1.5rem !important;\n}\n\n.py-5 {\n  padding-top: 3rem !important;\n  padding-bottom: 3rem !important;\n}\n\n.pt-0 {\n  padding-top: 0 !important;\n}\n\n.pt-1 {\n  padding-top: 0.25rem !important;\n}\n\n.pt-2 {\n  padding-top: 0.5rem !important;\n}\n\n.pt-3 {\n  padding-top: 1rem !important;\n}\n\n.pt-4 {\n  padding-top: 1.5rem !important;\n}\n\n.pt-5 {\n  padding-top: 3rem !important;\n}\n\n.pe-0 {\n  padding-right: 0 !important;\n}\n\n.pe-1 {\n  padding-right: 0.25rem !important;\n}\n\n.pe-2 {\n  padding-right: 0.5rem !important;\n}\n\n.pe-3 {\n  padding-right: 1rem !important;\n}\n\n.pe-4 {\n  padding-right: 1.5rem !important;\n}\n\n.pe-5 {\n  padding-right: 3rem !important;\n}\n\n.pb-0 {\n  padding-bottom: 0 !important;\n}\n\n.pb-1 {\n  padding-bottom: 0.25rem !important;\n}\n\n.pb-2 {\n  padding-bottom: 0.5rem !important;\n}\n\n.pb-3 {\n  padding-bottom: 1rem !important;\n}\n\n.pb-4 {\n  padding-bottom: 1.5rem !important;\n}\n\n.pb-5 {\n  padding-bottom: 3rem !important;\n}\n\n.ps-0 {\n  padding-left: 0 !important;\n}\n\n.ps-1 {\n  padding-left: 0.25rem !important;\n}\n\n.ps-2 {\n  padding-left: 0.5rem !important;\n}\n\n.ps-3 {\n  padding-left: 1rem !important;\n}\n\n.ps-4 {\n  padding-left: 1.5rem !important;\n}\n\n.ps-5 {\n  padding-left: 3rem !important;\n}\n\n.font-monospace {\n  font-family: var(--bs-font-monospace) !important;\n}\n\n.fs-1 {\n  font-size: calc(1.375rem + 1.5vw) !important;\n}\n\n.fs-2 {\n  font-size: calc(1.325rem + 0.9vw) !important;\n}\n\n.fs-3 {\n  font-size: calc(1.3rem + 0.6vw) !important;\n}\n\n.fs-4 {\n  font-size: calc(1.275rem + 0.3vw) !important;\n}\n\n.fs-5 {\n  font-size: 1.25rem !important;\n}\n\n.fs-6 {\n  font-size: 1rem !important;\n}\n\n.fst-italic {\n  font-style: italic !important;\n}\n\n.fst-normal {\n  font-style: normal !important;\n}\n\n.fw-light {\n  font-weight: 300 !important;\n}\n\n.fw-lighter {\n  font-weight: lighter !important;\n}\n\n.fw-normal {\n  font-weight: 400 !important;\n}\n\n.fw-bold {\n  font-weight: 700 !important;\n}\n\n.fw-bolder {\n  font-weight: bolder !important;\n}\n\n.lh-1 {\n  line-height: 1 !important;\n}\n\n.lh-sm {\n  line-height: 1.25 !important;\n}\n\n.lh-base {\n  line-height: 1.5 !important;\n}\n\n.lh-lg {\n  line-height: 2 !important;\n}\n\n.text-start {\n  text-align: left !important;\n}\n\n.text-end {\n  text-align: right !important;\n}\n\n.text-center {\n  text-align: center !important;\n}\n\n.text-decoration-none {\n  text-decoration: none !important;\n}\n\n.text-decoration-underline {\n  text-decoration: underline !important;\n}\n\n.text-decoration-line-through {\n  text-decoration: line-through !important;\n}\n\n.text-lowercase {\n  text-transform: lowercase !important;\n}\n\n.text-uppercase {\n  text-transform: uppercase !important;\n}\n\n.text-capitalize {\n  text-transform: capitalize !important;\n}\n\n.text-wrap {\n  white-space: normal !important;\n}\n\n.text-nowrap {\n  white-space: nowrap !important;\n}\n\n/* rtl:begin:remove */\n.text-break {\n  word-wrap: break-word !important;\n  word-break: break-word !important;\n}\n\n/* rtl:end:remove */\n.text-primary {\n  --bs-text-opacity: 1;\n  color: rgba(var(--bs-primary-rgb), var(--bs-text-opacity)) !important;\n}\n\n.text-secondary {\n  --bs-text-opacity: 1;\n  color: rgba(var(--bs-secondary-rgb), var(--bs-text-opacity)) !important;\n}\n\n.text-success {\n  --bs-text-opacity: 1;\n  color: rgba(var(--bs-success-rgb), var(--bs-text-opacity)) !important;\n}\n\n.text-info {\n  --bs-text-opacity: 1;\n  color: rgba(var(--bs-info-rgb), var(--bs-text-opacity)) !important;\n}\n\n.text-warning {\n  --bs-text-opacity: 1;\n  color: rgba(var(--bs-warning-rgb), var(--bs-text-opacity)) !important;\n}\n\n.text-danger {\n  --bs-text-opacity: 1;\n  color: rgba(var(--bs-danger-rgb), var(--bs-text-opacity)) !important;\n}\n\n.text-light {\n  --bs-text-opacity: 1;\n  color: rgba(var(--bs-light-rgb), var(--bs-text-opacity)) !important;\n}\n\n.text-dark {\n  --bs-text-opacity: 1;\n  color: rgba(var(--bs-dark-rgb), var(--bs-text-opacity)) !important;\n}\n\n.text-black {\n  --bs-text-opacity: 1;\n  color: rgba(var(--bs-black-rgb), var(--bs-text-opacity)) !important;\n}\n\n.text-white {\n  --bs-text-opacity: 1;\n  color: rgba(var(--bs-white-rgb), var(--bs-text-opacity)) !important;\n}\n\n.text-body {\n  --bs-text-opacity: 1;\n  color: rgba(var(--bs-body-color-rgb), var(--bs-text-opacity)) !important;\n}\n\n.text-muted {\n  --bs-text-opacity: 1;\n  color: #6c757d !important;\n}\n\n.text-black-50 {\n  --bs-text-opacity: 1;\n  color: rgba(0, 0, 0, 0.5) !important;\n}\n\n.text-white-50 {\n  --bs-text-opacity: 1;\n  color: rgba(255, 255, 255, 0.5) !important;\n}\n\n.text-reset {\n  --bs-text-opacity: 1;\n  color: inherit !important;\n}\n\n.text-opacity-25 {\n  --bs-text-opacity: 0.25;\n}\n\n.text-opacity-50 {\n  --bs-text-opacity: 0.5;\n}\n\n.text-opacity-75 {\n  --bs-text-opacity: 0.75;\n}\n\n.text-opacity-100 {\n  --bs-text-opacity: 1;\n}\n\n.bg-primary {\n  --bs-bg-opacity: 1;\n  background-color: rgba(var(--bs-primary-rgb), var(--bs-bg-opacity)) !important;\n}\n\n.bg-secondary {\n  --bs-bg-opacity: 1;\n  background-color: rgba(var(--bs-secondary-rgb), var(--bs-bg-opacity)) !important;\n}\n\n.bg-success {\n  --bs-bg-opacity: 1;\n  background-color: rgba(var(--bs-success-rgb), var(--bs-bg-opacity)) !important;\n}\n\n.bg-info {\n  --bs-bg-opacity: 1;\n  background-color: rgba(var(--bs-info-rgb), var(--bs-bg-opacity)) !important;\n}\n\n.bg-warning {\n  --bs-bg-opacity: 1;\n  background-color: rgba(var(--bs-warning-rgb), var(--bs-bg-opacity)) !important;\n}\n\n.bg-danger {\n  --bs-bg-opacity: 1;\n  background-color: rgba(var(--bs-danger-rgb), var(--bs-bg-opacity)) !important;\n}\n\n.bg-light {\n  --bs-bg-opacity: 1;\n  background-color: rgba(var(--bs-light-rgb), var(--bs-bg-opacity)) !important;\n}\n\n.bg-dark {\n  --bs-bg-opacity: 1;\n  background-color: rgba(var(--bs-dark-rgb), var(--bs-bg-opacity)) !important;\n}\n\n.bg-black {\n  --bs-bg-opacity: 1;\n  background-color: rgba(var(--bs-black-rgb), var(--bs-bg-opacity)) !important;\n}\n\n.bg-white {\n  --bs-bg-opacity: 1;\n  background-color: rgba(var(--bs-white-rgb), var(--bs-bg-opacity)) !important;\n}\n\n.bg-body {\n  --bs-bg-opacity: 1;\n  background-color: rgba(var(--bs-body-bg-rgb), var(--bs-bg-opacity)) !important;\n}\n\n.bg-transparent {\n  --bs-bg-opacity: 1;\n  background-color: transparent !important;\n}\n\n.bg-opacity-10 {\n  --bs-bg-opacity: 0.1;\n}\n\n.bg-opacity-25 {\n  --bs-bg-opacity: 0.25;\n}\n\n.bg-opacity-50 {\n  --bs-bg-opacity: 0.5;\n}\n\n.bg-opacity-75 {\n  --bs-bg-opacity: 0.75;\n}\n\n.bg-opacity-100 {\n  --bs-bg-opacity: 1;\n}\n\n.bg-gradient {\n  background-image: var(--bs-gradient) !important;\n}\n\n.user-select-all {\n  -webkit-user-select: all !important;\n  -moz-user-select: all !important;\n  user-select: all !important;\n}\n\n.user-select-auto {\n  -webkit-user-select: auto !important;\n  -moz-user-select: auto !important;\n  user-select: auto !important;\n}\n\n.user-select-none {\n  -webkit-user-select: none !important;\n  -moz-user-select: none !important;\n  user-select: none !important;\n}\n\n.pe-none {\n  pointer-events: none !important;\n}\n\n.pe-auto {\n  pointer-events: auto !important;\n}\n\n.rounded {\n  border-radius: 0.25rem !important;\n}\n\n.rounded-0 {\n  border-radius: 0 !important;\n}\n\n.rounded-1 {\n  border-radius: 0.2rem !important;\n}\n\n.rounded-2 {\n  border-radius: 0.25rem !important;\n}\n\n.rounded-3 {\n  border-radius: 0.3rem !important;\n}\n\n.rounded-circle {\n  border-radius: 50% !important;\n}\n\n.rounded-pill {\n  border-radius: 50rem !important;\n}\n\n.rounded-top {\n  border-top-left-radius: 0.25rem !important;\n  border-top-right-radius: 0.25rem !important;\n}\n\n.rounded-end {\n  border-top-right-radius: 0.25rem !important;\n  border-bottom-right-radius: 0.25rem !important;\n}\n\n.rounded-bottom {\n  border-bottom-right-radius: 0.25rem !important;\n  border-bottom-left-radius: 0.25rem !important;\n}\n\n.rounded-start {\n  border-bottom-left-radius: 0.25rem !important;\n  border-top-left-radius: 0.25rem !important;\n}\n\n.visible {\n  visibility: visible !important;\n}\n\n.invisible {\n  visibility: hidden !important;\n}\n\n@media (min-width: 576px) {\n  .float-sm-start {\n    float: left !important;\n  }\n\n  .float-sm-end {\n    float: right !important;\n  }\n\n  .float-sm-none {\n    float: none !important;\n  }\n\n  .d-sm-inline {\n    display: inline !important;\n  }\n\n  .d-sm-inline-block {\n    display: inline-block !important;\n  }\n\n  .d-sm-block {\n    display: block !important;\n  }\n\n  .d-sm-grid {\n    display: grid !important;\n  }\n\n  .d-sm-table {\n    display: table !important;\n  }\n\n  .d-sm-table-row {\n    display: table-row !important;\n  }\n\n  .d-sm-table-cell {\n    display: table-cell !important;\n  }\n\n  .d-sm-flex {\n    display: flex !important;\n  }\n\n  .d-sm-inline-flex {\n    display: inline-flex !important;\n  }\n\n  .d-sm-none {\n    display: none !important;\n  }\n\n  .flex-sm-fill {\n    flex: 1 1 auto !important;\n  }\n\n  .flex-sm-row {\n    flex-direction: row !important;\n  }\n\n  .flex-sm-column {\n    flex-direction: column !important;\n  }\n\n  .flex-sm-row-reverse {\n    flex-direction: row-reverse !important;\n  }\n\n  .flex-sm-column-reverse {\n    flex-direction: column-reverse !important;\n  }\n\n  .flex-sm-grow-0 {\n    flex-grow: 0 !important;\n  }\n\n  .flex-sm-grow-1 {\n    flex-grow: 1 !important;\n  }\n\n  .flex-sm-shrink-0 {\n    flex-shrink: 0 !important;\n  }\n\n  .flex-sm-shrink-1 {\n    flex-shrink: 1 !important;\n  }\n\n  .flex-sm-wrap {\n    flex-wrap: wrap !important;\n  }\n\n  .flex-sm-nowrap {\n    flex-wrap: nowrap !important;\n  }\n\n  .flex-sm-wrap-reverse {\n    flex-wrap: wrap-reverse !important;\n  }\n\n  .gap-sm-0 {\n    gap: 0 !important;\n  }\n\n  .gap-sm-1 {\n    gap: 0.25rem !important;\n  }\n\n  .gap-sm-2 {\n    gap: 0.5rem !important;\n  }\n\n  .gap-sm-3 {\n    gap: 1rem !important;\n  }\n\n  .gap-sm-4 {\n    gap: 1.5rem !important;\n  }\n\n  .gap-sm-5 {\n    gap: 3rem !important;\n  }\n\n  .justify-content-sm-start {\n    justify-content: flex-start !important;\n  }\n\n  .justify-content-sm-end {\n    justify-content: flex-end !important;\n  }\n\n  .justify-content-sm-center {\n    justify-content: center !important;\n  }\n\n  .justify-content-sm-between {\n    justify-content: space-between !important;\n  }\n\n  .justify-content-sm-around {\n    justify-content: space-around !important;\n  }\n\n  .justify-content-sm-evenly {\n    justify-content: space-evenly !important;\n  }\n\n  .align-items-sm-start {\n    align-items: flex-start !important;\n  }\n\n  .align-items-sm-end {\n    align-items: flex-end !important;\n  }\n\n  .align-items-sm-center {\n    align-items: center !important;\n  }\n\n  .align-items-sm-baseline {\n    align-items: baseline !important;\n  }\n\n  .align-items-sm-stretch {\n    align-items: stretch !important;\n  }\n\n  .align-content-sm-start {\n    align-content: flex-start !important;\n  }\n\n  .align-content-sm-end {\n    align-content: flex-end !important;\n  }\n\n  .align-content-sm-center {\n    align-content: center !important;\n  }\n\n  .align-content-sm-between {\n    align-content: space-between !important;\n  }\n\n  .align-content-sm-around {\n    align-content: space-around !important;\n  }\n\n  .align-content-sm-stretch {\n    align-content: stretch !important;\n  }\n\n  .align-self-sm-auto {\n    align-self: auto !important;\n  }\n\n  .align-self-sm-start {\n    align-self: flex-start !important;\n  }\n\n  .align-self-sm-end {\n    align-self: flex-end !important;\n  }\n\n  .align-self-sm-center {\n    align-self: center !important;\n  }\n\n  .align-self-sm-baseline {\n    align-self: baseline !important;\n  }\n\n  .align-self-sm-stretch {\n    align-self: stretch !important;\n  }\n\n  .order-sm-first {\n    order: -1 !important;\n  }\n\n  .order-sm-0 {\n    order: 0 !important;\n  }\n\n  .order-sm-1 {\n    order: 1 !important;\n  }\n\n  .order-sm-2 {\n    order: 2 !important;\n  }\n\n  .order-sm-3 {\n    order: 3 !important;\n  }\n\n  .order-sm-4 {\n    order: 4 !important;\n  }\n\n  .order-sm-5 {\n    order: 5 !important;\n  }\n\n  .order-sm-last {\n    order: 6 !important;\n  }\n\n  .m-sm-0 {\n    margin: 0 !important;\n  }\n\n  .m-sm-1 {\n    margin: 0.25rem !important;\n  }\n\n  .m-sm-2 {\n    margin: 0.5rem !important;\n  }\n\n  .m-sm-3 {\n    margin: 1rem !important;\n  }\n\n  .m-sm-4 {\n    margin: 1.5rem !important;\n  }\n\n  .m-sm-5 {\n    margin: 3rem !important;\n  }\n\n  .m-sm-auto {\n    margin: auto !important;\n  }\n\n  .mx-sm-0 {\n    margin-right: 0 !important;\n    margin-left: 0 !important;\n  }\n\n  .mx-sm-1 {\n    margin-right: 0.25rem !important;\n    margin-left: 0.25rem !important;\n  }\n\n  .mx-sm-2 {\n    margin-right: 0.5rem !important;\n    margin-left: 0.5rem !important;\n  }\n\n  .mx-sm-3 {\n    margin-right: 1rem !important;\n    margin-left: 1rem !important;\n  }\n\n  .mx-sm-4 {\n    margin-right: 1.5rem !important;\n    margin-left: 1.5rem !important;\n  }\n\n  .mx-sm-5 {\n    margin-right: 3rem !important;\n    margin-left: 3rem !important;\n  }\n\n  .mx-sm-auto {\n    margin-right: auto !important;\n    margin-left: auto !important;\n  }\n\n  .my-sm-0 {\n    margin-top: 0 !important;\n    margin-bottom: 0 !important;\n  }\n\n  .my-sm-1 {\n    margin-top: 0.25rem !important;\n    margin-bottom: 0.25rem !important;\n  }\n\n  .my-sm-2 {\n    margin-top: 0.5rem !important;\n    margin-bottom: 0.5rem !important;\n  }\n\n  .my-sm-3 {\n    margin-top: 1rem !important;\n    margin-bottom: 1rem !important;\n  }\n\n  .my-sm-4 {\n    margin-top: 1.5rem !important;\n    margin-bottom: 1.5rem !important;\n  }\n\n  .my-sm-5 {\n    margin-top: 3rem !important;\n    margin-bottom: 3rem !important;\n  }\n\n  .my-sm-auto {\n    margin-top: auto !important;\n    margin-bottom: auto !important;\n  }\n\n  .mt-sm-0 {\n    margin-top: 0 !important;\n  }\n\n  .mt-sm-1 {\n    margin-top: 0.25rem !important;\n  }\n\n  .mt-sm-2 {\n    margin-top: 0.5rem !important;\n  }\n\n  .mt-sm-3 {\n    margin-top: 1rem !important;\n  }\n\n  .mt-sm-4 {\n    margin-top: 1.5rem !important;\n  }\n\n  .mt-sm-5 {\n    margin-top: 3rem !important;\n  }\n\n  .mt-sm-auto {\n    margin-top: auto !important;\n  }\n\n  .me-sm-0 {\n    margin-right: 0 !important;\n  }\n\n  .me-sm-1 {\n    margin-right: 0.25rem !important;\n  }\n\n  .me-sm-2 {\n    margin-right: 0.5rem !important;\n  }\n\n  .me-sm-3 {\n    margin-right: 1rem !important;\n  }\n\n  .me-sm-4 {\n    margin-right: 1.5rem !important;\n  }\n\n  .me-sm-5 {\n    margin-right: 3rem !important;\n  }\n\n  .me-sm-auto {\n    margin-right: auto !important;\n  }\n\n  .mb-sm-0 {\n    margin-bottom: 0 !important;\n  }\n\n  .mb-sm-1 {\n    margin-bottom: 0.25rem !important;\n  }\n\n  .mb-sm-2 {\n    margin-bottom: 0.5rem !important;\n  }\n\n  .mb-sm-3 {\n    margin-bottom: 1rem !important;\n  }\n\n  .mb-sm-4 {\n    margin-bottom: 1.5rem !important;\n  }\n\n  .mb-sm-5 {\n    margin-bottom: 3rem !important;\n  }\n\n  .mb-sm-auto {\n    margin-bottom: auto !important;\n  }\n\n  .ms-sm-0 {\n    margin-left: 0 !important;\n  }\n\n  .ms-sm-1 {\n    margin-left: 0.25rem !important;\n  }\n\n  .ms-sm-2 {\n    margin-left: 0.5rem !important;\n  }\n\n  .ms-sm-3 {\n    margin-left: 1rem !important;\n  }\n\n  .ms-sm-4 {\n    margin-left: 1.5rem !important;\n  }\n\n  .ms-sm-5 {\n    margin-left: 3rem !important;\n  }\n\n  .ms-sm-auto {\n    margin-left: auto !important;\n  }\n\n  .p-sm-0 {\n    padding: 0 !important;\n  }\n\n  .p-sm-1 {\n    padding: 0.25rem !important;\n  }\n\n  .p-sm-2 {\n    padding: 0.5rem !important;\n  }\n\n  .p-sm-3 {\n    padding: 1rem !important;\n  }\n\n  .p-sm-4 {\n    padding: 1.5rem !important;\n  }\n\n  .p-sm-5 {\n    padding: 3rem !important;\n  }\n\n  .px-sm-0 {\n    padding-right: 0 !important;\n    padding-left: 0 !important;\n  }\n\n  .px-sm-1 {\n    padding-right: 0.25rem !important;\n    padding-left: 0.25rem !important;\n  }\n\n  .px-sm-2 {\n    padding-right: 0.5rem !important;\n    padding-left: 0.5rem !important;\n  }\n\n  .px-sm-3 {\n    padding-right: 1rem !important;\n    padding-left: 1rem !important;\n  }\n\n  .px-sm-4 {\n    padding-right: 1.5rem !important;\n    padding-left: 1.5rem !important;\n  }\n\n  .px-sm-5 {\n    padding-right: 3rem !important;\n    padding-left: 3rem !important;\n  }\n\n  .py-sm-0 {\n    padding-top: 0 !important;\n    padding-bottom: 0 !important;\n  }\n\n  .py-sm-1 {\n    padding-top: 0.25rem !important;\n    padding-bottom: 0.25rem !important;\n  }\n\n  .py-sm-2 {\n    padding-top: 0.5rem !important;\n    padding-bottom: 0.5rem !important;\n  }\n\n  .py-sm-3 {\n    padding-top: 1rem !important;\n    padding-bottom: 1rem !important;\n  }\n\n  .py-sm-4 {\n    padding-top: 1.5rem !important;\n    padding-bottom: 1.5rem !important;\n  }\n\n  .py-sm-5 {\n    padding-top: 3rem !important;\n    padding-bottom: 3rem !important;\n  }\n\n  .pt-sm-0 {\n    padding-top: 0 !important;\n  }\n\n  .pt-sm-1 {\n    padding-top: 0.25rem !important;\n  }\n\n  .pt-sm-2 {\n    padding-top: 0.5rem !important;\n  }\n\n  .pt-sm-3 {\n    padding-top: 1rem !important;\n  }\n\n  .pt-sm-4 {\n    padding-top: 1.5rem !important;\n  }\n\n  .pt-sm-5 {\n    padding-top: 3rem !important;\n  }\n\n  .pe-sm-0 {\n    padding-right: 0 !important;\n  }\n\n  .pe-sm-1 {\n    padding-right: 0.25rem !important;\n  }\n\n  .pe-sm-2 {\n    padding-right: 0.5rem !important;\n  }\n\n  .pe-sm-3 {\n    padding-right: 1rem !important;\n  }\n\n  .pe-sm-4 {\n    padding-right: 1.5rem !important;\n  }\n\n  .pe-sm-5 {\n    padding-right: 3rem !important;\n  }\n\n  .pb-sm-0 {\n    padding-bottom: 0 !important;\n  }\n\n  .pb-sm-1 {\n    padding-bottom: 0.25rem !important;\n  }\n\n  .pb-sm-2 {\n    padding-bottom: 0.5rem !important;\n  }\n\n  .pb-sm-3 {\n    padding-bottom: 1rem !important;\n  }\n\n  .pb-sm-4 {\n    padding-bottom: 1.5rem !important;\n  }\n\n  .pb-sm-5 {\n    padding-bottom: 3rem !important;\n  }\n\n  .ps-sm-0 {\n    padding-left: 0 !important;\n  }\n\n  .ps-sm-1 {\n    padding-left: 0.25rem !important;\n  }\n\n  .ps-sm-2 {\n    padding-left: 0.5rem !important;\n  }\n\n  .ps-sm-3 {\n    padding-left: 1rem !important;\n  }\n\n  .ps-sm-4 {\n    padding-left: 1.5rem !important;\n  }\n\n  .ps-sm-5 {\n    padding-left: 3rem !important;\n  }\n\n  .text-sm-start {\n    text-align: left !important;\n  }\n\n  .text-sm-end {\n    text-align: right !important;\n  }\n\n  .text-sm-center {\n    text-align: center !important;\n  }\n}\n@media (min-width: 768px) {\n  .float-md-start {\n    float: left !important;\n  }\n\n  .float-md-end {\n    float: right !important;\n  }\n\n  .float-md-none {\n    float: none !important;\n  }\n\n  .d-md-inline {\n    display: inline !important;\n  }\n\n  .d-md-inline-block {\n    display: inline-block !important;\n  }\n\n  .d-md-block {\n    display: block !important;\n  }\n\n  .d-md-grid {\n    display: grid !important;\n  }\n\n  .d-md-table {\n    display: table !important;\n  }\n\n  .d-md-table-row {\n    display: table-row !important;\n  }\n\n  .d-md-table-cell {\n    display: table-cell !important;\n  }\n\n  .d-md-flex {\n    display: flex !important;\n  }\n\n  .d-md-inline-flex {\n    display: inline-flex !important;\n  }\n\n  .d-md-none {\n    display: none !important;\n  }\n\n  .flex-md-fill {\n    flex: 1 1 auto !important;\n  }\n\n  .flex-md-row {\n    flex-direction: row !important;\n  }\n\n  .flex-md-column {\n    flex-direction: column !important;\n  }\n\n  .flex-md-row-reverse {\n    flex-direction: row-reverse !important;\n  }\n\n  .flex-md-column-reverse {\n    flex-direction: column-reverse !important;\n  }\n\n  .flex-md-grow-0 {\n    flex-grow: 0 !important;\n  }\n\n  .flex-md-grow-1 {\n    flex-grow: 1 !important;\n  }\n\n  .flex-md-shrink-0 {\n    flex-shrink: 0 !important;\n  }\n\n  .flex-md-shrink-1 {\n    flex-shrink: 1 !important;\n  }\n\n  .flex-md-wrap {\n    flex-wrap: wrap !important;\n  }\n\n  .flex-md-nowrap {\n    flex-wrap: nowrap !important;\n  }\n\n  .flex-md-wrap-reverse {\n    flex-wrap: wrap-reverse !important;\n  }\n\n  .gap-md-0 {\n    gap: 0 !important;\n  }\n\n  .gap-md-1 {\n    gap: 0.25rem !important;\n  }\n\n  .gap-md-2 {\n    gap: 0.5rem !important;\n  }\n\n  .gap-md-3 {\n    gap: 1rem !important;\n  }\n\n  .gap-md-4 {\n    gap: 1.5rem !important;\n  }\n\n  .gap-md-5 {\n    gap: 3rem !important;\n  }\n\n  .justify-content-md-start {\n    justify-content: flex-start !important;\n  }\n\n  .justify-content-md-end {\n    justify-content: flex-end !important;\n  }\n\n  .justify-content-md-center {\n    justify-content: center !important;\n  }\n\n  .justify-content-md-between {\n    justify-content: space-between !important;\n  }\n\n  .justify-content-md-around {\n    justify-content: space-around !important;\n  }\n\n  .justify-content-md-evenly {\n    justify-content: space-evenly !important;\n  }\n\n  .align-items-md-start {\n    align-items: flex-start !important;\n  }\n\n  .align-items-md-end {\n    align-items: flex-end !important;\n  }\n\n  .align-items-md-center {\n    align-items: center !important;\n  }\n\n  .align-items-md-baseline {\n    align-items: baseline !important;\n  }\n\n  .align-items-md-stretch {\n    align-items: stretch !important;\n  }\n\n  .align-content-md-start {\n    align-content: flex-start !important;\n  }\n\n  .align-content-md-end {\n    align-content: flex-end !important;\n  }\n\n  .align-content-md-center {\n    align-content: center !important;\n  }\n\n  .align-content-md-between {\n    align-content: space-between !important;\n  }\n\n  .align-content-md-around {\n    align-content: space-around !important;\n  }\n\n  .align-content-md-stretch {\n    align-content: stretch !important;\n  }\n\n  .align-self-md-auto {\n    align-self: auto !important;\n  }\n\n  .align-self-md-start {\n    align-self: flex-start !important;\n  }\n\n  .align-self-md-end {\n    align-self: flex-end !important;\n  }\n\n  .align-self-md-center {\n    align-self: center !important;\n  }\n\n  .align-self-md-baseline {\n    align-self: baseline !important;\n  }\n\n  .align-self-md-stretch {\n    align-self: stretch !important;\n  }\n\n  .order-md-first {\n    order: -1 !important;\n  }\n\n  .order-md-0 {\n    order: 0 !important;\n  }\n\n  .order-md-1 {\n    order: 1 !important;\n  }\n\n  .order-md-2 {\n    order: 2 !important;\n  }\n\n  .order-md-3 {\n    order: 3 !important;\n  }\n\n  .order-md-4 {\n    order: 4 !important;\n  }\n\n  .order-md-5 {\n    order: 5 !important;\n  }\n\n  .order-md-last {\n    order: 6 !important;\n  }\n\n  .m-md-0 {\n    margin: 0 !important;\n  }\n\n  .m-md-1 {\n    margin: 0.25rem !important;\n  }\n\n  .m-md-2 {\n    margin: 0.5rem !important;\n  }\n\n  .m-md-3 {\n    margin: 1rem !important;\n  }\n\n  .m-md-4 {\n    margin: 1.5rem !important;\n  }\n\n  .m-md-5 {\n    margin: 3rem !important;\n  }\n\n  .m-md-auto {\n    margin: auto !important;\n  }\n\n  .mx-md-0 {\n    margin-right: 0 !important;\n    margin-left: 0 !important;\n  }\n\n  .mx-md-1 {\n    margin-right: 0.25rem !important;\n    margin-left: 0.25rem !important;\n  }\n\n  .mx-md-2 {\n    margin-right: 0.5rem !important;\n    margin-left: 0.5rem !important;\n  }\n\n  .mx-md-3 {\n    margin-right: 1rem !important;\n    margin-left: 1rem !important;\n  }\n\n  .mx-md-4 {\n    margin-right: 1.5rem !important;\n    margin-left: 1.5rem !important;\n  }\n\n  .mx-md-5 {\n    margin-right: 3rem !important;\n    margin-left: 3rem !important;\n  }\n\n  .mx-md-auto {\n    margin-right: auto !important;\n    margin-left: auto !important;\n  }\n\n  .my-md-0 {\n    margin-top: 0 !important;\n    margin-bottom: 0 !important;\n  }\n\n  .my-md-1 {\n    margin-top: 0.25rem !important;\n    margin-bottom: 0.25rem !important;\n  }\n\n  .my-md-2 {\n    margin-top: 0.5rem !important;\n    margin-bottom: 0.5rem !important;\n  }\n\n  .my-md-3 {\n    margin-top: 1rem !important;\n    margin-bottom: 1rem !important;\n  }\n\n  .my-md-4 {\n    margin-top: 1.5rem !important;\n    margin-bottom: 1.5rem !important;\n  }\n\n  .my-md-5 {\n    margin-top: 3rem !important;\n    margin-bottom: 3rem !important;\n  }\n\n  .my-md-auto {\n    margin-top: auto !important;\n    margin-bottom: auto !important;\n  }\n\n  .mt-md-0 {\n    margin-top: 0 !important;\n  }\n\n  .mt-md-1 {\n    margin-top: 0.25rem !important;\n  }\n\n  .mt-md-2 {\n    margin-top: 0.5rem !important;\n  }\n\n  .mt-md-3 {\n    margin-top: 1rem !important;\n  }\n\n  .mt-md-4 {\n    margin-top: 1.5rem !important;\n  }\n\n  .mt-md-5 {\n    margin-top: 3rem !important;\n  }\n\n  .mt-md-auto {\n    margin-top: auto !important;\n  }\n\n  .me-md-0 {\n    margin-right: 0 !important;\n  }\n\n  .me-md-1 {\n    margin-right: 0.25rem !important;\n  }\n\n  .me-md-2 {\n    margin-right: 0.5rem !important;\n  }\n\n  .me-md-3 {\n    margin-right: 1rem !important;\n  }\n\n  .me-md-4 {\n    margin-right: 1.5rem !important;\n  }\n\n  .me-md-5 {\n    margin-right: 3rem !important;\n  }\n\n  .me-md-auto {\n    margin-right: auto !important;\n  }\n\n  .mb-md-0 {\n    margin-bottom: 0 !important;\n  }\n\n  .mb-md-1 {\n    margin-bottom: 0.25rem !important;\n  }\n\n  .mb-md-2 {\n    margin-bottom: 0.5rem !important;\n  }\n\n  .mb-md-3 {\n    margin-bottom: 1rem !important;\n  }\n\n  .mb-md-4 {\n    margin-bottom: 1.5rem !important;\n  }\n\n  .mb-md-5 {\n    margin-bottom: 3rem !important;\n  }\n\n  .mb-md-auto {\n    margin-bottom: auto !important;\n  }\n\n  .ms-md-0 {\n    margin-left: 0 !important;\n  }\n\n  .ms-md-1 {\n    margin-left: 0.25rem !important;\n  }\n\n  .ms-md-2 {\n    margin-left: 0.5rem !important;\n  }\n\n  .ms-md-3 {\n    margin-left: 1rem !important;\n  }\n\n  .ms-md-4 {\n    margin-left: 1.5rem !important;\n  }\n\n  .ms-md-5 {\n    margin-left: 3rem !important;\n  }\n\n  .ms-md-auto {\n    margin-left: auto !important;\n  }\n\n  .p-md-0 {\n    padding: 0 !important;\n  }\n\n  .p-md-1 {\n    padding: 0.25rem !important;\n  }\n\n  .p-md-2 {\n    padding: 0.5rem !important;\n  }\n\n  .p-md-3 {\n    padding: 1rem !important;\n  }\n\n  .p-md-4 {\n    padding: 1.5rem !important;\n  }\n\n  .p-md-5 {\n    padding: 3rem !important;\n  }\n\n  .px-md-0 {\n    padding-right: 0 !important;\n    padding-left: 0 !important;\n  }\n\n  .px-md-1 {\n    padding-right: 0.25rem !important;\n    padding-left: 0.25rem !important;\n  }\n\n  .px-md-2 {\n    padding-right: 0.5rem !important;\n    padding-left: 0.5rem !important;\n  }\n\n  .px-md-3 {\n    padding-right: 1rem !important;\n    padding-left: 1rem !important;\n  }\n\n  .px-md-4 {\n    padding-right: 1.5rem !important;\n    padding-left: 1.5rem !important;\n  }\n\n  .px-md-5 {\n    padding-right: 3rem !important;\n    padding-left: 3rem !important;\n  }\n\n  .py-md-0 {\n    padding-top: 0 !important;\n    padding-bottom: 0 !important;\n  }\n\n  .py-md-1 {\n    padding-top: 0.25rem !important;\n    padding-bottom: 0.25rem !important;\n  }\n\n  .py-md-2 {\n    padding-top: 0.5rem !important;\n    padding-bottom: 0.5rem !important;\n  }\n\n  .py-md-3 {\n    padding-top: 1rem !important;\n    padding-bottom: 1rem !important;\n  }\n\n  .py-md-4 {\n    padding-top: 1.5rem !important;\n    padding-bottom: 1.5rem !important;\n  }\n\n  .py-md-5 {\n    padding-top: 3rem !important;\n    padding-bottom: 3rem !important;\n  }\n\n  .pt-md-0 {\n    padding-top: 0 !important;\n  }\n\n  .pt-md-1 {\n    padding-top: 0.25rem !important;\n  }\n\n  .pt-md-2 {\n    padding-top: 0.5rem !important;\n  }\n\n  .pt-md-3 {\n    padding-top: 1rem !important;\n  }\n\n  .pt-md-4 {\n    padding-top: 1.5rem !important;\n  }\n\n  .pt-md-5 {\n    padding-top: 3rem !important;\n  }\n\n  .pe-md-0 {\n    padding-right: 0 !important;\n  }\n\n  .pe-md-1 {\n    padding-right: 0.25rem !important;\n  }\n\n  .pe-md-2 {\n    padding-right: 0.5rem !important;\n  }\n\n  .pe-md-3 {\n    padding-right: 1rem !important;\n  }\n\n  .pe-md-4 {\n    padding-right: 1.5rem !important;\n  }\n\n  .pe-md-5 {\n    padding-right: 3rem !important;\n  }\n\n  .pb-md-0 {\n    padding-bottom: 0 !important;\n  }\n\n  .pb-md-1 {\n    padding-bottom: 0.25rem !important;\n  }\n\n  .pb-md-2 {\n    padding-bottom: 0.5rem !important;\n  }\n\n  .pb-md-3 {\n    padding-bottom: 1rem !important;\n  }\n\n  .pb-md-4 {\n    padding-bottom: 1.5rem !important;\n  }\n\n  .pb-md-5 {\n    padding-bottom: 3rem !important;\n  }\n\n  .ps-md-0 {\n    padding-left: 0 !important;\n  }\n\n  .ps-md-1 {\n    padding-left: 0.25rem !important;\n  }\n\n  .ps-md-2 {\n    padding-left: 0.5rem !important;\n  }\n\n  .ps-md-3 {\n    padding-left: 1rem !important;\n  }\n\n  .ps-md-4 {\n    padding-left: 1.5rem !important;\n  }\n\n  .ps-md-5 {\n    padding-left: 3rem !important;\n  }\n\n  .text-md-start {\n    text-align: left !important;\n  }\n\n  .text-md-end {\n    text-align: right !important;\n  }\n\n  .text-md-center {\n    text-align: center !important;\n  }\n}\n@media (min-width: 992px) {\n  .float-lg-start {\n    float: left !important;\n  }\n\n  .float-lg-end {\n    float: right !important;\n  }\n\n  .float-lg-none {\n    float: none !important;\n  }\n\n  .d-lg-inline {\n    display: inline !important;\n  }\n\n  .d-lg-inline-block {\n    display: inline-block !important;\n  }\n\n  .d-lg-block {\n    display: block !important;\n  }\n\n  .d-lg-grid {\n    display: grid !important;\n  }\n\n  .d-lg-table {\n    display: table !important;\n  }\n\n  .d-lg-table-row {\n    display: table-row !important;\n  }\n\n  .d-lg-table-cell {\n    display: table-cell !important;\n  }\n\n  .d-lg-flex {\n    display: flex !important;\n  }\n\n  .d-lg-inline-flex {\n    display: inline-flex !important;\n  }\n\n  .d-lg-none {\n    display: none !important;\n  }\n\n  .flex-lg-fill {\n    flex: 1 1 auto !important;\n  }\n\n  .flex-lg-row {\n    flex-direction: row !important;\n  }\n\n  .flex-lg-column {\n    flex-direction: column !important;\n  }\n\n  .flex-lg-row-reverse {\n    flex-direction: row-reverse !important;\n  }\n\n  .flex-lg-column-reverse {\n    flex-direction: column-reverse !important;\n  }\n\n  .flex-lg-grow-0 {\n    flex-grow: 0 !important;\n  }\n\n  .flex-lg-grow-1 {\n    flex-grow: 1 !important;\n  }\n\n  .flex-lg-shrink-0 {\n    flex-shrink: 0 !important;\n  }\n\n  .flex-lg-shrink-1 {\n    flex-shrink: 1 !important;\n  }\n\n  .flex-lg-wrap {\n    flex-wrap: wrap !important;\n  }\n\n  .flex-lg-nowrap {\n    flex-wrap: nowrap !important;\n  }\n\n  .flex-lg-wrap-reverse {\n    flex-wrap: wrap-reverse !important;\n  }\n\n  .gap-lg-0 {\n    gap: 0 !important;\n  }\n\n  .gap-lg-1 {\n    gap: 0.25rem !important;\n  }\n\n  .gap-lg-2 {\n    gap: 0.5rem !important;\n  }\n\n  .gap-lg-3 {\n    gap: 1rem !important;\n  }\n\n  .gap-lg-4 {\n    gap: 1.5rem !important;\n  }\n\n  .gap-lg-5 {\n    gap: 3rem !important;\n  }\n\n  .justify-content-lg-start {\n    justify-content: flex-start !important;\n  }\n\n  .justify-content-lg-end {\n    justify-content: flex-end !important;\n  }\n\n  .justify-content-lg-center {\n    justify-content: center !important;\n  }\n\n  .justify-content-lg-between {\n    justify-content: space-between !important;\n  }\n\n  .justify-content-lg-around {\n    justify-content: space-around !important;\n  }\n\n  .justify-content-lg-evenly {\n    justify-content: space-evenly !important;\n  }\n\n  .align-items-lg-start {\n    align-items: flex-start !important;\n  }\n\n  .align-items-lg-end {\n    align-items: flex-end !important;\n  }\n\n  .align-items-lg-center {\n    align-items: center !important;\n  }\n\n  .align-items-lg-baseline {\n    align-items: baseline !important;\n  }\n\n  .align-items-lg-stretch {\n    align-items: stretch !important;\n  }\n\n  .align-content-lg-start {\n    align-content: flex-start !important;\n  }\n\n  .align-content-lg-end {\n    align-content: flex-end !important;\n  }\n\n  .align-content-lg-center {\n    align-content: center !important;\n  }\n\n  .align-content-lg-between {\n    align-content: space-between !important;\n  }\n\n  .align-content-lg-around {\n    align-content: space-around !important;\n  }\n\n  .align-content-lg-stretch {\n    align-content: stretch !important;\n  }\n\n  .align-self-lg-auto {\n    align-self: auto !important;\n  }\n\n  .align-self-lg-start {\n    align-self: flex-start !important;\n  }\n\n  .align-self-lg-end {\n    align-self: flex-end !important;\n  }\n\n  .align-self-lg-center {\n    align-self: center !important;\n  }\n\n  .align-self-lg-baseline {\n    align-self: baseline !important;\n  }\n\n  .align-self-lg-stretch {\n    align-self: stretch !important;\n  }\n\n  .order-lg-first {\n    order: -1 !important;\n  }\n\n  .order-lg-0 {\n    order: 0 !important;\n  }\n\n  .order-lg-1 {\n    order: 1 !important;\n  }\n\n  .order-lg-2 {\n    order: 2 !important;\n  }\n\n  .order-lg-3 {\n    order: 3 !important;\n  }\n\n  .order-lg-4 {\n    order: 4 !important;\n  }\n\n  .order-lg-5 {\n    order: 5 !important;\n  }\n\n  .order-lg-last {\n    order: 6 !important;\n  }\n\n  .m-lg-0 {\n    margin: 0 !important;\n  }\n\n  .m-lg-1 {\n    margin: 0.25rem !important;\n  }\n\n  .m-lg-2 {\n    margin: 0.5rem !important;\n  }\n\n  .m-lg-3 {\n    margin: 1rem !important;\n  }\n\n  .m-lg-4 {\n    margin: 1.5rem !important;\n  }\n\n  .m-lg-5 {\n    margin: 3rem !important;\n  }\n\n  .m-lg-auto {\n    margin: auto !important;\n  }\n\n  .mx-lg-0 {\n    margin-right: 0 !important;\n    margin-left: 0 !important;\n  }\n\n  .mx-lg-1 {\n    margin-right: 0.25rem !important;\n    margin-left: 0.25rem !important;\n  }\n\n  .mx-lg-2 {\n    margin-right: 0.5rem !important;\n    margin-left: 0.5rem !important;\n  }\n\n  .mx-lg-3 {\n    margin-right: 1rem !important;\n    margin-left: 1rem !important;\n  }\n\n  .mx-lg-4 {\n    margin-right: 1.5rem !important;\n    margin-left: 1.5rem !important;\n  }\n\n  .mx-lg-5 {\n    margin-right: 3rem !important;\n    margin-left: 3rem !important;\n  }\n\n  .mx-lg-auto {\n    margin-right: auto !important;\n    margin-left: auto !important;\n  }\n\n  .my-lg-0 {\n    margin-top: 0 !important;\n    margin-bottom: 0 !important;\n  }\n\n  .my-lg-1 {\n    margin-top: 0.25rem !important;\n    margin-bottom: 0.25rem !important;\n  }\n\n  .my-lg-2 {\n    margin-top: 0.5rem !important;\n    margin-bottom: 0.5rem !important;\n  }\n\n  .my-lg-3 {\n    margin-top: 1rem !important;\n    margin-bottom: 1rem !important;\n  }\n\n  .my-lg-4 {\n    margin-top: 1.5rem !important;\n    margin-bottom: 1.5rem !important;\n  }\n\n  .my-lg-5 {\n    margin-top: 3rem !important;\n    margin-bottom: 3rem !important;\n  }\n\n  .my-lg-auto {\n    margin-top: auto !important;\n    margin-bottom: auto !important;\n  }\n\n  .mt-lg-0 {\n    margin-top: 0 !important;\n  }\n\n  .mt-lg-1 {\n    margin-top: 0.25rem !important;\n  }\n\n  .mt-lg-2 {\n    margin-top: 0.5rem !important;\n  }\n\n  .mt-lg-3 {\n    margin-top: 1rem !important;\n  }\n\n  .mt-lg-4 {\n    margin-top: 1.5rem !important;\n  }\n\n  .mt-lg-5 {\n    margin-top: 3rem !important;\n  }\n\n  .mt-lg-auto {\n    margin-top: auto !important;\n  }\n\n  .me-lg-0 {\n    margin-right: 0 !important;\n  }\n\n  .me-lg-1 {\n    margin-right: 0.25rem !important;\n  }\n\n  .me-lg-2 {\n    margin-right: 0.5rem !important;\n  }\n\n  .me-lg-3 {\n    margin-right: 1rem !important;\n  }\n\n  .me-lg-4 {\n    margin-right: 1.5rem !important;\n  }\n\n  .me-lg-5 {\n    margin-right: 3rem !important;\n  }\n\n  .me-lg-auto {\n    margin-right: auto !important;\n  }\n\n  .mb-lg-0 {\n    margin-bottom: 0 !important;\n  }\n\n  .mb-lg-1 {\n    margin-bottom: 0.25rem !important;\n  }\n\n  .mb-lg-2 {\n    margin-bottom: 0.5rem !important;\n  }\n\n  .mb-lg-3 {\n    margin-bottom: 1rem !important;\n  }\n\n  .mb-lg-4 {\n    margin-bottom: 1.5rem !important;\n  }\n\n  .mb-lg-5 {\n    margin-bottom: 3rem !important;\n  }\n\n  .mb-lg-auto {\n    margin-bottom: auto !important;\n  }\n\n  .ms-lg-0 {\n    margin-left: 0 !important;\n  }\n\n  .ms-lg-1 {\n    margin-left: 0.25rem !important;\n  }\n\n  .ms-lg-2 {\n    margin-left: 0.5rem !important;\n  }\n\n  .ms-lg-3 {\n    margin-left: 1rem !important;\n  }\n\n  .ms-lg-4 {\n    margin-left: 1.5rem !important;\n  }\n\n  .ms-lg-5 {\n    margin-left: 3rem !important;\n  }\n\n  .ms-lg-auto {\n    margin-left: auto !important;\n  }\n\n  .p-lg-0 {\n    padding: 0 !important;\n  }\n\n  .p-lg-1 {\n    padding: 0.25rem !important;\n  }\n\n  .p-lg-2 {\n    padding: 0.5rem !important;\n  }\n\n  .p-lg-3 {\n    padding: 1rem !important;\n  }\n\n  .p-lg-4 {\n    padding: 1.5rem !important;\n  }\n\n  .p-lg-5 {\n    padding: 3rem !important;\n  }\n\n  .px-lg-0 {\n    padding-right: 0 !important;\n    padding-left: 0 !important;\n  }\n\n  .px-lg-1 {\n    padding-right: 0.25rem !important;\n    padding-left: 0.25rem !important;\n  }\n\n  .px-lg-2 {\n    padding-right: 0.5rem !important;\n    padding-left: 0.5rem !important;\n  }\n\n  .px-lg-3 {\n    padding-right: 1rem !important;\n    padding-left: 1rem !important;\n  }\n\n  .px-lg-4 {\n    padding-right: 1.5rem !important;\n    padding-left: 1.5rem !important;\n  }\n\n  .px-lg-5 {\n    padding-right: 3rem !important;\n    padding-left: 3rem !important;\n  }\n\n  .py-lg-0 {\n    padding-top: 0 !important;\n    padding-bottom: 0 !important;\n  }\n\n  .py-lg-1 {\n    padding-top: 0.25rem !important;\n    padding-bottom: 0.25rem !important;\n  }\n\n  .py-lg-2 {\n    padding-top: 0.5rem !important;\n    padding-bottom: 0.5rem !important;\n  }\n\n  .py-lg-3 {\n    padding-top: 1rem !important;\n    padding-bottom: 1rem !important;\n  }\n\n  .py-lg-4 {\n    padding-top: 1.5rem !important;\n    padding-bottom: 1.5rem !important;\n  }\n\n  .py-lg-5 {\n    padding-top: 3rem !important;\n    padding-bottom: 3rem !important;\n  }\n\n  .pt-lg-0 {\n    padding-top: 0 !important;\n  }\n\n  .pt-lg-1 {\n    padding-top: 0.25rem !important;\n  }\n\n  .pt-lg-2 {\n    padding-top: 0.5rem !important;\n  }\n\n  .pt-lg-3 {\n    padding-top: 1rem !important;\n  }\n\n  .pt-lg-4 {\n    padding-top: 1.5rem !important;\n  }\n\n  .pt-lg-5 {\n    padding-top: 3rem !important;\n  }\n\n  .pe-lg-0 {\n    padding-right: 0 !important;\n  }\n\n  .pe-lg-1 {\n    padding-right: 0.25rem !important;\n  }\n\n  .pe-lg-2 {\n    padding-right: 0.5rem !important;\n  }\n\n  .pe-lg-3 {\n    padding-right: 1rem !important;\n  }\n\n  .pe-lg-4 {\n    padding-right: 1.5rem !important;\n  }\n\n  .pe-lg-5 {\n    padding-right: 3rem !important;\n  }\n\n  .pb-lg-0 {\n    padding-bottom: 0 !important;\n  }\n\n  .pb-lg-1 {\n    padding-bottom: 0.25rem !important;\n  }\n\n  .pb-lg-2 {\n    padding-bottom: 0.5rem !important;\n  }\n\n  .pb-lg-3 {\n    padding-bottom: 1rem !important;\n  }\n\n  .pb-lg-4 {\n    padding-bottom: 1.5rem !important;\n  }\n\n  .pb-lg-5 {\n    padding-bottom: 3rem !important;\n  }\n\n  .ps-lg-0 {\n    padding-left: 0 !important;\n  }\n\n  .ps-lg-1 {\n    padding-left: 0.25rem !important;\n  }\n\n  .ps-lg-2 {\n    padding-left: 0.5rem !important;\n  }\n\n  .ps-lg-3 {\n    padding-left: 1rem !important;\n  }\n\n  .ps-lg-4 {\n    padding-left: 1.5rem !important;\n  }\n\n  .ps-lg-5 {\n    padding-left: 3rem !important;\n  }\n\n  .text-lg-start {\n    text-align: left !important;\n  }\n\n  .text-lg-end {\n    text-align: right !important;\n  }\n\n  .text-lg-center {\n    text-align: center !important;\n  }\n}\n@media (min-width: 1200px) {\n  .float-xl-start {\n    float: left !important;\n  }\n\n  .float-xl-end {\n    float: right !important;\n  }\n\n  .float-xl-none {\n    float: none !important;\n  }\n\n  .d-xl-inline {\n    display: inline !important;\n  }\n\n  .d-xl-inline-block {\n    display: inline-block !important;\n  }\n\n  .d-xl-block {\n    display: block !important;\n  }\n\n  .d-xl-grid {\n    display: grid !important;\n  }\n\n  .d-xl-table {\n    display: table !important;\n  }\n\n  .d-xl-table-row {\n    display: table-row !important;\n  }\n\n  .d-xl-table-cell {\n    display: table-cell !important;\n  }\n\n  .d-xl-flex {\n    display: flex !important;\n  }\n\n  .d-xl-inline-flex {\n    display: inline-flex !important;\n  }\n\n  .d-xl-none {\n    display: none !important;\n  }\n\n  .flex-xl-fill {\n    flex: 1 1 auto !important;\n  }\n\n  .flex-xl-row {\n    flex-direction: row !important;\n  }\n\n  .flex-xl-column {\n    flex-direction: column !important;\n  }\n\n  .flex-xl-row-reverse {\n    flex-direction: row-reverse !important;\n  }\n\n  .flex-xl-column-reverse {\n    flex-direction: column-reverse !important;\n  }\n\n  .flex-xl-grow-0 {\n    flex-grow: 0 !important;\n  }\n\n  .flex-xl-grow-1 {\n    flex-grow: 1 !important;\n  }\n\n  .flex-xl-shrink-0 {\n    flex-shrink: 0 !important;\n  }\n\n  .flex-xl-shrink-1 {\n    flex-shrink: 1 !important;\n  }\n\n  .flex-xl-wrap {\n    flex-wrap: wrap !important;\n  }\n\n  .flex-xl-nowrap {\n    flex-wrap: nowrap !important;\n  }\n\n  .flex-xl-wrap-reverse {\n    flex-wrap: wrap-reverse !important;\n  }\n\n  .gap-xl-0 {\n    gap: 0 !important;\n  }\n\n  .gap-xl-1 {\n    gap: 0.25rem !important;\n  }\n\n  .gap-xl-2 {\n    gap: 0.5rem !important;\n  }\n\n  .gap-xl-3 {\n    gap: 1rem !important;\n  }\n\n  .gap-xl-4 {\n    gap: 1.5rem !important;\n  }\n\n  .gap-xl-5 {\n    gap: 3rem !important;\n  }\n\n  .justify-content-xl-start {\n    justify-content: flex-start !important;\n  }\n\n  .justify-content-xl-end {\n    justify-content: flex-end !important;\n  }\n\n  .justify-content-xl-center {\n    justify-content: center !important;\n  }\n\n  .justify-content-xl-between {\n    justify-content: space-between !important;\n  }\n\n  .justify-content-xl-around {\n    justify-content: space-around !important;\n  }\n\n  .justify-content-xl-evenly {\n    justify-content: space-evenly !important;\n  }\n\n  .align-items-xl-start {\n    align-items: flex-start !important;\n  }\n\n  .align-items-xl-end {\n    align-items: flex-end !important;\n  }\n\n  .align-items-xl-center {\n    align-items: center !important;\n  }\n\n  .align-items-xl-baseline {\n    align-items: baseline !important;\n  }\n\n  .align-items-xl-stretch {\n    align-items: stretch !important;\n  }\n\n  .align-content-xl-start {\n    align-content: flex-start !important;\n  }\n\n  .align-content-xl-end {\n    align-content: flex-end !important;\n  }\n\n  .align-content-xl-center {\n    align-content: center !important;\n  }\n\n  .align-content-xl-between {\n    align-content: space-between !important;\n  }\n\n  .align-content-xl-around {\n    align-content: space-around !important;\n  }\n\n  .align-content-xl-stretch {\n    align-content: stretch !important;\n  }\n\n  .align-self-xl-auto {\n    align-self: auto !important;\n  }\n\n  .align-self-xl-start {\n    align-self: flex-start !important;\n  }\n\n  .align-self-xl-end {\n    align-self: flex-end !important;\n  }\n\n  .align-self-xl-center {\n    align-self: center !important;\n  }\n\n  .align-self-xl-baseline {\n    align-self: baseline !important;\n  }\n\n  .align-self-xl-stretch {\n    align-self: stretch !important;\n  }\n\n  .order-xl-first {\n    order: -1 !important;\n  }\n\n  .order-xl-0 {\n    order: 0 !important;\n  }\n\n  .order-xl-1 {\n    order: 1 !important;\n  }\n\n  .order-xl-2 {\n    order: 2 !important;\n  }\n\n  .order-xl-3 {\n    order: 3 !important;\n  }\n\n  .order-xl-4 {\n    order: 4 !important;\n  }\n\n  .order-xl-5 {\n    order: 5 !important;\n  }\n\n  .order-xl-last {\n    order: 6 !important;\n  }\n\n  .m-xl-0 {\n    margin: 0 !important;\n  }\n\n  .m-xl-1 {\n    margin: 0.25rem !important;\n  }\n\n  .m-xl-2 {\n    margin: 0.5rem !important;\n  }\n\n  .m-xl-3 {\n    margin: 1rem !important;\n  }\n\n  .m-xl-4 {\n    margin: 1.5rem !important;\n  }\n\n  .m-xl-5 {\n    margin: 3rem !important;\n  }\n\n  .m-xl-auto {\n    margin: auto !important;\n  }\n\n  .mx-xl-0 {\n    margin-right: 0 !important;\n    margin-left: 0 !important;\n  }\n\n  .mx-xl-1 {\n    margin-right: 0.25rem !important;\n    margin-left: 0.25rem !important;\n  }\n\n  .mx-xl-2 {\n    margin-right: 0.5rem !important;\n    margin-left: 0.5rem !important;\n  }\n\n  .mx-xl-3 {\n    margin-right: 1rem !important;\n    margin-left: 1rem !important;\n  }\n\n  .mx-xl-4 {\n    margin-right: 1.5rem !important;\n    margin-left: 1.5rem !important;\n  }\n\n  .mx-xl-5 {\n    margin-right: 3rem !important;\n    margin-left: 3rem !important;\n  }\n\n  .mx-xl-auto {\n    margin-right: auto !important;\n    margin-left: auto !important;\n  }\n\n  .my-xl-0 {\n    margin-top: 0 !important;\n    margin-bottom: 0 !important;\n  }\n\n  .my-xl-1 {\n    margin-top: 0.25rem !important;\n    margin-bottom: 0.25rem !important;\n  }\n\n  .my-xl-2 {\n    margin-top: 0.5rem !important;\n    margin-bottom: 0.5rem !important;\n  }\n\n  .my-xl-3 {\n    margin-top: 1rem !important;\n    margin-bottom: 1rem !important;\n  }\n\n  .my-xl-4 {\n    margin-top: 1.5rem !important;\n    margin-bottom: 1.5rem !important;\n  }\n\n  .my-xl-5 {\n    margin-top: 3rem !important;\n    margin-bottom: 3rem !important;\n  }\n\n  .my-xl-auto {\n    margin-top: auto !important;\n    margin-bottom: auto !important;\n  }\n\n  .mt-xl-0 {\n    margin-top: 0 !important;\n  }\n\n  .mt-xl-1 {\n    margin-top: 0.25rem !important;\n  }\n\n  .mt-xl-2 {\n    margin-top: 0.5rem !important;\n  }\n\n  .mt-xl-3 {\n    margin-top: 1rem !important;\n  }\n\n  .mt-xl-4 {\n    margin-top: 1.5rem !important;\n  }\n\n  .mt-xl-5 {\n    margin-top: 3rem !important;\n  }\n\n  .mt-xl-auto {\n    margin-top: auto !important;\n  }\n\n  .me-xl-0 {\n    margin-right: 0 !important;\n  }\n\n  .me-xl-1 {\n    margin-right: 0.25rem !important;\n  }\n\n  .me-xl-2 {\n    margin-right: 0.5rem !important;\n  }\n\n  .me-xl-3 {\n    margin-right: 1rem !important;\n  }\n\n  .me-xl-4 {\n    margin-right: 1.5rem !important;\n  }\n\n  .me-xl-5 {\n    margin-right: 3rem !important;\n  }\n\n  .me-xl-auto {\n    margin-right: auto !important;\n  }\n\n  .mb-xl-0 {\n    margin-bottom: 0 !important;\n  }\n\n  .mb-xl-1 {\n    margin-bottom: 0.25rem !important;\n  }\n\n  .mb-xl-2 {\n    margin-bottom: 0.5rem !important;\n  }\n\n  .mb-xl-3 {\n    margin-bottom: 1rem !important;\n  }\n\n  .mb-xl-4 {\n    margin-bottom: 1.5rem !important;\n  }\n\n  .mb-xl-5 {\n    margin-bottom: 3rem !important;\n  }\n\n  .mb-xl-auto {\n    margin-bottom: auto !important;\n  }\n\n  .ms-xl-0 {\n    margin-left: 0 !important;\n  }\n\n  .ms-xl-1 {\n    margin-left: 0.25rem !important;\n  }\n\n  .ms-xl-2 {\n    margin-left: 0.5rem !important;\n  }\n\n  .ms-xl-3 {\n    margin-left: 1rem !important;\n  }\n\n  .ms-xl-4 {\n    margin-left: 1.5rem !important;\n  }\n\n  .ms-xl-5 {\n    margin-left: 3rem !important;\n  }\n\n  .ms-xl-auto {\n    margin-left: auto !important;\n  }\n\n  .p-xl-0 {\n    padding: 0 !important;\n  }\n\n  .p-xl-1 {\n    padding: 0.25rem !important;\n  }\n\n  .p-xl-2 {\n    padding: 0.5rem !important;\n  }\n\n  .p-xl-3 {\n    padding: 1rem !important;\n  }\n\n  .p-xl-4 {\n    padding: 1.5rem !important;\n  }\n\n  .p-xl-5 {\n    padding: 3rem !important;\n  }\n\n  .px-xl-0 {\n    padding-right: 0 !important;\n    padding-left: 0 !important;\n  }\n\n  .px-xl-1 {\n    padding-right: 0.25rem !important;\n    padding-left: 0.25rem !important;\n  }\n\n  .px-xl-2 {\n    padding-right: 0.5rem !important;\n    padding-left: 0.5rem !important;\n  }\n\n  .px-xl-3 {\n    padding-right: 1rem !important;\n    padding-left: 1rem !important;\n  }\n\n  .px-xl-4 {\n    padding-right: 1.5rem !important;\n    padding-left: 1.5rem !important;\n  }\n\n  .px-xl-5 {\n    padding-right: 3rem !important;\n    padding-left: 3rem !important;\n  }\n\n  .py-xl-0 {\n    padding-top: 0 !important;\n    padding-bottom: 0 !important;\n  }\n\n  .py-xl-1 {\n    padding-top: 0.25rem !important;\n    padding-bottom: 0.25rem !important;\n  }\n\n  .py-xl-2 {\n    padding-top: 0.5rem !important;\n    padding-bottom: 0.5rem !important;\n  }\n\n  .py-xl-3 {\n    padding-top: 1rem !important;\n    padding-bottom: 1rem !important;\n  }\n\n  .py-xl-4 {\n    padding-top: 1.5rem !important;\n    padding-bottom: 1.5rem !important;\n  }\n\n  .py-xl-5 {\n    padding-top: 3rem !important;\n    padding-bottom: 3rem !important;\n  }\n\n  .pt-xl-0 {\n    padding-top: 0 !important;\n  }\n\n  .pt-xl-1 {\n    padding-top: 0.25rem !important;\n  }\n\n  .pt-xl-2 {\n    padding-top: 0.5rem !important;\n  }\n\n  .pt-xl-3 {\n    padding-top: 1rem !important;\n  }\n\n  .pt-xl-4 {\n    padding-top: 1.5rem !important;\n  }\n\n  .pt-xl-5 {\n    padding-top: 3rem !important;\n  }\n\n  .pe-xl-0 {\n    padding-right: 0 !important;\n  }\n\n  .pe-xl-1 {\n    padding-right: 0.25rem !important;\n  }\n\n  .pe-xl-2 {\n    padding-right: 0.5rem !important;\n  }\n\n  .pe-xl-3 {\n    padding-right: 1rem !important;\n  }\n\n  .pe-xl-4 {\n    padding-right: 1.5rem !important;\n  }\n\n  .pe-xl-5 {\n    padding-right: 3rem !important;\n  }\n\n  .pb-xl-0 {\n    padding-bottom: 0 !important;\n  }\n\n  .pb-xl-1 {\n    padding-bottom: 0.25rem !important;\n  }\n\n  .pb-xl-2 {\n    padding-bottom: 0.5rem !important;\n  }\n\n  .pb-xl-3 {\n    padding-bottom: 1rem !important;\n  }\n\n  .pb-xl-4 {\n    padding-bottom: 1.5rem !important;\n  }\n\n  .pb-xl-5 {\n    padding-bottom: 3rem !important;\n  }\n\n  .ps-xl-0 {\n    padding-left: 0 !important;\n  }\n\n  .ps-xl-1 {\n    padding-left: 0.25rem !important;\n  }\n\n  .ps-xl-2 {\n    padding-left: 0.5rem !important;\n  }\n\n  .ps-xl-3 {\n    padding-left: 1rem !important;\n  }\n\n  .ps-xl-4 {\n    padding-left: 1.5rem !important;\n  }\n\n  .ps-xl-5 {\n    padding-left: 3rem !important;\n  }\n\n  .text-xl-start {\n    text-align: left !important;\n  }\n\n  .text-xl-end {\n    text-align: right !important;\n  }\n\n  .text-xl-center {\n    text-align: center !important;\n  }\n}\n@media (min-width: 1400px) {\n  .float-xxl-start {\n    float: left !important;\n  }\n\n  .float-xxl-end {\n    float: right !important;\n  }\n\n  .float-xxl-none {\n    float: none !important;\n  }\n\n  .d-xxl-inline {\n    display: inline !important;\n  }\n\n  .d-xxl-inline-block {\n    display: inline-block !important;\n  }\n\n  .d-xxl-block {\n    display: block !important;\n  }\n\n  .d-xxl-grid {\n    display: grid !important;\n  }\n\n  .d-xxl-table {\n    display: table !important;\n  }\n\n  .d-xxl-table-row {\n    display: table-row !important;\n  }\n\n  .d-xxl-table-cell {\n    display: table-cell !important;\n  }\n\n  .d-xxl-flex {\n    display: flex !important;\n  }\n\n  .d-xxl-inline-flex {\n    display: inline-flex !important;\n  }\n\n  .d-xxl-none {\n    display: none !important;\n  }\n\n  .flex-xxl-fill {\n    flex: 1 1 auto !important;\n  }\n\n  .flex-xxl-row {\n    flex-direction: row !important;\n  }\n\n  .flex-xxl-column {\n    flex-direction: column !important;\n  }\n\n  .flex-xxl-row-reverse {\n    flex-direction: row-reverse !important;\n  }\n\n  .flex-xxl-column-reverse {\n    flex-direction: column-reverse !important;\n  }\n\n  .flex-xxl-grow-0 {\n    flex-grow: 0 !important;\n  }\n\n  .flex-xxl-grow-1 {\n    flex-grow: 1 !important;\n  }\n\n  .flex-xxl-shrink-0 {\n    flex-shrink: 0 !important;\n  }\n\n  .flex-xxl-shrink-1 {\n    flex-shrink: 1 !important;\n  }\n\n  .flex-xxl-wrap {\n    flex-wrap: wrap !important;\n  }\n\n  .flex-xxl-nowrap {\n    flex-wrap: nowrap !important;\n  }\n\n  .flex-xxl-wrap-reverse {\n    flex-wrap: wrap-reverse !important;\n  }\n\n  .gap-xxl-0 {\n    gap: 0 !important;\n  }\n\n  .gap-xxl-1 {\n    gap: 0.25rem !important;\n  }\n\n  .gap-xxl-2 {\n    gap: 0.5rem !important;\n  }\n\n  .gap-xxl-3 {\n    gap: 1rem !important;\n  }\n\n  .gap-xxl-4 {\n    gap: 1.5rem !important;\n  }\n\n  .gap-xxl-5 {\n    gap: 3rem !important;\n  }\n\n  .justify-content-xxl-start {\n    justify-content: flex-start !important;\n  }\n\n  .justify-content-xxl-end {\n    justify-content: flex-end !important;\n  }\n\n  .justify-content-xxl-center {\n    justify-content: center !important;\n  }\n\n  .justify-content-xxl-between {\n    justify-content: space-between !important;\n  }\n\n  .justify-content-xxl-around {\n    justify-content: space-around !important;\n  }\n\n  .justify-content-xxl-evenly {\n    justify-content: space-evenly !important;\n  }\n\n  .align-items-xxl-start {\n    align-items: flex-start !important;\n  }\n\n  .align-items-xxl-end {\n    align-items: flex-end !important;\n  }\n\n  .align-items-xxl-center {\n    align-items: center !important;\n  }\n\n  .align-items-xxl-baseline {\n    align-items: baseline !important;\n  }\n\n  .align-items-xxl-stretch {\n    align-items: stretch !important;\n  }\n\n  .align-content-xxl-start {\n    align-content: flex-start !important;\n  }\n\n  .align-content-xxl-end {\n    align-content: flex-end !important;\n  }\n\n  .align-content-xxl-center {\n    align-content: center !important;\n  }\n\n  .align-content-xxl-between {\n    align-content: space-between !important;\n  }\n\n  .align-content-xxl-around {\n    align-content: space-around !important;\n  }\n\n  .align-content-xxl-stretch {\n    align-content: stretch !important;\n  }\n\n  .align-self-xxl-auto {\n    align-self: auto !important;\n  }\n\n  .align-self-xxl-start {\n    align-self: flex-start !important;\n  }\n\n  .align-self-xxl-end {\n    align-self: flex-end !important;\n  }\n\n  .align-self-xxl-center {\n    align-self: center !important;\n  }\n\n  .align-self-xxl-baseline {\n    align-self: baseline !important;\n  }\n\n  .align-self-xxl-stretch {\n    align-self: stretch !important;\n  }\n\n  .order-xxl-first {\n    order: -1 !important;\n  }\n\n  .order-xxl-0 {\n    order: 0 !important;\n  }\n\n  .order-xxl-1 {\n    order: 1 !important;\n  }\n\n  .order-xxl-2 {\n    order: 2 !important;\n  }\n\n  .order-xxl-3 {\n    order: 3 !important;\n  }\n\n  .order-xxl-4 {\n    order: 4 !important;\n  }\n\n  .order-xxl-5 {\n    order: 5 !important;\n  }\n\n  .order-xxl-last {\n    order: 6 !important;\n  }\n\n  .m-xxl-0 {\n    margin: 0 !important;\n  }\n\n  .m-xxl-1 {\n    margin: 0.25rem !important;\n  }\n\n  .m-xxl-2 {\n    margin: 0.5rem !important;\n  }\n\n  .m-xxl-3 {\n    margin: 1rem !important;\n  }\n\n  .m-xxl-4 {\n    margin: 1.5rem !important;\n  }\n\n  .m-xxl-5 {\n    margin: 3rem !important;\n  }\n\n  .m-xxl-auto {\n    margin: auto !important;\n  }\n\n  .mx-xxl-0 {\n    margin-right: 0 !important;\n    margin-left: 0 !important;\n  }\n\n  .mx-xxl-1 {\n    margin-right: 0.25rem !important;\n    margin-left: 0.25rem !important;\n  }\n\n  .mx-xxl-2 {\n    margin-right: 0.5rem !important;\n    margin-left: 0.5rem !important;\n  }\n\n  .mx-xxl-3 {\n    margin-right: 1rem !important;\n    margin-left: 1rem !important;\n  }\n\n  .mx-xxl-4 {\n    margin-right: 1.5rem !important;\n    margin-left: 1.5rem !important;\n  }\n\n  .mx-xxl-5 {\n    margin-right: 3rem !important;\n    margin-left: 3rem !important;\n  }\n\n  .mx-xxl-auto {\n    margin-right: auto !important;\n    margin-left: auto !important;\n  }\n\n  .my-xxl-0 {\n    margin-top: 0 !important;\n    margin-bottom: 0 !important;\n  }\n\n  .my-xxl-1 {\n    margin-top: 0.25rem !important;\n    margin-bottom: 0.25rem !important;\n  }\n\n  .my-xxl-2 {\n    margin-top: 0.5rem !important;\n    margin-bottom: 0.5rem !important;\n  }\n\n  .my-xxl-3 {\n    margin-top: 1rem !important;\n    margin-bottom: 1rem !important;\n  }\n\n  .my-xxl-4 {\n    margin-top: 1.5rem !important;\n    margin-bottom: 1.5rem !important;\n  }\n\n  .my-xxl-5 {\n    margin-top: 3rem !important;\n    margin-bottom: 3rem !important;\n  }\n\n  .my-xxl-auto {\n    margin-top: auto !important;\n    margin-bottom: auto !important;\n  }\n\n  .mt-xxl-0 {\n    margin-top: 0 !important;\n  }\n\n  .mt-xxl-1 {\n    margin-top: 0.25rem !important;\n  }\n\n  .mt-xxl-2 {\n    margin-top: 0.5rem !important;\n  }\n\n  .mt-xxl-3 {\n    margin-top: 1rem !important;\n  }\n\n  .mt-xxl-4 {\n    margin-top: 1.5rem !important;\n  }\n\n  .mt-xxl-5 {\n    margin-top: 3rem !important;\n  }\n\n  .mt-xxl-auto {\n    margin-top: auto !important;\n  }\n\n  .me-xxl-0 {\n    margin-right: 0 !important;\n  }\n\n  .me-xxl-1 {\n    margin-right: 0.25rem !important;\n  }\n\n  .me-xxl-2 {\n    margin-right: 0.5rem !important;\n  }\n\n  .me-xxl-3 {\n    margin-right: 1rem !important;\n  }\n\n  .me-xxl-4 {\n    margin-right: 1.5rem !important;\n  }\n\n  .me-xxl-5 {\n    margin-right: 3rem !important;\n  }\n\n  .me-xxl-auto {\n    margin-right: auto !important;\n  }\n\n  .mb-xxl-0 {\n    margin-bottom: 0 !important;\n  }\n\n  .mb-xxl-1 {\n    margin-bottom: 0.25rem !important;\n  }\n\n  .mb-xxl-2 {\n    margin-bottom: 0.5rem !important;\n  }\n\n  .mb-xxl-3 {\n    margin-bottom: 1rem !important;\n  }\n\n  .mb-xxl-4 {\n    margin-bottom: 1.5rem !important;\n  }\n\n  .mb-xxl-5 {\n    margin-bottom: 3rem !important;\n  }\n\n  .mb-xxl-auto {\n    margin-bottom: auto !important;\n  }\n\n  .ms-xxl-0 {\n    margin-left: 0 !important;\n  }\n\n  .ms-xxl-1 {\n    margin-left: 0.25rem !important;\n  }\n\n  .ms-xxl-2 {\n    margin-left: 0.5rem !important;\n  }\n\n  .ms-xxl-3 {\n    margin-left: 1rem !important;\n  }\n\n  .ms-xxl-4 {\n    margin-left: 1.5rem !important;\n  }\n\n  .ms-xxl-5 {\n    margin-left: 3rem !important;\n  }\n\n  .ms-xxl-auto {\n    margin-left: auto !important;\n  }\n\n  .p-xxl-0 {\n    padding: 0 !important;\n  }\n\n  .p-xxl-1 {\n    padding: 0.25rem !important;\n  }\n\n  .p-xxl-2 {\n    padding: 0.5rem !important;\n  }\n\n  .p-xxl-3 {\n    padding: 1rem !important;\n  }\n\n  .p-xxl-4 {\n    padding: 1.5rem !important;\n  }\n\n  .p-xxl-5 {\n    padding: 3rem !important;\n  }\n\n  .px-xxl-0 {\n    padding-right: 0 !important;\n    padding-left: 0 !important;\n  }\n\n  .px-xxl-1 {\n    padding-right: 0.25rem !important;\n    padding-left: 0.25rem !important;\n  }\n\n  .px-xxl-2 {\n    padding-right: 0.5rem !important;\n    padding-left: 0.5rem !important;\n  }\n\n  .px-xxl-3 {\n    padding-right: 1rem !important;\n    padding-left: 1rem !important;\n  }\n\n  .px-xxl-4 {\n    padding-right: 1.5rem !important;\n    padding-left: 1.5rem !important;\n  }\n\n  .px-xxl-5 {\n    padding-right: 3rem !important;\n    padding-left: 3rem !important;\n  }\n\n  .py-xxl-0 {\n    padding-top: 0 !important;\n    padding-bottom: 0 !important;\n  }\n\n  .py-xxl-1 {\n    padding-top: 0.25rem !important;\n    padding-bottom: 0.25rem !important;\n  }\n\n  .py-xxl-2 {\n    padding-top: 0.5rem !important;\n    padding-bottom: 0.5rem !important;\n  }\n\n  .py-xxl-3 {\n    padding-top: 1rem !important;\n    padding-bottom: 1rem !important;\n  }\n\n  .py-xxl-4 {\n    padding-top: 1.5rem !important;\n    padding-bottom: 1.5rem !important;\n  }\n\n  .py-xxl-5 {\n    padding-top: 3rem !important;\n    padding-bottom: 3rem !important;\n  }\n\n  .pt-xxl-0 {\n    padding-top: 0 !important;\n  }\n\n  .pt-xxl-1 {\n    padding-top: 0.25rem !important;\n  }\n\n  .pt-xxl-2 {\n    padding-top: 0.5rem !important;\n  }\n\n  .pt-xxl-3 {\n    padding-top: 1rem !important;\n  }\n\n  .pt-xxl-4 {\n    padding-top: 1.5rem !important;\n  }\n\n  .pt-xxl-5 {\n    padding-top: 3rem !important;\n  }\n\n  .pe-xxl-0 {\n    padding-right: 0 !important;\n  }\n\n  .pe-xxl-1 {\n    padding-right: 0.25rem !important;\n  }\n\n  .pe-xxl-2 {\n    padding-right: 0.5rem !important;\n  }\n\n  .pe-xxl-3 {\n    padding-right: 1rem !important;\n  }\n\n  .pe-xxl-4 {\n    padding-right: 1.5rem !important;\n  }\n\n  .pe-xxl-5 {\n    padding-right: 3rem !important;\n  }\n\n  .pb-xxl-0 {\n    padding-bottom: 0 !important;\n  }\n\n  .pb-xxl-1 {\n    padding-bottom: 0.25rem !important;\n  }\n\n  .pb-xxl-2 {\n    padding-bottom: 0.5rem !important;\n  }\n\n  .pb-xxl-3 {\n    padding-bottom: 1rem !important;\n  }\n\n  .pb-xxl-4 {\n    padding-bottom: 1.5rem !important;\n  }\n\n  .pb-xxl-5 {\n    padding-bottom: 3rem !important;\n  }\n\n  .ps-xxl-0 {\n    padding-left: 0 !important;\n  }\n\n  .ps-xxl-1 {\n    padding-left: 0.25rem !important;\n  }\n\n  .ps-xxl-2 {\n    padding-left: 0.5rem !important;\n  }\n\n  .ps-xxl-3 {\n    padding-left: 1rem !important;\n  }\n\n  .ps-xxl-4 {\n    padding-left: 1.5rem !important;\n  }\n\n  .ps-xxl-5 {\n    padding-left: 3rem !important;\n  }\n\n  .text-xxl-start {\n    text-align: left !important;\n  }\n\n  .text-xxl-end {\n    text-align: right !important;\n  }\n\n  .text-xxl-center {\n    text-align: center !important;\n  }\n}\n@media (min-width: 1200px) {\n  .fs-1 {\n    font-size: 2.5rem !important;\n  }\n\n  .fs-2 {\n    font-size: 2rem !important;\n  }\n\n  .fs-3 {\n    font-size: 1.75rem !important;\n  }\n\n  .fs-4 {\n    font-size: 1.5rem !important;\n  }\n}\n@media print {\n  .d-print-inline {\n    display: inline !important;\n  }\n\n  .d-print-inline-block {\n    display: inline-block !important;\n  }\n\n  .d-print-block {\n    display: block !important;\n  }\n\n  .d-print-grid {\n    display: grid !important;\n  }\n\n  .d-print-table {\n    display: table !important;\n  }\n\n  .d-print-table-row {\n    display: table-row !important;\n  }\n\n  .d-print-table-cell {\n    display: table-cell !important;\n  }\n\n  .d-print-flex {\n    display: flex !important;\n  }\n\n  .d-print-inline-flex {\n    display: inline-flex !important;\n  }\n\n  .d-print-none {\n    display: none !important;\n  }\n}\n\n/*# sourceMappingURL=bootstrap.css.map */"
  },
  {
    "path": "application/public/bootstrap/css/bootstrap.rtl.css",
    "content": "@charset \"UTF-8\";\n/*!\n * Bootstrap v5.1.3 (https://getbootstrap.com/)\n * Copyright 2011-2021 The Bootstrap Authors\n * Copyright 2011-2021 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n */\n:root {\n  --bs-blue: #0d6efd;\n  --bs-indigo: #6610f2;\n  --bs-purple: #6f42c1;\n  --bs-pink: #d63384;\n  --bs-red: #dc3545;\n  --bs-orange: #fd7e14;\n  --bs-yellow: #ffc107;\n  --bs-green: #198754;\n  --bs-teal: #20c997;\n  --bs-cyan: #0dcaf0;\n  --bs-white: #fff;\n  --bs-gray: #6c757d;\n  --bs-gray-dark: #343a40;\n  --bs-gray-100: #f8f9fa;\n  --bs-gray-200: #e9ecef;\n  --bs-gray-300: #dee2e6;\n  --bs-gray-400: #ced4da;\n  --bs-gray-500: #adb5bd;\n  --bs-gray-600: #6c757d;\n  --bs-gray-700: #495057;\n  --bs-gray-800: #343a40;\n  --bs-gray-900: #212529;\n  --bs-primary: #0d6efd;\n  --bs-secondary: #6c757d;\n  --bs-success: #198754;\n  --bs-info: #0dcaf0;\n  --bs-warning: #ffc107;\n  --bs-danger: #dc3545;\n  --bs-light: #f8f9fa;\n  --bs-dark: #212529;\n  --bs-primary-rgb: 13, 110, 253;\n  --bs-secondary-rgb: 108, 117, 125;\n  --bs-success-rgb: 25, 135, 84;\n  --bs-info-rgb: 13, 202, 240;\n  --bs-warning-rgb: 255, 193, 7;\n  --bs-danger-rgb: 220, 53, 69;\n  --bs-light-rgb: 248, 249, 250;\n  --bs-dark-rgb: 33, 37, 41;\n  --bs-white-rgb: 255, 255, 255;\n  --bs-black-rgb: 0, 0, 0;\n  --bs-body-color-rgb: 33, 37, 41;\n  --bs-body-bg-rgb: 255, 255, 255;\n  --bs-font-sans-serif: system-ui, -apple-system, \"Segoe UI\", Roboto, \"Helvetica Neue\", Arial, \"Noto Sans\", \"Liberation Sans\", sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\", \"Noto Color Emoji\";\n  --bs-font-monospace: SFMono-Regular, Menlo, Monaco, Consolas, \"Liberation Mono\", \"Courier New\", monospace;\n  --bs-gradient: linear-gradient(180deg, rgba(255, 255, 255, 0.15), rgba(255, 255, 255, 0));\n  --bs-body-font-family: var(--bs-font-sans-serif);\n  --bs-body-font-size: 1rem;\n  --bs-body-font-weight: 400;\n  --bs-body-line-height: 1.5;\n  --bs-body-color: #212529;\n  --bs-body-bg: #fff;\n}\n\n*,\n*::before,\n*::after {\n  box-sizing: border-box;\n}\n\n@media (prefers-reduced-motion: no-preference) {\n  :root {\n    scroll-behavior: smooth;\n  }\n}\n\nbody {\n  margin: 0;\n  font-family: var(--bs-body-font-family);\n  font-size: var(--bs-body-font-size);\n  font-weight: var(--bs-body-font-weight);\n  line-height: var(--bs-body-line-height);\n  color: var(--bs-body-color);\n  text-align: var(--bs-body-text-align);\n  background-color: var(--bs-body-bg);\n  -webkit-text-size-adjust: 100%;\n  -webkit-tap-highlight-color: rgba(0, 0, 0, 0);\n}\n\nhr {\n  margin: 1rem 0;\n  color: inherit;\n  background-color: currentColor;\n  border: 0;\n  opacity: 0.25;\n}\n\nhr:not([size]) {\n  height: 1px;\n}\n\nh6, .h6, h5, .h5, h4, .h4, h3, .h3, h2, .h2, h1, .h1 {\n  margin-top: 0;\n  margin-bottom: 0.5rem;\n  font-weight: 500;\n  line-height: 1.2;\n}\n\nh1, .h1 {\n  font-size: calc(1.375rem + 1.5vw);\n}\n@media (min-width: 1200px) {\n  h1, .h1 {\n    font-size: 2.5rem;\n  }\n}\n\nh2, .h2 {\n  font-size: calc(1.325rem + 0.9vw);\n}\n@media (min-width: 1200px) {\n  h2, .h2 {\n    font-size: 2rem;\n  }\n}\n\nh3, .h3 {\n  font-size: calc(1.3rem + 0.6vw);\n}\n@media (min-width: 1200px) {\n  h3, .h3 {\n    font-size: 1.75rem;\n  }\n}\n\nh4, .h4 {\n  font-size: calc(1.275rem + 0.3vw);\n}\n@media (min-width: 1200px) {\n  h4, .h4 {\n    font-size: 1.5rem;\n  }\n}\n\nh5, .h5 {\n  font-size: 1.25rem;\n}\n\nh6, .h6 {\n  font-size: 1rem;\n}\n\np {\n  margin-top: 0;\n  margin-bottom: 1rem;\n}\n\nabbr[title],\nabbr[data-bs-original-title] {\n  -webkit-text-decoration: underline dotted;\n  text-decoration: underline dotted;\n  cursor: help;\n  -webkit-text-decoration-skip-ink: none;\n  text-decoration-skip-ink: none;\n}\n\naddress {\n  margin-bottom: 1rem;\n  font-style: normal;\n  line-height: inherit;\n}\n\nol,\nul {\n  padding-right: 2rem;\n}\n\nol,\nul,\ndl {\n  margin-top: 0;\n  margin-bottom: 1rem;\n}\n\nol ol,\nul ul,\nol ul,\nul ol {\n  margin-bottom: 0;\n}\n\ndt {\n  font-weight: 700;\n}\n\ndd {\n  margin-bottom: 0.5rem;\n  margin-right: 0;\n}\n\nblockquote {\n  margin: 0 0 1rem;\n}\n\nb,\nstrong {\n  font-weight: bolder;\n}\n\nsmall, .small {\n  font-size: 0.875em;\n}\n\nmark, .mark {\n  padding: 0.2em;\n  background-color: #fcf8e3;\n}\n\nsub,\nsup {\n  position: relative;\n  font-size: 0.75em;\n  line-height: 0;\n  vertical-align: baseline;\n}\n\nsub {\n  bottom: -0.25em;\n}\n\nsup {\n  top: -0.5em;\n}\n\na {\n  color: #0d6efd;\n  text-decoration: underline;\n}\na:hover {\n  color: #0a58ca;\n}\n\na:not([href]):not([class]), a:not([href]):not([class]):hover {\n  color: inherit;\n  text-decoration: none;\n}\n\npre,\ncode,\nkbd,\nsamp {\n  font-family: var(--bs-font-monospace);\n  font-size: 1em;\n  direction: ltr ;\n  unicode-bidi: bidi-override;\n}\n\npre {\n  display: block;\n  margin-top: 0;\n  margin-bottom: 1rem;\n  overflow: auto;\n  font-size: 0.875em;\n}\npre code {\n  font-size: inherit;\n  color: inherit;\n  word-break: normal;\n}\n\ncode {\n  font-size: 0.875em;\n  color: #d63384;\n  word-wrap: break-word;\n}\na > code {\n  color: inherit;\n}\n\nkbd {\n  padding: 0.2rem 0.4rem;\n  font-size: 0.875em;\n  color: #fff;\n  background-color: #212529;\n  border-radius: 0.2rem;\n}\nkbd kbd {\n  padding: 0;\n  font-size: 1em;\n  font-weight: 700;\n}\n\nfigure {\n  margin: 0 0 1rem;\n}\n\nimg,\nsvg {\n  vertical-align: middle;\n}\n\ntable {\n  caption-side: bottom;\n  border-collapse: collapse;\n}\n\ncaption {\n  padding-top: 0.5rem;\n  padding-bottom: 0.5rem;\n  color: #6c757d;\n  text-align: right;\n}\n\nth {\n  text-align: inherit;\n  text-align: -webkit-match-parent;\n}\n\nthead,\ntbody,\ntfoot,\ntr,\ntd,\nth {\n  border-color: inherit;\n  border-style: solid;\n  border-width: 0;\n}\n\nlabel {\n  display: inline-block;\n}\n\nbutton {\n  border-radius: 0;\n}\n\nbutton:focus:not(:focus-visible) {\n  outline: 0;\n}\n\ninput,\nbutton,\nselect,\noptgroup,\ntextarea {\n  margin: 0;\n  font-family: inherit;\n  font-size: inherit;\n  line-height: inherit;\n}\n\nbutton,\nselect {\n  text-transform: none;\n}\n\n[role=button] {\n  cursor: pointer;\n}\n\nselect {\n  word-wrap: normal;\n}\nselect:disabled {\n  opacity: 1;\n}\n\n[list]::-webkit-calendar-picker-indicator {\n  display: none;\n}\n\nbutton,\n[type=button],\n[type=reset],\n[type=submit] {\n  -webkit-appearance: button;\n}\nbutton:not(:disabled),\n[type=button]:not(:disabled),\n[type=reset]:not(:disabled),\n[type=submit]:not(:disabled) {\n  cursor: pointer;\n}\n\n::-moz-focus-inner {\n  padding: 0;\n  border-style: none;\n}\n\ntextarea {\n  resize: vertical;\n}\n\nfieldset {\n  min-width: 0;\n  padding: 0;\n  margin: 0;\n  border: 0;\n}\n\nlegend {\n  float: right;\n  width: 100%;\n  padding: 0;\n  margin-bottom: 0.5rem;\n  font-size: calc(1.275rem + 0.3vw);\n  line-height: inherit;\n}\n@media (min-width: 1200px) {\n  legend {\n    font-size: 1.5rem;\n  }\n}\nlegend + * {\n  clear: right;\n}\n\n::-webkit-datetime-edit-fields-wrapper,\n::-webkit-datetime-edit-text,\n::-webkit-datetime-edit-minute,\n::-webkit-datetime-edit-hour-field,\n::-webkit-datetime-edit-day-field,\n::-webkit-datetime-edit-month-field,\n::-webkit-datetime-edit-year-field {\n  padding: 0;\n}\n\n::-webkit-inner-spin-button {\n  height: auto;\n}\n\n[type=search] {\n  outline-offset: -2px;\n  -webkit-appearance: textfield;\n}\n\n[type=\"tel\"],\n[type=\"url\"],\n[type=\"email\"],\n[type=\"number\"] {\n  direction: ltr;\n}\n::-webkit-search-decoration {\n  -webkit-appearance: none;\n}\n\n::-webkit-color-swatch-wrapper {\n  padding: 0;\n}\n\n::-webkit-file-upload-button {\n  font: inherit;\n}\n\n::file-selector-button {\n  font: inherit;\n}\n\n::-webkit-file-upload-button {\n  font: inherit;\n  -webkit-appearance: button;\n}\n\noutput {\n  display: inline-block;\n}\n\niframe {\n  border: 0;\n}\n\nsummary {\n  display: list-item;\n  cursor: pointer;\n}\n\nprogress {\n  vertical-align: baseline;\n}\n\n[hidden] {\n  display: none !important;\n}\n\n.lead {\n  font-size: 1.25rem;\n  font-weight: 300;\n}\n\n.display-1 {\n  font-size: calc(1.625rem + 4.5vw);\n  font-weight: 300;\n  line-height: 1.2;\n}\n@media (min-width: 1200px) {\n  .display-1 {\n    font-size: 5rem;\n  }\n}\n\n.display-2 {\n  font-size: calc(1.575rem + 3.9vw);\n  font-weight: 300;\n  line-height: 1.2;\n}\n@media (min-width: 1200px) {\n  .display-2 {\n    font-size: 4.5rem;\n  }\n}\n\n.display-3 {\n  font-size: calc(1.525rem + 3.3vw);\n  font-weight: 300;\n  line-height: 1.2;\n}\n@media (min-width: 1200px) {\n  .display-3 {\n    font-size: 4rem;\n  }\n}\n\n.display-4 {\n  font-size: calc(1.475rem + 2.7vw);\n  font-weight: 300;\n  line-height: 1.2;\n}\n@media (min-width: 1200px) {\n  .display-4 {\n    font-size: 3.5rem;\n  }\n}\n\n.display-5 {\n  font-size: calc(1.425rem + 2.1vw);\n  font-weight: 300;\n  line-height: 1.2;\n}\n@media (min-width: 1200px) {\n  .display-5 {\n    font-size: 3rem;\n  }\n}\n\n.display-6 {\n  font-size: calc(1.375rem + 1.5vw);\n  font-weight: 300;\n  line-height: 1.2;\n}\n@media (min-width: 1200px) {\n  .display-6 {\n    font-size: 2.5rem;\n  }\n}\n\n.list-unstyled {\n  padding-right: 0;\n  list-style: none;\n}\n\n.list-inline {\n  padding-right: 0;\n  list-style: none;\n}\n\n.list-inline-item {\n  display: inline-block;\n}\n.list-inline-item:not(:last-child) {\n  margin-left: 0.5rem;\n}\n\n.initialism {\n  font-size: 0.875em;\n  text-transform: uppercase;\n}\n\n.blockquote {\n  margin-bottom: 1rem;\n  font-size: 1.25rem;\n}\n.blockquote > :last-child {\n  margin-bottom: 0;\n}\n\n.blockquote-footer {\n  margin-top: -1rem;\n  margin-bottom: 1rem;\n  font-size: 0.875em;\n  color: #6c757d;\n}\n.blockquote-footer::before {\n  content: \"— \";\n}\n\n.img-fluid {\n  max-width: 100%;\n  height: auto;\n}\n\n.img-thumbnail {\n  padding: 0.25rem;\n  background-color: #fff;\n  border: 1px solid #dee2e6;\n  border-radius: 0.25rem;\n  max-width: 100%;\n  height: auto;\n}\n\n.figure {\n  display: inline-block;\n}\n\n.figure-img {\n  margin-bottom: 0.5rem;\n  line-height: 1;\n}\n\n.figure-caption {\n  font-size: 0.875em;\n  color: #6c757d;\n}\n\n.container,\n.container-fluid,\n.container-xxl,\n.container-xl,\n.container-lg,\n.container-md,\n.container-sm {\n  width: 100%;\n  padding-left: var(--bs-gutter-x, 0.75rem);\n  padding-right: var(--bs-gutter-x, 0.75rem);\n  margin-left: auto;\n  margin-right: auto;\n}\n\n@media (min-width: 576px) {\n  .container-sm, .container {\n    max-width: 540px;\n  }\n}\n@media (min-width: 768px) {\n  .container-md, .container-sm, .container {\n    max-width: 720px;\n  }\n}\n@media (min-width: 992px) {\n  .container-lg, .container-md, .container-sm, .container {\n    max-width: 960px;\n  }\n}\n@media (min-width: 1200px) {\n  .container-xl, .container-lg, .container-md, .container-sm, .container {\n    max-width: 1140px;\n  }\n}\n@media (min-width: 1400px) {\n  .container-xxl, .container-xl, .container-lg, .container-md, .container-sm, .container {\n    max-width: 1320px;\n  }\n}\n.row {\n  --bs-gutter-x: 1.5rem;\n  --bs-gutter-y: 0;\n  display: flex;\n  flex-wrap: wrap;\n  margin-top: calc(-1 * var(--bs-gutter-y));\n  margin-left: calc(-0.5 * var(--bs-gutter-x));\n  margin-right: calc(-0.5 * var(--bs-gutter-x));\n}\n.row > * {\n  flex-shrink: 0;\n  width: 100%;\n  max-width: 100%;\n  padding-left: calc(var(--bs-gutter-x) * 0.5);\n  padding-right: calc(var(--bs-gutter-x) * 0.5);\n  margin-top: var(--bs-gutter-y);\n}\n\n.col {\n  flex: 1 0 0%;\n}\n\n.row-cols-auto > * {\n  flex: 0 0 auto;\n  width: auto;\n}\n\n.row-cols-1 > * {\n  flex: 0 0 auto;\n  width: 100%;\n}\n\n.row-cols-2 > * {\n  flex: 0 0 auto;\n  width: 50%;\n}\n\n.row-cols-3 > * {\n  flex: 0 0 auto;\n  width: 33.3333333333%;\n}\n\n.row-cols-4 > * {\n  flex: 0 0 auto;\n  width: 25%;\n}\n\n.row-cols-5 > * {\n  flex: 0 0 auto;\n  width: 20%;\n}\n\n.row-cols-6 > * {\n  flex: 0 0 auto;\n  width: 16.6666666667%;\n}\n\n.col-auto {\n  flex: 0 0 auto;\n  width: auto;\n}\n\n.col-1 {\n  flex: 0 0 auto;\n  width: 8.33333333%;\n}\n\n.col-2 {\n  flex: 0 0 auto;\n  width: 16.66666667%;\n}\n\n.col-3 {\n  flex: 0 0 auto;\n  width: 25%;\n}\n\n.col-4 {\n  flex: 0 0 auto;\n  width: 33.33333333%;\n}\n\n.col-5 {\n  flex: 0 0 auto;\n  width: 41.66666667%;\n}\n\n.col-6 {\n  flex: 0 0 auto;\n  width: 50%;\n}\n\n.col-7 {\n  flex: 0 0 auto;\n  width: 58.33333333%;\n}\n\n.col-8 {\n  flex: 0 0 auto;\n  width: 66.66666667%;\n}\n\n.col-9 {\n  flex: 0 0 auto;\n  width: 75%;\n}\n\n.col-10 {\n  flex: 0 0 auto;\n  width: 83.33333333%;\n}\n\n.col-11 {\n  flex: 0 0 auto;\n  width: 91.66666667%;\n}\n\n.col-12 {\n  flex: 0 0 auto;\n  width: 100%;\n}\n\n.offset-1 {\n  margin-right: 8.33333333%;\n}\n\n.offset-2 {\n  margin-right: 16.66666667%;\n}\n\n.offset-3 {\n  margin-right: 25%;\n}\n\n.offset-4 {\n  margin-right: 33.33333333%;\n}\n\n.offset-5 {\n  margin-right: 41.66666667%;\n}\n\n.offset-6 {\n  margin-right: 50%;\n}\n\n.offset-7 {\n  margin-right: 58.33333333%;\n}\n\n.offset-8 {\n  margin-right: 66.66666667%;\n}\n\n.offset-9 {\n  margin-right: 75%;\n}\n\n.offset-10 {\n  margin-right: 83.33333333%;\n}\n\n.offset-11 {\n  margin-right: 91.66666667%;\n}\n\n.g-0,\n.gx-0 {\n  --bs-gutter-x: 0;\n}\n\n.g-0,\n.gy-0 {\n  --bs-gutter-y: 0;\n}\n\n.g-1,\n.gx-1 {\n  --bs-gutter-x: 0.25rem;\n}\n\n.g-1,\n.gy-1 {\n  --bs-gutter-y: 0.25rem;\n}\n\n.g-2,\n.gx-2 {\n  --bs-gutter-x: 0.5rem;\n}\n\n.g-2,\n.gy-2 {\n  --bs-gutter-y: 0.5rem;\n}\n\n.g-3,\n.gx-3 {\n  --bs-gutter-x: 1rem;\n}\n\n.g-3,\n.gy-3 {\n  --bs-gutter-y: 1rem;\n}\n\n.g-4,\n.gx-4 {\n  --bs-gutter-x: 1.5rem;\n}\n\n.g-4,\n.gy-4 {\n  --bs-gutter-y: 1.5rem;\n}\n\n.g-5,\n.gx-5 {\n  --bs-gutter-x: 3rem;\n}\n\n.g-5,\n.gy-5 {\n  --bs-gutter-y: 3rem;\n}\n\n@media (min-width: 576px) {\n  .col-sm {\n    flex: 1 0 0%;\n  }\n\n  .row-cols-sm-auto > * {\n    flex: 0 0 auto;\n    width: auto;\n  }\n\n  .row-cols-sm-1 > * {\n    flex: 0 0 auto;\n    width: 100%;\n  }\n\n  .row-cols-sm-2 > * {\n    flex: 0 0 auto;\n    width: 50%;\n  }\n\n  .row-cols-sm-3 > * {\n    flex: 0 0 auto;\n    width: 33.3333333333%;\n  }\n\n  .row-cols-sm-4 > * {\n    flex: 0 0 auto;\n    width: 25%;\n  }\n\n  .row-cols-sm-5 > * {\n    flex: 0 0 auto;\n    width: 20%;\n  }\n\n  .row-cols-sm-6 > * {\n    flex: 0 0 auto;\n    width: 16.6666666667%;\n  }\n\n  .col-sm-auto {\n    flex: 0 0 auto;\n    width: auto;\n  }\n\n  .col-sm-1 {\n    flex: 0 0 auto;\n    width: 8.33333333%;\n  }\n\n  .col-sm-2 {\n    flex: 0 0 auto;\n    width: 16.66666667%;\n  }\n\n  .col-sm-3 {\n    flex: 0 0 auto;\n    width: 25%;\n  }\n\n  .col-sm-4 {\n    flex: 0 0 auto;\n    width: 33.33333333%;\n  }\n\n  .col-sm-5 {\n    flex: 0 0 auto;\n    width: 41.66666667%;\n  }\n\n  .col-sm-6 {\n    flex: 0 0 auto;\n    width: 50%;\n  }\n\n  .col-sm-7 {\n    flex: 0 0 auto;\n    width: 58.33333333%;\n  }\n\n  .col-sm-8 {\n    flex: 0 0 auto;\n    width: 66.66666667%;\n  }\n\n  .col-sm-9 {\n    flex: 0 0 auto;\n    width: 75%;\n  }\n\n  .col-sm-10 {\n    flex: 0 0 auto;\n    width: 83.33333333%;\n  }\n\n  .col-sm-11 {\n    flex: 0 0 auto;\n    width: 91.66666667%;\n  }\n\n  .col-sm-12 {\n    flex: 0 0 auto;\n    width: 100%;\n  }\n\n  .offset-sm-0 {\n    margin-right: 0;\n  }\n\n  .offset-sm-1 {\n    margin-right: 8.33333333%;\n  }\n\n  .offset-sm-2 {\n    margin-right: 16.66666667%;\n  }\n\n  .offset-sm-3 {\n    margin-right: 25%;\n  }\n\n  .offset-sm-4 {\n    margin-right: 33.33333333%;\n  }\n\n  .offset-sm-5 {\n    margin-right: 41.66666667%;\n  }\n\n  .offset-sm-6 {\n    margin-right: 50%;\n  }\n\n  .offset-sm-7 {\n    margin-right: 58.33333333%;\n  }\n\n  .offset-sm-8 {\n    margin-right: 66.66666667%;\n  }\n\n  .offset-sm-9 {\n    margin-right: 75%;\n  }\n\n  .offset-sm-10 {\n    margin-right: 83.33333333%;\n  }\n\n  .offset-sm-11 {\n    margin-right: 91.66666667%;\n  }\n\n  .g-sm-0,\n.gx-sm-0 {\n    --bs-gutter-x: 0;\n  }\n\n  .g-sm-0,\n.gy-sm-0 {\n    --bs-gutter-y: 0;\n  }\n\n  .g-sm-1,\n.gx-sm-1 {\n    --bs-gutter-x: 0.25rem;\n  }\n\n  .g-sm-1,\n.gy-sm-1 {\n    --bs-gutter-y: 0.25rem;\n  }\n\n  .g-sm-2,\n.gx-sm-2 {\n    --bs-gutter-x: 0.5rem;\n  }\n\n  .g-sm-2,\n.gy-sm-2 {\n    --bs-gutter-y: 0.5rem;\n  }\n\n  .g-sm-3,\n.gx-sm-3 {\n    --bs-gutter-x: 1rem;\n  }\n\n  .g-sm-3,\n.gy-sm-3 {\n    --bs-gutter-y: 1rem;\n  }\n\n  .g-sm-4,\n.gx-sm-4 {\n    --bs-gutter-x: 1.5rem;\n  }\n\n  .g-sm-4,\n.gy-sm-4 {\n    --bs-gutter-y: 1.5rem;\n  }\n\n  .g-sm-5,\n.gx-sm-5 {\n    --bs-gutter-x: 3rem;\n  }\n\n  .g-sm-5,\n.gy-sm-5 {\n    --bs-gutter-y: 3rem;\n  }\n}\n@media (min-width: 768px) {\n  .col-md {\n    flex: 1 0 0%;\n  }\n\n  .row-cols-md-auto > * {\n    flex: 0 0 auto;\n    width: auto;\n  }\n\n  .row-cols-md-1 > * {\n    flex: 0 0 auto;\n    width: 100%;\n  }\n\n  .row-cols-md-2 > * {\n    flex: 0 0 auto;\n    width: 50%;\n  }\n\n  .row-cols-md-3 > * {\n    flex: 0 0 auto;\n    width: 33.3333333333%;\n  }\n\n  .row-cols-md-4 > * {\n    flex: 0 0 auto;\n    width: 25%;\n  }\n\n  .row-cols-md-5 > * {\n    flex: 0 0 auto;\n    width: 20%;\n  }\n\n  .row-cols-md-6 > * {\n    flex: 0 0 auto;\n    width: 16.6666666667%;\n  }\n\n  .col-md-auto {\n    flex: 0 0 auto;\n    width: auto;\n  }\n\n  .col-md-1 {\n    flex: 0 0 auto;\n    width: 8.33333333%;\n  }\n\n  .col-md-2 {\n    flex: 0 0 auto;\n    width: 16.66666667%;\n  }\n\n  .col-md-3 {\n    flex: 0 0 auto;\n    width: 25%;\n  }\n\n  .col-md-4 {\n    flex: 0 0 auto;\n    width: 33.33333333%;\n  }\n\n  .col-md-5 {\n    flex: 0 0 auto;\n    width: 41.66666667%;\n  }\n\n  .col-md-6 {\n    flex: 0 0 auto;\n    width: 50%;\n  }\n\n  .col-md-7 {\n    flex: 0 0 auto;\n    width: 58.33333333%;\n  }\n\n  .col-md-8 {\n    flex: 0 0 auto;\n    width: 66.66666667%;\n  }\n\n  .col-md-9 {\n    flex: 0 0 auto;\n    width: 75%;\n  }\n\n  .col-md-10 {\n    flex: 0 0 auto;\n    width: 83.33333333%;\n  }\n\n  .col-md-11 {\n    flex: 0 0 auto;\n    width: 91.66666667%;\n  }\n\n  .col-md-12 {\n    flex: 0 0 auto;\n    width: 100%;\n  }\n\n  .offset-md-0 {\n    margin-right: 0;\n  }\n\n  .offset-md-1 {\n    margin-right: 8.33333333%;\n  }\n\n  .offset-md-2 {\n    margin-right: 16.66666667%;\n  }\n\n  .offset-md-3 {\n    margin-right: 25%;\n  }\n\n  .offset-md-4 {\n    margin-right: 33.33333333%;\n  }\n\n  .offset-md-5 {\n    margin-right: 41.66666667%;\n  }\n\n  .offset-md-6 {\n    margin-right: 50%;\n  }\n\n  .offset-md-7 {\n    margin-right: 58.33333333%;\n  }\n\n  .offset-md-8 {\n    margin-right: 66.66666667%;\n  }\n\n  .offset-md-9 {\n    margin-right: 75%;\n  }\n\n  .offset-md-10 {\n    margin-right: 83.33333333%;\n  }\n\n  .offset-md-11 {\n    margin-right: 91.66666667%;\n  }\n\n  .g-md-0,\n.gx-md-0 {\n    --bs-gutter-x: 0;\n  }\n\n  .g-md-0,\n.gy-md-0 {\n    --bs-gutter-y: 0;\n  }\n\n  .g-md-1,\n.gx-md-1 {\n    --bs-gutter-x: 0.25rem;\n  }\n\n  .g-md-1,\n.gy-md-1 {\n    --bs-gutter-y: 0.25rem;\n  }\n\n  .g-md-2,\n.gx-md-2 {\n    --bs-gutter-x: 0.5rem;\n  }\n\n  .g-md-2,\n.gy-md-2 {\n    --bs-gutter-y: 0.5rem;\n  }\n\n  .g-md-3,\n.gx-md-3 {\n    --bs-gutter-x: 1rem;\n  }\n\n  .g-md-3,\n.gy-md-3 {\n    --bs-gutter-y: 1rem;\n  }\n\n  .g-md-4,\n.gx-md-4 {\n    --bs-gutter-x: 1.5rem;\n  }\n\n  .g-md-4,\n.gy-md-4 {\n    --bs-gutter-y: 1.5rem;\n  }\n\n  .g-md-5,\n.gx-md-5 {\n    --bs-gutter-x: 3rem;\n  }\n\n  .g-md-5,\n.gy-md-5 {\n    --bs-gutter-y: 3rem;\n  }\n}\n@media (min-width: 992px) {\n  .col-lg {\n    flex: 1 0 0%;\n  }\n\n  .row-cols-lg-auto > * {\n    flex: 0 0 auto;\n    width: auto;\n  }\n\n  .row-cols-lg-1 > * {\n    flex: 0 0 auto;\n    width: 100%;\n  }\n\n  .row-cols-lg-2 > * {\n    flex: 0 0 auto;\n    width: 50%;\n  }\n\n  .row-cols-lg-3 > * {\n    flex: 0 0 auto;\n    width: 33.3333333333%;\n  }\n\n  .row-cols-lg-4 > * {\n    flex: 0 0 auto;\n    width: 25%;\n  }\n\n  .row-cols-lg-5 > * {\n    flex: 0 0 auto;\n    width: 20%;\n  }\n\n  .row-cols-lg-6 > * {\n    flex: 0 0 auto;\n    width: 16.6666666667%;\n  }\n\n  .col-lg-auto {\n    flex: 0 0 auto;\n    width: auto;\n  }\n\n  .col-lg-1 {\n    flex: 0 0 auto;\n    width: 8.33333333%;\n  }\n\n  .col-lg-2 {\n    flex: 0 0 auto;\n    width: 16.66666667%;\n  }\n\n  .col-lg-3 {\n    flex: 0 0 auto;\n    width: 25%;\n  }\n\n  .col-lg-4 {\n    flex: 0 0 auto;\n    width: 33.33333333%;\n  }\n\n  .col-lg-5 {\n    flex: 0 0 auto;\n    width: 41.66666667%;\n  }\n\n  .col-lg-6 {\n    flex: 0 0 auto;\n    width: 50%;\n  }\n\n  .col-lg-7 {\n    flex: 0 0 auto;\n    width: 58.33333333%;\n  }\n\n  .col-lg-8 {\n    flex: 0 0 auto;\n    width: 66.66666667%;\n  }\n\n  .col-lg-9 {\n    flex: 0 0 auto;\n    width: 75%;\n  }\n\n  .col-lg-10 {\n    flex: 0 0 auto;\n    width: 83.33333333%;\n  }\n\n  .col-lg-11 {\n    flex: 0 0 auto;\n    width: 91.66666667%;\n  }\n\n  .col-lg-12 {\n    flex: 0 0 auto;\n    width: 100%;\n  }\n\n  .offset-lg-0 {\n    margin-right: 0;\n  }\n\n  .offset-lg-1 {\n    margin-right: 8.33333333%;\n  }\n\n  .offset-lg-2 {\n    margin-right: 16.66666667%;\n  }\n\n  .offset-lg-3 {\n    margin-right: 25%;\n  }\n\n  .offset-lg-4 {\n    margin-right: 33.33333333%;\n  }\n\n  .offset-lg-5 {\n    margin-right: 41.66666667%;\n  }\n\n  .offset-lg-6 {\n    margin-right: 50%;\n  }\n\n  .offset-lg-7 {\n    margin-right: 58.33333333%;\n  }\n\n  .offset-lg-8 {\n    margin-right: 66.66666667%;\n  }\n\n  .offset-lg-9 {\n    margin-right: 75%;\n  }\n\n  .offset-lg-10 {\n    margin-right: 83.33333333%;\n  }\n\n  .offset-lg-11 {\n    margin-right: 91.66666667%;\n  }\n\n  .g-lg-0,\n.gx-lg-0 {\n    --bs-gutter-x: 0;\n  }\n\n  .g-lg-0,\n.gy-lg-0 {\n    --bs-gutter-y: 0;\n  }\n\n  .g-lg-1,\n.gx-lg-1 {\n    --bs-gutter-x: 0.25rem;\n  }\n\n  .g-lg-1,\n.gy-lg-1 {\n    --bs-gutter-y: 0.25rem;\n  }\n\n  .g-lg-2,\n.gx-lg-2 {\n    --bs-gutter-x: 0.5rem;\n  }\n\n  .g-lg-2,\n.gy-lg-2 {\n    --bs-gutter-y: 0.5rem;\n  }\n\n  .g-lg-3,\n.gx-lg-3 {\n    --bs-gutter-x: 1rem;\n  }\n\n  .g-lg-3,\n.gy-lg-3 {\n    --bs-gutter-y: 1rem;\n  }\n\n  .g-lg-4,\n.gx-lg-4 {\n    --bs-gutter-x: 1.5rem;\n  }\n\n  .g-lg-4,\n.gy-lg-4 {\n    --bs-gutter-y: 1.5rem;\n  }\n\n  .g-lg-5,\n.gx-lg-5 {\n    --bs-gutter-x: 3rem;\n  }\n\n  .g-lg-5,\n.gy-lg-5 {\n    --bs-gutter-y: 3rem;\n  }\n}\n@media (min-width: 1200px) {\n  .col-xl {\n    flex: 1 0 0%;\n  }\n\n  .row-cols-xl-auto > * {\n    flex: 0 0 auto;\n    width: auto;\n  }\n\n  .row-cols-xl-1 > * {\n    flex: 0 0 auto;\n    width: 100%;\n  }\n\n  .row-cols-xl-2 > * {\n    flex: 0 0 auto;\n    width: 50%;\n  }\n\n  .row-cols-xl-3 > * {\n    flex: 0 0 auto;\n    width: 33.3333333333%;\n  }\n\n  .row-cols-xl-4 > * {\n    flex: 0 0 auto;\n    width: 25%;\n  }\n\n  .row-cols-xl-5 > * {\n    flex: 0 0 auto;\n    width: 20%;\n  }\n\n  .row-cols-xl-6 > * {\n    flex: 0 0 auto;\n    width: 16.6666666667%;\n  }\n\n  .col-xl-auto {\n    flex: 0 0 auto;\n    width: auto;\n  }\n\n  .col-xl-1 {\n    flex: 0 0 auto;\n    width: 8.33333333%;\n  }\n\n  .col-xl-2 {\n    flex: 0 0 auto;\n    width: 16.66666667%;\n  }\n\n  .col-xl-3 {\n    flex: 0 0 auto;\n    width: 25%;\n  }\n\n  .col-xl-4 {\n    flex: 0 0 auto;\n    width: 33.33333333%;\n  }\n\n  .col-xl-5 {\n    flex: 0 0 auto;\n    width: 41.66666667%;\n  }\n\n  .col-xl-6 {\n    flex: 0 0 auto;\n    width: 50%;\n  }\n\n  .col-xl-7 {\n    flex: 0 0 auto;\n    width: 58.33333333%;\n  }\n\n  .col-xl-8 {\n    flex: 0 0 auto;\n    width: 66.66666667%;\n  }\n\n  .col-xl-9 {\n    flex: 0 0 auto;\n    width: 75%;\n  }\n\n  .col-xl-10 {\n    flex: 0 0 auto;\n    width: 83.33333333%;\n  }\n\n  .col-xl-11 {\n    flex: 0 0 auto;\n    width: 91.66666667%;\n  }\n\n  .col-xl-12 {\n    flex: 0 0 auto;\n    width: 100%;\n  }\n\n  .offset-xl-0 {\n    margin-right: 0;\n  }\n\n  .offset-xl-1 {\n    margin-right: 8.33333333%;\n  }\n\n  .offset-xl-2 {\n    margin-right: 16.66666667%;\n  }\n\n  .offset-xl-3 {\n    margin-right: 25%;\n  }\n\n  .offset-xl-4 {\n    margin-right: 33.33333333%;\n  }\n\n  .offset-xl-5 {\n    margin-right: 41.66666667%;\n  }\n\n  .offset-xl-6 {\n    margin-right: 50%;\n  }\n\n  .offset-xl-7 {\n    margin-right: 58.33333333%;\n  }\n\n  .offset-xl-8 {\n    margin-right: 66.66666667%;\n  }\n\n  .offset-xl-9 {\n    margin-right: 75%;\n  }\n\n  .offset-xl-10 {\n    margin-right: 83.33333333%;\n  }\n\n  .offset-xl-11 {\n    margin-right: 91.66666667%;\n  }\n\n  .g-xl-0,\n.gx-xl-0 {\n    --bs-gutter-x: 0;\n  }\n\n  .g-xl-0,\n.gy-xl-0 {\n    --bs-gutter-y: 0;\n  }\n\n  .g-xl-1,\n.gx-xl-1 {\n    --bs-gutter-x: 0.25rem;\n  }\n\n  .g-xl-1,\n.gy-xl-1 {\n    --bs-gutter-y: 0.25rem;\n  }\n\n  .g-xl-2,\n.gx-xl-2 {\n    --bs-gutter-x: 0.5rem;\n  }\n\n  .g-xl-2,\n.gy-xl-2 {\n    --bs-gutter-y: 0.5rem;\n  }\n\n  .g-xl-3,\n.gx-xl-3 {\n    --bs-gutter-x: 1rem;\n  }\n\n  .g-xl-3,\n.gy-xl-3 {\n    --bs-gutter-y: 1rem;\n  }\n\n  .g-xl-4,\n.gx-xl-4 {\n    --bs-gutter-x: 1.5rem;\n  }\n\n  .g-xl-4,\n.gy-xl-4 {\n    --bs-gutter-y: 1.5rem;\n  }\n\n  .g-xl-5,\n.gx-xl-5 {\n    --bs-gutter-x: 3rem;\n  }\n\n  .g-xl-5,\n.gy-xl-5 {\n    --bs-gutter-y: 3rem;\n  }\n}\n@media (min-width: 1400px) {\n  .col-xxl {\n    flex: 1 0 0%;\n  }\n\n  .row-cols-xxl-auto > * {\n    flex: 0 0 auto;\n    width: auto;\n  }\n\n  .row-cols-xxl-1 > * {\n    flex: 0 0 auto;\n    width: 100%;\n  }\n\n  .row-cols-xxl-2 > * {\n    flex: 0 0 auto;\n    width: 50%;\n  }\n\n  .row-cols-xxl-3 > * {\n    flex: 0 0 auto;\n    width: 33.3333333333%;\n  }\n\n  .row-cols-xxl-4 > * {\n    flex: 0 0 auto;\n    width: 25%;\n  }\n\n  .row-cols-xxl-5 > * {\n    flex: 0 0 auto;\n    width: 20%;\n  }\n\n  .row-cols-xxl-6 > * {\n    flex: 0 0 auto;\n    width: 16.6666666667%;\n  }\n\n  .col-xxl-auto {\n    flex: 0 0 auto;\n    width: auto;\n  }\n\n  .col-xxl-1 {\n    flex: 0 0 auto;\n    width: 8.33333333%;\n  }\n\n  .col-xxl-2 {\n    flex: 0 0 auto;\n    width: 16.66666667%;\n  }\n\n  .col-xxl-3 {\n    flex: 0 0 auto;\n    width: 25%;\n  }\n\n  .col-xxl-4 {\n    flex: 0 0 auto;\n    width: 33.33333333%;\n  }\n\n  .col-xxl-5 {\n    flex: 0 0 auto;\n    width: 41.66666667%;\n  }\n\n  .col-xxl-6 {\n    flex: 0 0 auto;\n    width: 50%;\n  }\n\n  .col-xxl-7 {\n    flex: 0 0 auto;\n    width: 58.33333333%;\n  }\n\n  .col-xxl-8 {\n    flex: 0 0 auto;\n    width: 66.66666667%;\n  }\n\n  .col-xxl-9 {\n    flex: 0 0 auto;\n    width: 75%;\n  }\n\n  .col-xxl-10 {\n    flex: 0 0 auto;\n    width: 83.33333333%;\n  }\n\n  .col-xxl-11 {\n    flex: 0 0 auto;\n    width: 91.66666667%;\n  }\n\n  .col-xxl-12 {\n    flex: 0 0 auto;\n    width: 100%;\n  }\n\n  .offset-xxl-0 {\n    margin-right: 0;\n  }\n\n  .offset-xxl-1 {\n    margin-right: 8.33333333%;\n  }\n\n  .offset-xxl-2 {\n    margin-right: 16.66666667%;\n  }\n\n  .offset-xxl-3 {\n    margin-right: 25%;\n  }\n\n  .offset-xxl-4 {\n    margin-right: 33.33333333%;\n  }\n\n  .offset-xxl-5 {\n    margin-right: 41.66666667%;\n  }\n\n  .offset-xxl-6 {\n    margin-right: 50%;\n  }\n\n  .offset-xxl-7 {\n    margin-right: 58.33333333%;\n  }\n\n  .offset-xxl-8 {\n    margin-right: 66.66666667%;\n  }\n\n  .offset-xxl-9 {\n    margin-right: 75%;\n  }\n\n  .offset-xxl-10 {\n    margin-right: 83.33333333%;\n  }\n\n  .offset-xxl-11 {\n    margin-right: 91.66666667%;\n  }\n\n  .g-xxl-0,\n.gx-xxl-0 {\n    --bs-gutter-x: 0;\n  }\n\n  .g-xxl-0,\n.gy-xxl-0 {\n    --bs-gutter-y: 0;\n  }\n\n  .g-xxl-1,\n.gx-xxl-1 {\n    --bs-gutter-x: 0.25rem;\n  }\n\n  .g-xxl-1,\n.gy-xxl-1 {\n    --bs-gutter-y: 0.25rem;\n  }\n\n  .g-xxl-2,\n.gx-xxl-2 {\n    --bs-gutter-x: 0.5rem;\n  }\n\n  .g-xxl-2,\n.gy-xxl-2 {\n    --bs-gutter-y: 0.5rem;\n  }\n\n  .g-xxl-3,\n.gx-xxl-3 {\n    --bs-gutter-x: 1rem;\n  }\n\n  .g-xxl-3,\n.gy-xxl-3 {\n    --bs-gutter-y: 1rem;\n  }\n\n  .g-xxl-4,\n.gx-xxl-4 {\n    --bs-gutter-x: 1.5rem;\n  }\n\n  .g-xxl-4,\n.gy-xxl-4 {\n    --bs-gutter-y: 1.5rem;\n  }\n\n  .g-xxl-5,\n.gx-xxl-5 {\n    --bs-gutter-x: 3rem;\n  }\n\n  .g-xxl-5,\n.gy-xxl-5 {\n    --bs-gutter-y: 3rem;\n  }\n}\n.table {\n  --bs-table-bg: transparent;\n  --bs-table-accent-bg: transparent;\n  --bs-table-striped-color: #212529;\n  --bs-table-striped-bg: rgba(0, 0, 0, 0.05);\n  --bs-table-active-color: #212529;\n  --bs-table-active-bg: rgba(0, 0, 0, 0.1);\n  --bs-table-hover-color: #212529;\n  --bs-table-hover-bg: rgba(0, 0, 0, 0.075);\n  width: 100%;\n  margin-bottom: 1rem;\n  color: #212529;\n  vertical-align: top;\n  border-color: #dee2e6;\n}\n.table > :not(caption) > * > * {\n  padding: 0.5rem 0.5rem;\n  background-color: var(--bs-table-bg);\n  border-bottom-width: 1px;\n  box-shadow: inset 0 0 0 9999px var(--bs-table-accent-bg);\n}\n.table > tbody {\n  vertical-align: inherit;\n}\n.table > thead {\n  vertical-align: bottom;\n}\n.table > :not(:first-child) {\n  border-top: 2px solid currentColor;\n}\n\n.caption-top {\n  caption-side: top;\n}\n\n.table-sm > :not(caption) > * > * {\n  padding: 0.25rem 0.25rem;\n}\n\n.table-bordered > :not(caption) > * {\n  border-width: 1px 0;\n}\n.table-bordered > :not(caption) > * > * {\n  border-width: 0 1px;\n}\n\n.table-borderless > :not(caption) > * > * {\n  border-bottom-width: 0;\n}\n.table-borderless > :not(:first-child) {\n  border-top-width: 0;\n}\n\n.table-striped > tbody > tr:nth-of-type(odd) > * {\n  --bs-table-accent-bg: var(--bs-table-striped-bg);\n  color: var(--bs-table-striped-color);\n}\n\n.table-active {\n  --bs-table-accent-bg: var(--bs-table-active-bg);\n  color: var(--bs-table-active-color);\n}\n\n.table-hover > tbody > tr:hover > * {\n  --bs-table-accent-bg: var(--bs-table-hover-bg);\n  color: var(--bs-table-hover-color);\n}\n\n.table-primary {\n  --bs-table-bg: #cfe2ff;\n  --bs-table-striped-bg: #c5d7f2;\n  --bs-table-striped-color: #000;\n  --bs-table-active-bg: #bacbe6;\n  --bs-table-active-color: #000;\n  --bs-table-hover-bg: #bfd1ec;\n  --bs-table-hover-color: #000;\n  color: #000;\n  border-color: #bacbe6;\n}\n\n.table-secondary {\n  --bs-table-bg: #e2e3e5;\n  --bs-table-striped-bg: #d7d8da;\n  --bs-table-striped-color: #000;\n  --bs-table-active-bg: #cbccce;\n  --bs-table-active-color: #000;\n  --bs-table-hover-bg: #d1d2d4;\n  --bs-table-hover-color: #000;\n  color: #000;\n  border-color: #cbccce;\n}\n\n.table-success {\n  --bs-table-bg: #d1e7dd;\n  --bs-table-striped-bg: #c7dbd2;\n  --bs-table-striped-color: #000;\n  --bs-table-active-bg: #bcd0c7;\n  --bs-table-active-color: #000;\n  --bs-table-hover-bg: #c1d6cc;\n  --bs-table-hover-color: #000;\n  color: #000;\n  border-color: #bcd0c7;\n}\n\n.table-info {\n  --bs-table-bg: #cff4fc;\n  --bs-table-striped-bg: #c5e8ef;\n  --bs-table-striped-color: #000;\n  --bs-table-active-bg: #badce3;\n  --bs-table-active-color: #000;\n  --bs-table-hover-bg: #bfe2e9;\n  --bs-table-hover-color: #000;\n  color: #000;\n  border-color: #badce3;\n}\n\n.table-warning {\n  --bs-table-bg: #fff3cd;\n  --bs-table-striped-bg: #f2e7c3;\n  --bs-table-striped-color: #000;\n  --bs-table-active-bg: #e6dbb9;\n  --bs-table-active-color: #000;\n  --bs-table-hover-bg: #ece1be;\n  --bs-table-hover-color: #000;\n  color: #000;\n  border-color: #e6dbb9;\n}\n\n.table-danger {\n  --bs-table-bg: #f8d7da;\n  --bs-table-striped-bg: #eccccf;\n  --bs-table-striped-color: #000;\n  --bs-table-active-bg: #dfc2c4;\n  --bs-table-active-color: #000;\n  --bs-table-hover-bg: #e5c7ca;\n  --bs-table-hover-color: #000;\n  color: #000;\n  border-color: #dfc2c4;\n}\n\n.table-light {\n  --bs-table-bg: #f8f9fa;\n  --bs-table-striped-bg: #ecedee;\n  --bs-table-striped-color: #000;\n  --bs-table-active-bg: #dfe0e1;\n  --bs-table-active-color: #000;\n  --bs-table-hover-bg: #e5e6e7;\n  --bs-table-hover-color: #000;\n  color: #000;\n  border-color: #dfe0e1;\n}\n\n.table-dark {\n  --bs-table-bg: #212529;\n  --bs-table-striped-bg: #2c3034;\n  --bs-table-striped-color: #fff;\n  --bs-table-active-bg: #373b3e;\n  --bs-table-active-color: #fff;\n  --bs-table-hover-bg: #323539;\n  --bs-table-hover-color: #fff;\n  color: #fff;\n  border-color: #373b3e;\n}\n\n.table-responsive {\n  overflow-x: auto;\n  -webkit-overflow-scrolling: touch;\n}\n\n@media (max-width: 575.98px) {\n  .table-responsive-sm {\n    overflow-x: auto;\n    -webkit-overflow-scrolling: touch;\n  }\n}\n@media (max-width: 767.98px) {\n  .table-responsive-md {\n    overflow-x: auto;\n    -webkit-overflow-scrolling: touch;\n  }\n}\n@media (max-width: 991.98px) {\n  .table-responsive-lg {\n    overflow-x: auto;\n    -webkit-overflow-scrolling: touch;\n  }\n}\n@media (max-width: 1199.98px) {\n  .table-responsive-xl {\n    overflow-x: auto;\n    -webkit-overflow-scrolling: touch;\n  }\n}\n@media (max-width: 1399.98px) {\n  .table-responsive-xxl {\n    overflow-x: auto;\n    -webkit-overflow-scrolling: touch;\n  }\n}\n.form-label {\n  margin-bottom: 0.5rem;\n}\n\n.col-form-label {\n  padding-top: calc(0.375rem + 1px);\n  padding-bottom: calc(0.375rem + 1px);\n  margin-bottom: 0;\n  font-size: inherit;\n  line-height: 1.5;\n}\n\n.col-form-label-lg {\n  padding-top: calc(0.5rem + 1px);\n  padding-bottom: calc(0.5rem + 1px);\n  font-size: 1.25rem;\n}\n\n.col-form-label-sm {\n  padding-top: calc(0.25rem + 1px);\n  padding-bottom: calc(0.25rem + 1px);\n  font-size: 0.875rem;\n}\n\n.form-text {\n  margin-top: 0.25rem;\n  font-size: 0.875em;\n  color: #6c757d;\n}\n\n.form-control {\n  display: block;\n  width: 100%;\n  padding: 0.375rem 0.75rem;\n  font-size: 1rem;\n  font-weight: 400;\n  line-height: 1.5;\n  color: #212529;\n  background-color: #fff;\n  background-clip: padding-box;\n  border: 1px solid #ced4da;\n  -webkit-appearance: none;\n  -moz-appearance: none;\n  appearance: none;\n  border-radius: 0.25rem;\n  transition: border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;\n}\n@media (prefers-reduced-motion: reduce) {\n  .form-control {\n    transition: none;\n  }\n}\n.form-control[type=file] {\n  overflow: hidden;\n}\n.form-control[type=file]:not(:disabled):not([readonly]) {\n  cursor: pointer;\n}\n.form-control:focus {\n  color: #212529;\n  background-color: #fff;\n  border-color: #86b7fe;\n  outline: 0;\n  box-shadow: 0 0 0 0.25rem rgba(13, 110, 253, 0.25);\n}\n.form-control::-webkit-date-and-time-value {\n  height: 1.5em;\n}\n.form-control::-moz-placeholder {\n  color: #6c757d;\n  opacity: 1;\n}\n.form-control::placeholder {\n  color: #6c757d;\n  opacity: 1;\n}\n.form-control:disabled, .form-control[readonly] {\n  background-color: #e9ecef;\n  opacity: 1;\n}\n.form-control::-webkit-file-upload-button {\n  padding: 0.375rem 0.75rem;\n  margin: -0.375rem -0.75rem;\n  -webkit-margin-end: 0.75rem;\n  margin-inline-end: 0.75rem;\n  color: #212529;\n  background-color: #e9ecef;\n  pointer-events: none;\n  border-color: inherit;\n  border-style: solid;\n  border-width: 0;\n  border-inline-end-width: 1px;\n  border-radius: 0;\n  -webkit-transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;\n  transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;\n}\n.form-control::file-selector-button {\n  padding: 0.375rem 0.75rem;\n  margin: -0.375rem -0.75rem;\n  -webkit-margin-end: 0.75rem;\n  margin-inline-end: 0.75rem;\n  color: #212529;\n  background-color: #e9ecef;\n  pointer-events: none;\n  border-color: inherit;\n  border-style: solid;\n  border-width: 0;\n  border-inline-end-width: 1px;\n  border-radius: 0;\n  transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;\n}\n@media (prefers-reduced-motion: reduce) {\n  .form-control::-webkit-file-upload-button {\n    -webkit-transition: none;\n    transition: none;\n  }\n  .form-control::file-selector-button {\n    transition: none;\n  }\n}\n.form-control:hover:not(:disabled):not([readonly])::-webkit-file-upload-button {\n  background-color: #dde0e3;\n}\n.form-control:hover:not(:disabled):not([readonly])::file-selector-button {\n  background-color: #dde0e3;\n}\n.form-control::-webkit-file-upload-button {\n  padding: 0.375rem 0.75rem;\n  margin: -0.375rem -0.75rem;\n  -webkit-margin-end: 0.75rem;\n  margin-inline-end: 0.75rem;\n  color: #212529;\n  background-color: #e9ecef;\n  pointer-events: none;\n  border-color: inherit;\n  border-style: solid;\n  border-width: 0;\n  border-inline-end-width: 1px;\n  border-radius: 0;\n  -webkit-transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;\n  transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;\n}\n@media (prefers-reduced-motion: reduce) {\n  .form-control::-webkit-file-upload-button {\n    -webkit-transition: none;\n    transition: none;\n  }\n}\n.form-control:hover:not(:disabled):not([readonly])::-webkit-file-upload-button {\n  background-color: #dde0e3;\n}\n\n.form-control-plaintext {\n  display: block;\n  width: 100%;\n  padding: 0.375rem 0;\n  margin-bottom: 0;\n  line-height: 1.5;\n  color: #212529;\n  background-color: transparent;\n  border: solid transparent;\n  border-width: 1px 0;\n}\n.form-control-plaintext.form-control-sm, .form-control-plaintext.form-control-lg {\n  padding-left: 0;\n  padding-right: 0;\n}\n\n.form-control-sm {\n  min-height: calc(1.5em + 0.5rem + 2px);\n  padding: 0.25rem 0.5rem;\n  font-size: 0.875rem;\n  border-radius: 0.2rem;\n}\n.form-control-sm::-webkit-file-upload-button {\n  padding: 0.25rem 0.5rem;\n  margin: -0.25rem -0.5rem;\n  -webkit-margin-end: 0.5rem;\n  margin-inline-end: 0.5rem;\n}\n.form-control-sm::file-selector-button {\n  padding: 0.25rem 0.5rem;\n  margin: -0.25rem -0.5rem;\n  -webkit-margin-end: 0.5rem;\n  margin-inline-end: 0.5rem;\n}\n.form-control-sm::-webkit-file-upload-button {\n  padding: 0.25rem 0.5rem;\n  margin: -0.25rem -0.5rem;\n  -webkit-margin-end: 0.5rem;\n  margin-inline-end: 0.5rem;\n}\n\n.form-control-lg {\n  min-height: calc(1.5em + 1rem + 2px);\n  padding: 0.5rem 1rem;\n  font-size: 1.25rem;\n  border-radius: 0.3rem;\n}\n.form-control-lg::-webkit-file-upload-button {\n  padding: 0.5rem 1rem;\n  margin: -0.5rem -1rem;\n  -webkit-margin-end: 1rem;\n  margin-inline-end: 1rem;\n}\n.form-control-lg::file-selector-button {\n  padding: 0.5rem 1rem;\n  margin: -0.5rem -1rem;\n  -webkit-margin-end: 1rem;\n  margin-inline-end: 1rem;\n}\n.form-control-lg::-webkit-file-upload-button {\n  padding: 0.5rem 1rem;\n  margin: -0.5rem -1rem;\n  -webkit-margin-end: 1rem;\n  margin-inline-end: 1rem;\n}\n\ntextarea.form-control {\n  min-height: calc(1.5em + 0.75rem + 2px);\n}\ntextarea.form-control-sm {\n  min-height: calc(1.5em + 0.5rem + 2px);\n}\ntextarea.form-control-lg {\n  min-height: calc(1.5em + 1rem + 2px);\n}\n\n.form-control-color {\n  width: 3rem;\n  height: auto;\n  padding: 0.375rem;\n}\n.form-control-color:not(:disabled):not([readonly]) {\n  cursor: pointer;\n}\n.form-control-color::-moz-color-swatch {\n  height: 1.5em;\n  border-radius: 0.25rem;\n}\n.form-control-color::-webkit-color-swatch {\n  height: 1.5em;\n  border-radius: 0.25rem;\n}\n\n.form-select {\n  display: block;\n  width: 100%;\n  padding: 0.375rem 0.75rem 0.375rem 2.25rem;\n  -moz-padding-start: calc(0.75rem - 3px);\n  font-size: 1rem;\n  font-weight: 400;\n  line-height: 1.5;\n  color: #212529;\n  background-color: #fff;\n  background-image: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23343a40' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M2 5l6 6 6-6'/%3e%3c/svg%3e\");\n  background-repeat: no-repeat;\n  background-position: left 0.75rem center;\n  background-size: 16px 12px;\n  border: 1px solid #ced4da;\n  border-radius: 0.25rem;\n  transition: border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;\n  -webkit-appearance: none;\n  -moz-appearance: none;\n  appearance: none;\n}\n@media (prefers-reduced-motion: reduce) {\n  .form-select {\n    transition: none;\n  }\n}\n.form-select:focus {\n  border-color: #86b7fe;\n  outline: 0;\n  box-shadow: 0 0 0 0.25rem rgba(13, 110, 253, 0.25);\n}\n.form-select[multiple], .form-select[size]:not([size=\"1\"]) {\n  padding-left: 0.75rem;\n  background-image: none;\n}\n.form-select:disabled {\n  background-color: #e9ecef;\n}\n.form-select:-moz-focusring {\n  color: transparent;\n  text-shadow: 0 0 0 #212529;\n}\n\n.form-select-sm {\n  padding-top: 0.25rem;\n  padding-bottom: 0.25rem;\n  padding-right: 0.5rem;\n  font-size: 0.875rem;\n  border-radius: 0.2rem;\n}\n\n.form-select-lg {\n  padding-top: 0.5rem;\n  padding-bottom: 0.5rem;\n  padding-right: 1rem;\n  font-size: 1.25rem;\n  border-radius: 0.3rem;\n}\n\n.form-check {\n  display: block;\n  min-height: 1.5rem;\n  padding-right: 1.5em;\n  margin-bottom: 0.125rem;\n}\n.form-check .form-check-input {\n  float: right;\n  margin-right: -1.5em;\n}\n\n.form-check-input {\n  width: 1em;\n  height: 1em;\n  margin-top: 0.25em;\n  vertical-align: top;\n  background-color: #fff;\n  background-repeat: no-repeat;\n  background-position: center;\n  background-size: contain;\n  border: 1px solid rgba(0, 0, 0, 0.25);\n  -webkit-appearance: none;\n  -moz-appearance: none;\n  appearance: none;\n  -webkit-print-color-adjust: exact;\n  color-adjust: exact;\n}\n.form-check-input[type=checkbox] {\n  border-radius: 0.25em;\n}\n.form-check-input[type=radio] {\n  border-radius: 50%;\n}\n.form-check-input:active {\n  filter: brightness(90%);\n}\n.form-check-input:focus {\n  border-color: #86b7fe;\n  outline: 0;\n  box-shadow: 0 0 0 0.25rem rgba(13, 110, 253, 0.25);\n}\n.form-check-input:checked {\n  background-color: #0d6efd;\n  border-color: #0d6efd;\n}\n.form-check-input:checked[type=checkbox] {\n  background-image: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3e%3cpath fill='none' stroke='%23fff' stroke-linecap='round' stroke-linejoin='round' stroke-width='3' d='M6 10l3 3l6-6'/%3e%3c/svg%3e\");\n}\n.form-check-input:checked[type=radio] {\n  background-image: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='2' fill='%23fff'/%3e%3c/svg%3e\");\n}\n.form-check-input[type=checkbox]:indeterminate {\n  background-color: #0d6efd;\n  border-color: #0d6efd;\n  background-image: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3e%3cpath fill='none' stroke='%23fff' stroke-linecap='round' stroke-linejoin='round' stroke-width='3' d='M6 10h8'/%3e%3c/svg%3e\");\n}\n.form-check-input:disabled {\n  pointer-events: none;\n  filter: none;\n  opacity: 0.5;\n}\n.form-check-input[disabled] ~ .form-check-label, .form-check-input:disabled ~ .form-check-label {\n  opacity: 0.5;\n}\n\n.form-switch {\n  padding-right: 2.5em;\n}\n.form-switch .form-check-input {\n  width: 2em;\n  margin-right: -2.5em;\n  background-image: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='rgba%280, 0, 0, 0.25%29'/%3e%3c/svg%3e\");\n  background-position: right center;\n  border-radius: 2em;\n  transition: background-position 0.15s ease-in-out;\n}\n@media (prefers-reduced-motion: reduce) {\n  .form-switch .form-check-input {\n    transition: none;\n  }\n}\n.form-switch .form-check-input:focus {\n  background-image: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='%2386b7fe'/%3e%3c/svg%3e\");\n}\n.form-switch .form-check-input:checked {\n  background-position: left center;\n  background-image: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='%23fff'/%3e%3c/svg%3e\");\n}\n\n.form-check-inline {\n  display: inline-block;\n  margin-left: 1rem;\n}\n\n.btn-check {\n  position: absolute;\n  clip: rect(0, 0, 0, 0);\n  pointer-events: none;\n}\n.btn-check[disabled] + .btn, .btn-check:disabled + .btn {\n  pointer-events: none;\n  filter: none;\n  opacity: 0.65;\n}\n\n.form-range {\n  width: 100%;\n  height: 1.5rem;\n  padding: 0;\n  background-color: transparent;\n  -webkit-appearance: none;\n  -moz-appearance: none;\n  appearance: none;\n}\n.form-range:focus {\n  outline: 0;\n}\n.form-range:focus::-webkit-slider-thumb {\n  box-shadow: 0 0 0 1px #fff, 0 0 0 0.25rem rgba(13, 110, 253, 0.25);\n}\n.form-range:focus::-moz-range-thumb {\n  box-shadow: 0 0 0 1px #fff, 0 0 0 0.25rem rgba(13, 110, 253, 0.25);\n}\n.form-range::-moz-focus-outer {\n  border: 0;\n}\n.form-range::-webkit-slider-thumb {\n  width: 1rem;\n  height: 1rem;\n  margin-top: -0.25rem;\n  background-color: #0d6efd;\n  border: 0;\n  border-radius: 1rem;\n  -webkit-transition: background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;\n  transition: background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;\n  -webkit-appearance: none;\n  appearance: none;\n}\n@media (prefers-reduced-motion: reduce) {\n  .form-range::-webkit-slider-thumb {\n    -webkit-transition: none;\n    transition: none;\n  }\n}\n.form-range::-webkit-slider-thumb:active {\n  background-color: #b6d4fe;\n}\n.form-range::-webkit-slider-runnable-track {\n  width: 100%;\n  height: 0.5rem;\n  color: transparent;\n  cursor: pointer;\n  background-color: #dee2e6;\n  border-color: transparent;\n  border-radius: 1rem;\n}\n.form-range::-moz-range-thumb {\n  width: 1rem;\n  height: 1rem;\n  background-color: #0d6efd;\n  border: 0;\n  border-radius: 1rem;\n  -moz-transition: background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;\n  transition: background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;\n  -moz-appearance: none;\n  appearance: none;\n}\n@media (prefers-reduced-motion: reduce) {\n  .form-range::-moz-range-thumb {\n    -moz-transition: none;\n    transition: none;\n  }\n}\n.form-range::-moz-range-thumb:active {\n  background-color: #b6d4fe;\n}\n.form-range::-moz-range-track {\n  width: 100%;\n  height: 0.5rem;\n  color: transparent;\n  cursor: pointer;\n  background-color: #dee2e6;\n  border-color: transparent;\n  border-radius: 1rem;\n}\n.form-range:disabled {\n  pointer-events: none;\n}\n.form-range:disabled::-webkit-slider-thumb {\n  background-color: #adb5bd;\n}\n.form-range:disabled::-moz-range-thumb {\n  background-color: #adb5bd;\n}\n\n.form-floating {\n  position: relative;\n}\n.form-floating > .form-control,\n.form-floating > .form-select {\n  height: calc(3.5rem + 2px);\n  line-height: 1.25;\n}\n.form-floating > label {\n  position: absolute;\n  top: 0;\n  right: 0;\n  height: 100%;\n  padding: 1rem 0.75rem;\n  pointer-events: none;\n  border: 1px solid transparent;\n  transform-origin: 100% 0;\n  transition: opacity 0.1s ease-in-out, transform 0.1s ease-in-out;\n}\n@media (prefers-reduced-motion: reduce) {\n  .form-floating > label {\n    transition: none;\n  }\n}\n.form-floating > .form-control {\n  padding: 1rem 0.75rem;\n}\n.form-floating > .form-control::-moz-placeholder {\n  color: transparent;\n}\n.form-floating > .form-control::placeholder {\n  color: transparent;\n}\n.form-floating > .form-control:not(:-moz-placeholder-shown) {\n  padding-top: 1.625rem;\n  padding-bottom: 0.625rem;\n}\n.form-floating > .form-control:focus, .form-floating > .form-control:not(:placeholder-shown) {\n  padding-top: 1.625rem;\n  padding-bottom: 0.625rem;\n}\n.form-floating > .form-control:-webkit-autofill {\n  padding-top: 1.625rem;\n  padding-bottom: 0.625rem;\n}\n.form-floating > .form-select {\n  padding-top: 1.625rem;\n  padding-bottom: 0.625rem;\n}\n.form-floating > .form-control:not(:-moz-placeholder-shown) ~ label {\n  opacity: 0.65;\n  transform: scale(0.85) translateY(-0.5rem) translateX(-0.15rem);\n}\n.form-floating > .form-control:focus ~ label,\n.form-floating > .form-control:not(:placeholder-shown) ~ label,\n.form-floating > .form-select ~ label {\n  opacity: 0.65;\n  transform: scale(0.85) translateY(-0.5rem) translateX(-0.15rem);\n}\n.form-floating > .form-control:-webkit-autofill ~ label {\n  opacity: 0.65;\n  transform: scale(0.85) translateY(-0.5rem) translateX(-0.15rem);\n}\n\n.input-group {\n  position: relative;\n  display: flex;\n  flex-wrap: wrap;\n  align-items: stretch;\n  width: 100%;\n}\n.input-group > .form-control,\n.input-group > .form-select {\n  position: relative;\n  flex: 1 1 auto;\n  width: 1%;\n  min-width: 0;\n}\n.input-group > .form-control:focus,\n.input-group > .form-select:focus {\n  z-index: 3;\n}\n.input-group .btn {\n  position: relative;\n  z-index: 2;\n}\n.input-group .btn:focus {\n  z-index: 3;\n}\n\n.input-group-text {\n  display: flex;\n  align-items: center;\n  padding: 0.375rem 0.75rem;\n  font-size: 1rem;\n  font-weight: 400;\n  line-height: 1.5;\n  color: #212529;\n  text-align: center;\n  white-space: nowrap;\n  background-color: #e9ecef;\n  border: 1px solid #ced4da;\n  border-radius: 0.25rem;\n}\n\n.input-group-lg > .form-control,\n.input-group-lg > .form-select,\n.input-group-lg > .input-group-text,\n.input-group-lg > .btn {\n  padding: 0.5rem 1rem;\n  font-size: 1.25rem;\n  border-radius: 0.3rem;\n}\n\n.input-group-sm > .form-control,\n.input-group-sm > .form-select,\n.input-group-sm > .input-group-text,\n.input-group-sm > .btn {\n  padding: 0.25rem 0.5rem;\n  font-size: 0.875rem;\n  border-radius: 0.2rem;\n}\n\n.input-group-lg > .form-select,\n.input-group-sm > .form-select {\n  padding-left: 3rem;\n}\n\n.input-group:not(.has-validation) > :not(:last-child):not(.dropdown-toggle):not(.dropdown-menu),\n.input-group:not(.has-validation) > .dropdown-toggle:nth-last-child(n+3) {\n  border-top-left-radius: 0;\n  border-bottom-left-radius: 0;\n}\n.input-group.has-validation > :nth-last-child(n+3):not(.dropdown-toggle):not(.dropdown-menu),\n.input-group.has-validation > .dropdown-toggle:nth-last-child(n+4) {\n  border-top-left-radius: 0;\n  border-bottom-left-radius: 0;\n}\n.input-group > :not(:first-child):not(.dropdown-menu):not(.valid-tooltip):not(.valid-feedback):not(.invalid-tooltip):not(.invalid-feedback) {\n  margin-right: -1px;\n  border-top-right-radius: 0;\n  border-bottom-right-radius: 0;\n}\n\n.valid-feedback {\n  display: none;\n  width: 100%;\n  margin-top: 0.25rem;\n  font-size: 0.875em;\n  color: #198754;\n}\n\n.valid-tooltip {\n  position: absolute;\n  top: 100%;\n  z-index: 5;\n  display: none;\n  max-width: 100%;\n  padding: 0.25rem 0.5rem;\n  margin-top: 0.1rem;\n  font-size: 0.875rem;\n  color: #fff;\n  background-color: rgba(25, 135, 84, 0.9);\n  border-radius: 0.25rem;\n}\n\n.was-validated :valid ~ .valid-feedback,\n.was-validated :valid ~ .valid-tooltip,\n.is-valid ~ .valid-feedback,\n.is-valid ~ .valid-tooltip {\n  display: block;\n}\n\n.was-validated .form-control:valid, .form-control.is-valid {\n  border-color: #198754;\n  padding-left: calc(1.5em + 0.75rem);\n  background-image: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%23198754' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e\");\n  background-repeat: no-repeat;\n  background-position: left calc(0.375em + 0.1875rem) center;\n  background-size: calc(0.75em + 0.375rem) calc(0.75em + 0.375rem);\n}\n.was-validated .form-control:valid:focus, .form-control.is-valid:focus {\n  border-color: #198754;\n  box-shadow: 0 0 0 0.25rem rgba(25, 135, 84, 0.25);\n}\n\n.was-validated textarea.form-control:valid, textarea.form-control.is-valid {\n  padding-left: calc(1.5em + 0.75rem);\n  background-position: top calc(0.375em + 0.1875rem) left calc(0.375em + 0.1875rem);\n}\n\n.was-validated .form-select:valid, .form-select.is-valid {\n  border-color: #198754;\n}\n.was-validated .form-select:valid:not([multiple]):not([size]), .was-validated .form-select:valid:not([multiple])[size=\"1\"], .form-select.is-valid:not([multiple]):not([size]), .form-select.is-valid:not([multiple])[size=\"1\"] {\n  padding-left: 4.125rem;\n  background-image: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23343a40' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M2 5l6 6 6-6'/%3e%3c/svg%3e\"), url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%23198754' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e\");\n  background-position: left 0.75rem center, center left 2.25rem;\n  background-size: 16px 12px, calc(0.75em + 0.375rem) calc(0.75em + 0.375rem);\n}\n.was-validated .form-select:valid:focus, .form-select.is-valid:focus {\n  border-color: #198754;\n  box-shadow: 0 0 0 0.25rem rgba(25, 135, 84, 0.25);\n}\n\n.was-validated .form-check-input:valid, .form-check-input.is-valid {\n  border-color: #198754;\n}\n.was-validated .form-check-input:valid:checked, .form-check-input.is-valid:checked {\n  background-color: #198754;\n}\n.was-validated .form-check-input:valid:focus, .form-check-input.is-valid:focus {\n  box-shadow: 0 0 0 0.25rem rgba(25, 135, 84, 0.25);\n}\n.was-validated .form-check-input:valid ~ .form-check-label, .form-check-input.is-valid ~ .form-check-label {\n  color: #198754;\n}\n\n.form-check-inline .form-check-input ~ .valid-feedback {\n  margin-right: 0.5em;\n}\n\n.was-validated .input-group .form-control:valid, .input-group .form-control.is-valid,\n.was-validated .input-group .form-select:valid,\n.input-group .form-select.is-valid {\n  z-index: 1;\n}\n.was-validated .input-group .form-control:valid:focus, .input-group .form-control.is-valid:focus,\n.was-validated .input-group .form-select:valid:focus,\n.input-group .form-select.is-valid:focus {\n  z-index: 3;\n}\n\n.invalid-feedback {\n  display: none;\n  width: 100%;\n  margin-top: 0.25rem;\n  font-size: 0.875em;\n  color: #dc3545;\n}\n\n.invalid-tooltip {\n  position: absolute;\n  top: 100%;\n  z-index: 5;\n  display: none;\n  max-width: 100%;\n  padding: 0.25rem 0.5rem;\n  margin-top: 0.1rem;\n  font-size: 0.875rem;\n  color: #fff;\n  background-color: rgba(220, 53, 69, 0.9);\n  border-radius: 0.25rem;\n}\n\n.was-validated :invalid ~ .invalid-feedback,\n.was-validated :invalid ~ .invalid-tooltip,\n.is-invalid ~ .invalid-feedback,\n.is-invalid ~ .invalid-tooltip {\n  display: block;\n}\n\n.was-validated .form-control:invalid, .form-control.is-invalid {\n  border-color: #dc3545;\n  padding-left: calc(1.5em + 0.75rem);\n  background-image: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12' width='12' height='12' fill='none' stroke='%23dc3545'%3e%3ccircle cx='6' cy='6' r='4.5'/%3e%3cpath stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/%3e%3ccircle cx='6' cy='8.2' r='.6' fill='%23dc3545' stroke='none'/%3e%3c/svg%3e\");\n  background-repeat: no-repeat;\n  background-position: left calc(0.375em + 0.1875rem) center;\n  background-size: calc(0.75em + 0.375rem) calc(0.75em + 0.375rem);\n}\n.was-validated .form-control:invalid:focus, .form-control.is-invalid:focus {\n  border-color: #dc3545;\n  box-shadow: 0 0 0 0.25rem rgba(220, 53, 69, 0.25);\n}\n\n.was-validated textarea.form-control:invalid, textarea.form-control.is-invalid {\n  padding-left: calc(1.5em + 0.75rem);\n  background-position: top calc(0.375em + 0.1875rem) left calc(0.375em + 0.1875rem);\n}\n\n.was-validated .form-select:invalid, .form-select.is-invalid {\n  border-color: #dc3545;\n}\n.was-validated .form-select:invalid:not([multiple]):not([size]), .was-validated .form-select:invalid:not([multiple])[size=\"1\"], .form-select.is-invalid:not([multiple]):not([size]), .form-select.is-invalid:not([multiple])[size=\"1\"] {\n  padding-left: 4.125rem;\n  background-image: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23343a40' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M2 5l6 6 6-6'/%3e%3c/svg%3e\"), url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12' width='12' height='12' fill='none' stroke='%23dc3545'%3e%3ccircle cx='6' cy='6' r='4.5'/%3e%3cpath stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/%3e%3ccircle cx='6' cy='8.2' r='.6' fill='%23dc3545' stroke='none'/%3e%3c/svg%3e\");\n  background-position: left 0.75rem center, center left 2.25rem;\n  background-size: 16px 12px, calc(0.75em + 0.375rem) calc(0.75em + 0.375rem);\n}\n.was-validated .form-select:invalid:focus, .form-select.is-invalid:focus {\n  border-color: #dc3545;\n  box-shadow: 0 0 0 0.25rem rgba(220, 53, 69, 0.25);\n}\n\n.was-validated .form-check-input:invalid, .form-check-input.is-invalid {\n  border-color: #dc3545;\n}\n.was-validated .form-check-input:invalid:checked, .form-check-input.is-invalid:checked {\n  background-color: #dc3545;\n}\n.was-validated .form-check-input:invalid:focus, .form-check-input.is-invalid:focus {\n  box-shadow: 0 0 0 0.25rem rgba(220, 53, 69, 0.25);\n}\n.was-validated .form-check-input:invalid ~ .form-check-label, .form-check-input.is-invalid ~ .form-check-label {\n  color: #dc3545;\n}\n\n.form-check-inline .form-check-input ~ .invalid-feedback {\n  margin-right: 0.5em;\n}\n\n.was-validated .input-group .form-control:invalid, .input-group .form-control.is-invalid,\n.was-validated .input-group .form-select:invalid,\n.input-group .form-select.is-invalid {\n  z-index: 2;\n}\n.was-validated .input-group .form-control:invalid:focus, .input-group .form-control.is-invalid:focus,\n.was-validated .input-group .form-select:invalid:focus,\n.input-group .form-select.is-invalid:focus {\n  z-index: 3;\n}\n\n.btn {\n  display: inline-block;\n  font-weight: 400;\n  line-height: 1.5;\n  color: #212529;\n  text-align: center;\n  text-decoration: none;\n  vertical-align: middle;\n  cursor: pointer;\n  -webkit-user-select: none;\n  -moz-user-select: none;\n  user-select: none;\n  background-color: transparent;\n  border: 1px solid transparent;\n  padding: 0.375rem 0.75rem;\n  font-size: 1rem;\n  border-radius: 0.25rem;\n  transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;\n}\n@media (prefers-reduced-motion: reduce) {\n  .btn {\n    transition: none;\n  }\n}\n.btn:hover {\n  color: #212529;\n}\n.btn-check:focus + .btn, .btn:focus {\n  outline: 0;\n  box-shadow: 0 0 0 0.25rem rgba(13, 110, 253, 0.25);\n}\n.btn:disabled, .btn.disabled, fieldset:disabled .btn {\n  pointer-events: none;\n  opacity: 0.65;\n}\n\n.btn-primary {\n  color: #fff;\n  background-color: #0d6efd;\n  border-color: #0d6efd;\n}\n.btn-primary:hover {\n  color: #fff;\n  background-color: #0b5ed7;\n  border-color: #0a58ca;\n}\n.btn-check:focus + .btn-primary, .btn-primary:focus {\n  color: #fff;\n  background-color: #0b5ed7;\n  border-color: #0a58ca;\n  box-shadow: 0 0 0 0.25rem rgba(49, 132, 253, 0.5);\n}\n.btn-check:checked + .btn-primary, .btn-check:active + .btn-primary, .btn-primary:active, .btn-primary.active, .show > .btn-primary.dropdown-toggle {\n  color: #fff;\n  background-color: #0a58ca;\n  border-color: #0a53be;\n}\n.btn-check:checked + .btn-primary:focus, .btn-check:active + .btn-primary:focus, .btn-primary:active:focus, .btn-primary.active:focus, .show > .btn-primary.dropdown-toggle:focus {\n  box-shadow: 0 0 0 0.25rem rgba(49, 132, 253, 0.5);\n}\n.btn-primary:disabled, .btn-primary.disabled {\n  color: #fff;\n  background-color: #0d6efd;\n  border-color: #0d6efd;\n}\n\n.btn-secondary {\n  color: #fff;\n  background-color: #6c757d;\n  border-color: #6c757d;\n}\n.btn-secondary:hover {\n  color: #fff;\n  background-color: #5c636a;\n  border-color: #565e64;\n}\n.btn-check:focus + .btn-secondary, .btn-secondary:focus {\n  color: #fff;\n  background-color: #5c636a;\n  border-color: #565e64;\n  box-shadow: 0 0 0 0.25rem rgba(130, 138, 145, 0.5);\n}\n.btn-check:checked + .btn-secondary, .btn-check:active + .btn-secondary, .btn-secondary:active, .btn-secondary.active, .show > .btn-secondary.dropdown-toggle {\n  color: #fff;\n  background-color: #565e64;\n  border-color: #51585e;\n}\n.btn-check:checked + .btn-secondary:focus, .btn-check:active + .btn-secondary:focus, .btn-secondary:active:focus, .btn-secondary.active:focus, .show > .btn-secondary.dropdown-toggle:focus {\n  box-shadow: 0 0 0 0.25rem rgba(130, 138, 145, 0.5);\n}\n.btn-secondary:disabled, .btn-secondary.disabled {\n  color: #fff;\n  background-color: #6c757d;\n  border-color: #6c757d;\n}\n\n.btn-success {\n  color: #fff;\n  background-color: #198754;\n  border-color: #198754;\n}\n.btn-success:hover {\n  color: #fff;\n  background-color: #157347;\n  border-color: #146c43;\n}\n.btn-check:focus + .btn-success, .btn-success:focus {\n  color: #fff;\n  background-color: #157347;\n  border-color: #146c43;\n  box-shadow: 0 0 0 0.25rem rgba(60, 153, 110, 0.5);\n}\n.btn-check:checked + .btn-success, .btn-check:active + .btn-success, .btn-success:active, .btn-success.active, .show > .btn-success.dropdown-toggle {\n  color: #fff;\n  background-color: #146c43;\n  border-color: #13653f;\n}\n.btn-check:checked + .btn-success:focus, .btn-check:active + .btn-success:focus, .btn-success:active:focus, .btn-success.active:focus, .show > .btn-success.dropdown-toggle:focus {\n  box-shadow: 0 0 0 0.25rem rgba(60, 153, 110, 0.5);\n}\n.btn-success:disabled, .btn-success.disabled {\n  color: #fff;\n  background-color: #198754;\n  border-color: #198754;\n}\n\n.btn-info {\n  color: #000;\n  background-color: #0dcaf0;\n  border-color: #0dcaf0;\n}\n.btn-info:hover {\n  color: #000;\n  background-color: #31d2f2;\n  border-color: #25cff2;\n}\n.btn-check:focus + .btn-info, .btn-info:focus {\n  color: #000;\n  background-color: #31d2f2;\n  border-color: #25cff2;\n  box-shadow: 0 0 0 0.25rem rgba(11, 172, 204, 0.5);\n}\n.btn-check:checked + .btn-info, .btn-check:active + .btn-info, .btn-info:active, .btn-info.active, .show > .btn-info.dropdown-toggle {\n  color: #000;\n  background-color: #3dd5f3;\n  border-color: #25cff2;\n}\n.btn-check:checked + .btn-info:focus, .btn-check:active + .btn-info:focus, .btn-info:active:focus, .btn-info.active:focus, .show > .btn-info.dropdown-toggle:focus {\n  box-shadow: 0 0 0 0.25rem rgba(11, 172, 204, 0.5);\n}\n.btn-info:disabled, .btn-info.disabled {\n  color: #000;\n  background-color: #0dcaf0;\n  border-color: #0dcaf0;\n}\n\n.btn-warning {\n  color: #000;\n  background-color: #ffc107;\n  border-color: #ffc107;\n}\n.btn-warning:hover {\n  color: #000;\n  background-color: #ffca2c;\n  border-color: #ffc720;\n}\n.btn-check:focus + .btn-warning, .btn-warning:focus {\n  color: #000;\n  background-color: #ffca2c;\n  border-color: #ffc720;\n  box-shadow: 0 0 0 0.25rem rgba(217, 164, 6, 0.5);\n}\n.btn-check:checked + .btn-warning, .btn-check:active + .btn-warning, .btn-warning:active, .btn-warning.active, .show > .btn-warning.dropdown-toggle {\n  color: #000;\n  background-color: #ffcd39;\n  border-color: #ffc720;\n}\n.btn-check:checked + .btn-warning:focus, .btn-check:active + .btn-warning:focus, .btn-warning:active:focus, .btn-warning.active:focus, .show > .btn-warning.dropdown-toggle:focus {\n  box-shadow: 0 0 0 0.25rem rgba(217, 164, 6, 0.5);\n}\n.btn-warning:disabled, .btn-warning.disabled {\n  color: #000;\n  background-color: #ffc107;\n  border-color: #ffc107;\n}\n\n.btn-danger {\n  color: #fff;\n  background-color: #dc3545;\n  border-color: #dc3545;\n}\n.btn-danger:hover {\n  color: #fff;\n  background-color: #bb2d3b;\n  border-color: #b02a37;\n}\n.btn-check:focus + .btn-danger, .btn-danger:focus {\n  color: #fff;\n  background-color: #bb2d3b;\n  border-color: #b02a37;\n  box-shadow: 0 0 0 0.25rem rgba(225, 83, 97, 0.5);\n}\n.btn-check:checked + .btn-danger, .btn-check:active + .btn-danger, .btn-danger:active, .btn-danger.active, .show > .btn-danger.dropdown-toggle {\n  color: #fff;\n  background-color: #b02a37;\n  border-color: #a52834;\n}\n.btn-check:checked + .btn-danger:focus, .btn-check:active + .btn-danger:focus, .btn-danger:active:focus, .btn-danger.active:focus, .show > .btn-danger.dropdown-toggle:focus {\n  box-shadow: 0 0 0 0.25rem rgba(225, 83, 97, 0.5);\n}\n.btn-danger:disabled, .btn-danger.disabled {\n  color: #fff;\n  background-color: #dc3545;\n  border-color: #dc3545;\n}\n\n.btn-light {\n  color: #000;\n  background-color: #f8f9fa;\n  border-color: #f8f9fa;\n}\n.btn-light:hover {\n  color: #000;\n  background-color: #f9fafb;\n  border-color: #f9fafb;\n}\n.btn-check:focus + .btn-light, .btn-light:focus {\n  color: #000;\n  background-color: #f9fafb;\n  border-color: #f9fafb;\n  box-shadow: 0 0 0 0.25rem rgba(211, 212, 213, 0.5);\n}\n.btn-check:checked + .btn-light, .btn-check:active + .btn-light, .btn-light:active, .btn-light.active, .show > .btn-light.dropdown-toggle {\n  color: #000;\n  background-color: #f9fafb;\n  border-color: #f9fafb;\n}\n.btn-check:checked + .btn-light:focus, .btn-check:active + .btn-light:focus, .btn-light:active:focus, .btn-light.active:focus, .show > .btn-light.dropdown-toggle:focus {\n  box-shadow: 0 0 0 0.25rem rgba(211, 212, 213, 0.5);\n}\n.btn-light:disabled, .btn-light.disabled {\n  color: #000;\n  background-color: #f8f9fa;\n  border-color: #f8f9fa;\n}\n\n.btn-dark {\n  color: #fff;\n  background-color: #212529;\n  border-color: #212529;\n}\n.btn-dark:hover {\n  color: #fff;\n  background-color: #1c1f23;\n  border-color: #1a1e21;\n}\n.btn-check:focus + .btn-dark, .btn-dark:focus {\n  color: #fff;\n  background-color: #1c1f23;\n  border-color: #1a1e21;\n  box-shadow: 0 0 0 0.25rem rgba(66, 70, 73, 0.5);\n}\n.btn-check:checked + .btn-dark, .btn-check:active + .btn-dark, .btn-dark:active, .btn-dark.active, .show > .btn-dark.dropdown-toggle {\n  color: #fff;\n  background-color: #1a1e21;\n  border-color: #191c1f;\n}\n.btn-check:checked + .btn-dark:focus, .btn-check:active + .btn-dark:focus, .btn-dark:active:focus, .btn-dark.active:focus, .show > .btn-dark.dropdown-toggle:focus {\n  box-shadow: 0 0 0 0.25rem rgba(66, 70, 73, 0.5);\n}\n.btn-dark:disabled, .btn-dark.disabled {\n  color: #fff;\n  background-color: #212529;\n  border-color: #212529;\n}\n\n.btn-outline-primary {\n  color: #0d6efd;\n  border-color: #0d6efd;\n}\n.btn-outline-primary:hover {\n  color: #fff;\n  background-color: #0d6efd;\n  border-color: #0d6efd;\n}\n.btn-check:focus + .btn-outline-primary, .btn-outline-primary:focus {\n  box-shadow: 0 0 0 0.25rem rgba(13, 110, 253, 0.5);\n}\n.btn-check:checked + .btn-outline-primary, .btn-check:active + .btn-outline-primary, .btn-outline-primary:active, .btn-outline-primary.active, .btn-outline-primary.dropdown-toggle.show {\n  color: #fff;\n  background-color: #0d6efd;\n  border-color: #0d6efd;\n}\n.btn-check:checked + .btn-outline-primary:focus, .btn-check:active + .btn-outline-primary:focus, .btn-outline-primary:active:focus, .btn-outline-primary.active:focus, .btn-outline-primary.dropdown-toggle.show:focus {\n  box-shadow: 0 0 0 0.25rem rgba(13, 110, 253, 0.5);\n}\n.btn-outline-primary:disabled, .btn-outline-primary.disabled {\n  color: #0d6efd;\n  background-color: transparent;\n}\n\n.btn-outline-secondary {\n  color: #6c757d;\n  border-color: #6c757d;\n}\n.btn-outline-secondary:hover {\n  color: #fff;\n  background-color: #6c757d;\n  border-color: #6c757d;\n}\n.btn-check:focus + .btn-outline-secondary, .btn-outline-secondary:focus {\n  box-shadow: 0 0 0 0.25rem rgba(108, 117, 125, 0.5);\n}\n.btn-check:checked + .btn-outline-secondary, .btn-check:active + .btn-outline-secondary, .btn-outline-secondary:active, .btn-outline-secondary.active, .btn-outline-secondary.dropdown-toggle.show {\n  color: #fff;\n  background-color: #6c757d;\n  border-color: #6c757d;\n}\n.btn-check:checked + .btn-outline-secondary:focus, .btn-check:active + .btn-outline-secondary:focus, .btn-outline-secondary:active:focus, .btn-outline-secondary.active:focus, .btn-outline-secondary.dropdown-toggle.show:focus {\n  box-shadow: 0 0 0 0.25rem rgba(108, 117, 125, 0.5);\n}\n.btn-outline-secondary:disabled, .btn-outline-secondary.disabled {\n  color: #6c757d;\n  background-color: transparent;\n}\n\n.btn-outline-success {\n  color: #198754;\n  border-color: #198754;\n}\n.btn-outline-success:hover {\n  color: #fff;\n  background-color: #198754;\n  border-color: #198754;\n}\n.btn-check:focus + .btn-outline-success, .btn-outline-success:focus {\n  box-shadow: 0 0 0 0.25rem rgba(25, 135, 84, 0.5);\n}\n.btn-check:checked + .btn-outline-success, .btn-check:active + .btn-outline-success, .btn-outline-success:active, .btn-outline-success.active, .btn-outline-success.dropdown-toggle.show {\n  color: #fff;\n  background-color: #198754;\n  border-color: #198754;\n}\n.btn-check:checked + .btn-outline-success:focus, .btn-check:active + .btn-outline-success:focus, .btn-outline-success:active:focus, .btn-outline-success.active:focus, .btn-outline-success.dropdown-toggle.show:focus {\n  box-shadow: 0 0 0 0.25rem rgba(25, 135, 84, 0.5);\n}\n.btn-outline-success:disabled, .btn-outline-success.disabled {\n  color: #198754;\n  background-color: transparent;\n}\n\n.btn-outline-info {\n  color: #0dcaf0;\n  border-color: #0dcaf0;\n}\n.btn-outline-info:hover {\n  color: #000;\n  background-color: #0dcaf0;\n  border-color: #0dcaf0;\n}\n.btn-check:focus + .btn-outline-info, .btn-outline-info:focus {\n  box-shadow: 0 0 0 0.25rem rgba(13, 202, 240, 0.5);\n}\n.btn-check:checked + .btn-outline-info, .btn-check:active + .btn-outline-info, .btn-outline-info:active, .btn-outline-info.active, .btn-outline-info.dropdown-toggle.show {\n  color: #000;\n  background-color: #0dcaf0;\n  border-color: #0dcaf0;\n}\n.btn-check:checked + .btn-outline-info:focus, .btn-check:active + .btn-outline-info:focus, .btn-outline-info:active:focus, .btn-outline-info.active:focus, .btn-outline-info.dropdown-toggle.show:focus {\n  box-shadow: 0 0 0 0.25rem rgba(13, 202, 240, 0.5);\n}\n.btn-outline-info:disabled, .btn-outline-info.disabled {\n  color: #0dcaf0;\n  background-color: transparent;\n}\n\n.btn-outline-warning {\n  color: #ffc107;\n  border-color: #ffc107;\n}\n.btn-outline-warning:hover {\n  color: #000;\n  background-color: #ffc107;\n  border-color: #ffc107;\n}\n.btn-check:focus + .btn-outline-warning, .btn-outline-warning:focus {\n  box-shadow: 0 0 0 0.25rem rgba(255, 193, 7, 0.5);\n}\n.btn-check:checked + .btn-outline-warning, .btn-check:active + .btn-outline-warning, .btn-outline-warning:active, .btn-outline-warning.active, .btn-outline-warning.dropdown-toggle.show {\n  color: #000;\n  background-color: #ffc107;\n  border-color: #ffc107;\n}\n.btn-check:checked + .btn-outline-warning:focus, .btn-check:active + .btn-outline-warning:focus, .btn-outline-warning:active:focus, .btn-outline-warning.active:focus, .btn-outline-warning.dropdown-toggle.show:focus {\n  box-shadow: 0 0 0 0.25rem rgba(255, 193, 7, 0.5);\n}\n.btn-outline-warning:disabled, .btn-outline-warning.disabled {\n  color: #ffc107;\n  background-color: transparent;\n}\n\n.btn-outline-danger {\n  color: #dc3545;\n  border-color: #dc3545;\n}\n.btn-outline-danger:hover {\n  color: #fff;\n  background-color: #dc3545;\n  border-color: #dc3545;\n}\n.btn-check:focus + .btn-outline-danger, .btn-outline-danger:focus {\n  box-shadow: 0 0 0 0.25rem rgba(220, 53, 69, 0.5);\n}\n.btn-check:checked + .btn-outline-danger, .btn-check:active + .btn-outline-danger, .btn-outline-danger:active, .btn-outline-danger.active, .btn-outline-danger.dropdown-toggle.show {\n  color: #fff;\n  background-color: #dc3545;\n  border-color: #dc3545;\n}\n.btn-check:checked + .btn-outline-danger:focus, .btn-check:active + .btn-outline-danger:focus, .btn-outline-danger:active:focus, .btn-outline-danger.active:focus, .btn-outline-danger.dropdown-toggle.show:focus {\n  box-shadow: 0 0 0 0.25rem rgba(220, 53, 69, 0.5);\n}\n.btn-outline-danger:disabled, .btn-outline-danger.disabled {\n  color: #dc3545;\n  background-color: transparent;\n}\n\n.btn-outline-light {\n  color: #f8f9fa;\n  border-color: #f8f9fa;\n}\n.btn-outline-light:hover {\n  color: #000;\n  background-color: #f8f9fa;\n  border-color: #f8f9fa;\n}\n.btn-check:focus + .btn-outline-light, .btn-outline-light:focus {\n  box-shadow: 0 0 0 0.25rem rgba(248, 249, 250, 0.5);\n}\n.btn-check:checked + .btn-outline-light, .btn-check:active + .btn-outline-light, .btn-outline-light:active, .btn-outline-light.active, .btn-outline-light.dropdown-toggle.show {\n  color: #000;\n  background-color: #f8f9fa;\n  border-color: #f8f9fa;\n}\n.btn-check:checked + .btn-outline-light:focus, .btn-check:active + .btn-outline-light:focus, .btn-outline-light:active:focus, .btn-outline-light.active:focus, .btn-outline-light.dropdown-toggle.show:focus {\n  box-shadow: 0 0 0 0.25rem rgba(248, 249, 250, 0.5);\n}\n.btn-outline-light:disabled, .btn-outline-light.disabled {\n  color: #f8f9fa;\n  background-color: transparent;\n}\n\n.btn-outline-dark {\n  color: #212529;\n  border-color: #212529;\n}\n.btn-outline-dark:hover {\n  color: #fff;\n  background-color: #212529;\n  border-color: #212529;\n}\n.btn-check:focus + .btn-outline-dark, .btn-outline-dark:focus {\n  box-shadow: 0 0 0 0.25rem rgba(33, 37, 41, 0.5);\n}\n.btn-check:checked + .btn-outline-dark, .btn-check:active + .btn-outline-dark, .btn-outline-dark:active, .btn-outline-dark.active, .btn-outline-dark.dropdown-toggle.show {\n  color: #fff;\n  background-color: #212529;\n  border-color: #212529;\n}\n.btn-check:checked + .btn-outline-dark:focus, .btn-check:active + .btn-outline-dark:focus, .btn-outline-dark:active:focus, .btn-outline-dark.active:focus, .btn-outline-dark.dropdown-toggle.show:focus {\n  box-shadow: 0 0 0 0.25rem rgba(33, 37, 41, 0.5);\n}\n.btn-outline-dark:disabled, .btn-outline-dark.disabled {\n  color: #212529;\n  background-color: transparent;\n}\n\n.btn-link {\n  font-weight: 400;\n  color: #0d6efd;\n  text-decoration: underline;\n}\n.btn-link:hover {\n  color: #0a58ca;\n}\n.btn-link:disabled, .btn-link.disabled {\n  color: #6c757d;\n}\n\n.btn-lg, .btn-group-lg > .btn {\n  padding: 0.5rem 1rem;\n  font-size: 1.25rem;\n  border-radius: 0.3rem;\n}\n\n.btn-sm, .btn-group-sm > .btn {\n  padding: 0.25rem 0.5rem;\n  font-size: 0.875rem;\n  border-radius: 0.2rem;\n}\n\n.fade {\n  transition: opacity 0.15s linear;\n}\n@media (prefers-reduced-motion: reduce) {\n  .fade {\n    transition: none;\n  }\n}\n.fade:not(.show) {\n  opacity: 0;\n}\n\n.collapse:not(.show) {\n  display: none;\n}\n\n.collapsing {\n  height: 0;\n  overflow: hidden;\n  transition: height 0.35s ease;\n}\n@media (prefers-reduced-motion: reduce) {\n  .collapsing {\n    transition: none;\n  }\n}\n.collapsing.collapse-horizontal {\n  width: 0;\n  height: auto;\n  transition: width 0.35s ease;\n}\n@media (prefers-reduced-motion: reduce) {\n  .collapsing.collapse-horizontal {\n    transition: none;\n  }\n}\n\n.dropup,\n.dropend,\n.dropdown,\n.dropstart {\n  position: relative;\n}\n\n.dropdown-toggle {\n  white-space: nowrap;\n}\n.dropdown-toggle::after {\n  display: inline-block;\n  margin-right: 0.255em;\n  vertical-align: 0.255em;\n  content: \"\";\n  border-top: 0.3em solid;\n  border-left: 0.3em solid transparent;\n  border-bottom: 0;\n  border-right: 0.3em solid transparent;\n}\n.dropdown-toggle:empty::after {\n  margin-right: 0;\n}\n\n.dropdown-menu {\n  position: absolute;\n  z-index: 1000;\n  display: none;\n  min-width: 10rem;\n  padding: 0.5rem 0;\n  margin: 0;\n  font-size: 1rem;\n  color: #212529;\n  text-align: right;\n  list-style: none;\n  background-color: #fff;\n  background-clip: padding-box;\n  border: 1px solid rgba(0, 0, 0, 0.15);\n  border-radius: 0.25rem;\n}\n.dropdown-menu[data-bs-popper] {\n  top: 100%;\n  right: 0;\n  margin-top: 0.125rem;\n}\n\n.dropdown-menu-start {\n  --bs-position: start;\n}\n.dropdown-menu-start[data-bs-popper] {\n  left: auto;\n  right: 0;\n}\n\n.dropdown-menu-end {\n  --bs-position: end;\n}\n.dropdown-menu-end[data-bs-popper] {\n  left: 0;\n  right: auto;\n}\n\n@media (min-width: 576px) {\n  .dropdown-menu-sm-start {\n    --bs-position: start;\n  }\n  .dropdown-menu-sm-start[data-bs-popper] {\n    left: auto;\n    right: 0;\n  }\n\n  .dropdown-menu-sm-end {\n    --bs-position: end;\n  }\n  .dropdown-menu-sm-end[data-bs-popper] {\n    left: 0;\n    right: auto;\n  }\n}\n@media (min-width: 768px) {\n  .dropdown-menu-md-start {\n    --bs-position: start;\n  }\n  .dropdown-menu-md-start[data-bs-popper] {\n    left: auto;\n    right: 0;\n  }\n\n  .dropdown-menu-md-end {\n    --bs-position: end;\n  }\n  .dropdown-menu-md-end[data-bs-popper] {\n    left: 0;\n    right: auto;\n  }\n}\n@media (min-width: 992px) {\n  .dropdown-menu-lg-start {\n    --bs-position: start;\n  }\n  .dropdown-menu-lg-start[data-bs-popper] {\n    left: auto;\n    right: 0;\n  }\n\n  .dropdown-menu-lg-end {\n    --bs-position: end;\n  }\n  .dropdown-menu-lg-end[data-bs-popper] {\n    left: 0;\n    right: auto;\n  }\n}\n@media (min-width: 1200px) {\n  .dropdown-menu-xl-start {\n    --bs-position: start;\n  }\n  .dropdown-menu-xl-start[data-bs-popper] {\n    left: auto;\n    right: 0;\n  }\n\n  .dropdown-menu-xl-end {\n    --bs-position: end;\n  }\n  .dropdown-menu-xl-end[data-bs-popper] {\n    left: 0;\n    right: auto;\n  }\n}\n@media (min-width: 1400px) {\n  .dropdown-menu-xxl-start {\n    --bs-position: start;\n  }\n  .dropdown-menu-xxl-start[data-bs-popper] {\n    left: auto;\n    right: 0;\n  }\n\n  .dropdown-menu-xxl-end {\n    --bs-position: end;\n  }\n  .dropdown-menu-xxl-end[data-bs-popper] {\n    left: 0;\n    right: auto;\n  }\n}\n.dropup .dropdown-menu[data-bs-popper] {\n  top: auto;\n  bottom: 100%;\n  margin-top: 0;\n  margin-bottom: 0.125rem;\n}\n.dropup .dropdown-toggle::after {\n  display: inline-block;\n  margin-right: 0.255em;\n  vertical-align: 0.255em;\n  content: \"\";\n  border-top: 0;\n  border-left: 0.3em solid transparent;\n  border-bottom: 0.3em solid;\n  border-right: 0.3em solid transparent;\n}\n.dropup .dropdown-toggle:empty::after {\n  margin-right: 0;\n}\n\n.dropend .dropdown-menu[data-bs-popper] {\n  top: 0;\n  left: auto;\n  right: 100%;\n  margin-top: 0;\n  margin-right: 0.125rem;\n}\n.dropend .dropdown-toggle::after {\n  display: inline-block;\n  margin-right: 0.255em;\n  vertical-align: 0.255em;\n  content: \"\";\n  border-top: 0.3em solid transparent;\n  border-left: 0;\n  border-bottom: 0.3em solid transparent;\n  border-right: 0.3em solid;\n}\n.dropend .dropdown-toggle:empty::after {\n  margin-right: 0;\n}\n.dropend .dropdown-toggle::after {\n  vertical-align: 0;\n}\n\n.dropstart .dropdown-menu[data-bs-popper] {\n  top: 0;\n  left: 100%;\n  right: auto;\n  margin-top: 0;\n  margin-left: 0.125rem;\n}\n.dropstart .dropdown-toggle::after {\n  display: inline-block;\n  margin-right: 0.255em;\n  vertical-align: 0.255em;\n  content: \"\";\n}\n.dropstart .dropdown-toggle::after {\n  display: none;\n}\n.dropstart .dropdown-toggle::before {\n  display: inline-block;\n  margin-left: 0.255em;\n  vertical-align: 0.255em;\n  content: \"\";\n  border-top: 0.3em solid transparent;\n  border-left: 0.3em solid;\n  border-bottom: 0.3em solid transparent;\n}\n.dropstart .dropdown-toggle:empty::after {\n  margin-right: 0;\n}\n.dropstart .dropdown-toggle::before {\n  vertical-align: 0;\n}\n\n.dropdown-divider {\n  height: 0;\n  margin: 0.5rem 0;\n  overflow: hidden;\n  border-top: 1px solid rgba(0, 0, 0, 0.15);\n}\n\n.dropdown-item {\n  display: block;\n  width: 100%;\n  padding: 0.25rem 1rem;\n  clear: both;\n  font-weight: 400;\n  color: #212529;\n  text-align: inherit;\n  text-decoration: none;\n  white-space: nowrap;\n  background-color: transparent;\n  border: 0;\n}\n.dropdown-item:hover, .dropdown-item:focus {\n  color: #1e2125;\n  background-color: #e9ecef;\n}\n.dropdown-item.active, .dropdown-item:active {\n  color: #fff;\n  text-decoration: none;\n  background-color: #0d6efd;\n}\n.dropdown-item.disabled, .dropdown-item:disabled {\n  color: #adb5bd;\n  pointer-events: none;\n  background-color: transparent;\n}\n\n.dropdown-menu.show {\n  display: block;\n}\n\n.dropdown-header {\n  display: block;\n  padding: 0.5rem 1rem;\n  margin-bottom: 0;\n  font-size: 0.875rem;\n  color: #6c757d;\n  white-space: nowrap;\n}\n\n.dropdown-item-text {\n  display: block;\n  padding: 0.25rem 1rem;\n  color: #212529;\n}\n\n.dropdown-menu-dark {\n  color: #dee2e6;\n  background-color: #343a40;\n  border-color: rgba(0, 0, 0, 0.15);\n}\n.dropdown-menu-dark .dropdown-item {\n  color: #dee2e6;\n}\n.dropdown-menu-dark .dropdown-item:hover, .dropdown-menu-dark .dropdown-item:focus {\n  color: #fff;\n  background-color: rgba(255, 255, 255, 0.15);\n}\n.dropdown-menu-dark .dropdown-item.active, .dropdown-menu-dark .dropdown-item:active {\n  color: #fff;\n  background-color: #0d6efd;\n}\n.dropdown-menu-dark .dropdown-item.disabled, .dropdown-menu-dark .dropdown-item:disabled {\n  color: #adb5bd;\n}\n.dropdown-menu-dark .dropdown-divider {\n  border-color: rgba(0, 0, 0, 0.15);\n}\n.dropdown-menu-dark .dropdown-item-text {\n  color: #dee2e6;\n}\n.dropdown-menu-dark .dropdown-header {\n  color: #adb5bd;\n}\n\n.btn-group,\n.btn-group-vertical {\n  position: relative;\n  display: inline-flex;\n  vertical-align: middle;\n}\n.btn-group > .btn,\n.btn-group-vertical > .btn {\n  position: relative;\n  flex: 1 1 auto;\n}\n.btn-group > .btn-check:checked + .btn,\n.btn-group > .btn-check:focus + .btn,\n.btn-group > .btn:hover,\n.btn-group > .btn:focus,\n.btn-group > .btn:active,\n.btn-group > .btn.active,\n.btn-group-vertical > .btn-check:checked + .btn,\n.btn-group-vertical > .btn-check:focus + .btn,\n.btn-group-vertical > .btn:hover,\n.btn-group-vertical > .btn:focus,\n.btn-group-vertical > .btn:active,\n.btn-group-vertical > .btn.active {\n  z-index: 1;\n}\n\n.btn-toolbar {\n  display: flex;\n  flex-wrap: wrap;\n  justify-content: flex-start;\n}\n.btn-toolbar .input-group {\n  width: auto;\n}\n\n.btn-group > .btn:not(:first-child),\n.btn-group > .btn-group:not(:first-child) {\n  margin-right: -1px;\n}\n.btn-group > .btn:not(:last-child):not(.dropdown-toggle),\n.btn-group > .btn-group:not(:last-child) > .btn {\n  border-top-left-radius: 0;\n  border-bottom-left-radius: 0;\n}\n.btn-group > .btn:nth-child(n+3),\n.btn-group > :not(.btn-check) + .btn,\n.btn-group > .btn-group:not(:first-child) > .btn {\n  border-top-right-radius: 0;\n  border-bottom-right-radius: 0;\n}\n\n.dropdown-toggle-split {\n  padding-left: 0.5625rem;\n  padding-right: 0.5625rem;\n}\n.dropdown-toggle-split::after, .dropup .dropdown-toggle-split::after, .dropend .dropdown-toggle-split::after {\n  margin-right: 0;\n}\n.dropstart .dropdown-toggle-split::before {\n  margin-left: 0;\n}\n\n.btn-sm + .dropdown-toggle-split, .btn-group-sm > .btn + .dropdown-toggle-split {\n  padding-left: 0.375rem;\n  padding-right: 0.375rem;\n}\n\n.btn-lg + .dropdown-toggle-split, .btn-group-lg > .btn + .dropdown-toggle-split {\n  padding-left: 0.75rem;\n  padding-right: 0.75rem;\n}\n\n.btn-group-vertical {\n  flex-direction: column;\n  align-items: flex-start;\n  justify-content: center;\n}\n.btn-group-vertical > .btn,\n.btn-group-vertical > .btn-group {\n  width: 100%;\n}\n.btn-group-vertical > .btn:not(:first-child),\n.btn-group-vertical > .btn-group:not(:first-child) {\n  margin-top: -1px;\n}\n.btn-group-vertical > .btn:not(:last-child):not(.dropdown-toggle),\n.btn-group-vertical > .btn-group:not(:last-child) > .btn {\n  border-bottom-left-radius: 0;\n  border-bottom-right-radius: 0;\n}\n.btn-group-vertical > .btn ~ .btn,\n.btn-group-vertical > .btn-group:not(:first-child) > .btn {\n  border-top-right-radius: 0;\n  border-top-left-radius: 0;\n}\n\n.nav {\n  display: flex;\n  flex-wrap: wrap;\n  padding-right: 0;\n  margin-bottom: 0;\n  list-style: none;\n}\n\n.nav-link {\n  display: block;\n  padding: 0.5rem 1rem;\n  color: #0d6efd;\n  text-decoration: none;\n  transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out;\n}\n@media (prefers-reduced-motion: reduce) {\n  .nav-link {\n    transition: none;\n  }\n}\n.nav-link:hover, .nav-link:focus {\n  color: #0a58ca;\n}\n.nav-link.disabled {\n  color: #6c757d;\n  pointer-events: none;\n  cursor: default;\n}\n\n.nav-tabs {\n  border-bottom: 1px solid #dee2e6;\n}\n.nav-tabs .nav-link {\n  margin-bottom: -1px;\n  background: none;\n  border: 1px solid transparent;\n  border-top-right-radius: 0.25rem;\n  border-top-left-radius: 0.25rem;\n}\n.nav-tabs .nav-link:hover, .nav-tabs .nav-link:focus {\n  border-color: #e9ecef #e9ecef #dee2e6;\n  isolation: isolate;\n}\n.nav-tabs .nav-link.disabled {\n  color: #6c757d;\n  background-color: transparent;\n  border-color: transparent;\n}\n.nav-tabs .nav-link.active,\n.nav-tabs .nav-item.show .nav-link {\n  color: #495057;\n  background-color: #fff;\n  border-color: #dee2e6 #dee2e6 #fff;\n}\n.nav-tabs .dropdown-menu {\n  margin-top: -1px;\n  border-top-right-radius: 0;\n  border-top-left-radius: 0;\n}\n\n.nav-pills .nav-link {\n  background: none;\n  border: 0;\n  border-radius: 0.25rem;\n}\n.nav-pills .nav-link.active,\n.nav-pills .show > .nav-link {\n  color: #fff;\n  background-color: #0d6efd;\n}\n\n.nav-fill > .nav-link,\n.nav-fill .nav-item {\n  flex: 1 1 auto;\n  text-align: center;\n}\n\n.nav-justified > .nav-link,\n.nav-justified .nav-item {\n  flex-basis: 0;\n  flex-grow: 1;\n  text-align: center;\n}\n\n.nav-fill .nav-item .nav-link,\n.nav-justified .nav-item .nav-link {\n  width: 100%;\n}\n\n.tab-content > .tab-pane {\n  display: none;\n}\n.tab-content > .active {\n  display: block;\n}\n\n.navbar {\n  position: relative;\n  display: flex;\n  flex-wrap: wrap;\n  align-items: center;\n  justify-content: space-between;\n  padding-top: 0.5rem;\n  padding-bottom: 0.5rem;\n}\n.navbar > .container,\n.navbar > .container-fluid,\n.navbar > .container-sm,\n.navbar > .container-md,\n.navbar > .container-lg,\n.navbar > .container-xl,\n.navbar > .container-xxl {\n  display: flex;\n  flex-wrap: inherit;\n  align-items: center;\n  justify-content: space-between;\n}\n.navbar-brand {\n  padding-top: 0.3125rem;\n  padding-bottom: 0.3125rem;\n  margin-left: 1rem;\n  font-size: 1.25rem;\n  text-decoration: none;\n  white-space: nowrap;\n}\n.navbar-nav {\n  display: flex;\n  flex-direction: column;\n  padding-right: 0;\n  margin-bottom: 0;\n  list-style: none;\n}\n.navbar-nav .nav-link {\n  padding-left: 0;\n  padding-right: 0;\n}\n.navbar-nav .dropdown-menu {\n  position: static;\n}\n\n.navbar-text {\n  padding-top: 0.5rem;\n  padding-bottom: 0.5rem;\n}\n\n.navbar-collapse {\n  flex-basis: 100%;\n  flex-grow: 1;\n  align-items: center;\n}\n\n.navbar-toggler {\n  padding: 0.25rem 0.75rem;\n  font-size: 1.25rem;\n  line-height: 1;\n  background-color: transparent;\n  border: 1px solid transparent;\n  border-radius: 0.25rem;\n  transition: box-shadow 0.15s ease-in-out;\n}\n@media (prefers-reduced-motion: reduce) {\n  .navbar-toggler {\n    transition: none;\n  }\n}\n.navbar-toggler:hover {\n  text-decoration: none;\n}\n.navbar-toggler:focus {\n  text-decoration: none;\n  outline: 0;\n  box-shadow: 0 0 0 0.25rem;\n}\n\n.navbar-toggler-icon {\n  display: inline-block;\n  width: 1.5em;\n  height: 1.5em;\n  vertical-align: middle;\n  background-repeat: no-repeat;\n  background-position: center;\n  background-size: 100%;\n}\n\n.navbar-nav-scroll {\n  max-height: var(--bs-scroll-height, 75vh);\n  overflow-y: auto;\n}\n\n@media (min-width: 576px) {\n  .navbar-expand-sm {\n    flex-wrap: nowrap;\n    justify-content: flex-start;\n  }\n  .navbar-expand-sm .navbar-nav {\n    flex-direction: row;\n  }\n  .navbar-expand-sm .navbar-nav .dropdown-menu {\n    position: absolute;\n  }\n  .navbar-expand-sm .navbar-nav .nav-link {\n    padding-left: 0.5rem;\n    padding-right: 0.5rem;\n  }\n  .navbar-expand-sm .navbar-nav-scroll {\n    overflow: visible;\n  }\n  .navbar-expand-sm .navbar-collapse {\n    display: flex !important;\n    flex-basis: auto;\n  }\n  .navbar-expand-sm .navbar-toggler {\n    display: none;\n  }\n  .navbar-expand-sm .offcanvas-header {\n    display: none;\n  }\n  .navbar-expand-sm .offcanvas {\n    position: inherit;\n    bottom: 0;\n    z-index: 1000;\n    flex-grow: 1;\n    visibility: visible !important;\n    background-color: transparent;\n    border-left: 0;\n    border-right: 0;\n    transition: none;\n    transform: none;\n  }\n  .navbar-expand-sm .offcanvas-top,\n.navbar-expand-sm .offcanvas-bottom {\n    height: auto;\n    border-top: 0;\n    border-bottom: 0;\n  }\n  .navbar-expand-sm .offcanvas-body {\n    display: flex;\n    flex-grow: 0;\n    padding: 0;\n    overflow-y: visible;\n  }\n}\n@media (min-width: 768px) {\n  .navbar-expand-md {\n    flex-wrap: nowrap;\n    justify-content: flex-start;\n  }\n  .navbar-expand-md .navbar-nav {\n    flex-direction: row;\n  }\n  .navbar-expand-md .navbar-nav .dropdown-menu {\n    position: absolute;\n  }\n  .navbar-expand-md .navbar-nav .nav-link {\n    padding-left: 0.5rem;\n    padding-right: 0.5rem;\n  }\n  .navbar-expand-md .navbar-nav-scroll {\n    overflow: visible;\n  }\n  .navbar-expand-md .navbar-collapse {\n    display: flex !important;\n    flex-basis: auto;\n  }\n  .navbar-expand-md .navbar-toggler {\n    display: none;\n  }\n  .navbar-expand-md .offcanvas-header {\n    display: none;\n  }\n  .navbar-expand-md .offcanvas {\n    position: inherit;\n    bottom: 0;\n    z-index: 1000;\n    flex-grow: 1;\n    visibility: visible !important;\n    background-color: transparent;\n    border-left: 0;\n    border-right: 0;\n    transition: none;\n    transform: none;\n  }\n  .navbar-expand-md .offcanvas-top,\n.navbar-expand-md .offcanvas-bottom {\n    height: auto;\n    border-top: 0;\n    border-bottom: 0;\n  }\n  .navbar-expand-md .offcanvas-body {\n    display: flex;\n    flex-grow: 0;\n    padding: 0;\n    overflow-y: visible;\n  }\n}\n@media (min-width: 992px) {\n  .navbar-expand-lg {\n    flex-wrap: nowrap;\n    justify-content: flex-start;\n  }\n  .navbar-expand-lg .navbar-nav {\n    flex-direction: row;\n  }\n  .navbar-expand-lg .navbar-nav .dropdown-menu {\n    position: absolute;\n  }\n  .navbar-expand-lg .navbar-nav .nav-link {\n    padding-left: 0.5rem;\n    padding-right: 0.5rem;\n  }\n  .navbar-expand-lg .navbar-nav-scroll {\n    overflow: visible;\n  }\n  .navbar-expand-lg .navbar-collapse {\n    display: flex !important;\n    flex-basis: auto;\n  }\n  .navbar-expand-lg .navbar-toggler {\n    display: none;\n  }\n  .navbar-expand-lg .offcanvas-header {\n    display: none;\n  }\n  .navbar-expand-lg .offcanvas {\n    position: inherit;\n    bottom: 0;\n    z-index: 1000;\n    flex-grow: 1;\n    visibility: visible !important;\n    background-color: transparent;\n    border-left: 0;\n    border-right: 0;\n    transition: none;\n    transform: none;\n  }\n  .navbar-expand-lg .offcanvas-top,\n.navbar-expand-lg .offcanvas-bottom {\n    height: auto;\n    border-top: 0;\n    border-bottom: 0;\n  }\n  .navbar-expand-lg .offcanvas-body {\n    display: flex;\n    flex-grow: 0;\n    padding: 0;\n    overflow-y: visible;\n  }\n}\n@media (min-width: 1200px) {\n  .navbar-expand-xl {\n    flex-wrap: nowrap;\n    justify-content: flex-start;\n  }\n  .navbar-expand-xl .navbar-nav {\n    flex-direction: row;\n  }\n  .navbar-expand-xl .navbar-nav .dropdown-menu {\n    position: absolute;\n  }\n  .navbar-expand-xl .navbar-nav .nav-link {\n    padding-left: 0.5rem;\n    padding-right: 0.5rem;\n  }\n  .navbar-expand-xl .navbar-nav-scroll {\n    overflow: visible;\n  }\n  .navbar-expand-xl .navbar-collapse {\n    display: flex !important;\n    flex-basis: auto;\n  }\n  .navbar-expand-xl .navbar-toggler {\n    display: none;\n  }\n  .navbar-expand-xl .offcanvas-header {\n    display: none;\n  }\n  .navbar-expand-xl .offcanvas {\n    position: inherit;\n    bottom: 0;\n    z-index: 1000;\n    flex-grow: 1;\n    visibility: visible !important;\n    background-color: transparent;\n    border-left: 0;\n    border-right: 0;\n    transition: none;\n    transform: none;\n  }\n  .navbar-expand-xl .offcanvas-top,\n.navbar-expand-xl .offcanvas-bottom {\n    height: auto;\n    border-top: 0;\n    border-bottom: 0;\n  }\n  .navbar-expand-xl .offcanvas-body {\n    display: flex;\n    flex-grow: 0;\n    padding: 0;\n    overflow-y: visible;\n  }\n}\n@media (min-width: 1400px) {\n  .navbar-expand-xxl {\n    flex-wrap: nowrap;\n    justify-content: flex-start;\n  }\n  .navbar-expand-xxl .navbar-nav {\n    flex-direction: row;\n  }\n  .navbar-expand-xxl .navbar-nav .dropdown-menu {\n    position: absolute;\n  }\n  .navbar-expand-xxl .navbar-nav .nav-link {\n    padding-left: 0.5rem;\n    padding-right: 0.5rem;\n  }\n  .navbar-expand-xxl .navbar-nav-scroll {\n    overflow: visible;\n  }\n  .navbar-expand-xxl .navbar-collapse {\n    display: flex !important;\n    flex-basis: auto;\n  }\n  .navbar-expand-xxl .navbar-toggler {\n    display: none;\n  }\n  .navbar-expand-xxl .offcanvas-header {\n    display: none;\n  }\n  .navbar-expand-xxl .offcanvas {\n    position: inherit;\n    bottom: 0;\n    z-index: 1000;\n    flex-grow: 1;\n    visibility: visible !important;\n    background-color: transparent;\n    border-left: 0;\n    border-right: 0;\n    transition: none;\n    transform: none;\n  }\n  .navbar-expand-xxl .offcanvas-top,\n.navbar-expand-xxl .offcanvas-bottom {\n    height: auto;\n    border-top: 0;\n    border-bottom: 0;\n  }\n  .navbar-expand-xxl .offcanvas-body {\n    display: flex;\n    flex-grow: 0;\n    padding: 0;\n    overflow-y: visible;\n  }\n}\n.navbar-expand {\n  flex-wrap: nowrap;\n  justify-content: flex-start;\n}\n.navbar-expand .navbar-nav {\n  flex-direction: row;\n}\n.navbar-expand .navbar-nav .dropdown-menu {\n  position: absolute;\n}\n.navbar-expand .navbar-nav .nav-link {\n  padding-left: 0.5rem;\n  padding-right: 0.5rem;\n}\n.navbar-expand .navbar-nav-scroll {\n  overflow: visible;\n}\n.navbar-expand .navbar-collapse {\n  display: flex !important;\n  flex-basis: auto;\n}\n.navbar-expand .navbar-toggler {\n  display: none;\n}\n.navbar-expand .offcanvas-header {\n  display: none;\n}\n.navbar-expand .offcanvas {\n  position: inherit;\n  bottom: 0;\n  z-index: 1000;\n  flex-grow: 1;\n  visibility: visible !important;\n  background-color: transparent;\n  border-left: 0;\n  border-right: 0;\n  transition: none;\n  transform: none;\n}\n.navbar-expand .offcanvas-top,\n.navbar-expand .offcanvas-bottom {\n  height: auto;\n  border-top: 0;\n  border-bottom: 0;\n}\n.navbar-expand .offcanvas-body {\n  display: flex;\n  flex-grow: 0;\n  padding: 0;\n  overflow-y: visible;\n}\n\n.navbar-light .navbar-brand {\n  color: rgba(0, 0, 0, 0.9);\n}\n.navbar-light .navbar-brand:hover, .navbar-light .navbar-brand:focus {\n  color: rgba(0, 0, 0, 0.9);\n}\n.navbar-light .navbar-nav .nav-link {\n  color: rgba(0, 0, 0, 0.55);\n}\n.navbar-light .navbar-nav .nav-link:hover, .navbar-light .navbar-nav .nav-link:focus {\n  color: rgba(0, 0, 0, 0.7);\n}\n.navbar-light .navbar-nav .nav-link.disabled {\n  color: rgba(0, 0, 0, 0.3);\n}\n.navbar-light .navbar-nav .show > .nav-link,\n.navbar-light .navbar-nav .nav-link.active {\n  color: rgba(0, 0, 0, 0.9);\n}\n.navbar-light .navbar-toggler {\n  color: rgba(0, 0, 0, 0.55);\n  border-color: rgba(0, 0, 0, 0.1);\n}\n.navbar-light .navbar-toggler-icon {\n  background-image: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'%3e%3cpath stroke='rgba%280, 0, 0, 0.55%29' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e\");\n}\n.navbar-light .navbar-text {\n  color: rgba(0, 0, 0, 0.55);\n}\n.navbar-light .navbar-text a,\n.navbar-light .navbar-text a:hover,\n.navbar-light .navbar-text a:focus {\n  color: rgba(0, 0, 0, 0.9);\n}\n\n.navbar-dark .navbar-brand {\n  color: #fff;\n}\n.navbar-dark .navbar-brand:hover, .navbar-dark .navbar-brand:focus {\n  color: #fff;\n}\n.navbar-dark .navbar-nav .nav-link {\n  color: rgba(255, 255, 255, 0.55);\n}\n.navbar-dark .navbar-nav .nav-link:hover, .navbar-dark .navbar-nav .nav-link:focus {\n  color: rgba(255, 255, 255, 0.75);\n}\n.navbar-dark .navbar-nav .nav-link.disabled {\n  color: rgba(255, 255, 255, 0.25);\n}\n.navbar-dark .navbar-nav .show > .nav-link,\n.navbar-dark .navbar-nav .nav-link.active {\n  color: #fff;\n}\n.navbar-dark .navbar-toggler {\n  color: rgba(255, 255, 255, 0.55);\n  border-color: rgba(255, 255, 255, 0.1);\n}\n.navbar-dark .navbar-toggler-icon {\n  background-image: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'%3e%3cpath stroke='rgba%28255, 255, 255, 0.55%29' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e\");\n}\n.navbar-dark .navbar-text {\n  color: rgba(255, 255, 255, 0.55);\n}\n.navbar-dark .navbar-text a,\n.navbar-dark .navbar-text a:hover,\n.navbar-dark .navbar-text a:focus {\n  color: #fff;\n}\n\n.card {\n  position: relative;\n  display: flex;\n  flex-direction: column;\n  min-width: 0;\n  word-wrap: break-word;\n  background-color: #fff;\n  background-clip: border-box;\n  border: 1px solid rgba(0, 0, 0, 0.125);\n  border-radius: 0.25rem;\n}\n.card > hr {\n  margin-left: 0;\n  margin-right: 0;\n}\n.card > .list-group {\n  border-top: inherit;\n  border-bottom: inherit;\n}\n.card > .list-group:first-child {\n  border-top-width: 0;\n  border-top-right-radius: calc(0.25rem - 1px);\n  border-top-left-radius: calc(0.25rem - 1px);\n}\n.card > .list-group:last-child {\n  border-bottom-width: 0;\n  border-bottom-left-radius: calc(0.25rem - 1px);\n  border-bottom-right-radius: calc(0.25rem - 1px);\n}\n.card > .card-header + .list-group,\n.card > .list-group + .card-footer {\n  border-top: 0;\n}\n\n.card-body {\n  flex: 1 1 auto;\n  padding: 1rem 1rem;\n}\n\n.card-title {\n  margin-bottom: 0.5rem;\n}\n\n.card-subtitle {\n  margin-top: -0.25rem;\n  margin-bottom: 0;\n}\n\n.card-text:last-child {\n  margin-bottom: 0;\n}\n\n.card-link + .card-link {\n  margin-right: 1rem;\n}\n\n.card-header {\n  padding: 0.5rem 1rem;\n  margin-bottom: 0;\n  background-color: rgba(0, 0, 0, 0.03);\n  border-bottom: 1px solid rgba(0, 0, 0, 0.125);\n}\n.card-header:first-child {\n  border-radius: calc(0.25rem - 1px) calc(0.25rem - 1px) 0 0;\n}\n\n.card-footer {\n  padding: 0.5rem 1rem;\n  background-color: rgba(0, 0, 0, 0.03);\n  border-top: 1px solid rgba(0, 0, 0, 0.125);\n}\n.card-footer:last-child {\n  border-radius: 0 0 calc(0.25rem - 1px) calc(0.25rem - 1px);\n}\n\n.card-header-tabs {\n  margin-left: -0.5rem;\n  margin-bottom: -0.5rem;\n  margin-right: -0.5rem;\n  border-bottom: 0;\n}\n\n.card-header-pills {\n  margin-left: -0.5rem;\n  margin-right: -0.5rem;\n}\n\n.card-img-overlay {\n  position: absolute;\n  top: 0;\n  left: 0;\n  bottom: 0;\n  right: 0;\n  padding: 1rem;\n  border-radius: calc(0.25rem - 1px);\n}\n\n.card-img,\n.card-img-top,\n.card-img-bottom {\n  width: 100%;\n}\n\n.card-img,\n.card-img-top {\n  border-top-right-radius: calc(0.25rem - 1px);\n  border-top-left-radius: calc(0.25rem - 1px);\n}\n\n.card-img,\n.card-img-bottom {\n  border-bottom-left-radius: calc(0.25rem - 1px);\n  border-bottom-right-radius: calc(0.25rem - 1px);\n}\n\n.card-group > .card {\n  margin-bottom: 0.75rem;\n}\n@media (min-width: 576px) {\n  .card-group {\n    display: flex;\n    flex-flow: row wrap;\n  }\n  .card-group > .card {\n    flex: 1 0 0%;\n    margin-bottom: 0;\n  }\n  .card-group > .card + .card {\n    margin-right: 0;\n    border-right: 0;\n  }\n  .card-group > .card:not(:last-child) {\n    border-top-left-radius: 0;\n    border-bottom-left-radius: 0;\n  }\n  .card-group > .card:not(:last-child) .card-img-top,\n.card-group > .card:not(:last-child) .card-header {\n    border-top-left-radius: 0;\n  }\n  .card-group > .card:not(:last-child) .card-img-bottom,\n.card-group > .card:not(:last-child) .card-footer {\n    border-bottom-left-radius: 0;\n  }\n  .card-group > .card:not(:first-child) {\n    border-top-right-radius: 0;\n    border-bottom-right-radius: 0;\n  }\n  .card-group > .card:not(:first-child) .card-img-top,\n.card-group > .card:not(:first-child) .card-header {\n    border-top-right-radius: 0;\n  }\n  .card-group > .card:not(:first-child) .card-img-bottom,\n.card-group > .card:not(:first-child) .card-footer {\n    border-bottom-right-radius: 0;\n  }\n}\n\n.accordion-button {\n  position: relative;\n  display: flex;\n  align-items: center;\n  width: 100%;\n  padding: 1rem 1.25rem;\n  font-size: 1rem;\n  color: #212529;\n  text-align: right;\n  background-color: #fff;\n  border: 0;\n  border-radius: 0;\n  overflow-anchor: none;\n  transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out, border-radius 0.15s ease;\n}\n@media (prefers-reduced-motion: reduce) {\n  .accordion-button {\n    transition: none;\n  }\n}\n.accordion-button:not(.collapsed) {\n  color: #0c63e4;\n  background-color: #e7f1ff;\n  box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.125);\n}\n.accordion-button:not(.collapsed)::after {\n  background-image: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%230c63e4'%3e%3cpath fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e\");\n  transform: rotate(180deg);\n}\n.accordion-button::after {\n  flex-shrink: 0;\n  width: 1.25rem;\n  height: 1.25rem;\n  margin-right: auto;\n  content: \"\";\n  background-image: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23212529'%3e%3cpath fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e\");\n  background-repeat: no-repeat;\n  background-size: 1.25rem;\n  transition: transform 0.2s ease-in-out;\n}\n@media (prefers-reduced-motion: reduce) {\n  .accordion-button::after {\n    transition: none;\n  }\n}\n.accordion-button:hover {\n  z-index: 2;\n}\n.accordion-button:focus {\n  z-index: 3;\n  border-color: #86b7fe;\n  outline: 0;\n  box-shadow: 0 0 0 0.25rem rgba(13, 110, 253, 0.25);\n}\n\n.accordion-header {\n  margin-bottom: 0;\n}\n\n.accordion-item {\n  background-color: #fff;\n  border: 1px solid rgba(0, 0, 0, 0.125);\n}\n.accordion-item:first-of-type {\n  border-top-right-radius: 0.25rem;\n  border-top-left-radius: 0.25rem;\n}\n.accordion-item:first-of-type .accordion-button {\n  border-top-right-radius: calc(0.25rem - 1px);\n  border-top-left-radius: calc(0.25rem - 1px);\n}\n.accordion-item:not(:first-of-type) {\n  border-top: 0;\n}\n.accordion-item:last-of-type {\n  border-bottom-left-radius: 0.25rem;\n  border-bottom-right-radius: 0.25rem;\n}\n.accordion-item:last-of-type .accordion-button.collapsed {\n  border-bottom-left-radius: calc(0.25rem - 1px);\n  border-bottom-right-radius: calc(0.25rem - 1px);\n}\n.accordion-item:last-of-type .accordion-collapse {\n  border-bottom-left-radius: 0.25rem;\n  border-bottom-right-radius: 0.25rem;\n}\n\n.accordion-body {\n  padding: 1rem 1.25rem;\n}\n\n.accordion-flush .accordion-collapse {\n  border-width: 0;\n}\n.accordion-flush .accordion-item {\n  border-left: 0;\n  border-right: 0;\n  border-radius: 0;\n}\n.accordion-flush .accordion-item:first-child {\n  border-top: 0;\n}\n.accordion-flush .accordion-item:last-child {\n  border-bottom: 0;\n}\n.accordion-flush .accordion-item .accordion-button {\n  border-radius: 0;\n}\n\n.breadcrumb {\n  display: flex;\n  flex-wrap: wrap;\n  padding: 0 0;\n  margin-bottom: 1rem;\n  list-style: none;\n}\n\n.breadcrumb-item + .breadcrumb-item {\n  padding-right: 0.5rem;\n}\n.breadcrumb-item + .breadcrumb-item::before {\n  float: right;\n  padding-left: 0.5rem;\n  color: #6c757d;\n  content:  var(--bs-breadcrumb-divider, \"/\") ;\n}\n.breadcrumb-item.active {\n  color: #6c757d;\n}\n\n.pagination {\n  display: flex;\n  padding-right: 0;\n  list-style: none;\n}\n\n.page-link {\n  position: relative;\n  display: block;\n  color: #0d6efd;\n  text-decoration: none;\n  background-color: #fff;\n  border: 1px solid #dee2e6;\n  transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;\n}\n@media (prefers-reduced-motion: reduce) {\n  .page-link {\n    transition: none;\n  }\n}\n.page-link:hover {\n  z-index: 2;\n  color: #0a58ca;\n  background-color: #e9ecef;\n  border-color: #dee2e6;\n}\n.page-link:focus {\n  z-index: 3;\n  color: #0a58ca;\n  background-color: #e9ecef;\n  outline: 0;\n  box-shadow: 0 0 0 0.25rem rgba(13, 110, 253, 0.25);\n}\n\n.page-item:not(:first-child) .page-link {\n  margin-right: -1px;\n}\n.page-item.active .page-link {\n  z-index: 3;\n  color: #fff;\n  background-color: #0d6efd;\n  border-color: #0d6efd;\n}\n.page-item.disabled .page-link {\n  color: #6c757d;\n  pointer-events: none;\n  background-color: #fff;\n  border-color: #dee2e6;\n}\n\n.page-link {\n  padding: 0.375rem 0.75rem;\n}\n\n.page-item:first-child .page-link {\n  border-top-right-radius: 0.25rem;\n  border-bottom-right-radius: 0.25rem;\n}\n.page-item:last-child .page-link {\n  border-top-left-radius: 0.25rem;\n  border-bottom-left-radius: 0.25rem;\n}\n\n.pagination-lg .page-link {\n  padding: 0.75rem 1.5rem;\n  font-size: 1.25rem;\n}\n.pagination-lg .page-item:first-child .page-link {\n  border-top-right-radius: 0.3rem;\n  border-bottom-right-radius: 0.3rem;\n}\n.pagination-lg .page-item:last-child .page-link {\n  border-top-left-radius: 0.3rem;\n  border-bottom-left-radius: 0.3rem;\n}\n\n.pagination-sm .page-link {\n  padding: 0.25rem 0.5rem;\n  font-size: 0.875rem;\n}\n.pagination-sm .page-item:first-child .page-link {\n  border-top-right-radius: 0.2rem;\n  border-bottom-right-radius: 0.2rem;\n}\n.pagination-sm .page-item:last-child .page-link {\n  border-top-left-radius: 0.2rem;\n  border-bottom-left-radius: 0.2rem;\n}\n\n.badge {\n  display: inline-block;\n  padding: 0.35em 0.65em;\n  font-size: 0.75em;\n  font-weight: 700;\n  line-height: 1;\n  color: #fff;\n  text-align: center;\n  white-space: nowrap;\n  vertical-align: baseline;\n  border-radius: 0.25rem;\n}\n.badge:empty {\n  display: none;\n}\n\n.btn .badge {\n  position: relative;\n  top: -1px;\n}\n\n.alert {\n  position: relative;\n  padding: 1rem 1rem;\n  margin-bottom: 1rem;\n  border: 1px solid transparent;\n  border-radius: 0.25rem;\n}\n\n.alert-heading {\n  color: inherit;\n}\n\n.alert-link {\n  font-weight: 700;\n}\n\n.alert-dismissible {\n  padding-left: 3rem;\n}\n.alert-dismissible .btn-close {\n  position: absolute;\n  top: 0;\n  left: 0;\n  z-index: 2;\n  padding: 1.25rem 1rem;\n}\n\n.alert-primary {\n  color: #084298;\n  background-color: #cfe2ff;\n  border-color: #b6d4fe;\n}\n.alert-primary .alert-link {\n  color: #06357a;\n}\n\n.alert-secondary {\n  color: #41464b;\n  background-color: #e2e3e5;\n  border-color: #d3d6d8;\n}\n.alert-secondary .alert-link {\n  color: #34383c;\n}\n\n.alert-success {\n  color: #0f5132;\n  background-color: #d1e7dd;\n  border-color: #badbcc;\n}\n.alert-success .alert-link {\n  color: #0c4128;\n}\n\n.alert-info {\n  color: #055160;\n  background-color: #cff4fc;\n  border-color: #b6effb;\n}\n.alert-info .alert-link {\n  color: #04414d;\n}\n\n.alert-warning {\n  color: #664d03;\n  background-color: #fff3cd;\n  border-color: #ffecb5;\n}\n.alert-warning .alert-link {\n  color: #523e02;\n}\n\n.alert-danger {\n  color: #842029;\n  background-color: #f8d7da;\n  border-color: #f5c2c7;\n}\n.alert-danger .alert-link {\n  color: #6a1a21;\n}\n\n.alert-light {\n  color: #636464;\n  background-color: #fefefe;\n  border-color: #fdfdfe;\n}\n.alert-light .alert-link {\n  color: #4f5050;\n}\n\n.alert-dark {\n  color: #141619;\n  background-color: #d3d3d4;\n  border-color: #bcbebf;\n}\n.alert-dark .alert-link {\n  color: #101214;\n}\n\n@-webkit-keyframes progress-bar-stripes {\n  0% {\n    background-position-x: 1rem;\n  }\n}\n\n@keyframes progress-bar-stripes {\n  0% {\n    background-position-x: 1rem;\n  }\n}\n.progress {\n  display: flex;\n  height: 1rem;\n  overflow: hidden;\n  font-size: 0.75rem;\n  background-color: #e9ecef;\n  border-radius: 0.25rem;\n}\n\n.progress-bar {\n  display: flex;\n  flex-direction: column;\n  justify-content: center;\n  overflow: hidden;\n  color: #fff;\n  text-align: center;\n  white-space: nowrap;\n  background-color: #0d6efd;\n  transition: width 0.6s ease;\n}\n@media (prefers-reduced-motion: reduce) {\n  .progress-bar {\n    transition: none;\n  }\n}\n\n.progress-bar-striped {\n  background-image: linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n  background-size: 1rem 1rem;\n}\n\n.progress-bar-animated {\n  -webkit-animation: 1s linear infinite progress-bar-stripes;\n  animation: 1s linear infinite progress-bar-stripes;\n}\n@media (prefers-reduced-motion: reduce) {\n  .progress-bar-animated {\n    -webkit-animation: none;\n    animation: none;\n  }\n}\n\n.list-group {\n  display: flex;\n  flex-direction: column;\n  padding-right: 0;\n  margin-bottom: 0;\n  border-radius: 0.25rem;\n}\n\n.list-group-numbered {\n  list-style-type: none;\n  counter-reset: section;\n}\n.list-group-numbered > li::before {\n  content: counters(section, \".\") \". \";\n  counter-increment: section;\n}\n\n.list-group-item-action {\n  width: 100%;\n  color: #495057;\n  text-align: inherit;\n}\n.list-group-item-action:hover, .list-group-item-action:focus {\n  z-index: 1;\n  color: #495057;\n  text-decoration: none;\n  background-color: #f8f9fa;\n}\n.list-group-item-action:active {\n  color: #212529;\n  background-color: #e9ecef;\n}\n\n.list-group-item {\n  position: relative;\n  display: block;\n  padding: 0.5rem 1rem;\n  color: #212529;\n  text-decoration: none;\n  background-color: #fff;\n  border: 1px solid rgba(0, 0, 0, 0.125);\n}\n.list-group-item:first-child {\n  border-top-right-radius: inherit;\n  border-top-left-radius: inherit;\n}\n.list-group-item:last-child {\n  border-bottom-left-radius: inherit;\n  border-bottom-right-radius: inherit;\n}\n.list-group-item.disabled, .list-group-item:disabled {\n  color: #6c757d;\n  pointer-events: none;\n  background-color: #fff;\n}\n.list-group-item.active {\n  z-index: 2;\n  color: #fff;\n  background-color: #0d6efd;\n  border-color: #0d6efd;\n}\n.list-group-item + .list-group-item {\n  border-top-width: 0;\n}\n.list-group-item + .list-group-item.active {\n  margin-top: -1px;\n  border-top-width: 1px;\n}\n\n.list-group-horizontal {\n  flex-direction: row;\n}\n.list-group-horizontal > .list-group-item:first-child {\n  border-bottom-right-radius: 0.25rem;\n  border-top-left-radius: 0;\n}\n.list-group-horizontal > .list-group-item:last-child {\n  border-top-left-radius: 0.25rem;\n  border-bottom-right-radius: 0;\n}\n.list-group-horizontal > .list-group-item.active {\n  margin-top: 0;\n}\n.list-group-horizontal > .list-group-item + .list-group-item {\n  border-top-width: 1px;\n  border-right-width: 0;\n}\n.list-group-horizontal > .list-group-item + .list-group-item.active {\n  margin-right: -1px;\n  border-right-width: 1px;\n}\n\n@media (min-width: 576px) {\n  .list-group-horizontal-sm {\n    flex-direction: row;\n  }\n  .list-group-horizontal-sm > .list-group-item:first-child {\n    border-bottom-right-radius: 0.25rem;\n    border-top-left-radius: 0;\n  }\n  .list-group-horizontal-sm > .list-group-item:last-child {\n    border-top-left-radius: 0.25rem;\n    border-bottom-right-radius: 0;\n  }\n  .list-group-horizontal-sm > .list-group-item.active {\n    margin-top: 0;\n  }\n  .list-group-horizontal-sm > .list-group-item + .list-group-item {\n    border-top-width: 1px;\n    border-right-width: 0;\n  }\n  .list-group-horizontal-sm > .list-group-item + .list-group-item.active {\n    margin-right: -1px;\n    border-right-width: 1px;\n  }\n}\n@media (min-width: 768px) {\n  .list-group-horizontal-md {\n    flex-direction: row;\n  }\n  .list-group-horizontal-md > .list-group-item:first-child {\n    border-bottom-right-radius: 0.25rem;\n    border-top-left-radius: 0;\n  }\n  .list-group-horizontal-md > .list-group-item:last-child {\n    border-top-left-radius: 0.25rem;\n    border-bottom-right-radius: 0;\n  }\n  .list-group-horizontal-md > .list-group-item.active {\n    margin-top: 0;\n  }\n  .list-group-horizontal-md > .list-group-item + .list-group-item {\n    border-top-width: 1px;\n    border-right-width: 0;\n  }\n  .list-group-horizontal-md > .list-group-item + .list-group-item.active {\n    margin-right: -1px;\n    border-right-width: 1px;\n  }\n}\n@media (min-width: 992px) {\n  .list-group-horizontal-lg {\n    flex-direction: row;\n  }\n  .list-group-horizontal-lg > .list-group-item:first-child {\n    border-bottom-right-radius: 0.25rem;\n    border-top-left-radius: 0;\n  }\n  .list-group-horizontal-lg > .list-group-item:last-child {\n    border-top-left-radius: 0.25rem;\n    border-bottom-right-radius: 0;\n  }\n  .list-group-horizontal-lg > .list-group-item.active {\n    margin-top: 0;\n  }\n  .list-group-horizontal-lg > .list-group-item + .list-group-item {\n    border-top-width: 1px;\n    border-right-width: 0;\n  }\n  .list-group-horizontal-lg > .list-group-item + .list-group-item.active {\n    margin-right: -1px;\n    border-right-width: 1px;\n  }\n}\n@media (min-width: 1200px) {\n  .list-group-horizontal-xl {\n    flex-direction: row;\n  }\n  .list-group-horizontal-xl > .list-group-item:first-child {\n    border-bottom-right-radius: 0.25rem;\n    border-top-left-radius: 0;\n  }\n  .list-group-horizontal-xl > .list-group-item:last-child {\n    border-top-left-radius: 0.25rem;\n    border-bottom-right-radius: 0;\n  }\n  .list-group-horizontal-xl > .list-group-item.active {\n    margin-top: 0;\n  }\n  .list-group-horizontal-xl > .list-group-item + .list-group-item {\n    border-top-width: 1px;\n    border-right-width: 0;\n  }\n  .list-group-horizontal-xl > .list-group-item + .list-group-item.active {\n    margin-right: -1px;\n    border-right-width: 1px;\n  }\n}\n@media (min-width: 1400px) {\n  .list-group-horizontal-xxl {\n    flex-direction: row;\n  }\n  .list-group-horizontal-xxl > .list-group-item:first-child {\n    border-bottom-right-radius: 0.25rem;\n    border-top-left-radius: 0;\n  }\n  .list-group-horizontal-xxl > .list-group-item:last-child {\n    border-top-left-radius: 0.25rem;\n    border-bottom-right-radius: 0;\n  }\n  .list-group-horizontal-xxl > .list-group-item.active {\n    margin-top: 0;\n  }\n  .list-group-horizontal-xxl > .list-group-item + .list-group-item {\n    border-top-width: 1px;\n    border-right-width: 0;\n  }\n  .list-group-horizontal-xxl > .list-group-item + .list-group-item.active {\n    margin-right: -1px;\n    border-right-width: 1px;\n  }\n}\n.list-group-flush {\n  border-radius: 0;\n}\n.list-group-flush > .list-group-item {\n  border-width: 0 0 1px;\n}\n.list-group-flush > .list-group-item:last-child {\n  border-bottom-width: 0;\n}\n\n.list-group-item-primary {\n  color: #084298;\n  background-color: #cfe2ff;\n}\n.list-group-item-primary.list-group-item-action:hover, .list-group-item-primary.list-group-item-action:focus {\n  color: #084298;\n  background-color: #bacbe6;\n}\n.list-group-item-primary.list-group-item-action.active {\n  color: #fff;\n  background-color: #084298;\n  border-color: #084298;\n}\n\n.list-group-item-secondary {\n  color: #41464b;\n  background-color: #e2e3e5;\n}\n.list-group-item-secondary.list-group-item-action:hover, .list-group-item-secondary.list-group-item-action:focus {\n  color: #41464b;\n  background-color: #cbccce;\n}\n.list-group-item-secondary.list-group-item-action.active {\n  color: #fff;\n  background-color: #41464b;\n  border-color: #41464b;\n}\n\n.list-group-item-success {\n  color: #0f5132;\n  background-color: #d1e7dd;\n}\n.list-group-item-success.list-group-item-action:hover, .list-group-item-success.list-group-item-action:focus {\n  color: #0f5132;\n  background-color: #bcd0c7;\n}\n.list-group-item-success.list-group-item-action.active {\n  color: #fff;\n  background-color: #0f5132;\n  border-color: #0f5132;\n}\n\n.list-group-item-info {\n  color: #055160;\n  background-color: #cff4fc;\n}\n.list-group-item-info.list-group-item-action:hover, .list-group-item-info.list-group-item-action:focus {\n  color: #055160;\n  background-color: #badce3;\n}\n.list-group-item-info.list-group-item-action.active {\n  color: #fff;\n  background-color: #055160;\n  border-color: #055160;\n}\n\n.list-group-item-warning {\n  color: #664d03;\n  background-color: #fff3cd;\n}\n.list-group-item-warning.list-group-item-action:hover, .list-group-item-warning.list-group-item-action:focus {\n  color: #664d03;\n  background-color: #e6dbb9;\n}\n.list-group-item-warning.list-group-item-action.active {\n  color: #fff;\n  background-color: #664d03;\n  border-color: #664d03;\n}\n\n.list-group-item-danger {\n  color: #842029;\n  background-color: #f8d7da;\n}\n.list-group-item-danger.list-group-item-action:hover, .list-group-item-danger.list-group-item-action:focus {\n  color: #842029;\n  background-color: #dfc2c4;\n}\n.list-group-item-danger.list-group-item-action.active {\n  color: #fff;\n  background-color: #842029;\n  border-color: #842029;\n}\n\n.list-group-item-light {\n  color: #636464;\n  background-color: #fefefe;\n}\n.list-group-item-light.list-group-item-action:hover, .list-group-item-light.list-group-item-action:focus {\n  color: #636464;\n  background-color: #e5e5e5;\n}\n.list-group-item-light.list-group-item-action.active {\n  color: #fff;\n  background-color: #636464;\n  border-color: #636464;\n}\n\n.list-group-item-dark {\n  color: #141619;\n  background-color: #d3d3d4;\n}\n.list-group-item-dark.list-group-item-action:hover, .list-group-item-dark.list-group-item-action:focus {\n  color: #141619;\n  background-color: #bebebf;\n}\n.list-group-item-dark.list-group-item-action.active {\n  color: #fff;\n  background-color: #141619;\n  border-color: #141619;\n}\n\n.btn-close {\n  box-sizing: content-box;\n  width: 1em;\n  height: 1em;\n  padding: 0.25em 0.25em;\n  color: #000;\n  background: transparent url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23000'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e\") center/1em auto no-repeat;\n  border: 0;\n  border-radius: 0.25rem;\n  opacity: 0.5;\n}\n.btn-close:hover {\n  color: #000;\n  text-decoration: none;\n  opacity: 0.75;\n}\n.btn-close:focus {\n  outline: 0;\n  box-shadow: 0 0 0 0.25rem rgba(13, 110, 253, 0.25);\n  opacity: 1;\n}\n.btn-close:disabled, .btn-close.disabled {\n  pointer-events: none;\n  -webkit-user-select: none;\n  -moz-user-select: none;\n  user-select: none;\n  opacity: 0.25;\n}\n\n.btn-close-white {\n  filter: invert(1) grayscale(100%) brightness(200%);\n}\n\n.toast {\n  width: 350px;\n  max-width: 100%;\n  font-size: 0.875rem;\n  pointer-events: auto;\n  background-color: rgba(255, 255, 255, 0.85);\n  background-clip: padding-box;\n  border: 1px solid rgba(0, 0, 0, 0.1);\n  box-shadow: 0 0.5rem 1rem rgba(0, 0, 0, 0.15);\n  border-radius: 0.25rem;\n}\n.toast.showing {\n  opacity: 0;\n}\n.toast:not(.show) {\n  display: none;\n}\n\n.toast-container {\n  width: -webkit-max-content;\n  width: -moz-max-content;\n  width: max-content;\n  max-width: 100%;\n  pointer-events: none;\n}\n.toast-container > :not(:last-child) {\n  margin-bottom: 0.75rem;\n}\n\n.toast-header {\n  display: flex;\n  align-items: center;\n  padding: 0.5rem 0.75rem;\n  color: #6c757d;\n  background-color: rgba(255, 255, 255, 0.85);\n  background-clip: padding-box;\n  border-bottom: 1px solid rgba(0, 0, 0, 0.05);\n  border-top-right-radius: calc(0.25rem - 1px);\n  border-top-left-radius: calc(0.25rem - 1px);\n}\n.toast-header .btn-close {\n  margin-left: -0.375rem;\n  margin-right: 0.75rem;\n}\n\n.toast-body {\n  padding: 0.75rem;\n  word-wrap: break-word;\n}\n\n.modal {\n  position: fixed;\n  top: 0;\n  right: 0;\n  z-index: 1055;\n  display: none;\n  width: 100%;\n  height: 100%;\n  overflow-x: hidden;\n  overflow-y: auto;\n  outline: 0;\n}\n\n.modal-dialog {\n  position: relative;\n  width: auto;\n  margin: 0.5rem;\n  pointer-events: none;\n}\n.modal.fade .modal-dialog {\n  transition: transform 0.3s ease-out;\n  transform: translate(0, -50px);\n}\n@media (prefers-reduced-motion: reduce) {\n  .modal.fade .modal-dialog {\n    transition: none;\n  }\n}\n.modal.show .modal-dialog {\n  transform: none;\n}\n.modal.modal-static .modal-dialog {\n  transform: scale(1.02);\n}\n\n.modal-dialog-scrollable {\n  height: calc(100% - 1rem);\n}\n.modal-dialog-scrollable .modal-content {\n  max-height: 100%;\n  overflow: hidden;\n}\n.modal-dialog-scrollable .modal-body {\n  overflow-y: auto;\n}\n\n.modal-dialog-centered {\n  display: flex;\n  align-items: center;\n  min-height: calc(100% - 1rem);\n}\n\n.modal-content {\n  position: relative;\n  display: flex;\n  flex-direction: column;\n  width: 100%;\n  pointer-events: auto;\n  background-color: #fff;\n  background-clip: padding-box;\n  border: 1px solid rgba(0, 0, 0, 0.2);\n  border-radius: 0.3rem;\n  outline: 0;\n}\n\n.modal-backdrop {\n  position: fixed;\n  top: 0;\n  right: 0;\n  z-index: 1050;\n  width: 100vw;\n  height: 100vh;\n  background-color: #000;\n}\n.modal-backdrop.fade {\n  opacity: 0;\n}\n.modal-backdrop.show {\n  opacity: 0.5;\n}\n\n.modal-header {\n  display: flex;\n  flex-shrink: 0;\n  align-items: center;\n  justify-content: space-between;\n  padding: 1rem 1rem;\n  border-bottom: 1px solid #dee2e6;\n  border-top-right-radius: calc(0.3rem - 1px);\n  border-top-left-radius: calc(0.3rem - 1px);\n}\n.modal-header .btn-close {\n  padding: 0.5rem 0.5rem;\n  margin: -0.5rem auto -0.5rem -0.5rem;\n}\n\n.modal-title {\n  margin-bottom: 0;\n  line-height: 1.5;\n}\n\n.modal-body {\n  position: relative;\n  flex: 1 1 auto;\n  padding: 1rem;\n}\n\n.modal-footer {\n  display: flex;\n  flex-wrap: wrap;\n  flex-shrink: 0;\n  align-items: center;\n  justify-content: flex-end;\n  padding: 0.75rem;\n  border-top: 1px solid #dee2e6;\n  border-bottom-left-radius: calc(0.3rem - 1px);\n  border-bottom-right-radius: calc(0.3rem - 1px);\n}\n.modal-footer > * {\n  margin: 0.25rem;\n}\n\n@media (min-width: 576px) {\n  .modal-dialog {\n    max-width: 500px;\n    margin: 1.75rem auto;\n  }\n\n  .modal-dialog-scrollable {\n    height: calc(100% - 3.5rem);\n  }\n\n  .modal-dialog-centered {\n    min-height: calc(100% - 3.5rem);\n  }\n\n  .modal-sm {\n    max-width: 300px;\n  }\n}\n@media (min-width: 992px) {\n  .modal-lg,\n.modal-xl {\n    max-width: 800px;\n  }\n}\n@media (min-width: 1200px) {\n  .modal-xl {\n    max-width: 1140px;\n  }\n}\n.modal-fullscreen {\n  width: 100vw;\n  max-width: none;\n  height: 100%;\n  margin: 0;\n}\n.modal-fullscreen .modal-content {\n  height: 100%;\n  border: 0;\n  border-radius: 0;\n}\n.modal-fullscreen .modal-header {\n  border-radius: 0;\n}\n.modal-fullscreen .modal-body {\n  overflow-y: auto;\n}\n.modal-fullscreen .modal-footer {\n  border-radius: 0;\n}\n\n@media (max-width: 575.98px) {\n  .modal-fullscreen-sm-down {\n    width: 100vw;\n    max-width: none;\n    height: 100%;\n    margin: 0;\n  }\n  .modal-fullscreen-sm-down .modal-content {\n    height: 100%;\n    border: 0;\n    border-radius: 0;\n  }\n  .modal-fullscreen-sm-down .modal-header {\n    border-radius: 0;\n  }\n  .modal-fullscreen-sm-down .modal-body {\n    overflow-y: auto;\n  }\n  .modal-fullscreen-sm-down .modal-footer {\n    border-radius: 0;\n  }\n}\n@media (max-width: 767.98px) {\n  .modal-fullscreen-md-down {\n    width: 100vw;\n    max-width: none;\n    height: 100%;\n    margin: 0;\n  }\n  .modal-fullscreen-md-down .modal-content {\n    height: 100%;\n    border: 0;\n    border-radius: 0;\n  }\n  .modal-fullscreen-md-down .modal-header {\n    border-radius: 0;\n  }\n  .modal-fullscreen-md-down .modal-body {\n    overflow-y: auto;\n  }\n  .modal-fullscreen-md-down .modal-footer {\n    border-radius: 0;\n  }\n}\n@media (max-width: 991.98px) {\n  .modal-fullscreen-lg-down {\n    width: 100vw;\n    max-width: none;\n    height: 100%;\n    margin: 0;\n  }\n  .modal-fullscreen-lg-down .modal-content {\n    height: 100%;\n    border: 0;\n    border-radius: 0;\n  }\n  .modal-fullscreen-lg-down .modal-header {\n    border-radius: 0;\n  }\n  .modal-fullscreen-lg-down .modal-body {\n    overflow-y: auto;\n  }\n  .modal-fullscreen-lg-down .modal-footer {\n    border-radius: 0;\n  }\n}\n@media (max-width: 1199.98px) {\n  .modal-fullscreen-xl-down {\n    width: 100vw;\n    max-width: none;\n    height: 100%;\n    margin: 0;\n  }\n  .modal-fullscreen-xl-down .modal-content {\n    height: 100%;\n    border: 0;\n    border-radius: 0;\n  }\n  .modal-fullscreen-xl-down .modal-header {\n    border-radius: 0;\n  }\n  .modal-fullscreen-xl-down .modal-body {\n    overflow-y: auto;\n  }\n  .modal-fullscreen-xl-down .modal-footer {\n    border-radius: 0;\n  }\n}\n@media (max-width: 1399.98px) {\n  .modal-fullscreen-xxl-down {\n    width: 100vw;\n    max-width: none;\n    height: 100%;\n    margin: 0;\n  }\n  .modal-fullscreen-xxl-down .modal-content {\n    height: 100%;\n    border: 0;\n    border-radius: 0;\n  }\n  .modal-fullscreen-xxl-down .modal-header {\n    border-radius: 0;\n  }\n  .modal-fullscreen-xxl-down .modal-body {\n    overflow-y: auto;\n  }\n  .modal-fullscreen-xxl-down .modal-footer {\n    border-radius: 0;\n  }\n}\n.tooltip {\n  position: absolute;\n  z-index: 1080;\n  display: block;\n  margin: 0;\n  font-family: var(--bs-font-sans-serif);\n  font-style: normal;\n  font-weight: 400;\n  line-height: 1.5;\n  text-align: right;\n  text-align: start;\n  text-decoration: none;\n  text-shadow: none;\n  text-transform: none;\n  letter-spacing: normal;\n  word-break: normal;\n  word-spacing: normal;\n  white-space: normal;\n  line-break: auto;\n  font-size: 0.875rem;\n  word-wrap: break-word;\n  opacity: 0;\n}\n.tooltip.show {\n  opacity: 0.9;\n}\n.tooltip .tooltip-arrow {\n  position: absolute;\n  display: block;\n  width: 0.8rem;\n  height: 0.4rem;\n}\n.tooltip .tooltip-arrow::before {\n  position: absolute;\n  content: \"\";\n  border-color: transparent;\n  border-style: solid;\n}\n\n.bs-tooltip-top, .bs-tooltip-auto[data-popper-placement^=top] {\n  padding: 0.4rem 0;\n}\n.bs-tooltip-top .tooltip-arrow, .bs-tooltip-auto[data-popper-placement^=top] .tooltip-arrow {\n  bottom: 0;\n}\n.bs-tooltip-top .tooltip-arrow::before, .bs-tooltip-auto[data-popper-placement^=top] .tooltip-arrow::before {\n  top: -1px;\n  border-width: 0.4rem 0.4rem 0;\n  border-top-color: #000;\n}\n\n.bs-tooltip-end, .bs-tooltip-auto[data-popper-placement^=right] {\n  padding: 0 0.4rem;\n}\n.bs-tooltip-end .tooltip-arrow, .bs-tooltip-auto[data-popper-placement^=right] .tooltip-arrow {\n  right: 0;\n  width: 0.4rem;\n  height: 0.8rem;\n}\n.bs-tooltip-end .tooltip-arrow::before, .bs-tooltip-auto[data-popper-placement^=right] .tooltip-arrow::before {\n  left: -1px;\n  border-width: 0.4rem 0 0.4rem 0.4rem;\n  border-left-color: #000;\n}\n\n.bs-tooltip-bottom, .bs-tooltip-auto[data-popper-placement^=bottom] {\n  padding: 0.4rem 0;\n}\n.bs-tooltip-bottom .tooltip-arrow, .bs-tooltip-auto[data-popper-placement^=bottom] .tooltip-arrow {\n  top: 0;\n}\n.bs-tooltip-bottom .tooltip-arrow::before, .bs-tooltip-auto[data-popper-placement^=bottom] .tooltip-arrow::before {\n  bottom: -1px;\n  border-width: 0 0.4rem 0.4rem;\n  border-bottom-color: #000;\n}\n\n.bs-tooltip-start, .bs-tooltip-auto[data-popper-placement^=left] {\n  padding: 0 0.4rem;\n}\n.bs-tooltip-start .tooltip-arrow, .bs-tooltip-auto[data-popper-placement^=left] .tooltip-arrow {\n  left: 0;\n  width: 0.4rem;\n  height: 0.8rem;\n}\n.bs-tooltip-start .tooltip-arrow::before, .bs-tooltip-auto[data-popper-placement^=left] .tooltip-arrow::before {\n  right: -1px;\n  border-width: 0.4rem 0.4rem 0.4rem 0;\n  border-right-color: #000;\n}\n\n.tooltip-inner {\n  max-width: 200px;\n  padding: 0.25rem 0.5rem;\n  color: #fff;\n  text-align: center;\n  background-color: #000;\n  border-radius: 0.25rem;\n}\n\n.popover {\n  position: absolute;\n  top: 0;\n  left: 0 ;\n  z-index: 1070;\n  display: block;\n  max-width: 276px;\n  font-family: var(--bs-font-sans-serif);\n  font-style: normal;\n  font-weight: 400;\n  line-height: 1.5;\n  text-align: right;\n  text-align: start;\n  text-decoration: none;\n  text-shadow: none;\n  text-transform: none;\n  letter-spacing: normal;\n  word-break: normal;\n  word-spacing: normal;\n  white-space: normal;\n  line-break: auto;\n  font-size: 0.875rem;\n  word-wrap: break-word;\n  background-color: #fff;\n  background-clip: padding-box;\n  border: 1px solid rgba(0, 0, 0, 0.2);\n  border-radius: 0.3rem;\n}\n.popover .popover-arrow {\n  position: absolute;\n  display: block;\n  width: 1rem;\n  height: 0.5rem;\n}\n.popover .popover-arrow::before, .popover .popover-arrow::after {\n  position: absolute;\n  display: block;\n  content: \"\";\n  border-color: transparent;\n  border-style: solid;\n}\n\n.bs-popover-top > .popover-arrow, .bs-popover-auto[data-popper-placement^=top] > .popover-arrow {\n  bottom: calc(-0.5rem - 1px);\n}\n.bs-popover-top > .popover-arrow::before, .bs-popover-auto[data-popper-placement^=top] > .popover-arrow::before {\n  bottom: 0;\n  border-width: 0.5rem 0.5rem 0;\n  border-top-color: rgba(0, 0, 0, 0.25);\n}\n.bs-popover-top > .popover-arrow::after, .bs-popover-auto[data-popper-placement^=top] > .popover-arrow::after {\n  bottom: 1px;\n  border-width: 0.5rem 0.5rem 0;\n  border-top-color: #fff;\n}\n\n.bs-popover-end > .popover-arrow, .bs-popover-auto[data-popper-placement^=right] > .popover-arrow {\n  right: calc(-0.5rem - 1px);\n  width: 0.5rem;\n  height: 1rem;\n}\n.bs-popover-end > .popover-arrow::before, .bs-popover-auto[data-popper-placement^=right] > .popover-arrow::before {\n  right: 0;\n  border-width: 0.5rem 0 0.5rem 0.5rem;\n  border-left-color: rgba(0, 0, 0, 0.25);\n}\n.bs-popover-end > .popover-arrow::after, .bs-popover-auto[data-popper-placement^=right] > .popover-arrow::after {\n  right: 1px;\n  border-width: 0.5rem 0 0.5rem 0.5rem;\n  border-left-color: #fff;\n}\n\n.bs-popover-bottom > .popover-arrow, .bs-popover-auto[data-popper-placement^=bottom] > .popover-arrow {\n  top: calc(-0.5rem - 1px);\n}\n.bs-popover-bottom > .popover-arrow::before, .bs-popover-auto[data-popper-placement^=bottom] > .popover-arrow::before {\n  top: 0;\n  border-width: 0 0.5rem 0.5rem 0.5rem;\n  border-bottom-color: rgba(0, 0, 0, 0.25);\n}\n.bs-popover-bottom > .popover-arrow::after, .bs-popover-auto[data-popper-placement^=bottom] > .popover-arrow::after {\n  top: 1px;\n  border-width: 0 0.5rem 0.5rem 0.5rem;\n  border-bottom-color: #fff;\n}\n.bs-popover-bottom .popover-header::before, .bs-popover-auto[data-popper-placement^=bottom] .popover-header::before {\n  position: absolute;\n  top: 0;\n  right: 50%;\n  display: block;\n  width: 1rem;\n  margin-right: -0.5rem;\n  content: \"\";\n  border-bottom: 1px solid #f0f0f0;\n}\n\n.bs-popover-start > .popover-arrow, .bs-popover-auto[data-popper-placement^=left] > .popover-arrow {\n  left: calc(-0.5rem - 1px);\n  width: 0.5rem;\n  height: 1rem;\n}\n.bs-popover-start > .popover-arrow::before, .bs-popover-auto[data-popper-placement^=left] > .popover-arrow::before {\n  left: 0;\n  border-width: 0.5rem 0.5rem 0.5rem 0;\n  border-right-color: rgba(0, 0, 0, 0.25);\n}\n.bs-popover-start > .popover-arrow::after, .bs-popover-auto[data-popper-placement^=left] > .popover-arrow::after {\n  left: 1px;\n  border-width: 0.5rem 0.5rem 0.5rem 0;\n  border-right-color: #fff;\n}\n\n.popover-header {\n  padding: 0.5rem 1rem;\n  margin-bottom: 0;\n  font-size: 1rem;\n  background-color: #f0f0f0;\n  border-bottom: 1px solid rgba(0, 0, 0, 0.2);\n  border-top-right-radius: calc(0.3rem - 1px);\n  border-top-left-radius: calc(0.3rem - 1px);\n}\n.popover-header:empty {\n  display: none;\n}\n\n.popover-body {\n  padding: 1rem 1rem;\n  color: #212529;\n}\n\n.carousel {\n  position: relative;\n}\n\n.carousel.pointer-event {\n  touch-action: pan-y;\n}\n\n.carousel-inner {\n  position: relative;\n  width: 100%;\n  overflow: hidden;\n}\n.carousel-inner::after {\n  display: block;\n  clear: both;\n  content: \"\";\n}\n\n.carousel-item {\n  position: relative;\n  display: none;\n  float: right;\n  width: 100%;\n  margin-left: -100%;\n  -webkit-backface-visibility: hidden;\n  backface-visibility: hidden;\n  transition: transform 0.6s ease-in-out;\n}\n@media (prefers-reduced-motion: reduce) {\n  .carousel-item {\n    transition: none;\n  }\n}\n\n.carousel-item.active,\n.carousel-item-next,\n.carousel-item-prev {\n  display: block;\n}\n.carousel-item-next:not(.carousel-item-start),\n.active.carousel-item-end {\n  transform: translateX(100%);\n}\n\n.carousel-item-prev:not(.carousel-item-end),\n.active.carousel-item-start {\n  transform: translateX(-100%);\n}\n.carousel-fade .carousel-item {\n  opacity: 0;\n  transition-property: opacity;\n  transform: none;\n}\n.carousel-fade .carousel-item.active,\n.carousel-fade .carousel-item-next.carousel-item-start,\n.carousel-fade .carousel-item-prev.carousel-item-end {\n  z-index: 1;\n  opacity: 1;\n}\n.carousel-fade .active.carousel-item-start,\n.carousel-fade .active.carousel-item-end {\n  z-index: 0;\n  opacity: 0;\n  transition: opacity 0s 0.6s;\n}\n@media (prefers-reduced-motion: reduce) {\n  .carousel-fade .active.carousel-item-start,\n.carousel-fade .active.carousel-item-end {\n    transition: none;\n  }\n}\n\n.carousel-control-prev,\n.carousel-control-next {\n  position: absolute;\n  top: 0;\n  bottom: 0;\n  z-index: 1;\n  display: flex;\n  align-items: center;\n  justify-content: center;\n  width: 15%;\n  padding: 0;\n  color: #fff;\n  text-align: center;\n  background: none;\n  border: 0;\n  opacity: 0.5;\n  transition: opacity 0.15s ease;\n}\n@media (prefers-reduced-motion: reduce) {\n  .carousel-control-prev,\n.carousel-control-next {\n    transition: none;\n  }\n}\n.carousel-control-prev:hover, .carousel-control-prev:focus,\n.carousel-control-next:hover,\n.carousel-control-next:focus {\n  color: #fff;\n  text-decoration: none;\n  outline: 0;\n  opacity: 0.9;\n}\n\n.carousel-control-prev {\n  right: 0;\n}\n\n.carousel-control-next {\n  left: 0;\n}\n\n.carousel-control-prev-icon,\n.carousel-control-next-icon {\n  display: inline-block;\n  width: 2rem;\n  height: 2rem;\n  background-repeat: no-repeat;\n  background-position: 50%;\n  background-size: 100% 100%;\n}\n.carousel-control-next-icon {\n  background-image: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23fff'%3e%3cpath d='M11.354 1.646a.5.5 0 0 1 0 .708L5.707 8l5.647 5.646a.5.5 0 0 1-.708.708l-6-6a.5.5 0 0 1 0-.708l6-6a.5.5 0 0 1 .708 0z'/%3e%3c/svg%3e\");\n}\n\n.carousel-control-prev-icon {\n  background-image: url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23fff'%3e%3cpath d='M4.646 1.646a.5.5 0 0 1 .708 0l6 6a.5.5 0 0 1 0 .708l-6 6a.5.5 0 0 1-.708-.708L10.293 8 4.646 2.354a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e\");\n}\n\n.carousel-indicators {\n  position: absolute;\n  left: 0;\n  bottom: 0;\n  right: 0;\n  z-index: 2;\n  display: flex;\n  justify-content: center;\n  padding: 0;\n  margin-left: 15%;\n  margin-bottom: 1rem;\n  margin-right: 15%;\n  list-style: none;\n}\n.carousel-indicators [data-bs-target] {\n  box-sizing: content-box;\n  flex: 0 1 auto;\n  width: 30px;\n  height: 3px;\n  padding: 0;\n  margin-left: 3px;\n  margin-right: 3px;\n  text-indent: -999px;\n  cursor: pointer;\n  background-color: #fff;\n  background-clip: padding-box;\n  border: 0;\n  border-top: 10px solid transparent;\n  border-bottom: 10px solid transparent;\n  opacity: 0.5;\n  transition: opacity 0.6s ease;\n}\n@media (prefers-reduced-motion: reduce) {\n  .carousel-indicators [data-bs-target] {\n    transition: none;\n  }\n}\n.carousel-indicators .active {\n  opacity: 1;\n}\n\n.carousel-caption {\n  position: absolute;\n  left: 15%;\n  bottom: 1.25rem;\n  right: 15%;\n  padding-top: 1.25rem;\n  padding-bottom: 1.25rem;\n  color: #fff;\n  text-align: center;\n}\n\n.carousel-dark .carousel-control-next-icon,\n.carousel-dark .carousel-control-prev-icon {\n  filter: invert(1) grayscale(100);\n}\n.carousel-dark .carousel-indicators [data-bs-target] {\n  background-color: #000;\n}\n.carousel-dark .carousel-caption {\n  color: #000;\n}\n\n@-webkit-keyframes spinner-border {\n  to {\n    transform: rotate(360deg) ;\n  }\n}\n\n@keyframes spinner-border {\n  to {\n    transform: rotate(360deg) ;\n  }\n}\n.spinner-border {\n  display: inline-block;\n  width: 2rem;\n  height: 2rem;\n  vertical-align: -0.125em;\n  border: 0.25em solid currentColor;\n  border-left-color: transparent;\n  border-radius: 50%;\n  -webkit-animation: 0.75s linear infinite spinner-border;\n  animation: 0.75s linear infinite spinner-border;\n}\n\n.spinner-border-sm {\n  width: 1rem;\n  height: 1rem;\n  border-width: 0.2em;\n}\n\n@-webkit-keyframes spinner-grow {\n  0% {\n    transform: scale(0);\n  }\n  50% {\n    opacity: 1;\n    transform: none;\n  }\n}\n\n@keyframes spinner-grow {\n  0% {\n    transform: scale(0);\n  }\n  50% {\n    opacity: 1;\n    transform: none;\n  }\n}\n.spinner-grow {\n  display: inline-block;\n  width: 2rem;\n  height: 2rem;\n  vertical-align: -0.125em;\n  background-color: currentColor;\n  border-radius: 50%;\n  opacity: 0;\n  -webkit-animation: 0.75s linear infinite spinner-grow;\n  animation: 0.75s linear infinite spinner-grow;\n}\n\n.spinner-grow-sm {\n  width: 1rem;\n  height: 1rem;\n}\n\n@media (prefers-reduced-motion: reduce) {\n  .spinner-border,\n.spinner-grow {\n    -webkit-animation-duration: 1.5s;\n    animation-duration: 1.5s;\n  }\n}\n.offcanvas {\n  position: fixed;\n  bottom: 0;\n  z-index: 1045;\n  display: flex;\n  flex-direction: column;\n  max-width: 100%;\n  visibility: hidden;\n  background-color: #fff;\n  background-clip: padding-box;\n  outline: 0;\n  transition: transform 0.3s ease-in-out;\n}\n@media (prefers-reduced-motion: reduce) {\n  .offcanvas {\n    transition: none;\n  }\n}\n\n.offcanvas-backdrop {\n  position: fixed;\n  top: 0;\n  right: 0;\n  z-index: 1040;\n  width: 100vw;\n  height: 100vh;\n  background-color: #000;\n}\n.offcanvas-backdrop.fade {\n  opacity: 0;\n}\n.offcanvas-backdrop.show {\n  opacity: 0.5;\n}\n\n.offcanvas-header {\n  display: flex;\n  align-items: center;\n  justify-content: space-between;\n  padding: 1rem 1rem;\n}\n.offcanvas-header .btn-close {\n  padding: 0.5rem 0.5rem;\n  margin-top: -0.5rem;\n  margin-left: -0.5rem;\n  margin-bottom: -0.5rem;\n}\n\n.offcanvas-title {\n  margin-bottom: 0;\n  line-height: 1.5;\n}\n\n.offcanvas-body {\n  flex-grow: 1;\n  padding: 1rem 1rem;\n  overflow-y: auto;\n}\n\n.offcanvas-start {\n  top: 0;\n  right: 0;\n  width: 400px;\n  border-left: 1px solid rgba(0, 0, 0, 0.2);\n  transform: translateX(100%);\n}\n\n.offcanvas-end {\n  top: 0;\n  left: 0;\n  width: 400px;\n  border-right: 1px solid rgba(0, 0, 0, 0.2);\n  transform: translateX(-100%);\n}\n\n.offcanvas-top {\n  top: 0;\n  left: 0;\n  right: 0;\n  height: 30vh;\n  max-height: 100%;\n  border-bottom: 1px solid rgba(0, 0, 0, 0.2);\n  transform: translateY(-100%);\n}\n\n.offcanvas-bottom {\n  left: 0;\n  right: 0;\n  height: 30vh;\n  max-height: 100%;\n  border-top: 1px solid rgba(0, 0, 0, 0.2);\n  transform: translateY(100%);\n}\n\n.offcanvas.show {\n  transform: none;\n}\n\n.placeholder {\n  display: inline-block;\n  min-height: 1em;\n  vertical-align: middle;\n  cursor: wait;\n  background-color: currentColor;\n  opacity: 0.5;\n}\n.placeholder.btn::before {\n  display: inline-block;\n  content: \"\";\n}\n\n.placeholder-xs {\n  min-height: 0.6em;\n}\n\n.placeholder-sm {\n  min-height: 0.8em;\n}\n\n.placeholder-lg {\n  min-height: 1.2em;\n}\n\n.placeholder-glow .placeholder {\n  -webkit-animation: placeholder-glow 2s ease-in-out infinite;\n  animation: placeholder-glow 2s ease-in-out infinite;\n}\n\n@-webkit-keyframes placeholder-glow {\n  50% {\n    opacity: 0.2;\n  }\n}\n\n@keyframes placeholder-glow {\n  50% {\n    opacity: 0.2;\n  }\n}\n.placeholder-wave {\n  -webkit-mask-image: linear-gradient(130deg, #000 55%, rgba(0, 0, 0, 0.8) 75%, #000 95%);\n  mask-image: linear-gradient(130deg, #000 55%, rgba(0, 0, 0, 0.8) 75%, #000 95%);\n  -webkit-mask-size: 200% 100%;\n  mask-size: 200% 100%;\n  -webkit-animation: placeholder-wave 2s linear infinite;\n  animation: placeholder-wave 2s linear infinite;\n}\n\n@-webkit-keyframes placeholder-wave {\n  100% {\n    -webkit-mask-position: -200% 0%;\n    mask-position: -200% 0%;\n  }\n}\n\n@keyframes placeholder-wave {\n  100% {\n    -webkit-mask-position: -200% 0%;\n    mask-position: -200% 0%;\n  }\n}\n.clearfix::after {\n  display: block;\n  clear: both;\n  content: \"\";\n}\n\n.link-primary {\n  color: #0d6efd;\n}\n.link-primary:hover, .link-primary:focus {\n  color: #0a58ca;\n}\n\n.link-secondary {\n  color: #6c757d;\n}\n.link-secondary:hover, .link-secondary:focus {\n  color: #565e64;\n}\n\n.link-success {\n  color: #198754;\n}\n.link-success:hover, .link-success:focus {\n  color: #146c43;\n}\n\n.link-info {\n  color: #0dcaf0;\n}\n.link-info:hover, .link-info:focus {\n  color: #3dd5f3;\n}\n\n.link-warning {\n  color: #ffc107;\n}\n.link-warning:hover, .link-warning:focus {\n  color: #ffcd39;\n}\n\n.link-danger {\n  color: #dc3545;\n}\n.link-danger:hover, .link-danger:focus {\n  color: #b02a37;\n}\n\n.link-light {\n  color: #f8f9fa;\n}\n.link-light:hover, .link-light:focus {\n  color: #f9fafb;\n}\n\n.link-dark {\n  color: #212529;\n}\n.link-dark:hover, .link-dark:focus {\n  color: #1a1e21;\n}\n\n.ratio {\n  position: relative;\n  width: 100%;\n}\n.ratio::before {\n  display: block;\n  padding-top: var(--bs-aspect-ratio);\n  content: \"\";\n}\n.ratio > * {\n  position: absolute;\n  top: 0;\n  right: 0;\n  width: 100%;\n  height: 100%;\n}\n\n.ratio-1x1 {\n  --bs-aspect-ratio: 100%;\n}\n\n.ratio-4x3 {\n  --bs-aspect-ratio: 75%;\n}\n\n.ratio-16x9 {\n  --bs-aspect-ratio: 56.25%;\n}\n\n.ratio-21x9 {\n  --bs-aspect-ratio: 42.8571428571%;\n}\n\n.fixed-top {\n  position: fixed;\n  top: 0;\n  left: 0;\n  right: 0;\n  z-index: 1030;\n}\n\n.fixed-bottom {\n  position: fixed;\n  left: 0;\n  bottom: 0;\n  right: 0;\n  z-index: 1030;\n}\n\n.sticky-top {\n  position: -webkit-sticky;\n  position: sticky;\n  top: 0;\n  z-index: 1020;\n}\n\n@media (min-width: 576px) {\n  .sticky-sm-top {\n    position: -webkit-sticky;\n    position: sticky;\n    top: 0;\n    z-index: 1020;\n  }\n}\n@media (min-width: 768px) {\n  .sticky-md-top {\n    position: -webkit-sticky;\n    position: sticky;\n    top: 0;\n    z-index: 1020;\n  }\n}\n@media (min-width: 992px) {\n  .sticky-lg-top {\n    position: -webkit-sticky;\n    position: sticky;\n    top: 0;\n    z-index: 1020;\n  }\n}\n@media (min-width: 1200px) {\n  .sticky-xl-top {\n    position: -webkit-sticky;\n    position: sticky;\n    top: 0;\n    z-index: 1020;\n  }\n}\n@media (min-width: 1400px) {\n  .sticky-xxl-top {\n    position: -webkit-sticky;\n    position: sticky;\n    top: 0;\n    z-index: 1020;\n  }\n}\n.hstack {\n  display: flex;\n  flex-direction: row;\n  align-items: center;\n  align-self: stretch;\n}\n\n.vstack {\n  display: flex;\n  flex: 1 1 auto;\n  flex-direction: column;\n  align-self: stretch;\n}\n\n.visually-hidden,\n.visually-hidden-focusable:not(:focus):not(:focus-within) {\n  position: absolute !important;\n  width: 1px !important;\n  height: 1px !important;\n  padding: 0 !important;\n  margin: -1px !important;\n  overflow: hidden !important;\n  clip: rect(0, 0, 0, 0) !important;\n  white-space: nowrap !important;\n  border: 0 !important;\n}\n\n.stretched-link::after {\n  position: absolute;\n  top: 0;\n  left: 0;\n  bottom: 0;\n  right: 0;\n  z-index: 1;\n  content: \"\";\n}\n\n.text-truncate {\n  overflow: hidden;\n  text-overflow: ellipsis;\n  white-space: nowrap;\n}\n\n.vr {\n  display: inline-block;\n  align-self: stretch;\n  width: 1px;\n  min-height: 1em;\n  background-color: currentColor;\n  opacity: 0.25;\n}\n\n.align-baseline {\n  vertical-align: baseline !important;\n}\n\n.align-top {\n  vertical-align: top !important;\n}\n\n.align-middle {\n  vertical-align: middle !important;\n}\n\n.align-bottom {\n  vertical-align: bottom !important;\n}\n\n.align-text-bottom {\n  vertical-align: text-bottom !important;\n}\n\n.align-text-top {\n  vertical-align: text-top !important;\n}\n\n.float-start {\n  float: right !important;\n}\n\n.float-end {\n  float: left !important;\n}\n\n.float-none {\n  float: none !important;\n}\n\n.opacity-0 {\n  opacity: 0 !important;\n}\n\n.opacity-25 {\n  opacity: 0.25 !important;\n}\n\n.opacity-50 {\n  opacity: 0.5 !important;\n}\n\n.opacity-75 {\n  opacity: 0.75 !important;\n}\n\n.opacity-100 {\n  opacity: 1 !important;\n}\n\n.overflow-auto {\n  overflow: auto !important;\n}\n\n.overflow-hidden {\n  overflow: hidden !important;\n}\n\n.overflow-visible {\n  overflow: visible !important;\n}\n\n.overflow-scroll {\n  overflow: scroll !important;\n}\n\n.d-inline {\n  display: inline !important;\n}\n\n.d-inline-block {\n  display: inline-block !important;\n}\n\n.d-block {\n  display: block !important;\n}\n\n.d-grid {\n  display: grid !important;\n}\n\n.d-table {\n  display: table !important;\n}\n\n.d-table-row {\n  display: table-row !important;\n}\n\n.d-table-cell {\n  display: table-cell !important;\n}\n\n.d-flex {\n  display: flex !important;\n}\n\n.d-inline-flex {\n  display: inline-flex !important;\n}\n\n.d-none {\n  display: none !important;\n}\n\n.shadow {\n  box-shadow: 0 0.5rem 1rem rgba(0, 0, 0, 0.15) !important;\n}\n\n.shadow-sm {\n  box-shadow: 0 0.125rem 0.25rem rgba(0, 0, 0, 0.075) !important;\n}\n\n.shadow-lg {\n  box-shadow: 0 1rem 3rem rgba(0, 0, 0, 0.175) !important;\n}\n\n.shadow-none {\n  box-shadow: none !important;\n}\n\n.position-static {\n  position: static !important;\n}\n\n.position-relative {\n  position: relative !important;\n}\n\n.position-absolute {\n  position: absolute !important;\n}\n\n.position-fixed {\n  position: fixed !important;\n}\n\n.position-sticky {\n  position: -webkit-sticky !important;\n  position: sticky !important;\n}\n\n.top-0 {\n  top: 0 !important;\n}\n\n.top-50 {\n  top: 50% !important;\n}\n\n.top-100 {\n  top: 100% !important;\n}\n\n.bottom-0 {\n  bottom: 0 !important;\n}\n\n.bottom-50 {\n  bottom: 50% !important;\n}\n\n.bottom-100 {\n  bottom: 100% !important;\n}\n\n.start-0 {\n  right: 0 !important;\n}\n\n.start-50 {\n  right: 50% !important;\n}\n\n.start-100 {\n  right: 100% !important;\n}\n\n.end-0 {\n  left: 0 !important;\n}\n\n.end-50 {\n  left: 50% !important;\n}\n\n.end-100 {\n  left: 100% !important;\n}\n\n.translate-middle {\n  transform: translate(50%, -50%) !important;\n}\n\n.translate-middle-x {\n  transform: translateX(50%) !important;\n}\n\n.translate-middle-y {\n  transform: translateY(-50%) !important;\n}\n\n.border {\n  border: 1px solid #dee2e6 !important;\n}\n\n.border-0 {\n  border: 0 !important;\n}\n\n.border-top {\n  border-top: 1px solid #dee2e6 !important;\n}\n\n.border-top-0 {\n  border-top: 0 !important;\n}\n\n.border-end {\n  border-left: 1px solid #dee2e6 !important;\n}\n\n.border-end-0 {\n  border-left: 0 !important;\n}\n\n.border-bottom {\n  border-bottom: 1px solid #dee2e6 !important;\n}\n\n.border-bottom-0 {\n  border-bottom: 0 !important;\n}\n\n.border-start {\n  border-right: 1px solid #dee2e6 !important;\n}\n\n.border-start-0 {\n  border-right: 0 !important;\n}\n\n.border-primary {\n  border-color: #0d6efd !important;\n}\n\n.border-secondary {\n  border-color: #6c757d !important;\n}\n\n.border-success {\n  border-color: #198754 !important;\n}\n\n.border-info {\n  border-color: #0dcaf0 !important;\n}\n\n.border-warning {\n  border-color: #ffc107 !important;\n}\n\n.border-danger {\n  border-color: #dc3545 !important;\n}\n\n.border-light {\n  border-color: #f8f9fa !important;\n}\n\n.border-dark {\n  border-color: #212529 !important;\n}\n\n.border-white {\n  border-color: #fff !important;\n}\n\n.border-1 {\n  border-width: 1px !important;\n}\n\n.border-2 {\n  border-width: 2px !important;\n}\n\n.border-3 {\n  border-width: 3px !important;\n}\n\n.border-4 {\n  border-width: 4px !important;\n}\n\n.border-5 {\n  border-width: 5px !important;\n}\n\n.w-25 {\n  width: 25% !important;\n}\n\n.w-50 {\n  width: 50% !important;\n}\n\n.w-75 {\n  width: 75% !important;\n}\n\n.w-100 {\n  width: 100% !important;\n}\n\n.w-auto {\n  width: auto !important;\n}\n\n.mw-100 {\n  max-width: 100% !important;\n}\n\n.vw-100 {\n  width: 100vw !important;\n}\n\n.min-vw-100 {\n  min-width: 100vw !important;\n}\n\n.h-25 {\n  height: 25% !important;\n}\n\n.h-50 {\n  height: 50% !important;\n}\n\n.h-75 {\n  height: 75% !important;\n}\n\n.h-100 {\n  height: 100% !important;\n}\n\n.h-auto {\n  height: auto !important;\n}\n\n.mh-100 {\n  max-height: 100% !important;\n}\n\n.vh-100 {\n  height: 100vh !important;\n}\n\n.min-vh-100 {\n  min-height: 100vh !important;\n}\n\n.flex-fill {\n  flex: 1 1 auto !important;\n}\n\n.flex-row {\n  flex-direction: row !important;\n}\n\n.flex-column {\n  flex-direction: column !important;\n}\n\n.flex-row-reverse {\n  flex-direction: row-reverse !important;\n}\n\n.flex-column-reverse {\n  flex-direction: column-reverse !important;\n}\n\n.flex-grow-0 {\n  flex-grow: 0 !important;\n}\n\n.flex-grow-1 {\n  flex-grow: 1 !important;\n}\n\n.flex-shrink-0 {\n  flex-shrink: 0 !important;\n}\n\n.flex-shrink-1 {\n  flex-shrink: 1 !important;\n}\n\n.flex-wrap {\n  flex-wrap: wrap !important;\n}\n\n.flex-nowrap {\n  flex-wrap: nowrap !important;\n}\n\n.flex-wrap-reverse {\n  flex-wrap: wrap-reverse !important;\n}\n\n.gap-0 {\n  gap: 0 !important;\n}\n\n.gap-1 {\n  gap: 0.25rem !important;\n}\n\n.gap-2 {\n  gap: 0.5rem !important;\n}\n\n.gap-3 {\n  gap: 1rem !important;\n}\n\n.gap-4 {\n  gap: 1.5rem !important;\n}\n\n.gap-5 {\n  gap: 3rem !important;\n}\n\n.justify-content-start {\n  justify-content: flex-start !important;\n}\n\n.justify-content-end {\n  justify-content: flex-end !important;\n}\n\n.justify-content-center {\n  justify-content: center !important;\n}\n\n.justify-content-between {\n  justify-content: space-between !important;\n}\n\n.justify-content-around {\n  justify-content: space-around !important;\n}\n\n.justify-content-evenly {\n  justify-content: space-evenly !important;\n}\n\n.align-items-start {\n  align-items: flex-start !important;\n}\n\n.align-items-end {\n  align-items: flex-end !important;\n}\n\n.align-items-center {\n  align-items: center !important;\n}\n\n.align-items-baseline {\n  align-items: baseline !important;\n}\n\n.align-items-stretch {\n  align-items: stretch !important;\n}\n\n.align-content-start {\n  align-content: flex-start !important;\n}\n\n.align-content-end {\n  align-content: flex-end !important;\n}\n\n.align-content-center {\n  align-content: center !important;\n}\n\n.align-content-between {\n  align-content: space-between !important;\n}\n\n.align-content-around {\n  align-content: space-around !important;\n}\n\n.align-content-stretch {\n  align-content: stretch !important;\n}\n\n.align-self-auto {\n  align-self: auto !important;\n}\n\n.align-self-start {\n  align-self: flex-start !important;\n}\n\n.align-self-end {\n  align-self: flex-end !important;\n}\n\n.align-self-center {\n  align-self: center !important;\n}\n\n.align-self-baseline {\n  align-self: baseline !important;\n}\n\n.align-self-stretch {\n  align-self: stretch !important;\n}\n\n.order-first {\n  order: -1 !important;\n}\n\n.order-0 {\n  order: 0 !important;\n}\n\n.order-1 {\n  order: 1 !important;\n}\n\n.order-2 {\n  order: 2 !important;\n}\n\n.order-3 {\n  order: 3 !important;\n}\n\n.order-4 {\n  order: 4 !important;\n}\n\n.order-5 {\n  order: 5 !important;\n}\n\n.order-last {\n  order: 6 !important;\n}\n\n.m-0 {\n  margin: 0 !important;\n}\n\n.m-1 {\n  margin: 0.25rem !important;\n}\n\n.m-2 {\n  margin: 0.5rem !important;\n}\n\n.m-3 {\n  margin: 1rem !important;\n}\n\n.m-4 {\n  margin: 1.5rem !important;\n}\n\n.m-5 {\n  margin: 3rem !important;\n}\n\n.m-auto {\n  margin: auto !important;\n}\n\n.mx-0 {\n  margin-left: 0 !important;\n  margin-right: 0 !important;\n}\n\n.mx-1 {\n  margin-left: 0.25rem !important;\n  margin-right: 0.25rem !important;\n}\n\n.mx-2 {\n  margin-left: 0.5rem !important;\n  margin-right: 0.5rem !important;\n}\n\n.mx-3 {\n  margin-left: 1rem !important;\n  margin-right: 1rem !important;\n}\n\n.mx-4 {\n  margin-left: 1.5rem !important;\n  margin-right: 1.5rem !important;\n}\n\n.mx-5 {\n  margin-left: 3rem !important;\n  margin-right: 3rem !important;\n}\n\n.mx-auto {\n  margin-left: auto !important;\n  margin-right: auto !important;\n}\n\n.my-0 {\n  margin-top: 0 !important;\n  margin-bottom: 0 !important;\n}\n\n.my-1 {\n  margin-top: 0.25rem !important;\n  margin-bottom: 0.25rem !important;\n}\n\n.my-2 {\n  margin-top: 0.5rem !important;\n  margin-bottom: 0.5rem !important;\n}\n\n.my-3 {\n  margin-top: 1rem !important;\n  margin-bottom: 1rem !important;\n}\n\n.my-4 {\n  margin-top: 1.5rem !important;\n  margin-bottom: 1.5rem !important;\n}\n\n.my-5 {\n  margin-top: 3rem !important;\n  margin-bottom: 3rem !important;\n}\n\n.my-auto {\n  margin-top: auto !important;\n  margin-bottom: auto !important;\n}\n\n.mt-0 {\n  margin-top: 0 !important;\n}\n\n.mt-1 {\n  margin-top: 0.25rem !important;\n}\n\n.mt-2 {\n  margin-top: 0.5rem !important;\n}\n\n.mt-3 {\n  margin-top: 1rem !important;\n}\n\n.mt-4 {\n  margin-top: 1.5rem !important;\n}\n\n.mt-5 {\n  margin-top: 3rem !important;\n}\n\n.mt-auto {\n  margin-top: auto !important;\n}\n\n.me-0 {\n  margin-left: 0 !important;\n}\n\n.me-1 {\n  margin-left: 0.25rem !important;\n}\n\n.me-2 {\n  margin-left: 0.5rem !important;\n}\n\n.me-3 {\n  margin-left: 1rem !important;\n}\n\n.me-4 {\n  margin-left: 1.5rem !important;\n}\n\n.me-5 {\n  margin-left: 3rem !important;\n}\n\n.me-auto {\n  margin-left: auto !important;\n}\n\n.mb-0 {\n  margin-bottom: 0 !important;\n}\n\n.mb-1 {\n  margin-bottom: 0.25rem !important;\n}\n\n.mb-2 {\n  margin-bottom: 0.5rem !important;\n}\n\n.mb-3 {\n  margin-bottom: 1rem !important;\n}\n\n.mb-4 {\n  margin-bottom: 1.5rem !important;\n}\n\n.mb-5 {\n  margin-bottom: 3rem !important;\n}\n\n.mb-auto {\n  margin-bottom: auto !important;\n}\n\n.ms-0 {\n  margin-right: 0 !important;\n}\n\n.ms-1 {\n  margin-right: 0.25rem !important;\n}\n\n.ms-2 {\n  margin-right: 0.5rem !important;\n}\n\n.ms-3 {\n  margin-right: 1rem !important;\n}\n\n.ms-4 {\n  margin-right: 1.5rem !important;\n}\n\n.ms-5 {\n  margin-right: 3rem !important;\n}\n\n.ms-auto {\n  margin-right: auto !important;\n}\n\n.p-0 {\n  padding: 0 !important;\n}\n\n.p-1 {\n  padding: 0.25rem !important;\n}\n\n.p-2 {\n  padding: 0.5rem !important;\n}\n\n.p-3 {\n  padding: 1rem !important;\n}\n\n.p-4 {\n  padding: 1.5rem !important;\n}\n\n.p-5 {\n  padding: 3rem !important;\n}\n\n.px-0 {\n  padding-left: 0 !important;\n  padding-right: 0 !important;\n}\n\n.px-1 {\n  padding-left: 0.25rem !important;\n  padding-right: 0.25rem !important;\n}\n\n.px-2 {\n  padding-left: 0.5rem !important;\n  padding-right: 0.5rem !important;\n}\n\n.px-3 {\n  padding-left: 1rem !important;\n  padding-right: 1rem !important;\n}\n\n.px-4 {\n  padding-left: 1.5rem !important;\n  padding-right: 1.5rem !important;\n}\n\n.px-5 {\n  padding-left: 3rem !important;\n  padding-right: 3rem !important;\n}\n\n.py-0 {\n  padding-top: 0 !important;\n  padding-bottom: 0 !important;\n}\n\n.py-1 {\n  padding-top: 0.25rem !important;\n  padding-bottom: 0.25rem !important;\n}\n\n.py-2 {\n  padding-top: 0.5rem !important;\n  padding-bottom: 0.5rem !important;\n}\n\n.py-3 {\n  padding-top: 1rem !important;\n  padding-bottom: 1rem !important;\n}\n\n.py-4 {\n  padding-top: 1.5rem !important;\n  padding-bottom: 1.5rem !important;\n}\n\n.py-5 {\n  padding-top: 3rem !important;\n  padding-bottom: 3rem !important;\n}\n\n.pt-0 {\n  padding-top: 0 !important;\n}\n\n.pt-1 {\n  padding-top: 0.25rem !important;\n}\n\n.pt-2 {\n  padding-top: 0.5rem !important;\n}\n\n.pt-3 {\n  padding-top: 1rem !important;\n}\n\n.pt-4 {\n  padding-top: 1.5rem !important;\n}\n\n.pt-5 {\n  padding-top: 3rem !important;\n}\n\n.pe-0 {\n  padding-left: 0 !important;\n}\n\n.pe-1 {\n  padding-left: 0.25rem !important;\n}\n\n.pe-2 {\n  padding-left: 0.5rem !important;\n}\n\n.pe-3 {\n  padding-left: 1rem !important;\n}\n\n.pe-4 {\n  padding-left: 1.5rem !important;\n}\n\n.pe-5 {\n  padding-left: 3rem !important;\n}\n\n.pb-0 {\n  padding-bottom: 0 !important;\n}\n\n.pb-1 {\n  padding-bottom: 0.25rem !important;\n}\n\n.pb-2 {\n  padding-bottom: 0.5rem !important;\n}\n\n.pb-3 {\n  padding-bottom: 1rem !important;\n}\n\n.pb-4 {\n  padding-bottom: 1.5rem !important;\n}\n\n.pb-5 {\n  padding-bottom: 3rem !important;\n}\n\n.ps-0 {\n  padding-right: 0 !important;\n}\n\n.ps-1 {\n  padding-right: 0.25rem !important;\n}\n\n.ps-2 {\n  padding-right: 0.5rem !important;\n}\n\n.ps-3 {\n  padding-right: 1rem !important;\n}\n\n.ps-4 {\n  padding-right: 1.5rem !important;\n}\n\n.ps-5 {\n  padding-right: 3rem !important;\n}\n\n.font-monospace {\n  font-family: var(--bs-font-monospace) !important;\n}\n\n.fs-1 {\n  font-size: calc(1.375rem + 1.5vw) !important;\n}\n\n.fs-2 {\n  font-size: calc(1.325rem + 0.9vw) !important;\n}\n\n.fs-3 {\n  font-size: calc(1.3rem + 0.6vw) !important;\n}\n\n.fs-4 {\n  font-size: calc(1.275rem + 0.3vw) !important;\n}\n\n.fs-5 {\n  font-size: 1.25rem !important;\n}\n\n.fs-6 {\n  font-size: 1rem !important;\n}\n\n.fst-italic {\n  font-style: italic !important;\n}\n\n.fst-normal {\n  font-style: normal !important;\n}\n\n.fw-light {\n  font-weight: 300 !important;\n}\n\n.fw-lighter {\n  font-weight: lighter !important;\n}\n\n.fw-normal {\n  font-weight: 400 !important;\n}\n\n.fw-bold {\n  font-weight: 700 !important;\n}\n\n.fw-bolder {\n  font-weight: bolder !important;\n}\n\n.lh-1 {\n  line-height: 1 !important;\n}\n\n.lh-sm {\n  line-height: 1.25 !important;\n}\n\n.lh-base {\n  line-height: 1.5 !important;\n}\n\n.lh-lg {\n  line-height: 2 !important;\n}\n\n.text-start {\n  text-align: right !important;\n}\n\n.text-end {\n  text-align: left !important;\n}\n\n.text-center {\n  text-align: center !important;\n}\n\n.text-decoration-none {\n  text-decoration: none !important;\n}\n\n.text-decoration-underline {\n  text-decoration: underline !important;\n}\n\n.text-decoration-line-through {\n  text-decoration: line-through !important;\n}\n\n.text-lowercase {\n  text-transform: lowercase !important;\n}\n\n.text-uppercase {\n  text-transform: uppercase !important;\n}\n\n.text-capitalize {\n  text-transform: capitalize !important;\n}\n\n.text-wrap {\n  white-space: normal !important;\n}\n\n.text-nowrap {\n  white-space: nowrap !important;\n}\n.text-primary {\n  --bs-text-opacity: 1;\n  color: rgba(var(--bs-primary-rgb), var(--bs-text-opacity)) !important;\n}\n\n.text-secondary {\n  --bs-text-opacity: 1;\n  color: rgba(var(--bs-secondary-rgb), var(--bs-text-opacity)) !important;\n}\n\n.text-success {\n  --bs-text-opacity: 1;\n  color: rgba(var(--bs-success-rgb), var(--bs-text-opacity)) !important;\n}\n\n.text-info {\n  --bs-text-opacity: 1;\n  color: rgba(var(--bs-info-rgb), var(--bs-text-opacity)) !important;\n}\n\n.text-warning {\n  --bs-text-opacity: 1;\n  color: rgba(var(--bs-warning-rgb), var(--bs-text-opacity)) !important;\n}\n\n.text-danger {\n  --bs-text-opacity: 1;\n  color: rgba(var(--bs-danger-rgb), var(--bs-text-opacity)) !important;\n}\n\n.text-light {\n  --bs-text-opacity: 1;\n  color: rgba(var(--bs-light-rgb), var(--bs-text-opacity)) !important;\n}\n\n.text-dark {\n  --bs-text-opacity: 1;\n  color: rgba(var(--bs-dark-rgb), var(--bs-text-opacity)) !important;\n}\n\n.text-black {\n  --bs-text-opacity: 1;\n  color: rgba(var(--bs-black-rgb), var(--bs-text-opacity)) !important;\n}\n\n.text-white {\n  --bs-text-opacity: 1;\n  color: rgba(var(--bs-white-rgb), var(--bs-text-opacity)) !important;\n}\n\n.text-body {\n  --bs-text-opacity: 1;\n  color: rgba(var(--bs-body-color-rgb), var(--bs-text-opacity)) !important;\n}\n\n.text-muted {\n  --bs-text-opacity: 1;\n  color: #6c757d !important;\n}\n\n.text-black-50 {\n  --bs-text-opacity: 1;\n  color: rgba(0, 0, 0, 0.5) !important;\n}\n\n.text-white-50 {\n  --bs-text-opacity: 1;\n  color: rgba(255, 255, 255, 0.5) !important;\n}\n\n.text-reset {\n  --bs-text-opacity: 1;\n  color: inherit !important;\n}\n\n.text-opacity-25 {\n  --bs-text-opacity: 0.25;\n}\n\n.text-opacity-50 {\n  --bs-text-opacity: 0.5;\n}\n\n.text-opacity-75 {\n  --bs-text-opacity: 0.75;\n}\n\n.text-opacity-100 {\n  --bs-text-opacity: 1;\n}\n\n.bg-primary {\n  --bs-bg-opacity: 1;\n  background-color: rgba(var(--bs-primary-rgb), var(--bs-bg-opacity)) !important;\n}\n\n.bg-secondary {\n  --bs-bg-opacity: 1;\n  background-color: rgba(var(--bs-secondary-rgb), var(--bs-bg-opacity)) !important;\n}\n\n.bg-success {\n  --bs-bg-opacity: 1;\n  background-color: rgba(var(--bs-success-rgb), var(--bs-bg-opacity)) !important;\n}\n\n.bg-info {\n  --bs-bg-opacity: 1;\n  background-color: rgba(var(--bs-info-rgb), var(--bs-bg-opacity)) !important;\n}\n\n.bg-warning {\n  --bs-bg-opacity: 1;\n  background-color: rgba(var(--bs-warning-rgb), var(--bs-bg-opacity)) !important;\n}\n\n.bg-danger {\n  --bs-bg-opacity: 1;\n  background-color: rgba(var(--bs-danger-rgb), var(--bs-bg-opacity)) !important;\n}\n\n.bg-light {\n  --bs-bg-opacity: 1;\n  background-color: rgba(var(--bs-light-rgb), var(--bs-bg-opacity)) !important;\n}\n\n.bg-dark {\n  --bs-bg-opacity: 1;\n  background-color: rgba(var(--bs-dark-rgb), var(--bs-bg-opacity)) !important;\n}\n\n.bg-black {\n  --bs-bg-opacity: 1;\n  background-color: rgba(var(--bs-black-rgb), var(--bs-bg-opacity)) !important;\n}\n\n.bg-white {\n  --bs-bg-opacity: 1;\n  background-color: rgba(var(--bs-white-rgb), var(--bs-bg-opacity)) !important;\n}\n\n.bg-body {\n  --bs-bg-opacity: 1;\n  background-color: rgba(var(--bs-body-bg-rgb), var(--bs-bg-opacity)) !important;\n}\n\n.bg-transparent {\n  --bs-bg-opacity: 1;\n  background-color: transparent !important;\n}\n\n.bg-opacity-10 {\n  --bs-bg-opacity: 0.1;\n}\n\n.bg-opacity-25 {\n  --bs-bg-opacity: 0.25;\n}\n\n.bg-opacity-50 {\n  --bs-bg-opacity: 0.5;\n}\n\n.bg-opacity-75 {\n  --bs-bg-opacity: 0.75;\n}\n\n.bg-opacity-100 {\n  --bs-bg-opacity: 1;\n}\n\n.bg-gradient {\n  background-image: var(--bs-gradient) !important;\n}\n\n.user-select-all {\n  -webkit-user-select: all !important;\n  -moz-user-select: all !important;\n  user-select: all !important;\n}\n\n.user-select-auto {\n  -webkit-user-select: auto !important;\n  -moz-user-select: auto !important;\n  user-select: auto !important;\n}\n\n.user-select-none {\n  -webkit-user-select: none !important;\n  -moz-user-select: none !important;\n  user-select: none !important;\n}\n\n.pe-none {\n  pointer-events: none !important;\n}\n\n.pe-auto {\n  pointer-events: auto !important;\n}\n\n.rounded {\n  border-radius: 0.25rem !important;\n}\n\n.rounded-0 {\n  border-radius: 0 !important;\n}\n\n.rounded-1 {\n  border-radius: 0.2rem !important;\n}\n\n.rounded-2 {\n  border-radius: 0.25rem !important;\n}\n\n.rounded-3 {\n  border-radius: 0.3rem !important;\n}\n\n.rounded-circle {\n  border-radius: 50% !important;\n}\n\n.rounded-pill {\n  border-radius: 50rem !important;\n}\n\n.rounded-top {\n  border-top-right-radius: 0.25rem !important;\n  border-top-left-radius: 0.25rem !important;\n}\n\n.rounded-end {\n  border-top-left-radius: 0.25rem !important;\n  border-bottom-left-radius: 0.25rem !important;\n}\n\n.rounded-bottom {\n  border-bottom-left-radius: 0.25rem !important;\n  border-bottom-right-radius: 0.25rem !important;\n}\n\n.rounded-start {\n  border-bottom-right-radius: 0.25rem !important;\n  border-top-right-radius: 0.25rem !important;\n}\n\n.visible {\n  visibility: visible !important;\n}\n\n.invisible {\n  visibility: hidden !important;\n}\n\n@media (min-width: 576px) {\n  .float-sm-start {\n    float: right !important;\n  }\n\n  .float-sm-end {\n    float: left !important;\n  }\n\n  .float-sm-none {\n    float: none !important;\n  }\n\n  .d-sm-inline {\n    display: inline !important;\n  }\n\n  .d-sm-inline-block {\n    display: inline-block !important;\n  }\n\n  .d-sm-block {\n    display: block !important;\n  }\n\n  .d-sm-grid {\n    display: grid !important;\n  }\n\n  .d-sm-table {\n    display: table !important;\n  }\n\n  .d-sm-table-row {\n    display: table-row !important;\n  }\n\n  .d-sm-table-cell {\n    display: table-cell !important;\n  }\n\n  .d-sm-flex {\n    display: flex !important;\n  }\n\n  .d-sm-inline-flex {\n    display: inline-flex !important;\n  }\n\n  .d-sm-none {\n    display: none !important;\n  }\n\n  .flex-sm-fill {\n    flex: 1 1 auto !important;\n  }\n\n  .flex-sm-row {\n    flex-direction: row !important;\n  }\n\n  .flex-sm-column {\n    flex-direction: column !important;\n  }\n\n  .flex-sm-row-reverse {\n    flex-direction: row-reverse !important;\n  }\n\n  .flex-sm-column-reverse {\n    flex-direction: column-reverse !important;\n  }\n\n  .flex-sm-grow-0 {\n    flex-grow: 0 !important;\n  }\n\n  .flex-sm-grow-1 {\n    flex-grow: 1 !important;\n  }\n\n  .flex-sm-shrink-0 {\n    flex-shrink: 0 !important;\n  }\n\n  .flex-sm-shrink-1 {\n    flex-shrink: 1 !important;\n  }\n\n  .flex-sm-wrap {\n    flex-wrap: wrap !important;\n  }\n\n  .flex-sm-nowrap {\n    flex-wrap: nowrap !important;\n  }\n\n  .flex-sm-wrap-reverse {\n    flex-wrap: wrap-reverse !important;\n  }\n\n  .gap-sm-0 {\n    gap: 0 !important;\n  }\n\n  .gap-sm-1 {\n    gap: 0.25rem !important;\n  }\n\n  .gap-sm-2 {\n    gap: 0.5rem !important;\n  }\n\n  .gap-sm-3 {\n    gap: 1rem !important;\n  }\n\n  .gap-sm-4 {\n    gap: 1.5rem !important;\n  }\n\n  .gap-sm-5 {\n    gap: 3rem !important;\n  }\n\n  .justify-content-sm-start {\n    justify-content: flex-start !important;\n  }\n\n  .justify-content-sm-end {\n    justify-content: flex-end !important;\n  }\n\n  .justify-content-sm-center {\n    justify-content: center !important;\n  }\n\n  .justify-content-sm-between {\n    justify-content: space-between !important;\n  }\n\n  .justify-content-sm-around {\n    justify-content: space-around !important;\n  }\n\n  .justify-content-sm-evenly {\n    justify-content: space-evenly !important;\n  }\n\n  .align-items-sm-start {\n    align-items: flex-start !important;\n  }\n\n  .align-items-sm-end {\n    align-items: flex-end !important;\n  }\n\n  .align-items-sm-center {\n    align-items: center !important;\n  }\n\n  .align-items-sm-baseline {\n    align-items: baseline !important;\n  }\n\n  .align-items-sm-stretch {\n    align-items: stretch !important;\n  }\n\n  .align-content-sm-start {\n    align-content: flex-start !important;\n  }\n\n  .align-content-sm-end {\n    align-content: flex-end !important;\n  }\n\n  .align-content-sm-center {\n    align-content: center !important;\n  }\n\n  .align-content-sm-between {\n    align-content: space-between !important;\n  }\n\n  .align-content-sm-around {\n    align-content: space-around !important;\n  }\n\n  .align-content-sm-stretch {\n    align-content: stretch !important;\n  }\n\n  .align-self-sm-auto {\n    align-self: auto !important;\n  }\n\n  .align-self-sm-start {\n    align-self: flex-start !important;\n  }\n\n  .align-self-sm-end {\n    align-self: flex-end !important;\n  }\n\n  .align-self-sm-center {\n    align-self: center !important;\n  }\n\n  .align-self-sm-baseline {\n    align-self: baseline !important;\n  }\n\n  .align-self-sm-stretch {\n    align-self: stretch !important;\n  }\n\n  .order-sm-first {\n    order: -1 !important;\n  }\n\n  .order-sm-0 {\n    order: 0 !important;\n  }\n\n  .order-sm-1 {\n    order: 1 !important;\n  }\n\n  .order-sm-2 {\n    order: 2 !important;\n  }\n\n  .order-sm-3 {\n    order: 3 !important;\n  }\n\n  .order-sm-4 {\n    order: 4 !important;\n  }\n\n  .order-sm-5 {\n    order: 5 !important;\n  }\n\n  .order-sm-last {\n    order: 6 !important;\n  }\n\n  .m-sm-0 {\n    margin: 0 !important;\n  }\n\n  .m-sm-1 {\n    margin: 0.25rem !important;\n  }\n\n  .m-sm-2 {\n    margin: 0.5rem !important;\n  }\n\n  .m-sm-3 {\n    margin: 1rem !important;\n  }\n\n  .m-sm-4 {\n    margin: 1.5rem !important;\n  }\n\n  .m-sm-5 {\n    margin: 3rem !important;\n  }\n\n  .m-sm-auto {\n    margin: auto !important;\n  }\n\n  .mx-sm-0 {\n    margin-left: 0 !important;\n    margin-right: 0 !important;\n  }\n\n  .mx-sm-1 {\n    margin-left: 0.25rem !important;\n    margin-right: 0.25rem !important;\n  }\n\n  .mx-sm-2 {\n    margin-left: 0.5rem !important;\n    margin-right: 0.5rem !important;\n  }\n\n  .mx-sm-3 {\n    margin-left: 1rem !important;\n    margin-right: 1rem !important;\n  }\n\n  .mx-sm-4 {\n    margin-left: 1.5rem !important;\n    margin-right: 1.5rem !important;\n  }\n\n  .mx-sm-5 {\n    margin-left: 3rem !important;\n    margin-right: 3rem !important;\n  }\n\n  .mx-sm-auto {\n    margin-left: auto !important;\n    margin-right: auto !important;\n  }\n\n  .my-sm-0 {\n    margin-top: 0 !important;\n    margin-bottom: 0 !important;\n  }\n\n  .my-sm-1 {\n    margin-top: 0.25rem !important;\n    margin-bottom: 0.25rem !important;\n  }\n\n  .my-sm-2 {\n    margin-top: 0.5rem !important;\n    margin-bottom: 0.5rem !important;\n  }\n\n  .my-sm-3 {\n    margin-top: 1rem !important;\n    margin-bottom: 1rem !important;\n  }\n\n  .my-sm-4 {\n    margin-top: 1.5rem !important;\n    margin-bottom: 1.5rem !important;\n  }\n\n  .my-sm-5 {\n    margin-top: 3rem !important;\n    margin-bottom: 3rem !important;\n  }\n\n  .my-sm-auto {\n    margin-top: auto !important;\n    margin-bottom: auto !important;\n  }\n\n  .mt-sm-0 {\n    margin-top: 0 !important;\n  }\n\n  .mt-sm-1 {\n    margin-top: 0.25rem !important;\n  }\n\n  .mt-sm-2 {\n    margin-top: 0.5rem !important;\n  }\n\n  .mt-sm-3 {\n    margin-top: 1rem !important;\n  }\n\n  .mt-sm-4 {\n    margin-top: 1.5rem !important;\n  }\n\n  .mt-sm-5 {\n    margin-top: 3rem !important;\n  }\n\n  .mt-sm-auto {\n    margin-top: auto !important;\n  }\n\n  .me-sm-0 {\n    margin-left: 0 !important;\n  }\n\n  .me-sm-1 {\n    margin-left: 0.25rem !important;\n  }\n\n  .me-sm-2 {\n    margin-left: 0.5rem !important;\n  }\n\n  .me-sm-3 {\n    margin-left: 1rem !important;\n  }\n\n  .me-sm-4 {\n    margin-left: 1.5rem !important;\n  }\n\n  .me-sm-5 {\n    margin-left: 3rem !important;\n  }\n\n  .me-sm-auto {\n    margin-left: auto !important;\n  }\n\n  .mb-sm-0 {\n    margin-bottom: 0 !important;\n  }\n\n  .mb-sm-1 {\n    margin-bottom: 0.25rem !important;\n  }\n\n  .mb-sm-2 {\n    margin-bottom: 0.5rem !important;\n  }\n\n  .mb-sm-3 {\n    margin-bottom: 1rem !important;\n  }\n\n  .mb-sm-4 {\n    margin-bottom: 1.5rem !important;\n  }\n\n  .mb-sm-5 {\n    margin-bottom: 3rem !important;\n  }\n\n  .mb-sm-auto {\n    margin-bottom: auto !important;\n  }\n\n  .ms-sm-0 {\n    margin-right: 0 !important;\n  }\n\n  .ms-sm-1 {\n    margin-right: 0.25rem !important;\n  }\n\n  .ms-sm-2 {\n    margin-right: 0.5rem !important;\n  }\n\n  .ms-sm-3 {\n    margin-right: 1rem !important;\n  }\n\n  .ms-sm-4 {\n    margin-right: 1.5rem !important;\n  }\n\n  .ms-sm-5 {\n    margin-right: 3rem !important;\n  }\n\n  .ms-sm-auto {\n    margin-right: auto !important;\n  }\n\n  .p-sm-0 {\n    padding: 0 !important;\n  }\n\n  .p-sm-1 {\n    padding: 0.25rem !important;\n  }\n\n  .p-sm-2 {\n    padding: 0.5rem !important;\n  }\n\n  .p-sm-3 {\n    padding: 1rem !important;\n  }\n\n  .p-sm-4 {\n    padding: 1.5rem !important;\n  }\n\n  .p-sm-5 {\n    padding: 3rem !important;\n  }\n\n  .px-sm-0 {\n    padding-left: 0 !important;\n    padding-right: 0 !important;\n  }\n\n  .px-sm-1 {\n    padding-left: 0.25rem !important;\n    padding-right: 0.25rem !important;\n  }\n\n  .px-sm-2 {\n    padding-left: 0.5rem !important;\n    padding-right: 0.5rem !important;\n  }\n\n  .px-sm-3 {\n    padding-left: 1rem !important;\n    padding-right: 1rem !important;\n  }\n\n  .px-sm-4 {\n    padding-left: 1.5rem !important;\n    padding-right: 1.5rem !important;\n  }\n\n  .px-sm-5 {\n    padding-left: 3rem !important;\n    padding-right: 3rem !important;\n  }\n\n  .py-sm-0 {\n    padding-top: 0 !important;\n    padding-bottom: 0 !important;\n  }\n\n  .py-sm-1 {\n    padding-top: 0.25rem !important;\n    padding-bottom: 0.25rem !important;\n  }\n\n  .py-sm-2 {\n    padding-top: 0.5rem !important;\n    padding-bottom: 0.5rem !important;\n  }\n\n  .py-sm-3 {\n    padding-top: 1rem !important;\n    padding-bottom: 1rem !important;\n  }\n\n  .py-sm-4 {\n    padding-top: 1.5rem !important;\n    padding-bottom: 1.5rem !important;\n  }\n\n  .py-sm-5 {\n    padding-top: 3rem !important;\n    padding-bottom: 3rem !important;\n  }\n\n  .pt-sm-0 {\n    padding-top: 0 !important;\n  }\n\n  .pt-sm-1 {\n    padding-top: 0.25rem !important;\n  }\n\n  .pt-sm-2 {\n    padding-top: 0.5rem !important;\n  }\n\n  .pt-sm-3 {\n    padding-top: 1rem !important;\n  }\n\n  .pt-sm-4 {\n    padding-top: 1.5rem !important;\n  }\n\n  .pt-sm-5 {\n    padding-top: 3rem !important;\n  }\n\n  .pe-sm-0 {\n    padding-left: 0 !important;\n  }\n\n  .pe-sm-1 {\n    padding-left: 0.25rem !important;\n  }\n\n  .pe-sm-2 {\n    padding-left: 0.5rem !important;\n  }\n\n  .pe-sm-3 {\n    padding-left: 1rem !important;\n  }\n\n  .pe-sm-4 {\n    padding-left: 1.5rem !important;\n  }\n\n  .pe-sm-5 {\n    padding-left: 3rem !important;\n  }\n\n  .pb-sm-0 {\n    padding-bottom: 0 !important;\n  }\n\n  .pb-sm-1 {\n    padding-bottom: 0.25rem !important;\n  }\n\n  .pb-sm-2 {\n    padding-bottom: 0.5rem !important;\n  }\n\n  .pb-sm-3 {\n    padding-bottom: 1rem !important;\n  }\n\n  .pb-sm-4 {\n    padding-bottom: 1.5rem !important;\n  }\n\n  .pb-sm-5 {\n    padding-bottom: 3rem !important;\n  }\n\n  .ps-sm-0 {\n    padding-right: 0 !important;\n  }\n\n  .ps-sm-1 {\n    padding-right: 0.25rem !important;\n  }\n\n  .ps-sm-2 {\n    padding-right: 0.5rem !important;\n  }\n\n  .ps-sm-3 {\n    padding-right: 1rem !important;\n  }\n\n  .ps-sm-4 {\n    padding-right: 1.5rem !important;\n  }\n\n  .ps-sm-5 {\n    padding-right: 3rem !important;\n  }\n\n  .text-sm-start {\n    text-align: right !important;\n  }\n\n  .text-sm-end {\n    text-align: left !important;\n  }\n\n  .text-sm-center {\n    text-align: center !important;\n  }\n}\n@media (min-width: 768px) {\n  .float-md-start {\n    float: right !important;\n  }\n\n  .float-md-end {\n    float: left !important;\n  }\n\n  .float-md-none {\n    float: none !important;\n  }\n\n  .d-md-inline {\n    display: inline !important;\n  }\n\n  .d-md-inline-block {\n    display: inline-block !important;\n  }\n\n  .d-md-block {\n    display: block !important;\n  }\n\n  .d-md-grid {\n    display: grid !important;\n  }\n\n  .d-md-table {\n    display: table !important;\n  }\n\n  .d-md-table-row {\n    display: table-row !important;\n  }\n\n  .d-md-table-cell {\n    display: table-cell !important;\n  }\n\n  .d-md-flex {\n    display: flex !important;\n  }\n\n  .d-md-inline-flex {\n    display: inline-flex !important;\n  }\n\n  .d-md-none {\n    display: none !important;\n  }\n\n  .flex-md-fill {\n    flex: 1 1 auto !important;\n  }\n\n  .flex-md-row {\n    flex-direction: row !important;\n  }\n\n  .flex-md-column {\n    flex-direction: column !important;\n  }\n\n  .flex-md-row-reverse {\n    flex-direction: row-reverse !important;\n  }\n\n  .flex-md-column-reverse {\n    flex-direction: column-reverse !important;\n  }\n\n  .flex-md-grow-0 {\n    flex-grow: 0 !important;\n  }\n\n  .flex-md-grow-1 {\n    flex-grow: 1 !important;\n  }\n\n  .flex-md-shrink-0 {\n    flex-shrink: 0 !important;\n  }\n\n  .flex-md-shrink-1 {\n    flex-shrink: 1 !important;\n  }\n\n  .flex-md-wrap {\n    flex-wrap: wrap !important;\n  }\n\n  .flex-md-nowrap {\n    flex-wrap: nowrap !important;\n  }\n\n  .flex-md-wrap-reverse {\n    flex-wrap: wrap-reverse !important;\n  }\n\n  .gap-md-0 {\n    gap: 0 !important;\n  }\n\n  .gap-md-1 {\n    gap: 0.25rem !important;\n  }\n\n  .gap-md-2 {\n    gap: 0.5rem !important;\n  }\n\n  .gap-md-3 {\n    gap: 1rem !important;\n  }\n\n  .gap-md-4 {\n    gap: 1.5rem !important;\n  }\n\n  .gap-md-5 {\n    gap: 3rem !important;\n  }\n\n  .justify-content-md-start {\n    justify-content: flex-start !important;\n  }\n\n  .justify-content-md-end {\n    justify-content: flex-end !important;\n  }\n\n  .justify-content-md-center {\n    justify-content: center !important;\n  }\n\n  .justify-content-md-between {\n    justify-content: space-between !important;\n  }\n\n  .justify-content-md-around {\n    justify-content: space-around !important;\n  }\n\n  .justify-content-md-evenly {\n    justify-content: space-evenly !important;\n  }\n\n  .align-items-md-start {\n    align-items: flex-start !important;\n  }\n\n  .align-items-md-end {\n    align-items: flex-end !important;\n  }\n\n  .align-items-md-center {\n    align-items: center !important;\n  }\n\n  .align-items-md-baseline {\n    align-items: baseline !important;\n  }\n\n  .align-items-md-stretch {\n    align-items: stretch !important;\n  }\n\n  .align-content-md-start {\n    align-content: flex-start !important;\n  }\n\n  .align-content-md-end {\n    align-content: flex-end !important;\n  }\n\n  .align-content-md-center {\n    align-content: center !important;\n  }\n\n  .align-content-md-between {\n    align-content: space-between !important;\n  }\n\n  .align-content-md-around {\n    align-content: space-around !important;\n  }\n\n  .align-content-md-stretch {\n    align-content: stretch !important;\n  }\n\n  .align-self-md-auto {\n    align-self: auto !important;\n  }\n\n  .align-self-md-start {\n    align-self: flex-start !important;\n  }\n\n  .align-self-md-end {\n    align-self: flex-end !important;\n  }\n\n  .align-self-md-center {\n    align-self: center !important;\n  }\n\n  .align-self-md-baseline {\n    align-self: baseline !important;\n  }\n\n  .align-self-md-stretch {\n    align-self: stretch !important;\n  }\n\n  .order-md-first {\n    order: -1 !important;\n  }\n\n  .order-md-0 {\n    order: 0 !important;\n  }\n\n  .order-md-1 {\n    order: 1 !important;\n  }\n\n  .order-md-2 {\n    order: 2 !important;\n  }\n\n  .order-md-3 {\n    order: 3 !important;\n  }\n\n  .order-md-4 {\n    order: 4 !important;\n  }\n\n  .order-md-5 {\n    order: 5 !important;\n  }\n\n  .order-md-last {\n    order: 6 !important;\n  }\n\n  .m-md-0 {\n    margin: 0 !important;\n  }\n\n  .m-md-1 {\n    margin: 0.25rem !important;\n  }\n\n  .m-md-2 {\n    margin: 0.5rem !important;\n  }\n\n  .m-md-3 {\n    margin: 1rem !important;\n  }\n\n  .m-md-4 {\n    margin: 1.5rem !important;\n  }\n\n  .m-md-5 {\n    margin: 3rem !important;\n  }\n\n  .m-md-auto {\n    margin: auto !important;\n  }\n\n  .mx-md-0 {\n    margin-left: 0 !important;\n    margin-right: 0 !important;\n  }\n\n  .mx-md-1 {\n    margin-left: 0.25rem !important;\n    margin-right: 0.25rem !important;\n  }\n\n  .mx-md-2 {\n    margin-left: 0.5rem !important;\n    margin-right: 0.5rem !important;\n  }\n\n  .mx-md-3 {\n    margin-left: 1rem !important;\n    margin-right: 1rem !important;\n  }\n\n  .mx-md-4 {\n    margin-left: 1.5rem !important;\n    margin-right: 1.5rem !important;\n  }\n\n  .mx-md-5 {\n    margin-left: 3rem !important;\n    margin-right: 3rem !important;\n  }\n\n  .mx-md-auto {\n    margin-left: auto !important;\n    margin-right: auto !important;\n  }\n\n  .my-md-0 {\n    margin-top: 0 !important;\n    margin-bottom: 0 !important;\n  }\n\n  .my-md-1 {\n    margin-top: 0.25rem !important;\n    margin-bottom: 0.25rem !important;\n  }\n\n  .my-md-2 {\n    margin-top: 0.5rem !important;\n    margin-bottom: 0.5rem !important;\n  }\n\n  .my-md-3 {\n    margin-top: 1rem !important;\n    margin-bottom: 1rem !important;\n  }\n\n  .my-md-4 {\n    margin-top: 1.5rem !important;\n    margin-bottom: 1.5rem !important;\n  }\n\n  .my-md-5 {\n    margin-top: 3rem !important;\n    margin-bottom: 3rem !important;\n  }\n\n  .my-md-auto {\n    margin-top: auto !important;\n    margin-bottom: auto !important;\n  }\n\n  .mt-md-0 {\n    margin-top: 0 !important;\n  }\n\n  .mt-md-1 {\n    margin-top: 0.25rem !important;\n  }\n\n  .mt-md-2 {\n    margin-top: 0.5rem !important;\n  }\n\n  .mt-md-3 {\n    margin-top: 1rem !important;\n  }\n\n  .mt-md-4 {\n    margin-top: 1.5rem !important;\n  }\n\n  .mt-md-5 {\n    margin-top: 3rem !important;\n  }\n\n  .mt-md-auto {\n    margin-top: auto !important;\n  }\n\n  .me-md-0 {\n    margin-left: 0 !important;\n  }\n\n  .me-md-1 {\n    margin-left: 0.25rem !important;\n  }\n\n  .me-md-2 {\n    margin-left: 0.5rem !important;\n  }\n\n  .me-md-3 {\n    margin-left: 1rem !important;\n  }\n\n  .me-md-4 {\n    margin-left: 1.5rem !important;\n  }\n\n  .me-md-5 {\n    margin-left: 3rem !important;\n  }\n\n  .me-md-auto {\n    margin-left: auto !important;\n  }\n\n  .mb-md-0 {\n    margin-bottom: 0 !important;\n  }\n\n  .mb-md-1 {\n    margin-bottom: 0.25rem !important;\n  }\n\n  .mb-md-2 {\n    margin-bottom: 0.5rem !important;\n  }\n\n  .mb-md-3 {\n    margin-bottom: 1rem !important;\n  }\n\n  .mb-md-4 {\n    margin-bottom: 1.5rem !important;\n  }\n\n  .mb-md-5 {\n    margin-bottom: 3rem !important;\n  }\n\n  .mb-md-auto {\n    margin-bottom: auto !important;\n  }\n\n  .ms-md-0 {\n    margin-right: 0 !important;\n  }\n\n  .ms-md-1 {\n    margin-right: 0.25rem !important;\n  }\n\n  .ms-md-2 {\n    margin-right: 0.5rem !important;\n  }\n\n  .ms-md-3 {\n    margin-right: 1rem !important;\n  }\n\n  .ms-md-4 {\n    margin-right: 1.5rem !important;\n  }\n\n  .ms-md-5 {\n    margin-right: 3rem !important;\n  }\n\n  .ms-md-auto {\n    margin-right: auto !important;\n  }\n\n  .p-md-0 {\n    padding: 0 !important;\n  }\n\n  .p-md-1 {\n    padding: 0.25rem !important;\n  }\n\n  .p-md-2 {\n    padding: 0.5rem !important;\n  }\n\n  .p-md-3 {\n    padding: 1rem !important;\n  }\n\n  .p-md-4 {\n    padding: 1.5rem !important;\n  }\n\n  .p-md-5 {\n    padding: 3rem !important;\n  }\n\n  .px-md-0 {\n    padding-left: 0 !important;\n    padding-right: 0 !important;\n  }\n\n  .px-md-1 {\n    padding-left: 0.25rem !important;\n    padding-right: 0.25rem !important;\n  }\n\n  .px-md-2 {\n    padding-left: 0.5rem !important;\n    padding-right: 0.5rem !important;\n  }\n\n  .px-md-3 {\n    padding-left: 1rem !important;\n    padding-right: 1rem !important;\n  }\n\n  .px-md-4 {\n    padding-left: 1.5rem !important;\n    padding-right: 1.5rem !important;\n  }\n\n  .px-md-5 {\n    padding-left: 3rem !important;\n    padding-right: 3rem !important;\n  }\n\n  .py-md-0 {\n    padding-top: 0 !important;\n    padding-bottom: 0 !important;\n  }\n\n  .py-md-1 {\n    padding-top: 0.25rem !important;\n    padding-bottom: 0.25rem !important;\n  }\n\n  .py-md-2 {\n    padding-top: 0.5rem !important;\n    padding-bottom: 0.5rem !important;\n  }\n\n  .py-md-3 {\n    padding-top: 1rem !important;\n    padding-bottom: 1rem !important;\n  }\n\n  .py-md-4 {\n    padding-top: 1.5rem !important;\n    padding-bottom: 1.5rem !important;\n  }\n\n  .py-md-5 {\n    padding-top: 3rem !important;\n    padding-bottom: 3rem !important;\n  }\n\n  .pt-md-0 {\n    padding-top: 0 !important;\n  }\n\n  .pt-md-1 {\n    padding-top: 0.25rem !important;\n  }\n\n  .pt-md-2 {\n    padding-top: 0.5rem !important;\n  }\n\n  .pt-md-3 {\n    padding-top: 1rem !important;\n  }\n\n  .pt-md-4 {\n    padding-top: 1.5rem !important;\n  }\n\n  .pt-md-5 {\n    padding-top: 3rem !important;\n  }\n\n  .pe-md-0 {\n    padding-left: 0 !important;\n  }\n\n  .pe-md-1 {\n    padding-left: 0.25rem !important;\n  }\n\n  .pe-md-2 {\n    padding-left: 0.5rem !important;\n  }\n\n  .pe-md-3 {\n    padding-left: 1rem !important;\n  }\n\n  .pe-md-4 {\n    padding-left: 1.5rem !important;\n  }\n\n  .pe-md-5 {\n    padding-left: 3rem !important;\n  }\n\n  .pb-md-0 {\n    padding-bottom: 0 !important;\n  }\n\n  .pb-md-1 {\n    padding-bottom: 0.25rem !important;\n  }\n\n  .pb-md-2 {\n    padding-bottom: 0.5rem !important;\n  }\n\n  .pb-md-3 {\n    padding-bottom: 1rem !important;\n  }\n\n  .pb-md-4 {\n    padding-bottom: 1.5rem !important;\n  }\n\n  .pb-md-5 {\n    padding-bottom: 3rem !important;\n  }\n\n  .ps-md-0 {\n    padding-right: 0 !important;\n  }\n\n  .ps-md-1 {\n    padding-right: 0.25rem !important;\n  }\n\n  .ps-md-2 {\n    padding-right: 0.5rem !important;\n  }\n\n  .ps-md-3 {\n    padding-right: 1rem !important;\n  }\n\n  .ps-md-4 {\n    padding-right: 1.5rem !important;\n  }\n\n  .ps-md-5 {\n    padding-right: 3rem !important;\n  }\n\n  .text-md-start {\n    text-align: right !important;\n  }\n\n  .text-md-end {\n    text-align: left !important;\n  }\n\n  .text-md-center {\n    text-align: center !important;\n  }\n}\n@media (min-width: 992px) {\n  .float-lg-start {\n    float: right !important;\n  }\n\n  .float-lg-end {\n    float: left !important;\n  }\n\n  .float-lg-none {\n    float: none !important;\n  }\n\n  .d-lg-inline {\n    display: inline !important;\n  }\n\n  .d-lg-inline-block {\n    display: inline-block !important;\n  }\n\n  .d-lg-block {\n    display: block !important;\n  }\n\n  .d-lg-grid {\n    display: grid !important;\n  }\n\n  .d-lg-table {\n    display: table !important;\n  }\n\n  .d-lg-table-row {\n    display: table-row !important;\n  }\n\n  .d-lg-table-cell {\n    display: table-cell !important;\n  }\n\n  .d-lg-flex {\n    display: flex !important;\n  }\n\n  .d-lg-inline-flex {\n    display: inline-flex !important;\n  }\n\n  .d-lg-none {\n    display: none !important;\n  }\n\n  .flex-lg-fill {\n    flex: 1 1 auto !important;\n  }\n\n  .flex-lg-row {\n    flex-direction: row !important;\n  }\n\n  .flex-lg-column {\n    flex-direction: column !important;\n  }\n\n  .flex-lg-row-reverse {\n    flex-direction: row-reverse !important;\n  }\n\n  .flex-lg-column-reverse {\n    flex-direction: column-reverse !important;\n  }\n\n  .flex-lg-grow-0 {\n    flex-grow: 0 !important;\n  }\n\n  .flex-lg-grow-1 {\n    flex-grow: 1 !important;\n  }\n\n  .flex-lg-shrink-0 {\n    flex-shrink: 0 !important;\n  }\n\n  .flex-lg-shrink-1 {\n    flex-shrink: 1 !important;\n  }\n\n  .flex-lg-wrap {\n    flex-wrap: wrap !important;\n  }\n\n  .flex-lg-nowrap {\n    flex-wrap: nowrap !important;\n  }\n\n  .flex-lg-wrap-reverse {\n    flex-wrap: wrap-reverse !important;\n  }\n\n  .gap-lg-0 {\n    gap: 0 !important;\n  }\n\n  .gap-lg-1 {\n    gap: 0.25rem !important;\n  }\n\n  .gap-lg-2 {\n    gap: 0.5rem !important;\n  }\n\n  .gap-lg-3 {\n    gap: 1rem !important;\n  }\n\n  .gap-lg-4 {\n    gap: 1.5rem !important;\n  }\n\n  .gap-lg-5 {\n    gap: 3rem !important;\n  }\n\n  .justify-content-lg-start {\n    justify-content: flex-start !important;\n  }\n\n  .justify-content-lg-end {\n    justify-content: flex-end !important;\n  }\n\n  .justify-content-lg-center {\n    justify-content: center !important;\n  }\n\n  .justify-content-lg-between {\n    justify-content: space-between !important;\n  }\n\n  .justify-content-lg-around {\n    justify-content: space-around !important;\n  }\n\n  .justify-content-lg-evenly {\n    justify-content: space-evenly !important;\n  }\n\n  .align-items-lg-start {\n    align-items: flex-start !important;\n  }\n\n  .align-items-lg-end {\n    align-items: flex-end !important;\n  }\n\n  .align-items-lg-center {\n    align-items: center !important;\n  }\n\n  .align-items-lg-baseline {\n    align-items: baseline !important;\n  }\n\n  .align-items-lg-stretch {\n    align-items: stretch !important;\n  }\n\n  .align-content-lg-start {\n    align-content: flex-start !important;\n  }\n\n  .align-content-lg-end {\n    align-content: flex-end !important;\n  }\n\n  .align-content-lg-center {\n    align-content: center !important;\n  }\n\n  .align-content-lg-between {\n    align-content: space-between !important;\n  }\n\n  .align-content-lg-around {\n    align-content: space-around !important;\n  }\n\n  .align-content-lg-stretch {\n    align-content: stretch !important;\n  }\n\n  .align-self-lg-auto {\n    align-self: auto !important;\n  }\n\n  .align-self-lg-start {\n    align-self: flex-start !important;\n  }\n\n  .align-self-lg-end {\n    align-self: flex-end !important;\n  }\n\n  .align-self-lg-center {\n    align-self: center !important;\n  }\n\n  .align-self-lg-baseline {\n    align-self: baseline !important;\n  }\n\n  .align-self-lg-stretch {\n    align-self: stretch !important;\n  }\n\n  .order-lg-first {\n    order: -1 !important;\n  }\n\n  .order-lg-0 {\n    order: 0 !important;\n  }\n\n  .order-lg-1 {\n    order: 1 !important;\n  }\n\n  .order-lg-2 {\n    order: 2 !important;\n  }\n\n  .order-lg-3 {\n    order: 3 !important;\n  }\n\n  .order-lg-4 {\n    order: 4 !important;\n  }\n\n  .order-lg-5 {\n    order: 5 !important;\n  }\n\n  .order-lg-last {\n    order: 6 !important;\n  }\n\n  .m-lg-0 {\n    margin: 0 !important;\n  }\n\n  .m-lg-1 {\n    margin: 0.25rem !important;\n  }\n\n  .m-lg-2 {\n    margin: 0.5rem !important;\n  }\n\n  .m-lg-3 {\n    margin: 1rem !important;\n  }\n\n  .m-lg-4 {\n    margin: 1.5rem !important;\n  }\n\n  .m-lg-5 {\n    margin: 3rem !important;\n  }\n\n  .m-lg-auto {\n    margin: auto !important;\n  }\n\n  .mx-lg-0 {\n    margin-left: 0 !important;\n    margin-right: 0 !important;\n  }\n\n  .mx-lg-1 {\n    margin-left: 0.25rem !important;\n    margin-right: 0.25rem !important;\n  }\n\n  .mx-lg-2 {\n    margin-left: 0.5rem !important;\n    margin-right: 0.5rem !important;\n  }\n\n  .mx-lg-3 {\n    margin-left: 1rem !important;\n    margin-right: 1rem !important;\n  }\n\n  .mx-lg-4 {\n    margin-left: 1.5rem !important;\n    margin-right: 1.5rem !important;\n  }\n\n  .mx-lg-5 {\n    margin-left: 3rem !important;\n    margin-right: 3rem !important;\n  }\n\n  .mx-lg-auto {\n    margin-left: auto !important;\n    margin-right: auto !important;\n  }\n\n  .my-lg-0 {\n    margin-top: 0 !important;\n    margin-bottom: 0 !important;\n  }\n\n  .my-lg-1 {\n    margin-top: 0.25rem !important;\n    margin-bottom: 0.25rem !important;\n  }\n\n  .my-lg-2 {\n    margin-top: 0.5rem !important;\n    margin-bottom: 0.5rem !important;\n  }\n\n  .my-lg-3 {\n    margin-top: 1rem !important;\n    margin-bottom: 1rem !important;\n  }\n\n  .my-lg-4 {\n    margin-top: 1.5rem !important;\n    margin-bottom: 1.5rem !important;\n  }\n\n  .my-lg-5 {\n    margin-top: 3rem !important;\n    margin-bottom: 3rem !important;\n  }\n\n  .my-lg-auto {\n    margin-top: auto !important;\n    margin-bottom: auto !important;\n  }\n\n  .mt-lg-0 {\n    margin-top: 0 !important;\n  }\n\n  .mt-lg-1 {\n    margin-top: 0.25rem !important;\n  }\n\n  .mt-lg-2 {\n    margin-top: 0.5rem !important;\n  }\n\n  .mt-lg-3 {\n    margin-top: 1rem !important;\n  }\n\n  .mt-lg-4 {\n    margin-top: 1.5rem !important;\n  }\n\n  .mt-lg-5 {\n    margin-top: 3rem !important;\n  }\n\n  .mt-lg-auto {\n    margin-top: auto !important;\n  }\n\n  .me-lg-0 {\n    margin-left: 0 !important;\n  }\n\n  .me-lg-1 {\n    margin-left: 0.25rem !important;\n  }\n\n  .me-lg-2 {\n    margin-left: 0.5rem !important;\n  }\n\n  .me-lg-3 {\n    margin-left: 1rem !important;\n  }\n\n  .me-lg-4 {\n    margin-left: 1.5rem !important;\n  }\n\n  .me-lg-5 {\n    margin-left: 3rem !important;\n  }\n\n  .me-lg-auto {\n    margin-left: auto !important;\n  }\n\n  .mb-lg-0 {\n    margin-bottom: 0 !important;\n  }\n\n  .mb-lg-1 {\n    margin-bottom: 0.25rem !important;\n  }\n\n  .mb-lg-2 {\n    margin-bottom: 0.5rem !important;\n  }\n\n  .mb-lg-3 {\n    margin-bottom: 1rem !important;\n  }\n\n  .mb-lg-4 {\n    margin-bottom: 1.5rem !important;\n  }\n\n  .mb-lg-5 {\n    margin-bottom: 3rem !important;\n  }\n\n  .mb-lg-auto {\n    margin-bottom: auto !important;\n  }\n\n  .ms-lg-0 {\n    margin-right: 0 !important;\n  }\n\n  .ms-lg-1 {\n    margin-right: 0.25rem !important;\n  }\n\n  .ms-lg-2 {\n    margin-right: 0.5rem !important;\n  }\n\n  .ms-lg-3 {\n    margin-right: 1rem !important;\n  }\n\n  .ms-lg-4 {\n    margin-right: 1.5rem !important;\n  }\n\n  .ms-lg-5 {\n    margin-right: 3rem !important;\n  }\n\n  .ms-lg-auto {\n    margin-right: auto !important;\n  }\n\n  .p-lg-0 {\n    padding: 0 !important;\n  }\n\n  .p-lg-1 {\n    padding: 0.25rem !important;\n  }\n\n  .p-lg-2 {\n    padding: 0.5rem !important;\n  }\n\n  .p-lg-3 {\n    padding: 1rem !important;\n  }\n\n  .p-lg-4 {\n    padding: 1.5rem !important;\n  }\n\n  .p-lg-5 {\n    padding: 3rem !important;\n  }\n\n  .px-lg-0 {\n    padding-left: 0 !important;\n    padding-right: 0 !important;\n  }\n\n  .px-lg-1 {\n    padding-left: 0.25rem !important;\n    padding-right: 0.25rem !important;\n  }\n\n  .px-lg-2 {\n    padding-left: 0.5rem !important;\n    padding-right: 0.5rem !important;\n  }\n\n  .px-lg-3 {\n    padding-left: 1rem !important;\n    padding-right: 1rem !important;\n  }\n\n  .px-lg-4 {\n    padding-left: 1.5rem !important;\n    padding-right: 1.5rem !important;\n  }\n\n  .px-lg-5 {\n    padding-left: 3rem !important;\n    padding-right: 3rem !important;\n  }\n\n  .py-lg-0 {\n    padding-top: 0 !important;\n    padding-bottom: 0 !important;\n  }\n\n  .py-lg-1 {\n    padding-top: 0.25rem !important;\n    padding-bottom: 0.25rem !important;\n  }\n\n  .py-lg-2 {\n    padding-top: 0.5rem !important;\n    padding-bottom: 0.5rem !important;\n  }\n\n  .py-lg-3 {\n    padding-top: 1rem !important;\n    padding-bottom: 1rem !important;\n  }\n\n  .py-lg-4 {\n    padding-top: 1.5rem !important;\n    padding-bottom: 1.5rem !important;\n  }\n\n  .py-lg-5 {\n    padding-top: 3rem !important;\n    padding-bottom: 3rem !important;\n  }\n\n  .pt-lg-0 {\n    padding-top: 0 !important;\n  }\n\n  .pt-lg-1 {\n    padding-top: 0.25rem !important;\n  }\n\n  .pt-lg-2 {\n    padding-top: 0.5rem !important;\n  }\n\n  .pt-lg-3 {\n    padding-top: 1rem !important;\n  }\n\n  .pt-lg-4 {\n    padding-top: 1.5rem !important;\n  }\n\n  .pt-lg-5 {\n    padding-top: 3rem !important;\n  }\n\n  .pe-lg-0 {\n    padding-left: 0 !important;\n  }\n\n  .pe-lg-1 {\n    padding-left: 0.25rem !important;\n  }\n\n  .pe-lg-2 {\n    padding-left: 0.5rem !important;\n  }\n\n  .pe-lg-3 {\n    padding-left: 1rem !important;\n  }\n\n  .pe-lg-4 {\n    padding-left: 1.5rem !important;\n  }\n\n  .pe-lg-5 {\n    padding-left: 3rem !important;\n  }\n\n  .pb-lg-0 {\n    padding-bottom: 0 !important;\n  }\n\n  .pb-lg-1 {\n    padding-bottom: 0.25rem !important;\n  }\n\n  .pb-lg-2 {\n    padding-bottom: 0.5rem !important;\n  }\n\n  .pb-lg-3 {\n    padding-bottom: 1rem !important;\n  }\n\n  .pb-lg-4 {\n    padding-bottom: 1.5rem !important;\n  }\n\n  .pb-lg-5 {\n    padding-bottom: 3rem !important;\n  }\n\n  .ps-lg-0 {\n    padding-right: 0 !important;\n  }\n\n  .ps-lg-1 {\n    padding-right: 0.25rem !important;\n  }\n\n  .ps-lg-2 {\n    padding-right: 0.5rem !important;\n  }\n\n  .ps-lg-3 {\n    padding-right: 1rem !important;\n  }\n\n  .ps-lg-4 {\n    padding-right: 1.5rem !important;\n  }\n\n  .ps-lg-5 {\n    padding-right: 3rem !important;\n  }\n\n  .text-lg-start {\n    text-align: right !important;\n  }\n\n  .text-lg-end {\n    text-align: left !important;\n  }\n\n  .text-lg-center {\n    text-align: center !important;\n  }\n}\n@media (min-width: 1200px) {\n  .float-xl-start {\n    float: right !important;\n  }\n\n  .float-xl-end {\n    float: left !important;\n  }\n\n  .float-xl-none {\n    float: none !important;\n  }\n\n  .d-xl-inline {\n    display: inline !important;\n  }\n\n  .d-xl-inline-block {\n    display: inline-block !important;\n  }\n\n  .d-xl-block {\n    display: block !important;\n  }\n\n  .d-xl-grid {\n    display: grid !important;\n  }\n\n  .d-xl-table {\n    display: table !important;\n  }\n\n  .d-xl-table-row {\n    display: table-row !important;\n  }\n\n  .d-xl-table-cell {\n    display: table-cell !important;\n  }\n\n  .d-xl-flex {\n    display: flex !important;\n  }\n\n  .d-xl-inline-flex {\n    display: inline-flex !important;\n  }\n\n  .d-xl-none {\n    display: none !important;\n  }\n\n  .flex-xl-fill {\n    flex: 1 1 auto !important;\n  }\n\n  .flex-xl-row {\n    flex-direction: row !important;\n  }\n\n  .flex-xl-column {\n    flex-direction: column !important;\n  }\n\n  .flex-xl-row-reverse {\n    flex-direction: row-reverse !important;\n  }\n\n  .flex-xl-column-reverse {\n    flex-direction: column-reverse !important;\n  }\n\n  .flex-xl-grow-0 {\n    flex-grow: 0 !important;\n  }\n\n  .flex-xl-grow-1 {\n    flex-grow: 1 !important;\n  }\n\n  .flex-xl-shrink-0 {\n    flex-shrink: 0 !important;\n  }\n\n  .flex-xl-shrink-1 {\n    flex-shrink: 1 !important;\n  }\n\n  .flex-xl-wrap {\n    flex-wrap: wrap !important;\n  }\n\n  .flex-xl-nowrap {\n    flex-wrap: nowrap !important;\n  }\n\n  .flex-xl-wrap-reverse {\n    flex-wrap: wrap-reverse !important;\n  }\n\n  .gap-xl-0 {\n    gap: 0 !important;\n  }\n\n  .gap-xl-1 {\n    gap: 0.25rem !important;\n  }\n\n  .gap-xl-2 {\n    gap: 0.5rem !important;\n  }\n\n  .gap-xl-3 {\n    gap: 1rem !important;\n  }\n\n  .gap-xl-4 {\n    gap: 1.5rem !important;\n  }\n\n  .gap-xl-5 {\n    gap: 3rem !important;\n  }\n\n  .justify-content-xl-start {\n    justify-content: flex-start !important;\n  }\n\n  .justify-content-xl-end {\n    justify-content: flex-end !important;\n  }\n\n  .justify-content-xl-center {\n    justify-content: center !important;\n  }\n\n  .justify-content-xl-between {\n    justify-content: space-between !important;\n  }\n\n  .justify-content-xl-around {\n    justify-content: space-around !important;\n  }\n\n  .justify-content-xl-evenly {\n    justify-content: space-evenly !important;\n  }\n\n  .align-items-xl-start {\n    align-items: flex-start !important;\n  }\n\n  .align-items-xl-end {\n    align-items: flex-end !important;\n  }\n\n  .align-items-xl-center {\n    align-items: center !important;\n  }\n\n  .align-items-xl-baseline {\n    align-items: baseline !important;\n  }\n\n  .align-items-xl-stretch {\n    align-items: stretch !important;\n  }\n\n  .align-content-xl-start {\n    align-content: flex-start !important;\n  }\n\n  .align-content-xl-end {\n    align-content: flex-end !important;\n  }\n\n  .align-content-xl-center {\n    align-content: center !important;\n  }\n\n  .align-content-xl-between {\n    align-content: space-between !important;\n  }\n\n  .align-content-xl-around {\n    align-content: space-around !important;\n  }\n\n  .align-content-xl-stretch {\n    align-content: stretch !important;\n  }\n\n  .align-self-xl-auto {\n    align-self: auto !important;\n  }\n\n  .align-self-xl-start {\n    align-self: flex-start !important;\n  }\n\n  .align-self-xl-end {\n    align-self: flex-end !important;\n  }\n\n  .align-self-xl-center {\n    align-self: center !important;\n  }\n\n  .align-self-xl-baseline {\n    align-self: baseline !important;\n  }\n\n  .align-self-xl-stretch {\n    align-self: stretch !important;\n  }\n\n  .order-xl-first {\n    order: -1 !important;\n  }\n\n  .order-xl-0 {\n    order: 0 !important;\n  }\n\n  .order-xl-1 {\n    order: 1 !important;\n  }\n\n  .order-xl-2 {\n    order: 2 !important;\n  }\n\n  .order-xl-3 {\n    order: 3 !important;\n  }\n\n  .order-xl-4 {\n    order: 4 !important;\n  }\n\n  .order-xl-5 {\n    order: 5 !important;\n  }\n\n  .order-xl-last {\n    order: 6 !important;\n  }\n\n  .m-xl-0 {\n    margin: 0 !important;\n  }\n\n  .m-xl-1 {\n    margin: 0.25rem !important;\n  }\n\n  .m-xl-2 {\n    margin: 0.5rem !important;\n  }\n\n  .m-xl-3 {\n    margin: 1rem !important;\n  }\n\n  .m-xl-4 {\n    margin: 1.5rem !important;\n  }\n\n  .m-xl-5 {\n    margin: 3rem !important;\n  }\n\n  .m-xl-auto {\n    margin: auto !important;\n  }\n\n  .mx-xl-0 {\n    margin-left: 0 !important;\n    margin-right: 0 !important;\n  }\n\n  .mx-xl-1 {\n    margin-left: 0.25rem !important;\n    margin-right: 0.25rem !important;\n  }\n\n  .mx-xl-2 {\n    margin-left: 0.5rem !important;\n    margin-right: 0.5rem !important;\n  }\n\n  .mx-xl-3 {\n    margin-left: 1rem !important;\n    margin-right: 1rem !important;\n  }\n\n  .mx-xl-4 {\n    margin-left: 1.5rem !important;\n    margin-right: 1.5rem !important;\n  }\n\n  .mx-xl-5 {\n    margin-left: 3rem !important;\n    margin-right: 3rem !important;\n  }\n\n  .mx-xl-auto {\n    margin-left: auto !important;\n    margin-right: auto !important;\n  }\n\n  .my-xl-0 {\n    margin-top: 0 !important;\n    margin-bottom: 0 !important;\n  }\n\n  .my-xl-1 {\n    margin-top: 0.25rem !important;\n    margin-bottom: 0.25rem !important;\n  }\n\n  .my-xl-2 {\n    margin-top: 0.5rem !important;\n    margin-bottom: 0.5rem !important;\n  }\n\n  .my-xl-3 {\n    margin-top: 1rem !important;\n    margin-bottom: 1rem !important;\n  }\n\n  .my-xl-4 {\n    margin-top: 1.5rem !important;\n    margin-bottom: 1.5rem !important;\n  }\n\n  .my-xl-5 {\n    margin-top: 3rem !important;\n    margin-bottom: 3rem !important;\n  }\n\n  .my-xl-auto {\n    margin-top: auto !important;\n    margin-bottom: auto !important;\n  }\n\n  .mt-xl-0 {\n    margin-top: 0 !important;\n  }\n\n  .mt-xl-1 {\n    margin-top: 0.25rem !important;\n  }\n\n  .mt-xl-2 {\n    margin-top: 0.5rem !important;\n  }\n\n  .mt-xl-3 {\n    margin-top: 1rem !important;\n  }\n\n  .mt-xl-4 {\n    margin-top: 1.5rem !important;\n  }\n\n  .mt-xl-5 {\n    margin-top: 3rem !important;\n  }\n\n  .mt-xl-auto {\n    margin-top: auto !important;\n  }\n\n  .me-xl-0 {\n    margin-left: 0 !important;\n  }\n\n  .me-xl-1 {\n    margin-left: 0.25rem !important;\n  }\n\n  .me-xl-2 {\n    margin-left: 0.5rem !important;\n  }\n\n  .me-xl-3 {\n    margin-left: 1rem !important;\n  }\n\n  .me-xl-4 {\n    margin-left: 1.5rem !important;\n  }\n\n  .me-xl-5 {\n    margin-left: 3rem !important;\n  }\n\n  .me-xl-auto {\n    margin-left: auto !important;\n  }\n\n  .mb-xl-0 {\n    margin-bottom: 0 !important;\n  }\n\n  .mb-xl-1 {\n    margin-bottom: 0.25rem !important;\n  }\n\n  .mb-xl-2 {\n    margin-bottom: 0.5rem !important;\n  }\n\n  .mb-xl-3 {\n    margin-bottom: 1rem !important;\n  }\n\n  .mb-xl-4 {\n    margin-bottom: 1.5rem !important;\n  }\n\n  .mb-xl-5 {\n    margin-bottom: 3rem !important;\n  }\n\n  .mb-xl-auto {\n    margin-bottom: auto !important;\n  }\n\n  .ms-xl-0 {\n    margin-right: 0 !important;\n  }\n\n  .ms-xl-1 {\n    margin-right: 0.25rem !important;\n  }\n\n  .ms-xl-2 {\n    margin-right: 0.5rem !important;\n  }\n\n  .ms-xl-3 {\n    margin-right: 1rem !important;\n  }\n\n  .ms-xl-4 {\n    margin-right: 1.5rem !important;\n  }\n\n  .ms-xl-5 {\n    margin-right: 3rem !important;\n  }\n\n  .ms-xl-auto {\n    margin-right: auto !important;\n  }\n\n  .p-xl-0 {\n    padding: 0 !important;\n  }\n\n  .p-xl-1 {\n    padding: 0.25rem !important;\n  }\n\n  .p-xl-2 {\n    padding: 0.5rem !important;\n  }\n\n  .p-xl-3 {\n    padding: 1rem !important;\n  }\n\n  .p-xl-4 {\n    padding: 1.5rem !important;\n  }\n\n  .p-xl-5 {\n    padding: 3rem !important;\n  }\n\n  .px-xl-0 {\n    padding-left: 0 !important;\n    padding-right: 0 !important;\n  }\n\n  .px-xl-1 {\n    padding-left: 0.25rem !important;\n    padding-right: 0.25rem !important;\n  }\n\n  .px-xl-2 {\n    padding-left: 0.5rem !important;\n    padding-right: 0.5rem !important;\n  }\n\n  .px-xl-3 {\n    padding-left: 1rem !important;\n    padding-right: 1rem !important;\n  }\n\n  .px-xl-4 {\n    padding-left: 1.5rem !important;\n    padding-right: 1.5rem !important;\n  }\n\n  .px-xl-5 {\n    padding-left: 3rem !important;\n    padding-right: 3rem !important;\n  }\n\n  .py-xl-0 {\n    padding-top: 0 !important;\n    padding-bottom: 0 !important;\n  }\n\n  .py-xl-1 {\n    padding-top: 0.25rem !important;\n    padding-bottom: 0.25rem !important;\n  }\n\n  .py-xl-2 {\n    padding-top: 0.5rem !important;\n    padding-bottom: 0.5rem !important;\n  }\n\n  .py-xl-3 {\n    padding-top: 1rem !important;\n    padding-bottom: 1rem !important;\n  }\n\n  .py-xl-4 {\n    padding-top: 1.5rem !important;\n    padding-bottom: 1.5rem !important;\n  }\n\n  .py-xl-5 {\n    padding-top: 3rem !important;\n    padding-bottom: 3rem !important;\n  }\n\n  .pt-xl-0 {\n    padding-top: 0 !important;\n  }\n\n  .pt-xl-1 {\n    padding-top: 0.25rem !important;\n  }\n\n  .pt-xl-2 {\n    padding-top: 0.5rem !important;\n  }\n\n  .pt-xl-3 {\n    padding-top: 1rem !important;\n  }\n\n  .pt-xl-4 {\n    padding-top: 1.5rem !important;\n  }\n\n  .pt-xl-5 {\n    padding-top: 3rem !important;\n  }\n\n  .pe-xl-0 {\n    padding-left: 0 !important;\n  }\n\n  .pe-xl-1 {\n    padding-left: 0.25rem !important;\n  }\n\n  .pe-xl-2 {\n    padding-left: 0.5rem !important;\n  }\n\n  .pe-xl-3 {\n    padding-left: 1rem !important;\n  }\n\n  .pe-xl-4 {\n    padding-left: 1.5rem !important;\n  }\n\n  .pe-xl-5 {\n    padding-left: 3rem !important;\n  }\n\n  .pb-xl-0 {\n    padding-bottom: 0 !important;\n  }\n\n  .pb-xl-1 {\n    padding-bottom: 0.25rem !important;\n  }\n\n  .pb-xl-2 {\n    padding-bottom: 0.5rem !important;\n  }\n\n  .pb-xl-3 {\n    padding-bottom: 1rem !important;\n  }\n\n  .pb-xl-4 {\n    padding-bottom: 1.5rem !important;\n  }\n\n  .pb-xl-5 {\n    padding-bottom: 3rem !important;\n  }\n\n  .ps-xl-0 {\n    padding-right: 0 !important;\n  }\n\n  .ps-xl-1 {\n    padding-right: 0.25rem !important;\n  }\n\n  .ps-xl-2 {\n    padding-right: 0.5rem !important;\n  }\n\n  .ps-xl-3 {\n    padding-right: 1rem !important;\n  }\n\n  .ps-xl-4 {\n    padding-right: 1.5rem !important;\n  }\n\n  .ps-xl-5 {\n    padding-right: 3rem !important;\n  }\n\n  .text-xl-start {\n    text-align: right !important;\n  }\n\n  .text-xl-end {\n    text-align: left !important;\n  }\n\n  .text-xl-center {\n    text-align: center !important;\n  }\n}\n@media (min-width: 1400px) {\n  .float-xxl-start {\n    float: right !important;\n  }\n\n  .float-xxl-end {\n    float: left !important;\n  }\n\n  .float-xxl-none {\n    float: none !important;\n  }\n\n  .d-xxl-inline {\n    display: inline !important;\n  }\n\n  .d-xxl-inline-block {\n    display: inline-block !important;\n  }\n\n  .d-xxl-block {\n    display: block !important;\n  }\n\n  .d-xxl-grid {\n    display: grid !important;\n  }\n\n  .d-xxl-table {\n    display: table !important;\n  }\n\n  .d-xxl-table-row {\n    display: table-row !important;\n  }\n\n  .d-xxl-table-cell {\n    display: table-cell !important;\n  }\n\n  .d-xxl-flex {\n    display: flex !important;\n  }\n\n  .d-xxl-inline-flex {\n    display: inline-flex !important;\n  }\n\n  .d-xxl-none {\n    display: none !important;\n  }\n\n  .flex-xxl-fill {\n    flex: 1 1 auto !important;\n  }\n\n  .flex-xxl-row {\n    flex-direction: row !important;\n  }\n\n  .flex-xxl-column {\n    flex-direction: column !important;\n  }\n\n  .flex-xxl-row-reverse {\n    flex-direction: row-reverse !important;\n  }\n\n  .flex-xxl-column-reverse {\n    flex-direction: column-reverse !important;\n  }\n\n  .flex-xxl-grow-0 {\n    flex-grow: 0 !important;\n  }\n\n  .flex-xxl-grow-1 {\n    flex-grow: 1 !important;\n  }\n\n  .flex-xxl-shrink-0 {\n    flex-shrink: 0 !important;\n  }\n\n  .flex-xxl-shrink-1 {\n    flex-shrink: 1 !important;\n  }\n\n  .flex-xxl-wrap {\n    flex-wrap: wrap !important;\n  }\n\n  .flex-xxl-nowrap {\n    flex-wrap: nowrap !important;\n  }\n\n  .flex-xxl-wrap-reverse {\n    flex-wrap: wrap-reverse !important;\n  }\n\n  .gap-xxl-0 {\n    gap: 0 !important;\n  }\n\n  .gap-xxl-1 {\n    gap: 0.25rem !important;\n  }\n\n  .gap-xxl-2 {\n    gap: 0.5rem !important;\n  }\n\n  .gap-xxl-3 {\n    gap: 1rem !important;\n  }\n\n  .gap-xxl-4 {\n    gap: 1.5rem !important;\n  }\n\n  .gap-xxl-5 {\n    gap: 3rem !important;\n  }\n\n  .justify-content-xxl-start {\n    justify-content: flex-start !important;\n  }\n\n  .justify-content-xxl-end {\n    justify-content: flex-end !important;\n  }\n\n  .justify-content-xxl-center {\n    justify-content: center !important;\n  }\n\n  .justify-content-xxl-between {\n    justify-content: space-between !important;\n  }\n\n  .justify-content-xxl-around {\n    justify-content: space-around !important;\n  }\n\n  .justify-content-xxl-evenly {\n    justify-content: space-evenly !important;\n  }\n\n  .align-items-xxl-start {\n    align-items: flex-start !important;\n  }\n\n  .align-items-xxl-end {\n    align-items: flex-end !important;\n  }\n\n  .align-items-xxl-center {\n    align-items: center !important;\n  }\n\n  .align-items-xxl-baseline {\n    align-items: baseline !important;\n  }\n\n  .align-items-xxl-stretch {\n    align-items: stretch !important;\n  }\n\n  .align-content-xxl-start {\n    align-content: flex-start !important;\n  }\n\n  .align-content-xxl-end {\n    align-content: flex-end !important;\n  }\n\n  .align-content-xxl-center {\n    align-content: center !important;\n  }\n\n  .align-content-xxl-between {\n    align-content: space-between !important;\n  }\n\n  .align-content-xxl-around {\n    align-content: space-around !important;\n  }\n\n  .align-content-xxl-stretch {\n    align-content: stretch !important;\n  }\n\n  .align-self-xxl-auto {\n    align-self: auto !important;\n  }\n\n  .align-self-xxl-start {\n    align-self: flex-start !important;\n  }\n\n  .align-self-xxl-end {\n    align-self: flex-end !important;\n  }\n\n  .align-self-xxl-center {\n    align-self: center !important;\n  }\n\n  .align-self-xxl-baseline {\n    align-self: baseline !important;\n  }\n\n  .align-self-xxl-stretch {\n    align-self: stretch !important;\n  }\n\n  .order-xxl-first {\n    order: -1 !important;\n  }\n\n  .order-xxl-0 {\n    order: 0 !important;\n  }\n\n  .order-xxl-1 {\n    order: 1 !important;\n  }\n\n  .order-xxl-2 {\n    order: 2 !important;\n  }\n\n  .order-xxl-3 {\n    order: 3 !important;\n  }\n\n  .order-xxl-4 {\n    order: 4 !important;\n  }\n\n  .order-xxl-5 {\n    order: 5 !important;\n  }\n\n  .order-xxl-last {\n    order: 6 !important;\n  }\n\n  .m-xxl-0 {\n    margin: 0 !important;\n  }\n\n  .m-xxl-1 {\n    margin: 0.25rem !important;\n  }\n\n  .m-xxl-2 {\n    margin: 0.5rem !important;\n  }\n\n  .m-xxl-3 {\n    margin: 1rem !important;\n  }\n\n  .m-xxl-4 {\n    margin: 1.5rem !important;\n  }\n\n  .m-xxl-5 {\n    margin: 3rem !important;\n  }\n\n  .m-xxl-auto {\n    margin: auto !important;\n  }\n\n  .mx-xxl-0 {\n    margin-left: 0 !important;\n    margin-right: 0 !important;\n  }\n\n  .mx-xxl-1 {\n    margin-left: 0.25rem !important;\n    margin-right: 0.25rem !important;\n  }\n\n  .mx-xxl-2 {\n    margin-left: 0.5rem !important;\n    margin-right: 0.5rem !important;\n  }\n\n  .mx-xxl-3 {\n    margin-left: 1rem !important;\n    margin-right: 1rem !important;\n  }\n\n  .mx-xxl-4 {\n    margin-left: 1.5rem !important;\n    margin-right: 1.5rem !important;\n  }\n\n  .mx-xxl-5 {\n    margin-left: 3rem !important;\n    margin-right: 3rem !important;\n  }\n\n  .mx-xxl-auto {\n    margin-left: auto !important;\n    margin-right: auto !important;\n  }\n\n  .my-xxl-0 {\n    margin-top: 0 !important;\n    margin-bottom: 0 !important;\n  }\n\n  .my-xxl-1 {\n    margin-top: 0.25rem !important;\n    margin-bottom: 0.25rem !important;\n  }\n\n  .my-xxl-2 {\n    margin-top: 0.5rem !important;\n    margin-bottom: 0.5rem !important;\n  }\n\n  .my-xxl-3 {\n    margin-top: 1rem !important;\n    margin-bottom: 1rem !important;\n  }\n\n  .my-xxl-4 {\n    margin-top: 1.5rem !important;\n    margin-bottom: 1.5rem !important;\n  }\n\n  .my-xxl-5 {\n    margin-top: 3rem !important;\n    margin-bottom: 3rem !important;\n  }\n\n  .my-xxl-auto {\n    margin-top: auto !important;\n    margin-bottom: auto !important;\n  }\n\n  .mt-xxl-0 {\n    margin-top: 0 !important;\n  }\n\n  .mt-xxl-1 {\n    margin-top: 0.25rem !important;\n  }\n\n  .mt-xxl-2 {\n    margin-top: 0.5rem !important;\n  }\n\n  .mt-xxl-3 {\n    margin-top: 1rem !important;\n  }\n\n  .mt-xxl-4 {\n    margin-top: 1.5rem !important;\n  }\n\n  .mt-xxl-5 {\n    margin-top: 3rem !important;\n  }\n\n  .mt-xxl-auto {\n    margin-top: auto !important;\n  }\n\n  .me-xxl-0 {\n    margin-left: 0 !important;\n  }\n\n  .me-xxl-1 {\n    margin-left: 0.25rem !important;\n  }\n\n  .me-xxl-2 {\n    margin-left: 0.5rem !important;\n  }\n\n  .me-xxl-3 {\n    margin-left: 1rem !important;\n  }\n\n  .me-xxl-4 {\n    margin-left: 1.5rem !important;\n  }\n\n  .me-xxl-5 {\n    margin-left: 3rem !important;\n  }\n\n  .me-xxl-auto {\n    margin-left: auto !important;\n  }\n\n  .mb-xxl-0 {\n    margin-bottom: 0 !important;\n  }\n\n  .mb-xxl-1 {\n    margin-bottom: 0.25rem !important;\n  }\n\n  .mb-xxl-2 {\n    margin-bottom: 0.5rem !important;\n  }\n\n  .mb-xxl-3 {\n    margin-bottom: 1rem !important;\n  }\n\n  .mb-xxl-4 {\n    margin-bottom: 1.5rem !important;\n  }\n\n  .mb-xxl-5 {\n    margin-bottom: 3rem !important;\n  }\n\n  .mb-xxl-auto {\n    margin-bottom: auto !important;\n  }\n\n  .ms-xxl-0 {\n    margin-right: 0 !important;\n  }\n\n  .ms-xxl-1 {\n    margin-right: 0.25rem !important;\n  }\n\n  .ms-xxl-2 {\n    margin-right: 0.5rem !important;\n  }\n\n  .ms-xxl-3 {\n    margin-right: 1rem !important;\n  }\n\n  .ms-xxl-4 {\n    margin-right: 1.5rem !important;\n  }\n\n  .ms-xxl-5 {\n    margin-right: 3rem !important;\n  }\n\n  .ms-xxl-auto {\n    margin-right: auto !important;\n  }\n\n  .p-xxl-0 {\n    padding: 0 !important;\n  }\n\n  .p-xxl-1 {\n    padding: 0.25rem !important;\n  }\n\n  .p-xxl-2 {\n    padding: 0.5rem !important;\n  }\n\n  .p-xxl-3 {\n    padding: 1rem !important;\n  }\n\n  .p-xxl-4 {\n    padding: 1.5rem !important;\n  }\n\n  .p-xxl-5 {\n    padding: 3rem !important;\n  }\n\n  .px-xxl-0 {\n    padding-left: 0 !important;\n    padding-right: 0 !important;\n  }\n\n  .px-xxl-1 {\n    padding-left: 0.25rem !important;\n    padding-right: 0.25rem !important;\n  }\n\n  .px-xxl-2 {\n    padding-left: 0.5rem !important;\n    padding-right: 0.5rem !important;\n  }\n\n  .px-xxl-3 {\n    padding-left: 1rem !important;\n    padding-right: 1rem !important;\n  }\n\n  .px-xxl-4 {\n    padding-left: 1.5rem !important;\n    padding-right: 1.5rem !important;\n  }\n\n  .px-xxl-5 {\n    padding-left: 3rem !important;\n    padding-right: 3rem !important;\n  }\n\n  .py-xxl-0 {\n    padding-top: 0 !important;\n    padding-bottom: 0 !important;\n  }\n\n  .py-xxl-1 {\n    padding-top: 0.25rem !important;\n    padding-bottom: 0.25rem !important;\n  }\n\n  .py-xxl-2 {\n    padding-top: 0.5rem !important;\n    padding-bottom: 0.5rem !important;\n  }\n\n  .py-xxl-3 {\n    padding-top: 1rem !important;\n    padding-bottom: 1rem !important;\n  }\n\n  .py-xxl-4 {\n    padding-top: 1.5rem !important;\n    padding-bottom: 1.5rem !important;\n  }\n\n  .py-xxl-5 {\n    padding-top: 3rem !important;\n    padding-bottom: 3rem !important;\n  }\n\n  .pt-xxl-0 {\n    padding-top: 0 !important;\n  }\n\n  .pt-xxl-1 {\n    padding-top: 0.25rem !important;\n  }\n\n  .pt-xxl-2 {\n    padding-top: 0.5rem !important;\n  }\n\n  .pt-xxl-3 {\n    padding-top: 1rem !important;\n  }\n\n  .pt-xxl-4 {\n    padding-top: 1.5rem !important;\n  }\n\n  .pt-xxl-5 {\n    padding-top: 3rem !important;\n  }\n\n  .pe-xxl-0 {\n    padding-left: 0 !important;\n  }\n\n  .pe-xxl-1 {\n    padding-left: 0.25rem !important;\n  }\n\n  .pe-xxl-2 {\n    padding-left: 0.5rem !important;\n  }\n\n  .pe-xxl-3 {\n    padding-left: 1rem !important;\n  }\n\n  .pe-xxl-4 {\n    padding-left: 1.5rem !important;\n  }\n\n  .pe-xxl-5 {\n    padding-left: 3rem !important;\n  }\n\n  .pb-xxl-0 {\n    padding-bottom: 0 !important;\n  }\n\n  .pb-xxl-1 {\n    padding-bottom: 0.25rem !important;\n  }\n\n  .pb-xxl-2 {\n    padding-bottom: 0.5rem !important;\n  }\n\n  .pb-xxl-3 {\n    padding-bottom: 1rem !important;\n  }\n\n  .pb-xxl-4 {\n    padding-bottom: 1.5rem !important;\n  }\n\n  .pb-xxl-5 {\n    padding-bottom: 3rem !important;\n  }\n\n  .ps-xxl-0 {\n    padding-right: 0 !important;\n  }\n\n  .ps-xxl-1 {\n    padding-right: 0.25rem !important;\n  }\n\n  .ps-xxl-2 {\n    padding-right: 0.5rem !important;\n  }\n\n  .ps-xxl-3 {\n    padding-right: 1rem !important;\n  }\n\n  .ps-xxl-4 {\n    padding-right: 1.5rem !important;\n  }\n\n  .ps-xxl-5 {\n    padding-right: 3rem !important;\n  }\n\n  .text-xxl-start {\n    text-align: right !important;\n  }\n\n  .text-xxl-end {\n    text-align: left !important;\n  }\n\n  .text-xxl-center {\n    text-align: center !important;\n  }\n}\n@media (min-width: 1200px) {\n  .fs-1 {\n    font-size: 2.5rem !important;\n  }\n\n  .fs-2 {\n    font-size: 2rem !important;\n  }\n\n  .fs-3 {\n    font-size: 1.75rem !important;\n  }\n\n  .fs-4 {\n    font-size: 1.5rem !important;\n  }\n}\n@media print {\n  .d-print-inline {\n    display: inline !important;\n  }\n\n  .d-print-inline-block {\n    display: inline-block !important;\n  }\n\n  .d-print-block {\n    display: block !important;\n  }\n\n  .d-print-grid {\n    display: grid !important;\n  }\n\n  .d-print-table {\n    display: table !important;\n  }\n\n  .d-print-table-row {\n    display: table-row !important;\n  }\n\n  .d-print-table-cell {\n    display: table-cell !important;\n  }\n\n  .d-print-flex {\n    display: flex !important;\n  }\n\n  .d-print-inline-flex {\n    display: inline-flex !important;\n  }\n\n  .d-print-none {\n    display: none !important;\n  }\n}\n/*# sourceMappingURL=bootstrap.rtl.css.map */"
  },
  {
    "path": "application/public/bootstrap/js/bootstrap.bundle.js",
    "content": "/*!\n  * Bootstrap v5.1.3 (https://getbootstrap.com/)\n  * Copyright 2011-2021 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)\n  * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n  */\n(function (global, factory) {\n  typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n  typeof define === 'function' && define.amd ? define(factory) :\n  (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.bootstrap = factory());\n})(this, (function () { 'use strict';\n\n  /**\n   * --------------------------------------------------------------------------\n   * Bootstrap (v5.1.3): util/index.js\n   * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n   * --------------------------------------------------------------------------\n   */\n  const MAX_UID = 1000000;\n  const MILLISECONDS_MULTIPLIER = 1000;\n  const TRANSITION_END = 'transitionend'; // Shoutout AngusCroll (https://goo.gl/pxwQGp)\n\n  const toType = obj => {\n    if (obj === null || obj === undefined) {\n      return `${obj}`;\n    }\n\n    return {}.toString.call(obj).match(/\\s([a-z]+)/i)[1].toLowerCase();\n  };\n  /**\n   * --------------------------------------------------------------------------\n   * Public Util Api\n   * --------------------------------------------------------------------------\n   */\n\n\n  const getUID = prefix => {\n    do {\n      prefix += Math.floor(Math.random() * MAX_UID);\n    } while (document.getElementById(prefix));\n\n    return prefix;\n  };\n\n  const getSelector = element => {\n    let selector = element.getAttribute('data-bs-target');\n\n    if (!selector || selector === '#') {\n      let hrefAttr = element.getAttribute('href'); // The only valid content that could double as a selector are IDs or classes,\n      // so everything starting with `#` or `.`. If a \"real\" URL is used as the selector,\n      // `document.querySelector` will rightfully complain it is invalid.\n      // See https://github.com/twbs/bootstrap/issues/32273\n\n      if (!hrefAttr || !hrefAttr.includes('#') && !hrefAttr.startsWith('.')) {\n        return null;\n      } // Just in case some CMS puts out a full URL with the anchor appended\n\n\n      if (hrefAttr.includes('#') && !hrefAttr.startsWith('#')) {\n        hrefAttr = `#${hrefAttr.split('#')[1]}`;\n      }\n\n      selector = hrefAttr && hrefAttr !== '#' ? hrefAttr.trim() : null;\n    }\n\n    return selector;\n  };\n\n  const getSelectorFromElement = element => {\n    const selector = getSelector(element);\n\n    if (selector) {\n      return document.querySelector(selector) ? selector : null;\n    }\n\n    return null;\n  };\n\n  const getElementFromSelector = element => {\n    const selector = getSelector(element);\n    return selector ? document.querySelector(selector) : null;\n  };\n\n  const getTransitionDurationFromElement = element => {\n    if (!element) {\n      return 0;\n    } // Get transition-duration of the element\n\n\n    let {\n      transitionDuration,\n      transitionDelay\n    } = window.getComputedStyle(element);\n    const floatTransitionDuration = Number.parseFloat(transitionDuration);\n    const floatTransitionDelay = Number.parseFloat(transitionDelay); // Return 0 if element or transition duration is not found\n\n    if (!floatTransitionDuration && !floatTransitionDelay) {\n      return 0;\n    } // If multiple durations are defined, take the first\n\n\n    transitionDuration = transitionDuration.split(',')[0];\n    transitionDelay = transitionDelay.split(',')[0];\n    return (Number.parseFloat(transitionDuration) + Number.parseFloat(transitionDelay)) * MILLISECONDS_MULTIPLIER;\n  };\n\n  const triggerTransitionEnd = element => {\n    element.dispatchEvent(new Event(TRANSITION_END));\n  };\n\n  const isElement$1 = obj => {\n    if (!obj || typeof obj !== 'object') {\n      return false;\n    }\n\n    if (typeof obj.jquery !== 'undefined') {\n      obj = obj[0];\n    }\n\n    return typeof obj.nodeType !== 'undefined';\n  };\n\n  const getElement = obj => {\n    if (isElement$1(obj)) {\n      // it's a jQuery object or a node element\n      return obj.jquery ? obj[0] : obj;\n    }\n\n    if (typeof obj === 'string' && obj.length > 0) {\n      return document.querySelector(obj);\n    }\n\n    return null;\n  };\n\n  const typeCheckConfig = (componentName, config, configTypes) => {\n    Object.keys(configTypes).forEach(property => {\n      const expectedTypes = configTypes[property];\n      const value = config[property];\n      const valueType = value && isElement$1(value) ? 'element' : toType(value);\n\n      if (!new RegExp(expectedTypes).test(valueType)) {\n        throw new TypeError(`${componentName.toUpperCase()}: Option \"${property}\" provided type \"${valueType}\" but expected type \"${expectedTypes}\".`);\n      }\n    });\n  };\n\n  const isVisible = element => {\n    if (!isElement$1(element) || element.getClientRects().length === 0) {\n      return false;\n    }\n\n    return getComputedStyle(element).getPropertyValue('visibility') === 'visible';\n  };\n\n  const isDisabled = element => {\n    if (!element || element.nodeType !== Node.ELEMENT_NODE) {\n      return true;\n    }\n\n    if (element.classList.contains('disabled')) {\n      return true;\n    }\n\n    if (typeof element.disabled !== 'undefined') {\n      return element.disabled;\n    }\n\n    return element.hasAttribute('disabled') && element.getAttribute('disabled') !== 'false';\n  };\n\n  const findShadowRoot = element => {\n    if (!document.documentElement.attachShadow) {\n      return null;\n    } // Can find the shadow root otherwise it'll return the document\n\n\n    if (typeof element.getRootNode === 'function') {\n      const root = element.getRootNode();\n      return root instanceof ShadowRoot ? root : null;\n    }\n\n    if (element instanceof ShadowRoot) {\n      return element;\n    } // when we don't find a shadow root\n\n\n    if (!element.parentNode) {\n      return null;\n    }\n\n    return findShadowRoot(element.parentNode);\n  };\n\n  const noop = () => {};\n  /**\n   * Trick to restart an element's animation\n   *\n   * @param {HTMLElement} element\n   * @return void\n   *\n   * @see https://www.charistheo.io/blog/2021/02/restart-a-css-animation-with-javascript/#restarting-a-css-animation\n   */\n\n\n  const reflow = element => {\n    // eslint-disable-next-line no-unused-expressions\n    element.offsetHeight;\n  };\n\n  const getjQuery = () => {\n    const {\n      jQuery\n    } = window;\n\n    if (jQuery && !document.body.hasAttribute('data-bs-no-jquery')) {\n      return jQuery;\n    }\n\n    return null;\n  };\n\n  const DOMContentLoadedCallbacks = [];\n\n  const onDOMContentLoaded = callback => {\n    if (document.readyState === 'loading') {\n      // add listener on the first call when the document is in loading state\n      if (!DOMContentLoadedCallbacks.length) {\n        document.addEventListener('DOMContentLoaded', () => {\n          DOMContentLoadedCallbacks.forEach(callback => callback());\n        });\n      }\n\n      DOMContentLoadedCallbacks.push(callback);\n    } else {\n      callback();\n    }\n  };\n\n  const isRTL = () => document.documentElement.dir === 'rtl';\n\n  const defineJQueryPlugin = plugin => {\n    onDOMContentLoaded(() => {\n      const $ = getjQuery();\n      /* istanbul ignore if */\n\n      if ($) {\n        const name = plugin.NAME;\n        const JQUERY_NO_CONFLICT = $.fn[name];\n        $.fn[name] = plugin.jQueryInterface;\n        $.fn[name].Constructor = plugin;\n\n        $.fn[name].noConflict = () => {\n          $.fn[name] = JQUERY_NO_CONFLICT;\n          return plugin.jQueryInterface;\n        };\n      }\n    });\n  };\n\n  const execute = callback => {\n    if (typeof callback === 'function') {\n      callback();\n    }\n  };\n\n  const executeAfterTransition = (callback, transitionElement, waitForTransition = true) => {\n    if (!waitForTransition) {\n      execute(callback);\n      return;\n    }\n\n    const durationPadding = 5;\n    const emulatedDuration = getTransitionDurationFromElement(transitionElement) + durationPadding;\n    let called = false;\n\n    const handler = ({\n      target\n    }) => {\n      if (target !== transitionElement) {\n        return;\n      }\n\n      called = true;\n      transitionElement.removeEventListener(TRANSITION_END, handler);\n      execute(callback);\n    };\n\n    transitionElement.addEventListener(TRANSITION_END, handler);\n    setTimeout(() => {\n      if (!called) {\n        triggerTransitionEnd(transitionElement);\n      }\n    }, emulatedDuration);\n  };\n  /**\n   * Return the previous/next element of a list.\n   *\n   * @param {array} list    The list of elements\n   * @param activeElement   The active element\n   * @param shouldGetNext   Choose to get next or previous element\n   * @param isCycleAllowed\n   * @return {Element|elem} The proper element\n   */\n\n\n  const getNextActiveElement = (list, activeElement, shouldGetNext, isCycleAllowed) => {\n    let index = list.indexOf(activeElement); // if the element does not exist in the list return an element depending on the direction and if cycle is allowed\n\n    if (index === -1) {\n      return list[!shouldGetNext && isCycleAllowed ? list.length - 1 : 0];\n    }\n\n    const listLength = list.length;\n    index += shouldGetNext ? 1 : -1;\n\n    if (isCycleAllowed) {\n      index = (index + listLength) % listLength;\n    }\n\n    return list[Math.max(0, Math.min(index, listLength - 1))];\n  };\n\n  /**\n   * --------------------------------------------------------------------------\n   * Bootstrap (v5.1.3): dom/event-handler.js\n   * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n   * --------------------------------------------------------------------------\n   */\n  /**\n   * ------------------------------------------------------------------------\n   * Constants\n   * ------------------------------------------------------------------------\n   */\n\n  const namespaceRegex = /[^.]*(?=\\..*)\\.|.*/;\n  const stripNameRegex = /\\..*/;\n  const stripUidRegex = /::\\d+$/;\n  const eventRegistry = {}; // Events storage\n\n  let uidEvent = 1;\n  const customEvents = {\n    mouseenter: 'mouseover',\n    mouseleave: 'mouseout'\n  };\n  const customEventsRegex = /^(mouseenter|mouseleave)/i;\n  const nativeEvents = new Set(['click', 'dblclick', 'mouseup', 'mousedown', 'contextmenu', 'mousewheel', 'DOMMouseScroll', 'mouseover', 'mouseout', 'mousemove', 'selectstart', 'selectend', 'keydown', 'keypress', 'keyup', 'orientationchange', 'touchstart', 'touchmove', 'touchend', 'touchcancel', 'pointerdown', 'pointermove', 'pointerup', 'pointerleave', 'pointercancel', 'gesturestart', 'gesturechange', 'gestureend', 'focus', 'blur', 'change', 'reset', 'select', 'submit', 'focusin', 'focusout', 'load', 'unload', 'beforeunload', 'resize', 'move', 'DOMContentLoaded', 'readystatechange', 'error', 'abort', 'scroll']);\n  /**\n   * ------------------------------------------------------------------------\n   * Private methods\n   * ------------------------------------------------------------------------\n   */\n\n  function getUidEvent(element, uid) {\n    return uid && `${uid}::${uidEvent++}` || element.uidEvent || uidEvent++;\n  }\n\n  function getEvent(element) {\n    const uid = getUidEvent(element);\n    element.uidEvent = uid;\n    eventRegistry[uid] = eventRegistry[uid] || {};\n    return eventRegistry[uid];\n  }\n\n  function bootstrapHandler(element, fn) {\n    return function handler(event) {\n      event.delegateTarget = element;\n\n      if (handler.oneOff) {\n        EventHandler.off(element, event.type, fn);\n      }\n\n      return fn.apply(element, [event]);\n    };\n  }\n\n  function bootstrapDelegationHandler(element, selector, fn) {\n    return function handler(event) {\n      const domElements = element.querySelectorAll(selector);\n\n      for (let {\n        target\n      } = event; target && target !== this; target = target.parentNode) {\n        for (let i = domElements.length; i--;) {\n          if (domElements[i] === target) {\n            event.delegateTarget = target;\n\n            if (handler.oneOff) {\n              EventHandler.off(element, event.type, selector, fn);\n            }\n\n            return fn.apply(target, [event]);\n          }\n        }\n      } // To please ESLint\n\n\n      return null;\n    };\n  }\n\n  function findHandler(events, handler, delegationSelector = null) {\n    const uidEventList = Object.keys(events);\n\n    for (let i = 0, len = uidEventList.length; i < len; i++) {\n      const event = events[uidEventList[i]];\n\n      if (event.originalHandler === handler && event.delegationSelector === delegationSelector) {\n        return event;\n      }\n    }\n\n    return null;\n  }\n\n  function normalizeParams(originalTypeEvent, handler, delegationFn) {\n    const delegation = typeof handler === 'string';\n    const originalHandler = delegation ? delegationFn : handler;\n    let typeEvent = getTypeEvent(originalTypeEvent);\n    const isNative = nativeEvents.has(typeEvent);\n\n    if (!isNative) {\n      typeEvent = originalTypeEvent;\n    }\n\n    return [delegation, originalHandler, typeEvent];\n  }\n\n  function addHandler(element, originalTypeEvent, handler, delegationFn, oneOff) {\n    if (typeof originalTypeEvent !== 'string' || !element) {\n      return;\n    }\n\n    if (!handler) {\n      handler = delegationFn;\n      delegationFn = null;\n    } // in case of mouseenter or mouseleave wrap the handler within a function that checks for its DOM position\n    // this prevents the handler from being dispatched the same way as mouseover or mouseout does\n\n\n    if (customEventsRegex.test(originalTypeEvent)) {\n      const wrapFn = fn => {\n        return function (event) {\n          if (!event.relatedTarget || event.relatedTarget !== event.delegateTarget && !event.delegateTarget.contains(event.relatedTarget)) {\n            return fn.call(this, event);\n          }\n        };\n      };\n\n      if (delegationFn) {\n        delegationFn = wrapFn(delegationFn);\n      } else {\n        handler = wrapFn(handler);\n      }\n    }\n\n    const [delegation, originalHandler, typeEvent] = normalizeParams(originalTypeEvent, handler, delegationFn);\n    const events = getEvent(element);\n    const handlers = events[typeEvent] || (events[typeEvent] = {});\n    const previousFn = findHandler(handlers, originalHandler, delegation ? handler : null);\n\n    if (previousFn) {\n      previousFn.oneOff = previousFn.oneOff && oneOff;\n      return;\n    }\n\n    const uid = getUidEvent(originalHandler, originalTypeEvent.replace(namespaceRegex, ''));\n    const fn = delegation ? bootstrapDelegationHandler(element, handler, delegationFn) : bootstrapHandler(element, handler);\n    fn.delegationSelector = delegation ? handler : null;\n    fn.originalHandler = originalHandler;\n    fn.oneOff = oneOff;\n    fn.uidEvent = uid;\n    handlers[uid] = fn;\n    element.addEventListener(typeEvent, fn, delegation);\n  }\n\n  function removeHandler(element, events, typeEvent, handler, delegationSelector) {\n    const fn = findHandler(events[typeEvent], handler, delegationSelector);\n\n    if (!fn) {\n      return;\n    }\n\n    element.removeEventListener(typeEvent, fn, Boolean(delegationSelector));\n    delete events[typeEvent][fn.uidEvent];\n  }\n\n  function removeNamespacedHandlers(element, events, typeEvent, namespace) {\n    const storeElementEvent = events[typeEvent] || {};\n    Object.keys(storeElementEvent).forEach(handlerKey => {\n      if (handlerKey.includes(namespace)) {\n        const event = storeElementEvent[handlerKey];\n        removeHandler(element, events, typeEvent, event.originalHandler, event.delegationSelector);\n      }\n    });\n  }\n\n  function getTypeEvent(event) {\n    // allow to get the native events from namespaced events ('click.bs.button' --> 'click')\n    event = event.replace(stripNameRegex, '');\n    return customEvents[event] || event;\n  }\n\n  const EventHandler = {\n    on(element, event, handler, delegationFn) {\n      addHandler(element, event, handler, delegationFn, false);\n    },\n\n    one(element, event, handler, delegationFn) {\n      addHandler(element, event, handler, delegationFn, true);\n    },\n\n    off(element, originalTypeEvent, handler, delegationFn) {\n      if (typeof originalTypeEvent !== 'string' || !element) {\n        return;\n      }\n\n      const [delegation, originalHandler, typeEvent] = normalizeParams(originalTypeEvent, handler, delegationFn);\n      const inNamespace = typeEvent !== originalTypeEvent;\n      const events = getEvent(element);\n      const isNamespace = originalTypeEvent.startsWith('.');\n\n      if (typeof originalHandler !== 'undefined') {\n        // Simplest case: handler is passed, remove that listener ONLY.\n        if (!events || !events[typeEvent]) {\n          return;\n        }\n\n        removeHandler(element, events, typeEvent, originalHandler, delegation ? handler : null);\n        return;\n      }\n\n      if (isNamespace) {\n        Object.keys(events).forEach(elementEvent => {\n          removeNamespacedHandlers(element, events, elementEvent, originalTypeEvent.slice(1));\n        });\n      }\n\n      const storeElementEvent = events[typeEvent] || {};\n      Object.keys(storeElementEvent).forEach(keyHandlers => {\n        const handlerKey = keyHandlers.replace(stripUidRegex, '');\n\n        if (!inNamespace || originalTypeEvent.includes(handlerKey)) {\n          const event = storeElementEvent[keyHandlers];\n          removeHandler(element, events, typeEvent, event.originalHandler, event.delegationSelector);\n        }\n      });\n    },\n\n    trigger(element, event, args) {\n      if (typeof event !== 'string' || !element) {\n        return null;\n      }\n\n      const $ = getjQuery();\n      const typeEvent = getTypeEvent(event);\n      const inNamespace = event !== typeEvent;\n      const isNative = nativeEvents.has(typeEvent);\n      let jQueryEvent;\n      let bubbles = true;\n      let nativeDispatch = true;\n      let defaultPrevented = false;\n      let evt = null;\n\n      if (inNamespace && $) {\n        jQueryEvent = $.Event(event, args);\n        $(element).trigger(jQueryEvent);\n        bubbles = !jQueryEvent.isPropagationStopped();\n        nativeDispatch = !jQueryEvent.isImmediatePropagationStopped();\n        defaultPrevented = jQueryEvent.isDefaultPrevented();\n      }\n\n      if (isNative) {\n        evt = document.createEvent('HTMLEvents');\n        evt.initEvent(typeEvent, bubbles, true);\n      } else {\n        evt = new CustomEvent(event, {\n          bubbles,\n          cancelable: true\n        });\n      } // merge custom information in our event\n\n\n      if (typeof args !== 'undefined') {\n        Object.keys(args).forEach(key => {\n          Object.defineProperty(evt, key, {\n            get() {\n              return args[key];\n            }\n\n          });\n        });\n      }\n\n      if (defaultPrevented) {\n        evt.preventDefault();\n      }\n\n      if (nativeDispatch) {\n        element.dispatchEvent(evt);\n      }\n\n      if (evt.defaultPrevented && typeof jQueryEvent !== 'undefined') {\n        jQueryEvent.preventDefault();\n      }\n\n      return evt;\n    }\n\n  };\n\n  /**\n   * --------------------------------------------------------------------------\n   * Bootstrap (v5.1.3): dom/data.js\n   * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n   * --------------------------------------------------------------------------\n   */\n\n  /**\n   * ------------------------------------------------------------------------\n   * Constants\n   * ------------------------------------------------------------------------\n   */\n  const elementMap = new Map();\n  const Data = {\n    set(element, key, instance) {\n      if (!elementMap.has(element)) {\n        elementMap.set(element, new Map());\n      }\n\n      const instanceMap = elementMap.get(element); // make it clear we only want one instance per element\n      // can be removed later when multiple key/instances are fine to be used\n\n      if (!instanceMap.has(key) && instanceMap.size !== 0) {\n        // eslint-disable-next-line no-console\n        console.error(`Bootstrap doesn't allow more than one instance per element. Bound instance: ${Array.from(instanceMap.keys())[0]}.`);\n        return;\n      }\n\n      instanceMap.set(key, instance);\n    },\n\n    get(element, key) {\n      if (elementMap.has(element)) {\n        return elementMap.get(element).get(key) || null;\n      }\n\n      return null;\n    },\n\n    remove(element, key) {\n      if (!elementMap.has(element)) {\n        return;\n      }\n\n      const instanceMap = elementMap.get(element);\n      instanceMap.delete(key); // free up element references if there are no instances left for an element\n\n      if (instanceMap.size === 0) {\n        elementMap.delete(element);\n      }\n    }\n\n  };\n\n  /**\n   * --------------------------------------------------------------------------\n   * Bootstrap (v5.1.3): base-component.js\n   * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n   * --------------------------------------------------------------------------\n   */\n  /**\n   * ------------------------------------------------------------------------\n   * Constants\n   * ------------------------------------------------------------------------\n   */\n\n  const VERSION = '5.1.3';\n\n  class BaseComponent {\n    constructor(element) {\n      element = getElement(element);\n\n      if (!element) {\n        return;\n      }\n\n      this._element = element;\n      Data.set(this._element, this.constructor.DATA_KEY, this);\n    }\n\n    dispose() {\n      Data.remove(this._element, this.constructor.DATA_KEY);\n      EventHandler.off(this._element, this.constructor.EVENT_KEY);\n      Object.getOwnPropertyNames(this).forEach(propertyName => {\n        this[propertyName] = null;\n      });\n    }\n\n    _queueCallback(callback, element, isAnimated = true) {\n      executeAfterTransition(callback, element, isAnimated);\n    }\n    /** Static */\n\n\n    static getInstance(element) {\n      return Data.get(getElement(element), this.DATA_KEY);\n    }\n\n    static getOrCreateInstance(element, config = {}) {\n      return this.getInstance(element) || new this(element, typeof config === 'object' ? config : null);\n    }\n\n    static get VERSION() {\n      return VERSION;\n    }\n\n    static get NAME() {\n      throw new Error('You have to implement the static method \"NAME\", for each component!');\n    }\n\n    static get DATA_KEY() {\n      return `bs.${this.NAME}`;\n    }\n\n    static get EVENT_KEY() {\n      return `.${this.DATA_KEY}`;\n    }\n\n  }\n\n  /**\n   * --------------------------------------------------------------------------\n   * Bootstrap (v5.1.3): util/component-functions.js\n   * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n   * --------------------------------------------------------------------------\n   */\n\n  const enableDismissTrigger = (component, method = 'hide') => {\n    const clickEvent = `click.dismiss${component.EVENT_KEY}`;\n    const name = component.NAME;\n    EventHandler.on(document, clickEvent, `[data-bs-dismiss=\"${name}\"]`, function (event) {\n      if (['A', 'AREA'].includes(this.tagName)) {\n        event.preventDefault();\n      }\n\n      if (isDisabled(this)) {\n        return;\n      }\n\n      const target = getElementFromSelector(this) || this.closest(`.${name}`);\n      const instance = component.getOrCreateInstance(target); // Method argument is left, for Alert and only, as it doesn't implement the 'hide' method\n\n      instance[method]();\n    });\n  };\n\n  /**\n   * --------------------------------------------------------------------------\n   * Bootstrap (v5.1.3): alert.js\n   * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n   * --------------------------------------------------------------------------\n   */\n  /**\n   * ------------------------------------------------------------------------\n   * Constants\n   * ------------------------------------------------------------------------\n   */\n\n  const NAME$d = 'alert';\n  const DATA_KEY$c = 'bs.alert';\n  const EVENT_KEY$c = `.${DATA_KEY$c}`;\n  const EVENT_CLOSE = `close${EVENT_KEY$c}`;\n  const EVENT_CLOSED = `closed${EVENT_KEY$c}`;\n  const CLASS_NAME_FADE$5 = 'fade';\n  const CLASS_NAME_SHOW$8 = 'show';\n  /**\n   * ------------------------------------------------------------------------\n   * Class Definition\n   * ------------------------------------------------------------------------\n   */\n\n  class Alert extends BaseComponent {\n    // Getters\n    static get NAME() {\n      return NAME$d;\n    } // Public\n\n\n    close() {\n      const closeEvent = EventHandler.trigger(this._element, EVENT_CLOSE);\n\n      if (closeEvent.defaultPrevented) {\n        return;\n      }\n\n      this._element.classList.remove(CLASS_NAME_SHOW$8);\n\n      const isAnimated = this._element.classList.contains(CLASS_NAME_FADE$5);\n\n      this._queueCallback(() => this._destroyElement(), this._element, isAnimated);\n    } // Private\n\n\n    _destroyElement() {\n      this._element.remove();\n\n      EventHandler.trigger(this._element, EVENT_CLOSED);\n      this.dispose();\n    } // Static\n\n\n    static jQueryInterface(config) {\n      return this.each(function () {\n        const data = Alert.getOrCreateInstance(this);\n\n        if (typeof config !== 'string') {\n          return;\n        }\n\n        if (data[config] === undefined || config.startsWith('_') || config === 'constructor') {\n          throw new TypeError(`No method named \"${config}\"`);\n        }\n\n        data[config](this);\n      });\n    }\n\n  }\n  /**\n   * ------------------------------------------------------------------------\n   * Data Api implementation\n   * ------------------------------------------------------------------------\n   */\n\n\n  enableDismissTrigger(Alert, 'close');\n  /**\n   * ------------------------------------------------------------------------\n   * jQuery\n   * ------------------------------------------------------------------------\n   * add .Alert to jQuery only if jQuery is present\n   */\n\n  defineJQueryPlugin(Alert);\n\n  /**\n   * --------------------------------------------------------------------------\n   * Bootstrap (v5.1.3): button.js\n   * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n   * --------------------------------------------------------------------------\n   */\n  /**\n   * ------------------------------------------------------------------------\n   * Constants\n   * ------------------------------------------------------------------------\n   */\n\n  const NAME$c = 'button';\n  const DATA_KEY$b = 'bs.button';\n  const EVENT_KEY$b = `.${DATA_KEY$b}`;\n  const DATA_API_KEY$7 = '.data-api';\n  const CLASS_NAME_ACTIVE$3 = 'active';\n  const SELECTOR_DATA_TOGGLE$5 = '[data-bs-toggle=\"button\"]';\n  const EVENT_CLICK_DATA_API$6 = `click${EVENT_KEY$b}${DATA_API_KEY$7}`;\n  /**\n   * ------------------------------------------------------------------------\n   * Class Definition\n   * ------------------------------------------------------------------------\n   */\n\n  class Button extends BaseComponent {\n    // Getters\n    static get NAME() {\n      return NAME$c;\n    } // Public\n\n\n    toggle() {\n      // Toggle class and sync the `aria-pressed` attribute with the return value of the `.toggle()` method\n      this._element.setAttribute('aria-pressed', this._element.classList.toggle(CLASS_NAME_ACTIVE$3));\n    } // Static\n\n\n    static jQueryInterface(config) {\n      return this.each(function () {\n        const data = Button.getOrCreateInstance(this);\n\n        if (config === 'toggle') {\n          data[config]();\n        }\n      });\n    }\n\n  }\n  /**\n   * ------------------------------------------------------------------------\n   * Data Api implementation\n   * ------------------------------------------------------------------------\n   */\n\n\n  EventHandler.on(document, EVENT_CLICK_DATA_API$6, SELECTOR_DATA_TOGGLE$5, event => {\n    event.preventDefault();\n    const button = event.target.closest(SELECTOR_DATA_TOGGLE$5);\n    const data = Button.getOrCreateInstance(button);\n    data.toggle();\n  });\n  /**\n   * ------------------------------------------------------------------------\n   * jQuery\n   * ------------------------------------------------------------------------\n   * add .Button to jQuery only if jQuery is present\n   */\n\n  defineJQueryPlugin(Button);\n\n  /**\n   * --------------------------------------------------------------------------\n   * Bootstrap (v5.1.3): dom/manipulator.js\n   * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n   * --------------------------------------------------------------------------\n   */\n  function normalizeData(val) {\n    if (val === 'true') {\n      return true;\n    }\n\n    if (val === 'false') {\n      return false;\n    }\n\n    if (val === Number(val).toString()) {\n      return Number(val);\n    }\n\n    if (val === '' || val === 'null') {\n      return null;\n    }\n\n    return val;\n  }\n\n  function normalizeDataKey(key) {\n    return key.replace(/[A-Z]/g, chr => `-${chr.toLowerCase()}`);\n  }\n\n  const Manipulator = {\n    setDataAttribute(element, key, value) {\n      element.setAttribute(`data-bs-${normalizeDataKey(key)}`, value);\n    },\n\n    removeDataAttribute(element, key) {\n      element.removeAttribute(`data-bs-${normalizeDataKey(key)}`);\n    },\n\n    getDataAttributes(element) {\n      if (!element) {\n        return {};\n      }\n\n      const attributes = {};\n      Object.keys(element.dataset).filter(key => key.startsWith('bs')).forEach(key => {\n        let pureKey = key.replace(/^bs/, '');\n        pureKey = pureKey.charAt(0).toLowerCase() + pureKey.slice(1, pureKey.length);\n        attributes[pureKey] = normalizeData(element.dataset[key]);\n      });\n      return attributes;\n    },\n\n    getDataAttribute(element, key) {\n      return normalizeData(element.getAttribute(`data-bs-${normalizeDataKey(key)}`));\n    },\n\n    offset(element) {\n      const rect = element.getBoundingClientRect();\n      return {\n        top: rect.top + window.pageYOffset,\n        left: rect.left + window.pageXOffset\n      };\n    },\n\n    position(element) {\n      return {\n        top: element.offsetTop,\n        left: element.offsetLeft\n      };\n    }\n\n  };\n\n  /**\n   * --------------------------------------------------------------------------\n   * Bootstrap (v5.1.3): dom/selector-engine.js\n   * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n   * --------------------------------------------------------------------------\n   */\n  const NODE_TEXT = 3;\n  const SelectorEngine = {\n    find(selector, element = document.documentElement) {\n      return [].concat(...Element.prototype.querySelectorAll.call(element, selector));\n    },\n\n    findOne(selector, element = document.documentElement) {\n      return Element.prototype.querySelector.call(element, selector);\n    },\n\n    children(element, selector) {\n      return [].concat(...element.children).filter(child => child.matches(selector));\n    },\n\n    parents(element, selector) {\n      const parents = [];\n      let ancestor = element.parentNode;\n\n      while (ancestor && ancestor.nodeType === Node.ELEMENT_NODE && ancestor.nodeType !== NODE_TEXT) {\n        if (ancestor.matches(selector)) {\n          parents.push(ancestor);\n        }\n\n        ancestor = ancestor.parentNode;\n      }\n\n      return parents;\n    },\n\n    prev(element, selector) {\n      let previous = element.previousElementSibling;\n\n      while (previous) {\n        if (previous.matches(selector)) {\n          return [previous];\n        }\n\n        previous = previous.previousElementSibling;\n      }\n\n      return [];\n    },\n\n    next(element, selector) {\n      let next = element.nextElementSibling;\n\n      while (next) {\n        if (next.matches(selector)) {\n          return [next];\n        }\n\n        next = next.nextElementSibling;\n      }\n\n      return [];\n    },\n\n    focusableChildren(element) {\n      const focusables = ['a', 'button', 'input', 'textarea', 'select', 'details', '[tabindex]', '[contenteditable=\"true\"]'].map(selector => `${selector}:not([tabindex^=\"-\"])`).join(', ');\n      return this.find(focusables, element).filter(el => !isDisabled(el) && isVisible(el));\n    }\n\n  };\n\n  /**\n   * --------------------------------------------------------------------------\n   * Bootstrap (v5.1.3): carousel.js\n   * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n   * --------------------------------------------------------------------------\n   */\n  /**\n   * ------------------------------------------------------------------------\n   * Constants\n   * ------------------------------------------------------------------------\n   */\n\n  const NAME$b = 'carousel';\n  const DATA_KEY$a = 'bs.carousel';\n  const EVENT_KEY$a = `.${DATA_KEY$a}`;\n  const DATA_API_KEY$6 = '.data-api';\n  const ARROW_LEFT_KEY = 'ArrowLeft';\n  const ARROW_RIGHT_KEY = 'ArrowRight';\n  const TOUCHEVENT_COMPAT_WAIT = 500; // Time for mouse compat events to fire after touch\n\n  const SWIPE_THRESHOLD = 40;\n  const Default$a = {\n    interval: 5000,\n    keyboard: true,\n    slide: false,\n    pause: 'hover',\n    wrap: true,\n    touch: true\n  };\n  const DefaultType$a = {\n    interval: '(number|boolean)',\n    keyboard: 'boolean',\n    slide: '(boolean|string)',\n    pause: '(string|boolean)',\n    wrap: 'boolean',\n    touch: 'boolean'\n  };\n  const ORDER_NEXT = 'next';\n  const ORDER_PREV = 'prev';\n  const DIRECTION_LEFT = 'left';\n  const DIRECTION_RIGHT = 'right';\n  const KEY_TO_DIRECTION = {\n    [ARROW_LEFT_KEY]: DIRECTION_RIGHT,\n    [ARROW_RIGHT_KEY]: DIRECTION_LEFT\n  };\n  const EVENT_SLIDE = `slide${EVENT_KEY$a}`;\n  const EVENT_SLID = `slid${EVENT_KEY$a}`;\n  const EVENT_KEYDOWN = `keydown${EVENT_KEY$a}`;\n  const EVENT_MOUSEENTER = `mouseenter${EVENT_KEY$a}`;\n  const EVENT_MOUSELEAVE = `mouseleave${EVENT_KEY$a}`;\n  const EVENT_TOUCHSTART = `touchstart${EVENT_KEY$a}`;\n  const EVENT_TOUCHMOVE = `touchmove${EVENT_KEY$a}`;\n  const EVENT_TOUCHEND = `touchend${EVENT_KEY$a}`;\n  const EVENT_POINTERDOWN = `pointerdown${EVENT_KEY$a}`;\n  const EVENT_POINTERUP = `pointerup${EVENT_KEY$a}`;\n  const EVENT_DRAG_START = `dragstart${EVENT_KEY$a}`;\n  const EVENT_LOAD_DATA_API$2 = `load${EVENT_KEY$a}${DATA_API_KEY$6}`;\n  const EVENT_CLICK_DATA_API$5 = `click${EVENT_KEY$a}${DATA_API_KEY$6}`;\n  const CLASS_NAME_CAROUSEL = 'carousel';\n  const CLASS_NAME_ACTIVE$2 = 'active';\n  const CLASS_NAME_SLIDE = 'slide';\n  const CLASS_NAME_END = 'carousel-item-end';\n  const CLASS_NAME_START = 'carousel-item-start';\n  const CLASS_NAME_NEXT = 'carousel-item-next';\n  const CLASS_NAME_PREV = 'carousel-item-prev';\n  const CLASS_NAME_POINTER_EVENT = 'pointer-event';\n  const SELECTOR_ACTIVE$1 = '.active';\n  const SELECTOR_ACTIVE_ITEM = '.active.carousel-item';\n  const SELECTOR_ITEM = '.carousel-item';\n  const SELECTOR_ITEM_IMG = '.carousel-item img';\n  const SELECTOR_NEXT_PREV = '.carousel-item-next, .carousel-item-prev';\n  const SELECTOR_INDICATORS = '.carousel-indicators';\n  const SELECTOR_INDICATOR = '[data-bs-target]';\n  const SELECTOR_DATA_SLIDE = '[data-bs-slide], [data-bs-slide-to]';\n  const SELECTOR_DATA_RIDE = '[data-bs-ride=\"carousel\"]';\n  const POINTER_TYPE_TOUCH = 'touch';\n  const POINTER_TYPE_PEN = 'pen';\n  /**\n   * ------------------------------------------------------------------------\n   * Class Definition\n   * ------------------------------------------------------------------------\n   */\n\n  class Carousel extends BaseComponent {\n    constructor(element, config) {\n      super(element);\n      this._items = null;\n      this._interval = null;\n      this._activeElement = null;\n      this._isPaused = false;\n      this._isSliding = false;\n      this.touchTimeout = null;\n      this.touchStartX = 0;\n      this.touchDeltaX = 0;\n      this._config = this._getConfig(config);\n      this._indicatorsElement = SelectorEngine.findOne(SELECTOR_INDICATORS, this._element);\n      this._touchSupported = 'ontouchstart' in document.documentElement || navigator.maxTouchPoints > 0;\n      this._pointerEvent = Boolean(window.PointerEvent);\n\n      this._addEventListeners();\n    } // Getters\n\n\n    static get Default() {\n      return Default$a;\n    }\n\n    static get NAME() {\n      return NAME$b;\n    } // Public\n\n\n    next() {\n      this._slide(ORDER_NEXT);\n    }\n\n    nextWhenVisible() {\n      // Don't call next when the page isn't visible\n      // or the carousel or its parent isn't visible\n      if (!document.hidden && isVisible(this._element)) {\n        this.next();\n      }\n    }\n\n    prev() {\n      this._slide(ORDER_PREV);\n    }\n\n    pause(event) {\n      if (!event) {\n        this._isPaused = true;\n      }\n\n      if (SelectorEngine.findOne(SELECTOR_NEXT_PREV, this._element)) {\n        triggerTransitionEnd(this._element);\n        this.cycle(true);\n      }\n\n      clearInterval(this._interval);\n      this._interval = null;\n    }\n\n    cycle(event) {\n      if (!event) {\n        this._isPaused = false;\n      }\n\n      if (this._interval) {\n        clearInterval(this._interval);\n        this._interval = null;\n      }\n\n      if (this._config && this._config.interval && !this._isPaused) {\n        this._updateInterval();\n\n        this._interval = setInterval((document.visibilityState ? this.nextWhenVisible : this.next).bind(this), this._config.interval);\n      }\n    }\n\n    to(index) {\n      this._activeElement = SelectorEngine.findOne(SELECTOR_ACTIVE_ITEM, this._element);\n\n      const activeIndex = this._getItemIndex(this._activeElement);\n\n      if (index > this._items.length - 1 || index < 0) {\n        return;\n      }\n\n      if (this._isSliding) {\n        EventHandler.one(this._element, EVENT_SLID, () => this.to(index));\n        return;\n      }\n\n      if (activeIndex === index) {\n        this.pause();\n        this.cycle();\n        return;\n      }\n\n      const order = index > activeIndex ? ORDER_NEXT : ORDER_PREV;\n\n      this._slide(order, this._items[index]);\n    } // Private\n\n\n    _getConfig(config) {\n      config = { ...Default$a,\n        ...Manipulator.getDataAttributes(this._element),\n        ...(typeof config === 'object' ? config : {})\n      };\n      typeCheckConfig(NAME$b, config, DefaultType$a);\n      return config;\n    }\n\n    _handleSwipe() {\n      const absDeltax = Math.abs(this.touchDeltaX);\n\n      if (absDeltax <= SWIPE_THRESHOLD) {\n        return;\n      }\n\n      const direction = absDeltax / this.touchDeltaX;\n      this.touchDeltaX = 0;\n\n      if (!direction) {\n        return;\n      }\n\n      this._slide(direction > 0 ? DIRECTION_RIGHT : DIRECTION_LEFT);\n    }\n\n    _addEventListeners() {\n      if (this._config.keyboard) {\n        EventHandler.on(this._element, EVENT_KEYDOWN, event => this._keydown(event));\n      }\n\n      if (this._config.pause === 'hover') {\n        EventHandler.on(this._element, EVENT_MOUSEENTER, event => this.pause(event));\n        EventHandler.on(this._element, EVENT_MOUSELEAVE, event => this.cycle(event));\n      }\n\n      if (this._config.touch && this._touchSupported) {\n        this._addTouchEventListeners();\n      }\n    }\n\n    _addTouchEventListeners() {\n      const hasPointerPenTouch = event => {\n        return this._pointerEvent && (event.pointerType === POINTER_TYPE_PEN || event.pointerType === POINTER_TYPE_TOUCH);\n      };\n\n      const start = event => {\n        if (hasPointerPenTouch(event)) {\n          this.touchStartX = event.clientX;\n        } else if (!this._pointerEvent) {\n          this.touchStartX = event.touches[0].clientX;\n        }\n      };\n\n      const move = event => {\n        // ensure swiping with one touch and not pinching\n        this.touchDeltaX = event.touches && event.touches.length > 1 ? 0 : event.touches[0].clientX - this.touchStartX;\n      };\n\n      const end = event => {\n        if (hasPointerPenTouch(event)) {\n          this.touchDeltaX = event.clientX - this.touchStartX;\n        }\n\n        this._handleSwipe();\n\n        if (this._config.pause === 'hover') {\n          // If it's a touch-enabled device, mouseenter/leave are fired as\n          // part of the mouse compatibility events on first tap - the carousel\n          // would stop cycling until user tapped out of it;\n          // here, we listen for touchend, explicitly pause the carousel\n          // (as if it's the second time we tap on it, mouseenter compat event\n          // is NOT fired) and after a timeout (to allow for mouse compatibility\n          // events to fire) we explicitly restart cycling\n          this.pause();\n\n          if (this.touchTimeout) {\n            clearTimeout(this.touchTimeout);\n          }\n\n          this.touchTimeout = setTimeout(event => this.cycle(event), TOUCHEVENT_COMPAT_WAIT + this._config.interval);\n        }\n      };\n\n      SelectorEngine.find(SELECTOR_ITEM_IMG, this._element).forEach(itemImg => {\n        EventHandler.on(itemImg, EVENT_DRAG_START, event => event.preventDefault());\n      });\n\n      if (this._pointerEvent) {\n        EventHandler.on(this._element, EVENT_POINTERDOWN, event => start(event));\n        EventHandler.on(this._element, EVENT_POINTERUP, event => end(event));\n\n        this._element.classList.add(CLASS_NAME_POINTER_EVENT);\n      } else {\n        EventHandler.on(this._element, EVENT_TOUCHSTART, event => start(event));\n        EventHandler.on(this._element, EVENT_TOUCHMOVE, event => move(event));\n        EventHandler.on(this._element, EVENT_TOUCHEND, event => end(event));\n      }\n    }\n\n    _keydown(event) {\n      if (/input|textarea/i.test(event.target.tagName)) {\n        return;\n      }\n\n      const direction = KEY_TO_DIRECTION[event.key];\n\n      if (direction) {\n        event.preventDefault();\n\n        this._slide(direction);\n      }\n    }\n\n    _getItemIndex(element) {\n      this._items = element && element.parentNode ? SelectorEngine.find(SELECTOR_ITEM, element.parentNode) : [];\n      return this._items.indexOf(element);\n    }\n\n    _getItemByOrder(order, activeElement) {\n      const isNext = order === ORDER_NEXT;\n      return getNextActiveElement(this._items, activeElement, isNext, this._config.wrap);\n    }\n\n    _triggerSlideEvent(relatedTarget, eventDirectionName) {\n      const targetIndex = this._getItemIndex(relatedTarget);\n\n      const fromIndex = this._getItemIndex(SelectorEngine.findOne(SELECTOR_ACTIVE_ITEM, this._element));\n\n      return EventHandler.trigger(this._element, EVENT_SLIDE, {\n        relatedTarget,\n        direction: eventDirectionName,\n        from: fromIndex,\n        to: targetIndex\n      });\n    }\n\n    _setActiveIndicatorElement(element) {\n      if (this._indicatorsElement) {\n        const activeIndicator = SelectorEngine.findOne(SELECTOR_ACTIVE$1, this._indicatorsElement);\n        activeIndicator.classList.remove(CLASS_NAME_ACTIVE$2);\n        activeIndicator.removeAttribute('aria-current');\n        const indicators = SelectorEngine.find(SELECTOR_INDICATOR, this._indicatorsElement);\n\n        for (let i = 0; i < indicators.length; i++) {\n          if (Number.parseInt(indicators[i].getAttribute('data-bs-slide-to'), 10) === this._getItemIndex(element)) {\n            indicators[i].classList.add(CLASS_NAME_ACTIVE$2);\n            indicators[i].setAttribute('aria-current', 'true');\n            break;\n          }\n        }\n      }\n    }\n\n    _updateInterval() {\n      const element = this._activeElement || SelectorEngine.findOne(SELECTOR_ACTIVE_ITEM, this._element);\n\n      if (!element) {\n        return;\n      }\n\n      const elementInterval = Number.parseInt(element.getAttribute('data-bs-interval'), 10);\n\n      if (elementInterval) {\n        this._config.defaultInterval = this._config.defaultInterval || this._config.interval;\n        this._config.interval = elementInterval;\n      } else {\n        this._config.interval = this._config.defaultInterval || this._config.interval;\n      }\n    }\n\n    _slide(directionOrOrder, element) {\n      const order = this._directionToOrder(directionOrOrder);\n\n      const activeElement = SelectorEngine.findOne(SELECTOR_ACTIVE_ITEM, this._element);\n\n      const activeElementIndex = this._getItemIndex(activeElement);\n\n      const nextElement = element || this._getItemByOrder(order, activeElement);\n\n      const nextElementIndex = this._getItemIndex(nextElement);\n\n      const isCycling = Boolean(this._interval);\n      const isNext = order === ORDER_NEXT;\n      const directionalClassName = isNext ? CLASS_NAME_START : CLASS_NAME_END;\n      const orderClassName = isNext ? CLASS_NAME_NEXT : CLASS_NAME_PREV;\n\n      const eventDirectionName = this._orderToDirection(order);\n\n      if (nextElement && nextElement.classList.contains(CLASS_NAME_ACTIVE$2)) {\n        this._isSliding = false;\n        return;\n      }\n\n      if (this._isSliding) {\n        return;\n      }\n\n      const slideEvent = this._triggerSlideEvent(nextElement, eventDirectionName);\n\n      if (slideEvent.defaultPrevented) {\n        return;\n      }\n\n      if (!activeElement || !nextElement) {\n        // Some weirdness is happening, so we bail\n        return;\n      }\n\n      this._isSliding = true;\n\n      if (isCycling) {\n        this.pause();\n      }\n\n      this._setActiveIndicatorElement(nextElement);\n\n      this._activeElement = nextElement;\n\n      const triggerSlidEvent = () => {\n        EventHandler.trigger(this._element, EVENT_SLID, {\n          relatedTarget: nextElement,\n          direction: eventDirectionName,\n          from: activeElementIndex,\n          to: nextElementIndex\n        });\n      };\n\n      if (this._element.classList.contains(CLASS_NAME_SLIDE)) {\n        nextElement.classList.add(orderClassName);\n        reflow(nextElement);\n        activeElement.classList.add(directionalClassName);\n        nextElement.classList.add(directionalClassName);\n\n        const completeCallBack = () => {\n          nextElement.classList.remove(directionalClassName, orderClassName);\n          nextElement.classList.add(CLASS_NAME_ACTIVE$2);\n          activeElement.classList.remove(CLASS_NAME_ACTIVE$2, orderClassName, directionalClassName);\n          this._isSliding = false;\n          setTimeout(triggerSlidEvent, 0);\n        };\n\n        this._queueCallback(completeCallBack, activeElement, true);\n      } else {\n        activeElement.classList.remove(CLASS_NAME_ACTIVE$2);\n        nextElement.classList.add(CLASS_NAME_ACTIVE$2);\n        this._isSliding = false;\n        triggerSlidEvent();\n      }\n\n      if (isCycling) {\n        this.cycle();\n      }\n    }\n\n    _directionToOrder(direction) {\n      if (![DIRECTION_RIGHT, DIRECTION_LEFT].includes(direction)) {\n        return direction;\n      }\n\n      if (isRTL()) {\n        return direction === DIRECTION_LEFT ? ORDER_PREV : ORDER_NEXT;\n      }\n\n      return direction === DIRECTION_LEFT ? ORDER_NEXT : ORDER_PREV;\n    }\n\n    _orderToDirection(order) {\n      if (![ORDER_NEXT, ORDER_PREV].includes(order)) {\n        return order;\n      }\n\n      if (isRTL()) {\n        return order === ORDER_PREV ? DIRECTION_LEFT : DIRECTION_RIGHT;\n      }\n\n      return order === ORDER_PREV ? DIRECTION_RIGHT : DIRECTION_LEFT;\n    } // Static\n\n\n    static carouselInterface(element, config) {\n      const data = Carousel.getOrCreateInstance(element, config);\n      let {\n        _config\n      } = data;\n\n      if (typeof config === 'object') {\n        _config = { ..._config,\n          ...config\n        };\n      }\n\n      const action = typeof config === 'string' ? config : _config.slide;\n\n      if (typeof config === 'number') {\n        data.to(config);\n      } else if (typeof action === 'string') {\n        if (typeof data[action] === 'undefined') {\n          throw new TypeError(`No method named \"${action}\"`);\n        }\n\n        data[action]();\n      } else if (_config.interval && _config.ride) {\n        data.pause();\n        data.cycle();\n      }\n    }\n\n    static jQueryInterface(config) {\n      return this.each(function () {\n        Carousel.carouselInterface(this, config);\n      });\n    }\n\n    static dataApiClickHandler(event) {\n      const target = getElementFromSelector(this);\n\n      if (!target || !target.classList.contains(CLASS_NAME_CAROUSEL)) {\n        return;\n      }\n\n      const config = { ...Manipulator.getDataAttributes(target),\n        ...Manipulator.getDataAttributes(this)\n      };\n      const slideIndex = this.getAttribute('data-bs-slide-to');\n\n      if (slideIndex) {\n        config.interval = false;\n      }\n\n      Carousel.carouselInterface(target, config);\n\n      if (slideIndex) {\n        Carousel.getInstance(target).to(slideIndex);\n      }\n\n      event.preventDefault();\n    }\n\n  }\n  /**\n   * ------------------------------------------------------------------------\n   * Data Api implementation\n   * ------------------------------------------------------------------------\n   */\n\n\n  EventHandler.on(document, EVENT_CLICK_DATA_API$5, SELECTOR_DATA_SLIDE, Carousel.dataApiClickHandler);\n  EventHandler.on(window, EVENT_LOAD_DATA_API$2, () => {\n    const carousels = SelectorEngine.find(SELECTOR_DATA_RIDE);\n\n    for (let i = 0, len = carousels.length; i < len; i++) {\n      Carousel.carouselInterface(carousels[i], Carousel.getInstance(carousels[i]));\n    }\n  });\n  /**\n   * ------------------------------------------------------------------------\n   * jQuery\n   * ------------------------------------------------------------------------\n   * add .Carousel to jQuery only if jQuery is present\n   */\n\n  defineJQueryPlugin(Carousel);\n\n  /**\n   * --------------------------------------------------------------------------\n   * Bootstrap (v5.1.3): collapse.js\n   * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n   * --------------------------------------------------------------------------\n   */\n  /**\n   * ------------------------------------------------------------------------\n   * Constants\n   * ------------------------------------------------------------------------\n   */\n\n  const NAME$a = 'collapse';\n  const DATA_KEY$9 = 'bs.collapse';\n  const EVENT_KEY$9 = `.${DATA_KEY$9}`;\n  const DATA_API_KEY$5 = '.data-api';\n  const Default$9 = {\n    toggle: true,\n    parent: null\n  };\n  const DefaultType$9 = {\n    toggle: 'boolean',\n    parent: '(null|element)'\n  };\n  const EVENT_SHOW$5 = `show${EVENT_KEY$9}`;\n  const EVENT_SHOWN$5 = `shown${EVENT_KEY$9}`;\n  const EVENT_HIDE$5 = `hide${EVENT_KEY$9}`;\n  const EVENT_HIDDEN$5 = `hidden${EVENT_KEY$9}`;\n  const EVENT_CLICK_DATA_API$4 = `click${EVENT_KEY$9}${DATA_API_KEY$5}`;\n  const CLASS_NAME_SHOW$7 = 'show';\n  const CLASS_NAME_COLLAPSE = 'collapse';\n  const CLASS_NAME_COLLAPSING = 'collapsing';\n  const CLASS_NAME_COLLAPSED = 'collapsed';\n  const CLASS_NAME_DEEPER_CHILDREN = `:scope .${CLASS_NAME_COLLAPSE} .${CLASS_NAME_COLLAPSE}`;\n  const CLASS_NAME_HORIZONTAL = 'collapse-horizontal';\n  const WIDTH = 'width';\n  const HEIGHT = 'height';\n  const SELECTOR_ACTIVES = '.collapse.show, .collapse.collapsing';\n  const SELECTOR_DATA_TOGGLE$4 = '[data-bs-toggle=\"collapse\"]';\n  /**\n   * ------------------------------------------------------------------------\n   * Class Definition\n   * ------------------------------------------------------------------------\n   */\n\n  class Collapse extends BaseComponent {\n    constructor(element, config) {\n      super(element);\n      this._isTransitioning = false;\n      this._config = this._getConfig(config);\n      this._triggerArray = [];\n      const toggleList = SelectorEngine.find(SELECTOR_DATA_TOGGLE$4);\n\n      for (let i = 0, len = toggleList.length; i < len; i++) {\n        const elem = toggleList[i];\n        const selector = getSelectorFromElement(elem);\n        const filterElement = SelectorEngine.find(selector).filter(foundElem => foundElem === this._element);\n\n        if (selector !== null && filterElement.length) {\n          this._selector = selector;\n\n          this._triggerArray.push(elem);\n        }\n      }\n\n      this._initializeChildren();\n\n      if (!this._config.parent) {\n        this._addAriaAndCollapsedClass(this._triggerArray, this._isShown());\n      }\n\n      if (this._config.toggle) {\n        this.toggle();\n      }\n    } // Getters\n\n\n    static get Default() {\n      return Default$9;\n    }\n\n    static get NAME() {\n      return NAME$a;\n    } // Public\n\n\n    toggle() {\n      if (this._isShown()) {\n        this.hide();\n      } else {\n        this.show();\n      }\n    }\n\n    show() {\n      if (this._isTransitioning || this._isShown()) {\n        return;\n      }\n\n      let actives = [];\n      let activesData;\n\n      if (this._config.parent) {\n        const children = SelectorEngine.find(CLASS_NAME_DEEPER_CHILDREN, this._config.parent);\n        actives = SelectorEngine.find(SELECTOR_ACTIVES, this._config.parent).filter(elem => !children.includes(elem)); // remove children if greater depth\n      }\n\n      const container = SelectorEngine.findOne(this._selector);\n\n      if (actives.length) {\n        const tempActiveData = actives.find(elem => container !== elem);\n        activesData = tempActiveData ? Collapse.getInstance(tempActiveData) : null;\n\n        if (activesData && activesData._isTransitioning) {\n          return;\n        }\n      }\n\n      const startEvent = EventHandler.trigger(this._element, EVENT_SHOW$5);\n\n      if (startEvent.defaultPrevented) {\n        return;\n      }\n\n      actives.forEach(elemActive => {\n        if (container !== elemActive) {\n          Collapse.getOrCreateInstance(elemActive, {\n            toggle: false\n          }).hide();\n        }\n\n        if (!activesData) {\n          Data.set(elemActive, DATA_KEY$9, null);\n        }\n      });\n\n      const dimension = this._getDimension();\n\n      this._element.classList.remove(CLASS_NAME_COLLAPSE);\n\n      this._element.classList.add(CLASS_NAME_COLLAPSING);\n\n      this._element.style[dimension] = 0;\n\n      this._addAriaAndCollapsedClass(this._triggerArray, true);\n\n      this._isTransitioning = true;\n\n      const complete = () => {\n        this._isTransitioning = false;\n\n        this._element.classList.remove(CLASS_NAME_COLLAPSING);\n\n        this._element.classList.add(CLASS_NAME_COLLAPSE, CLASS_NAME_SHOW$7);\n\n        this._element.style[dimension] = '';\n        EventHandler.trigger(this._element, EVENT_SHOWN$5);\n      };\n\n      const capitalizedDimension = dimension[0].toUpperCase() + dimension.slice(1);\n      const scrollSize = `scroll${capitalizedDimension}`;\n\n      this._queueCallback(complete, this._element, true);\n\n      this._element.style[dimension] = `${this._element[scrollSize]}px`;\n    }\n\n    hide() {\n      if (this._isTransitioning || !this._isShown()) {\n        return;\n      }\n\n      const startEvent = EventHandler.trigger(this._element, EVENT_HIDE$5);\n\n      if (startEvent.defaultPrevented) {\n        return;\n      }\n\n      const dimension = this._getDimension();\n\n      this._element.style[dimension] = `${this._element.getBoundingClientRect()[dimension]}px`;\n      reflow(this._element);\n\n      this._element.classList.add(CLASS_NAME_COLLAPSING);\n\n      this._element.classList.remove(CLASS_NAME_COLLAPSE, CLASS_NAME_SHOW$7);\n\n      const triggerArrayLength = this._triggerArray.length;\n\n      for (let i = 0; i < triggerArrayLength; i++) {\n        const trigger = this._triggerArray[i];\n        const elem = getElementFromSelector(trigger);\n\n        if (elem && !this._isShown(elem)) {\n          this._addAriaAndCollapsedClass([trigger], false);\n        }\n      }\n\n      this._isTransitioning = true;\n\n      const complete = () => {\n        this._isTransitioning = false;\n\n        this._element.classList.remove(CLASS_NAME_COLLAPSING);\n\n        this._element.classList.add(CLASS_NAME_COLLAPSE);\n\n        EventHandler.trigger(this._element, EVENT_HIDDEN$5);\n      };\n\n      this._element.style[dimension] = '';\n\n      this._queueCallback(complete, this._element, true);\n    }\n\n    _isShown(element = this._element) {\n      return element.classList.contains(CLASS_NAME_SHOW$7);\n    } // Private\n\n\n    _getConfig(config) {\n      config = { ...Default$9,\n        ...Manipulator.getDataAttributes(this._element),\n        ...config\n      };\n      config.toggle = Boolean(config.toggle); // Coerce string values\n\n      config.parent = getElement(config.parent);\n      typeCheckConfig(NAME$a, config, DefaultType$9);\n      return config;\n    }\n\n    _getDimension() {\n      return this._element.classList.contains(CLASS_NAME_HORIZONTAL) ? WIDTH : HEIGHT;\n    }\n\n    _initializeChildren() {\n      if (!this._config.parent) {\n        return;\n      }\n\n      const children = SelectorEngine.find(CLASS_NAME_DEEPER_CHILDREN, this._config.parent);\n      SelectorEngine.find(SELECTOR_DATA_TOGGLE$4, this._config.parent).filter(elem => !children.includes(elem)).forEach(element => {\n        const selected = getElementFromSelector(element);\n\n        if (selected) {\n          this._addAriaAndCollapsedClass([element], this._isShown(selected));\n        }\n      });\n    }\n\n    _addAriaAndCollapsedClass(triggerArray, isOpen) {\n      if (!triggerArray.length) {\n        return;\n      }\n\n      triggerArray.forEach(elem => {\n        if (isOpen) {\n          elem.classList.remove(CLASS_NAME_COLLAPSED);\n        } else {\n          elem.classList.add(CLASS_NAME_COLLAPSED);\n        }\n\n        elem.setAttribute('aria-expanded', isOpen);\n      });\n    } // Static\n\n\n    static jQueryInterface(config) {\n      return this.each(function () {\n        const _config = {};\n\n        if (typeof config === 'string' && /show|hide/.test(config)) {\n          _config.toggle = false;\n        }\n\n        const data = Collapse.getOrCreateInstance(this, _config);\n\n        if (typeof config === 'string') {\n          if (typeof data[config] === 'undefined') {\n            throw new TypeError(`No method named \"${config}\"`);\n          }\n\n          data[config]();\n        }\n      });\n    }\n\n  }\n  /**\n   * ------------------------------------------------------------------------\n   * Data Api implementation\n   * ------------------------------------------------------------------------\n   */\n\n\n  EventHandler.on(document, EVENT_CLICK_DATA_API$4, SELECTOR_DATA_TOGGLE$4, function (event) {\n    // preventDefault only for <a> elements (which change the URL) not inside the collapsible element\n    if (event.target.tagName === 'A' || event.delegateTarget && event.delegateTarget.tagName === 'A') {\n      event.preventDefault();\n    }\n\n    const selector = getSelectorFromElement(this);\n    const selectorElements = SelectorEngine.find(selector);\n    selectorElements.forEach(element => {\n      Collapse.getOrCreateInstance(element, {\n        toggle: false\n      }).toggle();\n    });\n  });\n  /**\n   * ------------------------------------------------------------------------\n   * jQuery\n   * ------------------------------------------------------------------------\n   * add .Collapse to jQuery only if jQuery is present\n   */\n\n  defineJQueryPlugin(Collapse);\n\n  var top = 'top';\n  var bottom = 'bottom';\n  var right = 'right';\n  var left = 'left';\n  var auto = 'auto';\n  var basePlacements = [top, bottom, right, left];\n  var start = 'start';\n  var end = 'end';\n  var clippingParents = 'clippingParents';\n  var viewport = 'viewport';\n  var popper = 'popper';\n  var reference = 'reference';\n  var variationPlacements = /*#__PURE__*/basePlacements.reduce(function (acc, placement) {\n    return acc.concat([placement + \"-\" + start, placement + \"-\" + end]);\n  }, []);\n  var placements = /*#__PURE__*/[].concat(basePlacements, [auto]).reduce(function (acc, placement) {\n    return acc.concat([placement, placement + \"-\" + start, placement + \"-\" + end]);\n  }, []); // modifiers that need to read the DOM\n\n  var beforeRead = 'beforeRead';\n  var read = 'read';\n  var afterRead = 'afterRead'; // pure-logic modifiers\n\n  var beforeMain = 'beforeMain';\n  var main = 'main';\n  var afterMain = 'afterMain'; // modifier with the purpose to write to the DOM (or write into a framework state)\n\n  var beforeWrite = 'beforeWrite';\n  var write = 'write';\n  var afterWrite = 'afterWrite';\n  var modifierPhases = [beforeRead, read, afterRead, beforeMain, main, afterMain, beforeWrite, write, afterWrite];\n\n  function getNodeName(element) {\n    return element ? (element.nodeName || '').toLowerCase() : null;\n  }\n\n  function getWindow(node) {\n    if (node == null) {\n      return window;\n    }\n\n    if (node.toString() !== '[object Window]') {\n      var ownerDocument = node.ownerDocument;\n      return ownerDocument ? ownerDocument.defaultView || window : window;\n    }\n\n    return node;\n  }\n\n  function isElement(node) {\n    var OwnElement = getWindow(node).Element;\n    return node instanceof OwnElement || node instanceof Element;\n  }\n\n  function isHTMLElement(node) {\n    var OwnElement = getWindow(node).HTMLElement;\n    return node instanceof OwnElement || node instanceof HTMLElement;\n  }\n\n  function isShadowRoot(node) {\n    // IE 11 has no ShadowRoot\n    if (typeof ShadowRoot === 'undefined') {\n      return false;\n    }\n\n    var OwnElement = getWindow(node).ShadowRoot;\n    return node instanceof OwnElement || node instanceof ShadowRoot;\n  }\n\n  // and applies them to the HTMLElements such as popper and arrow\n\n  function applyStyles(_ref) {\n    var state = _ref.state;\n    Object.keys(state.elements).forEach(function (name) {\n      var style = state.styles[name] || {};\n      var attributes = state.attributes[name] || {};\n      var element = state.elements[name]; // arrow is optional + virtual elements\n\n      if (!isHTMLElement(element) || !getNodeName(element)) {\n        return;\n      } // Flow doesn't support to extend this property, but it's the most\n      // effective way to apply styles to an HTMLElement\n      // $FlowFixMe[cannot-write]\n\n\n      Object.assign(element.style, style);\n      Object.keys(attributes).forEach(function (name) {\n        var value = attributes[name];\n\n        if (value === false) {\n          element.removeAttribute(name);\n        } else {\n          element.setAttribute(name, value === true ? '' : value);\n        }\n      });\n    });\n  }\n\n  function effect$2(_ref2) {\n    var state = _ref2.state;\n    var initialStyles = {\n      popper: {\n        position: state.options.strategy,\n        left: '0',\n        top: '0',\n        margin: '0'\n      },\n      arrow: {\n        position: 'absolute'\n      },\n      reference: {}\n    };\n    Object.assign(state.elements.popper.style, initialStyles.popper);\n    state.styles = initialStyles;\n\n    if (state.elements.arrow) {\n      Object.assign(state.elements.arrow.style, initialStyles.arrow);\n    }\n\n    return function () {\n      Object.keys(state.elements).forEach(function (name) {\n        var element = state.elements[name];\n        var attributes = state.attributes[name] || {};\n        var styleProperties = Object.keys(state.styles.hasOwnProperty(name) ? state.styles[name] : initialStyles[name]); // Set all values to an empty string to unset them\n\n        var style = styleProperties.reduce(function (style, property) {\n          style[property] = '';\n          return style;\n        }, {}); // arrow is optional + virtual elements\n\n        if (!isHTMLElement(element) || !getNodeName(element)) {\n          return;\n        }\n\n        Object.assign(element.style, style);\n        Object.keys(attributes).forEach(function (attribute) {\n          element.removeAttribute(attribute);\n        });\n      });\n    };\n  } // eslint-disable-next-line import/no-unused-modules\n\n\n  const applyStyles$1 = {\n    name: 'applyStyles',\n    enabled: true,\n    phase: 'write',\n    fn: applyStyles,\n    effect: effect$2,\n    requires: ['computeStyles']\n  };\n\n  function getBasePlacement(placement) {\n    return placement.split('-')[0];\n  }\n\n  // import { isHTMLElement } from './instanceOf';\n  function getBoundingClientRect(element, // eslint-disable-next-line unused-imports/no-unused-vars\n  includeScale) {\n\n    var rect = element.getBoundingClientRect();\n    var scaleX = 1;\n    var scaleY = 1; // FIXME:\n    // `offsetWidth` returns an integer while `getBoundingClientRect`\n    // returns a float. This results in `scaleX` or `scaleY` being\n    // non-1 when it should be for elements that aren't a full pixel in\n    // width or height.\n    // if (isHTMLElement(element) && includeScale) {\n    //   const offsetHeight = element.offsetHeight;\n    //   const offsetWidth = element.offsetWidth;\n    //   // Do not attempt to divide by 0, otherwise we get `Infinity` as scale\n    //   // Fallback to 1 in case both values are `0`\n    //   if (offsetWidth > 0) {\n    //     scaleX = rect.width / offsetWidth || 1;\n    //   }\n    //   if (offsetHeight > 0) {\n    //     scaleY = rect.height / offsetHeight || 1;\n    //   }\n    // }\n\n    return {\n      width: rect.width / scaleX,\n      height: rect.height / scaleY,\n      top: rect.top / scaleY,\n      right: rect.right / scaleX,\n      bottom: rect.bottom / scaleY,\n      left: rect.left / scaleX,\n      x: rect.left / scaleX,\n      y: rect.top / scaleY\n    };\n  }\n\n  // means it doesn't take into account transforms.\n\n  function getLayoutRect(element) {\n    var clientRect = getBoundingClientRect(element); // Use the clientRect sizes if it's not been transformed.\n    // Fixes https://github.com/popperjs/popper-core/issues/1223\n\n    var width = element.offsetWidth;\n    var height = element.offsetHeight;\n\n    if (Math.abs(clientRect.width - width) <= 1) {\n      width = clientRect.width;\n    }\n\n    if (Math.abs(clientRect.height - height) <= 1) {\n      height = clientRect.height;\n    }\n\n    return {\n      x: element.offsetLeft,\n      y: element.offsetTop,\n      width: width,\n      height: height\n    };\n  }\n\n  function contains(parent, child) {\n    var rootNode = child.getRootNode && child.getRootNode(); // First, attempt with faster native method\n\n    if (parent.contains(child)) {\n      return true;\n    } // then fallback to custom implementation with Shadow DOM support\n    else if (rootNode && isShadowRoot(rootNode)) {\n        var next = child;\n\n        do {\n          if (next && parent.isSameNode(next)) {\n            return true;\n          } // $FlowFixMe[prop-missing]: need a better way to handle this...\n\n\n          next = next.parentNode || next.host;\n        } while (next);\n      } // Give up, the result is false\n\n\n    return false;\n  }\n\n  function getComputedStyle$1(element) {\n    return getWindow(element).getComputedStyle(element);\n  }\n\n  function isTableElement(element) {\n    return ['table', 'td', 'th'].indexOf(getNodeName(element)) >= 0;\n  }\n\n  function getDocumentElement(element) {\n    // $FlowFixMe[incompatible-return]: assume body is always available\n    return ((isElement(element) ? element.ownerDocument : // $FlowFixMe[prop-missing]\n    element.document) || window.document).documentElement;\n  }\n\n  function getParentNode(element) {\n    if (getNodeName(element) === 'html') {\n      return element;\n    }\n\n    return (// this is a quicker (but less type safe) way to save quite some bytes from the bundle\n      // $FlowFixMe[incompatible-return]\n      // $FlowFixMe[prop-missing]\n      element.assignedSlot || // step into the shadow DOM of the parent of a slotted node\n      element.parentNode || ( // DOM Element detected\n      isShadowRoot(element) ? element.host : null) || // ShadowRoot detected\n      // $FlowFixMe[incompatible-call]: HTMLElement is a Node\n      getDocumentElement(element) // fallback\n\n    );\n  }\n\n  function getTrueOffsetParent(element) {\n    if (!isHTMLElement(element) || // https://github.com/popperjs/popper-core/issues/837\n    getComputedStyle$1(element).position === 'fixed') {\n      return null;\n    }\n\n    return element.offsetParent;\n  } // `.offsetParent` reports `null` for fixed elements, while absolute elements\n  // return the containing block\n\n\n  function getContainingBlock(element) {\n    var isFirefox = navigator.userAgent.toLowerCase().indexOf('firefox') !== -1;\n    var isIE = navigator.userAgent.indexOf('Trident') !== -1;\n\n    if (isIE && isHTMLElement(element)) {\n      // In IE 9, 10 and 11 fixed elements containing block is always established by the viewport\n      var elementCss = getComputedStyle$1(element);\n\n      if (elementCss.position === 'fixed') {\n        return null;\n      }\n    }\n\n    var currentNode = getParentNode(element);\n\n    while (isHTMLElement(currentNode) && ['html', 'body'].indexOf(getNodeName(currentNode)) < 0) {\n      var css = getComputedStyle$1(currentNode); // This is non-exhaustive but covers the most common CSS properties that\n      // create a containing block.\n      // https://developer.mozilla.org/en-US/docs/Web/CSS/Containing_block#identifying_the_containing_block\n\n      if (css.transform !== 'none' || css.perspective !== 'none' || css.contain === 'paint' || ['transform', 'perspective'].indexOf(css.willChange) !== -1 || isFirefox && css.willChange === 'filter' || isFirefox && css.filter && css.filter !== 'none') {\n        return currentNode;\n      } else {\n        currentNode = currentNode.parentNode;\n      }\n    }\n\n    return null;\n  } // Gets the closest ancestor positioned element. Handles some edge cases,\n  // such as table ancestors and cross browser bugs.\n\n\n  function getOffsetParent(element) {\n    var window = getWindow(element);\n    var offsetParent = getTrueOffsetParent(element);\n\n    while (offsetParent && isTableElement(offsetParent) && getComputedStyle$1(offsetParent).position === 'static') {\n      offsetParent = getTrueOffsetParent(offsetParent);\n    }\n\n    if (offsetParent && (getNodeName(offsetParent) === 'html' || getNodeName(offsetParent) === 'body' && getComputedStyle$1(offsetParent).position === 'static')) {\n      return window;\n    }\n\n    return offsetParent || getContainingBlock(element) || window;\n  }\n\n  function getMainAxisFromPlacement(placement) {\n    return ['top', 'bottom'].indexOf(placement) >= 0 ? 'x' : 'y';\n  }\n\n  var max = Math.max;\n  var min = Math.min;\n  var round = Math.round;\n\n  function within(min$1, value, max$1) {\n    return max(min$1, min(value, max$1));\n  }\n\n  function getFreshSideObject() {\n    return {\n      top: 0,\n      right: 0,\n      bottom: 0,\n      left: 0\n    };\n  }\n\n  function mergePaddingObject(paddingObject) {\n    return Object.assign({}, getFreshSideObject(), paddingObject);\n  }\n\n  function expandToHashMap(value, keys) {\n    return keys.reduce(function (hashMap, key) {\n      hashMap[key] = value;\n      return hashMap;\n    }, {});\n  }\n\n  var toPaddingObject = function toPaddingObject(padding, state) {\n    padding = typeof padding === 'function' ? padding(Object.assign({}, state.rects, {\n      placement: state.placement\n    })) : padding;\n    return mergePaddingObject(typeof padding !== 'number' ? padding : expandToHashMap(padding, basePlacements));\n  };\n\n  function arrow(_ref) {\n    var _state$modifiersData$;\n\n    var state = _ref.state,\n        name = _ref.name,\n        options = _ref.options;\n    var arrowElement = state.elements.arrow;\n    var popperOffsets = state.modifiersData.popperOffsets;\n    var basePlacement = getBasePlacement(state.placement);\n    var axis = getMainAxisFromPlacement(basePlacement);\n    var isVertical = [left, right].indexOf(basePlacement) >= 0;\n    var len = isVertical ? 'height' : 'width';\n\n    if (!arrowElement || !popperOffsets) {\n      return;\n    }\n\n    var paddingObject = toPaddingObject(options.padding, state);\n    var arrowRect = getLayoutRect(arrowElement);\n    var minProp = axis === 'y' ? top : left;\n    var maxProp = axis === 'y' ? bottom : right;\n    var endDiff = state.rects.reference[len] + state.rects.reference[axis] - popperOffsets[axis] - state.rects.popper[len];\n    var startDiff = popperOffsets[axis] - state.rects.reference[axis];\n    var arrowOffsetParent = getOffsetParent(arrowElement);\n    var clientSize = arrowOffsetParent ? axis === 'y' ? arrowOffsetParent.clientHeight || 0 : arrowOffsetParent.clientWidth || 0 : 0;\n    var centerToReference = endDiff / 2 - startDiff / 2; // Make sure the arrow doesn't overflow the popper if the center point is\n    // outside of the popper bounds\n\n    var min = paddingObject[minProp];\n    var max = clientSize - arrowRect[len] - paddingObject[maxProp];\n    var center = clientSize / 2 - arrowRect[len] / 2 + centerToReference;\n    var offset = within(min, center, max); // Prevents breaking syntax highlighting...\n\n    var axisProp = axis;\n    state.modifiersData[name] = (_state$modifiersData$ = {}, _state$modifiersData$[axisProp] = offset, _state$modifiersData$.centerOffset = offset - center, _state$modifiersData$);\n  }\n\n  function effect$1(_ref2) {\n    var state = _ref2.state,\n        options = _ref2.options;\n    var _options$element = options.element,\n        arrowElement = _options$element === void 0 ? '[data-popper-arrow]' : _options$element;\n\n    if (arrowElement == null) {\n      return;\n    } // CSS selector\n\n\n    if (typeof arrowElement === 'string') {\n      arrowElement = state.elements.popper.querySelector(arrowElement);\n\n      if (!arrowElement) {\n        return;\n      }\n    }\n\n    if (!contains(state.elements.popper, arrowElement)) {\n\n      return;\n    }\n\n    state.elements.arrow = arrowElement;\n  } // eslint-disable-next-line import/no-unused-modules\n\n\n  const arrow$1 = {\n    name: 'arrow',\n    enabled: true,\n    phase: 'main',\n    fn: arrow,\n    effect: effect$1,\n    requires: ['popperOffsets'],\n    requiresIfExists: ['preventOverflow']\n  };\n\n  function getVariation(placement) {\n    return placement.split('-')[1];\n  }\n\n  var unsetSides = {\n    top: 'auto',\n    right: 'auto',\n    bottom: 'auto',\n    left: 'auto'\n  }; // Round the offsets to the nearest suitable subpixel based on the DPR.\n  // Zooming can change the DPR, but it seems to report a value that will\n  // cleanly divide the values into the appropriate subpixels.\n\n  function roundOffsetsByDPR(_ref) {\n    var x = _ref.x,\n        y = _ref.y;\n    var win = window;\n    var dpr = win.devicePixelRatio || 1;\n    return {\n      x: round(round(x * dpr) / dpr) || 0,\n      y: round(round(y * dpr) / dpr) || 0\n    };\n  }\n\n  function mapToStyles(_ref2) {\n    var _Object$assign2;\n\n    var popper = _ref2.popper,\n        popperRect = _ref2.popperRect,\n        placement = _ref2.placement,\n        variation = _ref2.variation,\n        offsets = _ref2.offsets,\n        position = _ref2.position,\n        gpuAcceleration = _ref2.gpuAcceleration,\n        adaptive = _ref2.adaptive,\n        roundOffsets = _ref2.roundOffsets;\n\n    var _ref3 = roundOffsets === true ? roundOffsetsByDPR(offsets) : typeof roundOffsets === 'function' ? roundOffsets(offsets) : offsets,\n        _ref3$x = _ref3.x,\n        x = _ref3$x === void 0 ? 0 : _ref3$x,\n        _ref3$y = _ref3.y,\n        y = _ref3$y === void 0 ? 0 : _ref3$y;\n\n    var hasX = offsets.hasOwnProperty('x');\n    var hasY = offsets.hasOwnProperty('y');\n    var sideX = left;\n    var sideY = top;\n    var win = window;\n\n    if (adaptive) {\n      var offsetParent = getOffsetParent(popper);\n      var heightProp = 'clientHeight';\n      var widthProp = 'clientWidth';\n\n      if (offsetParent === getWindow(popper)) {\n        offsetParent = getDocumentElement(popper);\n\n        if (getComputedStyle$1(offsetParent).position !== 'static' && position === 'absolute') {\n          heightProp = 'scrollHeight';\n          widthProp = 'scrollWidth';\n        }\n      } // $FlowFixMe[incompatible-cast]: force type refinement, we compare offsetParent with window above, but Flow doesn't detect it\n\n\n      offsetParent = offsetParent;\n\n      if (placement === top || (placement === left || placement === right) && variation === end) {\n        sideY = bottom; // $FlowFixMe[prop-missing]\n\n        y -= offsetParent[heightProp] - popperRect.height;\n        y *= gpuAcceleration ? 1 : -1;\n      }\n\n      if (placement === left || (placement === top || placement === bottom) && variation === end) {\n        sideX = right; // $FlowFixMe[prop-missing]\n\n        x -= offsetParent[widthProp] - popperRect.width;\n        x *= gpuAcceleration ? 1 : -1;\n      }\n    }\n\n    var commonStyles = Object.assign({\n      position: position\n    }, adaptive && unsetSides);\n\n    if (gpuAcceleration) {\n      var _Object$assign;\n\n      return Object.assign({}, commonStyles, (_Object$assign = {}, _Object$assign[sideY] = hasY ? '0' : '', _Object$assign[sideX] = hasX ? '0' : '', _Object$assign.transform = (win.devicePixelRatio || 1) <= 1 ? \"translate(\" + x + \"px, \" + y + \"px)\" : \"translate3d(\" + x + \"px, \" + y + \"px, 0)\", _Object$assign));\n    }\n\n    return Object.assign({}, commonStyles, (_Object$assign2 = {}, _Object$assign2[sideY] = hasY ? y + \"px\" : '', _Object$assign2[sideX] = hasX ? x + \"px\" : '', _Object$assign2.transform = '', _Object$assign2));\n  }\n\n  function computeStyles(_ref4) {\n    var state = _ref4.state,\n        options = _ref4.options;\n    var _options$gpuAccelerat = options.gpuAcceleration,\n        gpuAcceleration = _options$gpuAccelerat === void 0 ? true : _options$gpuAccelerat,\n        _options$adaptive = options.adaptive,\n        adaptive = _options$adaptive === void 0 ? true : _options$adaptive,\n        _options$roundOffsets = options.roundOffsets,\n        roundOffsets = _options$roundOffsets === void 0 ? true : _options$roundOffsets;\n\n    var commonStyles = {\n      placement: getBasePlacement(state.placement),\n      variation: getVariation(state.placement),\n      popper: state.elements.popper,\n      popperRect: state.rects.popper,\n      gpuAcceleration: gpuAcceleration\n    };\n\n    if (state.modifiersData.popperOffsets != null) {\n      state.styles.popper = Object.assign({}, state.styles.popper, mapToStyles(Object.assign({}, commonStyles, {\n        offsets: state.modifiersData.popperOffsets,\n        position: state.options.strategy,\n        adaptive: adaptive,\n        roundOffsets: roundOffsets\n      })));\n    }\n\n    if (state.modifiersData.arrow != null) {\n      state.styles.arrow = Object.assign({}, state.styles.arrow, mapToStyles(Object.assign({}, commonStyles, {\n        offsets: state.modifiersData.arrow,\n        position: 'absolute',\n        adaptive: false,\n        roundOffsets: roundOffsets\n      })));\n    }\n\n    state.attributes.popper = Object.assign({}, state.attributes.popper, {\n      'data-popper-placement': state.placement\n    });\n  } // eslint-disable-next-line import/no-unused-modules\n\n\n  const computeStyles$1 = {\n    name: 'computeStyles',\n    enabled: true,\n    phase: 'beforeWrite',\n    fn: computeStyles,\n    data: {}\n  };\n\n  var passive = {\n    passive: true\n  };\n\n  function effect(_ref) {\n    var state = _ref.state,\n        instance = _ref.instance,\n        options = _ref.options;\n    var _options$scroll = options.scroll,\n        scroll = _options$scroll === void 0 ? true : _options$scroll,\n        _options$resize = options.resize,\n        resize = _options$resize === void 0 ? true : _options$resize;\n    var window = getWindow(state.elements.popper);\n    var scrollParents = [].concat(state.scrollParents.reference, state.scrollParents.popper);\n\n    if (scroll) {\n      scrollParents.forEach(function (scrollParent) {\n        scrollParent.addEventListener('scroll', instance.update, passive);\n      });\n    }\n\n    if (resize) {\n      window.addEventListener('resize', instance.update, passive);\n    }\n\n    return function () {\n      if (scroll) {\n        scrollParents.forEach(function (scrollParent) {\n          scrollParent.removeEventListener('scroll', instance.update, passive);\n        });\n      }\n\n      if (resize) {\n        window.removeEventListener('resize', instance.update, passive);\n      }\n    };\n  } // eslint-disable-next-line import/no-unused-modules\n\n\n  const eventListeners = {\n    name: 'eventListeners',\n    enabled: true,\n    phase: 'write',\n    fn: function fn() {},\n    effect: effect,\n    data: {}\n  };\n\n  var hash$1 = {\n    left: 'right',\n    right: 'left',\n    bottom: 'top',\n    top: 'bottom'\n  };\n  function getOppositePlacement(placement) {\n    return placement.replace(/left|right|bottom|top/g, function (matched) {\n      return hash$1[matched];\n    });\n  }\n\n  var hash = {\n    start: 'end',\n    end: 'start'\n  };\n  function getOppositeVariationPlacement(placement) {\n    return placement.replace(/start|end/g, function (matched) {\n      return hash[matched];\n    });\n  }\n\n  function getWindowScroll(node) {\n    var win = getWindow(node);\n    var scrollLeft = win.pageXOffset;\n    var scrollTop = win.pageYOffset;\n    return {\n      scrollLeft: scrollLeft,\n      scrollTop: scrollTop\n    };\n  }\n\n  function getWindowScrollBarX(element) {\n    // If <html> has a CSS width greater than the viewport, then this will be\n    // incorrect for RTL.\n    // Popper 1 is broken in this case and never had a bug report so let's assume\n    // it's not an issue. I don't think anyone ever specifies width on <html>\n    // anyway.\n    // Browsers where the left scrollbar doesn't cause an issue report `0` for\n    // this (e.g. Edge 2019, IE11, Safari)\n    return getBoundingClientRect(getDocumentElement(element)).left + getWindowScroll(element).scrollLeft;\n  }\n\n  function getViewportRect(element) {\n    var win = getWindow(element);\n    var html = getDocumentElement(element);\n    var visualViewport = win.visualViewport;\n    var width = html.clientWidth;\n    var height = html.clientHeight;\n    var x = 0;\n    var y = 0; // NB: This isn't supported on iOS <= 12. If the keyboard is open, the popper\n    // can be obscured underneath it.\n    // Also, `html.clientHeight` adds the bottom bar height in Safari iOS, even\n    // if it isn't open, so if this isn't available, the popper will be detected\n    // to overflow the bottom of the screen too early.\n\n    if (visualViewport) {\n      width = visualViewport.width;\n      height = visualViewport.height; // Uses Layout Viewport (like Chrome; Safari does not currently)\n      // In Chrome, it returns a value very close to 0 (+/-) but contains rounding\n      // errors due to floating point numbers, so we need to check precision.\n      // Safari returns a number <= 0, usually < -1 when pinch-zoomed\n      // Feature detection fails in mobile emulation mode in Chrome.\n      // Math.abs(win.innerWidth / visualViewport.scale - visualViewport.width) <\n      // 0.001\n      // Fallback here: \"Not Safari\" userAgent\n\n      if (!/^((?!chrome|android).)*safari/i.test(navigator.userAgent)) {\n        x = visualViewport.offsetLeft;\n        y = visualViewport.offsetTop;\n      }\n    }\n\n    return {\n      width: width,\n      height: height,\n      x: x + getWindowScrollBarX(element),\n      y: y\n    };\n  }\n\n  // of the `<html>` and `<body>` rect bounds if horizontally scrollable\n\n  function getDocumentRect(element) {\n    var _element$ownerDocumen;\n\n    var html = getDocumentElement(element);\n    var winScroll = getWindowScroll(element);\n    var body = (_element$ownerDocumen = element.ownerDocument) == null ? void 0 : _element$ownerDocumen.body;\n    var width = max(html.scrollWidth, html.clientWidth, body ? body.scrollWidth : 0, body ? body.clientWidth : 0);\n    var height = max(html.scrollHeight, html.clientHeight, body ? body.scrollHeight : 0, body ? body.clientHeight : 0);\n    var x = -winScroll.scrollLeft + getWindowScrollBarX(element);\n    var y = -winScroll.scrollTop;\n\n    if (getComputedStyle$1(body || html).direction === 'rtl') {\n      x += max(html.clientWidth, body ? body.clientWidth : 0) - width;\n    }\n\n    return {\n      width: width,\n      height: height,\n      x: x,\n      y: y\n    };\n  }\n\n  function isScrollParent(element) {\n    // Firefox wants us to check `-x` and `-y` variations as well\n    var _getComputedStyle = getComputedStyle$1(element),\n        overflow = _getComputedStyle.overflow,\n        overflowX = _getComputedStyle.overflowX,\n        overflowY = _getComputedStyle.overflowY;\n\n    return /auto|scroll|overlay|hidden/.test(overflow + overflowY + overflowX);\n  }\n\n  function getScrollParent(node) {\n    if (['html', 'body', '#document'].indexOf(getNodeName(node)) >= 0) {\n      // $FlowFixMe[incompatible-return]: assume body is always available\n      return node.ownerDocument.body;\n    }\n\n    if (isHTMLElement(node) && isScrollParent(node)) {\n      return node;\n    }\n\n    return getScrollParent(getParentNode(node));\n  }\n\n  /*\n  given a DOM element, return the list of all scroll parents, up the list of ancesors\n  until we get to the top window object. This list is what we attach scroll listeners\n  to, because if any of these parent elements scroll, we'll need to re-calculate the\n  reference element's position.\n  */\n\n  function listScrollParents(element, list) {\n    var _element$ownerDocumen;\n\n    if (list === void 0) {\n      list = [];\n    }\n\n    var scrollParent = getScrollParent(element);\n    var isBody = scrollParent === ((_element$ownerDocumen = element.ownerDocument) == null ? void 0 : _element$ownerDocumen.body);\n    var win = getWindow(scrollParent);\n    var target = isBody ? [win].concat(win.visualViewport || [], isScrollParent(scrollParent) ? scrollParent : []) : scrollParent;\n    var updatedList = list.concat(target);\n    return isBody ? updatedList : // $FlowFixMe[incompatible-call]: isBody tells us target will be an HTMLElement here\n    updatedList.concat(listScrollParents(getParentNode(target)));\n  }\n\n  function rectToClientRect(rect) {\n    return Object.assign({}, rect, {\n      left: rect.x,\n      top: rect.y,\n      right: rect.x + rect.width,\n      bottom: rect.y + rect.height\n    });\n  }\n\n  function getInnerBoundingClientRect(element) {\n    var rect = getBoundingClientRect(element);\n    rect.top = rect.top + element.clientTop;\n    rect.left = rect.left + element.clientLeft;\n    rect.bottom = rect.top + element.clientHeight;\n    rect.right = rect.left + element.clientWidth;\n    rect.width = element.clientWidth;\n    rect.height = element.clientHeight;\n    rect.x = rect.left;\n    rect.y = rect.top;\n    return rect;\n  }\n\n  function getClientRectFromMixedType(element, clippingParent) {\n    return clippingParent === viewport ? rectToClientRect(getViewportRect(element)) : isHTMLElement(clippingParent) ? getInnerBoundingClientRect(clippingParent) : rectToClientRect(getDocumentRect(getDocumentElement(element)));\n  } // A \"clipping parent\" is an overflowable container with the characteristic of\n  // clipping (or hiding) overflowing elements with a position different from\n  // `initial`\n\n\n  function getClippingParents(element) {\n    var clippingParents = listScrollParents(getParentNode(element));\n    var canEscapeClipping = ['absolute', 'fixed'].indexOf(getComputedStyle$1(element).position) >= 0;\n    var clipperElement = canEscapeClipping && isHTMLElement(element) ? getOffsetParent(element) : element;\n\n    if (!isElement(clipperElement)) {\n      return [];\n    } // $FlowFixMe[incompatible-return]: https://github.com/facebook/flow/issues/1414\n\n\n    return clippingParents.filter(function (clippingParent) {\n      return isElement(clippingParent) && contains(clippingParent, clipperElement) && getNodeName(clippingParent) !== 'body';\n    });\n  } // Gets the maximum area that the element is visible in due to any number of\n  // clipping parents\n\n\n  function getClippingRect(element, boundary, rootBoundary) {\n    var mainClippingParents = boundary === 'clippingParents' ? getClippingParents(element) : [].concat(boundary);\n    var clippingParents = [].concat(mainClippingParents, [rootBoundary]);\n    var firstClippingParent = clippingParents[0];\n    var clippingRect = clippingParents.reduce(function (accRect, clippingParent) {\n      var rect = getClientRectFromMixedType(element, clippingParent);\n      accRect.top = max(rect.top, accRect.top);\n      accRect.right = min(rect.right, accRect.right);\n      accRect.bottom = min(rect.bottom, accRect.bottom);\n      accRect.left = max(rect.left, accRect.left);\n      return accRect;\n    }, getClientRectFromMixedType(element, firstClippingParent));\n    clippingRect.width = clippingRect.right - clippingRect.left;\n    clippingRect.height = clippingRect.bottom - clippingRect.top;\n    clippingRect.x = clippingRect.left;\n    clippingRect.y = clippingRect.top;\n    return clippingRect;\n  }\n\n  function computeOffsets(_ref) {\n    var reference = _ref.reference,\n        element = _ref.element,\n        placement = _ref.placement;\n    var basePlacement = placement ? getBasePlacement(placement) : null;\n    var variation = placement ? getVariation(placement) : null;\n    var commonX = reference.x + reference.width / 2 - element.width / 2;\n    var commonY = reference.y + reference.height / 2 - element.height / 2;\n    var offsets;\n\n    switch (basePlacement) {\n      case top:\n        offsets = {\n          x: commonX,\n          y: reference.y - element.height\n        };\n        break;\n\n      case bottom:\n        offsets = {\n          x: commonX,\n          y: reference.y + reference.height\n        };\n        break;\n\n      case right:\n        offsets = {\n          x: reference.x + reference.width,\n          y: commonY\n        };\n        break;\n\n      case left:\n        offsets = {\n          x: reference.x - element.width,\n          y: commonY\n        };\n        break;\n\n      default:\n        offsets = {\n          x: reference.x,\n          y: reference.y\n        };\n    }\n\n    var mainAxis = basePlacement ? getMainAxisFromPlacement(basePlacement) : null;\n\n    if (mainAxis != null) {\n      var len = mainAxis === 'y' ? 'height' : 'width';\n\n      switch (variation) {\n        case start:\n          offsets[mainAxis] = offsets[mainAxis] - (reference[len] / 2 - element[len] / 2);\n          break;\n\n        case end:\n          offsets[mainAxis] = offsets[mainAxis] + (reference[len] / 2 - element[len] / 2);\n          break;\n      }\n    }\n\n    return offsets;\n  }\n\n  function detectOverflow(state, options) {\n    if (options === void 0) {\n      options = {};\n    }\n\n    var _options = options,\n        _options$placement = _options.placement,\n        placement = _options$placement === void 0 ? state.placement : _options$placement,\n        _options$boundary = _options.boundary,\n        boundary = _options$boundary === void 0 ? clippingParents : _options$boundary,\n        _options$rootBoundary = _options.rootBoundary,\n        rootBoundary = _options$rootBoundary === void 0 ? viewport : _options$rootBoundary,\n        _options$elementConte = _options.elementContext,\n        elementContext = _options$elementConte === void 0 ? popper : _options$elementConte,\n        _options$altBoundary = _options.altBoundary,\n        altBoundary = _options$altBoundary === void 0 ? false : _options$altBoundary,\n        _options$padding = _options.padding,\n        padding = _options$padding === void 0 ? 0 : _options$padding;\n    var paddingObject = mergePaddingObject(typeof padding !== 'number' ? padding : expandToHashMap(padding, basePlacements));\n    var altContext = elementContext === popper ? reference : popper;\n    var popperRect = state.rects.popper;\n    var element = state.elements[altBoundary ? altContext : elementContext];\n    var clippingClientRect = getClippingRect(isElement(element) ? element : element.contextElement || getDocumentElement(state.elements.popper), boundary, rootBoundary);\n    var referenceClientRect = getBoundingClientRect(state.elements.reference);\n    var popperOffsets = computeOffsets({\n      reference: referenceClientRect,\n      element: popperRect,\n      strategy: 'absolute',\n      placement: placement\n    });\n    var popperClientRect = rectToClientRect(Object.assign({}, popperRect, popperOffsets));\n    var elementClientRect = elementContext === popper ? popperClientRect : referenceClientRect; // positive = overflowing the clipping rect\n    // 0 or negative = within the clipping rect\n\n    var overflowOffsets = {\n      top: clippingClientRect.top - elementClientRect.top + paddingObject.top,\n      bottom: elementClientRect.bottom - clippingClientRect.bottom + paddingObject.bottom,\n      left: clippingClientRect.left - elementClientRect.left + paddingObject.left,\n      right: elementClientRect.right - clippingClientRect.right + paddingObject.right\n    };\n    var offsetData = state.modifiersData.offset; // Offsets can be applied only to the popper element\n\n    if (elementContext === popper && offsetData) {\n      var offset = offsetData[placement];\n      Object.keys(overflowOffsets).forEach(function (key) {\n        var multiply = [right, bottom].indexOf(key) >= 0 ? 1 : -1;\n        var axis = [top, bottom].indexOf(key) >= 0 ? 'y' : 'x';\n        overflowOffsets[key] += offset[axis] * multiply;\n      });\n    }\n\n    return overflowOffsets;\n  }\n\n  function computeAutoPlacement(state, options) {\n    if (options === void 0) {\n      options = {};\n    }\n\n    var _options = options,\n        placement = _options.placement,\n        boundary = _options.boundary,\n        rootBoundary = _options.rootBoundary,\n        padding = _options.padding,\n        flipVariations = _options.flipVariations,\n        _options$allowedAutoP = _options.allowedAutoPlacements,\n        allowedAutoPlacements = _options$allowedAutoP === void 0 ? placements : _options$allowedAutoP;\n    var variation = getVariation(placement);\n    var placements$1 = variation ? flipVariations ? variationPlacements : variationPlacements.filter(function (placement) {\n      return getVariation(placement) === variation;\n    }) : basePlacements;\n    var allowedPlacements = placements$1.filter(function (placement) {\n      return allowedAutoPlacements.indexOf(placement) >= 0;\n    });\n\n    if (allowedPlacements.length === 0) {\n      allowedPlacements = placements$1;\n    } // $FlowFixMe[incompatible-type]: Flow seems to have problems with two array unions...\n\n\n    var overflows = allowedPlacements.reduce(function (acc, placement) {\n      acc[placement] = detectOverflow(state, {\n        placement: placement,\n        boundary: boundary,\n        rootBoundary: rootBoundary,\n        padding: padding\n      })[getBasePlacement(placement)];\n      return acc;\n    }, {});\n    return Object.keys(overflows).sort(function (a, b) {\n      return overflows[a] - overflows[b];\n    });\n  }\n\n  function getExpandedFallbackPlacements(placement) {\n    if (getBasePlacement(placement) === auto) {\n      return [];\n    }\n\n    var oppositePlacement = getOppositePlacement(placement);\n    return [getOppositeVariationPlacement(placement), oppositePlacement, getOppositeVariationPlacement(oppositePlacement)];\n  }\n\n  function flip(_ref) {\n    var state = _ref.state,\n        options = _ref.options,\n        name = _ref.name;\n\n    if (state.modifiersData[name]._skip) {\n      return;\n    }\n\n    var _options$mainAxis = options.mainAxis,\n        checkMainAxis = _options$mainAxis === void 0 ? true : _options$mainAxis,\n        _options$altAxis = options.altAxis,\n        checkAltAxis = _options$altAxis === void 0 ? true : _options$altAxis,\n        specifiedFallbackPlacements = options.fallbackPlacements,\n        padding = options.padding,\n        boundary = options.boundary,\n        rootBoundary = options.rootBoundary,\n        altBoundary = options.altBoundary,\n        _options$flipVariatio = options.flipVariations,\n        flipVariations = _options$flipVariatio === void 0 ? true : _options$flipVariatio,\n        allowedAutoPlacements = options.allowedAutoPlacements;\n    var preferredPlacement = state.options.placement;\n    var basePlacement = getBasePlacement(preferredPlacement);\n    var isBasePlacement = basePlacement === preferredPlacement;\n    var fallbackPlacements = specifiedFallbackPlacements || (isBasePlacement || !flipVariations ? [getOppositePlacement(preferredPlacement)] : getExpandedFallbackPlacements(preferredPlacement));\n    var placements = [preferredPlacement].concat(fallbackPlacements).reduce(function (acc, placement) {\n      return acc.concat(getBasePlacement(placement) === auto ? computeAutoPlacement(state, {\n        placement: placement,\n        boundary: boundary,\n        rootBoundary: rootBoundary,\n        padding: padding,\n        flipVariations: flipVariations,\n        allowedAutoPlacements: allowedAutoPlacements\n      }) : placement);\n    }, []);\n    var referenceRect = state.rects.reference;\n    var popperRect = state.rects.popper;\n    var checksMap = new Map();\n    var makeFallbackChecks = true;\n    var firstFittingPlacement = placements[0];\n\n    for (var i = 0; i < placements.length; i++) {\n      var placement = placements[i];\n\n      var _basePlacement = getBasePlacement(placement);\n\n      var isStartVariation = getVariation(placement) === start;\n      var isVertical = [top, bottom].indexOf(_basePlacement) >= 0;\n      var len = isVertical ? 'width' : 'height';\n      var overflow = detectOverflow(state, {\n        placement: placement,\n        boundary: boundary,\n        rootBoundary: rootBoundary,\n        altBoundary: altBoundary,\n        padding: padding\n      });\n      var mainVariationSide = isVertical ? isStartVariation ? right : left : isStartVariation ? bottom : top;\n\n      if (referenceRect[len] > popperRect[len]) {\n        mainVariationSide = getOppositePlacement(mainVariationSide);\n      }\n\n      var altVariationSide = getOppositePlacement(mainVariationSide);\n      var checks = [];\n\n      if (checkMainAxis) {\n        checks.push(overflow[_basePlacement] <= 0);\n      }\n\n      if (checkAltAxis) {\n        checks.push(overflow[mainVariationSide] <= 0, overflow[altVariationSide] <= 0);\n      }\n\n      if (checks.every(function (check) {\n        return check;\n      })) {\n        firstFittingPlacement = placement;\n        makeFallbackChecks = false;\n        break;\n      }\n\n      checksMap.set(placement, checks);\n    }\n\n    if (makeFallbackChecks) {\n      // `2` may be desired in some cases – research later\n      var numberOfChecks = flipVariations ? 3 : 1;\n\n      var _loop = function _loop(_i) {\n        var fittingPlacement = placements.find(function (placement) {\n          var checks = checksMap.get(placement);\n\n          if (checks) {\n            return checks.slice(0, _i).every(function (check) {\n              return check;\n            });\n          }\n        });\n\n        if (fittingPlacement) {\n          firstFittingPlacement = fittingPlacement;\n          return \"break\";\n        }\n      };\n\n      for (var _i = numberOfChecks; _i > 0; _i--) {\n        var _ret = _loop(_i);\n\n        if (_ret === \"break\") break;\n      }\n    }\n\n    if (state.placement !== firstFittingPlacement) {\n      state.modifiersData[name]._skip = true;\n      state.placement = firstFittingPlacement;\n      state.reset = true;\n    }\n  } // eslint-disable-next-line import/no-unused-modules\n\n\n  const flip$1 = {\n    name: 'flip',\n    enabled: true,\n    phase: 'main',\n    fn: flip,\n    requiresIfExists: ['offset'],\n    data: {\n      _skip: false\n    }\n  };\n\n  function getSideOffsets(overflow, rect, preventedOffsets) {\n    if (preventedOffsets === void 0) {\n      preventedOffsets = {\n        x: 0,\n        y: 0\n      };\n    }\n\n    return {\n      top: overflow.top - rect.height - preventedOffsets.y,\n      right: overflow.right - rect.width + preventedOffsets.x,\n      bottom: overflow.bottom - rect.height + preventedOffsets.y,\n      left: overflow.left - rect.width - preventedOffsets.x\n    };\n  }\n\n  function isAnySideFullyClipped(overflow) {\n    return [top, right, bottom, left].some(function (side) {\n      return overflow[side] >= 0;\n    });\n  }\n\n  function hide(_ref) {\n    var state = _ref.state,\n        name = _ref.name;\n    var referenceRect = state.rects.reference;\n    var popperRect = state.rects.popper;\n    var preventedOffsets = state.modifiersData.preventOverflow;\n    var referenceOverflow = detectOverflow(state, {\n      elementContext: 'reference'\n    });\n    var popperAltOverflow = detectOverflow(state, {\n      altBoundary: true\n    });\n    var referenceClippingOffsets = getSideOffsets(referenceOverflow, referenceRect);\n    var popperEscapeOffsets = getSideOffsets(popperAltOverflow, popperRect, preventedOffsets);\n    var isReferenceHidden = isAnySideFullyClipped(referenceClippingOffsets);\n    var hasPopperEscaped = isAnySideFullyClipped(popperEscapeOffsets);\n    state.modifiersData[name] = {\n      referenceClippingOffsets: referenceClippingOffsets,\n      popperEscapeOffsets: popperEscapeOffsets,\n      isReferenceHidden: isReferenceHidden,\n      hasPopperEscaped: hasPopperEscaped\n    };\n    state.attributes.popper = Object.assign({}, state.attributes.popper, {\n      'data-popper-reference-hidden': isReferenceHidden,\n      'data-popper-escaped': hasPopperEscaped\n    });\n  } // eslint-disable-next-line import/no-unused-modules\n\n\n  const hide$1 = {\n    name: 'hide',\n    enabled: true,\n    phase: 'main',\n    requiresIfExists: ['preventOverflow'],\n    fn: hide\n  };\n\n  function distanceAndSkiddingToXY(placement, rects, offset) {\n    var basePlacement = getBasePlacement(placement);\n    var invertDistance = [left, top].indexOf(basePlacement) >= 0 ? -1 : 1;\n\n    var _ref = typeof offset === 'function' ? offset(Object.assign({}, rects, {\n      placement: placement\n    })) : offset,\n        skidding = _ref[0],\n        distance = _ref[1];\n\n    skidding = skidding || 0;\n    distance = (distance || 0) * invertDistance;\n    return [left, right].indexOf(basePlacement) >= 0 ? {\n      x: distance,\n      y: skidding\n    } : {\n      x: skidding,\n      y: distance\n    };\n  }\n\n  function offset(_ref2) {\n    var state = _ref2.state,\n        options = _ref2.options,\n        name = _ref2.name;\n    var _options$offset = options.offset,\n        offset = _options$offset === void 0 ? [0, 0] : _options$offset;\n    var data = placements.reduce(function (acc, placement) {\n      acc[placement] = distanceAndSkiddingToXY(placement, state.rects, offset);\n      return acc;\n    }, {});\n    var _data$state$placement = data[state.placement],\n        x = _data$state$placement.x,\n        y = _data$state$placement.y;\n\n    if (state.modifiersData.popperOffsets != null) {\n      state.modifiersData.popperOffsets.x += x;\n      state.modifiersData.popperOffsets.y += y;\n    }\n\n    state.modifiersData[name] = data;\n  } // eslint-disable-next-line import/no-unused-modules\n\n\n  const offset$1 = {\n    name: 'offset',\n    enabled: true,\n    phase: 'main',\n    requires: ['popperOffsets'],\n    fn: offset\n  };\n\n  function popperOffsets(_ref) {\n    var state = _ref.state,\n        name = _ref.name;\n    // Offsets are the actual position the popper needs to have to be\n    // properly positioned near its reference element\n    // This is the most basic placement, and will be adjusted by\n    // the modifiers in the next step\n    state.modifiersData[name] = computeOffsets({\n      reference: state.rects.reference,\n      element: state.rects.popper,\n      strategy: 'absolute',\n      placement: state.placement\n    });\n  } // eslint-disable-next-line import/no-unused-modules\n\n\n  const popperOffsets$1 = {\n    name: 'popperOffsets',\n    enabled: true,\n    phase: 'read',\n    fn: popperOffsets,\n    data: {}\n  };\n\n  function getAltAxis(axis) {\n    return axis === 'x' ? 'y' : 'x';\n  }\n\n  function preventOverflow(_ref) {\n    var state = _ref.state,\n        options = _ref.options,\n        name = _ref.name;\n    var _options$mainAxis = options.mainAxis,\n        checkMainAxis = _options$mainAxis === void 0 ? true : _options$mainAxis,\n        _options$altAxis = options.altAxis,\n        checkAltAxis = _options$altAxis === void 0 ? false : _options$altAxis,\n        boundary = options.boundary,\n        rootBoundary = options.rootBoundary,\n        altBoundary = options.altBoundary,\n        padding = options.padding,\n        _options$tether = options.tether,\n        tether = _options$tether === void 0 ? true : _options$tether,\n        _options$tetherOffset = options.tetherOffset,\n        tetherOffset = _options$tetherOffset === void 0 ? 0 : _options$tetherOffset;\n    var overflow = detectOverflow(state, {\n      boundary: boundary,\n      rootBoundary: rootBoundary,\n      padding: padding,\n      altBoundary: altBoundary\n    });\n    var basePlacement = getBasePlacement(state.placement);\n    var variation = getVariation(state.placement);\n    var isBasePlacement = !variation;\n    var mainAxis = getMainAxisFromPlacement(basePlacement);\n    var altAxis = getAltAxis(mainAxis);\n    var popperOffsets = state.modifiersData.popperOffsets;\n    var referenceRect = state.rects.reference;\n    var popperRect = state.rects.popper;\n    var tetherOffsetValue = typeof tetherOffset === 'function' ? tetherOffset(Object.assign({}, state.rects, {\n      placement: state.placement\n    })) : tetherOffset;\n    var data = {\n      x: 0,\n      y: 0\n    };\n\n    if (!popperOffsets) {\n      return;\n    }\n\n    if (checkMainAxis || checkAltAxis) {\n      var mainSide = mainAxis === 'y' ? top : left;\n      var altSide = mainAxis === 'y' ? bottom : right;\n      var len = mainAxis === 'y' ? 'height' : 'width';\n      var offset = popperOffsets[mainAxis];\n      var min$1 = popperOffsets[mainAxis] + overflow[mainSide];\n      var max$1 = popperOffsets[mainAxis] - overflow[altSide];\n      var additive = tether ? -popperRect[len] / 2 : 0;\n      var minLen = variation === start ? referenceRect[len] : popperRect[len];\n      var maxLen = variation === start ? -popperRect[len] : -referenceRect[len]; // We need to include the arrow in the calculation so the arrow doesn't go\n      // outside the reference bounds\n\n      var arrowElement = state.elements.arrow;\n      var arrowRect = tether && arrowElement ? getLayoutRect(arrowElement) : {\n        width: 0,\n        height: 0\n      };\n      var arrowPaddingObject = state.modifiersData['arrow#persistent'] ? state.modifiersData['arrow#persistent'].padding : getFreshSideObject();\n      var arrowPaddingMin = arrowPaddingObject[mainSide];\n      var arrowPaddingMax = arrowPaddingObject[altSide]; // If the reference length is smaller than the arrow length, we don't want\n      // to include its full size in the calculation. If the reference is small\n      // and near the edge of a boundary, the popper can overflow even if the\n      // reference is not overflowing as well (e.g. virtual elements with no\n      // width or height)\n\n      var arrowLen = within(0, referenceRect[len], arrowRect[len]);\n      var minOffset = isBasePlacement ? referenceRect[len] / 2 - additive - arrowLen - arrowPaddingMin - tetherOffsetValue : minLen - arrowLen - arrowPaddingMin - tetherOffsetValue;\n      var maxOffset = isBasePlacement ? -referenceRect[len] / 2 + additive + arrowLen + arrowPaddingMax + tetherOffsetValue : maxLen + arrowLen + arrowPaddingMax + tetherOffsetValue;\n      var arrowOffsetParent = state.elements.arrow && getOffsetParent(state.elements.arrow);\n      var clientOffset = arrowOffsetParent ? mainAxis === 'y' ? arrowOffsetParent.clientTop || 0 : arrowOffsetParent.clientLeft || 0 : 0;\n      var offsetModifierValue = state.modifiersData.offset ? state.modifiersData.offset[state.placement][mainAxis] : 0;\n      var tetherMin = popperOffsets[mainAxis] + minOffset - offsetModifierValue - clientOffset;\n      var tetherMax = popperOffsets[mainAxis] + maxOffset - offsetModifierValue;\n\n      if (checkMainAxis) {\n        var preventedOffset = within(tether ? min(min$1, tetherMin) : min$1, offset, tether ? max(max$1, tetherMax) : max$1);\n        popperOffsets[mainAxis] = preventedOffset;\n        data[mainAxis] = preventedOffset - offset;\n      }\n\n      if (checkAltAxis) {\n        var _mainSide = mainAxis === 'x' ? top : left;\n\n        var _altSide = mainAxis === 'x' ? bottom : right;\n\n        var _offset = popperOffsets[altAxis];\n\n        var _min = _offset + overflow[_mainSide];\n\n        var _max = _offset - overflow[_altSide];\n\n        var _preventedOffset = within(tether ? min(_min, tetherMin) : _min, _offset, tether ? max(_max, tetherMax) : _max);\n\n        popperOffsets[altAxis] = _preventedOffset;\n        data[altAxis] = _preventedOffset - _offset;\n      }\n    }\n\n    state.modifiersData[name] = data;\n  } // eslint-disable-next-line import/no-unused-modules\n\n\n  const preventOverflow$1 = {\n    name: 'preventOverflow',\n    enabled: true,\n    phase: 'main',\n    fn: preventOverflow,\n    requiresIfExists: ['offset']\n  };\n\n  function getHTMLElementScroll(element) {\n    return {\n      scrollLeft: element.scrollLeft,\n      scrollTop: element.scrollTop\n    };\n  }\n\n  function getNodeScroll(node) {\n    if (node === getWindow(node) || !isHTMLElement(node)) {\n      return getWindowScroll(node);\n    } else {\n      return getHTMLElementScroll(node);\n    }\n  }\n\n  function isElementScaled(element) {\n    var rect = element.getBoundingClientRect();\n    var scaleX = rect.width / element.offsetWidth || 1;\n    var scaleY = rect.height / element.offsetHeight || 1;\n    return scaleX !== 1 || scaleY !== 1;\n  } // Returns the composite rect of an element relative to its offsetParent.\n  // Composite means it takes into account transforms as well as layout.\n\n\n  function getCompositeRect(elementOrVirtualElement, offsetParent, isFixed) {\n    if (isFixed === void 0) {\n      isFixed = false;\n    }\n\n    var isOffsetParentAnElement = isHTMLElement(offsetParent);\n    isHTMLElement(offsetParent) && isElementScaled(offsetParent);\n    var documentElement = getDocumentElement(offsetParent);\n    var rect = getBoundingClientRect(elementOrVirtualElement);\n    var scroll = {\n      scrollLeft: 0,\n      scrollTop: 0\n    };\n    var offsets = {\n      x: 0,\n      y: 0\n    };\n\n    if (isOffsetParentAnElement || !isOffsetParentAnElement && !isFixed) {\n      if (getNodeName(offsetParent) !== 'body' || // https://github.com/popperjs/popper-core/issues/1078\n      isScrollParent(documentElement)) {\n        scroll = getNodeScroll(offsetParent);\n      }\n\n      if (isHTMLElement(offsetParent)) {\n        offsets = getBoundingClientRect(offsetParent);\n        offsets.x += offsetParent.clientLeft;\n        offsets.y += offsetParent.clientTop;\n      } else if (documentElement) {\n        offsets.x = getWindowScrollBarX(documentElement);\n      }\n    }\n\n    return {\n      x: rect.left + scroll.scrollLeft - offsets.x,\n      y: rect.top + scroll.scrollTop - offsets.y,\n      width: rect.width,\n      height: rect.height\n    };\n  }\n\n  function order(modifiers) {\n    var map = new Map();\n    var visited = new Set();\n    var result = [];\n    modifiers.forEach(function (modifier) {\n      map.set(modifier.name, modifier);\n    }); // On visiting object, check for its dependencies and visit them recursively\n\n    function sort(modifier) {\n      visited.add(modifier.name);\n      var requires = [].concat(modifier.requires || [], modifier.requiresIfExists || []);\n      requires.forEach(function (dep) {\n        if (!visited.has(dep)) {\n          var depModifier = map.get(dep);\n\n          if (depModifier) {\n            sort(depModifier);\n          }\n        }\n      });\n      result.push(modifier);\n    }\n\n    modifiers.forEach(function (modifier) {\n      if (!visited.has(modifier.name)) {\n        // check for visited object\n        sort(modifier);\n      }\n    });\n    return result;\n  }\n\n  function orderModifiers(modifiers) {\n    // order based on dependencies\n    var orderedModifiers = order(modifiers); // order based on phase\n\n    return modifierPhases.reduce(function (acc, phase) {\n      return acc.concat(orderedModifiers.filter(function (modifier) {\n        return modifier.phase === phase;\n      }));\n    }, []);\n  }\n\n  function debounce(fn) {\n    var pending;\n    return function () {\n      if (!pending) {\n        pending = new Promise(function (resolve) {\n          Promise.resolve().then(function () {\n            pending = undefined;\n            resolve(fn());\n          });\n        });\n      }\n\n      return pending;\n    };\n  }\n\n  function mergeByName(modifiers) {\n    var merged = modifiers.reduce(function (merged, current) {\n      var existing = merged[current.name];\n      merged[current.name] = existing ? Object.assign({}, existing, current, {\n        options: Object.assign({}, existing.options, current.options),\n        data: Object.assign({}, existing.data, current.data)\n      }) : current;\n      return merged;\n    }, {}); // IE11 does not support Object.values\n\n    return Object.keys(merged).map(function (key) {\n      return merged[key];\n    });\n  }\n\n  var DEFAULT_OPTIONS = {\n    placement: 'bottom',\n    modifiers: [],\n    strategy: 'absolute'\n  };\n\n  function areValidElements() {\n    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n\n    return !args.some(function (element) {\n      return !(element && typeof element.getBoundingClientRect === 'function');\n    });\n  }\n\n  function popperGenerator(generatorOptions) {\n    if (generatorOptions === void 0) {\n      generatorOptions = {};\n    }\n\n    var _generatorOptions = generatorOptions,\n        _generatorOptions$def = _generatorOptions.defaultModifiers,\n        defaultModifiers = _generatorOptions$def === void 0 ? [] : _generatorOptions$def,\n        _generatorOptions$def2 = _generatorOptions.defaultOptions,\n        defaultOptions = _generatorOptions$def2 === void 0 ? DEFAULT_OPTIONS : _generatorOptions$def2;\n    return function createPopper(reference, popper, options) {\n      if (options === void 0) {\n        options = defaultOptions;\n      }\n\n      var state = {\n        placement: 'bottom',\n        orderedModifiers: [],\n        options: Object.assign({}, DEFAULT_OPTIONS, defaultOptions),\n        modifiersData: {},\n        elements: {\n          reference: reference,\n          popper: popper\n        },\n        attributes: {},\n        styles: {}\n      };\n      var effectCleanupFns = [];\n      var isDestroyed = false;\n      var instance = {\n        state: state,\n        setOptions: function setOptions(setOptionsAction) {\n          var options = typeof setOptionsAction === 'function' ? setOptionsAction(state.options) : setOptionsAction;\n          cleanupModifierEffects();\n          state.options = Object.assign({}, defaultOptions, state.options, options);\n          state.scrollParents = {\n            reference: isElement(reference) ? listScrollParents(reference) : reference.contextElement ? listScrollParents(reference.contextElement) : [],\n            popper: listScrollParents(popper)\n          }; // Orders the modifiers based on their dependencies and `phase`\n          // properties\n\n          var orderedModifiers = orderModifiers(mergeByName([].concat(defaultModifiers, state.options.modifiers))); // Strip out disabled modifiers\n\n          state.orderedModifiers = orderedModifiers.filter(function (m) {\n            return m.enabled;\n          }); // Validate the provided modifiers so that the consumer will get warned\n\n          runModifierEffects();\n          return instance.update();\n        },\n        // Sync update – it will always be executed, even if not necessary. This\n        // is useful for low frequency updates where sync behavior simplifies the\n        // logic.\n        // For high frequency updates (e.g. `resize` and `scroll` events), always\n        // prefer the async Popper#update method\n        forceUpdate: function forceUpdate() {\n          if (isDestroyed) {\n            return;\n          }\n\n          var _state$elements = state.elements,\n              reference = _state$elements.reference,\n              popper = _state$elements.popper; // Don't proceed if `reference` or `popper` are not valid elements\n          // anymore\n\n          if (!areValidElements(reference, popper)) {\n\n            return;\n          } // Store the reference and popper rects to be read by modifiers\n\n\n          state.rects = {\n            reference: getCompositeRect(reference, getOffsetParent(popper), state.options.strategy === 'fixed'),\n            popper: getLayoutRect(popper)\n          }; // Modifiers have the ability to reset the current update cycle. The\n          // most common use case for this is the `flip` modifier changing the\n          // placement, which then needs to re-run all the modifiers, because the\n          // logic was previously ran for the previous placement and is therefore\n          // stale/incorrect\n\n          state.reset = false;\n          state.placement = state.options.placement; // On each update cycle, the `modifiersData` property for each modifier\n          // is filled with the initial data specified by the modifier. This means\n          // it doesn't persist and is fresh on each update.\n          // To ensure persistent data, use `${name}#persistent`\n\n          state.orderedModifiers.forEach(function (modifier) {\n            return state.modifiersData[modifier.name] = Object.assign({}, modifier.data);\n          });\n\n          for (var index = 0; index < state.orderedModifiers.length; index++) {\n\n            if (state.reset === true) {\n              state.reset = false;\n              index = -1;\n              continue;\n            }\n\n            var _state$orderedModifie = state.orderedModifiers[index],\n                fn = _state$orderedModifie.fn,\n                _state$orderedModifie2 = _state$orderedModifie.options,\n                _options = _state$orderedModifie2 === void 0 ? {} : _state$orderedModifie2,\n                name = _state$orderedModifie.name;\n\n            if (typeof fn === 'function') {\n              state = fn({\n                state: state,\n                options: _options,\n                name: name,\n                instance: instance\n              }) || state;\n            }\n          }\n        },\n        // Async and optimistically optimized update – it will not be executed if\n        // not necessary (debounced to run at most once-per-tick)\n        update: debounce(function () {\n          return new Promise(function (resolve) {\n            instance.forceUpdate();\n            resolve(state);\n          });\n        }),\n        destroy: function destroy() {\n          cleanupModifierEffects();\n          isDestroyed = true;\n        }\n      };\n\n      if (!areValidElements(reference, popper)) {\n\n        return instance;\n      }\n\n      instance.setOptions(options).then(function (state) {\n        if (!isDestroyed && options.onFirstUpdate) {\n          options.onFirstUpdate(state);\n        }\n      }); // Modifiers have the ability to execute arbitrary code before the first\n      // update cycle runs. They will be executed in the same order as the update\n      // cycle. This is useful when a modifier adds some persistent data that\n      // other modifiers need to use, but the modifier is run after the dependent\n      // one.\n\n      function runModifierEffects() {\n        state.orderedModifiers.forEach(function (_ref3) {\n          var name = _ref3.name,\n              _ref3$options = _ref3.options,\n              options = _ref3$options === void 0 ? {} : _ref3$options,\n              effect = _ref3.effect;\n\n          if (typeof effect === 'function') {\n            var cleanupFn = effect({\n              state: state,\n              name: name,\n              instance: instance,\n              options: options\n            });\n\n            var noopFn = function noopFn() {};\n\n            effectCleanupFns.push(cleanupFn || noopFn);\n          }\n        });\n      }\n\n      function cleanupModifierEffects() {\n        effectCleanupFns.forEach(function (fn) {\n          return fn();\n        });\n        effectCleanupFns = [];\n      }\n\n      return instance;\n    };\n  }\n  var createPopper$2 = /*#__PURE__*/popperGenerator(); // eslint-disable-next-line import/no-unused-modules\n\n  var defaultModifiers$1 = [eventListeners, popperOffsets$1, computeStyles$1, applyStyles$1];\n  var createPopper$1 = /*#__PURE__*/popperGenerator({\n    defaultModifiers: defaultModifiers$1\n  }); // eslint-disable-next-line import/no-unused-modules\n\n  var defaultModifiers = [eventListeners, popperOffsets$1, computeStyles$1, applyStyles$1, offset$1, flip$1, preventOverflow$1, arrow$1, hide$1];\n  var createPopper = /*#__PURE__*/popperGenerator({\n    defaultModifiers: defaultModifiers\n  }); // eslint-disable-next-line import/no-unused-modules\n\n  const Popper = /*#__PURE__*/Object.freeze({\n    __proto__: null,\n    popperGenerator,\n    detectOverflow,\n    createPopperBase: createPopper$2,\n    createPopper,\n    createPopperLite: createPopper$1,\n    top,\n    bottom,\n    right,\n    left,\n    auto,\n    basePlacements,\n    start,\n    end,\n    clippingParents,\n    viewport,\n    popper,\n    reference,\n    variationPlacements,\n    placements,\n    beforeRead,\n    read,\n    afterRead,\n    beforeMain,\n    main,\n    afterMain,\n    beforeWrite,\n    write,\n    afterWrite,\n    modifierPhases,\n    applyStyles: applyStyles$1,\n    arrow: arrow$1,\n    computeStyles: computeStyles$1,\n    eventListeners,\n    flip: flip$1,\n    hide: hide$1,\n    offset: offset$1,\n    popperOffsets: popperOffsets$1,\n    preventOverflow: preventOverflow$1\n  });\n\n  /**\n   * --------------------------------------------------------------------------\n   * Bootstrap (v5.1.3): dropdown.js\n   * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n   * --------------------------------------------------------------------------\n   */\n  /**\n   * ------------------------------------------------------------------------\n   * Constants\n   * ------------------------------------------------------------------------\n   */\n\n  const NAME$9 = 'dropdown';\n  const DATA_KEY$8 = 'bs.dropdown';\n  const EVENT_KEY$8 = `.${DATA_KEY$8}`;\n  const DATA_API_KEY$4 = '.data-api';\n  const ESCAPE_KEY$2 = 'Escape';\n  const SPACE_KEY = 'Space';\n  const TAB_KEY$1 = 'Tab';\n  const ARROW_UP_KEY = 'ArrowUp';\n  const ARROW_DOWN_KEY = 'ArrowDown';\n  const RIGHT_MOUSE_BUTTON = 2; // MouseEvent.button value for the secondary button, usually the right button\n\n  const REGEXP_KEYDOWN = new RegExp(`${ARROW_UP_KEY}|${ARROW_DOWN_KEY}|${ESCAPE_KEY$2}`);\n  const EVENT_HIDE$4 = `hide${EVENT_KEY$8}`;\n  const EVENT_HIDDEN$4 = `hidden${EVENT_KEY$8}`;\n  const EVENT_SHOW$4 = `show${EVENT_KEY$8}`;\n  const EVENT_SHOWN$4 = `shown${EVENT_KEY$8}`;\n  const EVENT_CLICK_DATA_API$3 = `click${EVENT_KEY$8}${DATA_API_KEY$4}`;\n  const EVENT_KEYDOWN_DATA_API = `keydown${EVENT_KEY$8}${DATA_API_KEY$4}`;\n  const EVENT_KEYUP_DATA_API = `keyup${EVENT_KEY$8}${DATA_API_KEY$4}`;\n  const CLASS_NAME_SHOW$6 = 'show';\n  const CLASS_NAME_DROPUP = 'dropup';\n  const CLASS_NAME_DROPEND = 'dropend';\n  const CLASS_NAME_DROPSTART = 'dropstart';\n  const CLASS_NAME_NAVBAR = 'navbar';\n  const SELECTOR_DATA_TOGGLE$3 = '[data-bs-toggle=\"dropdown\"]';\n  const SELECTOR_MENU = '.dropdown-menu';\n  const SELECTOR_NAVBAR_NAV = '.navbar-nav';\n  const SELECTOR_VISIBLE_ITEMS = '.dropdown-menu .dropdown-item:not(.disabled):not(:disabled)';\n  const PLACEMENT_TOP = isRTL() ? 'top-end' : 'top-start';\n  const PLACEMENT_TOPEND = isRTL() ? 'top-start' : 'top-end';\n  const PLACEMENT_BOTTOM = isRTL() ? 'bottom-end' : 'bottom-start';\n  const PLACEMENT_BOTTOMEND = isRTL() ? 'bottom-start' : 'bottom-end';\n  const PLACEMENT_RIGHT = isRTL() ? 'left-start' : 'right-start';\n  const PLACEMENT_LEFT = isRTL() ? 'right-start' : 'left-start';\n  const Default$8 = {\n    offset: [0, 2],\n    boundary: 'clippingParents',\n    reference: 'toggle',\n    display: 'dynamic',\n    popperConfig: null,\n    autoClose: true\n  };\n  const DefaultType$8 = {\n    offset: '(array|string|function)',\n    boundary: '(string|element)',\n    reference: '(string|element|object)',\n    display: 'string',\n    popperConfig: '(null|object|function)',\n    autoClose: '(boolean|string)'\n  };\n  /**\n   * ------------------------------------------------------------------------\n   * Class Definition\n   * ------------------------------------------------------------------------\n   */\n\n  class Dropdown extends BaseComponent {\n    constructor(element, config) {\n      super(element);\n      this._popper = null;\n      this._config = this._getConfig(config);\n      this._menu = this._getMenuElement();\n      this._inNavbar = this._detectNavbar();\n    } // Getters\n\n\n    static get Default() {\n      return Default$8;\n    }\n\n    static get DefaultType() {\n      return DefaultType$8;\n    }\n\n    static get NAME() {\n      return NAME$9;\n    } // Public\n\n\n    toggle() {\n      return this._isShown() ? this.hide() : this.show();\n    }\n\n    show() {\n      if (isDisabled(this._element) || this._isShown(this._menu)) {\n        return;\n      }\n\n      const relatedTarget = {\n        relatedTarget: this._element\n      };\n      const showEvent = EventHandler.trigger(this._element, EVENT_SHOW$4, relatedTarget);\n\n      if (showEvent.defaultPrevented) {\n        return;\n      }\n\n      const parent = Dropdown.getParentFromElement(this._element); // Totally disable Popper for Dropdowns in Navbar\n\n      if (this._inNavbar) {\n        Manipulator.setDataAttribute(this._menu, 'popper', 'none');\n      } else {\n        this._createPopper(parent);\n      } // If this is a touch-enabled device we add extra\n      // empty mouseover listeners to the body's immediate children;\n      // only needed because of broken event delegation on iOS\n      // https://www.quirksmode.org/blog/archives/2014/02/mouse_event_bub.html\n\n\n      if ('ontouchstart' in document.documentElement && !parent.closest(SELECTOR_NAVBAR_NAV)) {\n        [].concat(...document.body.children).forEach(elem => EventHandler.on(elem, 'mouseover', noop));\n      }\n\n      this._element.focus();\n\n      this._element.setAttribute('aria-expanded', true);\n\n      this._menu.classList.add(CLASS_NAME_SHOW$6);\n\n      this._element.classList.add(CLASS_NAME_SHOW$6);\n\n      EventHandler.trigger(this._element, EVENT_SHOWN$4, relatedTarget);\n    }\n\n    hide() {\n      if (isDisabled(this._element) || !this._isShown(this._menu)) {\n        return;\n      }\n\n      const relatedTarget = {\n        relatedTarget: this._element\n      };\n\n      this._completeHide(relatedTarget);\n    }\n\n    dispose() {\n      if (this._popper) {\n        this._popper.destroy();\n      }\n\n      super.dispose();\n    }\n\n    update() {\n      this._inNavbar = this._detectNavbar();\n\n      if (this._popper) {\n        this._popper.update();\n      }\n    } // Private\n\n\n    _completeHide(relatedTarget) {\n      const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE$4, relatedTarget);\n\n      if (hideEvent.defaultPrevented) {\n        return;\n      } // If this is a touch-enabled device we remove the extra\n      // empty mouseover listeners we added for iOS support\n\n\n      if ('ontouchstart' in document.documentElement) {\n        [].concat(...document.body.children).forEach(elem => EventHandler.off(elem, 'mouseover', noop));\n      }\n\n      if (this._popper) {\n        this._popper.destroy();\n      }\n\n      this._menu.classList.remove(CLASS_NAME_SHOW$6);\n\n      this._element.classList.remove(CLASS_NAME_SHOW$6);\n\n      this._element.setAttribute('aria-expanded', 'false');\n\n      Manipulator.removeDataAttribute(this._menu, 'popper');\n      EventHandler.trigger(this._element, EVENT_HIDDEN$4, relatedTarget);\n    }\n\n    _getConfig(config) {\n      config = { ...this.constructor.Default,\n        ...Manipulator.getDataAttributes(this._element),\n        ...config\n      };\n      typeCheckConfig(NAME$9, config, this.constructor.DefaultType);\n\n      if (typeof config.reference === 'object' && !isElement$1(config.reference) && typeof config.reference.getBoundingClientRect !== 'function') {\n        // Popper virtual elements require a getBoundingClientRect method\n        throw new TypeError(`${NAME$9.toUpperCase()}: Option \"reference\" provided type \"object\" without a required \"getBoundingClientRect\" method.`);\n      }\n\n      return config;\n    }\n\n    _createPopper(parent) {\n      if (typeof Popper === 'undefined') {\n        throw new TypeError('Bootstrap\\'s dropdowns require Popper (https://popper.js.org)');\n      }\n\n      let referenceElement = this._element;\n\n      if (this._config.reference === 'parent') {\n        referenceElement = parent;\n      } else if (isElement$1(this._config.reference)) {\n        referenceElement = getElement(this._config.reference);\n      } else if (typeof this._config.reference === 'object') {\n        referenceElement = this._config.reference;\n      }\n\n      const popperConfig = this._getPopperConfig();\n\n      const isDisplayStatic = popperConfig.modifiers.find(modifier => modifier.name === 'applyStyles' && modifier.enabled === false);\n      this._popper = createPopper(referenceElement, this._menu, popperConfig);\n\n      if (isDisplayStatic) {\n        Manipulator.setDataAttribute(this._menu, 'popper', 'static');\n      }\n    }\n\n    _isShown(element = this._element) {\n      return element.classList.contains(CLASS_NAME_SHOW$6);\n    }\n\n    _getMenuElement() {\n      return SelectorEngine.next(this._element, SELECTOR_MENU)[0];\n    }\n\n    _getPlacement() {\n      const parentDropdown = this._element.parentNode;\n\n      if (parentDropdown.classList.contains(CLASS_NAME_DROPEND)) {\n        return PLACEMENT_RIGHT;\n      }\n\n      if (parentDropdown.classList.contains(CLASS_NAME_DROPSTART)) {\n        return PLACEMENT_LEFT;\n      } // We need to trim the value because custom properties can also include spaces\n\n\n      const isEnd = getComputedStyle(this._menu).getPropertyValue('--bs-position').trim() === 'end';\n\n      if (parentDropdown.classList.contains(CLASS_NAME_DROPUP)) {\n        return isEnd ? PLACEMENT_TOPEND : PLACEMENT_TOP;\n      }\n\n      return isEnd ? PLACEMENT_BOTTOMEND : PLACEMENT_BOTTOM;\n    }\n\n    _detectNavbar() {\n      return this._element.closest(`.${CLASS_NAME_NAVBAR}`) !== null;\n    }\n\n    _getOffset() {\n      const {\n        offset\n      } = this._config;\n\n      if (typeof offset === 'string') {\n        return offset.split(',').map(val => Number.parseInt(val, 10));\n      }\n\n      if (typeof offset === 'function') {\n        return popperData => offset(popperData, this._element);\n      }\n\n      return offset;\n    }\n\n    _getPopperConfig() {\n      const defaultBsPopperConfig = {\n        placement: this._getPlacement(),\n        modifiers: [{\n          name: 'preventOverflow',\n          options: {\n            boundary: this._config.boundary\n          }\n        }, {\n          name: 'offset',\n          options: {\n            offset: this._getOffset()\n          }\n        }]\n      }; // Disable Popper if we have a static display\n\n      if (this._config.display === 'static') {\n        defaultBsPopperConfig.modifiers = [{\n          name: 'applyStyles',\n          enabled: false\n        }];\n      }\n\n      return { ...defaultBsPopperConfig,\n        ...(typeof this._config.popperConfig === 'function' ? this._config.popperConfig(defaultBsPopperConfig) : this._config.popperConfig)\n      };\n    }\n\n    _selectMenuItem({\n      key,\n      target\n    }) {\n      const items = SelectorEngine.find(SELECTOR_VISIBLE_ITEMS, this._menu).filter(isVisible);\n\n      if (!items.length) {\n        return;\n      } // if target isn't included in items (e.g. when expanding the dropdown)\n      // allow cycling to get the last item in case key equals ARROW_UP_KEY\n\n\n      getNextActiveElement(items, target, key === ARROW_DOWN_KEY, !items.includes(target)).focus();\n    } // Static\n\n\n    static jQueryInterface(config) {\n      return this.each(function () {\n        const data = Dropdown.getOrCreateInstance(this, config);\n\n        if (typeof config !== 'string') {\n          return;\n        }\n\n        if (typeof data[config] === 'undefined') {\n          throw new TypeError(`No method named \"${config}\"`);\n        }\n\n        data[config]();\n      });\n    }\n\n    static clearMenus(event) {\n      if (event && (event.button === RIGHT_MOUSE_BUTTON || event.type === 'keyup' && event.key !== TAB_KEY$1)) {\n        return;\n      }\n\n      const toggles = SelectorEngine.find(SELECTOR_DATA_TOGGLE$3);\n\n      for (let i = 0, len = toggles.length; i < len; i++) {\n        const context = Dropdown.getInstance(toggles[i]);\n\n        if (!context || context._config.autoClose === false) {\n          continue;\n        }\n\n        if (!context._isShown()) {\n          continue;\n        }\n\n        const relatedTarget = {\n          relatedTarget: context._element\n        };\n\n        if (event) {\n          const composedPath = event.composedPath();\n          const isMenuTarget = composedPath.includes(context._menu);\n\n          if (composedPath.includes(context._element) || context._config.autoClose === 'inside' && !isMenuTarget || context._config.autoClose === 'outside' && isMenuTarget) {\n            continue;\n          } // Tab navigation through the dropdown menu or events from contained inputs shouldn't close the menu\n\n\n          if (context._menu.contains(event.target) && (event.type === 'keyup' && event.key === TAB_KEY$1 || /input|select|option|textarea|form/i.test(event.target.tagName))) {\n            continue;\n          }\n\n          if (event.type === 'click') {\n            relatedTarget.clickEvent = event;\n          }\n        }\n\n        context._completeHide(relatedTarget);\n      }\n    }\n\n    static getParentFromElement(element) {\n      return getElementFromSelector(element) || element.parentNode;\n    }\n\n    static dataApiKeydownHandler(event) {\n      // If not input/textarea:\n      //  - And not a key in REGEXP_KEYDOWN => not a dropdown command\n      // If input/textarea:\n      //  - If space key => not a dropdown command\n      //  - If key is other than escape\n      //    - If key is not up or down => not a dropdown command\n      //    - If trigger inside the menu => not a dropdown command\n      if (/input|textarea/i.test(event.target.tagName) ? event.key === SPACE_KEY || event.key !== ESCAPE_KEY$2 && (event.key !== ARROW_DOWN_KEY && event.key !== ARROW_UP_KEY || event.target.closest(SELECTOR_MENU)) : !REGEXP_KEYDOWN.test(event.key)) {\n        return;\n      }\n\n      const isActive = this.classList.contains(CLASS_NAME_SHOW$6);\n\n      if (!isActive && event.key === ESCAPE_KEY$2) {\n        return;\n      }\n\n      event.preventDefault();\n      event.stopPropagation();\n\n      if (isDisabled(this)) {\n        return;\n      }\n\n      const getToggleButton = this.matches(SELECTOR_DATA_TOGGLE$3) ? this : SelectorEngine.prev(this, SELECTOR_DATA_TOGGLE$3)[0];\n      const instance = Dropdown.getOrCreateInstance(getToggleButton);\n\n      if (event.key === ESCAPE_KEY$2) {\n        instance.hide();\n        return;\n      }\n\n      if (event.key === ARROW_UP_KEY || event.key === ARROW_DOWN_KEY) {\n        if (!isActive) {\n          instance.show();\n        }\n\n        instance._selectMenuItem(event);\n\n        return;\n      }\n\n      if (!isActive || event.key === SPACE_KEY) {\n        Dropdown.clearMenus();\n      }\n    }\n\n  }\n  /**\n   * ------------------------------------------------------------------------\n   * Data Api implementation\n   * ------------------------------------------------------------------------\n   */\n\n\n  EventHandler.on(document, EVENT_KEYDOWN_DATA_API, SELECTOR_DATA_TOGGLE$3, Dropdown.dataApiKeydownHandler);\n  EventHandler.on(document, EVENT_KEYDOWN_DATA_API, SELECTOR_MENU, Dropdown.dataApiKeydownHandler);\n  EventHandler.on(document, EVENT_CLICK_DATA_API$3, Dropdown.clearMenus);\n  EventHandler.on(document, EVENT_KEYUP_DATA_API, Dropdown.clearMenus);\n  EventHandler.on(document, EVENT_CLICK_DATA_API$3, SELECTOR_DATA_TOGGLE$3, function (event) {\n    event.preventDefault();\n    Dropdown.getOrCreateInstance(this).toggle();\n  });\n  /**\n   * ------------------------------------------------------------------------\n   * jQuery\n   * ------------------------------------------------------------------------\n   * add .Dropdown to jQuery only if jQuery is present\n   */\n\n  defineJQueryPlugin(Dropdown);\n\n  /**\n   * --------------------------------------------------------------------------\n   * Bootstrap (v5.1.3): util/scrollBar.js\n   * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n   * --------------------------------------------------------------------------\n   */\n  const SELECTOR_FIXED_CONTENT = '.fixed-top, .fixed-bottom, .is-fixed, .sticky-top';\n  const SELECTOR_STICKY_CONTENT = '.sticky-top';\n\n  class ScrollBarHelper {\n    constructor() {\n      this._element = document.body;\n    }\n\n    getWidth() {\n      // https://developer.mozilla.org/en-US/docs/Web/API/Window/innerWidth#usage_notes\n      const documentWidth = document.documentElement.clientWidth;\n      return Math.abs(window.innerWidth - documentWidth);\n    }\n\n    hide() {\n      const width = this.getWidth();\n\n      this._disableOverFlow(); // give padding to element to balance the hidden scrollbar width\n\n\n      this._setElementAttributes(this._element, 'paddingRight', calculatedValue => calculatedValue + width); // trick: We adjust positive paddingRight and negative marginRight to sticky-top elements to keep showing fullwidth\n\n\n      this._setElementAttributes(SELECTOR_FIXED_CONTENT, 'paddingRight', calculatedValue => calculatedValue + width);\n\n      this._setElementAttributes(SELECTOR_STICKY_CONTENT, 'marginRight', calculatedValue => calculatedValue - width);\n    }\n\n    _disableOverFlow() {\n      this._saveInitialAttribute(this._element, 'overflow');\n\n      this._element.style.overflow = 'hidden';\n    }\n\n    _setElementAttributes(selector, styleProp, callback) {\n      const scrollbarWidth = this.getWidth();\n\n      const manipulationCallBack = element => {\n        if (element !== this._element && window.innerWidth > element.clientWidth + scrollbarWidth) {\n          return;\n        }\n\n        this._saveInitialAttribute(element, styleProp);\n\n        const calculatedValue = window.getComputedStyle(element)[styleProp];\n        element.style[styleProp] = `${callback(Number.parseFloat(calculatedValue))}px`;\n      };\n\n      this._applyManipulationCallback(selector, manipulationCallBack);\n    }\n\n    reset() {\n      this._resetElementAttributes(this._element, 'overflow');\n\n      this._resetElementAttributes(this._element, 'paddingRight');\n\n      this._resetElementAttributes(SELECTOR_FIXED_CONTENT, 'paddingRight');\n\n      this._resetElementAttributes(SELECTOR_STICKY_CONTENT, 'marginRight');\n    }\n\n    _saveInitialAttribute(element, styleProp) {\n      const actualValue = element.style[styleProp];\n\n      if (actualValue) {\n        Manipulator.setDataAttribute(element, styleProp, actualValue);\n      }\n    }\n\n    _resetElementAttributes(selector, styleProp) {\n      const manipulationCallBack = element => {\n        const value = Manipulator.getDataAttribute(element, styleProp);\n\n        if (typeof value === 'undefined') {\n          element.style.removeProperty(styleProp);\n        } else {\n          Manipulator.removeDataAttribute(element, styleProp);\n          element.style[styleProp] = value;\n        }\n      };\n\n      this._applyManipulationCallback(selector, manipulationCallBack);\n    }\n\n    _applyManipulationCallback(selector, callBack) {\n      if (isElement$1(selector)) {\n        callBack(selector);\n      } else {\n        SelectorEngine.find(selector, this._element).forEach(callBack);\n      }\n    }\n\n    isOverflowing() {\n      return this.getWidth() > 0;\n    }\n\n  }\n\n  /**\n   * --------------------------------------------------------------------------\n   * Bootstrap (v5.1.3): util/backdrop.js\n   * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n   * --------------------------------------------------------------------------\n   */\n  const Default$7 = {\n    className: 'modal-backdrop',\n    isVisible: true,\n    // if false, we use the backdrop helper without adding any element to the dom\n    isAnimated: false,\n    rootElement: 'body',\n    // give the choice to place backdrop under different elements\n    clickCallback: null\n  };\n  const DefaultType$7 = {\n    className: 'string',\n    isVisible: 'boolean',\n    isAnimated: 'boolean',\n    rootElement: '(element|string)',\n    clickCallback: '(function|null)'\n  };\n  const NAME$8 = 'backdrop';\n  const CLASS_NAME_FADE$4 = 'fade';\n  const CLASS_NAME_SHOW$5 = 'show';\n  const EVENT_MOUSEDOWN = `mousedown.bs.${NAME$8}`;\n\n  class Backdrop {\n    constructor(config) {\n      this._config = this._getConfig(config);\n      this._isAppended = false;\n      this._element = null;\n    }\n\n    show(callback) {\n      if (!this._config.isVisible) {\n        execute(callback);\n        return;\n      }\n\n      this._append();\n\n      if (this._config.isAnimated) {\n        reflow(this._getElement());\n      }\n\n      this._getElement().classList.add(CLASS_NAME_SHOW$5);\n\n      this._emulateAnimation(() => {\n        execute(callback);\n      });\n    }\n\n    hide(callback) {\n      if (!this._config.isVisible) {\n        execute(callback);\n        return;\n      }\n\n      this._getElement().classList.remove(CLASS_NAME_SHOW$5);\n\n      this._emulateAnimation(() => {\n        this.dispose();\n        execute(callback);\n      });\n    } // Private\n\n\n    _getElement() {\n      if (!this._element) {\n        const backdrop = document.createElement('div');\n        backdrop.className = this._config.className;\n\n        if (this._config.isAnimated) {\n          backdrop.classList.add(CLASS_NAME_FADE$4);\n        }\n\n        this._element = backdrop;\n      }\n\n      return this._element;\n    }\n\n    _getConfig(config) {\n      config = { ...Default$7,\n        ...(typeof config === 'object' ? config : {})\n      }; // use getElement() with the default \"body\" to get a fresh Element on each instantiation\n\n      config.rootElement = getElement(config.rootElement);\n      typeCheckConfig(NAME$8, config, DefaultType$7);\n      return config;\n    }\n\n    _append() {\n      if (this._isAppended) {\n        return;\n      }\n\n      this._config.rootElement.append(this._getElement());\n\n      EventHandler.on(this._getElement(), EVENT_MOUSEDOWN, () => {\n        execute(this._config.clickCallback);\n      });\n      this._isAppended = true;\n    }\n\n    dispose() {\n      if (!this._isAppended) {\n        return;\n      }\n\n      EventHandler.off(this._element, EVENT_MOUSEDOWN);\n\n      this._element.remove();\n\n      this._isAppended = false;\n    }\n\n    _emulateAnimation(callback) {\n      executeAfterTransition(callback, this._getElement(), this._config.isAnimated);\n    }\n\n  }\n\n  /**\n   * --------------------------------------------------------------------------\n   * Bootstrap (v5.1.3): util/focustrap.js\n   * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n   * --------------------------------------------------------------------------\n   */\n  const Default$6 = {\n    trapElement: null,\n    // The element to trap focus inside of\n    autofocus: true\n  };\n  const DefaultType$6 = {\n    trapElement: 'element',\n    autofocus: 'boolean'\n  };\n  const NAME$7 = 'focustrap';\n  const DATA_KEY$7 = 'bs.focustrap';\n  const EVENT_KEY$7 = `.${DATA_KEY$7}`;\n  const EVENT_FOCUSIN$1 = `focusin${EVENT_KEY$7}`;\n  const EVENT_KEYDOWN_TAB = `keydown.tab${EVENT_KEY$7}`;\n  const TAB_KEY = 'Tab';\n  const TAB_NAV_FORWARD = 'forward';\n  const TAB_NAV_BACKWARD = 'backward';\n\n  class FocusTrap {\n    constructor(config) {\n      this._config = this._getConfig(config);\n      this._isActive = false;\n      this._lastTabNavDirection = null;\n    }\n\n    activate() {\n      const {\n        trapElement,\n        autofocus\n      } = this._config;\n\n      if (this._isActive) {\n        return;\n      }\n\n      if (autofocus) {\n        trapElement.focus();\n      }\n\n      EventHandler.off(document, EVENT_KEY$7); // guard against infinite focus loop\n\n      EventHandler.on(document, EVENT_FOCUSIN$1, event => this._handleFocusin(event));\n      EventHandler.on(document, EVENT_KEYDOWN_TAB, event => this._handleKeydown(event));\n      this._isActive = true;\n    }\n\n    deactivate() {\n      if (!this._isActive) {\n        return;\n      }\n\n      this._isActive = false;\n      EventHandler.off(document, EVENT_KEY$7);\n    } // Private\n\n\n    _handleFocusin(event) {\n      const {\n        target\n      } = event;\n      const {\n        trapElement\n      } = this._config;\n\n      if (target === document || target === trapElement || trapElement.contains(target)) {\n        return;\n      }\n\n      const elements = SelectorEngine.focusableChildren(trapElement);\n\n      if (elements.length === 0) {\n        trapElement.focus();\n      } else if (this._lastTabNavDirection === TAB_NAV_BACKWARD) {\n        elements[elements.length - 1].focus();\n      } else {\n        elements[0].focus();\n      }\n    }\n\n    _handleKeydown(event) {\n      if (event.key !== TAB_KEY) {\n        return;\n      }\n\n      this._lastTabNavDirection = event.shiftKey ? TAB_NAV_BACKWARD : TAB_NAV_FORWARD;\n    }\n\n    _getConfig(config) {\n      config = { ...Default$6,\n        ...(typeof config === 'object' ? config : {})\n      };\n      typeCheckConfig(NAME$7, config, DefaultType$6);\n      return config;\n    }\n\n  }\n\n  /**\n   * --------------------------------------------------------------------------\n   * Bootstrap (v5.1.3): modal.js\n   * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n   * --------------------------------------------------------------------------\n   */\n  /**\n   * ------------------------------------------------------------------------\n   * Constants\n   * ------------------------------------------------------------------------\n   */\n\n  const NAME$6 = 'modal';\n  const DATA_KEY$6 = 'bs.modal';\n  const EVENT_KEY$6 = `.${DATA_KEY$6}`;\n  const DATA_API_KEY$3 = '.data-api';\n  const ESCAPE_KEY$1 = 'Escape';\n  const Default$5 = {\n    backdrop: true,\n    keyboard: true,\n    focus: true\n  };\n  const DefaultType$5 = {\n    backdrop: '(boolean|string)',\n    keyboard: 'boolean',\n    focus: 'boolean'\n  };\n  const EVENT_HIDE$3 = `hide${EVENT_KEY$6}`;\n  const EVENT_HIDE_PREVENTED = `hidePrevented${EVENT_KEY$6}`;\n  const EVENT_HIDDEN$3 = `hidden${EVENT_KEY$6}`;\n  const EVENT_SHOW$3 = `show${EVENT_KEY$6}`;\n  const EVENT_SHOWN$3 = `shown${EVENT_KEY$6}`;\n  const EVENT_RESIZE = `resize${EVENT_KEY$6}`;\n  const EVENT_CLICK_DISMISS = `click.dismiss${EVENT_KEY$6}`;\n  const EVENT_KEYDOWN_DISMISS$1 = `keydown.dismiss${EVENT_KEY$6}`;\n  const EVENT_MOUSEUP_DISMISS = `mouseup.dismiss${EVENT_KEY$6}`;\n  const EVENT_MOUSEDOWN_DISMISS = `mousedown.dismiss${EVENT_KEY$6}`;\n  const EVENT_CLICK_DATA_API$2 = `click${EVENT_KEY$6}${DATA_API_KEY$3}`;\n  const CLASS_NAME_OPEN = 'modal-open';\n  const CLASS_NAME_FADE$3 = 'fade';\n  const CLASS_NAME_SHOW$4 = 'show';\n  const CLASS_NAME_STATIC = 'modal-static';\n  const OPEN_SELECTOR$1 = '.modal.show';\n  const SELECTOR_DIALOG = '.modal-dialog';\n  const SELECTOR_MODAL_BODY = '.modal-body';\n  const SELECTOR_DATA_TOGGLE$2 = '[data-bs-toggle=\"modal\"]';\n  /**\n   * ------------------------------------------------------------------------\n   * Class Definition\n   * ------------------------------------------------------------------------\n   */\n\n  class Modal extends BaseComponent {\n    constructor(element, config) {\n      super(element);\n      this._config = this._getConfig(config);\n      this._dialog = SelectorEngine.findOne(SELECTOR_DIALOG, this._element);\n      this._backdrop = this._initializeBackDrop();\n      this._focustrap = this._initializeFocusTrap();\n      this._isShown = false;\n      this._ignoreBackdropClick = false;\n      this._isTransitioning = false;\n      this._scrollBar = new ScrollBarHelper();\n    } // Getters\n\n\n    static get Default() {\n      return Default$5;\n    }\n\n    static get NAME() {\n      return NAME$6;\n    } // Public\n\n\n    toggle(relatedTarget) {\n      return this._isShown ? this.hide() : this.show(relatedTarget);\n    }\n\n    show(relatedTarget) {\n      if (this._isShown || this._isTransitioning) {\n        return;\n      }\n\n      const showEvent = EventHandler.trigger(this._element, EVENT_SHOW$3, {\n        relatedTarget\n      });\n\n      if (showEvent.defaultPrevented) {\n        return;\n      }\n\n      this._isShown = true;\n\n      if (this._isAnimated()) {\n        this._isTransitioning = true;\n      }\n\n      this._scrollBar.hide();\n\n      document.body.classList.add(CLASS_NAME_OPEN);\n\n      this._adjustDialog();\n\n      this._setEscapeEvent();\n\n      this._setResizeEvent();\n\n      EventHandler.on(this._dialog, EVENT_MOUSEDOWN_DISMISS, () => {\n        EventHandler.one(this._element, EVENT_MOUSEUP_DISMISS, event => {\n          if (event.target === this._element) {\n            this._ignoreBackdropClick = true;\n          }\n        });\n      });\n\n      this._showBackdrop(() => this._showElement(relatedTarget));\n    }\n\n    hide() {\n      if (!this._isShown || this._isTransitioning) {\n        return;\n      }\n\n      const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE$3);\n\n      if (hideEvent.defaultPrevented) {\n        return;\n      }\n\n      this._isShown = false;\n\n      const isAnimated = this._isAnimated();\n\n      if (isAnimated) {\n        this._isTransitioning = true;\n      }\n\n      this._setEscapeEvent();\n\n      this._setResizeEvent();\n\n      this._focustrap.deactivate();\n\n      this._element.classList.remove(CLASS_NAME_SHOW$4);\n\n      EventHandler.off(this._element, EVENT_CLICK_DISMISS);\n      EventHandler.off(this._dialog, EVENT_MOUSEDOWN_DISMISS);\n\n      this._queueCallback(() => this._hideModal(), this._element, isAnimated);\n    }\n\n    dispose() {\n      [window, this._dialog].forEach(htmlElement => EventHandler.off(htmlElement, EVENT_KEY$6));\n\n      this._backdrop.dispose();\n\n      this._focustrap.deactivate();\n\n      super.dispose();\n    }\n\n    handleUpdate() {\n      this._adjustDialog();\n    } // Private\n\n\n    _initializeBackDrop() {\n      return new Backdrop({\n        isVisible: Boolean(this._config.backdrop),\n        // 'static' option will be translated to true, and booleans will keep their value\n        isAnimated: this._isAnimated()\n      });\n    }\n\n    _initializeFocusTrap() {\n      return new FocusTrap({\n        trapElement: this._element\n      });\n    }\n\n    _getConfig(config) {\n      config = { ...Default$5,\n        ...Manipulator.getDataAttributes(this._element),\n        ...(typeof config === 'object' ? config : {})\n      };\n      typeCheckConfig(NAME$6, config, DefaultType$5);\n      return config;\n    }\n\n    _showElement(relatedTarget) {\n      const isAnimated = this._isAnimated();\n\n      const modalBody = SelectorEngine.findOne(SELECTOR_MODAL_BODY, this._dialog);\n\n      if (!this._element.parentNode || this._element.parentNode.nodeType !== Node.ELEMENT_NODE) {\n        // Don't move modal's DOM position\n        document.body.append(this._element);\n      }\n\n      this._element.style.display = 'block';\n\n      this._element.removeAttribute('aria-hidden');\n\n      this._element.setAttribute('aria-modal', true);\n\n      this._element.setAttribute('role', 'dialog');\n\n      this._element.scrollTop = 0;\n\n      if (modalBody) {\n        modalBody.scrollTop = 0;\n      }\n\n      if (isAnimated) {\n        reflow(this._element);\n      }\n\n      this._element.classList.add(CLASS_NAME_SHOW$4);\n\n      const transitionComplete = () => {\n        if (this._config.focus) {\n          this._focustrap.activate();\n        }\n\n        this._isTransitioning = false;\n        EventHandler.trigger(this._element, EVENT_SHOWN$3, {\n          relatedTarget\n        });\n      };\n\n      this._queueCallback(transitionComplete, this._dialog, isAnimated);\n    }\n\n    _setEscapeEvent() {\n      if (this._isShown) {\n        EventHandler.on(this._element, EVENT_KEYDOWN_DISMISS$1, event => {\n          if (this._config.keyboard && event.key === ESCAPE_KEY$1) {\n            event.preventDefault();\n            this.hide();\n          } else if (!this._config.keyboard && event.key === ESCAPE_KEY$1) {\n            this._triggerBackdropTransition();\n          }\n        });\n      } else {\n        EventHandler.off(this._element, EVENT_KEYDOWN_DISMISS$1);\n      }\n    }\n\n    _setResizeEvent() {\n      if (this._isShown) {\n        EventHandler.on(window, EVENT_RESIZE, () => this._adjustDialog());\n      } else {\n        EventHandler.off(window, EVENT_RESIZE);\n      }\n    }\n\n    _hideModal() {\n      this._element.style.display = 'none';\n\n      this._element.setAttribute('aria-hidden', true);\n\n      this._element.removeAttribute('aria-modal');\n\n      this._element.removeAttribute('role');\n\n      this._isTransitioning = false;\n\n      this._backdrop.hide(() => {\n        document.body.classList.remove(CLASS_NAME_OPEN);\n\n        this._resetAdjustments();\n\n        this._scrollBar.reset();\n\n        EventHandler.trigger(this._element, EVENT_HIDDEN$3);\n      });\n    }\n\n    _showBackdrop(callback) {\n      EventHandler.on(this._element, EVENT_CLICK_DISMISS, event => {\n        if (this._ignoreBackdropClick) {\n          this._ignoreBackdropClick = false;\n          return;\n        }\n\n        if (event.target !== event.currentTarget) {\n          return;\n        }\n\n        if (this._config.backdrop === true) {\n          this.hide();\n        } else if (this._config.backdrop === 'static') {\n          this._triggerBackdropTransition();\n        }\n      });\n\n      this._backdrop.show(callback);\n    }\n\n    _isAnimated() {\n      return this._element.classList.contains(CLASS_NAME_FADE$3);\n    }\n\n    _triggerBackdropTransition() {\n      const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE_PREVENTED);\n\n      if (hideEvent.defaultPrevented) {\n        return;\n      }\n\n      const {\n        classList,\n        scrollHeight,\n        style\n      } = this._element;\n      const isModalOverflowing = scrollHeight > document.documentElement.clientHeight; // return if the following background transition hasn't yet completed\n\n      if (!isModalOverflowing && style.overflowY === 'hidden' || classList.contains(CLASS_NAME_STATIC)) {\n        return;\n      }\n\n      if (!isModalOverflowing) {\n        style.overflowY = 'hidden';\n      }\n\n      classList.add(CLASS_NAME_STATIC);\n\n      this._queueCallback(() => {\n        classList.remove(CLASS_NAME_STATIC);\n\n        if (!isModalOverflowing) {\n          this._queueCallback(() => {\n            style.overflowY = '';\n          }, this._dialog);\n        }\n      }, this._dialog);\n\n      this._element.focus();\n    } // ----------------------------------------------------------------------\n    // the following methods are used to handle overflowing modals\n    // ----------------------------------------------------------------------\n\n\n    _adjustDialog() {\n      const isModalOverflowing = this._element.scrollHeight > document.documentElement.clientHeight;\n\n      const scrollbarWidth = this._scrollBar.getWidth();\n\n      const isBodyOverflowing = scrollbarWidth > 0;\n\n      if (!isBodyOverflowing && isModalOverflowing && !isRTL() || isBodyOverflowing && !isModalOverflowing && isRTL()) {\n        this._element.style.paddingLeft = `${scrollbarWidth}px`;\n      }\n\n      if (isBodyOverflowing && !isModalOverflowing && !isRTL() || !isBodyOverflowing && isModalOverflowing && isRTL()) {\n        this._element.style.paddingRight = `${scrollbarWidth}px`;\n      }\n    }\n\n    _resetAdjustments() {\n      this._element.style.paddingLeft = '';\n      this._element.style.paddingRight = '';\n    } // Static\n\n\n    static jQueryInterface(config, relatedTarget) {\n      return this.each(function () {\n        const data = Modal.getOrCreateInstance(this, config);\n\n        if (typeof config !== 'string') {\n          return;\n        }\n\n        if (typeof data[config] === 'undefined') {\n          throw new TypeError(`No method named \"${config}\"`);\n        }\n\n        data[config](relatedTarget);\n      });\n    }\n\n  }\n  /**\n   * ------------------------------------------------------------------------\n   * Data Api implementation\n   * ------------------------------------------------------------------------\n   */\n\n\n  EventHandler.on(document, EVENT_CLICK_DATA_API$2, SELECTOR_DATA_TOGGLE$2, function (event) {\n    const target = getElementFromSelector(this);\n\n    if (['A', 'AREA'].includes(this.tagName)) {\n      event.preventDefault();\n    }\n\n    EventHandler.one(target, EVENT_SHOW$3, showEvent => {\n      if (showEvent.defaultPrevented) {\n        // only register focus restorer if modal will actually get shown\n        return;\n      }\n\n      EventHandler.one(target, EVENT_HIDDEN$3, () => {\n        if (isVisible(this)) {\n          this.focus();\n        }\n      });\n    }); // avoid conflict when clicking moddal toggler while another one is open\n\n    const allReadyOpen = SelectorEngine.findOne(OPEN_SELECTOR$1);\n\n    if (allReadyOpen) {\n      Modal.getInstance(allReadyOpen).hide();\n    }\n\n    const data = Modal.getOrCreateInstance(target);\n    data.toggle(this);\n  });\n  enableDismissTrigger(Modal);\n  /**\n   * ------------------------------------------------------------------------\n   * jQuery\n   * ------------------------------------------------------------------------\n   * add .Modal to jQuery only if jQuery is present\n   */\n\n  defineJQueryPlugin(Modal);\n\n  /**\n   * --------------------------------------------------------------------------\n   * Bootstrap (v5.1.3): offcanvas.js\n   * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n   * --------------------------------------------------------------------------\n   */\n  /**\n   * ------------------------------------------------------------------------\n   * Constants\n   * ------------------------------------------------------------------------\n   */\n\n  const NAME$5 = 'offcanvas';\n  const DATA_KEY$5 = 'bs.offcanvas';\n  const EVENT_KEY$5 = `.${DATA_KEY$5}`;\n  const DATA_API_KEY$2 = '.data-api';\n  const EVENT_LOAD_DATA_API$1 = `load${EVENT_KEY$5}${DATA_API_KEY$2}`;\n  const ESCAPE_KEY = 'Escape';\n  const Default$4 = {\n    backdrop: true,\n    keyboard: true,\n    scroll: false\n  };\n  const DefaultType$4 = {\n    backdrop: 'boolean',\n    keyboard: 'boolean',\n    scroll: 'boolean'\n  };\n  const CLASS_NAME_SHOW$3 = 'show';\n  const CLASS_NAME_BACKDROP = 'offcanvas-backdrop';\n  const OPEN_SELECTOR = '.offcanvas.show';\n  const EVENT_SHOW$2 = `show${EVENT_KEY$5}`;\n  const EVENT_SHOWN$2 = `shown${EVENT_KEY$5}`;\n  const EVENT_HIDE$2 = `hide${EVENT_KEY$5}`;\n  const EVENT_HIDDEN$2 = `hidden${EVENT_KEY$5}`;\n  const EVENT_CLICK_DATA_API$1 = `click${EVENT_KEY$5}${DATA_API_KEY$2}`;\n  const EVENT_KEYDOWN_DISMISS = `keydown.dismiss${EVENT_KEY$5}`;\n  const SELECTOR_DATA_TOGGLE$1 = '[data-bs-toggle=\"offcanvas\"]';\n  /**\n   * ------------------------------------------------------------------------\n   * Class Definition\n   * ------------------------------------------------------------------------\n   */\n\n  class Offcanvas extends BaseComponent {\n    constructor(element, config) {\n      super(element);\n      this._config = this._getConfig(config);\n      this._isShown = false;\n      this._backdrop = this._initializeBackDrop();\n      this._focustrap = this._initializeFocusTrap();\n\n      this._addEventListeners();\n    } // Getters\n\n\n    static get NAME() {\n      return NAME$5;\n    }\n\n    static get Default() {\n      return Default$4;\n    } // Public\n\n\n    toggle(relatedTarget) {\n      return this._isShown ? this.hide() : this.show(relatedTarget);\n    }\n\n    show(relatedTarget) {\n      if (this._isShown) {\n        return;\n      }\n\n      const showEvent = EventHandler.trigger(this._element, EVENT_SHOW$2, {\n        relatedTarget\n      });\n\n      if (showEvent.defaultPrevented) {\n        return;\n      }\n\n      this._isShown = true;\n      this._element.style.visibility = 'visible';\n\n      this._backdrop.show();\n\n      if (!this._config.scroll) {\n        new ScrollBarHelper().hide();\n      }\n\n      this._element.removeAttribute('aria-hidden');\n\n      this._element.setAttribute('aria-modal', true);\n\n      this._element.setAttribute('role', 'dialog');\n\n      this._element.classList.add(CLASS_NAME_SHOW$3);\n\n      const completeCallBack = () => {\n        if (!this._config.scroll) {\n          this._focustrap.activate();\n        }\n\n        EventHandler.trigger(this._element, EVENT_SHOWN$2, {\n          relatedTarget\n        });\n      };\n\n      this._queueCallback(completeCallBack, this._element, true);\n    }\n\n    hide() {\n      if (!this._isShown) {\n        return;\n      }\n\n      const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE$2);\n\n      if (hideEvent.defaultPrevented) {\n        return;\n      }\n\n      this._focustrap.deactivate();\n\n      this._element.blur();\n\n      this._isShown = false;\n\n      this._element.classList.remove(CLASS_NAME_SHOW$3);\n\n      this._backdrop.hide();\n\n      const completeCallback = () => {\n        this._element.setAttribute('aria-hidden', true);\n\n        this._element.removeAttribute('aria-modal');\n\n        this._element.removeAttribute('role');\n\n        this._element.style.visibility = 'hidden';\n\n        if (!this._config.scroll) {\n          new ScrollBarHelper().reset();\n        }\n\n        EventHandler.trigger(this._element, EVENT_HIDDEN$2);\n      };\n\n      this._queueCallback(completeCallback, this._element, true);\n    }\n\n    dispose() {\n      this._backdrop.dispose();\n\n      this._focustrap.deactivate();\n\n      super.dispose();\n    } // Private\n\n\n    _getConfig(config) {\n      config = { ...Default$4,\n        ...Manipulator.getDataAttributes(this._element),\n        ...(typeof config === 'object' ? config : {})\n      };\n      typeCheckConfig(NAME$5, config, DefaultType$4);\n      return config;\n    }\n\n    _initializeBackDrop() {\n      return new Backdrop({\n        className: CLASS_NAME_BACKDROP,\n        isVisible: this._config.backdrop,\n        isAnimated: true,\n        rootElement: this._element.parentNode,\n        clickCallback: () => this.hide()\n      });\n    }\n\n    _initializeFocusTrap() {\n      return new FocusTrap({\n        trapElement: this._element\n      });\n    }\n\n    _addEventListeners() {\n      EventHandler.on(this._element, EVENT_KEYDOWN_DISMISS, event => {\n        if (this._config.keyboard && event.key === ESCAPE_KEY) {\n          this.hide();\n        }\n      });\n    } // Static\n\n\n    static jQueryInterface(config) {\n      return this.each(function () {\n        const data = Offcanvas.getOrCreateInstance(this, config);\n\n        if (typeof config !== 'string') {\n          return;\n        }\n\n        if (data[config] === undefined || config.startsWith('_') || config === 'constructor') {\n          throw new TypeError(`No method named \"${config}\"`);\n        }\n\n        data[config](this);\n      });\n    }\n\n  }\n  /**\n   * ------------------------------------------------------------------------\n   * Data Api implementation\n   * ------------------------------------------------------------------------\n   */\n\n\n  EventHandler.on(document, EVENT_CLICK_DATA_API$1, SELECTOR_DATA_TOGGLE$1, function (event) {\n    const target = getElementFromSelector(this);\n\n    if (['A', 'AREA'].includes(this.tagName)) {\n      event.preventDefault();\n    }\n\n    if (isDisabled(this)) {\n      return;\n    }\n\n    EventHandler.one(target, EVENT_HIDDEN$2, () => {\n      // focus on trigger when it is closed\n      if (isVisible(this)) {\n        this.focus();\n      }\n    }); // avoid conflict when clicking a toggler of an offcanvas, while another is open\n\n    const allReadyOpen = SelectorEngine.findOne(OPEN_SELECTOR);\n\n    if (allReadyOpen && allReadyOpen !== target) {\n      Offcanvas.getInstance(allReadyOpen).hide();\n    }\n\n    const data = Offcanvas.getOrCreateInstance(target);\n    data.toggle(this);\n  });\n  EventHandler.on(window, EVENT_LOAD_DATA_API$1, () => SelectorEngine.find(OPEN_SELECTOR).forEach(el => Offcanvas.getOrCreateInstance(el).show()));\n  enableDismissTrigger(Offcanvas);\n  /**\n   * ------------------------------------------------------------------------\n   * jQuery\n   * ------------------------------------------------------------------------\n   */\n\n  defineJQueryPlugin(Offcanvas);\n\n  /**\n   * --------------------------------------------------------------------------\n   * Bootstrap (v5.1.3): util/sanitizer.js\n   * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n   * --------------------------------------------------------------------------\n   */\n  const uriAttributes = new Set(['background', 'cite', 'href', 'itemtype', 'longdesc', 'poster', 'src', 'xlink:href']);\n  const ARIA_ATTRIBUTE_PATTERN = /^aria-[\\w-]*$/i;\n  /**\n   * A pattern that recognizes a commonly useful subset of URLs that are safe.\n   *\n   * Shoutout to Angular https://github.com/angular/angular/blob/12.2.x/packages/core/src/sanitization/url_sanitizer.ts\n   */\n\n  const SAFE_URL_PATTERN = /^(?:(?:https?|mailto|ftp|tel|file|sms):|[^#&/:?]*(?:[#/?]|$))/i;\n  /**\n   * A pattern that matches safe data URLs. Only matches image, video and audio types.\n   *\n   * Shoutout to Angular https://github.com/angular/angular/blob/12.2.x/packages/core/src/sanitization/url_sanitizer.ts\n   */\n\n  const DATA_URL_PATTERN = /^data:(?:image\\/(?:bmp|gif|jpeg|jpg|png|tiff|webp)|video\\/(?:mpeg|mp4|ogg|webm)|audio\\/(?:mp3|oga|ogg|opus));base64,[\\d+/a-z]+=*$/i;\n\n  const allowedAttribute = (attribute, allowedAttributeList) => {\n    const attributeName = attribute.nodeName.toLowerCase();\n\n    if (allowedAttributeList.includes(attributeName)) {\n      if (uriAttributes.has(attributeName)) {\n        return Boolean(SAFE_URL_PATTERN.test(attribute.nodeValue) || DATA_URL_PATTERN.test(attribute.nodeValue));\n      }\n\n      return true;\n    }\n\n    const regExp = allowedAttributeList.filter(attributeRegex => attributeRegex instanceof RegExp); // Check if a regular expression validates the attribute.\n\n    for (let i = 0, len = regExp.length; i < len; i++) {\n      if (regExp[i].test(attributeName)) {\n        return true;\n      }\n    }\n\n    return false;\n  };\n\n  const DefaultAllowlist = {\n    // Global attributes allowed on any supplied element below.\n    '*': ['class', 'dir', 'id', 'lang', 'role', ARIA_ATTRIBUTE_PATTERN],\n    a: ['target', 'href', 'title', 'rel'],\n    area: [],\n    b: [],\n    br: [],\n    col: [],\n    code: [],\n    div: [],\n    em: [],\n    hr: [],\n    h1: [],\n    h2: [],\n    h3: [],\n    h4: [],\n    h5: [],\n    h6: [],\n    i: [],\n    img: ['src', 'srcset', 'alt', 'title', 'width', 'height'],\n    li: [],\n    ol: [],\n    p: [],\n    pre: [],\n    s: [],\n    small: [],\n    span: [],\n    sub: [],\n    sup: [],\n    strong: [],\n    u: [],\n    ul: []\n  };\n  function sanitizeHtml(unsafeHtml, allowList, sanitizeFn) {\n    if (!unsafeHtml.length) {\n      return unsafeHtml;\n    }\n\n    if (sanitizeFn && typeof sanitizeFn === 'function') {\n      return sanitizeFn(unsafeHtml);\n    }\n\n    const domParser = new window.DOMParser();\n    const createdDocument = domParser.parseFromString(unsafeHtml, 'text/html');\n    const elements = [].concat(...createdDocument.body.querySelectorAll('*'));\n\n    for (let i = 0, len = elements.length; i < len; i++) {\n      const element = elements[i];\n      const elementName = element.nodeName.toLowerCase();\n\n      if (!Object.keys(allowList).includes(elementName)) {\n        element.remove();\n        continue;\n      }\n\n      const attributeList = [].concat(...element.attributes);\n      const allowedAttributes = [].concat(allowList['*'] || [], allowList[elementName] || []);\n      attributeList.forEach(attribute => {\n        if (!allowedAttribute(attribute, allowedAttributes)) {\n          element.removeAttribute(attribute.nodeName);\n        }\n      });\n    }\n\n    return createdDocument.body.innerHTML;\n  }\n\n  /**\n   * --------------------------------------------------------------------------\n   * Bootstrap (v5.1.3): tooltip.js\n   * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n   * --------------------------------------------------------------------------\n   */\n  /**\n   * ------------------------------------------------------------------------\n   * Constants\n   * ------------------------------------------------------------------------\n   */\n\n  const NAME$4 = 'tooltip';\n  const DATA_KEY$4 = 'bs.tooltip';\n  const EVENT_KEY$4 = `.${DATA_KEY$4}`;\n  const CLASS_PREFIX$1 = 'bs-tooltip';\n  const DISALLOWED_ATTRIBUTES = new Set(['sanitize', 'allowList', 'sanitizeFn']);\n  const DefaultType$3 = {\n    animation: 'boolean',\n    template: 'string',\n    title: '(string|element|function)',\n    trigger: 'string',\n    delay: '(number|object)',\n    html: 'boolean',\n    selector: '(string|boolean)',\n    placement: '(string|function)',\n    offset: '(array|string|function)',\n    container: '(string|element|boolean)',\n    fallbackPlacements: 'array',\n    boundary: '(string|element)',\n    customClass: '(string|function)',\n    sanitize: 'boolean',\n    sanitizeFn: '(null|function)',\n    allowList: 'object',\n    popperConfig: '(null|object|function)'\n  };\n  const AttachmentMap = {\n    AUTO: 'auto',\n    TOP: 'top',\n    RIGHT: isRTL() ? 'left' : 'right',\n    BOTTOM: 'bottom',\n    LEFT: isRTL() ? 'right' : 'left'\n  };\n  const Default$3 = {\n    animation: true,\n    template: '<div class=\"tooltip\" role=\"tooltip\">' + '<div class=\"tooltip-arrow\"></div>' + '<div class=\"tooltip-inner\"></div>' + '</div>',\n    trigger: 'hover focus',\n    title: '',\n    delay: 0,\n    html: false,\n    selector: false,\n    placement: 'top',\n    offset: [0, 0],\n    container: false,\n    fallbackPlacements: ['top', 'right', 'bottom', 'left'],\n    boundary: 'clippingParents',\n    customClass: '',\n    sanitize: true,\n    sanitizeFn: null,\n    allowList: DefaultAllowlist,\n    popperConfig: null\n  };\n  const Event$2 = {\n    HIDE: `hide${EVENT_KEY$4}`,\n    HIDDEN: `hidden${EVENT_KEY$4}`,\n    SHOW: `show${EVENT_KEY$4}`,\n    SHOWN: `shown${EVENT_KEY$4}`,\n    INSERTED: `inserted${EVENT_KEY$4}`,\n    CLICK: `click${EVENT_KEY$4}`,\n    FOCUSIN: `focusin${EVENT_KEY$4}`,\n    FOCUSOUT: `focusout${EVENT_KEY$4}`,\n    MOUSEENTER: `mouseenter${EVENT_KEY$4}`,\n    MOUSELEAVE: `mouseleave${EVENT_KEY$4}`\n  };\n  const CLASS_NAME_FADE$2 = 'fade';\n  const CLASS_NAME_MODAL = 'modal';\n  const CLASS_NAME_SHOW$2 = 'show';\n  const HOVER_STATE_SHOW = 'show';\n  const HOVER_STATE_OUT = 'out';\n  const SELECTOR_TOOLTIP_INNER = '.tooltip-inner';\n  const SELECTOR_MODAL = `.${CLASS_NAME_MODAL}`;\n  const EVENT_MODAL_HIDE = 'hide.bs.modal';\n  const TRIGGER_HOVER = 'hover';\n  const TRIGGER_FOCUS = 'focus';\n  const TRIGGER_CLICK = 'click';\n  const TRIGGER_MANUAL = 'manual';\n  /**\n   * ------------------------------------------------------------------------\n   * Class Definition\n   * ------------------------------------------------------------------------\n   */\n\n  class Tooltip extends BaseComponent {\n    constructor(element, config) {\n      if (typeof Popper === 'undefined') {\n        throw new TypeError('Bootstrap\\'s tooltips require Popper (https://popper.js.org)');\n      }\n\n      super(element); // private\n\n      this._isEnabled = true;\n      this._timeout = 0;\n      this._hoverState = '';\n      this._activeTrigger = {};\n      this._popper = null; // Protected\n\n      this._config = this._getConfig(config);\n      this.tip = null;\n\n      this._setListeners();\n    } // Getters\n\n\n    static get Default() {\n      return Default$3;\n    }\n\n    static get NAME() {\n      return NAME$4;\n    }\n\n    static get Event() {\n      return Event$2;\n    }\n\n    static get DefaultType() {\n      return DefaultType$3;\n    } // Public\n\n\n    enable() {\n      this._isEnabled = true;\n    }\n\n    disable() {\n      this._isEnabled = false;\n    }\n\n    toggleEnabled() {\n      this._isEnabled = !this._isEnabled;\n    }\n\n    toggle(event) {\n      if (!this._isEnabled) {\n        return;\n      }\n\n      if (event) {\n        const context = this._initializeOnDelegatedTarget(event);\n\n        context._activeTrigger.click = !context._activeTrigger.click;\n\n        if (context._isWithActiveTrigger()) {\n          context._enter(null, context);\n        } else {\n          context._leave(null, context);\n        }\n      } else {\n        if (this.getTipElement().classList.contains(CLASS_NAME_SHOW$2)) {\n          this._leave(null, this);\n\n          return;\n        }\n\n        this._enter(null, this);\n      }\n    }\n\n    dispose() {\n      clearTimeout(this._timeout);\n      EventHandler.off(this._element.closest(SELECTOR_MODAL), EVENT_MODAL_HIDE, this._hideModalHandler);\n\n      if (this.tip) {\n        this.tip.remove();\n      }\n\n      this._disposePopper();\n\n      super.dispose();\n    }\n\n    show() {\n      if (this._element.style.display === 'none') {\n        throw new Error('Please use show on visible elements');\n      }\n\n      if (!(this.isWithContent() && this._isEnabled)) {\n        return;\n      }\n\n      const showEvent = EventHandler.trigger(this._element, this.constructor.Event.SHOW);\n      const shadowRoot = findShadowRoot(this._element);\n      const isInTheDom = shadowRoot === null ? this._element.ownerDocument.documentElement.contains(this._element) : shadowRoot.contains(this._element);\n\n      if (showEvent.defaultPrevented || !isInTheDom) {\n        return;\n      } // A trick to recreate a tooltip in case a new title is given by using the NOT documented `data-bs-original-title`\n      // This will be removed later in favor of a `setContent` method\n\n\n      if (this.constructor.NAME === 'tooltip' && this.tip && this.getTitle() !== this.tip.querySelector(SELECTOR_TOOLTIP_INNER).innerHTML) {\n        this._disposePopper();\n\n        this.tip.remove();\n        this.tip = null;\n      }\n\n      const tip = this.getTipElement();\n      const tipId = getUID(this.constructor.NAME);\n      tip.setAttribute('id', tipId);\n\n      this._element.setAttribute('aria-describedby', tipId);\n\n      if (this._config.animation) {\n        tip.classList.add(CLASS_NAME_FADE$2);\n      }\n\n      const placement = typeof this._config.placement === 'function' ? this._config.placement.call(this, tip, this._element) : this._config.placement;\n\n      const attachment = this._getAttachment(placement);\n\n      this._addAttachmentClass(attachment);\n\n      const {\n        container\n      } = this._config;\n      Data.set(tip, this.constructor.DATA_KEY, this);\n\n      if (!this._element.ownerDocument.documentElement.contains(this.tip)) {\n        container.append(tip);\n        EventHandler.trigger(this._element, this.constructor.Event.INSERTED);\n      }\n\n      if (this._popper) {\n        this._popper.update();\n      } else {\n        this._popper = createPopper(this._element, tip, this._getPopperConfig(attachment));\n      }\n\n      tip.classList.add(CLASS_NAME_SHOW$2);\n\n      const customClass = this._resolvePossibleFunction(this._config.customClass);\n\n      if (customClass) {\n        tip.classList.add(...customClass.split(' '));\n      } // If this is a touch-enabled device we add extra\n      // empty mouseover listeners to the body's immediate children;\n      // only needed because of broken event delegation on iOS\n      // https://www.quirksmode.org/blog/archives/2014/02/mouse_event_bub.html\n\n\n      if ('ontouchstart' in document.documentElement) {\n        [].concat(...document.body.children).forEach(element => {\n          EventHandler.on(element, 'mouseover', noop);\n        });\n      }\n\n      const complete = () => {\n        const prevHoverState = this._hoverState;\n        this._hoverState = null;\n        EventHandler.trigger(this._element, this.constructor.Event.SHOWN);\n\n        if (prevHoverState === HOVER_STATE_OUT) {\n          this._leave(null, this);\n        }\n      };\n\n      const isAnimated = this.tip.classList.contains(CLASS_NAME_FADE$2);\n\n      this._queueCallback(complete, this.tip, isAnimated);\n    }\n\n    hide() {\n      if (!this._popper) {\n        return;\n      }\n\n      const tip = this.getTipElement();\n\n      const complete = () => {\n        if (this._isWithActiveTrigger()) {\n          return;\n        }\n\n        if (this._hoverState !== HOVER_STATE_SHOW) {\n          tip.remove();\n        }\n\n        this._cleanTipClass();\n\n        this._element.removeAttribute('aria-describedby');\n\n        EventHandler.trigger(this._element, this.constructor.Event.HIDDEN);\n\n        this._disposePopper();\n      };\n\n      const hideEvent = EventHandler.trigger(this._element, this.constructor.Event.HIDE);\n\n      if (hideEvent.defaultPrevented) {\n        return;\n      }\n\n      tip.classList.remove(CLASS_NAME_SHOW$2); // If this is a touch-enabled device we remove the extra\n      // empty mouseover listeners we added for iOS support\n\n      if ('ontouchstart' in document.documentElement) {\n        [].concat(...document.body.children).forEach(element => EventHandler.off(element, 'mouseover', noop));\n      }\n\n      this._activeTrigger[TRIGGER_CLICK] = false;\n      this._activeTrigger[TRIGGER_FOCUS] = false;\n      this._activeTrigger[TRIGGER_HOVER] = false;\n      const isAnimated = this.tip.classList.contains(CLASS_NAME_FADE$2);\n\n      this._queueCallback(complete, this.tip, isAnimated);\n\n      this._hoverState = '';\n    }\n\n    update() {\n      if (this._popper !== null) {\n        this._popper.update();\n      }\n    } // Protected\n\n\n    isWithContent() {\n      return Boolean(this.getTitle());\n    }\n\n    getTipElement() {\n      if (this.tip) {\n        return this.tip;\n      }\n\n      const element = document.createElement('div');\n      element.innerHTML = this._config.template;\n      const tip = element.children[0];\n      this.setContent(tip);\n      tip.classList.remove(CLASS_NAME_FADE$2, CLASS_NAME_SHOW$2);\n      this.tip = tip;\n      return this.tip;\n    }\n\n    setContent(tip) {\n      this._sanitizeAndSetContent(tip, this.getTitle(), SELECTOR_TOOLTIP_INNER);\n    }\n\n    _sanitizeAndSetContent(template, content, selector) {\n      const templateElement = SelectorEngine.findOne(selector, template);\n\n      if (!content && templateElement) {\n        templateElement.remove();\n        return;\n      } // we use append for html objects to maintain js events\n\n\n      this.setElementContent(templateElement, content);\n    }\n\n    setElementContent(element, content) {\n      if (element === null) {\n        return;\n      }\n\n      if (isElement$1(content)) {\n        content = getElement(content); // content is a DOM node or a jQuery\n\n        if (this._config.html) {\n          if (content.parentNode !== element) {\n            element.innerHTML = '';\n            element.append(content);\n          }\n        } else {\n          element.textContent = content.textContent;\n        }\n\n        return;\n      }\n\n      if (this._config.html) {\n        if (this._config.sanitize) {\n          content = sanitizeHtml(content, this._config.allowList, this._config.sanitizeFn);\n        }\n\n        element.innerHTML = content;\n      } else {\n        element.textContent = content;\n      }\n    }\n\n    getTitle() {\n      const title = this._element.getAttribute('data-bs-original-title') || this._config.title;\n\n      return this._resolvePossibleFunction(title);\n    }\n\n    updateAttachment(attachment) {\n      if (attachment === 'right') {\n        return 'end';\n      }\n\n      if (attachment === 'left') {\n        return 'start';\n      }\n\n      return attachment;\n    } // Private\n\n\n    _initializeOnDelegatedTarget(event, context) {\n      return context || this.constructor.getOrCreateInstance(event.delegateTarget, this._getDelegateConfig());\n    }\n\n    _getOffset() {\n      const {\n        offset\n      } = this._config;\n\n      if (typeof offset === 'string') {\n        return offset.split(',').map(val => Number.parseInt(val, 10));\n      }\n\n      if (typeof offset === 'function') {\n        return popperData => offset(popperData, this._element);\n      }\n\n      return offset;\n    }\n\n    _resolvePossibleFunction(content) {\n      return typeof content === 'function' ? content.call(this._element) : content;\n    }\n\n    _getPopperConfig(attachment) {\n      const defaultBsPopperConfig = {\n        placement: attachment,\n        modifiers: [{\n          name: 'flip',\n          options: {\n            fallbackPlacements: this._config.fallbackPlacements\n          }\n        }, {\n          name: 'offset',\n          options: {\n            offset: this._getOffset()\n          }\n        }, {\n          name: 'preventOverflow',\n          options: {\n            boundary: this._config.boundary\n          }\n        }, {\n          name: 'arrow',\n          options: {\n            element: `.${this.constructor.NAME}-arrow`\n          }\n        }, {\n          name: 'onChange',\n          enabled: true,\n          phase: 'afterWrite',\n          fn: data => this._handlePopperPlacementChange(data)\n        }],\n        onFirstUpdate: data => {\n          if (data.options.placement !== data.placement) {\n            this._handlePopperPlacementChange(data);\n          }\n        }\n      };\n      return { ...defaultBsPopperConfig,\n        ...(typeof this._config.popperConfig === 'function' ? this._config.popperConfig(defaultBsPopperConfig) : this._config.popperConfig)\n      };\n    }\n\n    _addAttachmentClass(attachment) {\n      this.getTipElement().classList.add(`${this._getBasicClassPrefix()}-${this.updateAttachment(attachment)}`);\n    }\n\n    _getAttachment(placement) {\n      return AttachmentMap[placement.toUpperCase()];\n    }\n\n    _setListeners() {\n      const triggers = this._config.trigger.split(' ');\n\n      triggers.forEach(trigger => {\n        if (trigger === 'click') {\n          EventHandler.on(this._element, this.constructor.Event.CLICK, this._config.selector, event => this.toggle(event));\n        } else if (trigger !== TRIGGER_MANUAL) {\n          const eventIn = trigger === TRIGGER_HOVER ? this.constructor.Event.MOUSEENTER : this.constructor.Event.FOCUSIN;\n          const eventOut = trigger === TRIGGER_HOVER ? this.constructor.Event.MOUSELEAVE : this.constructor.Event.FOCUSOUT;\n          EventHandler.on(this._element, eventIn, this._config.selector, event => this._enter(event));\n          EventHandler.on(this._element, eventOut, this._config.selector, event => this._leave(event));\n        }\n      });\n\n      this._hideModalHandler = () => {\n        if (this._element) {\n          this.hide();\n        }\n      };\n\n      EventHandler.on(this._element.closest(SELECTOR_MODAL), EVENT_MODAL_HIDE, this._hideModalHandler);\n\n      if (this._config.selector) {\n        this._config = { ...this._config,\n          trigger: 'manual',\n          selector: ''\n        };\n      } else {\n        this._fixTitle();\n      }\n    }\n\n    _fixTitle() {\n      const title = this._element.getAttribute('title');\n\n      const originalTitleType = typeof this._element.getAttribute('data-bs-original-title');\n\n      if (title || originalTitleType !== 'string') {\n        this._element.setAttribute('data-bs-original-title', title || '');\n\n        if (title && !this._element.getAttribute('aria-label') && !this._element.textContent) {\n          this._element.setAttribute('aria-label', title);\n        }\n\n        this._element.setAttribute('title', '');\n      }\n    }\n\n    _enter(event, context) {\n      context = this._initializeOnDelegatedTarget(event, context);\n\n      if (event) {\n        context._activeTrigger[event.type === 'focusin' ? TRIGGER_FOCUS : TRIGGER_HOVER] = true;\n      }\n\n      if (context.getTipElement().classList.contains(CLASS_NAME_SHOW$2) || context._hoverState === HOVER_STATE_SHOW) {\n        context._hoverState = HOVER_STATE_SHOW;\n        return;\n      }\n\n      clearTimeout(context._timeout);\n      context._hoverState = HOVER_STATE_SHOW;\n\n      if (!context._config.delay || !context._config.delay.show) {\n        context.show();\n        return;\n      }\n\n      context._timeout = setTimeout(() => {\n        if (context._hoverState === HOVER_STATE_SHOW) {\n          context.show();\n        }\n      }, context._config.delay.show);\n    }\n\n    _leave(event, context) {\n      context = this._initializeOnDelegatedTarget(event, context);\n\n      if (event) {\n        context._activeTrigger[event.type === 'focusout' ? TRIGGER_FOCUS : TRIGGER_HOVER] = context._element.contains(event.relatedTarget);\n      }\n\n      if (context._isWithActiveTrigger()) {\n        return;\n      }\n\n      clearTimeout(context._timeout);\n      context._hoverState = HOVER_STATE_OUT;\n\n      if (!context._config.delay || !context._config.delay.hide) {\n        context.hide();\n        return;\n      }\n\n      context._timeout = setTimeout(() => {\n        if (context._hoverState === HOVER_STATE_OUT) {\n          context.hide();\n        }\n      }, context._config.delay.hide);\n    }\n\n    _isWithActiveTrigger() {\n      for (const trigger in this._activeTrigger) {\n        if (this._activeTrigger[trigger]) {\n          return true;\n        }\n      }\n\n      return false;\n    }\n\n    _getConfig(config) {\n      const dataAttributes = Manipulator.getDataAttributes(this._element);\n      Object.keys(dataAttributes).forEach(dataAttr => {\n        if (DISALLOWED_ATTRIBUTES.has(dataAttr)) {\n          delete dataAttributes[dataAttr];\n        }\n      });\n      config = { ...this.constructor.Default,\n        ...dataAttributes,\n        ...(typeof config === 'object' && config ? config : {})\n      };\n      config.container = config.container === false ? document.body : getElement(config.container);\n\n      if (typeof config.delay === 'number') {\n        config.delay = {\n          show: config.delay,\n          hide: config.delay\n        };\n      }\n\n      if (typeof config.title === 'number') {\n        config.title = config.title.toString();\n      }\n\n      if (typeof config.content === 'number') {\n        config.content = config.content.toString();\n      }\n\n      typeCheckConfig(NAME$4, config, this.constructor.DefaultType);\n\n      if (config.sanitize) {\n        config.template = sanitizeHtml(config.template, config.allowList, config.sanitizeFn);\n      }\n\n      return config;\n    }\n\n    _getDelegateConfig() {\n      const config = {};\n\n      for (const key in this._config) {\n        if (this.constructor.Default[key] !== this._config[key]) {\n          config[key] = this._config[key];\n        }\n      } // In the future can be replaced with:\n      // const keysWithDifferentValues = Object.entries(this._config).filter(entry => this.constructor.Default[entry[0]] !== this._config[entry[0]])\n      // `Object.fromEntries(keysWithDifferentValues)`\n\n\n      return config;\n    }\n\n    _cleanTipClass() {\n      const tip = this.getTipElement();\n      const basicClassPrefixRegex = new RegExp(`(^|\\\\s)${this._getBasicClassPrefix()}\\\\S+`, 'g');\n      const tabClass = tip.getAttribute('class').match(basicClassPrefixRegex);\n\n      if (tabClass !== null && tabClass.length > 0) {\n        tabClass.map(token => token.trim()).forEach(tClass => tip.classList.remove(tClass));\n      }\n    }\n\n    _getBasicClassPrefix() {\n      return CLASS_PREFIX$1;\n    }\n\n    _handlePopperPlacementChange(popperData) {\n      const {\n        state\n      } = popperData;\n\n      if (!state) {\n        return;\n      }\n\n      this.tip = state.elements.popper;\n\n      this._cleanTipClass();\n\n      this._addAttachmentClass(this._getAttachment(state.placement));\n    }\n\n    _disposePopper() {\n      if (this._popper) {\n        this._popper.destroy();\n\n        this._popper = null;\n      }\n    } // Static\n\n\n    static jQueryInterface(config) {\n      return this.each(function () {\n        const data = Tooltip.getOrCreateInstance(this, config);\n\n        if (typeof config === 'string') {\n          if (typeof data[config] === 'undefined') {\n            throw new TypeError(`No method named \"${config}\"`);\n          }\n\n          data[config]();\n        }\n      });\n    }\n\n  }\n  /**\n   * ------------------------------------------------------------------------\n   * jQuery\n   * ------------------------------------------------------------------------\n   * add .Tooltip to jQuery only if jQuery is present\n   */\n\n\n  defineJQueryPlugin(Tooltip);\n\n  /**\n   * --------------------------------------------------------------------------\n   * Bootstrap (v5.1.3): popover.js\n   * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n   * --------------------------------------------------------------------------\n   */\n  /**\n   * ------------------------------------------------------------------------\n   * Constants\n   * ------------------------------------------------------------------------\n   */\n\n  const NAME$3 = 'popover';\n  const DATA_KEY$3 = 'bs.popover';\n  const EVENT_KEY$3 = `.${DATA_KEY$3}`;\n  const CLASS_PREFIX = 'bs-popover';\n  const Default$2 = { ...Tooltip.Default,\n    placement: 'right',\n    offset: [0, 8],\n    trigger: 'click',\n    content: '',\n    template: '<div class=\"popover\" role=\"tooltip\">' + '<div class=\"popover-arrow\"></div>' + '<h3 class=\"popover-header\"></h3>' + '<div class=\"popover-body\"></div>' + '</div>'\n  };\n  const DefaultType$2 = { ...Tooltip.DefaultType,\n    content: '(string|element|function)'\n  };\n  const Event$1 = {\n    HIDE: `hide${EVENT_KEY$3}`,\n    HIDDEN: `hidden${EVENT_KEY$3}`,\n    SHOW: `show${EVENT_KEY$3}`,\n    SHOWN: `shown${EVENT_KEY$3}`,\n    INSERTED: `inserted${EVENT_KEY$3}`,\n    CLICK: `click${EVENT_KEY$3}`,\n    FOCUSIN: `focusin${EVENT_KEY$3}`,\n    FOCUSOUT: `focusout${EVENT_KEY$3}`,\n    MOUSEENTER: `mouseenter${EVENT_KEY$3}`,\n    MOUSELEAVE: `mouseleave${EVENT_KEY$3}`\n  };\n  const SELECTOR_TITLE = '.popover-header';\n  const SELECTOR_CONTENT = '.popover-body';\n  /**\n   * ------------------------------------------------------------------------\n   * Class Definition\n   * ------------------------------------------------------------------------\n   */\n\n  class Popover extends Tooltip {\n    // Getters\n    static get Default() {\n      return Default$2;\n    }\n\n    static get NAME() {\n      return NAME$3;\n    }\n\n    static get Event() {\n      return Event$1;\n    }\n\n    static get DefaultType() {\n      return DefaultType$2;\n    } // Overrides\n\n\n    isWithContent() {\n      return this.getTitle() || this._getContent();\n    }\n\n    setContent(tip) {\n      this._sanitizeAndSetContent(tip, this.getTitle(), SELECTOR_TITLE);\n\n      this._sanitizeAndSetContent(tip, this._getContent(), SELECTOR_CONTENT);\n    } // Private\n\n\n    _getContent() {\n      return this._resolvePossibleFunction(this._config.content);\n    }\n\n    _getBasicClassPrefix() {\n      return CLASS_PREFIX;\n    } // Static\n\n\n    static jQueryInterface(config) {\n      return this.each(function () {\n        const data = Popover.getOrCreateInstance(this, config);\n\n        if (typeof config === 'string') {\n          if (typeof data[config] === 'undefined') {\n            throw new TypeError(`No method named \"${config}\"`);\n          }\n\n          data[config]();\n        }\n      });\n    }\n\n  }\n  /**\n   * ------------------------------------------------------------------------\n   * jQuery\n   * ------------------------------------------------------------------------\n   * add .Popover to jQuery only if jQuery is present\n   */\n\n\n  defineJQueryPlugin(Popover);\n\n  /**\n   * --------------------------------------------------------------------------\n   * Bootstrap (v5.1.3): scrollspy.js\n   * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n   * --------------------------------------------------------------------------\n   */\n  /**\n   * ------------------------------------------------------------------------\n   * Constants\n   * ------------------------------------------------------------------------\n   */\n\n  const NAME$2 = 'scrollspy';\n  const DATA_KEY$2 = 'bs.scrollspy';\n  const EVENT_KEY$2 = `.${DATA_KEY$2}`;\n  const DATA_API_KEY$1 = '.data-api';\n  const Default$1 = {\n    offset: 10,\n    method: 'auto',\n    target: ''\n  };\n  const DefaultType$1 = {\n    offset: 'number',\n    method: 'string',\n    target: '(string|element)'\n  };\n  const EVENT_ACTIVATE = `activate${EVENT_KEY$2}`;\n  const EVENT_SCROLL = `scroll${EVENT_KEY$2}`;\n  const EVENT_LOAD_DATA_API = `load${EVENT_KEY$2}${DATA_API_KEY$1}`;\n  const CLASS_NAME_DROPDOWN_ITEM = 'dropdown-item';\n  const CLASS_NAME_ACTIVE$1 = 'active';\n  const SELECTOR_DATA_SPY = '[data-bs-spy=\"scroll\"]';\n  const SELECTOR_NAV_LIST_GROUP$1 = '.nav, .list-group';\n  const SELECTOR_NAV_LINKS = '.nav-link';\n  const SELECTOR_NAV_ITEMS = '.nav-item';\n  const SELECTOR_LIST_ITEMS = '.list-group-item';\n  const SELECTOR_LINK_ITEMS = `${SELECTOR_NAV_LINKS}, ${SELECTOR_LIST_ITEMS}, .${CLASS_NAME_DROPDOWN_ITEM}`;\n  const SELECTOR_DROPDOWN$1 = '.dropdown';\n  const SELECTOR_DROPDOWN_TOGGLE$1 = '.dropdown-toggle';\n  const METHOD_OFFSET = 'offset';\n  const METHOD_POSITION = 'position';\n  /**\n   * ------------------------------------------------------------------------\n   * Class Definition\n   * ------------------------------------------------------------------------\n   */\n\n  class ScrollSpy extends BaseComponent {\n    constructor(element, config) {\n      super(element);\n      this._scrollElement = this._element.tagName === 'BODY' ? window : this._element;\n      this._config = this._getConfig(config);\n      this._offsets = [];\n      this._targets = [];\n      this._activeTarget = null;\n      this._scrollHeight = 0;\n      EventHandler.on(this._scrollElement, EVENT_SCROLL, () => this._process());\n      this.refresh();\n\n      this._process();\n    } // Getters\n\n\n    static get Default() {\n      return Default$1;\n    }\n\n    static get NAME() {\n      return NAME$2;\n    } // Public\n\n\n    refresh() {\n      const autoMethod = this._scrollElement === this._scrollElement.window ? METHOD_OFFSET : METHOD_POSITION;\n      const offsetMethod = this._config.method === 'auto' ? autoMethod : this._config.method;\n      const offsetBase = offsetMethod === METHOD_POSITION ? this._getScrollTop() : 0;\n      this._offsets = [];\n      this._targets = [];\n      this._scrollHeight = this._getScrollHeight();\n      const targets = SelectorEngine.find(SELECTOR_LINK_ITEMS, this._config.target);\n      targets.map(element => {\n        const targetSelector = getSelectorFromElement(element);\n        const target = targetSelector ? SelectorEngine.findOne(targetSelector) : null;\n\n        if (target) {\n          const targetBCR = target.getBoundingClientRect();\n\n          if (targetBCR.width || targetBCR.height) {\n            return [Manipulator[offsetMethod](target).top + offsetBase, targetSelector];\n          }\n        }\n\n        return null;\n      }).filter(item => item).sort((a, b) => a[0] - b[0]).forEach(item => {\n        this._offsets.push(item[0]);\n\n        this._targets.push(item[1]);\n      });\n    }\n\n    dispose() {\n      EventHandler.off(this._scrollElement, EVENT_KEY$2);\n      super.dispose();\n    } // Private\n\n\n    _getConfig(config) {\n      config = { ...Default$1,\n        ...Manipulator.getDataAttributes(this._element),\n        ...(typeof config === 'object' && config ? config : {})\n      };\n      config.target = getElement(config.target) || document.documentElement;\n      typeCheckConfig(NAME$2, config, DefaultType$1);\n      return config;\n    }\n\n    _getScrollTop() {\n      return this._scrollElement === window ? this._scrollElement.pageYOffset : this._scrollElement.scrollTop;\n    }\n\n    _getScrollHeight() {\n      return this._scrollElement.scrollHeight || Math.max(document.body.scrollHeight, document.documentElement.scrollHeight);\n    }\n\n    _getOffsetHeight() {\n      return this._scrollElement === window ? window.innerHeight : this._scrollElement.getBoundingClientRect().height;\n    }\n\n    _process() {\n      const scrollTop = this._getScrollTop() + this._config.offset;\n\n      const scrollHeight = this._getScrollHeight();\n\n      const maxScroll = this._config.offset + scrollHeight - this._getOffsetHeight();\n\n      if (this._scrollHeight !== scrollHeight) {\n        this.refresh();\n      }\n\n      if (scrollTop >= maxScroll) {\n        const target = this._targets[this._targets.length - 1];\n\n        if (this._activeTarget !== target) {\n          this._activate(target);\n        }\n\n        return;\n      }\n\n      if (this._activeTarget && scrollTop < this._offsets[0] && this._offsets[0] > 0) {\n        this._activeTarget = null;\n\n        this._clear();\n\n        return;\n      }\n\n      for (let i = this._offsets.length; i--;) {\n        const isActiveTarget = this._activeTarget !== this._targets[i] && scrollTop >= this._offsets[i] && (typeof this._offsets[i + 1] === 'undefined' || scrollTop < this._offsets[i + 1]);\n\n        if (isActiveTarget) {\n          this._activate(this._targets[i]);\n        }\n      }\n    }\n\n    _activate(target) {\n      this._activeTarget = target;\n\n      this._clear();\n\n      const queries = SELECTOR_LINK_ITEMS.split(',').map(selector => `${selector}[data-bs-target=\"${target}\"],${selector}[href=\"${target}\"]`);\n      const link = SelectorEngine.findOne(queries.join(','), this._config.target);\n      link.classList.add(CLASS_NAME_ACTIVE$1);\n\n      if (link.classList.contains(CLASS_NAME_DROPDOWN_ITEM)) {\n        SelectorEngine.findOne(SELECTOR_DROPDOWN_TOGGLE$1, link.closest(SELECTOR_DROPDOWN$1)).classList.add(CLASS_NAME_ACTIVE$1);\n      } else {\n        SelectorEngine.parents(link, SELECTOR_NAV_LIST_GROUP$1).forEach(listGroup => {\n          // Set triggered links parents as active\n          // With both <ul> and <nav> markup a parent is the previous sibling of any nav ancestor\n          SelectorEngine.prev(listGroup, `${SELECTOR_NAV_LINKS}, ${SELECTOR_LIST_ITEMS}`).forEach(item => item.classList.add(CLASS_NAME_ACTIVE$1)); // Handle special case when .nav-link is inside .nav-item\n\n          SelectorEngine.prev(listGroup, SELECTOR_NAV_ITEMS).forEach(navItem => {\n            SelectorEngine.children(navItem, SELECTOR_NAV_LINKS).forEach(item => item.classList.add(CLASS_NAME_ACTIVE$1));\n          });\n        });\n      }\n\n      EventHandler.trigger(this._scrollElement, EVENT_ACTIVATE, {\n        relatedTarget: target\n      });\n    }\n\n    _clear() {\n      SelectorEngine.find(SELECTOR_LINK_ITEMS, this._config.target).filter(node => node.classList.contains(CLASS_NAME_ACTIVE$1)).forEach(node => node.classList.remove(CLASS_NAME_ACTIVE$1));\n    } // Static\n\n\n    static jQueryInterface(config) {\n      return this.each(function () {\n        const data = ScrollSpy.getOrCreateInstance(this, config);\n\n        if (typeof config !== 'string') {\n          return;\n        }\n\n        if (typeof data[config] === 'undefined') {\n          throw new TypeError(`No method named \"${config}\"`);\n        }\n\n        data[config]();\n      });\n    }\n\n  }\n  /**\n   * ------------------------------------------------------------------------\n   * Data Api implementation\n   * ------------------------------------------------------------------------\n   */\n\n\n  EventHandler.on(window, EVENT_LOAD_DATA_API, () => {\n    SelectorEngine.find(SELECTOR_DATA_SPY).forEach(spy => new ScrollSpy(spy));\n  });\n  /**\n   * ------------------------------------------------------------------------\n   * jQuery\n   * ------------------------------------------------------------------------\n   * add .ScrollSpy to jQuery only if jQuery is present\n   */\n\n  defineJQueryPlugin(ScrollSpy);\n\n  /**\n   * --------------------------------------------------------------------------\n   * Bootstrap (v5.1.3): tab.js\n   * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n   * --------------------------------------------------------------------------\n   */\n  /**\n   * ------------------------------------------------------------------------\n   * Constants\n   * ------------------------------------------------------------------------\n   */\n\n  const NAME$1 = 'tab';\n  const DATA_KEY$1 = 'bs.tab';\n  const EVENT_KEY$1 = `.${DATA_KEY$1}`;\n  const DATA_API_KEY = '.data-api';\n  const EVENT_HIDE$1 = `hide${EVENT_KEY$1}`;\n  const EVENT_HIDDEN$1 = `hidden${EVENT_KEY$1}`;\n  const EVENT_SHOW$1 = `show${EVENT_KEY$1}`;\n  const EVENT_SHOWN$1 = `shown${EVENT_KEY$1}`;\n  const EVENT_CLICK_DATA_API = `click${EVENT_KEY$1}${DATA_API_KEY}`;\n  const CLASS_NAME_DROPDOWN_MENU = 'dropdown-menu';\n  const CLASS_NAME_ACTIVE = 'active';\n  const CLASS_NAME_FADE$1 = 'fade';\n  const CLASS_NAME_SHOW$1 = 'show';\n  const SELECTOR_DROPDOWN = '.dropdown';\n  const SELECTOR_NAV_LIST_GROUP = '.nav, .list-group';\n  const SELECTOR_ACTIVE = '.active';\n  const SELECTOR_ACTIVE_UL = ':scope > li > .active';\n  const SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"tab\"], [data-bs-toggle=\"pill\"], [data-bs-toggle=\"list\"]';\n  const SELECTOR_DROPDOWN_TOGGLE = '.dropdown-toggle';\n  const SELECTOR_DROPDOWN_ACTIVE_CHILD = ':scope > .dropdown-menu .active';\n  /**\n   * ------------------------------------------------------------------------\n   * Class Definition\n   * ------------------------------------------------------------------------\n   */\n\n  class Tab extends BaseComponent {\n    // Getters\n    static get NAME() {\n      return NAME$1;\n    } // Public\n\n\n    show() {\n      if (this._element.parentNode && this._element.parentNode.nodeType === Node.ELEMENT_NODE && this._element.classList.contains(CLASS_NAME_ACTIVE)) {\n        return;\n      }\n\n      let previous;\n      const target = getElementFromSelector(this._element);\n\n      const listElement = this._element.closest(SELECTOR_NAV_LIST_GROUP);\n\n      if (listElement) {\n        const itemSelector = listElement.nodeName === 'UL' || listElement.nodeName === 'OL' ? SELECTOR_ACTIVE_UL : SELECTOR_ACTIVE;\n        previous = SelectorEngine.find(itemSelector, listElement);\n        previous = previous[previous.length - 1];\n      }\n\n      const hideEvent = previous ? EventHandler.trigger(previous, EVENT_HIDE$1, {\n        relatedTarget: this._element\n      }) : null;\n      const showEvent = EventHandler.trigger(this._element, EVENT_SHOW$1, {\n        relatedTarget: previous\n      });\n\n      if (showEvent.defaultPrevented || hideEvent !== null && hideEvent.defaultPrevented) {\n        return;\n      }\n\n      this._activate(this._element, listElement);\n\n      const complete = () => {\n        EventHandler.trigger(previous, EVENT_HIDDEN$1, {\n          relatedTarget: this._element\n        });\n        EventHandler.trigger(this._element, EVENT_SHOWN$1, {\n          relatedTarget: previous\n        });\n      };\n\n      if (target) {\n        this._activate(target, target.parentNode, complete);\n      } else {\n        complete();\n      }\n    } // Private\n\n\n    _activate(element, container, callback) {\n      const activeElements = container && (container.nodeName === 'UL' || container.nodeName === 'OL') ? SelectorEngine.find(SELECTOR_ACTIVE_UL, container) : SelectorEngine.children(container, SELECTOR_ACTIVE);\n      const active = activeElements[0];\n      const isTransitioning = callback && active && active.classList.contains(CLASS_NAME_FADE$1);\n\n      const complete = () => this._transitionComplete(element, active, callback);\n\n      if (active && isTransitioning) {\n        active.classList.remove(CLASS_NAME_SHOW$1);\n\n        this._queueCallback(complete, element, true);\n      } else {\n        complete();\n      }\n    }\n\n    _transitionComplete(element, active, callback) {\n      if (active) {\n        active.classList.remove(CLASS_NAME_ACTIVE);\n        const dropdownChild = SelectorEngine.findOne(SELECTOR_DROPDOWN_ACTIVE_CHILD, active.parentNode);\n\n        if (dropdownChild) {\n          dropdownChild.classList.remove(CLASS_NAME_ACTIVE);\n        }\n\n        if (active.getAttribute('role') === 'tab') {\n          active.setAttribute('aria-selected', false);\n        }\n      }\n\n      element.classList.add(CLASS_NAME_ACTIVE);\n\n      if (element.getAttribute('role') === 'tab') {\n        element.setAttribute('aria-selected', true);\n      }\n\n      reflow(element);\n\n      if (element.classList.contains(CLASS_NAME_FADE$1)) {\n        element.classList.add(CLASS_NAME_SHOW$1);\n      }\n\n      let parent = element.parentNode;\n\n      if (parent && parent.nodeName === 'LI') {\n        parent = parent.parentNode;\n      }\n\n      if (parent && parent.classList.contains(CLASS_NAME_DROPDOWN_MENU)) {\n        const dropdownElement = element.closest(SELECTOR_DROPDOWN);\n\n        if (dropdownElement) {\n          SelectorEngine.find(SELECTOR_DROPDOWN_TOGGLE, dropdownElement).forEach(dropdown => dropdown.classList.add(CLASS_NAME_ACTIVE));\n        }\n\n        element.setAttribute('aria-expanded', true);\n      }\n\n      if (callback) {\n        callback();\n      }\n    } // Static\n\n\n    static jQueryInterface(config) {\n      return this.each(function () {\n        const data = Tab.getOrCreateInstance(this);\n\n        if (typeof config === 'string') {\n          if (typeof data[config] === 'undefined') {\n            throw new TypeError(`No method named \"${config}\"`);\n          }\n\n          data[config]();\n        }\n      });\n    }\n\n  }\n  /**\n   * ------------------------------------------------------------------------\n   * Data Api implementation\n   * ------------------------------------------------------------------------\n   */\n\n\n  EventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {\n    if (['A', 'AREA'].includes(this.tagName)) {\n      event.preventDefault();\n    }\n\n    if (isDisabled(this)) {\n      return;\n    }\n\n    const data = Tab.getOrCreateInstance(this);\n    data.show();\n  });\n  /**\n   * ------------------------------------------------------------------------\n   * jQuery\n   * ------------------------------------------------------------------------\n   * add .Tab to jQuery only if jQuery is present\n   */\n\n  defineJQueryPlugin(Tab);\n\n  /**\n   * --------------------------------------------------------------------------\n   * Bootstrap (v5.1.3): toast.js\n   * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n   * --------------------------------------------------------------------------\n   */\n  /**\n   * ------------------------------------------------------------------------\n   * Constants\n   * ------------------------------------------------------------------------\n   */\n\n  const NAME = 'toast';\n  const DATA_KEY = 'bs.toast';\n  const EVENT_KEY = `.${DATA_KEY}`;\n  const EVENT_MOUSEOVER = `mouseover${EVENT_KEY}`;\n  const EVENT_MOUSEOUT = `mouseout${EVENT_KEY}`;\n  const EVENT_FOCUSIN = `focusin${EVENT_KEY}`;\n  const EVENT_FOCUSOUT = `focusout${EVENT_KEY}`;\n  const EVENT_HIDE = `hide${EVENT_KEY}`;\n  const EVENT_HIDDEN = `hidden${EVENT_KEY}`;\n  const EVENT_SHOW = `show${EVENT_KEY}`;\n  const EVENT_SHOWN = `shown${EVENT_KEY}`;\n  const CLASS_NAME_FADE = 'fade';\n  const CLASS_NAME_HIDE = 'hide'; // @deprecated - kept here only for backwards compatibility\n\n  const CLASS_NAME_SHOW = 'show';\n  const CLASS_NAME_SHOWING = 'showing';\n  const DefaultType = {\n    animation: 'boolean',\n    autohide: 'boolean',\n    delay: 'number'\n  };\n  const Default = {\n    animation: true,\n    autohide: true,\n    delay: 5000\n  };\n  /**\n   * ------------------------------------------------------------------------\n   * Class Definition\n   * ------------------------------------------------------------------------\n   */\n\n  class Toast extends BaseComponent {\n    constructor(element, config) {\n      super(element);\n      this._config = this._getConfig(config);\n      this._timeout = null;\n      this._hasMouseInteraction = false;\n      this._hasKeyboardInteraction = false;\n\n      this._setListeners();\n    } // Getters\n\n\n    static get DefaultType() {\n      return DefaultType;\n    }\n\n    static get Default() {\n      return Default;\n    }\n\n    static get NAME() {\n      return NAME;\n    } // Public\n\n\n    show() {\n      const showEvent = EventHandler.trigger(this._element, EVENT_SHOW);\n\n      if (showEvent.defaultPrevented) {\n        return;\n      }\n\n      this._clearTimeout();\n\n      if (this._config.animation) {\n        this._element.classList.add(CLASS_NAME_FADE);\n      }\n\n      const complete = () => {\n        this._element.classList.remove(CLASS_NAME_SHOWING);\n\n        EventHandler.trigger(this._element, EVENT_SHOWN);\n\n        this._maybeScheduleHide();\n      };\n\n      this._element.classList.remove(CLASS_NAME_HIDE); // @deprecated\n\n\n      reflow(this._element);\n\n      this._element.classList.add(CLASS_NAME_SHOW);\n\n      this._element.classList.add(CLASS_NAME_SHOWING);\n\n      this._queueCallback(complete, this._element, this._config.animation);\n    }\n\n    hide() {\n      if (!this._element.classList.contains(CLASS_NAME_SHOW)) {\n        return;\n      }\n\n      const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE);\n\n      if (hideEvent.defaultPrevented) {\n        return;\n      }\n\n      const complete = () => {\n        this._element.classList.add(CLASS_NAME_HIDE); // @deprecated\n\n\n        this._element.classList.remove(CLASS_NAME_SHOWING);\n\n        this._element.classList.remove(CLASS_NAME_SHOW);\n\n        EventHandler.trigger(this._element, EVENT_HIDDEN);\n      };\n\n      this._element.classList.add(CLASS_NAME_SHOWING);\n\n      this._queueCallback(complete, this._element, this._config.animation);\n    }\n\n    dispose() {\n      this._clearTimeout();\n\n      if (this._element.classList.contains(CLASS_NAME_SHOW)) {\n        this._element.classList.remove(CLASS_NAME_SHOW);\n      }\n\n      super.dispose();\n    } // Private\n\n\n    _getConfig(config) {\n      config = { ...Default,\n        ...Manipulator.getDataAttributes(this._element),\n        ...(typeof config === 'object' && config ? config : {})\n      };\n      typeCheckConfig(NAME, config, this.constructor.DefaultType);\n      return config;\n    }\n\n    _maybeScheduleHide() {\n      if (!this._config.autohide) {\n        return;\n      }\n\n      if (this._hasMouseInteraction || this._hasKeyboardInteraction) {\n        return;\n      }\n\n      this._timeout = setTimeout(() => {\n        this.hide();\n      }, this._config.delay);\n    }\n\n    _onInteraction(event, isInteracting) {\n      switch (event.type) {\n        case 'mouseover':\n        case 'mouseout':\n          this._hasMouseInteraction = isInteracting;\n          break;\n\n        case 'focusin':\n        case 'focusout':\n          this._hasKeyboardInteraction = isInteracting;\n          break;\n      }\n\n      if (isInteracting) {\n        this._clearTimeout();\n\n        return;\n      }\n\n      const nextElement = event.relatedTarget;\n\n      if (this._element === nextElement || this._element.contains(nextElement)) {\n        return;\n      }\n\n      this._maybeScheduleHide();\n    }\n\n    _setListeners() {\n      EventHandler.on(this._element, EVENT_MOUSEOVER, event => this._onInteraction(event, true));\n      EventHandler.on(this._element, EVENT_MOUSEOUT, event => this._onInteraction(event, false));\n      EventHandler.on(this._element, EVENT_FOCUSIN, event => this._onInteraction(event, true));\n      EventHandler.on(this._element, EVENT_FOCUSOUT, event => this._onInteraction(event, false));\n    }\n\n    _clearTimeout() {\n      clearTimeout(this._timeout);\n      this._timeout = null;\n    } // Static\n\n\n    static jQueryInterface(config) {\n      return this.each(function () {\n        const data = Toast.getOrCreateInstance(this, config);\n\n        if (typeof config === 'string') {\n          if (typeof data[config] === 'undefined') {\n            throw new TypeError(`No method named \"${config}\"`);\n          }\n\n          data[config](this);\n        }\n      });\n    }\n\n  }\n\n  enableDismissTrigger(Toast);\n  /**\n   * ------------------------------------------------------------------------\n   * jQuery\n   * ------------------------------------------------------------------------\n   * add .Toast to jQuery only if jQuery is present\n   */\n\n  defineJQueryPlugin(Toast);\n\n  /**\n   * --------------------------------------------------------------------------\n   * Bootstrap (v5.1.3): index.umd.js\n   * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n   * --------------------------------------------------------------------------\n   */\n  const index_umd = {\n    Alert,\n    Button,\n    Carousel,\n    Collapse,\n    Dropdown,\n    Modal,\n    Offcanvas,\n    Popover,\n    ScrollSpy,\n    Tab,\n    Toast,\n    Tooltip\n  };\n\n  return index_umd;\n\n}));\n//# sourceMappingURL=bootstrap.bundle.js.map\n"
  },
  {
    "path": "application/public/bootstrap/js/bootstrap.esm.js",
    "content": "/*!\n  * Bootstrap v5.1.3 (https://getbootstrap.com/)\n  * Copyright 2011-2021 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)\n  * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n  */\nimport * as Popper from '@popperjs/core';\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.1.3): util/index.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\nconst MAX_UID = 1000000;\nconst MILLISECONDS_MULTIPLIER = 1000;\nconst TRANSITION_END = 'transitionend'; // Shoutout AngusCroll (https://goo.gl/pxwQGp)\n\nconst toType = obj => {\n  if (obj === null || obj === undefined) {\n    return `${obj}`;\n  }\n\n  return {}.toString.call(obj).match(/\\s([a-z]+)/i)[1].toLowerCase();\n};\n/**\n * --------------------------------------------------------------------------\n * Public Util Api\n * --------------------------------------------------------------------------\n */\n\n\nconst getUID = prefix => {\n  do {\n    prefix += Math.floor(Math.random() * MAX_UID);\n  } while (document.getElementById(prefix));\n\n  return prefix;\n};\n\nconst getSelector = element => {\n  let selector = element.getAttribute('data-bs-target');\n\n  if (!selector || selector === '#') {\n    let hrefAttr = element.getAttribute('href'); // The only valid content that could double as a selector are IDs or classes,\n    // so everything starting with `#` or `.`. If a \"real\" URL is used as the selector,\n    // `document.querySelector` will rightfully complain it is invalid.\n    // See https://github.com/twbs/bootstrap/issues/32273\n\n    if (!hrefAttr || !hrefAttr.includes('#') && !hrefAttr.startsWith('.')) {\n      return null;\n    } // Just in case some CMS puts out a full URL with the anchor appended\n\n\n    if (hrefAttr.includes('#') && !hrefAttr.startsWith('#')) {\n      hrefAttr = `#${hrefAttr.split('#')[1]}`;\n    }\n\n    selector = hrefAttr && hrefAttr !== '#' ? hrefAttr.trim() : null;\n  }\n\n  return selector;\n};\n\nconst getSelectorFromElement = element => {\n  const selector = getSelector(element);\n\n  if (selector) {\n    return document.querySelector(selector) ? selector : null;\n  }\n\n  return null;\n};\n\nconst getElementFromSelector = element => {\n  const selector = getSelector(element);\n  return selector ? document.querySelector(selector) : null;\n};\n\nconst getTransitionDurationFromElement = element => {\n  if (!element) {\n    return 0;\n  } // Get transition-duration of the element\n\n\n  let {\n    transitionDuration,\n    transitionDelay\n  } = window.getComputedStyle(element);\n  const floatTransitionDuration = Number.parseFloat(transitionDuration);\n  const floatTransitionDelay = Number.parseFloat(transitionDelay); // Return 0 if element or transition duration is not found\n\n  if (!floatTransitionDuration && !floatTransitionDelay) {\n    return 0;\n  } // If multiple durations are defined, take the first\n\n\n  transitionDuration = transitionDuration.split(',')[0];\n  transitionDelay = transitionDelay.split(',')[0];\n  return (Number.parseFloat(transitionDuration) + Number.parseFloat(transitionDelay)) * MILLISECONDS_MULTIPLIER;\n};\n\nconst triggerTransitionEnd = element => {\n  element.dispatchEvent(new Event(TRANSITION_END));\n};\n\nconst isElement = obj => {\n  if (!obj || typeof obj !== 'object') {\n    return false;\n  }\n\n  if (typeof obj.jquery !== 'undefined') {\n    obj = obj[0];\n  }\n\n  return typeof obj.nodeType !== 'undefined';\n};\n\nconst getElement = obj => {\n  if (isElement(obj)) {\n    // it's a jQuery object or a node element\n    return obj.jquery ? obj[0] : obj;\n  }\n\n  if (typeof obj === 'string' && obj.length > 0) {\n    return document.querySelector(obj);\n  }\n\n  return null;\n};\n\nconst typeCheckConfig = (componentName, config, configTypes) => {\n  Object.keys(configTypes).forEach(property => {\n    const expectedTypes = configTypes[property];\n    const value = config[property];\n    const valueType = value && isElement(value) ? 'element' : toType(value);\n\n    if (!new RegExp(expectedTypes).test(valueType)) {\n      throw new TypeError(`${componentName.toUpperCase()}: Option \"${property}\" provided type \"${valueType}\" but expected type \"${expectedTypes}\".`);\n    }\n  });\n};\n\nconst isVisible = element => {\n  if (!isElement(element) || element.getClientRects().length === 0) {\n    return false;\n  }\n\n  return getComputedStyle(element).getPropertyValue('visibility') === 'visible';\n};\n\nconst isDisabled = element => {\n  if (!element || element.nodeType !== Node.ELEMENT_NODE) {\n    return true;\n  }\n\n  if (element.classList.contains('disabled')) {\n    return true;\n  }\n\n  if (typeof element.disabled !== 'undefined') {\n    return element.disabled;\n  }\n\n  return element.hasAttribute('disabled') && element.getAttribute('disabled') !== 'false';\n};\n\nconst findShadowRoot = element => {\n  if (!document.documentElement.attachShadow) {\n    return null;\n  } // Can find the shadow root otherwise it'll return the document\n\n\n  if (typeof element.getRootNode === 'function') {\n    const root = element.getRootNode();\n    return root instanceof ShadowRoot ? root : null;\n  }\n\n  if (element instanceof ShadowRoot) {\n    return element;\n  } // when we don't find a shadow root\n\n\n  if (!element.parentNode) {\n    return null;\n  }\n\n  return findShadowRoot(element.parentNode);\n};\n\nconst noop = () => {};\n/**\n * Trick to restart an element's animation\n *\n * @param {HTMLElement} element\n * @return void\n *\n * @see https://www.charistheo.io/blog/2021/02/restart-a-css-animation-with-javascript/#restarting-a-css-animation\n */\n\n\nconst reflow = element => {\n  // eslint-disable-next-line no-unused-expressions\n  element.offsetHeight;\n};\n\nconst getjQuery = () => {\n  const {\n    jQuery\n  } = window;\n\n  if (jQuery && !document.body.hasAttribute('data-bs-no-jquery')) {\n    return jQuery;\n  }\n\n  return null;\n};\n\nconst DOMContentLoadedCallbacks = [];\n\nconst onDOMContentLoaded = callback => {\n  if (document.readyState === 'loading') {\n    // add listener on the first call when the document is in loading state\n    if (!DOMContentLoadedCallbacks.length) {\n      document.addEventListener('DOMContentLoaded', () => {\n        DOMContentLoadedCallbacks.forEach(callback => callback());\n      });\n    }\n\n    DOMContentLoadedCallbacks.push(callback);\n  } else {\n    callback();\n  }\n};\n\nconst isRTL = () => document.documentElement.dir === 'rtl';\n\nconst defineJQueryPlugin = plugin => {\n  onDOMContentLoaded(() => {\n    const $ = getjQuery();\n    /* istanbul ignore if */\n\n    if ($) {\n      const name = plugin.NAME;\n      const JQUERY_NO_CONFLICT = $.fn[name];\n      $.fn[name] = plugin.jQueryInterface;\n      $.fn[name].Constructor = plugin;\n\n      $.fn[name].noConflict = () => {\n        $.fn[name] = JQUERY_NO_CONFLICT;\n        return plugin.jQueryInterface;\n      };\n    }\n  });\n};\n\nconst execute = callback => {\n  if (typeof callback === 'function') {\n    callback();\n  }\n};\n\nconst executeAfterTransition = (callback, transitionElement, waitForTransition = true) => {\n  if (!waitForTransition) {\n    execute(callback);\n    return;\n  }\n\n  const durationPadding = 5;\n  const emulatedDuration = getTransitionDurationFromElement(transitionElement) + durationPadding;\n  let called = false;\n\n  const handler = ({\n    target\n  }) => {\n    if (target !== transitionElement) {\n      return;\n    }\n\n    called = true;\n    transitionElement.removeEventListener(TRANSITION_END, handler);\n    execute(callback);\n  };\n\n  transitionElement.addEventListener(TRANSITION_END, handler);\n  setTimeout(() => {\n    if (!called) {\n      triggerTransitionEnd(transitionElement);\n    }\n  }, emulatedDuration);\n};\n/**\n * Return the previous/next element of a list.\n *\n * @param {array} list    The list of elements\n * @param activeElement   The active element\n * @param shouldGetNext   Choose to get next or previous element\n * @param isCycleAllowed\n * @return {Element|elem} The proper element\n */\n\n\nconst getNextActiveElement = (list, activeElement, shouldGetNext, isCycleAllowed) => {\n  let index = list.indexOf(activeElement); // if the element does not exist in the list return an element depending on the direction and if cycle is allowed\n\n  if (index === -1) {\n    return list[!shouldGetNext && isCycleAllowed ? list.length - 1 : 0];\n  }\n\n  const listLength = list.length;\n  index += shouldGetNext ? 1 : -1;\n\n  if (isCycleAllowed) {\n    index = (index + listLength) % listLength;\n  }\n\n  return list[Math.max(0, Math.min(index, listLength - 1))];\n};\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.1.3): dom/event-handler.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst namespaceRegex = /[^.]*(?=\\..*)\\.|.*/;\nconst stripNameRegex = /\\..*/;\nconst stripUidRegex = /::\\d+$/;\nconst eventRegistry = {}; // Events storage\n\nlet uidEvent = 1;\nconst customEvents = {\n  mouseenter: 'mouseover',\n  mouseleave: 'mouseout'\n};\nconst customEventsRegex = /^(mouseenter|mouseleave)/i;\nconst nativeEvents = new Set(['click', 'dblclick', 'mouseup', 'mousedown', 'contextmenu', 'mousewheel', 'DOMMouseScroll', 'mouseover', 'mouseout', 'mousemove', 'selectstart', 'selectend', 'keydown', 'keypress', 'keyup', 'orientationchange', 'touchstart', 'touchmove', 'touchend', 'touchcancel', 'pointerdown', 'pointermove', 'pointerup', 'pointerleave', 'pointercancel', 'gesturestart', 'gesturechange', 'gestureend', 'focus', 'blur', 'change', 'reset', 'select', 'submit', 'focusin', 'focusout', 'load', 'unload', 'beforeunload', 'resize', 'move', 'DOMContentLoaded', 'readystatechange', 'error', 'abort', 'scroll']);\n/**\n * ------------------------------------------------------------------------\n * Private methods\n * ------------------------------------------------------------------------\n */\n\nfunction getUidEvent(element, uid) {\n  return uid && `${uid}::${uidEvent++}` || element.uidEvent || uidEvent++;\n}\n\nfunction getEvent(element) {\n  const uid = getUidEvent(element);\n  element.uidEvent = uid;\n  eventRegistry[uid] = eventRegistry[uid] || {};\n  return eventRegistry[uid];\n}\n\nfunction bootstrapHandler(element, fn) {\n  return function handler(event) {\n    event.delegateTarget = element;\n\n    if (handler.oneOff) {\n      EventHandler.off(element, event.type, fn);\n    }\n\n    return fn.apply(element, [event]);\n  };\n}\n\nfunction bootstrapDelegationHandler(element, selector, fn) {\n  return function handler(event) {\n    const domElements = element.querySelectorAll(selector);\n\n    for (let {\n      target\n    } = event; target && target !== this; target = target.parentNode) {\n      for (let i = domElements.length; i--;) {\n        if (domElements[i] === target) {\n          event.delegateTarget = target;\n\n          if (handler.oneOff) {\n            EventHandler.off(element, event.type, selector, fn);\n          }\n\n          return fn.apply(target, [event]);\n        }\n      }\n    } // To please ESLint\n\n\n    return null;\n  };\n}\n\nfunction findHandler(events, handler, delegationSelector = null) {\n  const uidEventList = Object.keys(events);\n\n  for (let i = 0, len = uidEventList.length; i < len; i++) {\n    const event = events[uidEventList[i]];\n\n    if (event.originalHandler === handler && event.delegationSelector === delegationSelector) {\n      return event;\n    }\n  }\n\n  return null;\n}\n\nfunction normalizeParams(originalTypeEvent, handler, delegationFn) {\n  const delegation = typeof handler === 'string';\n  const originalHandler = delegation ? delegationFn : handler;\n  let typeEvent = getTypeEvent(originalTypeEvent);\n  const isNative = nativeEvents.has(typeEvent);\n\n  if (!isNative) {\n    typeEvent = originalTypeEvent;\n  }\n\n  return [delegation, originalHandler, typeEvent];\n}\n\nfunction addHandler(element, originalTypeEvent, handler, delegationFn, oneOff) {\n  if (typeof originalTypeEvent !== 'string' || !element) {\n    return;\n  }\n\n  if (!handler) {\n    handler = delegationFn;\n    delegationFn = null;\n  } // in case of mouseenter or mouseleave wrap the handler within a function that checks for its DOM position\n  // this prevents the handler from being dispatched the same way as mouseover or mouseout does\n\n\n  if (customEventsRegex.test(originalTypeEvent)) {\n    const wrapFn = fn => {\n      return function (event) {\n        if (!event.relatedTarget || event.relatedTarget !== event.delegateTarget && !event.delegateTarget.contains(event.relatedTarget)) {\n          return fn.call(this, event);\n        }\n      };\n    };\n\n    if (delegationFn) {\n      delegationFn = wrapFn(delegationFn);\n    } else {\n      handler = wrapFn(handler);\n    }\n  }\n\n  const [delegation, originalHandler, typeEvent] = normalizeParams(originalTypeEvent, handler, delegationFn);\n  const events = getEvent(element);\n  const handlers = events[typeEvent] || (events[typeEvent] = {});\n  const previousFn = findHandler(handlers, originalHandler, delegation ? handler : null);\n\n  if (previousFn) {\n    previousFn.oneOff = previousFn.oneOff && oneOff;\n    return;\n  }\n\n  const uid = getUidEvent(originalHandler, originalTypeEvent.replace(namespaceRegex, ''));\n  const fn = delegation ? bootstrapDelegationHandler(element, handler, delegationFn) : bootstrapHandler(element, handler);\n  fn.delegationSelector = delegation ? handler : null;\n  fn.originalHandler = originalHandler;\n  fn.oneOff = oneOff;\n  fn.uidEvent = uid;\n  handlers[uid] = fn;\n  element.addEventListener(typeEvent, fn, delegation);\n}\n\nfunction removeHandler(element, events, typeEvent, handler, delegationSelector) {\n  const fn = findHandler(events[typeEvent], handler, delegationSelector);\n\n  if (!fn) {\n    return;\n  }\n\n  element.removeEventListener(typeEvent, fn, Boolean(delegationSelector));\n  delete events[typeEvent][fn.uidEvent];\n}\n\nfunction removeNamespacedHandlers(element, events, typeEvent, namespace) {\n  const storeElementEvent = events[typeEvent] || {};\n  Object.keys(storeElementEvent).forEach(handlerKey => {\n    if (handlerKey.includes(namespace)) {\n      const event = storeElementEvent[handlerKey];\n      removeHandler(element, events, typeEvent, event.originalHandler, event.delegationSelector);\n    }\n  });\n}\n\nfunction getTypeEvent(event) {\n  // allow to get the native events from namespaced events ('click.bs.button' --> 'click')\n  event = event.replace(stripNameRegex, '');\n  return customEvents[event] || event;\n}\n\nconst EventHandler = {\n  on(element, event, handler, delegationFn) {\n    addHandler(element, event, handler, delegationFn, false);\n  },\n\n  one(element, event, handler, delegationFn) {\n    addHandler(element, event, handler, delegationFn, true);\n  },\n\n  off(element, originalTypeEvent, handler, delegationFn) {\n    if (typeof originalTypeEvent !== 'string' || !element) {\n      return;\n    }\n\n    const [delegation, originalHandler, typeEvent] = normalizeParams(originalTypeEvent, handler, delegationFn);\n    const inNamespace = typeEvent !== originalTypeEvent;\n    const events = getEvent(element);\n    const isNamespace = originalTypeEvent.startsWith('.');\n\n    if (typeof originalHandler !== 'undefined') {\n      // Simplest case: handler is passed, remove that listener ONLY.\n      if (!events || !events[typeEvent]) {\n        return;\n      }\n\n      removeHandler(element, events, typeEvent, originalHandler, delegation ? handler : null);\n      return;\n    }\n\n    if (isNamespace) {\n      Object.keys(events).forEach(elementEvent => {\n        removeNamespacedHandlers(element, events, elementEvent, originalTypeEvent.slice(1));\n      });\n    }\n\n    const storeElementEvent = events[typeEvent] || {};\n    Object.keys(storeElementEvent).forEach(keyHandlers => {\n      const handlerKey = keyHandlers.replace(stripUidRegex, '');\n\n      if (!inNamespace || originalTypeEvent.includes(handlerKey)) {\n        const event = storeElementEvent[keyHandlers];\n        removeHandler(element, events, typeEvent, event.originalHandler, event.delegationSelector);\n      }\n    });\n  },\n\n  trigger(element, event, args) {\n    if (typeof event !== 'string' || !element) {\n      return null;\n    }\n\n    const $ = getjQuery();\n    const typeEvent = getTypeEvent(event);\n    const inNamespace = event !== typeEvent;\n    const isNative = nativeEvents.has(typeEvent);\n    let jQueryEvent;\n    let bubbles = true;\n    let nativeDispatch = true;\n    let defaultPrevented = false;\n    let evt = null;\n\n    if (inNamespace && $) {\n      jQueryEvent = $.Event(event, args);\n      $(element).trigger(jQueryEvent);\n      bubbles = !jQueryEvent.isPropagationStopped();\n      nativeDispatch = !jQueryEvent.isImmediatePropagationStopped();\n      defaultPrevented = jQueryEvent.isDefaultPrevented();\n    }\n\n    if (isNative) {\n      evt = document.createEvent('HTMLEvents');\n      evt.initEvent(typeEvent, bubbles, true);\n    } else {\n      evt = new CustomEvent(event, {\n        bubbles,\n        cancelable: true\n      });\n    } // merge custom information in our event\n\n\n    if (typeof args !== 'undefined') {\n      Object.keys(args).forEach(key => {\n        Object.defineProperty(evt, key, {\n          get() {\n            return args[key];\n          }\n\n        });\n      });\n    }\n\n    if (defaultPrevented) {\n      evt.preventDefault();\n    }\n\n    if (nativeDispatch) {\n      element.dispatchEvent(evt);\n    }\n\n    if (evt.defaultPrevented && typeof jQueryEvent !== 'undefined') {\n      jQueryEvent.preventDefault();\n    }\n\n    return evt;\n  }\n\n};\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.1.3): dom/data.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\nconst elementMap = new Map();\nconst Data = {\n  set(element, key, instance) {\n    if (!elementMap.has(element)) {\n      elementMap.set(element, new Map());\n    }\n\n    const instanceMap = elementMap.get(element); // make it clear we only want one instance per element\n    // can be removed later when multiple key/instances are fine to be used\n\n    if (!instanceMap.has(key) && instanceMap.size !== 0) {\n      // eslint-disable-next-line no-console\n      console.error(`Bootstrap doesn't allow more than one instance per element. Bound instance: ${Array.from(instanceMap.keys())[0]}.`);\n      return;\n    }\n\n    instanceMap.set(key, instance);\n  },\n\n  get(element, key) {\n    if (elementMap.has(element)) {\n      return elementMap.get(element).get(key) || null;\n    }\n\n    return null;\n  },\n\n  remove(element, key) {\n    if (!elementMap.has(element)) {\n      return;\n    }\n\n    const instanceMap = elementMap.get(element);\n    instanceMap.delete(key); // free up element references if there are no instances left for an element\n\n    if (instanceMap.size === 0) {\n      elementMap.delete(element);\n    }\n  }\n\n};\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.1.3): base-component.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst VERSION = '5.1.3';\n\nclass BaseComponent {\n  constructor(element) {\n    element = getElement(element);\n\n    if (!element) {\n      return;\n    }\n\n    this._element = element;\n    Data.set(this._element, this.constructor.DATA_KEY, this);\n  }\n\n  dispose() {\n    Data.remove(this._element, this.constructor.DATA_KEY);\n    EventHandler.off(this._element, this.constructor.EVENT_KEY);\n    Object.getOwnPropertyNames(this).forEach(propertyName => {\n      this[propertyName] = null;\n    });\n  }\n\n  _queueCallback(callback, element, isAnimated = true) {\n    executeAfterTransition(callback, element, isAnimated);\n  }\n  /** Static */\n\n\n  static getInstance(element) {\n    return Data.get(getElement(element), this.DATA_KEY);\n  }\n\n  static getOrCreateInstance(element, config = {}) {\n    return this.getInstance(element) || new this(element, typeof config === 'object' ? config : null);\n  }\n\n  static get VERSION() {\n    return VERSION;\n  }\n\n  static get NAME() {\n    throw new Error('You have to implement the static method \"NAME\", for each component!');\n  }\n\n  static get DATA_KEY() {\n    return `bs.${this.NAME}`;\n  }\n\n  static get EVENT_KEY() {\n    return `.${this.DATA_KEY}`;\n  }\n\n}\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.1.3): util/component-functions.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nconst enableDismissTrigger = (component, method = 'hide') => {\n  const clickEvent = `click.dismiss${component.EVENT_KEY}`;\n  const name = component.NAME;\n  EventHandler.on(document, clickEvent, `[data-bs-dismiss=\"${name}\"]`, function (event) {\n    if (['A', 'AREA'].includes(this.tagName)) {\n      event.preventDefault();\n    }\n\n    if (isDisabled(this)) {\n      return;\n    }\n\n    const target = getElementFromSelector(this) || this.closest(`.${name}`);\n    const instance = component.getOrCreateInstance(target); // Method argument is left, for Alert and only, as it doesn't implement the 'hide' method\n\n    instance[method]();\n  });\n};\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.1.3): alert.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME$d = 'alert';\nconst DATA_KEY$c = 'bs.alert';\nconst EVENT_KEY$c = `.${DATA_KEY$c}`;\nconst EVENT_CLOSE = `close${EVENT_KEY$c}`;\nconst EVENT_CLOSED = `closed${EVENT_KEY$c}`;\nconst CLASS_NAME_FADE$5 = 'fade';\nconst CLASS_NAME_SHOW$8 = 'show';\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\nclass Alert extends BaseComponent {\n  // Getters\n  static get NAME() {\n    return NAME$d;\n  } // Public\n\n\n  close() {\n    const closeEvent = EventHandler.trigger(this._element, EVENT_CLOSE);\n\n    if (closeEvent.defaultPrevented) {\n      return;\n    }\n\n    this._element.classList.remove(CLASS_NAME_SHOW$8);\n\n    const isAnimated = this._element.classList.contains(CLASS_NAME_FADE$5);\n\n    this._queueCallback(() => this._destroyElement(), this._element, isAnimated);\n  } // Private\n\n\n  _destroyElement() {\n    this._element.remove();\n\n    EventHandler.trigger(this._element, EVENT_CLOSED);\n    this.dispose();\n  } // Static\n\n\n  static jQueryInterface(config) {\n    return this.each(function () {\n      const data = Alert.getOrCreateInstance(this);\n\n      if (typeof config !== 'string') {\n        return;\n      }\n\n      if (data[config] === undefined || config.startsWith('_') || config === 'constructor') {\n        throw new TypeError(`No method named \"${config}\"`);\n      }\n\n      data[config](this);\n    });\n  }\n\n}\n/**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\n\nenableDismissTrigger(Alert, 'close');\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n * add .Alert to jQuery only if jQuery is present\n */\n\ndefineJQueryPlugin(Alert);\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.1.3): button.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME$c = 'button';\nconst DATA_KEY$b = 'bs.button';\nconst EVENT_KEY$b = `.${DATA_KEY$b}`;\nconst DATA_API_KEY$7 = '.data-api';\nconst CLASS_NAME_ACTIVE$3 = 'active';\nconst SELECTOR_DATA_TOGGLE$5 = '[data-bs-toggle=\"button\"]';\nconst EVENT_CLICK_DATA_API$6 = `click${EVENT_KEY$b}${DATA_API_KEY$7}`;\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\nclass Button extends BaseComponent {\n  // Getters\n  static get NAME() {\n    return NAME$c;\n  } // Public\n\n\n  toggle() {\n    // Toggle class and sync the `aria-pressed` attribute with the return value of the `.toggle()` method\n    this._element.setAttribute('aria-pressed', this._element.classList.toggle(CLASS_NAME_ACTIVE$3));\n  } // Static\n\n\n  static jQueryInterface(config) {\n    return this.each(function () {\n      const data = Button.getOrCreateInstance(this);\n\n      if (config === 'toggle') {\n        data[config]();\n      }\n    });\n  }\n\n}\n/**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\n\nEventHandler.on(document, EVENT_CLICK_DATA_API$6, SELECTOR_DATA_TOGGLE$5, event => {\n  event.preventDefault();\n  const button = event.target.closest(SELECTOR_DATA_TOGGLE$5);\n  const data = Button.getOrCreateInstance(button);\n  data.toggle();\n});\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n * add .Button to jQuery only if jQuery is present\n */\n\ndefineJQueryPlugin(Button);\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.1.3): dom/manipulator.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\nfunction normalizeData(val) {\n  if (val === 'true') {\n    return true;\n  }\n\n  if (val === 'false') {\n    return false;\n  }\n\n  if (val === Number(val).toString()) {\n    return Number(val);\n  }\n\n  if (val === '' || val === 'null') {\n    return null;\n  }\n\n  return val;\n}\n\nfunction normalizeDataKey(key) {\n  return key.replace(/[A-Z]/g, chr => `-${chr.toLowerCase()}`);\n}\n\nconst Manipulator = {\n  setDataAttribute(element, key, value) {\n    element.setAttribute(`data-bs-${normalizeDataKey(key)}`, value);\n  },\n\n  removeDataAttribute(element, key) {\n    element.removeAttribute(`data-bs-${normalizeDataKey(key)}`);\n  },\n\n  getDataAttributes(element) {\n    if (!element) {\n      return {};\n    }\n\n    const attributes = {};\n    Object.keys(element.dataset).filter(key => key.startsWith('bs')).forEach(key => {\n      let pureKey = key.replace(/^bs/, '');\n      pureKey = pureKey.charAt(0).toLowerCase() + pureKey.slice(1, pureKey.length);\n      attributes[pureKey] = normalizeData(element.dataset[key]);\n    });\n    return attributes;\n  },\n\n  getDataAttribute(element, key) {\n    return normalizeData(element.getAttribute(`data-bs-${normalizeDataKey(key)}`));\n  },\n\n  offset(element) {\n    const rect = element.getBoundingClientRect();\n    return {\n      top: rect.top + window.pageYOffset,\n      left: rect.left + window.pageXOffset\n    };\n  },\n\n  position(element) {\n    return {\n      top: element.offsetTop,\n      left: element.offsetLeft\n    };\n  }\n\n};\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.1.3): dom/selector-engine.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\nconst NODE_TEXT = 3;\nconst SelectorEngine = {\n  find(selector, element = document.documentElement) {\n    return [].concat(...Element.prototype.querySelectorAll.call(element, selector));\n  },\n\n  findOne(selector, element = document.documentElement) {\n    return Element.prototype.querySelector.call(element, selector);\n  },\n\n  children(element, selector) {\n    return [].concat(...element.children).filter(child => child.matches(selector));\n  },\n\n  parents(element, selector) {\n    const parents = [];\n    let ancestor = element.parentNode;\n\n    while (ancestor && ancestor.nodeType === Node.ELEMENT_NODE && ancestor.nodeType !== NODE_TEXT) {\n      if (ancestor.matches(selector)) {\n        parents.push(ancestor);\n      }\n\n      ancestor = ancestor.parentNode;\n    }\n\n    return parents;\n  },\n\n  prev(element, selector) {\n    let previous = element.previousElementSibling;\n\n    while (previous) {\n      if (previous.matches(selector)) {\n        return [previous];\n      }\n\n      previous = previous.previousElementSibling;\n    }\n\n    return [];\n  },\n\n  next(element, selector) {\n    let next = element.nextElementSibling;\n\n    while (next) {\n      if (next.matches(selector)) {\n        return [next];\n      }\n\n      next = next.nextElementSibling;\n    }\n\n    return [];\n  },\n\n  focusableChildren(element) {\n    const focusables = ['a', 'button', 'input', 'textarea', 'select', 'details', '[tabindex]', '[contenteditable=\"true\"]'].map(selector => `${selector}:not([tabindex^=\"-\"])`).join(', ');\n    return this.find(focusables, element).filter(el => !isDisabled(el) && isVisible(el));\n  }\n\n};\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.1.3): carousel.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME$b = 'carousel';\nconst DATA_KEY$a = 'bs.carousel';\nconst EVENT_KEY$a = `.${DATA_KEY$a}`;\nconst DATA_API_KEY$6 = '.data-api';\nconst ARROW_LEFT_KEY = 'ArrowLeft';\nconst ARROW_RIGHT_KEY = 'ArrowRight';\nconst TOUCHEVENT_COMPAT_WAIT = 500; // Time for mouse compat events to fire after touch\n\nconst SWIPE_THRESHOLD = 40;\nconst Default$a = {\n  interval: 5000,\n  keyboard: true,\n  slide: false,\n  pause: 'hover',\n  wrap: true,\n  touch: true\n};\nconst DefaultType$a = {\n  interval: '(number|boolean)',\n  keyboard: 'boolean',\n  slide: '(boolean|string)',\n  pause: '(string|boolean)',\n  wrap: 'boolean',\n  touch: 'boolean'\n};\nconst ORDER_NEXT = 'next';\nconst ORDER_PREV = 'prev';\nconst DIRECTION_LEFT = 'left';\nconst DIRECTION_RIGHT = 'right';\nconst KEY_TO_DIRECTION = {\n  [ARROW_LEFT_KEY]: DIRECTION_RIGHT,\n  [ARROW_RIGHT_KEY]: DIRECTION_LEFT\n};\nconst EVENT_SLIDE = `slide${EVENT_KEY$a}`;\nconst EVENT_SLID = `slid${EVENT_KEY$a}`;\nconst EVENT_KEYDOWN = `keydown${EVENT_KEY$a}`;\nconst EVENT_MOUSEENTER = `mouseenter${EVENT_KEY$a}`;\nconst EVENT_MOUSELEAVE = `mouseleave${EVENT_KEY$a}`;\nconst EVENT_TOUCHSTART = `touchstart${EVENT_KEY$a}`;\nconst EVENT_TOUCHMOVE = `touchmove${EVENT_KEY$a}`;\nconst EVENT_TOUCHEND = `touchend${EVENT_KEY$a}`;\nconst EVENT_POINTERDOWN = `pointerdown${EVENT_KEY$a}`;\nconst EVENT_POINTERUP = `pointerup${EVENT_KEY$a}`;\nconst EVENT_DRAG_START = `dragstart${EVENT_KEY$a}`;\nconst EVENT_LOAD_DATA_API$2 = `load${EVENT_KEY$a}${DATA_API_KEY$6}`;\nconst EVENT_CLICK_DATA_API$5 = `click${EVENT_KEY$a}${DATA_API_KEY$6}`;\nconst CLASS_NAME_CAROUSEL = 'carousel';\nconst CLASS_NAME_ACTIVE$2 = 'active';\nconst CLASS_NAME_SLIDE = 'slide';\nconst CLASS_NAME_END = 'carousel-item-end';\nconst CLASS_NAME_START = 'carousel-item-start';\nconst CLASS_NAME_NEXT = 'carousel-item-next';\nconst CLASS_NAME_PREV = 'carousel-item-prev';\nconst CLASS_NAME_POINTER_EVENT = 'pointer-event';\nconst SELECTOR_ACTIVE$1 = '.active';\nconst SELECTOR_ACTIVE_ITEM = '.active.carousel-item';\nconst SELECTOR_ITEM = '.carousel-item';\nconst SELECTOR_ITEM_IMG = '.carousel-item img';\nconst SELECTOR_NEXT_PREV = '.carousel-item-next, .carousel-item-prev';\nconst SELECTOR_INDICATORS = '.carousel-indicators';\nconst SELECTOR_INDICATOR = '[data-bs-target]';\nconst SELECTOR_DATA_SLIDE = '[data-bs-slide], [data-bs-slide-to]';\nconst SELECTOR_DATA_RIDE = '[data-bs-ride=\"carousel\"]';\nconst POINTER_TYPE_TOUCH = 'touch';\nconst POINTER_TYPE_PEN = 'pen';\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\nclass Carousel extends BaseComponent {\n  constructor(element, config) {\n    super(element);\n    this._items = null;\n    this._interval = null;\n    this._activeElement = null;\n    this._isPaused = false;\n    this._isSliding = false;\n    this.touchTimeout = null;\n    this.touchStartX = 0;\n    this.touchDeltaX = 0;\n    this._config = this._getConfig(config);\n    this._indicatorsElement = SelectorEngine.findOne(SELECTOR_INDICATORS, this._element);\n    this._touchSupported = 'ontouchstart' in document.documentElement || navigator.maxTouchPoints > 0;\n    this._pointerEvent = Boolean(window.PointerEvent);\n\n    this._addEventListeners();\n  } // Getters\n\n\n  static get Default() {\n    return Default$a;\n  }\n\n  static get NAME() {\n    return NAME$b;\n  } // Public\n\n\n  next() {\n    this._slide(ORDER_NEXT);\n  }\n\n  nextWhenVisible() {\n    // Don't call next when the page isn't visible\n    // or the carousel or its parent isn't visible\n    if (!document.hidden && isVisible(this._element)) {\n      this.next();\n    }\n  }\n\n  prev() {\n    this._slide(ORDER_PREV);\n  }\n\n  pause(event) {\n    if (!event) {\n      this._isPaused = true;\n    }\n\n    if (SelectorEngine.findOne(SELECTOR_NEXT_PREV, this._element)) {\n      triggerTransitionEnd(this._element);\n      this.cycle(true);\n    }\n\n    clearInterval(this._interval);\n    this._interval = null;\n  }\n\n  cycle(event) {\n    if (!event) {\n      this._isPaused = false;\n    }\n\n    if (this._interval) {\n      clearInterval(this._interval);\n      this._interval = null;\n    }\n\n    if (this._config && this._config.interval && !this._isPaused) {\n      this._updateInterval();\n\n      this._interval = setInterval((document.visibilityState ? this.nextWhenVisible : this.next).bind(this), this._config.interval);\n    }\n  }\n\n  to(index) {\n    this._activeElement = SelectorEngine.findOne(SELECTOR_ACTIVE_ITEM, this._element);\n\n    const activeIndex = this._getItemIndex(this._activeElement);\n\n    if (index > this._items.length - 1 || index < 0) {\n      return;\n    }\n\n    if (this._isSliding) {\n      EventHandler.one(this._element, EVENT_SLID, () => this.to(index));\n      return;\n    }\n\n    if (activeIndex === index) {\n      this.pause();\n      this.cycle();\n      return;\n    }\n\n    const order = index > activeIndex ? ORDER_NEXT : ORDER_PREV;\n\n    this._slide(order, this._items[index]);\n  } // Private\n\n\n  _getConfig(config) {\n    config = { ...Default$a,\n      ...Manipulator.getDataAttributes(this._element),\n      ...(typeof config === 'object' ? config : {})\n    };\n    typeCheckConfig(NAME$b, config, DefaultType$a);\n    return config;\n  }\n\n  _handleSwipe() {\n    const absDeltax = Math.abs(this.touchDeltaX);\n\n    if (absDeltax <= SWIPE_THRESHOLD) {\n      return;\n    }\n\n    const direction = absDeltax / this.touchDeltaX;\n    this.touchDeltaX = 0;\n\n    if (!direction) {\n      return;\n    }\n\n    this._slide(direction > 0 ? DIRECTION_RIGHT : DIRECTION_LEFT);\n  }\n\n  _addEventListeners() {\n    if (this._config.keyboard) {\n      EventHandler.on(this._element, EVENT_KEYDOWN, event => this._keydown(event));\n    }\n\n    if (this._config.pause === 'hover') {\n      EventHandler.on(this._element, EVENT_MOUSEENTER, event => this.pause(event));\n      EventHandler.on(this._element, EVENT_MOUSELEAVE, event => this.cycle(event));\n    }\n\n    if (this._config.touch && this._touchSupported) {\n      this._addTouchEventListeners();\n    }\n  }\n\n  _addTouchEventListeners() {\n    const hasPointerPenTouch = event => {\n      return this._pointerEvent && (event.pointerType === POINTER_TYPE_PEN || event.pointerType === POINTER_TYPE_TOUCH);\n    };\n\n    const start = event => {\n      if (hasPointerPenTouch(event)) {\n        this.touchStartX = event.clientX;\n      } else if (!this._pointerEvent) {\n        this.touchStartX = event.touches[0].clientX;\n      }\n    };\n\n    const move = event => {\n      // ensure swiping with one touch and not pinching\n      this.touchDeltaX = event.touches && event.touches.length > 1 ? 0 : event.touches[0].clientX - this.touchStartX;\n    };\n\n    const end = event => {\n      if (hasPointerPenTouch(event)) {\n        this.touchDeltaX = event.clientX - this.touchStartX;\n      }\n\n      this._handleSwipe();\n\n      if (this._config.pause === 'hover') {\n        // If it's a touch-enabled device, mouseenter/leave are fired as\n        // part of the mouse compatibility events on first tap - the carousel\n        // would stop cycling until user tapped out of it;\n        // here, we listen for touchend, explicitly pause the carousel\n        // (as if it's the second time we tap on it, mouseenter compat event\n        // is NOT fired) and after a timeout (to allow for mouse compatibility\n        // events to fire) we explicitly restart cycling\n        this.pause();\n\n        if (this.touchTimeout) {\n          clearTimeout(this.touchTimeout);\n        }\n\n        this.touchTimeout = setTimeout(event => this.cycle(event), TOUCHEVENT_COMPAT_WAIT + this._config.interval);\n      }\n    };\n\n    SelectorEngine.find(SELECTOR_ITEM_IMG, this._element).forEach(itemImg => {\n      EventHandler.on(itemImg, EVENT_DRAG_START, event => event.preventDefault());\n    });\n\n    if (this._pointerEvent) {\n      EventHandler.on(this._element, EVENT_POINTERDOWN, event => start(event));\n      EventHandler.on(this._element, EVENT_POINTERUP, event => end(event));\n\n      this._element.classList.add(CLASS_NAME_POINTER_EVENT);\n    } else {\n      EventHandler.on(this._element, EVENT_TOUCHSTART, event => start(event));\n      EventHandler.on(this._element, EVENT_TOUCHMOVE, event => move(event));\n      EventHandler.on(this._element, EVENT_TOUCHEND, event => end(event));\n    }\n  }\n\n  _keydown(event) {\n    if (/input|textarea/i.test(event.target.tagName)) {\n      return;\n    }\n\n    const direction = KEY_TO_DIRECTION[event.key];\n\n    if (direction) {\n      event.preventDefault();\n\n      this._slide(direction);\n    }\n  }\n\n  _getItemIndex(element) {\n    this._items = element && element.parentNode ? SelectorEngine.find(SELECTOR_ITEM, element.parentNode) : [];\n    return this._items.indexOf(element);\n  }\n\n  _getItemByOrder(order, activeElement) {\n    const isNext = order === ORDER_NEXT;\n    return getNextActiveElement(this._items, activeElement, isNext, this._config.wrap);\n  }\n\n  _triggerSlideEvent(relatedTarget, eventDirectionName) {\n    const targetIndex = this._getItemIndex(relatedTarget);\n\n    const fromIndex = this._getItemIndex(SelectorEngine.findOne(SELECTOR_ACTIVE_ITEM, this._element));\n\n    return EventHandler.trigger(this._element, EVENT_SLIDE, {\n      relatedTarget,\n      direction: eventDirectionName,\n      from: fromIndex,\n      to: targetIndex\n    });\n  }\n\n  _setActiveIndicatorElement(element) {\n    if (this._indicatorsElement) {\n      const activeIndicator = SelectorEngine.findOne(SELECTOR_ACTIVE$1, this._indicatorsElement);\n      activeIndicator.classList.remove(CLASS_NAME_ACTIVE$2);\n      activeIndicator.removeAttribute('aria-current');\n      const indicators = SelectorEngine.find(SELECTOR_INDICATOR, this._indicatorsElement);\n\n      for (let i = 0; i < indicators.length; i++) {\n        if (Number.parseInt(indicators[i].getAttribute('data-bs-slide-to'), 10) === this._getItemIndex(element)) {\n          indicators[i].classList.add(CLASS_NAME_ACTIVE$2);\n          indicators[i].setAttribute('aria-current', 'true');\n          break;\n        }\n      }\n    }\n  }\n\n  _updateInterval() {\n    const element = this._activeElement || SelectorEngine.findOne(SELECTOR_ACTIVE_ITEM, this._element);\n\n    if (!element) {\n      return;\n    }\n\n    const elementInterval = Number.parseInt(element.getAttribute('data-bs-interval'), 10);\n\n    if (elementInterval) {\n      this._config.defaultInterval = this._config.defaultInterval || this._config.interval;\n      this._config.interval = elementInterval;\n    } else {\n      this._config.interval = this._config.defaultInterval || this._config.interval;\n    }\n  }\n\n  _slide(directionOrOrder, element) {\n    const order = this._directionToOrder(directionOrOrder);\n\n    const activeElement = SelectorEngine.findOne(SELECTOR_ACTIVE_ITEM, this._element);\n\n    const activeElementIndex = this._getItemIndex(activeElement);\n\n    const nextElement = element || this._getItemByOrder(order, activeElement);\n\n    const nextElementIndex = this._getItemIndex(nextElement);\n\n    const isCycling = Boolean(this._interval);\n    const isNext = order === ORDER_NEXT;\n    const directionalClassName = isNext ? CLASS_NAME_START : CLASS_NAME_END;\n    const orderClassName = isNext ? CLASS_NAME_NEXT : CLASS_NAME_PREV;\n\n    const eventDirectionName = this._orderToDirection(order);\n\n    if (nextElement && nextElement.classList.contains(CLASS_NAME_ACTIVE$2)) {\n      this._isSliding = false;\n      return;\n    }\n\n    if (this._isSliding) {\n      return;\n    }\n\n    const slideEvent = this._triggerSlideEvent(nextElement, eventDirectionName);\n\n    if (slideEvent.defaultPrevented) {\n      return;\n    }\n\n    if (!activeElement || !nextElement) {\n      // Some weirdness is happening, so we bail\n      return;\n    }\n\n    this._isSliding = true;\n\n    if (isCycling) {\n      this.pause();\n    }\n\n    this._setActiveIndicatorElement(nextElement);\n\n    this._activeElement = nextElement;\n\n    const triggerSlidEvent = () => {\n      EventHandler.trigger(this._element, EVENT_SLID, {\n        relatedTarget: nextElement,\n        direction: eventDirectionName,\n        from: activeElementIndex,\n        to: nextElementIndex\n      });\n    };\n\n    if (this._element.classList.contains(CLASS_NAME_SLIDE)) {\n      nextElement.classList.add(orderClassName);\n      reflow(nextElement);\n      activeElement.classList.add(directionalClassName);\n      nextElement.classList.add(directionalClassName);\n\n      const completeCallBack = () => {\n        nextElement.classList.remove(directionalClassName, orderClassName);\n        nextElement.classList.add(CLASS_NAME_ACTIVE$2);\n        activeElement.classList.remove(CLASS_NAME_ACTIVE$2, orderClassName, directionalClassName);\n        this._isSliding = false;\n        setTimeout(triggerSlidEvent, 0);\n      };\n\n      this._queueCallback(completeCallBack, activeElement, true);\n    } else {\n      activeElement.classList.remove(CLASS_NAME_ACTIVE$2);\n      nextElement.classList.add(CLASS_NAME_ACTIVE$2);\n      this._isSliding = false;\n      triggerSlidEvent();\n    }\n\n    if (isCycling) {\n      this.cycle();\n    }\n  }\n\n  _directionToOrder(direction) {\n    if (![DIRECTION_RIGHT, DIRECTION_LEFT].includes(direction)) {\n      return direction;\n    }\n\n    if (isRTL()) {\n      return direction === DIRECTION_LEFT ? ORDER_PREV : ORDER_NEXT;\n    }\n\n    return direction === DIRECTION_LEFT ? ORDER_NEXT : ORDER_PREV;\n  }\n\n  _orderToDirection(order) {\n    if (![ORDER_NEXT, ORDER_PREV].includes(order)) {\n      return order;\n    }\n\n    if (isRTL()) {\n      return order === ORDER_PREV ? DIRECTION_LEFT : DIRECTION_RIGHT;\n    }\n\n    return order === ORDER_PREV ? DIRECTION_RIGHT : DIRECTION_LEFT;\n  } // Static\n\n\n  static carouselInterface(element, config) {\n    const data = Carousel.getOrCreateInstance(element, config);\n    let {\n      _config\n    } = data;\n\n    if (typeof config === 'object') {\n      _config = { ..._config,\n        ...config\n      };\n    }\n\n    const action = typeof config === 'string' ? config : _config.slide;\n\n    if (typeof config === 'number') {\n      data.to(config);\n    } else if (typeof action === 'string') {\n      if (typeof data[action] === 'undefined') {\n        throw new TypeError(`No method named \"${action}\"`);\n      }\n\n      data[action]();\n    } else if (_config.interval && _config.ride) {\n      data.pause();\n      data.cycle();\n    }\n  }\n\n  static jQueryInterface(config) {\n    return this.each(function () {\n      Carousel.carouselInterface(this, config);\n    });\n  }\n\n  static dataApiClickHandler(event) {\n    const target = getElementFromSelector(this);\n\n    if (!target || !target.classList.contains(CLASS_NAME_CAROUSEL)) {\n      return;\n    }\n\n    const config = { ...Manipulator.getDataAttributes(target),\n      ...Manipulator.getDataAttributes(this)\n    };\n    const slideIndex = this.getAttribute('data-bs-slide-to');\n\n    if (slideIndex) {\n      config.interval = false;\n    }\n\n    Carousel.carouselInterface(target, config);\n\n    if (slideIndex) {\n      Carousel.getInstance(target).to(slideIndex);\n    }\n\n    event.preventDefault();\n  }\n\n}\n/**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\n\nEventHandler.on(document, EVENT_CLICK_DATA_API$5, SELECTOR_DATA_SLIDE, Carousel.dataApiClickHandler);\nEventHandler.on(window, EVENT_LOAD_DATA_API$2, () => {\n  const carousels = SelectorEngine.find(SELECTOR_DATA_RIDE);\n\n  for (let i = 0, len = carousels.length; i < len; i++) {\n    Carousel.carouselInterface(carousels[i], Carousel.getInstance(carousels[i]));\n  }\n});\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n * add .Carousel to jQuery only if jQuery is present\n */\n\ndefineJQueryPlugin(Carousel);\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.1.3): collapse.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME$a = 'collapse';\nconst DATA_KEY$9 = 'bs.collapse';\nconst EVENT_KEY$9 = `.${DATA_KEY$9}`;\nconst DATA_API_KEY$5 = '.data-api';\nconst Default$9 = {\n  toggle: true,\n  parent: null\n};\nconst DefaultType$9 = {\n  toggle: 'boolean',\n  parent: '(null|element)'\n};\nconst EVENT_SHOW$5 = `show${EVENT_KEY$9}`;\nconst EVENT_SHOWN$5 = `shown${EVENT_KEY$9}`;\nconst EVENT_HIDE$5 = `hide${EVENT_KEY$9}`;\nconst EVENT_HIDDEN$5 = `hidden${EVENT_KEY$9}`;\nconst EVENT_CLICK_DATA_API$4 = `click${EVENT_KEY$9}${DATA_API_KEY$5}`;\nconst CLASS_NAME_SHOW$7 = 'show';\nconst CLASS_NAME_COLLAPSE = 'collapse';\nconst CLASS_NAME_COLLAPSING = 'collapsing';\nconst CLASS_NAME_COLLAPSED = 'collapsed';\nconst CLASS_NAME_DEEPER_CHILDREN = `:scope .${CLASS_NAME_COLLAPSE} .${CLASS_NAME_COLLAPSE}`;\nconst CLASS_NAME_HORIZONTAL = 'collapse-horizontal';\nconst WIDTH = 'width';\nconst HEIGHT = 'height';\nconst SELECTOR_ACTIVES = '.collapse.show, .collapse.collapsing';\nconst SELECTOR_DATA_TOGGLE$4 = '[data-bs-toggle=\"collapse\"]';\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\nclass Collapse extends BaseComponent {\n  constructor(element, config) {\n    super(element);\n    this._isTransitioning = false;\n    this._config = this._getConfig(config);\n    this._triggerArray = [];\n    const toggleList = SelectorEngine.find(SELECTOR_DATA_TOGGLE$4);\n\n    for (let i = 0, len = toggleList.length; i < len; i++) {\n      const elem = toggleList[i];\n      const selector = getSelectorFromElement(elem);\n      const filterElement = SelectorEngine.find(selector).filter(foundElem => foundElem === this._element);\n\n      if (selector !== null && filterElement.length) {\n        this._selector = selector;\n\n        this._triggerArray.push(elem);\n      }\n    }\n\n    this._initializeChildren();\n\n    if (!this._config.parent) {\n      this._addAriaAndCollapsedClass(this._triggerArray, this._isShown());\n    }\n\n    if (this._config.toggle) {\n      this.toggle();\n    }\n  } // Getters\n\n\n  static get Default() {\n    return Default$9;\n  }\n\n  static get NAME() {\n    return NAME$a;\n  } // Public\n\n\n  toggle() {\n    if (this._isShown()) {\n      this.hide();\n    } else {\n      this.show();\n    }\n  }\n\n  show() {\n    if (this._isTransitioning || this._isShown()) {\n      return;\n    }\n\n    let actives = [];\n    let activesData;\n\n    if (this._config.parent) {\n      const children = SelectorEngine.find(CLASS_NAME_DEEPER_CHILDREN, this._config.parent);\n      actives = SelectorEngine.find(SELECTOR_ACTIVES, this._config.parent).filter(elem => !children.includes(elem)); // remove children if greater depth\n    }\n\n    const container = SelectorEngine.findOne(this._selector);\n\n    if (actives.length) {\n      const tempActiveData = actives.find(elem => container !== elem);\n      activesData = tempActiveData ? Collapse.getInstance(tempActiveData) : null;\n\n      if (activesData && activesData._isTransitioning) {\n        return;\n      }\n    }\n\n    const startEvent = EventHandler.trigger(this._element, EVENT_SHOW$5);\n\n    if (startEvent.defaultPrevented) {\n      return;\n    }\n\n    actives.forEach(elemActive => {\n      if (container !== elemActive) {\n        Collapse.getOrCreateInstance(elemActive, {\n          toggle: false\n        }).hide();\n      }\n\n      if (!activesData) {\n        Data.set(elemActive, DATA_KEY$9, null);\n      }\n    });\n\n    const dimension = this._getDimension();\n\n    this._element.classList.remove(CLASS_NAME_COLLAPSE);\n\n    this._element.classList.add(CLASS_NAME_COLLAPSING);\n\n    this._element.style[dimension] = 0;\n\n    this._addAriaAndCollapsedClass(this._triggerArray, true);\n\n    this._isTransitioning = true;\n\n    const complete = () => {\n      this._isTransitioning = false;\n\n      this._element.classList.remove(CLASS_NAME_COLLAPSING);\n\n      this._element.classList.add(CLASS_NAME_COLLAPSE, CLASS_NAME_SHOW$7);\n\n      this._element.style[dimension] = '';\n      EventHandler.trigger(this._element, EVENT_SHOWN$5);\n    };\n\n    const capitalizedDimension = dimension[0].toUpperCase() + dimension.slice(1);\n    const scrollSize = `scroll${capitalizedDimension}`;\n\n    this._queueCallback(complete, this._element, true);\n\n    this._element.style[dimension] = `${this._element[scrollSize]}px`;\n  }\n\n  hide() {\n    if (this._isTransitioning || !this._isShown()) {\n      return;\n    }\n\n    const startEvent = EventHandler.trigger(this._element, EVENT_HIDE$5);\n\n    if (startEvent.defaultPrevented) {\n      return;\n    }\n\n    const dimension = this._getDimension();\n\n    this._element.style[dimension] = `${this._element.getBoundingClientRect()[dimension]}px`;\n    reflow(this._element);\n\n    this._element.classList.add(CLASS_NAME_COLLAPSING);\n\n    this._element.classList.remove(CLASS_NAME_COLLAPSE, CLASS_NAME_SHOW$7);\n\n    const triggerArrayLength = this._triggerArray.length;\n\n    for (let i = 0; i < triggerArrayLength; i++) {\n      const trigger = this._triggerArray[i];\n      const elem = getElementFromSelector(trigger);\n\n      if (elem && !this._isShown(elem)) {\n        this._addAriaAndCollapsedClass([trigger], false);\n      }\n    }\n\n    this._isTransitioning = true;\n\n    const complete = () => {\n      this._isTransitioning = false;\n\n      this._element.classList.remove(CLASS_NAME_COLLAPSING);\n\n      this._element.classList.add(CLASS_NAME_COLLAPSE);\n\n      EventHandler.trigger(this._element, EVENT_HIDDEN$5);\n    };\n\n    this._element.style[dimension] = '';\n\n    this._queueCallback(complete, this._element, true);\n  }\n\n  _isShown(element = this._element) {\n    return element.classList.contains(CLASS_NAME_SHOW$7);\n  } // Private\n\n\n  _getConfig(config) {\n    config = { ...Default$9,\n      ...Manipulator.getDataAttributes(this._element),\n      ...config\n    };\n    config.toggle = Boolean(config.toggle); // Coerce string values\n\n    config.parent = getElement(config.parent);\n    typeCheckConfig(NAME$a, config, DefaultType$9);\n    return config;\n  }\n\n  _getDimension() {\n    return this._element.classList.contains(CLASS_NAME_HORIZONTAL) ? WIDTH : HEIGHT;\n  }\n\n  _initializeChildren() {\n    if (!this._config.parent) {\n      return;\n    }\n\n    const children = SelectorEngine.find(CLASS_NAME_DEEPER_CHILDREN, this._config.parent);\n    SelectorEngine.find(SELECTOR_DATA_TOGGLE$4, this._config.parent).filter(elem => !children.includes(elem)).forEach(element => {\n      const selected = getElementFromSelector(element);\n\n      if (selected) {\n        this._addAriaAndCollapsedClass([element], this._isShown(selected));\n      }\n    });\n  }\n\n  _addAriaAndCollapsedClass(triggerArray, isOpen) {\n    if (!triggerArray.length) {\n      return;\n    }\n\n    triggerArray.forEach(elem => {\n      if (isOpen) {\n        elem.classList.remove(CLASS_NAME_COLLAPSED);\n      } else {\n        elem.classList.add(CLASS_NAME_COLLAPSED);\n      }\n\n      elem.setAttribute('aria-expanded', isOpen);\n    });\n  } // Static\n\n\n  static jQueryInterface(config) {\n    return this.each(function () {\n      const _config = {};\n\n      if (typeof config === 'string' && /show|hide/.test(config)) {\n        _config.toggle = false;\n      }\n\n      const data = Collapse.getOrCreateInstance(this, _config);\n\n      if (typeof config === 'string') {\n        if (typeof data[config] === 'undefined') {\n          throw new TypeError(`No method named \"${config}\"`);\n        }\n\n        data[config]();\n      }\n    });\n  }\n\n}\n/**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\n\nEventHandler.on(document, EVENT_CLICK_DATA_API$4, SELECTOR_DATA_TOGGLE$4, function (event) {\n  // preventDefault only for <a> elements (which change the URL) not inside the collapsible element\n  if (event.target.tagName === 'A' || event.delegateTarget && event.delegateTarget.tagName === 'A') {\n    event.preventDefault();\n  }\n\n  const selector = getSelectorFromElement(this);\n  const selectorElements = SelectorEngine.find(selector);\n  selectorElements.forEach(element => {\n    Collapse.getOrCreateInstance(element, {\n      toggle: false\n    }).toggle();\n  });\n});\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n * add .Collapse to jQuery only if jQuery is present\n */\n\ndefineJQueryPlugin(Collapse);\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.1.3): dropdown.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME$9 = 'dropdown';\nconst DATA_KEY$8 = 'bs.dropdown';\nconst EVENT_KEY$8 = `.${DATA_KEY$8}`;\nconst DATA_API_KEY$4 = '.data-api';\nconst ESCAPE_KEY$2 = 'Escape';\nconst SPACE_KEY = 'Space';\nconst TAB_KEY$1 = 'Tab';\nconst ARROW_UP_KEY = 'ArrowUp';\nconst ARROW_DOWN_KEY = 'ArrowDown';\nconst RIGHT_MOUSE_BUTTON = 2; // MouseEvent.button value for the secondary button, usually the right button\n\nconst REGEXP_KEYDOWN = new RegExp(`${ARROW_UP_KEY}|${ARROW_DOWN_KEY}|${ESCAPE_KEY$2}`);\nconst EVENT_HIDE$4 = `hide${EVENT_KEY$8}`;\nconst EVENT_HIDDEN$4 = `hidden${EVENT_KEY$8}`;\nconst EVENT_SHOW$4 = `show${EVENT_KEY$8}`;\nconst EVENT_SHOWN$4 = `shown${EVENT_KEY$8}`;\nconst EVENT_CLICK_DATA_API$3 = `click${EVENT_KEY$8}${DATA_API_KEY$4}`;\nconst EVENT_KEYDOWN_DATA_API = `keydown${EVENT_KEY$8}${DATA_API_KEY$4}`;\nconst EVENT_KEYUP_DATA_API = `keyup${EVENT_KEY$8}${DATA_API_KEY$4}`;\nconst CLASS_NAME_SHOW$6 = 'show';\nconst CLASS_NAME_DROPUP = 'dropup';\nconst CLASS_NAME_DROPEND = 'dropend';\nconst CLASS_NAME_DROPSTART = 'dropstart';\nconst CLASS_NAME_NAVBAR = 'navbar';\nconst SELECTOR_DATA_TOGGLE$3 = '[data-bs-toggle=\"dropdown\"]';\nconst SELECTOR_MENU = '.dropdown-menu';\nconst SELECTOR_NAVBAR_NAV = '.navbar-nav';\nconst SELECTOR_VISIBLE_ITEMS = '.dropdown-menu .dropdown-item:not(.disabled):not(:disabled)';\nconst PLACEMENT_TOP = isRTL() ? 'top-end' : 'top-start';\nconst PLACEMENT_TOPEND = isRTL() ? 'top-start' : 'top-end';\nconst PLACEMENT_BOTTOM = isRTL() ? 'bottom-end' : 'bottom-start';\nconst PLACEMENT_BOTTOMEND = isRTL() ? 'bottom-start' : 'bottom-end';\nconst PLACEMENT_RIGHT = isRTL() ? 'left-start' : 'right-start';\nconst PLACEMENT_LEFT = isRTL() ? 'right-start' : 'left-start';\nconst Default$8 = {\n  offset: [0, 2],\n  boundary: 'clippingParents',\n  reference: 'toggle',\n  display: 'dynamic',\n  popperConfig: null,\n  autoClose: true\n};\nconst DefaultType$8 = {\n  offset: '(array|string|function)',\n  boundary: '(string|element)',\n  reference: '(string|element|object)',\n  display: 'string',\n  popperConfig: '(null|object|function)',\n  autoClose: '(boolean|string)'\n};\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\nclass Dropdown extends BaseComponent {\n  constructor(element, config) {\n    super(element);\n    this._popper = null;\n    this._config = this._getConfig(config);\n    this._menu = this._getMenuElement();\n    this._inNavbar = this._detectNavbar();\n  } // Getters\n\n\n  static get Default() {\n    return Default$8;\n  }\n\n  static get DefaultType() {\n    return DefaultType$8;\n  }\n\n  static get NAME() {\n    return NAME$9;\n  } // Public\n\n\n  toggle() {\n    return this._isShown() ? this.hide() : this.show();\n  }\n\n  show() {\n    if (isDisabled(this._element) || this._isShown(this._menu)) {\n      return;\n    }\n\n    const relatedTarget = {\n      relatedTarget: this._element\n    };\n    const showEvent = EventHandler.trigger(this._element, EVENT_SHOW$4, relatedTarget);\n\n    if (showEvent.defaultPrevented) {\n      return;\n    }\n\n    const parent = Dropdown.getParentFromElement(this._element); // Totally disable Popper for Dropdowns in Navbar\n\n    if (this._inNavbar) {\n      Manipulator.setDataAttribute(this._menu, 'popper', 'none');\n    } else {\n      this._createPopper(parent);\n    } // If this is a touch-enabled device we add extra\n    // empty mouseover listeners to the body's immediate children;\n    // only needed because of broken event delegation on iOS\n    // https://www.quirksmode.org/blog/archives/2014/02/mouse_event_bub.html\n\n\n    if ('ontouchstart' in document.documentElement && !parent.closest(SELECTOR_NAVBAR_NAV)) {\n      [].concat(...document.body.children).forEach(elem => EventHandler.on(elem, 'mouseover', noop));\n    }\n\n    this._element.focus();\n\n    this._element.setAttribute('aria-expanded', true);\n\n    this._menu.classList.add(CLASS_NAME_SHOW$6);\n\n    this._element.classList.add(CLASS_NAME_SHOW$6);\n\n    EventHandler.trigger(this._element, EVENT_SHOWN$4, relatedTarget);\n  }\n\n  hide() {\n    if (isDisabled(this._element) || !this._isShown(this._menu)) {\n      return;\n    }\n\n    const relatedTarget = {\n      relatedTarget: this._element\n    };\n\n    this._completeHide(relatedTarget);\n  }\n\n  dispose() {\n    if (this._popper) {\n      this._popper.destroy();\n    }\n\n    super.dispose();\n  }\n\n  update() {\n    this._inNavbar = this._detectNavbar();\n\n    if (this._popper) {\n      this._popper.update();\n    }\n  } // Private\n\n\n  _completeHide(relatedTarget) {\n    const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE$4, relatedTarget);\n\n    if (hideEvent.defaultPrevented) {\n      return;\n    } // If this is a touch-enabled device we remove the extra\n    // empty mouseover listeners we added for iOS support\n\n\n    if ('ontouchstart' in document.documentElement) {\n      [].concat(...document.body.children).forEach(elem => EventHandler.off(elem, 'mouseover', noop));\n    }\n\n    if (this._popper) {\n      this._popper.destroy();\n    }\n\n    this._menu.classList.remove(CLASS_NAME_SHOW$6);\n\n    this._element.classList.remove(CLASS_NAME_SHOW$6);\n\n    this._element.setAttribute('aria-expanded', 'false');\n\n    Manipulator.removeDataAttribute(this._menu, 'popper');\n    EventHandler.trigger(this._element, EVENT_HIDDEN$4, relatedTarget);\n  }\n\n  _getConfig(config) {\n    config = { ...this.constructor.Default,\n      ...Manipulator.getDataAttributes(this._element),\n      ...config\n    };\n    typeCheckConfig(NAME$9, config, this.constructor.DefaultType);\n\n    if (typeof config.reference === 'object' && !isElement(config.reference) && typeof config.reference.getBoundingClientRect !== 'function') {\n      // Popper virtual elements require a getBoundingClientRect method\n      throw new TypeError(`${NAME$9.toUpperCase()}: Option \"reference\" provided type \"object\" without a required \"getBoundingClientRect\" method.`);\n    }\n\n    return config;\n  }\n\n  _createPopper(parent) {\n    if (typeof Popper === 'undefined') {\n      throw new TypeError('Bootstrap\\'s dropdowns require Popper (https://popper.js.org)');\n    }\n\n    let referenceElement = this._element;\n\n    if (this._config.reference === 'parent') {\n      referenceElement = parent;\n    } else if (isElement(this._config.reference)) {\n      referenceElement = getElement(this._config.reference);\n    } else if (typeof this._config.reference === 'object') {\n      referenceElement = this._config.reference;\n    }\n\n    const popperConfig = this._getPopperConfig();\n\n    const isDisplayStatic = popperConfig.modifiers.find(modifier => modifier.name === 'applyStyles' && modifier.enabled === false);\n    this._popper = Popper.createPopper(referenceElement, this._menu, popperConfig);\n\n    if (isDisplayStatic) {\n      Manipulator.setDataAttribute(this._menu, 'popper', 'static');\n    }\n  }\n\n  _isShown(element = this._element) {\n    return element.classList.contains(CLASS_NAME_SHOW$6);\n  }\n\n  _getMenuElement() {\n    return SelectorEngine.next(this._element, SELECTOR_MENU)[0];\n  }\n\n  _getPlacement() {\n    const parentDropdown = this._element.parentNode;\n\n    if (parentDropdown.classList.contains(CLASS_NAME_DROPEND)) {\n      return PLACEMENT_RIGHT;\n    }\n\n    if (parentDropdown.classList.contains(CLASS_NAME_DROPSTART)) {\n      return PLACEMENT_LEFT;\n    } // We need to trim the value because custom properties can also include spaces\n\n\n    const isEnd = getComputedStyle(this._menu).getPropertyValue('--bs-position').trim() === 'end';\n\n    if (parentDropdown.classList.contains(CLASS_NAME_DROPUP)) {\n      return isEnd ? PLACEMENT_TOPEND : PLACEMENT_TOP;\n    }\n\n    return isEnd ? PLACEMENT_BOTTOMEND : PLACEMENT_BOTTOM;\n  }\n\n  _detectNavbar() {\n    return this._element.closest(`.${CLASS_NAME_NAVBAR}`) !== null;\n  }\n\n  _getOffset() {\n    const {\n      offset\n    } = this._config;\n\n    if (typeof offset === 'string') {\n      return offset.split(',').map(val => Number.parseInt(val, 10));\n    }\n\n    if (typeof offset === 'function') {\n      return popperData => offset(popperData, this._element);\n    }\n\n    return offset;\n  }\n\n  _getPopperConfig() {\n    const defaultBsPopperConfig = {\n      placement: this._getPlacement(),\n      modifiers: [{\n        name: 'preventOverflow',\n        options: {\n          boundary: this._config.boundary\n        }\n      }, {\n        name: 'offset',\n        options: {\n          offset: this._getOffset()\n        }\n      }]\n    }; // Disable Popper if we have a static display\n\n    if (this._config.display === 'static') {\n      defaultBsPopperConfig.modifiers = [{\n        name: 'applyStyles',\n        enabled: false\n      }];\n    }\n\n    return { ...defaultBsPopperConfig,\n      ...(typeof this._config.popperConfig === 'function' ? this._config.popperConfig(defaultBsPopperConfig) : this._config.popperConfig)\n    };\n  }\n\n  _selectMenuItem({\n    key,\n    target\n  }) {\n    const items = SelectorEngine.find(SELECTOR_VISIBLE_ITEMS, this._menu).filter(isVisible);\n\n    if (!items.length) {\n      return;\n    } // if target isn't included in items (e.g. when expanding the dropdown)\n    // allow cycling to get the last item in case key equals ARROW_UP_KEY\n\n\n    getNextActiveElement(items, target, key === ARROW_DOWN_KEY, !items.includes(target)).focus();\n  } // Static\n\n\n  static jQueryInterface(config) {\n    return this.each(function () {\n      const data = Dropdown.getOrCreateInstance(this, config);\n\n      if (typeof config !== 'string') {\n        return;\n      }\n\n      if (typeof data[config] === 'undefined') {\n        throw new TypeError(`No method named \"${config}\"`);\n      }\n\n      data[config]();\n    });\n  }\n\n  static clearMenus(event) {\n    if (event && (event.button === RIGHT_MOUSE_BUTTON || event.type === 'keyup' && event.key !== TAB_KEY$1)) {\n      return;\n    }\n\n    const toggles = SelectorEngine.find(SELECTOR_DATA_TOGGLE$3);\n\n    for (let i = 0, len = toggles.length; i < len; i++) {\n      const context = Dropdown.getInstance(toggles[i]);\n\n      if (!context || context._config.autoClose === false) {\n        continue;\n      }\n\n      if (!context._isShown()) {\n        continue;\n      }\n\n      const relatedTarget = {\n        relatedTarget: context._element\n      };\n\n      if (event) {\n        const composedPath = event.composedPath();\n        const isMenuTarget = composedPath.includes(context._menu);\n\n        if (composedPath.includes(context._element) || context._config.autoClose === 'inside' && !isMenuTarget || context._config.autoClose === 'outside' && isMenuTarget) {\n          continue;\n        } // Tab navigation through the dropdown menu or events from contained inputs shouldn't close the menu\n\n\n        if (context._menu.contains(event.target) && (event.type === 'keyup' && event.key === TAB_KEY$1 || /input|select|option|textarea|form/i.test(event.target.tagName))) {\n          continue;\n        }\n\n        if (event.type === 'click') {\n          relatedTarget.clickEvent = event;\n        }\n      }\n\n      context._completeHide(relatedTarget);\n    }\n  }\n\n  static getParentFromElement(element) {\n    return getElementFromSelector(element) || element.parentNode;\n  }\n\n  static dataApiKeydownHandler(event) {\n    // If not input/textarea:\n    //  - And not a key in REGEXP_KEYDOWN => not a dropdown command\n    // If input/textarea:\n    //  - If space key => not a dropdown command\n    //  - If key is other than escape\n    //    - If key is not up or down => not a dropdown command\n    //    - If trigger inside the menu => not a dropdown command\n    if (/input|textarea/i.test(event.target.tagName) ? event.key === SPACE_KEY || event.key !== ESCAPE_KEY$2 && (event.key !== ARROW_DOWN_KEY && event.key !== ARROW_UP_KEY || event.target.closest(SELECTOR_MENU)) : !REGEXP_KEYDOWN.test(event.key)) {\n      return;\n    }\n\n    const isActive = this.classList.contains(CLASS_NAME_SHOW$6);\n\n    if (!isActive && event.key === ESCAPE_KEY$2) {\n      return;\n    }\n\n    event.preventDefault();\n    event.stopPropagation();\n\n    if (isDisabled(this)) {\n      return;\n    }\n\n    const getToggleButton = this.matches(SELECTOR_DATA_TOGGLE$3) ? this : SelectorEngine.prev(this, SELECTOR_DATA_TOGGLE$3)[0];\n    const instance = Dropdown.getOrCreateInstance(getToggleButton);\n\n    if (event.key === ESCAPE_KEY$2) {\n      instance.hide();\n      return;\n    }\n\n    if (event.key === ARROW_UP_KEY || event.key === ARROW_DOWN_KEY) {\n      if (!isActive) {\n        instance.show();\n      }\n\n      instance._selectMenuItem(event);\n\n      return;\n    }\n\n    if (!isActive || event.key === SPACE_KEY) {\n      Dropdown.clearMenus();\n    }\n  }\n\n}\n/**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\n\nEventHandler.on(document, EVENT_KEYDOWN_DATA_API, SELECTOR_DATA_TOGGLE$3, Dropdown.dataApiKeydownHandler);\nEventHandler.on(document, EVENT_KEYDOWN_DATA_API, SELECTOR_MENU, Dropdown.dataApiKeydownHandler);\nEventHandler.on(document, EVENT_CLICK_DATA_API$3, Dropdown.clearMenus);\nEventHandler.on(document, EVENT_KEYUP_DATA_API, Dropdown.clearMenus);\nEventHandler.on(document, EVENT_CLICK_DATA_API$3, SELECTOR_DATA_TOGGLE$3, function (event) {\n  event.preventDefault();\n  Dropdown.getOrCreateInstance(this).toggle();\n});\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n * add .Dropdown to jQuery only if jQuery is present\n */\n\ndefineJQueryPlugin(Dropdown);\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.1.3): util/scrollBar.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\nconst SELECTOR_FIXED_CONTENT = '.fixed-top, .fixed-bottom, .is-fixed, .sticky-top';\nconst SELECTOR_STICKY_CONTENT = '.sticky-top';\n\nclass ScrollBarHelper {\n  constructor() {\n    this._element = document.body;\n  }\n\n  getWidth() {\n    // https://developer.mozilla.org/en-US/docs/Web/API/Window/innerWidth#usage_notes\n    const documentWidth = document.documentElement.clientWidth;\n    return Math.abs(window.innerWidth - documentWidth);\n  }\n\n  hide() {\n    const width = this.getWidth();\n\n    this._disableOverFlow(); // give padding to element to balance the hidden scrollbar width\n\n\n    this._setElementAttributes(this._element, 'paddingRight', calculatedValue => calculatedValue + width); // trick: We adjust positive paddingRight and negative marginRight to sticky-top elements to keep showing fullwidth\n\n\n    this._setElementAttributes(SELECTOR_FIXED_CONTENT, 'paddingRight', calculatedValue => calculatedValue + width);\n\n    this._setElementAttributes(SELECTOR_STICKY_CONTENT, 'marginRight', calculatedValue => calculatedValue - width);\n  }\n\n  _disableOverFlow() {\n    this._saveInitialAttribute(this._element, 'overflow');\n\n    this._element.style.overflow = 'hidden';\n  }\n\n  _setElementAttributes(selector, styleProp, callback) {\n    const scrollbarWidth = this.getWidth();\n\n    const manipulationCallBack = element => {\n      if (element !== this._element && window.innerWidth > element.clientWidth + scrollbarWidth) {\n        return;\n      }\n\n      this._saveInitialAttribute(element, styleProp);\n\n      const calculatedValue = window.getComputedStyle(element)[styleProp];\n      element.style[styleProp] = `${callback(Number.parseFloat(calculatedValue))}px`;\n    };\n\n    this._applyManipulationCallback(selector, manipulationCallBack);\n  }\n\n  reset() {\n    this._resetElementAttributes(this._element, 'overflow');\n\n    this._resetElementAttributes(this._element, 'paddingRight');\n\n    this._resetElementAttributes(SELECTOR_FIXED_CONTENT, 'paddingRight');\n\n    this._resetElementAttributes(SELECTOR_STICKY_CONTENT, 'marginRight');\n  }\n\n  _saveInitialAttribute(element, styleProp) {\n    const actualValue = element.style[styleProp];\n\n    if (actualValue) {\n      Manipulator.setDataAttribute(element, styleProp, actualValue);\n    }\n  }\n\n  _resetElementAttributes(selector, styleProp) {\n    const manipulationCallBack = element => {\n      const value = Manipulator.getDataAttribute(element, styleProp);\n\n      if (typeof value === 'undefined') {\n        element.style.removeProperty(styleProp);\n      } else {\n        Manipulator.removeDataAttribute(element, styleProp);\n        element.style[styleProp] = value;\n      }\n    };\n\n    this._applyManipulationCallback(selector, manipulationCallBack);\n  }\n\n  _applyManipulationCallback(selector, callBack) {\n    if (isElement(selector)) {\n      callBack(selector);\n    } else {\n      SelectorEngine.find(selector, this._element).forEach(callBack);\n    }\n  }\n\n  isOverflowing() {\n    return this.getWidth() > 0;\n  }\n\n}\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.1.3): util/backdrop.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\nconst Default$7 = {\n  className: 'modal-backdrop',\n  isVisible: true,\n  // if false, we use the backdrop helper without adding any element to the dom\n  isAnimated: false,\n  rootElement: 'body',\n  // give the choice to place backdrop under different elements\n  clickCallback: null\n};\nconst DefaultType$7 = {\n  className: 'string',\n  isVisible: 'boolean',\n  isAnimated: 'boolean',\n  rootElement: '(element|string)',\n  clickCallback: '(function|null)'\n};\nconst NAME$8 = 'backdrop';\nconst CLASS_NAME_FADE$4 = 'fade';\nconst CLASS_NAME_SHOW$5 = 'show';\nconst EVENT_MOUSEDOWN = `mousedown.bs.${NAME$8}`;\n\nclass Backdrop {\n  constructor(config) {\n    this._config = this._getConfig(config);\n    this._isAppended = false;\n    this._element = null;\n  }\n\n  show(callback) {\n    if (!this._config.isVisible) {\n      execute(callback);\n      return;\n    }\n\n    this._append();\n\n    if (this._config.isAnimated) {\n      reflow(this._getElement());\n    }\n\n    this._getElement().classList.add(CLASS_NAME_SHOW$5);\n\n    this._emulateAnimation(() => {\n      execute(callback);\n    });\n  }\n\n  hide(callback) {\n    if (!this._config.isVisible) {\n      execute(callback);\n      return;\n    }\n\n    this._getElement().classList.remove(CLASS_NAME_SHOW$5);\n\n    this._emulateAnimation(() => {\n      this.dispose();\n      execute(callback);\n    });\n  } // Private\n\n\n  _getElement() {\n    if (!this._element) {\n      const backdrop = document.createElement('div');\n      backdrop.className = this._config.className;\n\n      if (this._config.isAnimated) {\n        backdrop.classList.add(CLASS_NAME_FADE$4);\n      }\n\n      this._element = backdrop;\n    }\n\n    return this._element;\n  }\n\n  _getConfig(config) {\n    config = { ...Default$7,\n      ...(typeof config === 'object' ? config : {})\n    }; // use getElement() with the default \"body\" to get a fresh Element on each instantiation\n\n    config.rootElement = getElement(config.rootElement);\n    typeCheckConfig(NAME$8, config, DefaultType$7);\n    return config;\n  }\n\n  _append() {\n    if (this._isAppended) {\n      return;\n    }\n\n    this._config.rootElement.append(this._getElement());\n\n    EventHandler.on(this._getElement(), EVENT_MOUSEDOWN, () => {\n      execute(this._config.clickCallback);\n    });\n    this._isAppended = true;\n  }\n\n  dispose() {\n    if (!this._isAppended) {\n      return;\n    }\n\n    EventHandler.off(this._element, EVENT_MOUSEDOWN);\n\n    this._element.remove();\n\n    this._isAppended = false;\n  }\n\n  _emulateAnimation(callback) {\n    executeAfterTransition(callback, this._getElement(), this._config.isAnimated);\n  }\n\n}\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.1.3): util/focustrap.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\nconst Default$6 = {\n  trapElement: null,\n  // The element to trap focus inside of\n  autofocus: true\n};\nconst DefaultType$6 = {\n  trapElement: 'element',\n  autofocus: 'boolean'\n};\nconst NAME$7 = 'focustrap';\nconst DATA_KEY$7 = 'bs.focustrap';\nconst EVENT_KEY$7 = `.${DATA_KEY$7}`;\nconst EVENT_FOCUSIN$1 = `focusin${EVENT_KEY$7}`;\nconst EVENT_KEYDOWN_TAB = `keydown.tab${EVENT_KEY$7}`;\nconst TAB_KEY = 'Tab';\nconst TAB_NAV_FORWARD = 'forward';\nconst TAB_NAV_BACKWARD = 'backward';\n\nclass FocusTrap {\n  constructor(config) {\n    this._config = this._getConfig(config);\n    this._isActive = false;\n    this._lastTabNavDirection = null;\n  }\n\n  activate() {\n    const {\n      trapElement,\n      autofocus\n    } = this._config;\n\n    if (this._isActive) {\n      return;\n    }\n\n    if (autofocus) {\n      trapElement.focus();\n    }\n\n    EventHandler.off(document, EVENT_KEY$7); // guard against infinite focus loop\n\n    EventHandler.on(document, EVENT_FOCUSIN$1, event => this._handleFocusin(event));\n    EventHandler.on(document, EVENT_KEYDOWN_TAB, event => this._handleKeydown(event));\n    this._isActive = true;\n  }\n\n  deactivate() {\n    if (!this._isActive) {\n      return;\n    }\n\n    this._isActive = false;\n    EventHandler.off(document, EVENT_KEY$7);\n  } // Private\n\n\n  _handleFocusin(event) {\n    const {\n      target\n    } = event;\n    const {\n      trapElement\n    } = this._config;\n\n    if (target === document || target === trapElement || trapElement.contains(target)) {\n      return;\n    }\n\n    const elements = SelectorEngine.focusableChildren(trapElement);\n\n    if (elements.length === 0) {\n      trapElement.focus();\n    } else if (this._lastTabNavDirection === TAB_NAV_BACKWARD) {\n      elements[elements.length - 1].focus();\n    } else {\n      elements[0].focus();\n    }\n  }\n\n  _handleKeydown(event) {\n    if (event.key !== TAB_KEY) {\n      return;\n    }\n\n    this._lastTabNavDirection = event.shiftKey ? TAB_NAV_BACKWARD : TAB_NAV_FORWARD;\n  }\n\n  _getConfig(config) {\n    config = { ...Default$6,\n      ...(typeof config === 'object' ? config : {})\n    };\n    typeCheckConfig(NAME$7, config, DefaultType$6);\n    return config;\n  }\n\n}\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.1.3): modal.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME$6 = 'modal';\nconst DATA_KEY$6 = 'bs.modal';\nconst EVENT_KEY$6 = `.${DATA_KEY$6}`;\nconst DATA_API_KEY$3 = '.data-api';\nconst ESCAPE_KEY$1 = 'Escape';\nconst Default$5 = {\n  backdrop: true,\n  keyboard: true,\n  focus: true\n};\nconst DefaultType$5 = {\n  backdrop: '(boolean|string)',\n  keyboard: 'boolean',\n  focus: 'boolean'\n};\nconst EVENT_HIDE$3 = `hide${EVENT_KEY$6}`;\nconst EVENT_HIDE_PREVENTED = `hidePrevented${EVENT_KEY$6}`;\nconst EVENT_HIDDEN$3 = `hidden${EVENT_KEY$6}`;\nconst EVENT_SHOW$3 = `show${EVENT_KEY$6}`;\nconst EVENT_SHOWN$3 = `shown${EVENT_KEY$6}`;\nconst EVENT_RESIZE = `resize${EVENT_KEY$6}`;\nconst EVENT_CLICK_DISMISS = `click.dismiss${EVENT_KEY$6}`;\nconst EVENT_KEYDOWN_DISMISS$1 = `keydown.dismiss${EVENT_KEY$6}`;\nconst EVENT_MOUSEUP_DISMISS = `mouseup.dismiss${EVENT_KEY$6}`;\nconst EVENT_MOUSEDOWN_DISMISS = `mousedown.dismiss${EVENT_KEY$6}`;\nconst EVENT_CLICK_DATA_API$2 = `click${EVENT_KEY$6}${DATA_API_KEY$3}`;\nconst CLASS_NAME_OPEN = 'modal-open';\nconst CLASS_NAME_FADE$3 = 'fade';\nconst CLASS_NAME_SHOW$4 = 'show';\nconst CLASS_NAME_STATIC = 'modal-static';\nconst OPEN_SELECTOR$1 = '.modal.show';\nconst SELECTOR_DIALOG = '.modal-dialog';\nconst SELECTOR_MODAL_BODY = '.modal-body';\nconst SELECTOR_DATA_TOGGLE$2 = '[data-bs-toggle=\"modal\"]';\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\nclass Modal extends BaseComponent {\n  constructor(element, config) {\n    super(element);\n    this._config = this._getConfig(config);\n    this._dialog = SelectorEngine.findOne(SELECTOR_DIALOG, this._element);\n    this._backdrop = this._initializeBackDrop();\n    this._focustrap = this._initializeFocusTrap();\n    this._isShown = false;\n    this._ignoreBackdropClick = false;\n    this._isTransitioning = false;\n    this._scrollBar = new ScrollBarHelper();\n  } // Getters\n\n\n  static get Default() {\n    return Default$5;\n  }\n\n  static get NAME() {\n    return NAME$6;\n  } // Public\n\n\n  toggle(relatedTarget) {\n    return this._isShown ? this.hide() : this.show(relatedTarget);\n  }\n\n  show(relatedTarget) {\n    if (this._isShown || this._isTransitioning) {\n      return;\n    }\n\n    const showEvent = EventHandler.trigger(this._element, EVENT_SHOW$3, {\n      relatedTarget\n    });\n\n    if (showEvent.defaultPrevented) {\n      return;\n    }\n\n    this._isShown = true;\n\n    if (this._isAnimated()) {\n      this._isTransitioning = true;\n    }\n\n    this._scrollBar.hide();\n\n    document.body.classList.add(CLASS_NAME_OPEN);\n\n    this._adjustDialog();\n\n    this._setEscapeEvent();\n\n    this._setResizeEvent();\n\n    EventHandler.on(this._dialog, EVENT_MOUSEDOWN_DISMISS, () => {\n      EventHandler.one(this._element, EVENT_MOUSEUP_DISMISS, event => {\n        if (event.target === this._element) {\n          this._ignoreBackdropClick = true;\n        }\n      });\n    });\n\n    this._showBackdrop(() => this._showElement(relatedTarget));\n  }\n\n  hide() {\n    if (!this._isShown || this._isTransitioning) {\n      return;\n    }\n\n    const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE$3);\n\n    if (hideEvent.defaultPrevented) {\n      return;\n    }\n\n    this._isShown = false;\n\n    const isAnimated = this._isAnimated();\n\n    if (isAnimated) {\n      this._isTransitioning = true;\n    }\n\n    this._setEscapeEvent();\n\n    this._setResizeEvent();\n\n    this._focustrap.deactivate();\n\n    this._element.classList.remove(CLASS_NAME_SHOW$4);\n\n    EventHandler.off(this._element, EVENT_CLICK_DISMISS);\n    EventHandler.off(this._dialog, EVENT_MOUSEDOWN_DISMISS);\n\n    this._queueCallback(() => this._hideModal(), this._element, isAnimated);\n  }\n\n  dispose() {\n    [window, this._dialog].forEach(htmlElement => EventHandler.off(htmlElement, EVENT_KEY$6));\n\n    this._backdrop.dispose();\n\n    this._focustrap.deactivate();\n\n    super.dispose();\n  }\n\n  handleUpdate() {\n    this._adjustDialog();\n  } // Private\n\n\n  _initializeBackDrop() {\n    return new Backdrop({\n      isVisible: Boolean(this._config.backdrop),\n      // 'static' option will be translated to true, and booleans will keep their value\n      isAnimated: this._isAnimated()\n    });\n  }\n\n  _initializeFocusTrap() {\n    return new FocusTrap({\n      trapElement: this._element\n    });\n  }\n\n  _getConfig(config) {\n    config = { ...Default$5,\n      ...Manipulator.getDataAttributes(this._element),\n      ...(typeof config === 'object' ? config : {})\n    };\n    typeCheckConfig(NAME$6, config, DefaultType$5);\n    return config;\n  }\n\n  _showElement(relatedTarget) {\n    const isAnimated = this._isAnimated();\n\n    const modalBody = SelectorEngine.findOne(SELECTOR_MODAL_BODY, this._dialog);\n\n    if (!this._element.parentNode || this._element.parentNode.nodeType !== Node.ELEMENT_NODE) {\n      // Don't move modal's DOM position\n      document.body.append(this._element);\n    }\n\n    this._element.style.display = 'block';\n\n    this._element.removeAttribute('aria-hidden');\n\n    this._element.setAttribute('aria-modal', true);\n\n    this._element.setAttribute('role', 'dialog');\n\n    this._element.scrollTop = 0;\n\n    if (modalBody) {\n      modalBody.scrollTop = 0;\n    }\n\n    if (isAnimated) {\n      reflow(this._element);\n    }\n\n    this._element.classList.add(CLASS_NAME_SHOW$4);\n\n    const transitionComplete = () => {\n      if (this._config.focus) {\n        this._focustrap.activate();\n      }\n\n      this._isTransitioning = false;\n      EventHandler.trigger(this._element, EVENT_SHOWN$3, {\n        relatedTarget\n      });\n    };\n\n    this._queueCallback(transitionComplete, this._dialog, isAnimated);\n  }\n\n  _setEscapeEvent() {\n    if (this._isShown) {\n      EventHandler.on(this._element, EVENT_KEYDOWN_DISMISS$1, event => {\n        if (this._config.keyboard && event.key === ESCAPE_KEY$1) {\n          event.preventDefault();\n          this.hide();\n        } else if (!this._config.keyboard && event.key === ESCAPE_KEY$1) {\n          this._triggerBackdropTransition();\n        }\n      });\n    } else {\n      EventHandler.off(this._element, EVENT_KEYDOWN_DISMISS$1);\n    }\n  }\n\n  _setResizeEvent() {\n    if (this._isShown) {\n      EventHandler.on(window, EVENT_RESIZE, () => this._adjustDialog());\n    } else {\n      EventHandler.off(window, EVENT_RESIZE);\n    }\n  }\n\n  _hideModal() {\n    this._element.style.display = 'none';\n\n    this._element.setAttribute('aria-hidden', true);\n\n    this._element.removeAttribute('aria-modal');\n\n    this._element.removeAttribute('role');\n\n    this._isTransitioning = false;\n\n    this._backdrop.hide(() => {\n      document.body.classList.remove(CLASS_NAME_OPEN);\n\n      this._resetAdjustments();\n\n      this._scrollBar.reset();\n\n      EventHandler.trigger(this._element, EVENT_HIDDEN$3);\n    });\n  }\n\n  _showBackdrop(callback) {\n    EventHandler.on(this._element, EVENT_CLICK_DISMISS, event => {\n      if (this._ignoreBackdropClick) {\n        this._ignoreBackdropClick = false;\n        return;\n      }\n\n      if (event.target !== event.currentTarget) {\n        return;\n      }\n\n      if (this._config.backdrop === true) {\n        this.hide();\n      } else if (this._config.backdrop === 'static') {\n        this._triggerBackdropTransition();\n      }\n    });\n\n    this._backdrop.show(callback);\n  }\n\n  _isAnimated() {\n    return this._element.classList.contains(CLASS_NAME_FADE$3);\n  }\n\n  _triggerBackdropTransition() {\n    const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE_PREVENTED);\n\n    if (hideEvent.defaultPrevented) {\n      return;\n    }\n\n    const {\n      classList,\n      scrollHeight,\n      style\n    } = this._element;\n    const isModalOverflowing = scrollHeight > document.documentElement.clientHeight; // return if the following background transition hasn't yet completed\n\n    if (!isModalOverflowing && style.overflowY === 'hidden' || classList.contains(CLASS_NAME_STATIC)) {\n      return;\n    }\n\n    if (!isModalOverflowing) {\n      style.overflowY = 'hidden';\n    }\n\n    classList.add(CLASS_NAME_STATIC);\n\n    this._queueCallback(() => {\n      classList.remove(CLASS_NAME_STATIC);\n\n      if (!isModalOverflowing) {\n        this._queueCallback(() => {\n          style.overflowY = '';\n        }, this._dialog);\n      }\n    }, this._dialog);\n\n    this._element.focus();\n  } // ----------------------------------------------------------------------\n  // the following methods are used to handle overflowing modals\n  // ----------------------------------------------------------------------\n\n\n  _adjustDialog() {\n    const isModalOverflowing = this._element.scrollHeight > document.documentElement.clientHeight;\n\n    const scrollbarWidth = this._scrollBar.getWidth();\n\n    const isBodyOverflowing = scrollbarWidth > 0;\n\n    if (!isBodyOverflowing && isModalOverflowing && !isRTL() || isBodyOverflowing && !isModalOverflowing && isRTL()) {\n      this._element.style.paddingLeft = `${scrollbarWidth}px`;\n    }\n\n    if (isBodyOverflowing && !isModalOverflowing && !isRTL() || !isBodyOverflowing && isModalOverflowing && isRTL()) {\n      this._element.style.paddingRight = `${scrollbarWidth}px`;\n    }\n  }\n\n  _resetAdjustments() {\n    this._element.style.paddingLeft = '';\n    this._element.style.paddingRight = '';\n  } // Static\n\n\n  static jQueryInterface(config, relatedTarget) {\n    return this.each(function () {\n      const data = Modal.getOrCreateInstance(this, config);\n\n      if (typeof config !== 'string') {\n        return;\n      }\n\n      if (typeof data[config] === 'undefined') {\n        throw new TypeError(`No method named \"${config}\"`);\n      }\n\n      data[config](relatedTarget);\n    });\n  }\n\n}\n/**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\n\nEventHandler.on(document, EVENT_CLICK_DATA_API$2, SELECTOR_DATA_TOGGLE$2, function (event) {\n  const target = getElementFromSelector(this);\n\n  if (['A', 'AREA'].includes(this.tagName)) {\n    event.preventDefault();\n  }\n\n  EventHandler.one(target, EVENT_SHOW$3, showEvent => {\n    if (showEvent.defaultPrevented) {\n      // only register focus restorer if modal will actually get shown\n      return;\n    }\n\n    EventHandler.one(target, EVENT_HIDDEN$3, () => {\n      if (isVisible(this)) {\n        this.focus();\n      }\n    });\n  }); // avoid conflict when clicking moddal toggler while another one is open\n\n  const allReadyOpen = SelectorEngine.findOne(OPEN_SELECTOR$1);\n\n  if (allReadyOpen) {\n    Modal.getInstance(allReadyOpen).hide();\n  }\n\n  const data = Modal.getOrCreateInstance(target);\n  data.toggle(this);\n});\nenableDismissTrigger(Modal);\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n * add .Modal to jQuery only if jQuery is present\n */\n\ndefineJQueryPlugin(Modal);\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.1.3): offcanvas.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME$5 = 'offcanvas';\nconst DATA_KEY$5 = 'bs.offcanvas';\nconst EVENT_KEY$5 = `.${DATA_KEY$5}`;\nconst DATA_API_KEY$2 = '.data-api';\nconst EVENT_LOAD_DATA_API$1 = `load${EVENT_KEY$5}${DATA_API_KEY$2}`;\nconst ESCAPE_KEY = 'Escape';\nconst Default$4 = {\n  backdrop: true,\n  keyboard: true,\n  scroll: false\n};\nconst DefaultType$4 = {\n  backdrop: 'boolean',\n  keyboard: 'boolean',\n  scroll: 'boolean'\n};\nconst CLASS_NAME_SHOW$3 = 'show';\nconst CLASS_NAME_BACKDROP = 'offcanvas-backdrop';\nconst OPEN_SELECTOR = '.offcanvas.show';\nconst EVENT_SHOW$2 = `show${EVENT_KEY$5}`;\nconst EVENT_SHOWN$2 = `shown${EVENT_KEY$5}`;\nconst EVENT_HIDE$2 = `hide${EVENT_KEY$5}`;\nconst EVENT_HIDDEN$2 = `hidden${EVENT_KEY$5}`;\nconst EVENT_CLICK_DATA_API$1 = `click${EVENT_KEY$5}${DATA_API_KEY$2}`;\nconst EVENT_KEYDOWN_DISMISS = `keydown.dismiss${EVENT_KEY$5}`;\nconst SELECTOR_DATA_TOGGLE$1 = '[data-bs-toggle=\"offcanvas\"]';\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\nclass Offcanvas extends BaseComponent {\n  constructor(element, config) {\n    super(element);\n    this._config = this._getConfig(config);\n    this._isShown = false;\n    this._backdrop = this._initializeBackDrop();\n    this._focustrap = this._initializeFocusTrap();\n\n    this._addEventListeners();\n  } // Getters\n\n\n  static get NAME() {\n    return NAME$5;\n  }\n\n  static get Default() {\n    return Default$4;\n  } // Public\n\n\n  toggle(relatedTarget) {\n    return this._isShown ? this.hide() : this.show(relatedTarget);\n  }\n\n  show(relatedTarget) {\n    if (this._isShown) {\n      return;\n    }\n\n    const showEvent = EventHandler.trigger(this._element, EVENT_SHOW$2, {\n      relatedTarget\n    });\n\n    if (showEvent.defaultPrevented) {\n      return;\n    }\n\n    this._isShown = true;\n    this._element.style.visibility = 'visible';\n\n    this._backdrop.show();\n\n    if (!this._config.scroll) {\n      new ScrollBarHelper().hide();\n    }\n\n    this._element.removeAttribute('aria-hidden');\n\n    this._element.setAttribute('aria-modal', true);\n\n    this._element.setAttribute('role', 'dialog');\n\n    this._element.classList.add(CLASS_NAME_SHOW$3);\n\n    const completeCallBack = () => {\n      if (!this._config.scroll) {\n        this._focustrap.activate();\n      }\n\n      EventHandler.trigger(this._element, EVENT_SHOWN$2, {\n        relatedTarget\n      });\n    };\n\n    this._queueCallback(completeCallBack, this._element, true);\n  }\n\n  hide() {\n    if (!this._isShown) {\n      return;\n    }\n\n    const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE$2);\n\n    if (hideEvent.defaultPrevented) {\n      return;\n    }\n\n    this._focustrap.deactivate();\n\n    this._element.blur();\n\n    this._isShown = false;\n\n    this._element.classList.remove(CLASS_NAME_SHOW$3);\n\n    this._backdrop.hide();\n\n    const completeCallback = () => {\n      this._element.setAttribute('aria-hidden', true);\n\n      this._element.removeAttribute('aria-modal');\n\n      this._element.removeAttribute('role');\n\n      this._element.style.visibility = 'hidden';\n\n      if (!this._config.scroll) {\n        new ScrollBarHelper().reset();\n      }\n\n      EventHandler.trigger(this._element, EVENT_HIDDEN$2);\n    };\n\n    this._queueCallback(completeCallback, this._element, true);\n  }\n\n  dispose() {\n    this._backdrop.dispose();\n\n    this._focustrap.deactivate();\n\n    super.dispose();\n  } // Private\n\n\n  _getConfig(config) {\n    config = { ...Default$4,\n      ...Manipulator.getDataAttributes(this._element),\n      ...(typeof config === 'object' ? config : {})\n    };\n    typeCheckConfig(NAME$5, config, DefaultType$4);\n    return config;\n  }\n\n  _initializeBackDrop() {\n    return new Backdrop({\n      className: CLASS_NAME_BACKDROP,\n      isVisible: this._config.backdrop,\n      isAnimated: true,\n      rootElement: this._element.parentNode,\n      clickCallback: () => this.hide()\n    });\n  }\n\n  _initializeFocusTrap() {\n    return new FocusTrap({\n      trapElement: this._element\n    });\n  }\n\n  _addEventListeners() {\n    EventHandler.on(this._element, EVENT_KEYDOWN_DISMISS, event => {\n      if (this._config.keyboard && event.key === ESCAPE_KEY) {\n        this.hide();\n      }\n    });\n  } // Static\n\n\n  static jQueryInterface(config) {\n    return this.each(function () {\n      const data = Offcanvas.getOrCreateInstance(this, config);\n\n      if (typeof config !== 'string') {\n        return;\n      }\n\n      if (data[config] === undefined || config.startsWith('_') || config === 'constructor') {\n        throw new TypeError(`No method named \"${config}\"`);\n      }\n\n      data[config](this);\n    });\n  }\n\n}\n/**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\n\nEventHandler.on(document, EVENT_CLICK_DATA_API$1, SELECTOR_DATA_TOGGLE$1, function (event) {\n  const target = getElementFromSelector(this);\n\n  if (['A', 'AREA'].includes(this.tagName)) {\n    event.preventDefault();\n  }\n\n  if (isDisabled(this)) {\n    return;\n  }\n\n  EventHandler.one(target, EVENT_HIDDEN$2, () => {\n    // focus on trigger when it is closed\n    if (isVisible(this)) {\n      this.focus();\n    }\n  }); // avoid conflict when clicking a toggler of an offcanvas, while another is open\n\n  const allReadyOpen = SelectorEngine.findOne(OPEN_SELECTOR);\n\n  if (allReadyOpen && allReadyOpen !== target) {\n    Offcanvas.getInstance(allReadyOpen).hide();\n  }\n\n  const data = Offcanvas.getOrCreateInstance(target);\n  data.toggle(this);\n});\nEventHandler.on(window, EVENT_LOAD_DATA_API$1, () => SelectorEngine.find(OPEN_SELECTOR).forEach(el => Offcanvas.getOrCreateInstance(el).show()));\nenableDismissTrigger(Offcanvas);\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n */\n\ndefineJQueryPlugin(Offcanvas);\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.1.3): util/sanitizer.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\nconst uriAttributes = new Set(['background', 'cite', 'href', 'itemtype', 'longdesc', 'poster', 'src', 'xlink:href']);\nconst ARIA_ATTRIBUTE_PATTERN = /^aria-[\\w-]*$/i;\n/**\n * A pattern that recognizes a commonly useful subset of URLs that are safe.\n *\n * Shoutout to Angular https://github.com/angular/angular/blob/12.2.x/packages/core/src/sanitization/url_sanitizer.ts\n */\n\nconst SAFE_URL_PATTERN = /^(?:(?:https?|mailto|ftp|tel|file|sms):|[^#&/:?]*(?:[#/?]|$))/i;\n/**\n * A pattern that matches safe data URLs. Only matches image, video and audio types.\n *\n * Shoutout to Angular https://github.com/angular/angular/blob/12.2.x/packages/core/src/sanitization/url_sanitizer.ts\n */\n\nconst DATA_URL_PATTERN = /^data:(?:image\\/(?:bmp|gif|jpeg|jpg|png|tiff|webp)|video\\/(?:mpeg|mp4|ogg|webm)|audio\\/(?:mp3|oga|ogg|opus));base64,[\\d+/a-z]+=*$/i;\n\nconst allowedAttribute = (attribute, allowedAttributeList) => {\n  const attributeName = attribute.nodeName.toLowerCase();\n\n  if (allowedAttributeList.includes(attributeName)) {\n    if (uriAttributes.has(attributeName)) {\n      return Boolean(SAFE_URL_PATTERN.test(attribute.nodeValue) || DATA_URL_PATTERN.test(attribute.nodeValue));\n    }\n\n    return true;\n  }\n\n  const regExp = allowedAttributeList.filter(attributeRegex => attributeRegex instanceof RegExp); // Check if a regular expression validates the attribute.\n\n  for (let i = 0, len = regExp.length; i < len; i++) {\n    if (regExp[i].test(attributeName)) {\n      return true;\n    }\n  }\n\n  return false;\n};\n\nconst DefaultAllowlist = {\n  // Global attributes allowed on any supplied element below.\n  '*': ['class', 'dir', 'id', 'lang', 'role', ARIA_ATTRIBUTE_PATTERN],\n  a: ['target', 'href', 'title', 'rel'],\n  area: [],\n  b: [],\n  br: [],\n  col: [],\n  code: [],\n  div: [],\n  em: [],\n  hr: [],\n  h1: [],\n  h2: [],\n  h3: [],\n  h4: [],\n  h5: [],\n  h6: [],\n  i: [],\n  img: ['src', 'srcset', 'alt', 'title', 'width', 'height'],\n  li: [],\n  ol: [],\n  p: [],\n  pre: [],\n  s: [],\n  small: [],\n  span: [],\n  sub: [],\n  sup: [],\n  strong: [],\n  u: [],\n  ul: []\n};\nfunction sanitizeHtml(unsafeHtml, allowList, sanitizeFn) {\n  if (!unsafeHtml.length) {\n    return unsafeHtml;\n  }\n\n  if (sanitizeFn && typeof sanitizeFn === 'function') {\n    return sanitizeFn(unsafeHtml);\n  }\n\n  const domParser = new window.DOMParser();\n  const createdDocument = domParser.parseFromString(unsafeHtml, 'text/html');\n  const elements = [].concat(...createdDocument.body.querySelectorAll('*'));\n\n  for (let i = 0, len = elements.length; i < len; i++) {\n    const element = elements[i];\n    const elementName = element.nodeName.toLowerCase();\n\n    if (!Object.keys(allowList).includes(elementName)) {\n      element.remove();\n      continue;\n    }\n\n    const attributeList = [].concat(...element.attributes);\n    const allowedAttributes = [].concat(allowList['*'] || [], allowList[elementName] || []);\n    attributeList.forEach(attribute => {\n      if (!allowedAttribute(attribute, allowedAttributes)) {\n        element.removeAttribute(attribute.nodeName);\n      }\n    });\n  }\n\n  return createdDocument.body.innerHTML;\n}\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.1.3): tooltip.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME$4 = 'tooltip';\nconst DATA_KEY$4 = 'bs.tooltip';\nconst EVENT_KEY$4 = `.${DATA_KEY$4}`;\nconst CLASS_PREFIX$1 = 'bs-tooltip';\nconst DISALLOWED_ATTRIBUTES = new Set(['sanitize', 'allowList', 'sanitizeFn']);\nconst DefaultType$3 = {\n  animation: 'boolean',\n  template: 'string',\n  title: '(string|element|function)',\n  trigger: 'string',\n  delay: '(number|object)',\n  html: 'boolean',\n  selector: '(string|boolean)',\n  placement: '(string|function)',\n  offset: '(array|string|function)',\n  container: '(string|element|boolean)',\n  fallbackPlacements: 'array',\n  boundary: '(string|element)',\n  customClass: '(string|function)',\n  sanitize: 'boolean',\n  sanitizeFn: '(null|function)',\n  allowList: 'object',\n  popperConfig: '(null|object|function)'\n};\nconst AttachmentMap = {\n  AUTO: 'auto',\n  TOP: 'top',\n  RIGHT: isRTL() ? 'left' : 'right',\n  BOTTOM: 'bottom',\n  LEFT: isRTL() ? 'right' : 'left'\n};\nconst Default$3 = {\n  animation: true,\n  template: '<div class=\"tooltip\" role=\"tooltip\">' + '<div class=\"tooltip-arrow\"></div>' + '<div class=\"tooltip-inner\"></div>' + '</div>',\n  trigger: 'hover focus',\n  title: '',\n  delay: 0,\n  html: false,\n  selector: false,\n  placement: 'top',\n  offset: [0, 0],\n  container: false,\n  fallbackPlacements: ['top', 'right', 'bottom', 'left'],\n  boundary: 'clippingParents',\n  customClass: '',\n  sanitize: true,\n  sanitizeFn: null,\n  allowList: DefaultAllowlist,\n  popperConfig: null\n};\nconst Event$2 = {\n  HIDE: `hide${EVENT_KEY$4}`,\n  HIDDEN: `hidden${EVENT_KEY$4}`,\n  SHOW: `show${EVENT_KEY$4}`,\n  SHOWN: `shown${EVENT_KEY$4}`,\n  INSERTED: `inserted${EVENT_KEY$4}`,\n  CLICK: `click${EVENT_KEY$4}`,\n  FOCUSIN: `focusin${EVENT_KEY$4}`,\n  FOCUSOUT: `focusout${EVENT_KEY$4}`,\n  MOUSEENTER: `mouseenter${EVENT_KEY$4}`,\n  MOUSELEAVE: `mouseleave${EVENT_KEY$4}`\n};\nconst CLASS_NAME_FADE$2 = 'fade';\nconst CLASS_NAME_MODAL = 'modal';\nconst CLASS_NAME_SHOW$2 = 'show';\nconst HOVER_STATE_SHOW = 'show';\nconst HOVER_STATE_OUT = 'out';\nconst SELECTOR_TOOLTIP_INNER = '.tooltip-inner';\nconst SELECTOR_MODAL = `.${CLASS_NAME_MODAL}`;\nconst EVENT_MODAL_HIDE = 'hide.bs.modal';\nconst TRIGGER_HOVER = 'hover';\nconst TRIGGER_FOCUS = 'focus';\nconst TRIGGER_CLICK = 'click';\nconst TRIGGER_MANUAL = 'manual';\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\nclass Tooltip extends BaseComponent {\n  constructor(element, config) {\n    if (typeof Popper === 'undefined') {\n      throw new TypeError('Bootstrap\\'s tooltips require Popper (https://popper.js.org)');\n    }\n\n    super(element); // private\n\n    this._isEnabled = true;\n    this._timeout = 0;\n    this._hoverState = '';\n    this._activeTrigger = {};\n    this._popper = null; // Protected\n\n    this._config = this._getConfig(config);\n    this.tip = null;\n\n    this._setListeners();\n  } // Getters\n\n\n  static get Default() {\n    return Default$3;\n  }\n\n  static get NAME() {\n    return NAME$4;\n  }\n\n  static get Event() {\n    return Event$2;\n  }\n\n  static get DefaultType() {\n    return DefaultType$3;\n  } // Public\n\n\n  enable() {\n    this._isEnabled = true;\n  }\n\n  disable() {\n    this._isEnabled = false;\n  }\n\n  toggleEnabled() {\n    this._isEnabled = !this._isEnabled;\n  }\n\n  toggle(event) {\n    if (!this._isEnabled) {\n      return;\n    }\n\n    if (event) {\n      const context = this._initializeOnDelegatedTarget(event);\n\n      context._activeTrigger.click = !context._activeTrigger.click;\n\n      if (context._isWithActiveTrigger()) {\n        context._enter(null, context);\n      } else {\n        context._leave(null, context);\n      }\n    } else {\n      if (this.getTipElement().classList.contains(CLASS_NAME_SHOW$2)) {\n        this._leave(null, this);\n\n        return;\n      }\n\n      this._enter(null, this);\n    }\n  }\n\n  dispose() {\n    clearTimeout(this._timeout);\n    EventHandler.off(this._element.closest(SELECTOR_MODAL), EVENT_MODAL_HIDE, this._hideModalHandler);\n\n    if (this.tip) {\n      this.tip.remove();\n    }\n\n    this._disposePopper();\n\n    super.dispose();\n  }\n\n  show() {\n    if (this._element.style.display === 'none') {\n      throw new Error('Please use show on visible elements');\n    }\n\n    if (!(this.isWithContent() && this._isEnabled)) {\n      return;\n    }\n\n    const showEvent = EventHandler.trigger(this._element, this.constructor.Event.SHOW);\n    const shadowRoot = findShadowRoot(this._element);\n    const isInTheDom = shadowRoot === null ? this._element.ownerDocument.documentElement.contains(this._element) : shadowRoot.contains(this._element);\n\n    if (showEvent.defaultPrevented || !isInTheDom) {\n      return;\n    } // A trick to recreate a tooltip in case a new title is given by using the NOT documented `data-bs-original-title`\n    // This will be removed later in favor of a `setContent` method\n\n\n    if (this.constructor.NAME === 'tooltip' && this.tip && this.getTitle() !== this.tip.querySelector(SELECTOR_TOOLTIP_INNER).innerHTML) {\n      this._disposePopper();\n\n      this.tip.remove();\n      this.tip = null;\n    }\n\n    const tip = this.getTipElement();\n    const tipId = getUID(this.constructor.NAME);\n    tip.setAttribute('id', tipId);\n\n    this._element.setAttribute('aria-describedby', tipId);\n\n    if (this._config.animation) {\n      tip.classList.add(CLASS_NAME_FADE$2);\n    }\n\n    const placement = typeof this._config.placement === 'function' ? this._config.placement.call(this, tip, this._element) : this._config.placement;\n\n    const attachment = this._getAttachment(placement);\n\n    this._addAttachmentClass(attachment);\n\n    const {\n      container\n    } = this._config;\n    Data.set(tip, this.constructor.DATA_KEY, this);\n\n    if (!this._element.ownerDocument.documentElement.contains(this.tip)) {\n      container.append(tip);\n      EventHandler.trigger(this._element, this.constructor.Event.INSERTED);\n    }\n\n    if (this._popper) {\n      this._popper.update();\n    } else {\n      this._popper = Popper.createPopper(this._element, tip, this._getPopperConfig(attachment));\n    }\n\n    tip.classList.add(CLASS_NAME_SHOW$2);\n\n    const customClass = this._resolvePossibleFunction(this._config.customClass);\n\n    if (customClass) {\n      tip.classList.add(...customClass.split(' '));\n    } // If this is a touch-enabled device we add extra\n    // empty mouseover listeners to the body's immediate children;\n    // only needed because of broken event delegation on iOS\n    // https://www.quirksmode.org/blog/archives/2014/02/mouse_event_bub.html\n\n\n    if ('ontouchstart' in document.documentElement) {\n      [].concat(...document.body.children).forEach(element => {\n        EventHandler.on(element, 'mouseover', noop);\n      });\n    }\n\n    const complete = () => {\n      const prevHoverState = this._hoverState;\n      this._hoverState = null;\n      EventHandler.trigger(this._element, this.constructor.Event.SHOWN);\n\n      if (prevHoverState === HOVER_STATE_OUT) {\n        this._leave(null, this);\n      }\n    };\n\n    const isAnimated = this.tip.classList.contains(CLASS_NAME_FADE$2);\n\n    this._queueCallback(complete, this.tip, isAnimated);\n  }\n\n  hide() {\n    if (!this._popper) {\n      return;\n    }\n\n    const tip = this.getTipElement();\n\n    const complete = () => {\n      if (this._isWithActiveTrigger()) {\n        return;\n      }\n\n      if (this._hoverState !== HOVER_STATE_SHOW) {\n        tip.remove();\n      }\n\n      this._cleanTipClass();\n\n      this._element.removeAttribute('aria-describedby');\n\n      EventHandler.trigger(this._element, this.constructor.Event.HIDDEN);\n\n      this._disposePopper();\n    };\n\n    const hideEvent = EventHandler.trigger(this._element, this.constructor.Event.HIDE);\n\n    if (hideEvent.defaultPrevented) {\n      return;\n    }\n\n    tip.classList.remove(CLASS_NAME_SHOW$2); // If this is a touch-enabled device we remove the extra\n    // empty mouseover listeners we added for iOS support\n\n    if ('ontouchstart' in document.documentElement) {\n      [].concat(...document.body.children).forEach(element => EventHandler.off(element, 'mouseover', noop));\n    }\n\n    this._activeTrigger[TRIGGER_CLICK] = false;\n    this._activeTrigger[TRIGGER_FOCUS] = false;\n    this._activeTrigger[TRIGGER_HOVER] = false;\n    const isAnimated = this.tip.classList.contains(CLASS_NAME_FADE$2);\n\n    this._queueCallback(complete, this.tip, isAnimated);\n\n    this._hoverState = '';\n  }\n\n  update() {\n    if (this._popper !== null) {\n      this._popper.update();\n    }\n  } // Protected\n\n\n  isWithContent() {\n    return Boolean(this.getTitle());\n  }\n\n  getTipElement() {\n    if (this.tip) {\n      return this.tip;\n    }\n\n    const element = document.createElement('div');\n    element.innerHTML = this._config.template;\n    const tip = element.children[0];\n    this.setContent(tip);\n    tip.classList.remove(CLASS_NAME_FADE$2, CLASS_NAME_SHOW$2);\n    this.tip = tip;\n    return this.tip;\n  }\n\n  setContent(tip) {\n    this._sanitizeAndSetContent(tip, this.getTitle(), SELECTOR_TOOLTIP_INNER);\n  }\n\n  _sanitizeAndSetContent(template, content, selector) {\n    const templateElement = SelectorEngine.findOne(selector, template);\n\n    if (!content && templateElement) {\n      templateElement.remove();\n      return;\n    } // we use append for html objects to maintain js events\n\n\n    this.setElementContent(templateElement, content);\n  }\n\n  setElementContent(element, content) {\n    if (element === null) {\n      return;\n    }\n\n    if (isElement(content)) {\n      content = getElement(content); // content is a DOM node or a jQuery\n\n      if (this._config.html) {\n        if (content.parentNode !== element) {\n          element.innerHTML = '';\n          element.append(content);\n        }\n      } else {\n        element.textContent = content.textContent;\n      }\n\n      return;\n    }\n\n    if (this._config.html) {\n      if (this._config.sanitize) {\n        content = sanitizeHtml(content, this._config.allowList, this._config.sanitizeFn);\n      }\n\n      element.innerHTML = content;\n    } else {\n      element.textContent = content;\n    }\n  }\n\n  getTitle() {\n    const title = this._element.getAttribute('data-bs-original-title') || this._config.title;\n\n    return this._resolvePossibleFunction(title);\n  }\n\n  updateAttachment(attachment) {\n    if (attachment === 'right') {\n      return 'end';\n    }\n\n    if (attachment === 'left') {\n      return 'start';\n    }\n\n    return attachment;\n  } // Private\n\n\n  _initializeOnDelegatedTarget(event, context) {\n    return context || this.constructor.getOrCreateInstance(event.delegateTarget, this._getDelegateConfig());\n  }\n\n  _getOffset() {\n    const {\n      offset\n    } = this._config;\n\n    if (typeof offset === 'string') {\n      return offset.split(',').map(val => Number.parseInt(val, 10));\n    }\n\n    if (typeof offset === 'function') {\n      return popperData => offset(popperData, this._element);\n    }\n\n    return offset;\n  }\n\n  _resolvePossibleFunction(content) {\n    return typeof content === 'function' ? content.call(this._element) : content;\n  }\n\n  _getPopperConfig(attachment) {\n    const defaultBsPopperConfig = {\n      placement: attachment,\n      modifiers: [{\n        name: 'flip',\n        options: {\n          fallbackPlacements: this._config.fallbackPlacements\n        }\n      }, {\n        name: 'offset',\n        options: {\n          offset: this._getOffset()\n        }\n      }, {\n        name: 'preventOverflow',\n        options: {\n          boundary: this._config.boundary\n        }\n      }, {\n        name: 'arrow',\n        options: {\n          element: `.${this.constructor.NAME}-arrow`\n        }\n      }, {\n        name: 'onChange',\n        enabled: true,\n        phase: 'afterWrite',\n        fn: data => this._handlePopperPlacementChange(data)\n      }],\n      onFirstUpdate: data => {\n        if (data.options.placement !== data.placement) {\n          this._handlePopperPlacementChange(data);\n        }\n      }\n    };\n    return { ...defaultBsPopperConfig,\n      ...(typeof this._config.popperConfig === 'function' ? this._config.popperConfig(defaultBsPopperConfig) : this._config.popperConfig)\n    };\n  }\n\n  _addAttachmentClass(attachment) {\n    this.getTipElement().classList.add(`${this._getBasicClassPrefix()}-${this.updateAttachment(attachment)}`);\n  }\n\n  _getAttachment(placement) {\n    return AttachmentMap[placement.toUpperCase()];\n  }\n\n  _setListeners() {\n    const triggers = this._config.trigger.split(' ');\n\n    triggers.forEach(trigger => {\n      if (trigger === 'click') {\n        EventHandler.on(this._element, this.constructor.Event.CLICK, this._config.selector, event => this.toggle(event));\n      } else if (trigger !== TRIGGER_MANUAL) {\n        const eventIn = trigger === TRIGGER_HOVER ? this.constructor.Event.MOUSEENTER : this.constructor.Event.FOCUSIN;\n        const eventOut = trigger === TRIGGER_HOVER ? this.constructor.Event.MOUSELEAVE : this.constructor.Event.FOCUSOUT;\n        EventHandler.on(this._element, eventIn, this._config.selector, event => this._enter(event));\n        EventHandler.on(this._element, eventOut, this._config.selector, event => this._leave(event));\n      }\n    });\n\n    this._hideModalHandler = () => {\n      if (this._element) {\n        this.hide();\n      }\n    };\n\n    EventHandler.on(this._element.closest(SELECTOR_MODAL), EVENT_MODAL_HIDE, this._hideModalHandler);\n\n    if (this._config.selector) {\n      this._config = { ...this._config,\n        trigger: 'manual',\n        selector: ''\n      };\n    } else {\n      this._fixTitle();\n    }\n  }\n\n  _fixTitle() {\n    const title = this._element.getAttribute('title');\n\n    const originalTitleType = typeof this._element.getAttribute('data-bs-original-title');\n\n    if (title || originalTitleType !== 'string') {\n      this._element.setAttribute('data-bs-original-title', title || '');\n\n      if (title && !this._element.getAttribute('aria-label') && !this._element.textContent) {\n        this._element.setAttribute('aria-label', title);\n      }\n\n      this._element.setAttribute('title', '');\n    }\n  }\n\n  _enter(event, context) {\n    context = this._initializeOnDelegatedTarget(event, context);\n\n    if (event) {\n      context._activeTrigger[event.type === 'focusin' ? TRIGGER_FOCUS : TRIGGER_HOVER] = true;\n    }\n\n    if (context.getTipElement().classList.contains(CLASS_NAME_SHOW$2) || context._hoverState === HOVER_STATE_SHOW) {\n      context._hoverState = HOVER_STATE_SHOW;\n      return;\n    }\n\n    clearTimeout(context._timeout);\n    context._hoverState = HOVER_STATE_SHOW;\n\n    if (!context._config.delay || !context._config.delay.show) {\n      context.show();\n      return;\n    }\n\n    context._timeout = setTimeout(() => {\n      if (context._hoverState === HOVER_STATE_SHOW) {\n        context.show();\n      }\n    }, context._config.delay.show);\n  }\n\n  _leave(event, context) {\n    context = this._initializeOnDelegatedTarget(event, context);\n\n    if (event) {\n      context._activeTrigger[event.type === 'focusout' ? TRIGGER_FOCUS : TRIGGER_HOVER] = context._element.contains(event.relatedTarget);\n    }\n\n    if (context._isWithActiveTrigger()) {\n      return;\n    }\n\n    clearTimeout(context._timeout);\n    context._hoverState = HOVER_STATE_OUT;\n\n    if (!context._config.delay || !context._config.delay.hide) {\n      context.hide();\n      return;\n    }\n\n    context._timeout = setTimeout(() => {\n      if (context._hoverState === HOVER_STATE_OUT) {\n        context.hide();\n      }\n    }, context._config.delay.hide);\n  }\n\n  _isWithActiveTrigger() {\n    for (const trigger in this._activeTrigger) {\n      if (this._activeTrigger[trigger]) {\n        return true;\n      }\n    }\n\n    return false;\n  }\n\n  _getConfig(config) {\n    const dataAttributes = Manipulator.getDataAttributes(this._element);\n    Object.keys(dataAttributes).forEach(dataAttr => {\n      if (DISALLOWED_ATTRIBUTES.has(dataAttr)) {\n        delete dataAttributes[dataAttr];\n      }\n    });\n    config = { ...this.constructor.Default,\n      ...dataAttributes,\n      ...(typeof config === 'object' && config ? config : {})\n    };\n    config.container = config.container === false ? document.body : getElement(config.container);\n\n    if (typeof config.delay === 'number') {\n      config.delay = {\n        show: config.delay,\n        hide: config.delay\n      };\n    }\n\n    if (typeof config.title === 'number') {\n      config.title = config.title.toString();\n    }\n\n    if (typeof config.content === 'number') {\n      config.content = config.content.toString();\n    }\n\n    typeCheckConfig(NAME$4, config, this.constructor.DefaultType);\n\n    if (config.sanitize) {\n      config.template = sanitizeHtml(config.template, config.allowList, config.sanitizeFn);\n    }\n\n    return config;\n  }\n\n  _getDelegateConfig() {\n    const config = {};\n\n    for (const key in this._config) {\n      if (this.constructor.Default[key] !== this._config[key]) {\n        config[key] = this._config[key];\n      }\n    } // In the future can be replaced with:\n    // const keysWithDifferentValues = Object.entries(this._config).filter(entry => this.constructor.Default[entry[0]] !== this._config[entry[0]])\n    // `Object.fromEntries(keysWithDifferentValues)`\n\n\n    return config;\n  }\n\n  _cleanTipClass() {\n    const tip = this.getTipElement();\n    const basicClassPrefixRegex = new RegExp(`(^|\\\\s)${this._getBasicClassPrefix()}\\\\S+`, 'g');\n    const tabClass = tip.getAttribute('class').match(basicClassPrefixRegex);\n\n    if (tabClass !== null && tabClass.length > 0) {\n      tabClass.map(token => token.trim()).forEach(tClass => tip.classList.remove(tClass));\n    }\n  }\n\n  _getBasicClassPrefix() {\n    return CLASS_PREFIX$1;\n  }\n\n  _handlePopperPlacementChange(popperData) {\n    const {\n      state\n    } = popperData;\n\n    if (!state) {\n      return;\n    }\n\n    this.tip = state.elements.popper;\n\n    this._cleanTipClass();\n\n    this._addAttachmentClass(this._getAttachment(state.placement));\n  }\n\n  _disposePopper() {\n    if (this._popper) {\n      this._popper.destroy();\n\n      this._popper = null;\n    }\n  } // Static\n\n\n  static jQueryInterface(config) {\n    return this.each(function () {\n      const data = Tooltip.getOrCreateInstance(this, config);\n\n      if (typeof config === 'string') {\n        if (typeof data[config] === 'undefined') {\n          throw new TypeError(`No method named \"${config}\"`);\n        }\n\n        data[config]();\n      }\n    });\n  }\n\n}\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n * add .Tooltip to jQuery only if jQuery is present\n */\n\n\ndefineJQueryPlugin(Tooltip);\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.1.3): popover.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME$3 = 'popover';\nconst DATA_KEY$3 = 'bs.popover';\nconst EVENT_KEY$3 = `.${DATA_KEY$3}`;\nconst CLASS_PREFIX = 'bs-popover';\nconst Default$2 = { ...Tooltip.Default,\n  placement: 'right',\n  offset: [0, 8],\n  trigger: 'click',\n  content: '',\n  template: '<div class=\"popover\" role=\"tooltip\">' + '<div class=\"popover-arrow\"></div>' + '<h3 class=\"popover-header\"></h3>' + '<div class=\"popover-body\"></div>' + '</div>'\n};\nconst DefaultType$2 = { ...Tooltip.DefaultType,\n  content: '(string|element|function)'\n};\nconst Event$1 = {\n  HIDE: `hide${EVENT_KEY$3}`,\n  HIDDEN: `hidden${EVENT_KEY$3}`,\n  SHOW: `show${EVENT_KEY$3}`,\n  SHOWN: `shown${EVENT_KEY$3}`,\n  INSERTED: `inserted${EVENT_KEY$3}`,\n  CLICK: `click${EVENT_KEY$3}`,\n  FOCUSIN: `focusin${EVENT_KEY$3}`,\n  FOCUSOUT: `focusout${EVENT_KEY$3}`,\n  MOUSEENTER: `mouseenter${EVENT_KEY$3}`,\n  MOUSELEAVE: `mouseleave${EVENT_KEY$3}`\n};\nconst SELECTOR_TITLE = '.popover-header';\nconst SELECTOR_CONTENT = '.popover-body';\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\nclass Popover extends Tooltip {\n  // Getters\n  static get Default() {\n    return Default$2;\n  }\n\n  static get NAME() {\n    return NAME$3;\n  }\n\n  static get Event() {\n    return Event$1;\n  }\n\n  static get DefaultType() {\n    return DefaultType$2;\n  } // Overrides\n\n\n  isWithContent() {\n    return this.getTitle() || this._getContent();\n  }\n\n  setContent(tip) {\n    this._sanitizeAndSetContent(tip, this.getTitle(), SELECTOR_TITLE);\n\n    this._sanitizeAndSetContent(tip, this._getContent(), SELECTOR_CONTENT);\n  } // Private\n\n\n  _getContent() {\n    return this._resolvePossibleFunction(this._config.content);\n  }\n\n  _getBasicClassPrefix() {\n    return CLASS_PREFIX;\n  } // Static\n\n\n  static jQueryInterface(config) {\n    return this.each(function () {\n      const data = Popover.getOrCreateInstance(this, config);\n\n      if (typeof config === 'string') {\n        if (typeof data[config] === 'undefined') {\n          throw new TypeError(`No method named \"${config}\"`);\n        }\n\n        data[config]();\n      }\n    });\n  }\n\n}\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n * add .Popover to jQuery only if jQuery is present\n */\n\n\ndefineJQueryPlugin(Popover);\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.1.3): scrollspy.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME$2 = 'scrollspy';\nconst DATA_KEY$2 = 'bs.scrollspy';\nconst EVENT_KEY$2 = `.${DATA_KEY$2}`;\nconst DATA_API_KEY$1 = '.data-api';\nconst Default$1 = {\n  offset: 10,\n  method: 'auto',\n  target: ''\n};\nconst DefaultType$1 = {\n  offset: 'number',\n  method: 'string',\n  target: '(string|element)'\n};\nconst EVENT_ACTIVATE = `activate${EVENT_KEY$2}`;\nconst EVENT_SCROLL = `scroll${EVENT_KEY$2}`;\nconst EVENT_LOAD_DATA_API = `load${EVENT_KEY$2}${DATA_API_KEY$1}`;\nconst CLASS_NAME_DROPDOWN_ITEM = 'dropdown-item';\nconst CLASS_NAME_ACTIVE$1 = 'active';\nconst SELECTOR_DATA_SPY = '[data-bs-spy=\"scroll\"]';\nconst SELECTOR_NAV_LIST_GROUP$1 = '.nav, .list-group';\nconst SELECTOR_NAV_LINKS = '.nav-link';\nconst SELECTOR_NAV_ITEMS = '.nav-item';\nconst SELECTOR_LIST_ITEMS = '.list-group-item';\nconst SELECTOR_LINK_ITEMS = `${SELECTOR_NAV_LINKS}, ${SELECTOR_LIST_ITEMS}, .${CLASS_NAME_DROPDOWN_ITEM}`;\nconst SELECTOR_DROPDOWN$1 = '.dropdown';\nconst SELECTOR_DROPDOWN_TOGGLE$1 = '.dropdown-toggle';\nconst METHOD_OFFSET = 'offset';\nconst METHOD_POSITION = 'position';\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\nclass ScrollSpy extends BaseComponent {\n  constructor(element, config) {\n    super(element);\n    this._scrollElement = this._element.tagName === 'BODY' ? window : this._element;\n    this._config = this._getConfig(config);\n    this._offsets = [];\n    this._targets = [];\n    this._activeTarget = null;\n    this._scrollHeight = 0;\n    EventHandler.on(this._scrollElement, EVENT_SCROLL, () => this._process());\n    this.refresh();\n\n    this._process();\n  } // Getters\n\n\n  static get Default() {\n    return Default$1;\n  }\n\n  static get NAME() {\n    return NAME$2;\n  } // Public\n\n\n  refresh() {\n    const autoMethod = this._scrollElement === this._scrollElement.window ? METHOD_OFFSET : METHOD_POSITION;\n    const offsetMethod = this._config.method === 'auto' ? autoMethod : this._config.method;\n    const offsetBase = offsetMethod === METHOD_POSITION ? this._getScrollTop() : 0;\n    this._offsets = [];\n    this._targets = [];\n    this._scrollHeight = this._getScrollHeight();\n    const targets = SelectorEngine.find(SELECTOR_LINK_ITEMS, this._config.target);\n    targets.map(element => {\n      const targetSelector = getSelectorFromElement(element);\n      const target = targetSelector ? SelectorEngine.findOne(targetSelector) : null;\n\n      if (target) {\n        const targetBCR = target.getBoundingClientRect();\n\n        if (targetBCR.width || targetBCR.height) {\n          return [Manipulator[offsetMethod](target).top + offsetBase, targetSelector];\n        }\n      }\n\n      return null;\n    }).filter(item => item).sort((a, b) => a[0] - b[0]).forEach(item => {\n      this._offsets.push(item[0]);\n\n      this._targets.push(item[1]);\n    });\n  }\n\n  dispose() {\n    EventHandler.off(this._scrollElement, EVENT_KEY$2);\n    super.dispose();\n  } // Private\n\n\n  _getConfig(config) {\n    config = { ...Default$1,\n      ...Manipulator.getDataAttributes(this._element),\n      ...(typeof config === 'object' && config ? config : {})\n    };\n    config.target = getElement(config.target) || document.documentElement;\n    typeCheckConfig(NAME$2, config, DefaultType$1);\n    return config;\n  }\n\n  _getScrollTop() {\n    return this._scrollElement === window ? this._scrollElement.pageYOffset : this._scrollElement.scrollTop;\n  }\n\n  _getScrollHeight() {\n    return this._scrollElement.scrollHeight || Math.max(document.body.scrollHeight, document.documentElement.scrollHeight);\n  }\n\n  _getOffsetHeight() {\n    return this._scrollElement === window ? window.innerHeight : this._scrollElement.getBoundingClientRect().height;\n  }\n\n  _process() {\n    const scrollTop = this._getScrollTop() + this._config.offset;\n\n    const scrollHeight = this._getScrollHeight();\n\n    const maxScroll = this._config.offset + scrollHeight - this._getOffsetHeight();\n\n    if (this._scrollHeight !== scrollHeight) {\n      this.refresh();\n    }\n\n    if (scrollTop >= maxScroll) {\n      const target = this._targets[this._targets.length - 1];\n\n      if (this._activeTarget !== target) {\n        this._activate(target);\n      }\n\n      return;\n    }\n\n    if (this._activeTarget && scrollTop < this._offsets[0] && this._offsets[0] > 0) {\n      this._activeTarget = null;\n\n      this._clear();\n\n      return;\n    }\n\n    for (let i = this._offsets.length; i--;) {\n      const isActiveTarget = this._activeTarget !== this._targets[i] && scrollTop >= this._offsets[i] && (typeof this._offsets[i + 1] === 'undefined' || scrollTop < this._offsets[i + 1]);\n\n      if (isActiveTarget) {\n        this._activate(this._targets[i]);\n      }\n    }\n  }\n\n  _activate(target) {\n    this._activeTarget = target;\n\n    this._clear();\n\n    const queries = SELECTOR_LINK_ITEMS.split(',').map(selector => `${selector}[data-bs-target=\"${target}\"],${selector}[href=\"${target}\"]`);\n    const link = SelectorEngine.findOne(queries.join(','), this._config.target);\n    link.classList.add(CLASS_NAME_ACTIVE$1);\n\n    if (link.classList.contains(CLASS_NAME_DROPDOWN_ITEM)) {\n      SelectorEngine.findOne(SELECTOR_DROPDOWN_TOGGLE$1, link.closest(SELECTOR_DROPDOWN$1)).classList.add(CLASS_NAME_ACTIVE$1);\n    } else {\n      SelectorEngine.parents(link, SELECTOR_NAV_LIST_GROUP$1).forEach(listGroup => {\n        // Set triggered links parents as active\n        // With both <ul> and <nav> markup a parent is the previous sibling of any nav ancestor\n        SelectorEngine.prev(listGroup, `${SELECTOR_NAV_LINKS}, ${SELECTOR_LIST_ITEMS}`).forEach(item => item.classList.add(CLASS_NAME_ACTIVE$1)); // Handle special case when .nav-link is inside .nav-item\n\n        SelectorEngine.prev(listGroup, SELECTOR_NAV_ITEMS).forEach(navItem => {\n          SelectorEngine.children(navItem, SELECTOR_NAV_LINKS).forEach(item => item.classList.add(CLASS_NAME_ACTIVE$1));\n        });\n      });\n    }\n\n    EventHandler.trigger(this._scrollElement, EVENT_ACTIVATE, {\n      relatedTarget: target\n    });\n  }\n\n  _clear() {\n    SelectorEngine.find(SELECTOR_LINK_ITEMS, this._config.target).filter(node => node.classList.contains(CLASS_NAME_ACTIVE$1)).forEach(node => node.classList.remove(CLASS_NAME_ACTIVE$1));\n  } // Static\n\n\n  static jQueryInterface(config) {\n    return this.each(function () {\n      const data = ScrollSpy.getOrCreateInstance(this, config);\n\n      if (typeof config !== 'string') {\n        return;\n      }\n\n      if (typeof data[config] === 'undefined') {\n        throw new TypeError(`No method named \"${config}\"`);\n      }\n\n      data[config]();\n    });\n  }\n\n}\n/**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\n\nEventHandler.on(window, EVENT_LOAD_DATA_API, () => {\n  SelectorEngine.find(SELECTOR_DATA_SPY).forEach(spy => new ScrollSpy(spy));\n});\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n * add .ScrollSpy to jQuery only if jQuery is present\n */\n\ndefineJQueryPlugin(ScrollSpy);\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.1.3): tab.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME$1 = 'tab';\nconst DATA_KEY$1 = 'bs.tab';\nconst EVENT_KEY$1 = `.${DATA_KEY$1}`;\nconst DATA_API_KEY = '.data-api';\nconst EVENT_HIDE$1 = `hide${EVENT_KEY$1}`;\nconst EVENT_HIDDEN$1 = `hidden${EVENT_KEY$1}`;\nconst EVENT_SHOW$1 = `show${EVENT_KEY$1}`;\nconst EVENT_SHOWN$1 = `shown${EVENT_KEY$1}`;\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY$1}${DATA_API_KEY}`;\nconst CLASS_NAME_DROPDOWN_MENU = 'dropdown-menu';\nconst CLASS_NAME_ACTIVE = 'active';\nconst CLASS_NAME_FADE$1 = 'fade';\nconst CLASS_NAME_SHOW$1 = 'show';\nconst SELECTOR_DROPDOWN = '.dropdown';\nconst SELECTOR_NAV_LIST_GROUP = '.nav, .list-group';\nconst SELECTOR_ACTIVE = '.active';\nconst SELECTOR_ACTIVE_UL = ':scope > li > .active';\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"tab\"], [data-bs-toggle=\"pill\"], [data-bs-toggle=\"list\"]';\nconst SELECTOR_DROPDOWN_TOGGLE = '.dropdown-toggle';\nconst SELECTOR_DROPDOWN_ACTIVE_CHILD = ':scope > .dropdown-menu .active';\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\nclass Tab extends BaseComponent {\n  // Getters\n  static get NAME() {\n    return NAME$1;\n  } // Public\n\n\n  show() {\n    if (this._element.parentNode && this._element.parentNode.nodeType === Node.ELEMENT_NODE && this._element.classList.contains(CLASS_NAME_ACTIVE)) {\n      return;\n    }\n\n    let previous;\n    const target = getElementFromSelector(this._element);\n\n    const listElement = this._element.closest(SELECTOR_NAV_LIST_GROUP);\n\n    if (listElement) {\n      const itemSelector = listElement.nodeName === 'UL' || listElement.nodeName === 'OL' ? SELECTOR_ACTIVE_UL : SELECTOR_ACTIVE;\n      previous = SelectorEngine.find(itemSelector, listElement);\n      previous = previous[previous.length - 1];\n    }\n\n    const hideEvent = previous ? EventHandler.trigger(previous, EVENT_HIDE$1, {\n      relatedTarget: this._element\n    }) : null;\n    const showEvent = EventHandler.trigger(this._element, EVENT_SHOW$1, {\n      relatedTarget: previous\n    });\n\n    if (showEvent.defaultPrevented || hideEvent !== null && hideEvent.defaultPrevented) {\n      return;\n    }\n\n    this._activate(this._element, listElement);\n\n    const complete = () => {\n      EventHandler.trigger(previous, EVENT_HIDDEN$1, {\n        relatedTarget: this._element\n      });\n      EventHandler.trigger(this._element, EVENT_SHOWN$1, {\n        relatedTarget: previous\n      });\n    };\n\n    if (target) {\n      this._activate(target, target.parentNode, complete);\n    } else {\n      complete();\n    }\n  } // Private\n\n\n  _activate(element, container, callback) {\n    const activeElements = container && (container.nodeName === 'UL' || container.nodeName === 'OL') ? SelectorEngine.find(SELECTOR_ACTIVE_UL, container) : SelectorEngine.children(container, SELECTOR_ACTIVE);\n    const active = activeElements[0];\n    const isTransitioning = callback && active && active.classList.contains(CLASS_NAME_FADE$1);\n\n    const complete = () => this._transitionComplete(element, active, callback);\n\n    if (active && isTransitioning) {\n      active.classList.remove(CLASS_NAME_SHOW$1);\n\n      this._queueCallback(complete, element, true);\n    } else {\n      complete();\n    }\n  }\n\n  _transitionComplete(element, active, callback) {\n    if (active) {\n      active.classList.remove(CLASS_NAME_ACTIVE);\n      const dropdownChild = SelectorEngine.findOne(SELECTOR_DROPDOWN_ACTIVE_CHILD, active.parentNode);\n\n      if (dropdownChild) {\n        dropdownChild.classList.remove(CLASS_NAME_ACTIVE);\n      }\n\n      if (active.getAttribute('role') === 'tab') {\n        active.setAttribute('aria-selected', false);\n      }\n    }\n\n    element.classList.add(CLASS_NAME_ACTIVE);\n\n    if (element.getAttribute('role') === 'tab') {\n      element.setAttribute('aria-selected', true);\n    }\n\n    reflow(element);\n\n    if (element.classList.contains(CLASS_NAME_FADE$1)) {\n      element.classList.add(CLASS_NAME_SHOW$1);\n    }\n\n    let parent = element.parentNode;\n\n    if (parent && parent.nodeName === 'LI') {\n      parent = parent.parentNode;\n    }\n\n    if (parent && parent.classList.contains(CLASS_NAME_DROPDOWN_MENU)) {\n      const dropdownElement = element.closest(SELECTOR_DROPDOWN);\n\n      if (dropdownElement) {\n        SelectorEngine.find(SELECTOR_DROPDOWN_TOGGLE, dropdownElement).forEach(dropdown => dropdown.classList.add(CLASS_NAME_ACTIVE));\n      }\n\n      element.setAttribute('aria-expanded', true);\n    }\n\n    if (callback) {\n      callback();\n    }\n  } // Static\n\n\n  static jQueryInterface(config) {\n    return this.each(function () {\n      const data = Tab.getOrCreateInstance(this);\n\n      if (typeof config === 'string') {\n        if (typeof data[config] === 'undefined') {\n          throw new TypeError(`No method named \"${config}\"`);\n        }\n\n        data[config]();\n      }\n    });\n  }\n\n}\n/**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\n\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {\n  if (['A', 'AREA'].includes(this.tagName)) {\n    event.preventDefault();\n  }\n\n  if (isDisabled(this)) {\n    return;\n  }\n\n  const data = Tab.getOrCreateInstance(this);\n  data.show();\n});\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n * add .Tab to jQuery only if jQuery is present\n */\n\ndefineJQueryPlugin(Tab);\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.1.3): toast.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'toast';\nconst DATA_KEY = 'bs.toast';\nconst EVENT_KEY = `.${DATA_KEY}`;\nconst EVENT_MOUSEOVER = `mouseover${EVENT_KEY}`;\nconst EVENT_MOUSEOUT = `mouseout${EVENT_KEY}`;\nconst EVENT_FOCUSIN = `focusin${EVENT_KEY}`;\nconst EVENT_FOCUSOUT = `focusout${EVENT_KEY}`;\nconst EVENT_HIDE = `hide${EVENT_KEY}`;\nconst EVENT_HIDDEN = `hidden${EVENT_KEY}`;\nconst EVENT_SHOW = `show${EVENT_KEY}`;\nconst EVENT_SHOWN = `shown${EVENT_KEY}`;\nconst CLASS_NAME_FADE = 'fade';\nconst CLASS_NAME_HIDE = 'hide'; // @deprecated - kept here only for backwards compatibility\n\nconst CLASS_NAME_SHOW = 'show';\nconst CLASS_NAME_SHOWING = 'showing';\nconst DefaultType = {\n  animation: 'boolean',\n  autohide: 'boolean',\n  delay: 'number'\n};\nconst Default = {\n  animation: true,\n  autohide: true,\n  delay: 5000\n};\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\nclass Toast extends BaseComponent {\n  constructor(element, config) {\n    super(element);\n    this._config = this._getConfig(config);\n    this._timeout = null;\n    this._hasMouseInteraction = false;\n    this._hasKeyboardInteraction = false;\n\n    this._setListeners();\n  } // Getters\n\n\n  static get DefaultType() {\n    return DefaultType;\n  }\n\n  static get Default() {\n    return Default;\n  }\n\n  static get NAME() {\n    return NAME;\n  } // Public\n\n\n  show() {\n    const showEvent = EventHandler.trigger(this._element, EVENT_SHOW);\n\n    if (showEvent.defaultPrevented) {\n      return;\n    }\n\n    this._clearTimeout();\n\n    if (this._config.animation) {\n      this._element.classList.add(CLASS_NAME_FADE);\n    }\n\n    const complete = () => {\n      this._element.classList.remove(CLASS_NAME_SHOWING);\n\n      EventHandler.trigger(this._element, EVENT_SHOWN);\n\n      this._maybeScheduleHide();\n    };\n\n    this._element.classList.remove(CLASS_NAME_HIDE); // @deprecated\n\n\n    reflow(this._element);\n\n    this._element.classList.add(CLASS_NAME_SHOW);\n\n    this._element.classList.add(CLASS_NAME_SHOWING);\n\n    this._queueCallback(complete, this._element, this._config.animation);\n  }\n\n  hide() {\n    if (!this._element.classList.contains(CLASS_NAME_SHOW)) {\n      return;\n    }\n\n    const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE);\n\n    if (hideEvent.defaultPrevented) {\n      return;\n    }\n\n    const complete = () => {\n      this._element.classList.add(CLASS_NAME_HIDE); // @deprecated\n\n\n      this._element.classList.remove(CLASS_NAME_SHOWING);\n\n      this._element.classList.remove(CLASS_NAME_SHOW);\n\n      EventHandler.trigger(this._element, EVENT_HIDDEN);\n    };\n\n    this._element.classList.add(CLASS_NAME_SHOWING);\n\n    this._queueCallback(complete, this._element, this._config.animation);\n  }\n\n  dispose() {\n    this._clearTimeout();\n\n    if (this._element.classList.contains(CLASS_NAME_SHOW)) {\n      this._element.classList.remove(CLASS_NAME_SHOW);\n    }\n\n    super.dispose();\n  } // Private\n\n\n  _getConfig(config) {\n    config = { ...Default,\n      ...Manipulator.getDataAttributes(this._element),\n      ...(typeof config === 'object' && config ? config : {})\n    };\n    typeCheckConfig(NAME, config, this.constructor.DefaultType);\n    return config;\n  }\n\n  _maybeScheduleHide() {\n    if (!this._config.autohide) {\n      return;\n    }\n\n    if (this._hasMouseInteraction || this._hasKeyboardInteraction) {\n      return;\n    }\n\n    this._timeout = setTimeout(() => {\n      this.hide();\n    }, this._config.delay);\n  }\n\n  _onInteraction(event, isInteracting) {\n    switch (event.type) {\n      case 'mouseover':\n      case 'mouseout':\n        this._hasMouseInteraction = isInteracting;\n        break;\n\n      case 'focusin':\n      case 'focusout':\n        this._hasKeyboardInteraction = isInteracting;\n        break;\n    }\n\n    if (isInteracting) {\n      this._clearTimeout();\n\n      return;\n    }\n\n    const nextElement = event.relatedTarget;\n\n    if (this._element === nextElement || this._element.contains(nextElement)) {\n      return;\n    }\n\n    this._maybeScheduleHide();\n  }\n\n  _setListeners() {\n    EventHandler.on(this._element, EVENT_MOUSEOVER, event => this._onInteraction(event, true));\n    EventHandler.on(this._element, EVENT_MOUSEOUT, event => this._onInteraction(event, false));\n    EventHandler.on(this._element, EVENT_FOCUSIN, event => this._onInteraction(event, true));\n    EventHandler.on(this._element, EVENT_FOCUSOUT, event => this._onInteraction(event, false));\n  }\n\n  _clearTimeout() {\n    clearTimeout(this._timeout);\n    this._timeout = null;\n  } // Static\n\n\n  static jQueryInterface(config) {\n    return this.each(function () {\n      const data = Toast.getOrCreateInstance(this, config);\n\n      if (typeof config === 'string') {\n        if (typeof data[config] === 'undefined') {\n          throw new TypeError(`No method named \"${config}\"`);\n        }\n\n        data[config](this);\n      }\n    });\n  }\n\n}\n\nenableDismissTrigger(Toast);\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n * add .Toast to jQuery only if jQuery is present\n */\n\ndefineJQueryPlugin(Toast);\n\nexport { Alert, Button, Carousel, Collapse, Dropdown, Modal, Offcanvas, Popover, ScrollSpy, Tab, Toast, Tooltip };\n//# sourceMappingURL=bootstrap.esm.js.map\n"
  },
  {
    "path": "application/public/bootstrap/js/bootstrap.js",
    "content": "/*!\n  * Bootstrap v5.1.3 (https://getbootstrap.com/)\n  * Copyright 2011-2021 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)\n  * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n  */\n(function (global, factory) {\n  typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory(require('@popperjs/core')) :\n  typeof define === 'function' && define.amd ? define(['@popperjs/core'], factory) :\n  (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.bootstrap = factory(global.Popper));\n})(this, (function (Popper) { 'use strict';\n\n  function _interopNamespace(e) {\n    if (e && e.__esModule) return e;\n    const n = Object.create(null);\n    if (e) {\n      for (const k in e) {\n        if (k !== 'default') {\n          const d = Object.getOwnPropertyDescriptor(e, k);\n          Object.defineProperty(n, k, d.get ? d : {\n            enumerable: true,\n            get: () => e[k]\n          });\n        }\n      }\n    }\n    n.default = e;\n    return Object.freeze(n);\n  }\n\n  const Popper__namespace = /*#__PURE__*/_interopNamespace(Popper);\n\n  /**\n   * --------------------------------------------------------------------------\n   * Bootstrap (v5.1.3): util/index.js\n   * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n   * --------------------------------------------------------------------------\n   */\n  const MAX_UID = 1000000;\n  const MILLISECONDS_MULTIPLIER = 1000;\n  const TRANSITION_END = 'transitionend'; // Shoutout AngusCroll (https://goo.gl/pxwQGp)\n\n  const toType = obj => {\n    if (obj === null || obj === undefined) {\n      return `${obj}`;\n    }\n\n    return {}.toString.call(obj).match(/\\s([a-z]+)/i)[1].toLowerCase();\n  };\n  /**\n   * --------------------------------------------------------------------------\n   * Public Util Api\n   * --------------------------------------------------------------------------\n   */\n\n\n  const getUID = prefix => {\n    do {\n      prefix += Math.floor(Math.random() * MAX_UID);\n    } while (document.getElementById(prefix));\n\n    return prefix;\n  };\n\n  const getSelector = element => {\n    let selector = element.getAttribute('data-bs-target');\n\n    if (!selector || selector === '#') {\n      let hrefAttr = element.getAttribute('href'); // The only valid content that could double as a selector are IDs or classes,\n      // so everything starting with `#` or `.`. If a \"real\" URL is used as the selector,\n      // `document.querySelector` will rightfully complain it is invalid.\n      // See https://github.com/twbs/bootstrap/issues/32273\n\n      if (!hrefAttr || !hrefAttr.includes('#') && !hrefAttr.startsWith('.')) {\n        return null;\n      } // Just in case some CMS puts out a full URL with the anchor appended\n\n\n      if (hrefAttr.includes('#') && !hrefAttr.startsWith('#')) {\n        hrefAttr = `#${hrefAttr.split('#')[1]}`;\n      }\n\n      selector = hrefAttr && hrefAttr !== '#' ? hrefAttr.trim() : null;\n    }\n\n    return selector;\n  };\n\n  const getSelectorFromElement = element => {\n    const selector = getSelector(element);\n\n    if (selector) {\n      return document.querySelector(selector) ? selector : null;\n    }\n\n    return null;\n  };\n\n  const getElementFromSelector = element => {\n    const selector = getSelector(element);\n    return selector ? document.querySelector(selector) : null;\n  };\n\n  const getTransitionDurationFromElement = element => {\n    if (!element) {\n      return 0;\n    } // Get transition-duration of the element\n\n\n    let {\n      transitionDuration,\n      transitionDelay\n    } = window.getComputedStyle(element);\n    const floatTransitionDuration = Number.parseFloat(transitionDuration);\n    const floatTransitionDelay = Number.parseFloat(transitionDelay); // Return 0 if element or transition duration is not found\n\n    if (!floatTransitionDuration && !floatTransitionDelay) {\n      return 0;\n    } // If multiple durations are defined, take the first\n\n\n    transitionDuration = transitionDuration.split(',')[0];\n    transitionDelay = transitionDelay.split(',')[0];\n    return (Number.parseFloat(transitionDuration) + Number.parseFloat(transitionDelay)) * MILLISECONDS_MULTIPLIER;\n  };\n\n  const triggerTransitionEnd = element => {\n    element.dispatchEvent(new Event(TRANSITION_END));\n  };\n\n  const isElement = obj => {\n    if (!obj || typeof obj !== 'object') {\n      return false;\n    }\n\n    if (typeof obj.jquery !== 'undefined') {\n      obj = obj[0];\n    }\n\n    return typeof obj.nodeType !== 'undefined';\n  };\n\n  const getElement = obj => {\n    if (isElement(obj)) {\n      // it's a jQuery object or a node element\n      return obj.jquery ? obj[0] : obj;\n    }\n\n    if (typeof obj === 'string' && obj.length > 0) {\n      return document.querySelector(obj);\n    }\n\n    return null;\n  };\n\n  const typeCheckConfig = (componentName, config, configTypes) => {\n    Object.keys(configTypes).forEach(property => {\n      const expectedTypes = configTypes[property];\n      const value = config[property];\n      const valueType = value && isElement(value) ? 'element' : toType(value);\n\n      if (!new RegExp(expectedTypes).test(valueType)) {\n        throw new TypeError(`${componentName.toUpperCase()}: Option \"${property}\" provided type \"${valueType}\" but expected type \"${expectedTypes}\".`);\n      }\n    });\n  };\n\n  const isVisible = element => {\n    if (!isElement(element) || element.getClientRects().length === 0) {\n      return false;\n    }\n\n    return getComputedStyle(element).getPropertyValue('visibility') === 'visible';\n  };\n\n  const isDisabled = element => {\n    if (!element || element.nodeType !== Node.ELEMENT_NODE) {\n      return true;\n    }\n\n    if (element.classList.contains('disabled')) {\n      return true;\n    }\n\n    if (typeof element.disabled !== 'undefined') {\n      return element.disabled;\n    }\n\n    return element.hasAttribute('disabled') && element.getAttribute('disabled') !== 'false';\n  };\n\n  const findShadowRoot = element => {\n    if (!document.documentElement.attachShadow) {\n      return null;\n    } // Can find the shadow root otherwise it'll return the document\n\n\n    if (typeof element.getRootNode === 'function') {\n      const root = element.getRootNode();\n      return root instanceof ShadowRoot ? root : null;\n    }\n\n    if (element instanceof ShadowRoot) {\n      return element;\n    } // when we don't find a shadow root\n\n\n    if (!element.parentNode) {\n      return null;\n    }\n\n    return findShadowRoot(element.parentNode);\n  };\n\n  const noop = () => {};\n  /**\n   * Trick to restart an element's animation\n   *\n   * @param {HTMLElement} element\n   * @return void\n   *\n   * @see https://www.charistheo.io/blog/2021/02/restart-a-css-animation-with-javascript/#restarting-a-css-animation\n   */\n\n\n  const reflow = element => {\n    // eslint-disable-next-line no-unused-expressions\n    element.offsetHeight;\n  };\n\n  const getjQuery = () => {\n    const {\n      jQuery\n    } = window;\n\n    if (jQuery && !document.body.hasAttribute('data-bs-no-jquery')) {\n      return jQuery;\n    }\n\n    return null;\n  };\n\n  const DOMContentLoadedCallbacks = [];\n\n  const onDOMContentLoaded = callback => {\n    if (document.readyState === 'loading') {\n      // add listener on the first call when the document is in loading state\n      if (!DOMContentLoadedCallbacks.length) {\n        document.addEventListener('DOMContentLoaded', () => {\n          DOMContentLoadedCallbacks.forEach(callback => callback());\n        });\n      }\n\n      DOMContentLoadedCallbacks.push(callback);\n    } else {\n      callback();\n    }\n  };\n\n  const isRTL = () => document.documentElement.dir === 'rtl';\n\n  const defineJQueryPlugin = plugin => {\n    onDOMContentLoaded(() => {\n      const $ = getjQuery();\n      /* istanbul ignore if */\n\n      if ($) {\n        const name = plugin.NAME;\n        const JQUERY_NO_CONFLICT = $.fn[name];\n        $.fn[name] = plugin.jQueryInterface;\n        $.fn[name].Constructor = plugin;\n\n        $.fn[name].noConflict = () => {\n          $.fn[name] = JQUERY_NO_CONFLICT;\n          return plugin.jQueryInterface;\n        };\n      }\n    });\n  };\n\n  const execute = callback => {\n    if (typeof callback === 'function') {\n      callback();\n    }\n  };\n\n  const executeAfterTransition = (callback, transitionElement, waitForTransition = true) => {\n    if (!waitForTransition) {\n      execute(callback);\n      return;\n    }\n\n    const durationPadding = 5;\n    const emulatedDuration = getTransitionDurationFromElement(transitionElement) + durationPadding;\n    let called = false;\n\n    const handler = ({\n      target\n    }) => {\n      if (target !== transitionElement) {\n        return;\n      }\n\n      called = true;\n      transitionElement.removeEventListener(TRANSITION_END, handler);\n      execute(callback);\n    };\n\n    transitionElement.addEventListener(TRANSITION_END, handler);\n    setTimeout(() => {\n      if (!called) {\n        triggerTransitionEnd(transitionElement);\n      }\n    }, emulatedDuration);\n  };\n  /**\n   * Return the previous/next element of a list.\n   *\n   * @param {array} list    The list of elements\n   * @param activeElement   The active element\n   * @param shouldGetNext   Choose to get next or previous element\n   * @param isCycleAllowed\n   * @return {Element|elem} The proper element\n   */\n\n\n  const getNextActiveElement = (list, activeElement, shouldGetNext, isCycleAllowed) => {\n    let index = list.indexOf(activeElement); // if the element does not exist in the list return an element depending on the direction and if cycle is allowed\n\n    if (index === -1) {\n      return list[!shouldGetNext && isCycleAllowed ? list.length - 1 : 0];\n    }\n\n    const listLength = list.length;\n    index += shouldGetNext ? 1 : -1;\n\n    if (isCycleAllowed) {\n      index = (index + listLength) % listLength;\n    }\n\n    return list[Math.max(0, Math.min(index, listLength - 1))];\n  };\n\n  /**\n   * --------------------------------------------------------------------------\n   * Bootstrap (v5.1.3): dom/event-handler.js\n   * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n   * --------------------------------------------------------------------------\n   */\n  /**\n   * ------------------------------------------------------------------------\n   * Constants\n   * ------------------------------------------------------------------------\n   */\n\n  const namespaceRegex = /[^.]*(?=\\..*)\\.|.*/;\n  const stripNameRegex = /\\..*/;\n  const stripUidRegex = /::\\d+$/;\n  const eventRegistry = {}; // Events storage\n\n  let uidEvent = 1;\n  const customEvents = {\n    mouseenter: 'mouseover',\n    mouseleave: 'mouseout'\n  };\n  const customEventsRegex = /^(mouseenter|mouseleave)/i;\n  const nativeEvents = new Set(['click', 'dblclick', 'mouseup', 'mousedown', 'contextmenu', 'mousewheel', 'DOMMouseScroll', 'mouseover', 'mouseout', 'mousemove', 'selectstart', 'selectend', 'keydown', 'keypress', 'keyup', 'orientationchange', 'touchstart', 'touchmove', 'touchend', 'touchcancel', 'pointerdown', 'pointermove', 'pointerup', 'pointerleave', 'pointercancel', 'gesturestart', 'gesturechange', 'gestureend', 'focus', 'blur', 'change', 'reset', 'select', 'submit', 'focusin', 'focusout', 'load', 'unload', 'beforeunload', 'resize', 'move', 'DOMContentLoaded', 'readystatechange', 'error', 'abort', 'scroll']);\n  /**\n   * ------------------------------------------------------------------------\n   * Private methods\n   * ------------------------------------------------------------------------\n   */\n\n  function getUidEvent(element, uid) {\n    return uid && `${uid}::${uidEvent++}` || element.uidEvent || uidEvent++;\n  }\n\n  function getEvent(element) {\n    const uid = getUidEvent(element);\n    element.uidEvent = uid;\n    eventRegistry[uid] = eventRegistry[uid] || {};\n    return eventRegistry[uid];\n  }\n\n  function bootstrapHandler(element, fn) {\n    return function handler(event) {\n      event.delegateTarget = element;\n\n      if (handler.oneOff) {\n        EventHandler.off(element, event.type, fn);\n      }\n\n      return fn.apply(element, [event]);\n    };\n  }\n\n  function bootstrapDelegationHandler(element, selector, fn) {\n    return function handler(event) {\n      const domElements = element.querySelectorAll(selector);\n\n      for (let {\n        target\n      } = event; target && target !== this; target = target.parentNode) {\n        for (let i = domElements.length; i--;) {\n          if (domElements[i] === target) {\n            event.delegateTarget = target;\n\n            if (handler.oneOff) {\n              EventHandler.off(element, event.type, selector, fn);\n            }\n\n            return fn.apply(target, [event]);\n          }\n        }\n      } // To please ESLint\n\n\n      return null;\n    };\n  }\n\n  function findHandler(events, handler, delegationSelector = null) {\n    const uidEventList = Object.keys(events);\n\n    for (let i = 0, len = uidEventList.length; i < len; i++) {\n      const event = events[uidEventList[i]];\n\n      if (event.originalHandler === handler && event.delegationSelector === delegationSelector) {\n        return event;\n      }\n    }\n\n    return null;\n  }\n\n  function normalizeParams(originalTypeEvent, handler, delegationFn) {\n    const delegation = typeof handler === 'string';\n    const originalHandler = delegation ? delegationFn : handler;\n    let typeEvent = getTypeEvent(originalTypeEvent);\n    const isNative = nativeEvents.has(typeEvent);\n\n    if (!isNative) {\n      typeEvent = originalTypeEvent;\n    }\n\n    return [delegation, originalHandler, typeEvent];\n  }\n\n  function addHandler(element, originalTypeEvent, handler, delegationFn, oneOff) {\n    if (typeof originalTypeEvent !== 'string' || !element) {\n      return;\n    }\n\n    if (!handler) {\n      handler = delegationFn;\n      delegationFn = null;\n    } // in case of mouseenter or mouseleave wrap the handler within a function that checks for its DOM position\n    // this prevents the handler from being dispatched the same way as mouseover or mouseout does\n\n\n    if (customEventsRegex.test(originalTypeEvent)) {\n      const wrapFn = fn => {\n        return function (event) {\n          if (!event.relatedTarget || event.relatedTarget !== event.delegateTarget && !event.delegateTarget.contains(event.relatedTarget)) {\n            return fn.call(this, event);\n          }\n        };\n      };\n\n      if (delegationFn) {\n        delegationFn = wrapFn(delegationFn);\n      } else {\n        handler = wrapFn(handler);\n      }\n    }\n\n    const [delegation, originalHandler, typeEvent] = normalizeParams(originalTypeEvent, handler, delegationFn);\n    const events = getEvent(element);\n    const handlers = events[typeEvent] || (events[typeEvent] = {});\n    const previousFn = findHandler(handlers, originalHandler, delegation ? handler : null);\n\n    if (previousFn) {\n      previousFn.oneOff = previousFn.oneOff && oneOff;\n      return;\n    }\n\n    const uid = getUidEvent(originalHandler, originalTypeEvent.replace(namespaceRegex, ''));\n    const fn = delegation ? bootstrapDelegationHandler(element, handler, delegationFn) : bootstrapHandler(element, handler);\n    fn.delegationSelector = delegation ? handler : null;\n    fn.originalHandler = originalHandler;\n    fn.oneOff = oneOff;\n    fn.uidEvent = uid;\n    handlers[uid] = fn;\n    element.addEventListener(typeEvent, fn, delegation);\n  }\n\n  function removeHandler(element, events, typeEvent, handler, delegationSelector) {\n    const fn = findHandler(events[typeEvent], handler, delegationSelector);\n\n    if (!fn) {\n      return;\n    }\n\n    element.removeEventListener(typeEvent, fn, Boolean(delegationSelector));\n    delete events[typeEvent][fn.uidEvent];\n  }\n\n  function removeNamespacedHandlers(element, events, typeEvent, namespace) {\n    const storeElementEvent = events[typeEvent] || {};\n    Object.keys(storeElementEvent).forEach(handlerKey => {\n      if (handlerKey.includes(namespace)) {\n        const event = storeElementEvent[handlerKey];\n        removeHandler(element, events, typeEvent, event.originalHandler, event.delegationSelector);\n      }\n    });\n  }\n\n  function getTypeEvent(event) {\n    // allow to get the native events from namespaced events ('click.bs.button' --> 'click')\n    event = event.replace(stripNameRegex, '');\n    return customEvents[event] || event;\n  }\n\n  const EventHandler = {\n    on(element, event, handler, delegationFn) {\n      addHandler(element, event, handler, delegationFn, false);\n    },\n\n    one(element, event, handler, delegationFn) {\n      addHandler(element, event, handler, delegationFn, true);\n    },\n\n    off(element, originalTypeEvent, handler, delegationFn) {\n      if (typeof originalTypeEvent !== 'string' || !element) {\n        return;\n      }\n\n      const [delegation, originalHandler, typeEvent] = normalizeParams(originalTypeEvent, handler, delegationFn);\n      const inNamespace = typeEvent !== originalTypeEvent;\n      const events = getEvent(element);\n      const isNamespace = originalTypeEvent.startsWith('.');\n\n      if (typeof originalHandler !== 'undefined') {\n        // Simplest case: handler is passed, remove that listener ONLY.\n        if (!events || !events[typeEvent]) {\n          return;\n        }\n\n        removeHandler(element, events, typeEvent, originalHandler, delegation ? handler : null);\n        return;\n      }\n\n      if (isNamespace) {\n        Object.keys(events).forEach(elementEvent => {\n          removeNamespacedHandlers(element, events, elementEvent, originalTypeEvent.slice(1));\n        });\n      }\n\n      const storeElementEvent = events[typeEvent] || {};\n      Object.keys(storeElementEvent).forEach(keyHandlers => {\n        const handlerKey = keyHandlers.replace(stripUidRegex, '');\n\n        if (!inNamespace || originalTypeEvent.includes(handlerKey)) {\n          const event = storeElementEvent[keyHandlers];\n          removeHandler(element, events, typeEvent, event.originalHandler, event.delegationSelector);\n        }\n      });\n    },\n\n    trigger(element, event, args) {\n      if (typeof event !== 'string' || !element) {\n        return null;\n      }\n\n      const $ = getjQuery();\n      const typeEvent = getTypeEvent(event);\n      const inNamespace = event !== typeEvent;\n      const isNative = nativeEvents.has(typeEvent);\n      let jQueryEvent;\n      let bubbles = true;\n      let nativeDispatch = true;\n      let defaultPrevented = false;\n      let evt = null;\n\n      if (inNamespace && $) {\n        jQueryEvent = $.Event(event, args);\n        $(element).trigger(jQueryEvent);\n        bubbles = !jQueryEvent.isPropagationStopped();\n        nativeDispatch = !jQueryEvent.isImmediatePropagationStopped();\n        defaultPrevented = jQueryEvent.isDefaultPrevented();\n      }\n\n      if (isNative) {\n        evt = document.createEvent('HTMLEvents');\n        evt.initEvent(typeEvent, bubbles, true);\n      } else {\n        evt = new CustomEvent(event, {\n          bubbles,\n          cancelable: true\n        });\n      } // merge custom information in our event\n\n\n      if (typeof args !== 'undefined') {\n        Object.keys(args).forEach(key => {\n          Object.defineProperty(evt, key, {\n            get() {\n              return args[key];\n            }\n\n          });\n        });\n      }\n\n      if (defaultPrevented) {\n        evt.preventDefault();\n      }\n\n      if (nativeDispatch) {\n        element.dispatchEvent(evt);\n      }\n\n      if (evt.defaultPrevented && typeof jQueryEvent !== 'undefined') {\n        jQueryEvent.preventDefault();\n      }\n\n      return evt;\n    }\n\n  };\n\n  /**\n   * --------------------------------------------------------------------------\n   * Bootstrap (v5.1.3): dom/data.js\n   * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n   * --------------------------------------------------------------------------\n   */\n\n  /**\n   * ------------------------------------------------------------------------\n   * Constants\n   * ------------------------------------------------------------------------\n   */\n  const elementMap = new Map();\n  const Data = {\n    set(element, key, instance) {\n      if (!elementMap.has(element)) {\n        elementMap.set(element, new Map());\n      }\n\n      const instanceMap = elementMap.get(element); // make it clear we only want one instance per element\n      // can be removed later when multiple key/instances are fine to be used\n\n      if (!instanceMap.has(key) && instanceMap.size !== 0) {\n        // eslint-disable-next-line no-console\n        console.error(`Bootstrap doesn't allow more than one instance per element. Bound instance: ${Array.from(instanceMap.keys())[0]}.`);\n        return;\n      }\n\n      instanceMap.set(key, instance);\n    },\n\n    get(element, key) {\n      if (elementMap.has(element)) {\n        return elementMap.get(element).get(key) || null;\n      }\n\n      return null;\n    },\n\n    remove(element, key) {\n      if (!elementMap.has(element)) {\n        return;\n      }\n\n      const instanceMap = elementMap.get(element);\n      instanceMap.delete(key); // free up element references if there are no instances left for an element\n\n      if (instanceMap.size === 0) {\n        elementMap.delete(element);\n      }\n    }\n\n  };\n\n  /**\n   * --------------------------------------------------------------------------\n   * Bootstrap (v5.1.3): base-component.js\n   * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n   * --------------------------------------------------------------------------\n   */\n  /**\n   * ------------------------------------------------------------------------\n   * Constants\n   * ------------------------------------------------------------------------\n   */\n\n  const VERSION = '5.1.3';\n\n  class BaseComponent {\n    constructor(element) {\n      element = getElement(element);\n\n      if (!element) {\n        return;\n      }\n\n      this._element = element;\n      Data.set(this._element, this.constructor.DATA_KEY, this);\n    }\n\n    dispose() {\n      Data.remove(this._element, this.constructor.DATA_KEY);\n      EventHandler.off(this._element, this.constructor.EVENT_KEY);\n      Object.getOwnPropertyNames(this).forEach(propertyName => {\n        this[propertyName] = null;\n      });\n    }\n\n    _queueCallback(callback, element, isAnimated = true) {\n      executeAfterTransition(callback, element, isAnimated);\n    }\n    /** Static */\n\n\n    static getInstance(element) {\n      return Data.get(getElement(element), this.DATA_KEY);\n    }\n\n    static getOrCreateInstance(element, config = {}) {\n      return this.getInstance(element) || new this(element, typeof config === 'object' ? config : null);\n    }\n\n    static get VERSION() {\n      return VERSION;\n    }\n\n    static get NAME() {\n      throw new Error('You have to implement the static method \"NAME\", for each component!');\n    }\n\n    static get DATA_KEY() {\n      return `bs.${this.NAME}`;\n    }\n\n    static get EVENT_KEY() {\n      return `.${this.DATA_KEY}`;\n    }\n\n  }\n\n  /**\n   * --------------------------------------------------------------------------\n   * Bootstrap (v5.1.3): util/component-functions.js\n   * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n   * --------------------------------------------------------------------------\n   */\n\n  const enableDismissTrigger = (component, method = 'hide') => {\n    const clickEvent = `click.dismiss${component.EVENT_KEY}`;\n    const name = component.NAME;\n    EventHandler.on(document, clickEvent, `[data-bs-dismiss=\"${name}\"]`, function (event) {\n      if (['A', 'AREA'].includes(this.tagName)) {\n        event.preventDefault();\n      }\n\n      if (isDisabled(this)) {\n        return;\n      }\n\n      const target = getElementFromSelector(this) || this.closest(`.${name}`);\n      const instance = component.getOrCreateInstance(target); // Method argument is left, for Alert and only, as it doesn't implement the 'hide' method\n\n      instance[method]();\n    });\n  };\n\n  /**\n   * --------------------------------------------------------------------------\n   * Bootstrap (v5.1.3): alert.js\n   * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n   * --------------------------------------------------------------------------\n   */\n  /**\n   * ------------------------------------------------------------------------\n   * Constants\n   * ------------------------------------------------------------------------\n   */\n\n  const NAME$d = 'alert';\n  const DATA_KEY$c = 'bs.alert';\n  const EVENT_KEY$c = `.${DATA_KEY$c}`;\n  const EVENT_CLOSE = `close${EVENT_KEY$c}`;\n  const EVENT_CLOSED = `closed${EVENT_KEY$c}`;\n  const CLASS_NAME_FADE$5 = 'fade';\n  const CLASS_NAME_SHOW$8 = 'show';\n  /**\n   * ------------------------------------------------------------------------\n   * Class Definition\n   * ------------------------------------------------------------------------\n   */\n\n  class Alert extends BaseComponent {\n    // Getters\n    static get NAME() {\n      return NAME$d;\n    } // Public\n\n\n    close() {\n      const closeEvent = EventHandler.trigger(this._element, EVENT_CLOSE);\n\n      if (closeEvent.defaultPrevented) {\n        return;\n      }\n\n      this._element.classList.remove(CLASS_NAME_SHOW$8);\n\n      const isAnimated = this._element.classList.contains(CLASS_NAME_FADE$5);\n\n      this._queueCallback(() => this._destroyElement(), this._element, isAnimated);\n    } // Private\n\n\n    _destroyElement() {\n      this._element.remove();\n\n      EventHandler.trigger(this._element, EVENT_CLOSED);\n      this.dispose();\n    } // Static\n\n\n    static jQueryInterface(config) {\n      return this.each(function () {\n        const data = Alert.getOrCreateInstance(this);\n\n        if (typeof config !== 'string') {\n          return;\n        }\n\n        if (data[config] === undefined || config.startsWith('_') || config === 'constructor') {\n          throw new TypeError(`No method named \"${config}\"`);\n        }\n\n        data[config](this);\n      });\n    }\n\n  }\n  /**\n   * ------------------------------------------------------------------------\n   * Data Api implementation\n   * ------------------------------------------------------------------------\n   */\n\n\n  enableDismissTrigger(Alert, 'close');\n  /**\n   * ------------------------------------------------------------------------\n   * jQuery\n   * ------------------------------------------------------------------------\n   * add .Alert to jQuery only if jQuery is present\n   */\n\n  defineJQueryPlugin(Alert);\n\n  /**\n   * --------------------------------------------------------------------------\n   * Bootstrap (v5.1.3): button.js\n   * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n   * --------------------------------------------------------------------------\n   */\n  /**\n   * ------------------------------------------------------------------------\n   * Constants\n   * ------------------------------------------------------------------------\n   */\n\n  const NAME$c = 'button';\n  const DATA_KEY$b = 'bs.button';\n  const EVENT_KEY$b = `.${DATA_KEY$b}`;\n  const DATA_API_KEY$7 = '.data-api';\n  const CLASS_NAME_ACTIVE$3 = 'active';\n  const SELECTOR_DATA_TOGGLE$5 = '[data-bs-toggle=\"button\"]';\n  const EVENT_CLICK_DATA_API$6 = `click${EVENT_KEY$b}${DATA_API_KEY$7}`;\n  /**\n   * ------------------------------------------------------------------------\n   * Class Definition\n   * ------------------------------------------------------------------------\n   */\n\n  class Button extends BaseComponent {\n    // Getters\n    static get NAME() {\n      return NAME$c;\n    } // Public\n\n\n    toggle() {\n      // Toggle class and sync the `aria-pressed` attribute with the return value of the `.toggle()` method\n      this._element.setAttribute('aria-pressed', this._element.classList.toggle(CLASS_NAME_ACTIVE$3));\n    } // Static\n\n\n    static jQueryInterface(config) {\n      return this.each(function () {\n        const data = Button.getOrCreateInstance(this);\n\n        if (config === 'toggle') {\n          data[config]();\n        }\n      });\n    }\n\n  }\n  /**\n   * ------------------------------------------------------------------------\n   * Data Api implementation\n   * ------------------------------------------------------------------------\n   */\n\n\n  EventHandler.on(document, EVENT_CLICK_DATA_API$6, SELECTOR_DATA_TOGGLE$5, event => {\n    event.preventDefault();\n    const button = event.target.closest(SELECTOR_DATA_TOGGLE$5);\n    const data = Button.getOrCreateInstance(button);\n    data.toggle();\n  });\n  /**\n   * ------------------------------------------------------------------------\n   * jQuery\n   * ------------------------------------------------------------------------\n   * add .Button to jQuery only if jQuery is present\n   */\n\n  defineJQueryPlugin(Button);\n\n  /**\n   * --------------------------------------------------------------------------\n   * Bootstrap (v5.1.3): dom/manipulator.js\n   * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n   * --------------------------------------------------------------------------\n   */\n  function normalizeData(val) {\n    if (val === 'true') {\n      return true;\n    }\n\n    if (val === 'false') {\n      return false;\n    }\n\n    if (val === Number(val).toString()) {\n      return Number(val);\n    }\n\n    if (val === '' || val === 'null') {\n      return null;\n    }\n\n    return val;\n  }\n\n  function normalizeDataKey(key) {\n    return key.replace(/[A-Z]/g, chr => `-${chr.toLowerCase()}`);\n  }\n\n  const Manipulator = {\n    setDataAttribute(element, key, value) {\n      element.setAttribute(`data-bs-${normalizeDataKey(key)}`, value);\n    },\n\n    removeDataAttribute(element, key) {\n      element.removeAttribute(`data-bs-${normalizeDataKey(key)}`);\n    },\n\n    getDataAttributes(element) {\n      if (!element) {\n        return {};\n      }\n\n      const attributes = {};\n      Object.keys(element.dataset).filter(key => key.startsWith('bs')).forEach(key => {\n        let pureKey = key.replace(/^bs/, '');\n        pureKey = pureKey.charAt(0).toLowerCase() + pureKey.slice(1, pureKey.length);\n        attributes[pureKey] = normalizeData(element.dataset[key]);\n      });\n      return attributes;\n    },\n\n    getDataAttribute(element, key) {\n      return normalizeData(element.getAttribute(`data-bs-${normalizeDataKey(key)}`));\n    },\n\n    offset(element) {\n      const rect = element.getBoundingClientRect();\n      return {\n        top: rect.top + window.pageYOffset,\n        left: rect.left + window.pageXOffset\n      };\n    },\n\n    position(element) {\n      return {\n        top: element.offsetTop,\n        left: element.offsetLeft\n      };\n    }\n\n  };\n\n  /**\n   * --------------------------------------------------------------------------\n   * Bootstrap (v5.1.3): dom/selector-engine.js\n   * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n   * --------------------------------------------------------------------------\n   */\n  const NODE_TEXT = 3;\n  const SelectorEngine = {\n    find(selector, element = document.documentElement) {\n      return [].concat(...Element.prototype.querySelectorAll.call(element, selector));\n    },\n\n    findOne(selector, element = document.documentElement) {\n      return Element.prototype.querySelector.call(element, selector);\n    },\n\n    children(element, selector) {\n      return [].concat(...element.children).filter(child => child.matches(selector));\n    },\n\n    parents(element, selector) {\n      const parents = [];\n      let ancestor = element.parentNode;\n\n      while (ancestor && ancestor.nodeType === Node.ELEMENT_NODE && ancestor.nodeType !== NODE_TEXT) {\n        if (ancestor.matches(selector)) {\n          parents.push(ancestor);\n        }\n\n        ancestor = ancestor.parentNode;\n      }\n\n      return parents;\n    },\n\n    prev(element, selector) {\n      let previous = element.previousElementSibling;\n\n      while (previous) {\n        if (previous.matches(selector)) {\n          return [previous];\n        }\n\n        previous = previous.previousElementSibling;\n      }\n\n      return [];\n    },\n\n    next(element, selector) {\n      let next = element.nextElementSibling;\n\n      while (next) {\n        if (next.matches(selector)) {\n          return [next];\n        }\n\n        next = next.nextElementSibling;\n      }\n\n      return [];\n    },\n\n    focusableChildren(element) {\n      const focusables = ['a', 'button', 'input', 'textarea', 'select', 'details', '[tabindex]', '[contenteditable=\"true\"]'].map(selector => `${selector}:not([tabindex^=\"-\"])`).join(', ');\n      return this.find(focusables, element).filter(el => !isDisabled(el) && isVisible(el));\n    }\n\n  };\n\n  /**\n   * --------------------------------------------------------------------------\n   * Bootstrap (v5.1.3): carousel.js\n   * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n   * --------------------------------------------------------------------------\n   */\n  /**\n   * ------------------------------------------------------------------------\n   * Constants\n   * ------------------------------------------------------------------------\n   */\n\n  const NAME$b = 'carousel';\n  const DATA_KEY$a = 'bs.carousel';\n  const EVENT_KEY$a = `.${DATA_KEY$a}`;\n  const DATA_API_KEY$6 = '.data-api';\n  const ARROW_LEFT_KEY = 'ArrowLeft';\n  const ARROW_RIGHT_KEY = 'ArrowRight';\n  const TOUCHEVENT_COMPAT_WAIT = 500; // Time for mouse compat events to fire after touch\n\n  const SWIPE_THRESHOLD = 40;\n  const Default$a = {\n    interval: 5000,\n    keyboard: true,\n    slide: false,\n    pause: 'hover',\n    wrap: true,\n    touch: true\n  };\n  const DefaultType$a = {\n    interval: '(number|boolean)',\n    keyboard: 'boolean',\n    slide: '(boolean|string)',\n    pause: '(string|boolean)',\n    wrap: 'boolean',\n    touch: 'boolean'\n  };\n  const ORDER_NEXT = 'next';\n  const ORDER_PREV = 'prev';\n  const DIRECTION_LEFT = 'left';\n  const DIRECTION_RIGHT = 'right';\n  const KEY_TO_DIRECTION = {\n    [ARROW_LEFT_KEY]: DIRECTION_RIGHT,\n    [ARROW_RIGHT_KEY]: DIRECTION_LEFT\n  };\n  const EVENT_SLIDE = `slide${EVENT_KEY$a}`;\n  const EVENT_SLID = `slid${EVENT_KEY$a}`;\n  const EVENT_KEYDOWN = `keydown${EVENT_KEY$a}`;\n  const EVENT_MOUSEENTER = `mouseenter${EVENT_KEY$a}`;\n  const EVENT_MOUSELEAVE = `mouseleave${EVENT_KEY$a}`;\n  const EVENT_TOUCHSTART = `touchstart${EVENT_KEY$a}`;\n  const EVENT_TOUCHMOVE = `touchmove${EVENT_KEY$a}`;\n  const EVENT_TOUCHEND = `touchend${EVENT_KEY$a}`;\n  const EVENT_POINTERDOWN = `pointerdown${EVENT_KEY$a}`;\n  const EVENT_POINTERUP = `pointerup${EVENT_KEY$a}`;\n  const EVENT_DRAG_START = `dragstart${EVENT_KEY$a}`;\n  const EVENT_LOAD_DATA_API$2 = `load${EVENT_KEY$a}${DATA_API_KEY$6}`;\n  const EVENT_CLICK_DATA_API$5 = `click${EVENT_KEY$a}${DATA_API_KEY$6}`;\n  const CLASS_NAME_CAROUSEL = 'carousel';\n  const CLASS_NAME_ACTIVE$2 = 'active';\n  const CLASS_NAME_SLIDE = 'slide';\n  const CLASS_NAME_END = 'carousel-item-end';\n  const CLASS_NAME_START = 'carousel-item-start';\n  const CLASS_NAME_NEXT = 'carousel-item-next';\n  const CLASS_NAME_PREV = 'carousel-item-prev';\n  const CLASS_NAME_POINTER_EVENT = 'pointer-event';\n  const SELECTOR_ACTIVE$1 = '.active';\n  const SELECTOR_ACTIVE_ITEM = '.active.carousel-item';\n  const SELECTOR_ITEM = '.carousel-item';\n  const SELECTOR_ITEM_IMG = '.carousel-item img';\n  const SELECTOR_NEXT_PREV = '.carousel-item-next, .carousel-item-prev';\n  const SELECTOR_INDICATORS = '.carousel-indicators';\n  const SELECTOR_INDICATOR = '[data-bs-target]';\n  const SELECTOR_DATA_SLIDE = '[data-bs-slide], [data-bs-slide-to]';\n  const SELECTOR_DATA_RIDE = '[data-bs-ride=\"carousel\"]';\n  const POINTER_TYPE_TOUCH = 'touch';\n  const POINTER_TYPE_PEN = 'pen';\n  /**\n   * ------------------------------------------------------------------------\n   * Class Definition\n   * ------------------------------------------------------------------------\n   */\n\n  class Carousel extends BaseComponent {\n    constructor(element, config) {\n      super(element);\n      this._items = null;\n      this._interval = null;\n      this._activeElement = null;\n      this._isPaused = false;\n      this._isSliding = false;\n      this.touchTimeout = null;\n      this.touchStartX = 0;\n      this.touchDeltaX = 0;\n      this._config = this._getConfig(config);\n      this._indicatorsElement = SelectorEngine.findOne(SELECTOR_INDICATORS, this._element);\n      this._touchSupported = 'ontouchstart' in document.documentElement || navigator.maxTouchPoints > 0;\n      this._pointerEvent = Boolean(window.PointerEvent);\n\n      this._addEventListeners();\n    } // Getters\n\n\n    static get Default() {\n      return Default$a;\n    }\n\n    static get NAME() {\n      return NAME$b;\n    } // Public\n\n\n    next() {\n      this._slide(ORDER_NEXT);\n    }\n\n    nextWhenVisible() {\n      // Don't call next when the page isn't visible\n      // or the carousel or its parent isn't visible\n      if (!document.hidden && isVisible(this._element)) {\n        this.next();\n      }\n    }\n\n    prev() {\n      this._slide(ORDER_PREV);\n    }\n\n    pause(event) {\n      if (!event) {\n        this._isPaused = true;\n      }\n\n      if (SelectorEngine.findOne(SELECTOR_NEXT_PREV, this._element)) {\n        triggerTransitionEnd(this._element);\n        this.cycle(true);\n      }\n\n      clearInterval(this._interval);\n      this._interval = null;\n    }\n\n    cycle(event) {\n      if (!event) {\n        this._isPaused = false;\n      }\n\n      if (this._interval) {\n        clearInterval(this._interval);\n        this._interval = null;\n      }\n\n      if (this._config && this._config.interval && !this._isPaused) {\n        this._updateInterval();\n\n        this._interval = setInterval((document.visibilityState ? this.nextWhenVisible : this.next).bind(this), this._config.interval);\n      }\n    }\n\n    to(index) {\n      this._activeElement = SelectorEngine.findOne(SELECTOR_ACTIVE_ITEM, this._element);\n\n      const activeIndex = this._getItemIndex(this._activeElement);\n\n      if (index > this._items.length - 1 || index < 0) {\n        return;\n      }\n\n      if (this._isSliding) {\n        EventHandler.one(this._element, EVENT_SLID, () => this.to(index));\n        return;\n      }\n\n      if (activeIndex === index) {\n        this.pause();\n        this.cycle();\n        return;\n      }\n\n      const order = index > activeIndex ? ORDER_NEXT : ORDER_PREV;\n\n      this._slide(order, this._items[index]);\n    } // Private\n\n\n    _getConfig(config) {\n      config = { ...Default$a,\n        ...Manipulator.getDataAttributes(this._element),\n        ...(typeof config === 'object' ? config : {})\n      };\n      typeCheckConfig(NAME$b, config, DefaultType$a);\n      return config;\n    }\n\n    _handleSwipe() {\n      const absDeltax = Math.abs(this.touchDeltaX);\n\n      if (absDeltax <= SWIPE_THRESHOLD) {\n        return;\n      }\n\n      const direction = absDeltax / this.touchDeltaX;\n      this.touchDeltaX = 0;\n\n      if (!direction) {\n        return;\n      }\n\n      this._slide(direction > 0 ? DIRECTION_RIGHT : DIRECTION_LEFT);\n    }\n\n    _addEventListeners() {\n      if (this._config.keyboard) {\n        EventHandler.on(this._element, EVENT_KEYDOWN, event => this._keydown(event));\n      }\n\n      if (this._config.pause === 'hover') {\n        EventHandler.on(this._element, EVENT_MOUSEENTER, event => this.pause(event));\n        EventHandler.on(this._element, EVENT_MOUSELEAVE, event => this.cycle(event));\n      }\n\n      if (this._config.touch && this._touchSupported) {\n        this._addTouchEventListeners();\n      }\n    }\n\n    _addTouchEventListeners() {\n      const hasPointerPenTouch = event => {\n        return this._pointerEvent && (event.pointerType === POINTER_TYPE_PEN || event.pointerType === POINTER_TYPE_TOUCH);\n      };\n\n      const start = event => {\n        if (hasPointerPenTouch(event)) {\n          this.touchStartX = event.clientX;\n        } else if (!this._pointerEvent) {\n          this.touchStartX = event.touches[0].clientX;\n        }\n      };\n\n      const move = event => {\n        // ensure swiping with one touch and not pinching\n        this.touchDeltaX = event.touches && event.touches.length > 1 ? 0 : event.touches[0].clientX - this.touchStartX;\n      };\n\n      const end = event => {\n        if (hasPointerPenTouch(event)) {\n          this.touchDeltaX = event.clientX - this.touchStartX;\n        }\n\n        this._handleSwipe();\n\n        if (this._config.pause === 'hover') {\n          // If it's a touch-enabled device, mouseenter/leave are fired as\n          // part of the mouse compatibility events on first tap - the carousel\n          // would stop cycling until user tapped out of it;\n          // here, we listen for touchend, explicitly pause the carousel\n          // (as if it's the second time we tap on it, mouseenter compat event\n          // is NOT fired) and after a timeout (to allow for mouse compatibility\n          // events to fire) we explicitly restart cycling\n          this.pause();\n\n          if (this.touchTimeout) {\n            clearTimeout(this.touchTimeout);\n          }\n\n          this.touchTimeout = setTimeout(event => this.cycle(event), TOUCHEVENT_COMPAT_WAIT + this._config.interval);\n        }\n      };\n\n      SelectorEngine.find(SELECTOR_ITEM_IMG, this._element).forEach(itemImg => {\n        EventHandler.on(itemImg, EVENT_DRAG_START, event => event.preventDefault());\n      });\n\n      if (this._pointerEvent) {\n        EventHandler.on(this._element, EVENT_POINTERDOWN, event => start(event));\n        EventHandler.on(this._element, EVENT_POINTERUP, event => end(event));\n\n        this._element.classList.add(CLASS_NAME_POINTER_EVENT);\n      } else {\n        EventHandler.on(this._element, EVENT_TOUCHSTART, event => start(event));\n        EventHandler.on(this._element, EVENT_TOUCHMOVE, event => move(event));\n        EventHandler.on(this._element, EVENT_TOUCHEND, event => end(event));\n      }\n    }\n\n    _keydown(event) {\n      if (/input|textarea/i.test(event.target.tagName)) {\n        return;\n      }\n\n      const direction = KEY_TO_DIRECTION[event.key];\n\n      if (direction) {\n        event.preventDefault();\n\n        this._slide(direction);\n      }\n    }\n\n    _getItemIndex(element) {\n      this._items = element && element.parentNode ? SelectorEngine.find(SELECTOR_ITEM, element.parentNode) : [];\n      return this._items.indexOf(element);\n    }\n\n    _getItemByOrder(order, activeElement) {\n      const isNext = order === ORDER_NEXT;\n      return getNextActiveElement(this._items, activeElement, isNext, this._config.wrap);\n    }\n\n    _triggerSlideEvent(relatedTarget, eventDirectionName) {\n      const targetIndex = this._getItemIndex(relatedTarget);\n\n      const fromIndex = this._getItemIndex(SelectorEngine.findOne(SELECTOR_ACTIVE_ITEM, this._element));\n\n      return EventHandler.trigger(this._element, EVENT_SLIDE, {\n        relatedTarget,\n        direction: eventDirectionName,\n        from: fromIndex,\n        to: targetIndex\n      });\n    }\n\n    _setActiveIndicatorElement(element) {\n      if (this._indicatorsElement) {\n        const activeIndicator = SelectorEngine.findOne(SELECTOR_ACTIVE$1, this._indicatorsElement);\n        activeIndicator.classList.remove(CLASS_NAME_ACTIVE$2);\n        activeIndicator.removeAttribute('aria-current');\n        const indicators = SelectorEngine.find(SELECTOR_INDICATOR, this._indicatorsElement);\n\n        for (let i = 0; i < indicators.length; i++) {\n          if (Number.parseInt(indicators[i].getAttribute('data-bs-slide-to'), 10) === this._getItemIndex(element)) {\n            indicators[i].classList.add(CLASS_NAME_ACTIVE$2);\n            indicators[i].setAttribute('aria-current', 'true');\n            break;\n          }\n        }\n      }\n    }\n\n    _updateInterval() {\n      const element = this._activeElement || SelectorEngine.findOne(SELECTOR_ACTIVE_ITEM, this._element);\n\n      if (!element) {\n        return;\n      }\n\n      const elementInterval = Number.parseInt(element.getAttribute('data-bs-interval'), 10);\n\n      if (elementInterval) {\n        this._config.defaultInterval = this._config.defaultInterval || this._config.interval;\n        this._config.interval = elementInterval;\n      } else {\n        this._config.interval = this._config.defaultInterval || this._config.interval;\n      }\n    }\n\n    _slide(directionOrOrder, element) {\n      const order = this._directionToOrder(directionOrOrder);\n\n      const activeElement = SelectorEngine.findOne(SELECTOR_ACTIVE_ITEM, this._element);\n\n      const activeElementIndex = this._getItemIndex(activeElement);\n\n      const nextElement = element || this._getItemByOrder(order, activeElement);\n\n      const nextElementIndex = this._getItemIndex(nextElement);\n\n      const isCycling = Boolean(this._interval);\n      const isNext = order === ORDER_NEXT;\n      const directionalClassName = isNext ? CLASS_NAME_START : CLASS_NAME_END;\n      const orderClassName = isNext ? CLASS_NAME_NEXT : CLASS_NAME_PREV;\n\n      const eventDirectionName = this._orderToDirection(order);\n\n      if (nextElement && nextElement.classList.contains(CLASS_NAME_ACTIVE$2)) {\n        this._isSliding = false;\n        return;\n      }\n\n      if (this._isSliding) {\n        return;\n      }\n\n      const slideEvent = this._triggerSlideEvent(nextElement, eventDirectionName);\n\n      if (slideEvent.defaultPrevented) {\n        return;\n      }\n\n      if (!activeElement || !nextElement) {\n        // Some weirdness is happening, so we bail\n        return;\n      }\n\n      this._isSliding = true;\n\n      if (isCycling) {\n        this.pause();\n      }\n\n      this._setActiveIndicatorElement(nextElement);\n\n      this._activeElement = nextElement;\n\n      const triggerSlidEvent = () => {\n        EventHandler.trigger(this._element, EVENT_SLID, {\n          relatedTarget: nextElement,\n          direction: eventDirectionName,\n          from: activeElementIndex,\n          to: nextElementIndex\n        });\n      };\n\n      if (this._element.classList.contains(CLASS_NAME_SLIDE)) {\n        nextElement.classList.add(orderClassName);\n        reflow(nextElement);\n        activeElement.classList.add(directionalClassName);\n        nextElement.classList.add(directionalClassName);\n\n        const completeCallBack = () => {\n          nextElement.classList.remove(directionalClassName, orderClassName);\n          nextElement.classList.add(CLASS_NAME_ACTIVE$2);\n          activeElement.classList.remove(CLASS_NAME_ACTIVE$2, orderClassName, directionalClassName);\n          this._isSliding = false;\n          setTimeout(triggerSlidEvent, 0);\n        };\n\n        this._queueCallback(completeCallBack, activeElement, true);\n      } else {\n        activeElement.classList.remove(CLASS_NAME_ACTIVE$2);\n        nextElement.classList.add(CLASS_NAME_ACTIVE$2);\n        this._isSliding = false;\n        triggerSlidEvent();\n      }\n\n      if (isCycling) {\n        this.cycle();\n      }\n    }\n\n    _directionToOrder(direction) {\n      if (![DIRECTION_RIGHT, DIRECTION_LEFT].includes(direction)) {\n        return direction;\n      }\n\n      if (isRTL()) {\n        return direction === DIRECTION_LEFT ? ORDER_PREV : ORDER_NEXT;\n      }\n\n      return direction === DIRECTION_LEFT ? ORDER_NEXT : ORDER_PREV;\n    }\n\n    _orderToDirection(order) {\n      if (![ORDER_NEXT, ORDER_PREV].includes(order)) {\n        return order;\n      }\n\n      if (isRTL()) {\n        return order === ORDER_PREV ? DIRECTION_LEFT : DIRECTION_RIGHT;\n      }\n\n      return order === ORDER_PREV ? DIRECTION_RIGHT : DIRECTION_LEFT;\n    } // Static\n\n\n    static carouselInterface(element, config) {\n      const data = Carousel.getOrCreateInstance(element, config);\n      let {\n        _config\n      } = data;\n\n      if (typeof config === 'object') {\n        _config = { ..._config,\n          ...config\n        };\n      }\n\n      const action = typeof config === 'string' ? config : _config.slide;\n\n      if (typeof config === 'number') {\n        data.to(config);\n      } else if (typeof action === 'string') {\n        if (typeof data[action] === 'undefined') {\n          throw new TypeError(`No method named \"${action}\"`);\n        }\n\n        data[action]();\n      } else if (_config.interval && _config.ride) {\n        data.pause();\n        data.cycle();\n      }\n    }\n\n    static jQueryInterface(config) {\n      return this.each(function () {\n        Carousel.carouselInterface(this, config);\n      });\n    }\n\n    static dataApiClickHandler(event) {\n      const target = getElementFromSelector(this);\n\n      if (!target || !target.classList.contains(CLASS_NAME_CAROUSEL)) {\n        return;\n      }\n\n      const config = { ...Manipulator.getDataAttributes(target),\n        ...Manipulator.getDataAttributes(this)\n      };\n      const slideIndex = this.getAttribute('data-bs-slide-to');\n\n      if (slideIndex) {\n        config.interval = false;\n      }\n\n      Carousel.carouselInterface(target, config);\n\n      if (slideIndex) {\n        Carousel.getInstance(target).to(slideIndex);\n      }\n\n      event.preventDefault();\n    }\n\n  }\n  /**\n   * ------------------------------------------------------------------------\n   * Data Api implementation\n   * ------------------------------------------------------------------------\n   */\n\n\n  EventHandler.on(document, EVENT_CLICK_DATA_API$5, SELECTOR_DATA_SLIDE, Carousel.dataApiClickHandler);\n  EventHandler.on(window, EVENT_LOAD_DATA_API$2, () => {\n    const carousels = SelectorEngine.find(SELECTOR_DATA_RIDE);\n\n    for (let i = 0, len = carousels.length; i < len; i++) {\n      Carousel.carouselInterface(carousels[i], Carousel.getInstance(carousels[i]));\n    }\n  });\n  /**\n   * ------------------------------------------------------------------------\n   * jQuery\n   * ------------------------------------------------------------------------\n   * add .Carousel to jQuery only if jQuery is present\n   */\n\n  defineJQueryPlugin(Carousel);\n\n  /**\n   * --------------------------------------------------------------------------\n   * Bootstrap (v5.1.3): collapse.js\n   * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n   * --------------------------------------------------------------------------\n   */\n  /**\n   * ------------------------------------------------------------------------\n   * Constants\n   * ------------------------------------------------------------------------\n   */\n\n  const NAME$a = 'collapse';\n  const DATA_KEY$9 = 'bs.collapse';\n  const EVENT_KEY$9 = `.${DATA_KEY$9}`;\n  const DATA_API_KEY$5 = '.data-api';\n  const Default$9 = {\n    toggle: true,\n    parent: null\n  };\n  const DefaultType$9 = {\n    toggle: 'boolean',\n    parent: '(null|element)'\n  };\n  const EVENT_SHOW$5 = `show${EVENT_KEY$9}`;\n  const EVENT_SHOWN$5 = `shown${EVENT_KEY$9}`;\n  const EVENT_HIDE$5 = `hide${EVENT_KEY$9}`;\n  const EVENT_HIDDEN$5 = `hidden${EVENT_KEY$9}`;\n  const EVENT_CLICK_DATA_API$4 = `click${EVENT_KEY$9}${DATA_API_KEY$5}`;\n  const CLASS_NAME_SHOW$7 = 'show';\n  const CLASS_NAME_COLLAPSE = 'collapse';\n  const CLASS_NAME_COLLAPSING = 'collapsing';\n  const CLASS_NAME_COLLAPSED = 'collapsed';\n  const CLASS_NAME_DEEPER_CHILDREN = `:scope .${CLASS_NAME_COLLAPSE} .${CLASS_NAME_COLLAPSE}`;\n  const CLASS_NAME_HORIZONTAL = 'collapse-horizontal';\n  const WIDTH = 'width';\n  const HEIGHT = 'height';\n  const SELECTOR_ACTIVES = '.collapse.show, .collapse.collapsing';\n  const SELECTOR_DATA_TOGGLE$4 = '[data-bs-toggle=\"collapse\"]';\n  /**\n   * ------------------------------------------------------------------------\n   * Class Definition\n   * ------------------------------------------------------------------------\n   */\n\n  class Collapse extends BaseComponent {\n    constructor(element, config) {\n      super(element);\n      this._isTransitioning = false;\n      this._config = this._getConfig(config);\n      this._triggerArray = [];\n      const toggleList = SelectorEngine.find(SELECTOR_DATA_TOGGLE$4);\n\n      for (let i = 0, len = toggleList.length; i < len; i++) {\n        const elem = toggleList[i];\n        const selector = getSelectorFromElement(elem);\n        const filterElement = SelectorEngine.find(selector).filter(foundElem => foundElem === this._element);\n\n        if (selector !== null && filterElement.length) {\n          this._selector = selector;\n\n          this._triggerArray.push(elem);\n        }\n      }\n\n      this._initializeChildren();\n\n      if (!this._config.parent) {\n        this._addAriaAndCollapsedClass(this._triggerArray, this._isShown());\n      }\n\n      if (this._config.toggle) {\n        this.toggle();\n      }\n    } // Getters\n\n\n    static get Default() {\n      return Default$9;\n    }\n\n    static get NAME() {\n      return NAME$a;\n    } // Public\n\n\n    toggle() {\n      if (this._isShown()) {\n        this.hide();\n      } else {\n        this.show();\n      }\n    }\n\n    show() {\n      if (this._isTransitioning || this._isShown()) {\n        return;\n      }\n\n      let actives = [];\n      let activesData;\n\n      if (this._config.parent) {\n        const children = SelectorEngine.find(CLASS_NAME_DEEPER_CHILDREN, this._config.parent);\n        actives = SelectorEngine.find(SELECTOR_ACTIVES, this._config.parent).filter(elem => !children.includes(elem)); // remove children if greater depth\n      }\n\n      const container = SelectorEngine.findOne(this._selector);\n\n      if (actives.length) {\n        const tempActiveData = actives.find(elem => container !== elem);\n        activesData = tempActiveData ? Collapse.getInstance(tempActiveData) : null;\n\n        if (activesData && activesData._isTransitioning) {\n          return;\n        }\n      }\n\n      const startEvent = EventHandler.trigger(this._element, EVENT_SHOW$5);\n\n      if (startEvent.defaultPrevented) {\n        return;\n      }\n\n      actives.forEach(elemActive => {\n        if (container !== elemActive) {\n          Collapse.getOrCreateInstance(elemActive, {\n            toggle: false\n          }).hide();\n        }\n\n        if (!activesData) {\n          Data.set(elemActive, DATA_KEY$9, null);\n        }\n      });\n\n      const dimension = this._getDimension();\n\n      this._element.classList.remove(CLASS_NAME_COLLAPSE);\n\n      this._element.classList.add(CLASS_NAME_COLLAPSING);\n\n      this._element.style[dimension] = 0;\n\n      this._addAriaAndCollapsedClass(this._triggerArray, true);\n\n      this._isTransitioning = true;\n\n      const complete = () => {\n        this._isTransitioning = false;\n\n        this._element.classList.remove(CLASS_NAME_COLLAPSING);\n\n        this._element.classList.add(CLASS_NAME_COLLAPSE, CLASS_NAME_SHOW$7);\n\n        this._element.style[dimension] = '';\n        EventHandler.trigger(this._element, EVENT_SHOWN$5);\n      };\n\n      const capitalizedDimension = dimension[0].toUpperCase() + dimension.slice(1);\n      const scrollSize = `scroll${capitalizedDimension}`;\n\n      this._queueCallback(complete, this._element, true);\n\n      this._element.style[dimension] = `${this._element[scrollSize]}px`;\n    }\n\n    hide() {\n      if (this._isTransitioning || !this._isShown()) {\n        return;\n      }\n\n      const startEvent = EventHandler.trigger(this._element, EVENT_HIDE$5);\n\n      if (startEvent.defaultPrevented) {\n        return;\n      }\n\n      const dimension = this._getDimension();\n\n      this._element.style[dimension] = `${this._element.getBoundingClientRect()[dimension]}px`;\n      reflow(this._element);\n\n      this._element.classList.add(CLASS_NAME_COLLAPSING);\n\n      this._element.classList.remove(CLASS_NAME_COLLAPSE, CLASS_NAME_SHOW$7);\n\n      const triggerArrayLength = this._triggerArray.length;\n\n      for (let i = 0; i < triggerArrayLength; i++) {\n        const trigger = this._triggerArray[i];\n        const elem = getElementFromSelector(trigger);\n\n        if (elem && !this._isShown(elem)) {\n          this._addAriaAndCollapsedClass([trigger], false);\n        }\n      }\n\n      this._isTransitioning = true;\n\n      const complete = () => {\n        this._isTransitioning = false;\n\n        this._element.classList.remove(CLASS_NAME_COLLAPSING);\n\n        this._element.classList.add(CLASS_NAME_COLLAPSE);\n\n        EventHandler.trigger(this._element, EVENT_HIDDEN$5);\n      };\n\n      this._element.style[dimension] = '';\n\n      this._queueCallback(complete, this._element, true);\n    }\n\n    _isShown(element = this._element) {\n      return element.classList.contains(CLASS_NAME_SHOW$7);\n    } // Private\n\n\n    _getConfig(config) {\n      config = { ...Default$9,\n        ...Manipulator.getDataAttributes(this._element),\n        ...config\n      };\n      config.toggle = Boolean(config.toggle); // Coerce string values\n\n      config.parent = getElement(config.parent);\n      typeCheckConfig(NAME$a, config, DefaultType$9);\n      return config;\n    }\n\n    _getDimension() {\n      return this._element.classList.contains(CLASS_NAME_HORIZONTAL) ? WIDTH : HEIGHT;\n    }\n\n    _initializeChildren() {\n      if (!this._config.parent) {\n        return;\n      }\n\n      const children = SelectorEngine.find(CLASS_NAME_DEEPER_CHILDREN, this._config.parent);\n      SelectorEngine.find(SELECTOR_DATA_TOGGLE$4, this._config.parent).filter(elem => !children.includes(elem)).forEach(element => {\n        const selected = getElementFromSelector(element);\n\n        if (selected) {\n          this._addAriaAndCollapsedClass([element], this._isShown(selected));\n        }\n      });\n    }\n\n    _addAriaAndCollapsedClass(triggerArray, isOpen) {\n      if (!triggerArray.length) {\n        return;\n      }\n\n      triggerArray.forEach(elem => {\n        if (isOpen) {\n          elem.classList.remove(CLASS_NAME_COLLAPSED);\n        } else {\n          elem.classList.add(CLASS_NAME_COLLAPSED);\n        }\n\n        elem.setAttribute('aria-expanded', isOpen);\n      });\n    } // Static\n\n\n    static jQueryInterface(config) {\n      return this.each(function () {\n        const _config = {};\n\n        if (typeof config === 'string' && /show|hide/.test(config)) {\n          _config.toggle = false;\n        }\n\n        const data = Collapse.getOrCreateInstance(this, _config);\n\n        if (typeof config === 'string') {\n          if (typeof data[config] === 'undefined') {\n            throw new TypeError(`No method named \"${config}\"`);\n          }\n\n          data[config]();\n        }\n      });\n    }\n\n  }\n  /**\n   * ------------------------------------------------------------------------\n   * Data Api implementation\n   * ------------------------------------------------------------------------\n   */\n\n\n  EventHandler.on(document, EVENT_CLICK_DATA_API$4, SELECTOR_DATA_TOGGLE$4, function (event) {\n    // preventDefault only for <a> elements (which change the URL) not inside the collapsible element\n    if (event.target.tagName === 'A' || event.delegateTarget && event.delegateTarget.tagName === 'A') {\n      event.preventDefault();\n    }\n\n    const selector = getSelectorFromElement(this);\n    const selectorElements = SelectorEngine.find(selector);\n    selectorElements.forEach(element => {\n      Collapse.getOrCreateInstance(element, {\n        toggle: false\n      }).toggle();\n    });\n  });\n  /**\n   * ------------------------------------------------------------------------\n   * jQuery\n   * ------------------------------------------------------------------------\n   * add .Collapse to jQuery only if jQuery is present\n   */\n\n  defineJQueryPlugin(Collapse);\n\n  /**\n   * --------------------------------------------------------------------------\n   * Bootstrap (v5.1.3): dropdown.js\n   * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n   * --------------------------------------------------------------------------\n   */\n  /**\n   * ------------------------------------------------------------------------\n   * Constants\n   * ------------------------------------------------------------------------\n   */\n\n  const NAME$9 = 'dropdown';\n  const DATA_KEY$8 = 'bs.dropdown';\n  const EVENT_KEY$8 = `.${DATA_KEY$8}`;\n  const DATA_API_KEY$4 = '.data-api';\n  const ESCAPE_KEY$2 = 'Escape';\n  const SPACE_KEY = 'Space';\n  const TAB_KEY$1 = 'Tab';\n  const ARROW_UP_KEY = 'ArrowUp';\n  const ARROW_DOWN_KEY = 'ArrowDown';\n  const RIGHT_MOUSE_BUTTON = 2; // MouseEvent.button value for the secondary button, usually the right button\n\n  const REGEXP_KEYDOWN = new RegExp(`${ARROW_UP_KEY}|${ARROW_DOWN_KEY}|${ESCAPE_KEY$2}`);\n  const EVENT_HIDE$4 = `hide${EVENT_KEY$8}`;\n  const EVENT_HIDDEN$4 = `hidden${EVENT_KEY$8}`;\n  const EVENT_SHOW$4 = `show${EVENT_KEY$8}`;\n  const EVENT_SHOWN$4 = `shown${EVENT_KEY$8}`;\n  const EVENT_CLICK_DATA_API$3 = `click${EVENT_KEY$8}${DATA_API_KEY$4}`;\n  const EVENT_KEYDOWN_DATA_API = `keydown${EVENT_KEY$8}${DATA_API_KEY$4}`;\n  const EVENT_KEYUP_DATA_API = `keyup${EVENT_KEY$8}${DATA_API_KEY$4}`;\n  const CLASS_NAME_SHOW$6 = 'show';\n  const CLASS_NAME_DROPUP = 'dropup';\n  const CLASS_NAME_DROPEND = 'dropend';\n  const CLASS_NAME_DROPSTART = 'dropstart';\n  const CLASS_NAME_NAVBAR = 'navbar';\n  const SELECTOR_DATA_TOGGLE$3 = '[data-bs-toggle=\"dropdown\"]';\n  const SELECTOR_MENU = '.dropdown-menu';\n  const SELECTOR_NAVBAR_NAV = '.navbar-nav';\n  const SELECTOR_VISIBLE_ITEMS = '.dropdown-menu .dropdown-item:not(.disabled):not(:disabled)';\n  const PLACEMENT_TOP = isRTL() ? 'top-end' : 'top-start';\n  const PLACEMENT_TOPEND = isRTL() ? 'top-start' : 'top-end';\n  const PLACEMENT_BOTTOM = isRTL() ? 'bottom-end' : 'bottom-start';\n  const PLACEMENT_BOTTOMEND = isRTL() ? 'bottom-start' : 'bottom-end';\n  const PLACEMENT_RIGHT = isRTL() ? 'left-start' : 'right-start';\n  const PLACEMENT_LEFT = isRTL() ? 'right-start' : 'left-start';\n  const Default$8 = {\n    offset: [0, 2],\n    boundary: 'clippingParents',\n    reference: 'toggle',\n    display: 'dynamic',\n    popperConfig: null,\n    autoClose: true\n  };\n  const DefaultType$8 = {\n    offset: '(array|string|function)',\n    boundary: '(string|element)',\n    reference: '(string|element|object)',\n    display: 'string',\n    popperConfig: '(null|object|function)',\n    autoClose: '(boolean|string)'\n  };\n  /**\n   * ------------------------------------------------------------------------\n   * Class Definition\n   * ------------------------------------------------------------------------\n   */\n\n  class Dropdown extends BaseComponent {\n    constructor(element, config) {\n      super(element);\n      this._popper = null;\n      this._config = this._getConfig(config);\n      this._menu = this._getMenuElement();\n      this._inNavbar = this._detectNavbar();\n    } // Getters\n\n\n    static get Default() {\n      return Default$8;\n    }\n\n    static get DefaultType() {\n      return DefaultType$8;\n    }\n\n    static get NAME() {\n      return NAME$9;\n    } // Public\n\n\n    toggle() {\n      return this._isShown() ? this.hide() : this.show();\n    }\n\n    show() {\n      if (isDisabled(this._element) || this._isShown(this._menu)) {\n        return;\n      }\n\n      const relatedTarget = {\n        relatedTarget: this._element\n      };\n      const showEvent = EventHandler.trigger(this._element, EVENT_SHOW$4, relatedTarget);\n\n      if (showEvent.defaultPrevented) {\n        return;\n      }\n\n      const parent = Dropdown.getParentFromElement(this._element); // Totally disable Popper for Dropdowns in Navbar\n\n      if (this._inNavbar) {\n        Manipulator.setDataAttribute(this._menu, 'popper', 'none');\n      } else {\n        this._createPopper(parent);\n      } // If this is a touch-enabled device we add extra\n      // empty mouseover listeners to the body's immediate children;\n      // only needed because of broken event delegation on iOS\n      // https://www.quirksmode.org/blog/archives/2014/02/mouse_event_bub.html\n\n\n      if ('ontouchstart' in document.documentElement && !parent.closest(SELECTOR_NAVBAR_NAV)) {\n        [].concat(...document.body.children).forEach(elem => EventHandler.on(elem, 'mouseover', noop));\n      }\n\n      this._element.focus();\n\n      this._element.setAttribute('aria-expanded', true);\n\n      this._menu.classList.add(CLASS_NAME_SHOW$6);\n\n      this._element.classList.add(CLASS_NAME_SHOW$6);\n\n      EventHandler.trigger(this._element, EVENT_SHOWN$4, relatedTarget);\n    }\n\n    hide() {\n      if (isDisabled(this._element) || !this._isShown(this._menu)) {\n        return;\n      }\n\n      const relatedTarget = {\n        relatedTarget: this._element\n      };\n\n      this._completeHide(relatedTarget);\n    }\n\n    dispose() {\n      if (this._popper) {\n        this._popper.destroy();\n      }\n\n      super.dispose();\n    }\n\n    update() {\n      this._inNavbar = this._detectNavbar();\n\n      if (this._popper) {\n        this._popper.update();\n      }\n    } // Private\n\n\n    _completeHide(relatedTarget) {\n      const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE$4, relatedTarget);\n\n      if (hideEvent.defaultPrevented) {\n        return;\n      } // If this is a touch-enabled device we remove the extra\n      // empty mouseover listeners we added for iOS support\n\n\n      if ('ontouchstart' in document.documentElement) {\n        [].concat(...document.body.children).forEach(elem => EventHandler.off(elem, 'mouseover', noop));\n      }\n\n      if (this._popper) {\n        this._popper.destroy();\n      }\n\n      this._menu.classList.remove(CLASS_NAME_SHOW$6);\n\n      this._element.classList.remove(CLASS_NAME_SHOW$6);\n\n      this._element.setAttribute('aria-expanded', 'false');\n\n      Manipulator.removeDataAttribute(this._menu, 'popper');\n      EventHandler.trigger(this._element, EVENT_HIDDEN$4, relatedTarget);\n    }\n\n    _getConfig(config) {\n      config = { ...this.constructor.Default,\n        ...Manipulator.getDataAttributes(this._element),\n        ...config\n      };\n      typeCheckConfig(NAME$9, config, this.constructor.DefaultType);\n\n      if (typeof config.reference === 'object' && !isElement(config.reference) && typeof config.reference.getBoundingClientRect !== 'function') {\n        // Popper virtual elements require a getBoundingClientRect method\n        throw new TypeError(`${NAME$9.toUpperCase()}: Option \"reference\" provided type \"object\" without a required \"getBoundingClientRect\" method.`);\n      }\n\n      return config;\n    }\n\n    _createPopper(parent) {\n      if (typeof Popper__namespace === 'undefined') {\n        throw new TypeError('Bootstrap\\'s dropdowns require Popper (https://popper.js.org)');\n      }\n\n      let referenceElement = this._element;\n\n      if (this._config.reference === 'parent') {\n        referenceElement = parent;\n      } else if (isElement(this._config.reference)) {\n        referenceElement = getElement(this._config.reference);\n      } else if (typeof this._config.reference === 'object') {\n        referenceElement = this._config.reference;\n      }\n\n      const popperConfig = this._getPopperConfig();\n\n      const isDisplayStatic = popperConfig.modifiers.find(modifier => modifier.name === 'applyStyles' && modifier.enabled === false);\n      this._popper = Popper__namespace.createPopper(referenceElement, this._menu, popperConfig);\n\n      if (isDisplayStatic) {\n        Manipulator.setDataAttribute(this._menu, 'popper', 'static');\n      }\n    }\n\n    _isShown(element = this._element) {\n      return element.classList.contains(CLASS_NAME_SHOW$6);\n    }\n\n    _getMenuElement() {\n      return SelectorEngine.next(this._element, SELECTOR_MENU)[0];\n    }\n\n    _getPlacement() {\n      const parentDropdown = this._element.parentNode;\n\n      if (parentDropdown.classList.contains(CLASS_NAME_DROPEND)) {\n        return PLACEMENT_RIGHT;\n      }\n\n      if (parentDropdown.classList.contains(CLASS_NAME_DROPSTART)) {\n        return PLACEMENT_LEFT;\n      } // We need to trim the value because custom properties can also include spaces\n\n\n      const isEnd = getComputedStyle(this._menu).getPropertyValue('--bs-position').trim() === 'end';\n\n      if (parentDropdown.classList.contains(CLASS_NAME_DROPUP)) {\n        return isEnd ? PLACEMENT_TOPEND : PLACEMENT_TOP;\n      }\n\n      return isEnd ? PLACEMENT_BOTTOMEND : PLACEMENT_BOTTOM;\n    }\n\n    _detectNavbar() {\n      return this._element.closest(`.${CLASS_NAME_NAVBAR}`) !== null;\n    }\n\n    _getOffset() {\n      const {\n        offset\n      } = this._config;\n\n      if (typeof offset === 'string') {\n        return offset.split(',').map(val => Number.parseInt(val, 10));\n      }\n\n      if (typeof offset === 'function') {\n        return popperData => offset(popperData, this._element);\n      }\n\n      return offset;\n    }\n\n    _getPopperConfig() {\n      const defaultBsPopperConfig = {\n        placement: this._getPlacement(),\n        modifiers: [{\n          name: 'preventOverflow',\n          options: {\n            boundary: this._config.boundary\n          }\n        }, {\n          name: 'offset',\n          options: {\n            offset: this._getOffset()\n          }\n        }]\n      }; // Disable Popper if we have a static display\n\n      if (this._config.display === 'static') {\n        defaultBsPopperConfig.modifiers = [{\n          name: 'applyStyles',\n          enabled: false\n        }];\n      }\n\n      return { ...defaultBsPopperConfig,\n        ...(typeof this._config.popperConfig === 'function' ? this._config.popperConfig(defaultBsPopperConfig) : this._config.popperConfig)\n      };\n    }\n\n    _selectMenuItem({\n      key,\n      target\n    }) {\n      const items = SelectorEngine.find(SELECTOR_VISIBLE_ITEMS, this._menu).filter(isVisible);\n\n      if (!items.length) {\n        return;\n      } // if target isn't included in items (e.g. when expanding the dropdown)\n      // allow cycling to get the last item in case key equals ARROW_UP_KEY\n\n\n      getNextActiveElement(items, target, key === ARROW_DOWN_KEY, !items.includes(target)).focus();\n    } // Static\n\n\n    static jQueryInterface(config) {\n      return this.each(function () {\n        const data = Dropdown.getOrCreateInstance(this, config);\n\n        if (typeof config !== 'string') {\n          return;\n        }\n\n        if (typeof data[config] === 'undefined') {\n          throw new TypeError(`No method named \"${config}\"`);\n        }\n\n        data[config]();\n      });\n    }\n\n    static clearMenus(event) {\n      if (event && (event.button === RIGHT_MOUSE_BUTTON || event.type === 'keyup' && event.key !== TAB_KEY$1)) {\n        return;\n      }\n\n      const toggles = SelectorEngine.find(SELECTOR_DATA_TOGGLE$3);\n\n      for (let i = 0, len = toggles.length; i < len; i++) {\n        const context = Dropdown.getInstance(toggles[i]);\n\n        if (!context || context._config.autoClose === false) {\n          continue;\n        }\n\n        if (!context._isShown()) {\n          continue;\n        }\n\n        const relatedTarget = {\n          relatedTarget: context._element\n        };\n\n        if (event) {\n          const composedPath = event.composedPath();\n          const isMenuTarget = composedPath.includes(context._menu);\n\n          if (composedPath.includes(context._element) || context._config.autoClose === 'inside' && !isMenuTarget || context._config.autoClose === 'outside' && isMenuTarget) {\n            continue;\n          } // Tab navigation through the dropdown menu or events from contained inputs shouldn't close the menu\n\n\n          if (context._menu.contains(event.target) && (event.type === 'keyup' && event.key === TAB_KEY$1 || /input|select|option|textarea|form/i.test(event.target.tagName))) {\n            continue;\n          }\n\n          if (event.type === 'click') {\n            relatedTarget.clickEvent = event;\n          }\n        }\n\n        context._completeHide(relatedTarget);\n      }\n    }\n\n    static getParentFromElement(element) {\n      return getElementFromSelector(element) || element.parentNode;\n    }\n\n    static dataApiKeydownHandler(event) {\n      // If not input/textarea:\n      //  - And not a key in REGEXP_KEYDOWN => not a dropdown command\n      // If input/textarea:\n      //  - If space key => not a dropdown command\n      //  - If key is other than escape\n      //    - If key is not up or down => not a dropdown command\n      //    - If trigger inside the menu => not a dropdown command\n      if (/input|textarea/i.test(event.target.tagName) ? event.key === SPACE_KEY || event.key !== ESCAPE_KEY$2 && (event.key !== ARROW_DOWN_KEY && event.key !== ARROW_UP_KEY || event.target.closest(SELECTOR_MENU)) : !REGEXP_KEYDOWN.test(event.key)) {\n        return;\n      }\n\n      const isActive = this.classList.contains(CLASS_NAME_SHOW$6);\n\n      if (!isActive && event.key === ESCAPE_KEY$2) {\n        return;\n      }\n\n      event.preventDefault();\n      event.stopPropagation();\n\n      if (isDisabled(this)) {\n        return;\n      }\n\n      const getToggleButton = this.matches(SELECTOR_DATA_TOGGLE$3) ? this : SelectorEngine.prev(this, SELECTOR_DATA_TOGGLE$3)[0];\n      const instance = Dropdown.getOrCreateInstance(getToggleButton);\n\n      if (event.key === ESCAPE_KEY$2) {\n        instance.hide();\n        return;\n      }\n\n      if (event.key === ARROW_UP_KEY || event.key === ARROW_DOWN_KEY) {\n        if (!isActive) {\n          instance.show();\n        }\n\n        instance._selectMenuItem(event);\n\n        return;\n      }\n\n      if (!isActive || event.key === SPACE_KEY) {\n        Dropdown.clearMenus();\n      }\n    }\n\n  }\n  /**\n   * ------------------------------------------------------------------------\n   * Data Api implementation\n   * ------------------------------------------------------------------------\n   */\n\n\n  EventHandler.on(document, EVENT_KEYDOWN_DATA_API, SELECTOR_DATA_TOGGLE$3, Dropdown.dataApiKeydownHandler);\n  EventHandler.on(document, EVENT_KEYDOWN_DATA_API, SELECTOR_MENU, Dropdown.dataApiKeydownHandler);\n  EventHandler.on(document, EVENT_CLICK_DATA_API$3, Dropdown.clearMenus);\n  EventHandler.on(document, EVENT_KEYUP_DATA_API, Dropdown.clearMenus);\n  EventHandler.on(document, EVENT_CLICK_DATA_API$3, SELECTOR_DATA_TOGGLE$3, function (event) {\n    event.preventDefault();\n    Dropdown.getOrCreateInstance(this).toggle();\n  });\n  /**\n   * ------------------------------------------------------------------------\n   * jQuery\n   * ------------------------------------------------------------------------\n   * add .Dropdown to jQuery only if jQuery is present\n   */\n\n  defineJQueryPlugin(Dropdown);\n\n  /**\n   * --------------------------------------------------------------------------\n   * Bootstrap (v5.1.3): util/scrollBar.js\n   * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n   * --------------------------------------------------------------------------\n   */\n  const SELECTOR_FIXED_CONTENT = '.fixed-top, .fixed-bottom, .is-fixed, .sticky-top';\n  const SELECTOR_STICKY_CONTENT = '.sticky-top';\n\n  class ScrollBarHelper {\n    constructor() {\n      this._element = document.body;\n    }\n\n    getWidth() {\n      // https://developer.mozilla.org/en-US/docs/Web/API/Window/innerWidth#usage_notes\n      const documentWidth = document.documentElement.clientWidth;\n      return Math.abs(window.innerWidth - documentWidth);\n    }\n\n    hide() {\n      const width = this.getWidth();\n\n      this._disableOverFlow(); // give padding to element to balance the hidden scrollbar width\n\n\n      this._setElementAttributes(this._element, 'paddingRight', calculatedValue => calculatedValue + width); // trick: We adjust positive paddingRight and negative marginRight to sticky-top elements to keep showing fullwidth\n\n\n      this._setElementAttributes(SELECTOR_FIXED_CONTENT, 'paddingRight', calculatedValue => calculatedValue + width);\n\n      this._setElementAttributes(SELECTOR_STICKY_CONTENT, 'marginRight', calculatedValue => calculatedValue - width);\n    }\n\n    _disableOverFlow() {\n      this._saveInitialAttribute(this._element, 'overflow');\n\n      this._element.style.overflow = 'hidden';\n    }\n\n    _setElementAttributes(selector, styleProp, callback) {\n      const scrollbarWidth = this.getWidth();\n\n      const manipulationCallBack = element => {\n        if (element !== this._element && window.innerWidth > element.clientWidth + scrollbarWidth) {\n          return;\n        }\n\n        this._saveInitialAttribute(element, styleProp);\n\n        const calculatedValue = window.getComputedStyle(element)[styleProp];\n        element.style[styleProp] = `${callback(Number.parseFloat(calculatedValue))}px`;\n      };\n\n      this._applyManipulationCallback(selector, manipulationCallBack);\n    }\n\n    reset() {\n      this._resetElementAttributes(this._element, 'overflow');\n\n      this._resetElementAttributes(this._element, 'paddingRight');\n\n      this._resetElementAttributes(SELECTOR_FIXED_CONTENT, 'paddingRight');\n\n      this._resetElementAttributes(SELECTOR_STICKY_CONTENT, 'marginRight');\n    }\n\n    _saveInitialAttribute(element, styleProp) {\n      const actualValue = element.style[styleProp];\n\n      if (actualValue) {\n        Manipulator.setDataAttribute(element, styleProp, actualValue);\n      }\n    }\n\n    _resetElementAttributes(selector, styleProp) {\n      const manipulationCallBack = element => {\n        const value = Manipulator.getDataAttribute(element, styleProp);\n\n        if (typeof value === 'undefined') {\n          element.style.removeProperty(styleProp);\n        } else {\n          Manipulator.removeDataAttribute(element, styleProp);\n          element.style[styleProp] = value;\n        }\n      };\n\n      this._applyManipulationCallback(selector, manipulationCallBack);\n    }\n\n    _applyManipulationCallback(selector, callBack) {\n      if (isElement(selector)) {\n        callBack(selector);\n      } else {\n        SelectorEngine.find(selector, this._element).forEach(callBack);\n      }\n    }\n\n    isOverflowing() {\n      return this.getWidth() > 0;\n    }\n\n  }\n\n  /**\n   * --------------------------------------------------------------------------\n   * Bootstrap (v5.1.3): util/backdrop.js\n   * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n   * --------------------------------------------------------------------------\n   */\n  const Default$7 = {\n    className: 'modal-backdrop',\n    isVisible: true,\n    // if false, we use the backdrop helper without adding any element to the dom\n    isAnimated: false,\n    rootElement: 'body',\n    // give the choice to place backdrop under different elements\n    clickCallback: null\n  };\n  const DefaultType$7 = {\n    className: 'string',\n    isVisible: 'boolean',\n    isAnimated: 'boolean',\n    rootElement: '(element|string)',\n    clickCallback: '(function|null)'\n  };\n  const NAME$8 = 'backdrop';\n  const CLASS_NAME_FADE$4 = 'fade';\n  const CLASS_NAME_SHOW$5 = 'show';\n  const EVENT_MOUSEDOWN = `mousedown.bs.${NAME$8}`;\n\n  class Backdrop {\n    constructor(config) {\n      this._config = this._getConfig(config);\n      this._isAppended = false;\n      this._element = null;\n    }\n\n    show(callback) {\n      if (!this._config.isVisible) {\n        execute(callback);\n        return;\n      }\n\n      this._append();\n\n      if (this._config.isAnimated) {\n        reflow(this._getElement());\n      }\n\n      this._getElement().classList.add(CLASS_NAME_SHOW$5);\n\n      this._emulateAnimation(() => {\n        execute(callback);\n      });\n    }\n\n    hide(callback) {\n      if (!this._config.isVisible) {\n        execute(callback);\n        return;\n      }\n\n      this._getElement().classList.remove(CLASS_NAME_SHOW$5);\n\n      this._emulateAnimation(() => {\n        this.dispose();\n        execute(callback);\n      });\n    } // Private\n\n\n    _getElement() {\n      if (!this._element) {\n        const backdrop = document.createElement('div');\n        backdrop.className = this._config.className;\n\n        if (this._config.isAnimated) {\n          backdrop.classList.add(CLASS_NAME_FADE$4);\n        }\n\n        this._element = backdrop;\n      }\n\n      return this._element;\n    }\n\n    _getConfig(config) {\n      config = { ...Default$7,\n        ...(typeof config === 'object' ? config : {})\n      }; // use getElement() with the default \"body\" to get a fresh Element on each instantiation\n\n      config.rootElement = getElement(config.rootElement);\n      typeCheckConfig(NAME$8, config, DefaultType$7);\n      return config;\n    }\n\n    _append() {\n      if (this._isAppended) {\n        return;\n      }\n\n      this._config.rootElement.append(this._getElement());\n\n      EventHandler.on(this._getElement(), EVENT_MOUSEDOWN, () => {\n        execute(this._config.clickCallback);\n      });\n      this._isAppended = true;\n    }\n\n    dispose() {\n      if (!this._isAppended) {\n        return;\n      }\n\n      EventHandler.off(this._element, EVENT_MOUSEDOWN);\n\n      this._element.remove();\n\n      this._isAppended = false;\n    }\n\n    _emulateAnimation(callback) {\n      executeAfterTransition(callback, this._getElement(), this._config.isAnimated);\n    }\n\n  }\n\n  /**\n   * --------------------------------------------------------------------------\n   * Bootstrap (v5.1.3): util/focustrap.js\n   * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n   * --------------------------------------------------------------------------\n   */\n  const Default$6 = {\n    trapElement: null,\n    // The element to trap focus inside of\n    autofocus: true\n  };\n  const DefaultType$6 = {\n    trapElement: 'element',\n    autofocus: 'boolean'\n  };\n  const NAME$7 = 'focustrap';\n  const DATA_KEY$7 = 'bs.focustrap';\n  const EVENT_KEY$7 = `.${DATA_KEY$7}`;\n  const EVENT_FOCUSIN$1 = `focusin${EVENT_KEY$7}`;\n  const EVENT_KEYDOWN_TAB = `keydown.tab${EVENT_KEY$7}`;\n  const TAB_KEY = 'Tab';\n  const TAB_NAV_FORWARD = 'forward';\n  const TAB_NAV_BACKWARD = 'backward';\n\n  class FocusTrap {\n    constructor(config) {\n      this._config = this._getConfig(config);\n      this._isActive = false;\n      this._lastTabNavDirection = null;\n    }\n\n    activate() {\n      const {\n        trapElement,\n        autofocus\n      } = this._config;\n\n      if (this._isActive) {\n        return;\n      }\n\n      if (autofocus) {\n        trapElement.focus();\n      }\n\n      EventHandler.off(document, EVENT_KEY$7); // guard against infinite focus loop\n\n      EventHandler.on(document, EVENT_FOCUSIN$1, event => this._handleFocusin(event));\n      EventHandler.on(document, EVENT_KEYDOWN_TAB, event => this._handleKeydown(event));\n      this._isActive = true;\n    }\n\n    deactivate() {\n      if (!this._isActive) {\n        return;\n      }\n\n      this._isActive = false;\n      EventHandler.off(document, EVENT_KEY$7);\n    } // Private\n\n\n    _handleFocusin(event) {\n      const {\n        target\n      } = event;\n      const {\n        trapElement\n      } = this._config;\n\n      if (target === document || target === trapElement || trapElement.contains(target)) {\n        return;\n      }\n\n      const elements = SelectorEngine.focusableChildren(trapElement);\n\n      if (elements.length === 0) {\n        trapElement.focus();\n      } else if (this._lastTabNavDirection === TAB_NAV_BACKWARD) {\n        elements[elements.length - 1].focus();\n      } else {\n        elements[0].focus();\n      }\n    }\n\n    _handleKeydown(event) {\n      if (event.key !== TAB_KEY) {\n        return;\n      }\n\n      this._lastTabNavDirection = event.shiftKey ? TAB_NAV_BACKWARD : TAB_NAV_FORWARD;\n    }\n\n    _getConfig(config) {\n      config = { ...Default$6,\n        ...(typeof config === 'object' ? config : {})\n      };\n      typeCheckConfig(NAME$7, config, DefaultType$6);\n      return config;\n    }\n\n  }\n\n  /**\n   * --------------------------------------------------------------------------\n   * Bootstrap (v5.1.3): modal.js\n   * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n   * --------------------------------------------------------------------------\n   */\n  /**\n   * ------------------------------------------------------------------------\n   * Constants\n   * ------------------------------------------------------------------------\n   */\n\n  const NAME$6 = 'modal';\n  const DATA_KEY$6 = 'bs.modal';\n  const EVENT_KEY$6 = `.${DATA_KEY$6}`;\n  const DATA_API_KEY$3 = '.data-api';\n  const ESCAPE_KEY$1 = 'Escape';\n  const Default$5 = {\n    backdrop: true,\n    keyboard: true,\n    focus: true\n  };\n  const DefaultType$5 = {\n    backdrop: '(boolean|string)',\n    keyboard: 'boolean',\n    focus: 'boolean'\n  };\n  const EVENT_HIDE$3 = `hide${EVENT_KEY$6}`;\n  const EVENT_HIDE_PREVENTED = `hidePrevented${EVENT_KEY$6}`;\n  const EVENT_HIDDEN$3 = `hidden${EVENT_KEY$6}`;\n  const EVENT_SHOW$3 = `show${EVENT_KEY$6}`;\n  const EVENT_SHOWN$3 = `shown${EVENT_KEY$6}`;\n  const EVENT_RESIZE = `resize${EVENT_KEY$6}`;\n  const EVENT_CLICK_DISMISS = `click.dismiss${EVENT_KEY$6}`;\n  const EVENT_KEYDOWN_DISMISS$1 = `keydown.dismiss${EVENT_KEY$6}`;\n  const EVENT_MOUSEUP_DISMISS = `mouseup.dismiss${EVENT_KEY$6}`;\n  const EVENT_MOUSEDOWN_DISMISS = `mousedown.dismiss${EVENT_KEY$6}`;\n  const EVENT_CLICK_DATA_API$2 = `click${EVENT_KEY$6}${DATA_API_KEY$3}`;\n  const CLASS_NAME_OPEN = 'modal-open';\n  const CLASS_NAME_FADE$3 = 'fade';\n  const CLASS_NAME_SHOW$4 = 'show';\n  const CLASS_NAME_STATIC = 'modal-static';\n  const OPEN_SELECTOR$1 = '.modal.show';\n  const SELECTOR_DIALOG = '.modal-dialog';\n  const SELECTOR_MODAL_BODY = '.modal-body';\n  const SELECTOR_DATA_TOGGLE$2 = '[data-bs-toggle=\"modal\"]';\n  /**\n   * ------------------------------------------------------------------------\n   * Class Definition\n   * ------------------------------------------------------------------------\n   */\n\n  class Modal extends BaseComponent {\n    constructor(element, config) {\n      super(element);\n      this._config = this._getConfig(config);\n      this._dialog = SelectorEngine.findOne(SELECTOR_DIALOG, this._element);\n      this._backdrop = this._initializeBackDrop();\n      this._focustrap = this._initializeFocusTrap();\n      this._isShown = false;\n      this._ignoreBackdropClick = false;\n      this._isTransitioning = false;\n      this._scrollBar = new ScrollBarHelper();\n    } // Getters\n\n\n    static get Default() {\n      return Default$5;\n    }\n\n    static get NAME() {\n      return NAME$6;\n    } // Public\n\n\n    toggle(relatedTarget) {\n      return this._isShown ? this.hide() : this.show(relatedTarget);\n    }\n\n    show(relatedTarget) {\n      if (this._isShown || this._isTransitioning) {\n        return;\n      }\n\n      const showEvent = EventHandler.trigger(this._element, EVENT_SHOW$3, {\n        relatedTarget\n      });\n\n      if (showEvent.defaultPrevented) {\n        return;\n      }\n\n      this._isShown = true;\n\n      if (this._isAnimated()) {\n        this._isTransitioning = true;\n      }\n\n      this._scrollBar.hide();\n\n      document.body.classList.add(CLASS_NAME_OPEN);\n\n      this._adjustDialog();\n\n      this._setEscapeEvent();\n\n      this._setResizeEvent();\n\n      EventHandler.on(this._dialog, EVENT_MOUSEDOWN_DISMISS, () => {\n        EventHandler.one(this._element, EVENT_MOUSEUP_DISMISS, event => {\n          if (event.target === this._element) {\n            this._ignoreBackdropClick = true;\n          }\n        });\n      });\n\n      this._showBackdrop(() => this._showElement(relatedTarget));\n    }\n\n    hide() {\n      if (!this._isShown || this._isTransitioning) {\n        return;\n      }\n\n      const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE$3);\n\n      if (hideEvent.defaultPrevented) {\n        return;\n      }\n\n      this._isShown = false;\n\n      const isAnimated = this._isAnimated();\n\n      if (isAnimated) {\n        this._isTransitioning = true;\n      }\n\n      this._setEscapeEvent();\n\n      this._setResizeEvent();\n\n      this._focustrap.deactivate();\n\n      this._element.classList.remove(CLASS_NAME_SHOW$4);\n\n      EventHandler.off(this._element, EVENT_CLICK_DISMISS);\n      EventHandler.off(this._dialog, EVENT_MOUSEDOWN_DISMISS);\n\n      this._queueCallback(() => this._hideModal(), this._element, isAnimated);\n    }\n\n    dispose() {\n      [window, this._dialog].forEach(htmlElement => EventHandler.off(htmlElement, EVENT_KEY$6));\n\n      this._backdrop.dispose();\n\n      this._focustrap.deactivate();\n\n      super.dispose();\n    }\n\n    handleUpdate() {\n      this._adjustDialog();\n    } // Private\n\n\n    _initializeBackDrop() {\n      return new Backdrop({\n        isVisible: Boolean(this._config.backdrop),\n        // 'static' option will be translated to true, and booleans will keep their value\n        isAnimated: this._isAnimated()\n      });\n    }\n\n    _initializeFocusTrap() {\n      return new FocusTrap({\n        trapElement: this._element\n      });\n    }\n\n    _getConfig(config) {\n      config = { ...Default$5,\n        ...Manipulator.getDataAttributes(this._element),\n        ...(typeof config === 'object' ? config : {})\n      };\n      typeCheckConfig(NAME$6, config, DefaultType$5);\n      return config;\n    }\n\n    _showElement(relatedTarget) {\n      const isAnimated = this._isAnimated();\n\n      const modalBody = SelectorEngine.findOne(SELECTOR_MODAL_BODY, this._dialog);\n\n      if (!this._element.parentNode || this._element.parentNode.nodeType !== Node.ELEMENT_NODE) {\n        // Don't move modal's DOM position\n        document.body.append(this._element);\n      }\n\n      this._element.style.display = 'block';\n\n      this._element.removeAttribute('aria-hidden');\n\n      this._element.setAttribute('aria-modal', true);\n\n      this._element.setAttribute('role', 'dialog');\n\n      this._element.scrollTop = 0;\n\n      if (modalBody) {\n        modalBody.scrollTop = 0;\n      }\n\n      if (isAnimated) {\n        reflow(this._element);\n      }\n\n      this._element.classList.add(CLASS_NAME_SHOW$4);\n\n      const transitionComplete = () => {\n        if (this._config.focus) {\n          this._focustrap.activate();\n        }\n\n        this._isTransitioning = false;\n        EventHandler.trigger(this._element, EVENT_SHOWN$3, {\n          relatedTarget\n        });\n      };\n\n      this._queueCallback(transitionComplete, this._dialog, isAnimated);\n    }\n\n    _setEscapeEvent() {\n      if (this._isShown) {\n        EventHandler.on(this._element, EVENT_KEYDOWN_DISMISS$1, event => {\n          if (this._config.keyboard && event.key === ESCAPE_KEY$1) {\n            event.preventDefault();\n            this.hide();\n          } else if (!this._config.keyboard && event.key === ESCAPE_KEY$1) {\n            this._triggerBackdropTransition();\n          }\n        });\n      } else {\n        EventHandler.off(this._element, EVENT_KEYDOWN_DISMISS$1);\n      }\n    }\n\n    _setResizeEvent() {\n      if (this._isShown) {\n        EventHandler.on(window, EVENT_RESIZE, () => this._adjustDialog());\n      } else {\n        EventHandler.off(window, EVENT_RESIZE);\n      }\n    }\n\n    _hideModal() {\n      this._element.style.display = 'none';\n\n      this._element.setAttribute('aria-hidden', true);\n\n      this._element.removeAttribute('aria-modal');\n\n      this._element.removeAttribute('role');\n\n      this._isTransitioning = false;\n\n      this._backdrop.hide(() => {\n        document.body.classList.remove(CLASS_NAME_OPEN);\n\n        this._resetAdjustments();\n\n        this._scrollBar.reset();\n\n        EventHandler.trigger(this._element, EVENT_HIDDEN$3);\n      });\n    }\n\n    _showBackdrop(callback) {\n      EventHandler.on(this._element, EVENT_CLICK_DISMISS, event => {\n        if (this._ignoreBackdropClick) {\n          this._ignoreBackdropClick = false;\n          return;\n        }\n\n        if (event.target !== event.currentTarget) {\n          return;\n        }\n\n        if (this._config.backdrop === true) {\n          this.hide();\n        } else if (this._config.backdrop === 'static') {\n          this._triggerBackdropTransition();\n        }\n      });\n\n      this._backdrop.show(callback);\n    }\n\n    _isAnimated() {\n      return this._element.classList.contains(CLASS_NAME_FADE$3);\n    }\n\n    _triggerBackdropTransition() {\n      const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE_PREVENTED);\n\n      if (hideEvent.defaultPrevented) {\n        return;\n      }\n\n      const {\n        classList,\n        scrollHeight,\n        style\n      } = this._element;\n      const isModalOverflowing = scrollHeight > document.documentElement.clientHeight; // return if the following background transition hasn't yet completed\n\n      if (!isModalOverflowing && style.overflowY === 'hidden' || classList.contains(CLASS_NAME_STATIC)) {\n        return;\n      }\n\n      if (!isModalOverflowing) {\n        style.overflowY = 'hidden';\n      }\n\n      classList.add(CLASS_NAME_STATIC);\n\n      this._queueCallback(() => {\n        classList.remove(CLASS_NAME_STATIC);\n\n        if (!isModalOverflowing) {\n          this._queueCallback(() => {\n            style.overflowY = '';\n          }, this._dialog);\n        }\n      }, this._dialog);\n\n      this._element.focus();\n    } // ----------------------------------------------------------------------\n    // the following methods are used to handle overflowing modals\n    // ----------------------------------------------------------------------\n\n\n    _adjustDialog() {\n      const isModalOverflowing = this._element.scrollHeight > document.documentElement.clientHeight;\n\n      const scrollbarWidth = this._scrollBar.getWidth();\n\n      const isBodyOverflowing = scrollbarWidth > 0;\n\n      if (!isBodyOverflowing && isModalOverflowing && !isRTL() || isBodyOverflowing && !isModalOverflowing && isRTL()) {\n        this._element.style.paddingLeft = `${scrollbarWidth}px`;\n      }\n\n      if (isBodyOverflowing && !isModalOverflowing && !isRTL() || !isBodyOverflowing && isModalOverflowing && isRTL()) {\n        this._element.style.paddingRight = `${scrollbarWidth}px`;\n      }\n    }\n\n    _resetAdjustments() {\n      this._element.style.paddingLeft = '';\n      this._element.style.paddingRight = '';\n    } // Static\n\n\n    static jQueryInterface(config, relatedTarget) {\n      return this.each(function () {\n        const data = Modal.getOrCreateInstance(this, config);\n\n        if (typeof config !== 'string') {\n          return;\n        }\n\n        if (typeof data[config] === 'undefined') {\n          throw new TypeError(`No method named \"${config}\"`);\n        }\n\n        data[config](relatedTarget);\n      });\n    }\n\n  }\n  /**\n   * ------------------------------------------------------------------------\n   * Data Api implementation\n   * ------------------------------------------------------------------------\n   */\n\n\n  EventHandler.on(document, EVENT_CLICK_DATA_API$2, SELECTOR_DATA_TOGGLE$2, function (event) {\n    const target = getElementFromSelector(this);\n\n    if (['A', 'AREA'].includes(this.tagName)) {\n      event.preventDefault();\n    }\n\n    EventHandler.one(target, EVENT_SHOW$3, showEvent => {\n      if (showEvent.defaultPrevented) {\n        // only register focus restorer if modal will actually get shown\n        return;\n      }\n\n      EventHandler.one(target, EVENT_HIDDEN$3, () => {\n        if (isVisible(this)) {\n          this.focus();\n        }\n      });\n    }); // avoid conflict when clicking moddal toggler while another one is open\n\n    const allReadyOpen = SelectorEngine.findOne(OPEN_SELECTOR$1);\n\n    if (allReadyOpen) {\n      Modal.getInstance(allReadyOpen).hide();\n    }\n\n    const data = Modal.getOrCreateInstance(target);\n    data.toggle(this);\n  });\n  enableDismissTrigger(Modal);\n  /**\n   * ------------------------------------------------------------------------\n   * jQuery\n   * ------------------------------------------------------------------------\n   * add .Modal to jQuery only if jQuery is present\n   */\n\n  defineJQueryPlugin(Modal);\n\n  /**\n   * --------------------------------------------------------------------------\n   * Bootstrap (v5.1.3): offcanvas.js\n   * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n   * --------------------------------------------------------------------------\n   */\n  /**\n   * ------------------------------------------------------------------------\n   * Constants\n   * ------------------------------------------------------------------------\n   */\n\n  const NAME$5 = 'offcanvas';\n  const DATA_KEY$5 = 'bs.offcanvas';\n  const EVENT_KEY$5 = `.${DATA_KEY$5}`;\n  const DATA_API_KEY$2 = '.data-api';\n  const EVENT_LOAD_DATA_API$1 = `load${EVENT_KEY$5}${DATA_API_KEY$2}`;\n  const ESCAPE_KEY = 'Escape';\n  const Default$4 = {\n    backdrop: true,\n    keyboard: true,\n    scroll: false\n  };\n  const DefaultType$4 = {\n    backdrop: 'boolean',\n    keyboard: 'boolean',\n    scroll: 'boolean'\n  };\n  const CLASS_NAME_SHOW$3 = 'show';\n  const CLASS_NAME_BACKDROP = 'offcanvas-backdrop';\n  const OPEN_SELECTOR = '.offcanvas.show';\n  const EVENT_SHOW$2 = `show${EVENT_KEY$5}`;\n  const EVENT_SHOWN$2 = `shown${EVENT_KEY$5}`;\n  const EVENT_HIDE$2 = `hide${EVENT_KEY$5}`;\n  const EVENT_HIDDEN$2 = `hidden${EVENT_KEY$5}`;\n  const EVENT_CLICK_DATA_API$1 = `click${EVENT_KEY$5}${DATA_API_KEY$2}`;\n  const EVENT_KEYDOWN_DISMISS = `keydown.dismiss${EVENT_KEY$5}`;\n  const SELECTOR_DATA_TOGGLE$1 = '[data-bs-toggle=\"offcanvas\"]';\n  /**\n   * ------------------------------------------------------------------------\n   * Class Definition\n   * ------------------------------------------------------------------------\n   */\n\n  class Offcanvas extends BaseComponent {\n    constructor(element, config) {\n      super(element);\n      this._config = this._getConfig(config);\n      this._isShown = false;\n      this._backdrop = this._initializeBackDrop();\n      this._focustrap = this._initializeFocusTrap();\n\n      this._addEventListeners();\n    } // Getters\n\n\n    static get NAME() {\n      return NAME$5;\n    }\n\n    static get Default() {\n      return Default$4;\n    } // Public\n\n\n    toggle(relatedTarget) {\n      return this._isShown ? this.hide() : this.show(relatedTarget);\n    }\n\n    show(relatedTarget) {\n      if (this._isShown) {\n        return;\n      }\n\n      const showEvent = EventHandler.trigger(this._element, EVENT_SHOW$2, {\n        relatedTarget\n      });\n\n      if (showEvent.defaultPrevented) {\n        return;\n      }\n\n      this._isShown = true;\n      this._element.style.visibility = 'visible';\n\n      this._backdrop.show();\n\n      if (!this._config.scroll) {\n        new ScrollBarHelper().hide();\n      }\n\n      this._element.removeAttribute('aria-hidden');\n\n      this._element.setAttribute('aria-modal', true);\n\n      this._element.setAttribute('role', 'dialog');\n\n      this._element.classList.add(CLASS_NAME_SHOW$3);\n\n      const completeCallBack = () => {\n        if (!this._config.scroll) {\n          this._focustrap.activate();\n        }\n\n        EventHandler.trigger(this._element, EVENT_SHOWN$2, {\n          relatedTarget\n        });\n      };\n\n      this._queueCallback(completeCallBack, this._element, true);\n    }\n\n    hide() {\n      if (!this._isShown) {\n        return;\n      }\n\n      const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE$2);\n\n      if (hideEvent.defaultPrevented) {\n        return;\n      }\n\n      this._focustrap.deactivate();\n\n      this._element.blur();\n\n      this._isShown = false;\n\n      this._element.classList.remove(CLASS_NAME_SHOW$3);\n\n      this._backdrop.hide();\n\n      const completeCallback = () => {\n        this._element.setAttribute('aria-hidden', true);\n\n        this._element.removeAttribute('aria-modal');\n\n        this._element.removeAttribute('role');\n\n        this._element.style.visibility = 'hidden';\n\n        if (!this._config.scroll) {\n          new ScrollBarHelper().reset();\n        }\n\n        EventHandler.trigger(this._element, EVENT_HIDDEN$2);\n      };\n\n      this._queueCallback(completeCallback, this._element, true);\n    }\n\n    dispose() {\n      this._backdrop.dispose();\n\n      this._focustrap.deactivate();\n\n      super.dispose();\n    } // Private\n\n\n    _getConfig(config) {\n      config = { ...Default$4,\n        ...Manipulator.getDataAttributes(this._element),\n        ...(typeof config === 'object' ? config : {})\n      };\n      typeCheckConfig(NAME$5, config, DefaultType$4);\n      return config;\n    }\n\n    _initializeBackDrop() {\n      return new Backdrop({\n        className: CLASS_NAME_BACKDROP,\n        isVisible: this._config.backdrop,\n        isAnimated: true,\n        rootElement: this._element.parentNode,\n        clickCallback: () => this.hide()\n      });\n    }\n\n    _initializeFocusTrap() {\n      return new FocusTrap({\n        trapElement: this._element\n      });\n    }\n\n    _addEventListeners() {\n      EventHandler.on(this._element, EVENT_KEYDOWN_DISMISS, event => {\n        if (this._config.keyboard && event.key === ESCAPE_KEY) {\n          this.hide();\n        }\n      });\n    } // Static\n\n\n    static jQueryInterface(config) {\n      return this.each(function () {\n        const data = Offcanvas.getOrCreateInstance(this, config);\n\n        if (typeof config !== 'string') {\n          return;\n        }\n\n        if (data[config] === undefined || config.startsWith('_') || config === 'constructor') {\n          throw new TypeError(`No method named \"${config}\"`);\n        }\n\n        data[config](this);\n      });\n    }\n\n  }\n  /**\n   * ------------------------------------------------------------------------\n   * Data Api implementation\n   * ------------------------------------------------------------------------\n   */\n\n\n  EventHandler.on(document, EVENT_CLICK_DATA_API$1, SELECTOR_DATA_TOGGLE$1, function (event) {\n    const target = getElementFromSelector(this);\n\n    if (['A', 'AREA'].includes(this.tagName)) {\n      event.preventDefault();\n    }\n\n    if (isDisabled(this)) {\n      return;\n    }\n\n    EventHandler.one(target, EVENT_HIDDEN$2, () => {\n      // focus on trigger when it is closed\n      if (isVisible(this)) {\n        this.focus();\n      }\n    }); // avoid conflict when clicking a toggler of an offcanvas, while another is open\n\n    const allReadyOpen = SelectorEngine.findOne(OPEN_SELECTOR);\n\n    if (allReadyOpen && allReadyOpen !== target) {\n      Offcanvas.getInstance(allReadyOpen).hide();\n    }\n\n    const data = Offcanvas.getOrCreateInstance(target);\n    data.toggle(this);\n  });\n  EventHandler.on(window, EVENT_LOAD_DATA_API$1, () => SelectorEngine.find(OPEN_SELECTOR).forEach(el => Offcanvas.getOrCreateInstance(el).show()));\n  enableDismissTrigger(Offcanvas);\n  /**\n   * ------------------------------------------------------------------------\n   * jQuery\n   * ------------------------------------------------------------------------\n   */\n\n  defineJQueryPlugin(Offcanvas);\n\n  /**\n   * --------------------------------------------------------------------------\n   * Bootstrap (v5.1.3): util/sanitizer.js\n   * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n   * --------------------------------------------------------------------------\n   */\n  const uriAttributes = new Set(['background', 'cite', 'href', 'itemtype', 'longdesc', 'poster', 'src', 'xlink:href']);\n  const ARIA_ATTRIBUTE_PATTERN = /^aria-[\\w-]*$/i;\n  /**\n   * A pattern that recognizes a commonly useful subset of URLs that are safe.\n   *\n   * Shoutout to Angular https://github.com/angular/angular/blob/12.2.x/packages/core/src/sanitization/url_sanitizer.ts\n   */\n\n  const SAFE_URL_PATTERN = /^(?:(?:https?|mailto|ftp|tel|file|sms):|[^#&/:?]*(?:[#/?]|$))/i;\n  /**\n   * A pattern that matches safe data URLs. Only matches image, video and audio types.\n   *\n   * Shoutout to Angular https://github.com/angular/angular/blob/12.2.x/packages/core/src/sanitization/url_sanitizer.ts\n   */\n\n  const DATA_URL_PATTERN = /^data:(?:image\\/(?:bmp|gif|jpeg|jpg|png|tiff|webp)|video\\/(?:mpeg|mp4|ogg|webm)|audio\\/(?:mp3|oga|ogg|opus));base64,[\\d+/a-z]+=*$/i;\n\n  const allowedAttribute = (attribute, allowedAttributeList) => {\n    const attributeName = attribute.nodeName.toLowerCase();\n\n    if (allowedAttributeList.includes(attributeName)) {\n      if (uriAttributes.has(attributeName)) {\n        return Boolean(SAFE_URL_PATTERN.test(attribute.nodeValue) || DATA_URL_PATTERN.test(attribute.nodeValue));\n      }\n\n      return true;\n    }\n\n    const regExp = allowedAttributeList.filter(attributeRegex => attributeRegex instanceof RegExp); // Check if a regular expression validates the attribute.\n\n    for (let i = 0, len = regExp.length; i < len; i++) {\n      if (regExp[i].test(attributeName)) {\n        return true;\n      }\n    }\n\n    return false;\n  };\n\n  const DefaultAllowlist = {\n    // Global attributes allowed on any supplied element below.\n    '*': ['class', 'dir', 'id', 'lang', 'role', ARIA_ATTRIBUTE_PATTERN],\n    a: ['target', 'href', 'title', 'rel'],\n    area: [],\n    b: [],\n    br: [],\n    col: [],\n    code: [],\n    div: [],\n    em: [],\n    hr: [],\n    h1: [],\n    h2: [],\n    h3: [],\n    h4: [],\n    h5: [],\n    h6: [],\n    i: [],\n    img: ['src', 'srcset', 'alt', 'title', 'width', 'height'],\n    li: [],\n    ol: [],\n    p: [],\n    pre: [],\n    s: [],\n    small: [],\n    span: [],\n    sub: [],\n    sup: [],\n    strong: [],\n    u: [],\n    ul: []\n  };\n  function sanitizeHtml(unsafeHtml, allowList, sanitizeFn) {\n    if (!unsafeHtml.length) {\n      return unsafeHtml;\n    }\n\n    if (sanitizeFn && typeof sanitizeFn === 'function') {\n      return sanitizeFn(unsafeHtml);\n    }\n\n    const domParser = new window.DOMParser();\n    const createdDocument = domParser.parseFromString(unsafeHtml, 'text/html');\n    const elements = [].concat(...createdDocument.body.querySelectorAll('*'));\n\n    for (let i = 0, len = elements.length; i < len; i++) {\n      const element = elements[i];\n      const elementName = element.nodeName.toLowerCase();\n\n      if (!Object.keys(allowList).includes(elementName)) {\n        element.remove();\n        continue;\n      }\n\n      const attributeList = [].concat(...element.attributes);\n      const allowedAttributes = [].concat(allowList['*'] || [], allowList[elementName] || []);\n      attributeList.forEach(attribute => {\n        if (!allowedAttribute(attribute, allowedAttributes)) {\n          element.removeAttribute(attribute.nodeName);\n        }\n      });\n    }\n\n    return createdDocument.body.innerHTML;\n  }\n\n  /**\n   * --------------------------------------------------------------------------\n   * Bootstrap (v5.1.3): tooltip.js\n   * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n   * --------------------------------------------------------------------------\n   */\n  /**\n   * ------------------------------------------------------------------------\n   * Constants\n   * ------------------------------------------------------------------------\n   */\n\n  const NAME$4 = 'tooltip';\n  const DATA_KEY$4 = 'bs.tooltip';\n  const EVENT_KEY$4 = `.${DATA_KEY$4}`;\n  const CLASS_PREFIX$1 = 'bs-tooltip';\n  const DISALLOWED_ATTRIBUTES = new Set(['sanitize', 'allowList', 'sanitizeFn']);\n  const DefaultType$3 = {\n    animation: 'boolean',\n    template: 'string',\n    title: '(string|element|function)',\n    trigger: 'string',\n    delay: '(number|object)',\n    html: 'boolean',\n    selector: '(string|boolean)',\n    placement: '(string|function)',\n    offset: '(array|string|function)',\n    container: '(string|element|boolean)',\n    fallbackPlacements: 'array',\n    boundary: '(string|element)',\n    customClass: '(string|function)',\n    sanitize: 'boolean',\n    sanitizeFn: '(null|function)',\n    allowList: 'object',\n    popperConfig: '(null|object|function)'\n  };\n  const AttachmentMap = {\n    AUTO: 'auto',\n    TOP: 'top',\n    RIGHT: isRTL() ? 'left' : 'right',\n    BOTTOM: 'bottom',\n    LEFT: isRTL() ? 'right' : 'left'\n  };\n  const Default$3 = {\n    animation: true,\n    template: '<div class=\"tooltip\" role=\"tooltip\">' + '<div class=\"tooltip-arrow\"></div>' + '<div class=\"tooltip-inner\"></div>' + '</div>',\n    trigger: 'hover focus',\n    title: '',\n    delay: 0,\n    html: false,\n    selector: false,\n    placement: 'top',\n    offset: [0, 0],\n    container: false,\n    fallbackPlacements: ['top', 'right', 'bottom', 'left'],\n    boundary: 'clippingParents',\n    customClass: '',\n    sanitize: true,\n    sanitizeFn: null,\n    allowList: DefaultAllowlist,\n    popperConfig: null\n  };\n  const Event$2 = {\n    HIDE: `hide${EVENT_KEY$4}`,\n    HIDDEN: `hidden${EVENT_KEY$4}`,\n    SHOW: `show${EVENT_KEY$4}`,\n    SHOWN: `shown${EVENT_KEY$4}`,\n    INSERTED: `inserted${EVENT_KEY$4}`,\n    CLICK: `click${EVENT_KEY$4}`,\n    FOCUSIN: `focusin${EVENT_KEY$4}`,\n    FOCUSOUT: `focusout${EVENT_KEY$4}`,\n    MOUSEENTER: `mouseenter${EVENT_KEY$4}`,\n    MOUSELEAVE: `mouseleave${EVENT_KEY$4}`\n  };\n  const CLASS_NAME_FADE$2 = 'fade';\n  const CLASS_NAME_MODAL = 'modal';\n  const CLASS_NAME_SHOW$2 = 'show';\n  const HOVER_STATE_SHOW = 'show';\n  const HOVER_STATE_OUT = 'out';\n  const SELECTOR_TOOLTIP_INNER = '.tooltip-inner';\n  const SELECTOR_MODAL = `.${CLASS_NAME_MODAL}`;\n  const EVENT_MODAL_HIDE = 'hide.bs.modal';\n  const TRIGGER_HOVER = 'hover';\n  const TRIGGER_FOCUS = 'focus';\n  const TRIGGER_CLICK = 'click';\n  const TRIGGER_MANUAL = 'manual';\n  /**\n   * ------------------------------------------------------------------------\n   * Class Definition\n   * ------------------------------------------------------------------------\n   */\n\n  class Tooltip extends BaseComponent {\n    constructor(element, config) {\n      if (typeof Popper__namespace === 'undefined') {\n        throw new TypeError('Bootstrap\\'s tooltips require Popper (https://popper.js.org)');\n      }\n\n      super(element); // private\n\n      this._isEnabled = true;\n      this._timeout = 0;\n      this._hoverState = '';\n      this._activeTrigger = {};\n      this._popper = null; // Protected\n\n      this._config = this._getConfig(config);\n      this.tip = null;\n\n      this._setListeners();\n    } // Getters\n\n\n    static get Default() {\n      return Default$3;\n    }\n\n    static get NAME() {\n      return NAME$4;\n    }\n\n    static get Event() {\n      return Event$2;\n    }\n\n    static get DefaultType() {\n      return DefaultType$3;\n    } // Public\n\n\n    enable() {\n      this._isEnabled = true;\n    }\n\n    disable() {\n      this._isEnabled = false;\n    }\n\n    toggleEnabled() {\n      this._isEnabled = !this._isEnabled;\n    }\n\n    toggle(event) {\n      if (!this._isEnabled) {\n        return;\n      }\n\n      if (event) {\n        const context = this._initializeOnDelegatedTarget(event);\n\n        context._activeTrigger.click = !context._activeTrigger.click;\n\n        if (context._isWithActiveTrigger()) {\n          context._enter(null, context);\n        } else {\n          context._leave(null, context);\n        }\n      } else {\n        if (this.getTipElement().classList.contains(CLASS_NAME_SHOW$2)) {\n          this._leave(null, this);\n\n          return;\n        }\n\n        this._enter(null, this);\n      }\n    }\n\n    dispose() {\n      clearTimeout(this._timeout);\n      EventHandler.off(this._element.closest(SELECTOR_MODAL), EVENT_MODAL_HIDE, this._hideModalHandler);\n\n      if (this.tip) {\n        this.tip.remove();\n      }\n\n      this._disposePopper();\n\n      super.dispose();\n    }\n\n    show() {\n      if (this._element.style.display === 'none') {\n        throw new Error('Please use show on visible elements');\n      }\n\n      if (!(this.isWithContent() && this._isEnabled)) {\n        return;\n      }\n\n      const showEvent = EventHandler.trigger(this._element, this.constructor.Event.SHOW);\n      const shadowRoot = findShadowRoot(this._element);\n      const isInTheDom = shadowRoot === null ? this._element.ownerDocument.documentElement.contains(this._element) : shadowRoot.contains(this._element);\n\n      if (showEvent.defaultPrevented || !isInTheDom) {\n        return;\n      } // A trick to recreate a tooltip in case a new title is given by using the NOT documented `data-bs-original-title`\n      // This will be removed later in favor of a `setContent` method\n\n\n      if (this.constructor.NAME === 'tooltip' && this.tip && this.getTitle() !== this.tip.querySelector(SELECTOR_TOOLTIP_INNER).innerHTML) {\n        this._disposePopper();\n\n        this.tip.remove();\n        this.tip = null;\n      }\n\n      const tip = this.getTipElement();\n      const tipId = getUID(this.constructor.NAME);\n      tip.setAttribute('id', tipId);\n\n      this._element.setAttribute('aria-describedby', tipId);\n\n      if (this._config.animation) {\n        tip.classList.add(CLASS_NAME_FADE$2);\n      }\n\n      const placement = typeof this._config.placement === 'function' ? this._config.placement.call(this, tip, this._element) : this._config.placement;\n\n      const attachment = this._getAttachment(placement);\n\n      this._addAttachmentClass(attachment);\n\n      const {\n        container\n      } = this._config;\n      Data.set(tip, this.constructor.DATA_KEY, this);\n\n      if (!this._element.ownerDocument.documentElement.contains(this.tip)) {\n        container.append(tip);\n        EventHandler.trigger(this._element, this.constructor.Event.INSERTED);\n      }\n\n      if (this._popper) {\n        this._popper.update();\n      } else {\n        this._popper = Popper__namespace.createPopper(this._element, tip, this._getPopperConfig(attachment));\n      }\n\n      tip.classList.add(CLASS_NAME_SHOW$2);\n\n      const customClass = this._resolvePossibleFunction(this._config.customClass);\n\n      if (customClass) {\n        tip.classList.add(...customClass.split(' '));\n      } // If this is a touch-enabled device we add extra\n      // empty mouseover listeners to the body's immediate children;\n      // only needed because of broken event delegation on iOS\n      // https://www.quirksmode.org/blog/archives/2014/02/mouse_event_bub.html\n\n\n      if ('ontouchstart' in document.documentElement) {\n        [].concat(...document.body.children).forEach(element => {\n          EventHandler.on(element, 'mouseover', noop);\n        });\n      }\n\n      const complete = () => {\n        const prevHoverState = this._hoverState;\n        this._hoverState = null;\n        EventHandler.trigger(this._element, this.constructor.Event.SHOWN);\n\n        if (prevHoverState === HOVER_STATE_OUT) {\n          this._leave(null, this);\n        }\n      };\n\n      const isAnimated = this.tip.classList.contains(CLASS_NAME_FADE$2);\n\n      this._queueCallback(complete, this.tip, isAnimated);\n    }\n\n    hide() {\n      if (!this._popper) {\n        return;\n      }\n\n      const tip = this.getTipElement();\n\n      const complete = () => {\n        if (this._isWithActiveTrigger()) {\n          return;\n        }\n\n        if (this._hoverState !== HOVER_STATE_SHOW) {\n          tip.remove();\n        }\n\n        this._cleanTipClass();\n\n        this._element.removeAttribute('aria-describedby');\n\n        EventHandler.trigger(this._element, this.constructor.Event.HIDDEN);\n\n        this._disposePopper();\n      };\n\n      const hideEvent = EventHandler.trigger(this._element, this.constructor.Event.HIDE);\n\n      if (hideEvent.defaultPrevented) {\n        return;\n      }\n\n      tip.classList.remove(CLASS_NAME_SHOW$2); // If this is a touch-enabled device we remove the extra\n      // empty mouseover listeners we added for iOS support\n\n      if ('ontouchstart' in document.documentElement) {\n        [].concat(...document.body.children).forEach(element => EventHandler.off(element, 'mouseover', noop));\n      }\n\n      this._activeTrigger[TRIGGER_CLICK] = false;\n      this._activeTrigger[TRIGGER_FOCUS] = false;\n      this._activeTrigger[TRIGGER_HOVER] = false;\n      const isAnimated = this.tip.classList.contains(CLASS_NAME_FADE$2);\n\n      this._queueCallback(complete, this.tip, isAnimated);\n\n      this._hoverState = '';\n    }\n\n    update() {\n      if (this._popper !== null) {\n        this._popper.update();\n      }\n    } // Protected\n\n\n    isWithContent() {\n      return Boolean(this.getTitle());\n    }\n\n    getTipElement() {\n      if (this.tip) {\n        return this.tip;\n      }\n\n      const element = document.createElement('div');\n      element.innerHTML = this._config.template;\n      const tip = element.children[0];\n      this.setContent(tip);\n      tip.classList.remove(CLASS_NAME_FADE$2, CLASS_NAME_SHOW$2);\n      this.tip = tip;\n      return this.tip;\n    }\n\n    setContent(tip) {\n      this._sanitizeAndSetContent(tip, this.getTitle(), SELECTOR_TOOLTIP_INNER);\n    }\n\n    _sanitizeAndSetContent(template, content, selector) {\n      const templateElement = SelectorEngine.findOne(selector, template);\n\n      if (!content && templateElement) {\n        templateElement.remove();\n        return;\n      } // we use append for html objects to maintain js events\n\n\n      this.setElementContent(templateElement, content);\n    }\n\n    setElementContent(element, content) {\n      if (element === null) {\n        return;\n      }\n\n      if (isElement(content)) {\n        content = getElement(content); // content is a DOM node or a jQuery\n\n        if (this._config.html) {\n          if (content.parentNode !== element) {\n            element.innerHTML = '';\n            element.append(content);\n          }\n        } else {\n          element.textContent = content.textContent;\n        }\n\n        return;\n      }\n\n      if (this._config.html) {\n        if (this._config.sanitize) {\n          content = sanitizeHtml(content, this._config.allowList, this._config.sanitizeFn);\n        }\n\n        element.innerHTML = content;\n      } else {\n        element.textContent = content;\n      }\n    }\n\n    getTitle() {\n      const title = this._element.getAttribute('data-bs-original-title') || this._config.title;\n\n      return this._resolvePossibleFunction(title);\n    }\n\n    updateAttachment(attachment) {\n      if (attachment === 'right') {\n        return 'end';\n      }\n\n      if (attachment === 'left') {\n        return 'start';\n      }\n\n      return attachment;\n    } // Private\n\n\n    _initializeOnDelegatedTarget(event, context) {\n      return context || this.constructor.getOrCreateInstance(event.delegateTarget, this._getDelegateConfig());\n    }\n\n    _getOffset() {\n      const {\n        offset\n      } = this._config;\n\n      if (typeof offset === 'string') {\n        return offset.split(',').map(val => Number.parseInt(val, 10));\n      }\n\n      if (typeof offset === 'function') {\n        return popperData => offset(popperData, this._element);\n      }\n\n      return offset;\n    }\n\n    _resolvePossibleFunction(content) {\n      return typeof content === 'function' ? content.call(this._element) : content;\n    }\n\n    _getPopperConfig(attachment) {\n      const defaultBsPopperConfig = {\n        placement: attachment,\n        modifiers: [{\n          name: 'flip',\n          options: {\n            fallbackPlacements: this._config.fallbackPlacements\n          }\n        }, {\n          name: 'offset',\n          options: {\n            offset: this._getOffset()\n          }\n        }, {\n          name: 'preventOverflow',\n          options: {\n            boundary: this._config.boundary\n          }\n        }, {\n          name: 'arrow',\n          options: {\n            element: `.${this.constructor.NAME}-arrow`\n          }\n        }, {\n          name: 'onChange',\n          enabled: true,\n          phase: 'afterWrite',\n          fn: data => this._handlePopperPlacementChange(data)\n        }],\n        onFirstUpdate: data => {\n          if (data.options.placement !== data.placement) {\n            this._handlePopperPlacementChange(data);\n          }\n        }\n      };\n      return { ...defaultBsPopperConfig,\n        ...(typeof this._config.popperConfig === 'function' ? this._config.popperConfig(defaultBsPopperConfig) : this._config.popperConfig)\n      };\n    }\n\n    _addAttachmentClass(attachment) {\n      this.getTipElement().classList.add(`${this._getBasicClassPrefix()}-${this.updateAttachment(attachment)}`);\n    }\n\n    _getAttachment(placement) {\n      return AttachmentMap[placement.toUpperCase()];\n    }\n\n    _setListeners() {\n      const triggers = this._config.trigger.split(' ');\n\n      triggers.forEach(trigger => {\n        if (trigger === 'click') {\n          EventHandler.on(this._element, this.constructor.Event.CLICK, this._config.selector, event => this.toggle(event));\n        } else if (trigger !== TRIGGER_MANUAL) {\n          const eventIn = trigger === TRIGGER_HOVER ? this.constructor.Event.MOUSEENTER : this.constructor.Event.FOCUSIN;\n          const eventOut = trigger === TRIGGER_HOVER ? this.constructor.Event.MOUSELEAVE : this.constructor.Event.FOCUSOUT;\n          EventHandler.on(this._element, eventIn, this._config.selector, event => this._enter(event));\n          EventHandler.on(this._element, eventOut, this._config.selector, event => this._leave(event));\n        }\n      });\n\n      this._hideModalHandler = () => {\n        if (this._element) {\n          this.hide();\n        }\n      };\n\n      EventHandler.on(this._element.closest(SELECTOR_MODAL), EVENT_MODAL_HIDE, this._hideModalHandler);\n\n      if (this._config.selector) {\n        this._config = { ...this._config,\n          trigger: 'manual',\n          selector: ''\n        };\n      } else {\n        this._fixTitle();\n      }\n    }\n\n    _fixTitle() {\n      const title = this._element.getAttribute('title');\n\n      const originalTitleType = typeof this._element.getAttribute('data-bs-original-title');\n\n      if (title || originalTitleType !== 'string') {\n        this._element.setAttribute('data-bs-original-title', title || '');\n\n        if (title && !this._element.getAttribute('aria-label') && !this._element.textContent) {\n          this._element.setAttribute('aria-label', title);\n        }\n\n        this._element.setAttribute('title', '');\n      }\n    }\n\n    _enter(event, context) {\n      context = this._initializeOnDelegatedTarget(event, context);\n\n      if (event) {\n        context._activeTrigger[event.type === 'focusin' ? TRIGGER_FOCUS : TRIGGER_HOVER] = true;\n      }\n\n      if (context.getTipElement().classList.contains(CLASS_NAME_SHOW$2) || context._hoverState === HOVER_STATE_SHOW) {\n        context._hoverState = HOVER_STATE_SHOW;\n        return;\n      }\n\n      clearTimeout(context._timeout);\n      context._hoverState = HOVER_STATE_SHOW;\n\n      if (!context._config.delay || !context._config.delay.show) {\n        context.show();\n        return;\n      }\n\n      context._timeout = setTimeout(() => {\n        if (context._hoverState === HOVER_STATE_SHOW) {\n          context.show();\n        }\n      }, context._config.delay.show);\n    }\n\n    _leave(event, context) {\n      context = this._initializeOnDelegatedTarget(event, context);\n\n      if (event) {\n        context._activeTrigger[event.type === 'focusout' ? TRIGGER_FOCUS : TRIGGER_HOVER] = context._element.contains(event.relatedTarget);\n      }\n\n      if (context._isWithActiveTrigger()) {\n        return;\n      }\n\n      clearTimeout(context._timeout);\n      context._hoverState = HOVER_STATE_OUT;\n\n      if (!context._config.delay || !context._config.delay.hide) {\n        context.hide();\n        return;\n      }\n\n      context._timeout = setTimeout(() => {\n        if (context._hoverState === HOVER_STATE_OUT) {\n          context.hide();\n        }\n      }, context._config.delay.hide);\n    }\n\n    _isWithActiveTrigger() {\n      for (const trigger in this._activeTrigger) {\n        if (this._activeTrigger[trigger]) {\n          return true;\n        }\n      }\n\n      return false;\n    }\n\n    _getConfig(config) {\n      const dataAttributes = Manipulator.getDataAttributes(this._element);\n      Object.keys(dataAttributes).forEach(dataAttr => {\n        if (DISALLOWED_ATTRIBUTES.has(dataAttr)) {\n          delete dataAttributes[dataAttr];\n        }\n      });\n      config = { ...this.constructor.Default,\n        ...dataAttributes,\n        ...(typeof config === 'object' && config ? config : {})\n      };\n      config.container = config.container === false ? document.body : getElement(config.container);\n\n      if (typeof config.delay === 'number') {\n        config.delay = {\n          show: config.delay,\n          hide: config.delay\n        };\n      }\n\n      if (typeof config.title === 'number') {\n        config.title = config.title.toString();\n      }\n\n      if (typeof config.content === 'number') {\n        config.content = config.content.toString();\n      }\n\n      typeCheckConfig(NAME$4, config, this.constructor.DefaultType);\n\n      if (config.sanitize) {\n        config.template = sanitizeHtml(config.template, config.allowList, config.sanitizeFn);\n      }\n\n      return config;\n    }\n\n    _getDelegateConfig() {\n      const config = {};\n\n      for (const key in this._config) {\n        if (this.constructor.Default[key] !== this._config[key]) {\n          config[key] = this._config[key];\n        }\n      } // In the future can be replaced with:\n      // const keysWithDifferentValues = Object.entries(this._config).filter(entry => this.constructor.Default[entry[0]] !== this._config[entry[0]])\n      // `Object.fromEntries(keysWithDifferentValues)`\n\n\n      return config;\n    }\n\n    _cleanTipClass() {\n      const tip = this.getTipElement();\n      const basicClassPrefixRegex = new RegExp(`(^|\\\\s)${this._getBasicClassPrefix()}\\\\S+`, 'g');\n      const tabClass = tip.getAttribute('class').match(basicClassPrefixRegex);\n\n      if (tabClass !== null && tabClass.length > 0) {\n        tabClass.map(token => token.trim()).forEach(tClass => tip.classList.remove(tClass));\n      }\n    }\n\n    _getBasicClassPrefix() {\n      return CLASS_PREFIX$1;\n    }\n\n    _handlePopperPlacementChange(popperData) {\n      const {\n        state\n      } = popperData;\n\n      if (!state) {\n        return;\n      }\n\n      this.tip = state.elements.popper;\n\n      this._cleanTipClass();\n\n      this._addAttachmentClass(this._getAttachment(state.placement));\n    }\n\n    _disposePopper() {\n      if (this._popper) {\n        this._popper.destroy();\n\n        this._popper = null;\n      }\n    } // Static\n\n\n    static jQueryInterface(config) {\n      return this.each(function () {\n        const data = Tooltip.getOrCreateInstance(this, config);\n\n        if (typeof config === 'string') {\n          if (typeof data[config] === 'undefined') {\n            throw new TypeError(`No method named \"${config}\"`);\n          }\n\n          data[config]();\n        }\n      });\n    }\n\n  }\n  /**\n   * ------------------------------------------------------------------------\n   * jQuery\n   * ------------------------------------------------------------------------\n   * add .Tooltip to jQuery only if jQuery is present\n   */\n\n\n  defineJQueryPlugin(Tooltip);\n\n  /**\n   * --------------------------------------------------------------------------\n   * Bootstrap (v5.1.3): popover.js\n   * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n   * --------------------------------------------------------------------------\n   */\n  /**\n   * ------------------------------------------------------------------------\n   * Constants\n   * ------------------------------------------------------------------------\n   */\n\n  const NAME$3 = 'popover';\n  const DATA_KEY$3 = 'bs.popover';\n  const EVENT_KEY$3 = `.${DATA_KEY$3}`;\n  const CLASS_PREFIX = 'bs-popover';\n  const Default$2 = { ...Tooltip.Default,\n    placement: 'right',\n    offset: [0, 8],\n    trigger: 'click',\n    content: '',\n    template: '<div class=\"popover\" role=\"tooltip\">' + '<div class=\"popover-arrow\"></div>' + '<h3 class=\"popover-header\"></h3>' + '<div class=\"popover-body\"></div>' + '</div>'\n  };\n  const DefaultType$2 = { ...Tooltip.DefaultType,\n    content: '(string|element|function)'\n  };\n  const Event$1 = {\n    HIDE: `hide${EVENT_KEY$3}`,\n    HIDDEN: `hidden${EVENT_KEY$3}`,\n    SHOW: `show${EVENT_KEY$3}`,\n    SHOWN: `shown${EVENT_KEY$3}`,\n    INSERTED: `inserted${EVENT_KEY$3}`,\n    CLICK: `click${EVENT_KEY$3}`,\n    FOCUSIN: `focusin${EVENT_KEY$3}`,\n    FOCUSOUT: `focusout${EVENT_KEY$3}`,\n    MOUSEENTER: `mouseenter${EVENT_KEY$3}`,\n    MOUSELEAVE: `mouseleave${EVENT_KEY$3}`\n  };\n  const SELECTOR_TITLE = '.popover-header';\n  const SELECTOR_CONTENT = '.popover-body';\n  /**\n   * ------------------------------------------------------------------------\n   * Class Definition\n   * ------------------------------------------------------------------------\n   */\n\n  class Popover extends Tooltip {\n    // Getters\n    static get Default() {\n      return Default$2;\n    }\n\n    static get NAME() {\n      return NAME$3;\n    }\n\n    static get Event() {\n      return Event$1;\n    }\n\n    static get DefaultType() {\n      return DefaultType$2;\n    } // Overrides\n\n\n    isWithContent() {\n      return this.getTitle() || this._getContent();\n    }\n\n    setContent(tip) {\n      this._sanitizeAndSetContent(tip, this.getTitle(), SELECTOR_TITLE);\n\n      this._sanitizeAndSetContent(tip, this._getContent(), SELECTOR_CONTENT);\n    } // Private\n\n\n    _getContent() {\n      return this._resolvePossibleFunction(this._config.content);\n    }\n\n    _getBasicClassPrefix() {\n      return CLASS_PREFIX;\n    } // Static\n\n\n    static jQueryInterface(config) {\n      return this.each(function () {\n        const data = Popover.getOrCreateInstance(this, config);\n\n        if (typeof config === 'string') {\n          if (typeof data[config] === 'undefined') {\n            throw new TypeError(`No method named \"${config}\"`);\n          }\n\n          data[config]();\n        }\n      });\n    }\n\n  }\n  /**\n   * ------------------------------------------------------------------------\n   * jQuery\n   * ------------------------------------------------------------------------\n   * add .Popover to jQuery only if jQuery is present\n   */\n\n\n  defineJQueryPlugin(Popover);\n\n  /**\n   * --------------------------------------------------------------------------\n   * Bootstrap (v5.1.3): scrollspy.js\n   * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n   * --------------------------------------------------------------------------\n   */\n  /**\n   * ------------------------------------------------------------------------\n   * Constants\n   * ------------------------------------------------------------------------\n   */\n\n  const NAME$2 = 'scrollspy';\n  const DATA_KEY$2 = 'bs.scrollspy';\n  const EVENT_KEY$2 = `.${DATA_KEY$2}`;\n  const DATA_API_KEY$1 = '.data-api';\n  const Default$1 = {\n    offset: 10,\n    method: 'auto',\n    target: ''\n  };\n  const DefaultType$1 = {\n    offset: 'number',\n    method: 'string',\n    target: '(string|element)'\n  };\n  const EVENT_ACTIVATE = `activate${EVENT_KEY$2}`;\n  const EVENT_SCROLL = `scroll${EVENT_KEY$2}`;\n  const EVENT_LOAD_DATA_API = `load${EVENT_KEY$2}${DATA_API_KEY$1}`;\n  const CLASS_NAME_DROPDOWN_ITEM = 'dropdown-item';\n  const CLASS_NAME_ACTIVE$1 = 'active';\n  const SELECTOR_DATA_SPY = '[data-bs-spy=\"scroll\"]';\n  const SELECTOR_NAV_LIST_GROUP$1 = '.nav, .list-group';\n  const SELECTOR_NAV_LINKS = '.nav-link';\n  const SELECTOR_NAV_ITEMS = '.nav-item';\n  const SELECTOR_LIST_ITEMS = '.list-group-item';\n  const SELECTOR_LINK_ITEMS = `${SELECTOR_NAV_LINKS}, ${SELECTOR_LIST_ITEMS}, .${CLASS_NAME_DROPDOWN_ITEM}`;\n  const SELECTOR_DROPDOWN$1 = '.dropdown';\n  const SELECTOR_DROPDOWN_TOGGLE$1 = '.dropdown-toggle';\n  const METHOD_OFFSET = 'offset';\n  const METHOD_POSITION = 'position';\n  /**\n   * ------------------------------------------------------------------------\n   * Class Definition\n   * ------------------------------------------------------------------------\n   */\n\n  class ScrollSpy extends BaseComponent {\n    constructor(element, config) {\n      super(element);\n      this._scrollElement = this._element.tagName === 'BODY' ? window : this._element;\n      this._config = this._getConfig(config);\n      this._offsets = [];\n      this._targets = [];\n      this._activeTarget = null;\n      this._scrollHeight = 0;\n      EventHandler.on(this._scrollElement, EVENT_SCROLL, () => this._process());\n      this.refresh();\n\n      this._process();\n    } // Getters\n\n\n    static get Default() {\n      return Default$1;\n    }\n\n    static get NAME() {\n      return NAME$2;\n    } // Public\n\n\n    refresh() {\n      const autoMethod = this._scrollElement === this._scrollElement.window ? METHOD_OFFSET : METHOD_POSITION;\n      const offsetMethod = this._config.method === 'auto' ? autoMethod : this._config.method;\n      const offsetBase = offsetMethod === METHOD_POSITION ? this._getScrollTop() : 0;\n      this._offsets = [];\n      this._targets = [];\n      this._scrollHeight = this._getScrollHeight();\n      const targets = SelectorEngine.find(SELECTOR_LINK_ITEMS, this._config.target);\n      targets.map(element => {\n        const targetSelector = getSelectorFromElement(element);\n        const target = targetSelector ? SelectorEngine.findOne(targetSelector) : null;\n\n        if (target) {\n          const targetBCR = target.getBoundingClientRect();\n\n          if (targetBCR.width || targetBCR.height) {\n            return [Manipulator[offsetMethod](target).top + offsetBase, targetSelector];\n          }\n        }\n\n        return null;\n      }).filter(item => item).sort((a, b) => a[0] - b[0]).forEach(item => {\n        this._offsets.push(item[0]);\n\n        this._targets.push(item[1]);\n      });\n    }\n\n    dispose() {\n      EventHandler.off(this._scrollElement, EVENT_KEY$2);\n      super.dispose();\n    } // Private\n\n\n    _getConfig(config) {\n      config = { ...Default$1,\n        ...Manipulator.getDataAttributes(this._element),\n        ...(typeof config === 'object' && config ? config : {})\n      };\n      config.target = getElement(config.target) || document.documentElement;\n      typeCheckConfig(NAME$2, config, DefaultType$1);\n      return config;\n    }\n\n    _getScrollTop() {\n      return this._scrollElement === window ? this._scrollElement.pageYOffset : this._scrollElement.scrollTop;\n    }\n\n    _getScrollHeight() {\n      return this._scrollElement.scrollHeight || Math.max(document.body.scrollHeight, document.documentElement.scrollHeight);\n    }\n\n    _getOffsetHeight() {\n      return this._scrollElement === window ? window.innerHeight : this._scrollElement.getBoundingClientRect().height;\n    }\n\n    _process() {\n      const scrollTop = this._getScrollTop() + this._config.offset;\n\n      const scrollHeight = this._getScrollHeight();\n\n      const maxScroll = this._config.offset + scrollHeight - this._getOffsetHeight();\n\n      if (this._scrollHeight !== scrollHeight) {\n        this.refresh();\n      }\n\n      if (scrollTop >= maxScroll) {\n        const target = this._targets[this._targets.length - 1];\n\n        if (this._activeTarget !== target) {\n          this._activate(target);\n        }\n\n        return;\n      }\n\n      if (this._activeTarget && scrollTop < this._offsets[0] && this._offsets[0] > 0) {\n        this._activeTarget = null;\n\n        this._clear();\n\n        return;\n      }\n\n      for (let i = this._offsets.length; i--;) {\n        const isActiveTarget = this._activeTarget !== this._targets[i] && scrollTop >= this._offsets[i] && (typeof this._offsets[i + 1] === 'undefined' || scrollTop < this._offsets[i + 1]);\n\n        if (isActiveTarget) {\n          this._activate(this._targets[i]);\n        }\n      }\n    }\n\n    _activate(target) {\n      this._activeTarget = target;\n\n      this._clear();\n\n      const queries = SELECTOR_LINK_ITEMS.split(',').map(selector => `${selector}[data-bs-target=\"${target}\"],${selector}[href=\"${target}\"]`);\n      const link = SelectorEngine.findOne(queries.join(','), this._config.target);\n      link.classList.add(CLASS_NAME_ACTIVE$1);\n\n      if (link.classList.contains(CLASS_NAME_DROPDOWN_ITEM)) {\n        SelectorEngine.findOne(SELECTOR_DROPDOWN_TOGGLE$1, link.closest(SELECTOR_DROPDOWN$1)).classList.add(CLASS_NAME_ACTIVE$1);\n      } else {\n        SelectorEngine.parents(link, SELECTOR_NAV_LIST_GROUP$1).forEach(listGroup => {\n          // Set triggered links parents as active\n          // With both <ul> and <nav> markup a parent is the previous sibling of any nav ancestor\n          SelectorEngine.prev(listGroup, `${SELECTOR_NAV_LINKS}, ${SELECTOR_LIST_ITEMS}`).forEach(item => item.classList.add(CLASS_NAME_ACTIVE$1)); // Handle special case when .nav-link is inside .nav-item\n\n          SelectorEngine.prev(listGroup, SELECTOR_NAV_ITEMS).forEach(navItem => {\n            SelectorEngine.children(navItem, SELECTOR_NAV_LINKS).forEach(item => item.classList.add(CLASS_NAME_ACTIVE$1));\n          });\n        });\n      }\n\n      EventHandler.trigger(this._scrollElement, EVENT_ACTIVATE, {\n        relatedTarget: target\n      });\n    }\n\n    _clear() {\n      SelectorEngine.find(SELECTOR_LINK_ITEMS, this._config.target).filter(node => node.classList.contains(CLASS_NAME_ACTIVE$1)).forEach(node => node.classList.remove(CLASS_NAME_ACTIVE$1));\n    } // Static\n\n\n    static jQueryInterface(config) {\n      return this.each(function () {\n        const data = ScrollSpy.getOrCreateInstance(this, config);\n\n        if (typeof config !== 'string') {\n          return;\n        }\n\n        if (typeof data[config] === 'undefined') {\n          throw new TypeError(`No method named \"${config}\"`);\n        }\n\n        data[config]();\n      });\n    }\n\n  }\n  /**\n   * ------------------------------------------------------------------------\n   * Data Api implementation\n   * ------------------------------------------------------------------------\n   */\n\n\n  EventHandler.on(window, EVENT_LOAD_DATA_API, () => {\n    SelectorEngine.find(SELECTOR_DATA_SPY).forEach(spy => new ScrollSpy(spy));\n  });\n  /**\n   * ------------------------------------------------------------------------\n   * jQuery\n   * ------------------------------------------------------------------------\n   * add .ScrollSpy to jQuery only if jQuery is present\n   */\n\n  defineJQueryPlugin(ScrollSpy);\n\n  /**\n   * --------------------------------------------------------------------------\n   * Bootstrap (v5.1.3): tab.js\n   * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n   * --------------------------------------------------------------------------\n   */\n  /**\n   * ------------------------------------------------------------------------\n   * Constants\n   * ------------------------------------------------------------------------\n   */\n\n  const NAME$1 = 'tab';\n  const DATA_KEY$1 = 'bs.tab';\n  const EVENT_KEY$1 = `.${DATA_KEY$1}`;\n  const DATA_API_KEY = '.data-api';\n  const EVENT_HIDE$1 = `hide${EVENT_KEY$1}`;\n  const EVENT_HIDDEN$1 = `hidden${EVENT_KEY$1}`;\n  const EVENT_SHOW$1 = `show${EVENT_KEY$1}`;\n  const EVENT_SHOWN$1 = `shown${EVENT_KEY$1}`;\n  const EVENT_CLICK_DATA_API = `click${EVENT_KEY$1}${DATA_API_KEY}`;\n  const CLASS_NAME_DROPDOWN_MENU = 'dropdown-menu';\n  const CLASS_NAME_ACTIVE = 'active';\n  const CLASS_NAME_FADE$1 = 'fade';\n  const CLASS_NAME_SHOW$1 = 'show';\n  const SELECTOR_DROPDOWN = '.dropdown';\n  const SELECTOR_NAV_LIST_GROUP = '.nav, .list-group';\n  const SELECTOR_ACTIVE = '.active';\n  const SELECTOR_ACTIVE_UL = ':scope > li > .active';\n  const SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"tab\"], [data-bs-toggle=\"pill\"], [data-bs-toggle=\"list\"]';\n  const SELECTOR_DROPDOWN_TOGGLE = '.dropdown-toggle';\n  const SELECTOR_DROPDOWN_ACTIVE_CHILD = ':scope > .dropdown-menu .active';\n  /**\n   * ------------------------------------------------------------------------\n   * Class Definition\n   * ------------------------------------------------------------------------\n   */\n\n  class Tab extends BaseComponent {\n    // Getters\n    static get NAME() {\n      return NAME$1;\n    } // Public\n\n\n    show() {\n      if (this._element.parentNode && this._element.parentNode.nodeType === Node.ELEMENT_NODE && this._element.classList.contains(CLASS_NAME_ACTIVE)) {\n        return;\n      }\n\n      let previous;\n      const target = getElementFromSelector(this._element);\n\n      const listElement = this._element.closest(SELECTOR_NAV_LIST_GROUP);\n\n      if (listElement) {\n        const itemSelector = listElement.nodeName === 'UL' || listElement.nodeName === 'OL' ? SELECTOR_ACTIVE_UL : SELECTOR_ACTIVE;\n        previous = SelectorEngine.find(itemSelector, listElement);\n        previous = previous[previous.length - 1];\n      }\n\n      const hideEvent = previous ? EventHandler.trigger(previous, EVENT_HIDE$1, {\n        relatedTarget: this._element\n      }) : null;\n      const showEvent = EventHandler.trigger(this._element, EVENT_SHOW$1, {\n        relatedTarget: previous\n      });\n\n      if (showEvent.defaultPrevented || hideEvent !== null && hideEvent.defaultPrevented) {\n        return;\n      }\n\n      this._activate(this._element, listElement);\n\n      const complete = () => {\n        EventHandler.trigger(previous, EVENT_HIDDEN$1, {\n          relatedTarget: this._element\n        });\n        EventHandler.trigger(this._element, EVENT_SHOWN$1, {\n          relatedTarget: previous\n        });\n      };\n\n      if (target) {\n        this._activate(target, target.parentNode, complete);\n      } else {\n        complete();\n      }\n    } // Private\n\n\n    _activate(element, container, callback) {\n      const activeElements = container && (container.nodeName === 'UL' || container.nodeName === 'OL') ? SelectorEngine.find(SELECTOR_ACTIVE_UL, container) : SelectorEngine.children(container, SELECTOR_ACTIVE);\n      const active = activeElements[0];\n      const isTransitioning = callback && active && active.classList.contains(CLASS_NAME_FADE$1);\n\n      const complete = () => this._transitionComplete(element, active, callback);\n\n      if (active && isTransitioning) {\n        active.classList.remove(CLASS_NAME_SHOW$1);\n\n        this._queueCallback(complete, element, true);\n      } else {\n        complete();\n      }\n    }\n\n    _transitionComplete(element, active, callback) {\n      if (active) {\n        active.classList.remove(CLASS_NAME_ACTIVE);\n        const dropdownChild = SelectorEngine.findOne(SELECTOR_DROPDOWN_ACTIVE_CHILD, active.parentNode);\n\n        if (dropdownChild) {\n          dropdownChild.classList.remove(CLASS_NAME_ACTIVE);\n        }\n\n        if (active.getAttribute('role') === 'tab') {\n          active.setAttribute('aria-selected', false);\n        }\n      }\n\n      element.classList.add(CLASS_NAME_ACTIVE);\n\n      if (element.getAttribute('role') === 'tab') {\n        element.setAttribute('aria-selected', true);\n      }\n\n      reflow(element);\n\n      if (element.classList.contains(CLASS_NAME_FADE$1)) {\n        element.classList.add(CLASS_NAME_SHOW$1);\n      }\n\n      let parent = element.parentNode;\n\n      if (parent && parent.nodeName === 'LI') {\n        parent = parent.parentNode;\n      }\n\n      if (parent && parent.classList.contains(CLASS_NAME_DROPDOWN_MENU)) {\n        const dropdownElement = element.closest(SELECTOR_DROPDOWN);\n\n        if (dropdownElement) {\n          SelectorEngine.find(SELECTOR_DROPDOWN_TOGGLE, dropdownElement).forEach(dropdown => dropdown.classList.add(CLASS_NAME_ACTIVE));\n        }\n\n        element.setAttribute('aria-expanded', true);\n      }\n\n      if (callback) {\n        callback();\n      }\n    } // Static\n\n\n    static jQueryInterface(config) {\n      return this.each(function () {\n        const data = Tab.getOrCreateInstance(this);\n\n        if (typeof config === 'string') {\n          if (typeof data[config] === 'undefined') {\n            throw new TypeError(`No method named \"${config}\"`);\n          }\n\n          data[config]();\n        }\n      });\n    }\n\n  }\n  /**\n   * ------------------------------------------------------------------------\n   * Data Api implementation\n   * ------------------------------------------------------------------------\n   */\n\n\n  EventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {\n    if (['A', 'AREA'].includes(this.tagName)) {\n      event.preventDefault();\n    }\n\n    if (isDisabled(this)) {\n      return;\n    }\n\n    const data = Tab.getOrCreateInstance(this);\n    data.show();\n  });\n  /**\n   * ------------------------------------------------------------------------\n   * jQuery\n   * ------------------------------------------------------------------------\n   * add .Tab to jQuery only if jQuery is present\n   */\n\n  defineJQueryPlugin(Tab);\n\n  /**\n   * --------------------------------------------------------------------------\n   * Bootstrap (v5.1.3): toast.js\n   * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n   * --------------------------------------------------------------------------\n   */\n  /**\n   * ------------------------------------------------------------------------\n   * Constants\n   * ------------------------------------------------------------------------\n   */\n\n  const NAME = 'toast';\n  const DATA_KEY = 'bs.toast';\n  const EVENT_KEY = `.${DATA_KEY}`;\n  const EVENT_MOUSEOVER = `mouseover${EVENT_KEY}`;\n  const EVENT_MOUSEOUT = `mouseout${EVENT_KEY}`;\n  const EVENT_FOCUSIN = `focusin${EVENT_KEY}`;\n  const EVENT_FOCUSOUT = `focusout${EVENT_KEY}`;\n  const EVENT_HIDE = `hide${EVENT_KEY}`;\n  const EVENT_HIDDEN = `hidden${EVENT_KEY}`;\n  const EVENT_SHOW = `show${EVENT_KEY}`;\n  const EVENT_SHOWN = `shown${EVENT_KEY}`;\n  const CLASS_NAME_FADE = 'fade';\n  const CLASS_NAME_HIDE = 'hide'; // @deprecated - kept here only for backwards compatibility\n\n  const CLASS_NAME_SHOW = 'show';\n  const CLASS_NAME_SHOWING = 'showing';\n  const DefaultType = {\n    animation: 'boolean',\n    autohide: 'boolean',\n    delay: 'number'\n  };\n  const Default = {\n    animation: true,\n    autohide: true,\n    delay: 5000\n  };\n  /**\n   * ------------------------------------------------------------------------\n   * Class Definition\n   * ------------------------------------------------------------------------\n   */\n\n  class Toast extends BaseComponent {\n    constructor(element, config) {\n      super(element);\n      this._config = this._getConfig(config);\n      this._timeout = null;\n      this._hasMouseInteraction = false;\n      this._hasKeyboardInteraction = false;\n\n      this._setListeners();\n    } // Getters\n\n\n    static get DefaultType() {\n      return DefaultType;\n    }\n\n    static get Default() {\n      return Default;\n    }\n\n    static get NAME() {\n      return NAME;\n    } // Public\n\n\n    show() {\n      const showEvent = EventHandler.trigger(this._element, EVENT_SHOW);\n\n      if (showEvent.defaultPrevented) {\n        return;\n      }\n\n      this._clearTimeout();\n\n      if (this._config.animation) {\n        this._element.classList.add(CLASS_NAME_FADE);\n      }\n\n      const complete = () => {\n        this._element.classList.remove(CLASS_NAME_SHOWING);\n\n        EventHandler.trigger(this._element, EVENT_SHOWN);\n\n        this._maybeScheduleHide();\n      };\n\n      this._element.classList.remove(CLASS_NAME_HIDE); // @deprecated\n\n\n      reflow(this._element);\n\n      this._element.classList.add(CLASS_NAME_SHOW);\n\n      this._element.classList.add(CLASS_NAME_SHOWING);\n\n      this._queueCallback(complete, this._element, this._config.animation);\n    }\n\n    hide() {\n      if (!this._element.classList.contains(CLASS_NAME_SHOW)) {\n        return;\n      }\n\n      const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE);\n\n      if (hideEvent.defaultPrevented) {\n        return;\n      }\n\n      const complete = () => {\n        this._element.classList.add(CLASS_NAME_HIDE); // @deprecated\n\n\n        this._element.classList.remove(CLASS_NAME_SHOWING);\n\n        this._element.classList.remove(CLASS_NAME_SHOW);\n\n        EventHandler.trigger(this._element, EVENT_HIDDEN);\n      };\n\n      this._element.classList.add(CLASS_NAME_SHOWING);\n\n      this._queueCallback(complete, this._element, this._config.animation);\n    }\n\n    dispose() {\n      this._clearTimeout();\n\n      if (this._element.classList.contains(CLASS_NAME_SHOW)) {\n        this._element.classList.remove(CLASS_NAME_SHOW);\n      }\n\n      super.dispose();\n    } // Private\n\n\n    _getConfig(config) {\n      config = { ...Default,\n        ...Manipulator.getDataAttributes(this._element),\n        ...(typeof config === 'object' && config ? config : {})\n      };\n      typeCheckConfig(NAME, config, this.constructor.DefaultType);\n      return config;\n    }\n\n    _maybeScheduleHide() {\n      if (!this._config.autohide) {\n        return;\n      }\n\n      if (this._hasMouseInteraction || this._hasKeyboardInteraction) {\n        return;\n      }\n\n      this._timeout = setTimeout(() => {\n        this.hide();\n      }, this._config.delay);\n    }\n\n    _onInteraction(event, isInteracting) {\n      switch (event.type) {\n        case 'mouseover':\n        case 'mouseout':\n          this._hasMouseInteraction = isInteracting;\n          break;\n\n        case 'focusin':\n        case 'focusout':\n          this._hasKeyboardInteraction = isInteracting;\n          break;\n      }\n\n      if (isInteracting) {\n        this._clearTimeout();\n\n        return;\n      }\n\n      const nextElement = event.relatedTarget;\n\n      if (this._element === nextElement || this._element.contains(nextElement)) {\n        return;\n      }\n\n      this._maybeScheduleHide();\n    }\n\n    _setListeners() {\n      EventHandler.on(this._element, EVENT_MOUSEOVER, event => this._onInteraction(event, true));\n      EventHandler.on(this._element, EVENT_MOUSEOUT, event => this._onInteraction(event, false));\n      EventHandler.on(this._element, EVENT_FOCUSIN, event => this._onInteraction(event, true));\n      EventHandler.on(this._element, EVENT_FOCUSOUT, event => this._onInteraction(event, false));\n    }\n\n    _clearTimeout() {\n      clearTimeout(this._timeout);\n      this._timeout = null;\n    } // Static\n\n\n    static jQueryInterface(config) {\n      return this.each(function () {\n        const data = Toast.getOrCreateInstance(this, config);\n\n        if (typeof config === 'string') {\n          if (typeof data[config] === 'undefined') {\n            throw new TypeError(`No method named \"${config}\"`);\n          }\n\n          data[config](this);\n        }\n      });\n    }\n\n  }\n\n  enableDismissTrigger(Toast);\n  /**\n   * ------------------------------------------------------------------------\n   * jQuery\n   * ------------------------------------------------------------------------\n   * add .Toast to jQuery only if jQuery is present\n   */\n\n  defineJQueryPlugin(Toast);\n\n  /**\n   * --------------------------------------------------------------------------\n   * Bootstrap (v5.1.3): index.umd.js\n   * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n   * --------------------------------------------------------------------------\n   */\n  const index_umd = {\n    Alert,\n    Button,\n    Carousel,\n    Collapse,\n    Dropdown,\n    Modal,\n    Offcanvas,\n    Popover,\n    ScrollSpy,\n    Tab,\n    Toast,\n    Tooltip\n  };\n\n  return index_umd;\n\n}));\n//# sourceMappingURL=bootstrap.js.map\n"
  },
  {
    "path": "application/public/css/css.css",
    "content": ""
  },
  {
    "path": "application/public/css/style.css",
    "content": ".whb {\n\tbackground-color: #fff;\n}\n\nsection title {\n    display: block;\n\n}\n\n.block {\n    width: 100%;\n    background: #faf4ea;\n    padding: 0.3rem 0.3rem;\n    border: 1px solid #e4dcd8;\n    position: relative;\n}\n\n.block h3 {\n    margin: 0 0 10px;\n}\n\n\n.authors-list {\n    margin-bottom: 10px;\n}\n\n.block .info {\n    color: #542a00;\n    margin-bottom: 5px;\n    font-size: 14px;\n    line-height: 20px;\n}\n\n\n.info dt {\n    float: left;\n    clear: left;\n    color: #000;\n    margin: 0 3px 0 0;\n}\n\n.bottom-line {\n    border-top: 1px dashed #e4dcd8;\n    margin-top: 5px;\n    margin-bottom: 5px;\n}\n\n.author {\n    line-height: 1.3em;\n    padding-right: 4px;\n    padding-left: 4px;\n    border-radius: 2px;\n    text-decoration: none;\n    margin: 2px 4px 2px 0;\n    color: #542a00;\n    padding: 2px;\n}\n\nsection {\n\ttext-align: justify;\n}\n\nsection p {\n\ttext-indent: 2em;\n}\n\nsection title {\n\ttext-align: center;\n\tfont-weight: bold;\n\tfont-size: 1.5 em;\n}\n\na:hover, a:visited, a:link, a:active {\n\ttext-decoration: none;\n}\nh3 {\n\tcolor: #334455;\n\ttext-decoration: none;\n}\n\n.book-link {\n\tcolor: #542a00;\n}\n.card-body {\n\tpadding: 0.3rem 0.3rem;\n}\n\nh4 {\n\tmargin-bottom: .1rem;\n}\n\n.cover {\n\tbox-shadow: 0 .125rem .25rem rgba(0,0,0,.9)!important;\n\tmax-height: 400px;\n}\n\n.book {\n\ttext-align: justify;\n}\n\n\ncanvas {\n\twidth: 100%;\n}\n\n.epub-view {\n\twidth: 100% !important;\n}\n\n.epub-view iframe {\n\twidth: 100% !important;\n\n}\n\n.divider {\n\tposition: relative;\n\tmargin-top: 1em;\n\tmargin-bottom: 1em;\n\theight: 1px;\n}\n\n.div-transparent:before {\n\tcontent: \"\";\n\tposition: absolute;\n\ttop: 0;\n\tleft: 5%;\n\tright: 5%;\n\twidth: 90%;\n\theight: 1px;\n\tbackground-image: linear-gradient(to right, transparent, rgb(48,49,51), transparent);\n}\n\n.div-arrow-down:after {\n\tcontent: \"\";\n\tposition: absolute;\n\tz-index: 1;\n\ttop: -7px;\n\tleft: calc(50% - 7px);\n\twidth: 14px;\n\theight: 14px;\n\ttransform: rotate(45deg);\n\tbackground-color: white;\n\tborder-bottom: 1px solid rgb(48,49,51);\n\tborder-right: 1px solid rgb(48,49,51);\n}\n\n.div-tab-down:after {\n\tcontent: \"\";\n\tposition: absolute;\n\tz-index: 1;\n\ttop: 0;\n\tleft: calc(50% - 10px);\n\twidth: 20px;\n\theight: 14px;\n\tbackground-color: white;\n\tborder-bottom: 1px solid rgb(48,49,51);\n\tborder-left: 1px solid rgb(48,49,51);\n\tborder-right: 1px solid rgb(48,49,51);\n\tborder-radius: 0 0 8px 8px;\n}\n\n.div-stopper:after {\n\tcontent: \"\";\n\tposition: absolute;\n\tz-index: 1;\n\ttop: -6px;\n\tleft: calc(50% - 7px);\n\twidth: 14px;\n\theight: 12px;\n\tbackground-color: white;\n\tborder-left: 1px solid rgb(48,49,51);\n\tborder-right: 1px solid rgb(48,49,51);\n}\n\n.div-dot:after {\n\tcontent: \"\";\n\tposition: absolute;\n\tz-index: 1;\n\ttop: -9px;\n\tleft: calc(50% - 9px);\n\twidth: 18px;\n\theight: 18px;\n\tbackground-color: #aaa ;\n\tborder: 1px solid rgb(48,49,51);\n\tborder-radius: 50%;\n\tbox-shadow: inset 0 0 0 2px white,\n\t\t\t\t\t0 0 0 4px white;\n}\n\ntitle  {\n\ttext-shadow: 0 2px white, 0 3px #777;\n\tmargin: 1em 0 0.5em 0;\n\tcolor: #343434;\n\tfont-family: 'Open Sans Condensed', sans-serif;\n\tfont-size: 1.5em;\n\tline-height: 1.8em;\n\ttext-align: center;\n\ttext-transform: uppercase;\n}\n\nsection section title {\n\tfont-size: 18px;\n\tline-height: 20px;\n\tmargin: 0;\n\ttext-shadow: none;\n\ttext-transform: none;\n\ttext-align: left;\n\tborder-top-left-radius: .25rem!important;\n\tborder-top-right-radius: .25rem!important;\n\tbackground: #ddd;\n\tdisplay: inline-block;\n\tpadding: 0.25em;\n\tborder-top: 1px solid #ddd;\n\tborder-right: 1px solid #ddd;\n\tborder-left: 1px solid #ddd;\n}\n\nsection1 section p {\n\tpadding: 0.5em;\n\tborder: 1px solid #ddd;\n\tborder-bottom-left-radius: .25rem!important;\n\tborder-bottom-right-radius: .25rem!important;\n\tborder-top-right-radius: .25rem!important;\n\tbackground: #eee;\n}\n\n.reader p {\n\tfont-family: Sentinel SSm A,Sentinel SSm B,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica,Arial,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol;\n\tfont-size: 1.2rem;\n\tfont-weight: 400;\n\tline-height: 1.7;\n\tcolor: #333;\n\tfont-family: sans-serif;\n\tmargin-bottom: 15px;\n}\n\n.fx {\n\tdisplay: block;\n\tmargin-bottom: 0.5em;\n\n}\n\n    .epub-container {\n      min-width: 320px;\n      margin: 0 auto;\n      position: relative;\n    }\n\n    .epub-container .epub-view > iframe {\n        background: white;\n        box-shadow: 0 0 4px #ccc;\n        /*margin: 10px;\n        padding: 20px;*/\n    }\n\n"
  },
  {
    "path": "application/public/extract_author.php",
    "content": "<?php\ninclude('../init.php');\n$cover = '';\nheader('Cache-Control: public, max-age=86400');\n\nfunction lastm($path) {\n\t$fmtimestamp = filemtime($path);\n\tif(isset($_SERVER['HTTP_IF_MODIFIED_SINCE']) && $fmtimestamp <= strtotime($_SERVER['HTTP_IF_MODIFIED_SINCE'])) {\n\t\theader($_SERVER['SERVER_PROTOCOL'] . ' 304 Not Modified');\n\t\tdie();\n\t} else {\n\t\theader(\"Expires: \" . gmdate(\"D, d M Y H:i:s\", filemtime($path) + 60*60*24) . \" GMT\");\n\t\theader(\"Last-Modified: \" . gmdate(\"D, d M Y H:i:s\", filemtime($path)) . \" GMT\");\n\n\t\techo file_get_contents($path);\n\t}\n}\n\nif (isset($_GET['id'])) {\n\t$id = $_GET['id'];\n} else {\n\t$id = 0;\n}\n$iid = $id;\n\nheader(\"Content-type: image/jpeg\");\n\nif (file_exists(ROOT_PATH . \"cache/authors/$id.jpg\")) {\n\tlastm(ROOT_PATH . \"cache/authors/$id.jpg\");\n\tdie();\n}\n\n$stmt = $dbh->prepare(\"SELECT file FROM libapics WHERE AvtorId=$id\");\n$stmt->execute();\n$f = $stmt->fetch();\n\nif (isset($f->file)) {\n\t$zip = new ZipArchive(); \n\tif ($zip->open(ROOT_PATH . \"cache/lib.a.attached.zip\")) {\n\t\t$f = $zip->getFromName($f->file);\n\t\tif (strlen($f) > 0) {\n\t\t\tfile_put_contents(ROOT_PATH . \"cache/authors/$id.jpg\", $f);\n\t\t\techo $f;\n\t\t\tdie();\n\t\t}\n\t}\n\t$zip->close();\n}\n\n"
  },
  {
    "path": "application/public/extract_cover.php",
    "content": "<?php\ninclude('../init.php');\n$cover = '';\n$q = 75;\nheader('Cache-Control: public, max-age=86400');\n\nfunction resizeCover($filename, $newwidth, $newheight){\n\t$i = imagecreatefromstring($filename);\n\t$width = imagesx($i);\n       \t$height = imagesy($i);\n    if($width > $height && $newheight < $height){\n        $newheight = (int)round($height / ($width / $newwidth));\n    } else if ($width < $height && $newwidth < $width) {\n        $newwidth = (int)round($width / ($height / $newheight));\n    } else {\n        $newwidth = (int)round($width);\n        $newheight = (int)round($height);\n    }\n    $thumb = imagecreatetruecolor($newwidth, $newheight);\n    imagecopyresized($thumb, $i, 0, 0, 0, 0, $newwidth, $newheight, $width, $height);\n    return $thumb;\n}\n\nfunction lastm($path) {\n\t$fmtimestamp = filemtime($path);\n\tif(isset($_SERVER['HTTP_IF_MODIFIED_SINCE']) && $fmtimestamp <= strtotime($_SERVER['HTTP_IF_MODIFIED_SINCE'])) {\n\t\theader($_SERVER['SERVER_PROTOCOL'] . ' 304 Not Modified');\n\t\tdie();\n\t} else {\n\t\theader(\"Expires: \" . gmdate(\"D, d M Y H:i:s\", filemtime($path) + 60*60*24) . \" GMT\");\n\t\theader(\"Last-Modified: \" . gmdate(\"D, d M Y H:i:s\", filemtime($path)) . \" GMT\");\n\n\t\techo file_get_contents($path);\n\t}\n}\n\n$small = isset($_GET['small']);\n\nif (isset($_GET['id'])) {\n\t$id = $_GET['id'];\n} else {\n\tif (isset($_GET['sid'])) {\n\t\t$id = $_GET['sid'];\n\t\t$small = true;\n\t}\n}\n$iid = $id;\n\nheader(\"Content-type: image/jpeg\");\n\nif ($small) {\n\tif (file_exists(ROOT_PATH . \"cache/covers/$id-small.jpg\")) {\n\t\tlastm(ROOT_PATH . \"cache/covers/$id-small.jpg\");\n\t\tdie();\n\t}\n} else {\n\tif (file_exists(ROOT_PATH . \"cache/covers/$id.jpg\")) {\n\t\tlastm(ROOT_PATH . \"cache/covers/$id.jpg\");\n\t\tdie();\n\t}\n}\n\n$stmt = $dbh->prepare(\"SELECT file FROM libbpics WHERE BookId=$id\");\n$stmt->execute();\n$f = $stmt->fetch();\n\nif (isset($f->file)) {\n\t$zip = new ZipArchive(); \n\tif ($zip->open(ROOT_PATH . \"cache/lib.b.attached.zip\")) {\n\t\t$f = $zip->getFromName($f->file);\n\t\tif (strlen($f) > 0) {\n\t\t\tfile_put_contents(ROOT_PATH . \"cache/covers/$id.jpg\", $f);\n\t\t\t$thm = resizeCover($f, 300, 400);\n\t\t\timagejpeg($thm, ROOT_PATH . \"cache/covers/$id-small.jpg\", 75);\n\t\t\timagedestroy($thm);\n\t\t\tif ($small) {\n\t\t\t\tif (file_exists(ROOT_PATH . \"cache/covers/$id-small.jpg\")) {\n\t\t\t\t\tlastm(ROOT_PATH . \"cache/covers/$id-small.jpg\");\n\t\t\t\tdie();\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\techo $f;\n\t\t\t\tdie();\n\t\t\t}\n\t\t}\n\t}\n\t$zip->close();\n}\n\n\n$stmt = $dbh->prepare(\"SELECT filetype FROM libbook WHERE bookid=$id LIMIT 1\");\n$stmt->execute();\n$type = trim($stmt->fetch()->filetype);\nif ($type == 'fb2') {\n\t$u = '0';\n} else {\n\t$u = '1';\n}\n\n$stmt = $dbh->prepare(\"SELECT * FROM book_zip WHERE $id BETWEEN start_id AND end_id AND usr=$u\");\n$stmt->execute();\n$zip_name = $stmt->fetch()->filename;\n$zip = new ZipArchive(); \n\n$result = $dbh->query(\"SELECT filename FROM libfilename where BookId=$id\")->fetch();\n\nif ($result) {\n    $filename = $result->filename;\n} else {\n    $filename = null;\n}\nif ($filename == '') {\n\t$filename = trim(\"$id.$type\");\n}\n\nif ($zip->open(ROOT_PATH . \"flibusta/\" . $zip_name)) {\n\t$f = $zip->getFromName(\"$filename\");\n}\n\n\nif ($type == 'fb2') {\n\t$fb2 = simplexml_load_string($f);\n\t$images = array();\n\tif (isset($fb2->binary)) {\n\t\tforeach ($fb2->binary as $binary) {\n\t\t\t$id = $binary->attributes()['id'];\t\t\n\t\t\tif (\n\t\t\t\t(strpos($id, \"cover\") !==  false) ||\n\t\t\t\t(strpos($id, \"jpg\") !==  false) ||\n\t\t\t\t(strpos($id, \"obloj\") !==  false)\n\t\t\t) {\n\t\t\t\t$cover = base64_decode($binary);\n\t\t\t}\n\t\t\t$images[\"$id\"] = $binary;\n\t\t}\n\t}\n\t$zip->close();\n}\n\nif ($type == 'epub') {\n\tfile_put_contents(ROOT_PATH . \"cache/tmp/$iid.tmp\", $f);\n\tinclude('/application/epub.php');\n\t$d = new EPub(ROOT_PATH . \"cache/tmp/$iid.tmp\");\n\t$im = $d->Cover();\n\tif ($im['found'] != '') {\n\t\t$cover = $im['data'];\n\t\tunlink(ROOT_PATH . \"cache/tmp/$iid.tmp\");\n\t} else {\n\t\techo file_get_contents('/application/none.jpg');\n\t}\n}\n\nif (strlen($cover) < 100) {\n\t$cover = file_get_contents('/application/none.jpg');\n\techo $cover;\n\tdie();\n} else {\n\tfile_put_contents(ROOT_PATH . \"cache/covers/$iid.jpg\", $cover);\n\t$thm = resizeCover($cover, 300, 400);\n\timagejpeg($thm, ROOT_PATH . \"cache/covers/$iid-small.jpg\", 75);\n\timagedestroy($thm);\n}\n\nif ($small) {\n\tif (file_exists(ROOT_PATH . \"cache/covers/$iid-small.jpg\")) {\n\t\tlastm(ROOT_PATH . \"cache/covers/$iid-small.jpg\");\n\t\tdie();\n\t}\n} else {\n\techo $cover;\n}\n\n"
  },
  {
    "path": "application/public/extract_usr.php",
    "content": "<?php\ninclude('../init.php');\n\nif (isset($_GET['id'])) {\n\t$id = $_GET['id'];\n} else {\n\t$id = 610095;\n}\n\n$book = DBO::query(\"SELECT libbook.Title BookTitle, libbook.FileType, libfilename.filename,\n\tCONCAT(libavtorname.LastName, ' ', libavtorname.FirstName) author_name\n\t\tFROM libbook \n\t\tLEFT JOIN libavtor USING(BookId) \n\t\tLEFT JOIN libavtorname USING(AvtorId) \n\t\tLEFT JOIN libfilename USING(BookId) \n\t\tWHERE libbook.BookId=\" . DBO::es($id))->fetchObject();\n\n$usr_filename = DBO::query(\"SELECT * FROM libfilename where BookId=$id\")->fetchObject();\n\n\nif ($usr_filename == '') {\n\t$usr_filename = trim(\"$id.$book->filetype\");\n}\n\n$zip_name = DBO::query(\"SELECT * FROM book_zip WHERE ($id BETWEEN start_id AND end_id) AND usr=1\")->fetchObject()->filename;\n$zip = new ZipArchive(); \n\nif ($zip->open(\"/work/fb/Flibusta.Net/\" . $zip_name)) {\n\t$filename = $book->author_name . \" - \" . $book->booktitle . \" \" . $book->filename . \".\" . trim($book->filetype);\n\n\theader('Content-Description: File Transfer');\n\theader('Content-Type: application/octet-stream');\n\theader('Content-Transfer-Encoding: binary');\n\theader('Expires: 0');\n\theader('Cache-Control: must-revalidate');\n\theader('Pragma: public');\n\theader('Content-Disposition: attachment; filename=' . basename(rawurlencode($filename)));\n\n\t$data = $zip->getFromName($usr_filename);\n\tif ($data == '') {\n\t\t$data = $zip->getFromName($usr_filename . \".zip\");\n\t}\n\n\techo $data;\n\t$zip->close();\n} else {\n\techo \"NO ZIP\";\n}\n\n\n"
  },
  {
    "path": "application/public/fb2.php",
    "content": "<?php\nif (isset($_GET['id'])) {\n\t$id = $_GET['id'];\n} else {\n\tdie();\n}\nerror_reporting(E_ALL);\ninclude('../init.php');\n\n$stmt = $dbh->prepare(\"SELECT libbook.Title BookTitle, \n\tCONCAT(libavtorname.LastName, ' ', libavtorname.FirstName) author_name\n\t\tFROM libbook \n\t\tLEFT JOIN libbannotations USING(BookId) \n\t\tLEFT JOIN libgenre USING(BookId) \n\t\tLEFT JOIN libgenrelist USING(GenreId) \n\t\tLEFT JOIN libseq USING(BookId) \n\t\tLEFT JOIN libavtor USING(BookId) \n\t\tLEFT JOIN libavtorname USING(AvtorId) \n\t\tLEFT JOIN libseqname USING(SeqId) WHERE libbook.BookId=:id\");\n$stmt->bindParam(\":id\", $id);\n$stmt->execute();\n$book = $stmt->fetch();\n\n\n$stmt = $dbh->prepare(\"SELECT * FROM book_zip WHERE $id BETWEEN start_id AND end_id AND usr=0\");\n$stmt->execute();\n$zip_name = $stmt->fetch()->filename;\n$zip = new ZipArchive();\n\nif ($zip->open(ROOT_PATH . \"flibusta/\" . $zip_name)) {\n\t$filename = $book->author_name . \" - \" . $book->booktitle . \" \" . $id . \".fb2\";\n\theader('Content-Description: File Transfer');\n\theader('Content-Type: application/octet-stream');\n\theader('Content-Disposition: attachment; filename=' . basename(rawurlencode($filename)));\n\theader('Content-Transfer-Encoding: binary');\n\theader('Expires: 0');\n\theader('Cache-Control: must-revalidate');\n\theader('Pragma: public');\n\techo $zip->getFromName(\"$id.fb2\");\n\t$zip->close();\n} else {\n\techo \"NO ZIP\";\n}\n\n\n\n"
  },
  {
    "path": "application/public/index.php",
    "content": "<?php\nob_start();\n\ninclude(\"../init.php\");\nsession_start();\ndecode_gurl($webroot);\n\n$user_name = 'Книжные полки';\nif (isset($_GET['login_uuid'])) {\n\t$_SESSION['user_uuid'] = $_GET['login_uuid'];\n}\n\nif (isset($_GET['delete_uuid'])) {\n\t$uu = $_GET['delete_uuid'];\n\t$stmt = $dbh->prepare(\"DELETE FROM fav_users WHERE user_uuid=:uuid\");\n\t$stmt->bindParam(\":uuid\", $uu);\n\t$stmt->execute();\n\t$st = $dbh->prepare(\"DELETE FROM fav WHERE user_uuid=:uuid\");\n\t$st->bindParam(\":uuid\", $uu);\n\t$st->execute();\n}\n\nif (isset($_GET['new_uuid'])) {\n\t$nname = trim($_GET['new_uuid']);\n\tif ($nname !== '') {\n\t\t$stmt = $dbh->prepare(\"INSERT INTO fav_users (user_uuid, name) VALUES (uuid_generate_v1(), :name)\");\n\t\t$stmt->bindParam(\":name\", $nname);\n\t\t$stmt->execute();\n\n\t\t$stmt = $dbh->prepare(\"SELECT user_uuid FROM fav_users WHERE name=:name LIMIT 1\");\n\t\t$stmt->bindParam(\":name\", $nname);\n\t\t$stmt->execute();\n\t\t$r = $stmt->fetch();\n\t\t$user_uuid = $r->user_uuid;\n\t\t$user_name = $nname;\n\t\t$_SESSION['user_uuid'] = $user_uuid;\n\t}\n}\n\nif (isset($_SESSION['user_uuid'])) {\n\t$user_uuid = $_SESSION['user_uuid'];\n\t$stmt = $dbh->prepare(\"SELECT * FROM fav_users WHERE user_uuid=:uuid\");\n\t$stmt->bindParam(\":uuid\", $user_uuid);\n\ttry {\n\t\t$stmt->execute();\n\t\t$user = $stmt->fetch();\n\t} catch (PDOException $e) {\n\t\t//\n\t}\n\t\n\tif (isset($user->name)) {\n\t\t$user_name = $user->name;\n\n\t\tif (isset($_GET['fav_book'])) {\n\t\t\t$id = intval($_GET['fav_book']);\n\t\t\t$st = $dbh->prepare(\"INSERT INTO fav (user_uuid, bookid) VALUES(:uuid, :id) ON CONFLICT DO NOTHING\");\n\t\t\t$st->bindParam(\":uuid\", $user_uuid);\n\t\t\t$st->bindParam(\":id\", $id);\n\t\t\t$st->execute();\n\t\t}\n\t\tif (isset($_GET['fav_author'])) {\n\t\t\t$id = intval($_GET['fav_author']);\n\t\t\t$st = $dbh->prepare(\"INSERT INTO fav (user_uuid, avtorid) VALUES(:uuid, :id) ON CONFLICT DO NOTHING\");\n\t\t\t$st->bindParam(\":uuid\", $user_uuid);\n\t\t\t$st->bindParam(\":id\", $id);\n\t\t\t$st->execute();\n\t\t}\n\t\tif (isset($_GET['fav_seq'])) {\n\t\t\t$id = intval($_GET['fav_seq']);\n\t\t\t$st = $dbh->prepare(\"DELETE FROM fav WHERE user_uuid=:uuid AND seqid=:id\");\n\t\t\t$st->bindParam(\":uuid\", $user_uuid);\n\t\t\t$st->bindParam(\":id\", $id);\n\t\t\t$st->execute();\n\t\t\t$st = $dbh->prepare(\"INSERT INTO fav (user_uuid, seqid) VALUES(:uuid, :id) ON CONFLICT DO NOTHING\");\n\t\t\t$st->bindParam(\":uuid\", $user_uuid);\n\t\t\t$st->bindParam(\":id\", $id);\n\t\t\t$st->execute();\n\t\t}\n\t\n\t\tif (isset($_GET['unfav_book'])) {\n\t\t\t$id = intval($_GET['unfav_book']);\n\t\t\t$st = $dbh->prepare(\"DELETE FROM fav WHERE user_uuid=:uuid AND bookid=:id\");\n\t\t\t$st->bindParam(\":uuid\", $user_uuid);\n\t\t\t$st->bindParam(\":id\", $id);\n\t\t\t$st->execute();\n\t\t}\n\t\tif (isset($_GET['unfav_author'])) {\n\t\t\t$id = intval($_GET['unfav_author']);\n\t\t\t$st = $dbh->prepare(\"DELETE FROM fav WHERE user_uuid=:uuid AND avtorid=:id\");\n\t\t\t$st->bindParam(\":uuid\", $user_uuid);\n\t\t\t$st->bindParam(\":id\", $id);\n\t\t\t$st->execute();\n\t\t}\n\t\tif (isset($_GET['unfav_seq'])) {\n\t\t\t$id = intval($_GET['unfav_seq']);\n\t\t\t$st = $dbh->prepare(\"DELETE FROM fav WHERE user_uuid=:uuid AND seqid=:id\");\n\t\t\t$st->bindParam(\":uuid\", $user_uuid);\n\t\t\t$st->bindParam(\":id\", $id);\n\t\t\t$st->execute();\n\t\t}\n\t} else {\n\t\tunset($_SESSION['user_uuid']);\n\t\t$user_name = 'Книжные полки';\n\t}\n} else {\n\t$user_uuid = '';\n}\n\nif (isset($_GET['sort'])) {\n\t$sort_mode = $_GET['sort'];\n} else {\n\t$sort_mode = 'abc';\n\tif ($url->action == '') {\n\t\t$sort_mode = 'date';\n\t}\n}\n\nif (isset($_GET['page'])) {\n\t$page = intval($_GET['page']);\n} else {\n\t$page = 0;\n}\n\n$start = $page * RECORDS_PAGE;\n$lang = 'ru';\n$filter = \"\";\n\nswitch ($sort_mode) {\n\tcase 'abc':\n\t\t$order = 'b.Title';\n\t\tbreak;\n\n\tcase 'author':\n\t\t$order = 'b.Title';\n\t\tbreak;\n\n\tcase 'date':\n\t\t$order = 'b.Time DESC';\n\t\tbreak;\n\n\tcase 'rating':\n\t\t$order = 'b.Title';\n\t\tbreak;\n}\n\nif ($url->mod == 'opds') {\n\tinclude(ROOT_PATH . \"/opds/index.php\");\n} else {\n\tinclude(ROOT_PATH . \"renderer.php\");\n}\n\n"
  },
  {
    "path": "application/public/js/EMFJS.bundle.js",
    "content": "(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"EMFJS\"] = factory();\n\telse\n\t\troot[\"EMFJS\"] = factory();\n})(this, function() {\nreturn /******/ (() => { // webpackBootstrap\n/******/ \t\"use strict\";\n/******/ \tvar __webpack_modules__ = ({\n\n/***/ \"./src/emfjs/Bitmap.ts\":\n/*!*****************************!*\\\n  !*** ./src/emfjs/Bitmap.ts ***!\n  \\*****************************/\n/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {\n\n__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"BitmapInfo\": () => (/* binding */ BitmapInfo),\n/* harmony export */   \"DIBitmap\": () => (/* binding */ DIBitmap)\n/* harmony export */ });\n/* harmony import */ var _Helper__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./Helper */ \"./src/emfjs/Helper.ts\");\n/*\n\nThe MIT License (MIT)\n\nCopyright (c) 2016 Tom Zoehner\nCopyright (c) 2018 Thomas Bluemel\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n\n*/\n\nvar BitmapCoreHeader = /** @class */ (function () {\n    function BitmapCoreHeader(reader, skipsize) {\n        if (skipsize) {\n            reader.skip(4);\n        }\n        this.width = reader.readUint16();\n        this.height = reader.readUint16();\n        this.planes = reader.readUint16();\n        this.bitcount = reader.readUint16();\n    }\n    BitmapCoreHeader.prototype.colors = function () {\n        return this.bitcount <= 8 ? 1 << this.bitcount : 0;\n    };\n    return BitmapCoreHeader;\n}());\nvar BitmapInfoHeader = /** @class */ (function () {\n    function BitmapInfoHeader(reader, skipsize) {\n        if (skipsize) {\n            reader.skip(4);\n        }\n        this.width = reader.readInt32();\n        this.height = reader.readInt32();\n        this.planes = reader.readUint16();\n        this.bitcount = reader.readUint16();\n        this.compression = reader.readUint32();\n        this.sizeimage = reader.readUint32();\n        this.xpelspermeter = reader.readInt32();\n        this.ypelspermeter = reader.readInt32();\n        this.clrused = reader.readUint32();\n        this.clrimportant = reader.readUint32();\n    }\n    BitmapInfoHeader.prototype.colors = function () {\n        if (this.clrused !== 0) {\n            return this.clrused < 256 ? this.clrused : 256;\n        }\n        else {\n            return this.bitcount > 8 ? 0 : 1 << this.bitcount;\n        }\n    };\n    return BitmapInfoHeader;\n}());\nvar BitmapInfo = /** @class */ (function () {\n    function BitmapInfo(reader, usergb) {\n        this._usergb = usergb;\n        var hdrsize = reader.readUint32();\n        this._infosize = hdrsize;\n        if (hdrsize === _Helper__WEBPACK_IMPORTED_MODULE_0__.Helper.GDI.BITMAPCOREHEADER_SIZE) {\n            this._header = new BitmapCoreHeader(reader, false);\n            this._infosize += this._header.colors() * (usergb ? 3 : 2);\n        }\n        else {\n            this._header = new BitmapInfoHeader(reader, false);\n            var masks = this._header.compression\n                === _Helper__WEBPACK_IMPORTED_MODULE_0__.Helper.GDI.BitmapCompression.BI_BITFIELDS ? 3 : 0;\n            if (hdrsize <= _Helper__WEBPACK_IMPORTED_MODULE_0__.Helper.GDI.BITMAPINFOHEADER_SIZE + (masks * 4)) {\n                this._infosize = _Helper__WEBPACK_IMPORTED_MODULE_0__.Helper.GDI.BITMAPINFOHEADER_SIZE + (masks * 4);\n            }\n            this._infosize += this._header.colors() * (usergb ? 4 : 2);\n        }\n    }\n    BitmapInfo.prototype.getWidth = function () {\n        return this._header.width;\n    };\n    BitmapInfo.prototype.getHeight = function () {\n        return Math.abs(this._header.height);\n    };\n    BitmapInfo.prototype.infosize = function () {\n        return this._infosize;\n    };\n    BitmapInfo.prototype.header = function () {\n        return this._header;\n    };\n    return BitmapInfo;\n}());\n\nvar DIBitmap = /** @class */ (function () {\n    function DIBitmap(reader, bitmapInfo) {\n        this._reader = reader;\n        this._offset = reader.pos;\n        this._location = bitmapInfo;\n        this._info = new BitmapInfo(reader, true);\n    }\n    DIBitmap.prototype.getWidth = function () {\n        return this._info.getWidth();\n    };\n    DIBitmap.prototype.getHeight = function () {\n        return this._info.getHeight();\n    };\n    DIBitmap.prototype.totalSize = function () {\n        return this._location.header.size + this._location.data.size;\n    };\n    DIBitmap.prototype.makeBitmapFileHeader = function () {\n        var buf = new ArrayBuffer(14);\n        var view = new Uint8Array(buf);\n        view[0] = 0x42;\n        view[1] = 0x4d;\n        _Helper__WEBPACK_IMPORTED_MODULE_0__.Helper._writeUint32Val(view, 2, this.totalSize() + 14);\n        _Helper__WEBPACK_IMPORTED_MODULE_0__.Helper._writeUint32Val(view, 10, this._info.infosize() + 14);\n        return _Helper__WEBPACK_IMPORTED_MODULE_0__.Helper._blobToBinary(view);\n    };\n    DIBitmap.prototype.base64ref = function () {\n        var prevpos = this._reader.pos;\n        this._reader.seek(this._offset);\n        var mime = \"image/bmp\";\n        var header = this._info.header();\n        var data;\n        if (header instanceof BitmapInfoHeader && header.compression != null) {\n            switch (header.compression) {\n                case _Helper__WEBPACK_IMPORTED_MODULE_0__.Helper.GDI.BitmapCompression.BI_JPEG:\n                    mime = \"data:image/jpeg\";\n                    break;\n                case _Helper__WEBPACK_IMPORTED_MODULE_0__.Helper.GDI.BitmapCompression.BI_PNG:\n                    mime = \"data:image/png\";\n                    break;\n                default:\n                    data = this.makeBitmapFileHeader();\n                    break;\n            }\n        }\n        else {\n            data = this.makeBitmapFileHeader();\n        }\n        this._reader.seek(this._location.header.offset);\n        if (data != null) {\n            data += this._reader.readBinary(this._location.header.size);\n        }\n        else {\n            data = this._reader.readBinary(this._location.header.size);\n        }\n        this._reader.seek(this._location.data.offset);\n        data += this._reader.readBinary(this._location.data.size);\n        var ref = \"data:\" + mime + \";base64,\" + btoa(data);\n        this._reader.seek(prevpos);\n        return ref;\n    };\n    return DIBitmap;\n}());\n\n\n\n/***/ }),\n\n/***/ \"./src/emfjs/Blob.ts\":\n/*!***************************!*\\\n  !*** ./src/emfjs/Blob.ts ***!\n  \\***************************/\n/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {\n\n__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"Blob\": () => (/* binding */ Blob)\n/* harmony export */ });\n/* harmony import */ var _Helper__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./Helper */ \"./src/emfjs/Helper.ts\");\n/*\n\nThe MIT License (MIT)\n\nCopyright (c) 2016 Tom Zoehner\nCopyright (c) 2018 Thomas Bluemel\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n\n*/\n\nvar Blob = /** @class */ (function () {\n    function Blob(blob, offset) {\n        if (blob instanceof Blob) {\n            this.blob = blob.blob;\n            this.data = blob.data;\n            this.pos = offset || blob.pos;\n        }\n        else {\n            this.blob = blob;\n            this.data = new Uint8Array(blob);\n            this.pos = offset || 0;\n        }\n    }\n    Blob.prototype.eof = function () {\n        return this.pos >= this.data.length;\n    };\n    Blob.prototype.seek = function (newpos) {\n        if (newpos < 0 || newpos > this.data.length) {\n            throw new _Helper__WEBPACK_IMPORTED_MODULE_0__.EMFJSError(\"Invalid seek position\");\n        }\n        this.pos = newpos;\n    };\n    Blob.prototype.skip = function (cnt) {\n        var newPos = this.pos + cnt;\n        if (newPos > this.data.length) {\n            throw new _Helper__WEBPACK_IMPORTED_MODULE_0__.EMFJSError(\"Unexpected end of file\");\n        }\n        this.pos = newPos;\n    };\n    Blob.prototype.readBinary = function (cnt) {\n        var end = this.pos + cnt;\n        if (end > this.data.length) {\n            throw new _Helper__WEBPACK_IMPORTED_MODULE_0__.EMFJSError(\"Unexpected end of file\");\n        }\n        var ret = \"\";\n        while (cnt-- > 0) {\n            ret += String.fromCharCode(this.data[this.pos++]);\n        }\n        return ret;\n    };\n    Blob.prototype.readInt8 = function () {\n        if (this.pos + 1 > this.data.length) {\n            throw new _Helper__WEBPACK_IMPORTED_MODULE_0__.EMFJSError(\"Unexpected end of file\");\n        }\n        return this.data[this.pos++];\n    };\n    Blob.prototype.readUint8 = function () {\n        return this.readInt8() >>> 0;\n    };\n    Blob.prototype.readInt32 = function () {\n        if (this.pos + 4 > this.data.length) {\n            throw new _Helper__WEBPACK_IMPORTED_MODULE_0__.EMFJSError(\"Unexpected end of file\");\n        }\n        var val = this.data[this.pos++];\n        val |= this.data[this.pos++] << 8;\n        val |= this.data[this.pos++] << 16;\n        val |= this.data[this.pos++] << 24;\n        return val;\n    };\n    Blob.prototype.readUint32 = function () {\n        return this.readInt32() >>> 0;\n    };\n    Blob.prototype.readUint16 = function () {\n        if (this.pos + 2 > this.data.length) {\n            throw new _Helper__WEBPACK_IMPORTED_MODULE_0__.EMFJSError(\"Unexpected end of file\");\n        }\n        var val = this.data[this.pos++];\n        val |= this.data[this.pos++] << 8;\n        return val;\n    };\n    Blob.prototype.readInt16 = function () {\n        var val = this.readUint16();\n        if (val > 32767) {\n            val -= 65536;\n        }\n        return val;\n    };\n    Blob.prototype.readString = function (length) {\n        if (this.pos + length > this.data.length) {\n            throw new _Helper__WEBPACK_IMPORTED_MODULE_0__.EMFJSError(\"Unexpected end of file\");\n        }\n        var ret = \"\";\n        for (var i = 0; i < length; i++) {\n            ret += String.fromCharCode(this.data[this.pos++] >>> 0);\n        }\n        return ret;\n    };\n    Blob.prototype.readNullTermString = function (maxSize) {\n        var ret = \"\";\n        if (maxSize > 0) {\n            maxSize--;\n            for (var i = 0; i < maxSize; i++) {\n                if (this.pos + i + 1 > this.data.length) {\n                    throw new _Helper__WEBPACK_IMPORTED_MODULE_0__.EMFJSError(\"Unexpected end of file\");\n                }\n                var byte = this.data[this.pos + i] >>> 0;\n                if (byte === 0) {\n                    break;\n                }\n                ret += String.fromCharCode(byte);\n            }\n        }\n        return ret;\n    };\n    Blob.prototype.readFixedSizeUnicodeString = function (fixedSizeChars) {\n        var ret = \"\";\n        for (var i = 0; i < fixedSizeChars; i++) {\n            var charCode = this.readUint16();\n            if (charCode === 0) {\n                if (++i < fixedSizeChars) {\n                    this.skip((fixedSizeChars - i) * 2);\n                }\n                break;\n            }\n            ret += String.fromCharCode(charCode);\n        }\n        return ret;\n    };\n    return Blob;\n}());\n\n\n\n/***/ }),\n\n/***/ \"./src/emfjs/EMFRecords.ts\":\n/*!*********************************!*\\\n  !*** ./src/emfjs/EMFRecords.ts ***!\n  \\*********************************/\n/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {\n\n__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"EMFRecords\": () => (/* binding */ EMFRecords)\n/* harmony export */ });\n/* harmony import */ var _Helper__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./Helper */ \"./src/emfjs/Helper.ts\");\n/* harmony import */ var _Primitives__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./Primitives */ \"./src/emfjs/Primitives.ts\");\n/* harmony import */ var _Region__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./Region */ \"./src/emfjs/Region.ts\");\n/* harmony import */ var _Style__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./Style */ \"./src/emfjs/Style.ts\");\n/*\n\nThe MIT License (MIT)\n\nCopyright (c) 2016 Tom Zoehner\nCopyright (c) 2018 Thomas Bluemel\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n\n*/\n\n\n\n\nvar EmfHeader = /** @class */ (function () {\n    function EmfHeader(reader, headerSize) {\n        var recordStart = reader.pos - 8;\n        this.size = headerSize;\n        this.bounds = new _Primitives__WEBPACK_IMPORTED_MODULE_1__.RectL(reader);\n        this.frame = new _Primitives__WEBPACK_IMPORTED_MODULE_1__.RectL(reader);\n        if (reader.readUint32() !== _Helper__WEBPACK_IMPORTED_MODULE_0__.Helper.GDI.FormatSignature.ENHMETA_SIGNATURE) {\n            throw new _Helper__WEBPACK_IMPORTED_MODULE_0__.EMFJSError(\"Invalid header signature\");\n        }\n        reader.skip(4); // version\n        reader.skip(4); // bytes (size of metafile)\n        reader.skip(4); // number of records\n        reader.skip(2); // number of handles\n        reader.skip(2); // reserved\n        var descriptionLen = reader.readUint32();\n        var descriptionOff = reader.readUint32();\n        this.nPalEntries = reader.readUint32();\n        this.refDevCx = reader.readUint32();\n        this.refDevCy = reader.readUint32();\n        this.refDevCxMm = reader.readUint32();\n        this.refDevCyMm = reader.readUint32();\n        var hdrSize = headerSize;\n        if (descriptionLen > 0) {\n            if (descriptionOff < 88) {\n                throw new _Helper__WEBPACK_IMPORTED_MODULE_0__.EMFJSError(\"Invalid header description offset\");\n            }\n            hdrSize = descriptionOff + (descriptionLen * 2);\n            if (hdrSize > headerSize) {\n                throw new _Helper__WEBPACK_IMPORTED_MODULE_0__.EMFJSError(\"Invalid header description length\");\n            }\n            var prevPos = reader.pos;\n            reader.seek(recordStart + descriptionOff);\n            this.description = reader.readFixedSizeUnicodeString(descriptionLen);\n            reader.seek(prevPos);\n        }\n        else {\n            this.description = \"\";\n        }\n        if (hdrSize >= 100) {\n            // We have a EmfMetafileHeaderExtension1 record\n            var pixelFormatSize = reader.readUint32();\n            var pixelFormatOff = reader.readUint32();\n            var haveOpenGl = reader.readUint32();\n            if (haveOpenGl !== 0) {\n                throw new _Helper__WEBPACK_IMPORTED_MODULE_0__.EMFJSError(\"OpenGL records are not yet supported\");\n            }\n            if (pixelFormatOff !== 0) {\n                if (pixelFormatOff < 100 || pixelFormatOff < hdrSize) {\n                    throw new _Helper__WEBPACK_IMPORTED_MODULE_0__.EMFJSError(\"Invalid pixel format offset\");\n                }\n                hdrSize = pixelFormatOff + pixelFormatSize;\n                if (hdrSize > headerSize) {\n                    throw new _Helper__WEBPACK_IMPORTED_MODULE_0__.EMFJSError(\"Invalid pixel format size\");\n                }\n                // TODO: read pixel format blob\n            }\n            if (hdrSize >= 108) {\n                // We have a EmfMetafileHeaderExtension2 record\n                this.displayDevCxUm = reader.readUint32(); // in micrometers\n                this.displayDevCyUm = reader.readUint32(); // in micrometers\n            }\n        }\n    }\n    EmfHeader.prototype.toString = function () {\n        return \"{bounds: \" + this.bounds.toString() + \", frame: \" + this.frame.toString()\n            + \", description: \" + this.description + \"}\";\n    };\n    return EmfHeader;\n}());\nvar EMFRecords = /** @class */ (function () {\n    function EMFRecords(reader, first) {\n        this._records = [];\n        this._header = new EmfHeader(reader, first);\n        var all = false;\n        var curpos = first;\n        var _loop_1 = function () {\n            reader.seek(curpos);\n            var type = reader.readUint32();\n            var size = reader.readUint32();\n            if (size < 8) {\n                throw new _Helper__WEBPACK_IMPORTED_MODULE_0__.EMFJSError(\"Invalid record size\");\n            }\n            switch (type) {\n                case _Helper__WEBPACK_IMPORTED_MODULE_0__.Helper.GDI.RecordType.EMR_EOF:\n                    all = true;\n                    return \"break-main_loop\";\n                case _Helper__WEBPACK_IMPORTED_MODULE_0__.Helper.GDI.RecordType.EMR_SETMAPMODE: {\n                    var mapMode_1 = reader.readInt32();\n                    this_1._records.push(function (gdi) {\n                        gdi.setMapMode(mapMode_1);\n                    });\n                    break;\n                }\n                case _Helper__WEBPACK_IMPORTED_MODULE_0__.Helper.GDI.RecordType.EMR_SETWINDOWORGEX: {\n                    var x_1 = reader.readInt32();\n                    var y_1 = reader.readInt32();\n                    this_1._records.push(function (gdi) {\n                        gdi.setWindowOrgEx(x_1, y_1);\n                    });\n                    break;\n                }\n                case _Helper__WEBPACK_IMPORTED_MODULE_0__.Helper.GDI.RecordType.EMR_SETWINDOWEXTEX: {\n                    var x_2 = reader.readUint32();\n                    var y_2 = reader.readUint32();\n                    this_1._records.push(function (gdi) {\n                        gdi.setWindowExtEx(x_2, y_2);\n                    });\n                    break;\n                }\n                case _Helper__WEBPACK_IMPORTED_MODULE_0__.Helper.GDI.RecordType.EMR_SETVIEWPORTORGEX: {\n                    var x_3 = reader.readInt32();\n                    var y_3 = reader.readInt32();\n                    this_1._records.push(function (gdi) {\n                        gdi.setViewportOrgEx(x_3, y_3);\n                    });\n                    break;\n                }\n                case _Helper__WEBPACK_IMPORTED_MODULE_0__.Helper.GDI.RecordType.EMR_SETVIEWPORTEXTEX: {\n                    var x_4 = reader.readUint32();\n                    var y_4 = reader.readUint32();\n                    this_1._records.push(function (gdi) {\n                        gdi.setViewportExtEx(x_4, y_4);\n                    });\n                    break;\n                }\n                case _Helper__WEBPACK_IMPORTED_MODULE_0__.Helper.GDI.RecordType.EMR_SAVEDC: {\n                    this_1._records.push(function (gdi) {\n                        gdi.saveDC();\n                    });\n                    break;\n                }\n                case _Helper__WEBPACK_IMPORTED_MODULE_0__.Helper.GDI.RecordType.EMR_RESTOREDC: {\n                    var saved_1 = reader.readInt32();\n                    this_1._records.push(function (gdi) {\n                        gdi.restoreDC(saved_1);\n                    });\n                    break;\n                }\n                case _Helper__WEBPACK_IMPORTED_MODULE_0__.Helper.GDI.RecordType.EMR_SETBKMODE: {\n                    var bkMode_1 = reader.readUint32();\n                    this_1._records.push(function (gdi) {\n                        gdi.setBkMode(bkMode_1);\n                    });\n                    break;\n                }\n                case _Helper__WEBPACK_IMPORTED_MODULE_0__.Helper.GDI.RecordType.EMR_SETBKCOLOR: {\n                    var bkColor_1 = new _Style__WEBPACK_IMPORTED_MODULE_3__.ColorRef(reader);\n                    this_1._records.push(function (gdi) {\n                        gdi.setBkColor(bkColor_1);\n                    });\n                    break;\n                }\n                case _Helper__WEBPACK_IMPORTED_MODULE_0__.Helper.GDI.RecordType.EMR_CREATEBRUSHINDIRECT: {\n                    var index_1 = reader.readUint32();\n                    var brush_1 = new _Style__WEBPACK_IMPORTED_MODULE_3__.Brush(reader);\n                    this_1._records.push(function (gdi) {\n                        gdi.createBrush(index_1, brush_1);\n                    });\n                    break;\n                }\n                case _Helper__WEBPACK_IMPORTED_MODULE_0__.Helper.GDI.RecordType.EMR_CREATEPEN: {\n                    var index_2 = reader.readUint32();\n                    var pen_1 = new _Style__WEBPACK_IMPORTED_MODULE_3__.Pen(reader, null);\n                    this_1._records.push(function (gdi) {\n                        gdi.createPen(index_2, pen_1);\n                    });\n                    break;\n                }\n                case _Helper__WEBPACK_IMPORTED_MODULE_0__.Helper.GDI.RecordType.EMR_EXTCREATEPEN: {\n                    var index_3 = reader.readUint32();\n                    var offBmi = reader.readUint32();\n                    var cbBmi = reader.readUint32();\n                    var offBits = reader.readUint32();\n                    var cbBits = reader.readUint32();\n                    var pen_2 = new _Style__WEBPACK_IMPORTED_MODULE_3__.Pen(reader, {\n                        header: {\n                            off: offBmi,\n                            size: cbBmi,\n                        },\n                        data: {\n                            off: offBits,\n                            size: cbBits,\n                        },\n                    });\n                    this_1._records.push(function (gdi) {\n                        gdi.createPen(index_3, pen_2);\n                    });\n                    break;\n                }\n                case _Helper__WEBPACK_IMPORTED_MODULE_0__.Helper.GDI.RecordType.EMR_SELECTOBJECT: {\n                    var idx_1 = reader.readUint32();\n                    this_1._records.push(function (gdi) {\n                        gdi.selectObject(idx_1, null);\n                    });\n                    break;\n                }\n                case _Helper__WEBPACK_IMPORTED_MODULE_0__.Helper.GDI.RecordType.EMR_DELETEOBJECT: {\n                    var idx_2 = reader.readUint32();\n                    this_1._records.push(function (gdi) {\n                        gdi.deleteObject(idx_2);\n                    });\n                    break;\n                }\n                case _Helper__WEBPACK_IMPORTED_MODULE_0__.Helper.GDI.RecordType.EMR_RECTANGLE: {\n                    var rect_1 = new _Primitives__WEBPACK_IMPORTED_MODULE_1__.RectL(reader);\n                    this_1._records.push(function (gdi) {\n                        gdi.rectangle(rect_1, 0, 0);\n                    });\n                    break;\n                }\n                case _Helper__WEBPACK_IMPORTED_MODULE_0__.Helper.GDI.RecordType.EMR_ROUNDRECT: {\n                    var rect_2 = new _Primitives__WEBPACK_IMPORTED_MODULE_1__.RectL(reader);\n                    var corner_1 = new _Primitives__WEBPACK_IMPORTED_MODULE_1__.SizeL(reader);\n                    this_1._records.push(function (gdi) {\n                        gdi.rectangle(rect_2, corner_1.cx, corner_1.cy);\n                    });\n                    break;\n                }\n                case _Helper__WEBPACK_IMPORTED_MODULE_0__.Helper.GDI.RecordType.EMR_LINETO: {\n                    var x_5 = reader.readInt32();\n                    var y_5 = reader.readInt32();\n                    this_1._records.push(function (gdi) {\n                        gdi.lineTo(x_5, y_5);\n                    });\n                    break;\n                }\n                case _Helper__WEBPACK_IMPORTED_MODULE_0__.Helper.GDI.RecordType.EMR_MOVETOEX: {\n                    var x_6 = reader.readInt32();\n                    var y_6 = reader.readInt32();\n                    this_1._records.push(function (gdi) {\n                        gdi.moveToEx(x_6, y_6);\n                    });\n                    break;\n                }\n                case _Helper__WEBPACK_IMPORTED_MODULE_0__.Helper.GDI.RecordType.EMR_POLYGON:\n                case _Helper__WEBPACK_IMPORTED_MODULE_0__.Helper.GDI.RecordType.EMR_POLYGON16: {\n                    var isSmall = (type === _Helper__WEBPACK_IMPORTED_MODULE_0__.Helper.GDI.RecordType.EMR_POLYGON16);\n                    var bounds_1 = new _Primitives__WEBPACK_IMPORTED_MODULE_1__.RectL(reader);\n                    var cnt = reader.readUint32();\n                    var points_1 = [];\n                    while (cnt > 0) {\n                        points_1.push(isSmall ? new _Primitives__WEBPACK_IMPORTED_MODULE_1__.PointS(reader) : new _Primitives__WEBPACK_IMPORTED_MODULE_1__.PointL(reader));\n                        cnt--;\n                    }\n                    this_1._records.push(function (gdi) {\n                        gdi.polygon(points_1, bounds_1, true);\n                    });\n                    break;\n                }\n                case _Helper__WEBPACK_IMPORTED_MODULE_0__.Helper.GDI.RecordType.EMR_POLYPOLYGON:\n                case _Helper__WEBPACK_IMPORTED_MODULE_0__.Helper.GDI.RecordType.EMR_POLYPOLYGON16: {\n                    var isSmall = (type === _Helper__WEBPACK_IMPORTED_MODULE_0__.Helper.GDI.RecordType.EMR_POLYPOLYGON16);\n                    var bounds_2 = new _Primitives__WEBPACK_IMPORTED_MODULE_1__.RectL(reader);\n                    var polyCnt = reader.readUint32();\n                    reader.skip(4); // count\n                    var polygonsPtCnts = [];\n                    for (var i = 0; i < polyCnt; i++) {\n                        polygonsPtCnts.push(reader.readUint32());\n                    }\n                    var polygons_1 = [];\n                    for (var i = 0; i < polyCnt; i++) {\n                        var ptCnt = polygonsPtCnts[i];\n                        var p = [];\n                        for (var ip = 0; ip < ptCnt; ip++) {\n                            p.push(isSmall ? new _Primitives__WEBPACK_IMPORTED_MODULE_1__.PointS(reader) : new _Primitives__WEBPACK_IMPORTED_MODULE_1__.PointL(reader));\n                        }\n                        polygons_1.push(p);\n                    }\n                    this_1._records.push(function (gdi) {\n                        gdi.polyPolygon(polygons_1, bounds_2);\n                    });\n                    break;\n                }\n                case _Helper__WEBPACK_IMPORTED_MODULE_0__.Helper.GDI.RecordType.EMR_SETPOLYFILLMODE: {\n                    var polyfillmode_1 = reader.readUint32();\n                    this_1._records.push(function (gdi) {\n                        gdi.setPolyFillMode(polyfillmode_1);\n                    });\n                    break;\n                }\n                case _Helper__WEBPACK_IMPORTED_MODULE_0__.Helper.GDI.RecordType.EMR_POLYLINE16:\n                case _Helper__WEBPACK_IMPORTED_MODULE_0__.Helper.GDI.RecordType.EMR_POLYLINETO16: {\n                    var isLineTo_1 = (type === _Helper__WEBPACK_IMPORTED_MODULE_0__.Helper.GDI.RecordType.EMR_POLYLINETO16);\n                    var bounds_3 = new _Primitives__WEBPACK_IMPORTED_MODULE_1__.RectL(reader);\n                    var cnt = reader.readUint32();\n                    var points_2 = [];\n                    while (cnt > 0) {\n                        points_2.push(new _Primitives__WEBPACK_IMPORTED_MODULE_1__.PointS(reader));\n                        cnt--;\n                    }\n                    this_1._records.push(function (gdi) {\n                        gdi.polyline(isLineTo_1, points_2, bounds_3);\n                    });\n                    break;\n                }\n                case _Helper__WEBPACK_IMPORTED_MODULE_0__.Helper.GDI.RecordType.EMR_POLYBEZIER:\n                case _Helper__WEBPACK_IMPORTED_MODULE_0__.Helper.GDI.RecordType.EMR_POLYBEZIERTO: {\n                    var isPolyBezierTo_1 = (type === _Helper__WEBPACK_IMPORTED_MODULE_0__.Helper.GDI.RecordType.EMR_POLYBEZIERTO);\n                    var bounds_4 = new _Primitives__WEBPACK_IMPORTED_MODULE_1__.RectL(reader);\n                    var cnt = reader.readUint32();\n                    var points_3 = [];\n                    while (cnt > 0) {\n                        points_3.push(new _Primitives__WEBPACK_IMPORTED_MODULE_1__.PointL(reader));\n                        cnt--;\n                    }\n                    this_1._records.push(function (gdi) {\n                        gdi.polybezier(isPolyBezierTo_1, points_3, bounds_4);\n                    });\n                    break;\n                }\n                case _Helper__WEBPACK_IMPORTED_MODULE_0__.Helper.GDI.RecordType.EMR_POLYBEZIER16: {\n                    var bounds_5 = new _Primitives__WEBPACK_IMPORTED_MODULE_1__.RectL(reader);\n                    var start = new _Primitives__WEBPACK_IMPORTED_MODULE_1__.PointL(reader);\n                    var cnt = reader.readUint32();\n                    var points_4 = [start];\n                    while (cnt > 0) {\n                        points_4.push(new _Primitives__WEBPACK_IMPORTED_MODULE_1__.PointS(reader));\n                        cnt--;\n                    }\n                    this_1._records.push(function (gdi) {\n                        gdi.polybezier(false, points_4, bounds_5);\n                    });\n                    break;\n                }\n                case _Helper__WEBPACK_IMPORTED_MODULE_0__.Helper.GDI.RecordType.EMR_POLYBEZIERTO16: {\n                    var bounds_6 = new _Primitives__WEBPACK_IMPORTED_MODULE_1__.RectL(reader);\n                    var cnt = reader.readUint32();\n                    var points_5 = [];\n                    while (cnt > 0) {\n                        points_5.push(new _Primitives__WEBPACK_IMPORTED_MODULE_1__.PointS(reader));\n                        cnt--;\n                    }\n                    this_1._records.push(function (gdi) {\n                        gdi.polybezier(true, points_5, bounds_6);\n                    });\n                    break;\n                }\n                case _Helper__WEBPACK_IMPORTED_MODULE_0__.Helper.GDI.RecordType.EMR_SETTEXTALIGN: {\n                    var textAlign_1 = reader.readUint32();\n                    this_1._records.push(function (gdi) {\n                        gdi.setTextAlign(textAlign_1);\n                    });\n                    break;\n                }\n                case _Helper__WEBPACK_IMPORTED_MODULE_0__.Helper.GDI.RecordType.EMR_SETSTRETCHBLTMODE: {\n                    var stretchMode_1 = reader.readUint32();\n                    this_1._records.push(function (gdi) {\n                        gdi.setStretchBltMode(stretchMode_1);\n                    });\n                    break;\n                }\n                case _Helper__WEBPACK_IMPORTED_MODULE_0__.Helper.GDI.RecordType.EMR_SETBRUSHORGEX: {\n                    var origin_1 = new _Primitives__WEBPACK_IMPORTED_MODULE_1__.PointL(reader);\n                    this_1._records.push(function (gdi) {\n                        gdi.setBrushOrgEx(origin_1);\n                    });\n                    break;\n                }\n                case _Helper__WEBPACK_IMPORTED_MODULE_0__.Helper.GDI.RecordType.EMR_BEGINPATH: {\n                    this_1._records.push(function (gdi) {\n                        gdi.beginPath();\n                    });\n                    break;\n                }\n                case _Helper__WEBPACK_IMPORTED_MODULE_0__.Helper.GDI.RecordType.EMR_ENDPATH: {\n                    this_1._records.push(function (gdi) {\n                        gdi.endPath();\n                    });\n                    break;\n                }\n                case _Helper__WEBPACK_IMPORTED_MODULE_0__.Helper.GDI.RecordType.EMR_ABORTPATH: {\n                    this_1._records.push(function (gdi) {\n                        gdi.abortPath();\n                    });\n                    break;\n                }\n                case _Helper__WEBPACK_IMPORTED_MODULE_0__.Helper.GDI.RecordType.EMR_CLOSEFIGURE: {\n                    this_1._records.push(function (gdi) {\n                        gdi.closeFigure();\n                    });\n                    break;\n                }\n                case _Helper__WEBPACK_IMPORTED_MODULE_0__.Helper.GDI.RecordType.EMR_FILLPATH: {\n                    var bounds_7 = new _Primitives__WEBPACK_IMPORTED_MODULE_1__.RectL(reader);\n                    this_1._records.push(function (gdi) {\n                        gdi.fillPath(bounds_7);\n                    });\n                    break;\n                }\n                case _Helper__WEBPACK_IMPORTED_MODULE_0__.Helper.GDI.RecordType.EMR_STROKEPATH: {\n                    var bounds_8 = new _Primitives__WEBPACK_IMPORTED_MODULE_1__.RectL(reader);\n                    this_1._records.push(function (gdi) {\n                        gdi.strokePath(bounds_8);\n                    });\n                    break;\n                }\n                case _Helper__WEBPACK_IMPORTED_MODULE_0__.Helper.GDI.RecordType.EMR_SELECTCLIPPATH: {\n                    var rgnMode_1 = reader.readUint32();\n                    this_1._records.push(function (gdi) {\n                        gdi.selectClipPath(rgnMode_1);\n                    });\n                    break;\n                }\n                case _Helper__WEBPACK_IMPORTED_MODULE_0__.Helper.GDI.RecordType.EMR_EXTSELECTCLIPRGN: {\n                    reader.skip(4);\n                    var rgnMode_2 = reader.readUint32();\n                    var region_1 = rgnMode_2 !== _Helper__WEBPACK_IMPORTED_MODULE_0__.Helper.GDI.RegionMode.RGN_COPY ? new _Region__WEBPACK_IMPORTED_MODULE_2__.Region(reader) : null;\n                    this_1._records.push(function (gdi) {\n                        gdi.selectClipRgn(rgnMode_2, region_1);\n                    });\n                    break;\n                }\n                case _Helper__WEBPACK_IMPORTED_MODULE_0__.Helper.GDI.RecordType.EMR_OFFSETCLIPRGN: {\n                    var offset_1 = new _Primitives__WEBPACK_IMPORTED_MODULE_1__.PointL(reader);\n                    this_1._records.push(function (gdi) {\n                        gdi.offsetClipRgn(offset_1);\n                    });\n                    break;\n                }\n                case _Helper__WEBPACK_IMPORTED_MODULE_0__.Helper.GDI.RecordType.EMR_SETMITERLIMIT: {\n                    var miterLimit_1 = reader.readUint32();\n                    this_1._records.push(function (gdi) {\n                        gdi.setMiterLimit(miterLimit_1);\n                    });\n                    break;\n                }\n                case _Helper__WEBPACK_IMPORTED_MODULE_0__.Helper.GDI.RecordType.EMR_POLYLINE:\n                case _Helper__WEBPACK_IMPORTED_MODULE_0__.Helper.GDI.RecordType.EMR_POLYLINETO:\n                case _Helper__WEBPACK_IMPORTED_MODULE_0__.Helper.GDI.RecordType.EMR_POLYPOLYLINE:\n                case _Helper__WEBPACK_IMPORTED_MODULE_0__.Helper.GDI.RecordType.EMR_SETPIXELV:\n                case _Helper__WEBPACK_IMPORTED_MODULE_0__.Helper.GDI.RecordType.EMR_SETMAPPERFLAGS:\n                case _Helper__WEBPACK_IMPORTED_MODULE_0__.Helper.GDI.RecordType.EMR_SETROP2:\n                case _Helper__WEBPACK_IMPORTED_MODULE_0__.Helper.GDI.RecordType.EMR_SETCOLORADJUSTMENT:\n                case _Helper__WEBPACK_IMPORTED_MODULE_0__.Helper.GDI.RecordType.EMR_SETTEXTCOLOR:\n                case _Helper__WEBPACK_IMPORTED_MODULE_0__.Helper.GDI.RecordType.EMR_SETMETARGN:\n                case _Helper__WEBPACK_IMPORTED_MODULE_0__.Helper.GDI.RecordType.EMR_EXCLUDECLIPRECT:\n                case _Helper__WEBPACK_IMPORTED_MODULE_0__.Helper.GDI.RecordType.EMR_INTERSECTCLIPRECT:\n                case _Helper__WEBPACK_IMPORTED_MODULE_0__.Helper.GDI.RecordType.EMR_SCALEVIEWPORTEXTEX:\n                case _Helper__WEBPACK_IMPORTED_MODULE_0__.Helper.GDI.RecordType.EMR_SCALEWINDOWEXTEX:\n                case _Helper__WEBPACK_IMPORTED_MODULE_0__.Helper.GDI.RecordType.EMR_SETWORLDTRANSFORM:\n                case _Helper__WEBPACK_IMPORTED_MODULE_0__.Helper.GDI.RecordType.EMR_MODIFYWORLDTRANSFORM:\n                case _Helper__WEBPACK_IMPORTED_MODULE_0__.Helper.GDI.RecordType.EMR_ANGLEARC:\n                case _Helper__WEBPACK_IMPORTED_MODULE_0__.Helper.GDI.RecordType.EMR_ELLIPSE:\n                case _Helper__WEBPACK_IMPORTED_MODULE_0__.Helper.GDI.RecordType.EMR_ARC:\n                case _Helper__WEBPACK_IMPORTED_MODULE_0__.Helper.GDI.RecordType.EMR_CHORD:\n                case _Helper__WEBPACK_IMPORTED_MODULE_0__.Helper.GDI.RecordType.EMR_PIE:\n                case _Helper__WEBPACK_IMPORTED_MODULE_0__.Helper.GDI.RecordType.EMR_SELECTPALETTE:\n                case _Helper__WEBPACK_IMPORTED_MODULE_0__.Helper.GDI.RecordType.EMR_CREATEPALETTE:\n                case _Helper__WEBPACK_IMPORTED_MODULE_0__.Helper.GDI.RecordType.EMR_SETPALETTEENTRIES:\n                case _Helper__WEBPACK_IMPORTED_MODULE_0__.Helper.GDI.RecordType.EMR_RESIZEPALETTE:\n                case _Helper__WEBPACK_IMPORTED_MODULE_0__.Helper.GDI.RecordType.EMR_REALIZEPALETTE:\n                case _Helper__WEBPACK_IMPORTED_MODULE_0__.Helper.GDI.RecordType.EMR_EXTFLOODFILL:\n                case _Helper__WEBPACK_IMPORTED_MODULE_0__.Helper.GDI.RecordType.EMR_ARCTO:\n                case _Helper__WEBPACK_IMPORTED_MODULE_0__.Helper.GDI.RecordType.EMR_POLYDRAW:\n                case _Helper__WEBPACK_IMPORTED_MODULE_0__.Helper.GDI.RecordType.EMR_SETARCDIRECTION:\n                case _Helper__WEBPACK_IMPORTED_MODULE_0__.Helper.GDI.RecordType.EMR_STROKEANDFILLPATH:\n                case _Helper__WEBPACK_IMPORTED_MODULE_0__.Helper.GDI.RecordType.EMR_FLATTENPATH:\n                case _Helper__WEBPACK_IMPORTED_MODULE_0__.Helper.GDI.RecordType.EMR_WIDENPATH:\n                case _Helper__WEBPACK_IMPORTED_MODULE_0__.Helper.GDI.RecordType.EMR_COMMENT:\n                case _Helper__WEBPACK_IMPORTED_MODULE_0__.Helper.GDI.RecordType.EMR_FILLRGN:\n                case _Helper__WEBPACK_IMPORTED_MODULE_0__.Helper.GDI.RecordType.EMR_FRAMERGN:\n                case _Helper__WEBPACK_IMPORTED_MODULE_0__.Helper.GDI.RecordType.EMR_INVERTRGN:\n                case _Helper__WEBPACK_IMPORTED_MODULE_0__.Helper.GDI.RecordType.EMR_PAINTRGN:\n                case _Helper__WEBPACK_IMPORTED_MODULE_0__.Helper.GDI.RecordType.EMR_BITBLT:\n                case _Helper__WEBPACK_IMPORTED_MODULE_0__.Helper.GDI.RecordType.EMR_STRETCHBLT:\n                case _Helper__WEBPACK_IMPORTED_MODULE_0__.Helper.GDI.RecordType.EMR_MASKBLT:\n                case _Helper__WEBPACK_IMPORTED_MODULE_0__.Helper.GDI.RecordType.EMR_PLGBLT:\n                case _Helper__WEBPACK_IMPORTED_MODULE_0__.Helper.GDI.RecordType.EMR_SETDIBITSTODEVICE:\n                case _Helper__WEBPACK_IMPORTED_MODULE_0__.Helper.GDI.RecordType.EMR_STRETCHDIBITS:\n                case _Helper__WEBPACK_IMPORTED_MODULE_0__.Helper.GDI.RecordType.EMR_EXTCREATEFONTINDIRECTW:\n                case _Helper__WEBPACK_IMPORTED_MODULE_0__.Helper.GDI.RecordType.EMR_EXTTEXTOUTA:\n                case _Helper__WEBPACK_IMPORTED_MODULE_0__.Helper.GDI.RecordType.EMR_EXTTEXTOUTW:\n                case _Helper__WEBPACK_IMPORTED_MODULE_0__.Helper.GDI.RecordType.EMR_POLYPOLYLINE16:\n                case _Helper__WEBPACK_IMPORTED_MODULE_0__.Helper.GDI.RecordType.EMR_POLYDRAW16:\n                case _Helper__WEBPACK_IMPORTED_MODULE_0__.Helper.GDI.RecordType.EMR_CREATEMONOBRUSH:\n                case _Helper__WEBPACK_IMPORTED_MODULE_0__.Helper.GDI.RecordType.EMR_CREATEDIBPATTERNBRUSHPT:\n                case _Helper__WEBPACK_IMPORTED_MODULE_0__.Helper.GDI.RecordType.EMR_POLYTEXTOUTA:\n                case _Helper__WEBPACK_IMPORTED_MODULE_0__.Helper.GDI.RecordType.EMR_POLYTEXTOUTW:\n                case _Helper__WEBPACK_IMPORTED_MODULE_0__.Helper.GDI.RecordType.EMR_SETICMMODE:\n                case _Helper__WEBPACK_IMPORTED_MODULE_0__.Helper.GDI.RecordType.EMR_CREATECOLORSPACE:\n                case _Helper__WEBPACK_IMPORTED_MODULE_0__.Helper.GDI.RecordType.EMR_SETCOLORSPACE:\n                case _Helper__WEBPACK_IMPORTED_MODULE_0__.Helper.GDI.RecordType.EMR_DELETECOLORSPACE:\n                case _Helper__WEBPACK_IMPORTED_MODULE_0__.Helper.GDI.RecordType.EMR_GLSRECORD:\n                case _Helper__WEBPACK_IMPORTED_MODULE_0__.Helper.GDI.RecordType.EMR_GLSBOUNDEDRECORD:\n                case _Helper__WEBPACK_IMPORTED_MODULE_0__.Helper.GDI.RecordType.EMR_PIXELFORMAT:\n                case _Helper__WEBPACK_IMPORTED_MODULE_0__.Helper.GDI.RecordType.EMR_DRAWESCAPE:\n                case _Helper__WEBPACK_IMPORTED_MODULE_0__.Helper.GDI.RecordType.EMR_EXTESCAPE:\n                case _Helper__WEBPACK_IMPORTED_MODULE_0__.Helper.GDI.RecordType.EMR_SMALLTEXTOUT:\n                case _Helper__WEBPACK_IMPORTED_MODULE_0__.Helper.GDI.RecordType.EMR_FORCEUFIMAPPING:\n                case _Helper__WEBPACK_IMPORTED_MODULE_0__.Helper.GDI.RecordType.EMR_NAMEDESCAPE:\n                case _Helper__WEBPACK_IMPORTED_MODULE_0__.Helper.GDI.RecordType.EMR_COLORCORRECTPALETTE:\n                case _Helper__WEBPACK_IMPORTED_MODULE_0__.Helper.GDI.RecordType.EMR_SETICMPROFILEA:\n                case _Helper__WEBPACK_IMPORTED_MODULE_0__.Helper.GDI.RecordType.EMR_SETICMPROFILEW:\n                case _Helper__WEBPACK_IMPORTED_MODULE_0__.Helper.GDI.RecordType.EMR_ALPHABLEND:\n                case _Helper__WEBPACK_IMPORTED_MODULE_0__.Helper.GDI.RecordType.EMR_SETLAYOUT:\n                case _Helper__WEBPACK_IMPORTED_MODULE_0__.Helper.GDI.RecordType.EMR_TRANSPARENTBLT:\n                case _Helper__WEBPACK_IMPORTED_MODULE_0__.Helper.GDI.RecordType.EMR_GRADIENTFILL:\n                case _Helper__WEBPACK_IMPORTED_MODULE_0__.Helper.GDI.RecordType.EMR_SETLINKEDUFIS:\n                case _Helper__WEBPACK_IMPORTED_MODULE_0__.Helper.GDI.RecordType.EMR_SETTEXTJUSTIFICATION:\n                case _Helper__WEBPACK_IMPORTED_MODULE_0__.Helper.GDI.RecordType.EMR_COLORMATCHTOTARGETW:\n                case _Helper__WEBPACK_IMPORTED_MODULE_0__.Helper.GDI.RecordType.EMR_CREATECOLORSPACEW:\n                default: {\n                    var recordName = \"UNKNOWN\";\n                    for (var name_1 in _Helper__WEBPACK_IMPORTED_MODULE_0__.Helper.GDI.RecordType) {\n                        var recordTypes = _Helper__WEBPACK_IMPORTED_MODULE_0__.Helper.GDI.RecordType;\n                        if (recordTypes[name_1] === type) {\n                            recordName = name_1;\n                            break;\n                        }\n                    }\n                    _Helper__WEBPACK_IMPORTED_MODULE_0__.Helper.log(\"[EMF] \" + recordName + \" record (0x\" + type.toString(16) + \") at offset 0x\"\n                        + curpos.toString(16) + \" with \" + size + \" bytes\");\n                    break;\n                }\n            }\n            curpos += size;\n        };\n        var this_1 = this;\n        main_loop: while (!all) {\n            var state_1 = _loop_1();\n            switch (state_1) {\n                case \"break-main_loop\": break main_loop;\n            }\n        }\n        if (!all) {\n            throw new _Helper__WEBPACK_IMPORTED_MODULE_0__.EMFJSError(\"Could not read all records\");\n        }\n    }\n    EMFRecords.prototype.play = function (gdi) {\n        var len = this._records.length;\n        for (var i = 0; i < len; i++) {\n            this._records[i](gdi);\n        }\n    };\n    return EMFRecords;\n}());\n\n\n\n/***/ }),\n\n/***/ \"./src/emfjs/GDIContext.ts\":\n/*!*********************************!*\\\n  !*** ./src/emfjs/GDIContext.ts ***!\n  \\*********************************/\n/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {\n\n__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"GDIContext\": () => (/* binding */ GDIContext)\n/* harmony export */ });\n/* harmony import */ var _Helper__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./Helper */ \"./src/emfjs/Helper.ts\");\n/* harmony import */ var _Primitives__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./Primitives */ \"./src/emfjs/Primitives.ts\");\n/* harmony import */ var _Region__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./Region */ \"./src/emfjs/Region.ts\");\n/* harmony import */ var _Style__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./Style */ \"./src/emfjs/Style.ts\");\n/*\n\nThe MIT License (MIT)\n\nCopyright (c) 2016 Tom Zoehner\nCopyright (c) 2018 Thomas Bluemel\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n\n*/\nvar __extends = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        if (typeof b !== \"function\" && b !== null)\n            throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\n\n\n\n\nvar Path = /** @class */ (function (_super) {\n    __extends(Path, _super);\n    function Path(svgPath, copy) {\n        var _this = _super.call(this, \"path\") || this;\n        if (svgPath != null) {\n            _this.svgPath = svgPath;\n        }\n        else {\n            _this.svgPath = copy.svgPath;\n        }\n        return _this;\n    }\n    Path.prototype.clone = function () {\n        return new Path(null, this);\n    };\n    Path.prototype.toString = function () {\n        return \"{[path]}\";\n    };\n    return Path;\n}(_Primitives__WEBPACK_IMPORTED_MODULE_1__.Obj));\nfunction createStockObjects() {\n    // Create global stock objects\n    var createSolidBrush = function (r, g, b) {\n        return new _Style__WEBPACK_IMPORTED_MODULE_3__.Brush(null, {\n            style: _Helper__WEBPACK_IMPORTED_MODULE_0__.Helper.GDI.BrushStyle.BS_SOLID,\n            color: new _Style__WEBPACK_IMPORTED_MODULE_3__.ColorRef(null, r, g, b),\n        });\n    };\n    var createSolidPen = function (r, g, b) {\n        return new _Style__WEBPACK_IMPORTED_MODULE_3__.Pen(null, _Helper__WEBPACK_IMPORTED_MODULE_0__.Helper.GDI.PenStyle.PS_SOLID, 1, new _Style__WEBPACK_IMPORTED_MODULE_3__.ColorRef(null, r, g, b), null);\n    };\n    var stockObjs = {\n        WHITE_BRUSH: createSolidBrush(255, 255, 255),\n        LTGRAY_BRUSH: createSolidBrush(212, 208, 200),\n        GRAY_BRUSH: createSolidBrush(128, 128, 128),\n        DKGRAY_BRUSH: createSolidBrush(64, 64, 64),\n        BLACK_BRUSH: createSolidBrush(0, 0, 0),\n        NULL_BRUSH: new _Style__WEBPACK_IMPORTED_MODULE_3__.Brush(null, {\n            style: _Helper__WEBPACK_IMPORTED_MODULE_0__.Helper.GDI.BrushStyle.BS_NULL,\n        }),\n        WHITE_PEN: createSolidPen(255, 255, 255),\n        BLACK_PEN: createSolidPen(0, 0, 0),\n        NULL_PEN: new _Style__WEBPACK_IMPORTED_MODULE_3__.Pen(null, _Helper__WEBPACK_IMPORTED_MODULE_0__.Helper.GDI.PenStyle.PS_NULL, 0, null, null),\n        OEM_FIXED_FONT: null,\n        ANSI_FIXED_FONT: null,\n        ANSI_VAR_FONT: null,\n        SYSTEM_FONT: null,\n        DEVICE_DEFAULT_FONT: null,\n        DEFAULT_PALETTE: null,\n        SYSTEM_FIXED_FONT: null,\n        DEFAULT_GUI_FONT: null, // TODO\n    };\n    var objs = {};\n    for (var t in stockObjs) {\n        var stockObjects = _Helper__WEBPACK_IMPORTED_MODULE_0__.Helper.GDI.StockObject;\n        var idx = stockObjects[t] - 0x80000000;\n        objs[idx.toString()] = stockObjs[t];\n    }\n    return objs;\n}\nvar _StockObjects = createStockObjects();\nvar GDIContextState = /** @class */ (function () {\n    function GDIContextState(copy, defObjects) {\n        if (copy != null) {\n            this._svggroup = copy._svggroup;\n            this._svgclipChanged = copy._svgclipChanged;\n            this._svgtextbkfilter = copy._svgtextbkfilter;\n            this.mapmode = copy.mapmode;\n            this.stretchmode = copy.stretchmode;\n            this.textalign = copy.textalign;\n            this.bkmode = copy.bkmode;\n            this.textcolor = copy.textcolor.clone();\n            this.bkcolor = copy.bkcolor.clone();\n            this.polyfillmode = copy.polyfillmode;\n            this.miterlimit = copy.miterlimit;\n            this.wx = copy.wx;\n            this.wy = copy.wy;\n            this.ww = copy.ww;\n            this.wh = copy.wh;\n            this.vx = copy.vx;\n            this.vy = copy.vy;\n            this.vw = copy.vw;\n            this.vh = copy.vh;\n            this.x = copy.x;\n            this.y = copy.y;\n            this.nextbrx = copy.nextbrx;\n            this.nextbry = copy.nextbry;\n            this.brx = copy.brx;\n            this.bry = copy.bry;\n            this.clip = copy.clip;\n            this.ownclip = false;\n            this.selected = {};\n            for (var type in copy.selected) {\n                this.selected[type] = copy.selected[type];\n            }\n        }\n        else {\n            this._svggroup = null;\n            this._svgclipChanged = false;\n            this._svgtextbkfilter = null;\n            this.mapmode = _Helper__WEBPACK_IMPORTED_MODULE_0__.Helper.GDI.MapMode.MM_ANISOTROPIC;\n            this.stretchmode = _Helper__WEBPACK_IMPORTED_MODULE_0__.Helper.GDI.StretchMode.COLORONCOLOR;\n            this.textalign = 0; // TA_LEFT | TA_TOP | TA_NOUPDATECP\n            this.bkmode = _Helper__WEBPACK_IMPORTED_MODULE_0__.Helper.GDI.MixMode.OPAQUE;\n            this.textcolor = new _Style__WEBPACK_IMPORTED_MODULE_3__.ColorRef(null, 0, 0, 0);\n            this.bkcolor = new _Style__WEBPACK_IMPORTED_MODULE_3__.ColorRef(null, 255, 255, 255);\n            this.polyfillmode = _Helper__WEBPACK_IMPORTED_MODULE_0__.Helper.GDI.PolygonFillMode.ALTERNATE;\n            this.miterlimit = 10;\n            this.wx = 0;\n            this.wy = 0;\n            this.ww = 0;\n            this.wh = 0;\n            this.vx = 0;\n            this.vy = 0;\n            this.vw = 0;\n            this.vh = 0;\n            this.x = 0;\n            this.y = 0;\n            this.nextbrx = 0;\n            this.nextbry = 0;\n            this.brx = 0;\n            this.bry = 0;\n            this.clip = null;\n            this.ownclip = false;\n            this.selected = {};\n            for (var type in defObjects) {\n                var defObj = defObjects[type];\n                this.selected[type] = defObj != null ? defObj.clone() : null;\n            }\n        }\n    }\n    return GDIContextState;\n}());\nvar GDIContext = /** @class */ (function () {\n    function GDIContext(svg) {\n        this._svg = svg;\n        this._svgdefs = null;\n        this._svgPatterns = {};\n        this._svgClipPaths = {};\n        this._svgPath = null;\n        this.defObjects = {\n            brush: new _Style__WEBPACK_IMPORTED_MODULE_3__.Brush(null, {\n                style: _Helper__WEBPACK_IMPORTED_MODULE_0__.Helper.GDI.BrushStyle.BS_SOLID,\n                color: new _Style__WEBPACK_IMPORTED_MODULE_3__.ColorRef(null, 0, 0, 0),\n            }),\n            pen: new _Style__WEBPACK_IMPORTED_MODULE_3__.Pen(null, _Helper__WEBPACK_IMPORTED_MODULE_0__.Helper.GDI.PenStyle.PS_SOLID, 1, new _Style__WEBPACK_IMPORTED_MODULE_3__.ColorRef(null, 0, 0, 0), null),\n            font: new _Style__WEBPACK_IMPORTED_MODULE_3__.Font(null, null),\n            palette: null,\n            region: null,\n        };\n        this.state = new GDIContextState(null, this.defObjects);\n        this.statestack = [this.state];\n        this.objects = {};\n    }\n    GDIContext.prototype.setMapMode = function (mode) {\n        _Helper__WEBPACK_IMPORTED_MODULE_0__.Helper.log(\"[gdi] setMapMode: mode=\" + mode);\n        this.state.mapmode = mode;\n        this.state._svggroup = null;\n    };\n    GDIContext.prototype.setWindowOrgEx = function (x, y) {\n        _Helper__WEBPACK_IMPORTED_MODULE_0__.Helper.log(\"[gdi] setWindowOrgEx: x=\" + x + \" y=\" + y);\n        this.state.wx = x;\n        this.state.wy = y;\n        this.state._svggroup = null;\n    };\n    GDIContext.prototype.setWindowExtEx = function (x, y) {\n        _Helper__WEBPACK_IMPORTED_MODULE_0__.Helper.log(\"[gdi] setWindowExtEx: x=\" + x + \" y=\" + y);\n        this.state.ww = x;\n        this.state.wh = y;\n        this.state._svggroup = null;\n    };\n    GDIContext.prototype.setViewportOrgEx = function (x, y) {\n        _Helper__WEBPACK_IMPORTED_MODULE_0__.Helper.log(\"[gdi] setViewportOrgEx: x=\" + x + \" y=\" + y);\n        this.state.vx = x;\n        this.state.vy = y;\n        this.state._svggroup = null;\n    };\n    GDIContext.prototype.setViewportExtEx = function (x, y) {\n        _Helper__WEBPACK_IMPORTED_MODULE_0__.Helper.log(\"[gdi] setViewportExtEx: x=\" + x + \" y=\" + y);\n        this.state.vw = x;\n        this.state.vh = y;\n        this.state._svggroup = null;\n    };\n    GDIContext.prototype.setBrushOrgEx = function (origin) {\n        _Helper__WEBPACK_IMPORTED_MODULE_0__.Helper.log(\"[gdi] setBrushOrgEx: x=\" + origin.x + \" y=\" + origin.y);\n        this.state.nextbrx = origin.x;\n        this.state.nextbry = origin.y;\n    };\n    GDIContext.prototype.saveDC = function () {\n        _Helper__WEBPACK_IMPORTED_MODULE_0__.Helper.log(\"[gdi] saveDC\");\n        var prevstate = this.state;\n        this.state = new GDIContextState(this.state);\n        this.statestack.push(prevstate);\n        this.state._svggroup = null;\n    };\n    GDIContext.prototype.restoreDC = function (saved) {\n        _Helper__WEBPACK_IMPORTED_MODULE_0__.Helper.log(\"[gdi] restoreDC: saved=\" + saved);\n        if (this.statestack.length > 1) {\n            if (saved === -1) {\n                this.state = this.statestack.pop();\n            }\n            else if (saved < -1) {\n                throw new _Helper__WEBPACK_IMPORTED_MODULE_0__.EMFJSError(\"restoreDC: relative restore not implemented\");\n            }\n            else if (saved > 1) {\n                throw new _Helper__WEBPACK_IMPORTED_MODULE_0__.EMFJSError(\"restoreDC: absolute restore not implemented\");\n            }\n        }\n        else {\n            throw new _Helper__WEBPACK_IMPORTED_MODULE_0__.EMFJSError(\"No saved contexts\");\n        }\n        this.state._svggroup = null;\n    };\n    GDIContext.prototype.setStretchBltMode = function (stretchMode) {\n        _Helper__WEBPACK_IMPORTED_MODULE_0__.Helper.log(\"[gdi] setStretchBltMode: stretchMode=\" + stretchMode);\n    };\n    GDIContext.prototype.rectangle = function (rect, rw, rh) {\n        _Helper__WEBPACK_IMPORTED_MODULE_0__.Helper.log(\"[gdi] rectangle: rect=\" + rect.toString() + \" with pen \" + this.state.selected.pen.toString()\n            + \" and brush \" + this.state.selected.brush.toString());\n        var bottom = this._todevY(rect.bottom);\n        var right = this._todevX(rect.right);\n        var top = this._todevY(rect.top);\n        var left = this._todevX(rect.left);\n        rw = this._todevH(rw);\n        rh = this._todevH(rh);\n        _Helper__WEBPACK_IMPORTED_MODULE_0__.Helper.log(\"[gdi] rectangle: TRANSLATED: bottom=\" + bottom + \" right=\" + right + \" top=\" + top\n            + \" left=\" + left + \" rh=\" + rh + \" rw=\" + rw);\n        this._pushGroup();\n        var opts = this._applyOpts(null, true, true, false);\n        this._svg.rect(this.state._svggroup, left, top, right - left, bottom - top, rw / 2, rh / 2, opts);\n    };\n    GDIContext.prototype.lineTo = function (x, y) {\n        _Helper__WEBPACK_IMPORTED_MODULE_0__.Helper.log(\"[gdi] lineTo: x=\" + x + \" y=\" + y + \" with pen \" + this.state.selected.pen.toString());\n        var toX = this._todevX(x);\n        var toY = this._todevY(y);\n        var fromX = this._todevX(this.state.x);\n        var fromY = this._todevY(this.state.y);\n        // Update position\n        this.state.x = x;\n        this.state.y = y;\n        _Helper__WEBPACK_IMPORTED_MODULE_0__.Helper.log(\"[gdi] lineTo: TRANSLATED: toX=\" + toX + \" toY=\" + toY + \" fromX=\" + fromX + \" fromY=\" + fromY);\n        this._pushGroup();\n        var opts = this._applyOpts(null, true, false, false);\n        this._svg.line(this.state._svggroup, fromX, fromY, toX, toY, opts);\n    };\n    GDIContext.prototype.moveToEx = function (x, y) {\n        _Helper__WEBPACK_IMPORTED_MODULE_0__.Helper.log(\"[gdi] moveToEx: x=\" + x + \" y=\" + y);\n        this.state.x = x;\n        this.state.y = y;\n        if (this._svgPath != null) {\n            this._svgPath.move(this.state.x, this.state.y);\n            _Helper__WEBPACK_IMPORTED_MODULE_0__.Helper.log(\"[gdi] new path: \" + this._svgPath.path());\n        }\n    };\n    GDIContext.prototype.polygon = function (points, bounds, first) {\n        _Helper__WEBPACK_IMPORTED_MODULE_0__.Helper.log(\"[gdi] polygon: points=\" + points + \" with pen \" + this.state.selected.pen.toString()\n            + \" and brush \" + this.state.selected.brush.toString());\n        var pts = [];\n        for (var i = 0; i < points.length; i++) {\n            var point = points[i];\n            pts.push([this._todevX(point.x), this._todevY(point.y)]);\n        }\n        if (first) {\n            this._pushGroup();\n        }\n        var opts = {\n            \"fill-rule\": this.state.polyfillmode === _Helper__WEBPACK_IMPORTED_MODULE_0__.Helper.GDI.PolygonFillMode.ALTERNATE ? \"evenodd\" : \"nonzero\",\n        };\n        this._applyOpts(opts, true, true, false);\n        this._svg.polygon(this.state._svggroup, pts, opts);\n    };\n    GDIContext.prototype.polyPolygon = function (polygons, bounds) {\n        _Helper__WEBPACK_IMPORTED_MODULE_0__.Helper.log(\"[gdi] polyPolygon: polygons.length=\" + polygons.length\n            + \" with pen \" + this.state.selected.pen.toString() + \" and brush \" + this.state.selected.brush.toString());\n        var cnt = polygons.length;\n        for (var i = 0; i < cnt; i++) {\n            this.polygon(polygons[i], bounds, i === 0);\n        }\n    };\n    GDIContext.prototype.polyline = function (isLineTo, points, bounds) {\n        _Helper__WEBPACK_IMPORTED_MODULE_0__.Helper.log(\"[gdi] polyline: isLineTo=\" + isLineTo.toString() + \", points=\" + points\n            + \", bounds=\" + bounds.toString() + \" with pen \" + this.state.selected.pen.toString());\n        var pts = [];\n        for (var i = 0; i < points.length; i++) {\n            var point = points[i];\n            pts.push([this._todevX(point.x), this._todevY(point.y)]);\n        }\n        if (this._svgPath != null) {\n            if (!isLineTo || pts.length === 0) {\n                this._svgPath.move(this._todevX(this.state.x), this._todevY(this.state.y));\n            }\n            else {\n                var firstPts = pts[0];\n                this._svgPath.move(firstPts[0], firstPts[1]);\n            }\n            this._svgPath.line(pts);\n            _Helper__WEBPACK_IMPORTED_MODULE_0__.Helper.log(\"[gdi] new path: \" + this._svgPath.path());\n        }\n        else {\n            this._pushGroup();\n            var opts = this._applyOpts(null, true, false, false);\n            if (isLineTo && points.length > 0) {\n                var firstPt = points[0];\n                if (firstPt.x !== this.state.x || firstPt.y !== this.state.y) {\n                    pts.unshift([this._todevX(this.state.x), this._todevY(this.state.y)]);\n                }\n            }\n            this._svg.polyline(this.state._svggroup, pts, opts);\n        }\n        if (points.length > 0) {\n            var lastPt = points[points.length - 1];\n            this.state.x = lastPt.x;\n            this.state.y = lastPt.y;\n        }\n    };\n    GDIContext.prototype.polybezier = function (isPolyBezierTo, points, bounds) {\n        _Helper__WEBPACK_IMPORTED_MODULE_0__.Helper.log(\"[gdi] polybezier: isPolyBezierTo=\" + isPolyBezierTo.toString() + \", points=\" + points\n            + \", bounds=\" + bounds.toString() + \" with pen \" + this.state.selected.pen.toString());\n        var pts = [];\n        for (var i = 0; i < points.length; i++) {\n            var point = points[i];\n            pts.push({ x: this._todevX(point.x), y: this._todevY(point.y) });\n        }\n        if (this._svgPath != null) {\n            if (isPolyBezierTo && pts.length > 0) {\n                var firstPts = pts[0];\n                this._svgPath.move(firstPts.x, firstPts.y);\n            }\n            else {\n                this._svgPath.move(this._todevX(this.state.x), this._todevY(this.state.y));\n            }\n            if (pts.length < (isPolyBezierTo ? 3 : 4)) {\n                throw new _Helper__WEBPACK_IMPORTED_MODULE_0__.EMFJSError(\"Not enough points to draw bezier\");\n            }\n            for (var i = isPolyBezierTo ? 1 : 0; i + 3 <= pts.length; i += 3) {\n                var cp1 = pts[i];\n                var cp2 = pts[i + 1];\n                var ep = pts[i + 2];\n                this._svgPath.curveC(cp1.x, cp1.y, cp2.x, cp2.y, ep.x, ep.y);\n            }\n            _Helper__WEBPACK_IMPORTED_MODULE_0__.Helper.log(\"[gdi] new path: \" + this._svgPath.path());\n        }\n        else {\n            throw new _Helper__WEBPACK_IMPORTED_MODULE_0__.EMFJSError(\"polybezier not implemented (not a path)\");\n        }\n        if (points.length > 0) {\n            var lastPt = points[points.length - 1];\n            this.state.x = lastPt.x;\n            this.state.y = lastPt.y;\n        }\n    };\n    GDIContext.prototype.selectClipPath = function (rgnMode) {\n        _Helper__WEBPACK_IMPORTED_MODULE_0__.Helper.log(\"[gdi] selectClipPath: rgnMode=0x\" + rgnMode.toString(16));\n    };\n    GDIContext.prototype.selectClipRgn = function (rgnMode, region) {\n        _Helper__WEBPACK_IMPORTED_MODULE_0__.Helper.log(\"[gdi] selectClipRgn: rgnMode=0x\" + rgnMode.toString(16));\n        if (rgnMode === _Helper__WEBPACK_IMPORTED_MODULE_0__.Helper.GDI.RegionMode.RGN_COPY) {\n            this.state.selected.region = region;\n            this.state.clip = null;\n            this.state.ownclip = false;\n        }\n        else {\n            if (region == null) {\n                throw new _Helper__WEBPACK_IMPORTED_MODULE_0__.EMFJSError(\"No clip region to select\");\n            }\n            throw new _Helper__WEBPACK_IMPORTED_MODULE_0__.EMFJSError(\"Not implemented: rgnMode=0x\" + rgnMode.toString(16));\n        }\n        this.state._svgclipChanged = true;\n    };\n    GDIContext.prototype.offsetClipRgn = function (offset) {\n        _Helper__WEBPACK_IMPORTED_MODULE_0__.Helper.log(\"[gdi] offsetClipRgn: offset=\" + offset.toString());\n        this._getClipRgn().offset(offset.x, offset.y);\n    };\n    GDIContext.prototype.setTextAlign = function (textAlignmentMode) {\n        _Helper__WEBPACK_IMPORTED_MODULE_0__.Helper.log(\"[gdi] setTextAlign: textAlignmentMode=0x\" + textAlignmentMode.toString(16));\n        this.state.textalign = textAlignmentMode;\n    };\n    GDIContext.prototype.setMiterLimit = function (miterLimit) {\n        _Helper__WEBPACK_IMPORTED_MODULE_0__.Helper.log(\"[gdi] setMiterLimit: miterLimit=\" + miterLimit);\n        this.state.miterlimit = miterLimit;\n    };\n    GDIContext.prototype.setBkMode = function (bkMode) {\n        _Helper__WEBPACK_IMPORTED_MODULE_0__.Helper.log(\"[gdi] setBkMode: bkMode=0x\" + bkMode.toString(16));\n        this.state.bkmode = bkMode;\n    };\n    GDIContext.prototype.setBkColor = function (bkColor) {\n        _Helper__WEBPACK_IMPORTED_MODULE_0__.Helper.log(\"[gdi] setBkColor: bkColor=\" + bkColor.toString());\n        this.state.bkcolor = bkColor;\n        this.state._svgtextbkfilter = null;\n    };\n    GDIContext.prototype.setPolyFillMode = function (polyFillMode) {\n        _Helper__WEBPACK_IMPORTED_MODULE_0__.Helper.log(\"[gdi] setPolyFillMode: polyFillMode=\" + polyFillMode);\n        this.state.polyfillmode = polyFillMode;\n    };\n    GDIContext.prototype.createBrush = function (index, brush) {\n        var idx = this._storeObject(brush, index);\n        _Helper__WEBPACK_IMPORTED_MODULE_0__.Helper.log(\"[gdi] createBrush: brush=\" + brush.toString() + \" with handle \" + idx);\n    };\n    GDIContext.prototype.createPen = function (index, pen) {\n        var idx = this._storeObject(pen, index);\n        _Helper__WEBPACK_IMPORTED_MODULE_0__.Helper.log(\"[gdi] createPen: pen=\" + pen.toString() + \" width handle \" + idx);\n    };\n    GDIContext.prototype.createPenEx = function (index, pen) {\n        var idx = this._storeObject(pen, index);\n        _Helper__WEBPACK_IMPORTED_MODULE_0__.Helper.log(\"[gdi] createPenEx: pen=\" + pen.toString() + \" width handle \" + idx);\n    };\n    GDIContext.prototype.selectObject = function (objIdx, checkType) {\n        var obj = this._getObject(objIdx);\n        if (obj != null && (checkType == null || obj.type === checkType)) {\n            this._selectObject(obj);\n            _Helper__WEBPACK_IMPORTED_MODULE_0__.Helper.log(\"[gdi] selectObject: objIdx=\" + objIdx\n                + (obj ? \" selected \" + obj.type + \": \" + obj.toString() : \"[invalid index]\"));\n        }\n        else {\n            _Helper__WEBPACK_IMPORTED_MODULE_0__.Helper.log(\"[gdi] selectObject: objIdx=\" + objIdx\n                + (obj ? \" invalid object type: \" + obj.type : \"[invalid index]\"));\n        }\n    };\n    GDIContext.prototype.abortPath = function () {\n        _Helper__WEBPACK_IMPORTED_MODULE_0__.Helper.log(\"[gdi] abortPath\");\n        if (this._svgPath != null) {\n            this._svgPath = null;\n        }\n    };\n    GDIContext.prototype.beginPath = function () {\n        _Helper__WEBPACK_IMPORTED_MODULE_0__.Helper.log(\"[gdi] beginPath\");\n        if (this._svgPath != null) {\n            this._svgPath = null;\n        }\n        this._svgPath = this._svg.createPath();\n    };\n    GDIContext.prototype.closeFigure = function () {\n        _Helper__WEBPACK_IMPORTED_MODULE_0__.Helper.log(\"[gdi] closeFigure\");\n        if (this._svgPath == null) {\n            throw new _Helper__WEBPACK_IMPORTED_MODULE_0__.EMFJSError(\"No path bracket: cannot close figure\");\n        }\n        this._svgPath.close();\n    };\n    GDIContext.prototype.fillPath = function (bounds) {\n        _Helper__WEBPACK_IMPORTED_MODULE_0__.Helper.log(\"[gdi] fillPath\");\n        if (this.state.selected.path == null) {\n            throw new _Helper__WEBPACK_IMPORTED_MODULE_0__.EMFJSError(\"No path selected\");\n        }\n        var selPath = this.state.selected.path;\n        var opts = this._applyOpts(null, true, true, false);\n        this._svg.path(this.state._svggroup, selPath.svgPath, opts);\n        this._pushGroup();\n        this.state.selected.path = null;\n    };\n    GDIContext.prototype.strokePath = function (bounds) {\n        _Helper__WEBPACK_IMPORTED_MODULE_0__.Helper.log(\"[gdi] strokePath\");\n        if (this.state.selected.path == null) {\n            throw new _Helper__WEBPACK_IMPORTED_MODULE_0__.EMFJSError(\"No path selected\");\n        }\n        var selPath = this.state.selected.path;\n        var opts = this._applyOpts({ fill: \"none\" }, true, false, false);\n        this._svg.path(this.state._svggroup, selPath.svgPath, opts);\n        this._pushGroup();\n        this.state.selected.path = null;\n    };\n    GDIContext.prototype.endPath = function () {\n        _Helper__WEBPACK_IMPORTED_MODULE_0__.Helper.log(\"[gdi] endPath\");\n        if (this._svgPath == null) {\n            throw new _Helper__WEBPACK_IMPORTED_MODULE_0__.EMFJSError(\"No path bracket: cannot end path\");\n        }\n        this._pushGroup();\n        this._selectObject(new Path(this._svgPath));\n        this._svgPath = null;\n    };\n    GDIContext.prototype.deleteObject = function (objIdx) {\n        var ret = this._deleteObject(objIdx);\n        _Helper__WEBPACK_IMPORTED_MODULE_0__.Helper.log(\"[gdi] deleteObject: objIdx=\" + objIdx + (ret ? \" deleted object\" : \"[invalid index]\"));\n    };\n    GDIContext.prototype._pushGroup = function () {\n        if (this.state._svggroup == null || this.state._svgclipChanged) {\n            this.state._svgclipChanged = false;\n            this.state._svgtextbkfilter = null;\n            var settings = {\n                viewBox: [this.state.vx, this.state.vy, this.state.vw, this.state.vh].join(\" \"),\n                preserveAspectRatio: \"none\",\n            };\n            if (this.state.clip != null) {\n                _Helper__WEBPACK_IMPORTED_MODULE_0__.Helper.log(\"[gdi] new svg x=\" + this.state.vx + \" y=\" + this.state.vy + \" width=\" + this.state.vw\n                    + \" height=\" + this.state.vh + \" with clipping\");\n                settings[\"clip-path\"] = \"url(#\" + this._getSvgClipPathForRegion(this.state.clip) + \")\";\n            }\n            else {\n                _Helper__WEBPACK_IMPORTED_MODULE_0__.Helper.log(\"[gdi] new svg x=\" + this.state.vx + \" y=\" + this.state.vy + \" width=\" + this.state.vw\n                    + \" height=\" + this.state.vh + \" without clipping\");\n            }\n            this.state._svggroup = this._svg.svg(this.state._svggroup, this.state.vx, this.state.vy, this.state.vw, this.state.vh, settings);\n        }\n    };\n    GDIContext.prototype._getStockObject = function (idx) {\n        if (idx >= 0x80000000 && idx <= 0x80000011) {\n            return _StockObjects[(idx - 0x80000000).toString()];\n        }\n        else if (idx === _Helper__WEBPACK_IMPORTED_MODULE_0__.Helper.GDI.StockObject.DC_BRUSH) {\n            return this.state.selected.brush;\n        }\n        else if (idx === _Helper__WEBPACK_IMPORTED_MODULE_0__.Helper.GDI.StockObject.DC_PEN) {\n            return this.state.selected.pen;\n        }\n        return null;\n    };\n    GDIContext.prototype._storeObject = function (obj, idx) {\n        if (!idx) {\n            idx = 0;\n            while (this.objects[idx.toString()] != null && idx <= 65535) {\n                idx++;\n            }\n            if (idx > 65535) {\n                _Helper__WEBPACK_IMPORTED_MODULE_0__.Helper.log(\"[gdi] Too many objects!\");\n                return -1;\n            }\n        }\n        this.objects[idx.toString()] = obj;\n        return idx;\n    };\n    GDIContext.prototype._getObject = function (objIdx) {\n        var obj = this.objects[objIdx.toString()];\n        if (obj == null) {\n            obj = this._getStockObject(objIdx);\n            if (obj == null) {\n                _Helper__WEBPACK_IMPORTED_MODULE_0__.Helper.log(\"[gdi] No object with handle \" + objIdx);\n            }\n        }\n        return obj;\n    };\n    GDIContext.prototype._getSvgDef = function () {\n        if (this._svgdefs == null) {\n            this._svgdefs = this._svg.defs();\n        }\n        return this._svgdefs;\n    };\n    GDIContext.prototype._getSvgClipPathForRegion = function (region) {\n        for (var existingId in this._svgClipPaths) {\n            var rgn = this._svgClipPaths[existingId];\n            if (rgn === region) {\n                return existingId;\n            }\n        }\n        var id = _Helper__WEBPACK_IMPORTED_MODULE_0__.Helper._makeUniqueId(\"c\");\n        var sclip = this._svg.clipPath(this._getSvgDef(), id, \"userSpaceOnUse\");\n        switch (region.complexity) {\n            case 1:\n                this._svg.rect(sclip, this._todevX(region.bounds.left), this._todevY(region.bounds.top), this._todevW(region.bounds.right - region.bounds.left), this._todevH(region.bounds.bottom - region.bounds.top), { \"fill\": \"black\", \"stroke-width\": 0 });\n                break;\n            case 2:\n                for (var i = 0; i < region.scans.length; i++) {\n                    var scan = region.scans[i];\n                    for (var j = 0; j < scan.scanlines.length; j++) {\n                        var scanline = scan.scanlines[j];\n                        this._svg.rect(sclip, this._todevX(scanline.left), this._todevY(scan.top), this._todevW(scanline.right - scanline.left), this._todevH(scan.bottom - scan.top), { \"fill\": \"black\", \"stroke-width\": 0 });\n                    }\n                }\n                break;\n        }\n        this._svgClipPaths[id] = region;\n        return id;\n    };\n    GDIContext.prototype._getSvgPatternForBrush = function (brush) {\n        for (var existingId in this._svgPatterns) {\n            var pat = this._svgPatterns[existingId];\n            if (pat === brush) {\n                return existingId;\n            }\n        }\n        var width;\n        var height;\n        var img;\n        switch (brush.style) {\n            case _Helper__WEBPACK_IMPORTED_MODULE_0__.Helper.GDI.BrushStyle.BS_PATTERN:\n                width = brush.pattern.getWidth();\n                height = brush.pattern.getHeight();\n                break;\n            case _Helper__WEBPACK_IMPORTED_MODULE_0__.Helper.GDI.BrushStyle.BS_DIBPATTERNPT:\n                width = brush.dibpatternpt.getWidth();\n                height = brush.dibpatternpt.getHeight();\n                img = brush.dibpatternpt.base64ref();\n                break;\n            default:\n                throw new _Helper__WEBPACK_IMPORTED_MODULE_0__.EMFJSError(\"Invalid brush style\");\n        }\n        var id = _Helper__WEBPACK_IMPORTED_MODULE_0__.Helper._makeUniqueId(\"p\");\n        var spat = this._svg.pattern(this._getSvgDef(), id, this.state.brx, this.state.bry, width, height, { patternUnits: \"userSpaceOnUse\" });\n        this._svg.image(spat, 0, 0, width, height, img);\n        this._svgPatterns[id] = brush;\n        return id;\n    };\n    GDIContext.prototype._selectObject = function (obj) {\n        this.state.selected[obj.type] = obj;\n        switch (obj.type) {\n            case \"region\":\n                this.state._svgclipChanged = true;\n                break;\n            case \"brush\":\n                this.state.brx = this.state.nextbrx;\n                this.state.bry = this.state.nextbry;\n                break;\n        }\n    };\n    GDIContext.prototype._deleteObject = function (objIdx) {\n        var obj = this.objects[objIdx.toString()];\n        if (obj != null) {\n            for (var i = 0; i < this.statestack.length; i++) {\n                var state = this.statestack[i];\n                if (state.selected[obj.type] === obj) {\n                    state.selected[obj.type] = this.defObjects[obj.type].clone();\n                }\n            }\n            delete this.objects[objIdx.toString()];\n            return true;\n        }\n        _Helper__WEBPACK_IMPORTED_MODULE_0__.Helper.log(\"[gdi] Cannot delete object with invalid handle \" + objIdx);\n        return false;\n    };\n    GDIContext.prototype._getClipRgn = function () {\n        if (this.state.clip != null) {\n            if (!this.state.ownclip) {\n                this.state.clip = this.state.clip.clone();\n            }\n        }\n        else {\n            if (this.state.selected.region != null) {\n                this.state.clip = this.state.selected.region.clone();\n            }\n            else {\n                this.state.clip = (0,_Region__WEBPACK_IMPORTED_MODULE_2__.CreateSimpleRegion)(this.state.wx, this.state.wy, this.state.wx + this.state.ww, this.state.wy + this.state.wh);\n            }\n        }\n        this.state.ownclip = true;\n        return this.state.clip;\n    };\n    GDIContext.prototype._todevX = function (val) {\n        // http://wvware.sourceforge.net/caolan/mapmode.html\n        // logical -> device\n        return Math.floor((val - this.state.wx) * (this.state.vw / this.state.ww)) + this.state.vx;\n    };\n    GDIContext.prototype._todevY = function (val) {\n        // http://wvware.sourceforge.net/caolan/mapmode.html\n        // logical -> device\n        return Math.floor((val - this.state.wy) * (this.state.vh / this.state.wh)) + this.state.vy;\n    };\n    GDIContext.prototype._todevW = function (val) {\n        // http://wvware.sourceforge.net/caolan/mapmode.html\n        // logical -> device\n        return Math.floor(val * (this.state.vw / this.state.ww)) + this.state.vx;\n    };\n    GDIContext.prototype._todevH = function (val) {\n        // http://wvware.sourceforge.net/caolan/mapmode.html\n        // logical -> device\n        return Math.floor(val * (this.state.vh / this.state.wh)) + this.state.vy;\n    };\n    GDIContext.prototype._tologicalX = function (val) {\n        // http://wvware.sourceforge.net/caolan/mapmode.html\n        // logical -> device\n        return Math.floor((val - this.state.vx) / (this.state.vw / this.state.ww)) + this.state.wx;\n    };\n    GDIContext.prototype._tologicalY = function (val) {\n        // http://wvware.sourceforge.net/caolan/mapmode.html\n        // logical -> device\n        return Math.floor((val - this.state.vy) / (this.state.vh / this.state.wh)) + this.state.wy;\n    };\n    GDIContext.prototype._tologicalW = function (val) {\n        // http://wvware.sourceforge.net/caolan/mapmode.html\n        // logical -> device\n        return Math.floor(val / (this.state.vw / this.state.ww)) + this.state.wx;\n    };\n    GDIContext.prototype._tologicalH = function (val) {\n        // http://wvware.sourceforge.net/caolan/mapmode.html\n        // logical -> device\n        return Math.floor(val / (this.state.vh / this.state.wh)) + this.state.wy;\n    };\n    GDIContext.prototype._applyOpts = function (opts, usePen, useBrush, useFont) {\n        if (opts == null) {\n            opts = {};\n        }\n        if (usePen) {\n            var pen = this.state.selected.pen;\n            if (pen.style !== _Helper__WEBPACK_IMPORTED_MODULE_0__.Helper.GDI.PenStyle.PS_NULL) {\n                opts.stroke = \"#\" + pen.color.toHex(); // TODO: pen style\n                opts[\"stroke-width\"] = pen.width;\n                opts[\"stroke-miterlimit\"] = this.state.miterlimit;\n                opts[\"stroke-linecap\"] = \"round\";\n                var dotWidth = 1;\n                opts[\"stroke-linejoin\"] = \"round\";\n                var dashWidth = opts[\"stroke-width\"] * 4;\n                var dotSpacing = opts[\"stroke-width\"] * 2;\n                switch (pen.style) {\n                    case _Helper__WEBPACK_IMPORTED_MODULE_0__.Helper.GDI.PenStyle.PS_DASH:\n                        opts[\"stroke-dasharray\"] = [dashWidth, dotSpacing].toString();\n                        break;\n                    case _Helper__WEBPACK_IMPORTED_MODULE_0__.Helper.GDI.PenStyle.PS_DOT:\n                        opts[\"stroke-dasharray\"] = [dotWidth, dotSpacing].toString();\n                        break;\n                    case _Helper__WEBPACK_IMPORTED_MODULE_0__.Helper.GDI.PenStyle.PS_DASHDOT:\n                        opts[\"stroke-dasharray\"] = [dashWidth, dotSpacing, dotWidth, dotSpacing].toString();\n                        break;\n                    case _Helper__WEBPACK_IMPORTED_MODULE_0__.Helper.GDI.PenStyle.PS_DASHDOTDOT:\n                        opts[\"stroke-dasharray\"] =\n                            [dashWidth, dotSpacing, dotWidth, dotSpacing, dotWidth, dotSpacing].toString();\n                        break;\n                }\n            }\n        }\n        if (useBrush) {\n            var brush = this.state.selected.brush;\n            switch (brush.style) {\n                case _Helper__WEBPACK_IMPORTED_MODULE_0__.Helper.GDI.BrushStyle.BS_SOLID:\n                    opts.fill = \"#\" + brush.color.toHex();\n                    break;\n                case _Helper__WEBPACK_IMPORTED_MODULE_0__.Helper.GDI.BrushStyle.BS_PATTERN:\n                case _Helper__WEBPACK_IMPORTED_MODULE_0__.Helper.GDI.BrushStyle.BS_DIBPATTERNPT:\n                    opts.fill = \"url(#\" + this._getSvgPatternForBrush(brush) + \")\";\n                    break;\n                case _Helper__WEBPACK_IMPORTED_MODULE_0__.Helper.GDI.BrushStyle.BS_NULL:\n                    opts.fill = \"none\";\n                    break;\n                default:\n                    _Helper__WEBPACK_IMPORTED_MODULE_0__.Helper.log(\"[gdi] unsupported brush style: \" + brush.style);\n                    opts.fill = \"none\";\n                    break;\n            }\n        }\n        if (useFont) {\n            var font = this.state.selected.font;\n            opts[\"font-family\"] = font.facename;\n            opts[\"font-size\"] = Math.abs(font.height);\n            opts.fill = \"#\" + this.state.textcolor.toHex();\n        }\n        return opts;\n    };\n    return GDIContext;\n}());\n\n\n\n/***/ }),\n\n/***/ \"./src/emfjs/Helper.ts\":\n/*!*****************************!*\\\n  !*** ./src/emfjs/Helper.ts ***!\n  \\*****************************/\n/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {\n\n__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"EMFJSError\": () => (/* binding */ EMFJSError),\n/* harmony export */   \"loggingEnabled\": () => (/* binding */ loggingEnabled),\n/* harmony export */   \"Helper\": () => (/* binding */ Helper)\n/* harmony export */ });\n/*\n\nThe MIT License (MIT)\n\nCopyright (c) 2016 Tom Zoehner\nCopyright (c) 2018 Thomas Bluemel\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n\n*/\nvar __extends = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        if (typeof b !== \"function\" && b !== null)\n            throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar EMFJSError = /** @class */ (function (_super) {\n    __extends(EMFJSError, _super);\n    function EMFJSError(message) {\n        var _newTarget = this.constructor;\n        var _this = _super.call(this, message) || this;\n        Object.setPrototypeOf(_this, _newTarget.prototype); // restore prototype chain\n        return _this;\n    }\n    return EMFJSError;\n}(Error));\n\nvar isLoggingEnabled = true;\nfunction loggingEnabled(enabled) {\n    isLoggingEnabled = enabled;\n}\nvar Helper = /** @class */ (function () {\n    function Helper() {\n    }\n    Helper.log = function (message) {\n        if (isLoggingEnabled) {\n            console.log(message);\n        }\n    };\n    Helper._makeUniqueId = function (prefix) {\n        return \"EMFJS_\" + prefix + (this._uniqueId++);\n    };\n    Helper._writeUint32Val = function (uint8arr, pos, val) {\n        uint8arr[pos++] = val & 0xff;\n        uint8arr[pos++] = (val >>> 8) & 0xff;\n        uint8arr[pos++] = (val >>> 16) & 0xff;\n        uint8arr[pos++] = (val >>> 24) & 0xff;\n    };\n    Helper._blobToBinary = function (blob) {\n        var ret = \"\";\n        var len = blob.length;\n        for (var i = 0; i < len; i++) {\n            ret += String.fromCharCode(blob[i]);\n        }\n        return ret;\n    };\n    Helper.GDI = {\n        FormatSignature: {\n            ENHMETA_SIGNATURE: 0x464D4520,\n            EPS_SIGNATURE: 0x46535045,\n        },\n        BITMAPINFOHEADER_SIZE: 40,\n        BITMAPCOREHEADER_SIZE: 12,\n        RecordType: {\n            EMR_POLYBEZIER: 0x00000002,\n            EMR_POLYGON: 0x00000003,\n            EMR_POLYLINE: 0x00000004,\n            EMR_POLYBEZIERTO: 0x00000005,\n            EMR_POLYLINETO: 0x00000006,\n            EMR_POLYPOLYLINE: 0x00000007,\n            EMR_POLYPOLYGON: 0x00000008,\n            EMR_SETWINDOWEXTEX: 0x00000009,\n            EMR_SETWINDOWORGEX: 0x0000000A,\n            EMR_SETVIEWPORTEXTEX: 0x0000000B,\n            EMR_SETVIEWPORTORGEX: 0x0000000C,\n            EMR_SETBRUSHORGEX: 0x0000000D,\n            EMR_EOF: 0x0000000E,\n            EMR_SETPIXELV: 0x0000000F,\n            EMR_SETMAPPERFLAGS: 0x00000010,\n            EMR_SETMAPMODE: 0x00000011,\n            EMR_SETBKMODE: 0x00000012,\n            EMR_SETPOLYFILLMODE: 0x00000013,\n            EMR_SETROP2: 0x00000014,\n            EMR_SETSTRETCHBLTMODE: 0x00000015,\n            EMR_SETTEXTALIGN: 0x00000016,\n            EMR_SETCOLORADJUSTMENT: 0x00000017,\n            EMR_SETTEXTCOLOR: 0x00000018,\n            EMR_SETBKCOLOR: 0x00000019,\n            EMR_OFFSETCLIPRGN: 0x0000001A,\n            EMR_MOVETOEX: 0x0000001B,\n            EMR_SETMETARGN: 0x0000001C,\n            EMR_EXCLUDECLIPRECT: 0x0000001D,\n            EMR_INTERSECTCLIPRECT: 0x0000001E,\n            EMR_SCALEVIEWPORTEXTEX: 0x0000001F,\n            EMR_SCALEWINDOWEXTEX: 0x00000020,\n            EMR_SAVEDC: 0x00000021,\n            EMR_RESTOREDC: 0x00000022,\n            EMR_SETWORLDTRANSFORM: 0x00000023,\n            EMR_MODIFYWORLDTRANSFORM: 0x00000024,\n            EMR_SELECTOBJECT: 0x00000025,\n            EMR_CREATEPEN: 0x00000026,\n            EMR_CREATEBRUSHINDIRECT: 0x00000027,\n            EMR_DELETEOBJECT: 0x00000028,\n            EMR_ANGLEARC: 0x00000029,\n            EMR_ELLIPSE: 0x0000002A,\n            EMR_RECTANGLE: 0x0000002B,\n            EMR_ROUNDRECT: 0x0000002C,\n            EMR_ARC: 0x0000002D,\n            EMR_CHORD: 0x0000002E,\n            EMR_PIE: 0x0000002F,\n            EMR_SELECTPALETTE: 0x00000030,\n            EMR_CREATEPALETTE: 0x00000031,\n            EMR_SETPALETTEENTRIES: 0x00000032,\n            EMR_RESIZEPALETTE: 0x00000033,\n            EMR_REALIZEPALETTE: 0x00000034,\n            EMR_EXTFLOODFILL: 0x00000035,\n            EMR_LINETO: 0x00000036,\n            EMR_ARCTO: 0x00000037,\n            EMR_POLYDRAW: 0x00000038,\n            EMR_SETARCDIRECTION: 0x00000039,\n            EMR_SETMITERLIMIT: 0x0000003A,\n            EMR_BEGINPATH: 0x0000003B,\n            EMR_ENDPATH: 0x0000003C,\n            EMR_CLOSEFIGURE: 0x0000003D,\n            EMR_FILLPATH: 0x0000003E,\n            EMR_STROKEANDFILLPATH: 0x0000003F,\n            EMR_STROKEPATH: 0x00000040,\n            EMR_FLATTENPATH: 0x00000041,\n            EMR_WIDENPATH: 0x00000042,\n            EMR_SELECTCLIPPATH: 0x00000043,\n            EMR_ABORTPATH: 0x00000044,\n            EMR_COMMENT: 0x00000046,\n            EMR_FILLRGN: 0x00000047,\n            EMR_FRAMERGN: 0x00000048,\n            EMR_INVERTRGN: 0x00000049,\n            EMR_PAINTRGN: 0x0000004A,\n            EMR_EXTSELECTCLIPRGN: 0x0000004B,\n            EMR_BITBLT: 0x0000004C,\n            EMR_STRETCHBLT: 0x0000004D,\n            EMR_MASKBLT: 0x0000004E,\n            EMR_PLGBLT: 0x0000004F,\n            EMR_SETDIBITSTODEVICE: 0x00000050,\n            EMR_STRETCHDIBITS: 0x00000051,\n            EMR_EXTCREATEFONTINDIRECTW: 0x00000052,\n            EMR_EXTTEXTOUTA: 0x00000053,\n            EMR_EXTTEXTOUTW: 0x00000054,\n            EMR_POLYBEZIER16: 0x00000055,\n            EMR_POLYGON16: 0x00000056,\n            EMR_POLYLINE16: 0x00000057,\n            EMR_POLYBEZIERTO16: 0x00000058,\n            EMR_POLYLINETO16: 0x00000059,\n            EMR_POLYPOLYLINE16: 0x0000005A,\n            EMR_POLYPOLYGON16: 0x0000005B,\n            EMR_POLYDRAW16: 0x0000005C,\n            EMR_CREATEMONOBRUSH: 0x0000005D,\n            EMR_CREATEDIBPATTERNBRUSHPT: 0x0000005E,\n            EMR_EXTCREATEPEN: 0x0000005F,\n            EMR_POLYTEXTOUTA: 0x00000060,\n            EMR_POLYTEXTOUTW: 0x00000061,\n            EMR_SETICMMODE: 0x00000062,\n            EMR_CREATECOLORSPACE: 0x00000063,\n            EMR_SETCOLORSPACE: 0x00000064,\n            EMR_DELETECOLORSPACE: 0x00000065,\n            EMR_GLSRECORD: 0x00000066,\n            EMR_GLSBOUNDEDRECORD: 0x00000067,\n            EMR_PIXELFORMAT: 0x00000068,\n            EMR_DRAWESCAPE: 0x00000069,\n            EMR_EXTESCAPE: 0x0000006A,\n            EMR_SMALLTEXTOUT: 0x0000006C,\n            EMR_FORCEUFIMAPPING: 0x0000006D,\n            EMR_NAMEDESCAPE: 0x0000006E,\n            EMR_COLORCORRECTPALETTE: 0x0000006F,\n            EMR_SETICMPROFILEA: 0x00000070,\n            EMR_SETICMPROFILEW: 0x00000071,\n            EMR_ALPHABLEND: 0x00000072,\n            EMR_SETLAYOUT: 0x00000073,\n            EMR_TRANSPARENTBLT: 0x00000074,\n            EMR_GRADIENTFILL: 0x00000076,\n            EMR_SETLINKEDUFIS: 0x00000077,\n            EMR_SETTEXTJUSTIFICATION: 0x00000078,\n            EMR_COLORMATCHTOTARGETW: 0x00000079,\n            EMR_CREATECOLORSPACEW: 0x0000007A,\n        },\n        MetafileEscapes: {\n            NEWFRAME: 0x0001,\n            ABORTDOC: 0x0002,\n            NEXTBAND: 0x0003,\n            SETCOLORTABLE: 0x0004,\n            GETCOLORTABLE: 0x0005,\n            FLUSHOUT: 0x0006,\n            DRAFTMODE: 0x0007,\n            QUERYESCSUPPORT: 0x0008,\n            SETABORTPROC: 0x0009,\n            STARTDOC: 0x000a,\n            ENDDOC: 0x000b,\n            GETPHYSPAGESIZE: 0x000c,\n            GETPRINTINGOFFSET: 0x000d,\n            GETSCALINGFACTOR: 0x000e,\n            META_ESCAPE_ENHANCED_METAFILE: 0x000f,\n            SETPENWIDTH: 0x0010,\n            SETCOPYCOUNT: 0x0011,\n            SETPAPERSOURCE: 0x0012,\n            PASSTHROUGH: 0x0013,\n            GETTECHNOLOGY: 0x0014,\n            SETLINECAP: 0x0015,\n            SETLINEJOIN: 0x0016,\n            SETMITERLIMIT: 0x0017,\n            BANDINFO: 0x0018,\n            DRAWPATTERNRECT: 0x0019,\n            GETVECTORPENSIZE: 0x001a,\n            GETVECTORBRUSHSIZE: 0x001b,\n            ENABLEDUPLEX: 0x001c,\n            GETSETPAPERBINS: 0x001d,\n            GETSETPRINTORIENT: 0x001e,\n            ENUMPAPERBINS: 0x001f,\n            SETDIBSCALING: 0x0020,\n            EPSPRINTING: 0x0021,\n            ENUMPAPERMETRICS: 0x0022,\n            GETSETPAPERMETRICS: 0x0023,\n            POSTSCRIPT_DATA: 0x0025,\n            POSTSCRIPT_IGNORE: 0x0026,\n            GETDEVICEUNITS: 0x002a,\n            GETEXTENDEDTEXTMETRICS: 0x0100,\n            GETPAIRKERNTABLE: 0x0102,\n            EXTTEXTOUT: 0x0200,\n            GETFACENAME: 0x0201,\n            DOWNLOADFACE: 0x0202,\n            METAFILE_DRIVER: 0x0801,\n            QUERYDIBSUPPORT: 0x0c01,\n            BEGIN_PATH: 0x1000,\n            CLIP_TO_PATH: 0x1001,\n            END_PATH: 0x1002,\n            OPEN_CHANNEL: 0x100e,\n            DOWNLOADHEADER: 0x100f,\n            CLOSE_CHANNEL: 0x1010,\n            POSTSCRIPT_PASSTHROUGH: 0x1013,\n            ENCAPSULATED_POSTSCRIPT: 0x1014,\n            POSTSCRIPT_IDENTIFY: 0x1015,\n            POSTSCRIPT_INJECTION: 0x1016,\n            CHECKJPEGFORMAT: 0x1017,\n            CHECKPNGFORMAT: 0x1018,\n            GET_PS_FEATURESETTING: 0x1019,\n            MXDC_ESCAPE: 0x101a,\n            SPCLPASSTHROUGH2: 0x11d8,\n        },\n        MapMode: {\n            MM_TEXT: 1,\n            MM_LOMETRIC: 2,\n            MM_HIMETRIC: 3,\n            MM_LOENGLISH: 4,\n            MM_HIENGLISH: 5,\n            MM_TWIPS: 6,\n            MM_ISOTROPIC: 7,\n            MM_ANISOTROPIC: 8,\n        },\n        StretchMode: {\n            BLACKONWHITE: 1,\n            WHITEONBLACK: 2,\n            COLORONCOLOR: 3,\n            HALFTONE: 4,\n        },\n        MixMode: {\n            TRANSPARENT: 1,\n            OPAQUE: 2,\n        },\n        BrushStyle: {\n            BS_SOLID: 0,\n            BS_NULL: 1,\n            BS_HATCHED: 2,\n            BS_PATTERN: 3,\n            BS_INDEXED: 4,\n            BS_DIBPATTERN: 5,\n            BS_DIBPATTERNPT: 6,\n            BS_PATTERN8X8: 7,\n            BS_DIBPATTERN8X8: 8,\n            BS_MONOPATTERN: 9,\n        },\n        PenStyle: {\n            PS_COSMETIC: 0x00000000,\n            PS_ENDCAP_ROUND: 0x00000000,\n            PS_JOIN_ROUND: 0x00000000,\n            PS_SOLID: 0x00000000,\n            PS_DASH: 0x00000001,\n            PS_DOT: 0x00000002,\n            PS_DASHDOT: 0x00000003,\n            PS_DASHDOTDOT: 0x00000004,\n            PS_NULL: 0x00000005,\n            PS_INSIDEFRAME: 0x00000006,\n            PS_USERSTYLE: 0x00000007,\n            PS_ALTERNATE: 0x00000008,\n            PS_ENDCAP_SQUARE: 0x00000100,\n            PS_ENDCAP_FLAT: 0x00000200,\n            PS_JOIN_BEVEL: 0x00001000,\n            PS_JOIN_MITER: 0x00002000,\n            PS_GEOMETRIC: 0x00010000,\n        },\n        PolygonFillMode: {\n            ALTERNATE: 1,\n            WINDING: 2,\n        },\n        BitmapCompression: {\n            BI_RGB: 0,\n            BI_RLE8: 1,\n            BI_RLE4: 2,\n            BI_BITFIELDS: 3,\n            BI_JPEG: 4,\n            BI_PNG: 5,\n        },\n        RegionMode: {\n            RGN_AND: 1,\n            RGN_OR: 2,\n            RGN_XOR: 3,\n            RGN_DIFF: 4,\n            RGN_COPY: 5,\n        },\n        StockObject: {\n            WHITE_BRUSH: 0x80000000,\n            LTGRAY_BRUSH: 0x80000001,\n            GRAY_BRUSH: 0x80000002,\n            DKGRAY_BRUSH: 0x80000003,\n            BLACK_BRUSH: 0x80000004,\n            NULL_BRUSH: 0x80000005,\n            WHITE_PEN: 0x80000006,\n            BLACK_PEN: 0x80000007,\n            NULL_PEN: 0x80000008,\n            OEM_FIXED_FONT: 0x8000000A,\n            ANSI_FIXED_FONT: 0x8000000B,\n            ANSI_VAR_FONT: 0x8000000C,\n            SYSTEM_FONT: 0x8000000D,\n            DEVICE_DEFAULT_FONT: 0x8000000E,\n            DEFAULT_PALETTE: 0x8000000F,\n            SYSTEM_FIXED_FONT: 0x80000010,\n            DEFAULT_GUI_FONT: 0x80000011,\n            DC_BRUSH: 0x80000012,\n            DC_PEN: 0x80000013,\n        },\n    };\n    Helper._uniqueId = 0;\n    return Helper;\n}());\n\n\n\n/***/ }),\n\n/***/ \"./src/emfjs/Primitives.ts\":\n/*!*********************************!*\\\n  !*** ./src/emfjs/Primitives.ts ***!\n  \\*********************************/\n/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {\n\n__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"PointS\": () => (/* binding */ PointS),\n/* harmony export */   \"PointL\": () => (/* binding */ PointL),\n/* harmony export */   \"RectL\": () => (/* binding */ RectL),\n/* harmony export */   \"SizeL\": () => (/* binding */ SizeL),\n/* harmony export */   \"Obj\": () => (/* binding */ Obj)\n/* harmony export */ });\n/* harmony import */ var _Helper__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./Helper */ \"./src/emfjs/Helper.ts\");\n/*\n\nThe MIT License (MIT)\n\nCopyright (c) 2016 Tom Zoehner\nCopyright (c) 2018 Thomas Bluemel\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n\n*/\n\nvar PointS = /** @class */ (function () {\n    function PointS(reader, x, y) {\n        if (reader != null) {\n            this.x = reader.readInt16();\n            this.y = reader.readInt16();\n        }\n        else {\n            this.x = x;\n            this.y = y;\n        }\n    }\n    PointS.prototype.clone = function () {\n        return new PointS(null, this.x, this.y);\n    };\n    PointS.prototype.toString = function () {\n        return \"{x: \" + this.x + \", y: \" + this.y + \"}\";\n    };\n    return PointS;\n}());\n\nvar PointL = /** @class */ (function () {\n    function PointL(reader, x, y) {\n        if (reader != null) {\n            this.x = reader.readInt32();\n            this.y = reader.readInt32();\n        }\n        else {\n            this.x = x;\n            this.y = y;\n        }\n    }\n    PointL.prototype.clone = function () {\n        return new PointL(null, this.x, this.y);\n    };\n    PointL.prototype.toString = function () {\n        return \"{x: \" + this.x + \", y: \" + this.y + \"}\";\n    };\n    return PointL;\n}());\n\nvar RectL = /** @class */ (function () {\n    function RectL(reader, left, top, right, bottom) {\n        if (reader != null) {\n            this.left = reader.readInt32();\n            this.top = reader.readInt32();\n            this.right = reader.readInt32();\n            this.bottom = reader.readInt32();\n        }\n        else {\n            this.bottom = bottom;\n            this.right = right;\n            this.top = top;\n            this.left = left;\n        }\n    }\n    RectL.prototype.clone = function () {\n        return new RectL(null, this.left, this.top, this.right, this.bottom);\n    };\n    RectL.prototype.toString = function () {\n        return \"{left: \" + this.left + \", top: \" + this.top + \", right: \" + this.right\n            + \", bottom: \" + this.bottom + \"}\";\n    };\n    RectL.prototype.empty = function () {\n        return this.left >= this.right || this.top >= this.bottom;\n    };\n    RectL.prototype.intersect = function (rectL) {\n        if (this.empty() || rectL.empty()) {\n            return null;\n        }\n        if (this.left >= rectL.right || this.top >= rectL.bottom ||\n            this.right <= rectL.left || this.bottom <= rectL.top) {\n            return null;\n        }\n        return new RectL(null, Math.max(this.left, rectL.left), Math.max(this.top, rectL.top), Math.min(this.right, rectL.right), Math.min(this.bottom, rectL.bottom));\n    };\n    return RectL;\n}());\n\nvar SizeL = /** @class */ (function () {\n    function SizeL(reader, cx, cy) {\n        if (reader != null) {\n            this.cx = reader.readUint32();\n            this.cy = reader.readUint32();\n        }\n        else {\n            this.cx = cx;\n            this.cy = cy;\n        }\n    }\n    SizeL.prototype.clone = function () {\n        return new SizeL(null, this.cx, this.cy);\n    };\n    SizeL.prototype.toString = function () {\n        return \"{cx: \" + this.cx + \", cy: \" + this.cy + \"}\";\n    };\n    return SizeL;\n}());\n\nvar Obj = /** @class */ (function () {\n    function Obj(type) {\n        this.type = type;\n    }\n    Obj.prototype.clone = function () {\n        throw new _Helper__WEBPACK_IMPORTED_MODULE_0__.EMFJSError(\"clone not implemented\");\n    };\n    Obj.prototype.toString = function () {\n        throw new _Helper__WEBPACK_IMPORTED_MODULE_0__.EMFJSError(\"toString not implemented\");\n    };\n    return Obj;\n}());\n\n\n\n/***/ }),\n\n/***/ \"./src/emfjs/Region.ts\":\n/*!*****************************!*\\\n  !*** ./src/emfjs/Region.ts ***!\n  \\*****************************/\n/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {\n\n__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"Region\": () => (/* binding */ Region),\n/* harmony export */   \"CreateSimpleRegion\": () => (/* binding */ CreateSimpleRegion),\n/* harmony export */   \"Scan\": () => (/* binding */ Scan)\n/* harmony export */ });\n/* harmony import */ var _Helper__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./Helper */ \"./src/emfjs/Helper.ts\");\n/* harmony import */ var _Primitives__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./Primitives */ \"./src/emfjs/Primitives.ts\");\n/*\n\nThe MIT License (MIT)\n\nCopyright (c) 2016 Tom Zoehner\nCopyright (c) 2018 Thomas Bluemel\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n\n*/\nvar __extends = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        if (typeof b !== \"function\" && b !== null)\n            throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\n\n\nvar Region = /** @class */ (function (_super) {\n    __extends(Region, _super);\n    function Region(reader, copy) {\n        var _this = _super.call(this, \"region\") || this;\n        if (reader != null) {\n            var hdrSize = reader.readUint32();\n            if (hdrSize !== 32) {\n                throw new _Helper__WEBPACK_IMPORTED_MODULE_0__.EMFJSError(\"Invalid region header\");\n            }\n            reader.skip(4);\n            var rectCnt = reader.readUint32();\n            var rgnSize = reader.readUint32();\n            if (rectCnt * 16 !== rgnSize) {\n                throw new _Helper__WEBPACK_IMPORTED_MODULE_0__.EMFJSError(\"Invalid region data\");\n            }\n            _this.bounds = new _Primitives__WEBPACK_IMPORTED_MODULE_1__.RectL(reader);\n            _this.scans = [];\n            var scanLine = void 0;\n            for (var i = 0; i < rectCnt; i++) {\n                var r = new _Primitives__WEBPACK_IMPORTED_MODULE_1__.RectL(reader);\n                if (!!scanLine || scanLine.top !== r.top || scanLine.bottom !== r.bottom) {\n                    scanLine = new Scan(r);\n                    _this.scans.push(scanLine);\n                }\n                else {\n                    scanLine.append(r);\n                }\n            }\n            _this._updateComplexity();\n        }\n        else if (copy != null) {\n            _this.bounds = copy.bounds != null ? copy.bounds.clone() : null;\n            if (copy.scans != null) {\n                _this.scans = [];\n                for (var i = 0; i < copy.scans.length; i++) {\n                    _this.scans.push(copy.scans[i].clone());\n                }\n            }\n            else {\n                _this.scans = null;\n            }\n            _this.complexity = copy.complexity;\n        }\n        else {\n            _this.bounds = null;\n            _this.scans = null;\n            _this.complexity = 0;\n        }\n        return _this;\n    }\n    Region.prototype.clone = function () {\n        return new Region(null, this);\n    };\n    Region.prototype.toString = function () {\n        var _complexity = [\"null\", \"simple\", \"complex\"];\n        return \"{complexity: \" + _complexity[this.complexity]\n            + \" bounds: \" + (this.bounds != null ? this.bounds.toString() : \"[none]\")\n            + \" #scans: \" + (this.scans != null ? this.scans.length : \"[none]\") + \"}\";\n    };\n    Region.prototype._updateComplexity = function () {\n        if (this.bounds == null) {\n            this.complexity = 0;\n            this.scans = null;\n        }\n        else if (this.bounds.empty()) {\n            this.complexity = 0;\n            this.scans = null;\n            this.bounds = null;\n        }\n        else if (this.scans == null) {\n            this.complexity = 1;\n        }\n        else {\n            this.complexity = 2;\n            if (this.scans.length === 1) {\n                var scan = this.scans[0];\n                if (scan.top === this.bounds.top && scan.bottom === this.bounds.bottom && scan.scanlines.length === 1) {\n                    var scanline = scan.scanlines[0];\n                    if (scanline.left === this.bounds.left && scanline.right === this.bounds.right) {\n                        this.scans = null;\n                        this.complexity = 1;\n                    }\n                }\n            }\n        }\n    };\n    Region.prototype.subtract = function (rect) {\n        _Helper__WEBPACK_IMPORTED_MODULE_0__.Helper.log(\"[emf] Region \" + this.toString() + \" subtract \" + rect.toString());\n        if (this.bounds != null) {\n            var isect = this.bounds.intersect(rect);\n            if (isect != null) { // Only need to do anything if there is any chance of an overlap\n                if (this.scans == null) {\n                    // We currently have a simple region and there is some kind of an overlap.\n                    // We need to create scanlines now.  Simplest method is to fake one scan line\n                    // that equals the simple region and re-use the same logic as for complex regions\n                    this.scans = [];\n                    this.scans.push(new Scan(new _Primitives__WEBPACK_IMPORTED_MODULE_1__.RectL(null, this.bounds.left, this.bounds.top, this.bounds.right, this.bounds.bottom)));\n                    this.complexity = 2;\n                }\n                // We (now) have a complex region.  First we skip any scans that are entirely above rect.top\n                // The first scan that falls partially below rect.top needs to be split into two scans.\n                var si = 0;\n                while (si < this.scans.length) {\n                    var scan = this.scans[si];\n                    if (scan.bottom >= rect.top) {\n                        // We need to clone this scan into two so that we can subtract from the second one\n                        var cloned = scan.clone();\n                        scan.bottom = rect.top - 1;\n                        cloned.top = rect.top;\n                        if (scan.top >= scan.bottom) {\n                            this.scans[si] = cloned;\n                        }\n                        else {\n                            _Helper__WEBPACK_IMPORTED_MODULE_0__.Helper.log(\"[emf] Region split top scan \" + si + \" for substraction\");\n                            this.scans.splice(++si, 0, cloned);\n                        }\n                        break;\n                    }\n                    si++;\n                }\n                // Now find the first one that falls at least partially below rect.bottom, which needs to be\n                // split if it is only partially below rect.bottom\n                var first = si;\n                while (si < this.scans.length) {\n                    var scan = this.scans[si];\n                    if (scan.top > rect.bottom) {\n                        break;\n                    }\n                    if (scan.bottom > rect.bottom) {\n                        // We need to clone this scan into two so that we can subtract from the first one\n                        var cloned = scan.clone();\n                        scan.bottom = rect.bottom;\n                        cloned.top = rect.bottom + 1;\n                        if (scan.top >= scan.bottom) {\n                            this.scans[si] = cloned;\n                        }\n                        else {\n                            _Helper__WEBPACK_IMPORTED_MODULE_0__.Helper.log(\"[emf] Region split bottom scan \" + si + \" for substraction\");\n                            this.scans.splice(++si, 0, cloned);\n                        }\n                        break;\n                    }\n                    si++;\n                }\n                // Now perform a subtraction on each scan in between rect.top and rect.bottom.  Because we\n                // cloned scans that partially overlapped rect.top and rect.bottom, we don't have to\n                // account for this anymore.\n                if (first < this.scans.length) {\n                    var last = si;\n                    si = first;\n                    while (si < last) {\n                        var scan = this.scans[si];\n                        if (!scan.subtract(rect.left, rect.right)) {\n                            _Helper__WEBPACK_IMPORTED_MODULE_0__.Helper.log(\"[emf] Region remove now empty scan \" + si + \" due to subtraction\");\n                            this.scans.splice(si, 1);\n                            last--;\n                            continue;\n                        }\n                        si++;\n                    }\n                }\n                // Update bounds\n                if (this.scans != null) {\n                    var left = void 0;\n                    var top_1;\n                    var right = void 0;\n                    var bottom = void 0;\n                    var len = this.scans.length;\n                    for (var i = 0; i < len; i++) {\n                        var scan = this.scans[i];\n                        if (i === 0) {\n                            top_1 = scan.top;\n                        }\n                        if (i === len - 1) {\n                            bottom = scan.bottom;\n                        }\n                        var slen = scan.scanlines.length;\n                        if (slen > 0) {\n                            var scanline = scan.scanlines[0];\n                            if (left == null || scanline.left < left) {\n                                left = scanline.left;\n                            }\n                            scanline = scan.scanlines[slen - 1];\n                            if (right == null || scanline.right > right) {\n                                right = scanline.right;\n                            }\n                        }\n                    }\n                    if (left != null && top_1 != null && right != null && bottom != null) {\n                        this.bounds = new _Primitives__WEBPACK_IMPORTED_MODULE_1__.RectL(null, left, top_1, right, bottom);\n                        this._updateComplexity();\n                    }\n                    else {\n                        // This has to be a null region now\n                        this.bounds = null;\n                        this.scans = null;\n                        this.complexity = 0;\n                    }\n                }\n                else {\n                    this._updateComplexity();\n                }\n            }\n        }\n        _Helper__WEBPACK_IMPORTED_MODULE_0__.Helper.log(\"[emf] Region subtraction -> \" + this.toString());\n    };\n    Region.prototype.intersect = function (rect) {\n        _Helper__WEBPACK_IMPORTED_MODULE_0__.Helper.log(\"[emf] Region \" + this.toString() + \" intersect with \" + rect.toString());\n        if (this.bounds != null) {\n            this.bounds = this.bounds.intersect(rect);\n            if (this.bounds != null) {\n                if (this.scans != null) {\n                    var si = 0;\n                    // Remove any scans that are entirely above the new bounds.top\n                    while (si < this.scans.length) {\n                        var scan = this.scans[si];\n                        if (scan.bottom < this.bounds.top) {\n                            si++;\n                        }\n                        else {\n                            break;\n                        }\n                    }\n                    if (si > 0) {\n                        _Helper__WEBPACK_IMPORTED_MODULE_0__.Helper.log(\"[emf] Region remove \" + si + \" scans from top\");\n                        this.scans.splice(0, si);\n                        // Adjust the first scan's top to match the new bounds.top\n                        if (this.scans.length > 0) {\n                            this.scans[0].top = this.bounds.top;\n                        }\n                    }\n                    // Get rid of anything that falls outside the new bounds.left/bounds.right\n                    si = 0;\n                    while (si < this.scans.length) {\n                        var scan = this.scans[si];\n                        if (scan.top > this.bounds.bottom) {\n                            // Remove this and all remaining scans that fall entirely below the new bounds.bottom\n                            _Helper__WEBPACK_IMPORTED_MODULE_0__.Helper.log(\"[emf] Region remove \" + (this.scans.length - si) + \" scans from bottom\");\n                            this.scans.splice(si, this.scans.length - si);\n                            break;\n                        }\n                        if (!scan.intersect(this.bounds.left, this.bounds.right)) {\n                            // Remove now empty scan\n                            _Helper__WEBPACK_IMPORTED_MODULE_0__.Helper.log(\"[emf] Region remove now empty scan \" + si + \" due to intersection\");\n                            this.scans.splice(si, 1);\n                            continue;\n                        }\n                        si++;\n                    }\n                    // If there are any scans left, adjust the last one's bottom to the new bounds.bottom\n                    if (this.scans.length > 0) {\n                        this.scans[this.scans.length - 1].bottom = this.bounds.bottom;\n                    }\n                    this._updateComplexity();\n                }\n            }\n            else {\n                this.scans = null;\n                this.complexity = 0;\n            }\n        }\n        _Helper__WEBPACK_IMPORTED_MODULE_0__.Helper.log(\"[emf] Region intersection -> \" + this.toString());\n    };\n    Region.prototype.offset = function (offX, offY) {\n        if (this.bounds != null) {\n            this.bounds.left += offX;\n            this.bounds.top += offY;\n            this.bounds.right += offX;\n            this.bounds.bottom += offY;\n        }\n        if (this.scans != null) {\n            var slen = this.scans.length;\n            for (var si = 0; si < slen; si++) {\n                var scan = this.scans[si];\n                scan.top += offY;\n                scan.bottom += offY;\n                var len = scan.scanlines.length;\n                for (var i = 0; i < len; i++) {\n                    var scanline = scan.scanlines[i];\n                    scanline.left += offX;\n                    scanline.right += offX;\n                }\n            }\n        }\n    };\n    return Region;\n}(_Primitives__WEBPACK_IMPORTED_MODULE_1__.Obj));\n\nfunction CreateSimpleRegion(left, top, right, bottom) {\n    var rgn = new Region(null, null);\n    rgn.bounds = new _Primitives__WEBPACK_IMPORTED_MODULE_1__.RectL(null, left, top, right, bottom);\n    rgn._updateComplexity();\n    return rgn;\n}\nvar Scan = /** @class */ (function () {\n    function Scan(r, copy) {\n        if (r != null) {\n            this.top = r.top;\n            this.bottom = r.bottom;\n            this.scanlines = [{ left: r.left, right: r.right }];\n        }\n        else if (copy != null) {\n            this.top = copy.top;\n            this.bottom = copy.bottom;\n            this.scanlines = [];\n            for (var i = 0; i < copy.scanlines.length; i++) {\n                var scanline = copy.scanlines[i];\n                this.scanlines.push({ left: scanline.left, right: scanline.right });\n            }\n        }\n    }\n    Scan.prototype.clone = function () {\n        return new Scan(null, this);\n    };\n    Scan.prototype.append = function (r) {\n        this.scanlines.push({ left: r.left, right: r.right });\n    };\n    Scan.prototype.subtract = function (left, right) {\n        var i;\n        // Keep everything on the left side\n        i = 0;\n        while (i < this.scanlines.length) {\n            var scanline = this.scanlines[i];\n            if (scanline.left <= left) {\n                if (scanline.right >= left) {\n                    scanline.right = left - 1;\n                    if (scanline.left >= scanline.right) {\n                        this.scanlines.splice(i, 1);\n                        continue;\n                    }\n                }\n                i++;\n            }\n            else {\n                break;\n            }\n        }\n        // Find the first one that may exceed to the right side\n        var first = i;\n        var cnt = 0;\n        while (i < this.scanlines.length) {\n            var scanline = this.scanlines[i];\n            if (scanline.right > right) {\n                scanline.left = right;\n                cnt = i - first;\n                if (scanline.left >= scanline.right) {\n                    cnt++;\n                }\n                break;\n            }\n            i++;\n        }\n        // Delete everything we're subtracting\n        if (cnt > 0 && first < this.scanlines.length) {\n            this.scanlines.splice(first, cnt);\n        }\n        return this.scanlines.length > 0;\n    };\n    Scan.prototype.intersect = function (left, right) {\n        // Get rid of anything that falls entirely outside to the left\n        for (var i = 0; i < this.scanlines.length; i++) {\n            var scanline = this.scanlines[i];\n            if (scanline.left >= left || scanline.right >= left) {\n                if (i > 0) {\n                    this.scanlines.splice(0, i);\n                }\n                break;\n            }\n        }\n        if (this.scanlines.length > 0) {\n            // Adjust the first to match the left, if needed\n            var scanline = this.scanlines[0];\n            if (scanline.left < left) {\n                scanline.left = left;\n            }\n            // Get rid of anything that falls entirely outside to the right\n            for (var i = 0; i < this.scanlines.length; i++) {\n                scanline = this.scanlines[i];\n                if (scanline.left > right) {\n                    this.scanlines.splice(i, this.scanlines.length - i);\n                    break;\n                }\n            }\n            if (this.scanlines.length > 0) {\n                // Adjust the last to match the right, if needed\n                scanline = this.scanlines[this.scanlines.length - 1];\n                if (scanline.right > right) {\n                    scanline.right = right;\n                }\n            }\n        }\n        return this.scanlines.length > 0;\n    };\n    return Scan;\n}());\n\n\n\n/***/ }),\n\n/***/ \"./src/emfjs/Renderer.ts\":\n/*!*******************************!*\\\n  !*** ./src/emfjs/Renderer.ts ***!\n  \\*******************************/\n/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {\n\n__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"Renderer\": () => (/* binding */ Renderer)\n/* harmony export */ });\n/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../util */ \"./src/util/index.ts\");\n/* harmony import */ var _Blob__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./Blob */ \"./src/emfjs/Blob.ts\");\n/* harmony import */ var _EMFRecords__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./EMFRecords */ \"./src/emfjs/EMFRecords.ts\");\n/* harmony import */ var _GDIContext__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./GDIContext */ \"./src/emfjs/GDIContext.ts\");\n/* harmony import */ var _Helper__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./Helper */ \"./src/emfjs/Helper.ts\");\n/*\n\nThe MIT License (MIT)\n\nCopyright (c) 2016 Tom Zoehner\nCopyright (c) 2018 Thomas Bluemel\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n\n*/\n\n\n\n\n\nvar Renderer = /** @class */ (function () {\n    function Renderer(blob) {\n        this.parse(blob);\n        _Helper__WEBPACK_IMPORTED_MODULE_4__.Helper.log(\"EMFJS.Renderer instantiated\");\n    }\n    Renderer.prototype.render = function (info) {\n        var svgElement = document.createElementNS(\"http://www.w3.org/2000/svg\", \"svg\");\n        this._render(new _util__WEBPACK_IMPORTED_MODULE_0__.SVG(svgElement), info.mapMode, info.wExt, info.hExt, info.xExt, info.yExt);\n        svgElement.setAttribute(\"viewBox\", [0, 0, info.xExt, info.yExt].join(\" \"));\n        svgElement.setAttribute(\"preserveAspectRatio\", \"none\"); // TODO: MM_ISOTROPIC vs MM_ANISOTROPIC\n        svgElement.setAttribute(\"width\", info.width);\n        svgElement.setAttribute(\"height\", info.height);\n        return svgElement;\n    };\n    Renderer.prototype.parse = function (blob) {\n        this._img = null;\n        var reader = new _Blob__WEBPACK_IMPORTED_MODULE_1__.Blob(blob);\n        var type = reader.readUint32();\n        if (type !== 0x00000001) {\n            throw new _Helper__WEBPACK_IMPORTED_MODULE_4__.EMFJSError(\"Not an EMF file\");\n        }\n        var size = reader.readUint32();\n        if (size % 4 !== 0) {\n            throw new _Helper__WEBPACK_IMPORTED_MODULE_4__.EMFJSError(\"Not an EMF file\");\n        }\n        this._img = new EMF(reader, size);\n        if (this._img == null) {\n            throw new _Helper__WEBPACK_IMPORTED_MODULE_4__.EMFJSError(\"Format not recognized\");\n        }\n    };\n    Renderer.prototype._render = function (svg, mapMode, w, h, xExt, yExt) {\n        var gdi = new _GDIContext__WEBPACK_IMPORTED_MODULE_3__.GDIContext(svg);\n        gdi.setWindowExtEx(w, h);\n        gdi.setViewportExtEx(xExt, yExt);\n        gdi.setMapMode(mapMode);\n        _Helper__WEBPACK_IMPORTED_MODULE_4__.Helper.log(\"[EMF] BEGIN RENDERING --->\");\n        this._img.render(gdi);\n        _Helper__WEBPACK_IMPORTED_MODULE_4__.Helper.log(\"[EMF] <--- DONE RENDERING\");\n    };\n    return Renderer;\n}());\n\nvar EMF = /** @class */ (function () {\n    function EMF(reader, hdrsize) {\n        this._hdrsize = hdrsize;\n        this._records = new _EMFRecords__WEBPACK_IMPORTED_MODULE_2__.EMFRecords(reader, this._hdrsize);\n    }\n    EMF.prototype.render = function (gdi) {\n        this._records.play(gdi);\n    };\n    return EMF;\n}());\n\n\n/***/ }),\n\n/***/ \"./src/emfjs/Style.ts\":\n/*!****************************!*\\\n  !*** ./src/emfjs/Style.ts ***!\n  \\****************************/\n/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {\n\n__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"ColorRef\": () => (/* binding */ ColorRef),\n/* harmony export */   \"Font\": () => (/* binding */ Font),\n/* harmony export */   \"Brush\": () => (/* binding */ Brush),\n/* harmony export */   \"Pen\": () => (/* binding */ Pen)\n/* harmony export */ });\n/* harmony import */ var _Bitmap__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./Bitmap */ \"./src/emfjs/Bitmap.ts\");\n/* harmony import */ var _Helper__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./Helper */ \"./src/emfjs/Helper.ts\");\n/* harmony import */ var _Primitives__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./Primitives */ \"./src/emfjs/Primitives.ts\");\n/*\n\nThe MIT License (MIT)\n\nCopyright (c) 2016 Tom Zoehner\nCopyright (c) 2018 Thomas Bluemel\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n\n*/\nvar __extends = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        if (typeof b !== \"function\" && b !== null)\n            throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\n\n\n\nvar ColorRef = /** @class */ (function () {\n    function ColorRef(reader, r, g, b) {\n        if (reader != null) {\n            this.r = reader.readUint8();\n            this.g = reader.readUint8();\n            this.b = reader.readUint8();\n            reader.skip(1);\n        }\n        else {\n            this.r = r;\n            this.g = g;\n            this.b = b;\n        }\n    }\n    ColorRef.prototype.clone = function () {\n        return new ColorRef(null, this.r, this.g, this.b);\n    };\n    ColorRef.prototype.toHex = function () {\n        var rgb = (this.r << 16) | (this.g << 8) | this.b;\n        return (0x1000000 + rgb).toString(16).slice(1);\n    };\n    ColorRef.prototype.toString = function () {\n        return \"{r: \" + this.r + \", g: \" + this.g + \", b: \" + this.b + \"}\";\n    };\n    return ColorRef;\n}());\n\nvar Font = /** @class */ (function (_super) {\n    __extends(Font, _super);\n    function Font(reader, copy) {\n        var _this = _super.call(this, \"font\") || this;\n        if (reader != null) {\n            _this.height = reader.readInt32();\n            _this.width = reader.readInt32();\n            _this.escapement = reader.readInt32();\n            _this.orientation = reader.readInt32();\n            _this.weight = reader.readInt32();\n            _this.italic = reader.readUint8();\n            _this.underline = reader.readUint8();\n            _this.strikeout = reader.readUint8();\n            _this.charset = reader.readUint8();\n            _this.outprecision = reader.readUint8();\n            _this.clipprecision = reader.readUint8();\n            _this.quality = reader.readUint8();\n            var pitchAndFamily = reader.readUint8();\n            _this.pitch = pitchAndFamily & 0xf; // TODO: double check\n            _this.family = (pitchAndFamily >> 6) & 0x3; // TODO: double check\n            var dataLength = copy;\n            var start = reader.pos;\n            _this.facename = reader.readFixedSizeUnicodeString(Math.min(dataLength - (reader.pos - start), 32));\n        }\n        else if (copy != null) {\n            copy = copy;\n            _this.height = copy.height;\n            _this.width = copy.width;\n            _this.escapement = copy.escapement;\n            _this.orientation = copy.orientation;\n            _this.weight = copy.weight;\n            _this.italic = copy.italic;\n            _this.underline = copy.underline;\n            _this.strikeout = copy.strikeout;\n            _this.charset = copy.charset;\n            _this.outprecision = copy.outprecision;\n            _this.clipprecision = copy.clipprecision;\n            _this.quality = copy.quality;\n            _this.pitch = copy.pitch;\n            _this.family = copy.family;\n            _this.facename = copy.facename;\n        }\n        else {\n            // TODO: Values for a default font?\n            _this.height = -80;\n            _this.width = 0;\n            _this.escapement = 0;\n            _this.orientation = 0;\n            _this.weight = 400;\n            _this.italic = 0;\n            _this.underline = 0;\n            _this.strikeout = 0;\n            _this.charset = 0;\n            _this.outprecision = 0;\n            _this.clipprecision = 0;\n            _this.quality = 0;\n            _this.pitch = 0;\n            _this.family = 0;\n            _this.facename = \"Helvetica\";\n        }\n        return _this;\n    }\n    Font.prototype.clone = function () {\n        return new Font(null, this);\n    };\n    Font.prototype.toString = function () {\n        return JSON.stringify(this);\n    };\n    return Font;\n}(_Primitives__WEBPACK_IMPORTED_MODULE_2__.Obj));\n\nvar Brush = /** @class */ (function (_super) {\n    __extends(Brush, _super);\n    function Brush(reader, copy) {\n        var _this = _super.call(this, \"brush\") || this;\n        if (reader != null) {\n            var start = reader.pos;\n            _this.style = reader.readUint32();\n            switch (_this.style) {\n                case _Helper__WEBPACK_IMPORTED_MODULE_1__.Helper.GDI.BrushStyle.BS_SOLID:\n                    _this.color = new ColorRef(reader);\n                    break;\n                case _Helper__WEBPACK_IMPORTED_MODULE_1__.Helper.GDI.BrushStyle.BS_PATTERN:\n                    _this.pattern = new _Bitmap__WEBPACK_IMPORTED_MODULE_0__.DIBitmap(reader);\n                    break;\n                case _Helper__WEBPACK_IMPORTED_MODULE_1__.Helper.GDI.BrushStyle.BS_DIBPATTERNPT:\n                    _this.dibpatternpt = new _Bitmap__WEBPACK_IMPORTED_MODULE_0__.DIBitmap(reader);\n                    break;\n                case _Helper__WEBPACK_IMPORTED_MODULE_1__.Helper.GDI.BrushStyle.BS_HATCHED:\n                    _this.color = new ColorRef(reader);\n                    _this.hatchstyle = reader.readUint32();\n                    break;\n            }\n            reader.seek(start + 12);\n        }\n        else {\n            _this.style = copy.style;\n            switch (_this.style) {\n                case _Helper__WEBPACK_IMPORTED_MODULE_1__.Helper.GDI.BrushStyle.BS_SOLID:\n                    _this.color = copy.color.clone();\n                    break;\n                case _Helper__WEBPACK_IMPORTED_MODULE_1__.Helper.GDI.BrushStyle.BS_PATTERN:\n                    _this.pattern = copy.pattern;\n                    break;\n                case _Helper__WEBPACK_IMPORTED_MODULE_1__.Helper.GDI.BrushStyle.BS_DIBPATTERNPT:\n                    _this.dibpatternpt = copy.dibpatternpt;\n                    break;\n                case _Helper__WEBPACK_IMPORTED_MODULE_1__.Helper.GDI.BrushStyle.BS_HATCHED:\n                    _this.color = copy.color.clone();\n                    _this.hatchstyle = copy.hatchstyle;\n                    break;\n            }\n        }\n        return _this;\n    }\n    Brush.prototype.clone = function () {\n        return new Brush(null, this);\n    };\n    Brush.prototype.toString = function () {\n        var ret = \"{style: \" + this.style;\n        switch (this.style) {\n            case _Helper__WEBPACK_IMPORTED_MODULE_1__.Helper.GDI.BrushStyle.BS_SOLID:\n                ret += \", color: \" + this.color.toString();\n                break;\n            case _Helper__WEBPACK_IMPORTED_MODULE_1__.Helper.GDI.BrushStyle.BS_HATCHED:\n                ret += \", color: \" + this.color.toString() + \", hatchstyle: \" + this.hatchstyle;\n                break;\n        }\n        return ret + \"}\";\n    };\n    return Brush;\n}(_Primitives__WEBPACK_IMPORTED_MODULE_2__.Obj));\n\nvar Pen = /** @class */ (function (_super) {\n    __extends(Pen, _super);\n    function Pen(reader, style, width, color, brush) {\n        var _this = _super.call(this, \"pen\") || this;\n        if (reader != null) {\n            if (style != null) {\n                // LogPenEx\n                _this.style = reader.readUint32() & 0xFF;\n                _this.width = reader.readUint32();\n                _this.brush = new Brush(reader);\n                _this.color = _this.brush.color != null ? _this.brush.color.clone() : new ColorRef(null, 0, 0, 0);\n                // TODO: NumStyleEntries, StyleEntry\n            }\n            else {\n                // LogPen\n                _this.style = reader.readUint32() & 0xFF;\n                _this.width = (new _Primitives__WEBPACK_IMPORTED_MODULE_2__.PointL(reader)).x;\n                _this.color = new ColorRef(reader);\n            }\n        }\n        else {\n            _this.style = style;\n            _this.width = width;\n            if (color != null) {\n                _this.color = color;\n            }\n            if (brush != null) {\n                _this.brush = brush;\n            }\n        }\n        return _this;\n    }\n    Pen.prototype.clone = function () {\n        return new Pen(null, this.style, this.width, this.color != null ? this.color.clone() : null, this.brush != null ? this.brush.clone() : null);\n    };\n    Pen.prototype.toString = function () {\n        return \"{style: \" + this.style + \", width: \" + this.width\n            + \", color: \" + (this.color != null ? this.color.toString() : \"none\") + \"}\";\n    };\n    return Pen;\n}(_Primitives__WEBPACK_IMPORTED_MODULE_2__.Obj));\n\n\n\n/***/ }),\n\n/***/ \"./src/util/SVG.ts\":\n/*!*************************!*\\\n  !*** ./src/util/SVG.ts ***!\n  \\*************************/\n/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {\n\n__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"SVGFilters\": () => (/* binding */ SVGFilters),\n/* harmony export */   \"SVGPathBuilder\": () => (/* binding */ SVGPathBuilder),\n/* harmony export */   \"SVG\": () => (/* binding */ SVG)\n/* harmony export */ });\n/*\n\nThe MIT License (MIT)\n\nCopyright (c) 2020 Ynse Hoornenborg\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n\n*/\nvar SVGFilters = /** @class */ (function () {\n    function SVGFilters() {\n    }\n    SVGFilters.prototype.flood = function (filter, resultId, color, opacity, _settings) {\n        var floodElement = document.createElementNS(\"http://www.w3.org/2000/svg\", \"feFlood\");\n        if (resultId) {\n            floodElement.setAttribute(\"id\", resultId);\n        }\n        floodElement.setAttribute(\"flood-color\", color);\n        floodElement.setAttribute(\"flood-opacity\", opacity.toString());\n        filter.appendChild(floodElement);\n    };\n    SVGFilters.prototype.composite = function (filter, resultId, in1, in2, k1, k2, k3, k4, _settings) {\n        var compositeElement = document.createElementNS(\"http://www.w3.org/2000/svg\", \"feComposite\");\n        if (resultId) {\n            compositeElement.setAttribute(\"id\", resultId);\n        }\n        compositeElement.setAttribute(\"in\", in1);\n        compositeElement.setAttribute(\"in2\", in2);\n        filter.appendChild(compositeElement);\n    };\n    return SVGFilters;\n}());\n\nvar SVGPathBuilder = /** @class */ (function () {\n    function SVGPathBuilder() {\n        this._path = \"\";\n    }\n    SVGPathBuilder.prototype.move = function (x, y) {\n        this._path += \" M \" + x + \" \" + y;\n    };\n    SVGPathBuilder.prototype.path = function () {\n        return this._path.substr(1);\n    };\n    SVGPathBuilder.prototype.line = function (pts) {\n        var _this = this;\n        pts.forEach(function (point) {\n            _this._path += \" L \" + point[0] + \" \" + point[1];\n        });\n    };\n    SVGPathBuilder.prototype.curveC = function (x1, y1, x2, y2, x, y) {\n        this._path += \" C \" + x1 + \" \" + y1 + \", \" + x2 + \" \" + y2 + \", \" + x + \" \" + y;\n    };\n    SVGPathBuilder.prototype.close = function () {\n        this._path += \" Z\";\n    };\n    return SVGPathBuilder;\n}());\n\nvar SVG = /** @class */ (function () {\n    function SVG(svg) {\n        this.filters = new SVGFilters();\n        this._defs = undefined;\n        this._svg = svg;\n    }\n    SVG.prototype.svg = function (parent, x, y, width, height, settings) {\n        var svgElement = document.createElementNS(\"http://www.w3.org/2000/svg\", \"svg\");\n        svgElement.setAttribute(\"x\", x.toString());\n        svgElement.setAttribute(\"y\", y.toString());\n        svgElement.setAttribute(\"width\", width.toString());\n        svgElement.setAttribute(\"height\", height.toString());\n        this._appendSettings(settings, svgElement);\n        if (parent != null) {\n            parent.appendChild(svgElement);\n        }\n        else {\n            this._svg.appendChild(svgElement);\n        }\n        return svgElement;\n    };\n    SVG.prototype.image = function (parent, x, y, width, height, url, settings) {\n        var imageElement = document.createElementNS(\"http://www.w3.org/2000/svg\", \"image\");\n        imageElement.setAttribute(\"x\", x.toString());\n        imageElement.setAttribute(\"y\", y.toString());\n        imageElement.setAttribute(\"width\", width.toString());\n        imageElement.setAttribute(\"height\", height.toString());\n        imageElement.setAttributeNS(\"http://www.w3.org/1999/xlink\", \"href\", url);\n        this._appendSettings(settings, imageElement);\n        parent.appendChild(imageElement);\n        return imageElement;\n    };\n    SVG.prototype.rect = function (parent, x, y, width, height, rx, ry, settings) {\n        var rectElement = document.createElementNS(\"http://www.w3.org/2000/svg\", \"rect\");\n        rectElement.setAttribute(\"x\", x.toString());\n        rectElement.setAttribute(\"y\", y.toString());\n        rectElement.setAttribute(\"width\", width.toString());\n        rectElement.setAttribute(\"height\", height.toString());\n        if (rx !== undefined) {\n            if (rx instanceof Number) {\n                rectElement.setAttribute(\"rx\", rx.toString());\n            }\n            else if (rx instanceof Object) {\n                this._appendSettings(rx, rectElement);\n            }\n        }\n        if (ry !== undefined) {\n            rectElement.setAttribute(\"ry\", ry.toString());\n        }\n        this._appendSettings(settings, rectElement);\n        parent.appendChild(rectElement);\n        return rectElement;\n    };\n    SVG.prototype.line = function (parent, x1, y1, x2, y2, settings) {\n        var lineElement = document.createElementNS(\"http://www.w3.org/2000/svg\", \"line\");\n        lineElement.setAttribute(\"x1\", x1.toString());\n        lineElement.setAttribute(\"y1\", y1.toString());\n        lineElement.setAttribute(\"x2\", x2.toString());\n        lineElement.setAttribute(\"y2\", y2.toString());\n        this._appendSettings(settings, lineElement);\n        parent.appendChild(lineElement);\n        return lineElement;\n    };\n    SVG.prototype.polygon = function (parent, points, settings) {\n        var polygonElement = document.createElementNS(\"http://www.w3.org/2000/svg\", \"polygon\");\n        polygonElement.setAttribute(\"points\", points.map(function (point) { return point.join(\",\"); }).join(\" \"));\n        this._appendSettings(settings, polygonElement);\n        parent.appendChild(polygonElement);\n        return polygonElement;\n    };\n    SVG.prototype.polyline = function (parent, points, settings) {\n        var polylineElement = document.createElementNS(\"http://www.w3.org/2000/svg\", \"polyline\");\n        polylineElement.setAttribute(\"points\", points.map(function (point) { return point.join(\",\"); }).join(\" \"));\n        this._appendSettings(settings, polylineElement);\n        parent.appendChild(polylineElement);\n        return polylineElement;\n    };\n    SVG.prototype.ellipse = function (parent, cx, cy, rx, ry, settings) {\n        var ellipseElement = document.createElementNS(\"http://www.w3.org/2000/svg\", \"ellipse\");\n        ellipseElement.setAttribute(\"cx\", cx.toString());\n        ellipseElement.setAttribute(\"cy\", cy.toString());\n        ellipseElement.setAttribute(\"rx\", rx.toString());\n        ellipseElement.setAttribute(\"ry\", ry.toString());\n        this._appendSettings(settings, ellipseElement);\n        parent.appendChild(ellipseElement);\n        return ellipseElement;\n    };\n    SVG.prototype.path = function (parent, builder, settings) {\n        var pathElement = document.createElementNS(\"http://www.w3.org/2000/svg\", \"path\");\n        pathElement.setAttribute(\"d\", builder.path());\n        this._appendSettings(settings, pathElement);\n        parent.appendChild(pathElement);\n        return pathElement;\n    };\n    SVG.prototype.text = function (parent, x, y, value, settings) {\n        var textElement = document.createElementNS(\"http://www.w3.org/2000/svg\", \"text\");\n        textElement.setAttribute(\"x\", x.toString());\n        textElement.setAttribute(\"y\", y.toString());\n        this._appendSettings(settings, textElement);\n        var textNode = document.createTextNode(value);\n        textElement.appendChild(textNode);\n        parent.appendChild(textElement);\n        return textElement;\n    };\n    SVG.prototype.filter = function (parent, id, x, y, width, height, settings) {\n        var filterElement = document.createElementNS(\"http://www.w3.org/2000/svg\", \"filter\");\n        filterElement.setAttribute(\"x\", x.toString());\n        filterElement.setAttribute(\"y\", y.toString());\n        filterElement.setAttribute(\"width\", width.toString());\n        filterElement.setAttribute(\"height\", height.toString());\n        this._appendSettings(settings, filterElement);\n        parent.appendChild(filterElement);\n        return filterElement;\n    };\n    SVG.prototype.pattern = function (parent, resultId, x, y, width, height, settings) {\n        var patternElement = document.createElementNS(\"http://www.w3.org/2000/svg\", \"pattern\");\n        if (resultId) {\n            patternElement.setAttribute(\"id\", resultId);\n        }\n        patternElement.setAttribute(\"x\", x.toString());\n        patternElement.setAttribute(\"y\", y.toString());\n        patternElement.setAttribute(\"width\", width.toString());\n        patternElement.setAttribute(\"height\", height.toString());\n        this._appendSettings(settings, patternElement);\n        parent.appendChild(patternElement);\n        return patternElement;\n    };\n    SVG.prototype.defs = function () {\n        if (this._defs === undefined) {\n            var defsElement = document.createElementNS(\"http://www.w3.org/2000/svg\", \"defs\");\n            this._svg.appendChild(defsElement);\n            this._defs = defsElement;\n        }\n        return this._defs;\n    };\n    SVG.prototype.clipPath = function (parent, resultId, units, settings) {\n        var clipElement = document.createElementNS(\"http://www.w3.org/2000/svg\", \"clipPath\");\n        if (resultId) {\n            clipElement.setAttribute(\"id\", resultId);\n        }\n        if (units === undefined) {\n            units = \"userSpaceOnUse\";\n        }\n        clipElement.setAttribute(\"clipPathUnits\", units);\n        this._appendSettings(settings, clipElement);\n        parent.appendChild(clipElement);\n        return clipElement;\n    };\n    SVG.prototype.createPath = function () {\n        return new SVGPathBuilder();\n    };\n    SVG.prototype._appendSettings = function (settings, element) {\n        if (settings !== undefined) {\n            Object.keys(settings).forEach(function (key) {\n                element.setAttribute(key, settings[key]);\n            });\n        }\n    };\n    return SVG;\n}());\n\n\n\n/***/ }),\n\n/***/ \"./src/util/index.ts\":\n/*!***************************!*\\\n  !*** ./src/util/index.ts ***!\n  \\***************************/\n/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {\n\n__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"SVG\": () => (/* reexport safe */ _SVG__WEBPACK_IMPORTED_MODULE_0__.SVG)\n/* harmony export */ });\n/* harmony import */ var _SVG__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./SVG */ \"./src/util/SVG.ts\");\n/*\n\nThe MIT License (MIT)\n\nCopyright (c) 2020 Tom Zoehner\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n\n*/\n\n\n\n/***/ })\n\n/******/ \t});\n/************************************************************************/\n/******/ \t// The module cache\n/******/ \tvar __webpack_module_cache__ = {};\n/******/ \t\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n/******/ \t\t// Check if module is in cache\n/******/ \t\tvar cachedModule = __webpack_module_cache__[moduleId];\n/******/ \t\tif (cachedModule !== undefined) {\n/******/ \t\t\treturn cachedModule.exports;\n/******/ \t\t}\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = __webpack_module_cache__[moduleId] = {\n/******/ \t\t\t// no module.id needed\n/******/ \t\t\t// no module.loaded needed\n/******/ \t\t\texports: {}\n/******/ \t\t};\n/******/ \t\n/******/ \t\t// Execute the module function\n/******/ \t\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n/******/ \t\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/ \t\n/************************************************************************/\n/******/ \t/* webpack/runtime/define property getters */\n/******/ \t(() => {\n/******/ \t\t// define getter functions for harmony exports\n/******/ \t\t__webpack_require__.d = (exports, definition) => {\n/******/ \t\t\tfor(var key in definition) {\n/******/ \t\t\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n/******/ \t\t\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n/******/ \t\t\t\t}\n/******/ \t\t\t}\n/******/ \t\t};\n/******/ \t})();\n/******/ \t\n/******/ \t/* webpack/runtime/hasOwnProperty shorthand */\n/******/ \t(() => {\n/******/ \t\t__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))\n/******/ \t})();\n/******/ \t\n/******/ \t/* webpack/runtime/make namespace object */\n/******/ \t(() => {\n/******/ \t\t// define __esModule on exports\n/******/ \t\t__webpack_require__.r = (exports) => {\n/******/ \t\t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n/******/ \t\t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n/******/ \t\t\t}\n/******/ \t\t\tObject.defineProperty(exports, '__esModule', { value: true });\n/******/ \t\t};\n/******/ \t})();\n/******/ \t\n/************************************************************************/\nvar __webpack_exports__ = {};\n// This entry need to be wrapped in an IIFE because it need to be isolated against other modules in the chunk.\n(() => {\n/*!****************************!*\\\n  !*** ./src/emfjs/index.ts ***!\n  \\****************************/\n__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"Renderer\": () => (/* reexport safe */ _Renderer__WEBPACK_IMPORTED_MODULE_0__.Renderer),\n/* harmony export */   \"Error\": () => (/* reexport safe */ _Helper__WEBPACK_IMPORTED_MODULE_1__.EMFJSError),\n/* harmony export */   \"loggingEnabled\": () => (/* reexport safe */ _Helper__WEBPACK_IMPORTED_MODULE_1__.loggingEnabled)\n/* harmony export */ });\n/* harmony import */ var _Renderer__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./Renderer */ \"./src/emfjs/Renderer.ts\");\n/* harmony import */ var _Helper__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./Helper */ \"./src/emfjs/Helper.ts\");\n/*\n\nThe MIT License (MIT)\n\nCopyright (c) 2016 Tom Zoehner\nCopyright (c) 2018 Thomas Bluemel\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n\n*/\n\n\n\n})();\n\n/******/ \treturn __webpack_exports__;\n/******/ })()\n;\n});\n//# sourceMappingURL=EMFJS.bundle.js.map"
  },
  {
    "path": "application/public/js/RTFJS.bundle.js",
    "content": "(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory(require(\"./EMFJS.bundle.js\"), require(\"./WMFJS.bundle.js\"));\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([\"./EMFJS.bundle.js\", \"./WMFJS.bundle.js\"], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"RTFJS\"] = factory(require(\"./EMFJS.bundle.js\"), require(\"./WMFJS.bundle.js\"));\n\telse\n\t\troot[\"RTFJS\"] = factory(root[\"EMFJS\"], root[\"WMFJS\"]);\n})(this, function(__WEBPACK_EXTERNAL_MODULE_EMFJS__, __WEBPACK_EXTERNAL_MODULE_WMFJS__) {\nreturn /******/ (() => { // webpackBootstrap\n/******/ \tvar __webpack_modules__ = ({\n\n/***/ \"./node_modules/codepage/cptable.js\":\n/*!******************************************!*\\\n  !*** ./node_modules/codepage/cptable.js ***!\n  \\******************************************/\n/***/ ((module) => {\n\n/* cptable.js (C) 2013-present SheetJS -- http://sheetjs.com */\n/*jshint -W100 */\nvar cptable = {version:\"1.14.0\"};\ncptable[37] = (function(){ var d = \"\\u0000\\u0001\\u0002\\u0003\\t\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\b\\u0018\\u0019\\u001c\\u001d\\u001e\\u001f\\n\\u0017\\u001b\\u0005\\u0006\\u0007\\u0016\\u0004\\u0014\\u0015\\u001a  âäàáãåçñ¢.<(+|&éêëèíîïìß!$*);¬-/ÂÄÀÁÃÅÇÑ¦,%_>?øÉÊËÈÍÎÏÌ`:#@'=\\\"Øabcdefghi«»ðýþ±°jklmnopqrªºæ¸Æ¤µ~stuvwxyz¡¿ÐÝÞ®^£¥·©§¶¼½¾[]¯¨´×{ABCDEFGHI­ôöòóõ}JKLMNOPQR¹ûüùúÿ\\\\÷STUVWXYZ²ÔÖÒÓÕ0123456789³ÛÜÙÚ\", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {\"enc\": e, \"dec\": D }; })();\ncptable[437] = (function(){ var d = \"\\u0000\\u0001\\u0002\\u0003\\u0004\\u0005\\u0006\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\u0014\\u0015\\u0016\\u0017\\u0018\\u0019\\u001a\\u001b\\u001c\\u001d\\u001e\\u001f !\\\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~ÇüéâäàåçêëèïîìÄÅÉæÆôöòûùÿÖÜ¢£¥₧ƒáíóúñÑªº¿⌐¬½¼¡«»░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀αßΓπΣσµτΦΘΩδ∞φε∩≡±≥≤⌠⌡÷≈°∙·√ⁿ²■ \", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {\"enc\": e, \"dec\": D }; })();\ncptable[500] = (function(){ var d = \"\\u0000\\u0001\\u0002\\u0003\\t\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\b\\u0018\\u0019\\u001c\\u001d\\u001e\\u001f\\n\\u0017\\u001b\\u0005\\u0006\\u0007\\u0016\\u0004\\u0014\\u0015\\u001a  âäàáãåçñ[.<(+!&éêëèíîïìß]$*);^-/ÂÄÀÁÃÅÇÑ¦,%_>?øÉÊËÈÍÎÏÌ`:#@'=\\\"Øabcdefghi«»ðýþ±°jklmnopqrªºæ¸Æ¤µ~stuvwxyz¡¿ÐÝÞ®¢£¥·©§¶¼½¾¬|¯¨´×{ABCDEFGHI­ôöòóõ}JKLMNOPQR¹ûüùúÿ\\\\÷STUVWXYZ²ÔÖÒÓÕ0123456789³ÛÜÙÚ\", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {\"enc\": e, \"dec\": D }; })();\ncptable[737] = (function(){ var d = \"\\u0000\\u0001\\u0002\\u0003\\u0004\\u0005\\u0006\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\u0014\\u0015\\u0016\\u0017\\u0018\\u0019\\u001a\\u001b\\u001c\\u001d\\u001e\\u001f !\\\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~ΑΒΓΔΕΖΗΘΙΚΛΜΝΞΟΠΡΣΤΥΦΧΨΩαβγδεζηθικλμνξοπρσςτυφχψ░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀ωάέήϊίόύϋώΆΈΉΊΌΎΏ±≥≤ΪΫ÷≈°∙·√ⁿ²■ \", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {\"enc\": e, \"dec\": D }; })();\ncptable[775] = (function(){ var d = \"\\u0000\\u0001\\u0002\\u0003\\u0004\\u0005\\u0006\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\u0014\\u0015\\u0016\\u0017\\u0018\\u0019\\u001a\\u001b\\u001c\\u001d\\u001e\\u001f !\\\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~ĆüéāäģåćłēŖŗīŹÄÅÉæÆōöĢ¢ŚśÖÜø£Ø×¤ĀĪóŻżź”¦©®¬½¼Ł«»░▒▓│┤ĄČĘĖ╣║╗╝ĮŠ┐└┴┬├─┼ŲŪ╚╔╩╦╠═╬Žąčęėįšųūž┘┌█▄▌▐▀ÓßŌŃõÕµńĶķĻļņĒŅ’­±“¾¶§÷„°∙·¹³²■ \", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {\"enc\": e, \"dec\": D }; })();\ncptable[850] = (function(){ var d = \"\\u0000\\u0001\\u0002\\u0003\\u0004\\u0005\\u0006\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\u0014\\u0015\\u0016\\u0017\\u0018\\u0019\\u001a\\u001b\\u001c\\u001d\\u001e\\u001f !\\\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~ÇüéâäàåçêëèïîìÄÅÉæÆôöòûùÿÖÜø£Ø×ƒáíóúñÑªº¿®¬½¼¡«»░▒▓│┤ÁÂÀ©╣║╗╝¢¥┐└┴┬├─┼ãÃ╚╔╩╦╠═╬¤ðÐÊËÈıÍÎÏ┘┌█▄¦Ì▀ÓßÔÒõÕµþÞÚÛÙýÝ¯´­±‗¾¶§÷¸°¨·¹³²■ \", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {\"enc\": e, \"dec\": D }; })();\ncptable[852] = (function(){ var d = \"\\u0000\\u0001\\u0002\\u0003\\u0004\\u0005\\u0006\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\u0014\\u0015\\u0016\\u0017\\u0018\\u0019\\u001a\\u001b\\u001c\\u001d\\u001e\\u001f !\\\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~ÇüéâäůćçłëŐőîŹÄĆÉĹĺôöĽľŚśÖÜŤťŁ×čáíóúĄąŽžĘę¬źČş«»░▒▓│┤ÁÂĚŞ╣║╗╝Żż┐└┴┬├─┼Ăă╚╔╩╦╠═╬¤đĐĎËďŇÍÎě┘┌█▄ŢŮ▀ÓßÔŃńňŠšŔÚŕŰýÝţ´­˝˛ˇ˘§÷¸°¨˙űŘř■ \", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {\"enc\": e, \"dec\": D }; })();\ncptable[855] = (function(){ var d = \"\\u0000\\u0001\\u0002\\u0003\\u0004\\u0005\\u0006\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\u0014\\u0015\\u0016\\u0017\\u0018\\u0019\\u001a\\u001b\\u001c\\u001d\\u001e\\u001f !\\\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~ђЂѓЃёЁєЄѕЅіІїЇјЈљЉњЊћЋќЌўЎџЏюЮъЪаАбБцЦдДеЕфФгГ«»░▒▓│┤хХиИ╣║╗╝йЙ┐└┴┬├─┼кК╚╔╩╦╠═╬¤лЛмМнНоОп┘┌█▄Пя▀ЯрРсСтТуУжЖвВьЬ№­ыЫзЗшШэЭщЩчЧ§■ \", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {\"enc\": e, \"dec\": D }; })();\ncptable[857] = (function(){ var d = \"\\u0000\\u0001\\u0002\\u0003\\u0004\\u0005\\u0006\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\u0014\\u0015\\u0016\\u0017\\u0018\\u0019\\u001a\\u001b\\u001c\\u001d\\u001e\\u001f !\\\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~ÇüéâäàåçêëèïîıÄÅÉæÆôöòûùİÖÜø£ØŞşáíóúñÑĞğ¿®¬½¼¡«»░▒▓│┤ÁÂÀ©╣║╗╝¢¥┐└┴┬├─┼ãÃ╚╔╩╦╠═╬¤ºªÊËÈ�ÍÎÏ┘┌█▄¦Ì▀ÓßÔÒõÕµ�×ÚÛÙìÿ¯´­±�¾¶§÷¸°¨·¹³²■ \", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {\"enc\": e, \"dec\": D }; })();\ncptable[860] = (function(){ var d = \"\\u0000\\u0001\\u0002\\u0003\\u0004\\u0005\\u0006\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\u0014\\u0015\\u0016\\u0017\\u0018\\u0019\\u001a\\u001b\\u001c\\u001d\\u001e\\u001f !\\\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~ÇüéâãàÁçêÊèÍÔìÃÂÉÀÈôõòÚùÌÕÜ¢£Ù₧ÓáíóúñÑªº¿Ò¬½¼¡«»░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀αßΓπΣσµτΦΘΩδ∞φε∩≡±≥≤⌠⌡÷≈°∙·√ⁿ²■ \", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {\"enc\": e, \"dec\": D }; })();\ncptable[861] = (function(){ var d = \"\\u0000\\u0001\\u0002\\u0003\\u0004\\u0005\\u0006\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\u0014\\u0015\\u0016\\u0017\\u0018\\u0019\\u001a\\u001b\\u001c\\u001d\\u001e\\u001f !\\\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~ÇüéâäàåçêëèÐðÞÄÅÉæÆôöþûÝýÖÜø£Ø₧ƒáíóúÁÍÓÚ¿⌐¬½¼¡«»░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀αßΓπΣσµτΦΘΩδ∞φε∩≡±≥≤⌠⌡÷≈°∙·√ⁿ²■ \", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {\"enc\": e, \"dec\": D }; })();\ncptable[862] = (function(){ var d = \"\\u0000\\u0001\\u0002\\u0003\\u0004\\u0005\\u0006\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\u0014\\u0015\\u0016\\u0017\\u0018\\u0019\\u001a\\u001b\\u001c\\u001d\\u001e\\u001f !\\\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~אבגדהוזחטיךכלםמןנסעףפץצקרשת¢£¥₧ƒáíóúñÑªº¿⌐¬½¼¡«»░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀αßΓπΣσµτΦΘΩδ∞φε∩≡±≥≤⌠⌡÷≈°∙·√ⁿ²■ \", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {\"enc\": e, \"dec\": D }; })();\ncptable[863] = (function(){ var d = \"\\u0000\\u0001\\u0002\\u0003\\u0004\\u0005\\u0006\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\u0014\\u0015\\u0016\\u0017\\u0018\\u0019\\u001a\\u001b\\u001c\\u001d\\u001e\\u001f !\\\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~ÇüéâÂà¶çêëèïî‗À§ÉÈÊôËÏûù¤ÔÜ¢£ÙÛƒ¦´óú¨¸³¯Î⌐¬½¼¾«»░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀αßΓπΣσµτΦΘΩδ∞φε∩≡±≥≤⌠⌡÷≈°∙·√ⁿ²■ \", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {\"enc\": e, \"dec\": D }; })();\ncptable[864] = (function(){ var d = \"\\u0000\\u0001\\u0002\\u0003\\u0004\\u0005\\u0006\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\u0014\\u0015\\u0016\\u0017\\u0018\\u0019\\u001a\\u001b\\u001c\\u001d\\u001e\\u001f !\\\"#$٪&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~°·∙√▒─│┼┤┬├┴┐┌└┘β∞φ±½¼≈«»ﻷﻸ��ﻻﻼ� ­ﺂ£¤ﺄ��ﺎﺏﺕﺙ،ﺝﺡﺥ٠١٢٣٤٥٦٧٨٩ﻑ؛ﺱﺵﺹ؟¢ﺀﺁﺃﺅﻊﺋﺍﺑﺓﺗﺛﺟﺣﺧﺩﺫﺭﺯﺳﺷﺻﺿﻁﻅﻋﻏ¦¬÷×ﻉـﻓﻗﻛﻟﻣﻧﻫﻭﻯﻳﺽﻌﻎﻍﻡﹽّﻥﻩﻬﻰﻲﻐﻕﻵﻶﻝﻙﻱ■�\", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {\"enc\": e, \"dec\": D }; })();\ncptable[865] = (function(){ var d = \"\\u0000\\u0001\\u0002\\u0003\\u0004\\u0005\\u0006\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\u0014\\u0015\\u0016\\u0017\\u0018\\u0019\\u001a\\u001b\\u001c\\u001d\\u001e\\u001f !\\\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~ÇüéâäàåçêëèïîìÄÅÉæÆôöòûùÿÖÜø£Ø₧ƒáíóúñÑªº¿⌐¬½¼¡«¤░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀αßΓπΣσµτΦΘΩδ∞φε∩≡±≥≤⌠⌡÷≈°∙·√ⁿ²■ \", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {\"enc\": e, \"dec\": D }; })();\ncptable[866] = (function(){ var d = \"\\u0000\\u0001\\u0002\\u0003\\u0004\\u0005\\u0006\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\u0014\\u0015\\u0016\\u0017\\u0018\\u0019\\u001a\\u001b\\u001c\\u001d\\u001e\\u001f !\\\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~АБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмноп░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀рстуфхцчшщъыьэюяЁёЄєЇїЎў°∙·√№¤■ \", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {\"enc\": e, \"dec\": D }; })();\ncptable[869] = (function(){ var d = \"\\u0000\\u0001\\u0002\\u0003\\u0004\\u0005\\u0006\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\u0014\\u0015\\u0016\\u0017\\u0018\\u0019\\u001a\\u001b\\u001c\\u001d\\u001e\\u001f !\\\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~������Ά�·¬¦‘’Έ―ΉΊΪΌ��ΎΫ©Ώ²³ά£έήίϊΐόύΑΒΓΔΕΖΗ½ΘΙ«»░▒▓│┤ΚΛΜΝ╣║╗╝ΞΟ┐└┴┬├─┼ΠΡ╚╔╩╦╠═╬ΣΤΥΦΧΨΩαβγ┘┌█▄δε▀ζηθικλμνξοπρσςτ΄­±υφχ§ψ΅°¨ωϋΰώ■ \", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {\"enc\": e, \"dec\": D }; })();\ncptable[874] = (function(){ var d = \"\\u0000\\u0001\\u0002\\u0003\\u0004\\u0005\\u0006\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\u0014\\u0015\\u0016\\u0017\\u0018\\u0019\\u001a\\u001b\\u001c\\u001d\\u001e\\u001f !\\\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~€����…�����������‘’“”•–—�������� กขฃคฅฆงจฉชซฌญฎฏฐฑฒณดตถทธนบปผฝพฟภมยรฤลฦวศษสหฬอฮฯะัาำิีึืฺุู����฿เแโใไๅๆ็่้๊๋์ํ๎๏๐๑๒๓๔๕๖๗๘๙๚๛����\", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {\"enc\": e, \"dec\": D }; })();\ncptable[875] = (function(){ var d = \"\\u0000\\u0001\\u0002\\u0003\\t\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\b\\u0018\\u0019\\u001c\\u001d\\u001e\\u001f\\n\\u0017\\u001b\\u0005\\u0006\\u0007\\u0016\\u0004\\u0014\\u0015\\u001a ΑΒΓΔΕΖΗΘΙ[.<(+!&ΚΛΜΝΞΟΠΡΣ]$*);^-/ΤΥΦΧΨΩΪΫ|,%_>?¨ΆΈΉ ΊΌΎΏ`:#@'=\\\"΅abcdefghiαβγδεζ°jklmnopqrηθικλμ´~stuvwxyzνξοπρσ£άέήϊίόύϋώςτυφχψ{ABCDEFGHI­ωΐΰ‘―}JKLMNOPQR±½\\u001a·’¦\\\\\\u001aSTUVWXYZ²§\\u001a\\u001a«¬0123456789³©\\u001a\\u001a»\", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {\"enc\": e, \"dec\": D }; })();\ncptable[932] = (function(){ var d = [], e = {}, D = [], j;\nD[0] = \"\\u0000\\u0001\\u0002\\u0003\\u0004\\u0005\\u0006\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\u0014\\u0015\\u0016\\u0017\\u0018\\u0019\\u001a\\u001b\\u001c\\u001d\\u001e\\u001f !\\\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~���������������������������������｡｢｣､･ｦｧｨｩｪｫｬｭｮｯｰｱｲｳｴｵｶｷｸｹｺｻｼｽｾｿﾀﾁﾂﾃﾄﾅﾆﾇﾈﾉﾊﾋﾌﾍﾎﾏﾐﾑﾒﾓﾔﾕﾖﾗﾘﾙﾚﾛﾜﾝﾞﾟ��������������������������������\".split(\"\");\nfor(j = 0; j != D[0].length; ++j) if(D[0][j].charCodeAt(0) !== 0xFFFD) { e[D[0][j]] = 0 + j; d[0 + j] = D[0][j];}\nD[129] = \"����������������������������������������������������������������　、。，．・：；？！゛゜´｀¨＾￣＿ヽヾゝゞ〃仝々〆〇ー―‐／＼～∥｜…‥‘’“”（）〔〕［］｛｝〈〉《》「」『』【】＋－±×�÷＝≠＜＞≦≧∞∴♂♀°′″℃￥＄￠￡％＃＆＊＠§☆★○●◎◇◆□■△▲▽▼※〒→←↑↓〓�����������∈∋⊆⊇⊂⊃∪∩��������∧∨￢⇒⇔∀∃�����������∠⊥⌒∂∇≡≒≪≫√∽∝∵∫∬�������Å‰♯♭♪†‡¶����◯���\".split(\"\");\nfor(j = 0; j != D[129].length; ++j) if(D[129][j].charCodeAt(0) !== 0xFFFD) { e[D[129][j]] = 33024 + j; d[33024 + j] = D[129][j];}\nD[130] = \"�������������������������������������������������������������������������������０１２３４５６７８９�������ＡＢＣＤＥＦＧＨＩＪＫＬＭＮＯＰＱＲＳＴＵＶＷＸＹＺ�������ａｂｃｄｅｆｇｈｉｊｋｌｍｎｏｐｑｒｓｔｕｖｗｘｙｚ����ぁあぃいぅうぇえぉおかがきぎくぐけげこごさざしじすずせぜそぞただちぢっつづてでとどなにぬねのはばぱひびぴふぶぷへべぺほぼぽまみむめもゃやゅゆょよらりるれろゎわゐゑをん��������������\".split(\"\");\nfor(j = 0; j != D[130].length; ++j) if(D[130][j].charCodeAt(0) !== 0xFFFD) { e[D[130][j]] = 33280 + j; d[33280 + j] = D[130][j];}\nD[131] = \"����������������������������������������������������������������ァアィイゥウェエォオカガキギクグケゲコゴサザシジスズセゼソゾタダチヂッツヅテデトドナニヌネノハバパヒビピフブプヘベペホボポマミ�ムメモャヤュユョヨラリルレロヮワヰヱヲンヴヵヶ��������ΑΒΓΔΕΖΗΘΙΚΛΜΝΞΟΠΡΣΤΥΦΧΨΩ��������αβγδεζηθικλμνξοπρστυφχψω�����������������������������������������\".split(\"\");\nfor(j = 0; j != D[131].length; ++j) if(D[131][j].charCodeAt(0) !== 0xFFFD) { e[D[131][j]] = 33536 + j; d[33536 + j] = D[131][j];}\nD[132] = \"����������������������������������������������������������������АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ���������������абвгдеёжзийклмн�опрстуфхцчшщъыьэюя�������������─│┌┐┘└├┬┤┴┼━┃┏┓┛┗┣┳┫┻╋┠┯┨┷┿┝┰┥┸╂�����������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[132].length; ++j) if(D[132][j].charCodeAt(0) !== 0xFFFD) { e[D[132][j]] = 33792 + j; d[33792 + j] = D[132][j];}\nD[135] = \"����������������������������������������������������������������①②③④⑤⑥⑦⑧⑨⑩⑪⑫⑬⑭⑮⑯⑰⑱⑲⑳ⅠⅡⅢⅣⅤⅥⅦⅧⅨⅩ�㍉㌔㌢㍍㌘㌧㌃㌶㍑㍗㌍㌦㌣㌫㍊㌻㎜㎝㎞㎎㎏㏄㎡��������㍻�〝〟№㏍℡㊤㊥㊦㊧㊨㈱㈲㈹㍾㍽㍼≒≡∫∮∑√⊥∠∟⊿∵∩∪���������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[135].length; ++j) if(D[135][j].charCodeAt(0) !== 0xFFFD) { e[D[135][j]] = 34560 + j; d[34560 + j] = D[135][j];}\nD[136] = \"���������������������������������������������������������������������������������������������������������������������������������������������������������������亜唖娃阿哀愛挨姶逢葵茜穐悪握渥旭葦芦鯵梓圧斡扱宛姐虻飴絢綾鮎或粟袷安庵按暗案闇鞍杏以伊位依偉囲夷委威尉惟意慰易椅為畏異移維緯胃萎衣謂違遺医井亥域育郁磯一壱溢逸稲茨芋鰯允印咽員因姻引飲淫胤蔭���\".split(\"\");\nfor(j = 0; j != D[136].length; ++j) if(D[136][j].charCodeAt(0) !== 0xFFFD) { e[D[136][j]] = 34816 + j; d[34816 + j] = D[136][j];}\nD[137] = \"����������������������������������������������������������������院陰隠韻吋右宇烏羽迂雨卯鵜窺丑碓臼渦嘘唄欝蔚鰻姥厩浦瓜閏噂云運雲荏餌叡営嬰影映曳栄永泳洩瑛盈穎頴英衛詠鋭液疫益駅悦謁越閲榎厭円�園堰奄宴延怨掩援沿演炎焔煙燕猿縁艶苑薗遠鉛鴛塩於汚甥凹央奥往応押旺横欧殴王翁襖鴬鴎黄岡沖荻億屋憶臆桶牡乙俺卸恩温穏音下化仮何伽価佳加可嘉夏嫁家寡科暇果架歌河火珂禍禾稼箇花苛茄荷華菓蝦課嘩貨迦過霞蚊俄峨我牙画臥芽蛾賀雅餓駕介会解回塊壊廻快怪悔恢懐戒拐改���\".split(\"\");\nfor(j = 0; j != D[137].length; ++j) if(D[137][j].charCodeAt(0) !== 0xFFFD) { e[D[137][j]] = 35072 + j; d[35072 + j] = D[137][j];}\nD[138] = \"����������������������������������������������������������������魁晦械海灰界皆絵芥蟹開階貝凱劾外咳害崖慨概涯碍蓋街該鎧骸浬馨蛙垣柿蛎鈎劃嚇各廓拡撹格核殻獲確穫覚角赫較郭閣隔革学岳楽額顎掛笠樫�橿梶鰍潟割喝恰括活渇滑葛褐轄且鰹叶椛樺鞄株兜竃蒲釜鎌噛鴨栢茅萱粥刈苅瓦乾侃冠寒刊勘勧巻喚堪姦完官寛干幹患感慣憾換敢柑桓棺款歓汗漢澗潅環甘監看竿管簡緩缶翰肝艦莞観諌貫還鑑間閑関陥韓館舘丸含岸巌玩癌眼岩翫贋雁頑顔願企伎危喜器基奇嬉寄岐希幾忌揮机旗既期棋棄���\".split(\"\");\nfor(j = 0; j != D[138].length; ++j) if(D[138][j].charCodeAt(0) !== 0xFFFD) { e[D[138][j]] = 35328 + j; d[35328 + j] = D[138][j];}\nD[139] = \"����������������������������������������������������������������機帰毅気汽畿祈季稀紀徽規記貴起軌輝飢騎鬼亀偽儀妓宜戯技擬欺犠疑祇義蟻誼議掬菊鞠吉吃喫桔橘詰砧杵黍却客脚虐逆丘久仇休及吸宮弓急救�朽求汲泣灸球究窮笈級糾給旧牛去居巨拒拠挙渠虚許距鋸漁禦魚亨享京供侠僑兇競共凶協匡卿叫喬境峡強彊怯恐恭挟教橋況狂狭矯胸脅興蕎郷鏡響饗驚仰凝尭暁業局曲極玉桐粁僅勤均巾錦斤欣欽琴禁禽筋緊芹菌衿襟謹近金吟銀九倶句区狗玖矩苦躯駆駈駒具愚虞喰空偶寓遇隅串櫛釧屑屈���\".split(\"\");\nfor(j = 0; j != D[139].length; ++j) if(D[139][j].charCodeAt(0) !== 0xFFFD) { e[D[139][j]] = 35584 + j; d[35584 + j] = D[139][j];}\nD[140] = \"����������������������������������������������������������������掘窟沓靴轡窪熊隈粂栗繰桑鍬勲君薫訓群軍郡卦袈祁係傾刑兄啓圭珪型契形径恵慶慧憩掲携敬景桂渓畦稽系経継繋罫茎荊蛍計詣警軽頚鶏芸迎鯨�劇戟撃激隙桁傑欠決潔穴結血訣月件倹倦健兼券剣喧圏堅嫌建憲懸拳捲検権牽犬献研硯絹県肩見謙賢軒遣鍵険顕験鹸元原厳幻弦減源玄現絃舷言諺限乎個古呼固姑孤己庫弧戸故枯湖狐糊袴股胡菰虎誇跨鈷雇顧鼓五互伍午呉吾娯後御悟梧檎瑚碁語誤護醐乞鯉交佼侯候倖光公功効勾厚口向���\".split(\"\");\nfor(j = 0; j != D[140].length; ++j) if(D[140][j].charCodeAt(0) !== 0xFFFD) { e[D[140][j]] = 35840 + j; d[35840 + j] = D[140][j];}\nD[141] = \"����������������������������������������������������������������后喉坑垢好孔孝宏工巧巷幸広庚康弘恒慌抗拘控攻昂晃更杭校梗構江洪浩港溝甲皇硬稿糠紅紘絞綱耕考肯肱腔膏航荒行衡講貢購郊酵鉱砿鋼閤降�項香高鴻剛劫号合壕拷濠豪轟麹克刻告国穀酷鵠黒獄漉腰甑忽惚骨狛込此頃今困坤墾婚恨懇昏昆根梱混痕紺艮魂些佐叉唆嵯左差査沙瑳砂詐鎖裟坐座挫債催再最哉塞妻宰彩才採栽歳済災采犀砕砦祭斎細菜裁載際剤在材罪財冴坂阪堺榊肴咲崎埼碕鷺作削咋搾昨朔柵窄策索錯桜鮭笹匙冊刷���\".split(\"\");\nfor(j = 0; j != D[141].length; ++j) if(D[141][j].charCodeAt(0) !== 0xFFFD) { e[D[141][j]] = 36096 + j; d[36096 + j] = D[141][j];}\nD[142] = \"����������������������������������������������������������������察拶撮擦札殺薩雑皐鯖捌錆鮫皿晒三傘参山惨撒散桟燦珊産算纂蚕讃賛酸餐斬暫残仕仔伺使刺司史嗣四士始姉姿子屍市師志思指支孜斯施旨枝止�死氏獅祉私糸紙紫肢脂至視詞詩試誌諮資賜雌飼歯事似侍児字寺慈持時次滋治爾璽痔磁示而耳自蒔辞汐鹿式識鴫竺軸宍雫七叱執失嫉室悉湿漆疾質実蔀篠偲柴芝屡蕊縞舎写射捨赦斜煮社紗者謝車遮蛇邪借勺尺杓灼爵酌釈錫若寂弱惹主取守手朱殊狩珠種腫趣酒首儒受呪寿授樹綬需囚収周���\".split(\"\");\nfor(j = 0; j != D[142].length; ++j) if(D[142][j].charCodeAt(0) !== 0xFFFD) { e[D[142][j]] = 36352 + j; d[36352 + j] = D[142][j];}\nD[143] = \"����������������������������������������������������������������宗就州修愁拾洲秀秋終繍習臭舟蒐衆襲讐蹴輯週酋酬集醜什住充十従戎柔汁渋獣縦重銃叔夙宿淑祝縮粛塾熟出術述俊峻春瞬竣舜駿准循旬楯殉淳�準潤盾純巡遵醇順処初所暑曙渚庶緒署書薯藷諸助叙女序徐恕鋤除傷償勝匠升召哨商唱嘗奨妾娼宵将小少尚庄床廠彰承抄招掌捷昇昌昭晶松梢樟樵沼消渉湘焼焦照症省硝礁祥称章笑粧紹肖菖蒋蕉衝裳訟証詔詳象賞醤鉦鍾鐘障鞘上丈丞乗冗剰城場壌嬢常情擾条杖浄状畳穣蒸譲醸錠嘱埴飾���\".split(\"\");\nfor(j = 0; j != D[143].length; ++j) if(D[143][j].charCodeAt(0) !== 0xFFFD) { e[D[143][j]] = 36608 + j; d[36608 + j] = D[143][j];}\nD[144] = \"����������������������������������������������������������������拭植殖燭織職色触食蝕辱尻伸信侵唇娠寝審心慎振新晋森榛浸深申疹真神秦紳臣芯薪親診身辛進針震人仁刃塵壬尋甚尽腎訊迅陣靭笥諏須酢図厨�逗吹垂帥推水炊睡粋翠衰遂酔錐錘随瑞髄崇嵩数枢趨雛据杉椙菅頗雀裾澄摺寸世瀬畝是凄制勢姓征性成政整星晴棲栖正清牲生盛精聖声製西誠誓請逝醒青静斉税脆隻席惜戚斥昔析石積籍績脊責赤跡蹟碩切拙接摂折設窃節説雪絶舌蝉仙先千占宣専尖川戦扇撰栓栴泉浅洗染潜煎煽旋穿箭線���\".split(\"\");\nfor(j = 0; j != D[144].length; ++j) if(D[144][j].charCodeAt(0) !== 0xFFFD) { e[D[144][j]] = 36864 + j; d[36864 + j] = D[144][j];}\nD[145] = \"����������������������������������������������������������������繊羨腺舛船薦詮賎践選遷銭銑閃鮮前善漸然全禅繕膳糎噌塑岨措曾曽楚狙疏疎礎祖租粗素組蘇訴阻遡鼠僧創双叢倉喪壮奏爽宋層匝惣想捜掃挿掻�操早曹巣槍槽漕燥争痩相窓糟総綜聡草荘葬蒼藻装走送遭鎗霜騒像増憎臓蔵贈造促側則即息捉束測足速俗属賊族続卒袖其揃存孫尊損村遜他多太汰詑唾堕妥惰打柁舵楕陀駄騨体堆対耐岱帯待怠態戴替泰滞胎腿苔袋貸退逮隊黛鯛代台大第醍題鷹滝瀧卓啄宅托択拓沢濯琢託鐸濁諾茸凧蛸只���\".split(\"\");\nfor(j = 0; j != D[145].length; ++j) if(D[145][j].charCodeAt(0) !== 0xFFFD) { e[D[145][j]] = 37120 + j; d[37120 + j] = D[145][j];}\nD[146] = \"����������������������������������������������������������������叩但達辰奪脱巽竪辿棚谷狸鱈樽誰丹単嘆坦担探旦歎淡湛炭短端箪綻耽胆蛋誕鍛団壇弾断暖檀段男談値知地弛恥智池痴稚置致蜘遅馳築畜竹筑蓄�逐秩窒茶嫡着中仲宙忠抽昼柱注虫衷註酎鋳駐樗瀦猪苧著貯丁兆凋喋寵帖帳庁弔張彫徴懲挑暢朝潮牒町眺聴脹腸蝶調諜超跳銚長頂鳥勅捗直朕沈珍賃鎮陳津墜椎槌追鎚痛通塚栂掴槻佃漬柘辻蔦綴鍔椿潰坪壷嬬紬爪吊釣鶴亭低停偵剃貞呈堤定帝底庭廷弟悌抵挺提梯汀碇禎程締艇訂諦蹄逓���\".split(\"\");\nfor(j = 0; j != D[146].length; ++j) if(D[146][j].charCodeAt(0) !== 0xFFFD) { e[D[146][j]] = 37376 + j; d[37376 + j] = D[146][j];}\nD[147] = \"����������������������������������������������������������������邸鄭釘鼎泥摘擢敵滴的笛適鏑溺哲徹撤轍迭鉄典填天展店添纏甜貼転顛点伝殿澱田電兎吐堵塗妬屠徒斗杜渡登菟賭途都鍍砥砺努度土奴怒倒党冬�凍刀唐塔塘套宕島嶋悼投搭東桃梼棟盗淘湯涛灯燈当痘祷等答筒糖統到董蕩藤討謄豆踏逃透鐙陶頭騰闘働動同堂導憧撞洞瞳童胴萄道銅峠鴇匿得徳涜特督禿篤毒独読栃橡凸突椴届鳶苫寅酉瀞噸屯惇敦沌豚遁頓呑曇鈍奈那内乍凪薙謎灘捺鍋楢馴縄畷南楠軟難汝二尼弐迩匂賑肉虹廿日乳入���\".split(\"\");\nfor(j = 0; j != D[147].length; ++j) if(D[147][j].charCodeAt(0) !== 0xFFFD) { e[D[147][j]] = 37632 + j; d[37632 + j] = D[147][j];}\nD[148] = \"����������������������������������������������������������������如尿韮任妊忍認濡禰祢寧葱猫熱年念捻撚燃粘乃廼之埜嚢悩濃納能脳膿農覗蚤巴把播覇杷波派琶破婆罵芭馬俳廃拝排敗杯盃牌背肺輩配倍培媒梅�楳煤狽買売賠陪這蝿秤矧萩伯剥博拍柏泊白箔粕舶薄迫曝漠爆縛莫駁麦函箱硲箸肇筈櫨幡肌畑畠八鉢溌発醗髪伐罰抜筏閥鳩噺塙蛤隼伴判半反叛帆搬斑板氾汎版犯班畔繁般藩販範釆煩頒飯挽晩番盤磐蕃蛮匪卑否妃庇彼悲扉批披斐比泌疲皮碑秘緋罷肥被誹費避非飛樋簸備尾微枇毘琵眉美���\".split(\"\");\nfor(j = 0; j != D[148].length; ++j) if(D[148][j].charCodeAt(0) !== 0xFFFD) { e[D[148][j]] = 37888 + j; d[37888 + j] = D[148][j];}\nD[149] = \"����������������������������������������������������������������鼻柊稗匹疋髭彦膝菱肘弼必畢筆逼桧姫媛紐百謬俵彪標氷漂瓢票表評豹廟描病秒苗錨鋲蒜蛭鰭品彬斌浜瀕貧賓頻敏瓶不付埠夫婦富冨布府怖扶敷�斧普浮父符腐膚芙譜負賦赴阜附侮撫武舞葡蕪部封楓風葺蕗伏副復幅服福腹複覆淵弗払沸仏物鮒分吻噴墳憤扮焚奮粉糞紛雰文聞丙併兵塀幣平弊柄並蔽閉陛米頁僻壁癖碧別瞥蔑箆偏変片篇編辺返遍便勉娩弁鞭保舗鋪圃捕歩甫補輔穂募墓慕戊暮母簿菩倣俸包呆報奉宝峰峯崩庖抱捧放方朋���\".split(\"\");\nfor(j = 0; j != D[149].length; ++j) if(D[149][j].charCodeAt(0) !== 0xFFFD) { e[D[149][j]] = 38144 + j; d[38144 + j] = D[149][j];}\nD[150] = \"����������������������������������������������������������������法泡烹砲縫胞芳萌蓬蜂褒訪豊邦鋒飽鳳鵬乏亡傍剖坊妨帽忘忙房暴望某棒冒紡肪膨謀貌貿鉾防吠頬北僕卜墨撲朴牧睦穆釦勃没殆堀幌奔本翻凡盆�摩磨魔麻埋妹昧枚毎哩槙幕膜枕鮪柾鱒桝亦俣又抹末沫迄侭繭麿万慢満漫蔓味未魅巳箕岬密蜜湊蓑稔脈妙粍民眠務夢無牟矛霧鵡椋婿娘冥名命明盟迷銘鳴姪牝滅免棉綿緬面麺摸模茂妄孟毛猛盲網耗蒙儲木黙目杢勿餅尤戻籾貰問悶紋門匁也冶夜爺耶野弥矢厄役約薬訳躍靖柳薮鑓愉愈油癒���\".split(\"\");\nfor(j = 0; j != D[150].length; ++j) if(D[150][j].charCodeAt(0) !== 0xFFFD) { e[D[150][j]] = 38400 + j; d[38400 + j] = D[150][j];}\nD[151] = \"����������������������������������������������������������������諭輸唯佑優勇友宥幽悠憂揖有柚湧涌猶猷由祐裕誘遊邑郵雄融夕予余与誉輿預傭幼妖容庸揚揺擁曜楊様洋溶熔用窯羊耀葉蓉要謡踊遥陽養慾抑欲�沃浴翌翼淀羅螺裸来莱頼雷洛絡落酪乱卵嵐欄濫藍蘭覧利吏履李梨理璃痢裏裡里離陸律率立葎掠略劉流溜琉留硫粒隆竜龍侶慮旅虜了亮僚両凌寮料梁涼猟療瞭稜糧良諒遼量陵領力緑倫厘林淋燐琳臨輪隣鱗麟瑠塁涙累類令伶例冷励嶺怜玲礼苓鈴隷零霊麗齢暦歴列劣烈裂廉恋憐漣煉簾練聯���\".split(\"\");\nfor(j = 0; j != D[151].length; ++j) if(D[151][j].charCodeAt(0) !== 0xFFFD) { e[D[151][j]] = 38656 + j; d[38656 + j] = D[151][j];}\nD[152] = \"����������������������������������������������������������������蓮連錬呂魯櫓炉賂路露労婁廊弄朗楼榔浪漏牢狼篭老聾蝋郎六麓禄肋録論倭和話歪賄脇惑枠鷲亙亘鰐詫藁蕨椀湾碗腕��������������������������������������������弌丐丕个丱丶丼丿乂乖乘亂亅豫亊舒弍于亞亟亠亢亰亳亶从仍仄仆仂仗仞仭仟价伉佚估佛佝佗佇佶侈侏侘佻佩佰侑佯來侖儘俔俟俎俘俛俑俚俐俤俥倚倨倔倪倥倅伜俶倡倩倬俾俯們倆偃假會偕偐偈做偖偬偸傀傚傅傴傲���\".split(\"\");\nfor(j = 0; j != D[152].length; ++j) if(D[152][j].charCodeAt(0) !== 0xFFFD) { e[D[152][j]] = 38912 + j; d[38912 + j] = D[152][j];}\nD[153] = \"����������������������������������������������������������������僉僊傳僂僖僞僥僭僣僮價僵儉儁儂儖儕儔儚儡儺儷儼儻儿兀兒兌兔兢竸兩兪兮冀冂囘册冉冏冑冓冕冖冤冦冢冩冪冫决冱冲冰况冽凅凉凛几處凩凭�凰凵凾刄刋刔刎刧刪刮刳刹剏剄剋剌剞剔剪剴剩剳剿剽劍劔劒剱劈劑辨辧劬劭劼劵勁勍勗勞勣勦飭勠勳勵勸勹匆匈甸匍匐匏匕匚匣匯匱匳匸區卆卅丗卉卍凖卞卩卮夘卻卷厂厖厠厦厥厮厰厶參簒雙叟曼燮叮叨叭叺吁吽呀听吭吼吮吶吩吝呎咏呵咎呟呱呷呰咒呻咀呶咄咐咆哇咢咸咥咬哄哈咨���\".split(\"\");\nfor(j = 0; j != D[153].length; ++j) if(D[153][j].charCodeAt(0) !== 0xFFFD) { e[D[153][j]] = 39168 + j; d[39168 + j] = D[153][j];}\nD[154] = \"����������������������������������������������������������������咫哂咤咾咼哘哥哦唏唔哽哮哭哺哢唹啀啣啌售啜啅啖啗唸唳啝喙喀咯喊喟啻啾喘喞單啼喃喩喇喨嗚嗅嗟嗄嗜嗤嗔嘔嗷嘖嗾嗽嘛嗹噎噐營嘴嘶嘲嘸�噫噤嘯噬噪嚆嚀嚊嚠嚔嚏嚥嚮嚶嚴囂嚼囁囃囀囈囎囑囓囗囮囹圀囿圄圉圈國圍圓團圖嗇圜圦圷圸坎圻址坏坩埀垈坡坿垉垓垠垳垤垪垰埃埆埔埒埓堊埖埣堋堙堝塲堡塢塋塰毀塒堽塹墅墹墟墫墺壞墻墸墮壅壓壑壗壙壘壥壜壤壟壯壺壹壻壼壽夂夊夐夛梦夥夬夭夲夸夾竒奕奐奎奚奘奢奠奧奬奩���\".split(\"\");\nfor(j = 0; j != D[154].length; ++j) if(D[154][j].charCodeAt(0) !== 0xFFFD) { e[D[154][j]] = 39424 + j; d[39424 + j] = D[154][j];}\nD[155] = \"����������������������������������������������������������������奸妁妝佞侫妣妲姆姨姜妍姙姚娥娟娑娜娉娚婀婬婉娵娶婢婪媚媼媾嫋嫂媽嫣嫗嫦嫩嫖嫺嫻嬌嬋嬖嬲嫐嬪嬶嬾孃孅孀孑孕孚孛孥孩孰孳孵學斈孺宀�它宦宸寃寇寉寔寐寤實寢寞寥寫寰寶寳尅將專對尓尠尢尨尸尹屁屆屎屓屐屏孱屬屮乢屶屹岌岑岔妛岫岻岶岼岷峅岾峇峙峩峽峺峭嶌峪崋崕崗嵜崟崛崑崔崢崚崙崘嵌嵒嵎嵋嵬嵳嵶嶇嶄嶂嶢嶝嶬嶮嶽嶐嶷嶼巉巍巓巒巖巛巫已巵帋帚帙帑帛帶帷幄幃幀幎幗幔幟幢幤幇幵并幺麼广庠廁廂廈廐廏���\".split(\"\");\nfor(j = 0; j != D[155].length; ++j) if(D[155][j].charCodeAt(0) !== 0xFFFD) { e[D[155][j]] = 39680 + j; d[39680 + j] = D[155][j];}\nD[156] = \"����������������������������������������������������������������廖廣廝廚廛廢廡廨廩廬廱廳廰廴廸廾弃弉彝彜弋弑弖弩弭弸彁彈彌彎弯彑彖彗彙彡彭彳彷徃徂彿徊很徑徇從徙徘徠徨徭徼忖忻忤忸忱忝悳忿怡恠�怙怐怩怎怱怛怕怫怦怏怺恚恁恪恷恟恊恆恍恣恃恤恂恬恫恙悁悍惧悃悚悄悛悖悗悒悧悋惡悸惠惓悴忰悽惆悵惘慍愕愆惶惷愀惴惺愃愡惻惱愍愎慇愾愨愧慊愿愼愬愴愽慂慄慳慷慘慙慚慫慴慯慥慱慟慝慓慵憙憖憇憬憔憚憊憑憫憮懌懊應懷懈懃懆憺懋罹懍懦懣懶懺懴懿懽懼懾戀戈戉戍戌戔戛���\".split(\"\");\nfor(j = 0; j != D[156].length; ++j) if(D[156][j].charCodeAt(0) !== 0xFFFD) { e[D[156][j]] = 39936 + j; d[39936 + j] = D[156][j];}\nD[157] = \"����������������������������������������������������������������戞戡截戮戰戲戳扁扎扞扣扛扠扨扼抂抉找抒抓抖拔抃抔拗拑抻拏拿拆擔拈拜拌拊拂拇抛拉挌拮拱挧挂挈拯拵捐挾捍搜捏掖掎掀掫捶掣掏掉掟掵捫�捩掾揩揀揆揣揉插揶揄搖搴搆搓搦搶攝搗搨搏摧摯摶摎攪撕撓撥撩撈撼據擒擅擇撻擘擂擱擧舉擠擡抬擣擯攬擶擴擲擺攀擽攘攜攅攤攣攫攴攵攷收攸畋效敖敕敍敘敞敝敲數斂斃變斛斟斫斷旃旆旁旄旌旒旛旙无旡旱杲昊昃旻杳昵昶昴昜晏晄晉晁晞晝晤晧晨晟晢晰暃暈暎暉暄暘暝曁暹曉暾暼���\".split(\"\");\nfor(j = 0; j != D[157].length; ++j) if(D[157][j].charCodeAt(0) !== 0xFFFD) { e[D[157][j]] = 40192 + j; d[40192 + j] = D[157][j];}\nD[158] = \"����������������������������������������������������������������曄暸曖曚曠昿曦曩曰曵曷朏朖朞朦朧霸朮朿朶杁朸朷杆杞杠杙杣杤枉杰枩杼杪枌枋枦枡枅枷柯枴柬枳柩枸柤柞柝柢柮枹柎柆柧檜栞框栩桀桍栲桎�梳栫桙档桷桿梟梏梭梔條梛梃檮梹桴梵梠梺椏梍桾椁棊椈棘椢椦棡椌棍棔棧棕椶椒椄棗棣椥棹棠棯椨椪椚椣椡棆楹楷楜楸楫楔楾楮椹楴椽楙椰楡楞楝榁楪榲榮槐榿槁槓榾槎寨槊槝榻槃榧樮榑榠榜榕榴槞槨樂樛槿權槹槲槧樅榱樞槭樔槫樊樒櫁樣樓橄樌橲樶橸橇橢橙橦橈樸樢檐檍檠檄檢檣���\".split(\"\");\nfor(j = 0; j != D[158].length; ++j) if(D[158][j].charCodeAt(0) !== 0xFFFD) { e[D[158][j]] = 40448 + j; d[40448 + j] = D[158][j];}\nD[159] = \"����������������������������������������������������������������檗蘗檻櫃櫂檸檳檬櫞櫑櫟檪櫚櫪櫻欅蘖櫺欒欖鬱欟欸欷盜欹飮歇歃歉歐歙歔歛歟歡歸歹歿殀殄殃殍殘殕殞殤殪殫殯殲殱殳殷殼毆毋毓毟毬毫毳毯�麾氈氓气氛氤氣汞汕汢汪沂沍沚沁沛汾汨汳沒沐泄泱泓沽泗泅泝沮沱沾沺泛泯泙泪洟衍洶洫洽洸洙洵洳洒洌浣涓浤浚浹浙涎涕濤涅淹渕渊涵淇淦涸淆淬淞淌淨淒淅淺淙淤淕淪淮渭湮渮渙湲湟渾渣湫渫湶湍渟湃渺湎渤滿渝游溂溪溘滉溷滓溽溯滄溲滔滕溏溥滂溟潁漑灌滬滸滾漿滲漱滯漲滌���\".split(\"\");\nfor(j = 0; j != D[159].length; ++j) if(D[159][j].charCodeAt(0) !== 0xFFFD) { e[D[159][j]] = 40704 + j; d[40704 + j] = D[159][j];}\nD[224] = \"����������������������������������������������������������������漾漓滷澆潺潸澁澀潯潛濳潭澂潼潘澎澑濂潦澳澣澡澤澹濆澪濟濕濬濔濘濱濮濛瀉瀋濺瀑瀁瀏濾瀛瀚潴瀝瀘瀟瀰瀾瀲灑灣炙炒炯烱炬炸炳炮烟烋烝�烙焉烽焜焙煥煕熈煦煢煌煖煬熏燻熄熕熨熬燗熹熾燒燉燔燎燠燬燧燵燼燹燿爍爐爛爨爭爬爰爲爻爼爿牀牆牋牘牴牾犂犁犇犒犖犢犧犹犲狃狆狄狎狒狢狠狡狹狷倏猗猊猜猖猝猴猯猩猥猾獎獏默獗獪獨獰獸獵獻獺珈玳珎玻珀珥珮珞璢琅瑯琥珸琲琺瑕琿瑟瑙瑁瑜瑩瑰瑣瑪瑶瑾璋璞璧瓊瓏瓔珱���\".split(\"\");\nfor(j = 0; j != D[224].length; ++j) if(D[224][j].charCodeAt(0) !== 0xFFFD) { e[D[224][j]] = 57344 + j; d[57344 + j] = D[224][j];}\nD[225] = \"����������������������������������������������������������������瓠瓣瓧瓩瓮瓲瓰瓱瓸瓷甄甃甅甌甎甍甕甓甞甦甬甼畄畍畊畉畛畆畚畩畤畧畫畭畸當疆疇畴疊疉疂疔疚疝疥疣痂疳痃疵疽疸疼疱痍痊痒痙痣痞痾痿�痼瘁痰痺痲痳瘋瘍瘉瘟瘧瘠瘡瘢瘤瘴瘰瘻癇癈癆癜癘癡癢癨癩癪癧癬癰癲癶癸發皀皃皈皋皎皖皓皙皚皰皴皸皹皺盂盍盖盒盞盡盥盧盪蘯盻眈眇眄眩眤眞眥眦眛眷眸睇睚睨睫睛睥睿睾睹瞎瞋瞑瞠瞞瞰瞶瞹瞿瞼瞽瞻矇矍矗矚矜矣矮矼砌砒礦砠礪硅碎硴碆硼碚碌碣碵碪碯磑磆磋磔碾碼磅磊磬���\".split(\"\");\nfor(j = 0; j != D[225].length; ++j) if(D[225][j].charCodeAt(0) !== 0xFFFD) { e[D[225][j]] = 57600 + j; d[57600 + j] = D[225][j];}\nD[226] = \"����������������������������������������������������������������磧磚磽磴礇礒礑礙礬礫祀祠祗祟祚祕祓祺祿禊禝禧齋禪禮禳禹禺秉秕秧秬秡秣稈稍稘稙稠稟禀稱稻稾稷穃穗穉穡穢穩龝穰穹穽窈窗窕窘窖窩竈窰�窶竅竄窿邃竇竊竍竏竕竓站竚竝竡竢竦竭竰笂笏笊笆笳笘笙笞笵笨笶筐筺笄筍笋筌筅筵筥筴筧筰筱筬筮箝箘箟箍箜箚箋箒箏筝箙篋篁篌篏箴篆篝篩簑簔篦篥籠簀簇簓篳篷簗簍篶簣簧簪簟簷簫簽籌籃籔籏籀籐籘籟籤籖籥籬籵粃粐粤粭粢粫粡粨粳粲粱粮粹粽糀糅糂糘糒糜糢鬻糯糲糴糶糺紆���\".split(\"\");\nfor(j = 0; j != D[226].length; ++j) if(D[226][j].charCodeAt(0) !== 0xFFFD) { e[D[226][j]] = 57856 + j; d[57856 + j] = D[226][j];}\nD[227] = \"����������������������������������������������������������������紂紜紕紊絅絋紮紲紿紵絆絳絖絎絲絨絮絏絣經綉絛綏絽綛綺綮綣綵緇綽綫總綢綯緜綸綟綰緘緝緤緞緻緲緡縅縊縣縡縒縱縟縉縋縢繆繦縻縵縹繃縷�縲縺繧繝繖繞繙繚繹繪繩繼繻纃緕繽辮繿纈纉續纒纐纓纔纖纎纛纜缸缺罅罌罍罎罐网罕罔罘罟罠罨罩罧罸羂羆羃羈羇羌羔羞羝羚羣羯羲羹羮羶羸譱翅翆翊翕翔翡翦翩翳翹飜耆耄耋耒耘耙耜耡耨耿耻聊聆聒聘聚聟聢聨聳聲聰聶聹聽聿肄肆肅肛肓肚肭冐肬胛胥胙胝胄胚胖脉胯胱脛脩脣脯腋���\".split(\"\");\nfor(j = 0; j != D[227].length; ++j) if(D[227][j].charCodeAt(0) !== 0xFFFD) { e[D[227][j]] = 58112 + j; d[58112 + j] = D[227][j];}\nD[228] = \"����������������������������������������������������������������隋腆脾腓腑胼腱腮腥腦腴膃膈膊膀膂膠膕膤膣腟膓膩膰膵膾膸膽臀臂膺臉臍臑臙臘臈臚臟臠臧臺臻臾舁舂舅與舊舍舐舖舩舫舸舳艀艙艘艝艚艟艤�艢艨艪艫舮艱艷艸艾芍芒芫芟芻芬苡苣苟苒苴苳苺莓范苻苹苞茆苜茉苙茵茴茖茲茱荀茹荐荅茯茫茗茘莅莚莪莟莢莖茣莎莇莊荼莵荳荵莠莉莨菴萓菫菎菽萃菘萋菁菷萇菠菲萍萢萠莽萸蔆菻葭萪萼蕚蒄葷葫蒭葮蒂葩葆萬葯葹萵蓊葢蒹蒿蒟蓙蓍蒻蓚蓐蓁蓆蓖蒡蔡蓿蓴蔗蔘蔬蔟蔕蔔蓼蕀蕣蕘蕈���\".split(\"\");\nfor(j = 0; j != D[228].length; ++j) if(D[228][j].charCodeAt(0) !== 0xFFFD) { e[D[228][j]] = 58368 + j; d[58368 + j] = D[228][j];}\nD[229] = \"����������������������������������������������������������������蕁蘂蕋蕕薀薤薈薑薊薨蕭薔薛藪薇薜蕷蕾薐藉薺藏薹藐藕藝藥藜藹蘊蘓蘋藾藺蘆蘢蘚蘰蘿虍乕虔號虧虱蚓蚣蚩蚪蚋蚌蚶蚯蛄蛆蚰蛉蠣蚫蛔蛞蛩蛬�蛟蛛蛯蜒蜆蜈蜀蜃蛻蜑蜉蜍蛹蜊蜴蜿蜷蜻蜥蜩蜚蝠蝟蝸蝌蝎蝴蝗蝨蝮蝙蝓蝣蝪蠅螢螟螂螯蟋螽蟀蟐雖螫蟄螳蟇蟆螻蟯蟲蟠蠏蠍蟾蟶蟷蠎蟒蠑蠖蠕蠢蠡蠱蠶蠹蠧蠻衄衂衒衙衞衢衫袁衾袞衵衽袵衲袂袗袒袮袙袢袍袤袰袿袱裃裄裔裘裙裝裹褂裼裴裨裲褄褌褊褓襃褞褥褪褫襁襄褻褶褸襌褝襠襞���\".split(\"\");\nfor(j = 0; j != D[229].length; ++j) if(D[229][j].charCodeAt(0) !== 0xFFFD) { e[D[229][j]] = 58624 + j; d[58624 + j] = D[229][j];}\nD[230] = \"����������������������������������������������������������������襦襤襭襪襯襴襷襾覃覈覊覓覘覡覩覦覬覯覲覺覽覿觀觚觜觝觧觴觸訃訖訐訌訛訝訥訶詁詛詒詆詈詼詭詬詢誅誂誄誨誡誑誥誦誚誣諄諍諂諚諫諳諧�諤諱謔諠諢諷諞諛謌謇謚諡謖謐謗謠謳鞫謦謫謾謨譁譌譏譎證譖譛譚譫譟譬譯譴譽讀讌讎讒讓讖讙讚谺豁谿豈豌豎豐豕豢豬豸豺貂貉貅貊貍貎貔豼貘戝貭貪貽貲貳貮貶賈賁賤賣賚賽賺賻贄贅贊贇贏贍贐齎贓賍贔贖赧赭赱赳趁趙跂趾趺跏跚跖跌跛跋跪跫跟跣跼踈踉跿踝踞踐踟蹂踵踰踴蹊���\".split(\"\");\nfor(j = 0; j != D[230].length; ++j) if(D[230][j].charCodeAt(0) !== 0xFFFD) { e[D[230][j]] = 58880 + j; d[58880 + j] = D[230][j];}\nD[231] = \"����������������������������������������������������������������蹇蹉蹌蹐蹈蹙蹤蹠踪蹣蹕蹶蹲蹼躁躇躅躄躋躊躓躑躔躙躪躡躬躰軆躱躾軅軈軋軛軣軼軻軫軾輊輅輕輒輙輓輜輟輛輌輦輳輻輹轅轂輾轌轉轆轎轗轜�轢轣轤辜辟辣辭辯辷迚迥迢迪迯邇迴逅迹迺逑逕逡逍逞逖逋逧逶逵逹迸遏遐遑遒逎遉逾遖遘遞遨遯遶隨遲邂遽邁邀邊邉邏邨邯邱邵郢郤扈郛鄂鄒鄙鄲鄰酊酖酘酣酥酩酳酲醋醉醂醢醫醯醪醵醴醺釀釁釉釋釐釖釟釡釛釼釵釶鈞釿鈔鈬鈕鈑鉞鉗鉅鉉鉤鉈銕鈿鉋鉐銜銖銓銛鉚鋏銹銷鋩錏鋺鍄錮���\".split(\"\");\nfor(j = 0; j != D[231].length; ++j) if(D[231][j].charCodeAt(0) !== 0xFFFD) { e[D[231][j]] = 59136 + j; d[59136 + j] = D[231][j];}\nD[232] = \"����������������������������������������������������������������錙錢錚錣錺錵錻鍜鍠鍼鍮鍖鎰鎬鎭鎔鎹鏖鏗鏨鏥鏘鏃鏝鏐鏈鏤鐚鐔鐓鐃鐇鐐鐶鐫鐵鐡鐺鑁鑒鑄鑛鑠鑢鑞鑪鈩鑰鑵鑷鑽鑚鑼鑾钁鑿閂閇閊閔閖閘閙�閠閨閧閭閼閻閹閾闊濶闃闍闌闕闔闖關闡闥闢阡阨阮阯陂陌陏陋陷陜陞陝陟陦陲陬隍隘隕隗險隧隱隲隰隴隶隸隹雎雋雉雍襍雜霍雕雹霄霆霈霓霎霑霏霖霙霤霪霰霹霽霾靄靆靈靂靉靜靠靤靦靨勒靫靱靹鞅靼鞁靺鞆鞋鞏鞐鞜鞨鞦鞣鞳鞴韃韆韈韋韜韭齏韲竟韶韵頏頌頸頤頡頷頽顆顏顋顫顯顰���\".split(\"\");\nfor(j = 0; j != D[232].length; ++j) if(D[232][j].charCodeAt(0) !== 0xFFFD) { e[D[232][j]] = 59392 + j; d[59392 + j] = D[232][j];}\nD[233] = \"����������������������������������������������������������������顱顴顳颪颯颱颶飄飃飆飩飫餃餉餒餔餘餡餝餞餤餠餬餮餽餾饂饉饅饐饋饑饒饌饕馗馘馥馭馮馼駟駛駝駘駑駭駮駱駲駻駸騁騏騅駢騙騫騷驅驂驀驃�騾驕驍驛驗驟驢驥驤驩驫驪骭骰骼髀髏髑髓體髞髟髢髣髦髯髫髮髴髱髷髻鬆鬘鬚鬟鬢鬣鬥鬧鬨鬩鬪鬮鬯鬲魄魃魏魍魎魑魘魴鮓鮃鮑鮖鮗鮟鮠鮨鮴鯀鯊鮹鯆鯏鯑鯒鯣鯢鯤鯔鯡鰺鯲鯱鯰鰕鰔鰉鰓鰌鰆鰈鰒鰊鰄鰮鰛鰥鰤鰡鰰鱇鰲鱆鰾鱚鱠鱧鱶鱸鳧鳬鳰鴉鴈鳫鴃鴆鴪鴦鶯鴣鴟鵄鴕鴒鵁鴿鴾鵆鵈���\".split(\"\");\nfor(j = 0; j != D[233].length; ++j) if(D[233][j].charCodeAt(0) !== 0xFFFD) { e[D[233][j]] = 59648 + j; d[59648 + j] = D[233][j];}\nD[234] = \"����������������������������������������������������������������鵝鵞鵤鵑鵐鵙鵲鶉鶇鶫鵯鵺鶚鶤鶩鶲鷄鷁鶻鶸鶺鷆鷏鷂鷙鷓鷸鷦鷭鷯鷽鸚鸛鸞鹵鹹鹽麁麈麋麌麒麕麑麝麥麩麸麪麭靡黌黎黏黐黔黜點黝黠黥黨黯�黴黶黷黹黻黼黽鼇鼈皷鼕鼡鼬鼾齊齒齔齣齟齠齡齦齧齬齪齷齲齶龕龜龠堯槇遙瑤凜熙�������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[234].length; ++j) if(D[234][j].charCodeAt(0) !== 0xFFFD) { e[D[234][j]] = 59904 + j; d[59904 + j] = D[234][j];}\nD[237] = \"����������������������������������������������������������������纊褜鍈銈蓜俉炻昱棈鋹曻彅丨仡仼伀伃伹佖侒侊侚侔俍偀倢俿倞偆偰偂傔僴僘兊兤冝冾凬刕劜劦勀勛匀匇匤卲厓厲叝﨎咜咊咩哿喆坙坥垬埈埇﨏�塚增墲夋奓奛奝奣妤妺孖寀甯寘寬尞岦岺峵崧嵓﨑嵂嵭嶸嶹巐弡弴彧德忞恝悅悊惞惕愠惲愑愷愰憘戓抦揵摠撝擎敎昀昕昻昉昮昞昤晥晗晙晴晳暙暠暲暿曺朎朗杦枻桒柀栁桄棏﨓楨﨔榘槢樰橫橆橳橾櫢櫤毖氿汜沆汯泚洄涇浯涖涬淏淸淲淼渹湜渧渼溿澈澵濵瀅瀇瀨炅炫焏焄煜煆煇凞燁燾犱���\".split(\"\");\nfor(j = 0; j != D[237].length; ++j) if(D[237][j].charCodeAt(0) !== 0xFFFD) { e[D[237][j]] = 60672 + j; d[60672 + j] = D[237][j];}\nD[238] = \"����������������������������������������������������������������犾猤猪獷玽珉珖珣珒琇珵琦琪琩琮瑢璉璟甁畯皂皜皞皛皦益睆劯砡硎硤硺礰礼神祥禔福禛竑竧靖竫箞精絈絜綷綠緖繒罇羡羽茁荢荿菇菶葈蒴蕓蕙�蕫﨟薰蘒﨡蠇裵訒訷詹誧誾諟諸諶譓譿賰賴贒赶﨣軏﨤逸遧郞都鄕鄧釚釗釞釭釮釤釥鈆鈐鈊鈺鉀鈼鉎鉙鉑鈹鉧銧鉷鉸鋧鋗鋙鋐﨧鋕鋠鋓錥錡鋻﨨錞鋿錝錂鍰鍗鎤鏆鏞鏸鐱鑅鑈閒隆﨩隝隯霳霻靃靍靏靑靕顗顥飯飼餧館馞驎髙髜魵魲鮏鮱鮻鰀鵰鵫鶴鸙黑��ⅰⅱⅲⅳⅴⅵⅶⅷⅸⅹ￢￤＇＂���\".split(\"\");\nfor(j = 0; j != D[238].length; ++j) if(D[238][j].charCodeAt(0) !== 0xFFFD) { e[D[238][j]] = 60928 + j; d[60928 + j] = D[238][j];}\nD[250] = \"����������������������������������������������������������������ⅰⅱⅲⅳⅴⅵⅶⅷⅸⅹⅠⅡⅢⅣⅤⅥⅦⅧⅨⅩ￢￤＇＂㈱№℡∵纊褜鍈銈蓜俉炻昱棈鋹曻彅丨仡仼伀伃伹佖侒侊侚侔俍偀倢俿倞偆偰偂傔僴僘兊�兤冝冾凬刕劜劦勀勛匀匇匤卲厓厲叝﨎咜咊咩哿喆坙坥垬埈埇﨏塚增墲夋奓奛奝奣妤妺孖寀甯寘寬尞岦岺峵崧嵓﨑嵂嵭嶸嶹巐弡弴彧德忞恝悅悊惞惕愠惲愑愷愰憘戓抦揵摠撝擎敎昀昕昻昉昮昞昤晥晗晙晴晳暙暠暲暿曺朎朗杦枻桒柀栁桄棏﨓楨﨔榘槢樰橫橆橳橾櫢櫤毖氿汜沆汯泚洄涇浯���\".split(\"\");\nfor(j = 0; j != D[250].length; ++j) if(D[250][j].charCodeAt(0) !== 0xFFFD) { e[D[250][j]] = 64000 + j; d[64000 + j] = D[250][j];}\nD[251] = \"����������������������������������������������������������������涖涬淏淸淲淼渹湜渧渼溿澈澵濵瀅瀇瀨炅炫焏焄煜煆煇凞燁燾犱犾猤猪獷玽珉珖珣珒琇珵琦琪琩琮瑢璉璟甁畯皂皜皞皛皦益睆劯砡硎硤硺礰礼神�祥禔福禛竑竧靖竫箞精絈絜綷綠緖繒罇羡羽茁荢荿菇菶葈蒴蕓蕙蕫﨟薰蘒﨡蠇裵訒訷詹誧誾諟諸諶譓譿賰賴贒赶﨣軏﨤逸遧郞都鄕鄧釚釗釞釭釮釤釥鈆鈐鈊鈺鉀鈼鉎鉙鉑鈹鉧銧鉷鉸鋧鋗鋙鋐﨧鋕鋠鋓錥錡鋻﨨錞鋿錝錂鍰鍗鎤鏆鏞鏸鐱鑅鑈閒隆﨩隝隯霳霻靃靍靏靑靕顗顥飯飼餧館馞驎髙���\".split(\"\");\nfor(j = 0; j != D[251].length; ++j) if(D[251][j].charCodeAt(0) !== 0xFFFD) { e[D[251][j]] = 64256 + j; d[64256 + j] = D[251][j];}\nD[252] = \"����������������������������������������������������������������髜魵魲鮏鮱鮻鰀鵰鵫鶴鸙黑������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[252].length; ++j) if(D[252][j].charCodeAt(0) !== 0xFFFD) { e[D[252][j]] = 64512 + j; d[64512 + j] = D[252][j];}\nreturn {\"enc\": e, \"dec\": d }; })();\ncptable[936] = (function(){ var d = [], e = {}, D = [], j;\nD[0] = \"\\u0000\\u0001\\u0002\\u0003\\u0004\\u0005\\u0006\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\u0014\\u0015\\u0016\\u0017\\u0018\\u0019\\u001a\\u001b\\u001c\\u001d\\u001e\\u001f !\\\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~€�������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[0].length; ++j) if(D[0][j].charCodeAt(0) !== 0xFFFD) { e[D[0][j]] = 0 + j; d[0 + j] = D[0][j];}\nD[129] = \"����������������������������������������������������������������丂丄丅丆丏丒丗丟丠両丣並丩丮丯丱丳丵丷丼乀乁乂乄乆乊乑乕乗乚乛乢乣乤乥乧乨乪乫乬乭乮乯乲乴乵乶乷乸乹乺乻乼乽乿亀亁亂亃亄亅亇亊�亐亖亗亙亜亝亞亣亪亯亰亱亴亶亷亸亹亼亽亾仈仌仏仐仒仚仛仜仠仢仦仧仩仭仮仯仱仴仸仹仺仼仾伀伂伃伄伅伆伇伈伋伌伒伓伔伕伖伜伝伡伣伨伩伬伭伮伱伳伵伷伹伻伾伿佀佁佂佄佅佇佈佉佊佋佌佒佔佖佡佢佦佨佪佫佭佮佱佲併佷佸佹佺佽侀侁侂侅來侇侊侌侎侐侒侓侕侖侘侙侚侜侞侟価侢�\".split(\"\");\nfor(j = 0; j != D[129].length; ++j) if(D[129][j].charCodeAt(0) !== 0xFFFD) { e[D[129][j]] = 33024 + j; d[33024 + j] = D[129][j];}\nD[130] = \"����������������������������������������������������������������侤侫侭侰侱侲侳侴侶侷侸侹侺侻侼侽侾俀俁係俆俇俈俉俋俌俍俒俓俔俕俖俙俛俠俢俤俥俧俫俬俰俲俴俵俶俷俹俻俼俽俿倀倁倂倃倄倅倆倇倈倉倊�個倎倐們倓倕倖倗倛倝倞倠倢倣値倧倫倯倰倱倲倳倴倵倶倷倸倹倻倽倿偀偁偂偄偅偆偉偊偋偍偐偑偒偓偔偖偗偘偙偛偝偞偟偠偡偢偣偤偦偧偨偩偪偫偭偮偯偰偱偲偳側偵偸偹偺偼偽傁傂傃傄傆傇傉傊傋傌傎傏傐傑傒傓傔傕傖傗傘備傚傛傜傝傞傟傠傡傢傤傦傪傫傭傮傯傰傱傳傴債傶傷傸傹傼�\".split(\"\");\nfor(j = 0; j != D[130].length; ++j) if(D[130][j].charCodeAt(0) !== 0xFFFD) { e[D[130][j]] = 33280 + j; d[33280 + j] = D[130][j];}\nD[131] = \"����������������������������������������������������������������傽傾傿僀僁僂僃僄僅僆僇僈僉僊僋僌働僎僐僑僒僓僔僕僗僘僙僛僜僝僞僟僠僡僢僣僤僥僨僩僪僫僯僰僱僲僴僶僷僸價僺僼僽僾僿儀儁儂儃億儅儈�儉儊儌儍儎儏儐儑儓儔儕儖儗儘儙儚儛儜儝儞償儠儢儣儤儥儦儧儨儩優儫儬儭儮儯儰儱儲儳儴儵儶儷儸儹儺儻儼儽儾兂兇兊兌兎兏児兒兓兗兘兙兛兝兞兟兠兡兣兤兦內兩兪兯兲兺兾兿冃冄円冇冊冋冎冏冐冑冓冔冘冚冝冞冟冡冣冦冧冨冩冪冭冮冴冸冹冺冾冿凁凂凃凅凈凊凍凎凐凒凓凔凕凖凗�\".split(\"\");\nfor(j = 0; j != D[131].length; ++j) if(D[131][j].charCodeAt(0) !== 0xFFFD) { e[D[131][j]] = 33536 + j; d[33536 + j] = D[131][j];}\nD[132] = \"����������������������������������������������������������������凘凙凚凜凞凟凢凣凥処凧凨凩凪凬凮凱凲凴凷凾刄刅刉刋刌刏刐刓刔刕刜刞刟刡刢刣別刦刧刪刬刯刱刲刴刵刼刾剄剅剆則剈剉剋剎剏剒剓剕剗剘�剙剚剛剝剟剠剢剣剤剦剨剫剬剭剮剰剱剳剴創剶剷剸剹剺剻剼剾劀劃劄劅劆劇劉劊劋劌劍劎劏劑劒劔劕劖劗劘劙劚劜劤劥劦劧劮劯劰労劵劶劷劸効劺劻劼劽勀勁勂勄勅勆勈勊勌勍勎勏勑勓勔動勗務勚勛勜勝勞勠勡勢勣勥勦勧勨勩勪勫勬勭勮勯勱勲勳勴勵勶勷勸勻勼勽匁匂匃匄匇匉匊匋匌匎�\".split(\"\");\nfor(j = 0; j != D[132].length; ++j) if(D[132][j].charCodeAt(0) !== 0xFFFD) { e[D[132][j]] = 33792 + j; d[33792 + j] = D[132][j];}\nD[133] = \"����������������������������������������������������������������匑匒匓匔匘匛匜匞匟匢匤匥匧匨匩匫匬匭匯匰匱匲匳匴匵匶匷匸匼匽區卂卄卆卋卌卍卐協単卙卛卝卥卨卪卬卭卲卶卹卻卼卽卾厀厁厃厇厈厊厎厏�厐厑厒厓厔厖厗厙厛厜厞厠厡厤厧厪厫厬厭厯厰厱厲厳厴厵厷厸厹厺厼厽厾叀參叄叅叆叇収叏叐叒叓叕叚叜叝叞叡叢叧叴叺叾叿吀吂吅吇吋吔吘吙吚吜吢吤吥吪吰吳吶吷吺吽吿呁呂呄呅呇呉呌呍呎呏呑呚呝呞呟呠呡呣呥呧呩呪呫呬呭呮呯呰呴呹呺呾呿咁咃咅咇咈咉咊咍咑咓咗咘咜咞咟咠咡�\".split(\"\");\nfor(j = 0; j != D[133].length; ++j) if(D[133][j].charCodeAt(0) !== 0xFFFD) { e[D[133][j]] = 34048 + j; d[34048 + j] = D[133][j];}\nD[134] = \"����������������������������������������������������������������咢咥咮咰咲咵咶咷咹咺咼咾哃哅哊哋哖哘哛哠員哢哣哤哫哬哯哰哱哴哵哶哷哸哹哻哾唀唂唃唄唅唈唊唋唌唍唎唒唓唕唖唗唘唙唚唜唝唞唟唡唥唦�唨唩唫唭唲唴唵唶唸唹唺唻唽啀啂啅啇啈啋啌啍啎問啑啒啓啔啗啘啙啚啛啝啞啟啠啢啣啨啩啫啯啰啱啲啳啴啹啺啽啿喅喆喌喍喎喐喒喓喕喖喗喚喛喞喠喡喢喣喤喥喦喨喩喪喫喬喭單喯喰喲喴営喸喺喼喿嗀嗁嗂嗃嗆嗇嗈嗊嗋嗎嗏嗐嗕嗗嗘嗙嗚嗛嗞嗠嗢嗧嗩嗭嗮嗰嗱嗴嗶嗸嗹嗺嗻嗼嗿嘂嘃嘄嘅�\".split(\"\");\nfor(j = 0; j != D[134].length; ++j) if(D[134][j].charCodeAt(0) !== 0xFFFD) { e[D[134][j]] = 34304 + j; d[34304 + j] = D[134][j];}\nD[135] = \"����������������������������������������������������������������嘆嘇嘊嘋嘍嘐嘑嘒嘓嘔嘕嘖嘗嘙嘚嘜嘝嘠嘡嘢嘥嘦嘨嘩嘪嘫嘮嘯嘰嘳嘵嘷嘸嘺嘼嘽嘾噀噁噂噃噄噅噆噇噈噉噊噋噏噐噑噒噓噕噖噚噛噝噞噟噠噡�噣噥噦噧噭噮噯噰噲噳噴噵噷噸噹噺噽噾噿嚀嚁嚂嚃嚄嚇嚈嚉嚊嚋嚌嚍嚐嚑嚒嚔嚕嚖嚗嚘嚙嚚嚛嚜嚝嚞嚟嚠嚡嚢嚤嚥嚦嚧嚨嚩嚪嚫嚬嚭嚮嚰嚱嚲嚳嚴嚵嚶嚸嚹嚺嚻嚽嚾嚿囀囁囂囃囄囅囆囇囈囉囋囌囍囎囏囐囑囒囓囕囖囘囙囜団囥囦囧囨囩囪囬囮囯囲図囶囷囸囻囼圀圁圂圅圇國圌圍圎圏圐圑�\".split(\"\");\nfor(j = 0; j != D[135].length; ++j) if(D[135][j].charCodeAt(0) !== 0xFFFD) { e[D[135][j]] = 34560 + j; d[34560 + j] = D[135][j];}\nD[136] = \"����������������������������������������������������������������園圓圔圕圖圗團圙圚圛圝圞圠圡圢圤圥圦圧圫圱圲圴圵圶圷圸圼圽圿坁坃坄坅坆坈坉坋坒坓坔坕坖坘坙坢坣坥坧坬坮坰坱坲坴坵坸坹坺坽坾坿垀�垁垇垈垉垊垍垎垏垐垑垔垕垖垗垘垙垚垜垝垞垟垥垨垪垬垯垰垱垳垵垶垷垹垺垻垼垽垾垿埀埁埄埅埆埇埈埉埊埌埍埐埑埓埖埗埛埜埞埡埢埣埥埦埧埨埩埪埫埬埮埰埱埲埳埵埶執埻埼埾埿堁堃堄堅堈堉堊堌堎堏堐堒堓堔堖堗堘堚堛堜堝堟堢堣堥堦堧堨堩堫堬堭堮堯報堲堳場堶堷堸堹堺堻堼堽�\".split(\"\");\nfor(j = 0; j != D[136].length; ++j) if(D[136][j].charCodeAt(0) !== 0xFFFD) { e[D[136][j]] = 34816 + j; d[34816 + j] = D[136][j];}\nD[137] = \"����������������������������������������������������������������堾堿塀塁塂塃塅塆塇塈塉塊塋塎塏塐塒塓塕塖塗塙塚塛塜塝塟塠塡塢塣塤塦塧塨塩塪塭塮塯塰塱塲塳塴塵塶塷塸塹塺塻塼塽塿墂墄墆墇墈墊墋墌�墍墎墏墐墑墔墕墖増墘墛墜墝墠墡墢墣墤墥墦墧墪墫墬墭墮墯墰墱墲墳墴墵墶墷墸墹墺墻墽墾墿壀壂壃壄壆壇壈壉壊壋壌壍壎壏壐壒壓壔壖壗壘壙壚壛壜壝壞壟壠壡壢壣壥壦壧壨壩壪壭壯壱売壴壵壷壸壺壻壼壽壾壿夀夁夃夅夆夈変夊夋夌夎夐夑夒夓夗夘夛夝夞夠夡夢夣夦夨夬夰夲夳夵夶夻�\".split(\"\");\nfor(j = 0; j != D[137].length; ++j) if(D[137][j].charCodeAt(0) !== 0xFFFD) { e[D[137][j]] = 35072 + j; d[35072 + j] = D[137][j];}\nD[138] = \"����������������������������������������������������������������夽夾夿奀奃奅奆奊奌奍奐奒奓奙奛奜奝奞奟奡奣奤奦奧奨奩奪奫奬奭奮奯奰奱奲奵奷奺奻奼奾奿妀妅妉妋妌妎妏妐妑妔妕妘妚妛妜妝妟妠妡妢妦�妧妬妭妰妱妳妴妵妶妷妸妺妼妽妿姀姁姂姃姄姅姇姈姉姌姍姎姏姕姖姙姛姞姟姠姡姢姤姦姧姩姪姫姭姮姯姰姱姲姳姴姵姶姷姸姺姼姽姾娀娂娊娋娍娎娏娐娒娔娕娖娗娙娚娛娝娞娡娢娤娦娧娨娪娫娬娭娮娯娰娳娵娷娸娹娺娻娽娾娿婁婂婃婄婅婇婈婋婌婍婎婏婐婑婒婓婔婖婗婘婙婛婜婝婞婟婠�\".split(\"\");\nfor(j = 0; j != D[138].length; ++j) if(D[138][j].charCodeAt(0) !== 0xFFFD) { e[D[138][j]] = 35328 + j; d[35328 + j] = D[138][j];}\nD[139] = \"����������������������������������������������������������������婡婣婤婥婦婨婩婫婬婭婮婯婰婱婲婳婸婹婻婼婽婾媀媁媂媃媄媅媆媇媈媉媊媋媌媍媎媏媐媑媓媔媕媖媗媘媙媜媝媞媟媠媡媢媣媤媥媦媧媨媩媫媬�媭媮媯媰媱媴媶媷媹媺媻媼媽媿嫀嫃嫄嫅嫆嫇嫈嫊嫋嫍嫎嫏嫐嫑嫓嫕嫗嫙嫚嫛嫝嫞嫟嫢嫤嫥嫧嫨嫪嫬嫭嫮嫯嫰嫲嫳嫴嫵嫶嫷嫸嫹嫺嫻嫼嫽嫾嫿嬀嬁嬂嬃嬄嬅嬆嬇嬈嬊嬋嬌嬍嬎嬏嬐嬑嬒嬓嬔嬕嬘嬙嬚嬛嬜嬝嬞嬟嬠嬡嬢嬣嬤嬥嬦嬧嬨嬩嬪嬫嬬嬭嬮嬯嬰嬱嬳嬵嬶嬸嬹嬺嬻嬼嬽嬾嬿孁孂孃孄孅孆孇�\".split(\"\");\nfor(j = 0; j != D[139].length; ++j) if(D[139][j].charCodeAt(0) !== 0xFFFD) { e[D[139][j]] = 35584 + j; d[35584 + j] = D[139][j];}\nD[140] = \"����������������������������������������������������������������孈孉孊孋孌孍孎孏孒孖孞孠孡孧孨孫孭孮孯孲孴孶孷學孹孻孼孾孿宂宆宊宍宎宐宑宒宔宖実宧宨宩宬宭宮宯宱宲宷宺宻宼寀寁寃寈寉寊寋寍寎寏�寑寔寕寖寗寘寙寚寛寜寠寢寣實寧審寪寫寬寭寯寱寲寳寴寵寶寷寽対尀専尃尅將專尋尌對導尐尒尓尗尙尛尞尟尠尡尣尦尨尩尪尫尭尮尯尰尲尳尵尶尷屃屄屆屇屌屍屒屓屔屖屗屘屚屛屜屝屟屢層屧屨屩屪屫屬屭屰屲屳屴屵屶屷屸屻屼屽屾岀岃岄岅岆岇岉岊岋岎岏岒岓岕岝岞岟岠岡岤岥岦岧岨�\".split(\"\");\nfor(j = 0; j != D[140].length; ++j) if(D[140][j].charCodeAt(0) !== 0xFFFD) { e[D[140][j]] = 35840 + j; d[35840 + j] = D[140][j];}\nD[141] = \"����������������������������������������������������������������岪岮岯岰岲岴岶岹岺岻岼岾峀峂峃峅峆峇峈峉峊峌峍峎峏峐峑峓峔峕峖峗峘峚峛峜峝峞峟峠峢峣峧峩峫峬峮峯峱峲峳峴峵島峷峸峹峺峼峽峾峿崀�崁崄崅崈崉崊崋崌崍崏崐崑崒崓崕崗崘崙崚崜崝崟崠崡崢崣崥崨崪崫崬崯崰崱崲崳崵崶崷崸崹崺崻崼崿嵀嵁嵂嵃嵄嵅嵆嵈嵉嵍嵎嵏嵐嵑嵒嵓嵔嵕嵖嵗嵙嵚嵜嵞嵟嵠嵡嵢嵣嵤嵥嵦嵧嵨嵪嵭嵮嵰嵱嵲嵳嵵嵶嵷嵸嵹嵺嵻嵼嵽嵾嵿嶀嶁嶃嶄嶅嶆嶇嶈嶉嶊嶋嶌嶍嶎嶏嶐嶑嶒嶓嶔嶕嶖嶗嶘嶚嶛嶜嶞嶟嶠�\".split(\"\");\nfor(j = 0; j != D[141].length; ++j) if(D[141][j].charCodeAt(0) !== 0xFFFD) { e[D[141][j]] = 36096 + j; d[36096 + j] = D[141][j];}\nD[142] = \"����������������������������������������������������������������嶡嶢嶣嶤嶥嶦嶧嶨嶩嶪嶫嶬嶭嶮嶯嶰嶱嶲嶳嶴嶵嶶嶸嶹嶺嶻嶼嶽嶾嶿巀巁巂巃巄巆巇巈巉巊巋巌巎巏巐巑巒巓巔巕巖巗巘巙巚巜巟巠巣巤巪巬巭�巰巵巶巸巹巺巻巼巿帀帄帇帉帊帋帍帎帒帓帗帞帟帠帡帢帣帤帥帨帩帪師帬帯帰帲帳帴帵帶帹帺帾帿幀幁幃幆幇幈幉幊幋幍幎幏幐幑幒幓幖幗幘幙幚幜幝幟幠幣幤幥幦幧幨幩幪幫幬幭幮幯幰幱幵幷幹幾庁庂広庅庈庉庌庍庎庒庘庛庝庡庢庣庤庨庩庪庫庬庮庯庰庱庲庴庺庻庼庽庿廀廁廂廃廄廅�\".split(\"\");\nfor(j = 0; j != D[142].length; ++j) if(D[142][j].charCodeAt(0) !== 0xFFFD) { e[D[142][j]] = 36352 + j; d[36352 + j] = D[142][j];}\nD[143] = \"����������������������������������������������������������������廆廇廈廋廌廍廎廏廐廔廕廗廘廙廚廜廝廞廟廠廡廢廣廤廥廦廧廩廫廬廭廮廯廰廱廲廳廵廸廹廻廼廽弅弆弇弉弌弍弎弐弒弔弖弙弚弜弝弞弡弢弣弤�弨弫弬弮弰弲弳弴張弶強弸弻弽弾弿彁彂彃彄彅彆彇彈彉彊彋彌彍彎彏彑彔彙彚彛彜彞彟彠彣彥彧彨彫彮彯彲彴彵彶彸彺彽彾彿徃徆徍徎徏徑従徔徖徚徛徝從徟徠徢徣徤徥徦徧復徫徬徯徰徱徲徳徴徶徸徹徺徻徾徿忀忁忂忇忈忊忋忎忓忔忕忚忛応忞忟忢忣忥忦忨忩忬忯忰忲忳忴忶忷忹忺忼怇�\".split(\"\");\nfor(j = 0; j != D[143].length; ++j) if(D[143][j].charCodeAt(0) !== 0xFFFD) { e[D[143][j]] = 36608 + j; d[36608 + j] = D[143][j];}\nD[144] = \"����������������������������������������������������������������怈怉怋怌怐怑怓怗怘怚怞怟怢怣怤怬怭怮怰怱怲怳怴怶怷怸怹怺怽怾恀恄恅恆恇恈恉恊恌恎恏恑恓恔恖恗恘恛恜恞恟恠恡恥恦恮恱恲恴恵恷恾悀�悁悂悅悆悇悈悊悋悎悏悐悑悓悕悗悘悙悜悞悡悢悤悥悧悩悪悮悰悳悵悶悷悹悺悽悾悿惀惁惂惃惄惇惈惉惌惍惎惏惐惒惓惔惖惗惙惛惞惡惢惣惤惥惪惱惲惵惷惸惻惼惽惾惿愂愃愄愅愇愊愋愌愐愑愒愓愔愖愗愘愙愛愜愝愞愡愢愥愨愩愪愬愭愮愯愰愱愲愳愴愵愶愷愸愹愺愻愼愽愾慀慁慂慃慄慅慆�\".split(\"\");\nfor(j = 0; j != D[144].length; ++j) if(D[144][j].charCodeAt(0) !== 0xFFFD) { e[D[144][j]] = 36864 + j; d[36864 + j] = D[144][j];}\nD[145] = \"����������������������������������������������������������������慇慉態慍慏慐慒慓慔慖慗慘慙慚慛慜慞慟慠慡慣慤慥慦慩慪慫慬慭慮慯慱慲慳慴慶慸慹慺慻慼慽慾慿憀憁憂憃憄憅憆憇憈憉憊憌憍憏憐憑憒憓憕�憖憗憘憙憚憛憜憞憟憠憡憢憣憤憥憦憪憫憭憮憯憰憱憲憳憴憵憶憸憹憺憻憼憽憿懀懁懃懄懅懆懇應懌懍懎懏懐懓懕懖懗懘懙懚懛懜懝懞懟懠懡懢懣懤懥懧懨懩懪懫懬懭懮懯懰懱懲懳懴懶懷懸懹懺懻懼懽懾戀戁戂戃戄戅戇戉戓戔戙戜戝戞戠戣戦戧戨戩戫戭戯戰戱戲戵戶戸戹戺戻戼扂扄扅扆扊�\".split(\"\");\nfor(j = 0; j != D[145].length; ++j) if(D[145][j].charCodeAt(0) !== 0xFFFD) { e[D[145][j]] = 37120 + j; d[37120 + j] = D[145][j];}\nD[146] = \"����������������������������������������������������������������扏扐払扖扗扙扚扜扝扞扟扠扡扢扤扥扨扱扲扴扵扷扸扺扻扽抁抂抃抅抆抇抈抋抌抍抎抏抐抔抙抜抝択抣抦抧抩抪抭抮抯抰抲抳抴抶抷抸抺抾拀拁�拃拋拏拑拕拝拞拠拡拤拪拫拰拲拵拸拹拺拻挀挃挄挅挆挊挋挌挍挏挐挒挓挔挕挗挘挙挜挦挧挩挬挭挮挰挱挳挴挵挶挷挸挻挼挾挿捀捁捄捇捈捊捑捒捓捔捖捗捘捙捚捛捜捝捠捤捥捦捨捪捫捬捯捰捲捳捴捵捸捹捼捽捾捿掁掃掄掅掆掋掍掑掓掔掕掗掙掚掛掜掝掞掟採掤掦掫掯掱掲掵掶掹掻掽掿揀�\".split(\"\");\nfor(j = 0; j != D[146].length; ++j) if(D[146][j].charCodeAt(0) !== 0xFFFD) { e[D[146][j]] = 37376 + j; d[37376 + j] = D[146][j];}\nD[147] = \"����������������������������������������������������������������揁揂揃揅揇揈揊揋揌揑揓揔揕揗揘揙揚換揜揝揟揢揤揥揦揧揨揫揬揮揯揰揱揳揵揷揹揺揻揼揾搃搄搆搇搈搉搊損搎搑搒搕搖搗搘搙搚搝搟搢搣搤�搥搧搨搩搫搮搯搰搱搲搳搵搶搷搸搹搻搼搾摀摂摃摉摋摌摍摎摏摐摑摓摕摖摗摙摚摛摜摝摟摠摡摢摣摤摥摦摨摪摫摬摮摯摰摱摲摳摴摵摶摷摻摼摽摾摿撀撁撃撆撈撉撊撋撌撍撎撏撐撓撔撗撘撚撛撜撝撟撠撡撢撣撥撦撧撨撪撫撯撱撲撳撴撶撹撻撽撾撿擁擃擄擆擇擈擉擊擋擌擏擑擓擔擕擖擙據�\".split(\"\");\nfor(j = 0; j != D[147].length; ++j) if(D[147][j].charCodeAt(0) !== 0xFFFD) { e[D[147][j]] = 37632 + j; d[37632 + j] = D[147][j];}\nD[148] = \"����������������������������������������������������������������擛擜擝擟擠擡擣擥擧擨擩擪擫擬擭擮擯擰擱擲擳擴擵擶擷擸擹擺擻擼擽擾擿攁攂攃攄攅攆攇攈攊攋攌攍攎攏攐攑攓攔攕攖攗攙攚攛攜攝攞攟攠攡�攢攣攤攦攧攨攩攪攬攭攰攱攲攳攷攺攼攽敀敁敂敃敄敆敇敊敋敍敎敐敒敓敔敗敘敚敜敟敠敡敤敥敧敨敩敪敭敮敯敱敳敵敶數敹敺敻敼敽敾敿斀斁斂斃斄斅斆斈斉斊斍斎斏斒斔斕斖斘斚斝斞斠斢斣斦斨斪斬斮斱斲斳斴斵斶斷斸斺斻斾斿旀旂旇旈旉旊旍旐旑旓旔旕旘旙旚旛旜旝旞旟旡旣旤旪旫�\".split(\"\");\nfor(j = 0; j != D[148].length; ++j) if(D[148][j].charCodeAt(0) !== 0xFFFD) { e[D[148][j]] = 37888 + j; d[37888 + j] = D[148][j];}\nD[149] = \"����������������������������������������������������������������旲旳旴旵旸旹旻旼旽旾旿昁昄昅昇昈昉昋昍昐昑昒昖昗昘昚昛昜昞昡昢昣昤昦昩昪昫昬昮昰昲昳昷昸昹昺昻昽昿晀時晄晅晆晇晈晉晊晍晎晐晑晘�晙晛晜晝晞晠晢晣晥晧晩晪晫晬晭晱晲晳晵晸晹晻晼晽晿暀暁暃暅暆暈暉暊暋暍暎暏暐暒暓暔暕暘暙暚暛暜暞暟暠暡暢暣暤暥暦暩暪暫暬暭暯暰暱暲暳暵暶暷暸暺暻暼暽暿曀曁曂曃曄曅曆曇曈曉曊曋曌曍曎曏曐曑曒曓曔曕曖曗曘曚曞曟曠曡曢曣曤曥曧曨曪曫曬曭曮曯曱曵曶書曺曻曽朁朂會�\".split(\"\");\nfor(j = 0; j != D[149].length; ++j) if(D[149][j].charCodeAt(0) !== 0xFFFD) { e[D[149][j]] = 38144 + j; d[38144 + j] = D[149][j];}\nD[150] = \"����������������������������������������������������������������朄朅朆朇朌朎朏朑朒朓朖朘朙朚朜朞朠朡朢朣朤朥朧朩朮朰朲朳朶朷朸朹朻朼朾朿杁杄杅杇杊杋杍杒杔杕杗杘杙杚杛杝杢杣杤杦杧杫杬杮東杴杶�杸杹杺杻杽枀枂枃枅枆枈枊枌枍枎枏枑枒枓枔枖枙枛枟枠枡枤枦枩枬枮枱枲枴枹枺枻枼枽枾枿柀柂柅柆柇柈柉柊柋柌柍柎柕柖柗柛柟柡柣柤柦柧柨柪柫柭柮柲柵柶柷柸柹柺査柼柾栁栂栃栄栆栍栐栒栔栕栘栙栚栛栜栞栟栠栢栣栤栥栦栧栨栫栬栭栮栯栰栱栴栵栶栺栻栿桇桋桍桏桒桖桗桘桙桚桛�\".split(\"\");\nfor(j = 0; j != D[150].length; ++j) if(D[150][j].charCodeAt(0) !== 0xFFFD) { e[D[150][j]] = 38400 + j; d[38400 + j] = D[150][j];}\nD[151] = \"����������������������������������������������������������������桜桝桞桟桪桬桭桮桯桰桱桲桳桵桸桹桺桻桼桽桾桿梀梂梄梇梈梉梊梋梌梍梎梐梑梒梔梕梖梘梙梚梛梜條梞梟梠梡梣梤梥梩梪梫梬梮梱梲梴梶梷梸�梹梺梻梼梽梾梿棁棃棄棅棆棇棈棊棌棎棏棐棑棓棔棖棗棙棛棜棝棞棟棡棢棤棥棦棧棨棩棪棫棬棭棯棲棳棴棶棷棸棻棽棾棿椀椂椃椄椆椇椈椉椊椌椏椑椓椔椕椖椗椘椙椚椛検椝椞椡椢椣椥椦椧椨椩椪椫椬椮椯椱椲椳椵椶椷椸椺椻椼椾楀楁楃楄楅楆楇楈楉楊楋楌楍楎楏楐楑楒楓楕楖楘楙楛楜楟�\".split(\"\");\nfor(j = 0; j != D[151].length; ++j) if(D[151][j].charCodeAt(0) !== 0xFFFD) { e[D[151][j]] = 38656 + j; d[38656 + j] = D[151][j];}\nD[152] = \"����������������������������������������������������������������楡楢楤楥楧楨楩楪楬業楯楰楲楳楴極楶楺楻楽楾楿榁榃榅榊榋榌榎榏榐榑榒榓榖榗榙榚榝榞榟榠榡榢榣榤榥榦榩榪榬榮榯榰榲榳榵榶榸榹榺榼榽�榾榿槀槂槃槄槅槆槇槈槉構槍槏槑槒槓槕槖槗様槙槚槜槝槞槡槢槣槤槥槦槧槨槩槪槫槬槮槯槰槱槳槴槵槶槷槸槹槺槻槼槾樀樁樂樃樄樅樆樇樈樉樋樌樍樎樏樐樑樒樓樔樕樖標樚樛樜樝樞樠樢樣樤樥樦樧権樫樬樭樮樰樲樳樴樶樷樸樹樺樻樼樿橀橁橂橃橅橆橈橉橊橋橌橍橎橏橑橒橓橔橕橖橗橚�\".split(\"\");\nfor(j = 0; j != D[152].length; ++j) if(D[152][j].charCodeAt(0) !== 0xFFFD) { e[D[152][j]] = 38912 + j; d[38912 + j] = D[152][j];}\nD[153] = \"����������������������������������������������������������������橜橝橞機橠橢橣橤橦橧橨橩橪橫橬橭橮橯橰橲橳橴橵橶橷橸橺橻橽橾橿檁檂檃檅檆檇檈檉檊檋檌檍檏檒檓檔檕檖檘檙檚檛檜檝檞檟檡檢檣檤檥檦�檧檨檪檭檮檯檰檱檲檳檴檵檶檷檸檹檺檻檼檽檾檿櫀櫁櫂櫃櫄櫅櫆櫇櫈櫉櫊櫋櫌櫍櫎櫏櫐櫑櫒櫓櫔櫕櫖櫗櫘櫙櫚櫛櫜櫝櫞櫟櫠櫡櫢櫣櫤櫥櫦櫧櫨櫩櫪櫫櫬櫭櫮櫯櫰櫱櫲櫳櫴櫵櫶櫷櫸櫹櫺櫻櫼櫽櫾櫿欀欁欂欃欄欅欆欇欈欉權欋欌欍欎欏欐欑欒欓欔欕欖欗欘欙欚欛欜欝欞欟欥欦欨欩欪欫欬欭欮�\".split(\"\");\nfor(j = 0; j != D[153].length; ++j) if(D[153][j].charCodeAt(0) !== 0xFFFD) { e[D[153][j]] = 39168 + j; d[39168 + j] = D[153][j];}\nD[154] = \"����������������������������������������������������������������欯欰欱欳欴欵欶欸欻欼欽欿歀歁歂歄歅歈歊歋歍歎歏歐歑歒歓歔歕歖歗歘歚歛歜歝歞歟歠歡歨歩歫歬歭歮歯歰歱歲歳歴歵歶歷歸歺歽歾歿殀殅殈�殌殎殏殐殑殔殕殗殘殙殜殝殞殟殠殢殣殤殥殦殧殨殩殫殬殭殮殯殰殱殲殶殸殹殺殻殼殽殾毀毃毄毆毇毈毉毊毌毎毐毑毘毚毜毝毞毟毠毢毣毤毥毦毧毨毩毬毭毮毰毱毲毴毶毷毸毺毻毼毾毿氀氁氂氃氄氈氉氊氋氌氎氒気氜氝氞氠氣氥氫氬氭氱氳氶氷氹氺氻氼氾氿汃汄汅汈汋汌汍汎汏汑汒汓汖汘�\".split(\"\");\nfor(j = 0; j != D[154].length; ++j) if(D[154][j].charCodeAt(0) !== 0xFFFD) { e[D[154][j]] = 39424 + j; d[39424 + j] = D[154][j];}\nD[155] = \"����������������������������������������������������������������汙汚汢汣汥汦汧汫汬汭汮汯汱汳汵汷汸決汻汼汿沀沄沇沊沋沍沎沑沒沕沖沗沘沚沜沝沞沠沢沨沬沯沰沴沵沶沷沺泀況泂泃泆泇泈泋泍泎泏泑泒泘�泙泚泜泝泟泤泦泧泩泬泭泲泴泹泿洀洂洃洅洆洈洉洊洍洏洐洑洓洔洕洖洘洜洝洟洠洡洢洣洤洦洨洩洬洭洯洰洴洶洷洸洺洿浀浂浄浉浌浐浕浖浗浘浛浝浟浡浢浤浥浧浨浫浬浭浰浱浲浳浵浶浹浺浻浽浾浿涀涁涃涄涆涇涊涋涍涏涐涒涖涗涘涙涚涜涢涥涬涭涰涱涳涴涶涷涹涺涻涼涽涾淁淂淃淈淉淊�\".split(\"\");\nfor(j = 0; j != D[155].length; ++j) if(D[155][j].charCodeAt(0) !== 0xFFFD) { e[D[155][j]] = 39680 + j; d[39680 + j] = D[155][j];}\nD[156] = \"����������������������������������������������������������������淍淎淏淐淒淓淔淕淗淚淛淜淟淢淣淥淧淨淩淪淭淯淰淲淴淵淶淸淺淽淾淿渀渁渂渃渄渆渇済渉渋渏渒渓渕渘渙減渜渞渟渢渦渧渨渪測渮渰渱渳渵�渶渷渹渻渼渽渾渿湀湁湂湅湆湇湈湉湊湋湌湏湐湑湒湕湗湙湚湜湝湞湠湡湢湣湤湥湦湧湨湩湪湬湭湯湰湱湲湳湴湵湶湷湸湹湺湻湼湽満溁溂溄溇溈溊溋溌溍溎溑溒溓溔溕準溗溙溚溛溝溞溠溡溣溤溦溨溩溫溬溭溮溰溳溵溸溹溼溾溿滀滃滄滅滆滈滉滊滌滍滎滐滒滖滘滙滛滜滝滣滧滪滫滬滭滮滯�\".split(\"\");\nfor(j = 0; j != D[156].length; ++j) if(D[156][j].charCodeAt(0) !== 0xFFFD) { e[D[156][j]] = 39936 + j; d[39936 + j] = D[156][j];}\nD[157] = \"����������������������������������������������������������������滰滱滲滳滵滶滷滸滺滻滼滽滾滿漀漁漃漄漅漇漈漊漋漌漍漎漐漑漒漖漗漘漙漚漛漜漝漞漟漡漢漣漥漦漧漨漬漮漰漲漴漵漷漸漹漺漻漼漽漿潀潁潂�潃潄潅潈潉潊潌潎潏潐潑潒潓潔潕潖潗潙潚潛潝潟潠潡潣潤潥潧潨潩潪潫潬潯潰潱潳潵潶潷潹潻潽潾潿澀澁澂澃澅澆澇澊澋澏澐澑澒澓澔澕澖澗澘澙澚澛澝澞澟澠澢澣澤澥澦澨澩澪澫澬澭澮澯澰澱澲澴澵澷澸澺澻澼澽澾澿濁濃濄濅濆濇濈濊濋濌濍濎濏濐濓濔濕濖濗濘濙濚濛濜濝濟濢濣濤濥�\".split(\"\");\nfor(j = 0; j != D[157].length; ++j) if(D[157][j].charCodeAt(0) !== 0xFFFD) { e[D[157][j]] = 40192 + j; d[40192 + j] = D[157][j];}\nD[158] = \"����������������������������������������������������������������濦濧濨濩濪濫濬濭濰濱濲濳濴濵濶濷濸濹濺濻濼濽濾濿瀀瀁瀂瀃瀄瀅瀆瀇瀈瀉瀊瀋瀌瀍瀎瀏瀐瀒瀓瀔瀕瀖瀗瀘瀙瀜瀝瀞瀟瀠瀡瀢瀤瀥瀦瀧瀨瀩瀪�瀫瀬瀭瀮瀯瀰瀱瀲瀳瀴瀶瀷瀸瀺瀻瀼瀽瀾瀿灀灁灂灃灄灅灆灇灈灉灊灋灍灎灐灑灒灓灔灕灖灗灘灙灚灛灜灝灟灠灡灢灣灤灥灦灧灨灩灪灮灱灲灳灴灷灹灺灻災炁炂炃炄炆炇炈炋炌炍炏炐炑炓炗炘炚炛炞炟炠炡炢炣炤炥炦炧炨炩炪炰炲炴炵炶為炾炿烄烅烆烇烉烋烌烍烎烏烐烑烒烓烔烕烖烗烚�\".split(\"\");\nfor(j = 0; j != D[158].length; ++j) if(D[158][j].charCodeAt(0) !== 0xFFFD) { e[D[158][j]] = 40448 + j; d[40448 + j] = D[158][j];}\nD[159] = \"����������������������������������������������������������������烜烝烞烠烡烢烣烥烪烮烰烱烲烳烴烵烶烸烺烻烼烾烿焀焁焂焃焄焅焆焇焈焋焌焍焎焏焑焒焔焗焛焜焝焞焟焠無焢焣焤焥焧焨焩焪焫焬焭焮焲焳焴�焵焷焸焹焺焻焼焽焾焿煀煁煂煃煄煆煇煈煉煋煍煏煐煑煒煓煔煕煖煗煘煙煚煛煝煟煠煡煢煣煥煩煪煫煬煭煯煰煱煴煵煶煷煹煻煼煾煿熀熁熂熃熅熆熇熈熉熋熌熍熎熐熑熒熓熕熖熗熚熛熜熝熞熡熢熣熤熥熦熧熩熪熫熭熮熯熰熱熲熴熶熷熸熺熻熼熽熾熿燀燁燂燄燅燆燇燈燉燊燋燌燍燏燐燑燒燓�\".split(\"\");\nfor(j = 0; j != D[159].length; ++j) if(D[159][j].charCodeAt(0) !== 0xFFFD) { e[D[159][j]] = 40704 + j; d[40704 + j] = D[159][j];}\nD[160] = \"����������������������������������������������������������������燖燗燘燙燚燛燜燝燞營燡燢燣燤燦燨燩燪燫燬燭燯燰燱燲燳燴燵燶燷燸燺燻燼燽燾燿爀爁爂爃爄爅爇爈爉爊爋爌爍爎爏爐爑爒爓爔爕爖爗爘爙爚�爛爜爞爟爠爡爢爣爤爥爦爧爩爫爭爮爯爲爳爴爺爼爾牀牁牂牃牄牅牆牉牊牋牎牏牐牑牓牔牕牗牘牚牜牞牠牣牤牥牨牪牫牬牭牰牱牳牴牶牷牸牻牼牽犂犃犅犆犇犈犉犌犎犐犑犓犔犕犖犗犘犙犚犛犜犝犞犠犡犢犣犤犥犦犧犨犩犪犫犮犱犲犳犵犺犻犼犽犾犿狀狅狆狇狉狊狋狌狏狑狓狔狕狖狘狚狛�\".split(\"\");\nfor(j = 0; j != D[160].length; ++j) if(D[160][j].charCodeAt(0) !== 0xFFFD) { e[D[160][j]] = 40960 + j; d[40960 + j] = D[160][j];}\nD[161] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������　、。·ˉˇ¨〃々—～‖…‘’“”〔〕〈〉《》「」『』〖〗【】±×÷∶∧∨∑∏∪∩∈∷√⊥∥∠⌒⊙∫∮≡≌≈∽∝≠≮≯≤≥∞∵∴♂♀°′″℃＄¤￠￡‰§№☆★○●◎◇◆□■△▲※→←↑↓〓�\".split(\"\");\nfor(j = 0; j != D[161].length; ++j) if(D[161][j].charCodeAt(0) !== 0xFFFD) { e[D[161][j]] = 41216 + j; d[41216 + j] = D[161][j];}\nD[162] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������ⅰⅱⅲⅳⅴⅵⅶⅷⅸⅹ������⒈⒉⒊⒋⒌⒍⒎⒏⒐⒑⒒⒓⒔⒕⒖⒗⒘⒙⒚⒛⑴⑵⑶⑷⑸⑹⑺⑻⑼⑽⑾⑿⒀⒁⒂⒃⒄⒅⒆⒇①②③④⑤⑥⑦⑧⑨⑩��㈠㈡㈢㈣㈤㈥㈦㈧㈨㈩��ⅠⅡⅢⅣⅤⅥⅦⅧⅨⅩⅪⅫ���\".split(\"\");\nfor(j = 0; j != D[162].length; ++j) if(D[162][j].charCodeAt(0) !== 0xFFFD) { e[D[162][j]] = 41472 + j; d[41472 + j] = D[162][j];}\nD[163] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������！＂＃￥％＆＇（）＊＋，－．／０１２３４５６７８９：；＜＝＞？＠ＡＢＣＤＥＦＧＨＩＪＫＬＭＮＯＰＱＲＳＴＵＶＷＸＹＺ［＼］＾＿｀ａｂｃｄｅｆｇｈｉｊｋｌｍｎｏｐｑｒｓｔｕｖｗｘｙｚ｛｜｝￣�\".split(\"\");\nfor(j = 0; j != D[163].length; ++j) if(D[163][j].charCodeAt(0) !== 0xFFFD) { e[D[163][j]] = 41728 + j; d[41728 + j] = D[163][j];}\nD[164] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������ぁあぃいぅうぇえぉおかがきぎくぐけげこごさざしじすずせぜそぞただちぢっつづてでとどなにぬねのはばぱひびぴふぶぷへべぺほぼぽまみむめもゃやゅゆょよらりるれろゎわゐゑをん������������\".split(\"\");\nfor(j = 0; j != D[164].length; ++j) if(D[164][j].charCodeAt(0) !== 0xFFFD) { e[D[164][j]] = 41984 + j; d[41984 + j] = D[164][j];}\nD[165] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������ァアィイゥウェエォオカガキギクグケゲコゴサザシジスズセゼソゾタダチヂッツヅテデトドナニヌネノハバパヒビピフブプヘベペホボポマミムメモャヤュユョヨラリルレロヮワヰヱヲンヴヵヶ���������\".split(\"\");\nfor(j = 0; j != D[165].length; ++j) if(D[165][j].charCodeAt(0) !== 0xFFFD) { e[D[165][j]] = 42240 + j; d[42240 + j] = D[165][j];}\nD[166] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������ΑΒΓΔΕΖΗΘΙΚΛΜΝΞΟΠΡΣΤΥΦΧΨΩ��������αβγδεζηθικλμνξοπρστυφχψω�������︵︶︹︺︿﹀︽︾﹁﹂﹃﹄��︻︼︷︸︱�︳︴����������\".split(\"\");\nfor(j = 0; j != D[166].length; ++j) if(D[166][j].charCodeAt(0) !== 0xFFFD) { e[D[166][j]] = 42496 + j; d[42496 + j] = D[166][j];}\nD[167] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ���������������абвгдеёжзийклмнопрстуфхцчшщъыьэюя��������������\".split(\"\");\nfor(j = 0; j != D[167].length; ++j) if(D[167][j].charCodeAt(0) !== 0xFFFD) { e[D[167][j]] = 42752 + j; d[42752 + j] = D[167][j];}\nD[168] = \"����������������������������������������������������������������ˊˋ˙–―‥‵℅℉↖↗↘↙∕∟∣≒≦≧⊿═║╒╓╔╕╖╗╘╙╚╛╜╝╞╟╠╡╢╣╤╥╦╧╨╩╪╫╬╭╮╯╰╱╲╳▁▂▃▄▅▆▇�█▉▊▋▌▍▎▏▓▔▕▼▽◢◣◤◥☉⊕〒〝〞�����������āáǎàēéěèīíǐìōóǒòūúǔùǖǘǚǜüêɑ�ńň�ɡ����ㄅㄆㄇㄈㄉㄊㄋㄌㄍㄎㄏㄐㄑㄒㄓㄔㄕㄖㄗㄘㄙㄚㄛㄜㄝㄞㄟㄠㄡㄢㄣㄤㄥㄦㄧㄨㄩ����������������������\".split(\"\");\nfor(j = 0; j != D[168].length; ++j) if(D[168][j].charCodeAt(0) !== 0xFFFD) { e[D[168][j]] = 43008 + j; d[43008 + j] = D[168][j];}\nD[169] = \"����������������������������������������������������������������〡〢〣〤〥〦〧〨〩㊣㎎㎏㎜㎝㎞㎡㏄㏎㏑㏒㏕︰￢￤�℡㈱�‐���ー゛゜ヽヾ〆ゝゞ﹉﹊﹋﹌﹍﹎﹏﹐﹑﹒﹔﹕﹖﹗﹙﹚﹛﹜﹝﹞﹟﹠﹡�﹢﹣﹤﹥﹦﹨﹩﹪﹫�������������〇�������������─━│┃┄┅┆┇┈┉┊┋┌┍┎┏┐┑┒┓└┕┖┗┘┙┚┛├┝┞┟┠┡┢┣┤┥┦┧┨┩┪┫┬┭┮┯┰┱┲┳┴┵┶┷┸┹┺┻┼┽┾┿╀╁╂╃╄╅╆╇╈╉╊╋����������������\".split(\"\");\nfor(j = 0; j != D[169].length; ++j) if(D[169][j].charCodeAt(0) !== 0xFFFD) { e[D[169][j]] = 43264 + j; d[43264 + j] = D[169][j];}\nD[170] = \"����������������������������������������������������������������狜狝狟狢狣狤狥狦狧狪狫狵狶狹狽狾狿猀猂猄猅猆猇猈猉猋猌猍猏猐猑猒猔猘猙猚猟猠猣猤猦猧猨猭猯猰猲猳猵猶猺猻猼猽獀獁獂獃獄獅獆獇獈�獉獊獋獌獎獏獑獓獔獕獖獘獙獚獛獜獝獞獟獡獢獣獤獥獦獧獨獩獪獫獮獰獱�����������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[170].length; ++j) if(D[170][j].charCodeAt(0) !== 0xFFFD) { e[D[170][j]] = 43520 + j; d[43520 + j] = D[170][j];}\nD[171] = \"����������������������������������������������������������������獲獳獴獵獶獷獸獹獺獻獼獽獿玀玁玂玃玅玆玈玊玌玍玏玐玒玓玔玕玗玘玙玚玜玝玞玠玡玣玤玥玦玧玨玪玬玭玱玴玵玶玸玹玼玽玾玿珁珃珄珅珆珇�珋珌珎珒珓珔珕珖珗珘珚珛珜珝珟珡珢珣珤珦珨珪珫珬珮珯珰珱珳珴珵珶珷�����������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[171].length; ++j) if(D[171][j].charCodeAt(0) !== 0xFFFD) { e[D[171][j]] = 43776 + j; d[43776 + j] = D[171][j];}\nD[172] = \"����������������������������������������������������������������珸珹珺珻珼珽現珿琀琁琂琄琇琈琋琌琍琎琑琒琓琔琕琖琗琘琙琜琝琞琟琠琡琣琤琧琩琫琭琯琱琲琷琸琹琺琻琽琾琿瑀瑂瑃瑄瑅瑆瑇瑈瑉瑊瑋瑌瑍�瑎瑏瑐瑑瑒瑓瑔瑖瑘瑝瑠瑡瑢瑣瑤瑥瑦瑧瑨瑩瑪瑫瑬瑮瑯瑱瑲瑳瑴瑵瑸瑹瑺�����������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[172].length; ++j) if(D[172][j].charCodeAt(0) !== 0xFFFD) { e[D[172][j]] = 44032 + j; d[44032 + j] = D[172][j];}\nD[173] = \"����������������������������������������������������������������瑻瑼瑽瑿璂璄璅璆璈璉璊璌璍璏璑璒璓璔璕璖璗璘璙璚璛璝璟璠璡璢璣璤璥璦璪璫璬璭璮璯環璱璲璳璴璵璶璷璸璹璻璼璽璾璿瓀瓁瓂瓃瓄瓅瓆瓇�瓈瓉瓊瓋瓌瓍瓎瓏瓐瓑瓓瓔瓕瓖瓗瓘瓙瓚瓛瓝瓟瓡瓥瓧瓨瓩瓪瓫瓬瓭瓰瓱瓲�����������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[173].length; ++j) if(D[173][j].charCodeAt(0) !== 0xFFFD) { e[D[173][j]] = 44288 + j; d[44288 + j] = D[173][j];}\nD[174] = \"����������������������������������������������������������������瓳瓵瓸瓹瓺瓻瓼瓽瓾甀甁甂甃甅甆甇甈甉甊甋甌甎甐甒甔甕甖甗甛甝甞甠甡產産甤甦甧甪甮甴甶甹甼甽甿畁畂畃畄畆畇畉畊畍畐畑畒畓畕畖畗畘�畝畞畟畠畡畢畣畤畧畨畩畫畬畭畮畯異畱畳畵當畷畺畻畼畽畾疀疁疂疄疅疇�����������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[174].length; ++j) if(D[174][j].charCodeAt(0) !== 0xFFFD) { e[D[174][j]] = 44544 + j; d[44544 + j] = D[174][j];}\nD[175] = \"����������������������������������������������������������������疈疉疊疌疍疎疐疓疕疘疛疜疞疢疦疧疨疩疪疭疶疷疺疻疿痀痁痆痋痌痎痏痐痑痓痗痙痚痜痝痟痠痡痥痩痬痭痮痯痲痳痵痶痷痸痺痻痽痾瘂瘄瘆瘇�瘈瘉瘋瘍瘎瘏瘑瘒瘓瘔瘖瘚瘜瘝瘞瘡瘣瘧瘨瘬瘮瘯瘱瘲瘶瘷瘹瘺瘻瘽癁療癄�����������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[175].length; ++j) if(D[175][j].charCodeAt(0) !== 0xFFFD) { e[D[175][j]] = 44800 + j; d[44800 + j] = D[175][j];}\nD[176] = \"����������������������������������������������������������������癅癆癇癈癉癊癋癎癏癐癑癒癓癕癗癘癙癚癛癝癟癠癡癢癤癥癦癧癨癩癪癬癭癮癰癱癲癳癴癵癶癷癹発發癿皀皁皃皅皉皊皌皍皏皐皒皔皕皗皘皚皛�皜皝皞皟皠皡皢皣皥皦皧皨皩皪皫皬皭皯皰皳皵皶皷皸皹皺皻皼皽皾盀盁盃啊阿埃挨哎唉哀皑癌蔼矮艾碍爱隘鞍氨安俺按暗岸胺案肮昂盎凹敖熬翱袄傲奥懊澳芭捌扒叭吧笆八疤巴拔跋靶把耙坝霸罢爸白柏百摆佰败拜稗斑班搬扳般颁板版扮拌伴瓣半办绊邦帮梆榜膀绑棒磅蚌镑傍谤苞胞包褒剥�\".split(\"\");\nfor(j = 0; j != D[176].length; ++j) if(D[176][j].charCodeAt(0) !== 0xFFFD) { e[D[176][j]] = 45056 + j; d[45056 + j] = D[176][j];}\nD[177] = \"����������������������������������������������������������������盄盇盉盋盌盓盕盙盚盜盝盞盠盡盢監盤盦盧盨盩盪盫盬盭盰盳盵盶盷盺盻盽盿眀眂眃眅眆眊県眎眏眐眑眒眓眔眕眖眗眘眛眜眝眞眡眣眤眥眧眪眫�眬眮眰眱眲眳眴眹眻眽眾眿睂睄睅睆睈睉睊睋睌睍睎睏睒睓睔睕睖睗睘睙睜薄雹保堡饱宝抱报暴豹鲍爆杯碑悲卑北辈背贝钡倍狈备惫焙被奔苯本笨崩绷甭泵蹦迸逼鼻比鄙笔彼碧蓖蔽毕毙毖币庇痹闭敝弊必辟壁臂避陛鞭边编贬扁便变卞辨辩辫遍标彪膘表鳖憋别瘪彬斌濒滨宾摈兵冰柄丙秉饼炳�\".split(\"\");\nfor(j = 0; j != D[177].length; ++j) if(D[177][j].charCodeAt(0) !== 0xFFFD) { e[D[177][j]] = 45312 + j; d[45312 + j] = D[177][j];}\nD[178] = \"����������������������������������������������������������������睝睞睟睠睤睧睩睪睭睮睯睰睱睲睳睴睵睶睷睸睺睻睼瞁瞂瞃瞆瞇瞈瞉瞊瞋瞏瞐瞓瞔瞕瞖瞗瞘瞙瞚瞛瞜瞝瞞瞡瞣瞤瞦瞨瞫瞭瞮瞯瞱瞲瞴瞶瞷瞸瞹瞺�瞼瞾矀矁矂矃矄矅矆矇矈矉矊矋矌矎矏矐矑矒矓矔矕矖矘矙矚矝矞矟矠矡矤病并玻菠播拨钵波博勃搏铂箔伯帛舶脖膊渤泊驳捕卜哺补埠不布步簿部怖擦猜裁材才财睬踩采彩菜蔡餐参蚕残惭惨灿苍舱仓沧藏操糙槽曹草厕策侧册测层蹭插叉茬茶查碴搽察岔差诧拆柴豺搀掺蝉馋谗缠铲产阐颤昌猖�\".split(\"\");\nfor(j = 0; j != D[178].length; ++j) if(D[178][j].charCodeAt(0) !== 0xFFFD) { e[D[178][j]] = 45568 + j; d[45568 + j] = D[178][j];}\nD[179] = \"����������������������������������������������������������������矦矨矪矯矰矱矲矴矵矷矹矺矻矼砃砄砅砆砇砈砊砋砎砏砐砓砕砙砛砞砠砡砢砤砨砪砫砮砯砱砲砳砵砶砽砿硁硂硃硄硆硈硉硊硋硍硏硑硓硔硘硙硚�硛硜硞硟硠硡硢硣硤硥硦硧硨硩硯硰硱硲硳硴硵硶硸硹硺硻硽硾硿碀碁碂碃场尝常长偿肠厂敞畅唱倡超抄钞朝嘲潮巢吵炒车扯撤掣彻澈郴臣辰尘晨忱沉陈趁衬撑称城橙成呈乘程惩澄诚承逞骋秤吃痴持匙池迟弛驰耻齿侈尺赤翅斥炽充冲虫崇宠抽酬畴踌稠愁筹仇绸瞅丑臭初出橱厨躇锄雏滁除楚�\".split(\"\");\nfor(j = 0; j != D[179].length; ++j) if(D[179][j].charCodeAt(0) !== 0xFFFD) { e[D[179][j]] = 45824 + j; d[45824 + j] = D[179][j];}\nD[180] = \"����������������������������������������������������������������碄碅碆碈碊碋碏碐碒碔碕碖碙碝碞碠碢碤碦碨碩碪碫碬碭碮碯碵碶碷碸確碻碼碽碿磀磂磃磄磆磇磈磌磍磎磏磑磒磓磖磗磘磚磛磜磝磞磟磠磡磢磣�磤磥磦磧磩磪磫磭磮磯磰磱磳磵磶磸磹磻磼磽磾磿礀礂礃礄礆礇礈礉礊礋礌础储矗搐触处揣川穿椽传船喘串疮窗幢床闯创吹炊捶锤垂春椿醇唇淳纯蠢戳绰疵茨磁雌辞慈瓷词此刺赐次聪葱囱匆从丛凑粗醋簇促蹿篡窜摧崔催脆瘁粹淬翠村存寸磋撮搓措挫错搭达答瘩打大呆歹傣戴带殆代贷袋待逮�\".split(\"\");\nfor(j = 0; j != D[180].length; ++j) if(D[180][j].charCodeAt(0) !== 0xFFFD) { e[D[180][j]] = 46080 + j; d[46080 + j] = D[180][j];}\nD[181] = \"����������������������������������������������������������������礍礎礏礐礑礒礔礕礖礗礘礙礚礛礜礝礟礠礡礢礣礥礦礧礨礩礪礫礬礭礮礯礰礱礲礳礵礶礷礸礹礽礿祂祃祄祅祇祊祋祌祍祎祏祐祑祒祔祕祘祙祡祣�祤祦祩祪祫祬祮祰祱祲祳祴祵祶祹祻祼祽祾祿禂禃禆禇禈禉禋禌禍禎禐禑禒怠耽担丹单郸掸胆旦氮但惮淡诞弹蛋当挡党荡档刀捣蹈倒岛祷导到稻悼道盗德得的蹬灯登等瞪凳邓堤低滴迪敌笛狄涤翟嫡抵底地蒂第帝弟递缔颠掂滇碘点典靛垫电佃甸店惦奠淀殿碉叼雕凋刁掉吊钓调跌爹碟蝶迭谍叠�\".split(\"\");\nfor(j = 0; j != D[181].length; ++j) if(D[181][j].charCodeAt(0) !== 0xFFFD) { e[D[181][j]] = 46336 + j; d[46336 + j] = D[181][j];}\nD[182] = \"����������������������������������������������������������������禓禔禕禖禗禘禙禛禜禝禞禟禠禡禢禣禤禥禦禨禩禪禫禬禭禮禯禰禱禲禴禵禶禷禸禼禿秂秄秅秇秈秊秌秎秏秐秓秔秖秗秙秚秛秜秝秞秠秡秢秥秨秪�秬秮秱秲秳秴秵秶秷秹秺秼秾秿稁稄稅稇稈稉稊稌稏稐稑稒稓稕稖稘稙稛稜丁盯叮钉顶鼎锭定订丢东冬董懂动栋侗恫冻洞兜抖斗陡豆逗痘都督毒犊独读堵睹赌杜镀肚度渡妒端短锻段断缎堆兑队对墩吨蹲敦顿囤钝盾遁掇哆多夺垛躲朵跺舵剁惰堕蛾峨鹅俄额讹娥恶厄扼遏鄂饿恩而儿耳尔饵洱二�\".split(\"\");\nfor(j = 0; j != D[182].length; ++j) if(D[182][j].charCodeAt(0) !== 0xFFFD) { e[D[182][j]] = 46592 + j; d[46592 + j] = D[182][j];}\nD[183] = \"����������������������������������������������������������������稝稟稡稢稤稥稦稧稨稩稪稫稬稭種稯稰稱稲稴稵稶稸稺稾穀穁穂穃穄穅穇穈穉穊穋穌積穎穏穐穒穓穔穕穖穘穙穚穛穜穝穞穟穠穡穢穣穤穥穦穧穨�穩穪穫穬穭穮穯穱穲穳穵穻穼穽穾窂窅窇窉窊窋窌窎窏窐窓窔窙窚窛窞窡窢贰发罚筏伐乏阀法珐藩帆番翻樊矾钒繁凡烦反返范贩犯饭泛坊芳方肪房防妨仿访纺放菲非啡飞肥匪诽吠肺废沸费芬酚吩氛分纷坟焚汾粉奋份忿愤粪丰封枫蜂峰锋风疯烽逢冯缝讽奉凤佛否夫敷肤孵扶拂辐幅氟符伏俘服�\".split(\"\");\nfor(j = 0; j != D[183].length; ++j) if(D[183][j].charCodeAt(0) !== 0xFFFD) { e[D[183][j]] = 46848 + j; d[46848 + j] = D[183][j];}\nD[184] = \"����������������������������������������������������������������窣窤窧窩窪窫窮窯窰窱窲窴窵窶窷窸窹窺窻窼窽窾竀竁竂竃竄竅竆竇竈竉竊竌竍竎竏竐竑竒竓竔竕竗竘竚竛竜竝竡竢竤竧竨竩竪竫竬竮竰竱竲竳�竴竵競竷竸竻竼竾笀笁笂笅笇笉笌笍笎笐笒笓笖笗笘笚笜笝笟笡笢笣笧笩笭浮涪福袱弗甫抚辅俯釜斧脯腑府腐赴副覆赋复傅付阜父腹负富讣附妇缚咐噶嘎该改概钙盖溉干甘杆柑竿肝赶感秆敢赣冈刚钢缸肛纲岗港杠篙皋高膏羔糕搞镐稿告哥歌搁戈鸽胳疙割革葛格蛤阁隔铬个各给根跟耕更庚羹�\".split(\"\");\nfor(j = 0; j != D[184].length; ++j) if(D[184][j].charCodeAt(0) !== 0xFFFD) { e[D[184][j]] = 47104 + j; d[47104 + j] = D[184][j];}\nD[185] = \"����������������������������������������������������������������笯笰笲笴笵笶笷笹笻笽笿筀筁筂筃筄筆筈筊筍筎筓筕筗筙筜筞筟筡筣筤筥筦筧筨筩筪筫筬筭筯筰筳筴筶筸筺筼筽筿箁箂箃箄箆箇箈箉箊箋箌箎箏�箑箒箓箖箘箙箚箛箞箟箠箣箤箥箮箯箰箲箳箵箶箷箹箺箻箼箽箾箿節篂篃範埂耿梗工攻功恭龚供躬公宫弓巩汞拱贡共钩勾沟苟狗垢构购够辜菇咕箍估沽孤姑鼓古蛊骨谷股故顾固雇刮瓜剐寡挂褂乖拐怪棺关官冠观管馆罐惯灌贯光广逛瑰规圭硅归龟闺轨鬼诡癸桂柜跪贵刽辊滚棍锅郭国果裹过哈�\".split(\"\");\nfor(j = 0; j != D[185].length; ++j) if(D[185][j].charCodeAt(0) !== 0xFFFD) { e[D[185][j]] = 47360 + j; d[47360 + j] = D[185][j];}\nD[186] = \"����������������������������������������������������������������篅篈築篊篋篍篎篏篐篒篔篕篖篗篘篛篜篞篟篠篢篣篤篧篨篩篫篬篭篯篰篲篳篴篵篶篸篹篺篻篽篿簀簁簂簃簄簅簆簈簉簊簍簎簐簑簒簓簔簕簗簘簙�簚簛簜簝簞簠簡簢簣簤簥簨簩簫簬簭簮簯簰簱簲簳簴簵簶簷簹簺簻簼簽簾籂骸孩海氦亥害骇酣憨邯韩含涵寒函喊罕翰撼捍旱憾悍焊汗汉夯杭航壕嚎豪毫郝好耗号浩呵喝荷菏核禾和何合盒貉阂河涸赫褐鹤贺嘿黑痕很狠恨哼亨横衡恒轰哄烘虹鸿洪宏弘红喉侯猴吼厚候后呼乎忽瑚壶葫胡蝴狐糊湖�\".split(\"\");\nfor(j = 0; j != D[186].length; ++j) if(D[186][j].charCodeAt(0) !== 0xFFFD) { e[D[186][j]] = 47616 + j; d[47616 + j] = D[186][j];}\nD[187] = \"����������������������������������������������������������������籃籄籅籆籇籈籉籊籋籌籎籏籐籑籒籓籔籕籖籗籘籙籚籛籜籝籞籟籠籡籢籣籤籥籦籧籨籩籪籫籬籭籮籯籰籱籲籵籶籷籸籹籺籾籿粀粁粂粃粄粅粆粇�粈粊粋粌粍粎粏粐粓粔粖粙粚粛粠粡粣粦粧粨粩粫粬粭粯粰粴粵粶粷粸粺粻弧虎唬护互沪户花哗华猾滑画划化话槐徊怀淮坏欢环桓还缓换患唤痪豢焕涣宦幻荒慌黄磺蝗簧皇凰惶煌晃幌恍谎灰挥辉徽恢蛔回毁悔慧卉惠晦贿秽会烩汇讳诲绘荤昏婚魂浑混豁活伙火获或惑霍货祸击圾基机畸稽积箕�\".split(\"\");\nfor(j = 0; j != D[187].length; ++j) if(D[187][j].charCodeAt(0) !== 0xFFFD) { e[D[187][j]] = 47872 + j; d[47872 + j] = D[187][j];}\nD[188] = \"����������������������������������������������������������������粿糀糂糃糄糆糉糋糎糏糐糑糒糓糔糘糚糛糝糞糡糢糣糤糥糦糧糩糪糫糬糭糮糰糱糲糳糴糵糶糷糹糺糼糽糾糿紀紁紂紃約紅紆紇紈紉紋紌納紎紏紐�紑紒紓純紕紖紗紘紙級紛紜紝紞紟紡紣紤紥紦紨紩紪紬紭紮細紱紲紳紴紵紶肌饥迹激讥鸡姬绩缉吉极棘辑籍集及急疾汲即嫉级挤几脊己蓟技冀季伎祭剂悸济寄寂计记既忌际妓继纪嘉枷夹佳家加荚颊贾甲钾假稼价架驾嫁歼监坚尖笺间煎兼肩艰奸缄茧检柬碱硷拣捡简俭剪减荐槛鉴践贱见键箭件�\".split(\"\");\nfor(j = 0; j != D[188].length; ++j) if(D[188][j].charCodeAt(0) !== 0xFFFD) { e[D[188][j]] = 48128 + j; d[48128 + j] = D[188][j];}\nD[189] = \"����������������������������������������������������������������紷紸紹紺紻紼紽紾紿絀絁終絃組絅絆絇絈絉絊絋経絍絎絏結絑絒絓絔絕絖絗絘絙絚絛絜絝絞絟絠絡絢絣絤絥給絧絨絩絪絫絬絭絯絰統絲絳絴絵絶�絸絹絺絻絼絽絾絿綀綁綂綃綄綅綆綇綈綉綊綋綌綍綎綏綐綑綒經綔綕綖綗綘健舰剑饯渐溅涧建僵姜将浆江疆蒋桨奖讲匠酱降蕉椒礁焦胶交郊浇骄娇嚼搅铰矫侥脚狡角饺缴绞剿教酵轿较叫窖揭接皆秸街阶截劫节桔杰捷睫竭洁结解姐戒藉芥界借介疥诫届巾筋斤金今津襟紧锦仅谨进靳晋禁近烬浸�\".split(\"\");\nfor(j = 0; j != D[189].length; ++j) if(D[189][j].charCodeAt(0) !== 0xFFFD) { e[D[189][j]] = 48384 + j; d[48384 + j] = D[189][j];}\nD[190] = \"����������������������������������������������������������������継続綛綜綝綞綟綠綡綢綣綤綥綧綨綩綪綫綬維綯綰綱網綳綴綵綶綷綸綹綺綻綼綽綾綿緀緁緂緃緄緅緆緇緈緉緊緋緌緍緎総緐緑緒緓緔緕緖緗緘緙�線緛緜緝緞緟締緡緢緣緤緥緦緧編緩緪緫緬緭緮緯緰緱緲緳練緵緶緷緸緹緺尽劲荆兢茎睛晶鲸京惊精粳经井警景颈静境敬镜径痉靖竟竞净炯窘揪究纠玖韭久灸九酒厩救旧臼舅咎就疚鞠拘狙疽居驹菊局咀矩举沮聚拒据巨具距踞锯俱句惧炬剧捐鹃娟倦眷卷绢撅攫抉掘倔爵觉决诀绝均菌钧军君峻�\".split(\"\");\nfor(j = 0; j != D[190].length; ++j) if(D[190][j].charCodeAt(0) !== 0xFFFD) { e[D[190][j]] = 48640 + j; d[48640 + j] = D[190][j];}\nD[191] = \"����������������������������������������������������������������緻緼緽緾緿縀縁縂縃縄縅縆縇縈縉縊縋縌縍縎縏縐縑縒縓縔縕縖縗縘縙縚縛縜縝縞縟縠縡縢縣縤縥縦縧縨縩縪縫縬縭縮縯縰縱縲縳縴縵縶縷縸縹�縺縼總績縿繀繂繃繄繅繆繈繉繊繋繌繍繎繏繐繑繒繓織繕繖繗繘繙繚繛繜繝俊竣浚郡骏喀咖卡咯开揩楷凯慨刊堪勘坎砍看康慷糠扛抗亢炕考拷烤靠坷苛柯棵磕颗科壳咳可渴克刻客课肯啃垦恳坑吭空恐孔控抠口扣寇枯哭窟苦酷库裤夸垮挎跨胯块筷侩快宽款匡筐狂框矿眶旷况亏盔岿窥葵奎魁傀�\".split(\"\");\nfor(j = 0; j != D[191].length; ++j) if(D[191][j].charCodeAt(0) !== 0xFFFD) { e[D[191][j]] = 48896 + j; d[48896 + j] = D[191][j];}\nD[192] = \"����������������������������������������������������������������繞繟繠繡繢繣繤繥繦繧繨繩繪繫繬繭繮繯繰繱繲繳繴繵繶繷繸繹繺繻繼繽繾繿纀纁纃纄纅纆纇纈纉纊纋續纍纎纏纐纑纒纓纔纕纖纗纘纙纚纜纝纞�纮纴纻纼绖绤绬绹缊缐缞缷缹缻缼缽缾缿罀罁罃罆罇罈罉罊罋罌罍罎罏罒罓馈愧溃坤昆捆困括扩廓阔垃拉喇蜡腊辣啦莱来赖蓝婪栏拦篮阑兰澜谰揽览懒缆烂滥琅榔狼廊郎朗浪捞劳牢老佬姥酪烙涝勒乐雷镭蕾磊累儡垒擂肋类泪棱楞冷厘梨犁黎篱狸离漓理李里鲤礼莉荔吏栗丽厉励砾历利傈例俐�\".split(\"\");\nfor(j = 0; j != D[192].length; ++j) if(D[192][j].charCodeAt(0) !== 0xFFFD) { e[D[192][j]] = 49152 + j; d[49152 + j] = D[192][j];}\nD[193] = \"����������������������������������������������������������������罖罙罛罜罝罞罠罣罤罥罦罧罫罬罭罯罰罳罵罶罷罸罺罻罼罽罿羀羂羃羄羅羆羇羈羉羋羍羏羐羑羒羓羕羖羗羘羙羛羜羠羢羣羥羦羨義羪羫羬羭羮羱�羳羴羵羶羷羺羻羾翀翂翃翄翆翇翈翉翋翍翏翐翑習翓翖翗翙翚翛翜翝翞翢翣痢立粒沥隶力璃哩俩联莲连镰廉怜涟帘敛脸链恋炼练粮凉梁粱良两辆量晾亮谅撩聊僚疗燎寥辽潦了撂镣廖料列裂烈劣猎琳林磷霖临邻鳞淋凛赁吝拎玲菱零龄铃伶羚凌灵陵岭领另令溜琉榴硫馏留刘瘤流柳六龙聋咙笼窿�\".split(\"\");\nfor(j = 0; j != D[193].length; ++j) if(D[193][j].charCodeAt(0) !== 0xFFFD) { e[D[193][j]] = 49408 + j; d[49408 + j] = D[193][j];}\nD[194] = \"����������������������������������������������������������������翤翧翨翪翫翬翭翯翲翴翵翶翷翸翹翺翽翾翿耂耇耈耉耊耎耏耑耓耚耛耝耞耟耡耣耤耫耬耭耮耯耰耲耴耹耺耼耾聀聁聄聅聇聈聉聎聏聐聑聓聕聖聗�聙聛聜聝聞聟聠聡聢聣聤聥聦聧聨聫聬聭聮聯聰聲聳聴聵聶職聸聹聺聻聼聽隆垄拢陇楼娄搂篓漏陋芦卢颅庐炉掳卤虏鲁麓碌露路赂鹿潞禄录陆戮驴吕铝侣旅履屡缕虑氯律率滤绿峦挛孪滦卵乱掠略抡轮伦仑沦纶论萝螺罗逻锣箩骡裸落洛骆络妈麻玛码蚂马骂嘛吗埋买麦卖迈脉瞒馒蛮满蔓曼慢漫�\".split(\"\");\nfor(j = 0; j != D[194].length; ++j) if(D[194][j].charCodeAt(0) !== 0xFFFD) { e[D[194][j]] = 49664 + j; d[49664 + j] = D[194][j];}\nD[195] = \"����������������������������������������������������������������聾肁肂肅肈肊肍肎肏肐肑肒肔肕肗肙肞肣肦肧肨肬肰肳肵肶肸肹肻胅胇胈胉胊胋胏胐胑胒胓胔胕胘胟胠胢胣胦胮胵胷胹胻胾胿脀脁脃脄脅脇脈脋�脌脕脗脙脛脜脝脟脠脡脢脣脤脥脦脧脨脩脪脫脭脮脰脳脴脵脷脹脺脻脼脽脿谩芒茫盲氓忙莽猫茅锚毛矛铆卯茂冒帽貌贸么玫枚梅酶霉煤没眉媒镁每美昧寐妹媚门闷们萌蒙檬盟锰猛梦孟眯醚靡糜迷谜弥米秘觅泌蜜密幂棉眠绵冕免勉娩缅面苗描瞄藐秒渺庙妙蔑灭民抿皿敏悯闽明螟鸣铭名命谬摸�\".split(\"\");\nfor(j = 0; j != D[195].length; ++j) if(D[195][j].charCodeAt(0) !== 0xFFFD) { e[D[195][j]] = 49920 + j; d[49920 + j] = D[195][j];}\nD[196] = \"����������������������������������������������������������������腀腁腂腃腄腅腇腉腍腎腏腒腖腗腘腛腜腝腞腟腡腢腣腤腦腨腪腫腬腯腲腳腵腶腷腸膁膃膄膅膆膇膉膋膌膍膎膐膒膓膔膕膖膗膙膚膞膟膠膡膢膤膥�膧膩膫膬膭膮膯膰膱膲膴膵膶膷膸膹膼膽膾膿臄臅臇臈臉臋臍臎臏臐臑臒臓摹蘑模膜磨摩魔抹末莫墨默沫漠寞陌谋牟某拇牡亩姆母墓暮幕募慕木目睦牧穆拿哪呐钠那娜纳氖乃奶耐奈南男难囊挠脑恼闹淖呢馁内嫩能妮霓倪泥尼拟你匿腻逆溺蔫拈年碾撵捻念娘酿鸟尿捏聂孽啮镊镍涅您柠狞凝宁�\".split(\"\");\nfor(j = 0; j != D[196].length; ++j) if(D[196][j].charCodeAt(0) !== 0xFFFD) { e[D[196][j]] = 50176 + j; d[50176 + j] = D[196][j];}\nD[197] = \"����������������������������������������������������������������臔臕臖臗臘臙臚臛臜臝臞臟臠臡臢臤臥臦臨臩臫臮臯臰臱臲臵臶臷臸臹臺臽臿舃與興舉舊舋舎舏舑舓舕舖舗舘舙舚舝舠舤舥舦舧舩舮舲舺舼舽舿�艀艁艂艃艅艆艈艊艌艍艎艐艑艒艓艔艕艖艗艙艛艜艝艞艠艡艢艣艤艥艦艧艩拧泞牛扭钮纽脓浓农弄奴努怒女暖虐疟挪懦糯诺哦欧鸥殴藕呕偶沤啪趴爬帕怕琶拍排牌徘湃派攀潘盘磐盼畔判叛乓庞旁耪胖抛咆刨炮袍跑泡呸胚培裴赔陪配佩沛喷盆砰抨烹澎彭蓬棚硼篷膨朋鹏捧碰坯砒霹批披劈琵毗�\".split(\"\");\nfor(j = 0; j != D[197].length; ++j) if(D[197][j].charCodeAt(0) !== 0xFFFD) { e[D[197][j]] = 50432 + j; d[50432 + j] = D[197][j];}\nD[198] = \"����������������������������������������������������������������艪艫艬艭艱艵艶艷艸艻艼芀芁芃芅芆芇芉芌芐芓芔芕芖芚芛芞芠芢芣芧芲芵芶芺芻芼芿苀苂苃苅苆苉苐苖苙苚苝苢苧苨苩苪苬苭苮苰苲苳苵苶苸�苺苼苽苾苿茀茊茋茍茐茒茓茖茘茙茝茞茟茠茡茢茣茤茥茦茩茪茮茰茲茷茻茽啤脾疲皮匹痞僻屁譬篇偏片骗飘漂瓢票撇瞥拼频贫品聘乒坪苹萍平凭瓶评屏坡泼颇婆破魄迫粕剖扑铺仆莆葡菩蒲埔朴圃普浦谱曝瀑期欺栖戚妻七凄漆柒沏其棋奇歧畦崎脐齐旗祈祁骑起岂乞企启契砌器气迄弃汽泣讫掐�\".split(\"\");\nfor(j = 0; j != D[198].length; ++j) if(D[198][j].charCodeAt(0) !== 0xFFFD) { e[D[198][j]] = 50688 + j; d[50688 + j] = D[198][j];}\nD[199] = \"����������������������������������������������������������������茾茿荁荂荄荅荈荊荋荌荍荎荓荕荖荗荘荙荝荢荰荱荲荳荴荵荶荹荺荾荿莀莁莂莃莄莇莈莊莋莌莍莏莐莑莔莕莖莗莙莚莝莟莡莢莣莤莥莦莧莬莭莮�莯莵莻莾莿菂菃菄菆菈菉菋菍菎菐菑菒菓菕菗菙菚菛菞菢菣菤菦菧菨菫菬菭恰洽牵扦钎铅千迁签仟谦乾黔钱钳前潜遣浅谴堑嵌欠歉枪呛腔羌墙蔷强抢橇锹敲悄桥瞧乔侨巧鞘撬翘峭俏窍切茄且怯窃钦侵亲秦琴勤芹擒禽寝沁青轻氢倾卿清擎晴氰情顷请庆琼穷秋丘邱球求囚酋泅趋区蛆曲躯屈驱渠�\".split(\"\");\nfor(j = 0; j != D[199].length; ++j) if(D[199][j].charCodeAt(0) !== 0xFFFD) { e[D[199][j]] = 50944 + j; d[50944 + j] = D[199][j];}\nD[200] = \"����������������������������������������������������������������菮華菳菴菵菶菷菺菻菼菾菿萀萂萅萇萈萉萊萐萒萓萔萕萖萗萙萚萛萞萟萠萡萢萣萩萪萫萬萭萮萯萰萲萳萴萵萶萷萹萺萻萾萿葀葁葂葃葄葅葇葈葉�葊葋葌葍葎葏葐葒葓葔葕葖葘葝葞葟葠葢葤葥葦葧葨葪葮葯葰葲葴葷葹葻葼取娶龋趣去圈颧权醛泉全痊拳犬券劝缺炔瘸却鹊榷确雀裙群然燃冉染瓤壤攘嚷让饶扰绕惹热壬仁人忍韧任认刃妊纫扔仍日戎茸蓉荣融熔溶容绒冗揉柔肉茹蠕儒孺如辱乳汝入褥软阮蕊瑞锐闰润若弱撒洒萨腮鳃塞赛三叁�\".split(\"\");\nfor(j = 0; j != D[200].length; ++j) if(D[200][j].charCodeAt(0) !== 0xFFFD) { e[D[200][j]] = 51200 + j; d[51200 + j] = D[200][j];}\nD[201] = \"����������������������������������������������������������������葽葾葿蒀蒁蒃蒄蒅蒆蒊蒍蒏蒐蒑蒒蒓蒔蒕蒖蒘蒚蒛蒝蒞蒟蒠蒢蒣蒤蒥蒦蒧蒨蒩蒪蒫蒬蒭蒮蒰蒱蒳蒵蒶蒷蒻蒼蒾蓀蓂蓃蓅蓆蓇蓈蓋蓌蓎蓏蓒蓔蓕蓗�蓘蓙蓚蓛蓜蓞蓡蓢蓤蓧蓨蓩蓪蓫蓭蓮蓯蓱蓲蓳蓴蓵蓶蓷蓸蓹蓺蓻蓽蓾蔀蔁蔂伞散桑嗓丧搔骚扫嫂瑟色涩森僧莎砂杀刹沙纱傻啥煞筛晒珊苫杉山删煽衫闪陕擅赡膳善汕扇缮墒伤商赏晌上尚裳梢捎稍烧芍勺韶少哨邵绍奢赊蛇舌舍赦摄射慑涉社设砷申呻伸身深娠绅神沈审婶甚肾慎渗声生甥牲升绳�\".split(\"\");\nfor(j = 0; j != D[201].length; ++j) if(D[201][j].charCodeAt(0) !== 0xFFFD) { e[D[201][j]] = 51456 + j; d[51456 + j] = D[201][j];}\nD[202] = \"����������������������������������������������������������������蔃蔄蔅蔆蔇蔈蔉蔊蔋蔍蔎蔏蔐蔒蔔蔕蔖蔘蔙蔛蔜蔝蔞蔠蔢蔣蔤蔥蔦蔧蔨蔩蔪蔭蔮蔯蔰蔱蔲蔳蔴蔵蔶蔾蔿蕀蕁蕂蕄蕅蕆蕇蕋蕌蕍蕎蕏蕐蕑蕒蕓蕔蕕�蕗蕘蕚蕛蕜蕝蕟蕠蕡蕢蕣蕥蕦蕧蕩蕪蕫蕬蕭蕮蕯蕰蕱蕳蕵蕶蕷蕸蕼蕽蕿薀薁省盛剩胜圣师失狮施湿诗尸虱十石拾时什食蚀实识史矢使屎驶始式示士世柿事拭誓逝势是嗜噬适仕侍释饰氏市恃室视试收手首守寿授售受瘦兽蔬枢梳殊抒输叔舒淑疏书赎孰熟薯暑曙署蜀黍鼠属术述树束戍竖墅庶数漱�\".split(\"\");\nfor(j = 0; j != D[202].length; ++j) if(D[202][j].charCodeAt(0) !== 0xFFFD) { e[D[202][j]] = 51712 + j; d[51712 + j] = D[202][j];}\nD[203] = \"����������������������������������������������������������������薂薃薆薈薉薊薋薌薍薎薐薑薒薓薔薕薖薗薘薙薚薝薞薟薠薡薢薣薥薦薧薩薫薬薭薱薲薳薴薵薶薸薺薻薼薽薾薿藀藂藃藄藅藆藇藈藊藋藌藍藎藑藒�藔藖藗藘藙藚藛藝藞藟藠藡藢藣藥藦藧藨藪藫藬藭藮藯藰藱藲藳藴藵藶藷藸恕刷耍摔衰甩帅栓拴霜双爽谁水睡税吮瞬顺舜说硕朔烁斯撕嘶思私司丝死肆寺嗣四伺似饲巳松耸怂颂送宋讼诵搜艘擞嗽苏酥俗素速粟僳塑溯宿诉肃酸蒜算虽隋随绥髓碎岁穗遂隧祟孙损笋蓑梭唆缩琐索锁所塌他它她塔�\".split(\"\");\nfor(j = 0; j != D[203].length; ++j) if(D[203][j].charCodeAt(0) !== 0xFFFD) { e[D[203][j]] = 51968 + j; d[51968 + j] = D[203][j];}\nD[204] = \"����������������������������������������������������������������藹藺藼藽藾蘀蘁蘂蘃蘄蘆蘇蘈蘉蘊蘋蘌蘍蘎蘏蘐蘒蘓蘔蘕蘗蘘蘙蘚蘛蘜蘝蘞蘟蘠蘡蘢蘣蘤蘥蘦蘨蘪蘫蘬蘭蘮蘯蘰蘱蘲蘳蘴蘵蘶蘷蘹蘺蘻蘽蘾蘿虀�虁虂虃虄虅虆虇虈虉虊虋虌虒虓處虖虗虘虙虛虜虝號虠虡虣虤虥虦虧虨虩虪獭挞蹋踏胎苔抬台泰酞太态汰坍摊贪瘫滩坛檀痰潭谭谈坦毯袒碳探叹炭汤塘搪堂棠膛唐糖倘躺淌趟烫掏涛滔绦萄桃逃淘陶讨套特藤腾疼誊梯剔踢锑提题蹄啼体替嚏惕涕剃屉天添填田甜恬舔腆挑条迢眺跳贴铁帖厅听烃�\".split(\"\");\nfor(j = 0; j != D[204].length; ++j) if(D[204][j].charCodeAt(0) !== 0xFFFD) { e[D[204][j]] = 52224 + j; d[52224 + j] = D[204][j];}\nD[205] = \"����������������������������������������������������������������虭虯虰虲虳虴虵虶虷虸蚃蚄蚅蚆蚇蚈蚉蚎蚏蚐蚑蚒蚔蚖蚗蚘蚙蚚蚛蚞蚟蚠蚡蚢蚥蚦蚫蚭蚮蚲蚳蚷蚸蚹蚻蚼蚽蚾蚿蛁蛂蛃蛅蛈蛌蛍蛒蛓蛕蛖蛗蛚蛜�蛝蛠蛡蛢蛣蛥蛦蛧蛨蛪蛫蛬蛯蛵蛶蛷蛺蛻蛼蛽蛿蜁蜄蜅蜆蜋蜌蜎蜏蜐蜑蜔蜖汀廷停亭庭挺艇通桐酮瞳同铜彤童桶捅筒统痛偷投头透凸秃突图徒途涂屠土吐兔湍团推颓腿蜕褪退吞屯臀拖托脱鸵陀驮驼椭妥拓唾挖哇蛙洼娃瓦袜歪外豌弯湾玩顽丸烷完碗挽晚皖惋宛婉万腕汪王亡枉网往旺望忘妄威�\".split(\"\");\nfor(j = 0; j != D[205].length; ++j) if(D[205][j].charCodeAt(0) !== 0xFFFD) { e[D[205][j]] = 52480 + j; d[52480 + j] = D[205][j];}\nD[206] = \"����������������������������������������������������������������蜙蜛蜝蜟蜠蜤蜦蜧蜨蜪蜫蜬蜭蜯蜰蜲蜳蜵蜶蜸蜹蜺蜼蜽蝀蝁蝂蝃蝄蝅蝆蝊蝋蝍蝏蝐蝑蝒蝔蝕蝖蝘蝚蝛蝜蝝蝞蝟蝡蝢蝦蝧蝨蝩蝪蝫蝬蝭蝯蝱蝲蝳蝵�蝷蝸蝹蝺蝿螀螁螄螆螇螉螊螌螎螏螐螑螒螔螕螖螘螙螚螛螜螝螞螠螡螢螣螤巍微危韦违桅围唯惟为潍维苇萎委伟伪尾纬未蔚味畏胃喂魏位渭谓尉慰卫瘟温蚊文闻纹吻稳紊问嗡翁瓮挝蜗涡窝我斡卧握沃巫呜钨乌污诬屋无芜梧吾吴毋武五捂午舞伍侮坞戊雾晤物勿务悟误昔熙析西硒矽晰嘻吸锡牺�\".split(\"\");\nfor(j = 0; j != D[206].length; ++j) if(D[206][j].charCodeAt(0) !== 0xFFFD) { e[D[206][j]] = 52736 + j; d[52736 + j] = D[206][j];}\nD[207] = \"����������������������������������������������������������������螥螦螧螩螪螮螰螱螲螴螶螷螸螹螻螼螾螿蟁蟂蟃蟄蟅蟇蟈蟉蟌蟍蟎蟏蟐蟔蟕蟖蟗蟘蟙蟚蟜蟝蟞蟟蟡蟢蟣蟤蟦蟧蟨蟩蟫蟬蟭蟯蟰蟱蟲蟳蟴蟵蟶蟷蟸�蟺蟻蟼蟽蟿蠀蠁蠂蠄蠅蠆蠇蠈蠉蠋蠌蠍蠎蠏蠐蠑蠒蠔蠗蠘蠙蠚蠜蠝蠞蠟蠠蠣稀息希悉膝夕惜熄烯溪汐犀檄袭席习媳喜铣洗系隙戏细瞎虾匣霞辖暇峡侠狭下厦夏吓掀锨先仙鲜纤咸贤衔舷闲涎弦嫌显险现献县腺馅羡宪陷限线相厢镶香箱襄湘乡翔祥详想响享项巷橡像向象萧硝霄削哮嚣销消宵淆晓�\".split(\"\");\nfor(j = 0; j != D[207].length; ++j) if(D[207][j].charCodeAt(0) !== 0xFFFD) { e[D[207][j]] = 52992 + j; d[52992 + j] = D[207][j];}\nD[208] = \"����������������������������������������������������������������蠤蠥蠦蠧蠨蠩蠪蠫蠬蠭蠮蠯蠰蠱蠳蠴蠵蠶蠷蠸蠺蠻蠽蠾蠿衁衂衃衆衇衈衉衊衋衎衏衐衑衒術衕衖衘衚衛衜衝衞衟衠衦衧衪衭衯衱衳衴衵衶衸衹衺�衻衼袀袃袆袇袉袊袌袎袏袐袑袓袔袕袗袘袙袚袛袝袞袟袠袡袣袥袦袧袨袩袪小孝校肖啸笑效楔些歇蝎鞋协挟携邪斜胁谐写械卸蟹懈泄泻谢屑薪芯锌欣辛新忻心信衅星腥猩惺兴刑型形邢行醒幸杏性姓兄凶胸匈汹雄熊休修羞朽嗅锈秀袖绣墟戌需虚嘘须徐许蓄酗叙旭序畜恤絮婿绪续轩喧宣悬旋玄�\".split(\"\");\nfor(j = 0; j != D[208].length; ++j) if(D[208][j].charCodeAt(0) !== 0xFFFD) { e[D[208][j]] = 53248 + j; d[53248 + j] = D[208][j];}\nD[209] = \"����������������������������������������������������������������袬袮袯袰袲袳袴袵袶袸袹袺袻袽袾袿裀裃裄裇裈裊裋裌裍裏裐裑裓裖裗裚裛補裝裞裠裡裦裧裩裪裫裬裭裮裯裲裵裶裷裺裻製裿褀褁褃褄褅褆複褈�褉褋褌褍褎褏褑褔褕褖褗褘褜褝褞褟褠褢褣褤褦褧褨褩褬褭褮褯褱褲褳褵褷选癣眩绚靴薛学穴雪血勋熏循旬询寻驯巡殉汛训讯逊迅压押鸦鸭呀丫芽牙蚜崖衙涯雅哑亚讶焉咽阉烟淹盐严研蜒岩延言颜阎炎沿奄掩眼衍演艳堰燕厌砚雁唁彦焰宴谚验殃央鸯秧杨扬佯疡羊洋阳氧仰痒养样漾邀腰妖瑶�\".split(\"\");\nfor(j = 0; j != D[209].length; ++j) if(D[209][j].charCodeAt(0) !== 0xFFFD) { e[D[209][j]] = 53504 + j; d[53504 + j] = D[209][j];}\nD[210] = \"����������������������������������������������������������������褸褹褺褻褼褽褾褿襀襂襃襅襆襇襈襉襊襋襌襍襎襏襐襑襒襓襔襕襖襗襘襙襚襛襜襝襠襡襢襣襤襥襧襨襩襪襫襬襭襮襯襰襱襲襳襴襵襶襷襸襹襺襼�襽襾覀覂覄覅覇覈覉覊見覌覍覎規覐覑覒覓覔覕視覗覘覙覚覛覜覝覞覟覠覡摇尧遥窑谣姚咬舀药要耀椰噎耶爷野冶也页掖业叶曳腋夜液一壹医揖铱依伊衣颐夷遗移仪胰疑沂宜姨彝椅蚁倚已乙矣以艺抑易邑屹亿役臆逸肄疫亦裔意毅忆义益溢诣议谊译异翼翌绎茵荫因殷音阴姻吟银淫寅饮尹引隐�\".split(\"\");\nfor(j = 0; j != D[210].length; ++j) if(D[210][j].charCodeAt(0) !== 0xFFFD) { e[D[210][j]] = 53760 + j; d[53760 + j] = D[210][j];}\nD[211] = \"����������������������������������������������������������������覢覣覤覥覦覧覨覩親覫覬覭覮覯覰覱覲観覴覵覶覷覸覹覺覻覼覽覾覿觀觃觍觓觔觕觗觘觙觛觝觟觠觡觢觤觧觨觩觪觬觭觮觰觱觲觴觵觶觷觸觹觺�觻觼觽觾觿訁訂訃訄訅訆計訉訊訋訌訍討訏訐訑訒訓訔訕訖託記訙訚訛訜訝印英樱婴鹰应缨莹萤营荧蝇迎赢盈影颖硬映哟拥佣臃痈庸雍踊蛹咏泳涌永恿勇用幽优悠忧尤由邮铀犹油游酉有友右佑釉诱又幼迂淤于盂榆虞愚舆余俞逾鱼愉渝渔隅予娱雨与屿禹宇语羽玉域芋郁吁遇喻峪御愈欲狱育誉�\".split(\"\");\nfor(j = 0; j != D[211].length; ++j) if(D[211][j].charCodeAt(0) !== 0xFFFD) { e[D[211][j]] = 54016 + j; d[54016 + j] = D[211][j];}\nD[212] = \"����������������������������������������������������������������訞訟訠訡訢訣訤訥訦訧訨訩訪訫訬設訮訯訰許訲訳訴訵訶訷訸訹診註証訽訿詀詁詂詃詄詅詆詇詉詊詋詌詍詎詏詐詑詒詓詔評詖詗詘詙詚詛詜詝詞�詟詠詡詢詣詤詥試詧詨詩詪詫詬詭詮詯詰話該詳詴詵詶詷詸詺詻詼詽詾詿誀浴寓裕预豫驭鸳渊冤元垣袁原援辕园员圆猿源缘远苑愿怨院曰约越跃钥岳粤月悦阅耘云郧匀陨允运蕴酝晕韵孕匝砸杂栽哉灾宰载再在咱攒暂赞赃脏葬遭糟凿藻枣早澡蚤躁噪造皂灶燥责择则泽贼怎增憎曾赠扎喳渣札轧�\".split(\"\");\nfor(j = 0; j != D[212].length; ++j) if(D[212][j].charCodeAt(0) !== 0xFFFD) { e[D[212][j]] = 54272 + j; d[54272 + j] = D[212][j];}\nD[213] = \"����������������������������������������������������������������誁誂誃誄誅誆誇誈誋誌認誎誏誐誑誒誔誕誖誗誘誙誚誛誜誝語誟誠誡誢誣誤誥誦誧誨誩說誫説読誮誯誰誱課誳誴誵誶誷誸誹誺誻誼誽誾調諀諁諂�諃諄諅諆談諈諉諊請諌諍諎諏諐諑諒諓諔諕論諗諘諙諚諛諜諝諞諟諠諡諢諣铡闸眨栅榨咋乍炸诈摘斋宅窄债寨瞻毡詹粘沾盏斩辗崭展蘸栈占战站湛绽樟章彰漳张掌涨杖丈帐账仗胀瘴障招昭找沼赵照罩兆肇召遮折哲蛰辙者锗蔗这浙珍斟真甄砧臻贞针侦枕疹诊震振镇阵蒸挣睁征狰争怔整拯正政�\".split(\"\");\nfor(j = 0; j != D[213].length; ++j) if(D[213][j].charCodeAt(0) !== 0xFFFD) { e[D[213][j]] = 54528 + j; d[54528 + j] = D[213][j];}\nD[214] = \"����������������������������������������������������������������諤諥諦諧諨諩諪諫諬諭諮諯諰諱諲諳諴諵諶諷諸諹諺諻諼諽諾諿謀謁謂謃謄謅謆謈謉謊謋謌謍謎謏謐謑謒謓謔謕謖謗謘謙謚講謜謝謞謟謠謡謢謣�謤謥謧謨謩謪謫謬謭謮謯謰謱謲謳謴謵謶謷謸謹謺謻謼謽謾謿譀譁譂譃譄譅帧症郑证芝枝支吱蜘知肢脂汁之织职直植殖执值侄址指止趾只旨纸志挚掷至致置帜峙制智秩稚质炙痔滞治窒中盅忠钟衷终种肿重仲众舟周州洲诌粥轴肘帚咒皱宙昼骤珠株蛛朱猪诸诛逐竹烛煮拄瞩嘱主著柱助蛀贮铸筑�\".split(\"\");\nfor(j = 0; j != D[214].length; ++j) if(D[214][j].charCodeAt(0) !== 0xFFFD) { e[D[214][j]] = 54784 + j; d[54784 + j] = D[214][j];}\nD[215] = \"����������������������������������������������������������������譆譇譈證譊譋譌譍譎譏譐譑譒譓譔譕譖譗識譙譚譛譜譝譞譟譠譡譢譣譤譥譧譨譩譪譫譭譮譯議譱譲譳譴譵譶護譸譹譺譻譼譽譾譿讀讁讂讃讄讅讆�讇讈讉變讋讌讍讎讏讐讑讒讓讔讕讖讗讘讙讚讛讜讝讞讟讬讱讻诇诐诪谉谞住注祝驻抓爪拽专砖转撰赚篆桩庄装妆撞壮状椎锥追赘坠缀谆准捉拙卓桌琢茁酌啄着灼浊兹咨资姿滋淄孜紫仔籽滓子自渍字鬃棕踪宗综总纵邹走奏揍租足卒族祖诅阻组钻纂嘴醉最罪尊遵昨左佐柞做作坐座������\".split(\"\");\nfor(j = 0; j != D[215].length; ++j) if(D[215][j].charCodeAt(0) !== 0xFFFD) { e[D[215][j]] = 55040 + j; d[55040 + j] = D[215][j];}\nD[216] = \"����������������������������������������������������������������谸谹谺谻谼谽谾谿豀豂豃豄豅豈豊豋豍豎豏豐豑豒豓豔豖豗豘豙豛豜豝豞豟豠豣豤豥豦豧豨豩豬豭豮豯豰豱豲豴豵豶豷豻豼豽豾豿貀貁貃貄貆貇�貈貋貍貎貏貐貑貒貓貕貖貗貙貚貛貜貝貞貟負財貢貣貤貥貦貧貨販貪貫責貭亍丌兀丐廿卅丕亘丞鬲孬噩丨禺丿匕乇夭爻卮氐囟胤馗毓睾鼗丶亟鼐乜乩亓芈孛啬嘏仄厍厝厣厥厮靥赝匚叵匦匮匾赜卦卣刂刈刎刭刳刿剀剌剞剡剜蒯剽劂劁劐劓冂罔亻仃仉仂仨仡仫仞伛仳伢佤仵伥伧伉伫佞佧攸佚佝�\".split(\"\");\nfor(j = 0; j != D[216].length; ++j) if(D[216][j].charCodeAt(0) !== 0xFFFD) { e[D[216][j]] = 55296 + j; d[55296 + j] = D[216][j];}\nD[217] = \"����������������������������������������������������������������貮貯貰貱貲貳貴貵貶買貸貹貺費貼貽貾貿賀賁賂賃賄賅賆資賈賉賊賋賌賍賎賏賐賑賒賓賔賕賖賗賘賙賚賛賜賝賞賟賠賡賢賣賤賥賦賧賨賩質賫賬�賭賮賯賰賱賲賳賴賵賶賷賸賹賺賻購賽賾賿贀贁贂贃贄贅贆贇贈贉贊贋贌贍佟佗伲伽佶佴侑侉侃侏佾佻侪佼侬侔俦俨俪俅俚俣俜俑俟俸倩偌俳倬倏倮倭俾倜倌倥倨偾偃偕偈偎偬偻傥傧傩傺僖儆僭僬僦僮儇儋仝氽佘佥俎龠汆籴兮巽黉馘冁夔勹匍訇匐凫夙兕亠兖亳衮袤亵脔裒禀嬴蠃羸冫冱冽冼�\".split(\"\");\nfor(j = 0; j != D[217].length; ++j) if(D[217][j].charCodeAt(0) !== 0xFFFD) { e[D[217][j]] = 55552 + j; d[55552 + j] = D[217][j];}\nD[218] = \"����������������������������������������������������������������贎贏贐贑贒贓贔贕贖贗贘贙贚贛贜贠赑赒赗赟赥赨赩赪赬赮赯赱赲赸赹赺赻赼赽赾赿趀趂趃趆趇趈趉趌趍趎趏趐趒趓趕趖趗趘趙趚趛趜趝趞趠趡�趢趤趥趦趧趨趩趪趫趬趭趮趯趰趲趶趷趹趻趽跀跁跂跅跇跈跉跊跍跐跒跓跔凇冖冢冥讠讦讧讪讴讵讷诂诃诋诏诎诒诓诔诖诘诙诜诟诠诤诨诩诮诰诳诶诹诼诿谀谂谄谇谌谏谑谒谔谕谖谙谛谘谝谟谠谡谥谧谪谫谮谯谲谳谵谶卩卺阝阢阡阱阪阽阼陂陉陔陟陧陬陲陴隈隍隗隰邗邛邝邙邬邡邴邳邶邺�\".split(\"\");\nfor(j = 0; j != D[218].length; ++j) if(D[218][j].charCodeAt(0) !== 0xFFFD) { e[D[218][j]] = 55808 + j; d[55808 + j] = D[218][j];}\nD[219] = \"����������������������������������������������������������������跕跘跙跜跠跡跢跥跦跧跩跭跮跰跱跲跴跶跼跾跿踀踁踂踃踄踆踇踈踋踍踎踐踑踒踓踕踖踗踘踙踚踛踜踠踡踤踥踦踧踨踫踭踰踲踳踴踶踷踸踻踼踾�踿蹃蹅蹆蹌蹍蹎蹏蹐蹓蹔蹕蹖蹗蹘蹚蹛蹜蹝蹞蹟蹠蹡蹢蹣蹤蹥蹧蹨蹪蹫蹮蹱邸邰郏郅邾郐郄郇郓郦郢郜郗郛郫郯郾鄄鄢鄞鄣鄱鄯鄹酃酆刍奂劢劬劭劾哿勐勖勰叟燮矍廴凵凼鬯厶弁畚巯坌垩垡塾墼壅壑圩圬圪圳圹圮圯坜圻坂坩垅坫垆坼坻坨坭坶坳垭垤垌垲埏垧垴垓垠埕埘埚埙埒垸埴埯埸埤埝�\".split(\"\");\nfor(j = 0; j != D[219].length; ++j) if(D[219][j].charCodeAt(0) !== 0xFFFD) { e[D[219][j]] = 56064 + j; d[56064 + j] = D[219][j];}\nD[220] = \"����������������������������������������������������������������蹳蹵蹷蹸蹹蹺蹻蹽蹾躀躂躃躄躆躈躉躊躋躌躍躎躑躒躓躕躖躗躘躙躚躛躝躟躠躡躢躣躤躥躦躧躨躩躪躭躮躰躱躳躴躵躶躷躸躹躻躼躽躾躿軀軁軂�軃軄軅軆軇軈軉車軋軌軍軏軐軑軒軓軔軕軖軗軘軙軚軛軜軝軞軟軠軡転軣軤堋堍埽埭堀堞堙塄堠塥塬墁墉墚墀馨鼙懿艹艽艿芏芊芨芄芎芑芗芙芫芸芾芰苈苊苣芘芷芮苋苌苁芩芴芡芪芟苄苎芤苡茉苷苤茏茇苜苴苒苘茌苻苓茑茚茆茔茕苠苕茜荑荛荜茈莒茼茴茱莛荞茯荏荇荃荟荀茗荠茭茺茳荦荥�\".split(\"\");\nfor(j = 0; j != D[220].length; ++j) if(D[220][j].charCodeAt(0) !== 0xFFFD) { e[D[220][j]] = 56320 + j; d[56320 + j] = D[220][j];}\nD[221] = \"����������������������������������������������������������������軥軦軧軨軩軪軫軬軭軮軯軰軱軲軳軴軵軶軷軸軹軺軻軼軽軾軿輀輁輂較輄輅輆輇輈載輊輋輌輍輎輏輐輑輒輓輔輕輖輗輘輙輚輛輜輝輞輟輠輡輢輣�輤輥輦輧輨輩輪輫輬輭輮輯輰輱輲輳輴輵輶輷輸輹輺輻輼輽輾輿轀轁轂轃轄荨茛荩荬荪荭荮莰荸莳莴莠莪莓莜莅荼莶莩荽莸荻莘莞莨莺莼菁萁菥菘堇萘萋菝菽菖萜萸萑萆菔菟萏萃菸菹菪菅菀萦菰菡葜葑葚葙葳蒇蒈葺蒉葸萼葆葩葶蒌蒎萱葭蓁蓍蓐蓦蒽蓓蓊蒿蒺蓠蒡蒹蒴蒗蓥蓣蔌甍蔸蓰蔹蔟蔺�\".split(\"\");\nfor(j = 0; j != D[221].length; ++j) if(D[221][j].charCodeAt(0) !== 0xFFFD) { e[D[221][j]] = 56576 + j; d[56576 + j] = D[221][j];}\nD[222] = \"����������������������������������������������������������������轅轆轇轈轉轊轋轌轍轎轏轐轑轒轓轔轕轖轗轘轙轚轛轜轝轞轟轠轡轢轣轤轥轪辀辌辒辝辠辡辢辤辥辦辧辪辬辭辮辯農辳辴辵辷辸辺辻込辿迀迃迆�迉迊迋迌迍迏迒迖迗迚迠迡迣迧迬迯迱迲迴迵迶迺迻迼迾迿逇逈逌逎逓逕逘蕖蔻蓿蓼蕙蕈蕨蕤蕞蕺瞢蕃蕲蕻薤薨薇薏蕹薮薜薅薹薷薰藓藁藜藿蘧蘅蘩蘖蘼廾弈夼奁耷奕奚奘匏尢尥尬尴扌扪抟抻拊拚拗拮挢拶挹捋捃掭揶捱捺掎掴捭掬掊捩掮掼揲揸揠揿揄揞揎摒揆掾摅摁搋搛搠搌搦搡摞撄摭撖�\".split(\"\");\nfor(j = 0; j != D[222].length; ++j) if(D[222][j].charCodeAt(0) !== 0xFFFD) { e[D[222][j]] = 56832 + j; d[56832 + j] = D[222][j];}\nD[223] = \"����������������������������������������������������������������這逜連逤逥逧逨逩逪逫逬逰週進逳逴逷逹逺逽逿遀遃遅遆遈遉遊運遌過達違遖遙遚遜遝遞遟遠遡遤遦遧適遪遫遬遯遰遱遲遳遶遷選遹遺遻遼遾邁�還邅邆邇邉邊邌邍邎邏邐邒邔邖邘邚邜邞邟邠邤邥邧邨邩邫邭邲邷邼邽邿郀摺撷撸撙撺擀擐擗擤擢攉攥攮弋忒甙弑卟叱叽叩叨叻吒吖吆呋呒呓呔呖呃吡呗呙吣吲咂咔呷呱呤咚咛咄呶呦咝哐咭哂咴哒咧咦哓哔呲咣哕咻咿哌哙哚哜咩咪咤哝哏哞唛哧唠哽唔哳唢唣唏唑唧唪啧喏喵啉啭啁啕唿啐唼�\".split(\"\");\nfor(j = 0; j != D[223].length; ++j) if(D[223][j].charCodeAt(0) !== 0xFFFD) { e[D[223][j]] = 57088 + j; d[57088 + j] = D[223][j];}\nD[224] = \"����������������������������������������������������������������郂郃郆郈郉郋郌郍郒郔郕郖郘郙郚郞郟郠郣郤郥郩郪郬郮郰郱郲郳郵郶郷郹郺郻郼郿鄀鄁鄃鄅鄆鄇鄈鄉鄊鄋鄌鄍鄎鄏鄐鄑鄒鄓鄔鄕鄖鄗鄘鄚鄛鄜�鄝鄟鄠鄡鄤鄥鄦鄧鄨鄩鄪鄫鄬鄭鄮鄰鄲鄳鄴鄵鄶鄷鄸鄺鄻鄼鄽鄾鄿酀酁酂酄唷啖啵啶啷唳唰啜喋嗒喃喱喹喈喁喟啾嗖喑啻嗟喽喾喔喙嗪嗷嗉嘟嗑嗫嗬嗔嗦嗝嗄嗯嗥嗲嗳嗌嗍嗨嗵嗤辔嘞嘈嘌嘁嘤嘣嗾嘀嘧嘭噘嘹噗嘬噍噢噙噜噌噔嚆噤噱噫噻噼嚅嚓嚯囔囗囝囡囵囫囹囿圄圊圉圜帏帙帔帑帱帻帼�\".split(\"\");\nfor(j = 0; j != D[224].length; ++j) if(D[224][j].charCodeAt(0) !== 0xFFFD) { e[D[224][j]] = 57344 + j; d[57344 + j] = D[224][j];}\nD[225] = \"����������������������������������������������������������������酅酇酈酑酓酔酕酖酘酙酛酜酟酠酦酧酨酫酭酳酺酻酼醀醁醂醃醄醆醈醊醎醏醓醔醕醖醗醘醙醜醝醞醟醠醡醤醥醦醧醨醩醫醬醰醱醲醳醶醷醸醹醻�醼醽醾醿釀釁釂釃釄釅釆釈釋釐釒釓釔釕釖釗釘釙釚釛針釞釟釠釡釢釣釤釥帷幄幔幛幞幡岌屺岍岐岖岈岘岙岑岚岜岵岢岽岬岫岱岣峁岷峄峒峤峋峥崂崃崧崦崮崤崞崆崛嵘崾崴崽嵬嵛嵯嵝嵫嵋嵊嵩嵴嶂嶙嶝豳嶷巅彳彷徂徇徉後徕徙徜徨徭徵徼衢彡犭犰犴犷犸狃狁狎狍狒狨狯狩狲狴狷猁狳猃狺�\".split(\"\");\nfor(j = 0; j != D[225].length; ++j) if(D[225][j].charCodeAt(0) !== 0xFFFD) { e[D[225][j]] = 57600 + j; d[57600 + j] = D[225][j];}\nD[226] = \"����������������������������������������������������������������釦釧釨釩釪釫釬釭釮釯釰釱釲釳釴釵釶釷釸釹釺釻釼釽釾釿鈀鈁鈂鈃鈄鈅鈆鈇鈈鈉鈊鈋鈌鈍鈎鈏鈐鈑鈒鈓鈔鈕鈖鈗鈘鈙鈚鈛鈜鈝鈞鈟鈠鈡鈢鈣鈤�鈥鈦鈧鈨鈩鈪鈫鈬鈭鈮鈯鈰鈱鈲鈳鈴鈵鈶鈷鈸鈹鈺鈻鈼鈽鈾鈿鉀鉁鉂鉃鉄鉅狻猗猓猡猊猞猝猕猢猹猥猬猸猱獐獍獗獠獬獯獾舛夥飧夤夂饣饧饨饩饪饫饬饴饷饽馀馄馇馊馍馐馑馓馔馕庀庑庋庖庥庠庹庵庾庳赓廒廑廛廨廪膺忄忉忖忏怃忮怄忡忤忾怅怆忪忭忸怙怵怦怛怏怍怩怫怊怿怡恸恹恻恺恂�\".split(\"\");\nfor(j = 0; j != D[226].length; ++j) if(D[226][j].charCodeAt(0) !== 0xFFFD) { e[D[226][j]] = 57856 + j; d[57856 + j] = D[226][j];}\nD[227] = \"����������������������������������������������������������������鉆鉇鉈鉉鉊鉋鉌鉍鉎鉏鉐鉑鉒鉓鉔鉕鉖鉗鉘鉙鉚鉛鉜鉝鉞鉟鉠鉡鉢鉣鉤鉥鉦鉧鉨鉩鉪鉫鉬鉭鉮鉯鉰鉱鉲鉳鉵鉶鉷鉸鉹鉺鉻鉼鉽鉾鉿銀銁銂銃銄銅�銆銇銈銉銊銋銌銍銏銐銑銒銓銔銕銖銗銘銙銚銛銜銝銞銟銠銡銢銣銤銥銦銧恪恽悖悚悭悝悃悒悌悛惬悻悱惝惘惆惚悴愠愦愕愣惴愀愎愫慊慵憬憔憧憷懔懵忝隳闩闫闱闳闵闶闼闾阃阄阆阈阊阋阌阍阏阒阕阖阗阙阚丬爿戕氵汔汜汊沣沅沐沔沌汨汩汴汶沆沩泐泔沭泷泸泱泗沲泠泖泺泫泮沱泓泯泾�\".split(\"\");\nfor(j = 0; j != D[227].length; ++j) if(D[227][j].charCodeAt(0) !== 0xFFFD) { e[D[227][j]] = 58112 + j; d[58112 + j] = D[227][j];}\nD[228] = \"����������������������������������������������������������������銨銩銪銫銬銭銯銰銱銲銳銴銵銶銷銸銹銺銻銼銽銾銿鋀鋁鋂鋃鋄鋅鋆鋇鋉鋊鋋鋌鋍鋎鋏鋐鋑鋒鋓鋔鋕鋖鋗鋘鋙鋚鋛鋜鋝鋞鋟鋠鋡鋢鋣鋤鋥鋦鋧鋨�鋩鋪鋫鋬鋭鋮鋯鋰鋱鋲鋳鋴鋵鋶鋷鋸鋹鋺鋻鋼鋽鋾鋿錀錁錂錃錄錅錆錇錈錉洹洧洌浃浈洇洄洙洎洫浍洮洵洚浏浒浔洳涑浯涞涠浞涓涔浜浠浼浣渚淇淅淞渎涿淠渑淦淝淙渖涫渌涮渫湮湎湫溲湟溆湓湔渲渥湄滟溱溘滠漭滢溥溧溽溻溷滗溴滏溏滂溟潢潆潇漤漕滹漯漶潋潴漪漉漩澉澍澌潸潲潼潺濑�\".split(\"\");\nfor(j = 0; j != D[228].length; ++j) if(D[228][j].charCodeAt(0) !== 0xFFFD) { e[D[228][j]] = 58368 + j; d[58368 + j] = D[228][j];}\nD[229] = \"����������������������������������������������������������������錊錋錌錍錎錏錐錑錒錓錔錕錖錗錘錙錚錛錜錝錞錟錠錡錢錣錤錥錦錧錨錩錪錫錬錭錮錯錰錱録錳錴錵錶錷錸錹錺錻錼錽錿鍀鍁鍂鍃鍄鍅鍆鍇鍈鍉�鍊鍋鍌鍍鍎鍏鍐鍑鍒鍓鍔鍕鍖鍗鍘鍙鍚鍛鍜鍝鍞鍟鍠鍡鍢鍣鍤鍥鍦鍧鍨鍩鍫濉澧澹澶濂濡濮濞濠濯瀚瀣瀛瀹瀵灏灞宀宄宕宓宥宸甯骞搴寤寮褰寰蹇謇辶迓迕迥迮迤迩迦迳迨逅逄逋逦逑逍逖逡逵逶逭逯遄遑遒遐遨遘遢遛暹遴遽邂邈邃邋彐彗彖彘尻咫屐屙孱屣屦羼弪弩弭艴弼鬻屮妁妃妍妩妪妣�\".split(\"\");\nfor(j = 0; j != D[229].length; ++j) if(D[229][j].charCodeAt(0) !== 0xFFFD) { e[D[229][j]] = 58624 + j; d[58624 + j] = D[229][j];}\nD[230] = \"����������������������������������������������������������������鍬鍭鍮鍯鍰鍱鍲鍳鍴鍵鍶鍷鍸鍹鍺鍻鍼鍽鍾鍿鎀鎁鎂鎃鎄鎅鎆鎇鎈鎉鎊鎋鎌鎍鎎鎐鎑鎒鎓鎔鎕鎖鎗鎘鎙鎚鎛鎜鎝鎞鎟鎠鎡鎢鎣鎤鎥鎦鎧鎨鎩鎪鎫�鎬鎭鎮鎯鎰鎱鎲鎳鎴鎵鎶鎷鎸鎹鎺鎻鎼鎽鎾鎿鏀鏁鏂鏃鏄鏅鏆鏇鏈鏉鏋鏌鏍妗姊妫妞妤姒妲妯姗妾娅娆姝娈姣姘姹娌娉娲娴娑娣娓婀婧婊婕娼婢婵胬媪媛婷婺媾嫫媲嫒嫔媸嫠嫣嫱嫖嫦嫘嫜嬉嬗嬖嬲嬷孀尕尜孚孥孳孑孓孢驵驷驸驺驿驽骀骁骅骈骊骐骒骓骖骘骛骜骝骟骠骢骣骥骧纟纡纣纥纨纩�\".split(\"\");\nfor(j = 0; j != D[230].length; ++j) if(D[230][j].charCodeAt(0) !== 0xFFFD) { e[D[230][j]] = 58880 + j; d[58880 + j] = D[230][j];}\nD[231] = \"����������������������������������������������������������������鏎鏏鏐鏑鏒鏓鏔鏕鏗鏘鏙鏚鏛鏜鏝鏞鏟鏠鏡鏢鏣鏤鏥鏦鏧鏨鏩鏪鏫鏬鏭鏮鏯鏰鏱鏲鏳鏴鏵鏶鏷鏸鏹鏺鏻鏼鏽鏾鏿鐀鐁鐂鐃鐄鐅鐆鐇鐈鐉鐊鐋鐌鐍�鐎鐏鐐鐑鐒鐓鐔鐕鐖鐗鐘鐙鐚鐛鐜鐝鐞鐟鐠鐡鐢鐣鐤鐥鐦鐧鐨鐩鐪鐫鐬鐭鐮纭纰纾绀绁绂绉绋绌绐绔绗绛绠绡绨绫绮绯绱绲缍绶绺绻绾缁缂缃缇缈缋缌缏缑缒缗缙缜缛缟缡缢缣缤缥缦缧缪缫缬缭缯缰缱缲缳缵幺畿巛甾邕玎玑玮玢玟珏珂珑玷玳珀珉珈珥珙顼琊珩珧珞玺珲琏琪瑛琦琥琨琰琮琬�\".split(\"\");\nfor(j = 0; j != D[231].length; ++j) if(D[231][j].charCodeAt(0) !== 0xFFFD) { e[D[231][j]] = 59136 + j; d[59136 + j] = D[231][j];}\nD[232] = \"����������������������������������������������������������������鐯鐰鐱鐲鐳鐴鐵鐶鐷鐸鐹鐺鐻鐼鐽鐿鑀鑁鑂鑃鑄鑅鑆鑇鑈鑉鑊鑋鑌鑍鑎鑏鑐鑑鑒鑓鑔鑕鑖鑗鑘鑙鑚鑛鑜鑝鑞鑟鑠鑡鑢鑣鑤鑥鑦鑧鑨鑩鑪鑬鑭鑮鑯�鑰鑱鑲鑳鑴鑵鑶鑷鑸鑹鑺鑻鑼鑽鑾鑿钀钁钂钃钄钑钖钘铇铏铓铔铚铦铻锜锠琛琚瑁瑜瑗瑕瑙瑷瑭瑾璜璎璀璁璇璋璞璨璩璐璧瓒璺韪韫韬杌杓杞杈杩枥枇杪杳枘枧杵枨枞枭枋杷杼柰栉柘栊柩枰栌柙枵柚枳柝栀柃枸柢栎柁柽栲栳桠桡桎桢桄桤梃栝桕桦桁桧桀栾桊桉栩梵梏桴桷梓桫棂楮棼椟椠棹�\".split(\"\");\nfor(j = 0; j != D[232].length; ++j) if(D[232][j].charCodeAt(0) !== 0xFFFD) { e[D[232][j]] = 59392 + j; d[59392 + j] = D[232][j];}\nD[233] = \"����������������������������������������������������������������锧锳锽镃镈镋镕镚镠镮镴镵長镸镹镺镻镼镽镾門閁閂閃閄閅閆閇閈閉閊開閌閍閎閏閐閑閒間閔閕閖閗閘閙閚閛閜閝閞閟閠閡関閣閤閥閦閧閨閩閪�閫閬閭閮閯閰閱閲閳閴閵閶閷閸閹閺閻閼閽閾閿闀闁闂闃闄闅闆闇闈闉闊闋椤棰椋椁楗棣椐楱椹楠楂楝榄楫榀榘楸椴槌榇榈槎榉楦楣楹榛榧榻榫榭槔榱槁槊槟榕槠榍槿樯槭樗樘橥槲橄樾檠橐橛樵檎橹樽樨橘橼檑檐檩檗檫猷獒殁殂殇殄殒殓殍殚殛殡殪轫轭轱轲轳轵轶轸轷轹轺轼轾辁辂辄辇辋�\".split(\"\");\nfor(j = 0; j != D[233].length; ++j) if(D[233][j].charCodeAt(0) !== 0xFFFD) { e[D[233][j]] = 59648 + j; d[59648 + j] = D[233][j];}\nD[234] = \"����������������������������������������������������������������闌闍闎闏闐闑闒闓闔闕闖闗闘闙闚闛關闝闞闟闠闡闢闣闤闥闦闧闬闿阇阓阘阛阞阠阣阤阥阦阧阨阩阫阬阭阯阰阷阸阹阺阾陁陃陊陎陏陑陒陓陖陗�陘陙陚陜陝陞陠陣陥陦陫陭陮陯陰陱陳陸陹険陻陼陽陾陿隀隁隂隃隄隇隉隊辍辎辏辘辚軎戋戗戛戟戢戡戥戤戬臧瓯瓴瓿甏甑甓攴旮旯旰昊昙杲昃昕昀炅曷昝昴昱昶昵耆晟晔晁晏晖晡晗晷暄暌暧暝暾曛曜曦曩贲贳贶贻贽赀赅赆赈赉赇赍赕赙觇觊觋觌觎觏觐觑牮犟牝牦牯牾牿犄犋犍犏犒挈挲掰�\".split(\"\");\nfor(j = 0; j != D[234].length; ++j) if(D[234][j].charCodeAt(0) !== 0xFFFD) { e[D[234][j]] = 59904 + j; d[59904 + j] = D[234][j];}\nD[235] = \"����������������������������������������������������������������隌階隑隒隓隕隖隚際隝隞隟隠隡隢隣隤隥隦隨隩險隫隬隭隮隯隱隲隴隵隷隸隺隻隿雂雃雈雊雋雐雑雓雔雖雗雘雙雚雛雜雝雞雟雡離難雤雥雦雧雫�雬雭雮雰雱雲雴雵雸雺電雼雽雿霂霃霅霊霋霌霐霑霒霔霕霗霘霙霚霛霝霟霠搿擘耄毪毳毽毵毹氅氇氆氍氕氘氙氚氡氩氤氪氲攵敕敫牍牒牖爰虢刖肟肜肓肼朊肽肱肫肭肴肷胧胨胩胪胛胂胄胙胍胗朐胝胫胱胴胭脍脎胲胼朕脒豚脶脞脬脘脲腈腌腓腴腙腚腱腠腩腼腽腭腧塍媵膈膂膑滕膣膪臌朦臊膻�\".split(\"\");\nfor(j = 0; j != D[235].length; ++j) if(D[235][j].charCodeAt(0) !== 0xFFFD) { e[D[235][j]] = 60160 + j; d[60160 + j] = D[235][j];}\nD[236] = \"����������������������������������������������������������������霡霢霣霤霥霦霧霨霩霫霬霮霯霱霳霴霵霶霷霺霻霼霽霿靀靁靂靃靄靅靆靇靈靉靊靋靌靍靎靏靐靑靔靕靗靘靚靜靝靟靣靤靦靧靨靪靫靬靭靮靯靰靱�靲靵靷靸靹靺靻靽靾靿鞀鞁鞂鞃鞄鞆鞇鞈鞉鞊鞌鞎鞏鞐鞓鞕鞖鞗鞙鞚鞛鞜鞝臁膦欤欷欹歃歆歙飑飒飓飕飙飚殳彀毂觳斐齑斓於旆旄旃旌旎旒旖炀炜炖炝炻烀炷炫炱烨烊焐焓焖焯焱煳煜煨煅煲煊煸煺熘熳熵熨熠燠燔燧燹爝爨灬焘煦熹戾戽扃扈扉礻祀祆祉祛祜祓祚祢祗祠祯祧祺禅禊禚禧禳忑忐�\".split(\"\");\nfor(j = 0; j != D[236].length; ++j) if(D[236][j].charCodeAt(0) !== 0xFFFD) { e[D[236][j]] = 60416 + j; d[60416 + j] = D[236][j];}\nD[237] = \"����������������������������������������������������������������鞞鞟鞡鞢鞤鞥鞦鞧鞨鞩鞪鞬鞮鞰鞱鞳鞵鞶鞷鞸鞹鞺鞻鞼鞽鞾鞿韀韁韂韃韄韅韆韇韈韉韊韋韌韍韎韏韐韑韒韓韔韕韖韗韘韙韚韛韜韝韞韟韠韡韢韣�韤韥韨韮韯韰韱韲韴韷韸韹韺韻韼韽韾響頀頁頂頃頄項順頇須頉頊頋頌頍頎怼恝恚恧恁恙恣悫愆愍慝憩憝懋懑戆肀聿沓泶淼矶矸砀砉砗砘砑斫砭砜砝砹砺砻砟砼砥砬砣砩硎硭硖硗砦硐硇硌硪碛碓碚碇碜碡碣碲碹碥磔磙磉磬磲礅磴礓礤礞礴龛黹黻黼盱眄眍盹眇眈眚眢眙眭眦眵眸睐睑睇睃睚睨�\".split(\"\");\nfor(j = 0; j != D[237].length; ++j) if(D[237][j].charCodeAt(0) !== 0xFFFD) { e[D[237][j]] = 60672 + j; d[60672 + j] = D[237][j];}\nD[238] = \"����������������������������������������������������������������頏預頑頒頓頔頕頖頗領頙頚頛頜頝頞頟頠頡頢頣頤頥頦頧頨頩頪頫頬頭頮頯頰頱頲頳頴頵頶頷頸頹頺頻頼頽頾頿顀顁顂顃顄顅顆顇顈顉顊顋題額�顎顏顐顑顒顓顔顕顖顗願顙顚顛顜顝類顟顠顡顢顣顤顥顦顧顨顩顪顫顬顭顮睢睥睿瞍睽瞀瞌瞑瞟瞠瞰瞵瞽町畀畎畋畈畛畲畹疃罘罡罟詈罨罴罱罹羁罾盍盥蠲钅钆钇钋钊钌钍钏钐钔钗钕钚钛钜钣钤钫钪钭钬钯钰钲钴钶钷钸钹钺钼钽钿铄铈铉铊铋铌铍铎铐铑铒铕铖铗铙铘铛铞铟铠铢铤铥铧铨铪�\".split(\"\");\nfor(j = 0; j != D[238].length; ++j) if(D[238][j].charCodeAt(0) !== 0xFFFD) { e[D[238][j]] = 60928 + j; d[60928 + j] = D[238][j];}\nD[239] = \"����������������������������������������������������������������顯顰顱顲顳顴颋颎颒颕颙颣風颩颪颫颬颭颮颯颰颱颲颳颴颵颶颷颸颹颺颻颼颽颾颿飀飁飂飃飄飅飆飇飈飉飊飋飌飍飏飐飔飖飗飛飜飝飠飡飢飣飤�飥飦飩飪飫飬飭飮飯飰飱飲飳飴飵飶飷飸飹飺飻飼飽飾飿餀餁餂餃餄餅餆餇铩铫铮铯铳铴铵铷铹铼铽铿锃锂锆锇锉锊锍锎锏锒锓锔锕锖锘锛锝锞锟锢锪锫锩锬锱锲锴锶锷锸锼锾锿镂锵镄镅镆镉镌镎镏镒镓镔镖镗镘镙镛镞镟镝镡镢镤镥镦镧镨镩镪镫镬镯镱镲镳锺矧矬雉秕秭秣秫稆嵇稃稂稞稔�\".split(\"\");\nfor(j = 0; j != D[239].length; ++j) if(D[239][j].charCodeAt(0) !== 0xFFFD) { e[D[239][j]] = 61184 + j; d[61184 + j] = D[239][j];}\nD[240] = \"����������������������������������������������������������������餈餉養餋餌餎餏餑餒餓餔餕餖餗餘餙餚餛餜餝餞餟餠餡餢餣餤餥餦餧館餩餪餫餬餭餯餰餱餲餳餴餵餶餷餸餹餺餻餼餽餾餿饀饁饂饃饄饅饆饇饈饉�饊饋饌饍饎饏饐饑饒饓饖饗饘饙饚饛饜饝饞饟饠饡饢饤饦饳饸饹饻饾馂馃馉稹稷穑黏馥穰皈皎皓皙皤瓞瓠甬鸠鸢鸨鸩鸪鸫鸬鸲鸱鸶鸸鸷鸹鸺鸾鹁鹂鹄鹆鹇鹈鹉鹋鹌鹎鹑鹕鹗鹚鹛鹜鹞鹣鹦鹧鹨鹩鹪鹫鹬鹱鹭鹳疒疔疖疠疝疬疣疳疴疸痄疱疰痃痂痖痍痣痨痦痤痫痧瘃痱痼痿瘐瘀瘅瘌瘗瘊瘥瘘瘕瘙�\".split(\"\");\nfor(j = 0; j != D[240].length; ++j) if(D[240][j].charCodeAt(0) !== 0xFFFD) { e[D[240][j]] = 61440 + j; d[61440 + j] = D[240][j];}\nD[241] = \"����������������������������������������������������������������馌馎馚馛馜馝馞馟馠馡馢馣馤馦馧馩馪馫馬馭馮馯馰馱馲馳馴馵馶馷馸馹馺馻馼馽馾馿駀駁駂駃駄駅駆駇駈駉駊駋駌駍駎駏駐駑駒駓駔駕駖駗駘�駙駚駛駜駝駞駟駠駡駢駣駤駥駦駧駨駩駪駫駬駭駮駯駰駱駲駳駴駵駶駷駸駹瘛瘼瘢瘠癀瘭瘰瘿瘵癃瘾瘳癍癞癔癜癖癫癯翊竦穸穹窀窆窈窕窦窠窬窨窭窳衤衩衲衽衿袂袢裆袷袼裉裢裎裣裥裱褚裼裨裾裰褡褙褓褛褊褴褫褶襁襦襻疋胥皲皴矜耒耔耖耜耠耢耥耦耧耩耨耱耋耵聃聆聍聒聩聱覃顸颀颃�\".split(\"\");\nfor(j = 0; j != D[241].length; ++j) if(D[241][j].charCodeAt(0) !== 0xFFFD) { e[D[241][j]] = 61696 + j; d[61696 + j] = D[241][j];}\nD[242] = \"����������������������������������������������������������������駺駻駼駽駾駿騀騁騂騃騄騅騆騇騈騉騊騋騌騍騎騏騐騑騒験騔騕騖騗騘騙騚騛騜騝騞騟騠騡騢騣騤騥騦騧騨騩騪騫騬騭騮騯騰騱騲騳騴騵騶騷騸�騹騺騻騼騽騾騿驀驁驂驃驄驅驆驇驈驉驊驋驌驍驎驏驐驑驒驓驔驕驖驗驘驙颉颌颍颏颔颚颛颞颟颡颢颥颦虍虔虬虮虿虺虼虻蚨蚍蚋蚬蚝蚧蚣蚪蚓蚩蚶蛄蚵蛎蚰蚺蚱蚯蛉蛏蚴蛩蛱蛲蛭蛳蛐蜓蛞蛴蛟蛘蛑蜃蜇蛸蜈蜊蜍蜉蜣蜻蜞蜥蜮蜚蜾蝈蜴蜱蜩蜷蜿螂蜢蝽蝾蝻蝠蝰蝌蝮螋蝓蝣蝼蝤蝙蝥螓螯螨蟒�\".split(\"\");\nfor(j = 0; j != D[242].length; ++j) if(D[242][j].charCodeAt(0) !== 0xFFFD) { e[D[242][j]] = 61952 + j; d[61952 + j] = D[242][j];}\nD[243] = \"����������������������������������������������������������������驚驛驜驝驞驟驠驡驢驣驤驥驦驧驨驩驪驫驲骃骉骍骎骔骕骙骦骩骪骫骬骭骮骯骲骳骴骵骹骻骽骾骿髃髄髆髇髈髉髊髍髎髏髐髒體髕髖髗髙髚髛髜�髝髞髠髢髣髤髥髧髨髩髪髬髮髰髱髲髳髴髵髶髷髸髺髼髽髾髿鬀鬁鬂鬄鬅鬆蟆螈螅螭螗螃螫蟥螬螵螳蟋蟓螽蟑蟀蟊蟛蟪蟠蟮蠖蠓蟾蠊蠛蠡蠹蠼缶罂罄罅舐竺竽笈笃笄笕笊笫笏筇笸笪笙笮笱笠笥笤笳笾笞筘筚筅筵筌筝筠筮筻筢筲筱箐箦箧箸箬箝箨箅箪箜箢箫箴篑篁篌篝篚篥篦篪簌篾篼簏簖簋�\".split(\"\");\nfor(j = 0; j != D[243].length; ++j) if(D[243][j].charCodeAt(0) !== 0xFFFD) { e[D[243][j]] = 62208 + j; d[62208 + j] = D[243][j];}\nD[244] = \"����������������������������������������������������������������鬇鬉鬊鬋鬌鬍鬎鬐鬑鬒鬔鬕鬖鬗鬘鬙鬚鬛鬜鬝鬞鬠鬡鬢鬤鬥鬦鬧鬨鬩鬪鬫鬬鬭鬮鬰鬱鬳鬴鬵鬶鬷鬸鬹鬺鬽鬾鬿魀魆魊魋魌魎魐魒魓魕魖魗魘魙魚�魛魜魝魞魟魠魡魢魣魤魥魦魧魨魩魪魫魬魭魮魯魰魱魲魳魴魵魶魷魸魹魺魻簟簪簦簸籁籀臾舁舂舄臬衄舡舢舣舭舯舨舫舸舻舳舴舾艄艉艋艏艚艟艨衾袅袈裘裟襞羝羟羧羯羰羲籼敉粑粝粜粞粢粲粼粽糁糇糌糍糈糅糗糨艮暨羿翎翕翥翡翦翩翮翳糸絷綦綮繇纛麸麴赳趄趔趑趱赧赭豇豉酊酐酎酏酤�\".split(\"\");\nfor(j = 0; j != D[244].length; ++j) if(D[244][j].charCodeAt(0) !== 0xFFFD) { e[D[244][j]] = 62464 + j; d[62464 + j] = D[244][j];}\nD[245] = \"����������������������������������������������������������������魼魽魾魿鮀鮁鮂鮃鮄鮅鮆鮇鮈鮉鮊鮋鮌鮍鮎鮏鮐鮑鮒鮓鮔鮕鮖鮗鮘鮙鮚鮛鮜鮝鮞鮟鮠鮡鮢鮣鮤鮥鮦鮧鮨鮩鮪鮫鮬鮭鮮鮯鮰鮱鮲鮳鮴鮵鮶鮷鮸鮹鮺�鮻鮼鮽鮾鮿鯀鯁鯂鯃鯄鯅鯆鯇鯈鯉鯊鯋鯌鯍鯎鯏鯐鯑鯒鯓鯔鯕鯖鯗鯘鯙鯚鯛酢酡酰酩酯酽酾酲酴酹醌醅醐醍醑醢醣醪醭醮醯醵醴醺豕鹾趸跫踅蹙蹩趵趿趼趺跄跖跗跚跞跎跏跛跆跬跷跸跣跹跻跤踉跽踔踝踟踬踮踣踯踺蹀踹踵踽踱蹉蹁蹂蹑蹒蹊蹰蹶蹼蹯蹴躅躏躔躐躜躞豸貂貊貅貘貔斛觖觞觚觜�\".split(\"\");\nfor(j = 0; j != D[245].length; ++j) if(D[245][j].charCodeAt(0) !== 0xFFFD) { e[D[245][j]] = 62720 + j; d[62720 + j] = D[245][j];}\nD[246] = \"����������������������������������������������������������������鯜鯝鯞鯟鯠鯡鯢鯣鯤鯥鯦鯧鯨鯩鯪鯫鯬鯭鯮鯯鯰鯱鯲鯳鯴鯵鯶鯷鯸鯹鯺鯻鯼鯽鯾鯿鰀鰁鰂鰃鰄鰅鰆鰇鰈鰉鰊鰋鰌鰍鰎鰏鰐鰑鰒鰓鰔鰕鰖鰗鰘鰙鰚�鰛鰜鰝鰞鰟鰠鰡鰢鰣鰤鰥鰦鰧鰨鰩鰪鰫鰬鰭鰮鰯鰰鰱鰲鰳鰴鰵鰶鰷鰸鰹鰺鰻觥觫觯訾謦靓雩雳雯霆霁霈霏霎霪霭霰霾龀龃龅龆龇龈龉龊龌黾鼋鼍隹隼隽雎雒瞿雠銎銮鋈錾鍪鏊鎏鐾鑫鱿鲂鲅鲆鲇鲈稣鲋鲎鲐鲑鲒鲔鲕鲚鲛鲞鲟鲠鲡鲢鲣鲥鲦鲧鲨鲩鲫鲭鲮鲰鲱鲲鲳鲴鲵鲶鲷鲺鲻鲼鲽鳄鳅鳆鳇鳊鳋�\".split(\"\");\nfor(j = 0; j != D[246].length; ++j) if(D[246][j].charCodeAt(0) !== 0xFFFD) { e[D[246][j]] = 62976 + j; d[62976 + j] = D[246][j];}\nD[247] = \"����������������������������������������������������������������鰼鰽鰾鰿鱀鱁鱂鱃鱄鱅鱆鱇鱈鱉鱊鱋鱌鱍鱎鱏鱐鱑鱒鱓鱔鱕鱖鱗鱘鱙鱚鱛鱜鱝鱞鱟鱠鱡鱢鱣鱤鱥鱦鱧鱨鱩鱪鱫鱬鱭鱮鱯鱰鱱鱲鱳鱴鱵鱶鱷鱸鱹鱺�鱻鱽鱾鲀鲃鲄鲉鲊鲌鲏鲓鲖鲗鲘鲙鲝鲪鲬鲯鲹鲾鲿鳀鳁鳂鳈鳉鳑鳒鳚鳛鳠鳡鳌鳍鳎鳏鳐鳓鳔鳕鳗鳘鳙鳜鳝鳟鳢靼鞅鞑鞒鞔鞯鞫鞣鞲鞴骱骰骷鹘骶骺骼髁髀髅髂髋髌髑魅魃魇魉魈魍魑飨餍餮饕饔髟髡髦髯髫髻髭髹鬈鬏鬓鬟鬣麽麾縻麂麇麈麋麒鏖麝麟黛黜黝黠黟黢黩黧黥黪黯鼢鼬鼯鼹鼷鼽鼾齄�\".split(\"\");\nfor(j = 0; j != D[247].length; ++j) if(D[247][j].charCodeAt(0) !== 0xFFFD) { e[D[247][j]] = 63232 + j; d[63232 + j] = D[247][j];}\nD[248] = \"����������������������������������������������������������������鳣鳤鳥鳦鳧鳨鳩鳪鳫鳬鳭鳮鳯鳰鳱鳲鳳鳴鳵鳶鳷鳸鳹鳺鳻鳼鳽鳾鳿鴀鴁鴂鴃鴄鴅鴆鴇鴈鴉鴊鴋鴌鴍鴎鴏鴐鴑鴒鴓鴔鴕鴖鴗鴘鴙鴚鴛鴜鴝鴞鴟鴠鴡�鴢鴣鴤鴥鴦鴧鴨鴩鴪鴫鴬鴭鴮鴯鴰鴱鴲鴳鴴鴵鴶鴷鴸鴹鴺鴻鴼鴽鴾鴿鵀鵁鵂�����������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[248].length; ++j) if(D[248][j].charCodeAt(0) !== 0xFFFD) { e[D[248][j]] = 63488 + j; d[63488 + j] = D[248][j];}\nD[249] = \"����������������������������������������������������������������鵃鵄鵅鵆鵇鵈鵉鵊鵋鵌鵍鵎鵏鵐鵑鵒鵓鵔鵕鵖鵗鵘鵙鵚鵛鵜鵝鵞鵟鵠鵡鵢鵣鵤鵥鵦鵧鵨鵩鵪鵫鵬鵭鵮鵯鵰鵱鵲鵳鵴鵵鵶鵷鵸鵹鵺鵻鵼鵽鵾鵿鶀鶁�鶂鶃鶄鶅鶆鶇鶈鶉鶊鶋鶌鶍鶎鶏鶐鶑鶒鶓鶔鶕鶖鶗鶘鶙鶚鶛鶜鶝鶞鶟鶠鶡鶢�����������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[249].length; ++j) if(D[249][j].charCodeAt(0) !== 0xFFFD) { e[D[249][j]] = 63744 + j; d[63744 + j] = D[249][j];}\nD[250] = \"����������������������������������������������������������������鶣鶤鶥鶦鶧鶨鶩鶪鶫鶬鶭鶮鶯鶰鶱鶲鶳鶴鶵鶶鶷鶸鶹鶺鶻鶼鶽鶾鶿鷀鷁鷂鷃鷄鷅鷆鷇鷈鷉鷊鷋鷌鷍鷎鷏鷐鷑鷒鷓鷔鷕鷖鷗鷘鷙鷚鷛鷜鷝鷞鷟鷠鷡�鷢鷣鷤鷥鷦鷧鷨鷩鷪鷫鷬鷭鷮鷯鷰鷱鷲鷳鷴鷵鷶鷷鷸鷹鷺鷻鷼鷽鷾鷿鸀鸁鸂�����������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[250].length; ++j) if(D[250][j].charCodeAt(0) !== 0xFFFD) { e[D[250][j]] = 64000 + j; d[64000 + j] = D[250][j];}\nD[251] = \"����������������������������������������������������������������鸃鸄鸅鸆鸇鸈鸉鸊鸋鸌鸍鸎鸏鸐鸑鸒鸓鸔鸕鸖鸗鸘鸙鸚鸛鸜鸝鸞鸤鸧鸮鸰鸴鸻鸼鹀鹍鹐鹒鹓鹔鹖鹙鹝鹟鹠鹡鹢鹥鹮鹯鹲鹴鹵鹶鹷鹸鹹鹺鹻鹼鹽麀�麁麃麄麅麆麉麊麌麍麎麏麐麑麔麕麖麗麘麙麚麛麜麞麠麡麢麣麤麥麧麨麩麪�����������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[251].length; ++j) if(D[251][j].charCodeAt(0) !== 0xFFFD) { e[D[251][j]] = 64256 + j; d[64256 + j] = D[251][j];}\nD[252] = \"����������������������������������������������������������������麫麬麭麮麯麰麱麲麳麵麶麷麹麺麼麿黀黁黂黃黅黆黇黈黊黋黌黐黒黓黕黖黗黙黚點黡黣黤黦黨黫黬黭黮黰黱黲黳黴黵黶黷黸黺黽黿鼀鼁鼂鼃鼄鼅�鼆鼇鼈鼉鼊鼌鼏鼑鼒鼔鼕鼖鼘鼚鼛鼜鼝鼞鼟鼡鼣鼤鼥鼦鼧鼨鼩鼪鼫鼭鼮鼰鼱�����������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[252].length; ++j) if(D[252][j].charCodeAt(0) !== 0xFFFD) { e[D[252][j]] = 64512 + j; d[64512 + j] = D[252][j];}\nD[253] = \"����������������������������������������������������������������鼲鼳鼴鼵鼶鼸鼺鼼鼿齀齁齂齃齅齆齇齈齉齊齋齌齍齎齏齒齓齔齕齖齗齘齙齚齛齜齝齞齟齠齡齢齣齤齥齦齧齨齩齪齫齬齭齮齯齰齱齲齳齴齵齶齷齸�齹齺齻齼齽齾龁龂龍龎龏龐龑龒龓龔龕龖龗龘龜龝龞龡龢龣龤龥郎凉秊裏隣�����������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[253].length; ++j) if(D[253][j].charCodeAt(0) !== 0xFFFD) { e[D[253][j]] = 64768 + j; d[64768 + j] = D[253][j];}\nD[254] = \"����������������������������������������������������������������兀嗀﨎﨏﨑﨓﨔礼﨟蘒﨡﨣﨤﨧﨨﨩��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[254].length; ++j) if(D[254][j].charCodeAt(0) !== 0xFFFD) { e[D[254][j]] = 65024 + j; d[65024 + j] = D[254][j];}\nreturn {\"enc\": e, \"dec\": d }; })();\ncptable[949] = (function(){ var d = [], e = {}, D = [], j;\nD[0] = \"\\u0000\\u0001\\u0002\\u0003\\u0004\\u0005\\u0006\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\u0014\\u0015\\u0016\\u0017\\u0018\\u0019\\u001a\\u001b\\u001c\\u001d\\u001e\\u001f !\\\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~��������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[0].length; ++j) if(D[0][j].charCodeAt(0) !== 0xFFFD) { e[D[0][j]] = 0 + j; d[0 + j] = D[0][j];}\nD[129] = \"�����������������������������������������������������������������갂갃갅갆갋갌갍갎갏갘갞갟갡갢갣갥갦갧갨갩갪갫갮갲갳갴������갵갶갷갺갻갽갾갿걁걂걃걄걅걆걇걈걉걊걌걎걏걐걑걒걓걕������걖걗걙걚걛걝걞걟걠걡걢걣걤걥걦걧걨걩걪걫걬걭걮걯걲걳걵걶걹걻걼걽걾걿겂겇겈겍겎겏겑겒겓겕겖겗겘겙겚겛겞겢겣겤겥겦겧겫겭겮겱겲겳겴겵겶겷겺겾겿곀곂곃곅곆곇곉곊곋곍곎곏곐곑곒곓곔곖곘곙곚곛곜곝곞곟곢곣곥곦곩곫곭곮곲곴곷곸곹곺곻곾곿괁괂괃괅괇괈괉괊괋괎괐괒괓�\".split(\"\");\nfor(j = 0; j != D[129].length; ++j) if(D[129][j].charCodeAt(0) !== 0xFFFD) { e[D[129][j]] = 33024 + j; d[33024 + j] = D[129][j];}\nD[130] = \"�����������������������������������������������������������������괔괕괖괗괙괚괛괝괞괟괡괢괣괤괥괦괧괨괪괫괮괯괰괱괲괳������괶괷괹괺괻괽괾괿굀굁굂굃굆굈굊굋굌굍굎굏굑굒굓굕굖굗������굙굚굛굜굝굞굟굠굢굤굥굦굧굨굩굪굫굮굯굱굲굷굸굹굺굾궀궃궄궅궆궇궊궋궍궎궏궑궒궓궔궕궖궗궘궙궚궛궞궟궠궡궢궣궥궦궧궨궩궪궫궬궭궮궯궰궱궲궳궴궵궶궸궹궺궻궼궽궾궿귂귃귅귆귇귉귊귋귌귍귎귏귒귔귕귖귗귘귙귚귛귝귞귟귡귢귣귥귦귧귨귩귪귫귬귭귮귯귰귱귲귳귴귵귶귷�\".split(\"\");\nfor(j = 0; j != D[130].length; ++j) if(D[130][j].charCodeAt(0) !== 0xFFFD) { e[D[130][j]] = 33280 + j; d[33280 + j] = D[130][j];}\nD[131] = \"�����������������������������������������������������������������귺귻귽귾긂긃긄긅긆긇긊긌긎긏긐긑긒긓긕긖긗긘긙긚긛긜������긝긞긟긠긡긢긣긤긥긦긧긨긩긪긫긬긭긮긯긲긳긵긶긹긻긼������긽긾긿깂깄깇깈깉깋깏깑깒깓깕깗깘깙깚깛깞깢깣깤깦깧깪깫깭깮깯깱깲깳깴깵깶깷깺깾깿꺀꺁꺂꺃꺆꺇꺈꺉꺊꺋꺍꺎꺏꺐꺑꺒꺓꺔꺕꺖꺗꺘꺙꺚꺛꺜꺝꺞꺟꺠꺡꺢꺣꺤꺥꺦꺧꺨꺩꺪꺫꺬꺭꺮꺯꺰꺱꺲꺳꺴꺵꺶꺷꺸꺹꺺꺻꺿껁껂껃껅껆껇껈껉껊껋껎껒껓껔껕껖껗껚껛껝껞껟껠껡껢껣껤껥�\".split(\"\");\nfor(j = 0; j != D[131].length; ++j) if(D[131][j].charCodeAt(0) !== 0xFFFD) { e[D[131][j]] = 33536 + j; d[33536 + j] = D[131][j];}\nD[132] = \"�����������������������������������������������������������������껦껧껩껪껬껮껯껰껱껲껳껵껶껷껹껺껻껽껾껿꼀꼁꼂꼃꼄꼅������꼆꼉꼊꼋꼌꼎꼏꼑꼒꼓꼔꼕꼖꼗꼘꼙꼚꼛꼜꼝꼞꼟꼠꼡꼢꼣������꼤꼥꼦꼧꼨꼩꼪꼫꼮꼯꼱꼳꼵꼶꼷꼸꼹꼺꼻꼾꽀꽄꽅꽆꽇꽊꽋꽌꽍꽎꽏꽑꽒꽓꽔꽕꽖꽗꽘꽙꽚꽛꽞꽟꽠꽡꽢꽣꽦꽧꽨꽩꽪꽫꽬꽭꽮꽯꽰꽱꽲꽳꽴꽵꽶꽷꽸꽺꽻꽼꽽꽾꽿꾁꾂꾃꾅꾆꾇꾉꾊꾋꾌꾍꾎꾏꾒꾓꾔꾖꾗꾘꾙꾚꾛꾝꾞꾟꾠꾡꾢꾣꾤꾥꾦꾧꾨꾩꾪꾫꾬꾭꾮꾯꾰꾱꾲꾳꾴꾵꾶꾷꾺꾻꾽꾾�\".split(\"\");\nfor(j = 0; j != D[132].length; ++j) if(D[132][j].charCodeAt(0) !== 0xFFFD) { e[D[132][j]] = 33792 + j; d[33792 + j] = D[132][j];}\nD[133] = \"�����������������������������������������������������������������꾿꿁꿂꿃꿄꿅꿆꿊꿌꿏꿐꿑꿒꿓꿕꿖꿗꿘꿙꿚꿛꿝꿞꿟꿠꿡������꿢꿣꿤꿥꿦꿧꿪꿫꿬꿭꿮꿯꿲꿳꿵꿶꿷꿹꿺꿻꿼꿽꿾꿿뀂뀃������뀅뀆뀇뀈뀉뀊뀋뀍뀎뀏뀑뀒뀓뀕뀖뀗뀘뀙뀚뀛뀞뀟뀠뀡뀢뀣뀤뀥뀦뀧뀩뀪뀫뀬뀭뀮뀯뀰뀱뀲뀳뀴뀵뀶뀷뀸뀹뀺뀻뀼뀽뀾뀿끀끁끂끃끆끇끉끋끍끏끐끑끒끖끘끚끛끜끞끟끠끡끢끣끤끥끦끧끨끩끪끫끬끭끮끯끰끱끲끳끴끵끶끷끸끹끺끻끾끿낁낂낃낅낆낇낈낉낊낋낎낐낒낓낔낕낖낗낛낝낞낣낤�\".split(\"\");\nfor(j = 0; j != D[133].length; ++j) if(D[133][j].charCodeAt(0) !== 0xFFFD) { e[D[133][j]] = 34048 + j; d[34048 + j] = D[133][j];}\nD[134] = \"�����������������������������������������������������������������낥낦낧낪낰낲낶낷낹낺낻낽낾낿냀냁냂냃냆냊냋냌냍냎냏냒������냓냕냖냗냙냚냛냜냝냞냟냡냢냣냤냦냧냨냩냪냫냬냭냮냯냰������냱냲냳냴냵냶냷냸냹냺냻냼냽냾냿넀넁넂넃넄넅넆넇넊넍넎넏넑넔넕넖넗넚넞넟넠넡넢넦넧넩넪넫넭넮넯넰넱넲넳넶넺넻넼넽넾넿녂녃녅녆녇녉녊녋녌녍녎녏녒녓녖녗녙녚녛녝녞녟녡녢녣녤녥녦녧녨녩녪녫녬녭녮녯녰녱녲녳녴녵녶녷녺녻녽녾녿놁놃놄놅놆놇놊놌놎놏놐놑놕놖놗놙놚놛놝�\".split(\"\");\nfor(j = 0; j != D[134].length; ++j) if(D[134][j].charCodeAt(0) !== 0xFFFD) { e[D[134][j]] = 34304 + j; d[34304 + j] = D[134][j];}\nD[135] = \"�����������������������������������������������������������������놞놟놠놡놢놣놤놥놦놧놩놪놫놬놭놮놯놰놱놲놳놴놵놶놷놸������놹놺놻놼놽놾놿뇀뇁뇂뇃뇄뇅뇆뇇뇈뇉뇊뇋뇍뇎뇏뇑뇒뇓뇕������뇖뇗뇘뇙뇚뇛뇞뇠뇡뇢뇣뇤뇥뇦뇧뇪뇫뇭뇮뇯뇱뇲뇳뇴뇵뇶뇷뇸뇺뇼뇾뇿눀눁눂눃눆눇눉눊눍눎눏눐눑눒눓눖눘눚눛눜눝눞눟눡눢눣눤눥눦눧눨눩눪눫눬눭눮눯눰눱눲눳눵눶눷눸눹눺눻눽눾눿뉀뉁뉂뉃뉄뉅뉆뉇뉈뉉뉊뉋뉌뉍뉎뉏뉐뉑뉒뉓뉔뉕뉖뉗뉙뉚뉛뉝뉞뉟뉡뉢뉣뉤뉥뉦뉧뉪뉫뉬뉭뉮�\".split(\"\");\nfor(j = 0; j != D[135].length; ++j) if(D[135][j].charCodeAt(0) !== 0xFFFD) { e[D[135][j]] = 34560 + j; d[34560 + j] = D[135][j];}\nD[136] = \"�����������������������������������������������������������������뉯뉰뉱뉲뉳뉶뉷뉸뉹뉺뉻뉽뉾뉿늀늁늂늃늆늇늈늊늋늌늍늎������늏늒늓늕늖늗늛늜늝늞늟늢늤늧늨늩늫늭늮늯늱늲늳늵늶늷������늸늹늺늻늼늽늾늿닀닁닂닃닄닅닆닇닊닋닍닎닏닑닓닔닕닖닗닚닜닞닟닠닡닣닧닩닪닰닱닲닶닼닽닾댂댃댅댆댇댉댊댋댌댍댎댏댒댖댗댘댙댚댛댝댞댟댠댡댢댣댤댥댦댧댨댩댪댫댬댭댮댯댰댱댲댳댴댵댶댷댸댹댺댻댼댽댾댿덀덁덂덃덄덅덆덇덈덉덊덋덌덍덎덏덐덑덒덓덗덙덚덝덠덡덢덣�\".split(\"\");\nfor(j = 0; j != D[136].length; ++j) if(D[136][j].charCodeAt(0) !== 0xFFFD) { e[D[136][j]] = 34816 + j; d[34816 + j] = D[136][j];}\nD[137] = \"�����������������������������������������������������������������덦덨덪덬덭덯덲덳덵덶덷덹덺덻덼덽덾덿뎂뎆뎇뎈뎉뎊뎋뎍������뎎뎏뎑뎒뎓뎕뎖뎗뎘뎙뎚뎛뎜뎝뎞뎟뎢뎣뎤뎥뎦뎧뎩뎪뎫뎭������뎮뎯뎰뎱뎲뎳뎴뎵뎶뎷뎸뎹뎺뎻뎼뎽뎾뎿돀돁돂돃돆돇돉돊돍돏돑돒돓돖돘돚돜돞돟돡돢돣돥돦돧돩돪돫돬돭돮돯돰돱돲돳돴돵돶돷돸돹돺돻돽돾돿됀됁됂됃됄됅됆됇됈됉됊됋됌됍됎됏됑됒됓됔됕됖됗됙됚됛됝됞됟됡됢됣됤됥됦됧됪됬됭됮됯됰됱됲됳됵됶됷됸됹됺됻됼됽됾됿둀둁둂둃둄�\".split(\"\");\nfor(j = 0; j != D[137].length; ++j) if(D[137][j].charCodeAt(0) !== 0xFFFD) { e[D[137][j]] = 35072 + j; d[35072 + j] = D[137][j];}\nD[138] = \"�����������������������������������������������������������������둅둆둇둈둉둊둋둌둍둎둏둒둓둕둖둗둙둚둛둜둝둞둟둢둤둦������둧둨둩둪둫둭둮둯둰둱둲둳둴둵둶둷둸둹둺둻둼둽둾둿뒁뒂������뒃뒄뒅뒆뒇뒉뒊뒋뒌뒍뒎뒏뒐뒑뒒뒓뒔뒕뒖뒗뒘뒙뒚뒛뒜뒞뒟뒠뒡뒢뒣뒥뒦뒧뒩뒪뒫뒭뒮뒯뒰뒱뒲뒳뒴뒶뒸뒺뒻뒼뒽뒾뒿듁듂듃듅듆듇듉듊듋듌듍듎듏듑듒듓듔듖듗듘듙듚듛듞듟듡듢듥듧듨듩듪듫듮듰듲듳듴듵듶듷듹듺듻듼듽듾듿딀딁딂딃딄딅딆딇딈딉딊딋딌딍딎딏딐딑딒딓딖딗딙딚딝�\".split(\"\");\nfor(j = 0; j != D[138].length; ++j) if(D[138][j].charCodeAt(0) !== 0xFFFD) { e[D[138][j]] = 35328 + j; d[35328 + j] = D[138][j];}\nD[139] = \"�����������������������������������������������������������������딞딟딠딡딢딣딦딫딬딭딮딯딲딳딵딶딷딹딺딻딼딽딾딿땂땆������땇땈땉땊땎땏땑땒땓땕땖땗땘땙땚땛땞땢땣땤땥땦땧땨땩땪������땫땬땭땮땯땰땱땲땳땴땵땶땷땸땹땺땻땼땽땾땿떀떁떂떃떄떅떆떇떈떉떊떋떌떍떎떏떐떑떒떓떔떕떖떗떘떙떚떛떜떝떞떟떢떣떥떦떧떩떬떭떮떯떲떶떷떸떹떺떾떿뗁뗂뗃뗅뗆뗇뗈뗉뗊뗋뗎뗒뗓뗔뗕뗖뗗뗙뗚뗛뗜뗝뗞뗟뗠뗡뗢뗣뗤뗥뗦뗧뗨뗩뗪뗫뗭뗮뗯뗰뗱뗲뗳뗴뗵뗶뗷뗸뗹뗺뗻뗼뗽뗾뗿�\".split(\"\");\nfor(j = 0; j != D[139].length; ++j) if(D[139][j].charCodeAt(0) !== 0xFFFD) { e[D[139][j]] = 35584 + j; d[35584 + j] = D[139][j];}\nD[140] = \"�����������������������������������������������������������������똀똁똂똃똄똅똆똇똈똉똊똋똌똍똎똏똒똓똕똖똗똙똚똛똜똝������똞똟똠똡똢똣똤똦똧똨똩똪똫똭똮똯똰똱똲똳똵똶똷똸똹똺������똻똼똽똾똿뙀뙁뙂뙃뙄뙅뙆뙇뙉뙊뙋뙌뙍뙎뙏뙐뙑뙒뙓뙔뙕뙖뙗뙘뙙뙚뙛뙜뙝뙞뙟뙠뙡뙢뙣뙥뙦뙧뙩뙪뙫뙬뙭뙮뙯뙰뙱뙲뙳뙴뙵뙶뙷뙸뙹뙺뙻뙼뙽뙾뙿뚀뚁뚂뚃뚄뚅뚆뚇뚈뚉뚊뚋뚌뚍뚎뚏뚐뚑뚒뚓뚔뚕뚖뚗뚘뚙뚚뚛뚞뚟뚡뚢뚣뚥뚦뚧뚨뚩뚪뚭뚮뚯뚰뚲뚳뚴뚵뚶뚷뚸뚹뚺뚻뚼뚽뚾뚿뛀뛁뛂�\".split(\"\");\nfor(j = 0; j != D[140].length; ++j) if(D[140][j].charCodeAt(0) !== 0xFFFD) { e[D[140][j]] = 35840 + j; d[35840 + j] = D[140][j];}\nD[141] = \"�����������������������������������������������������������������뛃뛄뛅뛆뛇뛈뛉뛊뛋뛌뛍뛎뛏뛐뛑뛒뛓뛕뛖뛗뛘뛙뛚뛛뛜뛝������뛞뛟뛠뛡뛢뛣뛤뛥뛦뛧뛨뛩뛪뛫뛬뛭뛮뛯뛱뛲뛳뛵뛶뛷뛹뛺������뛻뛼뛽뛾뛿뜂뜃뜄뜆뜇뜈뜉뜊뜋뜌뜍뜎뜏뜐뜑뜒뜓뜔뜕뜖뜗뜘뜙뜚뜛뜜뜝뜞뜟뜠뜡뜢뜣뜤뜥뜦뜧뜪뜫뜭뜮뜱뜲뜳뜴뜵뜶뜷뜺뜼뜽뜾뜿띀띁띂띃띅띆띇띉띊띋띍띎띏띐띑띒띓띖띗띘띙띚띛띜띝띞띟띡띢띣띥띦띧띩띪띫띬띭띮띯띲띴띶띷띸띹띺띻띾띿랁랂랃랅랆랇랈랉랊랋랎랓랔랕랚랛랝랞�\".split(\"\");\nfor(j = 0; j != D[141].length; ++j) if(D[141][j].charCodeAt(0) !== 0xFFFD) { e[D[141][j]] = 36096 + j; d[36096 + j] = D[141][j];}\nD[142] = \"�����������������������������������������������������������������랟랡랢랣랤랥랦랧랪랮랯랰랱랲랳랶랷랹랺랻랼랽랾랿럀럁������럂럃럄럅럆럈럊럋럌럍럎럏럐럑럒럓럔럕럖럗럘럙럚럛럜럝������럞럟럠럡럢럣럤럥럦럧럨럩럪럫럮럯럱럲럳럵럶럷럸럹럺럻럾렂렃렄렅렆렊렋렍렎렏렑렒렓렔렕렖렗렚렜렞렟렠렡렢렣렦렧렩렪렫렭렮렯렰렱렲렳렶렺렻렼렽렾렿롁롂롃롅롆롇롈롉롊롋롌롍롎롏롐롒롔롕롖롗롘롙롚롛롞롟롡롢롣롥롦롧롨롩롪롫롮롰롲롳롴롵롶롷롹롺롻롽롾롿뢀뢁뢂뢃뢄�\".split(\"\");\nfor(j = 0; j != D[142].length; ++j) if(D[142][j].charCodeAt(0) !== 0xFFFD) { e[D[142][j]] = 36352 + j; d[36352 + j] = D[142][j];}\nD[143] = \"�����������������������������������������������������������������뢅뢆뢇뢈뢉뢊뢋뢌뢎뢏뢐뢑뢒뢓뢔뢕뢖뢗뢘뢙뢚뢛뢜뢝뢞뢟������뢠뢡뢢뢣뢤뢥뢦뢧뢩뢪뢫뢬뢭뢮뢯뢱뢲뢳뢵뢶뢷뢹뢺뢻뢼뢽������뢾뢿룂룄룆룇룈룉룊룋룍룎룏룑룒룓룕룖룗룘룙룚룛룜룞룠룢룣룤룥룦룧룪룫룭룮룯룱룲룳룴룵룶룷룺룼룾룿뤀뤁뤂뤃뤅뤆뤇뤈뤉뤊뤋뤌뤍뤎뤏뤐뤑뤒뤓뤔뤕뤖뤗뤙뤚뤛뤜뤝뤞뤟뤡뤢뤣뤤뤥뤦뤧뤨뤩뤪뤫뤬뤭뤮뤯뤰뤱뤲뤳뤴뤵뤶뤷뤸뤹뤺뤻뤾뤿륁륂륃륅륆륇륈륉륊륋륍륎륐륒륓륔륕륖륗�\".split(\"\");\nfor(j = 0; j != D[143].length; ++j) if(D[143][j].charCodeAt(0) !== 0xFFFD) { e[D[143][j]] = 36608 + j; d[36608 + j] = D[143][j];}\nD[144] = \"�����������������������������������������������������������������륚륛륝륞륟륡륢륣륤륥륦륧륪륬륮륯륰륱륲륳륶륷륹륺륻륽������륾륿릀릁릂릃릆릈릋릌릏릐릑릒릓릔릕릖릗릘릙릚릛릜릝릞������릟릠릡릢릣릤릥릦릧릨릩릪릫릮릯릱릲릳릵릶릷릸릹릺릻릾맀맂맃맄맅맆맇맊맋맍맓맔맕맖맗맚맜맟맠맢맦맧맩맪맫맭맮맯맰맱맲맳맶맻맼맽맾맿먂먃먄먅먆먇먉먊먋먌먍먎먏먐먑먒먓먔먖먗먘먙먚먛먜먝먞먟먠먡먢먣먤먥먦먧먨먩먪먫먬먭먮먯먰먱먲먳먴먵먶먷먺먻먽먾먿멁멃멄멅멆�\".split(\"\");\nfor(j = 0; j != D[144].length; ++j) if(D[144][j].charCodeAt(0) !== 0xFFFD) { e[D[144][j]] = 36864 + j; d[36864 + j] = D[144][j];}\nD[145] = \"�����������������������������������������������������������������멇멊멌멏멐멑멒멖멗멙멚멛멝멞멟멠멡멢멣멦멪멫멬멭멮멯������멲멳멵멶멷멹멺멻멼멽멾멿몀몁몂몆몈몉몊몋몍몎몏몐몑몒������몓몔몕몖몗몘몙몚몛몜몝몞몟몠몡몢몣몤몥몦몧몪몭몮몯몱몳몴몵몶몷몺몼몾몿뫀뫁뫂뫃뫅뫆뫇뫉뫊뫋뫌뫍뫎뫏뫐뫑뫒뫓뫔뫕뫖뫗뫚뫛뫜뫝뫞뫟뫠뫡뫢뫣뫤뫥뫦뫧뫨뫩뫪뫫뫬뫭뫮뫯뫰뫱뫲뫳뫴뫵뫶뫷뫸뫹뫺뫻뫽뫾뫿묁묂묃묅묆묇묈묉묊묋묌묎묐묒묓묔묕묖묗묙묚묛묝묞묟묡묢묣묤묥묦묧�\".split(\"\");\nfor(j = 0; j != D[145].length; ++j) if(D[145][j].charCodeAt(0) !== 0xFFFD) { e[D[145][j]] = 37120 + j; d[37120 + j] = D[145][j];}\nD[146] = \"�����������������������������������������������������������������묨묪묬묭묮묯묰묱묲묳묷묹묺묿뭀뭁뭂뭃뭆뭈뭊뭋뭌뭎뭑뭒������뭓뭕뭖뭗뭙뭚뭛뭜뭝뭞뭟뭠뭢뭤뭥뭦뭧뭨뭩뭪뭫뭭뭮뭯뭰뭱������뭲뭳뭴뭵뭶뭷뭸뭹뭺뭻뭼뭽뭾뭿뮀뮁뮂뮃뮄뮅뮆뮇뮉뮊뮋뮍뮎뮏뮑뮒뮓뮔뮕뮖뮗뮘뮙뮚뮛뮜뮝뮞뮟뮠뮡뮢뮣뮥뮦뮧뮩뮪뮫뮭뮮뮯뮰뮱뮲뮳뮵뮶뮸뮹뮺뮻뮼뮽뮾뮿믁믂믃믅믆믇믉믊믋믌믍믎믏믑믒믔믕믖믗믘믙믚믛믜믝믞믟믠믡믢믣믤믥믦믧믨믩믪믫믬믭믮믯믰믱믲믳믴믵믶믷믺믻믽믾밁�\".split(\"\");\nfor(j = 0; j != D[146].length; ++j) if(D[146][j].charCodeAt(0) !== 0xFFFD) { e[D[146][j]] = 37376 + j; d[37376 + j] = D[146][j];}\nD[147] = \"�����������������������������������������������������������������밃밄밅밆밇밊밎밐밒밓밙밚밠밡밢밣밦밨밪밫밬밮밯밲밳밵������밶밷밹밺밻밼밽밾밿뱂뱆뱇뱈뱊뱋뱎뱏뱑뱒뱓뱔뱕뱖뱗뱘뱙������뱚뱛뱜뱞뱟뱠뱡뱢뱣뱤뱥뱦뱧뱨뱩뱪뱫뱬뱭뱮뱯뱰뱱뱲뱳뱴뱵뱶뱷뱸뱹뱺뱻뱼뱽뱾뱿벀벁벂벃벆벇벉벊벍벏벐벑벒벓벖벘벛벜벝벞벟벢벣벥벦벩벪벫벬벭벮벯벲벶벷벸벹벺벻벾벿볁볂볃볅볆볇볈볉볊볋볌볎볒볓볔볖볗볙볚볛볝볞볟볠볡볢볣볤볥볦볧볨볩볪볫볬볭볮볯볰볱볲볳볷볹볺볻볽�\".split(\"\");\nfor(j = 0; j != D[147].length; ++j) if(D[147][j].charCodeAt(0) !== 0xFFFD) { e[D[147][j]] = 37632 + j; d[37632 + j] = D[147][j];}\nD[148] = \"�����������������������������������������������������������������볾볿봀봁봂봃봆봈봊봋봌봍봎봏봑봒봓봕봖봗봘봙봚봛봜봝������봞봟봠봡봢봣봥봦봧봨봩봪봫봭봮봯봰봱봲봳봴봵봶봷봸봹������봺봻봼봽봾봿뵁뵂뵃뵄뵅뵆뵇뵊뵋뵍뵎뵏뵑뵒뵓뵔뵕뵖뵗뵚뵛뵜뵝뵞뵟뵠뵡뵢뵣뵥뵦뵧뵩뵪뵫뵬뵭뵮뵯뵰뵱뵲뵳뵴뵵뵶뵷뵸뵹뵺뵻뵼뵽뵾뵿붂붃붅붆붋붌붍붎붏붒붔붖붗붘붛붝붞붟붠붡붢붣붥붦붧붨붩붪붫붬붭붮붯붱붲붳붴붵붶붷붹붺붻붼붽붾붿뷀뷁뷂뷃뷄뷅뷆뷇뷈뷉뷊뷋뷌뷍뷎뷏뷐뷑�\".split(\"\");\nfor(j = 0; j != D[148].length; ++j) if(D[148][j].charCodeAt(0) !== 0xFFFD) { e[D[148][j]] = 37888 + j; d[37888 + j] = D[148][j];}\nD[149] = \"�����������������������������������������������������������������뷒뷓뷖뷗뷙뷚뷛뷝뷞뷟뷠뷡뷢뷣뷤뷥뷦뷧뷨뷪뷫뷬뷭뷮뷯뷱������뷲뷳뷵뷶뷷뷹뷺뷻뷼뷽뷾뷿븁븂븄븆븇븈븉븊븋븎븏븑븒븓������븕븖븗븘븙븚븛븞븠븡븢븣븤븥븦븧븨븩븪븫븬븭븮븯븰븱븲븳븴븵븶븷븸븹븺븻븼븽븾븿빀빁빂빃빆빇빉빊빋빍빏빐빑빒빓빖빘빜빝빞빟빢빣빥빦빧빩빫빬빭빮빯빲빶빷빸빹빺빾빿뺁뺂뺃뺅뺆뺇뺈뺉뺊뺋뺎뺒뺓뺔뺕뺖뺗뺚뺛뺜뺝뺞뺟뺠뺡뺢뺣뺤뺥뺦뺧뺩뺪뺫뺬뺭뺮뺯뺰뺱뺲뺳뺴뺵뺶뺷�\".split(\"\");\nfor(j = 0; j != D[149].length; ++j) if(D[149][j].charCodeAt(0) !== 0xFFFD) { e[D[149][j]] = 38144 + j; d[38144 + j] = D[149][j];}\nD[150] = \"�����������������������������������������������������������������뺸뺹뺺뺻뺼뺽뺾뺿뻀뻁뻂뻃뻄뻅뻆뻇뻈뻉뻊뻋뻌뻍뻎뻏뻒뻓������뻕뻖뻙뻚뻛뻜뻝뻞뻟뻡뻢뻦뻧뻨뻩뻪뻫뻭뻮뻯뻰뻱뻲뻳뻴뻵������뻶뻷뻸뻹뻺뻻뻼뻽뻾뻿뼀뼂뼃뼄뼅뼆뼇뼊뼋뼌뼍뼎뼏뼐뼑뼒뼓뼔뼕뼖뼗뼚뼞뼟뼠뼡뼢뼣뼤뼥뼦뼧뼨뼩뼪뼫뼬뼭뼮뼯뼰뼱뼲뼳뼴뼵뼶뼷뼸뼹뼺뼻뼼뼽뼾뼿뽂뽃뽅뽆뽇뽉뽊뽋뽌뽍뽎뽏뽒뽓뽔뽖뽗뽘뽙뽚뽛뽜뽝뽞뽟뽠뽡뽢뽣뽤뽥뽦뽧뽨뽩뽪뽫뽬뽭뽮뽯뽰뽱뽲뽳뽴뽵뽶뽷뽸뽹뽺뽻뽼뽽뽾뽿뾀뾁뾂�\".split(\"\");\nfor(j = 0; j != D[150].length; ++j) if(D[150][j].charCodeAt(0) !== 0xFFFD) { e[D[150][j]] = 38400 + j; d[38400 + j] = D[150][j];}\nD[151] = \"�����������������������������������������������������������������뾃뾄뾅뾆뾇뾈뾉뾊뾋뾌뾍뾎뾏뾐뾑뾒뾓뾕뾖뾗뾘뾙뾚뾛뾜뾝������뾞뾟뾠뾡뾢뾣뾤뾥뾦뾧뾨뾩뾪뾫뾬뾭뾮뾯뾱뾲뾳뾴뾵뾶뾷뾸������뾹뾺뾻뾼뾽뾾뾿뿀뿁뿂뿃뿄뿆뿇뿈뿉뿊뿋뿎뿏뿑뿒뿓뿕뿖뿗뿘뿙뿚뿛뿝뿞뿠뿢뿣뿤뿥뿦뿧뿨뿩뿪뿫뿬뿭뿮뿯뿰뿱뿲뿳뿴뿵뿶뿷뿸뿹뿺뿻뿼뿽뿾뿿쀀쀁쀂쀃쀄쀅쀆쀇쀈쀉쀊쀋쀌쀍쀎쀏쀐쀑쀒쀓쀔쀕쀖쀗쀘쀙쀚쀛쀜쀝쀞쀟쀠쀡쀢쀣쀤쀥쀦쀧쀨쀩쀪쀫쀬쀭쀮쀯쀰쀱쀲쀳쀴쀵쀶쀷쀸쀹쀺쀻쀽쀾쀿�\".split(\"\");\nfor(j = 0; j != D[151].length; ++j) if(D[151][j].charCodeAt(0) !== 0xFFFD) { e[D[151][j]] = 38656 + j; d[38656 + j] = D[151][j];}\nD[152] = \"�����������������������������������������������������������������쁀쁁쁂쁃쁄쁅쁆쁇쁈쁉쁊쁋쁌쁍쁎쁏쁐쁒쁓쁔쁕쁖쁗쁙쁚쁛������쁝쁞쁟쁡쁢쁣쁤쁥쁦쁧쁪쁫쁬쁭쁮쁯쁰쁱쁲쁳쁴쁵쁶쁷쁸쁹������쁺쁻쁼쁽쁾쁿삀삁삂삃삄삅삆삇삈삉삊삋삌삍삎삏삒삓삕삖삗삙삚삛삜삝삞삟삢삤삦삧삨삩삪삫삮삱삲삷삸삹삺삻삾샂샃샄샆샇샊샋샍샎샏샑샒샓샔샕샖샗샚샞샟샠샡샢샣샦샧샩샪샫샭샮샯샰샱샲샳샶샸샺샻샼샽샾샿섁섂섃섅섆섇섉섊섋섌섍섎섏섑섒섓섔섖섗섘섙섚섛섡섢섥섨섩섪섫섮�\".split(\"\");\nfor(j = 0; j != D[152].length; ++j) if(D[152][j].charCodeAt(0) !== 0xFFFD) { e[D[152][j]] = 38912 + j; d[38912 + j] = D[152][j];}\nD[153] = \"�����������������������������������������������������������������섲섳섴섵섷섺섻섽섾섿셁셂셃셄셅셆셇셊셎셏셐셑셒셓셖셗������셙셚셛셝셞셟셠셡셢셣셦셪셫셬셭셮셯셱셲셳셵셶셷셹셺셻������셼셽셾셿솀솁솂솃솄솆솇솈솉솊솋솏솑솒솓솕솗솘솙솚솛솞솠솢솣솤솦솧솪솫솭솮솯솱솲솳솴솵솶솷솸솹솺솻솼솾솿쇀쇁쇂쇃쇅쇆쇇쇉쇊쇋쇍쇎쇏쇐쇑쇒쇓쇕쇖쇙쇚쇛쇜쇝쇞쇟쇡쇢쇣쇥쇦쇧쇩쇪쇫쇬쇭쇮쇯쇲쇴쇵쇶쇷쇸쇹쇺쇻쇾쇿숁숂숃숅숆숇숈숉숊숋숎숐숒숓숔숕숖숗숚숛숝숞숡숢숣�\".split(\"\");\nfor(j = 0; j != D[153].length; ++j) if(D[153][j].charCodeAt(0) !== 0xFFFD) { e[D[153][j]] = 39168 + j; d[39168 + j] = D[153][j];}\nD[154] = \"�����������������������������������������������������������������숤숥숦숧숪숬숮숰숳숵숶숷숸숹숺숻숼숽숾숿쉀쉁쉂쉃쉄쉅������쉆쉇쉉쉊쉋쉌쉍쉎쉏쉒쉓쉕쉖쉗쉙쉚쉛쉜쉝쉞쉟쉡쉢쉣쉤쉦������쉧쉨쉩쉪쉫쉮쉯쉱쉲쉳쉵쉶쉷쉸쉹쉺쉻쉾슀슂슃슄슅슆슇슊슋슌슍슎슏슑슒슓슔슕슖슗슙슚슜슞슟슠슡슢슣슦슧슩슪슫슮슯슰슱슲슳슶슸슺슻슼슽슾슿싀싁싂싃싄싅싆싇싈싉싊싋싌싍싎싏싐싑싒싓싔싕싖싗싘싙싚싛싞싟싡싢싥싦싧싨싩싪싮싰싲싳싴싵싷싺싽싾싿쌁쌂쌃쌄쌅쌆쌇쌊쌋쌎쌏�\".split(\"\");\nfor(j = 0; j != D[154].length; ++j) if(D[154][j].charCodeAt(0) !== 0xFFFD) { e[D[154][j]] = 39424 + j; d[39424 + j] = D[154][j];}\nD[155] = \"�����������������������������������������������������������������쌐쌑쌒쌖쌗쌙쌚쌛쌝쌞쌟쌠쌡쌢쌣쌦쌧쌪쌫쌬쌭쌮쌯쌰쌱쌲������쌳쌴쌵쌶쌷쌸쌹쌺쌻쌼쌽쌾쌿썀썁썂썃썄썆썇썈썉썊썋썌썍������썎썏썐썑썒썓썔썕썖썗썘썙썚썛썜썝썞썟썠썡썢썣썤썥썦썧썪썫썭썮썯썱썳썴썵썶썷썺썻썾썿쎀쎁쎂쎃쎅쎆쎇쎉쎊쎋쎍쎎쎏쎐쎑쎒쎓쎔쎕쎖쎗쎘쎙쎚쎛쎜쎝쎞쎟쎠쎡쎢쎣쎤쎥쎦쎧쎨쎩쎪쎫쎬쎭쎮쎯쎰쎱쎲쎳쎴쎵쎶쎷쎸쎹쎺쎻쎼쎽쎾쎿쏁쏂쏃쏄쏅쏆쏇쏈쏉쏊쏋쏌쏍쏎쏏쏐쏑쏒쏓쏔쏕쏖쏗쏚�\".split(\"\");\nfor(j = 0; j != D[155].length; ++j) if(D[155][j].charCodeAt(0) !== 0xFFFD) { e[D[155][j]] = 39680 + j; d[39680 + j] = D[155][j];}\nD[156] = \"�����������������������������������������������������������������쏛쏝쏞쏡쏣쏤쏥쏦쏧쏪쏫쏬쏮쏯쏰쏱쏲쏳쏶쏷쏹쏺쏻쏼쏽쏾������쏿쐀쐁쐂쐃쐄쐅쐆쐇쐉쐊쐋쐌쐍쐎쐏쐑쐒쐓쐔쐕쐖쐗쐘쐙쐚������쐛쐜쐝쐞쐟쐠쐡쐢쐣쐥쐦쐧쐨쐩쐪쐫쐭쐮쐯쐱쐲쐳쐵쐶쐷쐸쐹쐺쐻쐾쐿쑀쑁쑂쑃쑄쑅쑆쑇쑉쑊쑋쑌쑍쑎쑏쑐쑑쑒쑓쑔쑕쑖쑗쑘쑙쑚쑛쑜쑝쑞쑟쑠쑡쑢쑣쑦쑧쑩쑪쑫쑭쑮쑯쑰쑱쑲쑳쑶쑷쑸쑺쑻쑼쑽쑾쑿쒁쒂쒃쒄쒅쒆쒇쒈쒉쒊쒋쒌쒍쒎쒏쒐쒑쒒쒓쒕쒖쒗쒘쒙쒚쒛쒝쒞쒟쒠쒡쒢쒣쒤쒥쒦쒧쒨쒩�\".split(\"\");\nfor(j = 0; j != D[156].length; ++j) if(D[156][j].charCodeAt(0) !== 0xFFFD) { e[D[156][j]] = 39936 + j; d[39936 + j] = D[156][j];}\nD[157] = \"�����������������������������������������������������������������쒪쒫쒬쒭쒮쒯쒰쒱쒲쒳쒴쒵쒶쒷쒹쒺쒻쒽쒾쒿쓀쓁쓂쓃쓄쓅������쓆쓇쓈쓉쓊쓋쓌쓍쓎쓏쓐쓑쓒쓓쓔쓕쓖쓗쓘쓙쓚쓛쓜쓝쓞쓟������쓠쓡쓢쓣쓤쓥쓦쓧쓨쓪쓫쓬쓭쓮쓯쓲쓳쓵쓶쓷쓹쓻쓼쓽쓾씂씃씄씅씆씇씈씉씊씋씍씎씏씑씒씓씕씖씗씘씙씚씛씝씞씟씠씡씢씣씤씥씦씧씪씫씭씮씯씱씲씳씴씵씶씷씺씼씾씿앀앁앂앃앆앇앋앏앐앑앒앖앚앛앜앟앢앣앥앦앧앩앪앫앬앭앮앯앲앶앷앸앹앺앻앾앿얁얂얃얅얆얈얉얊얋얎얐얒얓얔�\".split(\"\");\nfor(j = 0; j != D[157].length; ++j) if(D[157][j].charCodeAt(0) !== 0xFFFD) { e[D[157][j]] = 40192 + j; d[40192 + j] = D[157][j];}\nD[158] = \"�����������������������������������������������������������������얖얙얚얛얝얞얟얡얢얣얤얥얦얧얨얪얫얬얭얮얯얰얱얲얳얶������얷얺얿엀엁엂엃엋엍엏엒엓엕엖엗엙엚엛엜엝엞엟엢엤엦엧������엨엩엪엫엯엱엲엳엵엸엹엺엻옂옃옄옉옊옋옍옎옏옑옒옓옔옕옖옗옚옝옞옟옠옡옢옣옦옧옩옪옫옯옱옲옶옸옺옼옽옾옿왂왃왅왆왇왉왊왋왌왍왎왏왒왖왗왘왙왚왛왞왟왡왢왣왤왥왦왧왨왩왪왫왭왮왰왲왳왴왵왶왷왺왻왽왾왿욁욂욃욄욅욆욇욊욌욎욏욐욑욒욓욖욗욙욚욛욝욞욟욠욡욢욣욦�\".split(\"\");\nfor(j = 0; j != D[158].length; ++j) if(D[158][j].charCodeAt(0) !== 0xFFFD) { e[D[158][j]] = 40448 + j; d[40448 + j] = D[158][j];}\nD[159] = \"�����������������������������������������������������������������욨욪욫욬욭욮욯욲욳욵욶욷욻욼욽욾욿웂웄웆웇웈웉웊웋웎������웏웑웒웓웕웖웗웘웙웚웛웞웟웢웣웤웥웦웧웪웫웭웮웯웱웲������웳웴웵웶웷웺웻웼웾웿윀윁윂윃윆윇윉윊윋윍윎윏윐윑윒윓윖윘윚윛윜윝윞윟윢윣윥윦윧윩윪윫윬윭윮윯윲윴윶윸윹윺윻윾윿읁읂읃읅읆읇읈읉읋읎읐읙읚읛읝읞읟읡읢읣읤읥읦읧읩읪읬읭읮읯읰읱읲읳읶읷읹읺읻읿잀잁잂잆잋잌잍잏잒잓잕잙잛잜잝잞잟잢잧잨잩잪잫잮잯잱잲잳잵잶잷�\".split(\"\");\nfor(j = 0; j != D[159].length; ++j) if(D[159][j].charCodeAt(0) !== 0xFFFD) { e[D[159][j]] = 40704 + j; d[40704 + j] = D[159][j];}\nD[160] = \"�����������������������������������������������������������������잸잹잺잻잾쟂쟃쟄쟅쟆쟇쟊쟋쟍쟏쟑쟒쟓쟔쟕쟖쟗쟙쟚쟛쟜������쟞쟟쟠쟡쟢쟣쟥쟦쟧쟩쟪쟫쟭쟮쟯쟰쟱쟲쟳쟴쟵쟶쟷쟸쟹쟺������쟻쟼쟽쟾쟿젂젃젅젆젇젉젋젌젍젎젏젒젔젗젘젙젚젛젞젟젡젢젣젥젦젧젨젩젪젫젮젰젲젳젴젵젶젷젹젺젻젽젾젿졁졂졃졄졅졆졇졊졋졎졏졐졑졒졓졕졖졗졘졙졚졛졜졝졞졟졠졡졢졣졤졥졦졧졨졩졪졫졬졭졮졯졲졳졵졶졷졹졻졼졽졾졿좂좄좈좉좊좎좏좐좑좒좓좕좖좗좘좙좚좛좜좞좠좢좣좤�\".split(\"\");\nfor(j = 0; j != D[160].length; ++j) if(D[160][j].charCodeAt(0) !== 0xFFFD) { e[D[160][j]] = 40960 + j; d[40960 + j] = D[160][j];}\nD[161] = \"�����������������������������������������������������������������좥좦좧좩좪좫좬좭좮좯좰좱좲좳좴좵좶좷좸좹좺좻좾좿죀죁������죂죃죅죆죇죉죊죋죍죎죏죐죑죒죓죖죘죚죛죜죝죞죟죢죣죥������죦죧죨죩죪죫죬죭죮죯죰죱죲죳죴죶죷죸죹죺죻죾죿줁줂줃줇줈줉줊줋줎　、。·‥…¨〃­―∥＼∼‘’“”〔〕〈〉《》「」『』【】±×÷≠≤≥∞∴°′″℃Å￠￡￥♂♀∠⊥⌒∂∇≡≒§※☆★○●◎◇◆□■△▲▽▼→←↑↓↔〓≪≫√∽∝∵∫∬∈∋⊆⊇⊂⊃∪∩∧∨￢�\".split(\"\");\nfor(j = 0; j != D[161].length; ++j) if(D[161][j].charCodeAt(0) !== 0xFFFD) { e[D[161][j]] = 41216 + j; d[41216 + j] = D[161][j];}\nD[162] = \"�����������������������������������������������������������������줐줒줓줔줕줖줗줙줚줛줜줝줞줟줠줡줢줣줤줥줦줧줨줩줪줫������줭줮줯줰줱줲줳줵줶줷줸줹줺줻줼줽줾줿쥀쥁쥂쥃쥄쥅쥆쥇������쥈쥉쥊쥋쥌쥍쥎쥏쥒쥓쥕쥖쥗쥙쥚쥛쥜쥝쥞쥟쥢쥤쥥쥦쥧쥨쥩쥪쥫쥭쥮쥯⇒⇔∀∃´～ˇ˘˝˚˙¸˛¡¿ː∮∑∏¤℉‰◁◀▷▶♤♠♡♥♧♣⊙◈▣◐◑▒▤▥▨▧▦▩♨☏☎☜☞¶†‡↕↗↙↖↘♭♩♪♬㉿㈜№㏇™㏂㏘℡€®������������������������\".split(\"\");\nfor(j = 0; j != D[162].length; ++j) if(D[162][j].charCodeAt(0) !== 0xFFFD) { e[D[162][j]] = 41472 + j; d[41472 + j] = D[162][j];}\nD[163] = \"�����������������������������������������������������������������쥱쥲쥳쥵쥶쥷쥸쥹쥺쥻쥽쥾쥿즀즁즂즃즄즅즆즇즊즋즍즎즏������즑즒즓즔즕즖즗즚즜즞즟즠즡즢즣즤즥즦즧즨즩즪즫즬즭즮������즯즰즱즲즳즴즵즶즷즸즹즺즻즼즽즾즿짂짃짅짆짉짋짌짍짎짏짒짔짗짘짛！＂＃＄％＆＇（）＊＋，－．／０１２３４５６７８９：；＜＝＞？＠ＡＢＣＤＥＦＧＨＩＪＫＬＭＮＯＰＱＲＳＴＵＶＷＸＹＺ［￦］＾＿｀ａｂｃｄｅｆｇｈｉｊｋｌｍｎｏｐｑｒｓｔｕｖｗｘｙｚ｛｜｝￣�\".split(\"\");\nfor(j = 0; j != D[163].length; ++j) if(D[163][j].charCodeAt(0) !== 0xFFFD) { e[D[163][j]] = 41728 + j; d[41728 + j] = D[163][j];}\nD[164] = \"�����������������������������������������������������������������짞짟짡짣짥짦짨짩짪짫짮짲짳짴짵짶짷짺짻짽짾짿쨁쨂쨃쨄������쨅쨆쨇쨊쨎쨏쨐쨑쨒쨓쨕쨖쨗쨙쨚쨛쨜쨝쨞쨟쨠쨡쨢쨣쨤쨥������쨦쨧쨨쨪쨫쨬쨭쨮쨯쨰쨱쨲쨳쨴쨵쨶쨷쨸쨹쨺쨻쨼쨽쨾쨿쩀쩁쩂쩃쩄쩅쩆ㄱㄲㄳㄴㄵㄶㄷㄸㄹㄺㄻㄼㄽㄾㄿㅀㅁㅂㅃㅄㅅㅆㅇㅈㅉㅊㅋㅌㅍㅎㅏㅐㅑㅒㅓㅔㅕㅖㅗㅘㅙㅚㅛㅜㅝㅞㅟㅠㅡㅢㅣㅤㅥㅦㅧㅨㅩㅪㅫㅬㅭㅮㅯㅰㅱㅲㅳㅴㅵㅶㅷㅸㅹㅺㅻㅼㅽㅾㅿㆀㆁㆂㆃㆄㆅㆆㆇㆈㆉㆊㆋㆌㆍㆎ�\".split(\"\");\nfor(j = 0; j != D[164].length; ++j) if(D[164][j].charCodeAt(0) !== 0xFFFD) { e[D[164][j]] = 41984 + j; d[41984 + j] = D[164][j];}\nD[165] = \"�����������������������������������������������������������������쩇쩈쩉쩊쩋쩎쩏쩑쩒쩓쩕쩖쩗쩘쩙쩚쩛쩞쩢쩣쩤쩥쩦쩧쩩쩪������쩫쩬쩭쩮쩯쩰쩱쩲쩳쩴쩵쩶쩷쩸쩹쩺쩻쩼쩾쩿쪀쪁쪂쪃쪅쪆������쪇쪈쪉쪊쪋쪌쪍쪎쪏쪐쪑쪒쪓쪔쪕쪖쪗쪙쪚쪛쪜쪝쪞쪟쪠쪡쪢쪣쪤쪥쪦쪧ⅰⅱⅲⅳⅴⅵⅶⅷⅸⅹ�����ⅠⅡⅢⅣⅤⅥⅦⅧⅨⅩ�������ΑΒΓΔΕΖΗΘΙΚΛΜΝΞΟΠΡΣΤΥΦΧΨΩ��������αβγδεζηθικλμνξοπρστυφχψω�������\".split(\"\");\nfor(j = 0; j != D[165].length; ++j) if(D[165][j].charCodeAt(0) !== 0xFFFD) { e[D[165][j]] = 42240 + j; d[42240 + j] = D[165][j];}\nD[166] = \"�����������������������������������������������������������������쪨쪩쪪쪫쪬쪭쪮쪯쪰쪱쪲쪳쪴쪵쪶쪷쪸쪹쪺쪻쪾쪿쫁쫂쫃쫅������쫆쫇쫈쫉쫊쫋쫎쫐쫒쫔쫕쫖쫗쫚쫛쫜쫝쫞쫟쫡쫢쫣쫤쫥쫦쫧������쫨쫩쫪쫫쫭쫮쫯쫰쫱쫲쫳쫵쫶쫷쫸쫹쫺쫻쫼쫽쫾쫿쬀쬁쬂쬃쬄쬅쬆쬇쬉쬊─│┌┐┘└├┬┤┴┼━┃┏┓┛┗┣┳┫┻╋┠┯┨┷┿┝┰┥┸╂┒┑┚┙┖┕┎┍┞┟┡┢┦┧┩┪┭┮┱┲┵┶┹┺┽┾╀╁╃╄╅╆╇╈╉╊���������������������������\".split(\"\");\nfor(j = 0; j != D[166].length; ++j) if(D[166][j].charCodeAt(0) !== 0xFFFD) { e[D[166][j]] = 42496 + j; d[42496 + j] = D[166][j];}\nD[167] = \"�����������������������������������������������������������������쬋쬌쬍쬎쬏쬑쬒쬓쬕쬖쬗쬙쬚쬛쬜쬝쬞쬟쬢쬣쬤쬥쬦쬧쬨쬩������쬪쬫쬬쬭쬮쬯쬰쬱쬲쬳쬴쬵쬶쬷쬸쬹쬺쬻쬼쬽쬾쬿쭀쭂쭃쭄������쭅쭆쭇쭊쭋쭍쭎쭏쭑쭒쭓쭔쭕쭖쭗쭚쭛쭜쭞쭟쭠쭡쭢쭣쭥쭦쭧쭨쭩쭪쭫쭬㎕㎖㎗ℓ㎘㏄㎣㎤㎥㎦㎙㎚㎛㎜㎝㎞㎟㎠㎡㎢㏊㎍㎎㎏㏏㎈㎉㏈㎧㎨㎰㎱㎲㎳㎴㎵㎶㎷㎸㎹㎀㎁㎂㎃㎄㎺㎻㎼㎽㎾㎿㎐㎑㎒㎓㎔Ω㏀㏁㎊㎋㎌㏖㏅㎭㎮㎯㏛㎩㎪㎫㎬㏝㏐㏓㏃㏉㏜㏆����������������\".split(\"\");\nfor(j = 0; j != D[167].length; ++j) if(D[167][j].charCodeAt(0) !== 0xFFFD) { e[D[167][j]] = 42752 + j; d[42752 + j] = D[167][j];}\nD[168] = \"�����������������������������������������������������������������쭭쭮쭯쭰쭱쭲쭳쭴쭵쭶쭷쭺쭻쭼쭽쭾쭿쮀쮁쮂쮃쮄쮅쮆쮇쮈������쮉쮊쮋쮌쮍쮎쮏쮐쮑쮒쮓쮔쮕쮖쮗쮘쮙쮚쮛쮝쮞쮟쮠쮡쮢쮣������쮤쮥쮦쮧쮨쮩쮪쮫쮬쮭쮮쮯쮰쮱쮲쮳쮴쮵쮶쮷쮹쮺쮻쮼쮽쮾쮿쯀쯁쯂쯃쯄ÆÐªĦ�Ĳ�ĿŁØŒºÞŦŊ�㉠㉡㉢㉣㉤㉥㉦㉧㉨㉩㉪㉫㉬㉭㉮㉯㉰㉱㉲㉳㉴㉵㉶㉷㉸㉹㉺㉻ⓐⓑⓒⓓⓔⓕⓖⓗⓘⓙⓚⓛⓜⓝⓞⓟⓠⓡⓢⓣⓤⓥⓦⓧⓨⓩ①②③④⑤⑥⑦⑧⑨⑩⑪⑫⑬⑭⑮½⅓⅔¼¾⅛⅜⅝⅞�\".split(\"\");\nfor(j = 0; j != D[168].length; ++j) if(D[168][j].charCodeAt(0) !== 0xFFFD) { e[D[168][j]] = 43008 + j; d[43008 + j] = D[168][j];}\nD[169] = \"�����������������������������������������������������������������쯅쯆쯇쯈쯉쯊쯋쯌쯍쯎쯏쯐쯑쯒쯓쯕쯖쯗쯘쯙쯚쯛쯜쯝쯞쯟������쯠쯡쯢쯣쯥쯦쯨쯪쯫쯬쯭쯮쯯쯰쯱쯲쯳쯴쯵쯶쯷쯸쯹쯺쯻쯼������쯽쯾쯿찀찁찂찃찄찅찆찇찈찉찊찋찎찏찑찒찓찕찖찗찘찙찚찛찞찟찠찣찤æđðħıĳĸŀłøœßþŧŋŉ㈀㈁㈂㈃㈄㈅㈆㈇㈈㈉㈊㈋㈌㈍㈎㈏㈐㈑㈒㈓㈔㈕㈖㈗㈘㈙㈚㈛⒜⒝⒞⒟⒠⒡⒢⒣⒤⒥⒦⒧⒨⒩⒪⒫⒬⒭⒮⒯⒰⒱⒲⒳⒴⒵⑴⑵⑶⑷⑸⑹⑺⑻⑼⑽⑾⑿⒀⒁⒂¹²³⁴ⁿ₁₂₃₄�\".split(\"\");\nfor(j = 0; j != D[169].length; ++j) if(D[169][j].charCodeAt(0) !== 0xFFFD) { e[D[169][j]] = 43264 + j; d[43264 + j] = D[169][j];}\nD[170] = \"�����������������������������������������������������������������찥찦찪찫찭찯찱찲찳찴찵찶찷찺찿챀챁챂챃챆챇챉챊챋챍챎������챏챐챑챒챓챖챚챛챜챝챞챟챡챢챣챥챧챩챪챫챬챭챮챯챱챲������챳챴챶챷챸챹챺챻챼챽챾챿첀첁첂첃첄첅첆첇첈첉첊첋첌첍첎첏첐첑첒첓ぁあぃいぅうぇえぉおかがきぎくぐけげこごさざしじすずせぜそぞただちぢっつづてでとどなにぬねのはばぱひびぴふぶぷへべぺほぼぽまみむめもゃやゅゆょよらりるれろゎわゐゑをん������������\".split(\"\");\nfor(j = 0; j != D[170].length; ++j) if(D[170][j].charCodeAt(0) !== 0xFFFD) { e[D[170][j]] = 43520 + j; d[43520 + j] = D[170][j];}\nD[171] = \"�����������������������������������������������������������������첔첕첖첗첚첛첝첞첟첡첢첣첤첥첦첧첪첮첯첰첱첲첳첶첷첹������첺첻첽첾첿쳀쳁쳂쳃쳆쳈쳊쳋쳌쳍쳎쳏쳑쳒쳓쳕쳖쳗쳘쳙쳚������쳛쳜쳝쳞쳟쳠쳡쳢쳣쳥쳦쳧쳨쳩쳪쳫쳭쳮쳯쳱쳲쳳쳴쳵쳶쳷쳸쳹쳺쳻쳼쳽ァアィイゥウェエォオカガキギクグケゲコゴサザシジスズセゼソゾタダチヂッツヅテデトドナニヌネノハバパヒビピフブプヘベペホボポマミムメモャヤュユョヨラリルレロヮワヰヱヲンヴヵヶ���������\".split(\"\");\nfor(j = 0; j != D[171].length; ++j) if(D[171][j].charCodeAt(0) !== 0xFFFD) { e[D[171][j]] = 43776 + j; d[43776 + j] = D[171][j];}\nD[172] = \"�����������������������������������������������������������������쳾쳿촀촂촃촄촅촆촇촊촋촍촎촏촑촒촓촔촕촖촗촚촜촞촟촠������촡촢촣촥촦촧촩촪촫촭촮촯촰촱촲촳촴촵촶촷촸촺촻촼촽촾������촿쵀쵁쵂쵃쵄쵅쵆쵇쵈쵉쵊쵋쵌쵍쵎쵏쵐쵑쵒쵓쵔쵕쵖쵗쵘쵙쵚쵛쵝쵞쵟АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ���������������абвгдеёжзийклмнопрстуфхцчшщъыьэюя��������������\".split(\"\");\nfor(j = 0; j != D[172].length; ++j) if(D[172][j].charCodeAt(0) !== 0xFFFD) { e[D[172][j]] = 44032 + j; d[44032 + j] = D[172][j];}\nD[173] = \"�����������������������������������������������������������������쵡쵢쵣쵥쵦쵧쵨쵩쵪쵫쵮쵰쵲쵳쵴쵵쵶쵷쵹쵺쵻쵼쵽쵾쵿춀������춁춂춃춄춅춆춇춉춊춋춌춍춎춏춐춑춒춓춖춗춙춚춛춝춞춟������춠춡춢춣춦춨춪춫춬춭춮춯춱춲춳춴춵춶춷춸춹춺춻춼춽춾춿췀췁췂췃췅�����������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[173].length; ++j) if(D[173][j].charCodeAt(0) !== 0xFFFD) { e[D[173][j]] = 44288 + j; d[44288 + j] = D[173][j];}\nD[174] = \"�����������������������������������������������������������������췆췇췈췉췊췋췍췎췏췑췒췓췔췕췖췗췘췙췚췛췜췝췞췟췠췡������췢췣췤췥췦췧췩췪췫췭췮췯췱췲췳췴췵췶췷췺췼췾췿츀츁츂������츃츅츆츇츉츊츋츍츎츏츐츑츒츓츕츖츗츘츚츛츜츝츞츟츢츣츥츦츧츩츪츫�����������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[174].length; ++j) if(D[174][j].charCodeAt(0) !== 0xFFFD) { e[D[174][j]] = 44544 + j; d[44544 + j] = D[174][j];}\nD[175] = \"�����������������������������������������������������������������츬츭츮츯츲츴츶츷츸츹츺츻츼츽츾츿칀칁칂칃칄칅칆칇칈칉������칊칋칌칍칎칏칐칑칒칓칔칕칖칗칚칛칝칞칢칣칤칥칦칧칪칬������칮칯칰칱칲칳칶칷칹칺칻칽칾칿캀캁캂캃캆캈캊캋캌캍캎캏캒캓캕캖캗캙�����������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[175].length; ++j) if(D[175][j].charCodeAt(0) !== 0xFFFD) { e[D[175][j]] = 44800 + j; d[44800 + j] = D[175][j];}\nD[176] = \"�����������������������������������������������������������������캚캛캜캝캞캟캢캦캧캨캩캪캫캮캯캰캱캲캳캴캵캶캷캸캹캺������캻캼캽캾캿컀컂컃컄컅컆컇컈컉컊컋컌컍컎컏컐컑컒컓컔컕������컖컗컘컙컚컛컜컝컞컟컠컡컢컣컦컧컩컪컭컮컯컰컱컲컳컶컺컻컼컽컾컿가각간갇갈갉갊감갑값갓갔강갖갗같갚갛개객갠갤갬갭갯갰갱갸갹갼걀걋걍걔걘걜거걱건걷걸걺검겁것겄겅겆겉겊겋게겐겔겜겝겟겠겡겨격겪견겯결겸겹겻겼경곁계곈곌곕곗고곡곤곧골곪곬곯곰곱곳공곶과곽관괄괆�\".split(\"\");\nfor(j = 0; j != D[176].length; ++j) if(D[176][j].charCodeAt(0) !== 0xFFFD) { e[D[176][j]] = 45056 + j; d[45056 + j] = D[176][j];}\nD[177] = \"�����������������������������������������������������������������켂켃켅켆켇켉켊켋켌켍켎켏켒켔켖켗켘켙켚켛켝켞켟켡켢켣������켥켦켧켨켩켪켫켮켲켳켴켵켶켷켹켺켻켼켽켾켿콀콁콂콃콄������콅콆콇콈콉콊콋콌콍콎콏콐콑콒콓콖콗콙콚콛콝콞콟콠콡콢콣콦콨콪콫콬괌괍괏광괘괜괠괩괬괭괴괵괸괼굄굅굇굉교굔굘굡굣구국군굳굴굵굶굻굼굽굿궁궂궈궉권궐궜궝궤궷귀귁귄귈귐귑귓규균귤그극근귿글긁금급긋긍긔기긱긴긷길긺김깁깃깅깆깊까깍깎깐깔깖깜깝깟깠깡깥깨깩깬깰깸�\".split(\"\");\nfor(j = 0; j != D[177].length; ++j) if(D[177][j].charCodeAt(0) !== 0xFFFD) { e[D[177][j]] = 45312 + j; d[45312 + j] = D[177][j];}\nD[178] = \"�����������������������������������������������������������������콭콮콯콲콳콵콶콷콹콺콻콼콽콾콿쾁쾂쾃쾄쾆쾇쾈쾉쾊쾋쾍������쾎쾏쾐쾑쾒쾓쾔쾕쾖쾗쾘쾙쾚쾛쾜쾝쾞쾟쾠쾢쾣쾤쾥쾦쾧쾩������쾪쾫쾬쾭쾮쾯쾱쾲쾳쾴쾵쾶쾷쾸쾹쾺쾻쾼쾽쾾쾿쿀쿁쿂쿃쿅쿆쿇쿈쿉쿊쿋깹깻깼깽꺄꺅꺌꺼꺽꺾껀껄껌껍껏껐껑께껙껜껨껫껭껴껸껼꼇꼈꼍꼐꼬꼭꼰꼲꼴꼼꼽꼿꽁꽂꽃꽈꽉꽐꽜꽝꽤꽥꽹꾀꾄꾈꾐꾑꾕꾜꾸꾹꾼꿀꿇꿈꿉꿋꿍꿎꿔꿜꿨꿩꿰꿱꿴꿸뀀뀁뀄뀌뀐뀔뀜뀝뀨끄끅끈끊끌끎끓끔끕끗끙�\".split(\"\");\nfor(j = 0; j != D[178].length; ++j) if(D[178][j].charCodeAt(0) !== 0xFFFD) { e[D[178][j]] = 45568 + j; d[45568 + j] = D[178][j];}\nD[179] = \"�����������������������������������������������������������������쿌쿍쿎쿏쿐쿑쿒쿓쿔쿕쿖쿗쿘쿙쿚쿛쿜쿝쿞쿟쿢쿣쿥쿦쿧쿩������쿪쿫쿬쿭쿮쿯쿲쿴쿶쿷쿸쿹쿺쿻쿽쿾쿿퀁퀂퀃퀅퀆퀇퀈퀉퀊������퀋퀌퀍퀎퀏퀐퀒퀓퀔퀕퀖퀗퀙퀚퀛퀜퀝퀞퀟퀠퀡퀢퀣퀤퀥퀦퀧퀨퀩퀪퀫퀬끝끼끽낀낄낌낍낏낑나낙낚난낟날낡낢남납낫났낭낮낯낱낳내낵낸낼냄냅냇냈냉냐냑냔냘냠냥너넉넋넌널넒넓넘넙넛넜넝넣네넥넨넬넴넵넷넸넹녀녁년녈념녑녔녕녘녜녠노녹논놀놂놈놉놋농높놓놔놘놜놨뇌뇐뇔뇜뇝�\".split(\"\");\nfor(j = 0; j != D[179].length; ++j) if(D[179][j].charCodeAt(0) !== 0xFFFD) { e[D[179][j]] = 45824 + j; d[45824 + j] = D[179][j];}\nD[180] = \"�����������������������������������������������������������������퀮퀯퀰퀱퀲퀳퀶퀷퀹퀺퀻퀽퀾퀿큀큁큂큃큆큈큊큋큌큍큎큏������큑큒큓큕큖큗큙큚큛큜큝큞큟큡큢큣큤큥큦큧큨큩큪큫큮큯������큱큲큳큵큶큷큸큹큺큻큾큿킀킂킃킄킅킆킇킈킉킊킋킌킍킎킏킐킑킒킓킔뇟뇨뇩뇬뇰뇹뇻뇽누눅눈눋눌눔눕눗눙눠눴눼뉘뉜뉠뉨뉩뉴뉵뉼늄늅늉느늑는늘늙늚늠늡늣능늦늪늬늰늴니닉닌닐닒님닙닛닝닢다닥닦단닫달닭닮닯닳담답닷닸당닺닻닿대댁댄댈댐댑댓댔댕댜더덕덖던덛덜덞덟덤덥�\".split(\"\");\nfor(j = 0; j != D[180].length; ++j) if(D[180][j].charCodeAt(0) !== 0xFFFD) { e[D[180][j]] = 46080 + j; d[46080 + j] = D[180][j];}\nD[181] = \"�����������������������������������������������������������������킕킖킗킘킙킚킛킜킝킞킟킠킡킢킣킦킧킩킪킫킭킮킯킰킱킲������킳킶킸킺킻킼킽킾킿탂탃탅탆탇탊탋탌탍탎탏탒탖탗탘탙탚������탛탞탟탡탢탣탥탦탧탨탩탪탫탮탲탳탴탵탶탷탹탺탻탼탽탾탿턀턁턂턃턄덧덩덫덮데덱덴델뎀뎁뎃뎄뎅뎌뎐뎔뎠뎡뎨뎬도독돈돋돌돎돐돔돕돗동돛돝돠돤돨돼됐되된될됨됩됫됴두둑둔둘둠둡둣둥둬뒀뒈뒝뒤뒨뒬뒵뒷뒹듀듄듈듐듕드득든듣들듦듬듭듯등듸디딕딘딛딜딤딥딧딨딩딪따딱딴딸�\".split(\"\");\nfor(j = 0; j != D[181].length; ++j) if(D[181][j].charCodeAt(0) !== 0xFFFD) { e[D[181][j]] = 46336 + j; d[46336 + j] = D[181][j];}\nD[182] = \"�����������������������������������������������������������������턅턆턇턈턉턊턋턌턎턏턐턑턒턓턔턕턖턗턘턙턚턛턜턝턞턟������턠턡턢턣턤턥턦턧턨턩턪턫턬턭턮턯턲턳턵턶턷턹턻턼턽턾������턿텂텆텇텈텉텊텋텎텏텑텒텓텕텖텗텘텙텚텛텞텠텢텣텤텥텦텧텩텪텫텭땀땁땃땄땅땋때땍땐땔땜땝땟땠땡떠떡떤떨떪떫떰떱떳떴떵떻떼떽뗀뗄뗌뗍뗏뗐뗑뗘뗬또똑똔똘똥똬똴뙈뙤뙨뚜뚝뚠뚤뚫뚬뚱뛔뛰뛴뛸뜀뜁뜅뜨뜩뜬뜯뜰뜸뜹뜻띄띈띌띔띕띠띤띨띰띱띳띵라락란랄람랍랏랐랑랒랖랗�\".split(\"\");\nfor(j = 0; j != D[182].length; ++j) if(D[182][j].charCodeAt(0) !== 0xFFFD) { e[D[182][j]] = 46592 + j; d[46592 + j] = D[182][j];}\nD[183] = \"�����������������������������������������������������������������텮텯텰텱텲텳텴텵텶텷텸텹텺텻텽텾텿톀톁톂톃톅톆톇톉톊������톋톌톍톎톏톐톑톒톓톔톕톖톗톘톙톚톛톜톝톞톟톢톣톥톦톧������톩톪톫톬톭톮톯톲톴톶톷톸톹톻톽톾톿퇁퇂퇃퇄퇅퇆퇇퇈퇉퇊퇋퇌퇍퇎퇏래랙랜랠램랩랫랬랭랴략랸럇량러럭런럴럼럽럿렀렁렇레렉렌렐렘렙렛렝려력련렬렴렵렷렸령례롄롑롓로록론롤롬롭롯롱롸롼뢍뢨뢰뢴뢸룀룁룃룅료룐룔룝룟룡루룩룬룰룸룹룻룽뤄뤘뤠뤼뤽륀륄륌륏륑류륙륜률륨륩�\".split(\"\");\nfor(j = 0; j != D[183].length; ++j) if(D[183][j].charCodeAt(0) !== 0xFFFD) { e[D[183][j]] = 46848 + j; d[46848 + j] = D[183][j];}\nD[184] = \"�����������������������������������������������������������������퇐퇑퇒퇓퇔퇕퇖퇗퇙퇚퇛퇜퇝퇞퇟퇠퇡퇢퇣퇤퇥퇦퇧퇨퇩퇪������퇫퇬퇭퇮퇯퇰퇱퇲퇳퇵퇶퇷퇹퇺퇻퇼퇽퇾퇿툀툁툂툃툄툅툆������툈툊툋툌툍툎툏툑툒툓툔툕툖툗툘툙툚툛툜툝툞툟툠툡툢툣툤툥툦툧툨툩륫륭르륵른를름릅릇릉릊릍릎리릭린릴림립릿링마막만많맏말맑맒맘맙맛망맞맡맣매맥맨맬맴맵맷맸맹맺먀먁먈먕머먹먼멀멂멈멉멋멍멎멓메멕멘멜멤멥멧멨멩며멱면멸몃몄명몇몌모목몫몬몰몲몸몹못몽뫄뫈뫘뫙뫼�\".split(\"\");\nfor(j = 0; j != D[184].length; ++j) if(D[184][j].charCodeAt(0) !== 0xFFFD) { e[D[184][j]] = 47104 + j; d[47104 + j] = D[184][j];}\nD[185] = \"�����������������������������������������������������������������툪툫툮툯툱툲툳툵툶툷툸툹툺툻툾퉀퉂퉃퉄퉅퉆퉇퉉퉊퉋퉌������퉍퉎퉏퉐퉑퉒퉓퉔퉕퉖퉗퉘퉙퉚퉛퉝퉞퉟퉠퉡퉢퉣퉥퉦퉧퉨������퉩퉪퉫퉬퉭퉮퉯퉰퉱퉲퉳퉴퉵퉶퉷퉸퉹퉺퉻퉼퉽퉾퉿튂튃튅튆튇튉튊튋튌묀묄묍묏묑묘묜묠묩묫무묵묶문묻물묽묾뭄뭅뭇뭉뭍뭏뭐뭔뭘뭡뭣뭬뮈뮌뮐뮤뮨뮬뮴뮷므믄믈믐믓미믹민믿밀밂밈밉밋밌밍및밑바박밖밗반받발밝밞밟밤밥밧방밭배백밴밸뱀뱁뱃뱄뱅뱉뱌뱍뱐뱝버벅번벋벌벎범법벗�\".split(\"\");\nfor(j = 0; j != D[185].length; ++j) if(D[185][j].charCodeAt(0) !== 0xFFFD) { e[D[185][j]] = 47360 + j; d[47360 + j] = D[185][j];}\nD[186] = \"�����������������������������������������������������������������튍튎튏튒튓튔튖튗튘튙튚튛튝튞튟튡튢튣튥튦튧튨튩튪튫튭������튮튯튰튲튳튴튵튶튷튺튻튽튾틁틃틄틅틆틇틊틌틍틎틏틐틑������틒틓틕틖틗틙틚틛틝틞틟틠틡틢틣틦틧틨틩틪틫틬틭틮틯틲틳틵틶틷틹틺벙벚베벡벤벧벨벰벱벳벴벵벼벽변별볍볏볐병볕볘볜보복볶본볼봄봅봇봉봐봔봤봬뵀뵈뵉뵌뵐뵘뵙뵤뵨부북분붇불붉붊붐붑붓붕붙붚붜붤붰붸뷔뷕뷘뷜뷩뷰뷴뷸븀븃븅브븍븐블븜븝븟비빅빈빌빎빔빕빗빙빚빛빠빡빤�\".split(\"\");\nfor(j = 0; j != D[186].length; ++j) if(D[186][j].charCodeAt(0) !== 0xFFFD) { e[D[186][j]] = 47616 + j; d[47616 + j] = D[186][j];}\nD[187] = \"�����������������������������������������������������������������틻틼틽틾틿팂팄팆팇팈팉팊팋팏팑팒팓팕팗팘팙팚팛팞팢팣������팤팦팧팪팫팭팮팯팱팲팳팴팵팶팷팺팾팿퍀퍁퍂퍃퍆퍇퍈퍉������퍊퍋퍌퍍퍎퍏퍐퍑퍒퍓퍔퍕퍖퍗퍘퍙퍚퍛퍜퍝퍞퍟퍠퍡퍢퍣퍤퍥퍦퍧퍨퍩빨빪빰빱빳빴빵빻빼빽뺀뺄뺌뺍뺏뺐뺑뺘뺙뺨뻐뻑뻔뻗뻘뻠뻣뻤뻥뻬뼁뼈뼉뼘뼙뼛뼜뼝뽀뽁뽄뽈뽐뽑뽕뾔뾰뿅뿌뿍뿐뿔뿜뿟뿡쀼쁑쁘쁜쁠쁨쁩삐삑삔삘삠삡삣삥사삭삯산삳살삵삶삼삽삿샀상샅새색샌샐샘샙샛샜생샤�\".split(\"\");\nfor(j = 0; j != D[187].length; ++j) if(D[187][j].charCodeAt(0) !== 0xFFFD) { e[D[187][j]] = 47872 + j; d[47872 + j] = D[187][j];}\nD[188] = \"�����������������������������������������������������������������퍪퍫퍬퍭퍮퍯퍰퍱퍲퍳퍴퍵퍶퍷퍸퍹퍺퍻퍾퍿펁펂펃펅펆펇������펈펉펊펋펎펒펓펔펕펖펗펚펛펝펞펟펡펢펣펤펥펦펧펪펬펮������펯펰펱펲펳펵펶펷펹펺펻펽펾펿폀폁폂폃폆폇폊폋폌폍폎폏폑폒폓폔폕폖샥샨샬샴샵샷샹섀섄섈섐섕서석섞섟선섣설섦섧섬섭섯섰성섶세섹센셀셈셉셋셌셍셔셕션셜셤셥셧셨셩셰셴셸솅소속솎손솔솖솜솝솟송솥솨솩솬솰솽쇄쇈쇌쇔쇗쇘쇠쇤쇨쇰쇱쇳쇼쇽숀숄숌숍숏숑수숙순숟술숨숩숫숭�\".split(\"\");\nfor(j = 0; j != D[188].length; ++j) if(D[188][j].charCodeAt(0) !== 0xFFFD) { e[D[188][j]] = 48128 + j; d[48128 + j] = D[188][j];}\nD[189] = \"�����������������������������������������������������������������폗폙폚폛폜폝폞폟폠폢폤폥폦폧폨폩폪폫폮폯폱폲폳폵폶폷������폸폹폺폻폾퐀퐂퐃퐄퐅퐆퐇퐉퐊퐋퐌퐍퐎퐏퐐퐑퐒퐓퐔퐕퐖������퐗퐘퐙퐚퐛퐜퐞퐟퐠퐡퐢퐣퐤퐥퐦퐧퐨퐩퐪퐫퐬퐭퐮퐯퐰퐱퐲퐳퐴퐵퐶퐷숯숱숲숴쉈쉐쉑쉔쉘쉠쉥쉬쉭쉰쉴쉼쉽쉿슁슈슉슐슘슛슝스슥슨슬슭슴습슷승시식신싣실싫심십싯싱싶싸싹싻싼쌀쌈쌉쌌쌍쌓쌔쌕쌘쌜쌤쌥쌨쌩썅써썩썬썰썲썸썹썼썽쎄쎈쎌쏀쏘쏙쏜쏟쏠쏢쏨쏩쏭쏴쏵쏸쐈쐐쐤쐬쐰�\".split(\"\");\nfor(j = 0; j != D[189].length; ++j) if(D[189][j].charCodeAt(0) !== 0xFFFD) { e[D[189][j]] = 48384 + j; d[48384 + j] = D[189][j];}\nD[190] = \"�����������������������������������������������������������������퐸퐹퐺퐻퐼퐽퐾퐿푁푂푃푅푆푇푈푉푊푋푌푍푎푏푐푑푒푓������푔푕푖푗푘푙푚푛푝푞푟푡푢푣푥푦푧푨푩푪푫푬푮푰푱푲������푳푴푵푶푷푺푻푽푾풁풃풄풅풆풇풊풌풎풏풐풑풒풓풕풖풗풘풙풚풛풜풝쐴쐼쐽쑈쑤쑥쑨쑬쑴쑵쑹쒀쒔쒜쒸쒼쓩쓰쓱쓴쓸쓺쓿씀씁씌씐씔씜씨씩씬씰씸씹씻씽아악안앉않알앍앎앓암압앗았앙앝앞애액앤앨앰앱앳앴앵야약얀얄얇얌얍얏양얕얗얘얜얠얩어억언얹얻얼얽얾엄업없엇었엉엊엌엎�\".split(\"\");\nfor(j = 0; j != D[190].length; ++j) if(D[190][j].charCodeAt(0) !== 0xFFFD) { e[D[190][j]] = 48640 + j; d[48640 + j] = D[190][j];}\nD[191] = \"�����������������������������������������������������������������풞풟풠풡풢풣풤풥풦풧풨풪풫풬풭풮풯풰풱풲풳풴풵풶풷풸������풹풺풻풼풽풾풿퓀퓁퓂퓃퓄퓅퓆퓇퓈퓉퓊퓋퓍퓎퓏퓑퓒퓓퓕������퓖퓗퓘퓙퓚퓛퓝퓞퓠퓡퓢퓣퓤퓥퓦퓧퓩퓪퓫퓭퓮퓯퓱퓲퓳퓴퓵퓶퓷퓹퓺퓼에엑엔엘엠엡엣엥여역엮연열엶엷염엽엾엿였영옅옆옇예옌옐옘옙옛옜오옥온올옭옮옰옳옴옵옷옹옻와왁완왈왐왑왓왔왕왜왝왠왬왯왱외왹왼욀욈욉욋욍요욕욘욜욤욥욧용우욱운울욹욺움웁웃웅워웍원월웜웝웠웡웨�\".split(\"\");\nfor(j = 0; j != D[191].length; ++j) if(D[191][j].charCodeAt(0) !== 0xFFFD) { e[D[191][j]] = 48896 + j; d[48896 + j] = D[191][j];}\nD[192] = \"�����������������������������������������������������������������퓾퓿픀픁픂픃픅픆픇픉픊픋픍픎픏픐픑픒픓픖픘픙픚픛픜픝������픞픟픠픡픢픣픤픥픦픧픨픩픪픫픬픭픮픯픰픱픲픳픴픵픶픷������픸픹픺픻픾픿핁핂핃핅핆핇핈핉핊핋핎핐핒핓핔핕핖핗핚핛핝핞핟핡핢핣웩웬웰웸웹웽위윅윈윌윔윕윗윙유육윤율윰윱윳융윷으윽은을읊음읍읏응읒읓읔읕읖읗의읜읠읨읫이익인일읽읾잃임입잇있잉잊잎자작잔잖잗잘잚잠잡잣잤장잦재잭잰잴잼잽잿쟀쟁쟈쟉쟌쟎쟐쟘쟝쟤쟨쟬저적전절젊�\".split(\"\");\nfor(j = 0; j != D[192].length; ++j) if(D[192][j].charCodeAt(0) !== 0xFFFD) { e[D[192][j]] = 49152 + j; d[49152 + j] = D[192][j];}\nD[193] = \"�����������������������������������������������������������������핤핦핧핪핬핮핯핰핱핲핳핶핷핹핺핻핽핾핿햀햁햂햃햆햊햋������햌햍햎햏햑햒햓햔햕햖햗햘햙햚햛햜햝햞햟햠햡햢햣햤햦햧������햨햩햪햫햬햭햮햯햰햱햲햳햴햵햶햷햸햹햺햻햼햽햾햿헀헁헂헃헄헅헆헇점접젓정젖제젝젠젤젬젭젯젱져젼졀졈졉졌졍졔조족존졸졺좀좁좃종좆좇좋좌좍좔좝좟좡좨좼좽죄죈죌죔죕죗죙죠죡죤죵주죽준줄줅줆줌줍줏중줘줬줴쥐쥑쥔쥘쥠쥡쥣쥬쥰쥴쥼즈즉즌즐즘즙즛증지직진짇질짊짐집짓�\".split(\"\");\nfor(j = 0; j != D[193].length; ++j) if(D[193][j].charCodeAt(0) !== 0xFFFD) { e[D[193][j]] = 49408 + j; d[49408 + j] = D[193][j];}\nD[194] = \"�����������������������������������������������������������������헊헋헍헎헏헑헓헔헕헖헗헚헜헞헟헠헡헢헣헦헧헩헪헫헭헮������헯헰헱헲헳헶헸헺헻헼헽헾헿혂혃혅혆혇혉혊혋혌혍혎혏혒������혖혗혘혙혚혛혝혞혟혡혢혣혥혦혧혨혩혪혫혬혮혯혰혱혲혳혴혵혶혷혺혻징짖짙짚짜짝짠짢짤짧짬짭짯짰짱째짹짼쨀쨈쨉쨋쨌쨍쨔쨘쨩쩌쩍쩐쩔쩜쩝쩟쩠쩡쩨쩽쪄쪘쪼쪽쫀쫄쫌쫍쫏쫑쫓쫘쫙쫠쫬쫴쬈쬐쬔쬘쬠쬡쭁쭈쭉쭌쭐쭘쭙쭝쭤쭸쭹쮜쮸쯔쯤쯧쯩찌찍찐찔찜찝찡찢찧차착찬찮찰참찹찻�\".split(\"\");\nfor(j = 0; j != D[194].length; ++j) if(D[194][j].charCodeAt(0) !== 0xFFFD) { e[D[194][j]] = 49664 + j; d[49664 + j] = D[194][j];}\nD[195] = \"�����������������������������������������������������������������혽혾혿홁홂홃홄홆홇홊홌홎홏홐홒홓홖홗홙홚홛홝홞홟홠홡������홢홣홤홥홦홨홪홫홬홭홮홯홲홳홵홶홷홸홹홺홻홼홽홾홿횀������횁횂횄횆횇횈횉횊횋횎횏횑횒횓횕횖횗횘횙횚횛횜횞횠횢횣횤횥횦횧횩횪찼창찾채책챈챌챔챕챗챘챙챠챤챦챨챰챵처척천철첨첩첫첬청체첵첸첼쳄쳅쳇쳉쳐쳔쳤쳬쳰촁초촉촌촐촘촙촛총촤촨촬촹최쵠쵤쵬쵭쵯쵱쵸춈추축춘출춤춥춧충춰췄췌췐취췬췰췸췹췻췽츄츈츌츔츙츠측츤츨츰츱츳층�\".split(\"\");\nfor(j = 0; j != D[195].length; ++j) if(D[195][j].charCodeAt(0) !== 0xFFFD) { e[D[195][j]] = 49920 + j; d[49920 + j] = D[195][j];}\nD[196] = \"�����������������������������������������������������������������횫횭횮횯횱횲횳횴횵횶횷횸횺횼횽횾횿훀훁훂훃훆훇훉훊훋������훍훎훏훐훒훓훕훖훘훚훛훜훝훞훟훡훢훣훥훦훧훩훪훫훬훭������훮훯훱훲훳훴훶훷훸훹훺훻훾훿휁휂휃휅휆휇휈휉휊휋휌휍휎휏휐휒휓휔치칙친칟칠칡침칩칫칭카칵칸칼캄캅캇캉캐캑캔캘캠캡캣캤캥캬캭컁커컥컨컫컬컴컵컷컸컹케켁켄켈켐켑켓켕켜켠켤켬켭켯켰켱켸코콕콘콜콤콥콧콩콰콱콴콸쾀쾅쾌쾡쾨쾰쿄쿠쿡쿤쿨쿰쿱쿳쿵쿼퀀퀄퀑퀘퀭퀴퀵퀸퀼�\".split(\"\");\nfor(j = 0; j != D[196].length; ++j) if(D[196][j].charCodeAt(0) !== 0xFFFD) { e[D[196][j]] = 50176 + j; d[50176 + j] = D[196][j];}\nD[197] = \"�����������������������������������������������������������������휕휖휗휚휛휝휞휟휡휢휣휤휥휦휧휪휬휮휯휰휱휲휳휶휷휹������휺휻휽휾휿흀흁흂흃흅흆흈흊흋흌흍흎흏흒흓흕흚흛흜흝흞������흟흢흤흦흧흨흪흫흭흮흯흱흲흳흵흶흷흸흹흺흻흾흿힀힂힃힄힅힆힇힊힋큄큅큇큉큐큔큘큠크큭큰클큼큽킁키킥킨킬킴킵킷킹타탁탄탈탉탐탑탓탔탕태택탠탤탬탭탯탰탱탸턍터턱턴털턺텀텁텃텄텅테텍텐텔템텝텟텡텨텬텼톄톈토톡톤톨톰톱톳통톺톼퇀퇘퇴퇸툇툉툐투툭툰툴툼툽툿퉁퉈퉜�\".split(\"\");\nfor(j = 0; j != D[197].length; ++j) if(D[197][j].charCodeAt(0) !== 0xFFFD) { e[D[197][j]] = 50432 + j; d[50432 + j] = D[197][j];}\nD[198] = \"�����������������������������������������������������������������힍힎힏힑힒힓힔힕힖힗힚힜힞힟힠힡힢힣������������������������������������������������������������������������������퉤튀튁튄튈튐튑튕튜튠튤튬튱트특튼튿틀틂틈틉틋틔틘틜틤틥티틱틴틸팀팁팃팅파팍팎판팔팖팜팝팟팠팡팥패팩팬팰팸팹팻팼팽퍄퍅퍼퍽펀펄펌펍펏펐펑페펙펜펠펨펩펫펭펴편펼폄폅폈평폐폘폡폣포폭폰폴폼폽폿퐁�\".split(\"\");\nfor(j = 0; j != D[198].length; ++j) if(D[198][j].charCodeAt(0) !== 0xFFFD) { e[D[198][j]] = 50688 + j; d[50688 + j] = D[198][j];}\nD[199] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������퐈퐝푀푄표푠푤푭푯푸푹푼푿풀풂품풉풋풍풔풩퓌퓐퓔퓜퓟퓨퓬퓰퓸퓻퓽프픈플픔픕픗피픽핀필핌핍핏핑하학한할핥함합핫항해핵핸핼햄햅햇했행햐향허헉헌헐헒험헙헛헝헤헥헨헬헴헵헷헹혀혁현혈혐협혓혔형혜혠�\".split(\"\");\nfor(j = 0; j != D[199].length; ++j) if(D[199][j].charCodeAt(0) !== 0xFFFD) { e[D[199][j]] = 50944 + j; d[50944 + j] = D[199][j];}\nD[200] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������혤혭호혹혼홀홅홈홉홋홍홑화확환활홧황홰홱홴횃횅회획횐횔횝횟횡효횬횰횹횻후훅훈훌훑훔훗훙훠훤훨훰훵훼훽휀휄휑휘휙휜휠휨휩휫휭휴휵휸휼흄흇흉흐흑흔흖흗흘흙흠흡흣흥흩희흰흴흼흽힁히힉힌힐힘힙힛힝�\".split(\"\");\nfor(j = 0; j != D[200].length; ++j) if(D[200][j].charCodeAt(0) !== 0xFFFD) { e[D[200][j]] = 51200 + j; d[51200 + j] = D[200][j];}\nD[202] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������伽佳假價加可呵哥嘉嫁家暇架枷柯歌珂痂稼苛茄街袈訶賈跏軻迦駕刻却各恪慤殼珏脚覺角閣侃刊墾奸姦干幹懇揀杆柬桿澗癎看磵稈竿簡肝艮艱諫間乫喝曷渴碣竭葛褐蝎鞨勘坎堪嵌感憾戡敢柑橄減甘疳監瞰紺邯鑑鑒龕�\".split(\"\");\nfor(j = 0; j != D[202].length; ++j) if(D[202][j].charCodeAt(0) !== 0xFFFD) { e[D[202][j]] = 51712 + j; d[51712 + j] = D[202][j];}\nD[203] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������匣岬甲胛鉀閘剛堈姜岡崗康强彊慷江畺疆糠絳綱羌腔舡薑襁講鋼降鱇介价個凱塏愷愾慨改槪漑疥皆盖箇芥蓋豈鎧開喀客坑更粳羹醵倨去居巨拒据據擧渠炬祛距踞車遽鉅鋸乾件健巾建愆楗腱虔蹇鍵騫乞傑杰桀儉劍劒檢�\".split(\"\");\nfor(j = 0; j != D[203].length; ++j) if(D[203][j].charCodeAt(0) !== 0xFFFD) { e[D[203][j]] = 51968 + j; d[51968 + j] = D[203][j];}\nD[204] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������瞼鈐黔劫怯迲偈憩揭擊格檄激膈覡隔堅牽犬甄絹繭肩見譴遣鵑抉決潔結缺訣兼慊箝謙鉗鎌京俓倞傾儆勁勍卿坰境庚徑慶憬擎敬景暻更梗涇炅烱璟璥瓊痙硬磬竟競絅經耕耿脛莖警輕逕鏡頃頸驚鯨係啓堺契季屆悸戒桂械�\".split(\"\");\nfor(j = 0; j != D[204].length; ++j) if(D[204][j].charCodeAt(0) !== 0xFFFD) { e[D[204][j]] = 52224 + j; d[52224 + j] = D[204][j];}\nD[205] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������棨溪界癸磎稽系繫繼計誡谿階鷄古叩告呱固姑孤尻庫拷攷故敲暠枯槁沽痼皐睾稿羔考股膏苦苽菰藁蠱袴誥賈辜錮雇顧高鼓哭斛曲梏穀谷鵠困坤崑昆梱棍滾琨袞鯤汨滑骨供公共功孔工恐恭拱控攻珙空蚣貢鞏串寡戈果瓜�\".split(\"\");\nfor(j = 0; j != D[205].length; ++j) if(D[205][j].charCodeAt(0) !== 0xFFFD) { e[D[205][j]] = 52480 + j; d[52480 + j] = D[205][j];}\nD[206] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������科菓誇課跨過鍋顆廓槨藿郭串冠官寬慣棺款灌琯瓘管罐菅觀貫關館刮恝括适侊光匡壙廣曠洸炚狂珖筐胱鑛卦掛罫乖傀塊壞怪愧拐槐魁宏紘肱轟交僑咬喬嬌嶠巧攪敎校橋狡皎矯絞翹膠蕎蛟較轎郊餃驕鮫丘久九仇俱具勾�\".split(\"\");\nfor(j = 0; j != D[206].length; ++j) if(D[206][j].charCodeAt(0) !== 0xFFFD) { e[D[206][j]] = 52736 + j; d[52736 + j] = D[206][j];}\nD[207] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������區口句咎嘔坵垢寇嶇廐懼拘救枸柩構歐毆毬求溝灸狗玖球瞿矩究絿耉臼舅舊苟衢謳購軀逑邱鉤銶駒驅鳩鷗龜國局菊鞠鞫麴君窘群裙軍郡堀屈掘窟宮弓穹窮芎躬倦券勸卷圈拳捲權淃眷厥獗蕨蹶闕机櫃潰詭軌饋句晷歸貴�\".split(\"\");\nfor(j = 0; j != D[207].length; ++j) if(D[207][j].charCodeAt(0) !== 0xFFFD) { e[D[207][j]] = 52992 + j; d[52992 + j] = D[207][j];}\nD[208] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������鬼龜叫圭奎揆槻珪硅窺竅糾葵規赳逵閨勻均畇筠菌鈞龜橘克剋劇戟棘極隙僅劤勤懃斤根槿瑾筋芹菫覲謹近饉契今妗擒昑檎琴禁禽芩衾衿襟金錦伋及急扱汲級給亘兢矜肯企伎其冀嗜器圻基埼夔奇妓寄岐崎己幾忌技旗旣�\".split(\"\");\nfor(j = 0; j != D[208].length; ++j) if(D[208][j].charCodeAt(0) !== 0xFFFD) { e[D[208][j]] = 53248 + j; d[53248 + j] = D[208][j];}\nD[209] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������朞期杞棋棄機欺氣汽沂淇玘琦琪璂璣畸畿碁磯祁祇祈祺箕紀綺羈耆耭肌記譏豈起錡錤飢饑騎騏驥麒緊佶吉拮桔金喫儺喇奈娜懦懶拏拿癩羅蘿螺裸邏那樂洛烙珞落諾酪駱亂卵暖欄煖爛蘭難鸞捏捺南嵐枏楠湳濫男藍襤拉�\".split(\"\");\nfor(j = 0; j != D[209].length; ++j) if(D[209][j].charCodeAt(0) !== 0xFFFD) { e[D[209][j]] = 53504 + j; d[53504 + j] = D[209][j];}\nD[210] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������納臘蠟衲囊娘廊朗浪狼郎乃來內奈柰耐冷女年撚秊念恬拈捻寧寗努勞奴弩怒擄櫓爐瑙盧老蘆虜路露駑魯鷺碌祿綠菉錄鹿論壟弄濃籠聾膿農惱牢磊腦賂雷尿壘屢樓淚漏累縷陋嫩訥杻紐勒肋凜凌稜綾能菱陵尼泥匿溺多茶�\".split(\"\");\nfor(j = 0; j != D[210].length; ++j) if(D[210][j].charCodeAt(0) !== 0xFFFD) { e[D[210][j]] = 53760 + j; d[53760 + j] = D[210][j];}\nD[211] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������丹亶但單團壇彖斷旦檀段湍短端簞緞蛋袒鄲鍛撻澾獺疸達啖坍憺擔曇淡湛潭澹痰聃膽蕁覃談譚錟沓畓答踏遝唐堂塘幢戇撞棠當糖螳黨代垈坮大對岱帶待戴擡玳臺袋貸隊黛宅德悳倒刀到圖堵塗導屠島嶋度徒悼挑掉搗桃�\".split(\"\");\nfor(j = 0; j != D[211].length; ++j) if(D[211][j].charCodeAt(0) !== 0xFFFD) { e[D[211][j]] = 54016 + j; d[54016 + j] = D[211][j];}\nD[212] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������棹櫂淘渡滔濤燾盜睹禱稻萄覩賭跳蹈逃途道都鍍陶韜毒瀆牘犢獨督禿篤纛讀墩惇敦旽暾沌焞燉豚頓乭突仝冬凍動同憧東桐棟洞潼疼瞳童胴董銅兜斗杜枓痘竇荳讀豆逗頭屯臀芚遁遯鈍得嶝橙燈登等藤謄鄧騰喇懶拏癩羅�\".split(\"\");\nfor(j = 0; j != D[212].length; ++j) if(D[212][j].charCodeAt(0) !== 0xFFFD) { e[D[212][j]] = 54272 + j; d[54272 + j] = D[212][j];}\nD[213] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������蘿螺裸邏樂洛烙珞絡落諾酪駱丹亂卵欄欒瀾爛蘭鸞剌辣嵐擥攬欖濫籃纜藍襤覽拉臘蠟廊朗浪狼琅瑯螂郞來崍徠萊冷掠略亮倆兩凉梁樑粮粱糧良諒輛量侶儷勵呂廬慮戾旅櫚濾礪藜蠣閭驢驪麗黎力曆歷瀝礫轢靂憐戀攣漣�\".split(\"\");\nfor(j = 0; j != D[213].length; ++j) if(D[213][j].charCodeAt(0) !== 0xFFFD) { e[D[213][j]] = 54528 + j; d[54528 + j] = D[213][j];}\nD[214] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������煉璉練聯蓮輦連鍊冽列劣洌烈裂廉斂殮濂簾獵令伶囹寧岺嶺怜玲笭羚翎聆逞鈴零靈領齡例澧禮醴隷勞怒撈擄櫓潞瀘爐盧老蘆虜路輅露魯鷺鹵碌祿綠菉錄鹿麓論壟弄朧瀧瓏籠聾儡瀨牢磊賂賚賴雷了僚寮廖料燎療瞭聊蓼�\".split(\"\");\nfor(j = 0; j != D[214].length; ++j) if(D[214][j].charCodeAt(0) !== 0xFFFD) { e[D[214][j]] = 54784 + j; d[54784 + j] = D[214][j];}\nD[215] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������遼鬧龍壘婁屢樓淚漏瘻累縷蔞褸鏤陋劉旒柳榴流溜瀏琉瑠留瘤硫謬類六戮陸侖倫崙淪綸輪律慄栗率隆勒肋凜凌楞稜綾菱陵俚利厘吏唎履悧李梨浬犁狸理璃異痢籬罹羸莉裏裡里釐離鯉吝潾燐璘藺躪隣鱗麟林淋琳臨霖砬�\".split(\"\");\nfor(j = 0; j != D[215].length; ++j) if(D[215][j].charCodeAt(0) !== 0xFFFD) { e[D[215][j]] = 55040 + j; d[55040 + j] = D[215][j];}\nD[216] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������立笠粒摩瑪痲碼磨馬魔麻寞幕漠膜莫邈万卍娩巒彎慢挽晩曼滿漫灣瞞萬蔓蠻輓饅鰻唜抹末沫茉襪靺亡妄忘忙望網罔芒茫莽輞邙埋妹媒寐昧枚梅每煤罵買賣邁魅脈貊陌驀麥孟氓猛盲盟萌冪覓免冕勉棉沔眄眠綿緬面麵滅�\".split(\"\");\nfor(j = 0; j != D[216].length; ++j) if(D[216][j].charCodeAt(0) !== 0xFFFD) { e[D[216][j]] = 55296 + j; d[55296 + j] = D[216][j];}\nD[217] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������蔑冥名命明暝椧溟皿瞑茗蓂螟酩銘鳴袂侮冒募姆帽慕摸摹暮某模母毛牟牡瑁眸矛耗芼茅謀謨貌木沐牧目睦穆鶩歿沒夢朦蒙卯墓妙廟描昴杳渺猫竗苗錨務巫憮懋戊拇撫无楙武毋無珷畝繆舞茂蕪誣貿霧鵡墨默們刎吻問文�\".split(\"\");\nfor(j = 0; j != D[217].length; ++j) if(D[217][j].charCodeAt(0) !== 0xFFFD) { e[D[217][j]] = 55552 + j; d[55552 + j] = D[217][j];}\nD[218] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������汶紊紋聞蚊門雯勿沕物味媚尾嵋彌微未梶楣渼湄眉米美薇謎迷靡黴岷悶愍憫敏旻旼民泯玟珉緡閔密蜜謐剝博拍搏撲朴樸泊珀璞箔粕縛膊舶薄迫雹駁伴半反叛拌搬攀斑槃泮潘班畔瘢盤盼磐磻礬絆般蟠返頒飯勃拔撥渤潑�\".split(\"\");\nfor(j = 0; j != D[218].length; ++j) if(D[218][j].charCodeAt(0) !== 0xFFFD) { e[D[218][j]] = 55808 + j; d[55808 + j] = D[218][j];}\nD[219] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������發跋醱鉢髮魃倣傍坊妨尨幇彷房放方旁昉枋榜滂磅紡肪膀舫芳蒡蚌訪謗邦防龐倍俳北培徘拜排杯湃焙盃背胚裴裵褙賠輩配陪伯佰帛柏栢白百魄幡樊煩燔番磻繁蕃藩飜伐筏罰閥凡帆梵氾汎泛犯範范法琺僻劈壁擘檗璧癖�\".split(\"\");\nfor(j = 0; j != D[219].length; ++j) if(D[219][j].charCodeAt(0) !== 0xFFFD) { e[D[219][j]] = 56064 + j; d[56064 + j] = D[219][j];}\nD[220] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������碧蘗闢霹便卞弁變辨辯邊別瞥鱉鼈丙倂兵屛幷昞昺柄棅炳甁病秉竝輧餠騈保堡報寶普步洑湺潽珤甫菩補褓譜輔伏僕匐卜宓復服福腹茯蔔複覆輹輻馥鰒本乶俸奉封峯峰捧棒烽熢琫縫蓬蜂逢鋒鳳不付俯傅剖副否咐埠夫婦�\".split(\"\");\nfor(j = 0; j != D[220].length; ++j) if(D[220][j].charCodeAt(0) !== 0xFFFD) { e[D[220][j]] = 56320 + j; d[56320 + j] = D[220][j];}\nD[221] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������孚孵富府復扶敷斧浮溥父符簿缶腐腑膚艀芙莩訃負賦賻赴趺部釜阜附駙鳧北分吩噴墳奔奮忿憤扮昐汾焚盆粉糞紛芬賁雰不佛弗彿拂崩朋棚硼繃鵬丕備匕匪卑妃婢庇悲憊扉批斐枇榧比毖毗毘沸泌琵痺砒碑秕秘粃緋翡肥�\".split(\"\");\nfor(j = 0; j != D[221].length; ++j) if(D[221][j].charCodeAt(0) !== 0xFFFD) { e[D[221][j]] = 56576 + j; d[56576 + j] = D[221][j];}\nD[222] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������脾臂菲蜚裨誹譬費鄙非飛鼻嚬嬪彬斌檳殯浜濱瀕牝玭貧賓頻憑氷聘騁乍事些仕伺似使俟僿史司唆嗣四士奢娑寫寺射巳師徙思捨斜斯柶査梭死沙泗渣瀉獅砂社祀祠私篩紗絲肆舍莎蓑蛇裟詐詞謝賜赦辭邪飼駟麝削數朔索�\".split(\"\");\nfor(j = 0; j != D[222].length; ++j) if(D[222][j].charCodeAt(0) !== 0xFFFD) { e[D[222][j]] = 56832 + j; d[56832 + j] = D[222][j];}\nD[223] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������傘刪山散汕珊産疝算蒜酸霰乷撒殺煞薩三參杉森渗芟蔘衫揷澁鈒颯上傷像償商喪嘗孀尙峠常床庠廂想桑橡湘爽牀狀相祥箱翔裳觴詳象賞霜塞璽賽嗇塞穡索色牲生甥省笙墅壻嶼序庶徐恕抒捿敍暑曙書栖棲犀瑞筮絮緖署�\".split(\"\");\nfor(j = 0; j != D[223].length; ++j) if(D[223][j].charCodeAt(0) !== 0xFFFD) { e[D[223][j]] = 57088 + j; d[57088 + j] = D[223][j];}\nD[224] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������胥舒薯西誓逝鋤黍鼠夕奭席惜昔晳析汐淅潟石碩蓆釋錫仙僊先善嬋宣扇敾旋渲煽琁瑄璇璿癬禪線繕羨腺膳船蘚蟬詵跣選銑鐥饍鮮卨屑楔泄洩渫舌薛褻設說雪齧剡暹殲纖蟾贍閃陝攝涉燮葉城姓宬性惺成星晟猩珹盛省筬�\".split(\"\");\nfor(j = 0; j != D[224].length; ++j) if(D[224][j].charCodeAt(0) !== 0xFFFD) { e[D[224][j]] = 57344 + j; d[57344 + j] = D[224][j];}\nD[225] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������聖聲腥誠醒世勢歲洗稅笹細說貰召嘯塑宵小少巢所掃搔昭梳沼消溯瀟炤燒甦疏疎瘙笑篠簫素紹蔬蕭蘇訴逍遡邵銷韶騷俗屬束涑粟續謖贖速孫巽損蓀遜飡率宋悚松淞訟誦送頌刷殺灑碎鎖衰釗修受嗽囚垂壽嫂守岫峀帥愁�\".split(\"\");\nfor(j = 0; j != D[225].length; ++j) if(D[225][j].charCodeAt(0) !== 0xFFFD) { e[D[225][j]] = 57600 + j; d[57600 + j] = D[225][j];}\nD[226] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������戍手授搜收數樹殊水洙漱燧狩獸琇璲瘦睡秀穗竪粹綏綬繡羞脩茱蒐蓚藪袖誰讐輸遂邃酬銖銹隋隧隨雖需須首髓鬚叔塾夙孰宿淑潚熟琡璹肅菽巡徇循恂旬栒楯橓殉洵淳珣盾瞬筍純脣舜荀蓴蕣詢諄醇錞順馴戌術述鉥崇崧�\".split(\"\");\nfor(j = 0; j != D[226].length; ++j) if(D[226][j].charCodeAt(0) !== 0xFFFD) { e[D[226][j]] = 57856 + j; d[57856 + j] = D[226][j];}\nD[227] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������嵩瑟膝蝨濕拾習褶襲丞乘僧勝升承昇繩蠅陞侍匙嘶始媤尸屎屍市弑恃施是時枾柴猜矢示翅蒔蓍視試詩諡豕豺埴寔式息拭植殖湜熄篒蝕識軾食飾伸侁信呻娠宸愼新晨燼申神紳腎臣莘薪藎蜃訊身辛辰迅失室實悉審尋心沁�\".split(\"\");\nfor(j = 0; j != D[227].length; ++j) if(D[227][j].charCodeAt(0) !== 0xFFFD) { e[D[227][j]] = 58112 + j; d[58112 + j] = D[227][j];}\nD[228] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������沈深瀋甚芯諶什十拾雙氏亞俄兒啞娥峨我牙芽莪蛾衙訝阿雅餓鴉鵝堊岳嶽幄惡愕握樂渥鄂鍔顎鰐齷安岸按晏案眼雁鞍顔鮟斡謁軋閼唵岩巖庵暗癌菴闇壓押狎鴨仰央怏昻殃秧鴦厓哀埃崖愛曖涯碍艾隘靄厄扼掖液縊腋額�\".split(\"\");\nfor(j = 0; j != D[228].length; ++j) if(D[228][j].charCodeAt(0) !== 0xFFFD) { e[D[228][j]] = 58368 + j; d[58368 + j] = D[228][j];}\nD[229] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������櫻罌鶯鸚也倻冶夜惹揶椰爺耶若野弱掠略約若葯蒻藥躍亮佯兩凉壤孃恙揚攘敭暘梁楊樣洋瀁煬痒瘍禳穰糧羊良襄諒讓釀陽量養圄御於漁瘀禦語馭魚齬億憶抑檍臆偃堰彦焉言諺孼蘖俺儼嚴奄掩淹嶪業円予余勵呂女如廬�\".split(\"\");\nfor(j = 0; j != D[229].length; ++j) if(D[229][j].charCodeAt(0) !== 0xFFFD) { e[D[229][j]] = 58624 + j; d[58624 + j] = D[229][j];}\nD[230] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������旅歟汝濾璵礖礪與艅茹輿轝閭餘驪麗黎亦力域役易曆歷疫繹譯轢逆驛嚥堧姸娟宴年延憐戀捐挻撚椽沇沿涎涓淵演漣烟然煙煉燃燕璉硏硯秊筵緣練縯聯衍軟輦蓮連鉛鍊鳶列劣咽悅涅烈熱裂說閱厭廉念捻染殮炎焰琰艶苒�\".split(\"\");\nfor(j = 0; j != D[230].length; ++j) if(D[230][j].charCodeAt(0) !== 0xFFFD) { e[D[230][j]] = 58880 + j; d[58880 + j] = D[230][j];}\nD[231] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������簾閻髥鹽曄獵燁葉令囹塋寧嶺嶸影怜映暎楹榮永泳渶潁濚瀛瀯煐營獰玲瑛瑩瓔盈穎纓羚聆英詠迎鈴鍈零霙靈領乂倪例刈叡曳汭濊猊睿穢芮藝蘂禮裔詣譽豫醴銳隸霓預五伍俉傲午吾吳嗚塢墺奧娛寤悟惡懊敖旿晤梧汚澳�\".split(\"\");\nfor(j = 0; j != D[231].length; ++j) if(D[231][j].charCodeAt(0) !== 0xFFFD) { e[D[231][j]] = 59136 + j; d[59136 + j] = D[231][j];}\nD[232] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������烏熬獒筽蜈誤鰲鼇屋沃獄玉鈺溫瑥瘟穩縕蘊兀壅擁瓮甕癰翁邕雍饔渦瓦窩窪臥蛙蝸訛婉完宛梡椀浣玩琓琬碗緩翫脘腕莞豌阮頑曰往旺枉汪王倭娃歪矮外嵬巍猥畏了僚僥凹堯夭妖姚寥寮尿嶢拗搖撓擾料曜樂橈燎燿瑤療�\".split(\"\");\nfor(j = 0; j != D[232].length; ++j) if(D[232][j].charCodeAt(0) !== 0xFFFD) { e[D[232][j]] = 59392 + j; d[59392 + j] = D[232][j];}\nD[233] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������窈窯繇繞耀腰蓼蟯要謠遙遼邀饒慾欲浴縟褥辱俑傭冗勇埇墉容庸慂榕涌湧溶熔瑢用甬聳茸蓉踊鎔鏞龍于佑偶優又友右宇寓尤愚憂旴牛玗瑀盂祐禑禹紆羽芋藕虞迂遇郵釪隅雨雩勖彧旭昱栯煜稶郁頊云暈橒殞澐熉耘芸蕓�\".split(\"\");\nfor(j = 0; j != D[233].length; ++j) if(D[233][j].charCodeAt(0) !== 0xFFFD) { e[D[233][j]] = 59648 + j; d[59648 + j] = D[233][j];}\nD[234] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������運隕雲韻蔚鬱亐熊雄元原員圓園垣媛嫄寃怨愿援沅洹湲源爰猿瑗苑袁轅遠阮院願鴛月越鉞位偉僞危圍委威尉慰暐渭爲瑋緯胃萎葦蔿蝟衛褘謂違韋魏乳侑儒兪劉唯喩孺宥幼幽庾悠惟愈愉揄攸有杻柔柚柳楡楢油洧流游溜�\".split(\"\");\nfor(j = 0; j != D[234].length; ++j) if(D[234][j].charCodeAt(0) !== 0xFFFD) { e[D[234][j]] = 59904 + j; d[59904 + j] = D[234][j];}\nD[235] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������濡猶猷琉瑜由留癒硫紐維臾萸裕誘諛諭踰蹂遊逾遺酉釉鍮類六堉戮毓肉育陸倫允奫尹崙淪潤玧胤贇輪鈗閏律慄栗率聿戎瀜絨融隆垠恩慇殷誾銀隱乙吟淫蔭陰音飮揖泣邑凝應膺鷹依倚儀宜意懿擬椅毅疑矣義艤薏蟻衣誼�\".split(\"\");\nfor(j = 0; j != D[235].length; ++j) if(D[235][j].charCodeAt(0) !== 0xFFFD) { e[D[235][j]] = 60160 + j; d[60160 + j] = D[235][j];}\nD[236] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������議醫二以伊利吏夷姨履已弛彛怡易李梨泥爾珥理異痍痢移罹而耳肄苡荑裏裡貽貳邇里離飴餌匿溺瀷益翊翌翼謚人仁刃印吝咽因姻寅引忍湮燐璘絪茵藺蚓認隣靭靷鱗麟一佚佾壹日溢逸鎰馹任壬妊姙恁林淋稔臨荏賃入卄�\".split(\"\");\nfor(j = 0; j != D[236].length; ++j) if(D[236][j].charCodeAt(0) !== 0xFFFD) { e[D[236][j]] = 60416 + j; d[60416 + j] = D[236][j];}\nD[237] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������立笠粒仍剩孕芿仔刺咨姉姿子字孜恣慈滋炙煮玆瓷疵磁紫者自茨蔗藉諮資雌作勺嚼斫昨灼炸爵綽芍酌雀鵲孱棧殘潺盞岑暫潛箴簪蠶雜丈仗匠場墻壯奬將帳庄張掌暲杖樟檣欌漿牆狀獐璋章粧腸臟臧莊葬蔣薔藏裝贓醬長�\".split(\"\");\nfor(j = 0; j != D[237].length; ++j) if(D[237][j].charCodeAt(0) !== 0xFFFD) { e[D[237][j]] = 60672 + j; d[60672 + j] = D[237][j];}\nD[238] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������障再哉在宰才材栽梓渽滓災縡裁財載齋齎爭箏諍錚佇低儲咀姐底抵杵楮樗沮渚狙猪疽箸紵苧菹著藷詛貯躇這邸雎齟勣吊嫡寂摘敵滴狄炙的積笛籍績翟荻謫賊赤跡蹟迪迹適鏑佃佺傳全典前剪塡塼奠專展廛悛戰栓殿氈澱�\".split(\"\");\nfor(j = 0; j != D[238].length; ++j) if(D[238][j].charCodeAt(0) !== 0xFFFD) { e[D[238][j]] = 60928 + j; d[60928 + j] = D[238][j];}\nD[239] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������煎琠田甸畑癲筌箋箭篆纏詮輾轉鈿銓錢鐫電顚顫餞切截折浙癤竊節絶占岾店漸点粘霑鮎點接摺蝶丁井亭停偵呈姃定幀庭廷征情挺政整旌晶晸柾楨檉正汀淀淨渟湞瀞炡玎珽町睛碇禎程穽精綎艇訂諪貞鄭酊釘鉦鋌錠霆靖�\".split(\"\");\nfor(j = 0; j != D[239].length; ++j) if(D[239][j].charCodeAt(0) !== 0xFFFD) { e[D[239][j]] = 61184 + j; d[61184 + j] = D[239][j];}\nD[240] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������靜頂鼎制劑啼堤帝弟悌提梯濟祭第臍薺製諸蹄醍除際霽題齊俎兆凋助嘲弔彫措操早晁曺曹朝條棗槽漕潮照燥爪璪眺祖祚租稠窕粗糟組繰肇藻蚤詔調趙躁造遭釣阻雕鳥族簇足鏃存尊卒拙猝倧宗從悰慫棕淙琮種終綜縱腫�\".split(\"\");\nfor(j = 0; j != D[240].length; ++j) if(D[240][j].charCodeAt(0) !== 0xFFFD) { e[D[240][j]] = 61440 + j; d[61440 + j] = D[240][j];}\nD[241] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������踪踵鍾鐘佐坐左座挫罪主住侏做姝胄呪周嗾奏宙州廚晝朱柱株注洲湊澍炷珠疇籌紂紬綢舟蛛註誅走躊輳週酎酒鑄駐竹粥俊儁准埈寯峻晙樽浚準濬焌畯竣蠢逡遵雋駿茁中仲衆重卽櫛楫汁葺增憎曾拯烝甑症繒蒸證贈之只�\".split(\"\");\nfor(j = 0; j != D[241].length; ++j) if(D[241][j].charCodeAt(0) !== 0xFFFD) { e[D[241][j]] = 61696 + j; d[61696 + j] = D[241][j];}\nD[242] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������咫地址志持指摯支旨智枝枳止池沚漬知砥祉祗紙肢脂至芝芷蜘誌識贄趾遲直稙稷織職唇嗔塵振搢晉晋桭榛殄津溱珍瑨璡畛疹盡眞瞋秦縉縝臻蔯袗診賑軫辰進鎭陣陳震侄叱姪嫉帙桎瓆疾秩窒膣蛭質跌迭斟朕什執潗緝輯�\".split(\"\");\nfor(j = 0; j != D[242].length; ++j) if(D[242][j].charCodeAt(0) !== 0xFFFD) { e[D[242][j]] = 61952 + j; d[61952 + j] = D[242][j];}\nD[243] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������鏶集徵懲澄且侘借叉嗟嵯差次此磋箚茶蹉車遮捉搾着窄錯鑿齪撰澯燦璨瓚竄簒纂粲纘讚贊鑽餐饌刹察擦札紮僭參塹慘慙懺斬站讒讖倉倡創唱娼廠彰愴敞昌昶暢槍滄漲猖瘡窓脹艙菖蒼債埰寀寨彩採砦綵菜蔡采釵冊柵策�\".split(\"\");\nfor(j = 0; j != D[243].length; ++j) if(D[243][j].charCodeAt(0) !== 0xFFFD) { e[D[243][j]] = 62208 + j; d[62208 + j] = D[243][j];}\nD[244] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������責凄妻悽處倜刺剔尺慽戚拓擲斥滌瘠脊蹠陟隻仟千喘天川擅泉淺玔穿舛薦賤踐遷釧闡阡韆凸哲喆徹撤澈綴輟轍鐵僉尖沾添甛瞻簽籤詹諂堞妾帖捷牒疊睫諜貼輒廳晴淸聽菁請靑鯖切剃替涕滯締諦逮遞體初剿哨憔抄招梢�\".split(\"\");\nfor(j = 0; j != D[244].length; ++j) if(D[244][j].charCodeAt(0) !== 0xFFFD) { e[D[244][j]] = 62464 + j; d[62464 + j] = D[244][j];}\nD[245] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������椒楚樵炒焦硝礁礎秒稍肖艸苕草蕉貂超酢醋醮促囑燭矗蜀觸寸忖村邨叢塚寵悤憁摠總聰蔥銃撮催崔最墜抽推椎楸樞湫皺秋芻萩諏趨追鄒酋醜錐錘鎚雛騶鰍丑畜祝竺筑築縮蓄蹙蹴軸逐春椿瑃出朮黜充忠沖蟲衝衷悴膵萃�\".split(\"\");\nfor(j = 0; j != D[245].length; ++j) if(D[245][j].charCodeAt(0) !== 0xFFFD) { e[D[245][j]] = 62720 + j; d[62720 + j] = D[245][j];}\nD[246] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������贅取吹嘴娶就炊翠聚脆臭趣醉驟鷲側仄厠惻測層侈値嗤峙幟恥梔治淄熾痔痴癡稚穉緇緻置致蚩輜雉馳齒則勅飭親七柒漆侵寢枕沈浸琛砧針鍼蟄秤稱快他咤唾墮妥惰打拖朶楕舵陀馱駝倬卓啄坼度托拓擢晫柝濁濯琢琸託�\".split(\"\");\nfor(j = 0; j != D[246].length; ++j) if(D[246][j].charCodeAt(0) !== 0xFFFD) { e[D[246][j]] = 62976 + j; d[62976 + j] = D[246][j];}\nD[247] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������鐸呑嘆坦彈憚歎灘炭綻誕奪脫探眈耽貪塔搭榻宕帑湯糖蕩兌台太怠態殆汰泰笞胎苔跆邰颱宅擇澤撑攄兎吐土討慟桶洞痛筒統通堆槌腿褪退頹偸套妬投透鬪慝特闖坡婆巴把播擺杷波派爬琶破罷芭跛頗判坂板版瓣販辦鈑�\".split(\"\");\nfor(j = 0; j != D[247].length; ++j) if(D[247][j].charCodeAt(0) !== 0xFFFD) { e[D[247][j]] = 63232 + j; d[63232 + j] = D[247][j];}\nD[248] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������阪八叭捌佩唄悖敗沛浿牌狽稗覇貝彭澎烹膨愎便偏扁片篇編翩遍鞭騙貶坪平枰萍評吠嬖幣廢弊斃肺蔽閉陛佈包匍匏咆哺圃布怖抛抱捕暴泡浦疱砲胞脯苞葡蒲袍褒逋鋪飽鮑幅暴曝瀑爆輻俵剽彪慓杓標漂瓢票表豹飇飄驃�\".split(\"\");\nfor(j = 0; j != D[248].length; ++j) if(D[248][j].charCodeAt(0) !== 0xFFFD) { e[D[248][j]] = 63488 + j; d[63488 + j] = D[248][j];}\nD[249] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������品稟楓諷豊風馮彼披疲皮被避陂匹弼必泌珌畢疋筆苾馝乏逼下何厦夏廈昰河瑕荷蝦賀遐霞鰕壑學虐謔鶴寒恨悍旱汗漢澣瀚罕翰閑閒限韓割轄函含咸啣喊檻涵緘艦銜陷鹹合哈盒蛤閤闔陜亢伉姮嫦巷恒抗杭桁沆港缸肛航�\".split(\"\");\nfor(j = 0; j != D[249].length; ++j) if(D[249][j].charCodeAt(0) !== 0xFFFD) { e[D[249][j]] = 63744 + j; d[63744 + j] = D[249][j];}\nD[250] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������行降項亥偕咳垓奚孩害懈楷海瀣蟹解該諧邂駭骸劾核倖幸杏荇行享向嚮珦鄕響餉饗香噓墟虛許憲櫶獻軒歇險驗奕爀赫革俔峴弦懸晛泫炫玄玹現眩睍絃絢縣舷衒見賢鉉顯孑穴血頁嫌俠協夾峽挾浹狹脅脇莢鋏頰亨兄刑型�\".split(\"\");\nfor(j = 0; j != D[250].length; ++j) if(D[250][j].charCodeAt(0) !== 0xFFFD) { e[D[250][j]] = 64000 + j; d[64000 + j] = D[250][j];}\nD[251] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������形泂滎瀅灐炯熒珩瑩荊螢衡逈邢鎣馨兮彗惠慧暳蕙蹊醯鞋乎互呼壕壺好岵弧戶扈昊晧毫浩淏湖滸澔濠濩灝狐琥瑚瓠皓祜糊縞胡芦葫蒿虎號蝴護豪鎬頀顥惑或酷婚昏混渾琿魂忽惚笏哄弘汞泓洪烘紅虹訌鴻化和嬅樺火畵�\".split(\"\");\nfor(j = 0; j != D[251].length; ++j) if(D[251][j].charCodeAt(0) !== 0xFFFD) { e[D[251][j]] = 64256 + j; d[64256 + j] = D[251][j];}\nD[252] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������禍禾花華話譁貨靴廓擴攫確碻穫丸喚奐宦幻患換歡晥桓渙煥環紈還驩鰥活滑猾豁闊凰幌徨恍惶愰慌晃晄榥況湟滉潢煌璜皇篁簧荒蝗遑隍黃匯回廻徊恢悔懷晦會檜淮澮灰獪繪膾茴蛔誨賄劃獲宖橫鐄哮嚆孝效斅曉梟涍淆�\".split(\"\");\nfor(j = 0; j != D[252].length; ++j) if(D[252][j].charCodeAt(0) !== 0xFFFD) { e[D[252][j]] = 64512 + j; d[64512 + j] = D[252][j];}\nD[253] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������爻肴酵驍侯候厚后吼喉嗅帿後朽煦珝逅勛勳塤壎焄熏燻薰訓暈薨喧暄煊萱卉喙毁彙徽揮暉煇諱輝麾休携烋畦虧恤譎鷸兇凶匈洶胸黑昕欣炘痕吃屹紇訖欠欽歆吸恰洽翕興僖凞喜噫囍姬嬉希憙憘戱晞曦熙熹熺犧禧稀羲詰�\".split(\"\");\nfor(j = 0; j != D[253].length; ++j) if(D[253][j].charCodeAt(0) !== 0xFFFD) { e[D[253][j]] = 64768 + j; d[64768 + j] = D[253][j];}\nreturn {\"enc\": e, \"dec\": d }; })();\ncptable[950] = (function(){ var d = [], e = {}, D = [], j;\nD[0] = \"\\u0000\\u0001\\u0002\\u0003\\u0004\\u0005\\u0006\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\u0014\\u0015\\u0016\\u0017\\u0018\\u0019\\u001a\\u001b\\u001c\\u001d\\u001e\\u001f !\\\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~��������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[0].length; ++j) if(D[0][j].charCodeAt(0) !== 0xFFFD) { e[D[0][j]] = 0 + j; d[0 + j] = D[0][j];}\nD[161] = \"����������������������������������������������������������������　，、。．‧；：？！︰…‥﹐﹑﹒·﹔﹕﹖﹗｜–︱—︳╴︴﹏（）︵︶｛｝︷︸〔〕︹︺【】︻︼《》︽︾〈〉︿﹀「」﹁﹂『』﹃﹄﹙﹚����������������������������������﹛﹜﹝﹞‘’“”〝〞‵′＃＆＊※§〃○●△▲◎☆★◇◆□■▽▼㊣℅¯￣＿ˍ﹉﹊﹍﹎﹋﹌﹟﹠﹡＋－×÷±√＜＞＝≦≧≠∞≒≡﹢﹣﹤﹥﹦～∩∪⊥∠∟⊿㏒㏑∫∮∵∴♀♂⊕⊙↑↓←→↖↗↙↘∥∣／�\".split(\"\");\nfor(j = 0; j != D[161].length; ++j) if(D[161][j].charCodeAt(0) !== 0xFFFD) { e[D[161][j]] = 41216 + j; d[41216 + j] = D[161][j];}\nD[162] = \"����������������������������������������������������������������＼∕﹨＄￥〒￠￡％＠℃℉﹩﹪﹫㏕㎜㎝㎞㏎㎡㎎㎏㏄°兙兛兞兝兡兣嗧瓩糎▁▂▃▄▅▆▇█▏▎▍▌▋▊▉┼┴┬┤├▔─│▕┌┐└┘╭����������������������������������╮╰╯═╞╪╡◢◣◥◤╱╲╳０１２３４５６７８９ⅠⅡⅢⅣⅤⅥⅦⅧⅨⅩ〡〢〣〤〥〦〧〨〩十卄卅ＡＢＣＤＥＦＧＨＩＪＫＬＭＮＯＰＱＲＳＴＵＶＷＸＹＺａｂｃｄｅｆｇｈｉｊｋｌｍｎｏｐｑｒｓｔｕｖ�\".split(\"\");\nfor(j = 0; j != D[162].length; ++j) if(D[162][j].charCodeAt(0) !== 0xFFFD) { e[D[162][j]] = 41472 + j; d[41472 + j] = D[162][j];}\nD[163] = \"����������������������������������������������������������������ｗｘｙｚΑΒΓΔΕΖΗΘΙΚΛΜΝΞΟΠΡΣΤΥΦΧΨΩαβγδεζηθικλμνξοπρστυφχψωㄅㄆㄇㄈㄉㄊㄋㄌㄍㄎㄏ����������������������������������ㄐㄑㄒㄓㄔㄕㄖㄗㄘㄙㄚㄛㄜㄝㄞㄟㄠㄡㄢㄣㄤㄥㄦㄧㄨㄩ˙ˉˊˇˋ���������������������������������€������������������������������\".split(\"\");\nfor(j = 0; j != D[163].length; ++j) if(D[163][j].charCodeAt(0) !== 0xFFFD) { e[D[163][j]] = 41728 + j; d[41728 + j] = D[163][j];}\nD[164] = \"����������������������������������������������������������������一乙丁七乃九了二人儿入八几刀刁力匕十卜又三下丈上丫丸凡久么也乞于亡兀刃勺千叉口土士夕大女子孑孓寸小尢尸山川工己已巳巾干廾弋弓才����������������������������������丑丐不中丰丹之尹予云井互五亢仁什仃仆仇仍今介仄元允內六兮公冗凶分切刈勻勾勿化匹午升卅卞厄友及反壬天夫太夭孔少尤尺屯巴幻廿弔引心戈戶手扎支文斗斤方日曰月木欠止歹毋比毛氏水火爪父爻片牙牛犬王丙�\".split(\"\");\nfor(j = 0; j != D[164].length; ++j) if(D[164][j].charCodeAt(0) !== 0xFFFD) { e[D[164][j]] = 41984 + j; d[41984 + j] = D[164][j];}\nD[165] = \"����������������������������������������������������������������世丕且丘主乍乏乎以付仔仕他仗代令仙仞充兄冉冊冬凹出凸刊加功包匆北匝仟半卉卡占卯卮去可古右召叮叩叨叼司叵叫另只史叱台句叭叻四囚外����������������������������������央失奴奶孕它尼巨巧左市布平幼弁弘弗必戊打扔扒扑斥旦朮本未末札正母民氐永汁汀氾犯玄玉瓜瓦甘生用甩田由甲申疋白皮皿目矛矢石示禾穴立丞丟乒乓乩亙交亦亥仿伉伙伊伕伍伐休伏仲件任仰仳份企伋光兇兆先全�\".split(\"\");\nfor(j = 0; j != D[165].length; ++j) if(D[165][j].charCodeAt(0) !== 0xFFFD) { e[D[165][j]] = 42240 + j; d[42240 + j] = D[165][j];}\nD[166] = \"����������������������������������������������������������������共再冰列刑划刎刖劣匈匡匠印危吉吏同吊吐吁吋各向名合吃后吆吒因回囝圳地在圭圬圯圩夙多夷夸妄奸妃好她如妁字存宇守宅安寺尖屹州帆并年����������������������������������式弛忙忖戎戌戍成扣扛托收早旨旬旭曲曳有朽朴朱朵次此死氖汝汗汙江池汐汕污汛汍汎灰牟牝百竹米糸缶羊羽老考而耒耳聿肉肋肌臣自至臼舌舛舟艮色艾虫血行衣西阡串亨位住佇佗佞伴佛何估佐佑伽伺伸佃佔似但佣�\".split(\"\");\nfor(j = 0; j != D[166].length; ++j) if(D[166][j].charCodeAt(0) !== 0xFFFD) { e[D[166][j]] = 42496 + j; d[42496 + j] = D[166][j];}\nD[167] = \"����������������������������������������������������������������作你伯低伶余佝佈佚兌克免兵冶冷別判利刪刨劫助努劬匣即卵吝吭吞吾否呎吧呆呃吳呈呂君吩告吹吻吸吮吵吶吠吼呀吱含吟听囪困囤囫坊坑址坍����������������������������������均坎圾坐坏圻壯夾妝妒妨妞妣妙妖妍妤妓妊妥孝孜孚孛完宋宏尬局屁尿尾岐岑岔岌巫希序庇床廷弄弟彤形彷役忘忌志忍忱快忸忪戒我抄抗抖技扶抉扭把扼找批扳抒扯折扮投抓抑抆改攻攸旱更束李杏材村杜杖杞杉杆杠�\".split(\"\");\nfor(j = 0; j != D[167].length; ++j) if(D[167][j].charCodeAt(0) !== 0xFFFD) { e[D[167][j]] = 42752 + j; d[42752 + j] = D[167][j];}\nD[168] = \"����������������������������������������������������������������杓杗步每求汞沙沁沈沉沅沛汪決沐汰沌汨沖沒汽沃汲汾汴沆汶沍沔沘沂灶灼災灸牢牡牠狄狂玖甬甫男甸皂盯矣私秀禿究系罕肖肓肝肘肛肚育良芒����������������������������������芋芍見角言谷豆豕貝赤走足身車辛辰迂迆迅迄巡邑邢邪邦那酉釆里防阮阱阪阬並乖乳事些亞享京佯依侍佳使佬供例來侃佰併侈佩佻侖佾侏侑佺兔兒兕兩具其典冽函刻券刷刺到刮制剁劾劻卒協卓卑卦卷卸卹取叔受味呵�\".split(\"\");\nfor(j = 0; j != D[168].length; ++j) if(D[168][j].charCodeAt(0) !== 0xFFFD) { e[D[168][j]] = 43008 + j; d[43008 + j] = D[168][j];}\nD[169] = \"����������������������������������������������������������������咖呸咕咀呻呷咄咒咆呼咐呱呶和咚呢周咋命咎固垃坷坪坩坡坦坤坼夜奉奇奈奄奔妾妻委妹妮姑姆姐姍始姓姊妯妳姒姅孟孤季宗定官宜宙宛尚屈居����������������������������������屆岷岡岸岩岫岱岳帘帚帖帕帛帑幸庚店府底庖延弦弧弩往征彿彼忝忠忽念忿怏怔怯怵怖怪怕怡性怩怫怛或戕房戾所承拉拌拄抿拂抹拒招披拓拔拋拈抨抽押拐拙拇拍抵拚抱拘拖拗拆抬拎放斧於旺昔易昌昆昂明昀昏昕昊�\".split(\"\");\nfor(j = 0; j != D[169].length; ++j) if(D[169][j].charCodeAt(0) !== 0xFFFD) { e[D[169][j]] = 43264 + j; d[43264 + j] = D[169][j];}\nD[170] = \"����������������������������������������������������������������昇服朋杭枋枕東果杳杷枇枝林杯杰板枉松析杵枚枓杼杪杲欣武歧歿氓氛泣注泳沱泌泥河沽沾沼波沫法泓沸泄油況沮泗泅泱沿治泡泛泊沬泯泜泖泠����������������������������������炕炎炒炊炙爬爭爸版牧物狀狎狙狗狐玩玨玟玫玥甽疝疙疚的盂盲直知矽社祀祁秉秈空穹竺糾罔羌羋者肺肥肢肱股肫肩肴肪肯臥臾舍芳芝芙芭芽芟芹花芬芥芯芸芣芰芾芷虎虱初表軋迎返近邵邸邱邶采金長門阜陀阿阻附�\".split(\"\");\nfor(j = 0; j != D[170].length; ++j) if(D[170][j].charCodeAt(0) !== 0xFFFD) { e[D[170][j]] = 43520 + j; d[43520 + j] = D[170][j];}\nD[171] = \"����������������������������������������������������������������陂隹雨青非亟亭亮信侵侯便俠俑俏保促侶俘俟俊俗侮俐俄係俚俎俞侷兗冒冑冠剎剃削前剌剋則勇勉勃勁匍南卻厚叛咬哀咨哎哉咸咦咳哇哂咽咪品����������������������������������哄哈咯咫咱咻咩咧咿囿垂型垠垣垢城垮垓奕契奏奎奐姜姘姿姣姨娃姥姪姚姦威姻孩宣宦室客宥封屎屏屍屋峙峒巷帝帥帟幽庠度建弈弭彥很待徊律徇後徉怒思怠急怎怨恍恰恨恢恆恃恬恫恪恤扁拜挖按拼拭持拮拽指拱拷�\".split(\"\");\nfor(j = 0; j != D[171].length; ++j) if(D[171][j].charCodeAt(0) !== 0xFFFD) { e[D[171][j]] = 43776 + j; d[43776 + j] = D[171][j];}\nD[172] = \"����������������������������������������������������������������拯括拾拴挑挂政故斫施既春昭映昧是星昨昱昤曷柿染柱柔某柬架枯柵柩柯柄柑枴柚查枸柏柞柳枰柙柢柝柒歪殃殆段毒毗氟泉洋洲洪流津洌洱洞洗����������������������������������活洽派洶洛泵洹洧洸洩洮洵洎洫炫為炳炬炯炭炸炮炤爰牲牯牴狩狠狡玷珊玻玲珍珀玳甚甭畏界畎畋疫疤疥疢疣癸皆皇皈盈盆盃盅省盹相眉看盾盼眇矜砂研砌砍祆祉祈祇禹禺科秒秋穿突竿竽籽紂紅紀紉紇約紆缸美羿耄�\".split(\"\");\nfor(j = 0; j != D[172].length; ++j) if(D[172][j].charCodeAt(0) !== 0xFFFD) { e[D[172][j]] = 44032 + j; d[44032 + j] = D[172][j];}\nD[173] = \"����������������������������������������������������������������耐耍耑耶胖胥胚胃胄背胡胛胎胞胤胝致舢苧范茅苣苛苦茄若茂茉苒苗英茁苜苔苑苞苓苟苯茆虐虹虻虺衍衫要觔計訂訃貞負赴赳趴軍軌述迦迢迪迥����������������������������������迭迫迤迨郊郎郁郃酋酊重閂限陋陌降面革韋韭音頁風飛食首香乘亳倌倍倣俯倦倥俸倩倖倆值借倚倒們俺倀倔倨俱倡個候倘俳修倭倪俾倫倉兼冤冥冢凍凌准凋剖剜剔剛剝匪卿原厝叟哨唐唁唷哼哥哲唆哺唔哩哭員唉哮哪�\".split(\"\");\nfor(j = 0; j != D[173].length; ++j) if(D[173][j].charCodeAt(0) !== 0xFFFD) { e[D[173][j]] = 44288 + j; d[44288 + j] = D[173][j];}\nD[174] = \"����������������������������������������������������������������哦唧唇哽唏圃圄埂埔埋埃堉夏套奘奚娑娘娜娟娛娓姬娠娣娩娥娌娉孫屘宰害家宴宮宵容宸射屑展屐峭峽峻峪峨峰島崁峴差席師庫庭座弱徒徑徐恙����������������������������������恣恥恐恕恭恩息悄悟悚悍悔悌悅悖扇拳挈拿捎挾振捕捂捆捏捉挺捐挽挪挫挨捍捌效敉料旁旅時晉晏晃晒晌晅晁書朔朕朗校核案框桓根桂桔栩梳栗桌桑栽柴桐桀格桃株桅栓栘桁殊殉殷氣氧氨氦氤泰浪涕消涇浦浸海浙涓�\".split(\"\");\nfor(j = 0; j != D[174].length; ++j) if(D[174][j].charCodeAt(0) !== 0xFFFD) { e[D[174][j]] = 44544 + j; d[44544 + j] = D[174][j];}\nD[175] = \"����������������������������������������������������������������浬涉浮浚浴浩涌涊浹涅浥涔烊烘烤烙烈烏爹特狼狹狽狸狷玆班琉珮珠珪珞畔畝畜畚留疾病症疲疳疽疼疹痂疸皋皰益盍盎眩真眠眨矩砰砧砸砝破砷����������������������������������砥砭砠砟砲祕祐祠祟祖神祝祗祚秤秣秧租秦秩秘窄窈站笆笑粉紡紗紋紊素索純紐紕級紜納紙紛缺罟羔翅翁耆耘耕耙耗耽耿胱脂胰脅胭胴脆胸胳脈能脊胼胯臭臬舀舐航舫舨般芻茫荒荔荊茸荐草茵茴荏茲茹茶茗荀茱茨荃�\".split(\"\");\nfor(j = 0; j != D[175].length; ++j) if(D[175][j].charCodeAt(0) !== 0xFFFD) { e[D[175][j]] = 44800 + j; d[44800 + j] = D[175][j];}\nD[176] = \"����������������������������������������������������������������虔蚊蚪蚓蚤蚩蚌蚣蚜衰衷袁袂衽衹記訐討訌訕訊託訓訖訏訑豈豺豹財貢起躬軒軔軏辱送逆迷退迺迴逃追逅迸邕郡郝郢酒配酌釘針釗釜釙閃院陣陡����������������������������������陛陝除陘陞隻飢馬骨高鬥鬲鬼乾偺偽停假偃偌做偉健偶偎偕偵側偷偏倏偯偭兜冕凰剪副勒務勘動匐匏匙匿區匾參曼商啪啦啄啞啡啃啊唱啖問啕唯啤唸售啜唬啣唳啁啗圈國圉域堅堊堆埠埤基堂堵執培夠奢娶婁婉婦婪婀�\".split(\"\");\nfor(j = 0; j != D[176].length; ++j) if(D[176][j].charCodeAt(0) !== 0xFFFD) { e[D[176][j]] = 45056 + j; d[45056 + j] = D[176][j];}\nD[177] = \"����������������������������������������������������������������娼婢婚婆婊孰寇寅寄寂宿密尉專將屠屜屝崇崆崎崛崖崢崑崩崔崙崤崧崗巢常帶帳帷康庸庶庵庾張強彗彬彩彫得徙從徘御徠徜恿患悉悠您惋悴惦悽����������������������������������情悻悵惜悼惘惕惆惟悸惚惇戚戛扈掠控捲掖探接捷捧掘措捱掩掉掃掛捫推掄授掙採掬排掏掀捻捩捨捺敝敖救教敗啟敏敘敕敔斜斛斬族旋旌旎晝晚晤晨晦晞曹勗望梁梯梢梓梵桿桶梱梧梗械梃棄梭梆梅梔條梨梟梡梂欲殺�\".split(\"\");\nfor(j = 0; j != D[177].length; ++j) if(D[177][j].charCodeAt(0) !== 0xFFFD) { e[D[177][j]] = 45312 + j; d[45312 + j] = D[177][j];}\nD[178] = \"����������������������������������������������������������������毫毬氫涎涼淳淙液淡淌淤添淺清淇淋涯淑涮淞淹涸混淵淅淒渚涵淚淫淘淪深淮淨淆淄涪淬涿淦烹焉焊烽烯爽牽犁猜猛猖猓猙率琅琊球理現琍瓠瓶����������������������������������瓷甜產略畦畢異疏痔痕疵痊痍皎盔盒盛眷眾眼眶眸眺硫硃硎祥票祭移窒窕笠笨笛第符笙笞笮粒粗粕絆絃統紮紹紼絀細紳組累終紲紱缽羞羚翌翎習耜聊聆脯脖脣脫脩脰脤舂舵舷舶船莎莞莘荸莢莖莽莫莒莊莓莉莠荷荻荼�\".split(\"\");\nfor(j = 0; j != D[178].length; ++j) if(D[178][j].charCodeAt(0) !== 0xFFFD) { e[D[178][j]] = 45568 + j; d[45568 + j] = D[178][j];}\nD[179] = \"����������������������������������������������������������������莆莧處彪蛇蛀蚶蛄蚵蛆蛋蚱蚯蛉術袞袈被袒袖袍袋覓規訪訝訣訥許設訟訛訢豉豚販責貫貨貪貧赧赦趾趺軛軟這逍通逗連速逝逐逕逞造透逢逖逛途����������������������������������部郭都酗野釵釦釣釧釭釩閉陪陵陳陸陰陴陶陷陬雀雪雩章竟頂頃魚鳥鹵鹿麥麻傢傍傅備傑傀傖傘傚最凱割剴創剩勞勝勛博厥啻喀喧啼喊喝喘喂喜喪喔喇喋喃喳單喟唾喲喚喻喬喱啾喉喫喙圍堯堪場堤堰報堡堝堠壹壺奠�\".split(\"\");\nfor(j = 0; j != D[179].length; ++j) if(D[179][j].charCodeAt(0) !== 0xFFFD) { e[D[179][j]] = 45824 + j; d[45824 + j] = D[179][j];}\nD[180] = \"����������������������������������������������������������������婷媚婿媒媛媧孳孱寒富寓寐尊尋就嵌嵐崴嵇巽幅帽幀幃幾廊廁廂廄弼彭復循徨惑惡悲悶惠愜愣惺愕惰惻惴慨惱愎惶愉愀愒戟扉掣掌描揀揩揉揆揍����������������������������������插揣提握揖揭揮捶援揪換摒揚揹敞敦敢散斑斐斯普晰晴晶景暑智晾晷曾替期朝棺棕棠棘棗椅棟棵森棧棹棒棲棣棋棍植椒椎棉棚楮棻款欺欽殘殖殼毯氮氯氬港游湔渡渲湧湊渠渥渣減湛湘渤湖湮渭渦湯渴湍渺測湃渝渾滋�\".split(\"\");\nfor(j = 0; j != D[180].length; ++j) if(D[180][j].charCodeAt(0) !== 0xFFFD) { e[D[180][j]] = 46080 + j; d[46080 + j] = D[180][j];}\nD[181] = \"����������������������������������������������������������������溉渙湎湣湄湲湩湟焙焚焦焰無然煮焜牌犄犀猶猥猴猩琺琪琳琢琥琵琶琴琯琛琦琨甥甦畫番痢痛痣痙痘痞痠登發皖皓皴盜睏短硝硬硯稍稈程稅稀窘����������������������������������窗窖童竣等策筆筐筒答筍筋筏筑粟粥絞結絨絕紫絮絲絡給絢絰絳善翔翕耋聒肅腕腔腋腑腎脹腆脾腌腓腴舒舜菩萃菸萍菠菅萋菁華菱菴著萊菰萌菌菽菲菊萸萎萄菜萇菔菟虛蛟蛙蛭蛔蛛蛤蛐蛞街裁裂袱覃視註詠評詞証詁�\".split(\"\");\nfor(j = 0; j != D[181].length; ++j) if(D[181][j].charCodeAt(0) !== 0xFFFD) { e[D[181][j]] = 46336 + j; d[46336 + j] = D[181][j];}\nD[182] = \"����������������������������������������������������������������詔詛詐詆訴診訶詖象貂貯貼貳貽賁費賀貴買貶貿貸越超趁跎距跋跚跑跌跛跆軻軸軼辜逮逵週逸進逶鄂郵鄉郾酣酥量鈔鈕鈣鈉鈞鈍鈐鈇鈑閔閏開閑����������������������������������間閒閎隊階隋陽隅隆隍陲隄雁雅雄集雇雯雲韌項順須飧飪飯飩飲飭馮馭黃黍黑亂傭債傲傳僅傾催傷傻傯僇剿剷剽募勦勤勢勣匯嗟嗨嗓嗦嗎嗜嗇嗑嗣嗤嗯嗚嗡嗅嗆嗥嗉園圓塞塑塘塗塚塔填塌塭塊塢塒塋奧嫁嫉嫌媾媽媼�\".split(\"\");\nfor(j = 0; j != D[182].length; ++j) if(D[182][j].charCodeAt(0) !== 0xFFFD) { e[D[182][j]] = 46592 + j; d[46592 + j] = D[182][j];}\nD[183] = \"����������������������������������������������������������������媳嫂媲嵩嵯幌幹廉廈弒彙徬微愚意慈感想愛惹愁愈慎慌慄慍愾愴愧愍愆愷戡戢搓搾搞搪搭搽搬搏搜搔損搶搖搗搆敬斟新暗暉暇暈暖暄暘暍會榔業����������������������������������楚楷楠楔極椰概楊楨楫楞楓楹榆楝楣楛歇歲毀殿毓毽溢溯滓溶滂源溝滇滅溥溘溼溺溫滑準溜滄滔溪溧溴煎煙煩煤煉照煜煬煦煌煥煞煆煨煖爺牒猷獅猿猾瑯瑚瑕瑟瑞瑁琿瑙瑛瑜當畸瘀痰瘁痲痱痺痿痴痳盞盟睛睫睦睞督�\".split(\"\");\nfor(j = 0; j != D[183].length; ++j) if(D[183][j].charCodeAt(0) !== 0xFFFD) { e[D[183][j]] = 46848 + j; d[46848 + j] = D[183][j];}\nD[184] = \"����������������������������������������������������������������睹睪睬睜睥睨睢矮碎碰碗碘碌碉硼碑碓硿祺祿禁萬禽稜稚稠稔稟稞窟窠筷節筠筮筧粱粳粵經絹綑綁綏絛置罩罪署義羨群聖聘肆肄腱腰腸腥腮腳腫����������������������������������腹腺腦舅艇蒂葷落萱葵葦葫葉葬葛萼萵葡董葩葭葆虞虜號蛹蜓蜈蜇蜀蛾蛻蜂蜃蜆蜊衙裟裔裙補裘裝裡裊裕裒覜解詫該詳試詩詰誇詼詣誠話誅詭詢詮詬詹詻訾詨豢貊貉賊資賈賄貲賃賂賅跡跟跨路跳跺跪跤跦躲較載軾輊�\".split(\"\");\nfor(j = 0; j != D[184].length; ++j) if(D[184][j].charCodeAt(0) !== 0xFFFD) { e[D[184][j]] = 47104 + j; d[47104 + j] = D[184][j];}\nD[185] = \"����������������������������������������������������������������辟農運遊道遂達逼違遐遇遏過遍遑逾遁鄒鄗酬酪酩釉鈷鉗鈸鈽鉀鈾鉛鉋鉤鉑鈴鉉鉍鉅鈹鈿鉚閘隘隔隕雍雋雉雊雷電雹零靖靴靶預頑頓頊頒頌飼飴����������������������������������飽飾馳馱馴髡鳩麂鼎鼓鼠僧僮僥僖僭僚僕像僑僱僎僩兢凳劃劂匱厭嗾嘀嘛嘗嗽嘔嘆嘉嘍嘎嗷嘖嘟嘈嘐嗶團圖塵塾境墓墊塹墅塽壽夥夢夤奪奩嫡嫦嫩嫗嫖嫘嫣孵寞寧寡寥實寨寢寤察對屢嶄嶇幛幣幕幗幔廓廖弊彆彰徹慇�\".split(\"\");\nfor(j = 0; j != D[185].length; ++j) if(D[185][j].charCodeAt(0) !== 0xFFFD) { e[D[185][j]] = 47360 + j; d[47360 + j] = D[185][j];}\nD[186] = \"����������������������������������������������������������������愿態慷慢慣慟慚慘慵截撇摘摔撤摸摟摺摑摧搴摭摻敲斡旗旖暢暨暝榜榨榕槁榮槓構榛榷榻榫榴槐槍榭槌榦槃榣歉歌氳漳演滾漓滴漩漾漠漬漏漂漢����������������������������������滿滯漆漱漸漲漣漕漫漯澈漪滬漁滲滌滷熔熙煽熊熄熒爾犒犖獄獐瑤瑣瑪瑰瑭甄疑瘧瘍瘋瘉瘓盡監瞄睽睿睡磁碟碧碳碩碣禎福禍種稱窪窩竭端管箕箋筵算箝箔箏箸箇箄粹粽精綻綰綜綽綾綠緊綴網綱綺綢綿綵綸維緒緇綬�\".split(\"\");\nfor(j = 0; j != D[186].length; ++j) if(D[186][j].charCodeAt(0) !== 0xFFFD) { e[D[186][j]] = 47616 + j; d[47616 + j] = D[186][j];}\nD[187] = \"����������������������������������������������������������������罰翠翡翟聞聚肇腐膀膏膈膊腿膂臧臺與舔舞艋蓉蒿蓆蓄蒙蒞蒲蒜蓋蒸蓀蓓蒐蒼蓑蓊蜿蜜蜻蜢蜥蜴蜘蝕蜷蜩裳褂裴裹裸製裨褚裯誦誌語誣認誡誓誤����������������������������������說誥誨誘誑誚誧豪貍貌賓賑賒赫趙趕跼輔輒輕輓辣遠遘遜遣遙遞遢遝遛鄙鄘鄞酵酸酷酴鉸銀銅銘銖鉻銓銜銨鉼銑閡閨閩閣閥閤隙障際雌雒需靼鞅韶頗領颯颱餃餅餌餉駁骯骰髦魁魂鳴鳶鳳麼鼻齊億儀僻僵價儂儈儉儅凜�\".split(\"\");\nfor(j = 0; j != D[187].length; ++j) if(D[187][j].charCodeAt(0) !== 0xFFFD) { e[D[187][j]] = 47872 + j; d[47872 + j] = D[187][j];}\nD[188] = \"����������������������������������������������������������������劇劈劉劍劊勰厲嘮嘻嘹嘲嘿嘴嘩噓噎噗噴嘶嘯嘰墀墟增墳墜墮墩墦奭嬉嫻嬋嫵嬌嬈寮寬審寫層履嶝嶔幢幟幡廢廚廟廝廣廠彈影德徵慶慧慮慝慕憂����������������������������������慼慰慫慾憧憐憫憎憬憚憤憔憮戮摩摯摹撞撲撈撐撰撥撓撕撩撒撮播撫撚撬撙撢撳敵敷數暮暫暴暱樣樟槨樁樞標槽模樓樊槳樂樅槭樑歐歎殤毅毆漿潼澄潑潦潔澆潭潛潸潮澎潺潰潤澗潘滕潯潠潟熟熬熱熨牖犛獎獗瑩璋璃�\".split(\"\");\nfor(j = 0; j != D[188].length; ++j) if(D[188][j].charCodeAt(0) !== 0xFFFD) { e[D[188][j]] = 48128 + j; d[48128 + j] = D[188][j];}\nD[189] = \"����������������������������������������������������������������瑾璀畿瘠瘩瘟瘤瘦瘡瘢皚皺盤瞎瞇瞌瞑瞋磋磅確磊碾磕碼磐稿稼穀稽稷稻窯窮箭箱範箴篆篇篁箠篌糊締練緯緻緘緬緝編緣線緞緩綞緙緲緹罵罷羯����������������������������������翩耦膛膜膝膠膚膘蔗蔽蔚蓮蔬蔭蔓蔑蔣蔡蔔蓬蔥蓿蔆螂蝴蝶蝠蝦蝸蝨蝙蝗蝌蝓衛衝褐複褒褓褕褊誼諒談諄誕請諸課諉諂調誰論諍誶誹諛豌豎豬賠賞賦賤賬賭賢賣賜質賡赭趟趣踫踐踝踢踏踩踟踡踞躺輝輛輟輩輦輪輜輞�\".split(\"\");\nfor(j = 0; j != D[189].length; ++j) if(D[189][j].charCodeAt(0) !== 0xFFFD) { e[D[189][j]] = 48384 + j; d[48384 + j] = D[189][j];}\nD[190] = \"����������������������������������������������������������������輥適遮遨遭遷鄰鄭鄧鄱醇醉醋醃鋅銻銷鋪銬鋤鋁銳銼鋒鋇鋰銲閭閱霄霆震霉靠鞍鞋鞏頡頫頜颳養餓餒餘駝駐駟駛駑駕駒駙骷髮髯鬧魅魄魷魯鴆鴉����������������������������������鴃麩麾黎墨齒儒儘儔儐儕冀冪凝劑劓勳噙噫噹噩噤噸噪器噥噱噯噬噢噶壁墾壇壅奮嬝嬴學寰導彊憲憑憩憊懍憶憾懊懈戰擅擁擋撻撼據擄擇擂操撿擒擔撾整曆曉暹曄曇暸樽樸樺橙橫橘樹橄橢橡橋橇樵機橈歙歷氅濂澱澡�\".split(\"\");\nfor(j = 0; j != D[190].length; ++j) if(D[190][j].charCodeAt(0) !== 0xFFFD) { e[D[190][j]] = 48640 + j; d[48640 + j] = D[190][j];}\nD[191] = \"����������������������������������������������������������������濃澤濁澧澳激澹澶澦澠澴熾燉燐燒燈燕熹燎燙燜燃燄獨璜璣璘璟璞瓢甌甍瘴瘸瘺盧盥瞠瞞瞟瞥磨磚磬磧禦積穎穆穌穋窺篙簑築篤篛篡篩篦糕糖縊����������������������������������縑縈縛縣縞縝縉縐罹羲翰翱翮耨膳膩膨臻興艘艙蕊蕙蕈蕨蕩蕃蕉蕭蕪蕞螃螟螞螢融衡褪褲褥褫褡親覦諦諺諫諱謀諜諧諮諾謁謂諷諭諳諶諼豫豭貓賴蹄踱踴蹂踹踵輻輯輸輳辨辦遵遴選遲遼遺鄴醒錠錶鋸錳錯錢鋼錫錄錚�\".split(\"\");\nfor(j = 0; j != D[191].length; ++j) if(D[191][j].charCodeAt(0) !== 0xFFFD) { e[D[191][j]] = 48896 + j; d[48896 + j] = D[191][j];}\nD[192] = \"����������������������������������������������������������������錐錦錡錕錮錙閻隧隨險雕霎霑霖霍霓霏靛靜靦鞘頰頸頻頷頭頹頤餐館餞餛餡餚駭駢駱骸骼髻髭鬨鮑鴕鴣鴦鴨鴒鴛默黔龍龜優償儡儲勵嚎嚀嚐嚅嚇����������������������������������嚏壕壓壑壎嬰嬪嬤孺尷屨嶼嶺嶽嶸幫彌徽應懂懇懦懋戲戴擎擊擘擠擰擦擬擱擢擭斂斃曙曖檀檔檄檢檜櫛檣橾檗檐檠歜殮毚氈濘濱濟濠濛濤濫濯澀濬濡濩濕濮濰燧營燮燦燥燭燬燴燠爵牆獰獲璩環璦璨癆療癌盪瞳瞪瞰瞬�\".split(\"\");\nfor(j = 0; j != D[192].length; ++j) if(D[192][j].charCodeAt(0) !== 0xFFFD) { e[D[192][j]] = 49152 + j; d[49152 + j] = D[192][j];}\nD[193] = \"����������������������������������������������������������������瞧瞭矯磷磺磴磯礁禧禪穗窿簇簍篾篷簌篠糠糜糞糢糟糙糝縮績繆縷縲繃縫總縱繅繁縴縹繈縵縿縯罄翳翼聱聲聰聯聳臆臃膺臂臀膿膽臉膾臨舉艱薪����������������������������������薄蕾薜薑薔薯薛薇薨薊虧蟀蟑螳蟒蟆螫螻螺蟈蟋褻褶襄褸褽覬謎謗謙講謊謠謝謄謐豁谿豳賺賽購賸賻趨蹉蹋蹈蹊轄輾轂轅輿避遽還邁邂邀鄹醣醞醜鍍鎂錨鍵鍊鍥鍋錘鍾鍬鍛鍰鍚鍔闊闋闌闈闆隱隸雖霜霞鞠韓顆颶餵騁�\".split(\"\");\nfor(j = 0; j != D[193].length; ++j) if(D[193][j].charCodeAt(0) !== 0xFFFD) { e[D[193][j]] = 49408 + j; d[49408 + j] = D[193][j];}\nD[194] = \"����������������������������������������������������������������駿鮮鮫鮪鮭鴻鴿麋黏點黜黝黛鼾齋叢嚕嚮壙壘嬸彝懣戳擴擲擾攆擺擻擷斷曜朦檳檬櫃檻檸櫂檮檯歟歸殯瀉瀋濾瀆濺瀑瀏燻燼燾燸獷獵璧璿甕癖癘����������������������������������癒瞽瞿瞻瞼礎禮穡穢穠竄竅簫簧簪簞簣簡糧織繕繞繚繡繒繙罈翹翻職聶臍臏舊藏薩藍藐藉薰薺薹薦蟯蟬蟲蟠覆覲觴謨謹謬謫豐贅蹙蹣蹦蹤蹟蹕軀轉轍邇邃邈醫醬釐鎔鎊鎖鎢鎳鎮鎬鎰鎘鎚鎗闔闖闐闕離雜雙雛雞霤鞣鞦�\".split(\"\");\nfor(j = 0; j != D[194].length; ++j) if(D[194][j].charCodeAt(0) !== 0xFFFD) { e[D[194][j]] = 49664 + j; d[49664 + j] = D[194][j];}\nD[195] = \"����������������������������������������������������������������鞭韹額顏題顎顓颺餾餿餽餮馥騎髁鬃鬆魏魎魍鯊鯉鯽鯈鯀鵑鵝鵠黠鼕鼬儳嚥壞壟壢寵龐廬懲懷懶懵攀攏曠曝櫥櫝櫚櫓瀛瀟瀨瀚瀝瀕瀘爆爍牘犢獸����������������������������������獺璽瓊瓣疇疆癟癡矇礙禱穫穩簾簿簸簽簷籀繫繭繹繩繪羅繳羶羹羸臘藩藝藪藕藤藥藷蟻蠅蠍蟹蟾襠襟襖襞譁譜識證譚譎譏譆譙贈贊蹼蹲躇蹶蹬蹺蹴轔轎辭邊邋醱醮鏡鏑鏟鏃鏈鏜鏝鏖鏢鏍鏘鏤鏗鏨關隴難霪霧靡韜韻類�\".split(\"\");\nfor(j = 0; j != D[195].length; ++j) if(D[195][j].charCodeAt(0) !== 0xFFFD) { e[D[195][j]] = 49920 + j; d[49920 + j] = D[195][j];}\nD[196] = \"����������������������������������������������������������������願顛颼饅饉騖騙鬍鯨鯧鯖鯛鶉鵡鵲鵪鵬麒麗麓麴勸嚨嚷嚶嚴嚼壤孀孃孽寶巉懸懺攘攔攙曦朧櫬瀾瀰瀲爐獻瓏癢癥礦礪礬礫竇競籌籃籍糯糰辮繽繼����������������������������������纂罌耀臚艦藻藹蘑藺蘆蘋蘇蘊蠔蠕襤覺觸議譬警譯譟譫贏贍躉躁躅躂醴釋鐘鐃鏽闡霰飄饒饑馨騫騰騷騵鰓鰍鹹麵黨鼯齟齣齡儷儸囁囀囂夔屬巍懼懾攝攜斕曩櫻欄櫺殲灌爛犧瓖瓔癩矓籐纏續羼蘗蘭蘚蠣蠢蠡蠟襪襬覽譴�\".split(\"\");\nfor(j = 0; j != D[196].length; ++j) if(D[196][j].charCodeAt(0) !== 0xFFFD) { e[D[196][j]] = 50176 + j; d[50176 + j] = D[196][j];}\nD[197] = \"����������������������������������������������������������������護譽贓躊躍躋轟辯醺鐮鐳鐵鐺鐸鐲鐫闢霸霹露響顧顥饗驅驃驀騾髏魔魑鰭鰥鶯鶴鷂鶸麝黯鼙齜齦齧儼儻囈囊囉孿巔巒彎懿攤權歡灑灘玀瓤疊癮癬����������������������������������禳籠籟聾聽臟襲襯觼讀贖贗躑躓轡酈鑄鑑鑒霽霾韃韁顫饕驕驍髒鬚鱉鰱鰾鰻鷓鷗鼴齬齪龔囌巖戀攣攫攪曬欐瓚竊籤籣籥纓纖纔臢蘸蘿蠱變邐邏鑣鑠鑤靨顯饜驚驛驗髓體髑鱔鱗鱖鷥麟黴囑壩攬灞癱癲矗罐羈蠶蠹衢讓讒�\".split(\"\");\nfor(j = 0; j != D[197].length; ++j) if(D[197][j].charCodeAt(0) !== 0xFFFD) { e[D[197][j]] = 50432 + j; d[50432 + j] = D[197][j];}\nD[198] = \"����������������������������������������������������������������讖艷贛釀鑪靂靈靄韆顰驟鬢魘鱟鷹鷺鹼鹽鼇齷齲廳欖灣籬籮蠻觀躡釁鑲鑰顱饞髖鬣黌灤矚讚鑷韉驢驥纜讜躪釅鑽鑾鑼鱷鱸黷豔鑿鸚爨驪鬱鸛鸞籲���������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[198].length; ++j) if(D[198][j].charCodeAt(0) !== 0xFFFD) { e[D[198][j]] = 50688 + j; d[50688 + j] = D[198][j];}\nD[201] = \"����������������������������������������������������������������乂乜凵匚厂万丌乇亍囗兀屮彳丏冇与丮亓仂仉仈冘勼卬厹圠夃夬尐巿旡殳毌气爿丱丼仨仜仩仡仝仚刌匜卌圢圣夗夯宁宄尒尻屴屳帄庀庂忉戉扐氕����������������������������������氶汃氿氻犮犰玊禸肊阞伎优伬仵伔仱伀价伈伝伂伅伢伓伄仴伒冱刓刉刐劦匢匟卍厊吇囡囟圮圪圴夼妀奼妅奻奾奷奿孖尕尥屼屺屻屾巟幵庄异弚彴忕忔忏扜扞扤扡扦扢扙扠扚扥旯旮朾朹朸朻机朿朼朳氘汆汒汜汏汊汔汋�\".split(\"\");\nfor(j = 0; j != D[201].length; ++j) if(D[201][j].charCodeAt(0) !== 0xFFFD) { e[D[201][j]] = 51456 + j; d[51456 + j] = D[201][j];}\nD[202] = \"����������������������������������������������������������������汌灱牞犴犵玎甪癿穵网艸艼芀艽艿虍襾邙邗邘邛邔阢阤阠阣佖伻佢佉体佤伾佧佒佟佁佘伭伳伿佡冏冹刜刞刡劭劮匉卣卲厎厏吰吷吪呔呅吙吜吥吘����������������������������������吽呏呁吨吤呇囮囧囥坁坅坌坉坋坒夆奀妦妘妠妗妎妢妐妏妧妡宎宒尨尪岍岏岈岋岉岒岊岆岓岕巠帊帎庋庉庌庈庍弅弝彸彶忒忑忐忭忨忮忳忡忤忣忺忯忷忻怀忴戺抃抌抎抏抔抇扱扻扺扰抁抈扷扽扲扴攷旰旴旳旲旵杅杇�\".split(\"\");\nfor(j = 0; j != D[202].length; ++j) if(D[202][j].charCodeAt(0) !== 0xFFFD) { e[D[202][j]] = 51712 + j; d[51712 + j] = D[202][j];}\nD[203] = \"����������������������������������������������������������������杙杕杌杈杝杍杚杋毐氙氚汸汧汫沄沋沏汱汯汩沚汭沇沕沜汦汳汥汻沎灴灺牣犿犽狃狆狁犺狅玕玗玓玔玒町甹疔疕皁礽耴肕肙肐肒肜芐芏芅芎芑芓����������������������������������芊芃芄豸迉辿邟邡邥邞邧邠阰阨阯阭丳侘佼侅佽侀侇佶佴侉侄佷佌侗佪侚佹侁佸侐侜侔侞侒侂侕佫佮冞冼冾刵刲刳剆刱劼匊匋匼厒厔咇呿咁咑咂咈呫呺呾呥呬呴呦咍呯呡呠咘呣呧呤囷囹坯坲坭坫坱坰坶垀坵坻坳坴坢�\".split(\"\");\nfor(j = 0; j != D[203].length; ++j) if(D[203][j].charCodeAt(0) !== 0xFFFD) { e[D[203][j]] = 51968 + j; d[51968 + j] = D[203][j];}\nD[204] = \"����������������������������������������������������������������坨坽夌奅妵妺姏姎妲姌姁妶妼姃姖妱妽姀姈妴姇孢孥宓宕屄屇岮岤岠岵岯岨岬岟岣岭岢岪岧岝岥岶岰岦帗帔帙弨弢弣弤彔徂彾彽忞忥怭怦怙怲怋����������������������������������怴怊怗怳怚怞怬怢怍怐怮怓怑怌怉怜戔戽抭抴拑抾抪抶拊抮抳抯抻抩抰抸攽斨斻昉旼昄昒昈旻昃昋昍昅旽昑昐曶朊枅杬枎枒杶杻枘枆构杴枍枌杺枟枑枙枃杽极杸杹枔欥殀歾毞氝沓泬泫泮泙沶泔沭泧沷泐泂沺泃泆泭泲�\".split(\"\");\nfor(j = 0; j != D[204].length; ++j) if(D[204][j].charCodeAt(0) !== 0xFFFD) { e[D[204][j]] = 52224 + j; d[52224 + j] = D[204][j];}\nD[205] = \"����������������������������������������������������������������泒泝沴沊沝沀泞泀洰泍泇沰泹泏泩泑炔炘炅炓炆炄炑炖炂炚炃牪狖狋狘狉狜狒狔狚狌狑玤玡玭玦玢玠玬玝瓝瓨甿畀甾疌疘皯盳盱盰盵矸矼矹矻矺����������������������������������矷祂礿秅穸穻竻籵糽耵肏肮肣肸肵肭舠芠苀芫芚芘芛芵芧芮芼芞芺芴芨芡芩苂芤苃芶芢虰虯虭虮豖迒迋迓迍迖迕迗邲邴邯邳邰阹阽阼阺陃俍俅俓侲俉俋俁俔俜俙侻侳俛俇俖侺俀侹俬剄剉勀勂匽卼厗厖厙厘咺咡咭咥哏�\".split(\"\");\nfor(j = 0; j != D[205].length; ++j) if(D[205][j].charCodeAt(0) !== 0xFFFD) { e[D[205][j]] = 52480 + j; d[52480 + j] = D[205][j];}\nD[206] = \"����������������������������������������������������������������哃茍咷咮哖咶哅哆咠呰咼咢咾呲哞咰垵垞垟垤垌垗垝垛垔垘垏垙垥垚垕壴复奓姡姞姮娀姱姝姺姽姼姶姤姲姷姛姩姳姵姠姾姴姭宨屌峐峘峌峗峋峛����������������������������������峞峚峉峇峊峖峓峔峏峈峆峎峟峸巹帡帢帣帠帤庰庤庢庛庣庥弇弮彖徆怷怹恔恲恞恅恓恇恉恛恌恀恂恟怤恄恘恦恮扂扃拏挍挋拵挎挃拫拹挏挌拸拶挀挓挔拺挕拻拰敁敃斪斿昶昡昲昵昜昦昢昳昫昺昝昴昹昮朏朐柁柲柈枺�\".split(\"\");\nfor(j = 0; j != D[206].length; ++j) if(D[206][j].charCodeAt(0) !== 0xFFFD) { e[D[206][j]] = 52736 + j; d[52736 + j] = D[206][j];}\nD[207] = \"����������������������������������������������������������������柜枻柸柘柀枷柅柫柤柟枵柍枳柷柶柮柣柂枹柎柧柰枲柼柆柭柌枮柦柛柺柉柊柃柪柋欨殂殄殶毖毘毠氠氡洨洴洭洟洼洿洒洊泚洳洄洙洺洚洑洀洝浂����������������������������������洁洘洷洃洏浀洇洠洬洈洢洉洐炷炟炾炱炰炡炴炵炩牁牉牊牬牰牳牮狊狤狨狫狟狪狦狣玅珌珂珈珅玹玶玵玴珫玿珇玾珃珆玸珋瓬瓮甮畇畈疧疪癹盄眈眃眄眅眊盷盻盺矧矨砆砑砒砅砐砏砎砉砃砓祊祌祋祅祄秕种秏秖秎窀�\".split(\"\");\nfor(j = 0; j != D[207].length; ++j) if(D[207][j].charCodeAt(0) !== 0xFFFD) { e[D[207][j]] = 52992 + j; d[52992 + j] = D[207][j];}\nD[208] = \"����������������������������������������������������������������穾竑笀笁籺籸籹籿粀粁紃紈紁罘羑羍羾耇耎耏耔耷胘胇胠胑胈胂胐胅胣胙胜胊胕胉胏胗胦胍臿舡芔苙苾苹茇苨茀苕茺苫苖苴苬苡苲苵茌苻苶苰苪����������������������������������苤苠苺苳苭虷虴虼虳衁衎衧衪衩觓訄訇赲迣迡迮迠郱邽邿郕郅邾郇郋郈釔釓陔陏陑陓陊陎倞倅倇倓倢倰倛俵俴倳倷倬俶俷倗倜倠倧倵倯倱倎党冔冓凊凄凅凈凎剡剚剒剞剟剕剢勍匎厞唦哢唗唒哧哳哤唚哿唄唈哫唑唅哱�\".split(\"\");\nfor(j = 0; j != D[208].length; ++j) if(D[208][j].charCodeAt(0) !== 0xFFFD) { e[D[208][j]] = 53248 + j; d[53248 + j] = D[208][j];}\nD[209] = \"����������������������������������������������������������������唊哻哷哸哠唎唃唋圁圂埌堲埕埒垺埆垽垼垸垶垿埇埐垹埁夎奊娙娖娭娮娕娏娗娊娞娳孬宧宭宬尃屖屔峬峿峮峱峷崀峹帩帨庨庮庪庬弳弰彧恝恚恧����������������������������������恁悢悈悀悒悁悝悃悕悛悗悇悜悎戙扆拲挐捖挬捄捅挶捃揤挹捋捊挼挩捁挴捘捔捙挭捇挳捚捑挸捗捀捈敊敆旆旃旄旂晊晟晇晑朒朓栟栚桉栲栳栻桋桏栖栱栜栵栫栭栯桎桄栴栝栒栔栦栨栮桍栺栥栠欬欯欭欱欴歭肂殈毦毤�\".split(\"\");\nfor(j = 0; j != D[209].length; ++j) if(D[209][j].charCodeAt(0) !== 0xFFFD) { e[D[209][j]] = 53504 + j; d[53504 + j] = D[209][j];}\nD[210] = \"����������������������������������������������������������������毨毣毢毧氥浺浣浤浶洍浡涒浘浢浭浯涑涍淯浿涆浞浧浠涗浰浼浟涂涘洯浨涋浾涀涄洖涃浻浽浵涐烜烓烑烝烋缹烢烗烒烞烠烔烍烅烆烇烚烎烡牂牸����������������������������������牷牶猀狺狴狾狶狳狻猁珓珙珥珖玼珧珣珩珜珒珛珔珝珚珗珘珨瓞瓟瓴瓵甡畛畟疰痁疻痄痀疿疶疺皊盉眝眛眐眓眒眣眑眕眙眚眢眧砣砬砢砵砯砨砮砫砡砩砳砪砱祔祛祏祜祓祒祑秫秬秠秮秭秪秜秞秝窆窉窅窋窌窊窇竘笐�\".split(\"\");\nfor(j = 0; j != D[210].length; ++j) if(D[210][j].charCodeAt(0) !== 0xFFFD) { e[D[210][j]] = 53760 + j; d[53760 + j] = D[210][j];}\nD[211] = \"����������������������������������������������������������������笄笓笅笏笈笊笎笉笒粄粑粊粌粈粍粅紞紝紑紎紘紖紓紟紒紏紌罜罡罞罠罝罛羖羒翃翂翀耖耾耹胺胲胹胵脁胻脀舁舯舥茳茭荄茙荑茥荖茿荁茦茜茢����������������������������������荂荎茛茪茈茼荍茖茤茠茷茯茩荇荅荌荓茞茬荋茧荈虓虒蚢蚨蚖蚍蚑蚞蚇蚗蚆蚋蚚蚅蚥蚙蚡蚧蚕蚘蚎蚝蚐蚔衃衄衭衵衶衲袀衱衿衯袃衾衴衼訒豇豗豻貤貣赶赸趵趷趶軑軓迾迵适迿迻逄迼迶郖郠郙郚郣郟郥郘郛郗郜郤酐�\".split(\"\");\nfor(j = 0; j != D[211].length; ++j) if(D[211][j].charCodeAt(0) !== 0xFFFD) { e[D[211][j]] = 54016 + j; d[54016 + j] = D[211][j];}\nD[212] = \"����������������������������������������������������������������酎酏釕釢釚陜陟隼飣髟鬯乿偰偪偡偞偠偓偋偝偲偈偍偁偛偊偢倕偅偟偩偫偣偤偆偀偮偳偗偑凐剫剭剬剮勖勓匭厜啵啶唼啍啐唴唪啑啢唶唵唰啒啅����������������������������������唌唲啥啎唹啈唭唻啀啋圊圇埻堔埢埶埜埴堀埭埽堈埸堋埳埏堇埮埣埲埥埬埡堎埼堐埧堁堌埱埩埰堍堄奜婠婘婕婧婞娸娵婭婐婟婥婬婓婤婗婃婝婒婄婛婈媎娾婍娹婌婰婩婇婑婖婂婜孲孮寁寀屙崞崋崝崚崠崌崨崍崦崥崏�\".split(\"\");\nfor(j = 0; j != D[212].length; ++j) if(D[212][j].charCodeAt(0) !== 0xFFFD) { e[D[212][j]] = 54272 + j; d[54272 + j] = D[212][j];}\nD[213] = \"����������������������������������������������������������������崰崒崣崟崮帾帴庱庴庹庲庳弶弸徛徖徟悊悐悆悾悰悺惓惔惏惤惙惝惈悱惛悷惊悿惃惍惀挲捥掊掂捽掽掞掭掝掗掫掎捯掇掐据掯捵掜捭掮捼掤挻掟����������������������������������捸掅掁掑掍捰敓旍晥晡晛晙晜晢朘桹梇梐梜桭桮梮梫楖桯梣梬梩桵桴梲梏桷梒桼桫桲梪梀桱桾梛梖梋梠梉梤桸桻梑梌梊桽欶欳欷欸殑殏殍殎殌氪淀涫涴涳湴涬淩淢涷淶淔渀淈淠淟淖涾淥淜淝淛淴淊涽淭淰涺淕淂淏淉�\".split(\"\");\nfor(j = 0; j != D[213].length; ++j) if(D[213][j].charCodeAt(0) !== 0xFFFD) { e[D[213][j]] = 54528 + j; d[54528 + j] = D[213][j];}\nD[214] = \"����������������������������������������������������������������淐淲淓淽淗淍淣涻烺焍烷焗烴焌烰焄烳焐烼烿焆焓焀烸烶焋焂焎牾牻牼牿猝猗猇猑猘猊猈狿猏猞玈珶珸珵琄琁珽琇琀珺珼珿琌琋珴琈畤畣痎痒痏����������������������������������痋痌痑痐皏皉盓眹眯眭眱眲眴眳眽眥眻眵硈硒硉硍硊硌砦硅硐祤祧祩祪祣祫祡离秺秸秶秷窏窔窐笵筇笴笥笰笢笤笳笘笪笝笱笫笭笯笲笸笚笣粔粘粖粣紵紽紸紶紺絅紬紩絁絇紾紿絊紻紨罣羕羜羝羛翊翋翍翐翑翇翏翉耟�\".split(\"\");\nfor(j = 0; j != D[214].length; ++j) if(D[214][j].charCodeAt(0) !== 0xFFFD) { e[D[214][j]] = 54784 + j; d[54784 + j] = D[214][j];}\nD[215] = \"����������������������������������������������������������������耞耛聇聃聈脘脥脙脛脭脟脬脞脡脕脧脝脢舑舸舳舺舴舲艴莐莣莨莍荺荳莤荴莏莁莕莙荵莔莩荽莃莌莝莛莪莋荾莥莯莈莗莰荿莦莇莮荶莚虙虖蚿蚷����������������������������������蛂蛁蛅蚺蚰蛈蚹蚳蚸蛌蚴蚻蚼蛃蚽蚾衒袉袕袨袢袪袚袑袡袟袘袧袙袛袗袤袬袌袓袎覂觖觙觕訰訧訬訞谹谻豜豝豽貥赽赻赹趼跂趹趿跁軘軞軝軜軗軠軡逤逋逑逜逌逡郯郪郰郴郲郳郔郫郬郩酖酘酚酓酕釬釴釱釳釸釤釹釪�\".split(\"\");\nfor(j = 0; j != D[215].length; ++j) if(D[215][j].charCodeAt(0) !== 0xFFFD) { e[D[215][j]] = 55040 + j; d[55040 + j] = D[215][j];}\nD[216] = \"����������������������������������������������������������������釫釷釨釮镺閆閈陼陭陫陱陯隿靪頄飥馗傛傕傔傞傋傣傃傌傎傝偨傜傒傂傇兟凔匒匑厤厧喑喨喥喭啷噅喢喓喈喏喵喁喣喒喤啽喌喦啿喕喡喎圌堩堷����������������������������������堙堞堧堣堨埵塈堥堜堛堳堿堶堮堹堸堭堬堻奡媯媔媟婺媢媞婸媦婼媥媬媕媮娷媄媊媗媃媋媩婻婽媌媜媏媓媝寪寍寋寔寑寊寎尌尰崷嵃嵫嵁嵋崿崵嵑嵎嵕崳崺嵒崽崱嵙嵂崹嵉崸崼崲崶嵀嵅幄幁彘徦徥徫惉悹惌惢惎惄愔�\".split(\"\");\nfor(j = 0; j != D[216].length; ++j) if(D[216][j].charCodeAt(0) !== 0xFFFD) { e[D[216][j]] = 55296 + j; d[55296 + j] = D[216][j];}\nD[217] = \"����������������������������������������������������������������惲愊愖愅惵愓惸惼惾惁愃愘愝愐惿愄愋扊掔掱掰揎揥揨揯揃撝揳揊揠揶揕揲揵摡揟掾揝揜揄揘揓揂揇揌揋揈揰揗揙攲敧敪敤敜敨敥斌斝斞斮旐旒����������������������������������晼晬晻暀晱晹晪晲朁椌棓椄棜椪棬棪棱椏棖棷棫棤棶椓椐棳棡椇棌椈楰梴椑棯棆椔棸棐棽棼棨椋椊椗棎棈棝棞棦棴棑椆棔棩椕椥棇欹欻欿欼殔殗殙殕殽毰毲毳氰淼湆湇渟湉溈渼渽湅湢渫渿湁湝湳渜渳湋湀湑渻渃渮湞�\".split(\"\");\nfor(j = 0; j != D[217].length; ++j) if(D[217][j].charCodeAt(0) !== 0xFFFD) { e[D[217][j]] = 55552 + j; d[55552 + j] = D[217][j];}\nD[218] = \"����������������������������������������������������������������湨湜湡渱渨湠湱湫渹渢渰湓湥渧湸湤湷湕湹湒湦渵渶湚焠焞焯烻焮焱焣焥焢焲焟焨焺焛牋牚犈犉犆犅犋猒猋猰猢猱猳猧猲猭猦猣猵猌琮琬琰琫琖����������������������������������琚琡琭琱琤琣琝琩琠琲瓻甯畯畬痧痚痡痦痝痟痤痗皕皒盚睆睇睄睍睅睊睎睋睌矞矬硠硤硥硜硭硱硪确硰硩硨硞硢祴祳祲祰稂稊稃稌稄窙竦竤筊笻筄筈筌筎筀筘筅粢粞粨粡絘絯絣絓絖絧絪絏絭絜絫絒絔絩絑絟絎缾缿罥�\".split(\"\");\nfor(j = 0; j != D[218].length; ++j) if(D[218][j].charCodeAt(0) !== 0xFFFD) { e[D[218][j]] = 55808 + j; d[55808 + j] = D[218][j];}\nD[219] = \"����������������������������������������������������������������罦羢羠羡翗聑聏聐胾胔腃腊腒腏腇脽腍脺臦臮臷臸臹舄舼舽舿艵茻菏菹萣菀菨萒菧菤菼菶萐菆菈菫菣莿萁菝菥菘菿菡菋菎菖菵菉萉萏菞萑萆菂菳����������������������������������菕菺菇菑菪萓菃菬菮菄菻菗菢萛菛菾蛘蛢蛦蛓蛣蛚蛪蛝蛫蛜蛬蛩蛗蛨蛑衈衖衕袺裗袹袸裀袾袶袼袷袽袲褁裉覕覘覗觝觚觛詎詍訹詙詀詗詘詄詅詒詈詑詊詌詏豟貁貀貺貾貰貹貵趄趀趉跘跓跍跇跖跜跏跕跙跈跗跅軯軷軺�\".split(\"\");\nfor(j = 0; j != D[219].length; ++j) if(D[219][j].charCodeAt(0) !== 0xFFFD) { e[D[219][j]] = 56064 + j; d[56064 + j] = D[219][j];}\nD[220] = \"����������������������������������������������������������������軹軦軮軥軵軧軨軶軫軱軬軴軩逭逴逯鄆鄬鄄郿郼鄈郹郻鄁鄀鄇鄅鄃酡酤酟酢酠鈁鈊鈥鈃鈚鈦鈏鈌鈀鈒釿釽鈆鈄鈧鈂鈜鈤鈙鈗鈅鈖镻閍閌閐隇陾隈����������������������������������隉隃隀雂雈雃雱雰靬靰靮頇颩飫鳦黹亃亄亶傽傿僆傮僄僊傴僈僂傰僁傺傱僋僉傶傸凗剺剸剻剼嗃嗛嗌嗐嗋嗊嗝嗀嗔嗄嗩喿嗒喍嗏嗕嗢嗖嗈嗲嗍嗙嗂圔塓塨塤塏塍塉塯塕塎塝塙塥塛堽塣塱壼嫇嫄嫋媺媸媱媵媰媿嫈媻嫆�\".split(\"\");\nfor(j = 0; j != D[220].length; ++j) if(D[220][j].charCodeAt(0) !== 0xFFFD) { e[D[220][j]] = 56320 + j; d[56320 + j] = D[220][j];}\nD[221] = \"����������������������������������������������������������������媷嫀嫊媴媶嫍媹媐寖寘寙尟尳嵱嵣嵊嵥嵲嵬嵞嵨嵧嵢巰幏幎幊幍幋廅廌廆廋廇彀徯徭惷慉慊愫慅愶愲愮慆愯慏愩慀戠酨戣戥戤揅揱揫搐搒搉搠搤����������������������������������搳摃搟搕搘搹搷搢搣搌搦搰搨摁搵搯搊搚摀搥搧搋揧搛搮搡搎敯斒旓暆暌暕暐暋暊暙暔晸朠楦楟椸楎楢楱椿楅楪椹楂楗楙楺楈楉椵楬椳椽楥棰楸椴楩楀楯楄楶楘楁楴楌椻楋椷楜楏楑椲楒椯楻椼歆歅歃歂歈歁殛嗀毻毼�\".split(\"\");\nfor(j = 0; j != D[221].length; ++j) if(D[221][j].charCodeAt(0) !== 0xFFFD) { e[D[221][j]] = 56576 + j; d[56576 + j] = D[221][j];}\nD[222] = \"����������������������������������������������������������������毹毷毸溛滖滈溏滀溟溓溔溠溱溹滆滒溽滁溞滉溷溰滍溦滏溲溾滃滜滘溙溒溎溍溤溡溿溳滐滊溗溮溣煇煔煒煣煠煁煝煢煲煸煪煡煂煘煃煋煰煟煐煓����������������������������������煄煍煚牏犍犌犑犐犎猼獂猻猺獀獊獉瑄瑊瑋瑒瑑瑗瑀瑏瑐瑎瑂瑆瑍瑔瓡瓿瓾瓽甝畹畷榃痯瘏瘃痷痾痼痹痸瘐痻痶痭痵痽皙皵盝睕睟睠睒睖睚睩睧睔睙睭矠碇碚碔碏碄碕碅碆碡碃硹碙碀碖硻祼禂祽祹稑稘稙稒稗稕稢稓�\".split(\"\");\nfor(j = 0; j != D[222].length; ++j) if(D[222][j].charCodeAt(0) !== 0xFFFD) { e[D[222][j]] = 56832 + j; d[56832 + j] = D[222][j];}\nD[223] = \"����������������������������������������������������������������稛稐窣窢窞竫筦筤筭筴筩筲筥筳筱筰筡筸筶筣粲粴粯綈綆綀綍絿綅絺綎絻綃絼綌綔綄絽綒罭罫罧罨罬羦羥羧翛翜耡腤腠腷腜腩腛腢腲朡腞腶腧腯����������������������������������腄腡舝艉艄艀艂艅蓱萿葖葶葹蒏蒍葥葑葀蒆葧萰葍葽葚葙葴葳葝蔇葞萷萺萴葺葃葸萲葅萩菙葋萯葂萭葟葰萹葎葌葒葯蓅蒎萻葇萶萳葨葾葄萫葠葔葮葐蜋蜄蛷蜌蛺蛖蛵蝍蛸蜎蜉蜁蛶蜍蜅裖裋裍裎裞裛裚裌裐覅覛觟觥觤�\".split(\"\");\nfor(j = 0; j != D[223].length; ++j) if(D[223][j].charCodeAt(0) !== 0xFFFD) { e[D[223][j]] = 57088 + j; d[57088 + j] = D[223][j];}\nD[224] = \"����������������������������������������������������������������觡觠觢觜触詶誆詿詡訿詷誂誄詵誃誁詴詺谼豋豊豥豤豦貆貄貅賌赨赩趑趌趎趏趍趓趔趐趒跰跠跬跱跮跐跩跣跢跧跲跫跴輆軿輁輀輅輇輈輂輋遒逿����������������������������������遄遉逽鄐鄍鄏鄑鄖鄔鄋鄎酮酯鉈鉒鈰鈺鉦鈳鉥鉞銃鈮鉊鉆鉭鉬鉏鉠鉧鉯鈶鉡鉰鈱鉔鉣鉐鉲鉎鉓鉌鉖鈲閟閜閞閛隒隓隑隗雎雺雽雸雵靳靷靸靲頏頍頎颬飶飹馯馲馰馵骭骫魛鳪鳭鳧麀黽僦僔僗僨僳僛僪僝僤僓僬僰僯僣僠�\".split(\"\");\nfor(j = 0; j != D[224].length; ++j) if(D[224][j].charCodeAt(0) !== 0xFFFD) { e[D[224][j]] = 57344 + j; d[57344 + j] = D[224][j];}\nD[225] = \"����������������������������������������������������������������凘劀劁勩勫匰厬嘧嘕嘌嘒嗼嘏嘜嘁嘓嘂嗺嘝嘄嗿嗹墉塼墐墘墆墁塿塴墋塺墇墑墎塶墂墈塻墔墏壾奫嫜嫮嫥嫕嫪嫚嫭嫫嫳嫢嫠嫛嫬嫞嫝嫙嫨嫟孷寠����������������������������������寣屣嶂嶀嵽嶆嵺嶁嵷嶊嶉嶈嵾嵼嶍嵹嵿幘幙幓廘廑廗廎廜廕廙廒廔彄彃彯徶愬愨慁慞慱慳慒慓慲慬憀慴慔慺慛慥愻慪慡慖戩戧戫搫摍摛摝摴摶摲摳摽摵摦撦摎撂摞摜摋摓摠摐摿搿摬摫摙摥摷敳斠暡暠暟朅朄朢榱榶槉�\".split(\"\");\nfor(j = 0; j != D[225].length; ++j) if(D[225][j].charCodeAt(0) !== 0xFFFD) { e[D[225][j]] = 57600 + j; d[57600 + j] = D[225][j];}\nD[226] = \"����������������������������������������������������������������榠槎榖榰榬榼榑榙榎榧榍榩榾榯榿槄榽榤槔榹槊榚槏榳榓榪榡榞槙榗榐槂榵榥槆歊歍歋殞殟殠毃毄毾滎滵滱漃漥滸漷滻漮漉潎漙漚漧漘漻漒滭漊����������������������������������漶潳滹滮漭潀漰漼漵滫漇漎潃漅滽滶漹漜滼漺漟漍漞漈漡熇熐熉熀熅熂熏煻熆熁熗牄牓犗犕犓獃獍獑獌瑢瑳瑱瑵瑲瑧瑮甀甂甃畽疐瘖瘈瘌瘕瘑瘊瘔皸瞁睼瞅瞂睮瞀睯睾瞃碲碪碴碭碨硾碫碞碥碠碬碢碤禘禊禋禖禕禔禓�\".split(\"\");\nfor(j = 0; j != D[226].length; ++j) if(D[226][j].charCodeAt(0) !== 0xFFFD) { e[D[226][j]] = 57856 + j; d[57856 + j] = D[226][j];}\nD[227] = \"����������������������������������������������������������������禗禈禒禐稫穊稰稯稨稦窨窫窬竮箈箜箊箑箐箖箍箌箛箎箅箘劄箙箤箂粻粿粼粺綧綷緂綣綪緁緀緅綝緎緄緆緋緌綯綹綖綼綟綦綮綩綡緉罳翢翣翥翞����������������������������������耤聝聜膉膆膃膇膍膌膋舕蒗蒤蒡蒟蒺蓎蓂蒬蒮蒫蒹蒴蓁蓍蒪蒚蒱蓐蒝蒧蒻蒢蒔蓇蓌蒛蒩蒯蒨蓖蒘蒶蓏蒠蓗蓔蓒蓛蒰蒑虡蜳蜣蜨蝫蝀蜮蜞蜡蜙蜛蝃蜬蝁蜾蝆蜠蜲蜪蜭蜼蜒蜺蜱蜵蝂蜦蜧蜸蜤蜚蜰蜑裷裧裱裲裺裾裮裼裶裻�\".split(\"\");\nfor(j = 0; j != D[227].length; ++j) if(D[227][j].charCodeAt(0) !== 0xFFFD) { e[D[227][j]] = 58112 + j; d[58112 + j] = D[227][j];}\nD[228] = \"����������������������������������������������������������������裰裬裫覝覡覟覞觩觫觨誫誙誋誒誏誖谽豨豩賕賏賗趖踉踂跿踍跽踊踃踇踆踅跾踀踄輐輑輎輍鄣鄜鄠鄢鄟鄝鄚鄤鄡鄛酺酲酹酳銥銤鉶銛鉺銠銔銪銍����������������������������������銦銚銫鉹銗鉿銣鋮銎銂銕銢鉽銈銡銊銆銌銙銧鉾銇銩銝銋鈭隞隡雿靘靽靺靾鞃鞀鞂靻鞄鞁靿韎韍頖颭颮餂餀餇馝馜駃馹馻馺駂馽駇骱髣髧鬾鬿魠魡魟鳱鳲鳵麧僿儃儰僸儆儇僶僾儋儌僽儊劋劌勱勯噈噂噌嘵噁噊噉噆噘�\".split(\"\");\nfor(j = 0; j != D[228].length; ++j) if(D[228][j].charCodeAt(0) !== 0xFFFD) { e[D[228][j]] = 58368 + j; d[58368 + j] = D[228][j];}\nD[229] = \"����������������������������������������������������������������噚噀嘳嘽嘬嘾嘸嘪嘺圚墫墝墱墠墣墯墬墥墡壿嫿嫴嫽嫷嫶嬃嫸嬂嫹嬁嬇嬅嬏屧嶙嶗嶟嶒嶢嶓嶕嶠嶜嶡嶚嶞幩幝幠幜緳廛廞廡彉徲憋憃慹憱憰憢憉����������������������������������憛憓憯憭憟憒憪憡憍慦憳戭摮摰撖撠撅撗撜撏撋撊撌撣撟摨撱撘敶敺敹敻斲斳暵暰暩暲暷暪暯樀樆樗槥槸樕槱槤樠槿槬槢樛樝槾樧槲槮樔槷槧橀樈槦槻樍槼槫樉樄樘樥樏槶樦樇槴樖歑殥殣殢殦氁氀毿氂潁漦潾澇濆澒�\".split(\"\");\nfor(j = 0; j != D[229].length; ++j) if(D[229][j].charCodeAt(0) !== 0xFFFD) { e[D[229][j]] = 58624 + j; d[58624 + j] = D[229][j];}\nD[230] = \"����������������������������������������������������������������澍澉澌潢潏澅潚澖潶潬澂潕潲潒潐潗澔澓潝漀潡潫潽潧澐潓澋潩潿澕潣潷潪潻熲熯熛熰熠熚熩熵熝熥熞熤熡熪熜熧熳犘犚獘獒獞獟獠獝獛獡獚獙����������������������������������獢璇璉璊璆璁瑽璅璈瑼瑹甈甇畾瘥瘞瘙瘝瘜瘣瘚瘨瘛皜皝皞皛瞍瞏瞉瞈磍碻磏磌磑磎磔磈磃磄磉禚禡禠禜禢禛歶稹窲窴窳箷篋箾箬篎箯箹篊箵糅糈糌糋緷緛緪緧緗緡縃緺緦緶緱緰緮緟罶羬羰羭翭翫翪翬翦翨聤聧膣膟�\".split(\"\");\nfor(j = 0; j != D[230].length; ++j) if(D[230][j].charCodeAt(0) !== 0xFFFD) { e[D[230][j]] = 58880 + j; d[58880 + j] = D[230][j];}\nD[231] = \"����������������������������������������������������������������膞膕膢膙膗舖艏艓艒艐艎艑蔤蔻蔏蔀蔩蔎蔉蔍蔟蔊蔧蔜蓻蔫蓺蔈蔌蓴蔪蓲蔕蓷蓫蓳蓼蔒蓪蓩蔖蓾蔨蔝蔮蔂蓽蔞蓶蔱蔦蓧蓨蓰蓯蓹蔘蔠蔰蔋蔙蔯虢����������������������������������蝖蝣蝤蝷蟡蝳蝘蝔蝛蝒蝡蝚蝑蝞蝭蝪蝐蝎蝟蝝蝯蝬蝺蝮蝜蝥蝏蝻蝵蝢蝧蝩衚褅褌褔褋褗褘褙褆褖褑褎褉覢覤覣觭觰觬諏諆誸諓諑諔諕誻諗誾諀諅諘諃誺誽諙谾豍貏賥賟賙賨賚賝賧趠趜趡趛踠踣踥踤踮踕踛踖踑踙踦踧�\".split(\"\");\nfor(j = 0; j != D[231].length; ++j) if(D[231][j].charCodeAt(0) !== 0xFFFD) { e[D[231][j]] = 59136 + j; d[59136 + j] = D[231][j];}\nD[232] = \"����������������������������������������������������������������踔踒踘踓踜踗踚輬輤輘輚輠輣輖輗遳遰遯遧遫鄯鄫鄩鄪鄲鄦鄮醅醆醊醁醂醄醀鋐鋃鋄鋀鋙銶鋏鋱鋟鋘鋩鋗鋝鋌鋯鋂鋨鋊鋈鋎鋦鋍鋕鋉鋠鋞鋧鋑鋓����������������������������������銵鋡鋆銴镼閬閫閮閰隤隢雓霅霈霂靚鞊鞎鞈韐韏頞頝頦頩頨頠頛頧颲餈飺餑餔餖餗餕駜駍駏駓駔駎駉駖駘駋駗駌骳髬髫髳髲髱魆魃魧魴魱魦魶魵魰魨魤魬鳼鳺鳽鳿鳷鴇鴀鳹鳻鴈鴅鴄麃黓鼏鼐儜儓儗儚儑凞匴叡噰噠噮�\".split(\"\");\nfor(j = 0; j != D[232].length; ++j) if(D[232][j].charCodeAt(0) !== 0xFFFD) { e[D[232][j]] = 59392 + j; d[59392 + j] = D[232][j];}\nD[233] = \"����������������������������������������������������������������噳噦噣噭噲噞噷圜圛壈墽壉墿墺壂墼壆嬗嬙嬛嬡嬔嬓嬐嬖嬨嬚嬠嬞寯嶬嶱嶩嶧嶵嶰嶮嶪嶨嶲嶭嶯嶴幧幨幦幯廩廧廦廨廥彋徼憝憨憖懅憴懆懁懌憺����������������������������������憿憸憌擗擖擐擏擉撽撉擃擛擳擙攳敿敼斢曈暾曀曊曋曏暽暻暺曌朣樴橦橉橧樲橨樾橝橭橶橛橑樨橚樻樿橁橪橤橐橏橔橯橩橠樼橞橖橕橍橎橆歕歔歖殧殪殫毈毇氄氃氆澭濋澣濇澼濎濈潞濄澽澞濊澨瀄澥澮澺澬澪濏澿澸�\".split(\"\");\nfor(j = 0; j != D[233].length; ++j) if(D[233][j].charCodeAt(0) !== 0xFFFD) { e[D[233][j]] = 59648 + j; d[59648 + j] = D[233][j];}\nD[234] = \"����������������������������������������������������������������澢濉澫濍澯澲澰燅燂熿熸燖燀燁燋燔燊燇燏熽燘熼燆燚燛犝犞獩獦獧獬獥獫獪瑿璚璠璔璒璕璡甋疀瘯瘭瘱瘽瘳瘼瘵瘲瘰皻盦瞚瞝瞡瞜瞛瞢瞣瞕瞙����������������������������������瞗磝磩磥磪磞磣磛磡磢磭磟磠禤穄穈穇窶窸窵窱窷篞篣篧篝篕篥篚篨篹篔篪篢篜篫篘篟糒糔糗糐糑縒縡縗縌縟縠縓縎縜縕縚縢縋縏縖縍縔縥縤罃罻罼罺羱翯耪耩聬膱膦膮膹膵膫膰膬膴膲膷膧臲艕艖艗蕖蕅蕫蕍蕓蕡蕘�\".split(\"\");\nfor(j = 0; j != D[234].length; ++j) if(D[234][j].charCodeAt(0) !== 0xFFFD) { e[D[234][j]] = 59904 + j; d[59904 + j] = D[234][j];}\nD[235] = \"����������������������������������������������������������������蕀蕆蕤蕁蕢蕄蕑蕇蕣蔾蕛蕱蕎蕮蕵蕕蕧蕠薌蕦蕝蕔蕥蕬虣虥虤螛螏螗螓螒螈螁螖螘蝹螇螣螅螐螑螝螄螔螜螚螉褞褦褰褭褮褧褱褢褩褣褯褬褟觱諠����������������������������������諢諲諴諵諝謔諤諟諰諈諞諡諨諿諯諻貑貒貐賵賮賱賰賳赬赮趥趧踳踾踸蹀蹅踶踼踽蹁踰踿躽輶輮輵輲輹輷輴遶遹遻邆郺鄳鄵鄶醓醐醑醍醏錧錞錈錟錆錏鍺錸錼錛錣錒錁鍆錭錎錍鋋錝鋺錥錓鋹鋷錴錂錤鋿錩錹錵錪錔錌�\".split(\"\");\nfor(j = 0; j != D[235].length; ++j) if(D[235][j].charCodeAt(0) !== 0xFFFD) { e[D[235][j]] = 60160 + j; d[60160 + j] = D[235][j];}\nD[236] = \"����������������������������������������������������������������錋鋾錉錀鋻錖閼闍閾閹閺閶閿閵閽隩雔霋霒霐鞙鞗鞔韰韸頵頯頲餤餟餧餩馞駮駬駥駤駰駣駪駩駧骹骿骴骻髶髺髹髷鬳鮀鮅鮇魼魾魻鮂鮓鮒鮐魺鮕����������������������������������魽鮈鴥鴗鴠鴞鴔鴩鴝鴘鴢鴐鴙鴟麈麆麇麮麭黕黖黺鼒鼽儦儥儢儤儠儩勴嚓嚌嚍嚆嚄嚃噾嚂噿嚁壖壔壏壒嬭嬥嬲嬣嬬嬧嬦嬯嬮孻寱寲嶷幬幪徾徻懃憵憼懧懠懥懤懨懞擯擩擣擫擤擨斁斀斶旚曒檍檖檁檥檉檟檛檡檞檇檓檎�\".split(\"\");\nfor(j = 0; j != D[236].length; ++j) if(D[236][j].charCodeAt(0) !== 0xFFFD) { e[D[236][j]] = 60416 + j; d[60416 + j] = D[236][j];}\nD[237] = \"����������������������������������������������������������������檕檃檨檤檑橿檦檚檅檌檒歛殭氉濌澩濴濔濣濜濭濧濦濞濲濝濢濨燡燱燨燲燤燰燢獳獮獯璗璲璫璐璪璭璱璥璯甐甑甒甏疄癃癈癉癇皤盩瞵瞫瞲瞷瞶����������������������������������瞴瞱瞨矰磳磽礂磻磼磲礅磹磾礄禫禨穜穛穖穘穔穚窾竀竁簅簏篲簀篿篻簎篴簋篳簂簉簃簁篸篽簆篰篱簐簊糨縭縼繂縳顈縸縪繉繀繇縩繌縰縻縶繄縺罅罿罾罽翴翲耬膻臄臌臊臅臇膼臩艛艚艜薃薀薏薧薕薠薋薣蕻薤薚薞�\".split(\"\");\nfor(j = 0; j != D[237].length; ++j) if(D[237][j].charCodeAt(0) !== 0xFFFD) { e[D[237][j]] = 60672 + j; d[60672 + j] = D[237][j];}\nD[238] = \"����������������������������������������������������������������蕷蕼薉薡蕺蕸蕗薎薖薆薍薙薝薁薢薂薈薅蕹蕶薘薐薟虨螾螪螭蟅螰螬螹螵螼螮蟉蟃蟂蟌螷螯蟄蟊螴螶螿螸螽蟞螲褵褳褼褾襁襒褷襂覭覯覮觲觳謞����������������������������������謘謖謑謅謋謢謏謒謕謇謍謈謆謜謓謚豏豰豲豱豯貕貔賹赯蹎蹍蹓蹐蹌蹇轃轀邅遾鄸醚醢醛醙醟醡醝醠鎡鎃鎯鍤鍖鍇鍼鍘鍜鍶鍉鍐鍑鍠鍭鎏鍌鍪鍹鍗鍕鍒鍏鍱鍷鍻鍡鍞鍣鍧鎀鍎鍙闇闀闉闃闅閷隮隰隬霠霟霘霝霙鞚鞡鞜�\".split(\"\");\nfor(j = 0; j != D[238].length; ++j) if(D[238][j].charCodeAt(0) !== 0xFFFD) { e[D[238][j]] = 60928 + j; d[60928 + j] = D[238][j];}\nD[239] = \"����������������������������������������������������������������鞞鞝韕韔韱顁顄顊顉顅顃餥餫餬餪餳餲餯餭餱餰馘馣馡騂駺駴駷駹駸駶駻駽駾駼騃骾髾髽鬁髼魈鮚鮨鮞鮛鮦鮡鮥鮤鮆鮢鮠鮯鴳鵁鵧鴶鴮鴯鴱鴸鴰����������������������������������鵅鵂鵃鴾鴷鵀鴽翵鴭麊麉麍麰黈黚黻黿鼤鼣鼢齔龠儱儭儮嚘嚜嚗嚚嚝嚙奰嬼屩屪巀幭幮懘懟懭懮懱懪懰懫懖懩擿攄擽擸攁攃擼斔旛曚曛曘櫅檹檽櫡櫆檺檶檷櫇檴檭歞毉氋瀇瀌瀍瀁瀅瀔瀎濿瀀濻瀦濼濷瀊爁燿燹爃燽獶�\".split(\"\");\nfor(j = 0; j != D[239].length; ++j) if(D[239][j].charCodeAt(0) !== 0xFFFD) { e[D[239][j]] = 61184 + j; d[61184 + j] = D[239][j];}\nD[240] = \"����������������������������������������������������������������璸瓀璵瓁璾璶璻瓂甔甓癜癤癙癐癓癗癚皦皽盬矂瞺磿礌礓礔礉礐礒礑禭禬穟簜簩簙簠簟簭簝簦簨簢簥簰繜繐繖繣繘繢繟繑繠繗繓羵羳翷翸聵臑臒����������������������������������臐艟艞薴藆藀藃藂薳薵薽藇藄薿藋藎藈藅薱薶藒蘤薸薷薾虩蟧蟦蟢蟛蟫蟪蟥蟟蟳蟤蟔蟜蟓蟭蟘蟣螤蟗蟙蠁蟴蟨蟝襓襋襏襌襆襐襑襉謪謧謣謳謰謵譇謯謼謾謱謥謷謦謶謮謤謻謽謺豂豵貙貘貗賾贄贂贀蹜蹢蹠蹗蹖蹞蹥蹧�\".split(\"\");\nfor(j = 0; j != D[240].length; ++j) if(D[240][j].charCodeAt(0) !== 0xFFFD) { e[D[240][j]] = 61440 + j; d[61440 + j] = D[240][j];}\nD[241] = \"����������������������������������������������������������������蹛蹚蹡蹝蹩蹔轆轇轈轋鄨鄺鄻鄾醨醥醧醯醪鎵鎌鎒鎷鎛鎝鎉鎧鎎鎪鎞鎦鎕鎈鎙鎟鎍鎱鎑鎲鎤鎨鎴鎣鎥闒闓闑隳雗雚巂雟雘雝霣霢霥鞬鞮鞨鞫鞤鞪����������������������������������鞢鞥韗韙韖韘韺顐顑顒颸饁餼餺騏騋騉騍騄騑騊騅騇騆髀髜鬈鬄鬅鬩鬵魊魌魋鯇鯆鯃鮿鯁鮵鮸鯓鮶鯄鮹鮽鵜鵓鵏鵊鵛鵋鵙鵖鵌鵗鵒鵔鵟鵘鵚麎麌黟鼁鼀鼖鼥鼫鼪鼩鼨齌齕儴儵劖勷厴嚫嚭嚦嚧嚪嚬壚壝壛夒嬽嬾嬿巃幰�\".split(\"\");\nfor(j = 0; j != D[241].length; ++j) if(D[241][j].charCodeAt(0) !== 0xFFFD) { e[D[241][j]] = 61696 + j; d[61696 + j] = D[241][j];}\nD[242] = \"����������������������������������������������������������������徿懻攇攐攍攉攌攎斄旞旝曞櫧櫠櫌櫑櫙櫋櫟櫜櫐櫫櫏櫍櫞歠殰氌瀙瀧瀠瀖瀫瀡瀢瀣瀩瀗瀤瀜瀪爌爊爇爂爅犥犦犤犣犡瓋瓅璷瓃甖癠矉矊矄矱礝礛����������������������������������礡礜礗礞禰穧穨簳簼簹簬簻糬糪繶繵繸繰繷繯繺繲繴繨罋罊羃羆羷翽翾聸臗臕艤艡艣藫藱藭藙藡藨藚藗藬藲藸藘藟藣藜藑藰藦藯藞藢蠀蟺蠃蟶蟷蠉蠌蠋蠆蟼蠈蟿蠊蠂襢襚襛襗襡襜襘襝襙覈覷覶觶譐譈譊譀譓譖譔譋譕�\".split(\"\");\nfor(j = 0; j != D[242].length; ++j) if(D[242][j].charCodeAt(0) !== 0xFFFD) { e[D[242][j]] = 61952 + j; d[61952 + j] = D[242][j];}\nD[243] = \"����������������������������������������������������������������譑譂譒譗豃豷豶貚贆贇贉趬趪趭趫蹭蹸蹳蹪蹯蹻軂轒轑轏轐轓辴酀鄿醰醭鏞鏇鏏鏂鏚鏐鏹鏬鏌鏙鎩鏦鏊鏔鏮鏣鏕鏄鏎鏀鏒鏧镽闚闛雡霩霫霬霨霦����������������������������������鞳鞷鞶韝韞韟顜顙顝顗颿颽颻颾饈饇饃馦馧騚騕騥騝騤騛騢騠騧騣騞騜騔髂鬋鬊鬎鬌鬷鯪鯫鯠鯞鯤鯦鯢鯰鯔鯗鯬鯜鯙鯥鯕鯡鯚鵷鶁鶊鶄鶈鵱鶀鵸鶆鶋鶌鵽鵫鵴鵵鵰鵩鶅鵳鵻鶂鵯鵹鵿鶇鵨麔麑黀黼鼭齀齁齍齖齗齘匷嚲�\".split(\"\");\nfor(j = 0; j != D[243].length; ++j) if(D[243][j].charCodeAt(0) !== 0xFFFD) { e[D[243][j]] = 62208 + j; d[62208 + j] = D[243][j];}\nD[244] = \"����������������������������������������������������������������嚵嚳壣孅巆巇廮廯忀忁懹攗攖攕攓旟曨曣曤櫳櫰櫪櫨櫹櫱櫮櫯瀼瀵瀯瀷瀴瀱灂瀸瀿瀺瀹灀瀻瀳灁爓爔犨獽獼璺皫皪皾盭矌矎矏矍矲礥礣礧礨礤礩����������������������������������禲穮穬穭竷籉籈籊籇籅糮繻繾纁纀羺翿聹臛臙舋艨艩蘢藿蘁藾蘛蘀藶蘄蘉蘅蘌藽蠙蠐蠑蠗蠓蠖襣襦覹觷譠譪譝譨譣譥譧譭趮躆躈躄轙轖轗轕轘轚邍酃酁醷醵醲醳鐋鐓鏻鐠鐏鐔鏾鐕鐐鐨鐙鐍鏵鐀鏷鐇鐎鐖鐒鏺鐉鏸鐊鏿�\".split(\"\");\nfor(j = 0; j != D[244].length; ++j) if(D[244][j].charCodeAt(0) !== 0xFFFD) { e[D[244][j]] = 62464 + j; d[62464 + j] = D[244][j];}\nD[245] = \"����������������������������������������������������������������鏼鐌鏶鐑鐆闞闠闟霮霯鞹鞻韽韾顠顢顣顟飁飂饐饎饙饌饋饓騲騴騱騬騪騶騩騮騸騭髇髊髆鬐鬒鬑鰋鰈鯷鰅鰒鯸鱀鰇鰎鰆鰗鰔鰉鶟鶙鶤鶝鶒鶘鶐鶛����������������������������������鶠鶔鶜鶪鶗鶡鶚鶢鶨鶞鶣鶿鶩鶖鶦鶧麙麛麚黥黤黧黦鼰鼮齛齠齞齝齙龑儺儹劘劗囃嚽嚾孈孇巋巏廱懽攛欂櫼欃櫸欀灃灄灊灈灉灅灆爝爚爙獾甗癪矐礭礱礯籔籓糲纊纇纈纋纆纍罍羻耰臝蘘蘪蘦蘟蘣蘜蘙蘧蘮蘡蘠蘩蘞蘥�\".split(\"\");\nfor(j = 0; j != D[245].length; ++j) if(D[245][j].charCodeAt(0) !== 0xFFFD) { e[D[245][j]] = 62720 + j; d[62720 + j] = D[245][j];}\nD[246] = \"����������������������������������������������������������������蠩蠝蠛蠠蠤蠜蠫衊襭襩襮襫觺譹譸譅譺譻贐贔趯躎躌轞轛轝酆酄酅醹鐿鐻鐶鐩鐽鐼鐰鐹鐪鐷鐬鑀鐱闥闤闣霵霺鞿韡顤飉飆飀饘饖騹騽驆驄驂驁騺����������������������������������騿髍鬕鬗鬘鬖鬺魒鰫鰝鰜鰬鰣鰨鰩鰤鰡鶷鶶鶼鷁鷇鷊鷏鶾鷅鷃鶻鶵鷎鶹鶺鶬鷈鶱鶭鷌鶳鷍鶲鹺麜黫黮黭鼛鼘鼚鼱齎齥齤龒亹囆囅囋奱孋孌巕巑廲攡攠攦攢欋欈欉氍灕灖灗灒爞爟犩獿瓘瓕瓙瓗癭皭礵禴穰穱籗籜籙籛籚�\".split(\"\");\nfor(j = 0; j != D[246].length; ++j) if(D[246][j].charCodeAt(0) !== 0xFFFD) { e[D[246][j]] = 62976 + j; d[62976 + j] = D[246][j];}\nD[247] = \"����������������������������������������������������������������糴糱纑罏羇臞艫蘴蘵蘳蘬蘲蘶蠬蠨蠦蠪蠥襱覿覾觻譾讄讂讆讅譿贕躕躔躚躒躐躖躗轠轢酇鑌鑐鑊鑋鑏鑇鑅鑈鑉鑆霿韣顪顩飋饔饛驎驓驔驌驏驈驊����������������������������������驉驒驐髐鬙鬫鬻魖魕鱆鱈鰿鱄鰹鰳鱁鰼鰷鰴鰲鰽鰶鷛鷒鷞鷚鷋鷐鷜鷑鷟鷩鷙鷘鷖鷵鷕鷝麶黰鼵鼳鼲齂齫龕龢儽劙壨壧奲孍巘蠯彏戁戃戄攩攥斖曫欑欒欏毊灛灚爢玂玁玃癰矔籧籦纕艬蘺虀蘹蘼蘱蘻蘾蠰蠲蠮蠳襶襴襳觾�\".split(\"\");\nfor(j = 0; j != D[247].length; ++j) if(D[247][j].charCodeAt(0) !== 0xFFFD) { e[D[247][j]] = 63232 + j; d[63232 + j] = D[247][j];}\nD[248] = \"����������������������������������������������������������������讌讎讋讈豅贙躘轤轣醼鑢鑕鑝鑗鑞韄韅頀驖驙鬞鬟鬠鱒鱘鱐鱊鱍鱋鱕鱙鱌鱎鷻鷷鷯鷣鷫鷸鷤鷶鷡鷮鷦鷲鷰鷢鷬鷴鷳鷨鷭黂黐黲黳鼆鼜鼸鼷鼶齃齏����������������������������������齱齰齮齯囓囍孎屭攭曭曮欓灟灡灝灠爣瓛瓥矕礸禷禶籪纗羉艭虃蠸蠷蠵衋讔讕躞躟躠躝醾醽釂鑫鑨鑩雥靆靃靇韇韥驞髕魙鱣鱧鱦鱢鱞鱠鸂鷾鸇鸃鸆鸅鸀鸁鸉鷿鷽鸄麠鼞齆齴齵齶囔攮斸欘欙欗欚灢爦犪矘矙礹籩籫糶纚�\".split(\"\");\nfor(j = 0; j != D[248].length; ++j) if(D[248][j].charCodeAt(0) !== 0xFFFD) { e[D[248][j]] = 63488 + j; d[63488 + j] = D[248][j];}\nD[249] = \"����������������������������������������������������������������纘纛纙臠臡虆虇虈襹襺襼襻觿讘讙躥躤躣鑮鑭鑯鑱鑳靉顲饟鱨鱮鱭鸋鸍鸐鸏鸒鸑麡黵鼉齇齸齻齺齹圞灦籯蠼趲躦釃鑴鑸鑶鑵驠鱴鱳鱱鱵鸔鸓黶鼊����������������������������������龤灨灥糷虪蠾蠽蠿讞貜躩軉靋顳顴飌饡馫驤驦驧鬤鸕鸗齈戇欞爧虌躨钂钀钁驩驨鬮鸙爩虋讟钃鱹麷癵驫鱺鸝灩灪麤齾齉龘碁銹裏墻恒粧嫺╔╦╗╠╬╣╚╩╝╒╤╕╞╪╡╘╧╛╓╥╖╟╫╢╙╨╜║═╭╮╰╯▓�\".split(\"\");\nfor(j = 0; j != D[249].length; ++j) if(D[249][j].charCodeAt(0) !== 0xFFFD) { e[D[249][j]] = 63744 + j; d[63744 + j] = D[249][j];}\nreturn {\"enc\": e, \"dec\": d }; })();\ncptable[1026] = (function(){ var d = \"\\u0000\\u0001\\u0002\\u0003\\t\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\b\\u0018\\u0019\\u001c\\u001d\\u001e\\u001f\\n\\u0017\\u001b\\u0005\\u0006\\u0007\\u0016\\u0004\\u0014\\u0015\\u001a  âäàáãå{ñÇ.<(+!&éêëèíîïìßĞİ*);^-/ÂÄÀÁÃÅ[Ñş,%_>?øÉÊËÈÍÎÏÌı:ÖŞ'=ÜØabcdefghi«»}`¦±°jklmnopqrªºæ¸Æ¤µöstuvwxyz¡¿]$@®¢£¥·©§¶¼½¾¬|¯¨´×çABCDEFGHI­ô~òóõğJKLMNOPQR¹û\\\\ùúÿü÷STUVWXYZ²Ô#ÒÓÕ0123456789³Û\\\"ÙÚ\", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {\"enc\": e, \"dec\": D }; })();\ncptable[1250] = (function(){ var d = \"\\u0000\\u0001\\u0002\\u0003\\u0004\\u0005\\u0006\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\u0014\\u0015\\u0016\\u0017\\u0018\\u0019\\u001a\\u001b\\u001c\\u001d\\u001e\\u001f !\\\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~€�‚�„…†‡�‰Š‹ŚŤŽŹ�‘’“”•–—�™š›śťžź ˇ˘Ł¤Ą¦§¨©Ş«¬­®Ż°±˛ł´µ¶·¸ąş»Ľ˝ľżŔÁÂĂÄĹĆÇČÉĘËĚÍÎĎĐŃŇÓÔŐÖ×ŘŮÚŰÜÝŢßŕáâăäĺćçčéęëěíîďđńňóôőö÷řůúűüýţ˙\", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {\"enc\": e, \"dec\": D }; })();\ncptable[1251] = (function(){ var d = \"\\u0000\\u0001\\u0002\\u0003\\u0004\\u0005\\u0006\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\u0014\\u0015\\u0016\\u0017\\u0018\\u0019\\u001a\\u001b\\u001c\\u001d\\u001e\\u001f !\\\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~ЂЃ‚ѓ„…†‡€‰Љ‹ЊЌЋЏђ‘’“”•–—�™љ›њќћџ ЎўЈ¤Ґ¦§Ё©Є«¬­®Ї°±Ііґµ¶·ё№є»јЅѕїАБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмнопрстуфхцчшщъыьэюя\", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {\"enc\": e, \"dec\": D }; })();\ncptable[1252] = (function(){ var d = \"\\u0000\\u0001\\u0002\\u0003\\u0004\\u0005\\u0006\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\u0014\\u0015\\u0016\\u0017\\u0018\\u0019\\u001a\\u001b\\u001c\\u001d\\u001e\\u001f !\\\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~€�‚ƒ„…†‡ˆ‰Š‹Œ�Ž��‘’“”•–—˜™š›œ�žŸ ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ\", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {\"enc\": e, \"dec\": D }; })();\ncptable[1253] = (function(){ var d = \"\\u0000\\u0001\\u0002\\u0003\\u0004\\u0005\\u0006\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\u0014\\u0015\\u0016\\u0017\\u0018\\u0019\\u001a\\u001b\\u001c\\u001d\\u001e\\u001f !\\\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~€�‚ƒ„…†‡�‰�‹�����‘’“”•–—�™�›���� ΅Ά£¤¥¦§¨©�«¬­®―°±²³΄µ¶·ΈΉΊ»Ό½ΎΏΐΑΒΓΔΕΖΗΘΙΚΛΜΝΞΟΠΡ�ΣΤΥΦΧΨΩΪΫάέήίΰαβγδεζηθικλμνξοπρςστυφχψωϊϋόύώ�\", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {\"enc\": e, \"dec\": D }; })();\ncptable[1254] = (function(){ var d = \"\\u0000\\u0001\\u0002\\u0003\\u0004\\u0005\\u0006\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\u0014\\u0015\\u0016\\u0017\\u0018\\u0019\\u001a\\u001b\\u001c\\u001d\\u001e\\u001f !\\\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~€�‚ƒ„…†‡ˆ‰Š‹Œ����‘’“”•–—˜™š›œ��Ÿ ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏĞÑÒÓÔÕÖ×ØÙÚÛÜİŞßàáâãäåæçèéêëìíîïğñòóôõö÷øùúûüışÿ\", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {\"enc\": e, \"dec\": D }; })();\ncptable[1255] = (function(){ var d = \"\\u0000\\u0001\\u0002\\u0003\\u0004\\u0005\\u0006\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\u0014\\u0015\\u0016\\u0017\\u0018\\u0019\\u001a\\u001b\\u001c\\u001d\\u001e\\u001f !\\\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~€�‚ƒ„…†‡ˆ‰�‹�����‘’“”•–—˜™�›���� ¡¢£₪¥¦§¨©×«¬­®¯°±²³´µ¶·¸¹÷»¼½¾¿ְֱֲֳִֵֶַָֹ�ֻּֽ־ֿ׀ׁׂ׃װױײ׳״�������אבגדהוזחטיךכלםמןנסעףפץצקרשת��‎‏�\", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {\"enc\": e, \"dec\": D }; })();\ncptable[1256] = (function(){ var d = \"\\u0000\\u0001\\u0002\\u0003\\u0004\\u0005\\u0006\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\u0014\\u0015\\u0016\\u0017\\u0018\\u0019\\u001a\\u001b\\u001c\\u001d\\u001e\\u001f !\\\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~€پ‚ƒ„…†‡ˆ‰ٹ‹Œچژڈگ‘’“”•–—ک™ڑ›œ‌‍ں ،¢£¤¥¦§¨©ھ«¬­®¯°±²³´µ¶·¸¹؛»¼½¾؟ہءآأؤإئابةتثجحخدذرزسشصض×طظعغـفقكàلâمنهوçèéêëىيîïًٌٍَôُِ÷ّùْûü‎‏ے\", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {\"enc\": e, \"dec\": D }; })();\ncptable[1257] = (function(){ var d = \"\\u0000\\u0001\\u0002\\u0003\\u0004\\u0005\\u0006\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\u0014\\u0015\\u0016\\u0017\\u0018\\u0019\\u001a\\u001b\\u001c\\u001d\\u001e\\u001f !\\\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~€�‚�„…†‡�‰�‹�¨ˇ¸�‘’“”•–—�™�›�¯˛� �¢£¤�¦§Ø©Ŗ«¬­®Æ°±²³´µ¶·ø¹ŗ»¼½¾æĄĮĀĆÄÅĘĒČÉŹĖĢĶĪĻŠŃŅÓŌÕÖ×ŲŁŚŪÜŻŽßąįāćäåęēčéźėģķīļšńņóōõö÷ųłśūüżž˙\", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {\"enc\": e, \"dec\": D }; })();\ncptable[1258] = (function(){ var d = \"\\u0000\\u0001\\u0002\\u0003\\u0004\\u0005\\u0006\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\u0014\\u0015\\u0016\\u0017\\u0018\\u0019\\u001a\\u001b\\u001c\\u001d\\u001e\\u001f !\\\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~€�‚ƒ„…†‡ˆ‰�‹Œ����‘’“”•–—˜™�›œ��Ÿ ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂĂÄÅÆÇÈÉÊË̀ÍÎÏĐÑ̉ÓÔƠÖ×ØÙÚÛÜỮßàáâăäåæçèéêë́íîïđṇ̃óôơö÷øùúûüư₫ÿ\", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {\"enc\": e, \"dec\": D }; })();\ncptable[47451] = (function(){ var d = \"\\u0000\\u0001\\u0002\\u0003\\u0004\\u0005\\u0006\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\u0014\\u0015\\u0016\\u0017\\u0018\\u0019\\u001a\\u001b\\u001c\\u001d\\u001e\\u001f !\\\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~ÇüéâäàåçêëèïîìÄÅÉæÆôöòûùÿÖÜ¢£¥ßƒáíóúñÑªº¿⌐¬½¼¡«»ãõØøœŒÀÃÕ¨´†¶©®™ĳĲאבגדהוזחטיכלמנסעפצקרשתןךםףץ§∧∞αβΓπΣσµτΦΘΩδ∮φ∈∩≡±≥≤⌠⌡÷≈°∙·√ⁿ²³¯\", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {\"enc\": e, \"dec\": D }; })();\ncptable[10000] = (function(){ var d = \"\\u0000\\u0001\\u0002\\u0003\\u0004\\u0005\\u0006\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\u0014\\u0015\\u0016\\u0017\\u0018\\u0019\\u001a\\u001b\\u001c\\u001d\\u001e\\u001f !\\\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~ÄÅÇÉÑÖÜáàâäãåçéèêëíìîïñóòôöõúùûü†°¢£§•¶ß®©™´¨≠ÆØ∞±≤≥¥µ∂∑∏π∫ªºΩæø¿¡¬√ƒ≈∆«»… ÀÃÕŒœ–—“”‘’÷◊ÿŸ⁄¤‹›ﬁﬂ‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔ�ÒÚÛÙıˆ˜¯˘˙˚¸˝˛ˇ\", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {\"enc\": e, \"dec\": D }; })();\ncptable[10006] = (function(){ var d = \"\\u0000\\u0001\\u0002\\u0003\\u0004\\u0005\\u0006\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\u0014\\u0015\\u0016\\u0017\\u0018\\u0019\\u001a\\u001b\\u001c\\u001d\\u001e\\u001f !\\\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~Ä¹²É³ÖÜ΅àâä΄¨çéèêë£™îï•½‰ôö¦­ùûü†ΓΔΘΛΞΠß®©ΣΪ§≠°·Α±≤≥¥ΒΕΖΗΙΚΜΦΫΨΩάΝ¬ΟΡ≈Τ«»… ΥΧΆΈœ–―“”‘’÷ΉΊΌΎέήίόΏύαβψδεφγηιξκλμνοπώρστθωςχυζϊϋΐΰ�\", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {\"enc\": e, \"dec\": D }; })();\ncptable[10007] = (function(){ var d = \"\\u0000\\u0001\\u0002\\u0003\\u0004\\u0005\\u0006\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\u0014\\u0015\\u0016\\u0017\\u0018\\u0019\\u001a\\u001b\\u001c\\u001d\\u001e\\u001f !\\\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~АБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ†°¢£§•¶І®©™Ђђ≠Ѓѓ∞±≤≥іµ∂ЈЄєЇїЉљЊњјЅ¬√ƒ≈∆«»… ЋћЌќѕ–—“”‘’÷„ЎўЏџ№Ёёяабвгдежзийклмнопрстуфхцчшщъыьэю¤\", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {\"enc\": e, \"dec\": D }; })();\ncptable[10029] = (function(){ var d = \"\\u0000\\u0001\\u0002\\u0003\\u0004\\u0005\\u0006\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\u0014\\u0015\\u0016\\u0017\\u0018\\u0019\\u001a\\u001b\\u001c\\u001d\\u001e\\u001f !\\\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~ÄĀāÉĄÖÜáąČäčĆćéŹźĎíďĒēĖóėôöõúĚěü†°Ę£§•¶ß®©™ę¨≠ģĮįĪ≤≥īĶ∂∑łĻļĽľĹĺŅņŃ¬√ńŇ∆«»… ňŐÕőŌ–—“”‘’÷◊ōŔŕŘ‹›řŖŗŠ‚„šŚśÁŤťÍŽžŪÓÔūŮÚůŰűŲųÝýķŻŁżĢˇ\", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {\"enc\": e, \"dec\": D }; })();\ncptable[10079] = (function(){ var d = \"\\u0000\\u0001\\u0002\\u0003\\u0004\\u0005\\u0006\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\u0014\\u0015\\u0016\\u0017\\u0018\\u0019\\u001a\\u001b\\u001c\\u001d\\u001e\\u001f !\\\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~ÄÅÇÉÑÖÜáàâäãåçéèêëíìîïñóòôöõúùûüÝ°¢£§•¶ß®©™´¨≠ÆØ∞±≤≥¥µ∂∑∏π∫ªºΩæø¿¡¬√ƒ≈∆«»… ÀÃÕŒœ–—“”‘’÷◊ÿŸ⁄¤ÐðÞþý·‚„‰ÂÊÁËÈÍÎÏÌÓÔ�ÒÚÛÙıˆ˜¯˘˙˚¸˝˛ˇ\", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {\"enc\": e, \"dec\": D }; })();\ncptable[10081] = (function(){ var d = \"\\u0000\\u0001\\u0002\\u0003\\u0004\\u0005\\u0006\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\u0014\\u0015\\u0016\\u0017\\u0018\\u0019\\u001a\\u001b\\u001c\\u001d\\u001e\\u001f !\\\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~ÄÅÇÉÑÖÜáàâäãåçéèêëíìîïñóòôöõúùûü†°¢£§•¶ß®©™´¨≠ÆØ∞±≤≥¥µ∂∑∏π∫ªºΩæø¿¡¬√ƒ≈∆«»… ÀÃÕŒœ–—“”‘’÷◊ÿŸĞğİıŞş‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔ�ÒÚÛÙ�ˆ˜¯˘˙˚¸˝˛ˇ\", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {\"enc\": e, \"dec\": D }; })();\ncptable[28591] = (function(){ var d = \"\\u0000\\u0001\\u0002\\u0003\\u0004\\u0005\\u0006\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\u0014\\u0015\\u0016\\u0017\\u0018\\u0019\\u001a\\u001b\\u001c\\u001d\\u001e\\u001f !\\\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~ ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ\", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {\"enc\": e, \"dec\": D }; })();\ncptable[28592] = (function(){ var d = \"\\u0000\\u0001\\u0002\\u0003\\u0004\\u0005\\u0006\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\u0014\\u0015\\u0016\\u0017\\u0018\\u0019\\u001a\\u001b\\u001c\\u001d\\u001e\\u001f !\\\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~ Ą˘Ł¤ĽŚ§¨ŠŞŤŹ­ŽŻ°ą˛ł´ľśˇ¸šşťź˝žżŔÁÂĂÄĹĆÇČÉĘËĚÍÎĎĐŃŇÓÔŐÖ×ŘŮÚŰÜÝŢßŕáâăäĺćçčéęëěíîďđńňóôőö÷řůúűüýţ˙\", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {\"enc\": e, \"dec\": D }; })();\ncptable[28593] = (function(){ var d = \"\\u0000\\u0001\\u0002\\u0003\\u0004\\u0005\\u0006\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\u0014\\u0015\\u0016\\u0017\\u0018\\u0019\\u001a\\u001b\\u001c\\u001d\\u001e\\u001f !\\\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~ Ħ˘£¤�Ĥ§¨İŞĞĴ­�Ż°ħ²³´µĥ·¸ışğĵ½�żÀÁÂ�ÄĊĈÇÈÉÊËÌÍÎÏ�ÑÒÓÔĠÖ×ĜÙÚÛÜŬŜßàáâ�äċĉçèéêëìíîï�ñòóôġö÷ĝùúûüŭŝ˙\", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {\"enc\": e, \"dec\": D }; })();\ncptable[28594] = (function(){ var d = \"\\u0000\\u0001\\u0002\\u0003\\u0004\\u0005\\u0006\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\u0014\\u0015\\u0016\\u0017\\u0018\\u0019\\u001a\\u001b\\u001c\\u001d\\u001e\\u001f !\\\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~ ĄĸŖ¤ĨĻ§¨ŠĒĢŦ­Ž¯°ą˛ŗ´ĩļˇ¸šēģŧŊžŋĀÁÂÃÄÅÆĮČÉĘËĖÍÎĪĐŅŌĶÔÕÖ×ØŲÚÛÜŨŪßāáâãäåæįčéęëėíîīđņōķôõö÷øųúûüũū˙\", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {\"enc\": e, \"dec\": D }; })();\ncptable[28595] = (function(){ var d = \"\\u0000\\u0001\\u0002\\u0003\\u0004\\u0005\\u0006\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\u0014\\u0015\\u0016\\u0017\\u0018\\u0019\\u001a\\u001b\\u001c\\u001d\\u001e\\u001f !\\\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~ ЁЂЃЄЅІЇЈЉЊЋЌ­ЎЏАБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмнопрстуфхцчшщъыьэюя№ёђѓєѕіїјљњћќ§ўџ\", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {\"enc\": e, \"dec\": D }; })();\ncptable[28596] = (function(){ var d = \"\\u0000\\u0001\\u0002\\u0003\\u0004\\u0005\\u0006\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\u0014\\u0015\\u0016\\u0017\\u0018\\u0019\\u001a\\u001b\\u001c\\u001d\\u001e\\u001f !\\\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~ ���¤�������،­�������������؛���؟�ءآأؤإئابةتثجحخدذرزسشصضطظعغ�����ـفقكلمنهوىيًٌٍَُِّْ�������������\", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {\"enc\": e, \"dec\": D }; })();\ncptable[28597] = (function(){ var d = \"\\u0000\\u0001\\u0002\\u0003\\u0004\\u0005\\u0006\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\u0014\\u0015\\u0016\\u0017\\u0018\\u0019\\u001a\\u001b\\u001c\\u001d\\u001e\\u001f !\\\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~ ‘’£€₯¦§¨©ͺ«¬­�―°±²³΄΅Ά·ΈΉΊ»Ό½ΎΏΐΑΒΓΔΕΖΗΘΙΚΛΜΝΞΟΠΡ�ΣΤΥΦΧΨΩΪΫάέήίΰαβγδεζηθικλμνξοπρςστυφχψωϊϋόύώ�\", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {\"enc\": e, \"dec\": D }; })();\ncptable[28598] = (function(){ var d = \"\\u0000\\u0001\\u0002\\u0003\\u0004\\u0005\\u0006\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\u0014\\u0015\\u0016\\u0017\\u0018\\u0019\\u001a\\u001b\\u001c\\u001d\\u001e\\u001f !\\\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~ �¢£¤¥¦§¨©×«¬­®¯°±²³´µ¶·¸¹÷»¼½¾��������������������������������‗אבגדהוזחטיךכלםמןנסעףפץצקרשת��‎‏�\", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {\"enc\": e, \"dec\": D }; })();\ncptable[28599] = (function(){ var d = \"\\u0000\\u0001\\u0002\\u0003\\u0004\\u0005\\u0006\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\u0014\\u0015\\u0016\\u0017\\u0018\\u0019\\u001a\\u001b\\u001c\\u001d\\u001e\\u001f !\\\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~ ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏĞÑÒÓÔÕÖ×ØÙÚÛÜİŞßàáâãäåæçèéêëìíîïğñòóôõö÷øùúûüışÿ\", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {\"enc\": e, \"dec\": D }; })();\ncptable[28600] = (function(){ var d = \"\\u0000\\u0001\\u0002\\u0003\\u0004\\u0005\\u0006\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\u0014\\u0015\\u0016\\u0017\\u0018\\u0019\\u001a\\u001b\\u001c\\u001d\\u001e\\u001f !\\\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~ ĄĒĢĪĨĶ§ĻĐŠŦŽ­ŪŊ°ąēģīĩķ·ļđšŧž―ūŋĀÁÂÃÄÅÆĮČÉĘËĖÍÎÏÐŅŌÓÔÕÖŨØŲÚÛÜÝÞßāáâãäåæįčéęëėíîïðņōóôõöũøųúûüýþĸ\", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {\"enc\": e, \"dec\": D }; })();\ncptable[28601] = (function(){ var d = \"\\u0000\\u0001\\u0002\\u0003\\u0004\\u0005\\u0006\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\u0014\\u0015\\u0016\\u0017\\u0018\\u0019\\u001a\\u001b\\u001c\\u001d\\u001e\\u001f !\\\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~ กขฃคฅฆงจฉชซฌญฎฏฐฑฒณดตถทธนบปผฝพฟภมยรฤลฦวศษสหฬอฮฯะัาำิีึืฺุู����฿เแโใไๅๆ็่้๊๋์ํ๎๏๐๑๒๓๔๕๖๗๘๙๚๛����\", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {\"enc\": e, \"dec\": D }; })();\ncptable[28603] = (function(){ var d = \"\\u0000\\u0001\\u0002\\u0003\\u0004\\u0005\\u0006\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\u0014\\u0015\\u0016\\u0017\\u0018\\u0019\\u001a\\u001b\\u001c\\u001d\\u001e\\u001f !\\\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~ ”¢£¤„¦§Ø©Ŗ«¬­®Æ°±²³“µ¶·ø¹ŗ»¼½¾æĄĮĀĆÄÅĘĒČÉŹĖĢĶĪĻŠŃŅÓŌÕÖ×ŲŁŚŪÜŻŽßąįāćäåęēčéźėģķīļšńņóōõö÷ųłśūüżž’\", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {\"enc\": e, \"dec\": D }; })();\ncptable[28604] = (function(){ var d = \"\\u0000\\u0001\\u0002\\u0003\\u0004\\u0005\\u0006\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\u0014\\u0015\\u0016\\u0017\\u0018\\u0019\\u001a\\u001b\\u001c\\u001d\\u001e\\u001f !\\\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~ Ḃḃ£ĊċḊ§Ẁ©ẂḋỲ­®ŸḞḟĠġṀṁ¶ṖẁṗẃṠỳẄẅṡÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏŴÑÒÓÔÕÖṪØÙÚÛÜÝŶßàáâãäåæçèéêëìíîïŵñòóôõöṫøùúûüýŷÿ\", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {\"enc\": e, \"dec\": D }; })();\ncptable[28605] = (function(){ var d = \"\\u0000\\u0001\\u0002\\u0003\\u0004\\u0005\\u0006\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\u0014\\u0015\\u0016\\u0017\\u0018\\u0019\\u001a\\u001b\\u001c\\u001d\\u001e\\u001f !\\\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~ ¡¢£€¥Š§š©ª«¬­®¯°±²³Žµ¶·ž¹º»ŒœŸ¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ\", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {\"enc\": e, \"dec\": D }; })();\ncptable[28606] = (function(){ var d = \"\\u0000\\u0001\\u0002\\u0003\\u0004\\u0005\\u0006\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\u0014\\u0015\\u0016\\u0017\\u0018\\u0019\\u001a\\u001b\\u001c\\u001d\\u001e\\u001f !\\\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~ ĄąŁ€„Š§š©Ș«Ź­źŻ°±ČłŽ”¶·žčș»ŒœŸżÀÁÂĂÄĆÆÇÈÉÊËÌÍÎÏĐŃÒÓÔŐÖŚŰÙÚÛÜĘȚßàáâăäćæçèéêëìíîïđńòóôőöśűùúûüęțÿ\", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {\"enc\": e, \"dec\": D }; })();\ncptable[708] = (function(){ var d = \"\\u0000\\u0001\\u0002\\u0003\\u0004\\u0005\\u0006\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\u0014\\u0015\\u0016\\u0017\\u0018\\u0019\\u001a\\u001b\\u001c\\u001d\\u001e\\u001f !\\\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~│┤éâ╡à╢çêëèïî╖╕╣║╗╝ô╜╛ûù┐└┴┬├¤─┼╞╟╚╔╩،╦«»░▒▓╠═╬╧╨╤╥╙؛╘╒╓؟╫ءآأؤإئابةتثجحخدذرزسشصضطظعغ█▄▌▐▀ـفقكلمنهوىيًٌٍَُِّْ╪┘┌µ£■ \", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {\"enc\": e, \"dec\": D }; })();\ncptable[720] = (function(){ var d = \"\\u0000\\u0001\\u0002\\u0003\\u0004\\u0005\\u0006\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\u0014\\u0015\\u0016\\u0017\\u0018\\u0019\\u001a\\u001b\\u001c\\u001d\\u001e\\u001f !\\\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~éâàçêëèïîّْô¤ـûùءآأؤ£إئابةتثجحخدذرزسشص«»░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀ضطظعغفµقكلمنهوىي≡ًٌٍَُِ≈°∙·√ⁿ²■ \", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {\"enc\": e, \"dec\": D }; })();\ncptable[808] = (function(){ var d = \"\\u0000\\u0001\\u0002\\u0003\\u0004\\u0005\\u0006\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\u0014\\u0015\\u0016\\u0017\\u0018\\u0019\\u001a\\u001b\\u001c\\u001d\\u001e\\u001f !\\\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~АБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмноп░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀рстуфхцчшщъыьэюяЁёЄєЇїЎў°∙·√№€■ \", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {\"enc\": e, \"dec\": D }; })();\ncptable[858] = (function(){ var d = \"\\u0000\\u0001\\u0002\\u0003\\u0004\\u0005\\u0006\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\u0014\\u0015\\u0016\\u0017\\u0018\\u0019\\u001a\\u001b\\u001c\\u001d\\u001e\\u001f !\\\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~ÇüéâäàåçêëèïîìÄÅÉæÆôöòûùÿÖÜø£Ø×ƒáíóúñÑªº¿®¬½¼¡«»░▒▓│┤ÁÂÀ©╣║╗╝¢¥┐└┴┬├─┼ãÃ╚╔╩╦╠═╬¤ðÐÊËÈ€ÍÎÏ┘┌█▄¦Ì▀ÓßÔÒõÕµþÞÚÛÙýÝ¯´­±‗¾¶§÷¸°¨·¹³²■ \", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {\"enc\": e, \"dec\": D }; })();\ncptable[870] = (function(){ var d = \"\\u0000\\u0001\\u0002\\u0003\\t\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\b\\u0018\\u0019\\u001c\\u001d\\u001e\\u001f\\n\\u0017\\u001b\\u0005\\u0006\\u0007\\u0016\\u0004\\u0014\\u0015\\u001a  âäţáăčçć[.<(+!&éęëůíîľĺß]$*);^-/ÂÄ˝ÁĂČÇĆ|,%_>?ˇÉĘËŮÍÎĽĹ`:#@'=\\\"˘abcdefghiśňđýřş°jklmnopqrłńš¸˛¤ą~stuvwxyzŚŇĐÝŘŞ˙ĄżŢŻ§žźŽŹŁŃŠ¨´×{ABCDEFGHI­ôöŕóő}JKLMNOPQRĚűüťúě\\\\÷STUVWXYZďÔÖŔÓŐ0123456789ĎŰÜŤÚ\", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {\"enc\": e, \"dec\": D }; })();\ncptable[872] = (function(){ var d = \"\\u0000\\u0001\\u0002\\u0003\\u0004\\u0005\\u0006\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\u0014\\u0015\\u0016\\u0017\\u0018\\u0019\\u001a\\u001b\\u001c\\u001d\\u001e\\u001f !\\\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~ђЂѓЃёЁєЄѕЅіІїЇјЈљЉњЊћЋќЌўЎџЏюЮъЪаАбБцЦдДеЕфФгГ«»░▒▓│┤хХиИ╣║╗╝йЙ┐└┴┬├─┼кК╚╔╩╦╠═╬€лЛмМнНоОп┘┌█▄Пя▀ЯрРсСтТуУжЖвВьЬ№­ыЫзЗшШэЭщЩчЧ§■ \", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {\"enc\": e, \"dec\": D }; })();\ncptable[1010] = (function(){ var d = \"�\\u0001\\u0002\\u0003\\u0004\\u0005\\u0006\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\u0014\\u0015\\u0016\\u0017\\u0018\\u0019\\u001a\\u001b\\u001c\\u001d\\u001e\\u001f !\\\"£$%&’()*+,-./0123456789:;<=>?àABCDEFGHIJKLMNOPQRSTUVWXYZ°ç§ˆ_µabcdefghijklmnopqrstuvwxyzéùè¨���������������������������������������������������������������������������������������������������������������������������������\", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {\"enc\": e, \"dec\": D }; })();\ncptable[1047] = (function(){ var d = \"\\u0000\\u0001\\u0002\\u0003\\t\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\n\\b\\u0018\\u0019\\u001c\\u001d\\u001e\\u001f\\u0017\\u001b\\u0005\\u0006\\u0007\\u0016\\u0004\\u0014\\u0015\\u001a  âäàáãåçñ¢.<(+|&éêëèíîïìß!$*);^-/ÂÄÀÁÃÅÇÑ¦,%_>?øÉÊËÈÍÎÏÌ`:#@'=\\\"Øabcdefghi«»ðýþ±°jklmnopqrªºæ¸Æ¤µ~stuvwxyz¡¿Ð[Þ®¬£¥·©§¶¼½¾Ý¨¯]´×{ABCDEFGHI­ôöòóõ}JKLMNOPQR¹ûüùúÿ\\\\÷STUVWXYZ²ÔÖÒÓÕ0123456789³ÛÜÙÚ\", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {\"enc\": e, \"dec\": D }; })();\ncptable[1132] = (function(){ var d = \"\\u0000\\u0001\\u0002\\u0003\\u0004\\u0005\\u0006\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\u0014\\u0015\\u0016\\u0017\\u0018\\u0019\\u001a\\u001b\\u001c\\u001d\\u001e\\u001f !\\\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~���������������������������������ກຂຄງຈສຊຍດຕຖທນບປຜຝພຟມຢຣລວຫອຮ���ຯະາຳິີຶືຸູຼັົຽ���ເແໂໃໄ່້໊໋໌ໍໆ�ໜໝ₭����������������໐໑໒໓໔໕໖໗໘໙��¢¬¦ \", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {\"enc\": e, \"dec\": D }; })();\ncptable[1140] = (function(){ var d = \"\\u0000\\u0001\\u0002\\u0003\\t\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\b\\u0018\\u0019\\u001c\\u001d\\u001e\\u001f\\n\\u0017\\u001b\\u0005\\u0006\\u0007\\u0016\\u0004\\u0014\\u0015\\u001a  âäàáãåçñ¢.<(+|&éêëèíîïìß!$*);¬-/ÂÄÀÁÃÅÇÑ¦,%_>?øÉÊËÈÍÎÏÌ`:#@'=\\\"Øabcdefghi«»ðýþ±°jklmnopqrªºæ¸Æ€µ~stuvwxyz¡¿ÐÝÞ®^£¥·©§¶¼½¾[]¯¨´×{ABCDEFGHI­ôöòóõ}JKLMNOPQR¹ûüùúÿ\\\\÷STUVWXYZ²ÔÖÒÓÕ0123456789³ÛÜÙÚ\", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {\"enc\": e, \"dec\": D }; })();\ncptable[1141] = (function(){ var d = \"\\u0000\\u0001\\u0002\\u0003\\t\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\b\\u0018\\u0019\\u001c\\u001d\\u001e\\u001f\\n\\u0017\\u001b\\u0005\\u0006\\u0007\\u0016\\u0004\\u0014\\u0015\\u001a  â{àáãåçñÄ.<(+!&éêëèíîïì~Ü$*);^-/Â[ÀÁÃÅÇÑö,%_>?øÉÊËÈÍÎÏÌ`:#§'=\\\"Øabcdefghi«»ðýþ±°jklmnopqrªºæ¸Æ€µßstuvwxyz¡¿ÐÝÞ®¢£¥·©@¶¼½¾¬|¯¨´×äABCDEFGHI­ô¦òóõüJKLMNOPQR¹û}ùúÿÖ÷STUVWXYZ²Ô\\\\ÒÓÕ0123456789³Û]ÙÚ\", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {\"enc\": e, \"dec\": D }; })();\ncptable[1142] = (function(){ var d = \"\\u0000\\u0001\\u0002\\u0003\\t\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\b\\u0018\\u0019\\u001c\\u001d\\u001e\\u001f\\n\\u0017\\u001b\\u0005\\u0006\\u0007\\u0016\\u0004\\u0014\\u0015\\u001a  âäàáã}çñ#.<(+!&éêëèíîïìß€Å*);^-/ÂÄÀÁÃ$ÇÑø,%_>?¦ÉÊËÈÍÎÏÌ`:ÆØ'=\\\"@abcdefghi«»ðýþ±°jklmnopqrªº{¸[]µüstuvwxyz¡¿ÐÝÞ®¢£¥·©§¶¼½¾¬|¯¨´×æABCDEFGHI­ôöòóõåJKLMNOPQR¹û~ùúÿ\\\\÷STUVWXYZ²ÔÖÒÓÕ0123456789³ÛÜÙÚ\", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {\"enc\": e, \"dec\": D }; })();\ncptable[1143] = (function(){ var d = \"\\u0000\\u0001\\u0002\\u0003\\t\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\b\\u0018\\u0019\\u001c\\u001d\\u001e\\u001f\\n\\u0017\\u001b\\u0005\\u0006\\u0007\\u0016\\u0004\\u0014\\u0015\\u001a  â{àáã}çñ§.<(+!&`êëèíîïìß€Å*);^-/Â#ÀÁÃ$ÇÑö,%_>?ø\\\\ÊËÈÍÎÏÌé:ÄÖ'=\\\"Øabcdefghi«»ðýþ±°jklmnopqrªºæ¸Æ]µüstuvwxyz¡¿ÐÝÞ®¢£¥·©[¶¼½¾¬|¯¨´×äABCDEFGHI­ô¦òóõåJKLMNOPQR¹û~ùúÿÉ÷STUVWXYZ²Ô@ÒÓÕ0123456789³ÛÜÙÚ\", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {\"enc\": e, \"dec\": D }; })();\ncptable[1144] = (function(){ var d = \"\\u0000\\u0001\\u0002\\u0003\\t\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\b\\u0018\\u0019\\u001c\\u001d\\u001e\\u001f\\n\\u0017\\u001b\\u0005\\u0006\\u0007\\u0016\\u0004\\u0014\\u0015\\u001a  âä{áãå\\\\ñ°.<(+!&]êë}íîï~ßé$*);^-/ÂÄÀÁÃÅÇÑò,%_>?øÉÊËÈÍÎÏÌù:£§'=\\\"Øabcdefghi«»ðýþ±[jklmnopqrªºæ¸Æ€µìstuvwxyz¡¿ÐÝÞ®¢#¥·©@¶¼½¾¬|¯¨´×àABCDEFGHI­ôö¦óõèJKLMNOPQR¹ûü`úÿç÷STUVWXYZ²ÔÖÒÓÕ0123456789³ÛÜÙÚ\", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {\"enc\": e, \"dec\": D }; })();\ncptable[1145] = (function(){ var d = \"\\u0000\\u0001\\u0002\\u0003\\t\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\b\\u0018\\u0019\\u001c\\u001d\\u001e\\u001f\\n\\u0017\\u001b\\u0005\\u0006\\u0007\\u0016\\u0004\\u0014\\u0015\\u001a  âäàáãåç¦[.<(+|&éêëèíîïìß]$*);¬-/ÂÄÀÁÃÅÇ#ñ,%_>?øÉÊËÈÍÎÏÌ`:Ñ@'=\\\"Øabcdefghi«»ðýþ±°jklmnopqrªºæ¸Æ€µ¨stuvwxyz¡¿ÐÝÞ®¢£¥·©§¶¼½¾^!¯~´×{ABCDEFGHI­ôöòóõ}JKLMNOPQR¹ûüùúÿ\\\\÷STUVWXYZ²ÔÖÒÓÕ0123456789³ÛÜÙÚ\", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {\"enc\": e, \"dec\": D }; })();\ncptable[1146] = (function(){ var d = \"\\u0000\\u0001\\u0002\\u0003\\t\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\b\\u0018\\u0019\\u001c\\u001d\\u001e\\u001f\\n\\u0017\\u001b\\u0005\\u0006\\u0007\\u0016\\u0004\\u0014\\u0015\\u001a  âäàáãåçñ$.<(+|&éêëèíîïìß!£*);¬-/ÂÄÀÁÃÅÇÑ¦,%_>?øÉÊËÈÍÎÏÌ`:#@'=\\\"Øabcdefghi«»ðýþ±°jklmnopqrªºæ¸Æ€µ¯stuvwxyz¡¿ÐÝÞ®¢[¥·©§¶¼½¾^]~¨´×{ABCDEFGHI­ôöòóõ}JKLMNOPQR¹ûüùúÿ\\\\÷STUVWXYZ²ÔÖÒÓÕ0123456789³ÛÜÙÚ\", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {\"enc\": e, \"dec\": D }; })();\ncptable[1147] = (function(){ var d = \"\\u0000\\u0001\\u0002\\u0003\\t\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\b\\u0018\\u0019\\u001c\\u001d\\u001e\\u001f\\n\\u0017\\u001b\\u0005\\u0006\\u0007\\u0016\\u0004\\u0014\\u0015\\u001a  âä@áãå\\\\ñ°.<(+!&{êë}íîïìß§$*);^-/ÂÄÀÁÃÅÇÑù,%_>?øÉÊËÈÍÎÏÌµ:£à'=\\\"Øabcdefghi«»ðýþ±[jklmnopqrªºæ¸Æ€`¨stuvwxyz¡¿ÐÝÞ®¢#¥·©]¶¼½¾¬|¯~´×éABCDEFGHI­ôöòóõèJKLMNOPQR¹ûü¦úÿç÷STUVWXYZ²ÔÖÒÓÕ0123456789³ÛÜÙÚ\", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {\"enc\": e, \"dec\": D }; })();\ncptable[1148] = (function(){ var d = \"\\u0000\\u0001\\u0002\\u0003\\t\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\b\\u0018\\u0019\\u001c\\u001d\\u001e\\u001f\\n\\u0017\\u001b\\u0005\\u0006\\u0007\\u0016\\u0004\\u0014\\u0015\\u001a  âäàáãåçñ[.<(+!&éêëèíîïìß]$*);^-/ÂÄÀÁÃÅÇÑ¦,%_>?øÉÊËÈÍÎÏÌ`:#@'=\\\"Øabcdefghi«»ðýþ±°jklmnopqrªºæ¸Æ€µ~stuvwxyz¡¿ÐÝÞ®¢£¥·©§¶¼½¾¬|¯¨´×{ABCDEFGHI­ôöòóõ}JKLMNOPQR¹ûüùúÿ\\\\÷STUVWXYZ²ÔÖÒÓÕ0123456789³ÛÜÙÚ\", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {\"enc\": e, \"dec\": D }; })();\ncptable[1149] = (function(){ var d = \"\\u0000\\u0001\\u0002\\u0003\\t\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\b\\u0018\\u0019\\u001c\\u001d\\u001e\\u001f\\n\\u0017\\u001b\\u0005\\u0006\\u0007\\u0016\\u0004\\u0014\\u0015\\u001a  âäàáãåçñÞ.<(+!&éêëèíîïìßÆ$*);Ö-/ÂÄÀÁÃÅÇÑ¦,%_>?øÉÊËÈÍÎÏÌð:#Ð'=\\\"Øabcdefghi«»`ý{±°jklmnopqrªº}¸]€µöstuvwxyz¡¿@Ý[®¢£¥·©§¶¼½¾¬|¯¨\\\\×þABCDEFGHI­ô~òóõæJKLMNOPQR¹ûüùúÿ´÷STUVWXYZ²Ô^ÒÓÕ0123456789³ÛÜÙÚ\", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {\"enc\": e, \"dec\": D }; })();\ncptable[1361] = (function(){ var d = [], e = {}, D = [], j;\nD[0] = \"\\u0000\\u0001\\u0002\\u0003\\u0004\\u0005\\u0006\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\u0014\\u0015\\u0016\\u0017\\u0018\\u0019\\u001a\\u001b\\u001c\\u001d\\u001e\\u001f !\\\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~�����������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[0].length; ++j) if(D[0][j].charCodeAt(0) !== 0xFFFD) { e[D[0][j]] = 0 + j; d[0 + j] = D[0][j];}\nD[132] = \"������������������������������������������������������������������ᆨᆩᆪᆫᆬᆭᆮᆯᆰᆱᆲᆳᆴᆵᆶᆷ�ᆸᆹᆺᆻᆼᆽᆾᆿᇀᇁᇂ���ᅡ�������������������������������ᅢ�������������������������������ᅣ�������������������������������ᅤ�������������������������������ᅥ������������������������������\".split(\"\");\nfor(j = 0; j != D[132].length; ++j) if(D[132][j].charCodeAt(0) !== 0xFFFD) { e[D[132][j]] = 33792 + j; d[33792 + j] = D[132][j];}\nD[133] = \"�����������������������������������������������������������������ᅦ�������������������������������ᅧ�������������������������������ᅨ�������������������������������ᅩ�������������������������������ᅪ�������������������������������ᅫ������������������������������\".split(\"\");\nfor(j = 0; j != D[133].length; ++j) if(D[133][j].charCodeAt(0) !== 0xFFFD) { e[D[133][j]] = 34048 + j; d[34048 + j] = D[133][j];}\nD[134] = \"�����������������������������������������������������������������ᅬ�������������������������������ᅭ�������������������������������ᅮ�������������������������������ᅯ�������������������������������ᅰ�������������������������������ᅱ������������������������������\".split(\"\");\nfor(j = 0; j != D[134].length; ++j) if(D[134][j].charCodeAt(0) !== 0xFFFD) { e[D[134][j]] = 34304 + j; d[34304 + j] = D[134][j];}\nD[135] = \"�����������������������������������������������������������������ᅲ�������������������������������ᅳ�������������������������������ᅴ�������������������������������ᅵ����������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[135].length; ++j) if(D[135][j].charCodeAt(0) !== 0xFFFD) { e[D[135][j]] = 34560 + j; d[34560 + j] = D[135][j];}\nD[136] = \"�����������������������������������������������������������������ᄀ�������������������������������가각갂갃간갅갆갇갈갉갊갋갌갍갎갏감�갑값갓갔강갖갗갘같갚갛���개객갞갟갠갡갢갣갤갥갦갧갨갩갪갫갬�갭갮갯갰갱갲갳갴갵갶갷���갸갹갺갻갼갽갾갿걀걁걂걃걄걅걆걇걈�걉걊걋걌걍걎걏걐걑걒걓���걔걕걖걗걘걙걚걛걜걝걞걟걠걡걢걣걤�걥걦걧걨걩걪걫걬걭걮걯���거걱걲걳건걵걶걷걸걹걺걻걼걽걾걿검�겁겂것겄겅겆겇겈겉겊겋��\".split(\"\");\nfor(j = 0; j != D[136].length; ++j) if(D[136][j].charCodeAt(0) !== 0xFFFD) { e[D[136][j]] = 34816 + j; d[34816 + j] = D[136][j];}\nD[137] = \"�����������������������������������������������������������������게겍겎겏겐겑겒겓겔겕겖겗겘겙겚겛겜�겝겞겟겠겡겢겣겤겥겦겧���겨격겪겫견겭겮겯결겱겲겳겴겵겶겷겸�겹겺겻겼경겾겿곀곁곂곃���계곅곆곇곈곉곊곋곌곍곎곏곐곑곒곓곔�곕곖곗곘곙곚곛곜곝곞곟���고곡곢곣곤곥곦곧골곩곪곫곬곭곮곯곰�곱곲곳곴공곶곷곸곹곺곻���과곽곾곿관괁괂괃괄괅괆괇괈괉괊괋괌�괍괎괏괐광괒괓괔괕괖괗���괘괙괚괛괜괝괞괟괠괡괢괣괤괥괦괧괨�괩괪괫괬괭괮괯괰괱괲괳��\".split(\"\");\nfor(j = 0; j != D[137].length; ++j) if(D[137][j].charCodeAt(0) !== 0xFFFD) { e[D[137][j]] = 35072 + j; d[35072 + j] = D[137][j];}\nD[138] = \"�����������������������������������������������������������������괴괵괶괷괸괹괺괻괼괽괾괿굀굁굂굃굄�굅굆굇굈굉굊굋굌굍굎굏���교굑굒굓굔굕굖굗굘굙굚굛굜굝굞굟굠�굡굢굣굤굥굦굧굨굩굪굫���구국굮굯군굱굲굳굴굵굶굷굸굹굺굻굼�굽굾굿궀궁궂궃궄궅궆궇���궈궉궊궋권궍궎궏궐궑궒궓궔궕궖궗궘�궙궚궛궜궝궞궟궠궡궢궣���궤궥궦궧궨궩궪궫궬궭궮궯궰궱궲궳궴�궵궶궷궸궹궺궻궼궽궾궿���귀귁귂귃귄귅귆귇귈귉귊귋귌귍귎귏귐�귑귒귓귔귕귖귗귘귙귚귛��\".split(\"\");\nfor(j = 0; j != D[138].length; ++j) if(D[138][j].charCodeAt(0) !== 0xFFFD) { e[D[138][j]] = 35328 + j; d[35328 + j] = D[138][j];}\nD[139] = \"�����������������������������������������������������������������규귝귞귟균귡귢귣귤귥귦귧귨귩귪귫귬�귭귮귯귰귱귲귳귴귵귶귷���그극귺귻근귽귾귿글긁긂긃긄긅긆긇금�급긊긋긌긍긎긏긐긑긒긓���긔긕긖긗긘긙긚긛긜긝긞긟긠긡긢긣긤�긥긦긧긨긩긪긫긬긭긮긯���기긱긲긳긴긵긶긷길긹긺긻긼긽긾긿김�깁깂깃깄깅깆깇깈깉깊깋������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[139].length; ++j) if(D[139][j].charCodeAt(0) !== 0xFFFD) { e[D[139][j]] = 35584 + j; d[35584 + j] = D[139][j];}\nD[140] = \"�����������������������������������������������������������������ᄁ�������������������������������까깍깎깏깐깑깒깓깔깕깖깗깘깙깚깛깜�깝깞깟깠깡깢깣깤깥깦깧���깨깩깪깫깬깭깮깯깰깱깲깳깴깵깶깷깸�깹깺깻깼깽깾깿꺀꺁꺂꺃���꺄꺅꺆꺇꺈꺉꺊꺋꺌꺍꺎꺏꺐꺑꺒꺓꺔�꺕꺖꺗꺘꺙꺚꺛꺜꺝꺞꺟���꺠꺡꺢꺣꺤꺥꺦꺧꺨꺩꺪꺫꺬꺭꺮꺯꺰�꺱꺲꺳꺴꺵꺶꺷꺸꺹꺺꺻���꺼꺽꺾꺿껀껁껂껃껄껅껆껇껈껉껊껋껌�껍껎껏껐껑껒껓껔껕껖껗��\".split(\"\");\nfor(j = 0; j != D[140].length; ++j) if(D[140][j].charCodeAt(0) !== 0xFFFD) { e[D[140][j]] = 35840 + j; d[35840 + j] = D[140][j];}\nD[141] = \"�����������������������������������������������������������������께껙껚껛껜껝껞껟껠껡껢껣껤껥껦껧껨�껩껪껫껬껭껮껯껰껱껲껳���껴껵껶껷껸껹껺껻껼껽껾껿꼀꼁꼂꼃꼄�꼅꼆꼇꼈꼉꼊꼋꼌꼍꼎꼏���꼐꼑꼒꼓꼔꼕꼖꼗꼘꼙꼚꼛꼜꼝꼞꼟꼠�꼡꼢꼣꼤꼥꼦꼧꼨꼩꼪꼫���꼬꼭꼮꼯꼰꼱꼲꼳꼴꼵꼶꼷꼸꼹꼺꼻꼼�꼽꼾꼿꽀꽁꽂꽃꽄꽅꽆꽇���꽈꽉꽊꽋꽌꽍꽎꽏꽐꽑꽒꽓꽔꽕꽖꽗꽘�꽙꽚꽛꽜꽝꽞꽟꽠꽡꽢꽣���꽤꽥꽦꽧꽨꽩꽪꽫꽬꽭꽮꽯꽰꽱꽲꽳꽴�꽵꽶꽷꽸꽹꽺꽻꽼꽽꽾꽿��\".split(\"\");\nfor(j = 0; j != D[141].length; ++j) if(D[141][j].charCodeAt(0) !== 0xFFFD) { e[D[141][j]] = 36096 + j; d[36096 + j] = D[141][j];}\nD[142] = \"�����������������������������������������������������������������꾀꾁꾂꾃꾄꾅꾆꾇꾈꾉꾊꾋꾌꾍꾎꾏꾐�꾑꾒꾓꾔꾕꾖꾗꾘꾙꾚꾛���꾜꾝꾞꾟꾠꾡꾢꾣꾤꾥꾦꾧꾨꾩꾪꾫꾬�꾭꾮꾯꾰꾱꾲꾳꾴꾵꾶꾷���꾸꾹꾺꾻꾼꾽꾾꾿꿀꿁꿂꿃꿄꿅꿆꿇꿈�꿉꿊꿋꿌꿍꿎꿏꿐꿑꿒꿓���꿔꿕꿖꿗꿘꿙꿚꿛꿜꿝꿞꿟꿠꿡꿢꿣꿤�꿥꿦꿧꿨꿩꿪꿫꿬꿭꿮꿯���꿰꿱꿲꿳꿴꿵꿶꿷꿸꿹꿺꿻꿼꿽꿾꿿뀀�뀁뀂뀃뀄뀅뀆뀇뀈뀉뀊뀋���뀌뀍뀎뀏뀐뀑뀒뀓뀔뀕뀖뀗뀘뀙뀚뀛뀜�뀝뀞뀟뀠뀡뀢뀣뀤뀥뀦뀧��\".split(\"\");\nfor(j = 0; j != D[142].length; ++j) if(D[142][j].charCodeAt(0) !== 0xFFFD) { e[D[142][j]] = 36352 + j; d[36352 + j] = D[142][j];}\nD[143] = \"�����������������������������������������������������������������뀨뀩뀪뀫뀬뀭뀮뀯뀰뀱뀲뀳뀴뀵뀶뀷뀸�뀹뀺뀻뀼뀽뀾뀿끀끁끂끃���끄끅끆끇끈끉끊끋끌끍끎끏끐끑끒끓끔�끕끖끗끘끙끚끛끜끝끞끟���끠끡끢끣끤끥끦끧끨끩끪끫끬끭끮끯끰�끱끲끳끴끵끶끷끸끹끺끻���끼끽끾끿낀낁낂낃낄낅낆낇낈낉낊낋낌�낍낎낏낐낑낒낓낔낕낖낗������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[143].length; ++j) if(D[143][j].charCodeAt(0) !== 0xFFFD) { e[D[143][j]] = 36608 + j; d[36608 + j] = D[143][j];}\nD[144] = \"�����������������������������������������������������������������ᄂ�������������������������������나낙낚낛난낝낞낟날낡낢낣낤낥낦낧남�납낪낫났낭낮낯낰낱낲낳���내낵낶낷낸낹낺낻낼낽낾낿냀냁냂냃냄�냅냆냇냈냉냊냋냌냍냎냏���냐냑냒냓냔냕냖냗냘냙냚냛냜냝냞냟냠�냡냢냣냤냥냦냧냨냩냪냫���냬냭냮냯냰냱냲냳냴냵냶냷냸냹냺냻냼�냽냾냿넀넁넂넃넄넅넆넇���너넉넊넋넌넍넎넏널넑넒넓넔넕넖넗넘�넙넚넛넜넝넞넟넠넡넢넣��\".split(\"\");\nfor(j = 0; j != D[144].length; ++j) if(D[144][j].charCodeAt(0) !== 0xFFFD) { e[D[144][j]] = 36864 + j; d[36864 + j] = D[144][j];}\nD[145] = \"�����������������������������������������������������������������네넥넦넧넨넩넪넫넬넭넮넯넰넱넲넳넴�넵넶넷넸넹넺넻넼넽넾넿���녀녁녂녃년녅녆녇녈녉녊녋녌녍녎녏념�녑녒녓녔녕녖녗녘녙녚녛���녜녝녞녟녠녡녢녣녤녥녦녧녨녩녪녫녬�녭녮녯녰녱녲녳녴녵녶녷���노녹녺녻논녽녾녿놀놁놂놃놄놅놆놇놈�놉놊놋놌농놎놏놐놑높놓���놔놕놖놗놘놙놚놛놜놝놞놟놠놡놢놣놤�놥놦놧놨놩놪놫놬놭놮놯���놰놱놲놳놴놵놶놷놸놹놺놻놼놽놾놿뇀�뇁뇂뇃뇄뇅뇆뇇뇈뇉뇊뇋��\".split(\"\");\nfor(j = 0; j != D[145].length; ++j) if(D[145][j].charCodeAt(0) !== 0xFFFD) { e[D[145][j]] = 37120 + j; d[37120 + j] = D[145][j];}\nD[146] = \"�����������������������������������������������������������������뇌뇍뇎뇏뇐뇑뇒뇓뇔뇕뇖뇗뇘뇙뇚뇛뇜�뇝뇞뇟뇠뇡뇢뇣뇤뇥뇦뇧���뇨뇩뇪뇫뇬뇭뇮뇯뇰뇱뇲뇳뇴뇵뇶뇷뇸�뇹뇺뇻뇼뇽뇾뇿눀눁눂눃���누눅눆눇눈눉눊눋눌눍눎눏눐눑눒눓눔�눕눖눗눘눙눚눛눜눝눞눟���눠눡눢눣눤눥눦눧눨눩눪눫눬눭눮눯눰�눱눲눳눴눵눶눷눸눹눺눻���눼눽눾눿뉀뉁뉂뉃뉄뉅뉆뉇뉈뉉뉊뉋뉌�뉍뉎뉏뉐뉑뉒뉓뉔뉕뉖뉗���뉘뉙뉚뉛뉜뉝뉞뉟뉠뉡뉢뉣뉤뉥뉦뉧뉨�뉩뉪뉫뉬뉭뉮뉯뉰뉱뉲뉳��\".split(\"\");\nfor(j = 0; j != D[146].length; ++j) if(D[146][j].charCodeAt(0) !== 0xFFFD) { e[D[146][j]] = 37376 + j; d[37376 + j] = D[146][j];}\nD[147] = \"�����������������������������������������������������������������뉴뉵뉶뉷뉸뉹뉺뉻뉼뉽뉾뉿늀늁늂늃늄�늅늆늇늈늉늊늋늌늍늎늏���느늑늒늓는늕늖늗늘늙늚늛늜늝늞늟늠�늡늢늣늤능늦늧늨늩늪늫���늬늭늮늯늰늱늲늳늴늵늶늷늸늹늺늻늼�늽늾늿닀닁닂닃닄닅닆닇���니닉닊닋닌닍닎닏닐닑닒닓닔닕닖닗님�닙닚닛닜닝닞닟닠닡닢닣������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[147].length; ++j) if(D[147][j].charCodeAt(0) !== 0xFFFD) { e[D[147][j]] = 37632 + j; d[37632 + j] = D[147][j];}\nD[148] = \"�����������������������������������������������������������������ᄃ�������������������������������다닥닦닧단닩닪닫달닭닮닯닰닱닲닳담�답닶닷닸당닺닻닼닽닾닿���대댁댂댃댄댅댆댇댈댉댊댋댌댍댎댏댐�댑댒댓댔댕댖댗댘댙댚댛���댜댝댞댟댠댡댢댣댤댥댦댧댨댩댪댫댬�댭댮댯댰댱댲댳댴댵댶댷���댸댹댺댻댼댽댾댿덀덁덂덃덄덅덆덇덈�덉덊덋덌덍덎덏덐덑덒덓���더덕덖덗던덙덚덛덜덝덞덟덠덡덢덣덤�덥덦덧덨덩덪덫덬덭덮덯��\".split(\"\");\nfor(j = 0; j != D[148].length; ++j) if(D[148][j].charCodeAt(0) !== 0xFFFD) { e[D[148][j]] = 37888 + j; d[37888 + j] = D[148][j];}\nD[149] = \"�����������������������������������������������������������������데덱덲덳덴덵덶덷델덹덺덻덼덽덾덿뎀�뎁뎂뎃뎄뎅뎆뎇뎈뎉뎊뎋���뎌뎍뎎뎏뎐뎑뎒뎓뎔뎕뎖뎗뎘뎙뎚뎛뎜�뎝뎞뎟뎠뎡뎢뎣뎤뎥뎦뎧���뎨뎩뎪뎫뎬뎭뎮뎯뎰뎱뎲뎳뎴뎵뎶뎷뎸�뎹뎺뎻뎼뎽뎾뎿돀돁돂돃���도독돆돇돈돉돊돋돌돍돎돏돐돑돒돓돔�돕돖돗돘동돚돛돜돝돞돟���돠돡돢돣돤돥돦돧돨돩돪돫돬돭돮돯돰�돱돲돳돴돵돶돷돸돹돺돻���돼돽돾돿됀됁됂됃됄됅됆됇됈됉됊됋됌�됍됎됏됐됑됒됓됔됕됖됗��\".split(\"\");\nfor(j = 0; j != D[149].length; ++j) if(D[149][j].charCodeAt(0) !== 0xFFFD) { e[D[149][j]] = 38144 + j; d[38144 + j] = D[149][j];}\nD[150] = \"�����������������������������������������������������������������되됙됚됛된됝됞됟될됡됢됣됤됥됦됧됨�됩됪됫됬됭됮됯됰됱됲됳���됴됵됶됷됸됹됺됻됼됽됾됿둀둁둂둃둄�둅둆둇둈둉둊둋둌둍둎둏���두둑둒둓둔둕둖둗둘둙둚둛둜둝둞둟둠�둡둢둣둤둥둦둧둨둩둪둫���둬둭둮둯둰둱둲둳둴둵둶둷둸둹둺둻둼�둽둾둿뒀뒁뒂뒃뒄뒅뒆뒇���뒈뒉뒊뒋뒌뒍뒎뒏뒐뒑뒒뒓뒔뒕뒖뒗뒘�뒙뒚뒛뒜뒝뒞뒟뒠뒡뒢뒣���뒤뒥뒦뒧뒨뒩뒪뒫뒬뒭뒮뒯뒰뒱뒲뒳뒴�뒵뒶뒷뒸뒹뒺뒻뒼뒽뒾뒿��\".split(\"\");\nfor(j = 0; j != D[150].length; ++j) if(D[150][j].charCodeAt(0) !== 0xFFFD) { e[D[150][j]] = 38400 + j; d[38400 + j] = D[150][j];}\nD[151] = \"�����������������������������������������������������������������듀듁듂듃듄듅듆듇듈듉듊듋듌듍듎듏듐�듑듒듓듔듕듖듗듘듙듚듛���드득듞듟든듡듢듣들듥듦듧듨듩듪듫듬�듭듮듯듰등듲듳듴듵듶듷���듸듹듺듻듼듽듾듿딀딁딂딃딄딅딆딇딈�딉딊딋딌딍딎딏딐딑딒딓���디딕딖딗딘딙딚딛딜딝딞딟딠딡딢딣딤�딥딦딧딨딩딪딫딬딭딮딯������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[151].length; ++j) if(D[151][j].charCodeAt(0) !== 0xFFFD) { e[D[151][j]] = 38656 + j; d[38656 + j] = D[151][j];}\nD[152] = \"�����������������������������������������������������������������ᄄ�������������������������������따딱딲딳딴딵딶딷딸딹딺딻딼딽딾딿땀�땁땂땃땄땅땆땇땈땉땊땋���때땍땎땏땐땑땒땓땔땕땖땗땘땙땚땛땜�땝땞땟땠땡땢땣땤땥땦땧���땨땩땪땫땬땭땮땯땰땱땲땳땴땵땶땷땸�땹땺땻땼땽땾땿떀떁떂떃���떄떅떆떇떈떉떊떋떌떍떎떏떐떑떒떓떔�떕떖떗떘떙떚떛떜떝떞떟���떠떡떢떣떤떥떦떧떨떩떪떫떬떭떮떯떰�떱떲떳떴떵떶떷떸떹떺떻��\".split(\"\");\nfor(j = 0; j != D[152].length; ++j) if(D[152][j].charCodeAt(0) !== 0xFFFD) { e[D[152][j]] = 38912 + j; d[38912 + j] = D[152][j];}\nD[153] = \"�����������������������������������������������������������������떼떽떾떿뗀뗁뗂뗃뗄뗅뗆뗇뗈뗉뗊뗋뗌�뗍뗎뗏뗐뗑뗒뗓뗔뗕뗖뗗���뗘뗙뗚뗛뗜뗝뗞뗟뗠뗡뗢뗣뗤뗥뗦뗧뗨�뗩뗪뗫뗬뗭뗮뗯뗰뗱뗲뗳���뗴뗵뗶뗷뗸뗹뗺뗻뗼뗽뗾뗿똀똁똂똃똄�똅똆똇똈똉똊똋똌똍똎똏���또똑똒똓똔똕똖똗똘똙똚똛똜똝똞똟똠�똡똢똣똤똥똦똧똨똩똪똫���똬똭똮똯똰똱똲똳똴똵똶똷똸똹똺똻똼�똽똾똿뙀뙁뙂뙃뙄뙅뙆뙇���뙈뙉뙊뙋뙌뙍뙎뙏뙐뙑뙒뙓뙔뙕뙖뙗뙘�뙙뙚뙛뙜뙝뙞뙟뙠뙡뙢뙣��\".split(\"\");\nfor(j = 0; j != D[153].length; ++j) if(D[153][j].charCodeAt(0) !== 0xFFFD) { e[D[153][j]] = 39168 + j; d[39168 + j] = D[153][j];}\nD[154] = \"�����������������������������������������������������������������뙤뙥뙦뙧뙨뙩뙪뙫뙬뙭뙮뙯뙰뙱뙲뙳뙴�뙵뙶뙷뙸뙹뙺뙻뙼뙽뙾뙿���뚀뚁뚂뚃뚄뚅뚆뚇뚈뚉뚊뚋뚌뚍뚎뚏뚐�뚑뚒뚓뚔뚕뚖뚗뚘뚙뚚뚛���뚜뚝뚞뚟뚠뚡뚢뚣뚤뚥뚦뚧뚨뚩뚪뚫뚬�뚭뚮뚯뚰뚱뚲뚳뚴뚵뚶뚷���뚸뚹뚺뚻뚼뚽뚾뚿뛀뛁뛂뛃뛄뛅뛆뛇뛈�뛉뛊뛋뛌뛍뛎뛏뛐뛑뛒뛓���뛔뛕뛖뛗뛘뛙뛚뛛뛜뛝뛞뛟뛠뛡뛢뛣뛤�뛥뛦뛧뛨뛩뛪뛫뛬뛭뛮뛯���뛰뛱뛲뛳뛴뛵뛶뛷뛸뛹뛺뛻뛼뛽뛾뛿뜀�뜁뜂뜃뜄뜅뜆뜇뜈뜉뜊뜋��\".split(\"\");\nfor(j = 0; j != D[154].length; ++j) if(D[154][j].charCodeAt(0) !== 0xFFFD) { e[D[154][j]] = 39424 + j; d[39424 + j] = D[154][j];}\nD[155] = \"�����������������������������������������������������������������뜌뜍뜎뜏뜐뜑뜒뜓뜔뜕뜖뜗뜘뜙뜚뜛뜜�뜝뜞뜟뜠뜡뜢뜣뜤뜥뜦뜧���뜨뜩뜪뜫뜬뜭뜮뜯뜰뜱뜲뜳뜴뜵뜶뜷뜸�뜹뜺뜻뜼뜽뜾뜿띀띁띂띃���띄띅띆띇띈띉띊띋띌띍띎띏띐띑띒띓띔�띕띖띗띘띙띚띛띜띝띞띟���띠띡띢띣띤띥띦띧띨띩띪띫띬띭띮띯띰�띱띲띳띴띵띶띷띸띹띺띻������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[155].length; ++j) if(D[155][j].charCodeAt(0) !== 0xFFFD) { e[D[155][j]] = 39680 + j; d[39680 + j] = D[155][j];}\nD[156] = \"�����������������������������������������������������������������ᄅ�������������������������������라락띾띿란랁랂랃랄랅랆랇랈랉랊랋람�랍랎랏랐랑랒랓랔랕랖랗���래랙랚랛랜랝랞랟랠랡랢랣랤랥랦랧램�랩랪랫랬랭랮랯랰랱랲랳���랴략랶랷랸랹랺랻랼랽랾랿럀럁럂럃럄�럅럆럇럈량럊럋럌럍럎럏���럐럑럒럓럔럕럖럗럘럙럚럛럜럝럞럟럠�럡럢럣럤럥럦럧럨럩럪럫���러럭럮럯런럱럲럳럴럵럶럷럸럹럺럻럼�럽럾럿렀렁렂렃렄렅렆렇��\".split(\"\");\nfor(j = 0; j != D[156].length; ++j) if(D[156][j].charCodeAt(0) !== 0xFFFD) { e[D[156][j]] = 39936 + j; d[39936 + j] = D[156][j];}\nD[157] = \"�����������������������������������������������������������������레렉렊렋렌렍렎렏렐렑렒렓렔렕렖렗렘�렙렚렛렜렝렞렟렠렡렢렣���려력렦렧련렩렪렫렬렭렮렯렰렱렲렳렴�렵렶렷렸령렺렻렼렽렾렿���례롁롂롃롄롅롆롇롈롉롊롋롌롍롎롏롐�롑롒롓롔롕롖롗롘롙롚롛���로록롞롟론롡롢롣롤롥롦롧롨롩롪롫롬�롭롮롯롰롱롲롳롴롵롶롷���롸롹롺롻롼롽롾롿뢀뢁뢂뢃뢄뢅뢆뢇뢈�뢉뢊뢋뢌뢍뢎뢏뢐뢑뢒뢓���뢔뢕뢖뢗뢘뢙뢚뢛뢜뢝뢞뢟뢠뢡뢢뢣뢤�뢥뢦뢧뢨뢩뢪뢫뢬뢭뢮뢯��\".split(\"\");\nfor(j = 0; j != D[157].length; ++j) if(D[157][j].charCodeAt(0) !== 0xFFFD) { e[D[157][j]] = 40192 + j; d[40192 + j] = D[157][j];}\nD[158] = \"�����������������������������������������������������������������뢰뢱뢲뢳뢴뢵뢶뢷뢸뢹뢺뢻뢼뢽뢾뢿룀�룁룂룃룄룅룆룇룈룉룊룋���료룍룎룏룐룑룒룓룔룕룖룗룘룙룚룛룜�룝룞룟룠룡룢룣룤룥룦룧���루룩룪룫룬룭룮룯룰룱룲룳룴룵룶룷룸�룹룺룻룼룽룾룿뤀뤁뤂뤃���뤄뤅뤆뤇뤈뤉뤊뤋뤌뤍뤎뤏뤐뤑뤒뤓뤔�뤕뤖뤗뤘뤙뤚뤛뤜뤝뤞뤟���뤠뤡뤢뤣뤤뤥뤦뤧뤨뤩뤪뤫뤬뤭뤮뤯뤰�뤱뤲뤳뤴뤵뤶뤷뤸뤹뤺뤻���뤼뤽뤾뤿륀륁륂륃륄륅륆륇륈륉륊륋륌�륍륎륏륐륑륒륓륔륕륖륗��\".split(\"\");\nfor(j = 0; j != D[158].length; ++j) if(D[158][j].charCodeAt(0) !== 0xFFFD) { e[D[158][j]] = 40448 + j; d[40448 + j] = D[158][j];}\nD[159] = \"�����������������������������������������������������������������류륙륚륛륜륝륞륟률륡륢륣륤륥륦륧륨�륩륪륫륬륭륮륯륰륱륲륳���르륵륶륷른륹륺륻를륽륾륿릀릁릂릃름�릅릆릇릈릉릊릋릌릍릎릏���릐릑릒릓릔릕릖릗릘릙릚릛릜릝릞릟릠�릡릢릣릤릥릦릧릨릩릪릫���리릭릮릯린릱릲릳릴릵릶릷릸릹릺릻림�립릾릿맀링맂맃맄맅맆맇������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[159].length; ++j) if(D[159][j].charCodeAt(0) !== 0xFFFD) { e[D[159][j]] = 40704 + j; d[40704 + j] = D[159][j];}\nD[160] = \"�����������������������������������������������������������������ᄆ�������������������������������마막맊맋만맍많맏말맑맒맓맔맕맖맗맘�맙맚맛맜망맞맟맠맡맢맣���매맥맦맧맨맩맪맫맬맭맮맯맰맱맲맳맴�맵맶맷맸맹맺맻맼맽맾맿���먀먁먂먃먄먅먆먇먈먉먊먋먌먍먎먏먐�먑먒먓먔먕먖먗먘먙먚먛���먜먝먞먟먠먡먢먣먤먥먦먧먨먩먪먫먬�먭먮먯먰먱먲먳먴먵먶먷���머먹먺먻먼먽먾먿멀멁멂멃멄멅멆멇멈�멉멊멋멌멍멎멏멐멑멒멓��\".split(\"\");\nfor(j = 0; j != D[160].length; ++j) if(D[160][j].charCodeAt(0) !== 0xFFFD) { e[D[160][j]] = 40960 + j; d[40960 + j] = D[160][j];}\nD[161] = \"�����������������������������������������������������������������메멕멖멗멘멙멚멛멜멝멞멟멠멡멢멣멤�멥멦멧멨멩멪멫멬멭멮멯���며멱멲멳면멵멶멷멸멹멺멻멼멽멾멿몀�몁몂몃몄명몆몇몈몉몊몋���몌몍몎몏몐몑몒몓몔몕몖몗몘몙몚몛몜�몝몞몟몠몡몢몣몤몥몦몧���모목몪몫몬몭몮몯몰몱몲몳몴몵몶몷몸�몹몺못몼몽몾몿뫀뫁뫂뫃���뫄뫅뫆뫇뫈뫉뫊뫋뫌뫍뫎뫏뫐뫑뫒뫓뫔�뫕뫖뫗뫘뫙뫚뫛뫜뫝뫞뫟���뫠뫡뫢뫣뫤뫥뫦뫧뫨뫩뫪뫫뫬뫭뫮뫯뫰�뫱뫲뫳뫴뫵뫶뫷뫸뫹뫺뫻��\".split(\"\");\nfor(j = 0; j != D[161].length; ++j) if(D[161][j].charCodeAt(0) !== 0xFFFD) { e[D[161][j]] = 41216 + j; d[41216 + j] = D[161][j];}\nD[162] = \"�����������������������������������������������������������������뫼뫽뫾뫿묀묁묂묃묄묅묆묇묈묉묊묋묌�묍묎묏묐묑묒묓묔묕묖묗���묘묙묚묛묜묝묞묟묠묡묢묣묤묥묦묧묨�묩묪묫묬묭묮묯묰묱묲묳���무묵묶묷문묹묺묻물묽묾묿뭀뭁뭂뭃뭄�뭅뭆뭇뭈뭉뭊뭋뭌뭍뭎뭏���뭐뭑뭒뭓뭔뭕뭖뭗뭘뭙뭚뭛뭜뭝뭞뭟뭠�뭡뭢뭣뭤뭥뭦뭧뭨뭩뭪뭫���뭬뭭뭮뭯뭰뭱뭲뭳뭴뭵뭶뭷뭸뭹뭺뭻뭼�뭽뭾뭿뮀뮁뮂뮃뮄뮅뮆뮇���뮈뮉뮊뮋뮌뮍뮎뮏뮐뮑뮒뮓뮔뮕뮖뮗뮘�뮙뮚뮛뮜뮝뮞뮟뮠뮡뮢뮣��\".split(\"\");\nfor(j = 0; j != D[162].length; ++j) if(D[162][j].charCodeAt(0) !== 0xFFFD) { e[D[162][j]] = 41472 + j; d[41472 + j] = D[162][j];}\nD[163] = \"�����������������������������������������������������������������뮤뮥뮦뮧뮨뮩뮪뮫뮬뮭뮮뮯뮰뮱뮲뮳뮴�뮵뮶뮷뮸뮹뮺뮻뮼뮽뮾뮿���므믁믂믃믄믅믆믇믈믉믊믋믌믍믎믏믐�믑믒믓믔믕믖믗믘믙믚믛���믜믝믞믟믠믡믢믣믤믥믦믧믨믩믪믫믬�믭믮믯믰믱믲믳믴믵믶믷���미믹믺믻민믽믾믿밀밁밂밃밄밅밆밇밈�밉밊밋밌밍밎및밐밑밒밓������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[163].length; ++j) if(D[163][j].charCodeAt(0) !== 0xFFFD) { e[D[163][j]] = 41728 + j; d[41728 + j] = D[163][j];}\nD[164] = \"�����������������������������������������������������������������ᄇ�������������������������������바박밖밗반밙밚받발밝밞밟밠밡밢밣밤�밥밦밧밨방밪밫밬밭밮밯���배백밲밳밴밵밶밷밸밹밺밻밼밽밾밿뱀�뱁뱂뱃뱄뱅뱆뱇뱈뱉뱊뱋���뱌뱍뱎뱏뱐뱑뱒뱓뱔뱕뱖뱗뱘뱙뱚뱛뱜�뱝뱞뱟뱠뱡뱢뱣뱤뱥뱦뱧���뱨뱩뱪뱫뱬뱭뱮뱯뱰뱱뱲뱳뱴뱵뱶뱷뱸�뱹뱺뱻뱼뱽뱾뱿벀벁벂벃���버벅벆벇번벉벊벋벌벍벎벏벐벑벒벓범�법벖벗벘벙벚벛벜벝벞벟��\".split(\"\");\nfor(j = 0; j != D[164].length; ++j) if(D[164][j].charCodeAt(0) !== 0xFFFD) { e[D[164][j]] = 41984 + j; d[41984 + j] = D[164][j];}\nD[165] = \"�����������������������������������������������������������������베벡벢벣벤벥벦벧벨벩벪벫벬벭벮벯벰�벱벲벳벴벵벶벷벸벹벺벻���벼벽벾벿변볁볂볃별볅볆볇볈볉볊볋볌�볍볎볏볐병볒볓볔볕볖볗���볘볙볚볛볜볝볞볟볠볡볢볣볤볥볦볧볨�볩볪볫볬볭볮볯볰볱볲볳���보복볶볷본볹볺볻볼볽볾볿봀봁봂봃봄�봅봆봇봈봉봊봋봌봍봎봏���봐봑봒봓봔봕봖봗봘봙봚봛봜봝봞봟봠�봡봢봣봤봥봦봧봨봩봪봫���봬봭봮봯봰봱봲봳봴봵봶봷봸봹봺봻봼�봽봾봿뵀뵁뵂뵃뵄뵅뵆뵇��\".split(\"\");\nfor(j = 0; j != D[165].length; ++j) if(D[165][j].charCodeAt(0) !== 0xFFFD) { e[D[165][j]] = 42240 + j; d[42240 + j] = D[165][j];}\nD[166] = \"�����������������������������������������������������������������뵈뵉뵊뵋뵌뵍뵎뵏뵐뵑뵒뵓뵔뵕뵖뵗뵘�뵙뵚뵛뵜뵝뵞뵟뵠뵡뵢뵣���뵤뵥뵦뵧뵨뵩뵪뵫뵬뵭뵮뵯뵰뵱뵲뵳뵴�뵵뵶뵷뵸뵹뵺뵻뵼뵽뵾뵿���부북붂붃분붅붆붇불붉붊붋붌붍붎붏붐�붑붒붓붔붕붖붗붘붙붚붛���붜붝붞붟붠붡붢붣붤붥붦붧붨붩붪붫붬�붭붮붯붰붱붲붳붴붵붶붷���붸붹붺붻붼붽붾붿뷀뷁뷂뷃뷄뷅뷆뷇뷈�뷉뷊뷋뷌뷍뷎뷏뷐뷑뷒뷓���뷔뷕뷖뷗뷘뷙뷚뷛뷜뷝뷞뷟뷠뷡뷢뷣뷤�뷥뷦뷧뷨뷩뷪뷫뷬뷭뷮뷯��\".split(\"\");\nfor(j = 0; j != D[166].length; ++j) if(D[166][j].charCodeAt(0) !== 0xFFFD) { e[D[166][j]] = 42496 + j; d[42496 + j] = D[166][j];}\nD[167] = \"�����������������������������������������������������������������뷰뷱뷲뷳뷴뷵뷶뷷뷸뷹뷺뷻뷼뷽뷾뷿븀�븁븂븃븄븅븆븇븈븉븊븋���브븍븎븏븐븑븒븓블븕븖븗븘븙븚븛븜�븝븞븟븠븡븢븣븤븥븦븧���븨븩븪븫븬븭븮븯븰븱븲븳븴븵븶븷븸�븹븺븻븼븽븾븿빀빁빂빃���비빅빆빇빈빉빊빋빌빍빎빏빐빑빒빓빔�빕빖빗빘빙빚빛빜빝빞빟������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[167].length; ++j) if(D[167][j].charCodeAt(0) !== 0xFFFD) { e[D[167][j]] = 42752 + j; d[42752 + j] = D[167][j];}\nD[168] = \"�����������������������������������������������������������������ᄈ�������������������������������빠빡빢빣빤빥빦빧빨빩빪빫빬빭빮빯빰�빱빲빳빴빵빶빷빸빹빺빻���빼빽빾빿뺀뺁뺂뺃뺄뺅뺆뺇뺈뺉뺊뺋뺌�뺍뺎뺏뺐뺑뺒뺓뺔뺕뺖뺗���뺘뺙뺚뺛뺜뺝뺞뺟뺠뺡뺢뺣뺤뺥뺦뺧뺨�뺩뺪뺫뺬뺭뺮뺯뺰뺱뺲뺳���뺴뺵뺶뺷뺸뺹뺺뺻뺼뺽뺾뺿뻀뻁뻂뻃뻄�뻅뻆뻇뻈뻉뻊뻋뻌뻍뻎뻏���뻐뻑뻒뻓뻔뻕뻖뻗뻘뻙뻚뻛뻜뻝뻞뻟뻠�뻡뻢뻣뻤뻥뻦뻧뻨뻩뻪뻫��\".split(\"\");\nfor(j = 0; j != D[168].length; ++j) if(D[168][j].charCodeAt(0) !== 0xFFFD) { e[D[168][j]] = 43008 + j; d[43008 + j] = D[168][j];}\nD[169] = \"�����������������������������������������������������������������뻬뻭뻮뻯뻰뻱뻲뻳뻴뻵뻶뻷뻸뻹뻺뻻뻼�뻽뻾뻿뼀뼁뼂뼃뼄뼅뼆뼇���뼈뼉뼊뼋뼌뼍뼎뼏뼐뼑뼒뼓뼔뼕뼖뼗뼘�뼙뼚뼛뼜뼝뼞뼟뼠뼡뼢뼣���뼤뼥뼦뼧뼨뼩뼪뼫뼬뼭뼮뼯뼰뼱뼲뼳뼴�뼵뼶뼷뼸뼹뼺뼻뼼뼽뼾뼿���뽀뽁뽂뽃뽄뽅뽆뽇뽈뽉뽊뽋뽌뽍뽎뽏뽐�뽑뽒뽓뽔뽕뽖뽗뽘뽙뽚뽛���뽜뽝뽞뽟뽠뽡뽢뽣뽤뽥뽦뽧뽨뽩뽪뽫뽬�뽭뽮뽯뽰뽱뽲뽳뽴뽵뽶뽷���뽸뽹뽺뽻뽼뽽뽾뽿뾀뾁뾂뾃뾄뾅뾆뾇뾈�뾉뾊뾋뾌뾍뾎뾏뾐뾑뾒뾓��\".split(\"\");\nfor(j = 0; j != D[169].length; ++j) if(D[169][j].charCodeAt(0) !== 0xFFFD) { e[D[169][j]] = 43264 + j; d[43264 + j] = D[169][j];}\nD[170] = \"�����������������������������������������������������������������뾔뾕뾖뾗뾘뾙뾚뾛뾜뾝뾞뾟뾠뾡뾢뾣뾤�뾥뾦뾧뾨뾩뾪뾫뾬뾭뾮뾯���뾰뾱뾲뾳뾴뾵뾶뾷뾸뾹뾺뾻뾼뾽뾾뾿뿀�뿁뿂뿃뿄뿅뿆뿇뿈뿉뿊뿋���뿌뿍뿎뿏뿐뿑뿒뿓뿔뿕뿖뿗뿘뿙뿚뿛뿜�뿝뿞뿟뿠뿡뿢뿣뿤뿥뿦뿧���뿨뿩뿪뿫뿬뿭뿮뿯뿰뿱뿲뿳뿴뿵뿶뿷뿸�뿹뿺뿻뿼뿽뿾뿿쀀쀁쀂쀃���쀄쀅쀆쀇쀈쀉쀊쀋쀌쀍쀎쀏쀐쀑쀒쀓쀔�쀕쀖쀗쀘쀙쀚쀛쀜쀝쀞쀟���쀠쀡쀢쀣쀤쀥쀦쀧쀨쀩쀪쀫쀬쀭쀮쀯쀰�쀱쀲쀳쀴쀵쀶쀷쀸쀹쀺쀻��\".split(\"\");\nfor(j = 0; j != D[170].length; ++j) if(D[170][j].charCodeAt(0) !== 0xFFFD) { e[D[170][j]] = 43520 + j; d[43520 + j] = D[170][j];}\nD[171] = \"�����������������������������������������������������������������쀼쀽쀾쀿쁀쁁쁂쁃쁄쁅쁆쁇쁈쁉쁊쁋쁌�쁍쁎쁏쁐쁑쁒쁓쁔쁕쁖쁗���쁘쁙쁚쁛쁜쁝쁞쁟쁠쁡쁢쁣쁤쁥쁦쁧쁨�쁩쁪쁫쁬쁭쁮쁯쁰쁱쁲쁳���쁴쁵쁶쁷쁸쁹쁺쁻쁼쁽쁾쁿삀삁삂삃삄�삅삆삇삈삉삊삋삌삍삎삏���삐삑삒삓삔삕삖삗삘삙삚삛삜삝삞삟삠�삡삢삣삤삥삦삧삨삩삪삫������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[171].length; ++j) if(D[171][j].charCodeAt(0) !== 0xFFFD) { e[D[171][j]] = 43776 + j; d[43776 + j] = D[171][j];}\nD[172] = \"�����������������������������������������������������������������ᄉ�������������������������������사삭삮삯산삱삲삳살삵삶삷삸삹삺삻삼�삽삾삿샀상샂샃샄샅샆샇���새색샊샋샌샍샎샏샐샑샒샓샔샕샖샗샘�샙샚샛샜생샞샟샠샡샢샣���샤샥샦샧샨샩샪샫샬샭샮샯샰샱샲샳샴�샵샶샷샸샹샺샻샼샽샾샿���섀섁섂섃섄섅섆섇섈섉섊섋섌섍섎섏섐�섑섒섓섔섕섖섗섘섙섚섛���서석섞섟선섡섢섣설섥섦섧섨섩섪섫섬�섭섮섯섰성섲섳섴섵섶섷��\".split(\"\");\nfor(j = 0; j != D[172].length; ++j) if(D[172][j].charCodeAt(0) !== 0xFFFD) { e[D[172][j]] = 44032 + j; d[44032 + j] = D[172][j];}\nD[173] = \"�����������������������������������������������������������������세섹섺섻센섽섾섿셀셁셂셃셄셅셆셇셈�셉셊셋셌셍셎셏셐셑셒셓���셔셕셖셗션셙셚셛셜셝셞셟셠셡셢셣셤�셥셦셧셨셩셪셫셬셭셮셯���셰셱셲셳셴셵셶셷셸셹셺셻셼셽셾셿솀�솁솂솃솄솅솆솇솈솉솊솋���소속솎솏손솑솒솓솔솕솖솗솘솙솚솛솜�솝솞솟솠송솢솣솤솥솦솧���솨솩솪솫솬솭솮솯솰솱솲솳솴솵솶솷솸�솹솺솻솼솽솾솿쇀쇁쇂쇃���쇄쇅쇆쇇쇈쇉쇊쇋쇌쇍쇎쇏쇐쇑쇒쇓쇔�쇕쇖쇗쇘쇙쇚쇛쇜쇝쇞쇟��\".split(\"\");\nfor(j = 0; j != D[173].length; ++j) if(D[173][j].charCodeAt(0) !== 0xFFFD) { e[D[173][j]] = 44288 + j; d[44288 + j] = D[173][j];}\nD[174] = \"�����������������������������������������������������������������쇠쇡쇢쇣쇤쇥쇦쇧쇨쇩쇪쇫쇬쇭쇮쇯쇰�쇱쇲쇳쇴쇵쇶쇷쇸쇹쇺쇻���쇼쇽쇾쇿숀숁숂숃숄숅숆숇숈숉숊숋숌�숍숎숏숐숑숒숓숔숕숖숗���수숙숚숛순숝숞숟술숡숢숣숤숥숦숧숨�숩숪숫숬숭숮숯숰숱숲숳���숴숵숶숷숸숹숺숻숼숽숾숿쉀쉁쉂쉃쉄�쉅쉆쉇쉈쉉쉊쉋쉌쉍쉎쉏���쉐쉑쉒쉓쉔쉕쉖쉗쉘쉙쉚쉛쉜쉝쉞쉟쉠�쉡쉢쉣쉤쉥쉦쉧쉨쉩쉪쉫���쉬쉭쉮쉯쉰쉱쉲쉳쉴쉵쉶쉷쉸쉹쉺쉻쉼�쉽쉾쉿슀슁슂슃슄슅슆슇��\".split(\"\");\nfor(j = 0; j != D[174].length; ++j) if(D[174][j].charCodeAt(0) !== 0xFFFD) { e[D[174][j]] = 44544 + j; d[44544 + j] = D[174][j];}\nD[175] = \"�����������������������������������������������������������������슈슉슊슋슌슍슎슏슐슑슒슓슔슕슖슗슘�슙슚슛슜슝슞슟슠슡슢슣���스슥슦슧슨슩슪슫슬슭슮슯슰슱슲슳슴�습슶슷슸승슺슻슼슽슾슿���싀싁싂싃싄싅싆싇싈싉싊싋싌싍싎싏싐�싑싒싓싔싕싖싗싘싙싚싛���시식싞싟신싡싢싣실싥싦싧싨싩싪싫심�십싮싯싰싱싲싳싴싵싶싷������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[175].length; ++j) if(D[175][j].charCodeAt(0) !== 0xFFFD) { e[D[175][j]] = 44800 + j; d[44800 + j] = D[175][j];}\nD[176] = \"�����������������������������������������������������������������ᄊ�������������������������������싸싹싺싻싼싽싾싿쌀쌁쌂쌃쌄쌅쌆쌇쌈�쌉쌊쌋쌌쌍쌎쌏쌐쌑쌒쌓���쌔쌕쌖쌗쌘쌙쌚쌛쌜쌝쌞쌟쌠쌡쌢쌣쌤�쌥쌦쌧쌨쌩쌪쌫쌬쌭쌮쌯���쌰쌱쌲쌳쌴쌵쌶쌷쌸쌹쌺쌻쌼쌽쌾쌿썀�썁썂썃썄썅썆썇썈썉썊썋���썌썍썎썏썐썑썒썓썔썕썖썗썘썙썚썛썜�썝썞썟썠썡썢썣썤썥썦썧���써썩썪썫썬썭썮썯썰썱썲썳썴썵썶썷썸�썹썺썻썼썽썾썿쎀쎁쎂쎃��\".split(\"\");\nfor(j = 0; j != D[176].length; ++j) if(D[176][j].charCodeAt(0) !== 0xFFFD) { e[D[176][j]] = 45056 + j; d[45056 + j] = D[176][j];}\nD[177] = \"�����������������������������������������������������������������쎄쎅쎆쎇쎈쎉쎊쎋쎌쎍쎎쎏쎐쎑쎒쎓쎔�쎕쎖쎗쎘쎙쎚쎛쎜쎝쎞쎟���쎠쎡쎢쎣쎤쎥쎦쎧쎨쎩쎪쎫쎬쎭쎮쎯쎰�쎱쎲쎳쎴쎵쎶쎷쎸쎹쎺쎻���쎼쎽쎾쎿쏀쏁쏂쏃쏄쏅쏆쏇쏈쏉쏊쏋쏌�쏍쏎쏏쏐쏑쏒쏓쏔쏕쏖쏗���쏘쏙쏚쏛쏜쏝쏞쏟쏠쏡쏢쏣쏤쏥쏦쏧쏨�쏩쏪쏫쏬쏭쏮쏯쏰쏱쏲쏳���쏴쏵쏶쏷쏸쏹쏺쏻쏼쏽쏾쏿쐀쐁쐂쐃쐄�쐅쐆쐇쐈쐉쐊쐋쐌쐍쐎쐏���쐐쐑쐒쐓쐔쐕쐖쐗쐘쐙쐚쐛쐜쐝쐞쐟쐠�쐡쐢쐣쐤쐥쐦쐧쐨쐩쐪쐫��\".split(\"\");\nfor(j = 0; j != D[177].length; ++j) if(D[177][j].charCodeAt(0) !== 0xFFFD) { e[D[177][j]] = 45312 + j; d[45312 + j] = D[177][j];}\nD[178] = \"�����������������������������������������������������������������쐬쐭쐮쐯쐰쐱쐲쐳쐴쐵쐶쐷쐸쐹쐺쐻쐼�쐽쐾쐿쑀쑁쑂쑃쑄쑅쑆쑇���쑈쑉쑊쑋쑌쑍쑎쑏쑐쑑쑒쑓쑔쑕쑖쑗쑘�쑙쑚쑛쑜쑝쑞쑟쑠쑡쑢쑣���쑤쑥쑦쑧쑨쑩쑪쑫쑬쑭쑮쑯쑰쑱쑲쑳쑴�쑵쑶쑷쑸쑹쑺쑻쑼쑽쑾쑿���쒀쒁쒂쒃쒄쒅쒆쒇쒈쒉쒊쒋쒌쒍쒎쒏쒐�쒑쒒쒓쒔쒕쒖쒗쒘쒙쒚쒛���쒜쒝쒞쒟쒠쒡쒢쒣쒤쒥쒦쒧쒨쒩쒪쒫쒬�쒭쒮쒯쒰쒱쒲쒳쒴쒵쒶쒷���쒸쒹쒺쒻쒼쒽쒾쒿쓀쓁쓂쓃쓄쓅쓆쓇쓈�쓉쓊쓋쓌쓍쓎쓏쓐쓑쓒쓓��\".split(\"\");\nfor(j = 0; j != D[178].length; ++j) if(D[178][j].charCodeAt(0) !== 0xFFFD) { e[D[178][j]] = 45568 + j; d[45568 + j] = D[178][j];}\nD[179] = \"�����������������������������������������������������������������쓔쓕쓖쓗쓘쓙쓚쓛쓜쓝쓞쓟쓠쓡쓢쓣쓤�쓥쓦쓧쓨쓩쓪쓫쓬쓭쓮쓯���쓰쓱쓲쓳쓴쓵쓶쓷쓸쓹쓺쓻쓼쓽쓾쓿씀�씁씂씃씄씅씆씇씈씉씊씋���씌씍씎씏씐씑씒씓씔씕씖씗씘씙씚씛씜�씝씞씟씠씡씢씣씤씥씦씧���씨씩씪씫씬씭씮씯씰씱씲씳씴씵씶씷씸�씹씺씻씼씽씾씿앀앁앂앃������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[179].length; ++j) if(D[179][j].charCodeAt(0) !== 0xFFFD) { e[D[179][j]] = 45824 + j; d[45824 + j] = D[179][j];}\nD[180] = \"�����������������������������������������������������������������ᄋ�������������������������������아악앆앇안앉않앋알앍앎앏앐앑앒앓암�압앖앗았앙앚앛앜앝앞앟���애액앢앣앤앥앦앧앨앩앪앫앬앭앮앯앰�앱앲앳앴앵앶앷앸앹앺앻���야약앾앿얀얁얂얃얄얅얆얇얈얉얊얋얌�얍얎얏얐양얒얓얔얕얖얗���얘얙얚얛얜얝얞얟얠얡얢얣얤얥얦얧얨�얩얪얫얬얭얮얯얰얱얲얳���어억얶얷언얹얺얻얼얽얾얿엀엁엂엃엄�업없엇었엉엊엋엌엍엎엏��\".split(\"\");\nfor(j = 0; j != D[180].length; ++j) if(D[180][j].charCodeAt(0) !== 0xFFFD) { e[D[180][j]] = 46080 + j; d[46080 + j] = D[180][j];}\nD[181] = \"�����������������������������������������������������������������에엑엒엓엔엕엖엗엘엙엚엛엜엝엞엟엠�엡엢엣엤엥엦엧엨엩엪엫���여역엮엯연엱엲엳열엵엶엷엸엹엺엻염�엽엾엿였영옂옃옄옅옆옇���예옉옊옋옌옍옎옏옐옑옒옓옔옕옖옗옘�옙옚옛옜옝옞옟옠옡옢옣���오옥옦옧온옩옪옫올옭옮옯옰옱옲옳옴�옵옶옷옸옹옺옻옼옽옾옿���와왁왂왃완왅왆왇왈왉왊왋왌왍왎왏왐�왑왒왓왔왕왖왗왘왙왚왛���왜왝왞왟왠왡왢왣왤왥왦왧왨왩왪왫왬�왭왮왯왰왱왲왳왴왵왶왷��\".split(\"\");\nfor(j = 0; j != D[181].length; ++j) if(D[181][j].charCodeAt(0) !== 0xFFFD) { e[D[181][j]] = 46336 + j; d[46336 + j] = D[181][j];}\nD[182] = \"�����������������������������������������������������������������외왹왺왻왼왽왾왿욀욁욂욃욄욅욆욇욈�욉욊욋욌욍욎욏욐욑욒욓���요욕욖욗욘욙욚욛욜욝욞욟욠욡욢욣욤�욥욦욧욨용욪욫욬욭욮욯���우욱욲욳운욵욶욷울욹욺욻욼욽욾욿움�웁웂웃웄웅웆웇웈웉웊웋���워웍웎웏원웑웒웓월웕웖웗웘웙웚웛웜�웝웞웟웠웡웢웣웤웥웦웧���웨웩웪웫웬웭웮웯웰웱웲웳웴웵웶웷웸�웹웺웻웼웽웾웿윀윁윂윃���위윅윆윇윈윉윊윋윌윍윎윏윐윑윒윓윔�윕윖윗윘윙윚윛윜윝윞윟��\".split(\"\");\nfor(j = 0; j != D[182].length; ++j) if(D[182][j].charCodeAt(0) !== 0xFFFD) { e[D[182][j]] = 46592 + j; d[46592 + j] = D[182][j];}\nD[183] = \"�����������������������������������������������������������������유육윢윣윤윥윦윧율윩윪윫윬윭윮윯윰�윱윲윳윴융윶윷윸윹윺윻���으윽윾윿은읁읂읃을읅읆읇읈읉읊읋음�읍읎읏읐응읒읓읔읕읖읗���의읙읚읛읜읝읞읟읠읡읢읣읤읥읦읧읨�읩읪읫읬읭읮읯읰읱읲읳���이익읶읷인읹읺읻일읽읾읿잀잁잂잃임�입잆잇있잉잊잋잌잍잎잏������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[183].length; ++j) if(D[183][j].charCodeAt(0) !== 0xFFFD) { e[D[183][j]] = 46848 + j; d[46848 + j] = D[183][j];}\nD[184] = \"�����������������������������������������������������������������ᄌ�������������������������������자작잒잓잔잕잖잗잘잙잚잛잜잝잞잟잠�잡잢잣잤장잦잧잨잩잪잫���재잭잮잯잰잱잲잳잴잵잶잷잸잹잺잻잼�잽잾잿쟀쟁쟂쟃쟄쟅쟆쟇���쟈쟉쟊쟋쟌쟍쟎쟏쟐쟑쟒쟓쟔쟕쟖쟗쟘�쟙쟚쟛쟜쟝쟞쟟쟠쟡쟢쟣���쟤쟥쟦쟧쟨쟩쟪쟫쟬쟭쟮쟯쟰쟱쟲쟳쟴�쟵쟶쟷쟸쟹쟺쟻쟼쟽쟾쟿���저적젂젃전젅젆젇절젉젊젋젌젍젎젏점�접젒젓젔정젖젗젘젙젚젛��\".split(\"\");\nfor(j = 0; j != D[184].length; ++j) if(D[184][j].charCodeAt(0) !== 0xFFFD) { e[D[184][j]] = 47104 + j; d[47104 + j] = D[184][j];}\nD[185] = \"�����������������������������������������������������������������제젝젞젟젠젡젢젣젤젥젦젧젨젩젪젫젬�젭젮젯젰젱젲젳젴젵젶젷���져젹젺젻젼젽젾젿졀졁졂졃졄졅졆졇졈�졉졊졋졌졍졎졏졐졑졒졓���졔졕졖졗졘졙졚졛졜졝졞졟졠졡졢졣졤�졥졦졧졨졩졪졫졬졭졮졯���조족졲졳존졵졶졷졸졹졺졻졼졽졾졿좀�좁좂좃좄종좆좇좈좉좊좋���좌좍좎좏좐좑좒좓좔좕좖좗좘좙좚좛좜�좝좞좟좠좡좢좣좤좥좦좧���좨좩좪좫좬좭좮좯좰좱좲좳좴좵좶좷좸�좹좺좻좼좽좾좿죀죁죂죃��\".split(\"\");\nfor(j = 0; j != D[185].length; ++j) if(D[185][j].charCodeAt(0) !== 0xFFFD) { e[D[185][j]] = 47360 + j; d[47360 + j] = D[185][j];}\nD[186] = \"�����������������������������������������������������������������죄죅죆죇죈죉죊죋죌죍죎죏죐죑죒죓죔�죕죖죗죘죙죚죛죜죝죞죟���죠죡죢죣죤죥죦죧죨죩죪죫죬죭죮죯죰�죱죲죳죴죵죶죷죸죹죺죻���주죽죾죿준줁줂줃줄줅줆줇줈줉줊줋줌�줍줎줏줐중줒줓줔줕줖줗���줘줙줚줛줜줝줞줟줠줡줢줣줤줥줦줧줨�줩줪줫줬줭줮줯줰줱줲줳���줴줵줶줷줸줹줺줻줼줽줾줿쥀쥁쥂쥃쥄�쥅쥆쥇쥈쥉쥊쥋쥌쥍쥎쥏���쥐쥑쥒쥓쥔쥕쥖쥗쥘쥙쥚쥛쥜쥝쥞쥟쥠�쥡쥢쥣쥤쥥쥦쥧쥨쥩쥪쥫��\".split(\"\");\nfor(j = 0; j != D[186].length; ++j) if(D[186][j].charCodeAt(0) !== 0xFFFD) { e[D[186][j]] = 47616 + j; d[47616 + j] = D[186][j];}\nD[187] = \"�����������������������������������������������������������������쥬쥭쥮쥯쥰쥱쥲쥳쥴쥵쥶쥷쥸쥹쥺쥻쥼�쥽쥾쥿즀즁즂즃즄즅즆즇���즈즉즊즋즌즍즎즏즐즑즒즓즔즕즖즗즘�즙즚즛즜증즞즟즠즡즢즣���즤즥즦즧즨즩즪즫즬즭즮즯즰즱즲즳즴�즵즶즷즸즹즺즻즼즽즾즿���지직짂짃진짅짆짇질짉짊짋짌짍짎짏짐�집짒짓짔징짖짗짘짙짚짛������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[187].length; ++j) if(D[187][j].charCodeAt(0) !== 0xFFFD) { e[D[187][j]] = 47872 + j; d[47872 + j] = D[187][j];}\nD[188] = \"�����������������������������������������������������������������ᄍ�������������������������������짜짝짞짟짠짡짢짣짤짥짦짧짨짩짪짫짬�짭짮짯짰짱짲짳짴짵짶짷���째짹짺짻짼짽짾짿쨀쨁쨂쨃쨄쨅쨆쨇쨈�쨉쨊쨋쨌쨍쨎쨏쨐쨑쨒쨓���쨔쨕쨖쨗쨘쨙쨚쨛쨜쨝쨞쨟쨠쨡쨢쨣쨤�쨥쨦쨧쨨쨩쨪쨫쨬쨭쨮쨯���쨰쨱쨲쨳쨴쨵쨶쨷쨸쨹쨺쨻쨼쨽쨾쨿쩀�쩁쩂쩃쩄쩅쩆쩇쩈쩉쩊쩋���쩌쩍쩎쩏쩐쩑쩒쩓쩔쩕쩖쩗쩘쩙쩚쩛쩜�쩝쩞쩟쩠쩡쩢쩣쩤쩥쩦쩧��\".split(\"\");\nfor(j = 0; j != D[188].length; ++j) if(D[188][j].charCodeAt(0) !== 0xFFFD) { e[D[188][j]] = 48128 + j; d[48128 + j] = D[188][j];}\nD[189] = \"�����������������������������������������������������������������쩨쩩쩪쩫쩬쩭쩮쩯쩰쩱쩲쩳쩴쩵쩶쩷쩸�쩹쩺쩻쩼쩽쩾쩿쪀쪁쪂쪃���쪄쪅쪆쪇쪈쪉쪊쪋쪌쪍쪎쪏쪐쪑쪒쪓쪔�쪕쪖쪗쪘쪙쪚쪛쪜쪝쪞쪟���쪠쪡쪢쪣쪤쪥쪦쪧쪨쪩쪪쪫쪬쪭쪮쪯쪰�쪱쪲쪳쪴쪵쪶쪷쪸쪹쪺쪻���쪼쪽쪾쪿쫀쫁쫂쫃쫄쫅쫆쫇쫈쫉쫊쫋쫌�쫍쫎쫏쫐쫑쫒쫓쫔쫕쫖쫗���쫘쫙쫚쫛쫜쫝쫞쫟쫠쫡쫢쫣쫤쫥쫦쫧쫨�쫩쫪쫫쫬쫭쫮쫯쫰쫱쫲쫳���쫴쫵쫶쫷쫸쫹쫺쫻쫼쫽쫾쫿쬀쬁쬂쬃쬄�쬅쬆쬇쬈쬉쬊쬋쬌쬍쬎쬏��\".split(\"\");\nfor(j = 0; j != D[189].length; ++j) if(D[189][j].charCodeAt(0) !== 0xFFFD) { e[D[189][j]] = 48384 + j; d[48384 + j] = D[189][j];}\nD[190] = \"�����������������������������������������������������������������쬐쬑쬒쬓쬔쬕쬖쬗쬘쬙쬚쬛쬜쬝쬞쬟쬠�쬡쬢쬣쬤쬥쬦쬧쬨쬩쬪쬫���쬬쬭쬮쬯쬰쬱쬲쬳쬴쬵쬶쬷쬸쬹쬺쬻쬼�쬽쬾쬿쭀쭁쭂쭃쭄쭅쭆쭇���쭈쭉쭊쭋쭌쭍쭎쭏쭐쭑쭒쭓쭔쭕쭖쭗쭘�쭙쭚쭛쭜쭝쭞쭟쭠쭡쭢쭣���쭤쭥쭦쭧쭨쭩쭪쭫쭬쭭쭮쭯쭰쭱쭲쭳쭴�쭵쭶쭷쭸쭹쭺쭻쭼쭽쭾쭿���쮀쮁쮂쮃쮄쮅쮆쮇쮈쮉쮊쮋쮌쮍쮎쮏쮐�쮑쮒쮓쮔쮕쮖쮗쮘쮙쮚쮛���쮜쮝쮞쮟쮠쮡쮢쮣쮤쮥쮦쮧쮨쮩쮪쮫쮬�쮭쮮쮯쮰쮱쮲쮳쮴쮵쮶쮷��\".split(\"\");\nfor(j = 0; j != D[190].length; ++j) if(D[190][j].charCodeAt(0) !== 0xFFFD) { e[D[190][j]] = 48640 + j; d[48640 + j] = D[190][j];}\nD[191] = \"�����������������������������������������������������������������쮸쮹쮺쮻쮼쮽쮾쮿쯀쯁쯂쯃쯄쯅쯆쯇쯈�쯉쯊쯋쯌쯍쯎쯏쯐쯑쯒쯓���쯔쯕쯖쯗쯘쯙쯚쯛쯜쯝쯞쯟쯠쯡쯢쯣쯤�쯥쯦쯧쯨쯩쯪쯫쯬쯭쯮쯯���쯰쯱쯲쯳쯴쯵쯶쯷쯸쯹쯺쯻쯼쯽쯾쯿찀�찁찂찃찄찅찆찇찈찉찊찋���찌찍찎찏찐찑찒찓찔찕찖찗찘찙찚찛찜�찝찞찟찠찡찢찣찤찥찦찧������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[191].length; ++j) if(D[191][j].charCodeAt(0) !== 0xFFFD) { e[D[191][j]] = 48896 + j; d[48896 + j] = D[191][j];}\nD[192] = \"�����������������������������������������������������������������ᄎ�������������������������������차착찪찫찬찭찮찯찰찱찲찳찴찵찶찷참�찹찺찻찼창찾찿챀챁챂챃���채책챆챇챈챉챊챋챌챍챎챏챐챑챒챓챔�챕챖챗챘챙챚챛챜챝챞챟���챠챡챢챣챤챥챦챧챨챩챪챫챬챭챮챯챰�챱챲챳챴챵챶챷챸챹챺챻���챼챽챾챿첀첁첂첃첄첅첆첇첈첉첊첋첌�첍첎첏첐첑첒첓첔첕첖첗���처척첚첛천첝첞첟철첡첢첣첤첥첦첧첨�첩첪첫첬청첮첯첰첱첲첳��\".split(\"\");\nfor(j = 0; j != D[192].length; ++j) if(D[192][j].charCodeAt(0) !== 0xFFFD) { e[D[192][j]] = 49152 + j; d[49152 + j] = D[192][j];}\nD[193] = \"�����������������������������������������������������������������체첵첶첷첸첹첺첻첼첽첾첿쳀쳁쳂쳃쳄�쳅쳆쳇쳈쳉쳊쳋쳌쳍쳎쳏���쳐쳑쳒쳓쳔쳕쳖쳗쳘쳙쳚쳛쳜쳝쳞쳟쳠�쳡쳢쳣쳤쳥쳦쳧쳨쳩쳪쳫���쳬쳭쳮쳯쳰쳱쳲쳳쳴쳵쳶쳷쳸쳹쳺쳻쳼�쳽쳾쳿촀촁촂촃촄촅촆촇���초촉촊촋촌촍촎촏촐촑촒촓촔촕촖촗촘�촙촚촛촜총촞촟촠촡촢촣���촤촥촦촧촨촩촪촫촬촭촮촯촰촱촲촳촴�촵촶촷촸촹촺촻촼촽촾촿���쵀쵁쵂쵃쵄쵅쵆쵇쵈쵉쵊쵋쵌쵍쵎쵏쵐�쵑쵒쵓쵔쵕쵖쵗쵘쵙쵚쵛��\".split(\"\");\nfor(j = 0; j != D[193].length; ++j) if(D[193][j].charCodeAt(0) !== 0xFFFD) { e[D[193][j]] = 49408 + j; d[49408 + j] = D[193][j];}\nD[194] = \"�����������������������������������������������������������������최쵝쵞쵟쵠쵡쵢쵣쵤쵥쵦쵧쵨쵩쵪쵫쵬�쵭쵮쵯쵰쵱쵲쵳쵴쵵쵶쵷���쵸쵹쵺쵻쵼쵽쵾쵿춀춁춂춃춄춅춆춇춈�춉춊춋춌춍춎춏춐춑춒춓���추축춖춗춘춙춚춛출춝춞춟춠춡춢춣춤�춥춦춧춨충춪춫춬춭춮춯���춰춱춲춳춴춵춶춷춸춹춺춻춼춽춾춿췀�췁췂췃췄췅췆췇췈췉췊췋���췌췍췎췏췐췑췒췓췔췕췖췗췘췙췚췛췜�췝췞췟췠췡췢췣췤췥췦췧���취췩췪췫췬췭췮췯췰췱췲췳췴췵췶췷췸�췹췺췻췼췽췾췿츀츁츂츃��\".split(\"\");\nfor(j = 0; j != D[194].length; ++j) if(D[194][j].charCodeAt(0) !== 0xFFFD) { e[D[194][j]] = 49664 + j; d[49664 + j] = D[194][j];}\nD[195] = \"�����������������������������������������������������������������츄츅츆츇츈츉츊츋츌츍츎츏츐츑츒츓츔�츕츖츗츘츙츚츛츜츝츞츟���츠측츢츣츤츥츦츧츨츩츪츫츬츭츮츯츰�츱츲츳츴층츶츷츸츹츺츻���츼츽츾츿칀칁칂칃칄칅칆칇칈칉칊칋칌�칍칎칏칐칑칒칓칔칕칖칗���치칙칚칛친칝칞칟칠칡칢칣칤칥칦칧침�칩칪칫칬칭칮칯칰칱칲칳������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[195].length; ++j) if(D[195][j].charCodeAt(0) !== 0xFFFD) { e[D[195][j]] = 49920 + j; d[49920 + j] = D[195][j];}\nD[196] = \"�����������������������������������������������������������������ᄏ�������������������������������카칵칶칷칸칹칺칻칼칽칾칿캀캁캂캃캄�캅캆캇캈캉캊캋캌캍캎캏���캐캑캒캓캔캕캖캗캘캙캚캛캜캝캞캟캠�캡캢캣캤캥캦캧캨캩캪캫���캬캭캮캯캰캱캲캳캴캵캶캷캸캹캺캻캼�캽캾캿컀컁컂컃컄컅컆컇���컈컉컊컋컌컍컎컏컐컑컒컓컔컕컖컗컘�컙컚컛컜컝컞컟컠컡컢컣���커컥컦컧컨컩컪컫컬컭컮컯컰컱컲컳컴�컵컶컷컸컹컺컻컼컽컾컿��\".split(\"\");\nfor(j = 0; j != D[196].length; ++j) if(D[196][j].charCodeAt(0) !== 0xFFFD) { e[D[196][j]] = 50176 + j; d[50176 + j] = D[196][j];}\nD[197] = \"�����������������������������������������������������������������케켁켂켃켄켅켆켇켈켉켊켋켌켍켎켏켐�켑켒켓켔켕켖켗켘켙켚켛���켜켝켞켟켠켡켢켣켤켥켦켧켨켩켪켫켬�켭켮켯켰켱켲켳켴켵켶켷���켸켹켺켻켼켽켾켿콀콁콂콃콄콅콆콇콈�콉콊콋콌콍콎콏콐콑콒콓���코콕콖콗콘콙콚콛콜콝콞콟콠콡콢콣콤�콥콦콧콨콩콪콫콬콭콮콯���콰콱콲콳콴콵콶콷콸콹콺콻콼콽콾콿쾀�쾁쾂쾃쾄쾅쾆쾇쾈쾉쾊쾋���쾌쾍쾎쾏쾐쾑쾒쾓쾔쾕쾖쾗쾘쾙쾚쾛쾜�쾝쾞쾟쾠쾡쾢쾣쾤쾥쾦쾧��\".split(\"\");\nfor(j = 0; j != D[197].length; ++j) if(D[197][j].charCodeAt(0) !== 0xFFFD) { e[D[197][j]] = 50432 + j; d[50432 + j] = D[197][j];}\nD[198] = \"�����������������������������������������������������������������쾨쾩쾪쾫쾬쾭쾮쾯쾰쾱쾲쾳쾴쾵쾶쾷쾸�쾹쾺쾻쾼쾽쾾쾿쿀쿁쿂쿃���쿄쿅쿆쿇쿈쿉쿊쿋쿌쿍쿎쿏쿐쿑쿒쿓쿔�쿕쿖쿗쿘쿙쿚쿛쿜쿝쿞쿟���쿠쿡쿢쿣쿤쿥쿦쿧쿨쿩쿪쿫쿬쿭쿮쿯쿰�쿱쿲쿳쿴쿵쿶쿷쿸쿹쿺쿻���쿼쿽쿾쿿퀀퀁퀂퀃퀄퀅퀆퀇퀈퀉퀊퀋퀌�퀍퀎퀏퀐퀑퀒퀓퀔퀕퀖퀗���퀘퀙퀚퀛퀜퀝퀞퀟퀠퀡퀢퀣퀤퀥퀦퀧퀨�퀩퀪퀫퀬퀭퀮퀯퀰퀱퀲퀳���퀴퀵퀶퀷퀸퀹퀺퀻퀼퀽퀾퀿큀큁큂큃큄�큅큆큇큈큉큊큋큌큍큎큏��\".split(\"\");\nfor(j = 0; j != D[198].length; ++j) if(D[198][j].charCodeAt(0) !== 0xFFFD) { e[D[198][j]] = 50688 + j; d[50688 + j] = D[198][j];}\nD[199] = \"�����������������������������������������������������������������큐큑큒큓큔큕큖큗큘큙큚큛큜큝큞큟큠�큡큢큣큤큥큦큧큨큩큪큫���크큭큮큯큰큱큲큳클큵큶큷큸큹큺큻큼�큽큾큿킀킁킂킃킄킅킆킇���킈킉킊킋킌킍킎킏킐킑킒킓킔킕킖킗킘�킙킚킛킜킝킞킟킠킡킢킣���키킥킦킧킨킩킪킫킬킭킮킯킰킱킲킳킴�킵킶킷킸킹킺킻킼킽킾킿������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[199].length; ++j) if(D[199][j].charCodeAt(0) !== 0xFFFD) { e[D[199][j]] = 50944 + j; d[50944 + j] = D[199][j];}\nD[200] = \"�����������������������������������������������������������������ᄐ�������������������������������타탁탂탃탄탅탆탇탈탉탊탋탌탍탎탏탐�탑탒탓탔탕탖탗탘탙탚탛���태택탞탟탠탡탢탣탤탥탦탧탨탩탪탫탬�탭탮탯탰탱탲탳탴탵탶탷���탸탹탺탻탼탽탾탿턀턁턂턃턄턅턆턇턈�턉턊턋턌턍턎턏턐턑턒턓���턔턕턖턗턘턙턚턛턜턝턞턟턠턡턢턣턤�턥턦턧턨턩턪턫턬턭턮턯���터턱턲턳턴턵턶턷털턹턺턻턼턽턾턿텀�텁텂텃텄텅텆텇텈텉텊텋��\".split(\"\");\nfor(j = 0; j != D[200].length; ++j) if(D[200][j].charCodeAt(0) !== 0xFFFD) { e[D[200][j]] = 51200 + j; d[51200 + j] = D[200][j];}\nD[201] = \"�����������������������������������������������������������������테텍텎텏텐텑텒텓텔텕텖텗텘텙텚텛템�텝텞텟텠텡텢텣텤텥텦텧���텨텩텪텫텬텭텮텯텰텱텲텳텴텵텶텷텸�텹텺텻텼텽텾텿톀톁톂톃���톄톅톆톇톈톉톊톋톌톍톎톏톐톑톒톓톔�톕톖톗톘톙톚톛톜톝톞톟���토톡톢톣톤톥톦톧톨톩톪톫톬톭톮톯톰�톱톲톳톴통톶톷톸톹톺톻���톼톽톾톿퇀퇁퇂퇃퇄퇅퇆퇇퇈퇉퇊퇋퇌�퇍퇎퇏퇐퇑퇒퇓퇔퇕퇖퇗���퇘퇙퇚퇛퇜퇝퇞퇟퇠퇡퇢퇣퇤퇥퇦퇧퇨�퇩퇪퇫퇬퇭퇮퇯퇰퇱퇲퇳��\".split(\"\");\nfor(j = 0; j != D[201].length; ++j) if(D[201][j].charCodeAt(0) !== 0xFFFD) { e[D[201][j]] = 51456 + j; d[51456 + j] = D[201][j];}\nD[202] = \"�����������������������������������������������������������������퇴퇵퇶퇷퇸퇹퇺퇻퇼퇽퇾퇿툀툁툂툃툄�툅툆툇툈툉툊툋툌툍툎툏���툐툑툒툓툔툕툖툗툘툙툚툛툜툝툞툟툠�툡툢툣툤툥툦툧툨툩툪툫���투툭툮툯툰툱툲툳툴툵툶툷툸툹툺툻툼�툽툾툿퉀퉁퉂퉃퉄퉅퉆퉇���퉈퉉퉊퉋퉌퉍퉎퉏퉐퉑퉒퉓퉔퉕퉖퉗퉘�퉙퉚퉛퉜퉝퉞퉟퉠퉡퉢퉣���퉤퉥퉦퉧퉨퉩퉪퉫퉬퉭퉮퉯퉰퉱퉲퉳퉴�퉵퉶퉷퉸퉹퉺퉻퉼퉽퉾퉿���튀튁튂튃튄튅튆튇튈튉튊튋튌튍튎튏튐�튑튒튓튔튕튖튗튘튙튚튛��\".split(\"\");\nfor(j = 0; j != D[202].length; ++j) if(D[202][j].charCodeAt(0) !== 0xFFFD) { e[D[202][j]] = 51712 + j; d[51712 + j] = D[202][j];}\nD[203] = \"�����������������������������������������������������������������튜튝튞튟튠튡튢튣튤튥튦튧튨튩튪튫튬�튭튮튯튰튱튲튳튴튵튶튷���트특튺튻튼튽튾튿틀틁틂틃틄틅틆틇틈�틉틊틋틌틍틎틏틐틑틒틓���틔틕틖틗틘틙틚틛틜틝틞틟틠틡틢틣틤�틥틦틧틨틩틪틫틬틭틮틯���티틱틲틳틴틵틶틷틸틹틺틻틼틽틾틿팀�팁팂팃팄팅팆팇팈팉팊팋������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[203].length; ++j) if(D[203][j].charCodeAt(0) !== 0xFFFD) { e[D[203][j]] = 51968 + j; d[51968 + j] = D[203][j];}\nD[204] = \"�����������������������������������������������������������������ᄑ�������������������������������파팍팎팏판팑팒팓팔팕팖팗팘팙팚팛팜�팝팞팟팠팡팢팣팤팥팦팧���패팩팪팫팬팭팮팯팰팱팲팳팴팵팶팷팸�팹팺팻팼팽팾팿퍀퍁퍂퍃���퍄퍅퍆퍇퍈퍉퍊퍋퍌퍍퍎퍏퍐퍑퍒퍓퍔�퍕퍖퍗퍘퍙퍚퍛퍜퍝퍞퍟���퍠퍡퍢퍣퍤퍥퍦퍧퍨퍩퍪퍫퍬퍭퍮퍯퍰�퍱퍲퍳퍴퍵퍶퍷퍸퍹퍺퍻���퍼퍽퍾퍿펀펁펂펃펄펅펆펇펈펉펊펋펌�펍펎펏펐펑펒펓펔펕펖펗��\".split(\"\");\nfor(j = 0; j != D[204].length; ++j) if(D[204][j].charCodeAt(0) !== 0xFFFD) { e[D[204][j]] = 52224 + j; d[52224 + j] = D[204][j];}\nD[205] = \"�����������������������������������������������������������������페펙펚펛펜펝펞펟펠펡펢펣펤펥펦펧펨�펩펪펫펬펭펮펯펰펱펲펳���펴펵펶펷편펹펺펻펼펽펾펿폀폁폂폃폄�폅폆폇폈평폊폋폌폍폎폏���폐폑폒폓폔폕폖폗폘폙폚폛폜폝폞폟폠�폡폢폣폤폥폦폧폨폩폪폫���포폭폮폯폰폱폲폳폴폵폶폷폸폹폺폻폼�폽폾폿퐀퐁퐂퐃퐄퐅퐆퐇���퐈퐉퐊퐋퐌퐍퐎퐏퐐퐑퐒퐓퐔퐕퐖퐗퐘�퐙퐚퐛퐜퐝퐞퐟퐠퐡퐢퐣���퐤퐥퐦퐧퐨퐩퐪퐫퐬퐭퐮퐯퐰퐱퐲퐳퐴�퐵퐶퐷퐸퐹퐺퐻퐼퐽퐾퐿��\".split(\"\");\nfor(j = 0; j != D[205].length; ++j) if(D[205][j].charCodeAt(0) !== 0xFFFD) { e[D[205][j]] = 52480 + j; d[52480 + j] = D[205][j];}\nD[206] = \"�����������������������������������������������������������������푀푁푂푃푄푅푆푇푈푉푊푋푌푍푎푏푐�푑푒푓푔푕푖푗푘푙푚푛���표푝푞푟푠푡푢푣푤푥푦푧푨푩푪푫푬�푭푮푯푰푱푲푳푴푵푶푷���푸푹푺푻푼푽푾푿풀풁풂풃풄풅풆풇품�풉풊풋풌풍풎풏풐풑풒풓���풔풕풖풗풘풙풚풛풜풝풞풟풠풡풢풣풤�풥풦풧풨풩풪풫풬풭풮풯���풰풱풲풳풴풵풶풷풸풹풺풻풼풽풾풿퓀�퓁퓂퓃퓄퓅퓆퓇퓈퓉퓊퓋���퓌퓍퓎퓏퓐퓑퓒퓓퓔퓕퓖퓗퓘퓙퓚퓛퓜�퓝퓞퓟퓠퓡퓢퓣퓤퓥퓦퓧��\".split(\"\");\nfor(j = 0; j != D[206].length; ++j) if(D[206][j].charCodeAt(0) !== 0xFFFD) { e[D[206][j]] = 52736 + j; d[52736 + j] = D[206][j];}\nD[207] = \"�����������������������������������������������������������������퓨퓩퓪퓫퓬퓭퓮퓯퓰퓱퓲퓳퓴퓵퓶퓷퓸�퓹퓺퓻퓼퓽퓾퓿픀픁픂픃���프픅픆픇픈픉픊픋플픍픎픏픐픑픒픓픔�픕픖픗픘픙픚픛픜픝픞픟���픠픡픢픣픤픥픦픧픨픩픪픫픬픭픮픯픰�픱픲픳픴픵픶픷픸픹픺픻���피픽픾픿핀핁핂핃필핅핆핇핈핉핊핋핌�핍핎핏핐핑핒핓핔핕핖핗������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[207].length; ++j) if(D[207][j].charCodeAt(0) !== 0xFFFD) { e[D[207][j]] = 52992 + j; d[52992 + j] = D[207][j];}\nD[208] = \"�����������������������������������������������������������������ᄒ�������������������������������하학핚핛한핝핞핟할핡핢핣핤핥핦핧함�합핪핫핬항핮핯핰핱핲핳���해핵핶핷핸핹핺핻핼핽핾핿햀햁햂햃햄�햅햆햇했행햊햋햌햍햎햏���햐햑햒햓햔햕햖햗햘햙햚햛햜햝햞햟햠�햡햢햣햤향햦햧햨햩햪햫���햬햭햮햯햰햱햲햳햴햵햶햷햸햹햺햻햼�햽햾햿헀헁헂헃헄헅헆헇���허헉헊헋헌헍헎헏헐헑헒헓헔헕헖헗험�헙헚헛헜헝헞헟헠헡헢헣��\".split(\"\");\nfor(j = 0; j != D[208].length; ++j) if(D[208][j].charCodeAt(0) !== 0xFFFD) { e[D[208][j]] = 53248 + j; d[53248 + j] = D[208][j];}\nD[209] = \"�����������������������������������������������������������������헤헥헦헧헨헩헪헫헬헭헮헯헰헱헲헳헴�헵헶헷헸헹헺헻헼헽헾헿���혀혁혂혃현혅혆혇혈혉혊혋혌혍혎혏혐�협혒혓혔형혖혗혘혙혚혛���혜혝혞혟혠혡혢혣혤혥혦혧혨혩혪혫혬�혭혮혯혰혱혲혳혴혵혶혷���호혹혺혻혼혽혾혿홀홁홂홃홄홅홆홇홈�홉홊홋홌홍홎홏홐홑홒홓���화확홖홗환홙홚홛활홝홞홟홠홡홢홣홤�홥홦홧홨황홪홫홬홭홮홯���홰홱홲홳홴홵홶홷홸홹홺홻홼홽홾홿횀�횁횂횃횄횅횆횇횈횉횊횋��\".split(\"\");\nfor(j = 0; j != D[209].length; ++j) if(D[209][j].charCodeAt(0) !== 0xFFFD) { e[D[209][j]] = 53504 + j; d[53504 + j] = D[209][j];}\nD[210] = \"�����������������������������������������������������������������회획횎횏횐횑횒횓횔횕횖횗횘횙횚횛횜�횝횞횟횠횡횢횣횤횥횦횧���효횩횪횫횬횭횮횯횰횱횲횳횴횵횶횷횸�횹횺횻횼횽횾횿훀훁훂훃���후훅훆훇훈훉훊훋훌훍훎훏훐훑훒훓훔�훕훖훗훘훙훚훛훜훝훞훟���훠훡훢훣훤훥훦훧훨훩훪훫훬훭훮훯훰�훱훲훳훴훵훶훷훸훹훺훻���훼훽훾훿휀휁휂휃휄휅휆휇휈휉휊휋휌�휍휎휏휐휑휒휓휔휕휖휗���휘휙휚휛휜휝휞휟휠휡휢휣휤휥휦휧휨�휩휪휫휬휭휮휯휰휱휲휳��\".split(\"\");\nfor(j = 0; j != D[210].length; ++j) if(D[210][j].charCodeAt(0) !== 0xFFFD) { e[D[210][j]] = 53760 + j; d[53760 + j] = D[210][j];}\nD[211] = \"�����������������������������������������������������������������휴휵휶휷휸휹휺휻휼휽휾휿흀흁흂흃흄�흅흆흇흈흉흊흋흌흍흎흏���흐흑흒흓흔흕흖흗흘흙흚흛흜흝흞흟흠�흡흢흣흤흥흦흧흨흩흪흫���희흭흮흯흰흱흲흳흴흵흶흷흸흹흺흻흼�흽흾흿힀힁힂힃힄힅힆힇���히힉힊힋힌힍힎힏힐힑힒힓힔힕힖힗힘�힙힚힛힜힝힞힟힠힡힢힣������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[211].length; ++j) if(D[211][j].charCodeAt(0) !== 0xFFFD) { e[D[211][j]] = 54016 + j; d[54016 + j] = D[211][j];}\nD[216] = \"��������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[216].length; ++j) if(D[216][j].charCodeAt(0) !== 0xFFFD) { e[D[216][j]] = 55296 + j; d[55296 + j] = D[216][j];}\nD[217] = \"�������������������������������������������������　、。·‥…¨〃­―∥＼∼‘’“”〔〕〈〉《》「」『』【】±×÷≠≤≥∞∴°′″℃Å￠￡￥♂♀∠⊥⌒∂∇≡≒§※☆★○●◎◇◆□■△▲▽▼→←↑↓↔〓≪≫√������������������∽∝∵∫∬∈∋⊆⊇⊂⊃∪∩∧∨￢⇒⇔∀∃´～ˇ˘˝˚˙¸˛¡¿ː∮∑∏¤℉‰◁◀▷▶♤♠♡♥♧♣⊙◈▣◐◑▒▤▥▨▧▦▩♨☏☎☜☞¶†‡↕↗↙↖↘♭♩♪♬㉿㈜№㏇™㏂㏘℡€®������������������������\".split(\"\");\nfor(j = 0; j != D[217].length; ++j) if(D[217][j].charCodeAt(0) !== 0xFFFD) { e[D[217][j]] = 55552 + j; d[55552 + j] = D[217][j];}\nD[218] = \"�������������������������������������������������！＂＃＄％＆＇（）＊＋，－．／０１２３４５６７８９：；＜＝＞？＠ＡＢＣＤＥＦＧＨＩＪＫＬＭＮＯＰＱＲＳＴＵＶＷＸＹＺ［￦］＾＿｀ａｂｃｄｅｆｇｈｉｊｋｌｍｎ������������������ｏｐｑｒｓｔｕｖｗｘｙｚ｛｜｝￣���������������������������������������������������ᅟᄔᄕᇇᇈᇌᇎᇓᇗᇙᄜᇝᇟᄝᄞᄠᄢᄣᄧᄨᄫᄬᄭᄮᄯᄲᄶᅀᅇᅌᅅᅆᅗᅘᅙᆄᆅᆈᆑᆒᆔᆞᆡ�\".split(\"\");\nfor(j = 0; j != D[218].length; ++j) if(D[218][j].charCodeAt(0) !== 0xFFFD) { e[D[218][j]] = 55808 + j; d[55808 + j] = D[218][j];}\nD[219] = \"�������������������������������������������������ⅰⅱⅲⅳⅴⅵⅶⅷⅸⅹ�����ⅠⅡⅢⅣⅤⅥⅦⅧⅨⅩ�������ΑΒΓΔΕΖΗΘΙΚΛΜΝΞΟΠΡΣΤΥΦΧΨΩ��������αβγδεζηθικλμνξ������������������οπρστυφχψω������─│┌┐┘└├┬┤┴┼━┃┏┓┛┗┣┳┫┻╋┠┯┨┷┿┝┰┥┸╂┒┑┚┙┖┕┎┍┞┟┡┢┦┧┩┪┭┮┱┲┵┶┹┺┽┾╀╁╃╄╅╆╇╈╉╊���������������������������\".split(\"\");\nfor(j = 0; j != D[219].length; ++j) if(D[219][j].charCodeAt(0) !== 0xFFFD) { e[D[219][j]] = 56064 + j; d[56064 + j] = D[219][j];}\nD[220] = \"�������������������������������������������������㎕㎖㎗ℓ㎘㏄㎣㎤㎥㎦㎙㎚㎛㎜㎝㎞㎟㎠㎡㎢㏊㎍㎎㎏㏏㎈㎉㏈㎧㎨㎰㎱㎲㎳㎴㎵㎶㎷㎸㎹㎀㎁㎂㎃㎄㎺㎻㎼㎽㎾㎿㎐㎑㎒㎓㎔Ω㏀㏁㎊㎋㎌㏖㏅㎭㎮㎯㏛㎩㎪㎫㎬㏝㏐㏓㏃㏉㏜������������������㏆���������������ÆÐªĦ�Ĳ�ĿŁØŒºÞŦŊ�㉠㉡㉢㉣㉤㉥㉦㉧㉨㉩㉪㉫㉬㉭㉮㉯㉰㉱㉲㉳㉴㉵㉶㉷㉸㉹㉺㉻ⓐⓑⓒⓓⓔⓕⓖⓗⓘⓙⓚⓛⓜⓝⓞⓟⓠⓡⓢⓣⓤⓥⓦⓧⓨⓩ①②③④⑤⑥⑦⑧⑨⑩⑪⑫⑬⑭⑮½⅓⅔¼¾⅛⅜⅝⅞�\".split(\"\");\nfor(j = 0; j != D[220].length; ++j) if(D[220][j].charCodeAt(0) !== 0xFFFD) { e[D[220][j]] = 56320 + j; d[56320 + j] = D[220][j];}\nD[221] = \"�������������������������������������������������æđðħıĳĸŀłøœßþŧŋŉ㈀㈁㈂㈃㈄㈅㈆㈇㈈㈉㈊㈋㈌㈍㈎㈏㈐㈑㈒㈓㈔㈕㈖㈗㈘㈙㈚㈛⒜⒝⒞⒟⒠⒡⒢⒣⒤⒥⒦⒧⒨⒩⒪⒫⒬⒭⒮⒯⒰⒱⒲⒳⒴⒵⑴⑵⑶⑷⑸⑹⑺⑻������������������⑼⑽⑾⑿⒀⒁⒂¹²³⁴ⁿ₁₂₃₄ぁあぃいぅうぇえぉおかがきぎくぐけげこごさざしじすずせぜそぞただちぢっつづてでとどなにぬねのはばぱひびぴふぶぷへべぺほぼぽまみむめもゃやゅゆょよらりるれろゎわゐゑをん������������\".split(\"\");\nfor(j = 0; j != D[221].length; ++j) if(D[221][j].charCodeAt(0) !== 0xFFFD) { e[D[221][j]] = 56576 + j; d[56576 + j] = D[221][j];}\nD[222] = \"�������������������������������������������������ァアィイゥウェエォオカガキギクグケゲコゴサザシジスズセゼソゾタダチヂッツヅテデトドナニヌネノハバパヒビピフブプヘベペホボポマミムメモャヤュユョヨラリルレロヮ������������������ワヰヱヲンヴヵヶ��������АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ���������������абвгдеёжзийклмнопрстуфхцчшщъыьэюя��������������\".split(\"\");\nfor(j = 0; j != D[222].length; ++j) if(D[222][j].charCodeAt(0) !== 0xFFFD) { e[D[222][j]] = 56832 + j; d[56832 + j] = D[222][j];}\nD[224] = \"�������������������������������������������������伽佳假價加可呵哥嘉嫁家暇架枷柯歌珂痂稼苛茄街袈訶賈跏軻迦駕刻却各恪慤殼珏脚覺角閣侃刊墾奸姦干幹懇揀杆柬桿澗癎看磵稈竿簡肝艮艱諫間乫喝曷渴碣竭葛褐蝎鞨勘坎堪嵌������������������感憾戡敢柑橄減甘疳監瞰紺邯鑑鑒龕匣岬甲胛鉀閘剛堈姜岡崗康强彊慷江畺疆糠絳綱羌腔舡薑襁講鋼降鱇介价個凱塏愷愾慨改槪漑疥皆盖箇芥蓋豈鎧開喀客坑更粳羹醵倨去居巨拒据據擧渠炬祛距踞車遽鉅鋸乾件健巾建愆楗腱虔蹇鍵騫乞傑杰桀儉劍劒檢�\".split(\"\");\nfor(j = 0; j != D[224].length; ++j) if(D[224][j].charCodeAt(0) !== 0xFFFD) { e[D[224][j]] = 57344 + j; d[57344 + j] = D[224][j];}\nD[225] = \"�������������������������������������������������瞼鈐黔劫怯迲偈憩揭擊格檄激膈覡隔堅牽犬甄絹繭肩見譴遣鵑抉決潔結缺訣兼慊箝謙鉗鎌京俓倞傾儆勁勍卿坰境庚徑慶憬擎敬景暻更梗涇炅烱璟璥瓊痙硬磬竟競絅經耕耿脛莖警輕������������������逕鏡頃頸驚鯨係啓堺契季屆悸戒桂械棨溪界癸磎稽系繫繼計誡谿階鷄古叩告呱固姑孤尻庫拷攷故敲暠枯槁沽痼皐睾稿羔考股膏苦苽菰藁蠱袴誥賈辜錮雇顧高鼓哭斛曲梏穀谷鵠困坤崑昆梱棍滾琨袞鯤汨滑骨供公共功孔工恐恭拱控攻珙空蚣貢鞏串寡戈果瓜�\".split(\"\");\nfor(j = 0; j != D[225].length; ++j) if(D[225][j].charCodeAt(0) !== 0xFFFD) { e[D[225][j]] = 57600 + j; d[57600 + j] = D[225][j];}\nD[226] = \"�������������������������������������������������科菓誇課跨過鍋顆廓槨藿郭串冠官寬慣棺款灌琯瓘管罐菅觀貫關館刮恝括适侊光匡壙廣曠洸炚狂珖筐胱鑛卦掛罫乖傀塊壞怪愧拐槐魁宏紘肱轟交僑咬喬嬌嶠巧攪敎校橋狡皎矯絞翹������������������膠蕎蛟較轎郊餃驕鮫丘久九仇俱具勾區口句咎嘔坵垢寇嶇廐懼拘救枸柩構歐毆毬求溝灸狗玖球瞿矩究絿耉臼舅舊苟衢謳購軀逑邱鉤銶駒驅鳩鷗龜國局菊鞠鞫麴君窘群裙軍郡堀屈掘窟宮弓穹窮芎躬倦券勸卷圈拳捲權淃眷厥獗蕨蹶闕机櫃潰詭軌饋句晷歸貴�\".split(\"\");\nfor(j = 0; j != D[226].length; ++j) if(D[226][j].charCodeAt(0) !== 0xFFFD) { e[D[226][j]] = 57856 + j; d[57856 + j] = D[226][j];}\nD[227] = \"�������������������������������������������������鬼龜叫圭奎揆槻珪硅窺竅糾葵規赳逵閨勻均畇筠菌鈞龜橘克剋劇戟棘極隙僅劤勤懃斤根槿瑾筋芹菫覲謹近饉契今妗擒昑檎琴禁禽芩衾衿襟金錦伋及急扱汲級給亘兢矜肯企伎其冀嗜������������������器圻基埼夔奇妓寄岐崎己幾忌技旗旣朞期杞棋棄機欺氣汽沂淇玘琦琪璂璣畸畿碁磯祁祇祈祺箕紀綺羈耆耭肌記譏豈起錡錤飢饑騎騏驥麒緊佶吉拮桔金喫儺喇奈娜懦懶拏拿癩羅蘿螺裸邏那樂洛烙珞落諾酪駱亂卵暖欄煖爛蘭難鸞捏捺南嵐枏楠湳濫男藍襤拉�\".split(\"\");\nfor(j = 0; j != D[227].length; ++j) if(D[227][j].charCodeAt(0) !== 0xFFFD) { e[D[227][j]] = 58112 + j; d[58112 + j] = D[227][j];}\nD[228] = \"�������������������������������������������������納臘蠟衲囊娘廊朗浪狼郎乃來內奈柰耐冷女年撚秊念恬拈捻寧寗努勞奴弩怒擄櫓爐瑙盧老蘆虜路露駑魯鷺碌祿綠菉錄鹿論壟弄濃籠聾膿農惱牢磊腦賂雷尿壘屢樓淚漏累縷陋嫩訥杻������������������紐勒肋凜凌稜綾能菱陵尼泥匿溺多茶丹亶但單團壇彖斷旦檀段湍短端簞緞蛋袒鄲鍛撻澾獺疸達啖坍憺擔曇淡湛潭澹痰聃膽蕁覃談譚錟沓畓答踏遝唐堂塘幢戇撞棠當糖螳黨代垈坮大對岱帶待戴擡玳臺袋貸隊黛宅德悳倒刀到圖堵塗導屠島嶋度徒悼挑掉搗桃�\".split(\"\");\nfor(j = 0; j != D[228].length; ++j) if(D[228][j].charCodeAt(0) !== 0xFFFD) { e[D[228][j]] = 58368 + j; d[58368 + j] = D[228][j];}\nD[229] = \"�������������������������������������������������棹櫂淘渡滔濤燾盜睹禱稻萄覩賭跳蹈逃途道都鍍陶韜毒瀆牘犢獨督禿篤纛讀墩惇敦旽暾沌焞燉豚頓乭突仝冬凍動同憧東桐棟洞潼疼瞳童胴董銅兜斗杜枓痘竇荳讀豆逗頭屯臀芚遁遯������������������鈍得嶝橙燈登等藤謄鄧騰喇懶拏癩羅蘿螺裸邏樂洛烙珞絡落諾酪駱丹亂卵欄欒瀾爛蘭鸞剌辣嵐擥攬欖濫籃纜藍襤覽拉臘蠟廊朗浪狼琅瑯螂郞來崍徠萊冷掠略亮倆兩凉梁樑粮粱糧良諒輛量侶儷勵呂廬慮戾旅櫚濾礪藜蠣閭驢驪麗黎力曆歷瀝礫轢靂憐戀攣漣�\".split(\"\");\nfor(j = 0; j != D[229].length; ++j) if(D[229][j].charCodeAt(0) !== 0xFFFD) { e[D[229][j]] = 58624 + j; d[58624 + j] = D[229][j];}\nD[230] = \"�������������������������������������������������煉璉練聯蓮輦連鍊冽列劣洌烈裂廉斂殮濂簾獵令伶囹寧岺嶺怜玲笭羚翎聆逞鈴零靈領齡例澧禮醴隷勞怒撈擄櫓潞瀘爐盧老蘆虜路輅露魯鷺鹵碌祿綠菉錄鹿麓論壟弄朧瀧瓏籠聾儡瀨������������������牢磊賂賚賴雷了僚寮廖料燎療瞭聊蓼遼鬧龍壘婁屢樓淚漏瘻累縷蔞褸鏤陋劉旒柳榴流溜瀏琉瑠留瘤硫謬類六戮陸侖倫崙淪綸輪律慄栗率隆勒肋凜凌楞稜綾菱陵俚利厘吏唎履悧李梨浬犁狸理璃異痢籬罹羸莉裏裡里釐離鯉吝潾燐璘藺躪隣鱗麟林淋琳臨霖砬�\".split(\"\");\nfor(j = 0; j != D[230].length; ++j) if(D[230][j].charCodeAt(0) !== 0xFFFD) { e[D[230][j]] = 58880 + j; d[58880 + j] = D[230][j];}\nD[231] = \"�������������������������������������������������立笠粒摩瑪痲碼磨馬魔麻寞幕漠膜莫邈万卍娩巒彎慢挽晩曼滿漫灣瞞萬蔓蠻輓饅鰻唜抹末沫茉襪靺亡妄忘忙望網罔芒茫莽輞邙埋妹媒寐昧枚梅每煤罵買賣邁魅脈貊陌驀麥孟氓猛盲������������������盟萌冪覓免冕勉棉沔眄眠綿緬面麵滅蔑冥名命明暝椧溟皿瞑茗蓂螟酩銘鳴袂侮冒募姆帽慕摸摹暮某模母毛牟牡瑁眸矛耗芼茅謀謨貌木沐牧目睦穆鶩歿沒夢朦蒙卯墓妙廟描昴杳渺猫竗苗錨務巫憮懋戊拇撫无楙武毋無珷畝繆舞茂蕪誣貿霧鵡墨默們刎吻問文�\".split(\"\");\nfor(j = 0; j != D[231].length; ++j) if(D[231][j].charCodeAt(0) !== 0xFFFD) { e[D[231][j]] = 59136 + j; d[59136 + j] = D[231][j];}\nD[232] = \"�������������������������������������������������汶紊紋聞蚊門雯勿沕物味媚尾嵋彌微未梶楣渼湄眉米美薇謎迷靡黴岷悶愍憫敏旻旼民泯玟珉緡閔密蜜謐剝博拍搏撲朴樸泊珀璞箔粕縛膊舶薄迫雹駁伴半反叛拌搬攀斑槃泮潘班畔瘢������������������盤盼磐磻礬絆般蟠返頒飯勃拔撥渤潑發跋醱鉢髮魃倣傍坊妨尨幇彷房放方旁昉枋榜滂磅紡肪膀舫芳蒡蚌訪謗邦防龐倍俳北培徘拜排杯湃焙盃背胚裴裵褙賠輩配陪伯佰帛柏栢白百魄幡樊煩燔番磻繁蕃藩飜伐筏罰閥凡帆梵氾汎泛犯範范法琺僻劈壁擘檗璧癖�\".split(\"\");\nfor(j = 0; j != D[232].length; ++j) if(D[232][j].charCodeAt(0) !== 0xFFFD) { e[D[232][j]] = 59392 + j; d[59392 + j] = D[232][j];}\nD[233] = \"�������������������������������������������������碧蘗闢霹便卞弁變辨辯邊別瞥鱉鼈丙倂兵屛幷昞昺柄棅炳甁病秉竝輧餠騈保堡報寶普步洑湺潽珤甫菩補褓譜輔伏僕匐卜宓復服福腹茯蔔複覆輹輻馥鰒本乶俸奉封峯峰捧棒烽熢琫縫������������������蓬蜂逢鋒鳳不付俯傅剖副否咐埠夫婦孚孵富府復扶敷斧浮溥父符簿缶腐腑膚艀芙莩訃負賦賻赴趺部釜阜附駙鳧北分吩噴墳奔奮忿憤扮昐汾焚盆粉糞紛芬賁雰不佛弗彿拂崩朋棚硼繃鵬丕備匕匪卑妃婢庇悲憊扉批斐枇榧比毖毗毘沸泌琵痺砒碑秕秘粃緋翡肥�\".split(\"\");\nfor(j = 0; j != D[233].length; ++j) if(D[233][j].charCodeAt(0) !== 0xFFFD) { e[D[233][j]] = 59648 + j; d[59648 + j] = D[233][j];}\nD[234] = \"�������������������������������������������������脾臂菲蜚裨誹譬費鄙非飛鼻嚬嬪彬斌檳殯浜濱瀕牝玭貧賓頻憑氷聘騁乍事些仕伺似使俟僿史司唆嗣四士奢娑寫寺射巳師徙思捨斜斯柶査梭死沙泗渣瀉獅砂社祀祠私篩紗絲肆舍莎蓑������������������蛇裟詐詞謝賜赦辭邪飼駟麝削數朔索傘刪山散汕珊産疝算蒜酸霰乷撒殺煞薩三參杉森渗芟蔘衫揷澁鈒颯上傷像償商喪嘗孀尙峠常床庠廂想桑橡湘爽牀狀相祥箱翔裳觴詳象賞霜塞璽賽嗇塞穡索色牲生甥省笙墅壻嶼序庶徐恕抒捿敍暑曙書栖棲犀瑞筮絮緖署�\".split(\"\");\nfor(j = 0; j != D[234].length; ++j) if(D[234][j].charCodeAt(0) !== 0xFFFD) { e[D[234][j]] = 59904 + j; d[59904 + j] = D[234][j];}\nD[235] = \"�������������������������������������������������胥舒薯西誓逝鋤黍鼠夕奭席惜昔晳析汐淅潟石碩蓆釋錫仙僊先善嬋宣扇敾旋渲煽琁瑄璇璿癬禪線繕羨腺膳船蘚蟬詵跣選銑鐥饍鮮卨屑楔泄洩渫舌薛褻設說雪齧剡暹殲纖蟾贍閃陝攝������������������涉燮葉城姓宬性惺成星晟猩珹盛省筬聖聲腥誠醒世勢歲洗稅笹細說貰召嘯塑宵小少巢所掃搔昭梳沼消溯瀟炤燒甦疏疎瘙笑篠簫素紹蔬蕭蘇訴逍遡邵銷韶騷俗屬束涑粟續謖贖速孫巽損蓀遜飡率宋悚松淞訟誦送頌刷殺灑碎鎖衰釗修受嗽囚垂壽嫂守岫峀帥愁�\".split(\"\");\nfor(j = 0; j != D[235].length; ++j) if(D[235][j].charCodeAt(0) !== 0xFFFD) { e[D[235][j]] = 60160 + j; d[60160 + j] = D[235][j];}\nD[236] = \"�������������������������������������������������戍手授搜收數樹殊水洙漱燧狩獸琇璲瘦睡秀穗竪粹綏綬繡羞脩茱蒐蓚藪袖誰讐輸遂邃酬銖銹隋隧隨雖需須首髓鬚叔塾夙孰宿淑潚熟琡璹肅菽巡徇循恂旬栒楯橓殉洵淳珣盾瞬筍純脣������������������舜荀蓴蕣詢諄醇錞順馴戌術述鉥崇崧嵩瑟膝蝨濕拾習褶襲丞乘僧勝升承昇繩蠅陞侍匙嘶始媤尸屎屍市弑恃施是時枾柴猜矢示翅蒔蓍視試詩諡豕豺埴寔式息拭植殖湜熄篒蝕識軾食飾伸侁信呻娠宸愼新晨燼申神紳腎臣莘薪藎蜃訊身辛辰迅失室實悉審尋心沁�\".split(\"\");\nfor(j = 0; j != D[236].length; ++j) if(D[236][j].charCodeAt(0) !== 0xFFFD) { e[D[236][j]] = 60416 + j; d[60416 + j] = D[236][j];}\nD[237] = \"�������������������������������������������������沈深瀋甚芯諶什十拾雙氏亞俄兒啞娥峨我牙芽莪蛾衙訝阿雅餓鴉鵝堊岳嶽幄惡愕握樂渥鄂鍔顎鰐齷安岸按晏案眼雁鞍顔鮟斡謁軋閼唵岩巖庵暗癌菴闇壓押狎鴨仰央怏昻殃秧鴦厓哀������������������埃崖愛曖涯碍艾隘靄厄扼掖液縊腋額櫻罌鶯鸚也倻冶夜惹揶椰爺耶若野弱掠略約若葯蒻藥躍亮佯兩凉壤孃恙揚攘敭暘梁楊樣洋瀁煬痒瘍禳穰糧羊良襄諒讓釀陽量養圄御於漁瘀禦語馭魚齬億憶抑檍臆偃堰彦焉言諺孼蘖俺儼嚴奄掩淹嶪業円予余勵呂女如廬�\".split(\"\");\nfor(j = 0; j != D[237].length; ++j) if(D[237][j].charCodeAt(0) !== 0xFFFD) { e[D[237][j]] = 60672 + j; d[60672 + j] = D[237][j];}\nD[238] = \"�������������������������������������������������旅歟汝濾璵礖礪與艅茹輿轝閭餘驪麗黎亦力域役易曆歷疫繹譯轢逆驛嚥堧姸娟宴年延憐戀捐挻撚椽沇沿涎涓淵演漣烟然煙煉燃燕璉硏硯秊筵緣練縯聯衍軟輦蓮連鉛鍊鳶列劣咽悅涅������������������烈熱裂說閱厭廉念捻染殮炎焰琰艶苒簾閻髥鹽曄獵燁葉令囹塋寧嶺嶸影怜映暎楹榮永泳渶潁濚瀛瀯煐營獰玲瑛瑩瓔盈穎纓羚聆英詠迎鈴鍈零霙靈領乂倪例刈叡曳汭濊猊睿穢芮藝蘂禮裔詣譽豫醴銳隸霓預五伍俉傲午吾吳嗚塢墺奧娛寤悟惡懊敖旿晤梧汚澳�\".split(\"\");\nfor(j = 0; j != D[238].length; ++j) if(D[238][j].charCodeAt(0) !== 0xFFFD) { e[D[238][j]] = 60928 + j; d[60928 + j] = D[238][j];}\nD[239] = \"�������������������������������������������������烏熬獒筽蜈誤鰲鼇屋沃獄玉鈺溫瑥瘟穩縕蘊兀壅擁瓮甕癰翁邕雍饔渦瓦窩窪臥蛙蝸訛婉完宛梡椀浣玩琓琬碗緩翫脘腕莞豌阮頑曰往旺枉汪王倭娃歪矮外嵬巍猥畏了僚僥凹堯夭妖姚������������������寥寮尿嶢拗搖撓擾料曜樂橈燎燿瑤療窈窯繇繞耀腰蓼蟯要謠遙遼邀饒慾欲浴縟褥辱俑傭冗勇埇墉容庸慂榕涌湧溶熔瑢用甬聳茸蓉踊鎔鏞龍于佑偶優又友右宇寓尤愚憂旴牛玗瑀盂祐禑禹紆羽芋藕虞迂遇郵釪隅雨雩勖彧旭昱栯煜稶郁頊云暈橒殞澐熉耘芸蕓�\".split(\"\");\nfor(j = 0; j != D[239].length; ++j) if(D[239][j].charCodeAt(0) !== 0xFFFD) { e[D[239][j]] = 61184 + j; d[61184 + j] = D[239][j];}\nD[240] = \"�������������������������������������������������運隕雲韻蔚鬱亐熊雄元原員圓園垣媛嫄寃怨愿援沅洹湲源爰猿瑗苑袁轅遠阮院願鴛月越鉞位偉僞危圍委威尉慰暐渭爲瑋緯胃萎葦蔿蝟衛褘謂違韋魏乳侑儒兪劉唯喩孺宥幼幽庾悠惟������������������愈愉揄攸有杻柔柚柳楡楢油洧流游溜濡猶猷琉瑜由留癒硫紐維臾萸裕誘諛諭踰蹂遊逾遺酉釉鍮類六堉戮毓肉育陸倫允奫尹崙淪潤玧胤贇輪鈗閏律慄栗率聿戎瀜絨融隆垠恩慇殷誾銀隱乙吟淫蔭陰音飮揖泣邑凝應膺鷹依倚儀宜意懿擬椅毅疑矣義艤薏蟻衣誼�\".split(\"\");\nfor(j = 0; j != D[240].length; ++j) if(D[240][j].charCodeAt(0) !== 0xFFFD) { e[D[240][j]] = 61440 + j; d[61440 + j] = D[240][j];}\nD[241] = \"�������������������������������������������������議醫二以伊利吏夷姨履已弛彛怡易李梨泥爾珥理異痍痢移罹而耳肄苡荑裏裡貽貳邇里離飴餌匿溺瀷益翊翌翼謚人仁刃印吝咽因姻寅引忍湮燐璘絪茵藺蚓認隣靭靷鱗麟一佚佾壹日溢������������������逸鎰馹任壬妊姙恁林淋稔臨荏賃入卄立笠粒仍剩孕芿仔刺咨姉姿子字孜恣慈滋炙煮玆瓷疵磁紫者自茨蔗藉諮資雌作勺嚼斫昨灼炸爵綽芍酌雀鵲孱棧殘潺盞岑暫潛箴簪蠶雜丈仗匠場墻壯奬將帳庄張掌暲杖樟檣欌漿牆狀獐璋章粧腸臟臧莊葬蔣薔藏裝贓醬長�\".split(\"\");\nfor(j = 0; j != D[241].length; ++j) if(D[241][j].charCodeAt(0) !== 0xFFFD) { e[D[241][j]] = 61696 + j; d[61696 + j] = D[241][j];}\nD[242] = \"�������������������������������������������������障再哉在宰才材栽梓渽滓災縡裁財載齋齎爭箏諍錚佇低儲咀姐底抵杵楮樗沮渚狙猪疽箸紵苧菹著藷詛貯躇這邸雎齟勣吊嫡寂摘敵滴狄炙的積笛籍績翟荻謫賊赤跡蹟迪迹適鏑佃佺傳������������������全典前剪塡塼奠專展廛悛戰栓殿氈澱煎琠田甸畑癲筌箋箭篆纏詮輾轉鈿銓錢鐫電顚顫餞切截折浙癤竊節絶占岾店漸点粘霑鮎點接摺蝶丁井亭停偵呈姃定幀庭廷征情挺政整旌晶晸柾楨檉正汀淀淨渟湞瀞炡玎珽町睛碇禎程穽精綎艇訂諪貞鄭酊釘鉦鋌錠霆靖�\".split(\"\");\nfor(j = 0; j != D[242].length; ++j) if(D[242][j].charCodeAt(0) !== 0xFFFD) { e[D[242][j]] = 61952 + j; d[61952 + j] = D[242][j];}\nD[243] = \"�������������������������������������������������靜頂鼎制劑啼堤帝弟悌提梯濟祭第臍薺製諸蹄醍除際霽題齊俎兆凋助嘲弔彫措操早晁曺曹朝條棗槽漕潮照燥爪璪眺祖祚租稠窕粗糟組繰肇藻蚤詔調趙躁造遭釣阻雕鳥族簇足鏃存尊������������������卒拙猝倧宗從悰慫棕淙琮種終綜縱腫踪踵鍾鐘佐坐左座挫罪主住侏做姝胄呪周嗾奏宙州廚晝朱柱株注洲湊澍炷珠疇籌紂紬綢舟蛛註誅走躊輳週酎酒鑄駐竹粥俊儁准埈寯峻晙樽浚準濬焌畯竣蠢逡遵雋駿茁中仲衆重卽櫛楫汁葺增憎曾拯烝甑症繒蒸證贈之只�\".split(\"\");\nfor(j = 0; j != D[243].length; ++j) if(D[243][j].charCodeAt(0) !== 0xFFFD) { e[D[243][j]] = 62208 + j; d[62208 + j] = D[243][j];}\nD[244] = \"�������������������������������������������������咫地址志持指摯支旨智枝枳止池沚漬知砥祉祗紙肢脂至芝芷蜘誌識贄趾遲直稙稷織職唇嗔塵振搢晉晋桭榛殄津溱珍瑨璡畛疹盡眞瞋秦縉縝臻蔯袗診賑軫辰進鎭陣陳震侄叱姪嫉帙桎������������������瓆疾秩窒膣蛭質跌迭斟朕什執潗緝輯鏶集徵懲澄且侘借叉嗟嵯差次此磋箚茶蹉車遮捉搾着窄錯鑿齪撰澯燦璨瓚竄簒纂粲纘讚贊鑽餐饌刹察擦札紮僭參塹慘慙懺斬站讒讖倉倡創唱娼廠彰愴敞昌昶暢槍滄漲猖瘡窓脹艙菖蒼債埰寀寨彩採砦綵菜蔡采釵冊柵策�\".split(\"\");\nfor(j = 0; j != D[244].length; ++j) if(D[244][j].charCodeAt(0) !== 0xFFFD) { e[D[244][j]] = 62464 + j; d[62464 + j] = D[244][j];}\nD[245] = \"�������������������������������������������������責凄妻悽處倜刺剔尺慽戚拓擲斥滌瘠脊蹠陟隻仟千喘天川擅泉淺玔穿舛薦賤踐遷釧闡阡韆凸哲喆徹撤澈綴輟轍鐵僉尖沾添甛瞻簽籤詹諂堞妾帖捷牒疊睫諜貼輒廳晴淸聽菁請靑鯖切������������������剃替涕滯締諦逮遞體初剿哨憔抄招梢椒楚樵炒焦硝礁礎秒稍肖艸苕草蕉貂超酢醋醮促囑燭矗蜀觸寸忖村邨叢塚寵悤憁摠總聰蔥銃撮催崔最墜抽推椎楸樞湫皺秋芻萩諏趨追鄒酋醜錐錘鎚雛騶鰍丑畜祝竺筑築縮蓄蹙蹴軸逐春椿瑃出朮黜充忠沖蟲衝衷悴膵萃�\".split(\"\");\nfor(j = 0; j != D[245].length; ++j) if(D[245][j].charCodeAt(0) !== 0xFFFD) { e[D[245][j]] = 62720 + j; d[62720 + j] = D[245][j];}\nD[246] = \"�������������������������������������������������贅取吹嘴娶就炊翠聚脆臭趣醉驟鷲側仄厠惻測層侈値嗤峙幟恥梔治淄熾痔痴癡稚穉緇緻置致蚩輜雉馳齒則勅飭親七柒漆侵寢枕沈浸琛砧針鍼蟄秤稱快他咤唾墮妥惰打拖朶楕舵陀馱������������������駝倬卓啄坼度托拓擢晫柝濁濯琢琸託鐸呑嘆坦彈憚歎灘炭綻誕奪脫探眈耽貪塔搭榻宕帑湯糖蕩兌台太怠態殆汰泰笞胎苔跆邰颱宅擇澤撑攄兎吐土討慟桶洞痛筒統通堆槌腿褪退頹偸套妬投透鬪慝特闖坡婆巴把播擺杷波派爬琶破罷芭跛頗判坂板版瓣販辦鈑�\".split(\"\");\nfor(j = 0; j != D[246].length; ++j) if(D[246][j].charCodeAt(0) !== 0xFFFD) { e[D[246][j]] = 62976 + j; d[62976 + j] = D[246][j];}\nD[247] = \"�������������������������������������������������阪八叭捌佩唄悖敗沛浿牌狽稗覇貝彭澎烹膨愎便偏扁片篇編翩遍鞭騙貶坪平枰萍評吠嬖幣廢弊斃肺蔽閉陛佈包匍匏咆哺圃布怖抛抱捕暴泡浦疱砲胞脯苞葡蒲袍褒逋鋪飽鮑幅暴曝瀑������������������爆輻俵剽彪慓杓標漂瓢票表豹飇飄驃品稟楓諷豊風馮彼披疲皮被避陂匹弼必泌珌畢疋筆苾馝乏逼下何厦夏廈昰河瑕荷蝦賀遐霞鰕壑學虐謔鶴寒恨悍旱汗漢澣瀚罕翰閑閒限韓割轄函含咸啣喊檻涵緘艦銜陷鹹合哈盒蛤閤闔陜亢伉姮嫦巷恒抗杭桁沆港缸肛航�\".split(\"\");\nfor(j = 0; j != D[247].length; ++j) if(D[247][j].charCodeAt(0) !== 0xFFFD) { e[D[247][j]] = 63232 + j; d[63232 + j] = D[247][j];}\nD[248] = \"�������������������������������������������������行降項亥偕咳垓奚孩害懈楷海瀣蟹解該諧邂駭骸劾核倖幸杏荇行享向嚮珦鄕響餉饗香噓墟虛許憲櫶獻軒歇險驗奕爀赫革俔峴弦懸晛泫炫玄玹現眩睍絃絢縣舷衒見賢鉉顯孑穴血頁嫌������������������俠協夾峽挾浹狹脅脇莢鋏頰亨兄刑型形泂滎瀅灐炯熒珩瑩荊螢衡逈邢鎣馨兮彗惠慧暳蕙蹊醯鞋乎互呼壕壺好岵弧戶扈昊晧毫浩淏湖滸澔濠濩灝狐琥瑚瓠皓祜糊縞胡芦葫蒿虎號蝴護豪鎬頀顥惑或酷婚昏混渾琿魂忽惚笏哄弘汞泓洪烘紅虹訌鴻化和嬅樺火畵�\".split(\"\");\nfor(j = 0; j != D[248].length; ++j) if(D[248][j].charCodeAt(0) !== 0xFFFD) { e[D[248][j]] = 63488 + j; d[63488 + j] = D[248][j];}\nD[249] = \"�������������������������������������������������禍禾花華話譁貨靴廓擴攫確碻穫丸喚奐宦幻患換歡晥桓渙煥環紈還驩鰥活滑猾豁闊凰幌徨恍惶愰慌晃晄榥況湟滉潢煌璜皇篁簧荒蝗遑隍黃匯回廻徊恢悔懷晦會檜淮澮灰獪繪膾茴蛔������������������誨賄劃獲宖橫鐄哮嚆孝效斅曉梟涍淆爻肴酵驍侯候厚后吼喉嗅帿後朽煦珝逅勛勳塤壎焄熏燻薰訓暈薨喧暄煊萱卉喙毁彙徽揮暉煇諱輝麾休携烋畦虧恤譎鷸兇凶匈洶胸黑昕欣炘痕吃屹紇訖欠欽歆吸恰洽翕興僖凞喜噫囍姬嬉希憙憘戱晞曦熙熹熺犧禧稀羲詰�\".split(\"\");\nfor(j = 0; j != D[249].length; ++j) if(D[249][j].charCodeAt(0) !== 0xFFFD) { e[D[249][j]] = 63744 + j; d[63744 + j] = D[249][j];}\nreturn {\"enc\": e, \"dec\": d }; })();\ncptable[10001] = (function(){ var d = [], e = {}, D = [], j;\nD[0] = \"\\u0000\\u0001\\u0002\\u0003\\u0004\\u0005\\u0006\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\u0014\\u0015\\u0016\\u0017\\u0018\\u0019\\u001a\\u001b\\u001c\\u001d\\u001e\\u001f !\\\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~������������������������������� ｡｢｣､･ｦｧｨｩｪｫｬｭｮｯｰｱｲｳｴｵｶｷｸｹｺｻｼｽｾｿﾀﾁﾂﾃﾄﾅﾆﾇﾈﾉﾊﾋﾌﾍﾎﾏﾐﾑﾒﾓﾔﾕﾖﾗﾘﾙﾚﾛﾜﾝﾞﾟ�����������������������������©™�\".split(\"\");\nfor(j = 0; j != D[0].length; ++j) if(D[0][j].charCodeAt(0) !== 0xFFFD) { e[D[0][j]] = 0 + j; d[0 + j] = D[0][j];}\nD[129] = \"����������������������������������������������������������������　、。，．・：；？！゛゜´｀¨＾￣＿ヽヾゝゞ〃仝々〆〇ー―‐／＼～∥｜…‥‘’“”（）〔〕［］｛｝〈〉《》「」『』【】＋－±×�÷＝≠＜＞≦≧∞∴♂♀°′″℃￥＄￠￡％＃＆＊＠§☆★○●◎◇◆□■△▲▽▼※〒→←↑↓〓�����������∈∋⊆⊇⊂⊃∪∩��������∧∨￢⇒⇔∀∃�����������∠⊥⌒∂∇≡≒≪≫√∽∝∵∫∬�������Å‰♯♭♪†‡¶����◯���\".split(\"\");\nfor(j = 0; j != D[129].length; ++j) if(D[129][j].charCodeAt(0) !== 0xFFFD) { e[D[129][j]] = 33024 + j; d[33024 + j] = D[129][j];}\nD[130] = \"�������������������������������������������������������������������������������０１２３４５６７８９�������ＡＢＣＤＥＦＧＨＩＪＫＬＭＮＯＰＱＲＳＴＵＶＷＸＹＺ�������ａｂｃｄｅｆｇｈｉｊｋｌｍｎｏｐｑｒｓｔｕｖｗｘｙｚ����ぁあぃいぅうぇえぉおかがきぎくぐけげこごさざしじすずせぜそぞただちぢっつづてでとどなにぬねのはばぱひびぴふぶぷへべぺほぼぽまみむめもゃやゅゆょよらりるれろゎわゐゑをん��������������\".split(\"\");\nfor(j = 0; j != D[130].length; ++j) if(D[130][j].charCodeAt(0) !== 0xFFFD) { e[D[130][j]] = 33280 + j; d[33280 + j] = D[130][j];}\nD[131] = \"����������������������������������������������������������������ァアィイゥウェエォオカガキギクグケゲコゴサザシジスズセゼソゾタダチヂッツヅテデトドナニヌネノハバパヒビピフブプヘベペホボポマミ�ムメモャヤュユョヨラリルレロヮワヰヱヲンヴヵヶ��������ΑΒΓΔΕΖΗΘΙΚΛΜΝΞΟΠΡΣΤΥΦΧΨΩ��������αβγδεζηθικλμνξοπρστυφχψω�����������������������������������������\".split(\"\");\nfor(j = 0; j != D[131].length; ++j) if(D[131][j].charCodeAt(0) !== 0xFFFD) { e[D[131][j]] = 33536 + j; d[33536 + j] = D[131][j];}\nD[132] = \"����������������������������������������������������������������АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ���������������абвгдеёжзийклмн�опрстуфхцчшщъыьэюя�������������─│┌┐┘└├┬┤┴┼━┃┏┓┛┗┣┳┫┻╋┠┯┨┷┿┝┰┥┸╂�����������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[132].length; ++j) if(D[132][j].charCodeAt(0) !== 0xFFFD) { e[D[132][j]] = 33792 + j; d[33792 + j] = D[132][j];}\nD[133] = \"����������������������������������������������������������������①②③④⑤⑥⑦⑧⑨⑩⑪⑫⑬⑭⑮⑯⑰⑱⑲⑳���������������������������������������������������������������������������ⅠⅡⅢⅣⅤⅥⅦⅧⅨⅩ����������ⅰⅱⅲⅳⅴⅵⅶⅷⅸⅹ�������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[133].length; ++j) if(D[133][j].charCodeAt(0) !== 0xFFFD) { e[D[133][j]] = 34048 + j; d[34048 + j] = D[133][j];}\nD[134] = \"����������������������������������������������������������������㎜�㎝���㎡�㎞�㎎�㎏㏄�����������������������������������������������������������������������������№㏍℡��������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[134].length; ++j) if(D[134][j].charCodeAt(0) !== 0xFFFD) { e[D[134][j]] = 34304 + j; d[34304 + j] = D[134][j];}\nD[135] = \"���������������������������������������������������������������������������㈹�㈱��㈲�����������������������������������������������〝〟�����������������㊤㊥㊦㊧㊨�������㍉㌢㍍㌔����㌃㌶㌘�㌧㍑㍊�㍗㌍�㌣㌦㌻㌫�����������������������������������������������㍾㍽㍼㍻�����������������������\".split(\"\");\nfor(j = 0; j != D[135].length; ++j) if(D[135][j].charCodeAt(0) !== 0xFFFD) { e[D[135][j]] = 34560 + j; d[34560 + j] = D[135][j];}\nD[136] = \"����������������������������������������������������������������∮∟⊿��������������������������������������������������������������������������������������������亜唖娃阿哀愛挨姶逢葵茜穐悪握渥旭葦芦鯵梓圧斡扱宛姐虻飴絢綾鮎或粟袷安庵按暗案闇鞍杏以伊位依偉囲夷委威尉惟意慰易椅為畏異移維緯胃萎衣謂違遺医井亥域育郁磯一壱溢逸稲茨芋鰯允印咽員因姻引飲淫胤蔭���\".split(\"\");\nfor(j = 0; j != D[136].length; ++j) if(D[136][j].charCodeAt(0) !== 0xFFFD) { e[D[136][j]] = 34816 + j; d[34816 + j] = D[136][j];}\nD[137] = \"����������������������������������������������������������������院陰隠韻吋右宇烏羽迂雨卯鵜窺丑碓臼渦嘘唄欝蔚鰻姥厩浦瓜閏噂云運雲荏餌叡営嬰影映曳栄永泳洩瑛盈穎頴英衛詠鋭液疫益駅悦謁越閲榎厭円�園堰奄宴延怨掩援沿演炎焔煙燕猿縁艶苑薗遠鉛鴛塩於汚甥凹央奥往応押旺横欧殴王翁襖鴬鴎黄岡沖荻億屋憶臆桶牡乙俺卸恩温穏音下化仮何伽価佳加可嘉夏嫁家寡科暇果架歌河火珂禍禾稼箇花苛茄荷華菓蝦課嘩貨迦過霞蚊俄峨我牙画臥芽蛾賀雅餓駕介会解回塊壊廻快怪悔恢懐戒拐改���\".split(\"\");\nfor(j = 0; j != D[137].length; ++j) if(D[137][j].charCodeAt(0) !== 0xFFFD) { e[D[137][j]] = 35072 + j; d[35072 + j] = D[137][j];}\nD[138] = \"����������������������������������������������������������������魁晦械海灰界皆絵芥蟹開階貝凱劾外咳害崖慨概涯碍蓋街該鎧骸浬馨蛙垣柿蛎鈎劃嚇各廓拡撹格核殻獲確穫覚角赫較郭閣隔革学岳楽額顎掛笠樫�橿梶鰍潟割喝恰括活渇滑葛褐轄且鰹叶椛樺鞄株兜竃蒲釜鎌噛鴨栢茅萱粥刈苅瓦乾侃冠寒刊勘勧巻喚堪姦完官寛干幹患感慣憾換敢柑桓棺款歓汗漢澗潅環甘監看竿管簡緩缶翰肝艦莞観諌貫還鑑間閑関陥韓館舘丸含岸巌玩癌眼岩翫贋雁頑顔願企伎危喜器基奇嬉寄岐希幾忌揮机旗既期棋棄���\".split(\"\");\nfor(j = 0; j != D[138].length; ++j) if(D[138][j].charCodeAt(0) !== 0xFFFD) { e[D[138][j]] = 35328 + j; d[35328 + j] = D[138][j];}\nD[139] = \"����������������������������������������������������������������機帰毅気汽畿祈季稀紀徽規記貴起軌輝飢騎鬼亀偽儀妓宜戯技擬欺犠疑祇義蟻誼議掬菊鞠吉吃喫桔橘詰砧杵黍却客脚虐逆丘久仇休及吸宮弓急救�朽求汲泣灸球究窮笈級糾給旧牛去居巨拒拠挙渠虚許距鋸漁禦魚亨享京供侠僑兇競共凶協匡卿叫喬境峡強彊怯恐恭挟教橋況狂狭矯胸脅興蕎郷鏡響饗驚仰凝尭暁業局曲極玉桐粁僅勤均巾錦斤欣欽琴禁禽筋緊芹菌衿襟謹近金吟銀九倶句区狗玖矩苦躯駆駈駒具愚虞喰空偶寓遇隅串櫛釧屑屈���\".split(\"\");\nfor(j = 0; j != D[139].length; ++j) if(D[139][j].charCodeAt(0) !== 0xFFFD) { e[D[139][j]] = 35584 + j; d[35584 + j] = D[139][j];}\nD[140] = \"����������������������������������������������������������������掘窟沓靴轡窪熊隈粂栗繰桑鍬勲君薫訓群軍郡卦袈祁係傾刑兄啓圭珪型契形径恵慶慧憩掲携敬景桂渓畦稽系経継繋罫茎荊蛍計詣警軽頚鶏芸迎鯨�劇戟撃激隙桁傑欠決潔穴結血訣月件倹倦健兼券剣喧圏堅嫌建憲懸拳捲検権牽犬献研硯絹県肩見謙賢軒遣鍵険顕験鹸元原厳幻弦減源玄現絃舷言諺限乎個古呼固姑孤己庫弧戸故枯湖狐糊袴股胡菰虎誇跨鈷雇顧鼓五互伍午呉吾娯後御悟梧檎瑚碁語誤護醐乞鯉交佼侯候倖光公功効勾厚口向���\".split(\"\");\nfor(j = 0; j != D[140].length; ++j) if(D[140][j].charCodeAt(0) !== 0xFFFD) { e[D[140][j]] = 35840 + j; d[35840 + j] = D[140][j];}\nD[141] = \"����������������������������������������������������������������后喉坑垢好孔孝宏工巧巷幸広庚康弘恒慌抗拘控攻昂晃更杭校梗構江洪浩港溝甲皇硬稿糠紅紘絞綱耕考肯肱腔膏航荒行衡講貢購郊酵鉱砿鋼閤降�項香高鴻剛劫号合壕拷濠豪轟麹克刻告国穀酷鵠黒獄漉腰甑忽惚骨狛込此頃今困坤墾婚恨懇昏昆根梱混痕紺艮魂些佐叉唆嵯左差査沙瑳砂詐鎖裟坐座挫債催再最哉塞妻宰彩才採栽歳済災采犀砕砦祭斎細菜裁載際剤在材罪財冴坂阪堺榊肴咲崎埼碕鷺作削咋搾昨朔柵窄策索錯桜鮭笹匙冊刷���\".split(\"\");\nfor(j = 0; j != D[141].length; ++j) if(D[141][j].charCodeAt(0) !== 0xFFFD) { e[D[141][j]] = 36096 + j; d[36096 + j] = D[141][j];}\nD[142] = \"����������������������������������������������������������������察拶撮擦札殺薩雑皐鯖捌錆鮫皿晒三傘参山惨撒散桟燦珊産算纂蚕讃賛酸餐斬暫残仕仔伺使刺司史嗣四士始姉姿子屍市師志思指支孜斯施旨枝止�死氏獅祉私糸紙紫肢脂至視詞詩試誌諮資賜雌飼歯事似侍児字寺慈持時次滋治爾璽痔磁示而耳自蒔辞汐鹿式識鴫竺軸宍雫七叱執失嫉室悉湿漆疾質実蔀篠偲柴芝屡蕊縞舎写射捨赦斜煮社紗者謝車遮蛇邪借勺尺杓灼爵酌釈錫若寂弱惹主取守手朱殊狩珠種腫趣酒首儒受呪寿授樹綬需囚収周���\".split(\"\");\nfor(j = 0; j != D[142].length; ++j) if(D[142][j].charCodeAt(0) !== 0xFFFD) { e[D[142][j]] = 36352 + j; d[36352 + j] = D[142][j];}\nD[143] = \"����������������������������������������������������������������宗就州修愁拾洲秀秋終繍習臭舟蒐衆襲讐蹴輯週酋酬集醜什住充十従戎柔汁渋獣縦重銃叔夙宿淑祝縮粛塾熟出術述俊峻春瞬竣舜駿准循旬楯殉淳�準潤盾純巡遵醇順処初所暑曙渚庶緒署書薯藷諸助叙女序徐恕鋤除傷償勝匠升召哨商唱嘗奨妾娼宵将小少尚庄床廠彰承抄招掌捷昇昌昭晶松梢樟樵沼消渉湘焼焦照症省硝礁祥称章笑粧紹肖菖蒋蕉衝裳訟証詔詳象賞醤鉦鍾鐘障鞘上丈丞乗冗剰城場壌嬢常情擾条杖浄状畳穣蒸譲醸錠嘱埴飾���\".split(\"\");\nfor(j = 0; j != D[143].length; ++j) if(D[143][j].charCodeAt(0) !== 0xFFFD) { e[D[143][j]] = 36608 + j; d[36608 + j] = D[143][j];}\nD[144] = \"����������������������������������������������������������������拭植殖燭織職色触食蝕辱尻伸信侵唇娠寝審心慎振新晋森榛浸深申疹真神秦紳臣芯薪親診身辛進針震人仁刃塵壬尋甚尽腎訊迅陣靭笥諏須酢図厨�逗吹垂帥推水炊睡粋翠衰遂酔錐錘随瑞髄崇嵩数枢趨雛据杉椙菅頗雀裾澄摺寸世瀬畝是凄制勢姓征性成政整星晴棲栖正清牲生盛精聖声製西誠誓請逝醒青静斉税脆隻席惜戚斥昔析石積籍績脊責赤跡蹟碩切拙接摂折設窃節説雪絶舌蝉仙先千占宣専尖川戦扇撰栓栴泉浅洗染潜煎煽旋穿箭線���\".split(\"\");\nfor(j = 0; j != D[144].length; ++j) if(D[144][j].charCodeAt(0) !== 0xFFFD) { e[D[144][j]] = 36864 + j; d[36864 + j] = D[144][j];}\nD[145] = \"����������������������������������������������������������������繊羨腺舛船薦詮賎践選遷銭銑閃鮮前善漸然全禅繕膳糎噌塑岨措曾曽楚狙疏疎礎祖租粗素組蘇訴阻遡鼠僧創双叢倉喪壮奏爽宋層匝惣想捜掃挿掻�操早曹巣槍槽漕燥争痩相窓糟総綜聡草荘葬蒼藻装走送遭鎗霜騒像増憎臓蔵贈造促側則即息捉束測足速俗属賊族続卒袖其揃存孫尊損村遜他多太汰詑唾堕妥惰打柁舵楕陀駄騨体堆対耐岱帯待怠態戴替泰滞胎腿苔袋貸退逮隊黛鯛代台大第醍題鷹滝瀧卓啄宅托択拓沢濯琢託鐸濁諾茸凧蛸只���\".split(\"\");\nfor(j = 0; j != D[145].length; ++j) if(D[145][j].charCodeAt(0) !== 0xFFFD) { e[D[145][j]] = 37120 + j; d[37120 + j] = D[145][j];}\nD[146] = \"����������������������������������������������������������������叩但達辰奪脱巽竪辿棚谷狸鱈樽誰丹単嘆坦担探旦歎淡湛炭短端箪綻耽胆蛋誕鍛団壇弾断暖檀段男談値知地弛恥智池痴稚置致蜘遅馳築畜竹筑蓄�逐秩窒茶嫡着中仲宙忠抽昼柱注虫衷註酎鋳駐樗瀦猪苧著貯丁兆凋喋寵帖帳庁弔張彫徴懲挑暢朝潮牒町眺聴脹腸蝶調諜超跳銚長頂鳥勅捗直朕沈珍賃鎮陳津墜椎槌追鎚痛通塚栂掴槻佃漬柘辻蔦綴鍔椿潰坪壷嬬紬爪吊釣鶴亭低停偵剃貞呈堤定帝底庭廷弟悌抵挺提梯汀碇禎程締艇訂諦蹄逓���\".split(\"\");\nfor(j = 0; j != D[146].length; ++j) if(D[146][j].charCodeAt(0) !== 0xFFFD) { e[D[146][j]] = 37376 + j; d[37376 + j] = D[146][j];}\nD[147] = \"����������������������������������������������������������������邸鄭釘鼎泥摘擢敵滴的笛適鏑溺哲徹撤轍迭鉄典填天展店添纏甜貼転顛点伝殿澱田電兎吐堵塗妬屠徒斗杜渡登菟賭途都鍍砥砺努度土奴怒倒党冬�凍刀唐塔塘套宕島嶋悼投搭東桃梼棟盗淘湯涛灯燈当痘祷等答筒糖統到董蕩藤討謄豆踏逃透鐙陶頭騰闘働動同堂導憧撞洞瞳童胴萄道銅峠鴇匿得徳涜特督禿篤毒独読栃橡凸突椴届鳶苫寅酉瀞噸屯惇敦沌豚遁頓呑曇鈍奈那内乍凪薙謎灘捺鍋楢馴縄畷南楠軟難汝二尼弐迩匂賑肉虹廿日乳入���\".split(\"\");\nfor(j = 0; j != D[147].length; ++j) if(D[147][j].charCodeAt(0) !== 0xFFFD) { e[D[147][j]] = 37632 + j; d[37632 + j] = D[147][j];}\nD[148] = \"����������������������������������������������������������������如尿韮任妊忍認濡禰祢寧葱猫熱年念捻撚燃粘乃廼之埜嚢悩濃納能脳膿農覗蚤巴把播覇杷波派琶破婆罵芭馬俳廃拝排敗杯盃牌背肺輩配倍培媒梅�楳煤狽買売賠陪這蝿秤矧萩伯剥博拍柏泊白箔粕舶薄迫曝漠爆縛莫駁麦函箱硲箸肇筈櫨幡肌畑畠八鉢溌発醗髪伐罰抜筏閥鳩噺塙蛤隼伴判半反叛帆搬斑板氾汎版犯班畔繁般藩販範釆煩頒飯挽晩番盤磐蕃蛮匪卑否妃庇彼悲扉批披斐比泌疲皮碑秘緋罷肥被誹費避非飛樋簸備尾微枇毘琵眉美���\".split(\"\");\nfor(j = 0; j != D[148].length; ++j) if(D[148][j].charCodeAt(0) !== 0xFFFD) { e[D[148][j]] = 37888 + j; d[37888 + j] = D[148][j];}\nD[149] = \"����������������������������������������������������������������鼻柊稗匹疋髭彦膝菱肘弼必畢筆逼桧姫媛紐百謬俵彪標氷漂瓢票表評豹廟描病秒苗錨鋲蒜蛭鰭品彬斌浜瀕貧賓頻敏瓶不付埠夫婦富冨布府怖扶敷�斧普浮父符腐膚芙譜負賦赴阜附侮撫武舞葡蕪部封楓風葺蕗伏副復幅服福腹複覆淵弗払沸仏物鮒分吻噴墳憤扮焚奮粉糞紛雰文聞丙併兵塀幣平弊柄並蔽閉陛米頁僻壁癖碧別瞥蔑箆偏変片篇編辺返遍便勉娩弁鞭保舗鋪圃捕歩甫補輔穂募墓慕戊暮母簿菩倣俸包呆報奉宝峰峯崩庖抱捧放方朋���\".split(\"\");\nfor(j = 0; j != D[149].length; ++j) if(D[149][j].charCodeAt(0) !== 0xFFFD) { e[D[149][j]] = 38144 + j; d[38144 + j] = D[149][j];}\nD[150] = \"����������������������������������������������������������������法泡烹砲縫胞芳萌蓬蜂褒訪豊邦鋒飽鳳鵬乏亡傍剖坊妨帽忘忙房暴望某棒冒紡肪膨謀貌貿鉾防吠頬北僕卜墨撲朴牧睦穆釦勃没殆堀幌奔本翻凡盆�摩磨魔麻埋妹昧枚毎哩槙幕膜枕鮪柾鱒桝亦俣又抹末沫迄侭繭麿万慢満漫蔓味未魅巳箕岬密蜜湊蓑稔脈妙粍民眠務夢無牟矛霧鵡椋婿娘冥名命明盟迷銘鳴姪牝滅免棉綿緬面麺摸模茂妄孟毛猛盲網耗蒙儲木黙目杢勿餅尤戻籾貰問悶紋門匁也冶夜爺耶野弥矢厄役約薬訳躍靖柳薮鑓愉愈油癒���\".split(\"\");\nfor(j = 0; j != D[150].length; ++j) if(D[150][j].charCodeAt(0) !== 0xFFFD) { e[D[150][j]] = 38400 + j; d[38400 + j] = D[150][j];}\nD[151] = \"����������������������������������������������������������������諭輸唯佑優勇友宥幽悠憂揖有柚湧涌猶猷由祐裕誘遊邑郵雄融夕予余与誉輿預傭幼妖容庸揚揺擁曜楊様洋溶熔用窯羊耀葉蓉要謡踊遥陽養慾抑欲�沃浴翌翼淀羅螺裸来莱頼雷洛絡落酪乱卵嵐欄濫藍蘭覧利吏履李梨理璃痢裏裡里離陸律率立葎掠略劉流溜琉留硫粒隆竜龍侶慮旅虜了亮僚両凌寮料梁涼猟療瞭稜糧良諒遼量陵領力緑倫厘林淋燐琳臨輪隣鱗麟瑠塁涙累類令伶例冷励嶺怜玲礼苓鈴隷零霊麗齢暦歴列劣烈裂廉恋憐漣煉簾練聯���\".split(\"\");\nfor(j = 0; j != D[151].length; ++j) if(D[151][j].charCodeAt(0) !== 0xFFFD) { e[D[151][j]] = 38656 + j; d[38656 + j] = D[151][j];}\nD[152] = \"����������������������������������������������������������������蓮連錬呂魯櫓炉賂路露労婁廊弄朗楼榔浪漏牢狼篭老聾蝋郎六麓禄肋録論倭和話歪賄脇惑枠鷲亙亘鰐詫藁蕨椀湾碗腕��������������������������������������������弌丐丕个丱丶丼丿乂乖乘亂亅豫亊舒弍于亞亟亠亢亰亳亶从仍仄仆仂仗仞仭仟价伉佚估佛佝佗佇佶侈侏侘佻佩佰侑佯來侖儘俔俟俎俘俛俑俚俐俤俥倚倨倔倪倥倅伜俶倡倩倬俾俯們倆偃假會偕偐偈做偖偬偸傀傚傅傴傲���\".split(\"\");\nfor(j = 0; j != D[152].length; ++j) if(D[152][j].charCodeAt(0) !== 0xFFFD) { e[D[152][j]] = 38912 + j; d[38912 + j] = D[152][j];}\nD[153] = \"����������������������������������������������������������������僉僊傳僂僖僞僥僭僣僮價僵儉儁儂儖儕儔儚儡儺儷儼儻儿兀兒兌兔兢竸兩兪兮冀冂囘册冉冏冑冓冕冖冤冦冢冩冪冫决冱冲冰况冽凅凉凛几處凩凭�凰凵凾刄刋刔刎刧刪刮刳刹剏剄剋剌剞剔剪剴剩剳剿剽劍劔劒剱劈劑辨辧劬劭劼劵勁勍勗勞勣勦飭勠勳勵勸勹匆匈甸匍匐匏匕匚匣匯匱匳匸區卆卅丗卉卍凖卞卩卮夘卻卷厂厖厠厦厥厮厰厶參簒雙叟曼燮叮叨叭叺吁吽呀听吭吼吮吶吩吝呎咏呵咎呟呱呷呰咒呻咀呶咄咐咆哇咢咸咥咬哄哈咨���\".split(\"\");\nfor(j = 0; j != D[153].length; ++j) if(D[153][j].charCodeAt(0) !== 0xFFFD) { e[D[153][j]] = 39168 + j; d[39168 + j] = D[153][j];}\nD[154] = \"����������������������������������������������������������������咫哂咤咾咼哘哥哦唏唔哽哮哭哺哢唹啀啣啌售啜啅啖啗唸唳啝喙喀咯喊喟啻啾喘喞單啼喃喩喇喨嗚嗅嗟嗄嗜嗤嗔嘔嗷嘖嗾嗽嘛嗹噎噐營嘴嘶嘲嘸�噫噤嘯噬噪嚆嚀嚊嚠嚔嚏嚥嚮嚶嚴囂嚼囁囃囀囈囎囑囓囗囮囹圀囿圄圉圈國圍圓團圖嗇圜圦圷圸坎圻址坏坩埀垈坡坿垉垓垠垳垤垪垰埃埆埔埒埓堊埖埣堋堙堝塲堡塢塋塰毀塒堽塹墅墹墟墫墺壞墻墸墮壅壓壑壗壙壘壥壜壤壟壯壺壹壻壼壽夂夊夐夛梦夥夬夭夲夸夾竒奕奐奎奚奘奢奠奧奬奩���\".split(\"\");\nfor(j = 0; j != D[154].length; ++j) if(D[154][j].charCodeAt(0) !== 0xFFFD) { e[D[154][j]] = 39424 + j; d[39424 + j] = D[154][j];}\nD[155] = \"����������������������������������������������������������������奸妁妝佞侫妣妲姆姨姜妍姙姚娥娟娑娜娉娚婀婬婉娵娶婢婪媚媼媾嫋嫂媽嫣嫗嫦嫩嫖嫺嫻嬌嬋嬖嬲嫐嬪嬶嬾孃孅孀孑孕孚孛孥孩孰孳孵學斈孺宀�它宦宸寃寇寉寔寐寤實寢寞寥寫寰寶寳尅將專對尓尠尢尨尸尹屁屆屎屓屐屏孱屬屮乢屶屹岌岑岔妛岫岻岶岼岷峅岾峇峙峩峽峺峭嶌峪崋崕崗嵜崟崛崑崔崢崚崙崘嵌嵒嵎嵋嵬嵳嵶嶇嶄嶂嶢嶝嶬嶮嶽嶐嶷嶼巉巍巓巒巖巛巫已巵帋帚帙帑帛帶帷幄幃幀幎幗幔幟幢幤幇幵并幺麼广庠廁廂廈廐廏���\".split(\"\");\nfor(j = 0; j != D[155].length; ++j) if(D[155][j].charCodeAt(0) !== 0xFFFD) { e[D[155][j]] = 39680 + j; d[39680 + j] = D[155][j];}\nD[156] = \"����������������������������������������������������������������廖廣廝廚廛廢廡廨廩廬廱廳廰廴廸廾弃弉彝彜弋弑弖弩弭弸彁彈彌彎弯彑彖彗彙彡彭彳彷徃徂彿徊很徑徇從徙徘徠徨徭徼忖忻忤忸忱忝悳忿怡恠�怙怐怩怎怱怛怕怫怦怏怺恚恁恪恷恟恊恆恍恣恃恤恂恬恫恙悁悍惧悃悚悄悛悖悗悒悧悋惡悸惠惓悴忰悽惆悵惘慍愕愆惶惷愀惴惺愃愡惻惱愍愎慇愾愨愧慊愿愼愬愴愽慂慄慳慷慘慙慚慫慴慯慥慱慟慝慓慵憙憖憇憬憔憚憊憑憫憮懌懊應懷懈懃懆憺懋罹懍懦懣懶懺懴懿懽懼懾戀戈戉戍戌戔戛���\".split(\"\");\nfor(j = 0; j != D[156].length; ++j) if(D[156][j].charCodeAt(0) !== 0xFFFD) { e[D[156][j]] = 39936 + j; d[39936 + j] = D[156][j];}\nD[157] = \"����������������������������������������������������������������戞戡截戮戰戲戳扁扎扞扣扛扠扨扼抂抉找抒抓抖拔抃抔拗拑抻拏拿拆擔拈拜拌拊拂拇抛拉挌拮拱挧挂挈拯拵捐挾捍搜捏掖掎掀掫捶掣掏掉掟掵捫�捩掾揩揀揆揣揉插揶揄搖搴搆搓搦搶攝搗搨搏摧摯摶摎攪撕撓撥撩撈撼據擒擅擇撻擘擂擱擧舉擠擡抬擣擯攬擶擴擲擺攀擽攘攜攅攤攣攫攴攵攷收攸畋效敖敕敍敘敞敝敲數斂斃變斛斟斫斷旃旆旁旄旌旒旛旙无旡旱杲昊昃旻杳昵昶昴昜晏晄晉晁晞晝晤晧晨晟晢晰暃暈暎暉暄暘暝曁暹曉暾暼���\".split(\"\");\nfor(j = 0; j != D[157].length; ++j) if(D[157][j].charCodeAt(0) !== 0xFFFD) { e[D[157][j]] = 40192 + j; d[40192 + j] = D[157][j];}\nD[158] = \"����������������������������������������������������������������曄暸曖曚曠昿曦曩曰曵曷朏朖朞朦朧霸朮朿朶杁朸朷杆杞杠杙杣杤枉杰枩杼杪枌枋枦枡枅枷柯枴柬枳柩枸柤柞柝柢柮枹柎柆柧檜栞框栩桀桍栲桎�梳栫桙档桷桿梟梏梭梔條梛梃檮梹桴梵梠梺椏梍桾椁棊椈棘椢椦棡椌棍棔棧棕椶椒椄棗棣椥棹棠棯椨椪椚椣椡棆楹楷楜楸楫楔楾楮椹楴椽楙椰楡楞楝榁楪榲榮槐榿槁槓榾槎寨槊槝榻槃榧樮榑榠榜榕榴槞槨樂樛槿權槹槲槧樅榱樞槭樔槫樊樒櫁樣樓橄樌橲樶橸橇橢橙橦橈樸樢檐檍檠檄檢檣���\".split(\"\");\nfor(j = 0; j != D[158].length; ++j) if(D[158][j].charCodeAt(0) !== 0xFFFD) { e[D[158][j]] = 40448 + j; d[40448 + j] = D[158][j];}\nD[159] = \"����������������������������������������������������������������檗蘗檻櫃櫂檸檳檬櫞櫑櫟檪櫚櫪櫻欅蘖櫺欒欖鬱欟欸欷盜欹飮歇歃歉歐歙歔歛歟歡歸歹歿殀殄殃殍殘殕殞殤殪殫殯殲殱殳殷殼毆毋毓毟毬毫毳毯�麾氈氓气氛氤氣汞汕汢汪沂沍沚沁沛汾汨汳沒沐泄泱泓沽泗泅泝沮沱沾沺泛泯泙泪洟衍洶洫洽洸洙洵洳洒洌浣涓浤浚浹浙涎涕濤涅淹渕渊涵淇淦涸淆淬淞淌淨淒淅淺淙淤淕淪淮渭湮渮渙湲湟渾渣湫渫湶湍渟湃渺湎渤滿渝游溂溪溘滉溷滓溽溯滄溲滔滕溏溥滂溟潁漑灌滬滸滾漿滲漱滯漲滌���\".split(\"\");\nfor(j = 0; j != D[159].length; ++j) if(D[159][j].charCodeAt(0) !== 0xFFFD) { e[D[159][j]] = 40704 + j; d[40704 + j] = D[159][j];}\nD[224] = \"����������������������������������������������������������������漾漓滷澆潺潸澁澀潯潛濳潭澂潼潘澎澑濂潦澳澣澡澤澹濆澪濟濕濬濔濘濱濮濛瀉瀋濺瀑瀁瀏濾瀛瀚潴瀝瀘瀟瀰瀾瀲灑灣炙炒炯烱炬炸炳炮烟烋烝�烙焉烽焜焙煥煕熈煦煢煌煖煬熏燻熄熕熨熬燗熹熾燒燉燔燎燠燬燧燵燼燹燿爍爐爛爨爭爬爰爲爻爼爿牀牆牋牘牴牾犂犁犇犒犖犢犧犹犲狃狆狄狎狒狢狠狡狹狷倏猗猊猜猖猝猴猯猩猥猾獎獏默獗獪獨獰獸獵獻獺珈玳珎玻珀珥珮珞璢琅瑯琥珸琲琺瑕琿瑟瑙瑁瑜瑩瑰瑣瑪瑶瑾璋璞璧瓊瓏瓔珱���\".split(\"\");\nfor(j = 0; j != D[224].length; ++j) if(D[224][j].charCodeAt(0) !== 0xFFFD) { e[D[224][j]] = 57344 + j; d[57344 + j] = D[224][j];}\nD[225] = \"����������������������������������������������������������������瓠瓣瓧瓩瓮瓲瓰瓱瓸瓷甄甃甅甌甎甍甕甓甞甦甬甼畄畍畊畉畛畆畚畩畤畧畫畭畸當疆疇畴疊疉疂疔疚疝疥疣痂疳痃疵疽疸疼疱痍痊痒痙痣痞痾痿�痼瘁痰痺痲痳瘋瘍瘉瘟瘧瘠瘡瘢瘤瘴瘰瘻癇癈癆癜癘癡癢癨癩癪癧癬癰癲癶癸發皀皃皈皋皎皖皓皙皚皰皴皸皹皺盂盍盖盒盞盡盥盧盪蘯盻眈眇眄眩眤眞眥眦眛眷眸睇睚睨睫睛睥睿睾睹瞎瞋瞑瞠瞞瞰瞶瞹瞿瞼瞽瞻矇矍矗矚矜矣矮矼砌砒礦砠礪硅碎硴碆硼碚碌碣碵碪碯磑磆磋磔碾碼磅磊磬���\".split(\"\");\nfor(j = 0; j != D[225].length; ++j) if(D[225][j].charCodeAt(0) !== 0xFFFD) { e[D[225][j]] = 57600 + j; d[57600 + j] = D[225][j];}\nD[226] = \"����������������������������������������������������������������磧磚磽磴礇礒礑礙礬礫祀祠祗祟祚祕祓祺祿禊禝禧齋禪禮禳禹禺秉秕秧秬秡秣稈稍稘稙稠稟禀稱稻稾稷穃穗穉穡穢穩龝穰穹穽窈窗窕窘窖窩竈窰�窶竅竄窿邃竇竊竍竏竕竓站竚竝竡竢竦竭竰笂笏笊笆笳笘笙笞笵笨笶筐筺笄筍笋筌筅筵筥筴筧筰筱筬筮箝箘箟箍箜箚箋箒箏筝箙篋篁篌篏箴篆篝篩簑簔篦篥籠簀簇簓篳篷簗簍篶簣簧簪簟簷簫簽籌籃籔籏籀籐籘籟籤籖籥籬籵粃粐粤粭粢粫粡粨粳粲粱粮粹粽糀糅糂糘糒糜糢鬻糯糲糴糶糺紆���\".split(\"\");\nfor(j = 0; j != D[226].length; ++j) if(D[226][j].charCodeAt(0) !== 0xFFFD) { e[D[226][j]] = 57856 + j; d[57856 + j] = D[226][j];}\nD[227] = \"����������������������������������������������������������������紂紜紕紊絅絋紮紲紿紵絆絳絖絎絲絨絮絏絣經綉絛綏絽綛綺綮綣綵緇綽綫總綢綯緜綸綟綰緘緝緤緞緻緲緡縅縊縣縡縒縱縟縉縋縢繆繦縻縵縹繃縷�縲縺繧繝繖繞繙繚繹繪繩繼繻纃緕繽辮繿纈纉續纒纐纓纔纖纎纛纜缸缺罅罌罍罎罐网罕罔罘罟罠罨罩罧罸羂羆羃羈羇羌羔羞羝羚羣羯羲羹羮羶羸譱翅翆翊翕翔翡翦翩翳翹飜耆耄耋耒耘耙耜耡耨耿耻聊聆聒聘聚聟聢聨聳聲聰聶聹聽聿肄肆肅肛肓肚肭冐肬胛胥胙胝胄胚胖脉胯胱脛脩脣脯腋���\".split(\"\");\nfor(j = 0; j != D[227].length; ++j) if(D[227][j].charCodeAt(0) !== 0xFFFD) { e[D[227][j]] = 58112 + j; d[58112 + j] = D[227][j];}\nD[228] = \"����������������������������������������������������������������隋腆脾腓腑胼腱腮腥腦腴膃膈膊膀膂膠膕膤膣腟膓膩膰膵膾膸膽臀臂膺臉臍臑臙臘臈臚臟臠臧臺臻臾舁舂舅與舊舍舐舖舩舫舸舳艀艙艘艝艚艟艤�艢艨艪艫舮艱艷艸艾芍芒芫芟芻芬苡苣苟苒苴苳苺莓范苻苹苞茆苜茉苙茵茴茖茲茱荀茹荐荅茯茫茗茘莅莚莪莟莢莖茣莎莇莊荼莵荳荵莠莉莨菴萓菫菎菽萃菘萋菁菷萇菠菲萍萢萠莽萸蔆菻葭萪萼蕚蒄葷葫蒭葮蒂葩葆萬葯葹萵蓊葢蒹蒿蒟蓙蓍蒻蓚蓐蓁蓆蓖蒡蔡蓿蓴蔗蔘蔬蔟蔕蔔蓼蕀蕣蕘蕈���\".split(\"\");\nfor(j = 0; j != D[228].length; ++j) if(D[228][j].charCodeAt(0) !== 0xFFFD) { e[D[228][j]] = 58368 + j; d[58368 + j] = D[228][j];}\nD[229] = \"����������������������������������������������������������������蕁蘂蕋蕕薀薤薈薑薊薨蕭薔薛藪薇薜蕷蕾薐藉薺藏薹藐藕藝藥藜藹蘊蘓蘋藾藺蘆蘢蘚蘰蘿虍乕虔號虧虱蚓蚣蚩蚪蚋蚌蚶蚯蛄蛆蚰蛉蠣蚫蛔蛞蛩蛬�蛟蛛蛯蜒蜆蜈蜀蜃蛻蜑蜉蜍蛹蜊蜴蜿蜷蜻蜥蜩蜚蝠蝟蝸蝌蝎蝴蝗蝨蝮蝙蝓蝣蝪蠅螢螟螂螯蟋螽蟀蟐雖螫蟄螳蟇蟆螻蟯蟲蟠蠏蠍蟾蟶蟷蠎蟒蠑蠖蠕蠢蠡蠱蠶蠹蠧蠻衄衂衒衙衞衢衫袁衾袞衵衽袵衲袂袗袒袮袙袢袍袤袰袿袱裃裄裔裘裙裝裹褂裼裴裨裲褄褌褊褓襃褞褥褪褫襁襄褻褶褸襌褝襠襞���\".split(\"\");\nfor(j = 0; j != D[229].length; ++j) if(D[229][j].charCodeAt(0) !== 0xFFFD) { e[D[229][j]] = 58624 + j; d[58624 + j] = D[229][j];}\nD[230] = \"����������������������������������������������������������������襦襤襭襪襯襴襷襾覃覈覊覓覘覡覩覦覬覯覲覺覽覿觀觚觜觝觧觴觸訃訖訐訌訛訝訥訶詁詛詒詆詈詼詭詬詢誅誂誄誨誡誑誥誦誚誣諄諍諂諚諫諳諧�諤諱謔諠諢諷諞諛謌謇謚諡謖謐謗謠謳鞫謦謫謾謨譁譌譏譎證譖譛譚譫譟譬譯譴譽讀讌讎讒讓讖讙讚谺豁谿豈豌豎豐豕豢豬豸豺貂貉貅貊貍貎貔豼貘戝貭貪貽貲貳貮貶賈賁賤賣賚賽賺賻贄贅贊贇贏贍贐齎贓賍贔贖赧赭赱赳趁趙跂趾趺跏跚跖跌跛跋跪跫跟跣跼踈踉跿踝踞踐踟蹂踵踰踴蹊���\".split(\"\");\nfor(j = 0; j != D[230].length; ++j) if(D[230][j].charCodeAt(0) !== 0xFFFD) { e[D[230][j]] = 58880 + j; d[58880 + j] = D[230][j];}\nD[231] = \"����������������������������������������������������������������蹇蹉蹌蹐蹈蹙蹤蹠踪蹣蹕蹶蹲蹼躁躇躅躄躋躊躓躑躔躙躪躡躬躰軆躱躾軅軈軋軛軣軼軻軫軾輊輅輕輒輙輓輜輟輛輌輦輳輻輹轅轂輾轌轉轆轎轗轜�轢轣轤辜辟辣辭辯辷迚迥迢迪迯邇迴逅迹迺逑逕逡逍逞逖逋逧逶逵逹迸遏遐遑遒逎遉逾遖遘遞遨遯遶隨遲邂遽邁邀邊邉邏邨邯邱邵郢郤扈郛鄂鄒鄙鄲鄰酊酖酘酣酥酩酳酲醋醉醂醢醫醯醪醵醴醺釀釁釉釋釐釖釟釡釛釼釵釶鈞釿鈔鈬鈕鈑鉞鉗鉅鉉鉤鉈銕鈿鉋鉐銜銖銓銛鉚鋏銹銷鋩錏鋺鍄錮���\".split(\"\");\nfor(j = 0; j != D[231].length; ++j) if(D[231][j].charCodeAt(0) !== 0xFFFD) { e[D[231][j]] = 59136 + j; d[59136 + j] = D[231][j];}\nD[232] = \"����������������������������������������������������������������錙錢錚錣錺錵錻鍜鍠鍼鍮鍖鎰鎬鎭鎔鎹鏖鏗鏨鏥鏘鏃鏝鏐鏈鏤鐚鐔鐓鐃鐇鐐鐶鐫鐵鐡鐺鑁鑒鑄鑛鑠鑢鑞鑪鈩鑰鑵鑷鑽鑚鑼鑾钁鑿閂閇閊閔閖閘閙�閠閨閧閭閼閻閹閾闊濶闃闍闌闕闔闖關闡闥闢阡阨阮阯陂陌陏陋陷陜陞陝陟陦陲陬隍隘隕隗險隧隱隲隰隴隶隸隹雎雋雉雍襍雜霍雕雹霄霆霈霓霎霑霏霖霙霤霪霰霹霽霾靄靆靈靂靉靜靠靤靦靨勒靫靱靹鞅靼鞁靺鞆鞋鞏鞐鞜鞨鞦鞣鞳鞴韃韆韈韋韜韭齏韲竟韶韵頏頌頸頤頡頷頽顆顏顋顫顯顰���\".split(\"\");\nfor(j = 0; j != D[232].length; ++j) if(D[232][j].charCodeAt(0) !== 0xFFFD) { e[D[232][j]] = 59392 + j; d[59392 + j] = D[232][j];}\nD[233] = \"����������������������������������������������������������������顱顴顳颪颯颱颶飄飃飆飩飫餃餉餒餔餘餡餝餞餤餠餬餮餽餾饂饉饅饐饋饑饒饌饕馗馘馥馭馮馼駟駛駝駘駑駭駮駱駲駻駸騁騏騅駢騙騫騷驅驂驀驃�騾驕驍驛驗驟驢驥驤驩驫驪骭骰骼髀髏髑髓體髞髟髢髣髦髯髫髮髴髱髷髻鬆鬘鬚鬟鬢鬣鬥鬧鬨鬩鬪鬮鬯鬲魄魃魏魍魎魑魘魴鮓鮃鮑鮖鮗鮟鮠鮨鮴鯀鯊鮹鯆鯏鯑鯒鯣鯢鯤鯔鯡鰺鯲鯱鯰鰕鰔鰉鰓鰌鰆鰈鰒鰊鰄鰮鰛鰥鰤鰡鰰鱇鰲鱆鰾鱚鱠鱧鱶鱸鳧鳬鳰鴉鴈鳫鴃鴆鴪鴦鶯鴣鴟鵄鴕鴒鵁鴿鴾鵆鵈���\".split(\"\");\nfor(j = 0; j != D[233].length; ++j) if(D[233][j].charCodeAt(0) !== 0xFFFD) { e[D[233][j]] = 59648 + j; d[59648 + j] = D[233][j];}\nD[234] = \"����������������������������������������������������������������鵝鵞鵤鵑鵐鵙鵲鶉鶇鶫鵯鵺鶚鶤鶩鶲鷄鷁鶻鶸鶺鷆鷏鷂鷙鷓鷸鷦鷭鷯鷽鸚鸛鸞鹵鹹鹽麁麈麋麌麒麕麑麝麥麩麸麪麭靡黌黎黏黐黔黜點黝黠黥黨黯�黴黶黷黹黻黼黽鼇鼈皷鼕鼡鼬鼾齊齒齔齣齟齠齡齦齧齬齪齷齲齶龕龜龠堯槇遙瑤凜熙�������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[234].length; ++j) if(D[234][j].charCodeAt(0) !== 0xFFFD) { e[D[234][j]] = 59904 + j; d[59904 + j] = D[234][j];}\nD[240] = \"��������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[240].length; ++j) if(D[240][j].charCodeAt(0) !== 0xFFFD) { e[D[240][j]] = 61440 + j; d[61440 + j] = D[240][j];}\nD[241] = \"��������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[241].length; ++j) if(D[241][j].charCodeAt(0) !== 0xFFFD) { e[D[241][j]] = 61696 + j; d[61696 + j] = D[241][j];}\nD[242] = \"��������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[242].length; ++j) if(D[242][j].charCodeAt(0) !== 0xFFFD) { e[D[242][j]] = 61952 + j; d[61952 + j] = D[242][j];}\nD[243] = \"��������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[243].length; ++j) if(D[243][j].charCodeAt(0) !== 0xFFFD) { e[D[243][j]] = 62208 + j; d[62208 + j] = D[243][j];}\nD[244] = \"��������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[244].length; ++j) if(D[244][j].charCodeAt(0) !== 0xFFFD) { e[D[244][j]] = 62464 + j; d[62464 + j] = D[244][j];}\nD[245] = \"��������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[245].length; ++j) if(D[245][j].charCodeAt(0) !== 0xFFFD) { e[D[245][j]] = 62720 + j; d[62720 + j] = D[245][j];}\nD[246] = \"��������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[246].length; ++j) if(D[246][j].charCodeAt(0) !== 0xFFFD) { e[D[246][j]] = 62976 + j; d[62976 + j] = D[246][j];}\nD[247] = \"��������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[247].length; ++j) if(D[247][j].charCodeAt(0) !== 0xFFFD) { e[D[247][j]] = 63232 + j; d[63232 + j] = D[247][j];}\nD[248] = \"��������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[248].length; ++j) if(D[248][j].charCodeAt(0) !== 0xFFFD) { e[D[248][j]] = 63488 + j; d[63488 + j] = D[248][j];}\nD[249] = \"��������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[249].length; ++j) if(D[249][j].charCodeAt(0) !== 0xFFFD) { e[D[249][j]] = 63744 + j; d[63744 + j] = D[249][j];}\nD[250] = \"�������������������������������������������������������������������������������������￤＇＂����纊褜鍈銈蓜俉炻昱棈鋹曻彅丨仡仼伀伃伹佖侒侊侚侔俍偀倢俿倞偆偰偂傔僴僘兊�兤冝冾凬刕劜劦勀勛匀匇匤卲厓厲叝﨎咜咊咩哿喆坙坥垬埈埇﨏塚增墲夋奓奛奝奣妤妺孖寀甯寘寬尞岦岺峵崧嵓﨑嵂嵭嶸嶹巐弡弴彧德忞恝悅悊惞惕愠惲愑愷愰憘戓抦揵摠撝擎敎昀昕昻昉昮昞昤晥晗晙晴晳暙暠暲暿曺朎朗杦枻桒柀栁桄棏﨓楨﨔榘槢樰橫橆橳橾櫢櫤毖氿汜沆汯泚洄涇浯���\".split(\"\");\nfor(j = 0; j != D[250].length; ++j) if(D[250][j].charCodeAt(0) !== 0xFFFD) { e[D[250][j]] = 64000 + j; d[64000 + j] = D[250][j];}\nD[251] = \"����������������������������������������������������������������涖涬淏淸淲淼渹湜渧渼溿澈澵濵瀅瀇瀨炅炫焏焄煜煆煇凞燁燾犱犾猤猪獷玽珉珖珣珒琇珵琦琪琩琮瑢璉璟甁畯皂皜皞皛皦益睆劯砡硎硤硺礰礼神�祥禔福禛竑竧靖竫箞精絈絜綷綠緖繒罇羡羽茁荢荿菇菶葈蒴蕓蕙蕫﨟薰蘒﨡蠇裵訒訷詹誧誾諟諸諶譓譿賰賴贒赶﨣軏﨤逸遧郞都鄕鄧釚釗釞釭釮釤釥鈆鈐鈊鈺鉀鈼鉎鉙鉑鈹鉧銧鉷鉸鋧鋗鋙鋐﨧鋕鋠鋓錥錡鋻﨨錞鋿錝錂鍰鍗鎤鏆鏞鏸鐱鑅鑈閒隆﨩隝隯霳霻靃靍靏靑靕顗顥飯飼餧館馞驎髙���\".split(\"\");\nfor(j = 0; j != D[251].length; ++j) if(D[251][j].charCodeAt(0) !== 0xFFFD) { e[D[251][j]] = 64256 + j; d[64256 + j] = D[251][j];}\nD[252] = \"����������������������������������������������������������������髜魵魲鮏鮱鮻鰀鵰鵫鶴鸙黑������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[252].length; ++j) if(D[252][j].charCodeAt(0) !== 0xFFFD) { e[D[252][j]] = 64512 + j; d[64512 + j] = D[252][j];}\nreturn {\"enc\": e, \"dec\": d }; })();\ncptable[10002] = (function(){ var d = [], e = {}, D = [], j;\nD[0] = \"\\u0000\\u0001\\u0002\\u0003\\u0004\\u0005\\u0006\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\u0014\\u0015\\u0016\\u0017\\u0018\\u0019\\u001a\\u001b\\u001c\\u001d\\u001e\\u001f !\\\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~����������������������������������������������������������������������������������������������������������������������������©™…\".split(\"\");\nfor(j = 0; j != D[0].length; ++j) if(D[0][j].charCodeAt(0) !== 0xFFFD) { e[D[0][j]] = 0 + j; d[0 + j] = D[0][j];}\nD[129] = \"���������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[129].length; ++j) if(D[129][j].charCodeAt(0) !== 0xFFFD) { e[D[129][j]] = 33024 + j; d[33024 + j] = D[129][j];}\nD[130] = \"���������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[130].length; ++j) if(D[130][j].charCodeAt(0) !== 0xFFFD) { e[D[130][j]] = 33280 + j; d[33280 + j] = D[130][j];}\nD[131] = \"���������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[131].length; ++j) if(D[131][j].charCodeAt(0) !== 0xFFFD) { e[D[131][j]] = 33536 + j; d[33536 + j] = D[131][j];}\nD[132] = \"���������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[132].length; ++j) if(D[132][j].charCodeAt(0) !== 0xFFFD) { e[D[132][j]] = 33792 + j; d[33792 + j] = D[132][j];}\nD[133] = \"���������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[133].length; ++j) if(D[133][j].charCodeAt(0) !== 0xFFFD) { e[D[133][j]] = 34048 + j; d[34048 + j] = D[133][j];}\nD[134] = \"���������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[134].length; ++j) if(D[134][j].charCodeAt(0) !== 0xFFFD) { e[D[134][j]] = 34304 + j; d[34304 + j] = D[134][j];}\nD[135] = \"���������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[135].length; ++j) if(D[135][j].charCodeAt(0) !== 0xFFFD) { e[D[135][j]] = 34560 + j; d[34560 + j] = D[135][j];}\nD[136] = \"���������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[136].length; ++j) if(D[136][j].charCodeAt(0) !== 0xFFFD) { e[D[136][j]] = 34816 + j; d[34816 + j] = D[136][j];}\nD[137] = \"���������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[137].length; ++j) if(D[137][j].charCodeAt(0) !== 0xFFFD) { e[D[137][j]] = 35072 + j; d[35072 + j] = D[137][j];}\nD[138] = \"���������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[138].length; ++j) if(D[138][j].charCodeAt(0) !== 0xFFFD) { e[D[138][j]] = 35328 + j; d[35328 + j] = D[138][j];}\nD[139] = \"���������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[139].length; ++j) if(D[139][j].charCodeAt(0) !== 0xFFFD) { e[D[139][j]] = 35584 + j; d[35584 + j] = D[139][j];}\nD[140] = \"���������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[140].length; ++j) if(D[140][j].charCodeAt(0) !== 0xFFFD) { e[D[140][j]] = 35840 + j; d[35840 + j] = D[140][j];}\nD[141] = \"���������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[141].length; ++j) if(D[141][j].charCodeAt(0) !== 0xFFFD) { e[D[141][j]] = 36096 + j; d[36096 + j] = D[141][j];}\nD[142] = \"���������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[142].length; ++j) if(D[142][j].charCodeAt(0) !== 0xFFFD) { e[D[142][j]] = 36352 + j; d[36352 + j] = D[142][j];}\nD[143] = \"���������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[143].length; ++j) if(D[143][j].charCodeAt(0) !== 0xFFFD) { e[D[143][j]] = 36608 + j; d[36608 + j] = D[143][j];}\nD[144] = \"���������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[144].length; ++j) if(D[144][j].charCodeAt(0) !== 0xFFFD) { e[D[144][j]] = 36864 + j; d[36864 + j] = D[144][j];}\nD[145] = \"���������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[145].length; ++j) if(D[145][j].charCodeAt(0) !== 0xFFFD) { e[D[145][j]] = 37120 + j; d[37120 + j] = D[145][j];}\nD[146] = \"���������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[146].length; ++j) if(D[146][j].charCodeAt(0) !== 0xFFFD) { e[D[146][j]] = 37376 + j; d[37376 + j] = D[146][j];}\nD[147] = \"���������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[147].length; ++j) if(D[147][j].charCodeAt(0) !== 0xFFFD) { e[D[147][j]] = 37632 + j; d[37632 + j] = D[147][j];}\nD[148] = \"���������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[148].length; ++j) if(D[148][j].charCodeAt(0) !== 0xFFFD) { e[D[148][j]] = 37888 + j; d[37888 + j] = D[148][j];}\nD[149] = \"���������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[149].length; ++j) if(D[149][j].charCodeAt(0) !== 0xFFFD) { e[D[149][j]] = 38144 + j; d[38144 + j] = D[149][j];}\nD[150] = \"���������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[150].length; ++j) if(D[150][j].charCodeAt(0) !== 0xFFFD) { e[D[150][j]] = 38400 + j; d[38400 + j] = D[150][j];}\nD[151] = \"���������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[151].length; ++j) if(D[151][j].charCodeAt(0) !== 0xFFFD) { e[D[151][j]] = 38656 + j; d[38656 + j] = D[151][j];}\nD[152] = \"���������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[152].length; ++j) if(D[152][j].charCodeAt(0) !== 0xFFFD) { e[D[152][j]] = 38912 + j; d[38912 + j] = D[152][j];}\nD[153] = \"���������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[153].length; ++j) if(D[153][j].charCodeAt(0) !== 0xFFFD) { e[D[153][j]] = 39168 + j; d[39168 + j] = D[153][j];}\nD[154] = \"���������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[154].length; ++j) if(D[154][j].charCodeAt(0) !== 0xFFFD) { e[D[154][j]] = 39424 + j; d[39424 + j] = D[154][j];}\nD[155] = \"���������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[155].length; ++j) if(D[155][j].charCodeAt(0) !== 0xFFFD) { e[D[155][j]] = 39680 + j; d[39680 + j] = D[155][j];}\nD[156] = \"���������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[156].length; ++j) if(D[156][j].charCodeAt(0) !== 0xFFFD) { e[D[156][j]] = 39936 + j; d[39936 + j] = D[156][j];}\nD[157] = \"���������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[157].length; ++j) if(D[157][j].charCodeAt(0) !== 0xFFFD) { e[D[157][j]] = 40192 + j; d[40192 + j] = D[157][j];}\nD[158] = \"���������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[158].length; ++j) if(D[158][j].charCodeAt(0) !== 0xFFFD) { e[D[158][j]] = 40448 + j; d[40448 + j] = D[158][j];}\nD[159] = \"���������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[159].length; ++j) if(D[159][j].charCodeAt(0) !== 0xFFFD) { e[D[159][j]] = 40704 + j; d[40704 + j] = D[159][j];}\nD[160] = \"���������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[160].length; ++j) if(D[160][j].charCodeAt(0) !== 0xFFFD) { e[D[160][j]] = 40960 + j; d[40960 + j] = D[160][j];}\nD[161] = \"����������������������������������������������������������������　，、。．‧；：？！︰�‥﹐﹑﹒·﹔﹕﹖﹗｜–︱—︳╴︴﹏（）︵︶｛｝︷︸〔〕︹︺【】︻︼《》︽︾〈〉︿﹀「」﹁﹂『』﹃﹄﹙﹚����������������������������������﹛﹜﹝﹞‘’“”〝〞‵′＃＆＊※§〃○●△▲◎☆★◇◆□■▽▼㊣℅¯￣＿ˍ﹉﹊﹍﹎﹋﹌﹟﹠﹡＋－×÷±√＜＞＝≦≧≠∞≒≡﹢﹣﹤﹥﹦～∩∪⊥∠∟⊿㏒㏑∫∮∵∴♀♂⊕⊙↑↓←→↖↗↙↘∥∣／�\".split(\"\");\nfor(j = 0; j != D[161].length; ++j) if(D[161][j].charCodeAt(0) !== 0xFFFD) { e[D[161][j]] = 41216 + j; d[41216 + j] = D[161][j];}\nD[162] = \"����������������������������������������������������������������＼∕﹨＄￥〒￠￡％＠℃℉﹩﹪﹫㏕㎜㎝㎞㏎㎡㎎㎏㏄°兙兛兞兝兡兣嗧瓩糎▁▂▃▄▅▆▇█▏▎▍▌▋▊▉┼┴┬┤├▔─│▕┌┐└┘╭����������������������������������╮╰╯����◢◣◥◤╱╲╳０１２３４５６７８９ⅠⅡⅢⅣⅤⅥⅦⅧⅨⅩ〡〢〣〤〥〦〧〨〩�卄�ＡＢＣＤＥＦＧＨＩＪＫＬＭＮＯＰＱＲＳＴＵＶＷＸＹＺａｂｃｄｅｆｇｈｉｊｋｌｍｎｏｐｑｒｓｔｕｖ�\".split(\"\");\nfor(j = 0; j != D[162].length; ++j) if(D[162][j].charCodeAt(0) !== 0xFFFD) { e[D[162][j]] = 41472 + j; d[41472 + j] = D[162][j];}\nD[163] = \"����������������������������������������������������������������ｗｘｙｚΑΒΓΔΕΖΗΘΙΚΛΜΝΞΟΠΡΣΤΥΦΧΨΩαβγδεζηθικλμνξοπρστυφχψωㄅㄆㄇㄈㄉㄊㄋㄌㄍㄎㄏ����������������������������������ㄐㄑㄒㄓㄔㄕㄖㄗㄘㄙㄚㄛㄜㄝㄞㄟㄠㄡㄢㄣㄤㄥㄦㄧㄨㄩ˙ˉˊˇˋ����������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[163].length; ++j) if(D[163][j].charCodeAt(0) !== 0xFFFD) { e[D[163][j]] = 41728 + j; d[41728 + j] = D[163][j];}\nD[164] = \"����������������������������������������������������������������一乙丁七乃九了二人儿入八几刀刁力匕十卜又三下丈上丫丸凡久么也乞于亡兀刃勺千叉口土士夕大女子孑孓寸小尢尸山川工己已巳巾干廾弋弓才����������������������������������丑丐不中丰丹之尹予云井互五亢仁什仃仆仇仍今介仄元允內六兮公冗凶分切刈勻勾勿化匹午升卅卞厄友及反壬天夫太夭孔少尤尺屯巴幻廿弔引心戈戶手扎支文斗斤方日曰月木欠止歹毋比毛氏水火爪父爻片牙牛犬王丙�\".split(\"\");\nfor(j = 0; j != D[164].length; ++j) if(D[164][j].charCodeAt(0) !== 0xFFFD) { e[D[164][j]] = 41984 + j; d[41984 + j] = D[164][j];}\nD[165] = \"����������������������������������������������������������������世丕且丘主乍乏乎以付仔仕他仗代令仙仞充兄冉冊冬凹出凸刊加功包匆北匝仟半卉卡占卯卮去可古右召叮叩叨叼司叵叫另只史叱台句叭叻四囚外����������������������������������央失奴奶孕它尼巨巧左市布平幼弁弘弗必戊打扔扒扑斥旦朮本未末札正母民氐永汁汀氾犯玄玉瓜瓦甘生用甩田由甲申疋白皮皿目矛矢石示禾穴立丞丟乒乓乩亙交亦亥仿伉伙伊伕伍伐休伏仲件任仰仳份企伋光兇兆先全�\".split(\"\");\nfor(j = 0; j != D[165].length; ++j) if(D[165][j].charCodeAt(0) !== 0xFFFD) { e[D[165][j]] = 42240 + j; d[42240 + j] = D[165][j];}\nD[166] = \"����������������������������������������������������������������共再冰列刑划刎刖劣匈匡匠印危吉吏同吊吐吁吋各向名合吃后吆吒因回囝圳地在圭圬圯圩夙多夷夸妄奸妃好她如妁字存宇守宅安寺尖屹州帆并年����������������������������������式弛忙忖戎戌戍成扣扛托收早旨旬旭曲曳有朽朴朱朵次此死氖汝汗汙江池汐汕污汛汍汎灰牟牝百竹米糸缶羊羽老考而耒耳聿肉肋肌臣自至臼舌舛舟艮色艾虫血行衣西阡串亨位住佇佗佞伴佛何估佐佑伽伺伸佃佔似但佣�\".split(\"\");\nfor(j = 0; j != D[166].length; ++j) if(D[166][j].charCodeAt(0) !== 0xFFFD) { e[D[166][j]] = 42496 + j; d[42496 + j] = D[166][j];}\nD[167] = \"����������������������������������������������������������������作你伯低伶余佝佈佚兌克免兵冶冷別判利刪刨劫助努劬匣即卵吝吭吞吾否呎吧呆呃吳呈呂君吩告吹吻吸吮吵吶吠吼呀吱含吟听囪困囤囫坊坑址坍����������������������������������均坎圾坐坏圻壯夾妝妒妨妞妣妙妖妍妤妓妊妥孝孜孚孛完宋宏尬局屁尿尾岐岑岔岌巫希序庇床廷弄弟彤形彷役忘忌志忍忱快忸忪戒我抄抗抖技扶抉扭把扼找批扳抒扯折扮投抓抑抆改攻攸旱更束李杏材村杜杖杞杉杆杠�\".split(\"\");\nfor(j = 0; j != D[167].length; ++j) if(D[167][j].charCodeAt(0) !== 0xFFFD) { e[D[167][j]] = 42752 + j; d[42752 + j] = D[167][j];}\nD[168] = \"����������������������������������������������������������������杓杗步每求汞沙沁沈沉沅沛汪決沐汰沌汨沖沒汽沃汲汾汴沆汶沍沔沘沂灶灼災灸牢牡牠狄狂玖甬甫男甸皂盯矣私秀禿究系罕肖肓肝肘肛肚育良芒����������������������������������芋芍見角言谷豆豕貝赤走足身車辛辰迂迆迅迄巡邑邢邪邦那酉釆里防阮阱阪阬並乖乳事些亞享京佯依侍佳使佬供例來侃佰併侈佩佻侖佾侏侑佺兔兒兕兩具其典冽函刻券刷刺到刮制剁劾劻卒協卓卑卦卷卸卹取叔受味呵�\".split(\"\");\nfor(j = 0; j != D[168].length; ++j) if(D[168][j].charCodeAt(0) !== 0xFFFD) { e[D[168][j]] = 43008 + j; d[43008 + j] = D[168][j];}\nD[169] = \"����������������������������������������������������������������咖呸咕咀呻呷咄咒咆呼咐呱呶和咚呢周咋命咎固垃坷坪坩坡坦坤坼夜奉奇奈奄奔妾妻委妹妮姑姆姐姍始姓姊妯妳姒姅孟孤季宗定官宜宙宛尚屈居����������������������������������屆岷岡岸岩岫岱岳帘帚帖帕帛帑幸庚店府底庖延弦弧弩往征彿彼忝忠忽念忿怏怔怯怵怖怪怕怡性怩怫怛或戕房戾所承拉拌拄抿拂抹拒招披拓拔拋拈抨抽押拐拙拇拍抵拚抱拘拖拗拆抬拎放斧於旺昔易昌昆昂明昀昏昕昊�\".split(\"\");\nfor(j = 0; j != D[169].length; ++j) if(D[169][j].charCodeAt(0) !== 0xFFFD) { e[D[169][j]] = 43264 + j; d[43264 + j] = D[169][j];}\nD[170] = \"����������������������������������������������������������������昇服朋杭枋枕東果杳杷枇枝林杯杰板枉松析杵枚枓杼杪杲欣武歧歿氓氛泣注泳沱泌泥河沽沾沼波沫法泓沸泄油況沮泗泅泱沿治泡泛泊沬泯泜泖泠����������������������������������炕炎炒炊炙爬爭爸版牧物狀狎狙狗狐玩玨玟玫玥甽疝疙疚的盂盲直知矽社祀祁秉秈空穹竺糾罔羌羋者肺肥肢肱股肫肩肴肪肯臥臾舍芳芝芙芭芽芟芹花芬芥芯芸芣芰芾芷虎虱初表軋迎返近邵邸邱邶采金長門阜陀阿阻附�\".split(\"\");\nfor(j = 0; j != D[170].length; ++j) if(D[170][j].charCodeAt(0) !== 0xFFFD) { e[D[170][j]] = 43520 + j; d[43520 + j] = D[170][j];}\nD[171] = \"����������������������������������������������������������������陂隹雨青非亟亭亮信侵侯便俠俑俏保促侶俘俟俊俗侮俐俄係俚俎俞侷兗冒冑冠剎剃削前剌剋則勇勉勃勁匍南卻厚叛咬哀咨哎哉咸咦咳哇哂咽咪品����������������������������������哄哈咯咫咱咻咩咧咿囿垂型垠垣垢城垮垓奕契奏奎奐姜姘姿姣姨娃姥姪姚姦威姻孩宣宦室客宥封屎屏屍屋峙峒巷帝帥帟幽庠度建弈弭彥很待徊律徇後徉怒思怠急怎怨恍恰恨恢恆恃恬恫恪恤扁拜挖按拼拭持拮拽指拱拷�\".split(\"\");\nfor(j = 0; j != D[171].length; ++j) if(D[171][j].charCodeAt(0) !== 0xFFFD) { e[D[171][j]] = 43776 + j; d[43776 + j] = D[171][j];}\nD[172] = \"����������������������������������������������������������������拯括拾拴挑挂政故斫施既春昭映昧是星昨昱昤曷柿染柱柔某柬架枯柵柩柯柄柑枴柚查枸柏柞柳枰柙柢柝柒歪殃殆段毒毗氟泉洋洲洪流津洌洱洞洗����������������������������������活洽派洶洛泵洹洧洸洩洮洵洎洫炫為炳炬炯炭炸炮炤爰牲牯牴狩狠狡玷珊玻玲珍珀玳甚甭畏界畎畋疫疤疥疢疣癸皆皇皈盈盆盃盅省盹相眉看盾盼眇矜砂研砌砍祆祉祈祇禹禺科秒秋穿突竿竽籽紂紅紀紉紇約紆缸美羿耄�\".split(\"\");\nfor(j = 0; j != D[172].length; ++j) if(D[172][j].charCodeAt(0) !== 0xFFFD) { e[D[172][j]] = 44032 + j; d[44032 + j] = D[172][j];}\nD[173] = \"����������������������������������������������������������������耐耍耑耶胖胥胚胃胄背胡胛胎胞胤胝致舢苧范茅苣苛苦茄若茂茉苒苗英茁苜苔苑苞苓苟苯茆虐虹虻虺衍衫要觔計訂訃貞負赴赳趴軍軌述迦迢迪迥����������������������������������迭迫迤迨郊郎郁郃酋酊重閂限陋陌降面革韋韭音頁風飛食首香乘亳倌倍倣俯倦倥俸倩倖倆值借倚倒們俺倀倔倨俱倡個候倘俳修倭倪俾倫倉兼冤冥冢凍凌准凋剖剜剔剛剝匪卿原厝叟哨唐唁唷哼哥哲唆哺唔哩哭員唉哮哪�\".split(\"\");\nfor(j = 0; j != D[173].length; ++j) if(D[173][j].charCodeAt(0) !== 0xFFFD) { e[D[173][j]] = 44288 + j; d[44288 + j] = D[173][j];}\nD[174] = \"����������������������������������������������������������������哦唧唇哽唏圃圄埂埔埋埃堉夏套奘奚娑娘娜娟娛娓姬娠娣娩娥娌娉孫屘宰害家宴宮宵容宸射屑展屐峭峽峻峪峨峰島崁峴差席師庫庭座弱徒徑徐恙����������������������������������恣恥恐恕恭恩息悄悟悚悍悔悌悅悖扇拳挈拿捎挾振捕捂捆捏捉挺捐挽挪挫挨捍捌效敉料旁旅時晉晏晃晒晌晅晁書朔朕朗校核案框桓根桂桔栩梳栗桌桑栽柴桐桀格桃株桅栓栘桁殊殉殷氣氧氨氦氤泰浪涕消涇浦浸海浙涓�\".split(\"\");\nfor(j = 0; j != D[174].length; ++j) if(D[174][j].charCodeAt(0) !== 0xFFFD) { e[D[174][j]] = 44544 + j; d[44544 + j] = D[174][j];}\nD[175] = \"����������������������������������������������������������������浬涉浮浚浴浩涌涊浹涅浥涔烊烘烤烙烈烏爹特狼狹狽狸狷玆班琉珮珠珪珞畔畝畜畚留疾病症疲疳疽疼疹痂疸皋皰益盍盎眩真眠眨矩砰砧砸砝破砷����������������������������������砥砭砠砟砲祕祐祠祟祖神祝祗祚秤秣秧租秦秩秘窄窈站笆笑粉紡紗紋紊素索純紐紕級紜納紙紛缺罟羔翅翁耆耘耕耙耗耽耿胱脂胰脅胭胴脆胸胳脈能脊胼胯臭臬舀舐航舫舨般芻茫荒荔荊茸荐草茵茴荏茲茹茶茗荀茱茨荃�\".split(\"\");\nfor(j = 0; j != D[175].length; ++j) if(D[175][j].charCodeAt(0) !== 0xFFFD) { e[D[175][j]] = 44800 + j; d[44800 + j] = D[175][j];}\nD[176] = \"����������������������������������������������������������������虔蚊蚪蚓蚤蚩蚌蚣蚜衰衷袁袂衽衹記訐討訌訕訊託訓訖訏訑豈豺豹財貢起躬軒軔軏辱送逆迷退迺迴逃追逅迸邕郡郝郢酒配酌釘針釗釜釙閃院陣陡����������������������������������陛陝除陘陞隻飢馬骨高鬥鬲鬼乾偺偽停假偃偌做偉健偶偎偕偵側偷偏倏偯偭兜冕凰剪副勒務勘動匐匏匙匿區匾參曼商啪啦啄啞啡啃啊唱啖問啕唯啤唸售啜唬啣唳啁啗圈國圉域堅堊堆埠埤基堂堵執培夠奢娶婁婉婦婪婀�\".split(\"\");\nfor(j = 0; j != D[176].length; ++j) if(D[176][j].charCodeAt(0) !== 0xFFFD) { e[D[176][j]] = 45056 + j; d[45056 + j] = D[176][j];}\nD[177] = \"����������������������������������������������������������������娼婢婚婆婊孰寇寅寄寂宿密尉專將屠屜屝崇崆崎崛崖崢崑崩崔崙崤崧崗巢常帶帳帷康庸庶庵庾張強彗彬彩彫得徙從徘御徠徜恿患悉悠您惋悴惦悽����������������������������������情悻悵惜悼惘惕惆惟悸惚惇戚戛扈掠控捲掖探接捷捧掘措捱掩掉掃掛捫推掄授掙採掬排掏掀捻捩捨捺敝敖救教敗啟敏敘敕敔斜斛斬族旋旌旎晝晚晤晨晦晞曹勗望梁梯梢梓梵桿桶梱梧梗械梃棄梭梆梅梔條梨梟梡梂欲殺�\".split(\"\");\nfor(j = 0; j != D[177].length; ++j) if(D[177][j].charCodeAt(0) !== 0xFFFD) { e[D[177][j]] = 45312 + j; d[45312 + j] = D[177][j];}\nD[178] = \"����������������������������������������������������������������毫毬氫涎涼淳淙液淡淌淤添淺清淇淋涯淑涮淞淹涸混淵淅淒渚涵淚淫淘淪深淮淨淆淄涪淬涿淦烹焉焊烽烯爽牽犁猜猛猖猓猙率琅琊球理現琍瓠瓶����������������������������������瓷甜產略畦畢異疏痔痕疵痊痍皎盔盒盛眷眾眼眶眸眺硫硃硎祥票祭移窒窕笠笨笛第符笙笞笮粒粗粕絆絃統紮紹紼絀細紳組累終紲紱缽羞羚翌翎習耜聊聆脯脖脣脫脩脰脤舂舵舷舶船莎莞莘荸莢莖莽莫莒莊莓莉莠荷荻荼�\".split(\"\");\nfor(j = 0; j != D[178].length; ++j) if(D[178][j].charCodeAt(0) !== 0xFFFD) { e[D[178][j]] = 45568 + j; d[45568 + j] = D[178][j];}\nD[179] = \"����������������������������������������������������������������莆莧處彪蛇蛀蚶蛄蚵蛆蛋蚱蚯蛉術袞袈被袒袖袍袋覓規訪訝訣訥許設訟訛訢豉豚販責貫貨貪貧赧赦趾趺軛軟這逍通逗連速逝逐逕逞造透逢逖逛途����������������������������������部郭都酗野釵釦釣釧釭釩閉陪陵陳陸陰陴陶陷陬雀雪雩章竟頂頃魚鳥鹵鹿麥麻傢傍傅備傑傀傖傘傚最凱割剴創剩勞勝勛博厥啻喀喧啼喊喝喘喂喜喪喔喇喋喃喳單喟唾喲喚喻喬喱啾喉喫喙圍堯堪場堤堰報堡堝堠壹壺奠�\".split(\"\");\nfor(j = 0; j != D[179].length; ++j) if(D[179][j].charCodeAt(0) !== 0xFFFD) { e[D[179][j]] = 45824 + j; d[45824 + j] = D[179][j];}\nD[180] = \"����������������������������������������������������������������婷媚婿媒媛媧孳孱寒富寓寐尊尋就嵌嵐崴嵇巽幅帽幀幃幾廊廁廂廄弼彭復循徨惑惡悲悶惠愜愣惺愕惰惻惴慨惱愎惶愉愀愒戟扉掣掌描揀揩揉揆揍����������������������������������插揣提握揖揭揮捶援揪換摒揚揹敞敦敢散斑斐斯普晰晴晶景暑智晾晷曾替期朝棺棕棠棘棗椅棟棵森棧棹棒棲棣棋棍植椒椎棉棚楮棻款欺欽殘殖殼毯氮氯氬港游湔渡渲湧湊渠渥渣減湛湘渤湖湮渭渦湯渴湍渺測湃渝渾滋�\".split(\"\");\nfor(j = 0; j != D[180].length; ++j) if(D[180][j].charCodeAt(0) !== 0xFFFD) { e[D[180][j]] = 46080 + j; d[46080 + j] = D[180][j];}\nD[181] = \"����������������������������������������������������������������溉渙湎湣湄湲湩湟焙焚焦焰無然煮焜牌犄犀猶猥猴猩琺琪琳琢琥琵琶琴琯琛琦琨甥甦畫番痢痛痣痙痘痞痠登發皖皓皴盜睏短硝硬硯稍稈程稅稀窘����������������������������������窗窖童竣等策筆筐筒答筍筋筏筑粟粥絞結絨絕紫絮絲絡給絢絰絳善翔翕耋聒肅腕腔腋腑腎脹腆脾腌腓腴舒舜菩萃菸萍菠菅萋菁華菱菴著萊菰萌菌菽菲菊萸萎萄菜萇菔菟虛蛟蛙蛭蛔蛛蛤蛐蛞街裁裂袱覃視註詠評詞証詁�\".split(\"\");\nfor(j = 0; j != D[181].length; ++j) if(D[181][j].charCodeAt(0) !== 0xFFFD) { e[D[181][j]] = 46336 + j; d[46336 + j] = D[181][j];}\nD[182] = \"����������������������������������������������������������������詔詛詐詆訴診訶詖象貂貯貼貳貽賁費賀貴買貶貿貸越超趁跎距跋跚跑跌跛跆軻軸軼辜逮逵週逸進逶鄂郵鄉郾酣酥量鈔鈕鈣鈉鈞鈍鈐鈇鈑閔閏開閑����������������������������������間閒閎隊階隋陽隅隆隍陲隄雁雅雄集雇雯雲韌項順須飧飪飯飩飲飭馮馭黃黍黑亂傭債傲傳僅傾催傷傻傯僇剿剷剽募勦勤勢勣匯嗟嗨嗓嗦嗎嗜嗇嗑嗣嗤嗯嗚嗡嗅嗆嗥嗉園圓塞塑塘塗塚塔填塌塭塊塢塒塋奧嫁嫉嫌媾媽媼�\".split(\"\");\nfor(j = 0; j != D[182].length; ++j) if(D[182][j].charCodeAt(0) !== 0xFFFD) { e[D[182][j]] = 46592 + j; d[46592 + j] = D[182][j];}\nD[183] = \"����������������������������������������������������������������媳嫂媲嵩嵯幌幹廉廈弒彙徬微愚意慈感想愛惹愁愈慎慌慄慍愾愴愧愍愆愷戡戢搓搾搞搪搭搽搬搏搜搔損搶搖搗搆敬斟新暗暉暇暈暖暄暘暍會榔業����������������������������������楚楷楠楔極椰概楊楨楫楞楓楹榆楝楣楛歇歲毀殿毓毽溢溯滓溶滂源溝滇滅溥溘溼溺溫滑準溜滄滔溪溧溴煎煙煩煤煉照煜煬煦煌煥煞煆煨煖爺牒猷獅猿猾瑯瑚瑕瑟瑞瑁琿瑙瑛瑜當畸瘀痰瘁痲痱痺痿痴痳盞盟睛睫睦睞督�\".split(\"\");\nfor(j = 0; j != D[183].length; ++j) if(D[183][j].charCodeAt(0) !== 0xFFFD) { e[D[183][j]] = 46848 + j; d[46848 + j] = D[183][j];}\nD[184] = \"����������������������������������������������������������������睹睪睬睜睥睨睢矮碎碰碗碘碌碉硼碑碓硿祺祿禁萬禽稜稚稠稔稟稞窟窠筷節筠筮筧粱粳粵經絹綑綁綏絛置罩罪署義羨群聖聘肆肄腱腰腸腥腮腳腫����������������������������������腹腺腦舅艇蒂葷落萱葵葦葫葉葬葛萼萵葡董葩葭葆虞虜號蛹蜓蜈蜇蜀蛾蛻蜂蜃蜆蜊衙裟裔裙補裘裝裡裊裕裒覜解詫該詳試詩詰誇詼詣誠話誅詭詢詮詬詹詻訾詨豢貊貉賊資賈賄貲賃賂賅跡跟跨路跳跺跪跤跦躲較載軾輊�\".split(\"\");\nfor(j = 0; j != D[184].length; ++j) if(D[184][j].charCodeAt(0) !== 0xFFFD) { e[D[184][j]] = 47104 + j; d[47104 + j] = D[184][j];}\nD[185] = \"����������������������������������������������������������������辟農運遊道遂達逼違遐遇遏過遍遑逾遁鄒鄗酬酪酩釉鈷鉗鈸鈽鉀鈾鉛鉋鉤鉑鈴鉉鉍鉅鈹鈿鉚閘隘隔隕雍雋雉雊雷電雹零靖靴靶預頑頓頊頒頌飼飴����������������������������������飽飾馳馱馴髡鳩麂鼎鼓鼠僧僮僥僖僭僚僕像僑僱僎僩兢凳劃劂匱厭嗾嘀嘛嘗嗽嘔嘆嘉嘍嘎嗷嘖嘟嘈嘐嗶團圖塵塾境墓墊塹墅塽壽夥夢夤奪奩嫡嫦嫩嫗嫖嫘嫣孵寞寧寡寥實寨寢寤察對屢嶄嶇幛幣幕幗幔廓廖弊彆彰徹慇�\".split(\"\");\nfor(j = 0; j != D[185].length; ++j) if(D[185][j].charCodeAt(0) !== 0xFFFD) { e[D[185][j]] = 47360 + j; d[47360 + j] = D[185][j];}\nD[186] = \"����������������������������������������������������������������愿態慷慢慣慟慚慘慵截撇摘摔撤摸摟摺摑摧搴摭摻敲斡旗旖暢暨暝榜榨榕槁榮槓構榛榷榻榫榴槐槍榭槌榦槃榣歉歌氳漳演滾漓滴漩漾漠漬漏漂漢����������������������������������滿滯漆漱漸漲漣漕漫漯澈漪滬漁滲滌滷熔熙煽熊熄熒爾犒犖獄獐瑤瑣瑪瑰瑭甄疑瘧瘍瘋瘉瘓盡監瞄睽睿睡磁碟碧碳碩碣禎福禍種稱窪窩竭端管箕箋筵算箝箔箏箸箇箄粹粽精綻綰綜綽綾綠緊綴網綱綺綢綿綵綸維緒緇綬�\".split(\"\");\nfor(j = 0; j != D[186].length; ++j) if(D[186][j].charCodeAt(0) !== 0xFFFD) { e[D[186][j]] = 47616 + j; d[47616 + j] = D[186][j];}\nD[187] = \"����������������������������������������������������������������罰翠翡翟聞聚肇腐膀膏膈膊腿膂臧臺與舔舞艋蓉蒿蓆蓄蒙蒞蒲蒜蓋蒸蓀蓓蒐蒼蓑蓊蜿蜜蜻蜢蜥蜴蜘蝕蜷蜩裳褂裴裹裸製裨褚裯誦誌語誣認誡誓誤����������������������������������說誥誨誘誑誚誧豪貍貌賓賑賒赫趙趕跼輔輒輕輓辣遠遘遜遣遙遞遢遝遛鄙鄘鄞酵酸酷酴鉸銀銅銘銖鉻銓銜銨鉼銑閡閨閩閣閥閤隙障際雌雒需靼鞅韶頗領颯颱餃餅餌餉駁骯骰髦魁魂鳴鳶鳳麼鼻齊億儀僻僵價儂儈儉儅凜�\".split(\"\");\nfor(j = 0; j != D[187].length; ++j) if(D[187][j].charCodeAt(0) !== 0xFFFD) { e[D[187][j]] = 47872 + j; d[47872 + j] = D[187][j];}\nD[188] = \"����������������������������������������������������������������劇劈劉劍劊勰厲嘮嘻嘹嘲嘿嘴嘩噓噎噗噴嘶嘯嘰墀墟增墳墜墮墩墦奭嬉嫻嬋嫵嬌嬈寮寬審寫層履嶝嶔幢幟幡廢廚廟廝廣廠彈影德徵慶慧慮慝慕憂����������������������������������慼慰慫慾憧憐憫憎憬憚憤憔憮戮摩摯摹撞撲撈撐撰撥撓撕撩撒撮播撫撚撬撙撢撳敵敷數暮暫暴暱樣樟槨樁樞標槽模樓樊槳樂樅槭樑歐歎殤毅毆漿潼澄潑潦潔澆潭潛潸潮澎潺潰潤澗潘滕潯潠潟熟熬熱熨牖犛獎獗瑩璋璃�\".split(\"\");\nfor(j = 0; j != D[188].length; ++j) if(D[188][j].charCodeAt(0) !== 0xFFFD) { e[D[188][j]] = 48128 + j; d[48128 + j] = D[188][j];}\nD[189] = \"����������������������������������������������������������������瑾璀畿瘠瘩瘟瘤瘦瘡瘢皚皺盤瞎瞇瞌瞑瞋磋磅確磊碾磕碼磐稿稼穀稽稷稻窯窮箭箱範箴篆篇篁箠篌糊締練緯緻緘緬緝編緣線緞緩綞緙緲緹罵罷羯����������������������������������翩耦膛膜膝膠膚膘蔗蔽蔚蓮蔬蔭蔓蔑蔣蔡蔔蓬蔥蓿蔆螂蝴蝶蝠蝦蝸蝨蝙蝗蝌蝓衛衝褐複褒褓褕褊誼諒談諄誕請諸課諉諂調誰論諍誶誹諛豌豎豬賠賞賦賤賬賭賢賣賜質賡赭趟趣踫踐踝踢踏踩踟踡踞躺輝輛輟輩輦輪輜輞�\".split(\"\");\nfor(j = 0; j != D[189].length; ++j) if(D[189][j].charCodeAt(0) !== 0xFFFD) { e[D[189][j]] = 48384 + j; d[48384 + j] = D[189][j];}\nD[190] = \"����������������������������������������������������������������輥適遮遨遭遷鄰鄭鄧鄱醇醉醋醃鋅銻銷鋪銬鋤鋁銳銼鋒鋇鋰銲閭閱霄霆震霉靠鞍鞋鞏頡頫頜颳養餓餒餘駝駐駟駛駑駕駒駙骷髮髯鬧魅魄魷魯鴆鴉����������������������������������鴃麩麾黎墨齒儒儘儔儐儕冀冪凝劑劓勳噙噫噹噩噤噸噪器噥噱噯噬噢噶壁墾壇壅奮嬝嬴學寰導彊憲憑憩憊懍憶憾懊懈戰擅擁擋撻撼據擄擇擂操撿擒擔撾整曆曉暹曄曇暸樽樸樺橙橫橘樹橄橢橡橋橇樵機橈歙歷氅濂澱澡�\".split(\"\");\nfor(j = 0; j != D[190].length; ++j) if(D[190][j].charCodeAt(0) !== 0xFFFD) { e[D[190][j]] = 48640 + j; d[48640 + j] = D[190][j];}\nD[191] = \"����������������������������������������������������������������濃澤濁澧澳激澹澶澦澠澴熾燉燐燒燈燕熹燎燙燜燃燄獨璜璣璘璟璞瓢甌甍瘴瘸瘺盧盥瞠瞞瞟瞥磨磚磬磧禦積穎穆穌穋窺篙簑築篤篛篡篩篦糕糖縊����������������������������������縑縈縛縣縞縝縉縐罹羲翰翱翮耨膳膩膨臻興艘艙蕊蕙蕈蕨蕩蕃蕉蕭蕪蕞螃螟螞螢融衡褪褲褥褫褡親覦諦諺諫諱謀諜諧諮諾謁謂諷諭諳諶諼豫豭貓賴蹄踱踴蹂踹踵輻輯輸輳辨辦遵遴選遲遼遺鄴醒錠錶鋸錳錯錢鋼錫錄錚�\".split(\"\");\nfor(j = 0; j != D[191].length; ++j) if(D[191][j].charCodeAt(0) !== 0xFFFD) { e[D[191][j]] = 48896 + j; d[48896 + j] = D[191][j];}\nD[192] = \"����������������������������������������������������������������錐錦錡錕錮錙閻隧隨險雕霎霑霖霍霓霏靛靜靦鞘頰頸頻頷頭頹頤餐館餞餛餡餚駭駢駱骸骼髻髭鬨鮑鴕鴣鴦鴨鴒鴛默黔龍龜優償儡儲勵嚎嚀嚐嚅嚇����������������������������������嚏壕壓壑壎嬰嬪嬤孺尷屨嶼嶺嶽嶸幫彌徽應懂懇懦懋戲戴擎擊擘擠擰擦擬擱擢擭斂斃曙曖檀檔檄檢檜櫛檣橾檗檐檠歜殮毚氈濘濱濟濠濛濤濫濯澀濬濡濩濕濮濰燧營燮燦燥燭燬燴燠爵牆獰獲璩環璦璨癆療癌盪瞳瞪瞰瞬�\".split(\"\");\nfor(j = 0; j != D[192].length; ++j) if(D[192][j].charCodeAt(0) !== 0xFFFD) { e[D[192][j]] = 49152 + j; d[49152 + j] = D[192][j];}\nD[193] = \"����������������������������������������������������������������瞧瞭矯磷磺磴磯礁禧禪穗窿簇簍篾篷簌篠糠糜糞糢糟糙糝縮績繆縷縲繃縫總縱繅繁縴縹繈縵縿縯罄翳翼聱聲聰聯聳臆臃膺臂臀膿膽臉膾臨舉艱薪����������������������������������薄蕾薜薑薔薯薛薇薨薊虧蟀蟑螳蟒蟆螫螻螺蟈蟋褻褶襄褸褽覬謎謗謙講謊謠謝謄謐豁谿豳賺賽購賸賻趨蹉蹋蹈蹊轄輾轂轅輿避遽還邁邂邀鄹醣醞醜鍍鎂錨鍵鍊鍥鍋錘鍾鍬鍛鍰鍚鍔闊闋闌闈闆隱隸雖霜霞鞠韓顆颶餵騁�\".split(\"\");\nfor(j = 0; j != D[193].length; ++j) if(D[193][j].charCodeAt(0) !== 0xFFFD) { e[D[193][j]] = 49408 + j; d[49408 + j] = D[193][j];}\nD[194] = \"����������������������������������������������������������������駿鮮鮫鮪鮭鴻鴿麋黏點黜黝黛鼾齋叢嚕嚮壙壘嬸彝懣戳擴擲擾攆擺擻擷斷曜朦檳檬櫃檻檸櫂檮檯歟歸殯瀉瀋濾瀆濺瀑瀏燻燼燾燸獷獵璧璿甕癖癘����������������������������������癒瞽瞿瞻瞼礎禮穡穢穠竄竅簫簧簪簞簣簡糧織繕繞繚繡繒繙罈翹翻職聶臍臏舊藏薩藍藐藉薰薺薹薦蟯蟬蟲蟠覆覲觴謨謹謬謫豐贅蹙蹣蹦蹤蹟蹕軀轉轍邇邃邈醫醬釐鎔鎊鎖鎢鎳鎮鎬鎰鎘鎚鎗闔闖闐闕離雜雙雛雞霤鞣鞦�\".split(\"\");\nfor(j = 0; j != D[194].length; ++j) if(D[194][j].charCodeAt(0) !== 0xFFFD) { e[D[194][j]] = 49664 + j; d[49664 + j] = D[194][j];}\nD[195] = \"����������������������������������������������������������������鞭韹額顏題顎顓颺餾餿餽餮馥騎髁鬃鬆魏魎魍鯊鯉鯽鯈鯀鵑鵝鵠黠鼕鼬儳嚥壞壟壢寵龐廬懲懷懶懵攀攏曠曝櫥櫝櫚櫓瀛瀟瀨瀚瀝瀕瀘爆爍牘犢獸����������������������������������獺璽瓊瓣疇疆癟癡矇礙禱穫穩簾簿簸簽簷籀繫繭繹繩繪羅繳羶羹羸臘藩藝藪藕藤藥藷蟻蠅蠍蟹蟾襠襟襖襞譁譜識證譚譎譏譆譙贈贊蹼蹲躇蹶蹬蹺蹴轔轎辭邊邋醱醮鏡鏑鏟鏃鏈鏜鏝鏖鏢鏍鏘鏤鏗鏨關隴難霪霧靡韜韻類�\".split(\"\");\nfor(j = 0; j != D[195].length; ++j) if(D[195][j].charCodeAt(0) !== 0xFFFD) { e[D[195][j]] = 49920 + j; d[49920 + j] = D[195][j];}\nD[196] = \"����������������������������������������������������������������願顛颼饅饉騖騙鬍鯨鯧鯖鯛鶉鵡鵲鵪鵬麒麗麓麴勸嚨嚷嚶嚴嚼壤孀孃孽寶巉懸懺攘攔攙曦朧櫬瀾瀰瀲爐獻瓏癢癥礦礪礬礫竇競籌籃籍糯糰辮繽繼����������������������������������纂罌耀臚艦藻藹蘑藺蘆蘋蘇蘊蠔蠕襤覺觸議譬警譯譟譫贏贍躉躁躅躂醴釋鐘鐃鏽闡霰飄饒饑馨騫騰騷騵鰓鰍鹹麵黨鼯齟齣齡儷儸囁囀囂夔屬巍懼懾攝攜斕曩櫻欄櫺殲灌爛犧瓖瓔癩矓籐纏續羼蘗蘭蘚蠣蠢蠡蠟襪襬覽譴�\".split(\"\");\nfor(j = 0; j != D[196].length; ++j) if(D[196][j].charCodeAt(0) !== 0xFFFD) { e[D[196][j]] = 50176 + j; d[50176 + j] = D[196][j];}\nD[197] = \"����������������������������������������������������������������護譽贓躊躍躋轟辯醺鐮鐳鐵鐺鐸鐲鐫闢霸霹露響顧顥饗驅驃驀騾髏魔魑鰭鰥鶯鶴鷂鶸麝黯鼙齜齦齧儼儻囈囊囉孿巔巒彎懿攤權歡灑灘玀瓤疊癮癬����������������������������������禳籠籟聾聽臟襲襯觼讀贖贗躑躓轡酈鑄鑑鑒霽霾韃韁顫饕驕驍髒鬚鱉鰱鰾鰻鷓鷗鼴齬齪龔囌巖戀攣攫攪曬欐瓚竊籤籣籥纓纖纔臢蘸蘿蠱變邐邏鑣鑠鑤靨顯饜驚驛驗髓體髑鱔鱗鱖鷥麟黴囑壩攬灞癱癲矗罐羈蠶蠹衢讓讒�\".split(\"\");\nfor(j = 0; j != D[197].length; ++j) if(D[197][j].charCodeAt(0) !== 0xFFFD) { e[D[197][j]] = 50432 + j; d[50432 + j] = D[197][j];}\nD[198] = \"����������������������������������������������������������������讖艷贛釀鑪靂靈靄韆顰驟鬢魘鱟鷹鷺鹼鹽鼇齷齲廳欖灣籬籮蠻觀躡釁鑲鑰顱饞髖鬣黌灤矚讚鑷韉驢驥纜讜躪釅鑽鑾鑼鱷鱸黷豔鑿鸚爨驪鬱鸛鸞籲�����������������������������������\".split(\"\");\nfor(j = 0; j != D[198].length; ++j) if(D[198][j].charCodeAt(0) !== 0xFFFD) { e[D[198][j]] = 50688 + j; d[50688 + j] = D[198][j];}\nD[199] = \"���������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[199].length; ++j) if(D[199][j].charCodeAt(0) !== 0xFFFD) { e[D[199][j]] = 50944 + j; d[50944 + j] = D[199][j];}\nD[200] = \"���������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[200].length; ++j) if(D[200][j].charCodeAt(0) !== 0xFFFD) { e[D[200][j]] = 51200 + j; d[51200 + j] = D[200][j];}\nD[201] = \"����������������������������������������������������������������乂乜凵匚厂万丌乇亍囗兀屮彳丏冇与丮亓仂仉仈冘勼卬厹圠夃夬尐巿旡殳毌气爿丱丼仨仜仩仡仝仚刌匜卌圢圣夗夯宁宄尒尻屴屳帄庀庂忉戉扐氕����������������������������������氶汃氿氻犮犰玊禸肊阞伎优伬仵伔仱伀价伈伝伂伅伢伓伄仴伒冱刓刉刐劦匢匟卍厊吇囡囟圮圪圴夼妀奼妅奻奾奷奿孖尕尥屼屺屻屾巟幵庄异弚彴忕忔忏扜扞扤扡扦扢扙扠扚扥旯旮朾朹朸朻机朿朼朳氘汆汒汜汏汊汔汋�\".split(\"\");\nfor(j = 0; j != D[201].length; ++j) if(D[201][j].charCodeAt(0) !== 0xFFFD) { e[D[201][j]] = 51456 + j; d[51456 + j] = D[201][j];}\nD[202] = \"����������������������������������������������������������������汌灱牞犴犵玎甪癿穵网艸艼芀艽艿虍襾邙邗邘邛邔阢阤阠阣佖伻佢佉体佤伾佧佒佟佁佘伭伳伿佡冏冹刜刞刡劭劮匉卣卲厎厏吰吷吪呔呅吙吜吥吘����������������������������������吽呏呁吨吤呇囮囧囥坁坅坌坉坋坒夆奀妦妘妠妗妎妢妐妏妧妡宎宒尨尪岍岏岈岋岉岒岊岆岓岕巠帊帎庋庉庌庈庍弅弝彸彶忒忑忐忭忨忮忳忡忤忣忺忯忷忻怀忴戺抃抌抎抏抔抇扱扻扺扰抁抈扷扽扲扴攷旰旴旳旲旵杅杇�\".split(\"\");\nfor(j = 0; j != D[202].length; ++j) if(D[202][j].charCodeAt(0) !== 0xFFFD) { e[D[202][j]] = 51712 + j; d[51712 + j] = D[202][j];}\nD[203] = \"����������������������������������������������������������������杙杕杌杈杝杍杚杋毐氙氚汸汧汫沄沋沏汱汯汩沚汭沇沕沜汦汳汥汻沎灴灺牣犿犽狃狆狁犺狅玕玗玓玔玒町甹疔疕皁礽耴肕肙肐肒肜芐芏芅芎芑芓����������������������������������芊芃芄豸迉辿邟邡邥邞邧邠阰阨阯阭丳侘佼侅佽侀侇佶佴侉侄佷佌侗佪侚佹侁佸侐侜侔侞侒侂侕佫佮冞冼冾刵刲刳剆刱劼匊匋匼厒厔咇呿咁咑咂咈呫呺呾呥呬呴呦咍呯呡呠咘呣呧呤囷囹坯坲坭坫坱坰坶垀坵坻坳坴坢�\".split(\"\");\nfor(j = 0; j != D[203].length; ++j) if(D[203][j].charCodeAt(0) !== 0xFFFD) { e[D[203][j]] = 51968 + j; d[51968 + j] = D[203][j];}\nD[204] = \"����������������������������������������������������������������坨坽夌奅妵妺姏姎妲姌姁妶妼姃姖妱妽姀姈妴姇孢孥宓宕屄屇岮岤岠岵岯岨岬岟岣岭岢岪岧岝岥岶岰岦帗帔帙弨弢弣弤彔徂彾彽忞忥怭怦怙怲怋����������������������������������怴怊怗怳怚怞怬怢怍怐怮怓怑怌怉怜戔戽抭抴拑抾抪抶拊抮抳抯抻抩抰抸攽斨斻昉旼昄昒昈旻昃昋昍昅旽昑昐曶朊枅杬枎枒杶杻枘枆构杴枍枌杺枟枑枙枃杽极杸杹枔欥殀歾毞氝沓泬泫泮泙沶泔沭泧沷泐泂沺泃泆泭泲�\".split(\"\");\nfor(j = 0; j != D[204].length; ++j) if(D[204][j].charCodeAt(0) !== 0xFFFD) { e[D[204][j]] = 52224 + j; d[52224 + j] = D[204][j];}\nD[205] = \"����������������������������������������������������������������泒泝沴沊沝沀泞泀洰泍泇沰泹泏泩泑炔炘炅炓炆炄炑炖炂炚炃牪狖狋狘狉狜狒狔狚狌狑玤玡玭玦玢玠玬玝瓝瓨甿畀甾疌疘皯盳盱盰盵矸矼矹矻矺����������������������������������矷祂礿秅穸穻竻籵糽耵肏肮肣肸肵肭舠芠苀芫芚芘芛芵芧芮芼芞芺芴芨芡芩苂芤苃芶芢虰虯虭虮豖迒迋迓迍迖迕迗邲邴邯邳邰阹阽阼阺陃俍俅俓侲俉俋俁俔俜俙侻侳俛俇俖侺俀侹俬剄剉勀勂匽卼厗厖厙厘咺咡咭咥哏�\".split(\"\");\nfor(j = 0; j != D[205].length; ++j) if(D[205][j].charCodeAt(0) !== 0xFFFD) { e[D[205][j]] = 52480 + j; d[52480 + j] = D[205][j];}\nD[206] = \"����������������������������������������������������������������哃茍咷咮哖咶哅哆咠呰咼咢咾呲哞咰垵垞垟垤垌垗垝垛垔垘垏垙垥垚垕壴复奓姡姞姮娀姱姝姺姽姼姶姤姲姷姛姩姳姵姠姾姴姭宨屌峐峘峌峗峋峛����������������������������������峞峚峉峇峊峖峓峔峏峈峆峎峟峸巹帡帢帣帠帤庰庤庢庛庣庥弇弮彖徆怷怹恔恲恞恅恓恇恉恛恌恀恂恟怤恄恘恦恮扂扃拏挍挋拵挎挃拫拹挏挌拸拶挀挓挔拺挕拻拰敁敃斪斿昶昡昲昵昜昦昢昳昫昺昝昴昹昮朏朐柁柲柈枺�\".split(\"\");\nfor(j = 0; j != D[206].length; ++j) if(D[206][j].charCodeAt(0) !== 0xFFFD) { e[D[206][j]] = 52736 + j; d[52736 + j] = D[206][j];}\nD[207] = \"����������������������������������������������������������������柜枻柸柘柀枷柅柫柤柟枵柍枳柷柶柮柣柂枹柎柧柰枲柼柆柭柌枮柦柛柺柉柊柃柪柋欨殂殄殶毖毘毠氠氡洨洴洭洟洼洿洒洊泚洳洄洙洺洚洑洀洝浂����������������������������������洁洘洷洃洏浀洇洠洬洈洢洉洐炷炟炾炱炰炡炴炵炩牁牉牊牬牰牳牮狊狤狨狫狟狪狦狣玅珌珂珈珅玹玶玵玴珫玿珇玾珃珆玸珋瓬瓮甮畇畈疧疪癹盄眈眃眄眅眊盷盻盺矧矨砆砑砒砅砐砏砎砉砃砓祊祌祋祅祄秕种秏秖秎窀�\".split(\"\");\nfor(j = 0; j != D[207].length; ++j) if(D[207][j].charCodeAt(0) !== 0xFFFD) { e[D[207][j]] = 52992 + j; d[52992 + j] = D[207][j];}\nD[208] = \"����������������������������������������������������������������穾竑笀笁籺籸籹籿粀粁紃紈紁罘羑羍羾耇耎耏耔耷胘胇胠胑胈胂胐胅胣胙胜胊胕胉胏胗胦胍臿舡芔苙苾苹茇苨茀苕茺苫苖苴苬苡苲苵茌苻苶苰苪����������������������������������苤苠苺苳苭虷虴虼虳衁衎衧衪衩觓訄訇赲迣迡迮迠郱邽邿郕郅邾郇郋郈釔釓陔陏陑陓陊陎倞倅倇倓倢倰倛俵俴倳倷倬俶俷倗倜倠倧倵倯倱倎党冔冓凊凄凅凈凎剡剚剒剞剟剕剢勍匎厞唦哢唗唒哧哳哤唚哿唄唈哫唑唅哱�\".split(\"\");\nfor(j = 0; j != D[208].length; ++j) if(D[208][j].charCodeAt(0) !== 0xFFFD) { e[D[208][j]] = 53248 + j; d[53248 + j] = D[208][j];}\nD[209] = \"����������������������������������������������������������������唊哻哷哸哠唎唃唋圁圂埌堲埕埒垺埆垽垼垸垶垿埇埐垹埁夎奊娙娖娭娮娕娏娗娊娞娳孬宧宭宬尃屖屔峬峿峮峱峷崀峹帩帨庨庮庪庬弳弰彧恝恚恧����������������������������������恁悢悈悀悒悁悝悃悕悛悗悇悜悎戙扆拲挐捖挬捄捅挶捃揤挹捋捊挼挩捁挴捘捔捙挭捇挳捚捑挸捗捀捈敊敆旆旃旄旂晊晟晇晑朒朓栟栚桉栲栳栻桋桏栖栱栜栵栫栭栯桎桄栴栝栒栔栦栨栮桍栺栥栠欬欯欭欱欴歭肂殈毦毤�\".split(\"\");\nfor(j = 0; j != D[209].length; ++j) if(D[209][j].charCodeAt(0) !== 0xFFFD) { e[D[209][j]] = 53504 + j; d[53504 + j] = D[209][j];}\nD[210] = \"����������������������������������������������������������������毨毣毢毧氥浺浣浤浶洍浡涒浘浢浭浯涑涍淯浿涆浞浧浠涗浰浼浟涂涘洯浨涋浾涀涄洖涃浻浽浵涐烜烓烑烝烋缹烢烗烒烞烠烔烍烅烆烇烚烎烡牂牸����������������������������������牷牶猀狺狴狾狶狳狻猁珓珙珥珖玼珧珣珩珜珒珛珔珝珚珗珘珨瓞瓟瓴瓵甡畛畟疰痁疻痄痀疿疶疺皊盉眝眛眐眓眒眣眑眕眙眚眢眧砣砬砢砵砯砨砮砫砡砩砳砪砱祔祛祏祜祓祒祑秫秬秠秮秭秪秜秞秝窆窉窅窋窌窊窇竘笐�\".split(\"\");\nfor(j = 0; j != D[210].length; ++j) if(D[210][j].charCodeAt(0) !== 0xFFFD) { e[D[210][j]] = 53760 + j; d[53760 + j] = D[210][j];}\nD[211] = \"����������������������������������������������������������������笄笓笅笏笈笊笎笉笒粄粑粊粌粈粍粅紞紝紑紎紘紖紓紟紒紏紌罜罡罞罠罝罛羖羒翃翂翀耖耾耹胺胲胹胵脁胻脀舁舯舥茳茭荄茙荑茥荖茿荁茦茜茢����������������������������������荂荎茛茪茈茼荍茖茤茠茷茯茩荇荅荌荓茞茬荋茧荈虓虒蚢蚨蚖蚍蚑蚞蚇蚗蚆蚋蚚蚅蚥蚙蚡蚧蚕蚘蚎蚝蚐蚔衃衄衭衵衶衲袀衱衿衯袃衾衴衼訒豇豗豻貤貣赶赸趵趷趶軑軓迾迵适迿迻逄迼迶郖郠郙郚郣郟郥郘郛郗郜郤酐�\".split(\"\");\nfor(j = 0; j != D[211].length; ++j) if(D[211][j].charCodeAt(0) !== 0xFFFD) { e[D[211][j]] = 54016 + j; d[54016 + j] = D[211][j];}\nD[212] = \"����������������������������������������������������������������酎酏釕釢釚陜陟隼飣髟鬯乿偰偪偡偞偠偓偋偝偲偈偍偁偛偊偢倕偅偟偩偫偣偤偆偀偮偳偗偑凐剫剭剬剮勖勓匭厜啵啶唼啍啐唴唪啑啢唶唵唰啒啅����������������������������������唌唲啥啎唹啈唭唻啀啋圊圇埻堔埢埶埜埴堀埭埽堈埸堋埳埏堇埮埣埲埥埬埡堎埼堐埧堁堌埱埩埰堍堄奜婠婘婕婧婞娸娵婭婐婟婥婬婓婤婗婃婝婒婄婛婈媎娾婍娹婌婰婩婇婑婖婂婜孲孮寁寀屙崞崋崝崚崠崌崨崍崦崥崏�\".split(\"\");\nfor(j = 0; j != D[212].length; ++j) if(D[212][j].charCodeAt(0) !== 0xFFFD) { e[D[212][j]] = 54272 + j; d[54272 + j] = D[212][j];}\nD[213] = \"����������������������������������������������������������������崰崒崣崟崮帾帴庱庴庹庲庳弶弸徛徖徟悊悐悆悾悰悺惓惔惏惤惙惝惈悱惛悷惊悿惃惍惀挲捥掊掂捽掽掞掭掝掗掫掎捯掇掐据掯捵掜捭掮捼掤挻掟����������������������������������捸掅掁掑掍捰敓旍晥晡晛晙晜晢朘桹梇梐梜桭桮梮梫楖桯梣梬梩桵桴梲梏桷梒桼桫桲梪梀桱桾梛梖梋梠梉梤桸桻梑梌梊桽欶欳欷欸殑殏殍殎殌氪淀涫涴涳湴涬淩淢涷淶淔渀淈淠淟淖涾淥淜淝淛淴淊涽淭淰涺淕淂淏淉�\".split(\"\");\nfor(j = 0; j != D[213].length; ++j) if(D[213][j].charCodeAt(0) !== 0xFFFD) { e[D[213][j]] = 54528 + j; d[54528 + j] = D[213][j];}\nD[214] = \"����������������������������������������������������������������淐淲淓淽淗淍淣涻烺焍烷焗烴焌烰焄烳焐烼烿焆焓焀烸烶焋焂焎牾牻牼牿猝猗猇猑猘猊猈狿猏猞玈珶珸珵琄琁珽琇琀珺珼珿琌琋珴琈畤畣痎痒痏����������������������������������痋痌痑痐皏皉盓眹眯眭眱眲眴眳眽眥眻眵硈硒硉硍硊硌砦硅硐祤祧祩祪祣祫祡离秺秸秶秷窏窔窐笵筇笴笥笰笢笤笳笘笪笝笱笫笭笯笲笸笚笣粔粘粖粣紵紽紸紶紺絅紬紩絁絇紾紿絊紻紨罣羕羜羝羛翊翋翍翐翑翇翏翉耟�\".split(\"\");\nfor(j = 0; j != D[214].length; ++j) if(D[214][j].charCodeAt(0) !== 0xFFFD) { e[D[214][j]] = 54784 + j; d[54784 + j] = D[214][j];}\nD[215] = \"����������������������������������������������������������������耞耛聇聃聈脘脥脙脛脭脟脬脞脡脕脧脝脢舑舸舳舺舴舲艴莐莣莨莍荺荳莤荴莏莁莕莙荵莔莩荽莃莌莝莛莪莋荾莥莯莈莗莰荿莦莇莮荶莚虙虖蚿蚷����������������������������������蛂蛁蛅蚺蚰蛈蚹蚳蚸蛌蚴蚻蚼蛃蚽蚾衒袉袕袨袢袪袚袑袡袟袘袧袙袛袗袤袬袌袓袎覂觖觙觕訰訧訬訞谹谻豜豝豽貥赽赻赹趼跂趹趿跁軘軞軝軜軗軠軡逤逋逑逜逌逡郯郪郰郴郲郳郔郫郬郩酖酘酚酓酕釬釴釱釳釸釤釹釪�\".split(\"\");\nfor(j = 0; j != D[215].length; ++j) if(D[215][j].charCodeAt(0) !== 0xFFFD) { e[D[215][j]] = 55040 + j; d[55040 + j] = D[215][j];}\nD[216] = \"����������������������������������������������������������������釫釷釨釮镺閆閈陼陭陫陱陯隿靪頄飥馗傛傕傔傞傋傣傃傌傎傝偨傜傒傂傇兟凔匒匑厤厧喑喨喥喭啷噅喢喓喈喏喵喁喣喒喤啽喌喦啿喕喡喎圌堩堷����������������������������������堙堞堧堣堨埵塈堥堜堛堳堿堶堮堹堸堭堬堻奡媯媔媟婺媢媞婸媦婼媥媬媕媮娷媄媊媗媃媋媩婻婽媌媜媏媓媝寪寍寋寔寑寊寎尌尰崷嵃嵫嵁嵋崿崵嵑嵎嵕崳崺嵒崽崱嵙嵂崹嵉崸崼崲崶嵀嵅幄幁彘徦徥徫惉悹惌惢惎惄愔�\".split(\"\");\nfor(j = 0; j != D[216].length; ++j) if(D[216][j].charCodeAt(0) !== 0xFFFD) { e[D[216][j]] = 55296 + j; d[55296 + j] = D[216][j];}\nD[217] = \"����������������������������������������������������������������惲愊愖愅惵愓惸惼惾惁愃愘愝愐惿愄愋扊掔掱掰揎揥揨揯揃撝揳揊揠揶揕揲揵摡揟掾揝揜揄揘揓揂揇揌揋揈揰揗揙攲敧敪敤敜敨敥斌斝斞斮旐旒����������������������������������晼晬晻暀晱晹晪晲朁椌棓椄棜椪棬棪棱椏棖棷棫棤棶椓椐棳棡椇棌椈楰梴椑棯棆椔棸棐棽棼棨椋椊椗棎棈棝棞棦棴棑椆棔棩椕椥棇欹欻欿欼殔殗殙殕殽毰毲毳氰淼湆湇渟湉溈渼渽湅湢渫渿湁湝湳渜渳湋湀湑渻渃渮湞�\".split(\"\");\nfor(j = 0; j != D[217].length; ++j) if(D[217][j].charCodeAt(0) !== 0xFFFD) { e[D[217][j]] = 55552 + j; d[55552 + j] = D[217][j];}\nD[218] = \"����������������������������������������������������������������湨湜湡渱渨湠湱湫渹渢渰湓湥渧湸湤湷湕湹湒湦渵渶湚焠焞焯烻焮焱焣焥焢焲焟焨焺焛牋牚犈犉犆犅犋猒猋猰猢猱猳猧猲猭猦猣猵猌琮琬琰琫琖����������������������������������琚琡琭琱琤琣琝琩琠琲瓻甯畯畬痧痚痡痦痝痟痤痗皕皒盚睆睇睄睍睅睊睎睋睌矞矬硠硤硥硜硭硱硪确硰硩硨硞硢祴祳祲祰稂稊稃稌稄窙竦竤筊笻筄筈筌筎筀筘筅粢粞粨粡絘絯絣絓絖絧絪絏絭絜絫絒絔絩絑絟絎缾缿罥�\".split(\"\");\nfor(j = 0; j != D[218].length; ++j) if(D[218][j].charCodeAt(0) !== 0xFFFD) { e[D[218][j]] = 55808 + j; d[55808 + j] = D[218][j];}\nD[219] = \"����������������������������������������������������������������罦羢羠羡翗聑聏聐胾胔腃腊腒腏腇脽腍脺臦臮臷臸臹舄舼舽舿艵茻菏菹萣菀菨萒菧菤菼菶萐菆菈菫菣莿萁菝菥菘菿菡菋菎菖菵菉萉萏菞萑萆菂菳����������������������������������菕菺菇菑菪萓菃菬菮菄菻菗菢萛菛菾蛘蛢蛦蛓蛣蛚蛪蛝蛫蛜蛬蛩蛗蛨蛑衈衖衕袺裗袹袸裀袾袶袼袷袽袲褁裉覕覘覗觝觚觛詎詍訹詙詀詗詘詄詅詒詈詑詊詌詏豟貁貀貺貾貰貹貵趄趀趉跘跓跍跇跖跜跏跕跙跈跗跅軯軷軺�\".split(\"\");\nfor(j = 0; j != D[219].length; ++j) if(D[219][j].charCodeAt(0) !== 0xFFFD) { e[D[219][j]] = 56064 + j; d[56064 + j] = D[219][j];}\nD[220] = \"����������������������������������������������������������������軹軦軮軥軵軧軨軶軫軱軬軴軩逭逴逯鄆鄬鄄郿郼鄈郹郻鄁鄀鄇鄅鄃酡酤酟酢酠鈁鈊鈥鈃鈚鈦鈏鈌鈀鈒釿釽鈆鈄鈧鈂鈜鈤鈙鈗鈅鈖镻閍閌閐隇陾隈����������������������������������隉隃隀雂雈雃雱雰靬靰靮頇颩飫鳦黹亃亄亶傽傿僆傮僄僊傴僈僂傰僁傺傱僋僉傶傸凗剺剸剻剼嗃嗛嗌嗐嗋嗊嗝嗀嗔嗄嗩喿嗒喍嗏嗕嗢嗖嗈嗲嗍嗙嗂圔塓塨塤塏塍塉塯塕塎塝塙塥塛堽塣塱壼嫇嫄嫋媺媸媱媵媰媿嫈媻嫆�\".split(\"\");\nfor(j = 0; j != D[220].length; ++j) if(D[220][j].charCodeAt(0) !== 0xFFFD) { e[D[220][j]] = 56320 + j; d[56320 + j] = D[220][j];}\nD[221] = \"����������������������������������������������������������������媷嫀嫊媴媶嫍媹媐寖寘寙尟尳嵱嵣嵊嵥嵲嵬嵞嵨嵧嵢巰幏幎幊幍幋廅廌廆廋廇彀徯徭惷慉慊愫慅愶愲愮慆愯慏愩慀戠酨戣戥戤揅揱揫搐搒搉搠搤����������������������������������搳摃搟搕搘搹搷搢搣搌搦搰搨摁搵搯搊搚摀搥搧搋揧搛搮搡搎敯斒旓暆暌暕暐暋暊暙暔晸朠楦楟椸楎楢楱椿楅楪椹楂楗楙楺楈楉椵楬椳椽楥棰楸椴楩楀楯楄楶楘楁楴楌椻楋椷楜楏楑椲楒椯楻椼歆歅歃歂歈歁殛嗀毻毼�\".split(\"\");\nfor(j = 0; j != D[221].length; ++j) if(D[221][j].charCodeAt(0) !== 0xFFFD) { e[D[221][j]] = 56576 + j; d[56576 + j] = D[221][j];}\nD[222] = \"����������������������������������������������������������������毹毷毸溛滖滈溏滀溟溓溔溠溱溹滆滒溽滁溞滉溷溰滍溦滏溲溾滃滜滘溙溒溎溍溤溡溿溳滐滊溗溮溣煇煔煒煣煠煁煝煢煲煸煪煡煂煘煃煋煰煟煐煓����������������������������������煄煍煚牏犍犌犑犐犎猼獂猻猺獀獊獉瑄瑊瑋瑒瑑瑗瑀瑏瑐瑎瑂瑆瑍瑔瓡瓿瓾瓽甝畹畷榃痯瘏瘃痷痾痼痹痸瘐痻痶痭痵痽皙皵盝睕睟睠睒睖睚睩睧睔睙睭矠碇碚碔碏碄碕碅碆碡碃硹碙碀碖硻祼禂祽祹稑稘稙稒稗稕稢稓�\".split(\"\");\nfor(j = 0; j != D[222].length; ++j) if(D[222][j].charCodeAt(0) !== 0xFFFD) { e[D[222][j]] = 56832 + j; d[56832 + j] = D[222][j];}\nD[223] = \"����������������������������������������������������������������稛稐窣窢窞竫筦筤筭筴筩筲筥筳筱筰筡筸筶筣粲粴粯綈綆綀綍絿綅絺綎絻綃絼綌綔綄絽綒罭罫罧罨罬羦羥羧翛翜耡腤腠腷腜腩腛腢腲朡腞腶腧腯����������������������������������腄腡舝艉艄艀艂艅蓱萿葖葶葹蒏蒍葥葑葀蒆葧萰葍葽葚葙葴葳葝蔇葞萷萺萴葺葃葸萲葅萩菙葋萯葂萭葟葰萹葎葌葒葯蓅蒎萻葇萶萳葨葾葄萫葠葔葮葐蜋蜄蛷蜌蛺蛖蛵蝍蛸蜎蜉蜁蛶蜍蜅裖裋裍裎裞裛裚裌裐覅覛觟觥觤�\".split(\"\");\nfor(j = 0; j != D[223].length; ++j) if(D[223][j].charCodeAt(0) !== 0xFFFD) { e[D[223][j]] = 57088 + j; d[57088 + j] = D[223][j];}\nD[224] = \"����������������������������������������������������������������觡觠觢觜触詶誆詿詡訿詷誂誄詵誃誁詴詺谼豋豊豥豤豦貆貄貅賌赨赩趑趌趎趏趍趓趔趐趒跰跠跬跱跮跐跩跣跢跧跲跫跴輆軿輁輀輅輇輈輂輋遒逿����������������������������������遄遉逽鄐鄍鄏鄑鄖鄔鄋鄎酮酯鉈鉒鈰鈺鉦鈳鉥鉞銃鈮鉊鉆鉭鉬鉏鉠鉧鉯鈶鉡鉰鈱鉔鉣鉐鉲鉎鉓鉌鉖鈲閟閜閞閛隒隓隑隗雎雺雽雸雵靳靷靸靲頏頍頎颬飶飹馯馲馰馵骭骫魛鳪鳭鳧麀黽僦僔僗僨僳僛僪僝僤僓僬僰僯僣僠�\".split(\"\");\nfor(j = 0; j != D[224].length; ++j) if(D[224][j].charCodeAt(0) !== 0xFFFD) { e[D[224][j]] = 57344 + j; d[57344 + j] = D[224][j];}\nD[225] = \"����������������������������������������������������������������凘劀劁勩勫匰厬嘧嘕嘌嘒嗼嘏嘜嘁嘓嘂嗺嘝嘄嗿嗹墉塼墐墘墆墁塿塴墋塺墇墑墎塶墂墈塻墔墏壾奫嫜嫮嫥嫕嫪嫚嫭嫫嫳嫢嫠嫛嫬嫞嫝嫙嫨嫟孷寠����������������������������������寣屣嶂嶀嵽嶆嵺嶁嵷嶊嶉嶈嵾嵼嶍嵹嵿幘幙幓廘廑廗廎廜廕廙廒廔彄彃彯徶愬愨慁慞慱慳慒慓慲慬憀慴慔慺慛慥愻慪慡慖戩戧戫搫摍摛摝摴摶摲摳摽摵摦撦摎撂摞摜摋摓摠摐摿搿摬摫摙摥摷敳斠暡暠暟朅朄朢榱榶槉�\".split(\"\");\nfor(j = 0; j != D[225].length; ++j) if(D[225][j].charCodeAt(0) !== 0xFFFD) { e[D[225][j]] = 57600 + j; d[57600 + j] = D[225][j];}\nD[226] = \"����������������������������������������������������������������榠槎榖榰榬榼榑榙榎榧榍榩榾榯榿槄榽榤槔榹槊榚槏榳榓榪榡榞槙榗榐槂榵榥槆歊歍歋殞殟殠毃毄毾滎滵滱漃漥滸漷滻漮漉潎漙漚漧漘漻漒滭漊����������������������������������漶潳滹滮漭潀漰漼漵滫漇漎潃漅滽滶漹漜滼漺漟漍漞漈漡熇熐熉熀熅熂熏煻熆熁熗牄牓犗犕犓獃獍獑獌瑢瑳瑱瑵瑲瑧瑮甀甂甃畽疐瘖瘈瘌瘕瘑瘊瘔皸瞁睼瞅瞂睮瞀睯睾瞃碲碪碴碭碨硾碫碞碥碠碬碢碤禘禊禋禖禕禔禓�\".split(\"\");\nfor(j = 0; j != D[226].length; ++j) if(D[226][j].charCodeAt(0) !== 0xFFFD) { e[D[226][j]] = 57856 + j; d[57856 + j] = D[226][j];}\nD[227] = \"����������������������������������������������������������������禗禈禒禐稫穊稰稯稨稦窨窫窬竮箈箜箊箑箐箖箍箌箛箎箅箘劄箙箤箂粻粿粼粺綧綷緂綣綪緁緀緅綝緎緄緆緋緌綯綹綖綼綟綦綮綩綡緉罳翢翣翥翞����������������������������������耤聝聜膉膆膃膇膍膌膋舕蒗蒤蒡蒟蒺蓎蓂蒬蒮蒫蒹蒴蓁蓍蒪蒚蒱蓐蒝蒧蒻蒢蒔蓇蓌蒛蒩蒯蒨蓖蒘蒶蓏蒠蓗蓔蓒蓛蒰蒑虡蜳蜣蜨蝫蝀蜮蜞蜡蜙蜛蝃蜬蝁蜾蝆蜠蜲蜪蜭蜼蜒蜺蜱蜵蝂蜦蜧蜸蜤蜚蜰蜑裷裧裱裲裺裾裮裼裶裻�\".split(\"\");\nfor(j = 0; j != D[227].length; ++j) if(D[227][j].charCodeAt(0) !== 0xFFFD) { e[D[227][j]] = 58112 + j; d[58112 + j] = D[227][j];}\nD[228] = \"����������������������������������������������������������������裰裬裫覝覡覟覞觩觫觨誫誙誋誒誏誖谽豨豩賕賏賗趖踉踂跿踍跽踊踃踇踆踅跾踀踄輐輑輎輍鄣鄜鄠鄢鄟鄝鄚鄤鄡鄛酺酲酹酳銥銤鉶銛鉺銠銔銪銍����������������������������������銦銚銫鉹銗鉿銣鋮銎銂銕銢鉽銈銡銊銆銌銙銧鉾銇銩銝銋鈭隞隡雿靘靽靺靾鞃鞀鞂靻鞄鞁靿韎韍頖颭颮餂餀餇馝馜駃馹馻馺駂馽駇骱髣髧鬾鬿魠魡魟鳱鳲鳵麧僿儃儰僸儆儇僶僾儋儌僽儊劋劌勱勯噈噂噌嘵噁噊噉噆噘�\".split(\"\");\nfor(j = 0; j != D[228].length; ++j) if(D[228][j].charCodeAt(0) !== 0xFFFD) { e[D[228][j]] = 58368 + j; d[58368 + j] = D[228][j];}\nD[229] = \"����������������������������������������������������������������噚噀嘳嘽嘬嘾嘸嘪嘺圚墫墝墱墠墣墯墬墥墡壿嫿嫴嫽嫷嫶嬃嫸嬂嫹嬁嬇嬅嬏屧嶙嶗嶟嶒嶢嶓嶕嶠嶜嶡嶚嶞幩幝幠幜緳廛廞廡彉徲憋憃慹憱憰憢憉����������������������������������憛憓憯憭憟憒憪憡憍慦憳戭摮摰撖撠撅撗撜撏撋撊撌撣撟摨撱撘敶敺敹敻斲斳暵暰暩暲暷暪暯樀樆樗槥槸樕槱槤樠槿槬槢樛樝槾樧槲槮樔槷槧橀樈槦槻樍槼槫樉樄樘樥樏槶樦樇槴樖歑殥殣殢殦氁氀毿氂潁漦潾澇濆澒�\".split(\"\");\nfor(j = 0; j != D[229].length; ++j) if(D[229][j].charCodeAt(0) !== 0xFFFD) { e[D[229][j]] = 58624 + j; d[58624 + j] = D[229][j];}\nD[230] = \"����������������������������������������������������������������澍澉澌潢潏澅潚澖潶潬澂潕潲潒潐潗澔澓潝漀潡潫潽潧澐潓澋潩潿澕潣潷潪潻熲熯熛熰熠熚熩熵熝熥熞熤熡熪熜熧熳犘犚獘獒獞獟獠獝獛獡獚獙����������������������������������獢璇璉璊璆璁瑽璅璈瑼瑹甈甇畾瘥瘞瘙瘝瘜瘣瘚瘨瘛皜皝皞皛瞍瞏瞉瞈磍碻磏磌磑磎磔磈磃磄磉禚禡禠禜禢禛歶稹窲窴窳箷篋箾箬篎箯箹篊箵糅糈糌糋緷緛緪緧緗緡縃緺緦緶緱緰緮緟罶羬羰羭翭翫翪翬翦翨聤聧膣膟�\".split(\"\");\nfor(j = 0; j != D[230].length; ++j) if(D[230][j].charCodeAt(0) !== 0xFFFD) { e[D[230][j]] = 58880 + j; d[58880 + j] = D[230][j];}\nD[231] = \"����������������������������������������������������������������膞膕膢膙膗舖艏艓艒艐艎艑蔤蔻蔏蔀蔩蔎蔉蔍蔟蔊蔧蔜蓻蔫蓺蔈蔌蓴蔪蓲蔕蓷蓫蓳蓼蔒蓪蓩蔖蓾蔨蔝蔮蔂蓽蔞蓶蔱蔦蓧蓨蓰蓯蓹蔘蔠蔰蔋蔙蔯虢����������������������������������蝖蝣蝤蝷蟡蝳蝘蝔蝛蝒蝡蝚蝑蝞蝭蝪蝐蝎蝟蝝蝯蝬蝺蝮蝜蝥蝏蝻蝵蝢蝧蝩衚褅褌褔褋褗褘褙褆褖褑褎褉覢覤覣觭觰觬諏諆誸諓諑諔諕誻諗誾諀諅諘諃誺誽諙谾豍貏賥賟賙賨賚賝賧趠趜趡趛踠踣踥踤踮踕踛踖踑踙踦踧�\".split(\"\");\nfor(j = 0; j != D[231].length; ++j) if(D[231][j].charCodeAt(0) !== 0xFFFD) { e[D[231][j]] = 59136 + j; d[59136 + j] = D[231][j];}\nD[232] = \"����������������������������������������������������������������踔踒踘踓踜踗踚輬輤輘輚輠輣輖輗遳遰遯遧遫鄯鄫鄩鄪鄲鄦鄮醅醆醊醁醂醄醀鋐鋃鋄鋀鋙銶鋏鋱鋟鋘鋩鋗鋝鋌鋯鋂鋨鋊鋈鋎鋦鋍鋕鋉鋠鋞鋧鋑鋓����������������������������������銵鋡鋆銴镼閬閫閮閰隤隢雓霅霈霂靚鞊鞎鞈韐韏頞頝頦頩頨頠頛頧颲餈飺餑餔餖餗餕駜駍駏駓駔駎駉駖駘駋駗駌骳髬髫髳髲髱魆魃魧魴魱魦魶魵魰魨魤魬鳼鳺鳽鳿鳷鴇鴀鳹鳻鴈鴅鴄麃黓鼏鼐儜儓儗儚儑凞匴叡噰噠噮�\".split(\"\");\nfor(j = 0; j != D[232].length; ++j) if(D[232][j].charCodeAt(0) !== 0xFFFD) { e[D[232][j]] = 59392 + j; d[59392 + j] = D[232][j];}\nD[233] = \"����������������������������������������������������������������噳噦噣噭噲噞噷圜圛壈墽壉墿墺壂墼壆嬗嬙嬛嬡嬔嬓嬐嬖嬨嬚嬠嬞寯嶬嶱嶩嶧嶵嶰嶮嶪嶨嶲嶭嶯嶴幧幨幦幯廩廧廦廨廥彋徼憝憨憖懅憴懆懁懌憺����������������������������������憿憸憌擗擖擐擏擉撽撉擃擛擳擙攳敿敼斢曈暾曀曊曋曏暽暻暺曌朣樴橦橉橧樲橨樾橝橭橶橛橑樨橚樻樿橁橪橤橐橏橔橯橩橠樼橞橖橕橍橎橆歕歔歖殧殪殫毈毇氄氃氆澭濋澣濇澼濎濈潞濄澽澞濊澨瀄澥澮澺澬澪濏澿澸�\".split(\"\");\nfor(j = 0; j != D[233].length; ++j) if(D[233][j].charCodeAt(0) !== 0xFFFD) { e[D[233][j]] = 59648 + j; d[59648 + j] = D[233][j];}\nD[234] = \"����������������������������������������������������������������澢濉澫濍澯澲澰燅燂熿熸燖燀燁燋燔燊燇燏熽燘熼燆燚燛犝犞獩獦獧獬獥獫獪瑿璚璠璔璒璕璡甋疀瘯瘭瘱瘽瘳瘼瘵瘲瘰皻盦瞚瞝瞡瞜瞛瞢瞣瞕瞙����������������������������������瞗磝磩磥磪磞磣磛磡磢磭磟磠禤穄穈穇窶窸窵窱窷篞篣篧篝篕篥篚篨篹篔篪篢篜篫篘篟糒糔糗糐糑縒縡縗縌縟縠縓縎縜縕縚縢縋縏縖縍縔縥縤罃罻罼罺羱翯耪耩聬膱膦膮膹膵膫膰膬膴膲膷膧臲艕艖艗蕖蕅蕫蕍蕓蕡蕘�\".split(\"\");\nfor(j = 0; j != D[234].length; ++j) if(D[234][j].charCodeAt(0) !== 0xFFFD) { e[D[234][j]] = 59904 + j; d[59904 + j] = D[234][j];}\nD[235] = \"����������������������������������������������������������������蕀蕆蕤蕁蕢蕄蕑蕇蕣蔾蕛蕱蕎蕮蕵蕕蕧蕠薌蕦蕝蕔蕥蕬虣虥虤螛螏螗螓螒螈螁螖螘蝹螇螣螅螐螑螝螄螔螜螚螉褞褦褰褭褮褧褱褢褩褣褯褬褟觱諠����������������������������������諢諲諴諵諝謔諤諟諰諈諞諡諨諿諯諻貑貒貐賵賮賱賰賳赬赮趥趧踳踾踸蹀蹅踶踼踽蹁踰踿躽輶輮輵輲輹輷輴遶遹遻邆郺鄳鄵鄶醓醐醑醍醏錧錞錈錟錆錏鍺錸錼錛錣錒錁鍆錭錎錍鋋錝鋺錥錓鋹鋷錴錂錤鋿錩錹錵錪錔錌�\".split(\"\");\nfor(j = 0; j != D[235].length; ++j) if(D[235][j].charCodeAt(0) !== 0xFFFD) { e[D[235][j]] = 60160 + j; d[60160 + j] = D[235][j];}\nD[236] = \"����������������������������������������������������������������錋鋾錉錀鋻錖閼闍閾閹閺閶閿閵閽隩雔霋霒霐鞙鞗鞔韰韸頵頯頲餤餟餧餩馞駮駬駥駤駰駣駪駩駧骹骿骴骻髶髺髹髷鬳鮀鮅鮇魼魾魻鮂鮓鮒鮐魺鮕����������������������������������魽鮈鴥鴗鴠鴞鴔鴩鴝鴘鴢鴐鴙鴟麈麆麇麮麭黕黖黺鼒鼽儦儥儢儤儠儩勴嚓嚌嚍嚆嚄嚃噾嚂噿嚁壖壔壏壒嬭嬥嬲嬣嬬嬧嬦嬯嬮孻寱寲嶷幬幪徾徻懃憵憼懧懠懥懤懨懞擯擩擣擫擤擨斁斀斶旚曒檍檖檁檥檉檟檛檡檞檇檓檎�\".split(\"\");\nfor(j = 0; j != D[236].length; ++j) if(D[236][j].charCodeAt(0) !== 0xFFFD) { e[D[236][j]] = 60416 + j; d[60416 + j] = D[236][j];}\nD[237] = \"����������������������������������������������������������������檕檃檨檤檑橿檦檚檅檌檒歛殭氉濌澩濴濔濣濜濭濧濦濞濲濝濢濨燡燱燨燲燤燰燢獳獮獯璗璲璫璐璪璭璱璥璯甐甑甒甏疄癃癈癉癇皤盩瞵瞫瞲瞷瞶����������������������������������瞴瞱瞨矰磳磽礂磻磼磲礅磹磾礄禫禨穜穛穖穘穔穚窾竀竁簅簏篲簀篿篻簎篴簋篳簂簉簃簁篸篽簆篰篱簐簊糨縭縼繂縳顈縸縪繉繀繇縩繌縰縻縶繄縺罅罿罾罽翴翲耬膻臄臌臊臅臇膼臩艛艚艜薃薀薏薧薕薠薋薣蕻薤薚薞�\".split(\"\");\nfor(j = 0; j != D[237].length; ++j) if(D[237][j].charCodeAt(0) !== 0xFFFD) { e[D[237][j]] = 60672 + j; d[60672 + j] = D[237][j];}\nD[238] = \"����������������������������������������������������������������蕷蕼薉薡蕺蕸蕗薎薖薆薍薙薝薁薢薂薈薅蕹蕶薘薐薟虨螾螪螭蟅螰螬螹螵螼螮蟉蟃蟂蟌螷螯蟄蟊螴螶螿螸螽蟞螲褵褳褼褾襁襒褷襂覭覯覮觲觳謞����������������������������������謘謖謑謅謋謢謏謒謕謇謍謈謆謜謓謚豏豰豲豱豯貕貔賹赯蹎蹍蹓蹐蹌蹇轃轀邅遾鄸醚醢醛醙醟醡醝醠鎡鎃鎯鍤鍖鍇鍼鍘鍜鍶鍉鍐鍑鍠鍭鎏鍌鍪鍹鍗鍕鍒鍏鍱鍷鍻鍡鍞鍣鍧鎀鍎鍙闇闀闉闃闅閷隮隰隬霠霟霘霝霙鞚鞡鞜�\".split(\"\");\nfor(j = 0; j != D[238].length; ++j) if(D[238][j].charCodeAt(0) !== 0xFFFD) { e[D[238][j]] = 60928 + j; d[60928 + j] = D[238][j];}\nD[239] = \"����������������������������������������������������������������鞞鞝韕韔韱顁顄顊顉顅顃餥餫餬餪餳餲餯餭餱餰馘馣馡騂駺駴駷駹駸駶駻駽駾駼騃骾髾髽鬁髼魈鮚鮨鮞鮛鮦鮡鮥鮤鮆鮢鮠鮯鴳鵁鵧鴶鴮鴯鴱鴸鴰����������������������������������鵅鵂鵃鴾鴷鵀鴽翵鴭麊麉麍麰黈黚黻黿鼤鼣鼢齔龠儱儭儮嚘嚜嚗嚚嚝嚙奰嬼屩屪巀幭幮懘懟懭懮懱懪懰懫懖懩擿攄擽擸攁攃擼斔旛曚曛曘櫅檹檽櫡櫆檺檶檷櫇檴檭歞毉氋瀇瀌瀍瀁瀅瀔瀎濿瀀濻瀦濼濷瀊爁燿燹爃燽獶�\".split(\"\");\nfor(j = 0; j != D[239].length; ++j) if(D[239][j].charCodeAt(0) !== 0xFFFD) { e[D[239][j]] = 61184 + j; d[61184 + j] = D[239][j];}\nD[240] = \"����������������������������������������������������������������璸瓀璵瓁璾璶璻瓂甔甓癜癤癙癐癓癗癚皦皽盬矂瞺磿礌礓礔礉礐礒礑禭禬穟簜簩簙簠簟簭簝簦簨簢簥簰繜繐繖繣繘繢繟繑繠繗繓羵羳翷翸聵臑臒����������������������������������臐艟艞薴藆藀藃藂薳薵薽藇藄薿藋藎藈藅薱薶藒蘤薸薷薾虩蟧蟦蟢蟛蟫蟪蟥蟟蟳蟤蟔蟜蟓蟭蟘蟣螤蟗蟙蠁蟴蟨蟝襓襋襏襌襆襐襑襉謪謧謣謳謰謵譇謯謼謾謱謥謷謦謶謮謤謻謽謺豂豵貙貘貗賾贄贂贀蹜蹢蹠蹗蹖蹞蹥蹧�\".split(\"\");\nfor(j = 0; j != D[240].length; ++j) if(D[240][j].charCodeAt(0) !== 0xFFFD) { e[D[240][j]] = 61440 + j; d[61440 + j] = D[240][j];}\nD[241] = \"����������������������������������������������������������������蹛蹚蹡蹝蹩蹔轆轇轈轋鄨鄺鄻鄾醨醥醧醯醪鎵鎌鎒鎷鎛鎝鎉鎧鎎鎪鎞鎦鎕鎈鎙鎟鎍鎱鎑鎲鎤鎨鎴鎣鎥闒闓闑隳雗雚巂雟雘雝霣霢霥鞬鞮鞨鞫鞤鞪����������������������������������鞢鞥韗韙韖韘韺顐顑顒颸饁餼餺騏騋騉騍騄騑騊騅騇騆髀髜鬈鬄鬅鬩鬵魊魌魋鯇鯆鯃鮿鯁鮵鮸鯓鮶鯄鮹鮽鵜鵓鵏鵊鵛鵋鵙鵖鵌鵗鵒鵔鵟鵘鵚麎麌黟鼁鼀鼖鼥鼫鼪鼩鼨齌齕儴儵劖勷厴嚫嚭嚦嚧嚪嚬壚壝壛夒嬽嬾嬿巃幰�\".split(\"\");\nfor(j = 0; j != D[241].length; ++j) if(D[241][j].charCodeAt(0) !== 0xFFFD) { e[D[241][j]] = 61696 + j; d[61696 + j] = D[241][j];}\nD[242] = \"����������������������������������������������������������������徿懻攇攐攍攉攌攎斄旞旝曞櫧櫠櫌櫑櫙櫋櫟櫜櫐櫫櫏櫍櫞歠殰氌瀙瀧瀠瀖瀫瀡瀢瀣瀩瀗瀤瀜瀪爌爊爇爂爅犥犦犤犣犡瓋瓅璷瓃甖癠矉矊矄矱礝礛����������������������������������礡礜礗礞禰穧穨簳簼簹簬簻糬糪繶繵繸繰繷繯繺繲繴繨罋罊羃羆羷翽翾聸臗臕艤艡艣藫藱藭藙藡藨藚藗藬藲藸藘藟藣藜藑藰藦藯藞藢蠀蟺蠃蟶蟷蠉蠌蠋蠆蟼蠈蟿蠊蠂襢襚襛襗襡襜襘襝襙覈覷覶觶譐譈譊譀譓譖譔譋譕�\".split(\"\");\nfor(j = 0; j != D[242].length; ++j) if(D[242][j].charCodeAt(0) !== 0xFFFD) { e[D[242][j]] = 61952 + j; d[61952 + j] = D[242][j];}\nD[243] = \"����������������������������������������������������������������譑譂譒譗豃豷豶貚贆贇贉趬趪趭趫蹭蹸蹳蹪蹯蹻軂轒轑轏轐轓辴酀鄿醰醭鏞鏇鏏鏂鏚鏐鏹鏬鏌鏙鎩鏦鏊鏔鏮鏣鏕鏄鏎鏀鏒鏧镽闚闛雡霩霫霬霨霦����������������������������������鞳鞷鞶韝韞韟顜顙顝顗颿颽颻颾饈饇饃馦馧騚騕騥騝騤騛騢騠騧騣騞騜騔髂鬋鬊鬎鬌鬷鯪鯫鯠鯞鯤鯦鯢鯰鯔鯗鯬鯜鯙鯥鯕鯡鯚鵷鶁鶊鶄鶈鵱鶀鵸鶆鶋鶌鵽鵫鵴鵵鵰鵩鶅鵳鵻鶂鵯鵹鵿鶇鵨麔麑黀黼鼭齀齁齍齖齗齘匷嚲�\".split(\"\");\nfor(j = 0; j != D[243].length; ++j) if(D[243][j].charCodeAt(0) !== 0xFFFD) { e[D[243][j]] = 62208 + j; d[62208 + j] = D[243][j];}\nD[244] = \"����������������������������������������������������������������嚵嚳壣孅巆巇廮廯忀忁懹攗攖攕攓旟曨曣曤櫳櫰櫪櫨櫹櫱櫮櫯瀼瀵瀯瀷瀴瀱灂瀸瀿瀺瀹灀瀻瀳灁爓爔犨獽獼璺皫皪皾盭矌矎矏矍矲礥礣礧礨礤礩����������������������������������禲穮穬穭竷籉籈籊籇籅糮繻繾纁纀羺翿聹臛臙舋艨艩蘢藿蘁藾蘛蘀藶蘄蘉蘅蘌藽蠙蠐蠑蠗蠓蠖襣襦覹觷譠譪譝譨譣譥譧譭趮躆躈躄轙轖轗轕轘轚邍酃酁醷醵醲醳鐋鐓鏻鐠鐏鐔鏾鐕鐐鐨鐙鐍鏵鐀鏷鐇鐎鐖鐒鏺鐉鏸鐊鏿�\".split(\"\");\nfor(j = 0; j != D[244].length; ++j) if(D[244][j].charCodeAt(0) !== 0xFFFD) { e[D[244][j]] = 62464 + j; d[62464 + j] = D[244][j];}\nD[245] = \"����������������������������������������������������������������鏼鐌鏶鐑鐆闞闠闟霮霯鞹鞻韽韾顠顢顣顟飁飂饐饎饙饌饋饓騲騴騱騬騪騶騩騮騸騭髇髊髆鬐鬒鬑鰋鰈鯷鰅鰒鯸鱀鰇鰎鰆鰗鰔鰉鶟鶙鶤鶝鶒鶘鶐鶛����������������������������������鶠鶔鶜鶪鶗鶡鶚鶢鶨鶞鶣鶿鶩鶖鶦鶧麙麛麚黥黤黧黦鼰鼮齛齠齞齝齙龑儺儹劘劗囃嚽嚾孈孇巋巏廱懽攛欂櫼欃櫸欀灃灄灊灈灉灅灆爝爚爙獾甗癪矐礭礱礯籔籓糲纊纇纈纋纆纍罍羻耰臝蘘蘪蘦蘟蘣蘜蘙蘧蘮蘡蘠蘩蘞蘥�\".split(\"\");\nfor(j = 0; j != D[245].length; ++j) if(D[245][j].charCodeAt(0) !== 0xFFFD) { e[D[245][j]] = 62720 + j; d[62720 + j] = D[245][j];}\nD[246] = \"����������������������������������������������������������������蠩蠝蠛蠠蠤蠜蠫衊襭襩襮襫觺譹譸譅譺譻贐贔趯躎躌轞轛轝酆酄酅醹鐿鐻鐶鐩鐽鐼鐰鐹鐪鐷鐬鑀鐱闥闤闣霵霺鞿韡顤飉飆飀饘饖騹騽驆驄驂驁騺����������������������������������騿髍鬕鬗鬘鬖鬺魒鰫鰝鰜鰬鰣鰨鰩鰤鰡鶷鶶鶼鷁鷇鷊鷏鶾鷅鷃鶻鶵鷎鶹鶺鶬鷈鶱鶭鷌鶳鷍鶲鹺麜黫黮黭鼛鼘鼚鼱齎齥齤龒亹囆囅囋奱孋孌巕巑廲攡攠攦攢欋欈欉氍灕灖灗灒爞爟犩獿瓘瓕瓙瓗癭皭礵禴穰穱籗籜籙籛籚�\".split(\"\");\nfor(j = 0; j != D[246].length; ++j) if(D[246][j].charCodeAt(0) !== 0xFFFD) { e[D[246][j]] = 62976 + j; d[62976 + j] = D[246][j];}\nD[247] = \"����������������������������������������������������������������糴糱纑罏羇臞艫蘴蘵蘳蘬蘲蘶蠬蠨蠦蠪蠥襱覿覾觻譾讄讂讆讅譿贕躕躔躚躒躐躖躗轠轢酇鑌鑐鑊鑋鑏鑇鑅鑈鑉鑆霿韣顪顩飋饔饛驎驓驔驌驏驈驊����������������������������������驉驒驐髐鬙鬫鬻魖魕鱆鱈鰿鱄鰹鰳鱁鰼鰷鰴鰲鰽鰶鷛鷒鷞鷚鷋鷐鷜鷑鷟鷩鷙鷘鷖鷵鷕鷝麶黰鼵鼳鼲齂齫龕龢儽劙壨壧奲孍巘蠯彏戁戃戄攩攥斖曫欑欒欏毊灛灚爢玂玁玃癰矔籧籦纕艬蘺虀蘹蘼蘱蘻蘾蠰蠲蠮蠳襶襴襳觾�\".split(\"\");\nfor(j = 0; j != D[247].length; ++j) if(D[247][j].charCodeAt(0) !== 0xFFFD) { e[D[247][j]] = 63232 + j; d[63232 + j] = D[247][j];}\nD[248] = \"����������������������������������������������������������������讌讎讋讈豅贙躘轤轣醼鑢鑕鑝鑗鑞韄韅頀驖驙鬞鬟鬠鱒鱘鱐鱊鱍鱋鱕鱙鱌鱎鷻鷷鷯鷣鷫鷸鷤鷶鷡鷮鷦鷲鷰鷢鷬鷴鷳鷨鷭黂黐黲黳鼆鼜鼸鼷鼶齃齏����������������������������������齱齰齮齯囓囍孎屭攭曭曮欓灟灡灝灠爣瓛瓥矕礸禷禶籪纗羉艭虃蠸蠷蠵衋讔讕躞躟躠躝醾醽釂鑫鑨鑩雥靆靃靇韇韥驞髕魙鱣鱧鱦鱢鱞鱠鸂鷾鸇鸃鸆鸅鸀鸁鸉鷿鷽鸄麠鼞齆齴齵齶囔攮斸欘欙欗欚灢爦犪矘矙礹籩籫糶纚�\".split(\"\");\nfor(j = 0; j != D[248].length; ++j) if(D[248][j].charCodeAt(0) !== 0xFFFD) { e[D[248][j]] = 63488 + j; d[63488 + j] = D[248][j];}\nD[249] = \"����������������������������������������������������������������纘纛纙臠臡虆虇虈襹襺襼襻觿讘讙躥躤躣鑮鑭鑯鑱鑳靉顲饟鱨鱮鱭鸋鸍鸐鸏鸒鸑麡黵鼉齇齸齻齺齹圞灦籯蠼趲躦釃鑴鑸鑶鑵驠鱴鱳鱱鱵鸔鸓黶鼊����������������������������������龤灨灥糷虪蠾蠽蠿讞貜躩軉靋顳顴飌饡馫驤驦驧鬤鸕鸗齈戇欞爧虌躨钂钀钁驩驨鬮鸙爩虋讟钃鱹麷癵驫鱺鸝灩灪麤齾齉龘碁銹裏墻恒粧嫺╔╦╗╠╬╣╚╩╝╒╤╕╞╪╡╘╧╛╓╥╖╟╫╢╙╨╜║═����▓�\".split(\"\");\nfor(j = 0; j != D[249].length; ++j) if(D[249][j].charCodeAt(0) !== 0xFFFD) { e[D[249][j]] = 63744 + j; d[63744 + j] = D[249][j];}\nD[250] = \"���������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[250].length; ++j) if(D[250][j].charCodeAt(0) !== 0xFFFD) { e[D[250][j]] = 64000 + j; d[64000 + j] = D[250][j];}\nD[251] = \"���������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[251].length; ++j) if(D[251][j].charCodeAt(0) !== 0xFFFD) { e[D[251][j]] = 64256 + j; d[64256 + j] = D[251][j];}\nD[252] = \"���������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[252].length; ++j) if(D[252][j].charCodeAt(0) !== 0xFFFD) { e[D[252][j]] = 64512 + j; d[64512 + j] = D[252][j];}\nreturn {\"enc\": e, \"dec\": d }; })();\ncptable[10003] = (function(){ var d = [], e = {}, D = [], j;\nD[0] = \"\\u0000\\u0001\\u0002\\u0003\\u0004\\u0005\\u0006\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\u0014\\u0015\\u0016\\u0017\\u0018\\u0019\\u001a\\u001b\\u001c\\u001d\\u001e\\u001f !\\\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[0].length; ++j) if(D[0][j].charCodeAt(0) !== 0xFFFD) { e[D[0][j]] = 0 + j; d[0 + j] = D[0][j];}\nD[161] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������　、。·‥…¨〃­―∥＼∼‘’“”〔〕〈〉《》「」『』【】±×÷≠≤≥∞∴°′″℃Å￠￡￥♂♀∠⊥⌒∂∇≡≒§※☆★○●◎◇◆□■△▲▽▼→←↑↓↔〓≪≫√∽∝∵∫∬∈∋⊆⊇⊂⊃∪∩∧∨￢�\".split(\"\");\nfor(j = 0; j != D[161].length; ++j) if(D[161][j].charCodeAt(0) !== 0xFFFD) { e[D[161][j]] = 41216 + j; d[41216 + j] = D[161][j];}\nD[162] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������⇒⇔∀∃´～ˇ˘˝˚˙¸˛¡¿ː∮∑∏¤℉‰◁◀▷▶♤♠♡♥♧♣⊙◈▣◐◑▒▤▥▨▧▦▩♨☏☎☜☞¶†‡↕↗↙↖↘♭♩♪♬㉿㈜№㏇™㏂㏘℡€®������������������������\".split(\"\");\nfor(j = 0; j != D[162].length; ++j) if(D[162][j].charCodeAt(0) !== 0xFFFD) { e[D[162][j]] = 41472 + j; d[41472 + j] = D[162][j];}\nD[163] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������！＂＃＄％＆＇（）＊＋，－．／０１２３４５６７８９：；＜＝＞？＠ＡＢＣＤＥＦＧＨＩＪＫＬＭＮＯＰＱＲＳＴＵＶＷＸＹＺ［￦］＾＿｀ａｂｃｄｅｆｇｈｉｊｋｌｍｎｏｐｑｒｓｔｕｖｗｘｙｚ｛｜｝￣�\".split(\"\");\nfor(j = 0; j != D[163].length; ++j) if(D[163][j].charCodeAt(0) !== 0xFFFD) { e[D[163][j]] = 41728 + j; d[41728 + j] = D[163][j];}\nD[164] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������ㄱㄲㄳㄴㄵㄶㄷㄸㄹㄺㄻㄼㄽㄾㄿㅀㅁㅂㅃㅄㅅㅆㅇㅈㅉㅊㅋㅌㅍㅎㅏㅐㅑㅒㅓㅔㅕㅖㅗㅘㅙㅚㅛㅜㅝㅞㅟㅠㅡㅢㅣㅤㅥㅦㅧㅨㅩㅪㅫㅬㅭㅮㅯㅰㅱㅲㅳㅴㅵㅶㅷㅸㅹㅺㅻㅼㅽㅾㅿㆀㆁㆂㆃㆄㆅㆆㆇㆈㆉㆊㆋㆌㆍㆎ�\".split(\"\");\nfor(j = 0; j != D[164].length; ++j) if(D[164][j].charCodeAt(0) !== 0xFFFD) { e[D[164][j]] = 41984 + j; d[41984 + j] = D[164][j];}\nD[165] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������ⅰⅱⅲⅳⅴⅵⅶⅷⅸⅹ�����ⅠⅡⅢⅣⅤⅥⅦⅧⅨⅩ�������ΑΒΓΔΕΖΗΘΙΚΛΜΝΞΟΠΡΣΤΥΦΧΨΩ��������αβγδεζηθικλμνξοπρστυφχψω�������\".split(\"\");\nfor(j = 0; j != D[165].length; ++j) if(D[165][j].charCodeAt(0) !== 0xFFFD) { e[D[165][j]] = 42240 + j; d[42240 + j] = D[165][j];}\nD[166] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������─│┌┐┘└├┬┤┴┼━┃┏┓┛┗┣┳┫┻╋┠┯┨┷┿┝┰┥┸╂┒┑┚┙┖┕┎┍┞┟┡┢┦┧┩┪┭┮┱┲┵┶┹┺┽┾╀╁╃╄╅╆╇╈╉╊���������������������������\".split(\"\");\nfor(j = 0; j != D[166].length; ++j) if(D[166][j].charCodeAt(0) !== 0xFFFD) { e[D[166][j]] = 42496 + j; d[42496 + j] = D[166][j];}\nD[167] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������㎕㎖㎗ℓ㎘㏄㎣㎤㎥㎦㎙㎚㎛㎜㎝㎞㎟㎠㎡㎢㏊㎍㎎㎏㏏㎈㎉㏈㎧㎨㎰㎱㎲㎳㎴㎵㎶㎷㎸㎹㎀㎁㎂㎃㎄㎺㎻㎼㎽㎾㎿㎐㎑㎒㎓㎔Ω㏀㏁㎊㎋㎌㏖㏅㎭㎮㎯㏛㎩㎪㎫㎬㏝㏐㏓㏃㏉㏜㏆����������������\".split(\"\");\nfor(j = 0; j != D[167].length; ++j) if(D[167][j].charCodeAt(0) !== 0xFFFD) { e[D[167][j]] = 42752 + j; d[42752 + j] = D[167][j];}\nD[168] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������ÆÐªĦ�Ĳ�ĿŁØŒºÞŦŊ�㉠㉡㉢㉣㉤㉥㉦㉧㉨㉩㉪㉫㉬㉭㉮㉯㉰㉱㉲㉳㉴㉵㉶㉷㉸㉹㉺㉻ⓐⓑⓒⓓⓔⓕⓖⓗⓘⓙⓚⓛⓜⓝⓞⓟⓠⓡⓢⓣⓤⓥⓦⓧⓨⓩ①②③④⑤⑥⑦⑧⑨⑩⑪⑫⑬⑭⑮½⅓⅔¼¾⅛⅜⅝⅞�\".split(\"\");\nfor(j = 0; j != D[168].length; ++j) if(D[168][j].charCodeAt(0) !== 0xFFFD) { e[D[168][j]] = 43008 + j; d[43008 + j] = D[168][j];}\nD[169] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������æđðħıĳĸŀłøœßþŧŋŉ㈀㈁㈂㈃㈄㈅㈆㈇㈈㈉㈊㈋㈌㈍㈎㈏㈐㈑㈒㈓㈔㈕㈖㈗㈘㈙㈚㈛⒜⒝⒞⒟⒠⒡⒢⒣⒤⒥⒦⒧⒨⒩⒪⒫⒬⒭⒮⒯⒰⒱⒲⒳⒴⒵⑴⑵⑶⑷⑸⑹⑺⑻⑼⑽⑾⑿⒀⒁⒂¹²³⁴ⁿ₁₂₃₄�\".split(\"\");\nfor(j = 0; j != D[169].length; ++j) if(D[169][j].charCodeAt(0) !== 0xFFFD) { e[D[169][j]] = 43264 + j; d[43264 + j] = D[169][j];}\nD[170] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������ぁあぃいぅうぇえぉおかがきぎくぐけげこごさざしじすずせぜそぞただちぢっつづてでとどなにぬねのはばぱひびぴふぶぷへべぺほぼぽまみむめもゃやゅゆょよらりるれろゎわゐゑをん������������\".split(\"\");\nfor(j = 0; j != D[170].length; ++j) if(D[170][j].charCodeAt(0) !== 0xFFFD) { e[D[170][j]] = 43520 + j; d[43520 + j] = D[170][j];}\nD[171] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������ァアィイゥウェエォオカガキギクグケゲコゴサザシジスズセゼソゾタダチヂッツヅテデトドナニヌネノハバパヒビピフブプヘベペホボポマミムメモャヤュユョヨラリルレロヮワヰヱヲンヴヵヶ���������\".split(\"\");\nfor(j = 0; j != D[171].length; ++j) if(D[171][j].charCodeAt(0) !== 0xFFFD) { e[D[171][j]] = 43776 + j; d[43776 + j] = D[171][j];}\nD[172] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ���������������абвгдеёжзийклмнопрстуфхцчшщъыьэюя��������������\".split(\"\");\nfor(j = 0; j != D[172].length; ++j) if(D[172][j].charCodeAt(0) !== 0xFFFD) { e[D[172][j]] = 44032 + j; d[44032 + j] = D[172][j];}\nD[176] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������가각간갇갈갉갊감갑값갓갔강갖갗같갚갛개객갠갤갬갭갯갰갱갸갹갼걀걋걍걔걘걜거걱건걷걸걺검겁것겄겅겆겉겊겋게겐겔겜겝겟겠겡겨격겪견겯결겸겹겻겼경곁계곈곌곕곗고곡곤곧골곪곬곯곰곱곳공곶과곽관괄괆�\".split(\"\");\nfor(j = 0; j != D[176].length; ++j) if(D[176][j].charCodeAt(0) !== 0xFFFD) { e[D[176][j]] = 45056 + j; d[45056 + j] = D[176][j];}\nD[177] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������괌괍괏광괘괜괠괩괬괭괴괵괸괼굄굅굇굉교굔굘굡굣구국군굳굴굵굶굻굼굽굿궁궂궈궉권궐궜궝궤궷귀귁귄귈귐귑귓규균귤그극근귿글긁금급긋긍긔기긱긴긷길긺김깁깃깅깆깊까깍깎깐깔깖깜깝깟깠깡깥깨깩깬깰깸�\".split(\"\");\nfor(j = 0; j != D[177].length; ++j) if(D[177][j].charCodeAt(0) !== 0xFFFD) { e[D[177][j]] = 45312 + j; d[45312 + j] = D[177][j];}\nD[178] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������깹깻깼깽꺄꺅꺌꺼꺽꺾껀껄껌껍껏껐껑께껙껜껨껫껭껴껸껼꼇꼈꼍꼐꼬꼭꼰꼲꼴꼼꼽꼿꽁꽂꽃꽈꽉꽐꽜꽝꽤꽥꽹꾀꾄꾈꾐꾑꾕꾜꾸꾹꾼꿀꿇꿈꿉꿋꿍꿎꿔꿜꿨꿩꿰꿱꿴꿸뀀뀁뀄뀌뀐뀔뀜뀝뀨끄끅끈끊끌끎끓끔끕끗끙�\".split(\"\");\nfor(j = 0; j != D[178].length; ++j) if(D[178][j].charCodeAt(0) !== 0xFFFD) { e[D[178][j]] = 45568 + j; d[45568 + j] = D[178][j];}\nD[179] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������끝끼끽낀낄낌낍낏낑나낙낚난낟날낡낢남납낫났낭낮낯낱낳내낵낸낼냄냅냇냈냉냐냑냔냘냠냥너넉넋넌널넒넓넘넙넛넜넝넣네넥넨넬넴넵넷넸넹녀녁년녈념녑녔녕녘녜녠노녹논놀놂놈놉놋농높놓놔놘놜놨뇌뇐뇔뇜뇝�\".split(\"\");\nfor(j = 0; j != D[179].length; ++j) if(D[179][j].charCodeAt(0) !== 0xFFFD) { e[D[179][j]] = 45824 + j; d[45824 + j] = D[179][j];}\nD[180] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������뇟뇨뇩뇬뇰뇹뇻뇽누눅눈눋눌눔눕눗눙눠눴눼뉘뉜뉠뉨뉩뉴뉵뉼늄늅늉느늑는늘늙늚늠늡늣능늦늪늬늰늴니닉닌닐닖님닙닛닝닢다닥닦단닫달닭닮닯닳담답닷닸당닺닻닿대댁댄댈댐댑댓댔댕댜더덕덖던덛덜덞덟덤덥�\".split(\"\");\nfor(j = 0; j != D[180].length; ++j) if(D[180][j].charCodeAt(0) !== 0xFFFD) { e[D[180][j]] = 46080 + j; d[46080 + j] = D[180][j];}\nD[181] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������덧덩덫덮데덱덴델뎀뎁뎃뎄뎅뎌뎐뎔뎠뎡뎨뎬도독돈돋돌돎돐돔돕돗동돛돝돠돤돨돼됐되된될됨됩됫됴두둑둔둘둠둡둣둥둬뒀뒈뒝뒤뒨뒬뒵뒷뒹듀듄듈듐듕드득든듣들듦듬듭듯등듸디딕딘딛딜딤딥딧딨딩딪따딱딴딸�\".split(\"\");\nfor(j = 0; j != D[181].length; ++j) if(D[181][j].charCodeAt(0) !== 0xFFFD) { e[D[181][j]] = 46336 + j; d[46336 + j] = D[181][j];}\nD[182] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������땀땁땃땄땅땋때땍땐땔땜땝땟땠땡떠떡떤떨떪떫떰떱떳떴떵떻떼떽뗀뗄뗌뗍뗏뗐뗑뗘뗬또똑똔똘똥똬똴뙈뙤뙨뚜뚝뚠뚤뚫뚬뚱뛔뛰뛴뛸뜀뜁뜅뜨뜩뜬뜯뜰뜸뜹뜻띄띈띌띔띕띠띤띨띰띱띳띵라락란랄람랍랏랐랑랒랖랗�\".split(\"\");\nfor(j = 0; j != D[182].length; ++j) if(D[182][j].charCodeAt(0) !== 0xFFFD) { e[D[182][j]] = 46592 + j; d[46592 + j] = D[182][j];}\nD[183] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������래랙랜랠램랩랫랬랭랴략랸럇량러럭런럴럼럽럿렀렁렇레렉렌렐렘렙렛렝려력련렬렴렵렷렸령례롄롑롓로록론롤롬롭롯롱롸롼뢍뢨뢰뢴뢸룀룁룃룅료룐룔룝룟룡루룩룬룰룸룹룻룽뤄뤘뤠뤼뤽륀륄륌륏륑류륙륜률륨륩�\".split(\"\");\nfor(j = 0; j != D[183].length; ++j) if(D[183][j].charCodeAt(0) !== 0xFFFD) { e[D[183][j]] = 46848 + j; d[46848 + j] = D[183][j];}\nD[184] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������륫륭르륵른를름릅릇릉릊릍릎리릭린릴림립릿링마막만많맏말맑맒맘맙맛망맞맡맣매맥맨맬맴맵맷맸맹맺먀먁먈먕머먹먼멀멂멈멉멋멍멎멓메멕멘멜멤멥멧멨멩며멱면멸몃몄명몇몌모목몫몬몰몲몸몹못몽뫄뫈뫘뫙뫼�\".split(\"\");\nfor(j = 0; j != D[184].length; ++j) if(D[184][j].charCodeAt(0) !== 0xFFFD) { e[D[184][j]] = 47104 + j; d[47104 + j] = D[184][j];}\nD[185] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������묀묄묍묏묑묘묜묠묩묫무묵묶문묻물묽묾뭄뭅뭇뭉뭍뭏뭐뭔뭘뭡뭣뭬뮈뮌뮐뮤뮨뮬뮴뮷므믄믈믐믓미믹민믿밀밂밈밉밋밌밍및밑바박밖밗반받발밝밞밟밤밥밧방밭배백밴밸뱀뱁뱃뱄뱅뱉뱌뱍뱐뱝버벅번벋벌벎범법벗�\".split(\"\");\nfor(j = 0; j != D[185].length; ++j) if(D[185][j].charCodeAt(0) !== 0xFFFD) { e[D[185][j]] = 47360 + j; d[47360 + j] = D[185][j];}\nD[186] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������벙벚베벡벤벧벨벰벱벳벴벵벼벽변별볍볏볐병볕볘볜보복볶본볼봄봅봇봉봐봔봤봬뵀뵈뵉뵌뵐뵘뵙뵤뵨부북분붇불붉붊붐붑붓붕붙붚붜붤붰붸뷔뷕뷘뷜뷩뷰뷴뷸븀븃븅브븍븐블븜븝븟비빅빈빌빎빔빕빗빙빚빛빠빡빤�\".split(\"\");\nfor(j = 0; j != D[186].length; ++j) if(D[186][j].charCodeAt(0) !== 0xFFFD) { e[D[186][j]] = 47616 + j; d[47616 + j] = D[186][j];}\nD[187] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������빨빪빰빱빳빴빵빻빼빽뺀뺄뺌뺍뺏뺐뺑뺘뺙뺨뻐뻑뻔뻗뻘뻠뻣뻤뻥뻬뼁뼈뼉뼘뼙뼛뼜뼝뽀뽁뽄뽈뽐뽑뽕뾔뾰뿅뿌뿍뿐뿔뿜뿟뿡쀼쁑쁘쁜쁠쁨쁩삐삑삔삘삠삡삣삥사삭삯산삳살삵삶삼삽삿샀상샅새색샌샐샘샙샛샜생샤�\".split(\"\");\nfor(j = 0; j != D[187].length; ++j) if(D[187][j].charCodeAt(0) !== 0xFFFD) { e[D[187][j]] = 47872 + j; d[47872 + j] = D[187][j];}\nD[188] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������샥샨샬샴샵샷샹섀섄섈섐섕서석섞섟선섣설섦섧섬섭섯섰성섶세섹센셀셈셉셋셌셍셔셕션셜셤셥셧셨셩셰셴셸솅소속솎손솔솖솜솝솟송솥솨솩솬솰솽쇄쇈쇌쇔쇗쇘쇠쇤쇨쇰쇱쇳쇼쇽숀숄숌숍숏숑수숙순숟술숨숩숫숭�\".split(\"\");\nfor(j = 0; j != D[188].length; ++j) if(D[188][j].charCodeAt(0) !== 0xFFFD) { e[D[188][j]] = 48128 + j; d[48128 + j] = D[188][j];}\nD[189] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������숯숱숲숴쉈쉐쉑쉔쉘쉠쉥쉬쉭쉰쉴쉼쉽쉿슁슈슉슐슘슛슝스슥슨슬슭슴습슷승시식신싣실싫심십싯싱싶싸싹싻싼쌀쌈쌉쌌쌍쌓쌔쌕쌘쌜쌤쌥쌨쌩썅써썩썬썰썲썸썹썼썽쎄쎈쎌쏀쏘쏙쏜쏟쏠쏢쏨쏩쏭쏴쏵쏸쐈쐐쐤쐬쐰�\".split(\"\");\nfor(j = 0; j != D[189].length; ++j) if(D[189][j].charCodeAt(0) !== 0xFFFD) { e[D[189][j]] = 48384 + j; d[48384 + j] = D[189][j];}\nD[190] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������쐴쐼쐽쑈쑤쑥쑨쑬쑴쑵쑹쒀쒔쒜쒸쒼쓩쓰쓱쓴쓸쓺쓿씀씁씌씐씔씜씨씩씬씰씸씹씻씽아악안앉않알앍앎앓암압앗았앙앝앞애액앤앨앰앱앳앴앵야약얀얄얇얌얍얏양얕얗얘얜얠얩어억언얹얻얼얽얾엄업없엇었엉엊엌엎�\".split(\"\");\nfor(j = 0; j != D[190].length; ++j) if(D[190][j].charCodeAt(0) !== 0xFFFD) { e[D[190][j]] = 48640 + j; d[48640 + j] = D[190][j];}\nD[191] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������에엑엔엘엠엡엣엥여역엮연열엶엷염엽엾엿였영옅옆옇예옌옐옘옙옛옜오옥온올옭옮옰옳옴옵옷옹옻와왁완왈왐왑왓왔왕왜왝왠왬왯왱외왹왼욀욈욉욋욍요욕욘욜욤욥욧용우욱운울욹욺움웁웃웅워웍원월웜웝웠웡웨�\".split(\"\");\nfor(j = 0; j != D[191].length; ++j) if(D[191][j].charCodeAt(0) !== 0xFFFD) { e[D[191][j]] = 48896 + j; d[48896 + j] = D[191][j];}\nD[192] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������웩웬웰웸웹웽위윅윈윌윔윕윗윙유육윤율윰윱윳융윷으윽은을읊음읍읏응읒읓읔읕읖읗의읜읠읨읫이익인일읽읾잃임입잇있잉잊잎자작잔잖잗잘잚잠잡잣잤장잦재잭잰잴잼잽잿쟀쟁쟈쟉쟌쟎쟐쟘쟝쟤쟨쟬저적전절젊�\".split(\"\");\nfor(j = 0; j != D[192].length; ++j) if(D[192][j].charCodeAt(0) !== 0xFFFD) { e[D[192][j]] = 49152 + j; d[49152 + j] = D[192][j];}\nD[193] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������점접젓정젖제젝젠젤젬젭젯젱져젼졀졈졉졌졍졔조족존졸졺좀좁좃종좆좇좋좌좍좔좝좟좡좨좼좽죄죈죌죔죕죗죙죠죡죤죵주죽준줄줅줆줌줍줏중줘줬줴쥐쥑쥔쥘쥠쥡쥣쥬쥰쥴쥼즈즉즌즐즘즙즛증지직진짇질짊짐집짓�\".split(\"\");\nfor(j = 0; j != D[193].length; ++j) if(D[193][j].charCodeAt(0) !== 0xFFFD) { e[D[193][j]] = 49408 + j; d[49408 + j] = D[193][j];}\nD[194] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������징짖짙짚짜짝짠짢짤짧짬짭짯짰짱째짹짼쨀쨈쨉쨋쨌쨍쨔쨘쨩쩌쩍쩐쩔쩜쩝쩟쩠쩡쩨쩽쪄쪘쪼쪽쫀쫄쫌쫍쫏쫑쫓쫘쫙쫠쫬쫴쬈쬐쬔쬘쬠쬡쭁쭈쭉쭌쭐쭘쭙쭝쭤쭸쭹쮜쮸쯔쯤쯧쯩찌찍찐찔찜찝찡찢찧차착찬찮찰참찹찻�\".split(\"\");\nfor(j = 0; j != D[194].length; ++j) if(D[194][j].charCodeAt(0) !== 0xFFFD) { e[D[194][j]] = 49664 + j; d[49664 + j] = D[194][j];}\nD[195] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������찼창찾채책챈챌챔챕챗챘챙챠챤챦챨챰챵처척천철첨첩첫첬청체첵첸첼쳄쳅쳇쳉쳐쳔쳤쳬쳰촁초촉촌촐촘촙촛총촤촨촬촹최쵠쵤쵬쵭쵯쵱쵸춈추축춘출춤춥춧충춰췄췌췐취췬췰췸췹췻췽츄츈츌츔츙츠측츤츨츰츱츳층�\".split(\"\");\nfor(j = 0; j != D[195].length; ++j) if(D[195][j].charCodeAt(0) !== 0xFFFD) { e[D[195][j]] = 49920 + j; d[49920 + j] = D[195][j];}\nD[196] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������치칙친칟칠칡침칩칫칭카칵칸칼캄캅캇캉캐캑캔캘캠캡캣캤캥캬캭컁커컥컨컫컬컴컵컷컸컹케켁켄켈켐켑켓켕켜켠켤켬켭켯켰켱켸코콕콘콜콤콥콧콩콰콱콴콸쾀쾅쾌쾡쾨쾰쿄쿠쿡쿤쿨쿰쿱쿳쿵쿼퀀퀄퀑퀘퀭퀴퀵퀸퀼�\".split(\"\");\nfor(j = 0; j != D[196].length; ++j) if(D[196][j].charCodeAt(0) !== 0xFFFD) { e[D[196][j]] = 50176 + j; d[50176 + j] = D[196][j];}\nD[197] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������큄큅큇큉큐큔큘큠크큭큰클큼큽킁키킥킨킬킴킵킷킹타탁탄탈탉탐탑탓탔탕태택탠탤탬탭탯탰탱탸턍터턱턴털턺텀텁텃텄텅테텍텐텔템텝텟텡텨텬텼톄톈토톡톤톨톰톱톳통톺톼퇀퇘퇴퇸툇툉툐투툭툰툴툼툽툿퉁퉈퉜�\".split(\"\");\nfor(j = 0; j != D[197].length; ++j) if(D[197][j].charCodeAt(0) !== 0xFFFD) { e[D[197][j]] = 50432 + j; d[50432 + j] = D[197][j];}\nD[198] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������퉤튀튁튄튈튐튑튕튜튠튤튬튱트특튼튿틀틂틈틉틋틔틘틜틤틥티틱틴틸팀팁팃팅파팍팎판팔팖팜팝팟팠팡팥패팩팬팰팸팹팻팼팽퍄퍅퍼퍽펀펄펌펍펏펐펑페펙펜펠펨펩펫펭펴편펼폄폅폈평폐폘폡폣포폭폰폴폼폽폿퐁�\".split(\"\");\nfor(j = 0; j != D[198].length; ++j) if(D[198][j].charCodeAt(0) !== 0xFFFD) { e[D[198][j]] = 50688 + j; d[50688 + j] = D[198][j];}\nD[199] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������퐈퐝푀푄표푠푤푭푯푸푹푼푿풀풂품풉풋풍풔풩퓌퓐퓔퓜퓟퓨퓬퓰퓸퓻퓽프픈플픔픕픗피픽핀필핌핍핏핑하학한할핥함합핫항해핵핸핼햄햅햇했행햐향허헉헌헐헒험헙헛헝헤헥헨헬헴헵헷헹혀혁현혈혐협혓혔형혜혠�\".split(\"\");\nfor(j = 0; j != D[199].length; ++j) if(D[199][j].charCodeAt(0) !== 0xFFFD) { e[D[199][j]] = 50944 + j; d[50944 + j] = D[199][j];}\nD[200] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������혤혭호혹혼홀홅홈홉홋홍홑화확환활홧황홰홱홴횃횅회획횐횔횝횟횡효횬횰횹횻후훅훈훌훑훔훗훙훠훤훨훰훵훼훽휀휄휑휘휙휜휠휨휩휫휭휴휵휸휼흄흇흉흐흑흔흖흗흘흙흠흡흣흥흩희흰흴흼흽힁히힉힌힐힘힙힛힝�\".split(\"\");\nfor(j = 0; j != D[200].length; ++j) if(D[200][j].charCodeAt(0) !== 0xFFFD) { e[D[200][j]] = 51200 + j; d[51200 + j] = D[200][j];}\nD[202] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������伽佳假價加可呵哥嘉嫁家暇架枷柯歌珂痂稼苛茄街袈訶賈跏軻迦駕刻却各恪慤殼珏脚覺角閣侃刊墾奸姦干幹懇揀杆柬桿澗癎看磵稈竿簡肝艮艱諫間乫喝曷渴碣竭葛褐蝎鞨勘坎堪嵌感憾戡敢柑橄減甘疳監瞰紺邯鑑鑒龕�\".split(\"\");\nfor(j = 0; j != D[202].length; ++j) if(D[202][j].charCodeAt(0) !== 0xFFFD) { e[D[202][j]] = 51712 + j; d[51712 + j] = D[202][j];}\nD[203] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������匣岬甲胛鉀閘剛堈姜岡崗康强彊慷江畺疆糠絳綱羌腔舡薑襁講鋼降鱇介价個凱塏愷愾慨改槪漑疥皆盖箇芥蓋豈鎧開喀客坑更粳羹醵倨去居巨拒据據擧渠炬祛距踞車遽鉅鋸乾件健巾建愆楗腱虔蹇鍵騫乞傑杰桀儉劍劒檢�\".split(\"\");\nfor(j = 0; j != D[203].length; ++j) if(D[203][j].charCodeAt(0) !== 0xFFFD) { e[D[203][j]] = 51968 + j; d[51968 + j] = D[203][j];}\nD[204] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������瞼鈐黔劫怯迲偈憩揭擊格檄激膈覡隔堅牽犬甄絹繭肩見譴遣鵑抉決潔結缺訣兼慊箝謙鉗鎌京俓倞傾儆勁勍卿坰境庚徑慶憬擎敬景暻更梗涇炅烱璟璥瓊痙硬磬竟競絅經耕耿脛莖警輕逕鏡頃頸驚鯨係啓堺契季屆悸戒桂械�\".split(\"\");\nfor(j = 0; j != D[204].length; ++j) if(D[204][j].charCodeAt(0) !== 0xFFFD) { e[D[204][j]] = 52224 + j; d[52224 + j] = D[204][j];}\nD[205] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������棨溪界癸磎稽系繫繼計誡谿階鷄古叩告呱固姑孤尻庫拷攷故敲暠枯槁沽痼皐睾稿羔考股膏苦苽菰藁蠱袴誥賈辜錮雇顧高鼓哭斛曲梏穀谷鵠困坤崑昆梱棍滾琨袞鯤汨滑骨供公共功孔工恐恭拱控攻珙空蚣貢鞏串寡戈果瓜�\".split(\"\");\nfor(j = 0; j != D[205].length; ++j) if(D[205][j].charCodeAt(0) !== 0xFFFD) { e[D[205][j]] = 52480 + j; d[52480 + j] = D[205][j];}\nD[206] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������科菓誇課跨過鍋顆廓槨藿郭串冠官寬慣棺款灌琯瓘管罐菅觀貫關館刮恝括适侊光匡壙廣曠洸炚狂珖筐胱鑛卦掛罫乖傀塊壞怪愧拐槐魁宏紘肱轟交僑咬喬嬌嶠巧攪敎校橋狡皎矯絞翹膠蕎蛟較轎郊餃驕鮫丘久九仇俱具勾�\".split(\"\");\nfor(j = 0; j != D[206].length; ++j) if(D[206][j].charCodeAt(0) !== 0xFFFD) { e[D[206][j]] = 52736 + j; d[52736 + j] = D[206][j];}\nD[207] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������區口句咎嘔坵垢寇嶇廐懼拘救枸柩構歐毆毬求溝灸狗玖球瞿矩究絿耉臼舅舊苟衢謳購軀逑邱鉤銶駒驅鳩鷗龜國局菊鞠鞫麴君窘群裙軍郡堀屈掘窟宮弓穹窮芎躬倦券勸卷圈拳捲權淃眷厥獗蕨蹶闕机櫃潰詭軌饋句晷歸貴�\".split(\"\");\nfor(j = 0; j != D[207].length; ++j) if(D[207][j].charCodeAt(0) !== 0xFFFD) { e[D[207][j]] = 52992 + j; d[52992 + j] = D[207][j];}\nD[208] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������鬼龜叫圭奎揆槻珪硅窺竅糾葵規赳逵閨勻均畇筠菌鈞龜橘克剋劇戟棘極隙僅劤勤懃斤根槿瑾筋芹菫覲謹近饉契今妗擒昑檎琴禁禽芩衾衿襟金錦伋及急扱汲級給亘兢矜肯企伎其冀嗜器圻基埼夔奇妓寄岐崎己幾忌技旗旣�\".split(\"\");\nfor(j = 0; j != D[208].length; ++j) if(D[208][j].charCodeAt(0) !== 0xFFFD) { e[D[208][j]] = 53248 + j; d[53248 + j] = D[208][j];}\nD[209] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������朞期杞棋棄機欺氣汽沂淇玘琦琪璂璣畸畿碁磯祁祇祈祺箕紀綺羈耆耭肌記譏豈起錡錤飢饑騎騏驥麒緊佶吉拮桔金喫儺喇奈娜懦懶拏拿癩羅蘿螺裸邏那樂洛烙珞落諾酪駱亂卵暖欄煖爛蘭難鸞捏捺南嵐枏楠湳濫男藍襤拉�\".split(\"\");\nfor(j = 0; j != D[209].length; ++j) if(D[209][j].charCodeAt(0) !== 0xFFFD) { e[D[209][j]] = 53504 + j; d[53504 + j] = D[209][j];}\nD[210] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������納臘蠟衲囊娘廊朗浪狼郎乃來內奈柰耐冷女年撚秊念恬拈捻寧寗努勞奴弩怒擄櫓爐瑙盧老蘆虜路露駑魯鷺碌祿綠菉錄鹿論壟弄濃籠聾膿農惱牢磊腦賂雷尿壘屢樓淚漏累縷陋嫩訥杻紐勒肋凜凌稜綾能菱陵尼泥匿溺多茶�\".split(\"\");\nfor(j = 0; j != D[210].length; ++j) if(D[210][j].charCodeAt(0) !== 0xFFFD) { e[D[210][j]] = 53760 + j; d[53760 + j] = D[210][j];}\nD[211] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������丹亶但單團壇彖斷旦檀段湍短端簞緞蛋袒鄲鍛撻澾獺疸達啖坍憺擔曇淡湛潭澹痰聃膽蕁覃談譚錟沓畓答踏遝唐堂塘幢戇撞棠當糖螳黨代垈坮大對岱帶待戴擡玳臺袋貸隊黛宅德悳倒刀到圖堵塗導屠島嶋度徒悼挑掉搗桃�\".split(\"\");\nfor(j = 0; j != D[211].length; ++j) if(D[211][j].charCodeAt(0) !== 0xFFFD) { e[D[211][j]] = 54016 + j; d[54016 + j] = D[211][j];}\nD[212] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������棹櫂淘渡滔濤燾盜睹禱稻萄覩賭跳蹈逃途道都鍍陶韜毒瀆牘犢獨督禿篤纛讀墩惇敦旽暾沌焞燉豚頓乭突仝冬凍動同憧東桐棟洞潼疼瞳童胴董銅兜斗杜枓痘竇荳讀豆逗頭屯臀芚遁遯鈍得嶝橙燈登等藤謄鄧騰喇懶拏癩羅�\".split(\"\");\nfor(j = 0; j != D[212].length; ++j) if(D[212][j].charCodeAt(0) !== 0xFFFD) { e[D[212][j]] = 54272 + j; d[54272 + j] = D[212][j];}\nD[213] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������蘿螺裸邏樂洛烙珞絡落諾酪駱丹亂卵欄欒瀾爛蘭鸞剌辣嵐擥攬欖濫籃纜藍襤覽拉臘蠟廊朗浪狼琅瑯螂郞來崍徠萊冷掠略亮倆兩凉梁樑粮粱糧良諒輛量侶儷勵呂廬慮戾旅櫚濾礪藜蠣閭驢驪麗黎力曆歷瀝礫轢靂憐戀攣漣�\".split(\"\");\nfor(j = 0; j != D[213].length; ++j) if(D[213][j].charCodeAt(0) !== 0xFFFD) { e[D[213][j]] = 54528 + j; d[54528 + j] = D[213][j];}\nD[214] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������煉璉練聯蓮輦連鍊冽列劣洌烈裂廉斂殮濂簾獵令伶囹寧岺嶺怜玲笭羚翎聆逞鈴零靈領齡例澧禮醴隷勞怒撈擄櫓潞瀘爐盧老蘆虜路輅露魯鷺鹵碌祿綠菉錄鹿麓論壟弄朧瀧瓏籠聾儡瀨牢磊賂賚賴雷了僚寮廖料燎療瞭聊蓼�\".split(\"\");\nfor(j = 0; j != D[214].length; ++j) if(D[214][j].charCodeAt(0) !== 0xFFFD) { e[D[214][j]] = 54784 + j; d[54784 + j] = D[214][j];}\nD[215] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������遼鬧龍壘婁屢樓淚漏瘻累縷蔞褸鏤陋劉旒柳榴流溜瀏琉瑠留瘤硫謬類六戮陸侖倫崙淪綸輪律慄栗率隆勒肋凜凌楞稜綾菱陵俚利厘吏唎履悧李梨浬犁狸理璃異痢籬罹羸莉裏裡里釐離鯉吝潾燐璘藺躪隣鱗麟林淋琳臨霖砬�\".split(\"\");\nfor(j = 0; j != D[215].length; ++j) if(D[215][j].charCodeAt(0) !== 0xFFFD) { e[D[215][j]] = 55040 + j; d[55040 + j] = D[215][j];}\nD[216] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������立笠粒摩瑪痲碼磨馬魔麻寞幕漠膜莫邈万卍娩巒彎慢挽晩曼滿漫灣瞞萬蔓蠻輓饅鰻唜抹末沫茉襪靺亡妄忘忙望網罔芒茫莽輞邙埋妹媒寐昧枚梅每煤罵買賣邁魅脈貊陌驀麥孟氓猛盲盟萌冪覓免冕勉棉沔眄眠綿緬面麵滅�\".split(\"\");\nfor(j = 0; j != D[216].length; ++j) if(D[216][j].charCodeAt(0) !== 0xFFFD) { e[D[216][j]] = 55296 + j; d[55296 + j] = D[216][j];}\nD[217] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������蔑冥名命明暝椧溟皿瞑茗蓂螟酩銘鳴袂侮冒募姆帽慕摸摹暮某模母毛牟牡瑁眸矛耗芼茅謀謨貌木沐牧目睦穆鶩歿沒夢朦蒙卯墓妙廟描昴杳渺猫竗苗錨務巫憮懋戊拇撫无楙武毋無珷畝繆舞茂蕪誣貿霧鵡墨默們刎吻問文�\".split(\"\");\nfor(j = 0; j != D[217].length; ++j) if(D[217][j].charCodeAt(0) !== 0xFFFD) { e[D[217][j]] = 55552 + j; d[55552 + j] = D[217][j];}\nD[218] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������汶紊紋聞蚊門雯勿沕物味媚尾嵋彌微未梶楣渼湄眉米美薇謎迷靡黴岷悶愍憫敏旻旼民泯玟珉緡閔密蜜謐剝博拍搏撲朴樸泊珀璞箔粕縛膊舶薄迫雹駁伴半反叛拌搬攀斑槃泮潘班畔瘢盤盼磐磻礬絆般蟠返頒飯勃拔撥渤潑�\".split(\"\");\nfor(j = 0; j != D[218].length; ++j) if(D[218][j].charCodeAt(0) !== 0xFFFD) { e[D[218][j]] = 55808 + j; d[55808 + j] = D[218][j];}\nD[219] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������發跋醱鉢髮魃倣傍坊妨尨幇彷房放方旁昉枋榜滂磅紡肪膀舫芳蒡蚌訪謗邦防龐倍俳北培徘拜排杯湃焙盃背胚裴裵褙賠輩配陪伯佰帛柏栢白百魄幡樊煩燔番磻繁蕃藩飜伐筏罰閥凡帆梵氾汎泛犯範范法琺僻劈壁擘檗璧癖�\".split(\"\");\nfor(j = 0; j != D[219].length; ++j) if(D[219][j].charCodeAt(0) !== 0xFFFD) { e[D[219][j]] = 56064 + j; d[56064 + j] = D[219][j];}\nD[220] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������碧蘗闢霹便卞弁變辨辯邊別瞥鱉鼈丙倂兵屛幷昞昺柄棅炳甁病秉竝輧餠騈保堡報寶普步洑湺潽珤甫菩補褓譜輔伏僕匐卜宓復服福腹茯蔔複覆輹輻馥鰒本乶俸奉封峯峰捧棒烽熢琫縫蓬蜂逢鋒鳳不付俯傅剖副否咐埠夫婦�\".split(\"\");\nfor(j = 0; j != D[220].length; ++j) if(D[220][j].charCodeAt(0) !== 0xFFFD) { e[D[220][j]] = 56320 + j; d[56320 + j] = D[220][j];}\nD[221] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������孚孵富府復扶敷斧浮溥父符簿缶腐腑膚艀芙莩訃負賦賻赴趺部釜阜附駙鳧北分吩噴墳奔奮忿憤扮昐汾焚盆粉糞紛芬賁雰不佛弗彿拂崩朋棚硼繃鵬丕備匕匪卑妃婢庇悲憊扉批斐枇榧比毖毗毘沸泌琵痺砒碑秕秘粃緋翡肥�\".split(\"\");\nfor(j = 0; j != D[221].length; ++j) if(D[221][j].charCodeAt(0) !== 0xFFFD) { e[D[221][j]] = 56576 + j; d[56576 + j] = D[221][j];}\nD[222] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������脾臂菲蜚裨誹譬費鄙非飛鼻嚬嬪彬斌檳殯浜濱瀕牝玭貧賓頻憑氷聘騁乍事些仕伺似使俟僿史司唆嗣四士奢娑寫寺射巳師徙思捨斜斯柶査梭死沙泗渣瀉獅砂社祀祠私篩紗絲肆舍莎蓑蛇裟詐詞謝賜赦辭邪飼駟麝削數朔索�\".split(\"\");\nfor(j = 0; j != D[222].length; ++j) if(D[222][j].charCodeAt(0) !== 0xFFFD) { e[D[222][j]] = 56832 + j; d[56832 + j] = D[222][j];}\nD[223] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������傘刪山散汕珊産疝算蒜酸霰乷撒殺煞薩三參杉森渗芟蔘衫揷澁鈒颯上傷像償商喪嘗孀尙峠常床庠廂想桑橡湘爽牀狀相祥箱翔裳觴詳象賞霜塞璽賽嗇塞穡索色牲生甥省笙墅壻嶼序庶徐恕抒捿敍暑曙書栖棲犀瑞筮絮緖署�\".split(\"\");\nfor(j = 0; j != D[223].length; ++j) if(D[223][j].charCodeAt(0) !== 0xFFFD) { e[D[223][j]] = 57088 + j; d[57088 + j] = D[223][j];}\nD[224] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������胥舒薯西誓逝鋤黍鼠夕奭席惜昔晳析汐淅潟石碩蓆釋錫仙僊先善嬋宣扇敾旋渲煽琁瑄璇璿癬禪線繕羨腺膳船蘚蟬詵跣選銑鐥饍鮮卨屑楔泄洩渫舌薛褻設說雪齧剡暹殲纖蟾贍閃陝攝涉燮葉城姓宬性惺成星晟猩珹盛省筬�\".split(\"\");\nfor(j = 0; j != D[224].length; ++j) if(D[224][j].charCodeAt(0) !== 0xFFFD) { e[D[224][j]] = 57344 + j; d[57344 + j] = D[224][j];}\nD[225] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������聖聲腥誠醒世勢歲洗稅笹細說貰召嘯塑宵小少巢所掃搔昭梳沼消溯瀟炤燒甦疏疎瘙笑篠簫素紹蔬蕭蘇訴逍遡邵銷韶騷俗屬束涑粟續謖贖速孫巽損蓀遜飡率宋悚松淞訟誦送頌刷殺灑碎鎖衰釗修受嗽囚垂壽嫂守岫峀帥愁�\".split(\"\");\nfor(j = 0; j != D[225].length; ++j) if(D[225][j].charCodeAt(0) !== 0xFFFD) { e[D[225][j]] = 57600 + j; d[57600 + j] = D[225][j];}\nD[226] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������戍手授搜收數樹殊水洙漱燧狩獸琇璲瘦睡秀穗竪粹綏綬繡羞脩茱蒐蓚藪袖誰讐輸遂邃酬銖銹隋隧隨雖需須首髓鬚叔塾夙孰宿淑潚熟琡璹肅菽巡徇循恂旬栒楯橓殉洵淳珣盾瞬筍純脣舜荀蓴蕣詢諄醇錞順馴戌術述鉥崇崧�\".split(\"\");\nfor(j = 0; j != D[226].length; ++j) if(D[226][j].charCodeAt(0) !== 0xFFFD) { e[D[226][j]] = 57856 + j; d[57856 + j] = D[226][j];}\nD[227] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������嵩瑟膝蝨濕拾習褶襲丞乘僧勝升承昇繩蠅陞侍匙嘶始媤尸屎屍市弑恃施是時枾柴猜矢示翅蒔蓍視試詩諡豕豺埴寔式息拭植殖湜熄篒蝕識軾食飾伸侁信呻娠宸愼新晨燼申神紳腎臣莘薪藎蜃訊身辛辰迅失室實悉審尋心沁�\".split(\"\");\nfor(j = 0; j != D[227].length; ++j) if(D[227][j].charCodeAt(0) !== 0xFFFD) { e[D[227][j]] = 58112 + j; d[58112 + j] = D[227][j];}\nD[228] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������沈深瀋甚芯諶什十拾雙氏亞俄兒啞娥峨我牙芽莪蛾衙訝阿雅餓鴉鵝堊岳嶽幄惡愕握樂渥鄂鍔顎鰐齷安岸按晏案眼雁鞍顔鮟斡謁軋閼唵岩巖庵暗癌菴闇壓押狎鴨仰央怏昻殃秧鴦厓哀埃崖愛曖涯碍艾隘靄厄扼掖液縊腋額�\".split(\"\");\nfor(j = 0; j != D[228].length; ++j) if(D[228][j].charCodeAt(0) !== 0xFFFD) { e[D[228][j]] = 58368 + j; d[58368 + j] = D[228][j];}\nD[229] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������櫻罌鶯鸚也倻冶夜惹揶椰爺耶若野弱掠略約若葯蒻藥躍亮佯兩凉壤孃恙揚攘敭暘梁楊樣洋瀁煬痒瘍禳穰糧羊良襄諒讓釀陽量養圄御於漁瘀禦語馭魚齬億憶抑檍臆偃堰彦焉言諺孼蘖俺儼嚴奄掩淹嶪業円予余勵呂女如廬�\".split(\"\");\nfor(j = 0; j != D[229].length; ++j) if(D[229][j].charCodeAt(0) !== 0xFFFD) { e[D[229][j]] = 58624 + j; d[58624 + j] = D[229][j];}\nD[230] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������旅歟汝濾璵礖礪與艅茹輿轝閭餘驪麗黎亦力域役易曆歷疫繹譯轢逆驛嚥堧姸娟宴年延憐戀捐挻撚椽沇沿涎涓淵演漣烟然煙煉燃燕璉硏硯秊筵緣練縯聯衍軟輦蓮連鉛鍊鳶列劣咽悅涅烈熱裂說閱厭廉念捻染殮炎焰琰艶苒�\".split(\"\");\nfor(j = 0; j != D[230].length; ++j) if(D[230][j].charCodeAt(0) !== 0xFFFD) { e[D[230][j]] = 58880 + j; d[58880 + j] = D[230][j];}\nD[231] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������簾閻髥鹽曄獵燁葉令囹塋寧嶺嶸影怜映暎楹榮永泳渶潁濚瀛瀯煐營獰玲瑛瑩瓔盈穎纓羚聆英詠迎鈴鍈零霙靈領乂倪例刈叡曳汭濊猊睿穢芮藝蘂禮裔詣譽豫醴銳隸霓預五伍俉傲午吾吳嗚塢墺奧娛寤悟惡懊敖旿晤梧汚澳�\".split(\"\");\nfor(j = 0; j != D[231].length; ++j) if(D[231][j].charCodeAt(0) !== 0xFFFD) { e[D[231][j]] = 59136 + j; d[59136 + j] = D[231][j];}\nD[232] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������烏熬獒筽蜈誤鰲鼇屋沃獄玉鈺溫瑥瘟穩縕蘊兀壅擁瓮甕癰翁邕雍饔渦瓦窩窪臥蛙蝸訛婉完宛梡椀浣玩琓琬碗緩翫脘腕莞豌阮頑曰往旺枉汪王倭娃歪矮外嵬巍猥畏了僚僥凹堯夭妖姚寥寮尿嶢拗搖撓擾料曜樂橈燎燿瑤療�\".split(\"\");\nfor(j = 0; j != D[232].length; ++j) if(D[232][j].charCodeAt(0) !== 0xFFFD) { e[D[232][j]] = 59392 + j; d[59392 + j] = D[232][j];}\nD[233] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������窈窯繇繞耀腰蓼蟯要謠遙遼邀饒慾欲浴縟褥辱俑傭冗勇埇墉容庸慂榕涌湧溶熔瑢用甬聳茸蓉踊鎔鏞龍于佑偶優又友右宇寓尤愚憂旴牛玗瑀盂祐禑禹紆羽芋藕虞迂遇郵釪隅雨雩勖彧旭昱栯煜稶郁頊云暈橒殞澐熉耘芸蕓�\".split(\"\");\nfor(j = 0; j != D[233].length; ++j) if(D[233][j].charCodeAt(0) !== 0xFFFD) { e[D[233][j]] = 59648 + j; d[59648 + j] = D[233][j];}\nD[234] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������運隕雲韻蔚鬱亐熊雄元原員圓園垣媛嫄寃怨愿援沅洹湲源爰猿瑗苑袁轅遠阮院願鴛月越鉞位偉僞危圍委威尉慰暐渭爲瑋緯胃萎葦蔿蝟衛褘謂違韋魏乳侑儒兪劉唯喩孺宥幼幽庾悠惟愈愉揄攸有杻柔柚柳楡楢油洧流游溜�\".split(\"\");\nfor(j = 0; j != D[234].length; ++j) if(D[234][j].charCodeAt(0) !== 0xFFFD) { e[D[234][j]] = 59904 + j; d[59904 + j] = D[234][j];}\nD[235] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������濡猶猷琉瑜由留癒硫紐維臾萸裕誘諛諭踰蹂遊逾遺酉釉鍮類六堉戮毓肉育陸倫允奫尹崙淪潤玧胤贇輪鈗閏律慄栗率聿戎瀜絨融隆垠恩慇殷誾銀隱乙吟淫蔭陰音飮揖泣邑凝應膺鷹依倚儀宜意懿擬椅毅疑矣義艤薏蟻衣誼�\".split(\"\");\nfor(j = 0; j != D[235].length; ++j) if(D[235][j].charCodeAt(0) !== 0xFFFD) { e[D[235][j]] = 60160 + j; d[60160 + j] = D[235][j];}\nD[236] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������議醫二以伊利吏夷姨履已弛彛怡易李梨泥爾珥理異痍痢移罹而耳肄苡荑裏裡貽貳邇里離飴餌匿溺瀷益翊翌翼謚人仁刃印吝咽因姻寅引忍湮燐璘絪茵藺蚓認隣靭靷鱗麟一佚佾壹日溢逸鎰馹任壬妊姙恁林淋稔臨荏賃入卄�\".split(\"\");\nfor(j = 0; j != D[236].length; ++j) if(D[236][j].charCodeAt(0) !== 0xFFFD) { e[D[236][j]] = 60416 + j; d[60416 + j] = D[236][j];}\nD[237] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������立笠粒仍剩孕芿仔刺咨姉姿子字孜恣慈滋炙煮玆瓷疵磁紫者自茨蔗藉諮資雌作勺嚼斫昨灼炸爵綽芍酌雀鵲孱棧殘潺盞岑暫潛箴簪蠶雜丈仗匠場墻壯奬將帳庄張掌暲杖樟檣欌漿牆狀獐璋章粧腸臟臧莊葬蔣薔藏裝贓醬長�\".split(\"\");\nfor(j = 0; j != D[237].length; ++j) if(D[237][j].charCodeAt(0) !== 0xFFFD) { e[D[237][j]] = 60672 + j; d[60672 + j] = D[237][j];}\nD[238] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������障再哉在宰才材栽梓渽滓災縡裁財載齋齎爭箏諍錚佇低儲咀姐底抵杵楮樗沮渚狙猪疽箸紵苧菹著藷詛貯躇這邸雎齟勣吊嫡寂摘敵滴狄炙的積笛籍績翟荻謫賊赤跡蹟迪迹適鏑佃佺傳全典前剪塡塼奠專展廛悛戰栓殿氈澱�\".split(\"\");\nfor(j = 0; j != D[238].length; ++j) if(D[238][j].charCodeAt(0) !== 0xFFFD) { e[D[238][j]] = 60928 + j; d[60928 + j] = D[238][j];}\nD[239] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������煎琠田甸畑癲筌箋箭篆纏詮輾轉鈿銓錢鐫電顚顫餞切截折浙癤竊節絶占岾店漸点粘霑鮎點接摺蝶丁井亭停偵呈姃定幀庭廷征情挺政整旌晶晸柾楨檉正汀淀淨渟湞瀞炡玎珽町睛碇禎程穽精綎艇訂諪貞鄭酊釘鉦鋌錠霆靖�\".split(\"\");\nfor(j = 0; j != D[239].length; ++j) if(D[239][j].charCodeAt(0) !== 0xFFFD) { e[D[239][j]] = 61184 + j; d[61184 + j] = D[239][j];}\nD[240] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������靜頂鼎制劑啼堤帝弟悌提梯濟祭第臍薺製諸蹄醍除際霽題齊俎兆凋助嘲弔彫措操早晁曺曹朝條棗槽漕潮照燥爪璪眺祖祚租稠窕粗糟組繰肇藻蚤詔調趙躁造遭釣阻雕鳥族簇足鏃存尊卒拙猝倧宗從悰慫棕淙琮種終綜縱腫�\".split(\"\");\nfor(j = 0; j != D[240].length; ++j) if(D[240][j].charCodeAt(0) !== 0xFFFD) { e[D[240][j]] = 61440 + j; d[61440 + j] = D[240][j];}\nD[241] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������踪踵鍾鐘佐坐左座挫罪主住侏做姝胄呪周嗾奏宙州廚晝朱柱株注洲湊澍炷珠疇籌紂紬綢舟蛛註誅走躊輳週酎酒鑄駐竹粥俊儁准埈寯峻晙樽浚準濬焌畯竣蠢逡遵雋駿茁中仲衆重卽櫛楫汁葺增憎曾拯烝甑症繒蒸證贈之只�\".split(\"\");\nfor(j = 0; j != D[241].length; ++j) if(D[241][j].charCodeAt(0) !== 0xFFFD) { e[D[241][j]] = 61696 + j; d[61696 + j] = D[241][j];}\nD[242] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������咫地址志持指摯支旨智枝枳止池沚漬知砥祉祗紙肢脂至芝芷蜘誌識贄趾遲直稙稷織職唇嗔塵振搢晉晋桭榛殄津溱珍瑨璡畛疹盡眞瞋秦縉縝臻蔯袗診賑軫辰進鎭陣陳震侄叱姪嫉帙桎瓆疾秩窒膣蛭質跌迭斟朕什執潗緝輯�\".split(\"\");\nfor(j = 0; j != D[242].length; ++j) if(D[242][j].charCodeAt(0) !== 0xFFFD) { e[D[242][j]] = 61952 + j; d[61952 + j] = D[242][j];}\nD[243] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������鏶集徵懲澄且侘借叉嗟嵯差次此磋箚茶蹉車遮捉搾着窄錯鑿齪撰澯燦璨瓚竄簒纂粲纘讚贊鑽餐饌刹察擦札紮僭參塹慘慙懺斬站讒讖倉倡創唱娼廠彰愴敞昌昶暢槍滄漲猖瘡窓脹艙菖蒼債埰寀寨彩採砦綵菜蔡采釵冊柵策�\".split(\"\");\nfor(j = 0; j != D[243].length; ++j) if(D[243][j].charCodeAt(0) !== 0xFFFD) { e[D[243][j]] = 62208 + j; d[62208 + j] = D[243][j];}\nD[244] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������責凄妻悽處倜刺剔尺慽戚拓擲斥滌瘠脊蹠陟隻仟千喘天川擅泉淺玔穿舛薦賤踐遷釧闡阡韆凸哲喆徹撤澈綴輟轍鐵僉尖沾添甛瞻簽籤詹諂堞妾帖捷牒疊睫諜貼輒廳晴淸聽菁請靑鯖切剃替涕滯締諦逮遞體初剿哨憔抄招梢�\".split(\"\");\nfor(j = 0; j != D[244].length; ++j) if(D[244][j].charCodeAt(0) !== 0xFFFD) { e[D[244][j]] = 62464 + j; d[62464 + j] = D[244][j];}\nD[245] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������椒楚樵炒焦硝礁礎秒稍肖艸苕草蕉貂超酢醋醮促囑燭矗蜀觸寸忖村邨叢塚寵悤憁摠總聰蔥銃撮催崔最墜抽推椎楸樞湫皺秋芻萩諏趨追鄒酋醜錐錘鎚雛騶鰍丑畜祝竺筑築縮蓄蹙蹴軸逐春椿瑃出朮黜充忠沖蟲衝衷悴膵萃�\".split(\"\");\nfor(j = 0; j != D[245].length; ++j) if(D[245][j].charCodeAt(0) !== 0xFFFD) { e[D[245][j]] = 62720 + j; d[62720 + j] = D[245][j];}\nD[246] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������贅取吹嘴娶就炊翠聚脆臭趣醉驟鷲側仄厠惻測層侈値嗤峙幟恥梔治淄熾痔痴癡稚穉緇緻置致蚩輜雉馳齒則勅飭親七柒漆侵寢枕沈浸琛砧針鍼蟄秤稱快他咤唾墮妥惰打拖朶楕舵陀馱駝倬卓啄坼度托拓擢晫柝濁濯琢琸託�\".split(\"\");\nfor(j = 0; j != D[246].length; ++j) if(D[246][j].charCodeAt(0) !== 0xFFFD) { e[D[246][j]] = 62976 + j; d[62976 + j] = D[246][j];}\nD[247] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������鐸呑嘆坦彈憚歎灘炭綻誕奪脫探眈耽貪塔搭榻宕帑湯糖蕩兌台太怠態殆汰泰笞胎苔跆邰颱宅擇澤撑攄兎吐土討慟桶洞痛筒統通堆槌腿褪退頹偸套妬投透鬪慝特闖坡婆巴把播擺杷波派爬琶破罷芭跛頗判坂板版瓣販辦鈑�\".split(\"\");\nfor(j = 0; j != D[247].length; ++j) if(D[247][j].charCodeAt(0) !== 0xFFFD) { e[D[247][j]] = 63232 + j; d[63232 + j] = D[247][j];}\nD[248] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������阪八叭捌佩唄悖敗沛浿牌狽稗覇貝彭澎烹膨愎便偏扁片篇編翩遍鞭騙貶坪平枰萍評吠嬖幣廢弊斃肺蔽閉陛佈包匍匏咆哺圃布怖抛抱捕暴泡浦疱砲胞脯苞葡蒲袍褒逋鋪飽鮑幅暴曝瀑爆輻俵剽彪慓杓標漂瓢票表豹飇飄驃�\".split(\"\");\nfor(j = 0; j != D[248].length; ++j) if(D[248][j].charCodeAt(0) !== 0xFFFD) { e[D[248][j]] = 63488 + j; d[63488 + j] = D[248][j];}\nD[249] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������品稟楓諷豊風馮彼披疲皮被避陂匹弼必泌珌畢疋筆苾馝乏逼下何厦夏廈昰河瑕荷蝦賀遐霞鰕壑學虐謔鶴寒恨悍旱汗漢澣瀚罕翰閑閒限韓割轄函含咸啣喊檻涵緘艦銜陷鹹合哈盒蛤閤闔陜亢伉姮嫦巷恒抗杭桁沆港缸肛航�\".split(\"\");\nfor(j = 0; j != D[249].length; ++j) if(D[249][j].charCodeAt(0) !== 0xFFFD) { e[D[249][j]] = 63744 + j; d[63744 + j] = D[249][j];}\nD[250] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������行降項亥偕咳垓奚孩害懈楷海瀣蟹解該諧邂駭骸劾核倖幸杏荇行享向嚮珦鄕響餉饗香噓墟虛許憲櫶獻軒歇險驗奕爀赫革俔峴弦懸晛泫炫玄玹現眩睍絃絢縣舷衒見賢鉉顯孑穴血頁嫌俠協夾峽挾浹狹脅脇莢鋏頰亨兄刑型�\".split(\"\");\nfor(j = 0; j != D[250].length; ++j) if(D[250][j].charCodeAt(0) !== 0xFFFD) { e[D[250][j]] = 64000 + j; d[64000 + j] = D[250][j];}\nD[251] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������形泂滎瀅灐炯熒珩瑩荊螢衡逈邢鎣馨兮彗惠慧暳蕙蹊醯鞋乎互呼壕壺好岵弧戶扈昊晧毫浩淏湖滸澔濠濩灝狐琥瑚瓠皓祜糊縞胡芦葫蒿虎號蝴護豪鎬頀顥惑或酷婚昏混渾琿魂忽惚笏哄弘汞泓洪烘紅虹訌鴻化和嬅樺火畵�\".split(\"\");\nfor(j = 0; j != D[251].length; ++j) if(D[251][j].charCodeAt(0) !== 0xFFFD) { e[D[251][j]] = 64256 + j; d[64256 + j] = D[251][j];}\nD[252] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������禍禾花華話譁貨靴廓擴攫確碻穫丸喚奐宦幻患換歡晥桓渙煥環紈還驩鰥活滑猾豁闊凰幌徨恍惶愰慌晃晄榥況湟滉潢煌璜皇篁簧荒蝗遑隍黃匯回廻徊恢悔懷晦會檜淮澮灰獪繪膾茴蛔誨賄劃獲宖橫鐄哮嚆孝效斅曉梟涍淆�\".split(\"\");\nfor(j = 0; j != D[252].length; ++j) if(D[252][j].charCodeAt(0) !== 0xFFFD) { e[D[252][j]] = 64512 + j; d[64512 + j] = D[252][j];}\nD[253] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������爻肴酵驍侯候厚后吼喉嗅帿後朽煦珝逅勛勳塤壎焄熏燻薰訓暈薨喧暄煊萱卉喙毁彙徽揮暉煇諱輝麾休携烋畦虧恤譎鷸兇凶匈洶胸黑昕欣炘痕吃屹紇訖欠欽歆吸恰洽翕興僖凞喜噫囍姬嬉希憙憘戱晞曦熙熹熺犧禧稀羲詰�\".split(\"\");\nfor(j = 0; j != D[253].length; ++j) if(D[253][j].charCodeAt(0) !== 0xFFFD) { e[D[253][j]] = 64768 + j; d[64768 + j] = D[253][j];}\nreturn {\"enc\": e, \"dec\": d }; })();\ncptable[10004] = (function(){ var d = \"ےے\\u0002\\u0003\\u0004\\u0005\\u0006\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\u0014\\u0015\\u0016\\u0017\\u0018\\u0019\\u001a\\u001b\\u001c\\u001d\\u001e\\u001f !\\\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~Ä ÇÉÑÖÜáàâäں«çéèêëí…îïñó»ôö÷úùûü٪،٠١٢٣٤٥٦٧٨٩؛؟٭ءآأؤإئابةتثجحخدذرزسشصضطظعغـفقكلمنهوىيًٌٍَُِّْپٹچەڤگڈڑژے\", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {\"enc\": e, \"dec\": D }; })();\ncptable[10005] = (function(){ var d = \"\\u0002\\u0003\\u0004\\u0005\\u0006\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\u0014\\u0015\\u0016\\u0017\\u0018\\u0019\\u001a\\u001b\\u001c\\u001d\\u001e\\u001f !\\\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~ÄÅÇÉÑÖÜáàâäãåçéèêëíìîïñóòôöõúùûü¤₪„ּֽ… �ִֵֶַ–—“”‘’־ְֱֲֳָֻׁאבגדהוזחטיךכלםמןנסעףפץצקרשת\", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {\"enc\": e, \"dec\": D }; })();\ncptable[10008] = (function(){ var d = [], e = {}, D = [], j;\nD[0] = \"\\u0000\\u0001\\u0002\\u0003\\u0004\\u0005\\u0006\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\u0014\\u0015\\u0016\\u0017\\u0018\\u0019\\u001a\\u001b\\u001c\\u001d\\u001e\\u001f !\\\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~���������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[0].length; ++j) if(D[0][j].charCodeAt(0) !== 0xFFFD) { e[D[0][j]] = 0 + j; d[0 + j] = D[0][j];}\nD[161] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������　、。・ˉˇ¨〃々―～�…‘’“”〔〕〈〉《》「」『』〖〗【】±×÷∶∧∨∑∏∪∩∈∷√⊥∥∠⌒⊙∫∮≡≌≈∽∝≠≮≯≤≥∞∵∴♂♀°′″℃＄¤￠￡‰§№☆★○●◎◇◆□■△▲※→←↑↓〓�\".split(\"\");\nfor(j = 0; j != D[161].length; ++j) if(D[161][j].charCodeAt(0) !== 0xFFFD) { e[D[161][j]] = 41216 + j; d[41216 + j] = D[161][j];}\nD[162] = \"���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������⒈⒉⒊⒋⒌⒍⒎⒏⒐⒑⒒⒓⒔⒕⒖⒗⒘⒙⒚⒛⑴⑵⑶⑷⑸⑹⑺⑻⑼⑽⑾⑿⒀⒁⒂⒃⒄⒅⒆⒇①②③④⑤⑥⑦⑧⑨⑩��㈠㈡㈢㈣㈤㈥㈦㈧㈨㈩��ⅠⅡⅢⅣⅤⅥⅦⅧⅨⅩⅪⅫ���\".split(\"\");\nfor(j = 0; j != D[162].length; ++j) if(D[162][j].charCodeAt(0) !== 0xFFFD) { e[D[162][j]] = 41472 + j; d[41472 + j] = D[162][j];}\nD[163] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������！＂＃￥％＆＇（）＊＋，－．／０１２３４５６７８９：；＜＝＞？＠ＡＢＣＤＥＦＧＨＩＪＫＬＭＮＯＰＱＲＳＴＵＶＷＸＹＺ［＼］＾＿｀ａｂｃｄｅｆｇｈｉｊｋｌｍｎｏｐｑｒｓｔｕｖｗｘｙｚ｛｜｝￣�\".split(\"\");\nfor(j = 0; j != D[163].length; ++j) if(D[163][j].charCodeAt(0) !== 0xFFFD) { e[D[163][j]] = 41728 + j; d[41728 + j] = D[163][j];}\nD[164] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������ぁあぃいぅうぇえぉおかがきぎくぐけげこごさざしじすずせぜそぞただちぢっつづてでとどなにぬねのはばぱひびぴふぶぷへべぺほぼぽまみむめもゃやゅゆょよらりるれろゎわゐゑをん������������\".split(\"\");\nfor(j = 0; j != D[164].length; ++j) if(D[164][j].charCodeAt(0) !== 0xFFFD) { e[D[164][j]] = 41984 + j; d[41984 + j] = D[164][j];}\nD[165] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������ァアィイゥウェエォオカガキギクグケゲコゴサザシジスズセゼソゾタダチヂッツヅテデトドナニヌネノハバパヒビピフブプヘベペホボポマミムメモャヤュユョヨラリルレロヮワヰヱヲンヴヵヶ���������\".split(\"\");\nfor(j = 0; j != D[165].length; ++j) if(D[165][j].charCodeAt(0) !== 0xFFFD) { e[D[165][j]] = 42240 + j; d[42240 + j] = D[165][j];}\nD[166] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������ΑΒΓΔΕΖΗΘΙΚΛΜΝΞΟΠΡΣΤΥΦΧΨΩ��������αβγδεζηθικλμνξοπρστυφχψω���������������������������������������\".split(\"\");\nfor(j = 0; j != D[166].length; ++j) if(D[166][j].charCodeAt(0) !== 0xFFFD) { e[D[166][j]] = 42496 + j; d[42496 + j] = D[166][j];}\nD[167] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ���������������абвгдеёжзийклмнопрстуфхцчшщъыьэюя��������������\".split(\"\");\nfor(j = 0; j != D[167].length; ++j) if(D[167][j].charCodeAt(0) !== 0xFFFD) { e[D[167][j]] = 42752 + j; d[42752 + j] = D[167][j];}\nD[168] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������āáǎàēéěèīíǐìōóǒòūúǔùǖǘǚǜüê����������ㄅㄆㄇㄈㄉㄊㄋㄌㄍㄎㄏㄐㄑㄒㄓㄔㄕㄖㄗㄘㄙㄚㄛㄜㄝㄞㄟㄠㄡㄢㄣㄤㄥㄦㄧㄨㄩ����������������������\".split(\"\");\nfor(j = 0; j != D[168].length; ++j) if(D[168][j].charCodeAt(0) !== 0xFFFD) { e[D[168][j]] = 43008 + j; d[43008 + j] = D[168][j];}\nD[169] = \"��������������������������������������������������������������������������������������������������������������������������������������������������������������������─━│┃┄┅┆┇┈┉┊┋┌┍┎┏┐┑┒┓└┕┖┗┘┙┚┛├┝┞┟┠┡┢┣┤┥┦┧┨┩┪┫┬┭┮┯┰┱┲┳┴┵┶┷┸┹┺┻┼┽┾┿╀╁╂╃╄╅╆╇╈╉╊╋����������������\".split(\"\");\nfor(j = 0; j != D[169].length; ++j) if(D[169][j].charCodeAt(0) !== 0xFFFD) { e[D[169][j]] = 43264 + j; d[43264 + j] = D[169][j];}\nD[176] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������啊阿埃挨哎唉哀皑癌蔼矮艾碍爱隘鞍氨安俺按暗岸胺案肮昂盎凹敖熬翱袄傲奥懊澳芭捌扒叭吧笆八疤巴拔跋靶把耙坝霸罢爸白柏百摆佰败拜稗斑班搬扳般颁板版扮拌伴瓣半办绊邦帮梆榜膀绑棒磅蚌镑傍谤苞胞包褒剥�\".split(\"\");\nfor(j = 0; j != D[176].length; ++j) if(D[176][j].charCodeAt(0) !== 0xFFFD) { e[D[176][j]] = 45056 + j; d[45056 + j] = D[176][j];}\nD[177] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������薄雹保堡饱宝抱报暴豹鲍爆杯碑悲卑北辈背贝钡倍狈备惫焙被奔苯本笨崩绷甭泵蹦迸逼鼻比鄙笔彼碧蓖蔽毕毙毖币庇痹闭敝弊必辟壁臂避陛鞭边编贬扁便变卞辨辩辫遍标彪膘表鳖憋别瘪彬斌濒滨宾摈兵冰柄丙秉饼炳�\".split(\"\");\nfor(j = 0; j != D[177].length; ++j) if(D[177][j].charCodeAt(0) !== 0xFFFD) { e[D[177][j]] = 45312 + j; d[45312 + j] = D[177][j];}\nD[178] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������病并玻菠播拨钵波博勃搏铂箔伯帛舶脖膊渤泊驳捕卜哺补埠不布步簿部怖擦猜裁材才财睬踩采彩菜蔡餐参蚕残惭惨灿苍舱仓沧藏操糙槽曹草厕策侧册测层蹭插叉茬茶查碴搽察岔差诧拆柴豺搀掺蝉馋谗缠铲产阐颤昌猖�\".split(\"\");\nfor(j = 0; j != D[178].length; ++j) if(D[178][j].charCodeAt(0) !== 0xFFFD) { e[D[178][j]] = 45568 + j; d[45568 + j] = D[178][j];}\nD[179] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������场尝常长偿肠厂敞畅唱倡超抄钞朝嘲潮巢吵炒车扯撤掣彻澈郴臣辰尘晨忱沉陈趁衬撑称城橙成呈乘程惩澄诚承逞骋秤吃痴持匙池迟弛驰耻齿侈尺赤翅斥炽充冲虫崇宠抽酬畴踌稠愁筹仇绸瞅丑臭初出橱厨躇锄雏滁除楚�\".split(\"\");\nfor(j = 0; j != D[179].length; ++j) if(D[179][j].charCodeAt(0) !== 0xFFFD) { e[D[179][j]] = 45824 + j; d[45824 + j] = D[179][j];}\nD[180] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������础储矗搐触处揣川穿椽传船喘串疮窗幢床闯创吹炊捶锤垂春椿醇唇淳纯蠢戳绰疵茨磁雌辞慈瓷词此刺赐次聪葱囱匆从丛凑粗醋簇促蹿篡窜摧崔催脆瘁粹淬翠村存寸磋撮搓措挫错搭达答瘩打大呆歹傣戴带殆代贷袋待逮�\".split(\"\");\nfor(j = 0; j != D[180].length; ++j) if(D[180][j].charCodeAt(0) !== 0xFFFD) { e[D[180][j]] = 46080 + j; d[46080 + j] = D[180][j];}\nD[181] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������怠耽担丹单郸掸胆旦氮但惮淡诞弹蛋当挡党荡档刀捣蹈倒岛祷导到稻悼道盗德得的蹬灯登等瞪凳邓堤低滴迪敌笛狄涤翟嫡抵底地蒂第帝弟递缔颠掂滇碘点典靛垫电佃甸店惦奠淀殿碉叼雕凋刁掉吊钓调跌爹碟蝶迭谍叠�\".split(\"\");\nfor(j = 0; j != D[181].length; ++j) if(D[181][j].charCodeAt(0) !== 0xFFFD) { e[D[181][j]] = 46336 + j; d[46336 + j] = D[181][j];}\nD[182] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������丁盯叮钉顶鼎锭定订丢东冬董懂动栋侗恫冻洞兜抖斗陡豆逗痘都督毒犊独读堵睹赌杜镀肚度渡妒端短锻段断缎堆兑队对墩吨蹲敦顿囤钝盾遁掇哆多夺垛躲朵跺舵剁惰堕蛾峨鹅俄额讹娥恶厄扼遏鄂饿恩而儿耳尔饵洱二�\".split(\"\");\nfor(j = 0; j != D[182].length; ++j) if(D[182][j].charCodeAt(0) !== 0xFFFD) { e[D[182][j]] = 46592 + j; d[46592 + j] = D[182][j];}\nD[183] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������贰发罚筏伐乏阀法珐藩帆番翻樊矾钒繁凡烦反返范贩犯饭泛坊芳方肪房防妨仿访纺放菲非啡飞肥匪诽吠肺废沸费芬酚吩氛分纷坟焚汾粉奋份忿愤粪丰封枫蜂峰锋风疯烽逢冯缝讽奉凤佛否夫敷肤孵扶拂辐幅氟符伏俘服�\".split(\"\");\nfor(j = 0; j != D[183].length; ++j) if(D[183][j].charCodeAt(0) !== 0xFFFD) { e[D[183][j]] = 46848 + j; d[46848 + j] = D[183][j];}\nD[184] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������浮涪福袱弗甫抚辅俯釜斧脯腑府腐赴副覆赋复傅付阜父腹负富讣附妇缚咐噶嘎该改概钙盖溉干甘杆柑竿肝赶感秆敢赣冈刚钢缸肛纲岗港杠篙皋高膏羔糕搞镐稿告哥歌搁戈鸽胳疙割革葛格蛤阁隔铬个各给根跟耕更庚羹�\".split(\"\");\nfor(j = 0; j != D[184].length; ++j) if(D[184][j].charCodeAt(0) !== 0xFFFD) { e[D[184][j]] = 47104 + j; d[47104 + j] = D[184][j];}\nD[185] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������埂耿梗工攻功恭龚供躬公宫弓巩汞拱贡共钩勾沟苟狗垢构购够辜菇咕箍估沽孤姑鼓古蛊骨谷股故顾固雇刮瓜剐寡挂褂乖拐怪棺关官冠观管馆罐惯灌贯光广逛瑰规圭硅归龟闺轨鬼诡癸桂柜跪贵刽辊滚棍锅郭国果裹过哈�\".split(\"\");\nfor(j = 0; j != D[185].length; ++j) if(D[185][j].charCodeAt(0) !== 0xFFFD) { e[D[185][j]] = 47360 + j; d[47360 + j] = D[185][j];}\nD[186] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������骸孩海氦亥害骇酣憨邯韩含涵寒函喊罕翰撼捍旱憾悍焊汗汉夯杭航壕嚎豪毫郝好耗号浩呵喝荷菏核禾和何合盒貉阂河涸赫褐鹤贺嘿黑痕很狠恨哼亨横衡恒轰哄烘虹鸿洪宏弘红喉侯猴吼厚候后呼乎忽瑚壶葫胡蝴狐糊湖�\".split(\"\");\nfor(j = 0; j != D[186].length; ++j) if(D[186][j].charCodeAt(0) !== 0xFFFD) { e[D[186][j]] = 47616 + j; d[47616 + j] = D[186][j];}\nD[187] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������弧虎唬护互沪户花哗华猾滑画划化话槐徊怀淮坏欢环桓还缓换患唤痪豢焕涣宦幻荒慌黄磺蝗簧皇凰惶煌晃幌恍谎灰挥辉徽恢蛔回毁悔慧卉惠晦贿秽会烩汇讳诲绘荤昏婚魂浑混豁活伙火获或惑霍货祸击圾基机畸稽积箕�\".split(\"\");\nfor(j = 0; j != D[187].length; ++j) if(D[187][j].charCodeAt(0) !== 0xFFFD) { e[D[187][j]] = 47872 + j; d[47872 + j] = D[187][j];}\nD[188] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������肌饥迹激讥鸡姬绩缉吉极棘辑籍集及急疾汲即嫉级挤几脊己蓟技冀季伎祭剂悸济寄寂计记既忌际妓继纪嘉枷夹佳家加荚颊贾甲钾假稼价架驾嫁歼监坚尖笺间煎兼肩艰奸缄茧检柬碱硷拣捡简俭剪减荐槛鉴践贱见键箭件�\".split(\"\");\nfor(j = 0; j != D[188].length; ++j) if(D[188][j].charCodeAt(0) !== 0xFFFD) { e[D[188][j]] = 48128 + j; d[48128 + j] = D[188][j];}\nD[189] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������健舰剑饯渐溅涧建僵姜将浆江疆蒋桨奖讲匠酱降蕉椒礁焦胶交郊浇骄娇嚼搅铰矫侥脚狡角饺缴绞剿教酵轿较叫窖揭接皆秸街阶截劫节桔杰捷睫竭洁结解姐戒藉芥界借介疥诫届巾筋斤金今津襟紧锦仅谨进靳晋禁近烬浸�\".split(\"\");\nfor(j = 0; j != D[189].length; ++j) if(D[189][j].charCodeAt(0) !== 0xFFFD) { e[D[189][j]] = 48384 + j; d[48384 + j] = D[189][j];}\nD[190] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������尽劲荆兢茎睛晶鲸京惊精粳经井警景颈静境敬镜径痉靖竟竞净炯窘揪究纠玖韭久灸九酒厩救旧臼舅咎就疚鞠拘狙疽居驹菊局咀矩举沮聚拒据巨具距踞锯俱句惧炬剧捐鹃娟倦眷卷绢撅攫抉掘倔爵觉决诀绝均菌钧军君峻�\".split(\"\");\nfor(j = 0; j != D[190].length; ++j) if(D[190][j].charCodeAt(0) !== 0xFFFD) { e[D[190][j]] = 48640 + j; d[48640 + j] = D[190][j];}\nD[191] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������俊竣浚郡骏喀咖卡咯开揩楷凯慨刊堪勘坎砍看康慷糠扛抗亢炕考拷烤靠坷苛柯棵磕颗科壳咳可渴克刻客课肯啃垦恳坑吭空恐孔控抠口扣寇枯哭窟苦酷库裤夸垮挎跨胯块筷侩快宽款匡筐狂框矿眶旷况亏盔岿窥葵奎魁傀�\".split(\"\");\nfor(j = 0; j != D[191].length; ++j) if(D[191][j].charCodeAt(0) !== 0xFFFD) { e[D[191][j]] = 48896 + j; d[48896 + j] = D[191][j];}\nD[192] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������馈愧溃坤昆捆困括扩廓阔垃拉喇蜡腊辣啦莱来赖蓝婪栏拦篮阑兰澜谰揽览懒缆烂滥琅榔狼廊郎朗浪捞劳牢老佬姥酪烙涝勒乐雷镭蕾磊累儡垒擂肋类泪棱楞冷厘梨犁黎篱狸离漓理李里鲤礼莉荔吏栗丽厉励砾历利傈例俐�\".split(\"\");\nfor(j = 0; j != D[192].length; ++j) if(D[192][j].charCodeAt(0) !== 0xFFFD) { e[D[192][j]] = 49152 + j; d[49152 + j] = D[192][j];}\nD[193] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������痢立粒沥隶力璃哩俩联莲连镰廉怜涟帘敛脸链恋炼练粮凉梁粱良两辆量晾亮谅撩聊僚疗燎寥辽潦了撂镣廖料列裂烈劣猎琳林磷霖临邻鳞淋凛赁吝拎玲菱零龄铃伶羚凌灵陵岭领另令溜琉榴硫馏留刘瘤流柳六龙聋咙笼窿�\".split(\"\");\nfor(j = 0; j != D[193].length; ++j) if(D[193][j].charCodeAt(0) !== 0xFFFD) { e[D[193][j]] = 49408 + j; d[49408 + j] = D[193][j];}\nD[194] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������隆垄拢陇楼娄搂篓漏陋芦卢颅庐炉掳卤虏鲁麓碌露路赂鹿潞禄录陆戮驴吕铝侣旅履屡缕虑氯律率滤绿峦挛孪滦卵乱掠略抡轮伦仑沦纶论萝螺罗逻锣箩骡裸落洛骆络妈麻玛码蚂马骂嘛吗埋买麦卖迈脉瞒馒蛮满蔓曼慢漫�\".split(\"\");\nfor(j = 0; j != D[194].length; ++j) if(D[194][j].charCodeAt(0) !== 0xFFFD) { e[D[194][j]] = 49664 + j; d[49664 + j] = D[194][j];}\nD[195] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������谩芒茫盲氓忙莽猫茅锚毛矛铆卯茂冒帽貌贸么玫枚梅酶霉煤没眉媒镁每美昧寐妹媚门闷们萌蒙檬盟锰猛梦孟眯醚靡糜迷谜弥米秘觅泌蜜密幂棉眠绵冕免勉娩缅面苗描瞄藐秒渺庙妙蔑灭民抿皿敏悯闽明螟鸣铭名命谬摸�\".split(\"\");\nfor(j = 0; j != D[195].length; ++j) if(D[195][j].charCodeAt(0) !== 0xFFFD) { e[D[195][j]] = 49920 + j; d[49920 + j] = D[195][j];}\nD[196] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������摹蘑模膜磨摩魔抹末莫墨默沫漠寞陌谋牟某拇牡亩姆母墓暮幕募慕木目睦牧穆拿哪呐钠那娜纳氖乃奶耐奈南男难囊挠脑恼闹淖呢馁内嫩能妮霓倪泥尼拟你匿腻逆溺蔫拈年碾撵捻念娘酿鸟尿捏聂孽啮镊镍涅您柠狞凝宁�\".split(\"\");\nfor(j = 0; j != D[196].length; ++j) if(D[196][j].charCodeAt(0) !== 0xFFFD) { e[D[196][j]] = 50176 + j; d[50176 + j] = D[196][j];}\nD[197] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������拧泞牛扭钮纽脓浓农弄奴努怒女暖虐疟挪懦糯诺哦欧鸥殴藕呕偶沤啪趴爬帕怕琶拍排牌徘湃派攀潘盘磐盼畔判叛乓庞旁耪胖抛咆刨炮袍跑泡呸胚培裴赔陪配佩沛喷盆砰抨烹澎彭蓬棚硼篷膨朋鹏捧碰坯砒霹批披劈琵毗�\".split(\"\");\nfor(j = 0; j != D[197].length; ++j) if(D[197][j].charCodeAt(0) !== 0xFFFD) { e[D[197][j]] = 50432 + j; d[50432 + j] = D[197][j];}\nD[198] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������啤脾疲皮匹痞僻屁譬篇偏片骗飘漂瓢票撇瞥拼频贫品聘乒坪苹萍平凭瓶评屏坡泼颇婆破魄迫粕剖扑铺仆莆葡菩蒲埔朴圃普浦谱曝瀑期欺栖戚妻七凄漆柒沏其棋奇歧畦崎脐齐旗祈祁骑起岂乞企启契砌器气迄弃汽泣讫掐�\".split(\"\");\nfor(j = 0; j != D[198].length; ++j) if(D[198][j].charCodeAt(0) !== 0xFFFD) { e[D[198][j]] = 50688 + j; d[50688 + j] = D[198][j];}\nD[199] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������恰洽牵扦钎铅千迁签仟谦乾黔钱钳前潜遣浅谴堑嵌欠歉枪呛腔羌墙蔷强抢橇锹敲悄桥瞧乔侨巧鞘撬翘峭俏窍切茄且怯窃钦侵亲秦琴勤芹擒禽寝沁青轻氢倾卿清擎晴氰情顷请庆琼穷秋丘邱球求囚酋泅趋区蛆曲躯屈驱渠�\".split(\"\");\nfor(j = 0; j != D[199].length; ++j) if(D[199][j].charCodeAt(0) !== 0xFFFD) { e[D[199][j]] = 50944 + j; d[50944 + j] = D[199][j];}\nD[200] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������取娶龋趣去圈颧权醛泉全痊拳犬券劝缺炔瘸却鹊榷确雀裙群然燃冉染瓤壤攘嚷让饶扰绕惹热壬仁人忍韧任认刃妊纫扔仍日戎茸蓉荣融熔溶容绒冗揉柔肉茹蠕儒孺如辱乳汝入褥软阮蕊瑞锐闰润若弱撒洒萨腮鳃塞赛三叁�\".split(\"\");\nfor(j = 0; j != D[200].length; ++j) if(D[200][j].charCodeAt(0) !== 0xFFFD) { e[D[200][j]] = 51200 + j; d[51200 + j] = D[200][j];}\nD[201] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������伞散桑嗓丧搔骚扫嫂瑟色涩森僧莎砂杀刹沙纱傻啥煞筛晒珊苫杉山删煽衫闪陕擅赡膳善汕扇缮墒伤商赏晌上尚裳梢捎稍烧芍勺韶少哨邵绍奢赊蛇舌舍赦摄射慑涉社设砷申呻伸身深娠绅神沈审婶甚肾慎渗声生甥牲升绳�\".split(\"\");\nfor(j = 0; j != D[201].length; ++j) if(D[201][j].charCodeAt(0) !== 0xFFFD) { e[D[201][j]] = 51456 + j; d[51456 + j] = D[201][j];}\nD[202] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������省盛剩胜圣师失狮施湿诗尸虱十石拾时什食蚀实识史矢使屎驶始式示士世柿事拭誓逝势是嗜噬适仕侍释饰氏市恃室视试收手首守寿授售受瘦兽蔬枢梳殊抒输叔舒淑疏书赎孰熟薯暑曙署蜀黍鼠属术述树束戍竖墅庶数漱�\".split(\"\");\nfor(j = 0; j != D[202].length; ++j) if(D[202][j].charCodeAt(0) !== 0xFFFD) { e[D[202][j]] = 51712 + j; d[51712 + j] = D[202][j];}\nD[203] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������恕刷耍摔衰甩帅栓拴霜双爽谁水睡税吮瞬顺舜说硕朔烁斯撕嘶思私司丝死肆寺嗣四伺似饲巳松耸怂颂送宋讼诵搜艘擞嗽苏酥俗素速粟僳塑溯宿诉肃酸蒜算虽隋随绥髓碎岁穗遂隧祟孙损笋蓑梭唆缩琐索锁所塌他它她塔�\".split(\"\");\nfor(j = 0; j != D[203].length; ++j) if(D[203][j].charCodeAt(0) !== 0xFFFD) { e[D[203][j]] = 51968 + j; d[51968 + j] = D[203][j];}\nD[204] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������獭挞蹋踏胎苔抬台泰酞太态汰坍摊贪瘫滩坛檀痰潭谭谈坦毯袒碳探叹炭汤塘搪堂棠膛唐糖倘躺淌趟烫掏涛滔绦萄桃逃淘陶讨套特藤腾疼誊梯剔踢锑提题蹄啼体替嚏惕涕剃屉天添填田甜恬舔腆挑条迢眺跳贴铁帖厅听烃�\".split(\"\");\nfor(j = 0; j != D[204].length; ++j) if(D[204][j].charCodeAt(0) !== 0xFFFD) { e[D[204][j]] = 52224 + j; d[52224 + j] = D[204][j];}\nD[205] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������汀廷停亭庭挺艇通桐酮瞳同铜彤童桶捅筒统痛偷投头透凸秃突图徒途涂屠土吐兔湍团推颓腿蜕褪退吞屯臀拖托脱鸵陀驮驼椭妥拓唾挖哇蛙洼娃瓦袜歪外豌弯湾玩顽丸烷完碗挽晚皖惋宛婉万腕汪王亡枉网往旺望忘妄威�\".split(\"\");\nfor(j = 0; j != D[205].length; ++j) if(D[205][j].charCodeAt(0) !== 0xFFFD) { e[D[205][j]] = 52480 + j; d[52480 + j] = D[205][j];}\nD[206] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������巍微危韦违桅围唯惟为潍维苇萎委伟伪尾纬未蔚味畏胃喂魏位渭谓尉慰卫瘟温蚊文闻纹吻稳紊问嗡翁瓮挝蜗涡窝我斡卧握沃巫呜钨乌污诬屋无芜梧吾吴毋武五捂午舞伍侮坞戊雾晤物勿务悟误昔熙析西硒矽晰嘻吸锡牺�\".split(\"\");\nfor(j = 0; j != D[206].length; ++j) if(D[206][j].charCodeAt(0) !== 0xFFFD) { e[D[206][j]] = 52736 + j; d[52736 + j] = D[206][j];}\nD[207] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������稀息希悉膝夕惜熄烯溪汐犀檄袭席习媳喜铣洗系隙戏细瞎虾匣霞辖暇峡侠狭下厦夏吓掀锨先仙鲜纤咸贤衔舷闲涎弦嫌显险现献县腺馅羡宪陷限线相厢镶香箱襄湘乡翔祥详想响享项巷橡像向象萧硝霄削哮嚣销消宵淆晓�\".split(\"\");\nfor(j = 0; j != D[207].length; ++j) if(D[207][j].charCodeAt(0) !== 0xFFFD) { e[D[207][j]] = 52992 + j; d[52992 + j] = D[207][j];}\nD[208] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������小孝校肖啸笑效楔些歇蝎鞋协挟携邪斜胁谐写械卸蟹懈泄泻谢屑薪芯锌欣辛新忻心信衅星腥猩惺兴刑型形邢行醒幸杏性姓兄凶胸匈汹雄熊休修羞朽嗅锈秀袖绣墟戌需虚嘘须徐许蓄酗叙旭序畜恤絮婿绪续轩喧宣悬旋玄�\".split(\"\");\nfor(j = 0; j != D[208].length; ++j) if(D[208][j].charCodeAt(0) !== 0xFFFD) { e[D[208][j]] = 53248 + j; d[53248 + j] = D[208][j];}\nD[209] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������选癣眩绚靴薛学穴雪血勋熏循旬询寻驯巡殉汛训讯逊迅压押鸦鸭呀丫芽牙蚜崖衙涯雅哑亚讶焉咽阉烟淹盐严研蜒岩延言颜阎炎沿奄掩眼衍演艳堰燕厌砚雁唁彦焰宴谚验殃央鸯秧杨扬佯疡羊洋阳氧仰痒养样漾邀腰妖瑶�\".split(\"\");\nfor(j = 0; j != D[209].length; ++j) if(D[209][j].charCodeAt(0) !== 0xFFFD) { e[D[209][j]] = 53504 + j; d[53504 + j] = D[209][j];}\nD[210] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������摇尧遥窑谣姚咬舀药要耀椰噎耶爷野冶也页掖业叶曳腋夜液一壹医揖铱依伊衣颐夷遗移仪胰疑沂宜姨彝椅蚁倚已乙矣以艺抑易邑屹亿役臆逸肄疫亦裔意毅忆义益溢诣议谊译异翼翌绎茵荫因殷音阴姻吟银淫寅饮尹引隐�\".split(\"\");\nfor(j = 0; j != D[210].length; ++j) if(D[210][j].charCodeAt(0) !== 0xFFFD) { e[D[210][j]] = 53760 + j; d[53760 + j] = D[210][j];}\nD[211] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������印英樱婴鹰应缨莹萤营荧蝇迎赢盈影颖硬映哟拥佣臃痈庸雍踊蛹咏泳涌永恿勇用幽优悠忧尤由邮铀犹油游酉有友右佑釉诱又幼迂淤于盂榆虞愚舆余俞逾鱼愉渝渔隅予娱雨与屿禹宇语羽玉域芋郁吁遇喻峪御愈欲狱育誉�\".split(\"\");\nfor(j = 0; j != D[211].length; ++j) if(D[211][j].charCodeAt(0) !== 0xFFFD) { e[D[211][j]] = 54016 + j; d[54016 + j] = D[211][j];}\nD[212] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������浴寓裕预豫驭鸳渊冤元垣袁原援辕园员圆猿源缘远苑愿怨院曰约越跃钥岳粤月悦阅耘云郧匀陨允运蕴酝晕韵孕匝砸杂栽哉灾宰载再在咱攒暂赞赃脏葬遭糟凿藻枣早澡蚤躁噪造皂灶燥责择则泽贼怎增憎曾赠扎喳渣札轧�\".split(\"\");\nfor(j = 0; j != D[212].length; ++j) if(D[212][j].charCodeAt(0) !== 0xFFFD) { e[D[212][j]] = 54272 + j; d[54272 + j] = D[212][j];}\nD[213] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������铡闸眨栅榨咋乍炸诈摘斋宅窄债寨瞻毡詹粘沾盏斩辗崭展蘸栈占战站湛绽樟章彰漳张掌涨杖丈帐账仗胀瘴障招昭找沼赵照罩兆肇召遮折哲蛰辙者锗蔗这浙珍斟真甄砧臻贞针侦枕疹诊震振镇阵蒸挣睁征狰争怔整拯正政�\".split(\"\");\nfor(j = 0; j != D[213].length; ++j) if(D[213][j].charCodeAt(0) !== 0xFFFD) { e[D[213][j]] = 54528 + j; d[54528 + j] = D[213][j];}\nD[214] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������帧症郑证芝枝支吱蜘知肢脂汁之织职直植殖执值侄址指止趾只旨纸志挚掷至致置帜峙制智秩稚质炙痔滞治窒中盅忠钟衷终种肿重仲众舟周州洲诌粥轴肘帚咒皱宙昼骤珠株蛛朱猪诸诛逐竹烛煮拄瞩嘱主著柱助蛀贮铸筑�\".split(\"\");\nfor(j = 0; j != D[214].length; ++j) if(D[214][j].charCodeAt(0) !== 0xFFFD) { e[D[214][j]] = 54784 + j; d[54784 + j] = D[214][j];}\nD[215] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������住注祝驻抓爪拽专砖转撰赚篆桩庄装妆撞壮状椎锥追赘坠缀谆准捉拙卓桌琢茁酌啄着灼浊兹咨资姿滋淄孜紫仔籽滓子自渍字鬃棕踪宗综总纵邹走奏揍租足卒族祖诅阻组钻纂嘴醉最罪尊遵昨左佐柞做作坐座������\".split(\"\");\nfor(j = 0; j != D[215].length; ++j) if(D[215][j].charCodeAt(0) !== 0xFFFD) { e[D[215][j]] = 55040 + j; d[55040 + j] = D[215][j];}\nD[216] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������亍丌兀丐廿卅丕亘丞鬲孬噩丨禺丿匕乇夭爻卮氐囟胤馗毓睾鼗丶亟鼐乜乩亓芈孛啬嘏仄厍厝厣厥厮靥赝匚叵匦匮匾赜卦卣刂刈刎刭刳刿剀剌剞剡剜蒯剽劂劁劐劓冂罔亻仃仉仂仨仡仫仞伛仳伢佤仵伥伧伉伫佞佧攸佚佝�\".split(\"\");\nfor(j = 0; j != D[216].length; ++j) if(D[216][j].charCodeAt(0) !== 0xFFFD) { e[D[216][j]] = 55296 + j; d[55296 + j] = D[216][j];}\nD[217] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������佟佗伲伽佶佴侑侉侃侏佾佻侪佼侬侔俦俨俪俅俚俣俜俑俟俸倩偌俳倬倏倮倭俾倜倌倥倨偾偃偕偈偎偬偻傥傧傩傺僖儆僭僬僦僮儇儋仝氽佘佥俎龠汆籴兮巽黉馘冁夔勹匍訇匐凫夙兕亠兖亳衮袤亵脔裒禀嬴蠃羸冫冱冽冼�\".split(\"\");\nfor(j = 0; j != D[217].length; ++j) if(D[217][j].charCodeAt(0) !== 0xFFFD) { e[D[217][j]] = 55552 + j; d[55552 + j] = D[217][j];}\nD[218] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������凇冖冢冥讠讦讧讪讴讵讷诂诃诋诏诎诒诓诔诖诘诙诜诟诠诤诨诩诮诰诳诶诹诼诿谀谂谄谇谌谏谑谒谔谕谖谙谛谘谝谟谠谡谥谧谪谫谮谯谲谳谵谶卩卺阝阢阡阱阪阽阼陂陉陔陟陧陬陲陴隈隍隗隰邗邛邝邙邬邡邴邳邶邺�\".split(\"\");\nfor(j = 0; j != D[218].length; ++j) if(D[218][j].charCodeAt(0) !== 0xFFFD) { e[D[218][j]] = 55808 + j; d[55808 + j] = D[218][j];}\nD[219] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������邸邰郏郅邾郐郄郇郓郦郢郜郗郛郫郯郾鄄鄢鄞鄣鄱鄯鄹酃酆刍奂劢劬劭劾哿勐勖勰叟燮矍廴凵凼鬯厶弁畚巯坌垩垡塾墼壅壑圩圬圪圳圹圮圯坜圻坂坩垅坫垆坼坻坨坭坶坳垭垤垌垲埏垧垴垓垠埕埘埚埙埒垸埴埯埸埤埝�\".split(\"\");\nfor(j = 0; j != D[219].length; ++j) if(D[219][j].charCodeAt(0) !== 0xFFFD) { e[D[219][j]] = 56064 + j; d[56064 + j] = D[219][j];}\nD[220] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������堋堍埽埭堀堞堙塄堠塥塬墁墉墚墀馨鼙懿艹艽艿芏芊芨芄芎芑芗芙芫芸芾芰苈苊苣芘芷芮苋苌苁芩芴芡芪芟苄苎芤苡茉苷苤茏茇苜苴苒苘茌苻苓茑茚茆茔茕苠苕茜荑荛荜茈莒茼茴茱莛荞茯荏荇荃荟荀茗荠茭茺茳荦荥�\".split(\"\");\nfor(j = 0; j != D[220].length; ++j) if(D[220][j].charCodeAt(0) !== 0xFFFD) { e[D[220][j]] = 56320 + j; d[56320 + j] = D[220][j];}\nD[221] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������荨茛荩荬荪荭荮莰荸莳莴莠莪莓莜莅荼莶莩荽莸荻莘莞莨莺莼菁萁菥菘堇萘萋菝菽菖萜萸萑萆菔菟萏萃菸菹菪菅菀萦菰菡葜葑葚葙葳蒇蒈葺蒉葸萼葆葩葶蒌蒎萱葭蓁蓍蓐蓦蒽蓓蓊蒿蒺蓠蒡蒹蒴蒗蓥蓣蔌甍蔸蓰蔹蔟蔺�\".split(\"\");\nfor(j = 0; j != D[221].length; ++j) if(D[221][j].charCodeAt(0) !== 0xFFFD) { e[D[221][j]] = 56576 + j; d[56576 + j] = D[221][j];}\nD[222] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������蕖蔻蓿蓼蕙蕈蕨蕤蕞蕺瞢蕃蕲蕻薤薨薇薏蕹薮薜薅薹薷薰藓藁藜藿蘧蘅蘩蘖蘼廾弈夼奁耷奕奚奘匏尢尥尬尴扌扪抟抻拊拚拗拮挢拶挹捋捃掭揶捱捺掎掴捭掬掊捩掮掼揲揸揠揿揄揞揎摒揆掾摅摁搋搛搠搌搦搡摞撄摭撖�\".split(\"\");\nfor(j = 0; j != D[222].length; ++j) if(D[222][j].charCodeAt(0) !== 0xFFFD) { e[D[222][j]] = 56832 + j; d[56832 + j] = D[222][j];}\nD[223] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������摺撷撸撙撺擀擐擗擤擢攉攥攮弋忒甙弑卟叱叽叩叨叻吒吖吆呋呒呓呔呖呃吡呗呙吣吲咂咔呷呱呤咚咛咄呶呦咝哐咭哂咴哒咧咦哓哔呲咣哕咻咿哌哙哚哜咩咪咤哝哏哞唛哧唠哽唔哳唢唣唏唑唧唪啧喏喵啉啭啁啕唿啐唼�\".split(\"\");\nfor(j = 0; j != D[223].length; ++j) if(D[223][j].charCodeAt(0) !== 0xFFFD) { e[D[223][j]] = 57088 + j; d[57088 + j] = D[223][j];}\nD[224] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������唷啖啵啶啷唳唰啜喋嗒喃喱喹喈喁喟啾嗖喑啻嗟喽喾喔喙嗪嗷嗉嘟嗑嗫嗬嗔嗦嗝嗄嗯嗥嗲嗳嗌嗍嗨嗵嗤辔嘞嘈嘌嘁嘤嘣嗾嘀嘧嘭噘嘹噗嘬噍噢噙噜噌噔嚆噤噱噫噻噼嚅嚓嚯囔囗囝囡囵囫囹囿圄圊圉圜帏帙帔帑帱帻帼�\".split(\"\");\nfor(j = 0; j != D[224].length; ++j) if(D[224][j].charCodeAt(0) !== 0xFFFD) { e[D[224][j]] = 57344 + j; d[57344 + j] = D[224][j];}\nD[225] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������帷幄幔幛幞幡岌屺岍岐岖岈岘岙岑岚岜岵岢岽岬岫岱岣峁岷峄峒峤峋峥崂崃崧崦崮崤崞崆崛嵘崾崴崽嵬嵛嵯嵝嵫嵋嵊嵩嵴嶂嶙嶝豳嶷巅彳彷徂徇徉後徕徙徜徨徭徵徼衢彡犭犰犴犷犸狃狁狎狍狒狨狯狩狲狴狷猁狳猃狺�\".split(\"\");\nfor(j = 0; j != D[225].length; ++j) if(D[225][j].charCodeAt(0) !== 0xFFFD) { e[D[225][j]] = 57600 + j; d[57600 + j] = D[225][j];}\nD[226] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������狻猗猓猡猊猞猝猕猢猹猥猬猸猱獐獍獗獠獬獯獾舛夥飧夤夂饣饧饨饩饪饫饬饴饷饽馀馄馇馊馍馐馑馓馔馕庀庑庋庖庥庠庹庵庾庳赓廒廑廛廨廪膺忄忉忖忏怃忮怄忡忤忾怅怆忪忭忸怙怵怦怛怏怍怩怫怊怿怡恸恹恻恺恂�\".split(\"\");\nfor(j = 0; j != D[226].length; ++j) if(D[226][j].charCodeAt(0) !== 0xFFFD) { e[D[226][j]] = 57856 + j; d[57856 + j] = D[226][j];}\nD[227] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������恪恽悖悚悭悝悃悒悌悛惬悻悱惝惘惆惚悴愠愦愕愣惴愀愎愫慊慵憬憔憧憷懔懵忝隳闩闫闱闳闵闶闼闾阃阄阆阈阊阋阌阍阏阒阕阖阗阙阚丬爿戕氵汔汜汊沣沅沐沔沌汨汩汴汶沆沩泐泔沭泷泸泱泗沲泠泖泺泫泮沱泓泯泾�\".split(\"\");\nfor(j = 0; j != D[227].length; ++j) if(D[227][j].charCodeAt(0) !== 0xFFFD) { e[D[227][j]] = 58112 + j; d[58112 + j] = D[227][j];}\nD[228] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������洹洧洌浃浈洇洄洙洎洫浍洮洵洚浏浒浔洳涑浯涞涠浞涓涔浜浠浼浣渚淇淅淞渎涿淠渑淦淝淙渖涫渌涮渫湮湎湫溲湟溆湓湔渲渥湄滟溱溘滠漭滢溥溧溽溻溷滗溴滏溏滂溟潢潆潇漤漕滹漯漶潋潴漪漉漩澉澍澌潸潲潼潺濑�\".split(\"\");\nfor(j = 0; j != D[228].length; ++j) if(D[228][j].charCodeAt(0) !== 0xFFFD) { e[D[228][j]] = 58368 + j; d[58368 + j] = D[228][j];}\nD[229] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������濉澧澹澶濂濡濮濞濠濯瀚瀣瀛瀹瀵灏灞宀宄宕宓宥宸甯骞搴寤寮褰寰蹇謇辶迓迕迥迮迤迩迦迳迨逅逄逋逦逑逍逖逡逵逶逭逯遄遑遒遐遨遘遢遛暹遴遽邂邈邃邋彐彗彖彘尻咫屐屙孱屣屦羼弪弩弭艴弼鬻屮妁妃妍妩妪妣�\".split(\"\");\nfor(j = 0; j != D[229].length; ++j) if(D[229][j].charCodeAt(0) !== 0xFFFD) { e[D[229][j]] = 58624 + j; d[58624 + j] = D[229][j];}\nD[230] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������妗姊妫妞妤姒妲妯姗妾娅娆姝娈姣姘姹娌娉娲娴娑娣娓婀婧婊婕娼婢婵胬媪媛婷婺媾嫫媲嫒嫔媸嫠嫣嫱嫖嫦嫘嫜嬉嬗嬖嬲嬷孀尕尜孚孥孳孑孓孢驵驷驸驺驿驽骀骁骅骈骊骐骒骓骖骘骛骜骝骟骠骢骣骥骧纟纡纣纥纨纩�\".split(\"\");\nfor(j = 0; j != D[230].length; ++j) if(D[230][j].charCodeAt(0) !== 0xFFFD) { e[D[230][j]] = 58880 + j; d[58880 + j] = D[230][j];}\nD[231] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������纭纰纾绀绁绂绉绋绌绐绔绗绛绠绡绨绫绮绯绱绲缍绶绺绻绾缁缂缃缇缈缋缌缏缑缒缗缙缜缛缟缡缢缣缤缥缦缧缪缫缬缭缯缰缱缲缳缵幺畿巛甾邕玎玑玮玢玟珏珂珑玷玳珀珉珈珥珙顼琊珩珧珞玺珲琏琪瑛琦琥琨琰琮琬�\".split(\"\");\nfor(j = 0; j != D[231].length; ++j) if(D[231][j].charCodeAt(0) !== 0xFFFD) { e[D[231][j]] = 59136 + j; d[59136 + j] = D[231][j];}\nD[232] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������琛琚瑁瑜瑗瑕瑙瑷瑭瑾璜璎璀璁璇璋璞璨璩璐璧瓒璺韪韫韬杌杓杞杈杩枥枇杪杳枘枧杵枨枞枭枋杷杼柰栉柘栊柩枰栌柙枵柚枳柝栀柃枸柢栎柁柽栲栳桠桡桎桢桄桤梃栝桕桦桁桧桀栾桊桉栩梵梏桴桷梓桫棂楮棼椟椠棹�\".split(\"\");\nfor(j = 0; j != D[232].length; ++j) if(D[232][j].charCodeAt(0) !== 0xFFFD) { e[D[232][j]] = 59392 + j; d[59392 + j] = D[232][j];}\nD[233] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������椤棰椋椁楗棣椐楱椹楠楂楝榄楫榀榘楸椴槌榇榈槎榉楦楣楹榛榧榻榫榭槔榱槁槊槟榕槠榍槿樯槭樗樘橥槲橄樾檠橐橛樵檎橹樽樨橘橼檑檐檩檗檫猷獒殁殂殇殄殒殓殍殚殛殡殪轫轭轱轲轳轵轶轸轷轹轺轼轾辁辂辄辇辋�\".split(\"\");\nfor(j = 0; j != D[233].length; ++j) if(D[233][j].charCodeAt(0) !== 0xFFFD) { e[D[233][j]] = 59648 + j; d[59648 + j] = D[233][j];}\nD[234] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������辍辎辏辘辚軎戋戗戛戟戢戡戥戤戬臧瓯瓴瓿甏甑甓攴旮旯旰昊昙杲昃昕昀炅曷昝昴昱昶昵耆晟晔晁晏晖晡晗晷暄暌暧暝暾曛曜曦曩贲贳贶贻贽赀赅赆赈赉赇赍赕赙觇觊觋觌觎觏觐觑牮犟牝牦牯牾牿犄犋犍犏犒挈挲掰�\".split(\"\");\nfor(j = 0; j != D[234].length; ++j) if(D[234][j].charCodeAt(0) !== 0xFFFD) { e[D[234][j]] = 59904 + j; d[59904 + j] = D[234][j];}\nD[235] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������搿擘耄毪毳毽毵毹氅氇氆氍氕氘氙氚氡氩氤氪氲攵敕敫牍牒牖爰虢刖肟肜肓肼朊肽肱肫肭肴肷胧胨胩胪胛胂胄胙胍胗朐胝胫胱胴胭脍脎胲胼朕脒豚脶脞脬脘脲腈腌腓腴腙腚腱腠腩腼腽腭腧塍媵膈膂膑滕膣膪臌朦臊膻�\".split(\"\");\nfor(j = 0; j != D[235].length; ++j) if(D[235][j].charCodeAt(0) !== 0xFFFD) { e[D[235][j]] = 60160 + j; d[60160 + j] = D[235][j];}\nD[236] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������臁膦欤欷欹歃歆歙飑飒飓飕飙飚殳彀毂觳斐齑斓於旆旄旃旌旎旒旖炀炜炖炝炻烀炷炫炱烨烊焐焓焖焯焱煳煜煨煅煲煊煸煺熘熳熵熨熠燠燔燧燹爝爨灬焘煦熹戾戽扃扈扉礻祀祆祉祛祜祓祚祢祗祠祯祧祺禅禊禚禧禳忑忐�\".split(\"\");\nfor(j = 0; j != D[236].length; ++j) if(D[236][j].charCodeAt(0) !== 0xFFFD) { e[D[236][j]] = 60416 + j; d[60416 + j] = D[236][j];}\nD[237] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������怼恝恚恧恁恙恣悫愆愍慝憩憝懋懑戆肀聿沓泶淼矶矸砀砉砗砘砑斫砭砜砝砹砺砻砟砼砥砬砣砩硎硭硖硗砦硐硇硌硪碛碓碚碇碜碡碣碲碹碥磔磙磉磬磲礅磴礓礤礞礴龛黹黻黼盱眄眍盹眇眈眚眢眙眭眦眵眸睐睑睇睃睚睨�\".split(\"\");\nfor(j = 0; j != D[237].length; ++j) if(D[237][j].charCodeAt(0) !== 0xFFFD) { e[D[237][j]] = 60672 + j; d[60672 + j] = D[237][j];}\nD[238] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������睢睥睿瞍睽瞀瞌瞑瞟瞠瞰瞵瞽町畀畎畋畈畛畲畹疃罘罡罟詈罨罴罱罹羁罾盍盥蠲钅钆钇钋钊钌钍钏钐钔钗钕钚钛钜钣钤钫钪钭钬钯钰钲钴钶钷钸钹钺钼钽钿铄铈铉铊铋铌铍铎铐铑铒铕铖铗铙铘铛铞铟铠铢铤铥铧铨铪�\".split(\"\");\nfor(j = 0; j != D[238].length; ++j) if(D[238][j].charCodeAt(0) !== 0xFFFD) { e[D[238][j]] = 60928 + j; d[60928 + j] = D[238][j];}\nD[239] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������铩铫铮铯铳铴铵铷铹铼铽铿锃锂锆锇锉锊锍锎锏锒锓锔锕锖锘锛锝锞锟锢锪锫锩锬锱锲锴锶锷锸锼锾锿镂锵镄镅镆镉镌镎镏镒镓镔镖镗镘镙镛镞镟镝镡镢镤镥镦镧镨镩镪镫镬镯镱镲镳锺矧矬雉秕秭秣秫稆嵇稃稂稞稔�\".split(\"\");\nfor(j = 0; j != D[239].length; ++j) if(D[239][j].charCodeAt(0) !== 0xFFFD) { e[D[239][j]] = 61184 + j; d[61184 + j] = D[239][j];}\nD[240] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������稹稷穑黏馥穰皈皎皓皙皤瓞瓠甬鸠鸢鸨鸩鸪鸫鸬鸲鸱鸶鸸鸷鸹鸺鸾鹁鹂鹄鹆鹇鹈鹉鹋鹌鹎鹑鹕鹗鹚鹛鹜鹞鹣鹦鹧鹨鹩鹪鹫鹬鹱鹭鹳疒疔疖疠疝疬疣疳疴疸痄疱疰痃痂痖痍痣痨痦痤痫痧瘃痱痼痿瘐瘀瘅瘌瘗瘊瘥瘘瘕瘙�\".split(\"\");\nfor(j = 0; j != D[240].length; ++j) if(D[240][j].charCodeAt(0) !== 0xFFFD) { e[D[240][j]] = 61440 + j; d[61440 + j] = D[240][j];}\nD[241] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������瘛瘼瘢瘠癀瘭瘰瘿瘵癃瘾瘳癍癞癔癜癖癫癯翊竦穸穹窀窆窈窕窦窠窬窨窭窳衤衩衲衽衿袂袢裆袷袼裉裢裎裣裥裱褚裼裨裾裰褡褙褓褛褊褴褫褶襁襦襻疋胥皲皴矜耒耔耖耜耠耢耥耦耧耩耨耱耋耵聃聆聍聒聩聱覃顸颀颃�\".split(\"\");\nfor(j = 0; j != D[241].length; ++j) if(D[241][j].charCodeAt(0) !== 0xFFFD) { e[D[241][j]] = 61696 + j; d[61696 + j] = D[241][j];}\nD[242] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������颉颌颍颏颔颚颛颞颟颡颢颥颦虍虔虬虮虿虺虼虻蚨蚍蚋蚬蚝蚧蚣蚪蚓蚩蚶蛄蚵蛎蚰蚺蚱蚯蛉蛏蚴蛩蛱蛲蛭蛳蛐蜓蛞蛴蛟蛘蛑蜃蜇蛸蜈蜊蜍蜉蜣蜻蜞蜥蜮蜚蜾蝈蜴蜱蜩蜷蜿螂蜢蝽蝾蝻蝠蝰蝌蝮螋蝓蝣蝼蝤蝙蝥螓螯螨蟒�\".split(\"\");\nfor(j = 0; j != D[242].length; ++j) if(D[242][j].charCodeAt(0) !== 0xFFFD) { e[D[242][j]] = 61952 + j; d[61952 + j] = D[242][j];}\nD[243] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������蟆螈螅螭螗螃螫蟥螬螵螳蟋蟓螽蟑蟀蟊蟛蟪蟠蟮蠖蠓蟾蠊蠛蠡蠹蠼缶罂罄罅舐竺竽笈笃笄笕笊笫笏筇笸笪笙笮笱笠笥笤笳笾笞筘筚筅筵筌筝筠筮筻筢筲筱箐箦箧箸箬箝箨箅箪箜箢箫箴篑篁篌篝篚篥篦篪簌篾篼簏簖簋�\".split(\"\");\nfor(j = 0; j != D[243].length; ++j) if(D[243][j].charCodeAt(0) !== 0xFFFD) { e[D[243][j]] = 62208 + j; d[62208 + j] = D[243][j];}\nD[244] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������簟簪簦簸籁籀臾舁舂舄臬衄舡舢舣舭舯舨舫舸舻舳舴舾艄艉艋艏艚艟艨衾袅袈裘裟襞羝羟羧羯羰羲籼敉粑粝粜粞粢粲粼粽糁糇糌糍糈糅糗糨艮暨羿翎翕翥翡翦翩翮翳糸絷綦綮繇纛麸麴赳趄趔趑趱赧赭豇豉酊酐酎酏酤�\".split(\"\");\nfor(j = 0; j != D[244].length; ++j) if(D[244][j].charCodeAt(0) !== 0xFFFD) { e[D[244][j]] = 62464 + j; d[62464 + j] = D[244][j];}\nD[245] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������酢酡酰酩酯酽酾酲酴酹醌醅醐醍醑醢醣醪醭醮醯醵醴醺豕鹾趸跫踅蹙蹩趵趿趼趺跄跖跗跚跞跎跏跛跆跬跷跸跣跹跻跤踉跽踔踝踟踬踮踣踯踺蹀踹踵踽踱蹉蹁蹂蹑蹒蹊蹰蹶蹼蹯蹴躅躏躔躐躜躞豸貂貊貅貘貔斛觖觞觚觜�\".split(\"\");\nfor(j = 0; j != D[245].length; ++j) if(D[245][j].charCodeAt(0) !== 0xFFFD) { e[D[245][j]] = 62720 + j; d[62720 + j] = D[245][j];}\nD[246] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������觥觫觯訾謦靓雩雳雯霆霁霈霏霎霪霭霰霾龀龃龅龆龇龈龉龊龌黾鼋鼍隹隼隽雎雒瞿雠銎銮鋈錾鍪鏊鎏鐾鑫鱿鲂鲅鲆鲇鲈稣鲋鲎鲐鲑鲒鲔鲕鲚鲛鲞鲟鲠鲡鲢鲣鲥鲦鲧鲨鲩鲫鲭鲮鲰鲱鲲鲳鲴鲵鲶鲷鲺鲻鲼鲽鳄鳅鳆鳇鳊鳋�\".split(\"\");\nfor(j = 0; j != D[246].length; ++j) if(D[246][j].charCodeAt(0) !== 0xFFFD) { e[D[246][j]] = 62976 + j; d[62976 + j] = D[246][j];}\nD[247] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������鳌鳍鳎鳏鳐鳓鳔鳕鳗鳘鳙鳜鳝鳟鳢靼鞅鞑鞒鞔鞯鞫鞣鞲鞴骱骰骷鹘骶骺骼髁髀髅髂髋髌髑魅魃魇魉魈魍魑飨餍餮饕饔髟髡髦髯髫髻髭髹鬈鬏鬓鬟鬣麽麾縻麂麇麈麋麒鏖麝麟黛黜黝黠黟黢黩黧黥黪黯鼢鼬鼯鼹鼷鼽鼾齄�\".split(\"\");\nfor(j = 0; j != D[247].length; ++j) if(D[247][j].charCodeAt(0) !== 0xFFFD) { e[D[247][j]] = 63232 + j; d[63232 + j] = D[247][j];}\nreturn {\"enc\": e, \"dec\": d }; })();\ncptable[10010] = (function(){ var d = \"ˇˇ\\u0002\\u0003\\u0004\\u0005\\u0006\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\u0014\\u0015\\u0016\\u0017\\u0018\\u0019\\u001a\\u001b\\u001c\\u001d\\u001e\\u001f !\\\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~ÄÅÇÉÑÖÜáàâäãåçéèêëíìîïñóòôöõúùûü†°¢£§•¶ß®©™´¨≠ĂŞ∞±≤≥¥µ∂∑∏π∫ªºΩăş¿¡¬√ƒ≈∆«»… ÀÃÕŒœ–—“”‘’÷◊ÿŸ⁄¤‹›Ţţ‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔÒÚÛÙıˆ˜¯˘˙˚¸˝˛ˇ\", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {\"enc\": e, \"dec\": D }; })();\ncptable[10017] = (function(){ var d = \"¤¤\\u0002\\u0003\\u0004\\u0005\\u0006\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\u0014\\u0015\\u0016\\u0017\\u0018\\u0019\\u001a\\u001b\\u001c\\u001d\\u001e\\u001f !\\\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~АБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ†°Ґ£§•¶І®©™Ђђ≠Ѓѓ∞±≤≥іµґЈЄєЇїЉљЊњјЅ¬√ƒ≈∆«»… ЋћЌќѕ–—“”‘’÷„ЎўЏџ№Ёёяабвгдежзийклмнопрстуфхцчшщъыьэю¤\", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {\"enc\": e, \"dec\": D }; })();\ncptable[10021] = (function(){ var d = \"��\\u0002\\u0003\\u0004\\u0005\\u0006\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\u0014\\u0015\\u0016\\u0017\\u0018\\u0019\\u001a\\u001b\\u001c\\u001d\\u001e\\u001f !\\\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~�«»…����������“”��•�����������‘’� กขฃคฅฆงจฉชซฌญฎฏฐฑฒณดตถทธนบปผฝพฟภมยรฤลฦวศษสหฬอฮฯะัาำิีึืฺุู﻿​–—฿เแโใไๅๆ็่้๊๋์ํ™๏๐๑๒๓๔๕๖๗๘๙®©����\", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {\"enc\": e, \"dec\": D }; })();\ncptable[10082] = (function(){ var d = \"ˇˇ\\u0002\\u0003\\u0004\\u0005\\u0006\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\u0014\\u0015\\u0016\\u0017\\u0018\\u0019\\u001a\\u001b\\u001c\\u001d\\u001e\\u001f !\\\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~ÄÅÇÉÑÖÜáàâäãåçéèêëíìîïñóòôöõúùûü†°¢£§•¶ß®Š™´¨≠ŽØ∞±≤≥∆µ∂∑∏š∫ªºΩžø¿¡¬√ƒ≈Ć«Č… ÀÃÕŒœĐ—“”‘’÷◊©⁄¤‹›Æ»–·‚„‰ÂćÁčÈÍÎÏÌÓÔđÒÚÛÙıˆ˜¯πË˚¸Êæˇ\", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {\"enc\": e, \"dec\": D }; })();\ncptable[20000] = (function(){ var d = [], e = {}, D = [], j;\nD[0] = \"\\u0000\\u0001\\u0002\\u0003\\u0004\\u0005\\u0006\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\u0014\\u0015\\u0016\\u0017\\u0018\\u0019\\u001a\\u001b\\u001c\\u001d\\u001e\\u001f !\\\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~����������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[0].length; ++j) if(D[0][j].charCodeAt(0) !== 0xFFFD) { e[D[0][j]] = 0 + j; d[0 + j] = D[0][j];}\nD[161] = \"���������������������������������乂乜凵匚厂万丌乇亍囗屮彳丏冇与丮亓仂仉仈冘勼卬厹圠夃夬尐巿旡殳毌气爿丱丼仨仜仩仡仝仚刌刉匜卌圢圣夗夯宁宄尒尻屴屳帄庀庂忉戉扐氕氶汃氿氻犮犰玊禸肊阞伎优伬仵伔仱伀价伈伝伂伅伢伓伄仴伒冱刓刐劦����������������������������������　，、。․•；：？！︰…‥﹐﹑‧﹒﹔﹕﹖﹗︱–︲—︳＿︴﹏（）︵︶｛｝︷︸〔〕︹︺【】︻︼《》︽︾〈〉︿﹀「」﹁﹂『』﹃﹄﹙﹚﹛﹜﹝﹞‘’“”〝〞′‵＃＆＊※§〃○●△▲◎☆★◇◆□■▽▼�\".split(\"\");\nfor(j = 0; j != D[161].length; ++j) if(D[161][j].charCodeAt(0) !== 0xFFFD) { e[D[161][j]] = 41216 + j; d[41216 + j] = D[161][j];}\nD[162] = \"���������������������������������匢匟卍厊吇囡囟圮圪圴夼妀奼妅奻奾奷奿孖尕尥屼屺屻屾巟幵庄异弚彴忕忔忏扜扞扤扡扦扢扙扠扚扥攷旯旮朾朹朸朻机朿朼朳氘汆汒汜汏汊汔汋汌灱牞犴犵玎甪癿穵网艸艼芀艽艿虍襾邙邗邘邛邔阢阤阠阣佖伻佢佉体����������������������������������㊣℅‾￣��﹉﹊﹍﹎﹋﹌﹟﹠﹡＋－×÷±√＜＞＝≦≧≠∞≒≡﹢﹣﹤﹥﹦∼∩∪⊥∠∟⊿㏒㏑∫∮∵∴♀♂⊕⊙↑↓→←↖↗↙↘∥∣／＼�﹨＄￥〒￠￡％＠℃℉﹩﹪﹫㏕㎜㎝㎞㏎㎡㎎㎏㏄゜兙兛兞兝兡兣�\".split(\"\");\nfor(j = 0; j != D[162].length; ++j) if(D[162][j].charCodeAt(0) !== 0xFFFD) { e[D[162][j]] = 41472 + j; d[41472 + j] = D[162][j];}\nD[163] = \"���������������������������������佤伾佧佒佟佁佘伭伳伿佡冏冹刜刞刡劭劮匉卣卲厎厏吰吷吪呔呅吙吜吥吘吽呏呁吨吤呇囮囧囥坁坅坌坉坋坒夆奀妦妘妠妗妎妢妐妏妧妡宎宒尨尪岍岏岈岋岉岒岊岆岓岕巠帊帎庋庉庌庈庍弅弝彸彶忒忑忐忭忨忮忳忡忤����������������������������������嗧瓩糎▁▂▃▄▅▆▇█▏▎▍▌▋▊▉┼┴┬┤├▔─│▕┌┐└┘╭╮╰╯═╞╪╡◢◣◥◤╱╲╳¨˄ヽヾゝゞ�〄々〆〇ー［］✽ぁあぃいぅうぇえぉおかがきぎくぐけげこごさざしじすずせぜそぞただち�\".split(\"\");\nfor(j = 0; j != D[163].length; ++j) if(D[163][j].charCodeAt(0) !== 0xFFFD) { e[D[163][j]] = 41728 + j; d[41728 + j] = D[163][j];}\nD[164] = \"���������������������������������忣忺忯忷忻怀忴戺抃抌抎抏抔抇扱扻扺扰抁抈扷扽扲扴旰旴旳旲旵杅杇杙杕杌杈杝杍杚杋毐氙氚汸汧汫沄沋沏汱汯汩沚汭沇沕沜汦汳汥汻沎灴灺牣犿犽狃狆狁犺狅玕玗玓玔玒町甹疔疕皁礽耴肕肙肐肒肜芐芏芅芎芑芓����������������������������������０１２３４５６７８９ⅠⅡⅢⅣⅤⅥⅦⅧⅨⅩ〡〢〣〤〥〦〧〨〩�卄�ＡＢＣＤＥＦＧＨＩＪＫＬＭＮＯＰＱＲＳＴＵＶＷＸＹＺａｂｃｄｅｆｇｈｉｊｋｌｍｎｏｐｑｒｓｔｕｖｗｘｙｚΑΒΓΔΕΖΗΘΙΚ�\".split(\"\");\nfor(j = 0; j != D[164].length; ++j) if(D[164][j].charCodeAt(0) !== 0xFFFD) { e[D[164][j]] = 41984 + j; d[41984 + j] = D[164][j];}\nD[165] = \"���������������������������������芊芃芄豸迉辿邟邡邥邞邧邠阰阨阯阭丳侘佼侅佽侀侇佶佴侉侄佷佌侗佪侚佹侁佸侐侜侔侞侒侂侕佫佮冞冼冾刵刲刳剆刱劼匊匋匼厒厔咇呿咁咑咂咈呫呺呾呥呬呴呦咍呯呡呠咘呣呧呤囷囹坯坲坭坫坱坰坶垀坵坻坳坴坢����������������������������������ΛΜΝΞΟΠΡΣΤΥΦΧΨΩαβγδεζηθικλμνξοπρστυφχψωㄅㄆㄇㄈㄉㄊㄋㄌㄍㄎㄏㄐㄑㄒㄓㄔㄕㄖㄗㄘㄙㄚㄛㄜㄝㄞㄟㄠㄡㄢㄣㄤㄥㄦㄧㄨㄩ˙˟ˊˇˋぢっつづてでとどなにぬねのは�\".split(\"\");\nfor(j = 0; j != D[165].length; ++j) if(D[165][j].charCodeAt(0) !== 0xFFFD) { e[D[165][j]] = 42240 + j; d[42240 + j] = D[165][j];}\nD[166] = \"���������������������������������坨坽夌奅妵妺姏姎妲姌姁妶妼姃姖妱妽姀姈妴姇孢孥宓宕屄屇岮岤岠岵岯岨岬岟岣岭岢岪岧岝岥岶岰岦帗帔帙弨弢弣弤彔徂彾彽忞忥怭怦怙怲怋怴怊怗怳怚怞怬怢怍怐怮怓怑怌怉怜戔戽抭抴拑抾抪抶拊抮抳抯抻抩抰����������������������������������①②③④⑤⑥⑦⑧⑨⑩⑴⑵⑶⑷⑸⑹⑺⑻⑼⑽ⅰⅱⅲⅳⅴⅵⅶⅷⅸⅹばぱひびぴふぶぷへべぺほぼぽまみむめもゃやゅゆょよらりるれろゎわゐゑをんァアィイゥウェエォオカガキギクグケゲコゴサザシジスズセゼ�\".split(\"\");\nfor(j = 0; j != D[166].length; ++j) if(D[166][j].charCodeAt(0) !== 0xFFFD) { e[D[166][j]] = 42496 + j; d[42496 + j] = D[166][j];}\nD[167] = \"���������������������������������抸攽斨斻昉旼昄昒昈旻昃昋昍昅旽昑昐曶朊枅杬枎枒杶杻枘枆构杴枍枌杺枟枑枙枃杽极杸杹枔欥殀歾毞氝沓泬泫泮泙沶泔沭泧沷泐泂沺泃泆泭泲泒泝沴沊沝沀泞泀洰泍泇沰泹泏泩泑炔炘炅炓炆炄炑炖炂炚炃牪狖狋狘������������������������������������丶丿�亅�亠����冂冖冫����勹��匸��卩�厶�����夂����宀������巛����幺广廴���彐彡������攴����无�������������������������\".split(\"\");\nfor(j = 0; j != D[167].length; ++j) if(D[167][j].charCodeAt(0) !== 0xFFFD) { e[D[167][j]] = 42752 + j; d[42752 + j] = D[167][j];}\nD[168] = \"���������������������������������狉狜狒狔狚狌狑玤玡玭玦玢玠玬玝瓝瓨甿畀甾疌疘皯盳盱盰盵矸矼矹矻矺矷祂礿秅穸穻竻籵糽耵肏肮肣肸肵肭舠芠苀芫芚芘芛芵芧芮芼芞芺芴芨芡芩苂芤苃芶芢虰虯虭虮豖迒迋迓迍迖迕迗邲邴邯邳邰阹阽阼阺陃俍俅������������������������������������������疒癶��������������������������������������������������������辵��������隶�������������������\".split(\"\");\nfor(j = 0; j != D[168].length; ++j) if(D[168][j].charCodeAt(0) !== 0xFFFD) { e[D[168][j]] = 43008 + j; d[43008 + j] = D[168][j];}\nD[169] = \"���������������������������������俓侲俉俋俁俔俜俙侻侳俛俇俖侺俀侹俬剄剉勀勂匽卼厗厖厙厘咺咡咭咥哏哃茍咷咮哖咶哅哆咠呰咼咢咾呲哞咰垵垞垟垤垌垗垝垛垔垘垏垙垥垚垕壴复奓姡姞姮娀姱姝姺姽姼姶姤姲姷姛姩姳姵姠姾姴姭宨屌峐峘峌峗峋���������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[169].length; ++j) if(D[169][j].charCodeAt(0) !== 0xFFFD) { e[D[169][j]] = 43264 + j; d[43264 + j] = D[169][j];}\nD[170] = \"���������������������������������峛峞峚峉峇峊峖峓峔峏峈峆峎峟峸巹帡帢帣帠帤庰庤庢庛庣庥弇弮彖徆怷怹恔恲恞恅恓恇恉恛恌恀恂恟怤恄恘恦恮扂扃拏挍挋拵挎挃拫拹挏挌拸拶挀挓挔拺挕拻拰敁敃斪斿昶昡昲昵昜昦昢昳昫昺昝昴昹昮朏朐柁柲柈�����������������������������������\".split(\"\");\nfor(j = 0; j != D[170].length; ++j) if(D[170][j].charCodeAt(0) !== 0xFFFD) { e[D[170][j]] = 43520 + j; d[43520 + j] = D[170][j];}\nD[171] = \"���������������������������������枺柜枻柸柘柀枷柅柫柤柟枵柍枳柷柶柮柣柂枹柎柧柰枲柼柆柭柌枮柦柛柺柉柊柃柪柋欨殂殄殶毖毘毠氠氡洨洴洭洟洼洿洒洊泚洳洄洙洺洚洑洀洝浂洁洘洷洃洏浀洇洠洬洈洢洉洐炷炟炾炱炰炡炴炵炩牁牉牊牬牰牳牮狊�����������������������������������\".split(\"\");\nfor(j = 0; j != D[171].length; ++j) if(D[171][j].charCodeAt(0) !== 0xFFFD) { e[D[171][j]] = 43776 + j; d[43776 + j] = D[171][j];}\nD[172] = \"���������������������������������狤狨狫狟狪狦狣玅珌珂珈珅玹玶玵玴珫玿珇玾珃珆玸珋瓬瓮甮畇畈疧疪癹盄眈眃眄眅眊盷盻盺矧矨砆砑砒砅砐砏砎砉砃砓祊祌祋祅祄秕种秏秖秎窀穾竑笀笁籺籸籹籿粀粁紃紈紁罘羑羍羾耇耎耏耔耷胘胇胠胑胈胂胐胅�����������������������������������\".split(\"\");\nfor(j = 0; j != D[172].length; ++j) if(D[172][j].charCodeAt(0) !== 0xFFFD) { e[D[172][j]] = 44032 + j; d[44032 + j] = D[172][j];}\nD[173] = \"���������������������������������胣胙胜胊胕胉胏胗胦胍臿舡芔苙苾苹茇苨茀苕茺苫苖苴苬苡苲苵茌苻苶苰苪苤苠苺苳苭虷虴虼虳衁衎衧衪衩觓訄訇赲迣迡迮迠郱邽邿郕郅邾郇郋郈釔釓陔陏陑陓陊陎倞倅倇倓倢倰倛俵俴倳倷倬俶俷倗倜倠倧倵倯倱倎�����������������������������������\".split(\"\");\nfor(j = 0; j != D[173].length; ++j) if(D[173][j].charCodeAt(0) !== 0xFFFD) { e[D[173][j]] = 44288 + j; d[44288 + j] = D[173][j];}\nD[174] = \"���������������������������������党冔冓凊凄凅凈凎剡剚剒剞剟剕剢勍匎厞唦哢唗唒哧哳哤唚哿唄唈哫唑唅哱唊哻哷哸哠唎唃唋圁圂埌堲埕埒垺埆垽垼垸垶垿埇埐垹埁夎奊娙娖娭娮娕娏娗娊娞娳孬宧宭宬尃屖屔峬峿峮峱峷崀峹帩帨庨庮庪庬弳弰彧恝�����������������������������������\".split(\"\");\nfor(j = 0; j != D[174].length; ++j) if(D[174][j].charCodeAt(0) !== 0xFFFD) { e[D[174][j]] = 44544 + j; d[44544 + j] = D[174][j];}\nD[175] = \"���������������������������������恚恧恁悢悈悀悒悁悝悃悕悛悗悇悜悎戙扆拲挐捖挬捄捅挶捃揤挹捋捊挼挩捁挴捘捔捙挭捇挳捚捑挸捗捀捈敊敆旆旃旄旂晊晟晇晑朒朓栟栚桉栲栳栻桋桏栖栱栜栵栫栭栯桎桄栴栝栒栔栦栨栮桍栺栥栠欬欯欭欱欴歭肂殈�����������������������������������\".split(\"\");\nfor(j = 0; j != D[175].length; ++j) if(D[175][j].charCodeAt(0) !== 0xFFFD) { e[D[175][j]] = 44800 + j; d[44800 + j] = D[175][j];}\nD[176] = \"���������������������������������毦毤毨毣毢毧氥浺浣浤浶洍浡涒浘浢浭浯涑涍淯浿涆浞浧浠涗浰浼浟涂涘洯浨涋浾涀涄洖涃浻浽浵涐烜烓烑烝烋缹烢烗烒烞烠烔烍烅烆烇烚烎烡牂牸牷牶猀狺狴狾狶狳狻猁珓珙珥珖玼珧珣珩珜珒珛珔珝珚珗珘珨瓞瓟�����������������������������������\".split(\"\");\nfor(j = 0; j != D[176].length; ++j) if(D[176][j].charCodeAt(0) !== 0xFFFD) { e[D[176][j]] = 45056 + j; d[45056 + j] = D[176][j];}\nD[177] = \"���������������������������������瓴瓵甡畛畟疰痁疻痄痀疿疶疺皊盉眝眛眐眓眒眣眑眕眙眚眢眧砣砬砢砵砯砨砮砫砡砩砳砪砱祔祛祏祜祓祒祑秫秬秠秮秭秪秜秞秝窆窉窅窋窌窊窇竘笐笄笓笅笏笈笊笎笉笒粄粑粊粌粈粍粅紞紝紑紎紘紖紓紟紒紏紌罜罡�����������������������������������\".split(\"\");\nfor(j = 0; j != D[177].length; ++j) if(D[177][j].charCodeAt(0) !== 0xFFFD) { e[D[177][j]] = 45312 + j; d[45312 + j] = D[177][j];}\nD[178] = \"���������������������������������罞罠罝罛羖羒翃翂翀耖耾耹胺胲胹胵脁胻脀舁舯舥茳茭荄茙荑茥荖茿荁茦茜茢荂荎茛茪茈茼荍茖茤茠茷茯茩荇荅荌荓茞茬荋茧荈虓虒蚢蚨蚖蚍蚑蚞蚇蚗蚆蚋蚚蚅蚥蚙蚡蚧蚕蚘蚎蚝蚐蚔衃衄衭衵衶衲袀衱衿衯袃衾衴衼�����������������������������������\".split(\"\");\nfor(j = 0; j != D[178].length; ++j) if(D[178][j].charCodeAt(0) !== 0xFFFD) { e[D[178][j]] = 45568 + j; d[45568 + j] = D[178][j];}\nD[179] = \"���������������������������������訒豇豗豻貤貣赶赸趵趷趶軑軓迾迵适迿迻逄迼迶郖郠郙郚郣郟郥郘郛郗郜郤酐酎酏釕釢釚陜陟隼飣髟鬯乿偰偪偡偞偠偓偋偝偲偈偍偁偛偊偢倕偅偟偩偫偣偤偆偀偮偳偗偑凐剫剭剬剮勖勓匭厜啵啶唼啍啐唴唪啑啢唶唵�����������������������������������\".split(\"\");\nfor(j = 0; j != D[179].length; ++j) if(D[179][j].charCodeAt(0) !== 0xFFFD) { e[D[179][j]] = 45824 + j; d[45824 + j] = D[179][j];}\nD[180] = \"���������������������������������唰啒啅唌唲啥啎唹啈唭唻啀啋圊圇埻堔埢埶埜埴堀埭埽堈埸堋埳埏堇埮埣埲埥埬埡堎埼堐埧堁堌埱埩埰堍堄奜婠婘婕婧婞娸娵婭婐婟婥婬婓婤婗婃婝婒婄婛婈媎娾婍娹婌婰婩婇婑婖婂婜孲孮寁寀屙崞崋崝崚崠崌崨崍�����������������������������������\".split(\"\");\nfor(j = 0; j != D[180].length; ++j) if(D[180][j].charCodeAt(0) !== 0xFFFD) { e[D[180][j]] = 46080 + j; d[46080 + j] = D[180][j];}\nD[181] = \"���������������������������������崦崥崏崰崒崣崟崮帾帴庱庴庹庲庳弶弸徛徖徟悊悐悆悾悰悺惓惔惏惤惙惝惈悱惛悷惊悿惃惍惀挲捥掊掂捽掽掞掭掝掗掫掎捯掇掐据掯捵掜捭掮捼掤挻掟捸掅掁掑掍捰敓旍晥晡晛晙晜晢朘桹梇梐梜桭桮梮梫楖桯梣梬梩�����������������������������������\".split(\"\");\nfor(j = 0; j != D[181].length; ++j) if(D[181][j].charCodeAt(0) !== 0xFFFD) { e[D[181][j]] = 46336 + j; d[46336 + j] = D[181][j];}\nD[182] = \"���������������������������������桵桴梲梏桷梒桼桫桲梪梀桱桾梛梖梋梠梉梤桸桻梑梌梊桽欶欳欷欸殑殏殍殎殌氪淀涫涴涳湴涬淩淢涷淶淔渀淈淠淟淖涾淥淜淝淛淴淊涽淭淰涺淕淂淏淉淐淲淓淽淗淍淣涻烺焍烷焗烴焌烰焄烳焐烼烿焆焓焀烸烶焋焂焎�����������������������������������\".split(\"\");\nfor(j = 0; j != D[182].length; ++j) if(D[182][j].charCodeAt(0) !== 0xFFFD) { e[D[182][j]] = 46592 + j; d[46592 + j] = D[182][j];}\nD[183] = \"���������������������������������牾牻牼牿猝猗猇猑猘猊猈狿猏猞玈珶珸珵琄琁珽琇琀珺珼珿琌琋珴琈畤畣痎痒痏痋痌痑痐皏皉盓眹眯眭眱眲眴眳眽眥眻眵硈硒硉硍硊硌砦硅硐祤祧祩祪祣祫祡离秺秸秶秷窏窔窐笵笻笴笥笰笢笤笳笘笪笝笱笫笭笯笲笸�����������������������������������\".split(\"\");\nfor(j = 0; j != D[183].length; ++j) if(D[183][j].charCodeAt(0) !== 0xFFFD) { e[D[183][j]] = 46848 + j; d[46848 + j] = D[183][j];}\nD[184] = \"���������������������������������笚笣粔粘粖粣紵紽紸紶紺絅紬紩絁絇紾紿絊紻紨罣羕羜羝羛翊翋翍翐翑翇翏翉耟耞耛聇聃聈脘脥脙脛脭脟脬脞脡脕脧脝脢舑舸舳舺舴舲艴莐莣莨莍荺荳莤荴莏莁莕莙荵莔莩荽莃莌莝莛莪莋荾莥莯莈莗莰荿莦莇莮荶虙�����������������������������������\".split(\"\");\nfor(j = 0; j != D[184].length; ++j) if(D[184][j].charCodeAt(0) !== 0xFFFD) { e[D[184][j]] = 47104 + j; d[47104 + j] = D[184][j];}\nD[185] = \"���������������������������������虖蚿蚷蛂蛁蛅蚺蚰蛈蚹蚳蚸蛌蚴蚻蚼蛃蚽蚾衒袉袕袨袢袪袚袑袡袟袘袧袙袛袗袤袬袌袓袎覂觖觙觕訰訧訬訞谹谻豜豝豽貥赽赻赹趼跂趹趿跁軘軞軝軜軗軠軡逤逋逑逜逌逡郯郪郰郴郲郳郔郫郬郩酖酘酚酓酕釬釴釱釳釸�����������������������������������\".split(\"\");\nfor(j = 0; j != D[185].length; ++j) if(D[185][j].charCodeAt(0) !== 0xFFFD) { e[D[185][j]] = 47360 + j; d[47360 + j] = D[185][j];}\nD[186] = \"���������������������������������釤釹釪釫釷釨釮镺閆閈陼陭陫陱陯隿靪頄飥馗傛傕傔傞傋傣傃傌傎傝偨傜傒傂傇兟凔匒匑厤厧喑喨喥喭啷噅喢喓喈喏喵喁喣喒喤啽喌喦啿喕喡喎圌堩堷堙堞堧堣堨埵塈堥堜堛堳堿堶堮堹堸堭堬堻奡媯媔媟婺媢媞婸媦�����������������������������������\".split(\"\");\nfor(j = 0; j != D[186].length; ++j) if(D[186][j].charCodeAt(0) !== 0xFFFD) { e[D[186][j]] = 47616 + j; d[47616 + j] = D[186][j];}\nD[187] = \"���������������������������������婼媥媬媕媮娷媄媊媗媃媋媩婻婽媌媜媏媓媝寪寍寋寔寑寊寎尌尰崷嵃嵫嵁嵋崿崵嵑嵎嵕崳崺嵒崽崱嵙嵂崹嵉崸崼崲崶嵀嵅幄幁彘徦徥徫惉悹惌惢惎惄愔惲愊愖愅惵愓惸惼惾惁愃愘愝愐惿愄愋扊掔掱掰揎揥揨揯揃撝揳�����������������������������������\".split(\"\");\nfor(j = 0; j != D[187].length; ++j) if(D[187][j].charCodeAt(0) !== 0xFFFD) { e[D[187][j]] = 47872 + j; d[47872 + j] = D[187][j];}\nD[188] = \"���������������������������������揊揠揶揕揲揵摡揟掾揝揜揄揘揓揂揇揌揋揈揰揗揙攲敧敪敤敜敨敥斌斝斞斮旐旒晼晬晻暀晱晹晪晲朁椌棓椄棜椪棬棪棱椏棖棷棫棤棶椓椐棳棡椇棌椈楰梴椑棯棆椔棸棐棽棼棨椋椊椗棎棈棝棞棦棴棑椆棔棩椕椥棇欹欻�����������������������������������\".split(\"\");\nfor(j = 0; j != D[188].length; ++j) if(D[188][j].charCodeAt(0) !== 0xFFFD) { e[D[188][j]] = 48128 + j; d[48128 + j] = D[188][j];}\nD[189] = \"���������������������������������欿欼殔殗殙殕殽毰毲毳氰淼湆湇渟湉溈渼渽湅湢渫渿湁湝湳渜渳湋湀湑渻渃渮湞湨湜湡渱渨湠湱湫渹渢渰湓湥渧湸湤湷湕湹湒湦渵渶湚焠焞焯烻焮焱焣焥焢焲焟焨焺焛牋牚犈犉犆犅犋猒猋猰猢猱猳猧猲猭猦猣猵猌琮�����������������������������������\".split(\"\");\nfor(j = 0; j != D[189].length; ++j) if(D[189][j].charCodeAt(0) !== 0xFFFD) { e[D[189][j]] = 48384 + j; d[48384 + j] = D[189][j];}\nD[190] = \"���������������������������������琬琰琫琖琚琡琭琱琤琣琝琩琠琲瓻甯畯畬痧痚痡痦痝痟痤痗皕皒盚睆睇睄睍睅睊睎睋睌矞矬硠硤硥硜硭硱硪确硰硩硨硞硢祴祳祲祰稂稊稃稌稄窙竦竤筊筇筄筈筌筎筀筘筅粢粞粨粡絘絯絣絓絖絧絪絏絭絜絫絒絔絩絑絟�����������������������������������\".split(\"\");\nfor(j = 0; j != D[190].length; ++j) if(D[190][j].charCodeAt(0) !== 0xFFFD) { e[D[190][j]] = 48640 + j; d[48640 + j] = D[190][j];}\nD[191] = \"���������������������������������絎缾缿罥罦羢羠羡翗聑聏聐胾胔腃腊腒腏腇脽腍脺臦臮臷臸臹舄舼舽舿艵茻菏菹萣菀菨萒菧菤菼菶萐菆菈菫菣莿萁菝菥菘菿菡菋菎菖菵菉萉萏菞萑萆菂菳菕菺菇菑菪萓莚菃菬菮菄菻菗菢萛菛菾蛘蛢蛦蛓蛣蛚蛪蛝蛫蛜�����������������������������������\".split(\"\");\nfor(j = 0; j != D[191].length; ++j) if(D[191][j].charCodeAt(0) !== 0xFFFD) { e[D[191][j]] = 48896 + j; d[48896 + j] = D[191][j];}\nD[192] = \"���������������������������������蛬蛩蛗蛨蛑衈衖衕袺裗袹袸裀袾袶袼袷袽袲褁裉覕覘覗觝觚觛詎詍訹詙詀詗詘詄詅詒詈詑詊詌詏豟貁貀貺貾貰貹貵趄趀趉跘跓跍跇跖跜跏跕跙跈跗跅軯軷軺軹軦軮軥軵軧軨軶軫軱軬軴軩逭逴逯鄆鄬鄄郿郼鄈郹郻鄁鄀�����������������������������������\".split(\"\");\nfor(j = 0; j != D[192].length; ++j) if(D[192][j].charCodeAt(0) !== 0xFFFD) { e[D[192][j]] = 49152 + j; d[49152 + j] = D[192][j];}\nD[193] = \"���������������������������������鄇鄅鄃酡酤酟酢酠鈁鈊鈥鈃鈚鈦鈏鈌鈀鈒釿釽鈆鈄鈧鈂鈜鈤鈙鈗鈅鈖镻閍閌閐隇陾隈隉隃隀雂雈雃雱雰靬靰靮頇颩飫鳦黹亃亄亶傽傿僆傮僄僊傴僈僂傰僁傺傱僋僉傶傸凗剺剸剻剼嗃嗛嗌嗐嗋嗊嗝嗀嗔嗄嗩喿嗒喍嗏嗕�����������������������������������\".split(\"\");\nfor(j = 0; j != D[193].length; ++j) if(D[193][j].charCodeAt(0) !== 0xFFFD) { e[D[193][j]] = 49408 + j; d[49408 + j] = D[193][j];}\nD[194] = \"���������������������������������嗢嗖嗈嗲嗍嗙嗂圔塓塨塤塏塍塉塯塕塎塝塙塥塛堽塣塱壼嫇嫄嫋媺媸媱媵媰媿嫈媻嫆媷嫀嫊媴媶嫍媹媐寖寘寙尟尳嵱嵣嵊嵥嵲嵬嵞嵨嵧嵢巰幏幎幊幍幋廅廌廆廋廇彀徯徭惷慉慊愫慅愶愲愮慆愯慏愩慀戠酨戣戥戤揅揱�������������������������������������������������������������������￢￤��㈱№℡�\".split(\"\");\nfor(j = 0; j != D[194].length; ++j) if(D[194][j].charCodeAt(0) !== 0xFFFD) { e[D[194][j]] = 49664 + j; d[49664 + j] = D[194][j];}\nD[195] = \"���������������������������������揫搐搒搉搠搤搳摃搟搕搘搹搷搢搣搌搦搰搨摁搵搯搊搚摀搥搧搋揧搛搮搡搎敯斒旓暆暌暕暐暋暊暙暔晸朠楦楟椸楎楢楱椿楅楪椹楂楗楙楺楈楉椵楬椳椽楥棰楸椴楩楀楯楄楶楘楁楴楌椻楋椷楜楏楑椲楒椯楻椼歆歅歃歂�����������������������������������\".split(\"\");\nfor(j = 0; j != D[195].length; ++j) if(D[195][j].charCodeAt(0) !== 0xFFFD) { e[D[195][j]] = 49920 + j; d[49920 + j] = D[195][j];}\nD[196] = \"���������������������������������歈歁殛毻毼毹毷毸溛滖滈溏滀溟溓溔溠溱溹滆滒溽滁溞滉溷溰滍溦滏溲溾滃滜滘溙溒溎溍溤溡溿溳滐滊溗溮溣煇煔煒煣煠煁煝煢煲煸煪煡煂煘煃煋煰煟煐煓煄煍煚牏犍犌犑犐犎猼獂猻猺獀獊獉瑄瑊瑋瑒瑑瑗瑀瑏瑐瑎����������������������������������一乙丁七乃九了二人儿入八几刀刁力匕十卜又三下丈上丫丸凡久么也乞于亡兀刃勺千叉口土士夕大女子孑孓寸小尢尸山川工己已巳巾干廾弋弓才丑丐不中丰丹之尹予云井互五亢仁什仃仆仇仍今介仄元允內六兮公冗凶�\".split(\"\");\nfor(j = 0; j != D[196].length; ++j) if(D[196][j].charCodeAt(0) !== 0xFFFD) { e[D[196][j]] = 50176 + j; d[50176 + j] = D[196][j];}\nD[197] = \"���������������������������������瑂瑆瑍瑔瓡瓿瓾瓽甝畹畷榃痯瘏瘃痷痾痼痹痸瘐痻痶痭痵痽皙皵盝睕睟睠睒睖睚睩睧睔睙睭矠碇碚碔碏碄碕碅碆碡碃硹碙碀碖硻祼禂祽祹稑稘稙稒稗稕稢稓稛稐窣窢窞竫筦筤筭筴筩筲筥筳筱筰筡筸筶筣粲粴粯綈綆綀����������������������������������分切刈勻勾勿化匹午升卅卞厄友及反壬天夫太夭孔少尤尺屯巴幻廿弔引心戈戶手扎支文斗斤方日曰月木欠止歹毋比毛氏水火爪父爻片牙牛犬王丙世丕且丘主乍乏乎以付仔仕他仗代令仙仞充兄冉冊冬凹出凸刊加功包匆�\".split(\"\");\nfor(j = 0; j != D[197].length; ++j) if(D[197][j].charCodeAt(0) !== 0xFFFD) { e[D[197][j]] = 50432 + j; d[50432 + j] = D[197][j];}\nD[198] = \"���������������������������������綍絿綅絺綎絻綃絼綌綔綄絽綒罭罫罧罨罬羦羥羧翛翜耡腤腠腷腜腩腛腢腲朡腞腶腧腯腄腡舝艉艄艀艂艅蓱萿葖葶葹蒏蒍葥葑葀蒆葧萰葍葽葚葙葴葳葝蔇葞萷萺萴葺葃葸萲葅萩菙葋萯葂萭葟葰萹葎葌葒葯蓅蒎萻葇萶萳����������������������������������北匝仟半卉卡占卯卮去可古右召叮叩叨叼司叵叫另只史叱台句叭叻四囚外央失奴奶孕它尼巨巧左市布平幼弁弘弗必戊打扔扒扑斥旦朮本未末札正母民氐永汁汀氾犯玄玉瓜瓦甘生用甩田由甲申疋白皮皿目矛矢石示禾穴�\".split(\"\");\nfor(j = 0; j != D[198].length; ++j) if(D[198][j].charCodeAt(0) !== 0xFFFD) { e[D[198][j]] = 50688 + j; d[50688 + j] = D[198][j];}\nD[199] = \"���������������������������������葨葾葄萫葠葔葮葐蜋蜄蛷蜌蛺蛖蛵蝍蛸蜎蜉蜁蛶蜍蜅裖裋裍裎裞裛裚裌裐覅覛觟觥觤觡觠觢觜触詶誆詿詡訿詷誂誄詵誃誁詴詺谼豋豊豥豤豦貆貄貅賌赨赩趑趌趎趏趍趓趔趐趒跰跠跬跱跮跐跩跣跢跧跲跫跴輆軿輁輀輅����������������������������������立丞丟乒乓乩亙交亦亥仿伉伙伊伕伍伐休伏仲件任仰仳份企伋光兇兆先全共再冰列刑划刎刖劣匈匡匠印危吉吏同吊吐吁吋各向名合吃后吆吒因回囝圳地在圭圬圯圩夙多夷夸妄奸妃好她如妁字存宇守宅安寺尖屹州帆并�\".split(\"\");\nfor(j = 0; j != D[199].length; ++j) if(D[199][j].charCodeAt(0) !== 0xFFFD) { e[D[199][j]] = 50944 + j; d[50944 + j] = D[199][j];}\nD[200] = \"���������������������������������輇輈輂輋遒逿遄遉逽鄐鄍鄏鄑鄖鄔鄋鄎酮酯鉈鉒鈰鈺鉦鈳鉥鉞銃鈮鉊鉆鉭鉬鉏鉠鉧鉯鈶鉡鉰鈱鉔鉣鉐鉲鉎鉓鉌鉖鈲閟閜閞閛隒隓隑隗雎雺雽雸雵靳靷靸靲頏頍頎颬飶飹馯馲馰馵骭骫魛鳪鳭鳧麀黽僦僔僗僨僳僛僪僝僤����������������������������������年式弛忙忖戎戌戍成扣扛托收早旨旬旭曲曳有朽朴朱朵次此死氖汝汗汙江池汐汕污汛汍汎灰牟牝百竹米糸缶羊羽老考而耒耳聿肉肋肌臣自至臼舌舛舟艮色艾虫血行衣西阡串亨位住佇佗佞伴佛何估佐佑伽伺伸佃佔似但�\".split(\"\");\nfor(j = 0; j != D[200].length; ++j) if(D[200][j].charCodeAt(0) !== 0xFFFD) { e[D[200][j]] = 51200 + j; d[51200 + j] = D[200][j];}\nD[201] = \"���������������������������������僓僬僰僯僣僠凘劀劁勩勫匰厬嘧嘕嘌嘒嗼嘏嘜嘁嘓嘂嗺嘝嘄嗿嗹墉塼墐墘墆墁塿塴墋塺墇墑墎塶墂墈塻墔墏壾奫嫜嫮嫥嫕嫪嫚嫭嫫嫳嫢嫠嫛嫬嫞嫝嫙嫨嫟孷寠寣屣嶂嶀嵽嶆嵺嶁嵷嶊嶉嶈嵾嵼嶍嵹嵿幘幙幓廘廑廗廎廜����������������������������������佣作你伯低伶余佝佈佚兌克免兵冶冷別判利刪刨劫助努劬匣即卵吝吭吞吾否呎吧呆呃吳呈呂君吩告吹吻吸吮吵吶吠吼呀吱含吟听囪困囤囫坊坑址坍均坎圾坐坏圻壯夾妝妒妨妞妣妙妖妍妤妓妊妥孝孜孚孛完宋宏尬局屁�\".split(\"\");\nfor(j = 0; j != D[201].length; ++j) if(D[201][j].charCodeAt(0) !== 0xFFFD) { e[D[201][j]] = 51456 + j; d[51456 + j] = D[201][j];}\nD[202] = \"���������������������������������廕廙廒廔彄彃彯徶愬愨慁慞慱慳慒慓慲慬憀慴慔慺慛慥愻慪慡慖戩戧戫搫摍摛摝摴摶摲摳摽摵摦撦摎撂摞摜摋摓摠摐摿搿摬摫摙摥摷敳斠暡暠暟朅朄朢榱榶槉榠槎榖榰榬榼榑榙榎榧榍榩榾榯榿槄榽榤槔榹槊榚槏榳榓����������������������������������尿尾岐岑岔岌巫希序庇床廷弄弟彤形彷役忘忌志忍忱快忸忪戒我抄抗抖技扶抉扭把扼找批扳抒扯折扮投抓抑抆改攻攸旱更束李杏材村杜杖杞杉杆杠杓杗步每求汞沙沁沈沉沅沛汪決沐汰沌汨沖沒汽沃汲汾汴沆汶沍沔沘�\".split(\"\");\nfor(j = 0; j != D[202].length; ++j) if(D[202][j].charCodeAt(0) !== 0xFFFD) { e[D[202][j]] = 51712 + j; d[51712 + j] = D[202][j];}\nD[203] = \"���������������������������������榪榡榞槙榗榐槂榵榥槆歊歍歋殞殟殠毃毄毾滎滵滱漃漥滸漷滻漮漉潎漙漚漧漘漻漒滭漊漶潳滹滮漭潀漰漼漵滫漇漎潃漅滽滶漹漜滼漺漟漍漞漈漡熇熐熉熀熅熂熏煻熆熁熗牄牓犗犕犓獃獍獑獌瑢瑳瑱瑵瑲瑧瑮甀甂甃畽����������������������������������沂灶灼災灸牢牡牠狄狂玖甬甫男甸皂盯矣私秀禿究系罕肖肓肝肘肛肚育良芒芋芍見角言谷豆豕貝赤走足身車辛辰迂迆迅迄巡邑邢邪邦那酉釆里防阮阱阪阬並乖乳事些亞享京佯依侍佳使佬供例來侃佰併侈佩佻侖佾侏侑�\".split(\"\");\nfor(j = 0; j != D[203].length; ++j) if(D[203][j].charCodeAt(0) !== 0xFFFD) { e[D[203][j]] = 51968 + j; d[51968 + j] = D[203][j];}\nD[204] = \"���������������������������������疐瘖瘈瘌瘕瘑瘊瘔皸瞁睼瞅瞂睮瞀睯睾瞃碲碪碴碭碨硾碫碞碥碠碬碢碤禘禊禋禖禕禔禓禗禈禒禐稫穊稰稯稨稦窨窫窬竮箈箜箊箑箐箖箍箌箛箎箅箘劄箙箤箂粻粿粼粺綧綷緂綣綪緁緀緅綝緎緄緆緋緌綯綹綖綼綟綦綮綩����������������������������������佺兔兒兕兩具其典冽函刻券刷刺到刮制剁劾劻卒協卓卑卦卷卸卹取叔受味呵咖呸咕咀呻呷咄咒咆呼咐呱呶和咚呢周咋命咎固垃坷坪坩坡坦坤坼夜奉奇奈奄奔妾妻委妹妮姑姆姐姍始姓姊妯妳姒姅孟孤季宗定官宜宙宛尚�\".split(\"\");\nfor(j = 0; j != D[204].length; ++j) if(D[204][j].charCodeAt(0) !== 0xFFFD) { e[D[204][j]] = 52224 + j; d[52224 + j] = D[204][j];}\nD[205] = \"���������������������������������綡緉罳翢翣翥翞耤聝聜膉膆膃膇膍膌膋舕蒗蒤蒡蒟蒺蓎蓂蒬蒮蒫蒹蒴蓁蓍蒪蒚蒱蓐蒝蒧蒻蒢蒔蓇蓌蒛蒩蒯蒨蓖蒘蒶蓏蒠蓗蓔蓒蓛蒰蒑虡蜳蜣蜨蝫蝀蜮蜞蜡蜙蜛蝃蜬蝁蜾蝆蜠蜲蜪蜭蜼蜒蜺蜱蜵蝂蜦蜧蜸蜤蜚蜰蜑裷裧裱����������������������������������屈居屆岷岡岸岩岫岱岳帘帚帖帕帛帑幸庚店府底庖延弦弧弩往征彿彼忝忠忽念忿怏怔怯怵怖怪怕怡性怩怫怛或戕房戾所承拉拌拄抿拂抹拒招披拓拔拋拈抨抽押拐拙拇拍抵拚抱拘拖拗拆抬拎放斧於旺昔易昌昆昂明昀昏�\".split(\"\");\nfor(j = 0; j != D[205].length; ++j) if(D[205][j].charCodeAt(0) !== 0xFFFD) { e[D[205][j]] = 52480 + j; d[52480 + j] = D[205][j];}\nD[206] = \"���������������������������������裲裺裾裮裼裶裻裰裬裫覝覡覟覞觩觫觨誫誙誋誒誏誖谽豨豩賕賏賗趖踉踂跿踍跽踊踃踇踆踅跾踀踄輐輑輎輍鄣鄜鄠鄢鄟鄝鄚鄤鄡鄛酺酲酹酳銥銤鉶銛鉺銠銔銪銍銦銚銫鉹銗鉿銣鋮銎銂銕銢鉽銈銡銊銆銌銙銧鉾銇銩銝����������������������������������昕昊昇服朋杭枋枕東果杳杷枇枝林杯杰板枉松析杵枚枓杼杪杲欣武歧歿氓氛泣注泳沱泌泥河沽沾沼波沫法泓沸泄油況沮泗泅泱沿治泡泛泊沬泯泜泖泠炕炎炒炊炙爬爭爸版牧物狀狎狙狗狐玩玨玟玫玥甽疝疙疚的盂盲直�\".split(\"\");\nfor(j = 0; j != D[206].length; ++j) if(D[206][j].charCodeAt(0) !== 0xFFFD) { e[D[206][j]] = 52736 + j; d[52736 + j] = D[206][j];}\nD[207] = \"���������������������������������銋鈭隞隡雿靘靽靺靾鞃鞀鞂靻鞄鞁靿韎韍頖颭颮餂餀餇馝馜駃馹馻馺駂馽駇骱髣髧鬾鬿魠魡魟鳱鳲鳵麧僿儃儰僸儆儇僶僾儋儌僽儊劋劌勱勯噈噂噌嘵噁噊噉噆噘噚噀嘳嘽嘬嘾嘸嘪嘺圚墫墝墱墠墣墯墬墥墡壿嫿嫴嫽嫷����������������������������������知矽社祀祁秉秈空穹竺糾罔羌羋者肺肥肢肱股肫肩肴肪肯臥臾舍芳芝芙芭芽芟芹花芬芥芯芸芣芰芾芷虎虱初表軋迎返近邵邸邱邶采金長門阜陀阿阻附陂隹雨青非亟亭亮信侵侯便俠俑俏保促侶俘俟俊俗侮俐俄係俚俎俞�\".split(\"\");\nfor(j = 0; j != D[207].length; ++j) if(D[207][j].charCodeAt(0) !== 0xFFFD) { e[D[207][j]] = 52992 + j; d[52992 + j] = D[207][j];}\nD[208] = \"���������������������������������嫶嬃嫸嬂嫹嬁嬇嬅嬏屧嶙嶗嶟嶒嶢嶓嶕嶠嶜嶡嶚嶞幩幝幠幜緳廛廞廡彉徲憋憃慹憱憰憢憉憛憓憯憭憟憒憪憡憍慦憳戭摮摰撖撠撅撗撜撏撋撊撌撣撟摨撱撘敶敺敹敻斲斳暵暰暩暲暷暪暯樀樆樗槥槸樕槱槤樠槿槬槢樛樝����������������������������������侷兗冒冑冠剎剃削前剌剋則勇勉勃勁匍南卻厚叛咬哀咨哎哉咸咦咳哇哂咽咪品哄哈咯咫咱咻咩咧咿囿垂型垠垣垢城垮垓奕契奏奎奐姜姘姿姣姨娃姥姪姚姦威姻孩宣宦室客宥封屎屏屍屋峙峒巷帝帥帟幽庠度建弈弭彥很�\".split(\"\");\nfor(j = 0; j != D[208].length; ++j) if(D[208][j].charCodeAt(0) !== 0xFFFD) { e[D[208][j]] = 53248 + j; d[53248 + j] = D[208][j];}\nD[209] = \"���������������������������������槾樧槲槮樔槷槧橀樈槦槻樍槼槫樉樄樘樥樏槶樦樇槴樖歑殥殣殢殦氁氀毿氂潁漦潾澇濆澒澍澉澌潢潏澅潚澖潶潬澂潕潲潒潐潗澔澓潝漀潡潫潽潧澐潓澋潩潿澕潣潷潪潻熲熯熛熰熠熚熩熵熝熥熞熤熡熪熜熧熳犘犚獘獒����������������������������������待徊律徇後徉怒思怠急怎怨恍恰恨恢恆恃恬恫恪恤扁拜挖按拼拭持拮拽指拱拷拯括拾拴挑挂政故斫施既春昭映昧是星昨昱昤曷柿染柱柔某柬架枯柵柩柯柄柑枴柚查枸柏柞柳枰柙柢柝柒歪殃殆段毒毗氟泉洋洲洪流津洌�\".split(\"\");\nfor(j = 0; j != D[209].length; ++j) if(D[209][j].charCodeAt(0) !== 0xFFFD) { e[D[209][j]] = 53504 + j; d[53504 + j] = D[209][j];}\nD[210] = \"���������������������������������獞獟獠獝獛獡獚獙獢璇璉璊璆璁瑽璅璈瑼瑹甈甇畾瘥瘞瘙瘝瘜瘣瘚瘨瘛皜皝皞皛瞍瞏瞉瞈磍碻磏磌磑磎磔磈磃磄磉禚禡禠禜禢禛歶稹窲窴窳箷篋箾箬篎箯箹篊箵糅糈糌糋緷緛緪緧緗緡縃緺緦緶緱緰緮緟罶羬羰羭翭翫����������������������������������洱洞洗活洽派洶洛泵洹洧洸洩洮洵洎洫炫為炳炬炯炭炸炮炤爰牲牯牴狩狠狡玷珊玻玲珍珀玳甚甭畏界畎畋疫疤疥疢疣癸皆皇皈盈盆盃盅省盹相眉看盾盼眇矜砂研砌砍祆祉祈祇禹禺科秒秋穿突竿竽籽紂紅紀紉紇約紆缸�\".split(\"\");\nfor(j = 0; j != D[210].length; ++j) if(D[210][j].charCodeAt(0) !== 0xFFFD) { e[D[210][j]] = 53760 + j; d[53760 + j] = D[210][j];}\nD[211] = \"���������������������������������翪翬翦翨聤聧膣膟膞膕膢膙膗舖艏艓艒艐艎艑蔤蔻蔏蔀蔩蔎蔉蔍蔟蔊蔧蔜蓻蔫蓺蔈蔌蓴蔪蓲蔕蓷蓫蓳蓼蔒蓪蓩蔖蓾蔨蔝蔮蔂蓽蔞蓶蔱蔦蓧蓨蓰蓯蓹蔘蔠蔰蔋蔙蔯虢蝖蝣蝤蝷蟡蝳蝘蝔蝛蝒蝡蝚蝑蝞蝭蝪蝐蝎蝟蝝蝯蝬蝺����������������������������������美羿耐耍耑耶胖胥胚胃胄背胡胛胎胞胤胝致舢苧范茅苣苛苦茄若茂茉苒苗英茁苜苔苑苞苓苟苯茆虐虹虻虺衍衫要觔計訂訃貞負赴赳趴軍軌述迦迢迪迥迭迫迤迨郊郎郁郃酋酊重閂限陋陌降面革韋韭音頁風飛食首香乘亳�\".split(\"\");\nfor(j = 0; j != D[211].length; ++j) if(D[211][j].charCodeAt(0) !== 0xFFFD) { e[D[211][j]] = 54016 + j; d[54016 + j] = D[211][j];}\nD[212] = \"���������������������������������蝮蝜蝥蝏蝻蝵蝢蝧蝩衚褅褌褔褋褗褘褙褆褖褑褎褉覢覤覣觭觰觬諏諆誸諓諑諔諕誻諗誾諀諅諘諃誺誽諙谾豍貏賥賟賙賨賚賝賧趠趜趡趛踠踣踥踤踮踕踛踖踑踙踦踧踔踒踘踓踜踗踚輬輤輘輚輠輣輖輗遳遰遯遧遫鄯鄫鄩����������������������������������倌倍倣俯倦倥俸倩倖倆值借倚倒們俺倀倔倨俱倡個候倘俳修倭倪俾倫倉兼冤冥冢凍凌准凋剖剜剔剛剝匪卿原厝叟哨唐唁唷哼哥哲唆哺唔哩哭員唉哮哪哦唧唇哽唏圃圄埂埔埋埃堉夏套奘奚娑娘娜娟娛娓姬娠娣娩娥娌娉�\".split(\"\");\nfor(j = 0; j != D[212].length; ++j) if(D[212][j].charCodeAt(0) !== 0xFFFD) { e[D[212][j]] = 54272 + j; d[54272 + j] = D[212][j];}\nD[213] = \"���������������������������������鄪鄲鄦鄮醅醆醊醁醂醄醀鋐鋃鋄鋀鋙銶鋏鋱鋟鋘鋩鋗鋝鋌鋯鋂鋨鋊鋈鋎鋦鋍鋕鋉鋠鋞鋧鋑鋓銵鋡錥鋆銴镼閬閫閮閰隤隢雓霅霈霂靚鞊鞎鞈韐韏頞頝頦頩頨頠頛頧颲餈飺餑餔餖餗餕駜駍駏駓駔駎駉駖駘駋駗駌骳髬髫髳����������������������������������孫屘宰害家宴宮宵容宸射屑展屐峭峽峻峪峨峰島崁峴差席師庫庭座弱徒徑徐恙恣恥恐恕恭恩息悄悟悚悍悔悌悅悖扇拳挈拿捎挾振捕捂捆捏捉挺捐挽挪挫挨捍捌效敉料旁旅時晉晏晃晒晌晅晁書朔朕朗校核案框桓根桂桔�\".split(\"\");\nfor(j = 0; j != D[213].length; ++j) if(D[213][j].charCodeAt(0) !== 0xFFFD) { e[D[213][j]] = 54528 + j; d[54528 + j] = D[213][j];}\nD[214] = \"���������������������������������髲髱魆魃魧魴魱魦魶魵魰魨魤魬鳼鳺鳽鳿鳷鴇鴀鳹鳻鴈鴅鴄麃黓鼏鼐儜儓儗儚儑凞匴叡噰噠噮噳噦噣噭噲噞噷圜圛壈墽壉墿墺壂墼壆嬗嬙嬛嬡嬔嬓嬐嬖嬨嬚嬠嬞寯嶬嶱嶩嶧嶵嶰嶮嶪嶨嶲嶭嶯嶴幧幨幦幯廩廧廦廨廥彋����������������������������������栩梳栗桌桑栽柴桐桀格桃株桅栓栘桁殊殉殷氣氧氨氦氤泰浪涕消涇浦浸海浙涓浬涉浮浚浴浩涌涊浹涅浥涔烊烘烤烙烈烏爹特狼狹狽狸狷玆班琉珮珠珪珞畔畝畜畚留疾病症疲疳疽疼疹痂疸皋皰益盍盎眩真眠眨矩砰砧砸�\".split(\"\");\nfor(j = 0; j != D[214].length; ++j) if(D[214][j].charCodeAt(0) !== 0xFFFD) { e[D[214][j]] = 54784 + j; d[54784 + j] = D[214][j];}\nD[215] = \"���������������������������������徼徻憝憨憖懅憴懆懁懌憺憿憸憌擗擖擐擏擉撽撉擃擛擳擙攳敿敼斢曈暾曀曊曋曏暽暻暺曌朣樴橦橉橧樲橨樾橝橭橶橛橑樨橚樻樿橁橪橤橐橏橔橯橩橠樼橞橖橕橍橎橆歕歔歖殧殪殫毈毇氄氃氆澭濋澣濇澼濎濈潞濄澽澞����������������������������������砝破砷砥砭砠砟砲祕祐祠祟祖神祝祗祚秤秣秧租秦秩秘窄窈站笆笑粉紡紗紋紊素索純紐紕級紜納紙紛缺罟羔翅翁耆耄耘耕耙耗耽耿胱脂胰脅胭胴脆胸胳脈能脊胼胯臭臬舀舐航舫舨般芻茫荒荔荊茸荐草茵茴荏茲茹茶茗�\".split(\"\");\nfor(j = 0; j != D[215].length; ++j) if(D[215][j].charCodeAt(0) !== 0xFFFD) { e[D[215][j]] = 55040 + j; d[55040 + j] = D[215][j];}\nD[216] = \"���������������������������������濊澨瀄澥澮澺澬澪濏澿澸澢濉澫濍澯澲澰燅燂熿熸燖燀燁燋燔燊燇燏熽燘熼燆燚燛犝犞獩獦獧獬獥獫獪瑿璚璠璔璒璕璡甋疀瘯瘭瘱瘽瘳瘼瘵瘲瘰皻盦瞚瞝瞡瞜瞛瞢瞣瞕瞙瞗磝磩磥磪磞磣磛磡磢磭磟磠禤穄穈穇窶窸窵����������������������������������荀茱茨荃虔蚊蚪蚓蚤蚩蚌蚣蚜衰衷袁袂衽衹記訐討訌訕訊託訓訖訏訑豈豺豹財貢起躬軒軔軏辱送逆迷退迺迴逃追逅迸邕郡郝郢酒配酌釘針釗釜釙閃院陣陡陛陝除陘陞隻飢馬骨高鬥鬲鬼乾偺偽停假偃偌做偉健偶偎偕偵�\".split(\"\");\nfor(j = 0; j != D[216].length; ++j) if(D[216][j].charCodeAt(0) !== 0xFFFD) { e[D[216][j]] = 55296 + j; d[55296 + j] = D[216][j];}\nD[217] = \"���������������������������������窱窷篞篣篧篝篕篥篚篨篹篔篪篢篜篫篘篟糒糔糗糐糑縒縡縗縌縟縠縓縎縜縕縚縢縋縏縖縍縔縥縤罃罻罼罺羱翯耪耩聬膱膦膮膹膵膫膰膬膴膲膷膧臲艕艖艗蕖蕅蕫蕍蕓蕡蕘蕀蕆蕤蕁蕢蕄蕑蕇蕣蔾蕛蕱蕎蕮蕵蕕蕧蕠薌蕦����������������������������������側偷偏倏偯偭兜冕凰剪副勒務勘動匐匏匙匿區匾參曼商啪啦啄啞啡啃啊唱啖問啕唯啤唸售啜唬啣唳啁啗圈國圉域堅堊堆埠埤基堂堵執培夠奢娶婁婉婦婪婀娼婢婚婆婊孰寇寅寄寂宿密尉專將屠屜屝崇崆崎崛崖崢崑崩崔�\".split(\"\");\nfor(j = 0; j != D[217].length; ++j) if(D[217][j].charCodeAt(0) !== 0xFFFD) { e[D[217][j]] = 55552 + j; d[55552 + j] = D[217][j];}\nD[218] = \"���������������������������������蕝蕔蕥蕬虣虥虤螤螛螏螗螓螒螈螁螖螘蝹螇螣螅螐螑螝螄螔螜螚螉褞褦褰褭褮褧褱褢褩褣褯褬褟觱諠諢諲諴諵諝謔諤諟諰諈諞諡諨諿諯諻貑貒貐賵賮賱賰賳赬赮趥趧踳踾踸蹀蹅踶踼踽蹁踰踿躽輶輮輵輲輹輷輴遶遹遻����������������������������������崙崤崧崗巢常帶帳帷康庸庶庵庾張強彗彬彩彫得徙從徘御徠徜恿患悉悠您惋悴惦悽情悻悵惜悼惘惕惆惟悸惚惇戚戛扈掠控捲掖探接捷捧掘措捱掩掉掃掛捫推掄授掙採掬排掏掀捻捩捨捺敝敖救教敗啟敏敘敕敔斜斛斬族�\".split(\"\");\nfor(j = 0; j != D[218].length; ++j) if(D[218][j].charCodeAt(0) !== 0xFFFD) { e[D[218][j]] = 55808 + j; d[55808 + j] = D[218][j];}\nD[219] = \"���������������������������������邆郺鄳鄵鄶醓醐醑醍醏錧錞錈錟錆錏鍺錸錼錛錣錒錁鍆錭錎錍鋋錝鋺錓鋹鋷錴錂錤鋿錩錹錵錪錔錌錋鋾錉錀鋻錖閼闍閾閹閺閶閿閵閽隩雔霋霒霐鞙鞗鞔韰韸頵頯頲餤餟餧餩馞駮駬駥駤駰駣駪駩駧骹骿骴骻髶髺髹髷鬳����������������������������������旋旌旎晝晚晤晨晦晞曹勗望梁梯梢梓梵桿桶梱梧梗械梃棄梭梆梅梔條梨梟梡梂欲殺毫毬氫涎涼淳淙液淡淌淤添淺清淇淋涯淑涮淞淹涸混淵淅淒渚涵淚淫淘淪深淮淨淆淄涪淬涿淦烹焉焊烽烯爽牽犁猜猛猖猓猙率琅琊球�\".split(\"\");\nfor(j = 0; j != D[219].length; ++j) if(D[219][j].charCodeAt(0) !== 0xFFFD) { e[D[219][j]] = 56064 + j; d[56064 + j] = D[219][j];}\nD[220] = \"���������������������������������鮀鮅鮇魼魾魻鮂鮓鮒鮐魺鮕魽鮈鴥鴗鴠鴞鴔鴩鴝鴘鴢鴐鴙鴟麈麆麇麮麭黕黖黺鼒鼽儦儥儢儤儠儩勴嚓嚌嚍嚆嚄嚃噾嚂噿嚁壖壔壏壒嬭嬥嬲嬣嬬嬧嬦嬯嬮孻寱寲嶷幬幪徾懃憵憼懧懠懥懤懨懞擯擩擣擫擤擨斁斀斶旚曒檍����������������������������������理現琍瓠瓶瓷甜產略畦畢異疏痔痕疵痊痍皎盔盒盛眷眾眼眶眸眺硫硃硎祥票祭移窒窕笠笨笛第符笙笞笮粒粗粕絆絃統紮紹紼絀細紳組累終紲紱缽羞羚翌翎習耜聊聆脯脖脣脫脩脰脤舂舵舷舶船莎莞莘荸莢莖莽莫莒莊莓�\".split(\"\");\nfor(j = 0; j != D[220].length; ++j) if(D[220][j].charCodeAt(0) !== 0xFFFD) { e[D[220][j]] = 56320 + j; d[56320 + j] = D[220][j];}\nD[221] = \"���������������������������������檖檁檥檉檟檛檡檞檇檓檎檕檃檨檤檑橿檦檚檅檌檒歛殭氉濌澩濴濔濣濜濭濧濦濞濲濝濢濨燡燱燨燲燤燰燢獳獮獯璗璲璫璐璪璭璱璥璯甐甑甒甏疄癃癈癉癇皤盩瞵瞫瞲瞷瞶瞴瞱瞨矰磳磽礂磻磼磿磲礅磹磾礄禫禨穜穛穖����������������������������������莉莠荷荻荼莆莧處彪蛇蛀蚶蛄蚵蛆蛋蚱蚯蛉術袞袈被袒袖袍袋覓規訪訝訣訥許設訟訛訢豉豚販責貫貨貪貧赧赦趾趺軛軟這逍通逗連速逝逐逕逞造透逢逖逛途部郭都酗野釵釦釣釧釭釩閉陪陵陳陸陰陴陶陷陬雀雪雩章竟�\".split(\"\");\nfor(j = 0; j != D[221].length; ++j) if(D[221][j].charCodeAt(0) !== 0xFFFD) { e[D[221][j]] = 56576 + j; d[56576 + j] = D[221][j];}\nD[222] = \"���������������������������������穘穔穚窾竀竁簅簏篲簀篿篻簎篴簋篳簂簉簃簁篸篽簆篰篱簐簊糨縭縼繂縳顈縸縪繉繀繇縩繌縰縻縶繄縺罅罿罾罽翴翲耬膻臄臌臊臅臇膼臩艛艚艜薃薀薏薧薕薠薋薣蕻薤薚薞蕷蕼薉薡蕺蕸蕗薎薖薆薍薙薝薁薢薂薈薅蕹����������������������������������頂頃魚鳥鹵鹿麥麻傢傍傅備傑傀傖傘傚最凱割剴創剩勞勝勛博厥啻喀喧啼喊喝喘喂喜喪喔喇喋喃喳單喟唾喲喚喻喬喱啾喉喫喙圍堯堪場堤堰報堡堝堠壹壺奠婷媚婿媒媛媧孳孱寒富寓寐尊尋就嵌嵐崴嵇巽幅帽幀幃幾廊�\".split(\"\");\nfor(j = 0; j != D[222].length; ++j) if(D[222][j].charCodeAt(0) !== 0xFFFD) { e[D[222][j]] = 56832 + j; d[56832 + j] = D[222][j];}\nD[223] = \"���������������������������������蕶薘薐薟虨螾螪螭蟅螰螬螹螵螼螮蟉蟃蟂蟌螷螯蟄蟊螴螶螿螸螽蟞螲褵褳褼褾襁襒褷襂覭覯覮觲觳謞謘謖謑謅謋謢謏謒謕謇謍謈謆謜謓謚豏豰豲豱豯貕貔賹赯蹎蹍蹓蹐蹌蹇轃轀邅遾鄸醚醢醛醙醟醡醝醠鎡鎃鎯鍤鍖鍇����������������������������������廁廂廄弼彭復循徨惑惡悲悶惠愜愣惺愕惰惻惴慨惱愎惶愉愀愒戟扉掣掌描揀揩揉揆揍插揣提握揖揭揮捶援揪換摒揚揹敞敦敢散斑斐斯普晰晴晶景暑智晾晷曾替期朝棺棕棠棘棗椅棟棵森棧棹棒棲棣棋棍植椒椎棉棚楮棻�\".split(\"\");\nfor(j = 0; j != D[223].length; ++j) if(D[223][j].charCodeAt(0) !== 0xFFFD) { e[D[223][j]] = 57088 + j; d[57088 + j] = D[223][j];}\nD[224] = \"���������������������������������鍼鍘鍜鍶鍉鍐鍑鍠鍭鎏鍌鍪鍹鍗鍕鍒鍏鍱鍷鍻鍡鍞鍣鍧鍎鍙闇闀闉闃闅閷隮隰隬霠霟霘霝霙鞚鞡鞜鞞鞝韕韔韱顁顄顊顉顅顃餥餫餬餪餳餲餯餭餱餰馘馣馡騂駺駴駷駹駸駶駻駽駾駼騃骾髾髽鬁髼魈鮚鮨鮞鮛鮦鮡鮥鮤鮆����������������������������������款欺欽殘殖殼毯氮氯氬港游湔渡渲湧湊渠渥渣減湛湘渤湖湮渭渦湯渴湍渺測湃渝渾滋溉渙湎湣湄湲湩湟焙焚焦焰無然煮焜牌犄犀猶猥猴猩琺琪琳琢琥琵琶琴琯琛琦琨甥甦畫番痢痛痣痙痘痞痠登發皖皓皴盜睏短硝硬硯�\".split(\"\");\nfor(j = 0; j != D[224].length; ++j) if(D[224][j].charCodeAt(0) !== 0xFFFD) { e[D[224][j]] = 57344 + j; d[57344 + j] = D[224][j];}\nD[225] = \"���������������������������������鮢鮠鮯鴳鵁鵧鴶鴮鴯鴱鴸鴰鵅鵂鵃鴾鴷鵀鴽翵鴭麊麉麍麰黈黚黻黿鼤鼣鼢齔龠儱儭儮嚘嚜嚗嚚嚝嚙奰嬼屩屪巀幭幮懘懟懭懮懱懪懰懫懖懩擿攄擽擸攁攃擼斔旛曚曛曘櫅檹檽櫡櫆檺檶檷櫇檴檭歞毉氋瀇瀌瀍瀁瀅瀔瀎濿����������������������������������稍稈程稅稀窘窗窖童竣等策筆筐筒答筍筋筏筑粟粥絞結絨絕紫絮絲絡給絢絰絳善翔翕耋聒肅腕腔腋腑腎脹腆脾腌腓腴舒舜菩萃菸萍菠菅萋菁華菱菴著萊菰萌菌菽菲菊萸萎萄菜萇菔菟虛蛟蛙蛭蛔蛛蛤蛐蛞街裁裂袱覃視�\".split(\"\");\nfor(j = 0; j != D[225].length; ++j) if(D[225][j].charCodeAt(0) !== 0xFFFD) { e[D[225][j]] = 57600 + j; d[57600 + j] = D[225][j];}\nD[226] = \"���������������������������������瀀濻瀦濼濷瀊爁燿燹爃燽獶璸瓀璵瓁璾璶璻瓂甔甓癜癤癙癐癓癗癚皦皽盬矂瞺礌礓礔礉礐礒礑禭禬穟簜簩簙簠簟簭簝簦簨簢簥簰繜繐繖繣繘繢繟繑繠繗繓羵羳翷翸聵臑臒臐艟艞薴藆藀藃藂薳薵薽藇藄薿藋藎藈藅薱薶����������������������������������註詠評詞証詁詔詛詐詆訴診訶詖象貂貯貼貳貽賁費賀貴買貶貿貸越超趁跎距跋跚跑跌跛跆軻軸軼辜逮逵週逸進逶鄂郵鄉郾酣酥量鈔鈕鈣鈉鈞鈍鈐鈇鈑閔閏開閑間閒閎隊階隋陽隅隆隍陲隄雁雅雄集雇雯雲韌項順須飧飪�\".split(\"\");\nfor(j = 0; j != D[226].length; ++j) if(D[226][j].charCodeAt(0) !== 0xFFFD) { e[D[226][j]] = 57856 + j; d[57856 + j] = D[226][j];}\nD[227] = \"���������������������������������藒蘤薸薷薾虩蟧蟦蟢蟛蟫蟪蟥蟟蟳蟤蟔蟜蟓蟭蟘蟣蟗蟙蠁蟴蟨蟝襓襋襏襌襆襐襑襉謪謧謣謳謰謵譇謯謼謾謱謥謷謦謶謮謤謻謽謺豂豵貙貘貗賾贄贂贀蹜蹢蹠蹗蹖蹞蹥蹧蹛蹚蹡蹝蹩蹔轆轇轈轋鄨鄺鄻鄾醨醥醧醯醪鎵鎌����������������������������������飯飩飲飭馮馭黃黍黑亂傭債傲傳僅傾催傷傻傯僇剿剷剽募勦勤勢勣匯嗟嗨嗓嗦嗎嗜嗇嗑嗣嗤嗯嗚嗡嗅嗆嗥嗉園圓塞塑塘塗塚塔填塌塭塊塢塒塋奧嫁嫉嫌媾媽媼媳嫂媲嵩嵯幌幹廉廈弒彙徬微愚意慈感想愛惹愁愈慎慌慄�\".split(\"\");\nfor(j = 0; j != D[227].length; ++j) if(D[227][j].charCodeAt(0) !== 0xFFFD) { e[D[227][j]] = 58112 + j; d[58112 + j] = D[227][j];}\nD[228] = \"���������������������������������鎒鎷鎛鎝鎉鎧鎎鎪鎞鎦鎕鎈鎙鎟鎀鎍鎱鎑鎲鎤鎨鎴鎣闒闓闑隳雗雚巂雟雘雝霣霢霥鞬鞮鞨鞫鞤鞪鞢鞥韗韙韖韘韺顐顑顒颸饁餼餺騏騋騉騍騄騑騊騅騇騆髀髜鬈鬄鬅鬩鬵魊魌魋鯇鯆鯃鮿鯁鮵鮸鯓鮶鯄鮹鮽鵜鵓鵏鵊鵛鵋����������������������������������慍愾愴愧愍愆愷戡戢搓搾搞搪搭搽搬搏搜搔損搶搖搗搆敬斟新暗暉暇暈暖暄暘暍會榔業楚楷楠楔極椰概楊楨楫楞楓楹榆楝楣楛歇歲毀殿毓毽溢溯滓溶滂源溝滇滅溥溘溼溺溫滑準溜滄滔溪溧溴煎煙煩煤煉照煜煬煦煌煥�\".split(\"\");\nfor(j = 0; j != D[228].length; ++j) if(D[228][j].charCodeAt(0) !== 0xFFFD) { e[D[228][j]] = 58368 + j; d[58368 + j] = D[228][j];}\nD[229] = \"���������������������������������鵙鵖鵌鵗鵒鵔鵟鵘鵚麎麌黟鼁鼀鼖鼥鼫鼪鼩鼨齌齕儴儵劖勷厴嚫嚭嚦嚧嚪嚬壚壝壛夒嬽嬾嬿巃幰徿懻攇攐攍攉攌攎斄旞旝曞櫧櫠櫌櫑櫙櫋櫟櫜櫐櫫櫏櫍櫞歠殰氌瀙瀧瀠瀖瀫瀡瀢瀣瀩瀗瀤瀜爌爊爇爂爅犥犦犤犣犡瓋瓅����������������������������������煞煆煨煖爺牒猷獅猿猾瑯瑚瑕瑟瑞瑁琿瑙瑛瑜當畸瘀痰瘁痲痱痺痿痴痳盞盟睛睫睦睞督睹睪睬睜睥睨睢矮碎碰碗碘碌碉硼碑碓硿祺祿禁萬禽稜稚稠稔稟稞窟窠筷節筠筮筧粱粳粵經絹綑綁綏絛置罩罪署義羨群聖聘肆肄�\".split(\"\");\nfor(j = 0; j != D[229].length; ++j) if(D[229][j].charCodeAt(0) !== 0xFFFD) { e[D[229][j]] = 58624 + j; d[58624 + j] = D[229][j];}\nD[230] = \"���������������������������������璷瓃甖癠矉矊矄矱礝礛礡礜礗礞禰穧穨簳簼簹簬簻糬糪繶繵繸繰繷繯繺繲繴繨罋罊羃羆羷翽翾聸臗臕舋艤艡艣藫藱藭藙藡藨藚藗藬藲藸藘藟藣藜藑藰藦藯藞藢蠀蟺蠃蟶蟷蠉蠌蠋蠆蟼蠈蟿蠊蠂襢襚襛襗襡襜襘襝襙覈覷����������������������������������腱腰腸腥腮腳腫腹腺腦舅艇蒂葷落萱葵葦葫葉葬葛萼萵葡董葩葭葆虞虜號蛹蜓蜈蜇蜀蛾蛻蜂蜃蜆蜊衙裟裔裙補裘裝裡裊裕裒覜解詫該詳試詩詰誇詼詣誠話誅詭詢詮詬詹詻訾詨豢貊貉賊資賈賄貲賃賂賅跡跟跨路跳跺跪�\".split(\"\");\nfor(j = 0; j != D[230].length; ++j) if(D[230][j].charCodeAt(0) !== 0xFFFD) { e[D[230][j]] = 58880 + j; d[58880 + j] = D[230][j];}\nD[231] = \"���������������������������������覶觶譐譈譊譀譓譖譔譋譕譑譂譒譗豃豷豶貚贆贇贉趬趪趭趫蹭蹸蹳蹪蹯蹻軂轒轑轏轐轓辴酀鄿醰醭鏞鏇鏏鏂鏚鏐鏹鏬鏌鏙鎩鏦鏊鏔鏮鏣鏕鏄鏎鏀鏒鎥鏧镽闚闛雡霩霫霬霨霦鞳鞷鞶韝韞韟顜顙顝顗颿颽颻颾饈饇饃馦馧����������������������������������跤跦躲較載軾輊辟農運遊道遂達逼違遐遇遏過遍遑逾遁鄒鄗酬酪酩釉鈷鉗鈸鈽鉀鈾鉛鉋鉤鉑鈴鉉鉍鉅鈹鈿鉚閘隘隔隕雍雋雉雊雷電雹零靖靴靶預頑頓頊頒頌飼飴飽飾馳馱馴髡鳩麂鼎鼓鼠僧僮僥僖僭僚僕像僑僱僎僩兢�\".split(\"\");\nfor(j = 0; j != D[231].length; ++j) if(D[231][j].charCodeAt(0) !== 0xFFFD) { e[D[231][j]] = 59136 + j; d[59136 + j] = D[231][j];}\nD[232] = \"���������������������������������騚騕騥騝騤騛騢騠騧騣騞騜騔髂鬋鬊鬎鬌鬷鯪鯫鯠鯞鯤鯦鯢鯰鯔鯗鯬鯜鯙鯥鯕鯡鯚鵷鶁鶊鶄鶈鵱鶀鵸鶆鶋鶌鵽鵫鵴鵵鵰鵩鶅鵳鵻鶂鵯鵹鵿鶇鵨麔麑黀黼鼭齀齁齍齖齗齘匷嚲嚵嚳壣孅巆巇廮廯忀忁懹攗攖攕攓旟曨曣曤����������������������������������凳劃劂匱厭嗾嘀嘛嘗嗽嘔嘆嘉嘍嘎嗷嘖嘟嘈嘐嗶團圖塵塾境墓墊塹墅塽壽夥夢夤奪奩嫡嫦嫩嫗嫖嫘嫣孵寞寧寡寥實寨寢寤察對屢嶄嶇幛幣幕幗幔廓廖弊彆彰徹慇愿態慷慢慣慟慚慘慵截撇摘摔撤摸摟摺摑摧搴摭摻敲斡�\".split(\"\");\nfor(j = 0; j != D[232].length; ++j) if(D[232][j].charCodeAt(0) !== 0xFFFD) { e[D[232][j]] = 59392 + j; d[59392 + j] = D[232][j];}\nD[233] = \"���������������������������������櫳櫰櫪櫨櫹櫱櫮櫯瀼瀵瀯瀷瀴瀱灂瀸瀿瀺瀹瀪灀瀻瀳灁爓爔犨獽獼璺皫皪皾盭矌矎矏矍矲礥礣礧礨礤礩禲穮穬穭竷籉籈籊籇籅糮繻繾纁纀羺翿聹臛臙艨艩蘢藿蘁藾蘛蘀藶蘄蘉蘅蘌藽蠙蠐蠑蠗蠓蠖襣襦覹觷譠譪譝譨譣����������������������������������旗旖暢暨暝榜榨榕槁榮槓構榛榷榻榫榴槐槍榭槌榦槃榣歉歌氳漳演滾漓滴漩漾漠漬漏漂漢滿滯漆漱漸漲漣漕漫漯澈漪滬漁滲滌滷熔熙煽熊熄熒爾犒犖獄獐瑤瑣瑪瑰瑭甄疑瘧瘍瘋瘉瘓盡監瞄睽睿睡磁碟碧碳碩碣禎福禍�\".split(\"\");\nfor(j = 0; j != D[233].length; ++j) if(D[233][j].charCodeAt(0) !== 0xFFFD) { e[D[233][j]] = 59648 + j; d[59648 + j] = D[233][j];}\nD[234] = \"���������������������������������譥譧譭趮躆躈躄轙轖轗轕轘轚邍酃酁醷醵醲醳鐋鐓鏻鐠鐏鐔鏾鐕鐐鐨鐙鐍鏵鐀鏷鐇鐎鐖鐒鏺鐉鏸鐼鐊鏿鏼鐌鏶鐑鐆闞闠闟霮霯鞹鞻韽韾顠顢顣顟飁飂饐饎饙饌饋饓騲騴騱騬騪騶騩騮騸騭髇髊髆鬐鬒鬑鰋鰈鯷鰅鰒鯸鱀����������������������������������種稱窪窩竭端管箕箋筵算箝箔箏箸箇箄粹粽精綻綰綜綽綾綠緊綴網綱綺綢綿綵綸維緒緇綬罰翠翡翟聞聚肇腐膀膏膈膊腿膂臧臺與舔舞艋蓉蒿蓆蓄蒙蒞蒲蒜蓋蒸蓀蓓蒐蒼蓑蓊蜿蜜蜻蜢蜥蜴蜘蝕蜷蜩裳褂裴裹裸製裨褚裯�\".split(\"\");\nfor(j = 0; j != D[234].length; ++j) if(D[234][j].charCodeAt(0) !== 0xFFFD) { e[D[234][j]] = 59904 + j; d[59904 + j] = D[234][j];}\nD[235] = \"���������������������������������鰇鰎鰆鰗鰔鰉鶟鶙鶤鶝鶒鶘鶐鶛鶠鶔鶜鶪鶗鶡鶚鶢鶨鶞鶣鶿鶩鶖鶦鶧麙麛麚黥黤黧黦鼰鼮齛齠齞齝齙龑儺儹劘劗囃嚽嚾孈孇巋巏廱懽攛欂櫼欃櫸欀灃灄灊灈灉灅灆爝爚爙獾甗癪矐礭礱礯籔籓糲纊纇纈纋纆纍罍羻耰臝����������������������������������誦誌語誣認誡誓誤說誥誨誘誑誚誧豪貍貌賓賑賒赫趙趕跼輔輒輕輓辣遠遘遜遣遙遞遢遝遛鄙鄘鄞酵酸酷酴鉸銬銀銅銘銖鉻銓銜銨鉼銑閡閨閩閣閥閤隙障際雌雒需靼鞅韶頗領颯颱餃餅餌餉駁骯骰髦魁魂鳴鳶鳳麼鼻齊億�\".split(\"\");\nfor(j = 0; j != D[235].length; ++j) if(D[235][j].charCodeAt(0) !== 0xFFFD) { e[D[235][j]] = 60160 + j; d[60160 + j] = D[235][j];}\nD[236] = \"���������������������������������蘘蘪蘦蘟蘣蘜蘙蘧蘮蘡蘠蘩蘞蘥蠩蠝蠛蠠蠤蠜蠫衊襭襩襮襫觺譹譸譅譺譻贐贔趯躎躌轞轛轝酆酄酅醹鐿鐻鐶鐩鐽鐰鐹鐪鐷鐬鑀鐱闥闤闣霵霺鞿韡顤飉飆飀饘饖騹騽驆驄驂驁騺騿髍鬕鬗鬘鬖鬺魒鰫鰝鰜鰬鰣鰨鰩鰤鰡鶷����������������������������������儀僻僵價儂儈儉儅凜劇劈劉劍劊勰厲嘮嘻嘹嘲嘿嘴嘩噓噎噗噴嘶嘯嘰墀墟增墳墜墮墩墦奭嬉嫻嬋嫵嬌嬈寮寬審寫層履嶝嶔幢幟幡廢廚廟廝廣廠彈影德徵慶慧慮慝慕憂慼慰慫慾憧憐憫憎憬憚憤憔憮戮摩摯摹撞撲撈撐撰�\".split(\"\");\nfor(j = 0; j != D[236].length; ++j) if(D[236][j].charCodeAt(0) !== 0xFFFD) { e[D[236][j]] = 60416 + j; d[60416 + j] = D[236][j];}\nD[237] = \"���������������������������������鶶鶼鷁鷇鷊鷏鶾鷅鷃鶻鶵鷎鶹鶺鶬鷈鶱鶭鷌鶳鷍鶲鹺麜黫黮黭鼛鼘鼚鼱齎齥齤龒亹囆囅囋奱孋孌巕巑廲攡攠攦攢欋欈欉氍灕灖灗灒爞爟犩獿瓘瓕瓙瓗癭皭礵禴穰穱籗籜籙籛籚糴糱纑罏羇臞艫蘴蘵蘳蘬蘲蘶蠬蠨蠦蠪蠥����������������������������������撥撓撕撩撒撮播撫撚撬撙撢撳敵敷數暮暫暴暱樣樟槨樁樞標槽模樓樊槳樂樅槭樑歐歎殤毅毆漿潼澄潑潦潔澆潭潛潸潮澎潺潰潤澗潘滕潯潠潟熟熬熱熨牖犛獎獗瑩璋璃瑾璀畿瘠瘩瘟瘤瘦瘡瘢皚皺盤瞎瞇瞌瞑瞋磋磅確磊�\".split(\"\");\nfor(j = 0; j != D[237].length; ++j) if(D[237][j].charCodeAt(0) !== 0xFFFD) { e[D[237][j]] = 60672 + j; d[60672 + j] = D[237][j];}\nD[238] = \"���������������������������������襱覿覾觻譾讄讂讆讅譿贕躕躔躚躒躐躖躗轠轢酇鑌鑐鑊鑋鑏鑇鑅鑈鑉鑆霿韣顪顩飋饔饛驎驓驔驌驏驈驊驉驒驐髐鬙鬫鬻魖魕鱆鱈鰿鱄鰹鰳鱁鰼鰷鰴鰲鰽鰶鷛鷒鷞鷚鷋鷐鷜鷑鷟鷩鷙鷘鷖鷵鷕鷝麶黰鼵鼳鼲齂齫龕龢儽劙����������������������������������碾磕碼磐稿稼穀稽稷稻窯窮箭箱範箴篆篇篁箠篌糊締練緯緻緘緬緝編緣線緞緩綞緙緲緹罵罷羯翩耦膛膜膝膠膚膘蔗蔽蔚蓮蔬蔭蔓蔑蔣蔡蔔蓬蔥蓿蔆螂蝴蝶蝠蝦蝸蝨蝙蝗蝌蝓衛衝褐複褒褓褕褊誼諒談諄誕請諸課諉諂調�\".split(\"\");\nfor(j = 0; j != D[238].length; ++j) if(D[238][j].charCodeAt(0) !== 0xFFFD) { e[D[238][j]] = 60928 + j; d[60928 + j] = D[238][j];}\nD[239] = \"���������������������������������壨壧奲孍巘蠯彏戁戃戄攩攥斖曫欑欒欏毊灛灚爢玂玁玃癰矔籧籦纕艬蘺虀蘹蘼蘱蘻蘾蠰蠲蠮蠳襶襴襳觾讌讎讋讈豅贙躘轤轣醼鑢鑕鑝鑗鑞韄韅頀驖驙鬞鬟鬠鱒鱘鱐鱊鱍鱋鱕鱙鱌鱎鷻鷷鷯鷣鷫鷸鷤鷶鷡鷮鷦鷲鷰鷢鷬鷴����������������������������������誰論諍誶誹諛豌豎豬賠賞賦賤賬賭賢賣賜質賡赭趟趣踫踐踝踢踏踩踟踡踞躺輝輛輟輩輦輪輜輞輥適遮遨遭遷鄰鄭鄧鄱醇醉醋醃鋅銻銷鋪鋤鋁銳銼鋒鋇鋰銲閭閱霄霆震霉靠鞍鞋鞏頡頫頜颳養餓餒餘駝駐駟駛駑駕駒駙骷�\".split(\"\");\nfor(j = 0; j != D[239].length; ++j) if(D[239][j].charCodeAt(0) !== 0xFFFD) { e[D[239][j]] = 61184 + j; d[61184 + j] = D[239][j];}\nD[240] = \"���������������������������������鷳鷨鷭黂黐黲黳鼆鼜鼸鼷鼶齃齏齱齰齮齯囓囍孎屭攭曭曮欓灟灡灝灠爣瓛瓥矕礸禷禶籪纗羉艭虃蠸蠷蠵衋讔讕躞躟躠躝醾醽釂鑫鑨鑩雥靆靃靇韇韥驞髕魙鱣鱧鱦鱢鱞鱠鸂鷾鸇鸃鸆鸅鸀鸁鸉鷿鷽鸄麠鼞齆齴齵齶囔攮斸����������������������������������髮髯鬧魅魄魷魯鴆鴉鴃麩麾黎墨齒儒儘儔儐儕冀冪凝劑劓勳噙噫噹噩噤噸噪器噥噱噯噬噢噶壁墾壇壅奮嬝嬴學寰導彊憲憑憩憊懍憶憾懊懈戰擅擁擋撻撼據擄擇擂操撿擒擔撾整曆曉暹曄曇暸樽樸樺橙橫橘樹橄橢橡橋橇�\".split(\"\");\nfor(j = 0; j != D[240].length; ++j) if(D[240][j].charCodeAt(0) !== 0xFFFD) { e[D[240][j]] = 61440 + j; d[61440 + j] = D[240][j];}\nD[241] = \"���������������������������������欘欙欗欚灢爦犪矘矙礹籩籫糶纚纘纛纙臠臡虆虇虈襹襺襼襻觿讘讙躥躤躣鑮鑭鑯鑱鑳靉顲饟鱨鱮鱭鸋鸍鸐鸏鸒鸑麡黵鼉齇齸齻齺齹圞灦籯蠼趲躦釃鑴鑸鑶鑵驠鬮鱴鱳鱱鱵鸔鸓黶鼊龤灨灥糷虪蠾蠽蠿讞貜躩軉靋顳顴飌����������������������������������樵機橈歙歷氅濂澱澡濃澤濁澧澳激澹澶澦澠澴熾燉燐燒燈燕熹燎燙燜燃燄獨璜璣璘璟璞瓢甌甍瘴瘸瘺盧盥瞠瞞瞟瞥磨磚磬磧禦積穎穆穌穋窺篙簑築篤篛篡篩篦糕糖縊縑縈縛縣縞縝縉縐罹羲翰翱翮耨膳膩膨臻興艘艙蕊�\".split(\"\");\nfor(j = 0; j != D[241].length; ++j) if(D[241][j].charCodeAt(0) !== 0xFFFD) { e[D[241][j]] = 61696 + j; d[61696 + j] = D[241][j];}\nD[242] = \"���������������������������������饡馫驤驦驧鬤鸕鸗齈戇欞爧虌躨钂钀钁驩驨鸙虋讟钃鱹麷癵驫鱺鸝灩灪爩麤齾齉龘��������������������������������������������������������������������������������������������蕙蕈蕨蕩蕃蕉蕭蕪蕞螃螟螞螢融衡褪褲褥褫褡親覦諦諺諫諱謀諜諧諮諾謁謂諷諭諳諶諼豫豭貓賴蹄踱踴蹂踹踵輻輯輸輳辨辦遵遴選遲遼遺鄴醒錠錶鋸錳錯錢鋼錫錄錚錐錦錡錕錮錙閻隧隨險雕霎霑霖霍霓霏靛靜靦鞘頰�\".split(\"\");\nfor(j = 0; j != D[242].length; ++j) if(D[242][j].charCodeAt(0) !== 0xFFFD) { e[D[242][j]] = 61952 + j; d[61952 + j] = D[242][j];}\nD[243] = \"�������������������������������������������������������������������頸頻頷頭頹頤餐館餞餛餡餚駭駢駱骸骼髻髭鬨鮑鴕鴣鴦鴨鴒鴛默黔龍龜優償儡儲勵嚎嚀嚐嚅嚇嚏壕壓壑壎嬰嬪嬤孺尷屨嶼嶺嶽嶸幫彌徽應懂懇懦懋戲戴擎擊擘擠擰擦擬擱擢擭斂斃曙曖檀檔檄檢檜櫛檣橾檗檐檠歜殮毚�\".split(\"\");\nfor(j = 0; j != D[243].length; ++j) if(D[243][j].charCodeAt(0) !== 0xFFFD) { e[D[243][j]] = 62208 + j; d[62208 + j] = D[243][j];}\nD[244] = \"�������������������������������������������������������������������氈濘濱濟濠濛濤濫濯澀濬濡濩濕濮濰燧營燮燦燥燭燬燴燠爵牆獰獲璩環璦璨癆療癌盪瞳瞪瞰瞬瞧瞭矯磷磺磴磯礁禧禪穗窿簇簍篾篷簌篠糠糜糞糢糟糙糝縮績繆縷縲繃縫總縱繅繁縴縹繈縵縿縯罄翳翼聱聲聰聯聳臆臃膺�\".split(\"\");\nfor(j = 0; j != D[244].length; ++j) if(D[244][j].charCodeAt(0) !== 0xFFFD) { e[D[244][j]] = 62464 + j; d[62464 + j] = D[244][j];}\nD[245] = \"�������������������������������������������������������������������臂臀膿膽臉膾臨舉艱薪薄蕾薜薑薔薯薛薇薨薊薦虧蟀蟑螳蟒蟆螫螻螺蟈蟋褻褶襄褸褽覬謎謗謙講謊謠謝謄謐豁谿豳賺賽購賸賻趨蹉蹋蹈蹊轄輾轂轅輿避遽還邁邂邀鄹醣醞醜鍍鎂錨鍵鍊鍥鍋錘鍾鍬鍛鍰鍚鍔闊闋闌闈闆�\".split(\"\");\nfor(j = 0; j != D[245].length; ++j) if(D[245][j].charCodeAt(0) !== 0xFFFD) { e[D[245][j]] = 62720 + j; d[62720 + j] = D[245][j];}\nD[246] = \"�������������������������������������������������������������������隱隸雖霜霞鞠韓顆颶餵騁駿鮮鮫鮪鮭鴻鴿麋黏點黜黝黛鼾齋叢嚕嚮壙壘嬸彝懣戳擴擲擾攆擺擻擷斷曜朦檳檬櫃檻檸櫂檮檯歟歸殯瀉瀋濾瀆濺瀑瀏燻燼燾燸獷獵璧璿甕癖癘癒瞽瞿瞻瞼礎禮穡穢穠竄竅簫簧簪簞簣簡糧織�\".split(\"\");\nfor(j = 0; j != D[246].length; ++j) if(D[246][j].charCodeAt(0) !== 0xFFFD) { e[D[246][j]] = 62976 + j; d[62976 + j] = D[246][j];}\nD[247] = \"�������������������������������������������������������������������繕繞繚繡繒繙罈翹翻職聶臍臏舊藏薩藍藐藉薰薺薹蟯蟬蟲蟠覆覲觴謨謹謬謫豐贅蹙蹣蹦蹤蹟蹕軀轉轍邇邃邈醫醬釐鎔鎊鎖鎢鎳鎮鎬鎰鎘鎚鎗闔闖闐闕離雜雙雛雞霤鞣鞦鞭韹額顏題顎顓颺餾餿餽餮馥騎髁鬃鬆魏魎魍鯊�\".split(\"\");\nfor(j = 0; j != D[247].length; ++j) if(D[247][j].charCodeAt(0) !== 0xFFFD) { e[D[247][j]] = 63232 + j; d[63232 + j] = D[247][j];}\nD[248] = \"�������������������������������������������������������������������鯉鯽鯈鯀鵑鵝鵠黠鼕鼬儳嚥嚨壞壟壢寵龐廬懲懷懶懵攀攏曠曝櫥櫝櫚櫓瀛瀟瀨瀚瀝瀕瀘爆爍牘犢獸獺璽瓊瓣疇疆癟癡矇礙禱穫穩簾簿簸簽簷籀繫繭繹繩繪繳羅羶羹羸臘藩藝藪藕藤藥藷蟻蠅蠍蟹蟾襠襟襖襞譁譜識證譚�\".split(\"\");\nfor(j = 0; j != D[248].length; ++j) if(D[248][j].charCodeAt(0) !== 0xFFFD) { e[D[248][j]] = 63488 + j; d[63488 + j] = D[248][j];}\nD[249] = \"�������������������������������������������������������������������譎譏譆譙贈贊蹼蹲躇蹶蹬蹺蹴轔轎辭邊邋醱醮鏡鏑鏟鏃鏈鏜鏝鏖鏢鏍鏘鏤鏗鏨關隴難霪霧靡韜韻類願顛颼饅饉騖騙鬍鯨鯧鯖鯛鶉鵡鵲鵪鵬麒麗麓麴勸嚷嚶嚴嚼壤孀孃孽寶巉懸懺攘攔攙曦朧櫬瀾瀰瀲爐獻瓏癢癥礦礪礬�\".split(\"\");\nfor(j = 0; j != D[249].length; ++j) if(D[249][j].charCodeAt(0) !== 0xFFFD) { e[D[249][j]] = 63744 + j; d[63744 + j] = D[249][j];}\nD[250] = \"�������������������������������������������������������������������礫竇競籌籃籍糯糰辮繽繼纂罌耀臚艦藻藹蘑藺蘆蘋蘇蘊蠔蠕襤覺觸議譬警譯譟譫贏贍躉躁躅躂醴釋鐘鐃鏽闡霰飄饒饑馨騫騰騷騵鰓鰍鹹麵黨鼯齟齣齡儷儸囁囀囂夔屬巍懼懾攝攜斕曩櫻欄櫺殲灌爛犧瓖瓔癩矓籐纏續羼�\".split(\"\");\nfor(j = 0; j != D[250].length; ++j) if(D[250][j].charCodeAt(0) !== 0xFFFD) { e[D[250][j]] = 64000 + j; d[64000 + j] = D[250][j];}\nD[251] = \"�������������������������������������������������������������������蘗蘭蘚蠣蠢蠡蠟襪襬覽譴護譽贓躊躍躋轟辯醺鐮鐳鐵鐺鐸鐲鐫闢霸霹露響顧顥饗驅驃驀騾髏魔魑鰭鰥鶯鶴鷂鶸麝黯鼙齜齦齧儼儻囈囊囉孿巔巒彎懿攤權歡灑灘玀瓤疊癮癬禳籠籟聾聽臟襲襯觼讀贖贗躑躓轡酈鑄鑑鑒霽�\".split(\"\");\nfor(j = 0; j != D[251].length; ++j) if(D[251][j].charCodeAt(0) !== 0xFFFD) { e[D[251][j]] = 64256 + j; d[64256 + j] = D[251][j];}\nD[252] = \"�������������������������������������������������������������������霾韃韁顫饕驕驍髒鬚鱉鰱鰾鰻鷓鷗鼴齬齪龔囌巖戀攣攫攪曬欐瓚竊籤籣籥纓纖纔臢蘸蘿蠱變邐邏鑣鑠鑤靨顯饜驚驛驗髓體髑鱔鱗鱖鷥麟黴囑壩攬灞癱癲矗罐羈蠶蠹衢讓讒讖艷贛釀鑪靂靈靄韆顰驟鬢魘鱟鷹鷺鹼鹽鼇齷�\".split(\"\");\nfor(j = 0; j != D[252].length; ++j) if(D[252][j].charCodeAt(0) !== 0xFFFD) { e[D[252][j]] = 64512 + j; d[64512 + j] = D[252][j];}\nD[253] = \"�������������������������������������������������������������������齲廳欖灣籬籮蠻觀躡釁鑲鑰顱饞髖鬣黌灤矚讚鑷韉驢驥纜讜躪釅鑽鑾鑼鱷鱸黷豔鑿鸚爨驪鬱鸛鸞籲ソゾタダチヂッツヅテデトドナニヌネノハバパヒビピフブプヘベペホボポマミムメモャヤュユョヨラリルレロヮワ�\".split(\"\");\nfor(j = 0; j != D[253].length; ++j) if(D[253][j].charCodeAt(0) !== 0xFFFD) { e[D[253][j]] = 64768 + j; d[64768 + j] = D[253][j];}\nD[254] = \"�������������������������������������������������������������������ヰヱヲンヴヵヶАБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдеёжзийклмнопрстуфхцчшщъыьэюя⇧↸↹��䅚ｸ刂�冈������������\".split(\"\");\nfor(j = 0; j != D[254].length; ++j) if(D[254][j].charCodeAt(0) !== 0xFFFD) { e[D[254][j]] = 65024 + j; d[65024 + j] = D[254][j];}\nreturn {\"enc\": e, \"dec\": d }; })();\ncptable[20001] = (function(){ var d = [], e = {}, D = [], j;\nD[0] = \"\\u0000\\u0001\\u0002\\u0003\\u0004\\u0005\\u0006\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\u0014\\u0015\\u0016\\u0017\\u0018\\u0019\\u001a\\u001b\\u001c\\u001d\\u001e\\u001f !\\\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~����������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[0].length; ++j) if(D[0][j].charCodeAt(0) !== 0xFFFD) { e[D[0][j]] = 0 + j; d[0 + j] = D[0][j];}\nD[129] = \"������������������������������������������������　，、。․•；：？！�������︰…‥﹐﹑‧﹒﹔﹕﹖﹗︱–︲—︳＿︴﹏（）︵︶｛｝︷������︸〔〕︹︺【】︻︼《》︽︾〈〉︿﹀「」﹁﹂『』﹃﹄﹙�����﹚﹛﹜﹝﹞‘’“”〝〞′‵＃＆＊※§〃○●△▲◎☆★◇◆□■▽▼㊣℅‾￣��﹉﹊﹍﹎﹋﹌﹟﹠﹡＋－×÷±√＜＞＝≦≧≠∞≒≡﹢﹣﹤﹥﹦∼∩∪⊥∠∟⊿㏒㏑∫∮∵∴♀♂⊕⊙↑↓→←↖↗↙↘∥∣／＼�﹨＄￥〒￠￡％＠℃℉﹩﹪﹫㏕㎜㎝㎞㏎㎡㎎㎏㏄゜兙兛兞兝兡兣��\".split(\"\");\nfor(j = 0; j != D[129].length; ++j) if(D[129][j].charCodeAt(0) !== 0xFFFD) { e[D[129][j]] = 33024 + j; d[33024 + j] = D[129][j];}\nD[130] = \"������������������������������������������������嗧瓩糎▁▂▃▄▅▆▇�������█▏▎▍▌▋▊▉┼┴┬┤├▔─│▕┌┐└┘╭╮╰╯═������╞╪╡◢◣◥◤╱╲╳¨˄ヽヾゝゞ�〄々〆〇ー［］✽ぁ�����あぃいぅうぇえぉおかがきぎくぐけげこごさざしじすずせぜそぞただち０１２３４５６７８９ⅠⅡⅢⅣⅤⅥⅦⅧⅨⅩ〡〢〣〤〥〦〧〨〩�卄�ＡＢＣＤＥＦＧＨＩＪＫＬＭＮＯＰＱＲＳＴＵＶＷＸＹＺａｂｃｄｅｆｇｈｉｊｋｌｍｎｏｐｑｒｓｔｕｖｗｘｙｚΑΒΓΔΕΖΗΘΙΚ��\".split(\"\");\nfor(j = 0; j != D[130].length; ++j) if(D[130][j].charCodeAt(0) !== 0xFFFD) { e[D[130][j]] = 33280 + j; d[33280 + j] = D[130][j];}\nD[131] = \"������������������������������������������������ΛΜΝΞΟΠΡΣΤΥ�������ΦΧΨΩαβγδεζηθικλμνξοπρστυφχ������ψωㄅㄆㄇㄈㄉㄊㄋㄌㄍㄎㄏㄐㄑㄒㄓㄔㄕㄖㄗㄘㄙㄚㄛㄜ�����ㄝㄞㄟㄠㄡㄢㄣㄤㄥㄦㄧㄨㄩ˙˟ˊˇˋぢっつづてでとどなにぬねのは①②③④⑤⑥⑦⑧⑨⑩⑴⑵⑶⑷⑸⑹⑺⑻⑼⑽ⅰⅱⅲⅳⅴⅵⅶⅷⅸⅹばぱひびぴふぶぷへべぺほぼぽまみむめもゃやゅゆょよらりるれろゎわゐゑをんァアィイゥウェエォオカガキギクグケゲコゴサザシジスズセゼ��\".split(\"\");\nfor(j = 0; j != D[131].length; ++j) if(D[131][j].charCodeAt(0) !== 0xFFFD) { e[D[131][j]] = 33536 + j; d[33536 + j] = D[131][j];}\nD[132] = \"��������������������������������������������������丶丿�亅�亠�����������冂冖冫����勹��匸��卩�厶�����夂����������宀������巛����幺广廴���彐彡�����������攴����无��������������������������������疒癶��������������������������������������������������������辵��������隶��������������������\".split(\"\");\nfor(j = 0; j != D[132].length; ++j) if(D[132][j].charCodeAt(0) !== 0xFFFD) { e[D[132][j]] = 33792 + j; d[33792 + j] = D[132][j];}\nD[145] = \"���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������￢￤��㈱№℡������������������������\".split(\"\");\nfor(j = 0; j != D[145].length; ++j) if(D[145][j].charCodeAt(0) !== 0xFFFD) { e[D[145][j]] = 37120 + j; d[37120 + j] = D[145][j];}\nD[146] = \"����������������������������������������������������������������������������������������������������������������������������������������������������������������一乙丁七乃九了二人儿入八几刀刁力匕十卜又三下丈上丫丸凡久么也乞于亡兀刃勺千叉口土士夕大女子孑孓寸小尢尸山川工己已巳巾干廾弋弓才丑丐不中丰丹之尹予云井互五亢仁什仃仆仇仍今介仄元允內六兮公冗凶��\".split(\"\");\nfor(j = 0; j != D[146].length; ++j) if(D[146][j].charCodeAt(0) !== 0xFFFD) { e[D[146][j]] = 37376 + j; d[37376 + j] = D[146][j];}\nD[147] = \"������������������������������������������������分切刈勻勾勿化匹午升�������卅卞厄友及反壬天夫太夭孔少尤尺屯巴幻廿弔引心戈戶手扎������支文斗斤方日曰月木欠止歹毋比毛氏水火爪父爻片牙牛犬王�����丙世丕且丘主乍乏乎以付仔仕他仗代令仙仞充兄冉冊冬凹出凸刊加功包匆北匝仟半卉卡占卯卮去可古右召叮叩叨叼司叵叫另只史叱台句叭叻四囚外央失奴奶孕它尼巨巧左市布平幼弁弘弗必戊打扔扒扑斥旦朮本未末札正母民氐永汁汀氾犯玄玉瓜瓦甘生用甩田由甲申疋白皮皿目矛矢石示禾穴��\".split(\"\");\nfor(j = 0; j != D[147].length; ++j) if(D[147][j].charCodeAt(0) !== 0xFFFD) { e[D[147][j]] = 37632 + j; d[37632 + j] = D[147][j];}\nD[148] = \"������������������������������������������������立丞丟乒乓乩亙交亦亥�������仿伉伙伊伕伍伐休伏仲件任仰仳份企伋光兇兆先全共再冰列������刑划刎刖劣匈匡匠印危吉吏同吊吐吁吋各向名合吃后吆吒因�����回囝圳地在圭圬圯圩夙多夷夸妄奸妃好她如妁字存宇守宅安寺尖屹州帆并年式弛忙忖戎戌戍成扣扛托收早旨旬旭曲曳有朽朴朱朵次此死氖汝汗汙江池汐汕污汛汍汎灰牟牝百竹米糸缶羊羽老考而耒耳聿肉肋肌臣自至臼舌舛舟艮色艾虫血行衣西阡串亨位住佇佗佞伴佛何估佐佑伽伺伸佃佔似但��\".split(\"\");\nfor(j = 0; j != D[148].length; ++j) if(D[148][j].charCodeAt(0) !== 0xFFFD) { e[D[148][j]] = 37888 + j; d[37888 + j] = D[148][j];}\nD[149] = \"������������������������������������������������佣作你伯低伶余佝佈佚�������兌克免兵冶冷別判利刪刨劫助努劬匣即卵吝吭吞吾否呎吧呆������呃吳呈呂君吩告吹吻吸吮吵吶吠吼呀吱含吟听囪困囤囫坊坑�����址坍均坎圾坐坏圻壯夾妝妒妨妞妣妙妖妍妤妓妊妥孝孜孚孛完宋宏尬局屁尿尾岐岑岔岌巫希序庇床廷弄弟彤形彷役忘忌志忍忱快忸忪戒我抄抗抖技扶抉扭把扼找批扳抒扯折扮投抓抑抆改攻攸旱更束李杏材村杜杖杞杉杆杠杓杗步每求汞沙沁沈沉沅沛汪決沐汰沌汨沖沒汽沃汲汾汴沆汶沍沔沘��\".split(\"\");\nfor(j = 0; j != D[149].length; ++j) if(D[149][j].charCodeAt(0) !== 0xFFFD) { e[D[149][j]] = 38144 + j; d[38144 + j] = D[149][j];}\nD[150] = \"������������������������������������������������沂灶灼災灸牢牡牠狄狂�������玖甬甫男甸皂盯矣私秀禿究系罕肖肓肝肘肛肚育良芒芋芍見������角言谷豆豕貝赤走足身車辛辰迂迆迅迄巡邑邢邪邦那酉釆里�����防阮阱阪阬並乖乳事些亞享京佯依侍佳使佬供例來侃佰併侈佩佻侖佾侏侑佺兔兒兕兩具其典冽函刻券刷刺到刮制剁劾劻卒協卓卑卦卷卸卹取叔受味呵咖呸咕咀呻呷咄咒咆呼咐呱呶和咚呢周咋命咎固垃坷坪坩坡坦坤坼夜奉奇奈奄奔妾妻委妹妮姑姆姐姍始姓姊妯妳姒姅孟孤季宗定官宜宙宛尚��\".split(\"\");\nfor(j = 0; j != D[150].length; ++j) if(D[150][j].charCodeAt(0) !== 0xFFFD) { e[D[150][j]] = 38400 + j; d[38400 + j] = D[150][j];}\nD[151] = \"������������������������������������������������屈居屆岷岡岸岩岫岱岳�������帘帚帖帕帛帑幸庚店府底庖延弦弧弩往征彿彼忝忠忽念忿怏������怔怯怵怖怪怕怡性怩怫怛或戕房戾所承拉拌拄抿拂抹拒招披�����拓拔拋拈抨抽押拐拙拇拍抵拚抱拘拖拗拆抬拎放斧於旺昔易昌昆昂明昀昏昕昊昇服朋杭枋枕東果杳杷枇枝林杯杰板枉松析杵枚枓杼杪杲欣武歧歿氓氛泣注泳沱泌泥河沽沾沼波沫法泓沸泄油況沮泗泅泱沿治泡泛泊沬泯泜泖泠炕炎炒炊炙爬爭爸版牧物狀狎狙狗狐玩玨玟玫玥甽疝疙疚的盂盲直��\".split(\"\");\nfor(j = 0; j != D[151].length; ++j) if(D[151][j].charCodeAt(0) !== 0xFFFD) { e[D[151][j]] = 38656 + j; d[38656 + j] = D[151][j];}\nD[152] = \"������������������������������������������������知矽社祀祁秉秈空穹竺�������糾罔羌羋者肺肥肢肱股肫肩肴肪肯臥臾舍芳芝芙芭芽芟芹花������芬芥芯芸芣芰芾芷虎虱初表軋迎返近邵邸邱邶采金長門阜陀�����阿阻附陂隹雨青非亟亭亮信侵侯便俠俑俏保促侶俘俟俊俗侮俐俄係俚俎俞侷兗冒冑冠剎剃削前剌剋則勇勉勃勁匍南卻厚叛咬哀咨哎哉咸咦咳哇哂咽咪品哄哈咯咫咱咻咩咧咿囿垂型垠垣垢城垮垓奕契奏奎奐姜姘姿姣姨娃姥姪姚姦威姻孩宣宦室客宥封屎屏屍屋峙峒巷帝帥帟幽庠度建弈弭彥很��\".split(\"\");\nfor(j = 0; j != D[152].length; ++j) if(D[152][j].charCodeAt(0) !== 0xFFFD) { e[D[152][j]] = 38912 + j; d[38912 + j] = D[152][j];}\nD[153] = \"������������������������������������������������待徊律徇後徉怒思怠急�������怎怨恍恰恨恢恆恃恬恫恪恤扁拜挖按拼拭持拮拽指拱拷拯括������拾拴挑挂政故斫施既春昭映昧是星昨昱昤曷柿染柱柔某柬架�����枯柵柩柯柄柑枴柚查枸柏柞柳枰柙柢柝柒歪殃殆段毒毗氟泉洋洲洪流津洌洱洞洗活洽派洶洛泵洹洧洸洩洮洵洎洫炫為炳炬炯炭炸炮炤爰牲牯牴狩狠狡玷珊玻玲珍珀玳甚甭畏界畎畋疫疤疥疢疣癸皆皇皈盈盆盃盅省盹相眉看盾盼眇矜砂研砌砍祆祉祈祇禹禺科秒秋穿突竿竽籽紂紅紀紉紇約紆缸��\".split(\"\");\nfor(j = 0; j != D[153].length; ++j) if(D[153][j].charCodeAt(0) !== 0xFFFD) { e[D[153][j]] = 39168 + j; d[39168 + j] = D[153][j];}\nD[154] = \"������������������������������������������������美羿耐耍耑耶胖胥胚胃�������胄背胡胛胎胞胤胝致舢苧范茅苣苛苦茄若茂茉苒苗英茁苜苔������苑苞苓苟苯茆虐虹虻虺衍衫要觔計訂訃貞負赴赳趴軍軌述迦�����迢迪迥迭迫迤迨郊郎郁郃酋酊重閂限陋陌降面革韋韭音頁風飛食首香乘亳倌倍倣俯倦倥俸倩倖倆值借倚倒們俺倀倔倨俱倡個候倘俳修倭倪俾倫倉兼冤冥冢凍凌准凋剖剜剔剛剝匪卿原厝叟哨唐唁唷哼哥哲唆哺唔哩哭員唉哮哪哦唧唇哽唏圃圄埂埔埋埃堉夏套奘奚娑娘娜娟娛娓姬娠娣娩娥娌娉��\".split(\"\");\nfor(j = 0; j != D[154].length; ++j) if(D[154][j].charCodeAt(0) !== 0xFFFD) { e[D[154][j]] = 39424 + j; d[39424 + j] = D[154][j];}\nD[155] = \"������������������������������������������������孫屘宰害家宴宮宵容宸�������射屑展屐峭峽峻峪峨峰島崁峴差席師庫庭座弱徒徑徐恙恣恥������恐恕恭恩息悄悟悚悍悔悌悅悖扇拳挈拿捎挾振捕捂捆捏捉挺�����捐挽挪挫挨捍捌效敉料旁旅時晉晏晃晒晌晅晁書朔朕朗校核案框桓根桂桔栩梳栗桌桑栽柴桐桀格桃株桅栓栘桁殊殉殷氣氧氨氦氤泰浪涕消涇浦浸海浙涓浬涉浮浚浴浩涌涊浹涅浥涔烊烘烤烙烈烏爹特狼狹狽狸狷玆班琉珮珠珪珞畔畝畜畚留疾病症疲疳疽疼疹痂疸皋皰益盍盎眩真眠眨矩砰砧砸��\".split(\"\");\nfor(j = 0; j != D[155].length; ++j) if(D[155][j].charCodeAt(0) !== 0xFFFD) { e[D[155][j]] = 39680 + j; d[39680 + j] = D[155][j];}\nD[156] = \"������������������������������������������������砝破砷砥砭砠砟砲祕祐�������祠祟祖神祝祗祚秤秣秧租秦秩秘窄窈站笆笑粉紡紗紋紊素索������純紐紕級紜納紙紛缺罟羔翅翁耆耄耘耕耙耗耽耿胱脂胰脅胭�����胴脆胸胳脈能脊胼胯臭臬舀舐航舫舨般芻茫荒荔荊茸荐草茵茴荏茲茹茶茗荀茱茨荃虔蚊蚪蚓蚤蚩蚌蚣蚜衰衷袁袂衽衹記訐討訌訕訊託訓訖訏訑豈豺豹財貢起躬軒軔軏辱送逆迷退迺迴逃追逅迸邕郡郝郢酒配酌釘針釗釜釙閃院陣陡陛陝除陘陞隻飢馬骨高鬥鬲鬼乾偺偽停假偃偌做偉健偶偎偕偵��\".split(\"\");\nfor(j = 0; j != D[156].length; ++j) if(D[156][j].charCodeAt(0) !== 0xFFFD) { e[D[156][j]] = 39936 + j; d[39936 + j] = D[156][j];}\nD[157] = \"������������������������������������������������側偷偏倏偯偭兜冕凰剪�������副勒務勘動匐匏匙匿區匾參曼商啪啦啄啞啡啃啊唱啖問啕唯������啤唸售啜唬啣唳啁啗圈國圉域堅堊堆埠埤基堂堵執培夠奢娶�����婁婉婦婪婀娼婢婚婆婊孰寇寅寄寂宿密尉專將屠屜屝崇崆崎崛崖崢崑崩崔崙崤崧崗巢常帶帳帷康庸庶庵庾張強彗彬彩彫得徙從徘御徠徜恿患悉悠您惋悴惦悽情悻悵惜悼惘惕惆惟悸惚惇戚戛扈掠控捲掖探接捷捧掘措捱掩掉掃掛捫推掄授掙採掬排掏掀捻捩捨捺敝敖救教敗啟敏敘敕敔斜斛斬族��\".split(\"\");\nfor(j = 0; j != D[157].length; ++j) if(D[157][j].charCodeAt(0) !== 0xFFFD) { e[D[157][j]] = 40192 + j; d[40192 + j] = D[157][j];}\nD[158] = \"������������������������������������������������旋旌旎晝晚晤晨晦晞曹�������勗望梁梯梢梓梵桿桶梱梧梗械梃棄梭梆梅梔條梨梟梡梂欲殺������毫毬氫涎涼淳淙液淡淌淤添淺清淇淋涯淑涮淞淹涸混淵淅淒�����渚涵淚淫淘淪深淮淨淆淄涪淬涿淦烹焉焊烽烯爽牽犁猜猛猖猓猙率琅琊球理現琍瓠瓶瓷甜產略畦畢異疏痔痕疵痊痍皎盔盒盛眷眾眼眶眸眺硫硃硎祥票祭移窒窕笠笨笛第符笙笞笮粒粗粕絆絃統紮紹紼絀細紳組累終紲紱缽羞羚翌翎習耜聊聆脯脖脣脫脩脰脤舂舵舷舶船莎莞莘荸莢莖莽莫莒莊莓��\".split(\"\");\nfor(j = 0; j != D[158].length; ++j) if(D[158][j].charCodeAt(0) !== 0xFFFD) { e[D[158][j]] = 40448 + j; d[40448 + j] = D[158][j];}\nD[159] = \"������������������������������������������������莉莠荷荻荼莆莧處彪蛇�������蛀蚶蛄蚵蛆蛋蚱蚯蛉術袞袈被袒袖袍袋覓規訪訝訣訥許設訟������訛訢豉豚販責貫貨貪貧赧赦趾趺軛軟這逍通逗連速逝逐逕逞�����造透逢逖逛途部郭都酗野釵釦釣釧釭釩閉陪陵陳陸陰陴陶陷陬雀雪雩章竟頂頃魚鳥鹵鹿麥麻傢傍傅備傑傀傖傘傚最凱割剴創剩勞勝勛博厥啻喀喧啼喊喝喘喂喜喪喔喇喋喃喳單喟唾喲喚喻喬喱啾喉喫喙圍堯堪場堤堰報堡堝堠壹壺奠婷媚婿媒媛媧孳孱寒富寓寐尊尋就嵌嵐崴嵇巽幅帽幀幃幾廊��\".split(\"\");\nfor(j = 0; j != D[159].length; ++j) if(D[159][j].charCodeAt(0) !== 0xFFFD) { e[D[159][j]] = 40704 + j; d[40704 + j] = D[159][j];}\nD[160] = \"������������������������������������������������廁廂廄弼彭復循徨惑惡�������悲悶惠愜愣惺愕惰惻惴慨惱愎惶愉愀愒戟扉掣掌描揀揩揉揆������揍插揣提握揖揭揮捶援揪換摒揚揹敞敦敢散斑斐斯普晰晴晶�����景暑智晾晷曾替期朝棺棕棠棘棗椅棟棵森棧棹棒棲棣棋棍植椒椎棉棚楮棻款欺欽殘殖殼毯氮氯氬港游湔渡渲湧湊渠渥渣減湛湘渤湖湮渭渦湯渴湍渺測湃渝渾滋溉渙湎湣湄湲湩湟焙焚焦焰無然煮焜牌犄犀猶猥猴猩琺琪琳琢琥琵琶琴琯琛琦琨甥甦畫番痢痛痣痙痘痞痠登發皖皓皴盜睏短硝硬硯��\".split(\"\");\nfor(j = 0; j != D[160].length; ++j) if(D[160][j].charCodeAt(0) !== 0xFFFD) { e[D[160][j]] = 40960 + j; d[40960 + j] = D[160][j];}\nD[161] = \"������������������������������������������������稍稈程稅稀窘窗窖童竣�������等策筆筐筒答筍筋筏筑粟粥絞結絨絕紫絮絲絡給絢絰絳善翔������翕耋聒肅腕腔腋腑腎脹腆脾腌腓腴舒舜菩萃菸萍菠菅萋菁華�����菱菴著萊菰萌菌菽菲菊萸萎萄菜萇菔菟虛蛟蛙蛭蛔蛛蛤蛐蛞街裁裂袱覃視註詠評詞証詁詔詛詐詆訴診訶詖象貂貯貼貳貽賁費賀貴買貶貿貸越超趁跎距跋跚跑跌跛跆軻軸軼辜逮逵週逸進逶鄂郵鄉郾酣酥量鈔鈕鈣鈉鈞鈍鈐鈇鈑閔閏開閑間閒閎隊階隋陽隅隆隍陲隄雁雅雄集雇雯雲韌項順須飧飪��\".split(\"\");\nfor(j = 0; j != D[161].length; ++j) if(D[161][j].charCodeAt(0) !== 0xFFFD) { e[D[161][j]] = 41216 + j; d[41216 + j] = D[161][j];}\nD[162] = \"������������������������������������������������飯飩飲飭馮馭黃黍黑亂�������傭債傲傳僅傾催傷傻傯僇剿剷剽募勦勤勢勣匯嗟嗨嗓嗦嗎嗜������嗇嗑嗣嗤嗯嗚嗡嗅嗆嗥嗉園圓塞塑塘塗塚塔填塌塭塊塢塒塋�����奧嫁嫉嫌媾媽媼媳嫂媲嵩嵯幌幹廉廈弒彙徬微愚意慈感想愛惹愁愈慎慌慄慍愾愴愧愍愆愷戡戢搓搾搞搪搭搽搬搏搜搔損搶搖搗搆敬斟新暗暉暇暈暖暄暘暍會榔業楚楷楠楔極椰概楊楨楫楞楓楹榆楝楣楛歇歲毀殿毓毽溢溯滓溶滂源溝滇滅溥溘溼溺溫滑準溜滄滔溪溧溴煎煙煩煤煉照煜煬煦煌煥��\".split(\"\");\nfor(j = 0; j != D[162].length; ++j) if(D[162][j].charCodeAt(0) !== 0xFFFD) { e[D[162][j]] = 41472 + j; d[41472 + j] = D[162][j];}\nD[163] = \"������������������������������������������������煞煆煨煖爺牒猷獅猿猾�������瑯瑚瑕瑟瑞瑁琿瑙瑛瑜當畸瘀痰瘁痲痱痺痿痴痳盞盟睛睫睦������睞督睹睪睬睜睥睨睢矮碎碰碗碘碌碉硼碑碓硿祺祿禁萬禽稜�����稚稠稔稟稞窟窠筷節筠筮筧粱粳粵經絹綑綁綏絛置罩罪署義羨群聖聘肆肄腱腰腸腥腮腳腫腹腺腦舅艇蒂葷落萱葵葦葫葉葬葛萼萵葡董葩葭葆虞虜號蛹蜓蜈蜇蜀蛾蛻蜂蜃蜆蜊衙裟裔裙補裘裝裡裊裕裒覜解詫該詳試詩詰誇詼詣誠話誅詭詢詮詬詹詻訾詨豢貊貉賊資賈賄貲賃賂賅跡跟跨路跳跺跪��\".split(\"\");\nfor(j = 0; j != D[163].length; ++j) if(D[163][j].charCodeAt(0) !== 0xFFFD) { e[D[163][j]] = 41728 + j; d[41728 + j] = D[163][j];}\nD[164] = \"������������������������������������������������跤跦躲較載軾輊辟農運�������遊道遂達逼違遐遇遏過遍遑逾遁鄒鄗酬酪酩釉鈷鉗鈸鈽鉀鈾������鉛鉋鉤鉑鈴鉉鉍鉅鈹鈿鉚閘隘隔隕雍雋雉雊雷電雹零靖靴靶�����預頑頓頊頒頌飼飴飽飾馳馱馴髡鳩麂鼎鼓鼠僧僮僥僖僭僚僕像僑僱僎僩兢凳劃劂匱厭嗾嘀嘛嘗嗽嘔嘆嘉嘍嘎嗷嘖嘟嘈嘐嗶團圖塵塾境墓墊塹墅塽壽夥夢夤奪奩嫡嫦嫩嫗嫖嫘嫣孵寞寧寡寥實寨寢寤察對屢嶄嶇幛幣幕幗幔廓廖弊彆彰徹慇愿態慷慢慣慟慚慘慵截撇摘摔撤摸摟摺摑摧搴摭摻敲斡��\".split(\"\");\nfor(j = 0; j != D[164].length; ++j) if(D[164][j].charCodeAt(0) !== 0xFFFD) { e[D[164][j]] = 41984 + j; d[41984 + j] = D[164][j];}\nD[165] = \"������������������������������������������������旗旖暢暨暝榜榨榕槁榮�������槓構榛榷榻榫榴槐槍榭槌榦槃榣歉歌氳漳演滾漓滴漩漾漠漬������漏漂漢滿滯漆漱漸漲漣漕漫漯澈漪滬漁滲滌滷熔熙煽熊熄熒�����爾犒犖獄獐瑤瑣瑪瑰瑭甄疑瘧瘍瘋瘉瘓盡監瞄睽睿睡磁碟碧碳碩碣禎福禍種稱窪窩竭端管箕箋筵算箝箔箏箸箇箄粹粽精綻綰綜綽綾綠緊綴網綱綺綢綿綵綸維緒緇綬罰翠翡翟聞聚肇腐膀膏膈膊腿膂臧臺與舔舞艋蓉蒿蓆蓄蒙蒞蒲蒜蓋蒸蓀蓓蒐蒼蓑蓊蜿蜜蜻蜢蜥蜴蜘蝕蜷蜩裳褂裴裹裸製裨褚裯��\".split(\"\");\nfor(j = 0; j != D[165].length; ++j) if(D[165][j].charCodeAt(0) !== 0xFFFD) { e[D[165][j]] = 42240 + j; d[42240 + j] = D[165][j];}\nD[166] = \"������������������������������������������������誦誌語誣認誡誓誤說誥�������誨誘誑誚誧豪貍貌賓賑賒赫趙趕跼輔輒輕輓辣遠遘遜遣遙遞������遢遝遛鄙鄘鄞酵酸酷酴鉸銬銀銅銘銖鉻銓銜銨鉼銑閡閨閩閣�����閥閤隙障際雌雒需靼鞅韶頗領颯颱餃餅餌餉駁骯骰髦魁魂鳴鳶鳳麼鼻齊億儀僻僵價儂儈儉儅凜劇劈劉劍劊勰厲嘮嘻嘹嘲嘿嘴嘩噓噎噗噴嘶嘯嘰墀墟增墳墜墮墩墦奭嬉嫻嬋嫵嬌嬈寮寬審寫層履嶝嶔幢幟幡廢廚廟廝廣廠彈影德徵慶慧慮慝慕憂慼慰慫慾憧憐憫憎憬憚憤憔憮戮摩摯摹撞撲撈撐撰��\".split(\"\");\nfor(j = 0; j != D[166].length; ++j) if(D[166][j].charCodeAt(0) !== 0xFFFD) { e[D[166][j]] = 42496 + j; d[42496 + j] = D[166][j];}\nD[167] = \"������������������������������������������������撥撓撕撩撒撮播撫撚撬�������撙撢撳敵敷數暮暫暴暱樣樟槨樁樞標槽模樓樊槳樂樅槭樑歐������歎殤毅毆漿潼澄潑潦潔澆潭潛潸潮澎潺潰潤澗潘滕潯潠潟熟�����熬熱熨牖犛獎獗瑩璋璃瑾璀畿瘠瘩瘟瘤瘦瘡瘢皚皺盤瞎瞇瞌瞑瞋磋磅確磊碾磕碼磐稿稼穀稽稷稻窯窮箭箱範箴篆篇篁箠篌糊締練緯緻緘緬緝編緣線緞緩綞緙緲緹罵罷羯翩耦膛膜膝膠膚膘蔗蔽蔚蓮蔬蔭蔓蔑蔣蔡蔔蓬蔥蓿蔆螂蝴蝶蝠蝦蝸蝨蝙蝗蝌蝓衛衝褐複褒褓褕褊誼諒談諄誕請諸課諉諂調��\".split(\"\");\nfor(j = 0; j != D[167].length; ++j) if(D[167][j].charCodeAt(0) !== 0xFFFD) { e[D[167][j]] = 42752 + j; d[42752 + j] = D[167][j];}\nD[168] = \"������������������������������������������������誰論諍誶誹諛豌豎豬賠�������賞賦賤賬賭賢賣賜質賡赭趟趣踫踐踝踢踏踩踟踡踞躺輝輛輟������輩輦輪輜輞輥適遮遨遭遷鄰鄭鄧鄱醇醉醋醃鋅銻銷鋪鋤鋁銳�����銼鋒鋇鋰銲閭閱霄霆震霉靠鞍鞋鞏頡頫頜颳養餓餒餘駝駐駟駛駑駕駒駙骷髮髯鬧魅魄魷魯鴆鴉鴃麩麾黎墨齒儒儘儔儐儕冀冪凝劑劓勳噙噫噹噩噤噸噪器噥噱噯噬噢噶壁墾壇壅奮嬝嬴學寰導彊憲憑憩憊懍憶憾懊懈戰擅擁擋撻撼據擄擇擂操撿擒擔撾整曆曉暹曄曇暸樽樸樺橙橫橘樹橄橢橡橋橇��\".split(\"\");\nfor(j = 0; j != D[168].length; ++j) if(D[168][j].charCodeAt(0) !== 0xFFFD) { e[D[168][j]] = 43008 + j; d[43008 + j] = D[168][j];}\nD[169] = \"������������������������������������������������樵機橈歙歷氅濂澱澡濃�������澤濁澧澳激澹澶澦澠澴熾燉燐燒燈燕熹燎燙燜燃燄獨璜璣璘������璟璞瓢甌甍瘴瘸瘺盧盥瞠瞞瞟瞥磨磚磬磧禦積穎穆穌穋窺篙�����簑築篤篛篡篩篦糕糖縊縑縈縛縣縞縝縉縐罹羲翰翱翮耨膳膩膨臻興艘艙蕊蕙蕈蕨蕩蕃蕉蕭蕪蕞螃螟螞螢融衡褪褲褥褫褡親覦諦諺諫諱謀諜諧諮諾謁謂諷諭諳諶諼豫豭貓賴蹄踱踴蹂踹踵輻輯輸輳辨辦遵遴選遲遼遺鄴醒錠錶鋸錳錯錢鋼錫錄錚錐錦錡錕錮錙閻隧隨險雕霎霑霖霍霓霏靛靜靦鞘頰��\".split(\"\");\nfor(j = 0; j != D[169].length; ++j) if(D[169][j].charCodeAt(0) !== 0xFFFD) { e[D[169][j]] = 43264 + j; d[43264 + j] = D[169][j];}\nD[170] = \"������������������������������������������������頸頻頷頭頹頤餐館餞餛�������餡餚駭駢駱骸骼髻髭鬨鮑鴕鴣鴦鴨鴒鴛默黔龍龜優償儡儲勵������嚎嚀嚐嚅嚇嚏壕壓壑壎嬰嬪嬤孺尷屨嶼嶺嶽嶸幫彌徽應懂懇�����懦懋戲戴擎擊擘擠擰擦擬擱擢擭斂斃曙曖檀檔檄檢檜櫛檣橾檗檐檠歜殮毚氈濘濱濟濠濛濤濫濯澀濬濡濩濕濮濰燧營燮燦燥燭燬燴燠爵牆獰獲璩環璦璨癆療癌盪瞳瞪瞰瞬瞧瞭矯磷磺磴磯礁禧禪穗窿簇簍篾篷簌篠糠糜糞糢糟糙糝縮績繆縷縲繃縫總縱繅繁縴縹繈縵縿縯罄翳翼聱聲聰聯聳臆臃膺��\".split(\"\");\nfor(j = 0; j != D[170].length; ++j) if(D[170][j].charCodeAt(0) !== 0xFFFD) { e[D[170][j]] = 43520 + j; d[43520 + j] = D[170][j];}\nD[171] = \"������������������������������������������������臂臀膿膽臉膾臨舉艱薪�������薄蕾薜薑薔薯薛薇薨薊薦虧蟀蟑螳蟒蟆螫螻螺蟈蟋褻褶襄褸������褽覬謎謗謙講謊謠謝謄謐豁谿豳賺賽購賸賻趨蹉蹋蹈蹊轄輾�����轂轅輿避遽還邁邂邀鄹醣醞醜鍍鎂錨鍵鍊鍥鍋錘鍾鍬鍛鍰鍚鍔闊闋闌闈闆隱隸雖霜霞鞠韓顆颶餵騁駿鮮鮫鮪鮭鴻鴿麋黏點黜黝黛鼾齋叢嚕嚮壙壘嬸彝懣戳擴擲擾攆擺擻擷斷曜朦檳檬櫃檻檸櫂檮檯歟歸殯瀉瀋濾瀆濺瀑瀏燻燼燾燸獷獵璧璿甕癖癘癒瞽瞿瞻瞼礎禮穡穢穠竄竅簫簧簪簞簣簡糧織��\".split(\"\");\nfor(j = 0; j != D[171].length; ++j) if(D[171][j].charCodeAt(0) !== 0xFFFD) { e[D[171][j]] = 43776 + j; d[43776 + j] = D[171][j];}\nD[172] = \"������������������������������������������������繕繞繚繡繒繙罈翹翻職�������聶臍臏舊藏薩藍藐藉薰薺薹蟯蟬蟲蟠覆覲觴謨謹謬謫豐贅蹙������蹣蹦蹤蹟蹕軀轉轍邇邃邈醫醬釐鎔鎊鎖鎢鎳鎮鎬鎰鎘鎚鎗闔�����闖闐闕離雜雙雛雞霤鞣鞦鞭韹額顏題顎顓颺餾餿餽餮馥騎髁鬃鬆魏魎魍鯊鯉鯽鯈鯀鵑鵝鵠黠鼕鼬儳嚥嚨壞壟壢寵龐廬懲懷懶懵攀攏曠曝櫥櫝櫚櫓瀛瀟瀨瀚瀝瀕瀘爆爍牘犢獸獺璽瓊瓣疇疆癟癡矇礙禱穫穩簾簿簸簽簷籀繫繭繹繩繪繳羅羶羹羸臘藩藝藪藕藤藥藷蟻蠅蠍蟹蟾襠襟襖襞譁譜識證譚��\".split(\"\");\nfor(j = 0; j != D[172].length; ++j) if(D[172][j].charCodeAt(0) !== 0xFFFD) { e[D[172][j]] = 44032 + j; d[44032 + j] = D[172][j];}\nD[173] = \"������������������������������������������������譎譏譆譙贈贊蹼蹲躇蹶�������蹬蹺蹴轔轎辭邊邋醱醮鏡鏑鏟鏃鏈鏜鏝鏖鏢鏍鏘鏤鏗鏨關隴������難霪霧靡韜韻類願顛颼饅饉騖騙鬍鯨鯧鯖鯛鶉鵡鵲鵪鵬麒麗�����麓麴勸嚷嚶嚴嚼壤孀孃孽寶巉懸懺攘攔攙曦朧櫬瀾瀰瀲爐獻瓏癢癥礦礪礬礫竇競籌籃籍糯糰辮繽繼纂罌耀臚艦藻藹蘑藺蘆蘋蘇蘊蠔蠕襤覺觸議譬警譯譟譫贏贍躉躁躅躂醴釋鐘鐃鏽闡霰飄饒饑馨騫騰騷騵鰓鰍鹹麵黨鼯齟齣齡儷儸囁囀囂夔屬巍懼懾攝攜斕曩櫻欄櫺殲灌爛犧瓖瓔癩矓籐纏續羼��\".split(\"\");\nfor(j = 0; j != D[173].length; ++j) if(D[173][j].charCodeAt(0) !== 0xFFFD) { e[D[173][j]] = 44288 + j; d[44288 + j] = D[173][j];}\nD[174] = \"������������������������������������������������蘗蘭蘚蠣蠢蠡蠟襪襬覽�������譴護譽贓躊躍躋轟辯醺鐮鐳鐵鐺鐸鐲鐫闢霸霹露響顧顥饗驅������驃驀騾髏魔魑鰭鰥鶯鶴鷂鶸麝黯鼙齜齦齧儼儻囈囊囉孿巔巒�����彎懿攤權歡灑灘玀瓤疊癮癬禳籠籟聾聽臟襲襯觼讀贖贗躑躓轡酈鑄鑑鑒霽霾韃韁顫饕驕驍髒鬚鱉鰱鰾鰻鷓鷗鼴齬齪龔囌巖戀攣攫攪曬欐瓚竊籤籣籥纓纖纔臢蘸蘿蠱變邐邏鑣鑠鑤靨顯饜驚驛驗髓體髑鱔鱗鱖鷥麟黴囑壩攬灞癱癲矗罐羈蠶蠹衢讓讒讖艷贛釀鑪靂靈靄韆顰驟鬢魘鱟鷹鷺鹼鹽鼇齷��\".split(\"\");\nfor(j = 0; j != D[174].length; ++j) if(D[174][j].charCodeAt(0) !== 0xFFFD) { e[D[174][j]] = 44544 + j; d[44544 + j] = D[174][j];}\nD[175] = \"������������������������������������������������齲廳欖灣籬籮蠻觀躡釁�������鑲鑰顱饞髖鬣黌灤矚讚鑷韉驢驥纜讜躪釅鑽鑾鑼鱷鱸黷豔鑿������鸚爨驪鬱鸛鸞籲ソゾタダチヂッツヅテデトドナニヌネノハ�����バパヒビピフブプヘベペホボポマミムメモャヤュユョヨラリルレロヮワヰヱヲンヴヵヶАБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдеёжзийклмнопрстуфхцчшщъыьэюя⇧↸↹��䅚ｸ刂�冈�������������\".split(\"\");\nfor(j = 0; j != D[175].length; ++j) if(D[175][j].charCodeAt(0) !== 0xFFFD) { e[D[175][j]] = 44800 + j; d[44800 + j] = D[175][j];}\nD[176] = \"������������������������������������������������乂乜凵匚厂万丌乇亍囗�������屮彳丏冇与丮亓仂仉仈冘勼卬厹圠夃夬尐巿旡殳毌气爿丱丼������仨仜仩仡仝仚刌刉匜卌圢圣夗夯宁宄尒尻屴屳帄庀庂忉戉扐�����氕氶汃氿氻犮犰玊禸肊阞伎优伬仵伔仱伀价伈伝伂伅伢伓伄仴伒冱刓刐劦匢匟卍厊吇囡囟圮圪圴夼妀奼妅奻奾奷奿孖尕尥屼屺屻屾巟幵庄异弚彴忕忔忏扜扞扤扡扦扢扙扠扚扥攷旯旮朾朹朸朻机朿朼朳氘汆汒汜汏汊汔汋汌灱牞犴犵玎甪癿穵网艸艼芀艽艿虍襾邙邗邘邛邔阢阤阠阣佖伻佢佉体��\".split(\"\");\nfor(j = 0; j != D[176].length; ++j) if(D[176][j].charCodeAt(0) !== 0xFFFD) { e[D[176][j]] = 45056 + j; d[45056 + j] = D[176][j];}\nD[177] = \"������������������������������������������������佤伾佧佒佟佁佘伭伳伿�������佡冏冹刜刞刡劭劮匉卣卲厎厏吰吷吪呔呅吙吜吥吘吽呏呁吨������吤呇囮囧囥坁坅坌坉坋坒夆奀妦妘妠妗妎妢妐妏妧妡宎宒尨�����尪岍岏岈岋岉岒岊岆岓岕巠帊帎庋庉庌庈庍弅弝彸彶忒忑忐忭忨忮忳忡忤忣忺忯忷忻怀忴戺抃抌抎抏抔抇扱扻扺扰抁抈扷扽扲扴旰旴旳旲旵杅杇杙杕杌杈杝杍杚杋毐氙氚汸汧汫沄沋沏汱汯汩沚汭沇沕沜汦汳汥汻沎灴灺牣犿犽狃狆狁犺狅玕玗玓玔玒町甹疔疕皁礽耴肕肙肐肒肜芐芏芅芎芑芓��\".split(\"\");\nfor(j = 0; j != D[177].length; ++j) if(D[177][j].charCodeAt(0) !== 0xFFFD) { e[D[177][j]] = 45312 + j; d[45312 + j] = D[177][j];}\nD[178] = \"������������������������������������������������芊芃芄豸迉辿邟邡邥邞�������邧邠阰阨阯阭丳侘佼侅佽侀侇佶佴侉侄佷佌侗佪侚佹侁佸侐������侜侔侞侒侂侕佫佮冞冼冾刵刲刳剆刱劼匊匋匼厒厔咇呿咁咑�����咂咈呫呺呾呥呬呴呦咍呯呡呠咘呣呧呤囷囹坯坲坭坫坱坰坶垀坵坻坳坴坢坨坽夌奅妵妺姏姎妲姌姁妶妼姃姖妱妽姀姈妴姇孢孥宓宕屄屇岮岤岠岵岯岨岬岟岣岭岢岪岧岝岥岶岰岦帗帔帙弨弢弣弤彔徂彾彽忞忥怭怦怙怲怋怴怊怗怳怚怞怬怢怍怐怮怓怑怌怉怜戔戽抭抴拑抾抪抶拊抮抳抯抻抩抰��\".split(\"\");\nfor(j = 0; j != D[178].length; ++j) if(D[178][j].charCodeAt(0) !== 0xFFFD) { e[D[178][j]] = 45568 + j; d[45568 + j] = D[178][j];}\nD[179] = \"������������������������������������������������抸攽斨斻昉旼昄昒昈旻�������昃昋昍昅旽昑昐曶朊枅杬枎枒杶杻枘枆构杴枍枌杺枟枑枙枃������杽极杸杹枔欥殀歾毞氝沓泬泫泮泙沶泔沭泧沷泐泂沺泃泆泭�����泲泒泝沴沊沝沀泞泀洰泍泇沰泹泏泩泑炔炘炅炓炆炄炑炖炂炚炃牪狖狋狘狉狜狒狔狚狌狑玤玡玭玦玢玠玬玝瓝瓨甿畀甾疌疘皯盳盱盰盵矸矼矹矻矺矷祂礿秅穸穻竻籵糽耵肏肮肣肸肵肭舠芠苀芫芚芘芛芵芧芮芼芞芺芴芨芡芩苂芤苃芶芢虰虯虭虮豖迒迋迓迍迖迕迗邲邴邯邳邰阹阽阼阺陃俍俅��\".split(\"\");\nfor(j = 0; j != D[179].length; ++j) if(D[179][j].charCodeAt(0) !== 0xFFFD) { e[D[179][j]] = 45824 + j; d[45824 + j] = D[179][j];}\nD[180] = \"������������������������������������������������俓侲俉俋俁俔俜俙侻侳�������俛俇俖侺俀侹俬剄剉勀勂匽卼厗厖厙厘咺咡咭咥哏哃茍咷咮������哖咶哅哆咠呰咼咢咾呲哞咰垵垞垟垤垌垗垝垛垔垘垏垙垥垚�����垕壴复奓姡姞姮娀姱姝姺姽姼姶姤姲姷姛姩姳姵姠姾姴姭宨屌峐峘峌峗峋峛峞峚峉峇峊峖峓峔峏峈峆峎峟峸巹帡帢帣帠帤庰庤庢庛庣庥弇弮彖徆怷怹恔恲恞恅恓恇恉恛恌恀恂恟怤恄恘恦恮扂扃拏挍挋拵挎挃拫拹挏挌拸拶挀挓挔拺挕拻拰敁敃斪斿昶昡昲昵昜昦昢昳昫昺昝昴昹昮朏朐柁柲柈��\".split(\"\");\nfor(j = 0; j != D[180].length; ++j) if(D[180][j].charCodeAt(0) !== 0xFFFD) { e[D[180][j]] = 46080 + j; d[46080 + j] = D[180][j];}\nD[181] = \"������������������������������������������������枺柜枻柸柘柀枷柅柫柤�������柟枵柍枳柷柶柮柣柂枹柎柧柰枲柼柆柭柌枮柦柛柺柉柊柃柪������柋欨殂殄殶毖毘毠氠氡洨洴洭洟洼洿洒洊泚洳洄洙洺洚洑洀�����洝浂洁洘洷洃洏浀洇洠洬洈洢洉洐炷炟炾炱炰炡炴炵炩牁牉牊牬牰牳牮狊狤狨狫狟狪狦狣玅珌珂珈珅玹玶玵玴珫玿珇玾珃珆玸珋瓬瓮甮畇畈疧疪癹盄眈眃眄眅眊盷盻盺矧矨砆砑砒砅砐砏砎砉砃砓祊祌祋祅祄秕种秏秖秎窀穾竑笀笁籺籸籹籿粀粁紃紈紁罘羑羍羾耇耎耏耔耷胘胇胠胑胈胂胐胅��\".split(\"\");\nfor(j = 0; j != D[181].length; ++j) if(D[181][j].charCodeAt(0) !== 0xFFFD) { e[D[181][j]] = 46336 + j; d[46336 + j] = D[181][j];}\nD[182] = \"������������������������������������������������胣胙胜胊胕胉胏胗胦胍�������臿舡芔苙苾苹茇苨茀苕茺苫苖苴苬苡苲苵茌苻苶苰苪苤苠苺������苳苭虷虴虼虳衁衎衧衪衩觓訄訇赲迣迡迮迠郱邽邿郕郅邾郇�����郋郈釔釓陔陏陑陓陊陎倞倅倇倓倢倰倛俵俴倳倷倬俶俷倗倜倠倧倵倯倱倎党冔冓凊凄凅凈凎剡剚剒剞剟剕剢勍匎厞唦哢唗唒哧哳哤唚哿唄唈哫唑唅哱唊哻哷哸哠唎唃唋圁圂埌堲埕埒垺埆垽垼垸垶垿埇埐垹埁夎奊娙娖娭娮娕娏娗娊娞娳孬宧宭宬尃屖屔峬峿峮峱峷崀峹帩帨庨庮庪庬弳弰彧恝��\".split(\"\");\nfor(j = 0; j != D[182].length; ++j) if(D[182][j].charCodeAt(0) !== 0xFFFD) { e[D[182][j]] = 46592 + j; d[46592 + j] = D[182][j];}\nD[183] = \"������������������������������������������������恚恧恁悢悈悀悒悁悝悃�������悕悛悗悇悜悎戙扆拲挐捖挬捄捅挶捃揤挹捋捊挼挩捁挴捘捔������捙挭捇挳捚捑挸捗捀捈敊敆旆旃旄旂晊晟晇晑朒朓栟栚桉栲�����栳栻桋桏栖栱栜栵栫栭栯桎桄栴栝栒栔栦栨栮桍栺栥栠欬欯欭欱欴歭肂殈毦毤毨毣毢毧氥浺浣浤浶洍浡涒浘浢浭浯涑涍淯浿涆浞浧浠涗浰浼浟涂涘洯浨涋浾涀涄洖涃浻浽浵涐烜烓烑烝烋缹烢烗烒烞烠烔烍烅烆烇烚烎烡牂牸牷牶猀狺狴狾狶狳狻猁珓珙珥珖玼珧珣珩珜珒珛珔珝珚珗珘珨瓞瓟��\".split(\"\");\nfor(j = 0; j != D[183].length; ++j) if(D[183][j].charCodeAt(0) !== 0xFFFD) { e[D[183][j]] = 46848 + j; d[46848 + j] = D[183][j];}\nD[184] = \"������������������������������������������������瓴瓵甡畛畟疰痁疻痄痀�������疿疶疺皊盉眝眛眐眓眒眣眑眕眙眚眢眧砣砬砢砵砯砨砮砫砡������砩砳砪砱祔祛祏祜祓祒祑秫秬秠秮秭秪秜秞秝窆窉窅窋窌窊�����窇竘笐笄笓笅笏笈笊笎笉笒粄粑粊粌粈粍粅紞紝紑紎紘紖紓紟紒紏紌罜罡罞罠罝罛羖羒翃翂翀耖耾耹胺胲胹胵脁胻脀舁舯舥茳茭荄茙荑茥荖茿荁茦茜茢荂荎茛茪茈茼荍茖茤茠茷茯茩荇荅荌荓茞茬荋茧荈虓虒蚢蚨蚖蚍蚑蚞蚇蚗蚆蚋蚚蚅蚥蚙蚡蚧蚕蚘蚎蚝蚐蚔衃衄衭衵衶衲袀衱衿衯袃衾衴衼��\".split(\"\");\nfor(j = 0; j != D[184].length; ++j) if(D[184][j].charCodeAt(0) !== 0xFFFD) { e[D[184][j]] = 47104 + j; d[47104 + j] = D[184][j];}\nD[185] = \"������������������������������������������������訒豇豗豻貤貣赶赸趵趷�������趶軑軓迾迵适迿迻逄迼迶郖郠郙郚郣郟郥郘郛郗郜郤酐酎酏������釕釢釚陜陟隼飣髟鬯乿偰偪偡偞偠偓偋偝偲偈偍偁偛偊偢倕�����偅偟偩偫偣偤偆偀偮偳偗偑凐剫剭剬剮勖勓匭厜啵啶唼啍啐唴唪啑啢唶唵唰啒啅唌唲啥啎唹啈唭唻啀啋圊圇埻堔埢埶埜埴堀埭埽堈埸堋埳埏堇埮埣埲埥埬埡堎埼堐埧堁堌埱埩埰堍堄奜婠婘婕婧婞娸娵婭婐婟婥婬婓婤婗婃婝婒婄婛婈媎娾婍娹婌婰婩婇婑婖婂婜孲孮寁寀屙崞崋崝崚崠崌崨崍��\".split(\"\");\nfor(j = 0; j != D[185].length; ++j) if(D[185][j].charCodeAt(0) !== 0xFFFD) { e[D[185][j]] = 47360 + j; d[47360 + j] = D[185][j];}\nD[186] = \"������������������������������������������������崦崥崏崰崒崣崟崮帾帴�������庱庴庹庲庳弶弸徛徖徟悊悐悆悾悰悺惓惔惏惤惙惝惈悱惛悷������惊悿惃惍惀挲捥掊掂捽掽掞掭掝掗掫掎捯掇掐据掯捵掜捭掮�����捼掤挻掟捸掅掁掑掍捰敓旍晥晡晛晙晜晢朘桹梇梐梜桭桮梮梫楖桯梣梬梩桵桴梲梏桷梒桼桫桲梪梀桱桾梛梖梋梠梉梤桸桻梑梌梊桽欶欳欷欸殑殏殍殎殌氪淀涫涴涳湴涬淩淢涷淶淔渀淈淠淟淖涾淥淜淝淛淴淊涽淭淰涺淕淂淏淉淐淲淓淽淗淍淣涻烺焍烷焗烴焌烰焄烳焐烼烿焆焓焀烸烶焋焂焎��\".split(\"\");\nfor(j = 0; j != D[186].length; ++j) if(D[186][j].charCodeAt(0) !== 0xFFFD) { e[D[186][j]] = 47616 + j; d[47616 + j] = D[186][j];}\nD[187] = \"������������������������������������������������牾牻牼牿猝猗猇猑猘猊�������猈狿猏猞玈珶珸珵琄琁珽琇琀珺珼珿琌琋珴琈畤畣痎痒痏痋������痌痑痐皏皉盓眹眯眭眱眲眴眳眽眥眻眵硈硒硉硍硊硌砦硅硐�����祤祧祩祪祣祫祡离秺秸秶秷窏窔窐笵笻笴笥笰笢笤笳笘笪笝笱笫笭笯笲笸笚笣粔粘粖粣紵紽紸紶紺絅紬紩絁絇紾紿絊紻紨罣羕羜羝羛翊翋翍翐翑翇翏翉耟耞耛聇聃聈脘脥脙脛脭脟脬脞脡脕脧脝脢舑舸舳舺舴舲艴莐莣莨莍荺荳莤荴莏莁莕莙荵莔莩荽莃莌莝莛莪莋荾莥莯莈莗莰荿莦莇莮荶虙��\".split(\"\");\nfor(j = 0; j != D[187].length; ++j) if(D[187][j].charCodeAt(0) !== 0xFFFD) { e[D[187][j]] = 47872 + j; d[47872 + j] = D[187][j];}\nD[188] = \"������������������������������������������������虖蚿蚷蛂蛁蛅蚺蚰蛈蚹�������蚳蚸蛌蚴蚻蚼蛃蚽蚾衒袉袕袨袢袪袚袑袡袟袘袧袙袛袗袤袬������袌袓袎覂觖觙觕訰訧訬訞谹谻豜豝豽貥赽赻赹趼跂趹趿跁軘�����軞軝軜軗軠軡逤逋逑逜逌逡郯郪郰郴郲郳郔郫郬郩酖酘酚酓酕釬釴釱釳釸釤釹釪釫釷釨釮镺閆閈陼陭陫陱陯隿靪頄飥馗傛傕傔傞傋傣傃傌傎傝偨傜傒傂傇兟凔匒匑厤厧喑喨喥喭啷噅喢喓喈喏喵喁喣喒喤啽喌喦啿喕喡喎圌堩堷堙堞堧堣堨埵塈堥堜堛堳堿堶堮堹堸堭堬堻奡媯媔媟婺媢媞婸媦��\".split(\"\");\nfor(j = 0; j != D[188].length; ++j) if(D[188][j].charCodeAt(0) !== 0xFFFD) { e[D[188][j]] = 48128 + j; d[48128 + j] = D[188][j];}\nD[189] = \"������������������������������������������������婼媥媬媕媮娷媄媊媗媃�������媋媩婻婽媌媜媏媓媝寪寍寋寔寑寊寎尌尰崷嵃嵫嵁嵋崿崵嵑������嵎嵕崳崺嵒崽崱嵙嵂崹嵉崸崼崲崶嵀嵅幄幁彘徦徥徫惉悹惌�����惢惎惄愔惲愊愖愅惵愓惸惼惾惁愃愘愝愐惿愄愋扊掔掱掰揎揥揨揯揃撝揳揊揠揶揕揲揵摡揟掾揝揜揄揘揓揂揇揌揋揈揰揗揙攲敧敪敤敜敨敥斌斝斞斮旐旒晼晬晻暀晱晹晪晲朁椌棓椄棜椪棬棪棱椏棖棷棫棤棶椓椐棳棡椇棌椈楰梴椑棯棆椔棸棐棽棼棨椋椊椗棎棈棝棞棦棴棑椆棔棩椕椥棇欹欻��\".split(\"\");\nfor(j = 0; j != D[189].length; ++j) if(D[189][j].charCodeAt(0) !== 0xFFFD) { e[D[189][j]] = 48384 + j; d[48384 + j] = D[189][j];}\nD[190] = \"������������������������������������������������欿欼殔殗殙殕殽毰毲毳�������氰淼湆湇渟湉溈渼渽湅湢渫渿湁湝湳渜渳湋湀湑渻渃渮湞湨������湜湡渱渨湠湱湫渹渢渰湓湥渧湸湤湷湕湹湒湦渵渶湚焠焞焯�����烻焮焱焣焥焢焲焟焨焺焛牋牚犈犉犆犅犋猒猋猰猢猱猳猧猲猭猦猣猵猌琮琬琰琫琖琚琡琭琱琤琣琝琩琠琲瓻甯畯畬痧痚痡痦痝痟痤痗皕皒盚睆睇睄睍睅睊睎睋睌矞矬硠硤硥硜硭硱硪确硰硩硨硞硢祴祳祲祰稂稊稃稌稄窙竦竤筊筇筄筈筌筎筀筘筅粢粞粨粡絘絯絣絓絖絧絪絏絭絜絫絒絔絩絑絟��\".split(\"\");\nfor(j = 0; j != D[190].length; ++j) if(D[190][j].charCodeAt(0) !== 0xFFFD) { e[D[190][j]] = 48640 + j; d[48640 + j] = D[190][j];}\nD[191] = \"������������������������������������������������絎缾缿罥罦羢羠羡翗聑�������聏聐胾胔腃腊腒腏腇脽腍脺臦臮臷臸臹舄舼舽舿艵茻菏菹萣������菀菨萒菧菤菼菶萐菆菈菫菣莿萁菝菥菘菿菡菋菎菖菵菉萉萏�����菞萑萆菂菳菕菺菇菑菪萓莚菃菬菮菄菻菗菢萛菛菾蛘蛢蛦蛓蛣蛚蛪蛝蛫蛜蛬蛩蛗蛨蛑衈衖衕袺裗袹袸裀袾袶袼袷袽袲褁裉覕覘覗觝觚觛詎詍訹詙詀詗詘詄詅詒詈詑詊詌詏豟貁貀貺貾貰貹貵趄趀趉跘跓跍跇跖跜跏跕跙跈跗跅軯軷軺軹軦軮軥軵軧軨軶軫軱軬軴軩逭逴逯鄆鄬鄄郿郼鄈郹郻鄁鄀��\".split(\"\");\nfor(j = 0; j != D[191].length; ++j) if(D[191][j].charCodeAt(0) !== 0xFFFD) { e[D[191][j]] = 48896 + j; d[48896 + j] = D[191][j];}\nD[192] = \"������������������������������������������������鄇鄅鄃酡酤酟酢酠鈁鈊�������鈥鈃鈚鈦鈏鈌鈀鈒釿釽鈆鈄鈧鈂鈜鈤鈙鈗鈅鈖镻閍閌閐隇陾������隈隉隃隀雂雈雃雱雰靬靰靮頇颩飫鳦黹亃亄亶傽傿僆傮僄僊�����傴僈僂傰僁傺傱僋僉傶傸凗剺剸剻剼嗃嗛嗌嗐嗋嗊嗝嗀嗔嗄嗩喿嗒喍嗏嗕嗢嗖嗈嗲嗍嗙嗂圔塓塨塤塏塍塉塯塕塎塝塙塥塛堽塣塱壼嫇嫄嫋媺媸媱媵媰媿嫈媻嫆媷嫀嫊媴媶嫍媹媐寖寘寙尟尳嵱嵣嵊嵥嵲嵬嵞嵨嵧嵢巰幏幎幊幍幋廅廌廆廋廇彀徯徭惷慉慊愫慅愶愲愮慆愯慏愩慀戠酨戣戥戤揅揱��\".split(\"\");\nfor(j = 0; j != D[192].length; ++j) if(D[192][j].charCodeAt(0) !== 0xFFFD) { e[D[192][j]] = 49152 + j; d[49152 + j] = D[192][j];}\nD[193] = \"������������������������������������������������揫搐搒搉搠搤搳摃搟搕�������搘搹搷搢搣搌搦搰搨摁搵搯搊搚摀搥搧搋揧搛搮搡搎敯斒旓������暆暌暕暐暋暊暙暔晸朠楦楟椸楎楢楱椿楅楪椹楂楗楙楺楈楉�����椵楬椳椽楥棰楸椴楩楀楯楄楶楘楁楴楌椻楋椷楜楏楑椲楒椯楻椼歆歅歃歂歈歁殛毻毼毹毷毸溛滖滈溏滀溟溓溔溠溱溹滆滒溽滁溞滉溷溰滍溦滏溲溾滃滜滘溙溒溎溍溤溡溿溳滐滊溗溮溣煇煔煒煣煠煁煝煢煲煸煪煡煂煘煃煋煰煟煐煓煄煍煚牏犍犌犑犐犎猼獂猻猺獀獊獉瑄瑊瑋瑒瑑瑗瑀瑏瑐瑎��\".split(\"\");\nfor(j = 0; j != D[193].length; ++j) if(D[193][j].charCodeAt(0) !== 0xFFFD) { e[D[193][j]] = 49408 + j; d[49408 + j] = D[193][j];}\nD[194] = \"������������������������������������������������瑂瑆瑍瑔瓡瓿瓾瓽甝畹�������畷榃痯瘏瘃痷痾痼痹痸瘐痻痶痭痵痽皙皵盝睕睟睠睒睖睚睩������睧睔睙睭矠碇碚碔碏碄碕碅碆碡碃硹碙碀碖硻祼禂祽祹稑稘�����稙稒稗稕稢稓稛稐窣窢窞竫筦筤筭筴筩筲筥筳筱筰筡筸筶筣粲粴粯綈綆綀綍絿綅絺綎絻綃絼綌綔綄絽綒罭罫罧罨罬羦羥羧翛翜耡腤腠腷腜腩腛腢腲朡腞腶腧腯腄腡舝艉艄艀艂艅蓱萿葖葶葹蒏蒍葥葑葀蒆葧萰葍葽葚葙葴葳葝蔇葞萷萺萴葺葃葸萲葅萩菙葋萯葂萭葟葰萹葎葌葒葯蓅蒎萻葇萶萳��\".split(\"\");\nfor(j = 0; j != D[194].length; ++j) if(D[194][j].charCodeAt(0) !== 0xFFFD) { e[D[194][j]] = 49664 + j; d[49664 + j] = D[194][j];}\nD[195] = \"������������������������������������������������葨葾葄萫葠葔葮葐蜋蜄�������蛷蜌蛺蛖蛵蝍蛸蜎蜉蜁蛶蜍蜅裖裋裍裎裞裛裚裌裐覅覛觟觥������觤觡觠觢觜触詶誆詿詡訿詷誂誄詵誃誁詴詺谼豋豊豥豤豦貆�����貄貅賌赨赩趑趌趎趏趍趓趔趐趒跰跠跬跱跮跐跩跣跢跧跲跫跴輆軿輁輀輅輇輈輂輋遒逿遄遉逽鄐鄍鄏鄑鄖鄔鄋鄎酮酯鉈鉒鈰鈺鉦鈳鉥鉞銃鈮鉊鉆鉭鉬鉏鉠鉧鉯鈶鉡鉰鈱鉔鉣鉐鉲鉎鉓鉌鉖鈲閟閜閞閛隒隓隑隗雎雺雽雸雵靳靷靸靲頏頍頎颬飶飹馯馲馰馵骭骫魛鳪鳭鳧麀黽僦僔僗僨僳僛僪僝僤��\".split(\"\");\nfor(j = 0; j != D[195].length; ++j) if(D[195][j].charCodeAt(0) !== 0xFFFD) { e[D[195][j]] = 49920 + j; d[49920 + j] = D[195][j];}\nD[196] = \"������������������������������������������������僓僬僰僯僣僠凘劀劁勩�������勫匰厬嘧嘕嘌嘒嗼嘏嘜嘁嘓嘂嗺嘝嘄嗿嗹墉塼墐墘墆墁塿塴������墋塺墇墑墎塶墂墈塻墔墏壾奫嫜嫮嫥嫕嫪嫚嫭嫫嫳嫢嫠嫛嫬�����嫞嫝嫙嫨嫟孷寠寣屣嶂嶀嵽嶆嵺嶁嵷嶊嶉嶈嵾嵼嶍嵹嵿幘幙幓廘廑廗廎廜廕廙廒廔彄彃彯徶愬愨慁慞慱慳慒慓慲慬憀慴慔慺慛慥愻慪慡慖戩戧戫搫摍摛摝摴摶摲摳摽摵摦撦摎撂摞摜摋摓摠摐摿搿摬摫摙摥摷敳斠暡暠暟朅朄朢榱榶槉榠槎榖榰榬榼榑榙榎榧榍榩榾榯榿槄榽榤槔榹槊榚槏榳榓��\".split(\"\");\nfor(j = 0; j != D[196].length; ++j) if(D[196][j].charCodeAt(0) !== 0xFFFD) { e[D[196][j]] = 50176 + j; d[50176 + j] = D[196][j];}\nD[197] = \"������������������������������������������������榪榡榞槙榗榐槂榵榥槆�������歊歍歋殞殟殠毃毄毾滎滵滱漃漥滸漷滻漮漉潎漙漚漧漘漻漒������滭漊漶潳滹滮漭潀漰漼漵滫漇漎潃漅滽滶漹漜滼漺漟漍漞漈�����漡熇熐熉熀熅熂熏煻熆熁熗牄牓犗犕犓獃獍獑獌瑢瑳瑱瑵瑲瑧瑮甀甂甃畽疐瘖瘈瘌瘕瘑瘊瘔皸瞁睼瞅瞂睮瞀睯睾瞃碲碪碴碭碨硾碫碞碥碠碬碢碤禘禊禋禖禕禔禓禗禈禒禐稫穊稰稯稨稦窨窫窬竮箈箜箊箑箐箖箍箌箛箎箅箘劄箙箤箂粻粿粼粺綧綷緂綣綪緁緀緅綝緎緄緆緋緌綯綹綖綼綟綦綮綩��\".split(\"\");\nfor(j = 0; j != D[197].length; ++j) if(D[197][j].charCodeAt(0) !== 0xFFFD) { e[D[197][j]] = 50432 + j; d[50432 + j] = D[197][j];}\nD[198] = \"������������������������������������������������綡緉罳翢翣翥翞耤聝聜�������膉膆膃膇膍膌膋舕蒗蒤蒡蒟蒺蓎蓂蒬蒮蒫蒹蒴蓁蓍蒪蒚蒱蓐������蒝蒧蒻蒢蒔蓇蓌蒛蒩蒯蒨蓖蒘蒶蓏蒠蓗蓔蓒蓛蒰蒑虡蜳蜣蜨�����蝫蝀蜮蜞蜡蜙蜛蝃蜬蝁蜾蝆蜠蜲蜪蜭蜼蜒蜺蜱蜵蝂蜦蜧蜸蜤蜚蜰蜑裷裧裱裲裺裾裮裼裶裻裰裬裫覝覡覟覞觩觫觨誫誙誋誒誏誖谽豨豩賕賏賗趖踉踂跿踍跽踊踃踇踆踅跾踀踄輐輑輎輍鄣鄜鄠鄢鄟鄝鄚鄤鄡鄛酺酲酹酳銥銤鉶銛鉺銠銔銪銍銦銚銫鉹銗鉿銣鋮銎銂銕銢鉽銈銡銊銆銌銙銧鉾銇銩銝��\".split(\"\");\nfor(j = 0; j != D[198].length; ++j) if(D[198][j].charCodeAt(0) !== 0xFFFD) { e[D[198][j]] = 50688 + j; d[50688 + j] = D[198][j];}\nD[199] = \"������������������������������������������������銋鈭隞隡雿靘靽靺靾鞃�������鞀鞂靻鞄鞁靿韎韍頖颭颮餂餀餇馝馜駃馹馻馺駂馽駇骱髣髧������鬾鬿魠魡魟鳱鳲鳵麧僿儃儰僸儆儇僶僾儋儌僽儊劋劌勱勯噈�����噂噌嘵噁噊噉噆噘噚噀嘳嘽嘬嘾嘸嘪嘺圚墫墝墱墠墣墯墬墥墡壿嫿嫴嫽嫷嫶嬃嫸嬂嫹嬁嬇嬅嬏屧嶙嶗嶟嶒嶢嶓嶕嶠嶜嶡嶚嶞幩幝幠幜緳廛廞廡彉徲憋憃慹憱憰憢憉憛憓憯憭憟憒憪憡憍慦憳戭摮摰撖撠撅撗撜撏撋撊撌撣撟摨撱撘敶敺敹敻斲斳暵暰暩暲暷暪暯樀樆樗槥槸樕槱槤樠槿槬槢樛樝��\".split(\"\");\nfor(j = 0; j != D[199].length; ++j) if(D[199][j].charCodeAt(0) !== 0xFFFD) { e[D[199][j]] = 50944 + j; d[50944 + j] = D[199][j];}\nD[200] = \"������������������������������������������������槾樧槲槮樔槷槧橀樈槦�������槻樍槼槫樉樄樘樥樏槶樦樇槴樖歑殥殣殢殦氁氀毿氂潁漦潾������澇濆澒澍澉澌潢潏澅潚澖潶潬澂潕潲潒潐潗澔澓潝漀潡潫潽�����潧澐潓澋潩潿澕潣潷潪潻熲熯熛熰熠熚熩熵熝熥熞熤熡熪熜熧熳犘犚獘獒獞獟獠獝獛獡獚獙獢璇璉璊璆璁瑽璅璈瑼瑹甈甇畾瘥瘞瘙瘝瘜瘣瘚瘨瘛皜皝皞皛瞍瞏瞉瞈磍碻磏磌磑磎磔磈磃磄磉禚禡禠禜禢禛歶稹窲窴窳箷篋箾箬篎箯箹篊箵糅糈糌糋緷緛緪緧緗緡縃緺緦緶緱緰緮緟罶羬羰羭翭翫��\".split(\"\");\nfor(j = 0; j != D[200].length; ++j) if(D[200][j].charCodeAt(0) !== 0xFFFD) { e[D[200][j]] = 51200 + j; d[51200 + j] = D[200][j];}\nD[201] = \"������������������������������������������������翪翬翦翨聤聧膣膟膞膕�������膢膙膗舖艏艓艒艐艎艑蔤蔻蔏蔀蔩蔎蔉蔍蔟蔊蔧蔜蓻蔫蓺蔈������蔌蓴蔪蓲蔕蓷蓫蓳蓼蔒蓪蓩蔖蓾蔨蔝蔮蔂蓽蔞蓶蔱蔦蓧蓨蓰�����蓯蓹蔘蔠蔰蔋蔙蔯虢蝖蝣蝤蝷蟡蝳蝘蝔蝛蝒蝡蝚蝑蝞蝭蝪蝐蝎蝟蝝蝯蝬蝺蝮蝜蝥蝏蝻蝵蝢蝧蝩衚褅褌褔褋褗褘褙褆褖褑褎褉覢覤覣觭觰觬諏諆誸諓諑諔諕誻諗誾諀諅諘諃誺誽諙谾豍貏賥賟賙賨賚賝賧趠趜趡趛踠踣踥踤踮踕踛踖踑踙踦踧踔踒踘踓踜踗踚輬輤輘輚輠輣輖輗遳遰遯遧遫鄯鄫鄩��\".split(\"\");\nfor(j = 0; j != D[201].length; ++j) if(D[201][j].charCodeAt(0) !== 0xFFFD) { e[D[201][j]] = 51456 + j; d[51456 + j] = D[201][j];}\nD[202] = \"������������������������������������������������鄪鄲鄦鄮醅醆醊醁醂醄�������醀鋐鋃鋄鋀鋙銶鋏鋱鋟鋘鋩鋗鋝鋌鋯鋂鋨鋊鋈鋎鋦鋍鋕鋉鋠������鋞鋧鋑鋓銵鋡錥鋆銴镼閬閫閮閰隤隢雓霅霈霂靚鞊鞎鞈韐韏�����頞頝頦頩頨頠頛頧颲餈飺餑餔餖餗餕駜駍駏駓駔駎駉駖駘駋駗駌骳髬髫髳髲髱魆魃魧魴魱魦魶魵魰魨魤魬鳼鳺鳽鳿鳷鴇鴀鳹鳻鴈鴅鴄麃黓鼏鼐儜儓儗儚儑凞匴叡噰噠噮噳噦噣噭噲噞噷圜圛壈墽壉墿墺壂墼壆嬗嬙嬛嬡嬔嬓嬐嬖嬨嬚嬠嬞寯嶬嶱嶩嶧嶵嶰嶮嶪嶨嶲嶭嶯嶴幧幨幦幯廩廧廦廨廥彋��\".split(\"\");\nfor(j = 0; j != D[202].length; ++j) if(D[202][j].charCodeAt(0) !== 0xFFFD) { e[D[202][j]] = 51712 + j; d[51712 + j] = D[202][j];}\nD[203] = \"������������������������������������������������徼徻憝憨憖懅憴懆懁懌�������憺憿憸憌擗擖擐擏擉撽撉擃擛擳擙攳敿敼斢曈暾曀曊曋曏暽������暻暺曌朣樴橦橉橧樲橨樾橝橭橶橛橑樨橚樻樿橁橪橤橐橏橔�����橯橩橠樼橞橖橕橍橎橆歕歔歖殧殪殫毈毇氄氃氆澭濋澣濇澼濎濈潞濄澽澞濊澨瀄澥澮澺澬澪濏澿澸澢濉澫濍澯澲澰燅燂熿熸燖燀燁燋燔燊燇燏熽燘熼燆燚燛犝犞獩獦獧獬獥獫獪瑿璚璠璔璒璕璡甋疀瘯瘭瘱瘽瘳瘼瘵瘲瘰皻盦瞚瞝瞡瞜瞛瞢瞣瞕瞙瞗磝磩磥磪磞磣磛磡磢磭磟磠禤穄穈穇窶窸窵��\".split(\"\");\nfor(j = 0; j != D[203].length; ++j) if(D[203][j].charCodeAt(0) !== 0xFFFD) { e[D[203][j]] = 51968 + j; d[51968 + j] = D[203][j];}\nD[204] = \"������������������������������������������������窱窷篞篣篧篝篕篥篚篨�������篹篔篪篢篜篫篘篟糒糔糗糐糑縒縡縗縌縟縠縓縎縜縕縚縢縋������縏縖縍縔縥縤罃罻罼罺羱翯耪耩聬膱膦膮膹膵膫膰膬膴膲膷�����膧臲艕艖艗蕖蕅蕫蕍蕓蕡蕘蕀蕆蕤蕁蕢蕄蕑蕇蕣蔾蕛蕱蕎蕮蕵蕕蕧蕠薌蕦蕝蕔蕥蕬虣虥虤螤螛螏螗螓螒螈螁螖螘蝹螇螣螅螐螑螝螄螔螜螚螉褞褦褰褭褮褧褱褢褩褣褯褬褟觱諠諢諲諴諵諝謔諤諟諰諈諞諡諨諿諯諻貑貒貐賵賮賱賰賳赬赮趥趧踳踾踸蹀蹅踶踼踽蹁踰踿躽輶輮輵輲輹輷輴遶遹遻��\".split(\"\");\nfor(j = 0; j != D[204].length; ++j) if(D[204][j].charCodeAt(0) !== 0xFFFD) { e[D[204][j]] = 52224 + j; d[52224 + j] = D[204][j];}\nD[205] = \"������������������������������������������������邆郺鄳鄵鄶醓醐醑醍醏�������錧錞錈錟錆錏鍺錸錼錛錣錒錁鍆錭錎錍鋋錝鋺錓鋹鋷錴錂錤������鋿錩錹錵錪錔錌錋鋾錉錀鋻錖閼闍閾閹閺閶閿閵閽隩雔霋霒�����霐鞙鞗鞔韰韸頵頯頲餤餟餧餩馞駮駬駥駤駰駣駪駩駧骹骿骴骻髶髺髹髷鬳鮀鮅鮇魼魾魻鮂鮓鮒鮐魺鮕魽鮈鴥鴗鴠鴞鴔鴩鴝鴘鴢鴐鴙鴟麈麆麇麮麭黕黖黺鼒鼽儦儥儢儤儠儩勴嚓嚌嚍嚆嚄嚃噾嚂噿嚁壖壔壏壒嬭嬥嬲嬣嬬嬧嬦嬯嬮孻寱寲嶷幬幪徾懃憵憼懧懠懥懤懨懞擯擩擣擫擤擨斁斀斶旚曒檍��\".split(\"\");\nfor(j = 0; j != D[205].length; ++j) if(D[205][j].charCodeAt(0) !== 0xFFFD) { e[D[205][j]] = 52480 + j; d[52480 + j] = D[205][j];}\nD[206] = \"������������������������������������������������檖檁檥檉檟檛檡檞檇檓�������檎檕檃檨檤檑橿檦檚檅檌檒歛殭氉濌澩濴濔濣濜濭濧濦濞濲������濝濢濨燡燱燨燲燤燰燢獳獮獯璗璲璫璐璪璭璱璥璯甐甑甒甏�����疄癃癈癉癇皤盩瞵瞫瞲瞷瞶瞴瞱瞨矰磳磽礂磻磼磿磲礅磹磾礄禫禨穜穛穖穘穔穚窾竀竁簅簏篲簀篿篻簎篴簋篳簂簉簃簁篸篽簆篰篱簐簊糨縭縼繂縳顈縸縪繉繀繇縩繌縰縻縶繄縺罅罿罾罽翴翲耬膻臄臌臊臅臇膼臩艛艚艜薃薀薏薧薕薠薋薣蕻薤薚薞蕷蕼薉薡蕺蕸蕗薎薖薆薍薙薝薁薢薂薈薅蕹��\".split(\"\");\nfor(j = 0; j != D[206].length; ++j) if(D[206][j].charCodeAt(0) !== 0xFFFD) { e[D[206][j]] = 52736 + j; d[52736 + j] = D[206][j];}\nD[207] = \"������������������������������������������������蕶薘薐薟虨螾螪螭蟅螰�������螬螹螵螼螮蟉蟃蟂蟌螷螯蟄蟊螴螶螿螸螽蟞螲褵褳褼褾襁襒������褷襂覭覯覮觲觳謞謘謖謑謅謋謢謏謒謕謇謍謈謆謜謓謚豏豰�����豲豱豯貕貔賹赯蹎蹍蹓蹐蹌蹇轃轀邅遾鄸醚醢醛醙醟醡醝醠鎡鎃鎯鍤鍖鍇鍼鍘鍜鍶鍉鍐鍑鍠鍭鎏鍌鍪鍹鍗鍕鍒鍏鍱鍷鍻鍡鍞鍣鍧鍎鍙闇闀闉闃闅閷隮隰隬霠霟霘霝霙鞚鞡鞜鞞鞝韕韔韱顁顄顊顉顅顃餥餫餬餪餳餲餯餭餱餰馘馣馡騂駺駴駷駹駸駶駻駽駾駼騃骾髾髽鬁髼魈鮚鮨鮞鮛鮦鮡鮥鮤鮆��\".split(\"\");\nfor(j = 0; j != D[207].length; ++j) if(D[207][j].charCodeAt(0) !== 0xFFFD) { e[D[207][j]] = 52992 + j; d[52992 + j] = D[207][j];}\nD[208] = \"������������������������������������������������鮢鮠鮯鴳鵁鵧鴶鴮鴯鴱�������鴸鴰鵅鵂鵃鴾鴷鵀鴽翵鴭麊麉麍麰黈黚黻黿鼤鼣鼢齔龠儱儭������儮嚘嚜嚗嚚嚝嚙奰嬼屩屪巀幭幮懘懟懭懮懱懪懰懫懖懩擿攄�����擽擸攁攃擼斔旛曚曛曘櫅檹檽櫡櫆檺檶檷櫇檴檭歞毉氋瀇瀌瀍瀁瀅瀔瀎濿瀀濻瀦濼濷瀊爁燿燹爃燽獶璸瓀璵瓁璾璶璻瓂甔甓癜癤癙癐癓癗癚皦皽盬矂瞺礌礓礔礉礐礒礑禭禬穟簜簩簙簠簟簭簝簦簨簢簥簰繜繐繖繣繘繢繟繑繠繗繓羵羳翷翸聵臑臒臐艟艞薴藆藀藃藂薳薵薽藇藄薿藋藎藈藅薱薶��\".split(\"\");\nfor(j = 0; j != D[208].length; ++j) if(D[208][j].charCodeAt(0) !== 0xFFFD) { e[D[208][j]] = 53248 + j; d[53248 + j] = D[208][j];}\nD[209] = \"������������������������������������������������藒蘤薸薷薾虩蟧蟦蟢蟛�������蟫蟪蟥蟟蟳蟤蟔蟜蟓蟭蟘蟣蟗蟙蠁蟴蟨蟝襓襋襏襌襆襐襑襉������謪謧謣謳謰謵譇謯謼謾謱謥謷謦謶謮謤謻謽謺豂豵貙貘貗賾�����贄贂贀蹜蹢蹠蹗蹖蹞蹥蹧蹛蹚蹡蹝蹩蹔轆轇轈轋鄨鄺鄻鄾醨醥醧醯醪鎵鎌鎒鎷鎛鎝鎉鎧鎎鎪鎞鎦鎕鎈鎙鎟鎀鎍鎱鎑鎲鎤鎨鎴鎣闒闓闑隳雗雚巂雟雘雝霣霢霥鞬鞮鞨鞫鞤鞪鞢鞥韗韙韖韘韺顐顑顒颸饁餼餺騏騋騉騍騄騑騊騅騇騆髀髜鬈鬄鬅鬩鬵魊魌魋鯇鯆鯃鮿鯁鮵鮸鯓鮶鯄鮹鮽鵜鵓鵏鵊鵛鵋��\".split(\"\");\nfor(j = 0; j != D[209].length; ++j) if(D[209][j].charCodeAt(0) !== 0xFFFD) { e[D[209][j]] = 53504 + j; d[53504 + j] = D[209][j];}\nD[210] = \"������������������������������������������������鵙鵖鵌鵗鵒鵔鵟鵘鵚麎�������麌黟鼁鼀鼖鼥鼫鼪鼩鼨齌齕儴儵劖勷厴嚫嚭嚦嚧嚪嚬壚壝壛������夒嬽嬾嬿巃幰徿懻攇攐攍攉攌攎斄旞旝曞櫧櫠櫌櫑櫙櫋櫟櫜�����櫐櫫櫏櫍櫞歠殰氌瀙瀧瀠瀖瀫瀡瀢瀣瀩瀗瀤瀜爌爊爇爂爅犥犦犤犣犡瓋瓅璷瓃甖癠矉矊矄矱礝礛礡礜礗礞禰穧穨簳簼簹簬簻糬糪繶繵繸繰繷繯繺繲繴繨罋罊羃羆羷翽翾聸臗臕舋艤艡艣藫藱藭藙藡藨藚藗藬藲藸藘藟藣藜藑藰藦藯藞藢蠀蟺蠃蟶蟷蠉蠌蠋蠆蟼蠈蟿蠊蠂襢襚襛襗襡襜襘襝襙覈覷��\".split(\"\");\nfor(j = 0; j != D[210].length; ++j) if(D[210][j].charCodeAt(0) !== 0xFFFD) { e[D[210][j]] = 53760 + j; d[53760 + j] = D[210][j];}\nD[211] = \"������������������������������������������������覶觶譐譈譊譀譓譖譔譋�������譕譑譂譒譗豃豷豶貚贆贇贉趬趪趭趫蹭蹸蹳蹪蹯蹻軂轒轑轏������轐轓辴酀鄿醰醭鏞鏇鏏鏂鏚鏐鏹鏬鏌鏙鎩鏦鏊鏔鏮鏣鏕鏄鏎�����鏀鏒鎥鏧镽闚闛雡霩霫霬霨霦鞳鞷鞶韝韞韟顜顙顝顗颿颽颻颾饈饇饃馦馧騚騕騥騝騤騛騢騠騧騣騞騜騔髂鬋鬊鬎鬌鬷鯪鯫鯠鯞鯤鯦鯢鯰鯔鯗鯬鯜鯙鯥鯕鯡鯚鵷鶁鶊鶄鶈鵱鶀鵸鶆鶋鶌鵽鵫鵴鵵鵰鵩鶅鵳鵻鶂鵯鵹鵿鶇鵨麔麑黀黼鼭齀齁齍齖齗齘匷嚲嚵嚳壣孅巆巇廮廯忀忁懹攗攖攕攓旟曨曣曤��\".split(\"\");\nfor(j = 0; j != D[211].length; ++j) if(D[211][j].charCodeAt(0) !== 0xFFFD) { e[D[211][j]] = 54016 + j; d[54016 + j] = D[211][j];}\nD[212] = \"������������������������������������������������櫳櫰櫪櫨櫹櫱櫮櫯瀼瀵�������瀯瀷瀴瀱灂瀸瀿瀺瀹瀪灀瀻瀳灁爓爔犨獽獼璺皫皪皾盭矌矎������矏矍矲礥礣礧礨礤礩禲穮穬穭竷籉籈籊籇籅糮繻繾纁纀羺翿�����聹臛臙艨艩蘢藿蘁藾蘛蘀藶蘄蘉蘅蘌藽蠙蠐蠑蠗蠓蠖襣襦覹觷譠譪譝譨譣譥譧譭趮躆躈躄轙轖轗轕轘轚邍酃酁醷醵醲醳鐋鐓鏻鐠鐏鐔鏾鐕鐐鐨鐙鐍鏵鐀鏷鐇鐎鐖鐒鏺鐉鏸鐼鐊鏿鏼鐌鏶鐑鐆闞闠闟霮霯鞹鞻韽韾顠顢顣顟飁飂饐饎饙饌饋饓騲騴騱騬騪騶騩騮騸騭髇髊髆鬐鬒鬑鰋鰈鯷鰅鰒鯸鱀��\".split(\"\");\nfor(j = 0; j != D[212].length; ++j) if(D[212][j].charCodeAt(0) !== 0xFFFD) { e[D[212][j]] = 54272 + j; d[54272 + j] = D[212][j];}\nD[213] = \"������������������������������������������������鰇鰎鰆鰗鰔鰉鶟鶙鶤鶝�������鶒鶘鶐鶛鶠鶔鶜鶪鶗鶡鶚鶢鶨鶞鶣鶿鶩鶖鶦鶧麙麛麚黥黤黧������黦鼰鼮齛齠齞齝齙龑儺儹劘劗囃嚽嚾孈孇巋巏廱懽攛欂櫼欃�����櫸欀灃灄灊灈灉灅灆爝爚爙獾甗癪矐礭礱礯籔籓糲纊纇纈纋纆纍罍羻耰臝蘘蘪蘦蘟蘣蘜蘙蘧蘮蘡蘠蘩蘞蘥蠩蠝蠛蠠蠤蠜蠫衊襭襩襮襫觺譹譸譅譺譻贐贔趯躎躌轞轛轝酆酄酅醹鐿鐻鐶鐩鐽鐰鐹鐪鐷鐬鑀鐱闥闤闣霵霺鞿韡顤飉飆飀饘饖騹騽驆驄驂驁騺騿髍鬕鬗鬘鬖鬺魒鰫鰝鰜鰬鰣鰨鰩鰤鰡鶷��\".split(\"\");\nfor(j = 0; j != D[213].length; ++j) if(D[213][j].charCodeAt(0) !== 0xFFFD) { e[D[213][j]] = 54528 + j; d[54528 + j] = D[213][j];}\nD[214] = \"������������������������������������������������鶶鶼鷁鷇鷊鷏鶾鷅鷃鶻�������鶵鷎鶹鶺鶬鷈鶱鶭鷌鶳鷍鶲鹺麜黫黮黭鼛鼘鼚鼱齎齥齤龒亹������囆囅囋奱孋孌巕巑廲攡攠攦攢欋欈欉氍灕灖灗灒爞爟犩獿瓘�����瓕瓙瓗癭皭礵禴穰穱籗籜籙籛籚糴糱纑罏羇臞艫蘴蘵蘳蘬蘲蘶蠬蠨蠦蠪蠥襱覿覾觻譾讄讂讆讅譿贕躕躔躚躒躐躖躗轠轢酇鑌鑐鑊鑋鑏鑇鑅鑈鑉鑆霿韣顪顩飋饔饛驎驓驔驌驏驈驊驉驒驐髐鬙鬫鬻魖魕鱆鱈鰿鱄鰹鰳鱁鰼鰷鰴鰲鰽鰶鷛鷒鷞鷚鷋鷐鷜鷑鷟鷩鷙鷘鷖鷵鷕鷝麶黰鼵鼳鼲齂齫龕龢儽劙��\".split(\"\");\nfor(j = 0; j != D[214].length; ++j) if(D[214][j].charCodeAt(0) !== 0xFFFD) { e[D[214][j]] = 54784 + j; d[54784 + j] = D[214][j];}\nD[215] = \"������������������������������������������������壨壧奲孍巘蠯彏戁戃戄�������攩攥斖曫欑欒欏毊灛灚爢玂玁玃癰矔籧籦纕艬蘺虀蘹蘼蘱蘻������蘾蠰蠲蠮蠳襶襴襳觾讌讎讋讈豅贙躘轤轣醼鑢鑕鑝鑗鑞韄韅�����頀驖驙鬞鬟鬠鱒鱘鱐鱊鱍鱋鱕鱙鱌鱎鷻鷷鷯鷣鷫鷸鷤鷶鷡鷮鷦鷲鷰鷢鷬鷴鷳鷨鷭黂黐黲黳鼆鼜鼸鼷鼶齃齏齱齰齮齯囓囍孎屭攭曭曮欓灟灡灝灠爣瓛瓥矕礸禷禶籪纗羉艭虃蠸蠷蠵衋讔讕躞躟躠躝醾醽釂鑫鑨鑩雥靆靃靇韇韥驞髕魙鱣鱧鱦鱢鱞鱠鸂鷾鸇鸃鸆鸅鸀鸁鸉鷿鷽鸄麠鼞齆齴齵齶囔攮斸��\".split(\"\");\nfor(j = 0; j != D[215].length; ++j) if(D[215][j].charCodeAt(0) !== 0xFFFD) { e[D[215][j]] = 55040 + j; d[55040 + j] = D[215][j];}\nD[216] = \"������������������������������������������������欘欙欗欚灢爦犪矘矙礹�������籩籫糶纚纘纛纙臠臡虆虇虈襹襺襼襻觿讘讙躥躤躣鑮鑭鑯鑱������鑳靉顲饟鱨鱮鱭鸋鸍鸐鸏鸒鸑麡黵鼉齇齸齻齺齹圞灦籯蠼趲�����躦釃鑴鑸鑶鑵驠鬮鱴鱳鱱鱵鸔鸓黶鼊龤灨灥糷虪蠾蠽蠿讞貜躩軉靋顳顴飌饡馫驤驦驧鬤鸕鸗齈戇欞爧虌躨钂钀钁驩驨鸙虋讟钃鱹麷癵驫鱺鸝灩灪爩麤齾齉龘������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[216].length; ++j) if(D[216][j].charCodeAt(0) !== 0xFFFD) { e[D[216][j]] = 55296 + j; d[55296 + j] = D[216][j];}\nD[223] = \"��������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[223].length; ++j) if(D[223][j].charCodeAt(0) !== 0xFFFD) { e[D[223][j]] = 57088 + j; d[57088 + j] = D[223][j];}\nD[224] = \"��������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[224].length; ++j) if(D[224][j].charCodeAt(0) !== 0xFFFD) { e[D[224][j]] = 57344 + j; d[57344 + j] = D[224][j];}\nD[225] = \"��������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[225].length; ++j) if(D[225][j].charCodeAt(0) !== 0xFFFD) { e[D[225][j]] = 57600 + j; d[57600 + j] = D[225][j];}\nD[226] = \"��������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[226].length; ++j) if(D[226][j].charCodeAt(0) !== 0xFFFD) { e[D[226][j]] = 57856 + j; d[57856 + j] = D[226][j];}\nD[227] = \"��������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[227].length; ++j) if(D[227][j].charCodeAt(0) !== 0xFFFD) { e[D[227][j]] = 58112 + j; d[58112 + j] = D[227][j];}\nD[228] = \"��������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[228].length; ++j) if(D[228][j].charCodeAt(0) !== 0xFFFD) { e[D[228][j]] = 58368 + j; d[58368 + j] = D[228][j];}\nD[229] = \"��������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[229].length; ++j) if(D[229][j].charCodeAt(0) !== 0xFFFD) { e[D[229][j]] = 58624 + j; d[58624 + j] = D[229][j];}\nD[230] = \"��������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[230].length; ++j) if(D[230][j].charCodeAt(0) !== 0xFFFD) { e[D[230][j]] = 58880 + j; d[58880 + j] = D[230][j];}\nD[231] = \"��������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[231].length; ++j) if(D[231][j].charCodeAt(0) !== 0xFFFD) { e[D[231][j]] = 59136 + j; d[59136 + j] = D[231][j];}\nD[232] = \"��������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[232].length; ++j) if(D[232][j].charCodeAt(0) !== 0xFFFD) { e[D[232][j]] = 59392 + j; d[59392 + j] = D[232][j];}\nD[233] = \"��������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[233].length; ++j) if(D[233][j].charCodeAt(0) !== 0xFFFD) { e[D[233][j]] = 59648 + j; d[59648 + j] = D[233][j];}\nD[234] = \"��������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[234].length; ++j) if(D[234][j].charCodeAt(0) !== 0xFFFD) { e[D[234][j]] = 59904 + j; d[59904 + j] = D[234][j];}\nD[235] = \"��������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[235].length; ++j) if(D[235][j].charCodeAt(0) !== 0xFFFD) { e[D[235][j]] = 60160 + j; d[60160 + j] = D[235][j];}\nD[236] = \"��������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[236].length; ++j) if(D[236][j].charCodeAt(0) !== 0xFFFD) { e[D[236][j]] = 60416 + j; d[60416 + j] = D[236][j];}\nD[237] = \"��������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[237].length; ++j) if(D[237][j].charCodeAt(0) !== 0xFFFD) { e[D[237][j]] = 60672 + j; d[60672 + j] = D[237][j];}\nD[238] = \"��������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[238].length; ++j) if(D[238][j].charCodeAt(0) !== 0xFFFD) { e[D[238][j]] = 60928 + j; d[60928 + j] = D[238][j];}\nD[239] = \"��������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[239].length; ++j) if(D[239][j].charCodeAt(0) !== 0xFFFD) { e[D[239][j]] = 61184 + j; d[61184 + j] = D[239][j];}\nD[240] = \"��������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[240].length; ++j) if(D[240][j].charCodeAt(0) !== 0xFFFD) { e[D[240][j]] = 61440 + j; d[61440 + j] = D[240][j];}\nD[241] = \"��������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[241].length; ++j) if(D[241][j].charCodeAt(0) !== 0xFFFD) { e[D[241][j]] = 61696 + j; d[61696 + j] = D[241][j];}\nD[242] = \"��������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[242].length; ++j) if(D[242][j].charCodeAt(0) !== 0xFFFD) { e[D[242][j]] = 61952 + j; d[61952 + j] = D[242][j];}\nD[243] = \"��������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[243].length; ++j) if(D[243][j].charCodeAt(0) !== 0xFFFD) { e[D[243][j]] = 62208 + j; d[62208 + j] = D[243][j];}\nD[244] = \"��������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[244].length; ++j) if(D[244][j].charCodeAt(0) !== 0xFFFD) { e[D[244][j]] = 62464 + j; d[62464 + j] = D[244][j];}\nD[245] = \"��������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[245].length; ++j) if(D[245][j].charCodeAt(0) !== 0xFFFD) { e[D[245][j]] = 62720 + j; d[62720 + j] = D[245][j];}\nD[246] = \"��������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[246].length; ++j) if(D[246][j].charCodeAt(0) !== 0xFFFD) { e[D[246][j]] = 62976 + j; d[62976 + j] = D[246][j];}\nD[247] = \"��������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[247].length; ++j) if(D[247][j].charCodeAt(0) !== 0xFFFD) { e[D[247][j]] = 63232 + j; d[63232 + j] = D[247][j];}\nD[248] = \"��������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[248].length; ++j) if(D[248][j].charCodeAt(0) !== 0xFFFD) { e[D[248][j]] = 63488 + j; d[63488 + j] = D[248][j];}\nD[249] = \"��������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[249].length; ++j) if(D[249][j].charCodeAt(0) !== 0xFFFD) { e[D[249][j]] = 63744 + j; d[63744 + j] = D[249][j];}\nD[250] = \"��������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[250].length; ++j) if(D[250][j].charCodeAt(0) !== 0xFFFD) { e[D[250][j]] = 64000 + j; d[64000 + j] = D[250][j];}\nD[251] = \"��������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[251].length; ++j) if(D[251][j].charCodeAt(0) !== 0xFFFD) { e[D[251][j]] = 64256 + j; d[64256 + j] = D[251][j];}\nD[252] = \"��������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[252].length; ++j) if(D[252][j].charCodeAt(0) !== 0xFFFD) { e[D[252][j]] = 64512 + j; d[64512 + j] = D[252][j];}\nreturn {\"enc\": e, \"dec\": d }; })();\ncptable[20002] = (function(){ var d = [], e = {}, D = [], j;\nD[0] = \"\\u0000\\u0001\\u0002\\u0003\\u0004\\u0005\\u0006\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\u0014\\u0015\\u0016\\u0017\\u0018\\u0019\\u001a\\u001b\\u001c\\u001d\\u001e\\u001f !\\\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~���������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[0].length; ++j) if(D[0][j].charCodeAt(0) !== 0xFFFD) { e[D[0][j]] = 0 + j; d[0 + j] = D[0][j];}\nD[129] = \"������������������������������������������������　，、。․•；：？！�������︰…‥﹐﹑‧﹒﹔﹕﹖﹗︱–︲—︳＿︴﹏（）︵︶｛｝︷������︸〔〕︹︺【】︻︼《》︽︾〈〉︿﹀「」﹁﹂『』﹃﹄﹙�����﹚﹛﹜﹝﹞‘’“”〝〞′‵＃＆＊※§〃○●△▲◎☆★◇◆□■▽▼㊣℅‾￣��﹉﹊﹍﹎﹋﹌﹟﹠﹡＋－×÷±√＜＞＝≦≧≠∞≒≡﹢﹣﹤﹥﹦∼∩∪⊥∠∟⊿㏒㏑∫∮∵∴♀♂⊕⊙↑↓→←↖↗↙↘∥∣／＼�﹨＄￥〒￠￡％＠℃℉﹩﹪﹫㏕㎜㎝㎞㏎㎡㎎㎏㏄゜兙兛兞兝兡兣��\".split(\"\");\nfor(j = 0; j != D[129].length; ++j) if(D[129][j].charCodeAt(0) !== 0xFFFD) { e[D[129][j]] = 33024 + j; d[33024 + j] = D[129][j];}\nD[130] = \"������������������������������������������������嗧瓩糎▁▂▃▄▅▆▇�������█▏▎▍▌▋▊▉┼┴┬┤├▔─│▕┌┐└┘╭╮╰╯═������╞╪╡◢◣◥◤╱╲╳¨˄ヽヾゝゞ�〄々〆〇ー［］✽ぁ�����あぃいぅうぇえぉおかがきぎくぐけげこごさざしじすずせぜそぞただち０１２３４５６７８９ⅠⅡⅢⅣⅤⅥⅦⅧⅨⅩ〡〢〣〤〥〦〧〨〩�卄�ＡＢＣＤＥＦＧＨＩＪＫＬＭＮＯＰＱＲＳＴＵＶＷＸＹＺａｂｃｄｅｆｇｈｉｊｋｌｍｎｏｐｑｒｓｔｕｖｗｘｙｚΑΒΓΔΕΖΗΘΙΚ��\".split(\"\");\nfor(j = 0; j != D[130].length; ++j) if(D[130][j].charCodeAt(0) !== 0xFFFD) { e[D[130][j]] = 33280 + j; d[33280 + j] = D[130][j];}\nD[131] = \"������������������������������������������������ΛΜΝΞΟΠΡΣΤΥ�������ΦΧΨΩαβγδεζηθικλμνξοπρστυφχ������ψωㄅㄆㄇㄈㄉㄊㄋㄌㄍㄎㄏㄐㄑㄒㄓㄔㄕㄖㄗㄘㄙㄚㄛㄜ�����ㄝㄞㄟㄠㄡㄢㄣㄤㄥㄦㄧㄨㄩ˙˟ˊˇˋぢっつづてでとどなにぬねのは①②③④⑤⑥⑦⑧⑨⑩⑴⑵⑶⑷⑸⑹⑺⑻⑼⑽ⅰⅱⅲⅳⅴⅵⅶⅷⅸⅹばぱひびぴふぶぷへべぺほぼぽまみむめもゃやゅゆょよらりるれろゎわゐゑをんァアィイゥウェエォオカガキギクグケゲコゴサザシジスズセゼ��\".split(\"\");\nfor(j = 0; j != D[131].length; ++j) if(D[131][j].charCodeAt(0) !== 0xFFFD) { e[D[131][j]] = 33536 + j; d[33536 + j] = D[131][j];}\nD[132] = \"��������������������������������������������������丶丿�亅�亠�����������冂冖冫����勹��匸��卩�厶�����夂����������宀������巛����幺广廴���彐彡�����������攴����无��������������������������������疒癶��������������������������������������������������������辵��������隶��������������������\".split(\"\");\nfor(j = 0; j != D[132].length; ++j) if(D[132][j].charCodeAt(0) !== 0xFFFD) { e[D[132][j]] = 33792 + j; d[33792 + j] = D[132][j];}\nD[133] = \"��������������������������������������������������������������������������������鵙鵖鵌鵗鵒鵔鵟鵘鵚麎麌������黟鼁鼀鼖鼥鼫鼪鼩鼨齌齕儴儵劖勷厴嚫嚭嚦嚧嚪嚬壚壝壛夒�����嬽嬾嬿巃幰徿懻攇攐攍攉攌攎斄旞旝曞櫧櫠櫌櫑櫙櫋櫟櫜櫐櫫櫏櫍櫞歠殰氌瀙瀧瀠瀖瀫瀡瀢瀣瀩瀗瀤瀜爌爊爇爂爅犥犦犤犣犡瓋瓅璷瓃甖癠矉矊矄矱礝礛礡礜礗礞禰穧穨簳簼簹簬簻糬糪繶繵繸繰繷繯繺繲繴繨罋罊羃羆羷翽翾聸臗臕舋艤艡艣藫藱藭藙藡藨藚藗藬藲藸藘藟藣藜藑藰藦藯藞藢��\".split(\"\");\nfor(j = 0; j != D[133].length; ++j) if(D[133][j].charCodeAt(0) !== 0xFFFD) { e[D[133][j]] = 34048 + j; d[34048 + j] = D[133][j];}\nD[134] = \"������������������������������������������������蠀蟺蠃蟶蟷蠉蠌蠋蠆蟼�������蠈蟿蠊蠂襢襚襛襗襡襜襘襝襙覈覷覶觶譐譈譊譀譓譖譔譋譕������譑譂譒譗豃豷豶貚贆贇贉趬趪趭趫蹭蹸蹳蹪蹯蹻軂轒轑轏轐�����轓辴酀鄿醰醭鏞鏇鏏鏂鏚鏐鏹鏬鏌鏙鎩鏦鏊鏔鏮鏣鏕鏄鏎鏀鏒鎥鏧镽闚闛雡霩霫霬霨霦鞳鞷鞶韝韞韟顜顙顝顗颿颽颻颾饈饇饃馦馧騚騕騥騝騤騛騢騠騧騣騞騜騔髂鬋鬊鬎鬌鬷鯪鯫鯠鯞鯤鯦鯢鯰鯔鯗鯬鯜鯙鯥鯕鯡鯚鵷鶁鶊鶄鶈鵱鶀鵸鶆鶋鶌鵽鵫鵴鵵鵰鵩鶅鵳鵻鶂鵯鵹鵿鶇鵨麔麑黀黼鼭齀齁��\".split(\"\");\nfor(j = 0; j != D[134].length; ++j) if(D[134][j].charCodeAt(0) !== 0xFFFD) { e[D[134][j]] = 34304 + j; d[34304 + j] = D[134][j];}\nD[135] = \"������������������������������������������������齍齖齗齘匷嚲嚵嚳壣孅�������巆巇廮廯忀忁懹攗攖攕攓旟曨曣曤櫳櫰櫪櫨櫹櫱櫮櫯瀼瀵瀯������瀷瀴瀱灂瀸瀿瀺瀹瀪灀瀻瀳灁爓爔犨獽獼璺皫皪皾盭矌矎矏�����矍矲礥礣礧礨礤礩禲穮穬穭竷籉籈籊籇籅糮繻繾纁纀羺翿聹臛臙艨艩蘢藿蘁藾蘛蘀藶蘄蘉蘅蘌藽蠙蠐蠑蠗蠓蠖襣襦覹觷譠譪譝譨譣譥譧譭趮躆躈躄轙轖轗轕轘轚邍酃酁醷醵醲醳鐋鐓鏻鐠鐏鐔鏾鐕鐐鐨鐙鐍鏵鐀鏷鐇鐎鐖鐒鏺鐉鏸鐼鐊鏿鏼鐌鏶鐑鐆闞闠闟霮霯鞹鞻韽韾顠顢顣顟飁飂饐饎饙饌��\".split(\"\");\nfor(j = 0; j != D[135].length; ++j) if(D[135][j].charCodeAt(0) !== 0xFFFD) { e[D[135][j]] = 34560 + j; d[34560 + j] = D[135][j];}\nD[136] = \"������������������������������������������������饋饓騲騴騱騬騪騶騩騮�������騸騭髇髊髆鬐鬒鬑鰋鰈鯷鰅鰒鯸鱀鰇鰎鰆鰗鰔鰉鶟鶙鶤鶝鶒������鶘鶐鶛鶠鶔鶜鶪鶗鶡鶚鶢鶨鶞鶣鶿鶩鶖鶦鶧麙麛麚黥黤黧黦�����鼰鼮齛齠齞齝齙龑儺儹劘劗囃嚽嚾孈孇巋巏廱懽攛欂櫼欃櫸欀灃灄灊灈灉灅灆爝爚爙獾甗癪矐礭礱礯籔籓糲纊纇纈纋纆纍罍羻耰臝蘘蘪蘦蘟蘣蘜蘙蘧蘮蘡蘠蘩蘞蘥蠩蠝蠛蠠蠤蠜蠫衊襭襩襮襫觺譹譸譅譺譻贐贔趯躎躌轞轛轝酆酄酅醹鐿鐻鐶鐩鐽鐰鐹鐪鐷鐬鑀鐱闥闤闣霵霺鞿韡顤飉飆飀饘饖��\".split(\"\");\nfor(j = 0; j != D[136].length; ++j) if(D[136][j].charCodeAt(0) !== 0xFFFD) { e[D[136][j]] = 34816 + j; d[34816 + j] = D[136][j];}\nD[137] = \"������������������������������������������������騹騽驆驄驂驁騺騿髍鬕�������鬗鬘鬖鬺魒鰫鰝鰜鰬鰣鰨鰩鰤鰡鶷鶶鶼鷁鷇鷊鷏鶾鷅鷃鶻鶵������鷎鶹鶺鶬鷈鶱鶭鷌鶳鷍鶲鹺麜黫黮黭鼛鼘鼚鼱齎齥齤龒亹囆�����囅囋奱孋孌巕巑廲攡攠攦攢欋欈欉氍灕灖灗灒爞爟犩獿瓘瓕瓙瓗癭皭礵禴穰穱籗籜籙籛籚糴糱纑罏羇臞艫蘴蘵蘳蘬蘲蘶蠬蠨蠦蠪蠥襱覿覾觻譾讄讂讆讅譿贕躕躔躚躒躐躖躗轠轢酇鑌鑐鑊鑋鑏鑇鑅鑈鑉鑆霿韣顪顩飋饔饛驎驓驔驌驏驈驊驉驒驐髐鬙鬫鬻魖魕鱆鱈鰿鱄鰹鰳鱁鰼鰷鰴鰲鰽鰶鷛鷒��\".split(\"\");\nfor(j = 0; j != D[137].length; ++j) if(D[137][j].charCodeAt(0) !== 0xFFFD) { e[D[137][j]] = 35072 + j; d[35072 + j] = D[137][j];}\nD[138] = \"������������������������������������������������鷞鷚鷋鷐鷜鷑鷟鷩鷙鷘�������鷖鷵鷕鷝麶黰鼵鼳鼲齂齫龕龢儽劙壨壧奲孍巘蠯彏戁戃戄攩������攥斖曫欑欒欏毊灛灚爢玂玁玃癰矔籧籦纕艬蘺虀蘹蘼蘱蘻蘾�����蠰蠲蠮蠳襶襴襳觾讌讎讋讈豅贙躘轤轣醼鑢鑕鑝鑗鑞韄韅頀驖驙鬞鬟鬠鱒鱘鱐鱊鱍鱋鱕鱙鱌鱎鷻鷷鷯鷣鷫鷸鷤鷶鷡鷮鷦鷲鷰鷢鷬鷴鷳鷨鷭黂黐黲黳鼆鼜鼸鼷鼶齃齏齱齰齮齯囓囍孎屭攭曭曮欓灟灡灝灠爣瓛瓥矕礸禷禶籪纗羉艭虃蠸蠷蠵衋讔讕躞躟躠躝醾醽釂鑫鑨鑩雥靆靃靇韇韥驞髕魙鱣鱧��\".split(\"\");\nfor(j = 0; j != D[138].length; ++j) if(D[138][j].charCodeAt(0) !== 0xFFFD) { e[D[138][j]] = 35328 + j; d[35328 + j] = D[138][j];}\nD[139] = \"������������������������������������������������鱦鱢鱞鱠鸂鷾鸇鸃鸆鸅�������鸀鸁鸉鷿鷽鸄麠鼞齆齴齵齶囔攮斸欘欙欗欚灢爦犪矘矙礹籩������籫糶纚纘纛纙臠臡虆虇虈襹襺襼襻觿讘讙躥躤躣鑮鑭鑯鑱鑳�����靉顲饟鱨鱮鱭鸋鸍鸐鸏鸒鸑麡黵鼉齇齸齻齺齹圞灦籯蠼趲躦釃鑴鑸鑶鑵驠鬮鱴鱳鱱鱵鸔鸓黶鼊龤灨灥糷虪蠾蠽蠿讞貜躩軉靋顳顴飌饡馫驤驦驧鬤鸕鸗齈戇欞爧虌躨钂钀钁驩驨鸙虋讟钃鱹麷癵驫鱺鸝灩灪爩麤齾齉龘�����������������������������������\".split(\"\");\nfor(j = 0; j != D[139].length; ++j) if(D[139][j].charCodeAt(0) !== 0xFFFD) { e[D[139][j]] = 35584 + j; d[35584 + j] = D[139][j];}\nD[140] = \"����������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[140].length; ++j) if(D[140][j].charCodeAt(0) !== 0xFFFD) { e[D[140][j]] = 35840 + j; d[35840 + j] = D[140][j];}\nD[141] = \"��������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[141].length; ++j) if(D[141][j].charCodeAt(0) !== 0xFFFD) { e[D[141][j]] = 36096 + j; d[36096 + j] = D[141][j];}\nD[142] = \"��������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[142].length; ++j) if(D[142][j].charCodeAt(0) !== 0xFFFD) { e[D[142][j]] = 36352 + j; d[36352 + j] = D[142][j];}\nD[143] = \"��������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[143].length; ++j) if(D[143][j].charCodeAt(0) !== 0xFFFD) { e[D[143][j]] = 36608 + j; d[36608 + j] = D[143][j];}\nD[144] = \"��������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[144].length; ++j) if(D[144][j].charCodeAt(0) !== 0xFFFD) { e[D[144][j]] = 36864 + j; d[36864 + j] = D[144][j];}\nD[145] = \"�����������������������������������������������������������������������������������������������������������������������������������￢￤��㈱№℡������������������������\".split(\"\");\nfor(j = 0; j != D[145].length; ++j) if(D[145][j].charCodeAt(0) !== 0xFFFD) { e[D[145][j]] = 37120 + j; d[37120 + j] = D[145][j];}\nD[146] = \"����������������������������������������������������������������������������������������������������������������������������������������������������������������一乙丁七乃九了二人儿入八几刀刁力匕十卜又三下丈上丫丸凡久么也乞于亡兀刃勺千叉口土士夕大女子孑孓寸小尢尸山川工己已巳巾干廾弋弓才丑丐不中丰丹之尹予云井互五亢仁什仃仆仇仍今介仄元允內六兮公冗凶��\".split(\"\");\nfor(j = 0; j != D[146].length; ++j) if(D[146][j].charCodeAt(0) !== 0xFFFD) { e[D[146][j]] = 37376 + j; d[37376 + j] = D[146][j];}\nD[147] = \"������������������������������������������������分切刈勻勾勿化匹午升�������卅卞厄友及反壬天夫太夭孔少尤尺屯巴幻廿弔引心戈戶手扎������支文斗斤方日曰月木欠止歹毋比毛氏水火爪父爻片牙牛犬王�����丙世丕且丘主乍乏乎以付仔仕他仗代令仙仞充兄冉冊冬凹出凸刊加功包匆北匝仟半卉卡占卯卮去可古右召叮叩叨叼司叵叫另只史叱台句叭叻四囚外央失奴奶孕它尼巨巧左市布平幼弁弘弗必戊打扔扒扑斥旦朮本未末札正母民氐永汁汀氾犯玄玉瓜瓦甘生用甩田由甲申疋白皮皿目矛矢石示禾穴��\".split(\"\");\nfor(j = 0; j != D[147].length; ++j) if(D[147][j].charCodeAt(0) !== 0xFFFD) { e[D[147][j]] = 37632 + j; d[37632 + j] = D[147][j];}\nD[148] = \"������������������������������������������������立丞丟乒乓乩亙交亦亥�������仿伉伙伊伕伍伐休伏仲件任仰仳份企伋光兇兆先全共再冰列������刑划刎刖劣匈匡匠印危吉吏同吊吐吁吋各向名合吃后吆吒因�����回囝圳地在圭圬圯圩夙多夷夸妄奸妃好她如妁字存宇守宅安寺尖屹州帆并年式弛忙忖戎戌戍成扣扛托收早旨旬旭曲曳有朽朴朱朵次此死氖汝汗汙江池汐汕污汛汍汎灰牟牝百竹米糸缶羊羽老考而耒耳聿肉肋肌臣自至臼舌舛舟艮色艾虫血行衣西阡串亨位住佇佗佞伴佛何估佐佑伽伺伸佃佔似但��\".split(\"\");\nfor(j = 0; j != D[148].length; ++j) if(D[148][j].charCodeAt(0) !== 0xFFFD) { e[D[148][j]] = 37888 + j; d[37888 + j] = D[148][j];}\nD[149] = \"������������������������������������������������佣作你伯低伶余佝佈佚�������兌克免兵冶冷別判利刪刨劫助努劬匣即卵吝吭吞吾否呎吧呆������呃吳呈呂君吩告吹吻吸吮吵吶吠吼呀吱含吟听囪困囤囫坊坑�����址坍均坎圾坐坏圻壯夾妝妒妨妞妣妙妖妍妤妓妊妥孝孜孚孛完宋宏尬局屁尿尾岐岑岔岌巫希序庇床廷弄弟彤形彷役忘忌志忍忱快忸忪戒我抄抗抖技扶抉扭把扼找批扳抒扯折扮投抓抑抆改攻攸旱更束李杏材村杜杖杞杉杆杠杓杗步每求汞沙沁沈沉沅沛汪決沐汰沌汨沖沒汽沃汲汾汴沆汶沍沔沘��\".split(\"\");\nfor(j = 0; j != D[149].length; ++j) if(D[149][j].charCodeAt(0) !== 0xFFFD) { e[D[149][j]] = 38144 + j; d[38144 + j] = D[149][j];}\nD[150] = \"������������������������������������������������沂灶灼災灸牢牡牠狄狂�������玖甬甫男甸皂盯矣私秀禿究系罕肖肓肝肘肛肚育良芒芋芍見������角言谷豆豕貝赤走足身車辛辰迂迆迅迄巡邑邢邪邦那酉釆里�����防阮阱阪阬並乖乳事些亞享京佯依侍佳使佬供例來侃佰併侈佩佻侖佾侏侑佺兔兒兕兩具其典冽函刻券刷刺到刮制剁劾劻卒協卓卑卦卷卸卹取叔受味呵咖呸咕咀呻呷咄咒咆呼咐呱呶和咚呢周咋命咎固垃坷坪坩坡坦坤坼夜奉奇奈奄奔妾妻委妹妮姑姆姐姍始姓姊妯妳姒姅孟孤季宗定官宜宙宛尚��\".split(\"\");\nfor(j = 0; j != D[150].length; ++j) if(D[150][j].charCodeAt(0) !== 0xFFFD) { e[D[150][j]] = 38400 + j; d[38400 + j] = D[150][j];}\nD[151] = \"������������������������������������������������屈居屆岷岡岸岩岫岱岳�������帘帚帖帕帛帑幸庚店府底庖延弦弧弩往征彿彼忝忠忽念忿怏������怔怯怵怖怪怕怡性怩怫怛或戕房戾所承拉拌拄抿拂抹拒招披�����拓拔拋拈抨抽押拐拙拇拍抵拚抱拘拖拗拆抬拎放斧於旺昔易昌昆昂明昀昏昕昊昇服朋杭枋枕東果杳杷枇枝林杯杰板枉松析杵枚枓杼杪杲欣武歧歿氓氛泣注泳沱泌泥河沽沾沼波沫法泓沸泄油況沮泗泅泱沿治泡泛泊沬泯泜泖泠炕炎炒炊炙爬爭爸版牧物狀狎狙狗狐玩玨玟玫玥甽疝疙疚的盂盲直��\".split(\"\");\nfor(j = 0; j != D[151].length; ++j) if(D[151][j].charCodeAt(0) !== 0xFFFD) { e[D[151][j]] = 38656 + j; d[38656 + j] = D[151][j];}\nD[152] = \"������������������������������������������������知矽社祀祁秉秈空穹竺�������糾罔羌羋者肺肥肢肱股肫肩肴肪肯臥臾舍芳芝芙芭芽芟芹花������芬芥芯芸芣芰芾芷虎虱初表軋迎返近邵邸邱邶采金長門阜陀�����阿阻附陂隹雨青非亟亭亮信侵侯便俠俑俏保促侶俘俟俊俗侮俐俄係俚俎俞侷兗冒冑冠剎剃削前剌剋則勇勉勃勁匍南卻厚叛咬哀咨哎哉咸咦咳哇哂咽咪品哄哈咯咫咱咻咩咧咿囿垂型垠垣垢城垮垓奕契奏奎奐姜姘姿姣姨娃姥姪姚姦威姻孩宣宦室客宥封屎屏屍屋峙峒巷帝帥帟幽庠度建弈弭彥很��\".split(\"\");\nfor(j = 0; j != D[152].length; ++j) if(D[152][j].charCodeAt(0) !== 0xFFFD) { e[D[152][j]] = 38912 + j; d[38912 + j] = D[152][j];}\nD[153] = \"������������������������������������������������待徊律徇後徉怒思怠急�������怎怨恍恰恨恢恆恃恬恫恪恤扁拜挖按拼拭持拮拽指拱拷拯括������拾拴挑挂政故斫施既春昭映昧是星昨昱昤曷柿染柱柔某柬架�����枯柵柩柯柄柑枴柚查枸柏柞柳枰柙柢柝柒歪殃殆段毒毗氟泉洋洲洪流津洌洱洞洗活洽派洶洛泵洹洧洸洩洮洵洎洫炫為炳炬炯炭炸炮炤爰牲牯牴狩狠狡玷珊玻玲珍珀玳甚甭畏界畎畋疫疤疥疢疣癸皆皇皈盈盆盃盅省盹相眉看盾盼眇矜砂研砌砍祆祉祈祇禹禺科秒秋穿突竿竽籽紂紅紀紉紇約紆缸��\".split(\"\");\nfor(j = 0; j != D[153].length; ++j) if(D[153][j].charCodeAt(0) !== 0xFFFD) { e[D[153][j]] = 39168 + j; d[39168 + j] = D[153][j];}\nD[154] = \"������������������������������������������������美羿耐耍耑耶胖胥胚胃�������胄背胡胛胎胞胤胝致舢苧范茅苣苛苦茄若茂茉苒苗英茁苜苔������苑苞苓苟苯茆虐虹虻虺衍衫要觔計訂訃貞負赴赳趴軍軌述迦�����迢迪迥迭迫迤迨郊郎郁郃酋酊重閂限陋陌降面革韋韭音頁風飛食首香乘亳倌倍倣俯倦倥俸倩倖倆值借倚倒們俺倀倔倨俱倡個候倘俳修倭倪俾倫倉兼冤冥冢凍凌准凋剖剜剔剛剝匪卿原厝叟哨唐唁唷哼哥哲唆哺唔哩哭員唉哮哪哦唧唇哽唏圃圄埂埔埋埃堉夏套奘奚娑娘娜娟娛娓姬娠娣娩娥娌娉��\".split(\"\");\nfor(j = 0; j != D[154].length; ++j) if(D[154][j].charCodeAt(0) !== 0xFFFD) { e[D[154][j]] = 39424 + j; d[39424 + j] = D[154][j];}\nD[155] = \"������������������������������������������������孫屘宰害家宴宮宵容宸�������射屑展屐峭峽峻峪峨峰島崁峴差席師庫庭座弱徒徑徐恙恣恥������恐恕恭恩息悄悟悚悍悔悌悅悖扇拳挈拿捎挾振捕捂捆捏捉挺�����捐挽挪挫挨捍捌效敉料旁旅時晉晏晃晒晌晅晁書朔朕朗校核案框桓根桂桔栩梳栗桌桑栽柴桐桀格桃株桅栓栘桁殊殉殷氣氧氨氦氤泰浪涕消涇浦浸海浙涓浬涉浮浚浴浩涌涊浹涅浥涔烊烘烤烙烈烏爹特狼狹狽狸狷玆班琉珮珠珪珞畔畝畜畚留疾病症疲疳疽疼疹痂疸皋皰益盍盎眩真眠眨矩砰砧砸��\".split(\"\");\nfor(j = 0; j != D[155].length; ++j) if(D[155][j].charCodeAt(0) !== 0xFFFD) { e[D[155][j]] = 39680 + j; d[39680 + j] = D[155][j];}\nD[156] = \"������������������������������������������������砝破砷砥砭砠砟砲祕祐�������祠祟祖神祝祗祚秤秣秧租秦秩秘窄窈站笆笑粉紡紗紋紊素索������純紐紕級紜納紙紛缺罟羔翅翁耆耄耘耕耙耗耽耿胱脂胰脅胭�����胴脆胸胳脈能脊胼胯臭臬舀舐航舫舨般芻茫荒荔荊茸荐草茵茴荏茲茹茶茗荀茱茨荃虔蚊蚪蚓蚤蚩蚌蚣蚜衰衷袁袂衽衹記訐討訌訕訊託訓訖訏訑豈豺豹財貢起躬軒軔軏辱送逆迷退迺迴逃追逅迸邕郡郝郢酒配酌釘針釗釜釙閃院陣陡陛陝除陘陞隻飢馬骨高鬥鬲鬼乾偺偽停假偃偌做偉健偶偎偕偵��\".split(\"\");\nfor(j = 0; j != D[156].length; ++j) if(D[156][j].charCodeAt(0) !== 0xFFFD) { e[D[156][j]] = 39936 + j; d[39936 + j] = D[156][j];}\nD[157] = \"������������������������������������������������側偷偏倏偯偭兜冕凰剪�������副勒務勘動匐匏匙匿區匾參曼商啪啦啄啞啡啃啊唱啖問啕唯������啤唸售啜唬啣唳啁啗圈國圉域堅堊堆埠埤基堂堵執培夠奢娶�����婁婉婦婪婀娼婢婚婆婊孰寇寅寄寂宿密尉專將屠屜屝崇崆崎崛崖崢崑崩崔崙崤崧崗巢常帶帳帷康庸庶庵庾張強彗彬彩彫得徙從徘御徠徜恿患悉悠您惋悴惦悽情悻悵惜悼惘惕惆惟悸惚惇戚戛扈掠控捲掖探接捷捧掘措捱掩掉掃掛捫推掄授掙採掬排掏掀捻捩捨捺敝敖救教敗啟敏敘敕敔斜斛斬族��\".split(\"\");\nfor(j = 0; j != D[157].length; ++j) if(D[157][j].charCodeAt(0) !== 0xFFFD) { e[D[157][j]] = 40192 + j; d[40192 + j] = D[157][j];}\nD[158] = \"������������������������������������������������旋旌旎晝晚晤晨晦晞曹�������勗望梁梯梢梓梵桿桶梱梧梗械梃棄梭梆梅梔條梨梟梡梂欲殺������毫毬氫涎涼淳淙液淡淌淤添淺清淇淋涯淑涮淞淹涸混淵淅淒�����渚涵淚淫淘淪深淮淨淆淄涪淬涿淦烹焉焊烽烯爽牽犁猜猛猖猓猙率琅琊球理現琍瓠瓶瓷甜產略畦畢異疏痔痕疵痊痍皎盔盒盛眷眾眼眶眸眺硫硃硎祥票祭移窒窕笠笨笛第符笙笞笮粒粗粕絆絃統紮紹紼絀細紳組累終紲紱缽羞羚翌翎習耜聊聆脯脖脣脫脩脰脤舂舵舷舶船莎莞莘荸莢莖莽莫莒莊莓��\".split(\"\");\nfor(j = 0; j != D[158].length; ++j) if(D[158][j].charCodeAt(0) !== 0xFFFD) { e[D[158][j]] = 40448 + j; d[40448 + j] = D[158][j];}\nD[159] = \"������������������������������������������������莉莠荷荻荼莆莧處彪蛇�������蛀蚶蛄蚵蛆蛋蚱蚯蛉術袞袈被袒袖袍袋覓規訪訝訣訥許設訟������訛訢豉豚販責貫貨貪貧赧赦趾趺軛軟這逍通逗連速逝逐逕逞�����造透逢逖逛途部郭都酗野釵釦釣釧釭釩閉陪陵陳陸陰陴陶陷陬雀雪雩章竟頂頃魚鳥鹵鹿麥麻傢傍傅備傑傀傖傘傚最凱割剴創剩勞勝勛博厥啻喀喧啼喊喝喘喂喜喪喔喇喋喃喳單喟唾喲喚喻喬喱啾喉喫喙圍堯堪場堤堰報堡堝堠壹壺奠婷媚婿媒媛媧孳孱寒富寓寐尊尋就嵌嵐崴嵇巽幅帽幀幃幾廊��\".split(\"\");\nfor(j = 0; j != D[159].length; ++j) if(D[159][j].charCodeAt(0) !== 0xFFFD) { e[D[159][j]] = 40704 + j; d[40704 + j] = D[159][j];}\nD[160] = \"������������������������������������������������廁廂廄弼彭復循徨惑惡�������悲悶惠愜愣惺愕惰惻惴慨惱愎惶愉愀愒戟扉掣掌描揀揩揉揆������揍插揣提握揖揭揮捶援揪換摒揚揹敞敦敢散斑斐斯普晰晴晶�����景暑智晾晷曾替期朝棺棕棠棘棗椅棟棵森棧棹棒棲棣棋棍植椒椎棉棚楮棻款欺欽殘殖殼毯氮氯氬港游湔渡渲湧湊渠渥渣減湛湘渤湖湮渭渦湯渴湍渺測湃渝渾滋溉渙湎湣湄湲湩湟焙焚焦焰無然煮焜牌犄犀猶猥猴猩琺琪琳琢琥琵琶琴琯琛琦琨甥甦畫番痢痛痣痙痘痞痠登發皖皓皴盜睏短硝硬硯��\".split(\"\");\nfor(j = 0; j != D[160].length; ++j) if(D[160][j].charCodeAt(0) !== 0xFFFD) { e[D[160][j]] = 40960 + j; d[40960 + j] = D[160][j];}\nD[161] = \"������������������������������������������������稍稈程稅稀窘窗窖童竣�������等策筆筐筒答筍筋筏筑粟粥絞結絨絕紫絮絲絡給絢絰絳善翔������翕耋聒肅腕腔腋腑腎脹腆脾腌腓腴舒舜菩萃菸萍菠菅萋菁華�����菱菴著萊菰萌菌菽菲菊萸萎萄菜萇菔菟虛蛟蛙蛭蛔蛛蛤蛐蛞街裁裂袱覃視註詠評詞証詁詔詛詐詆訴診訶詖象貂貯貼貳貽賁費賀貴買貶貿貸越超趁跎距跋跚跑跌跛跆軻軸軼辜逮逵週逸進逶鄂郵鄉郾酣酥量鈔鈕鈣鈉鈞鈍鈐鈇鈑閔閏開閑間閒閎隊階隋陽隅隆隍陲隄雁雅雄集雇雯雲韌項順須飧飪��\".split(\"\");\nfor(j = 0; j != D[161].length; ++j) if(D[161][j].charCodeAt(0) !== 0xFFFD) { e[D[161][j]] = 41216 + j; d[41216 + j] = D[161][j];}\nD[162] = \"������������������������������������������������飯飩飲飭馮馭黃黍黑亂�������傭債傲傳僅傾催傷傻傯僇剿剷剽募勦勤勢勣匯嗟嗨嗓嗦嗎嗜������嗇嗑嗣嗤嗯嗚嗡嗅嗆嗥嗉園圓塞塑塘塗塚塔填塌塭塊塢塒塋�����奧嫁嫉嫌媾媽媼媳嫂媲嵩嵯幌幹廉廈弒彙徬微愚意慈感想愛惹愁愈慎慌慄慍愾愴愧愍愆愷戡戢搓搾搞搪搭搽搬搏搜搔損搶搖搗搆敬斟新暗暉暇暈暖暄暘暍會榔業楚楷楠楔極椰概楊楨楫楞楓楹榆楝楣楛歇歲毀殿毓毽溢溯滓溶滂源溝滇滅溥溘溼溺溫滑準溜滄滔溪溧溴煎煙煩煤煉照煜煬煦煌煥��\".split(\"\");\nfor(j = 0; j != D[162].length; ++j) if(D[162][j].charCodeAt(0) !== 0xFFFD) { e[D[162][j]] = 41472 + j; d[41472 + j] = D[162][j];}\nD[163] = \"������������������������������������������������煞煆煨煖爺牒猷獅猿猾�������瑯瑚瑕瑟瑞瑁琿瑙瑛瑜當畸瘀痰瘁痲痱痺痿痴痳盞盟睛睫睦������睞督睹睪睬睜睥睨睢矮碎碰碗碘碌碉硼碑碓硿祺祿禁萬禽稜�����稚稠稔稟稞窟窠筷節筠筮筧粱粳粵經絹綑綁綏絛置罩罪署義羨群聖聘肆肄腱腰腸腥腮腳腫腹腺腦舅艇蒂葷落萱葵葦葫葉葬葛萼萵葡董葩葭葆虞虜號蛹蜓蜈蜇蜀蛾蛻蜂蜃蜆蜊衙裟裔裙補裘裝裡裊裕裒覜解詫該詳試詩詰誇詼詣誠話誅詭詢詮詬詹詻訾詨豢貊貉賊資賈賄貲賃賂賅跡跟跨路跳跺跪��\".split(\"\");\nfor(j = 0; j != D[163].length; ++j) if(D[163][j].charCodeAt(0) !== 0xFFFD) { e[D[163][j]] = 41728 + j; d[41728 + j] = D[163][j];}\nD[164] = \"������������������������������������������������跤跦躲較載軾輊辟農運�������遊道遂達逼違遐遇遏過遍遑逾遁鄒鄗酬酪酩釉鈷鉗鈸鈽鉀鈾������鉛鉋鉤鉑鈴鉉鉍鉅鈹鈿鉚閘隘隔隕雍雋雉雊雷電雹零靖靴靶�����預頑頓頊頒頌飼飴飽飾馳馱馴髡鳩麂鼎鼓鼠僧僮僥僖僭僚僕像僑僱僎僩兢凳劃劂匱厭嗾嘀嘛嘗嗽嘔嘆嘉嘍嘎嗷嘖嘟嘈嘐嗶團圖塵塾境墓墊塹墅塽壽夥夢夤奪奩嫡嫦嫩嫗嫖嫘嫣孵寞寧寡寥實寨寢寤察對屢嶄嶇幛幣幕幗幔廓廖弊彆彰徹慇愿態慷慢慣慟慚慘慵截撇摘摔撤摸摟摺摑摧搴摭摻敲斡��\".split(\"\");\nfor(j = 0; j != D[164].length; ++j) if(D[164][j].charCodeAt(0) !== 0xFFFD) { e[D[164][j]] = 41984 + j; d[41984 + j] = D[164][j];}\nD[165] = \"������������������������������������������������旗旖暢暨暝榜榨榕槁榮�������槓構榛榷榻榫榴槐槍榭槌榦槃榣歉歌氳漳演滾漓滴漩漾漠漬������漏漂漢滿滯漆漱漸漲漣漕漫漯澈漪滬漁滲滌滷熔熙煽熊熄熒�����爾犒犖獄獐瑤瑣瑪瑰瑭甄疑瘧瘍瘋瘉瘓盡監瞄睽睿睡磁碟碧碳碩碣禎福禍種稱窪窩竭端管箕箋筵算箝箔箏箸箇箄粹粽精綻綰綜綽綾綠緊綴網綱綺綢綿綵綸維緒緇綬罰翠翡翟聞聚肇腐膀膏膈膊腿膂臧臺與舔舞艋蓉蒿蓆蓄蒙蒞蒲蒜蓋蒸蓀蓓蒐蒼蓑蓊蜿蜜蜻蜢蜥蜴蜘蝕蜷蜩裳褂裴裹裸製裨褚裯��\".split(\"\");\nfor(j = 0; j != D[165].length; ++j) if(D[165][j].charCodeAt(0) !== 0xFFFD) { e[D[165][j]] = 42240 + j; d[42240 + j] = D[165][j];}\nD[166] = \"������������������������������������������������誦誌語誣認誡誓誤說誥�������誨誘誑誚誧豪貍貌賓賑賒赫趙趕跼輔輒輕輓辣遠遘遜遣遙遞������遢遝遛鄙鄘鄞酵酸酷酴鉸銬銀銅銘銖鉻銓銜銨鉼銑閡閨閩閣�����閥閤隙障際雌雒需靼鞅韶頗領颯颱餃餅餌餉駁骯骰髦魁魂鳴鳶鳳麼鼻齊億儀僻僵價儂儈儉儅凜劇劈劉劍劊勰厲嘮嘻嘹嘲嘿嘴嘩噓噎噗噴嘶嘯嘰墀墟增墳墜墮墩墦奭嬉嫻嬋嫵嬌嬈寮寬審寫層履嶝嶔幢幟幡廢廚廟廝廣廠彈影德徵慶慧慮慝慕憂慼慰慫慾憧憐憫憎憬憚憤憔憮戮摩摯摹撞撲撈撐撰��\".split(\"\");\nfor(j = 0; j != D[166].length; ++j) if(D[166][j].charCodeAt(0) !== 0xFFFD) { e[D[166][j]] = 42496 + j; d[42496 + j] = D[166][j];}\nD[167] = \"������������������������������������������������撥撓撕撩撒撮播撫撚撬�������撙撢撳敵敷數暮暫暴暱樣樟槨樁樞標槽模樓樊槳樂樅槭樑歐������歎殤毅毆漿潼澄潑潦潔澆潭潛潸潮澎潺潰潤澗潘滕潯潠潟熟�����熬熱熨牖犛獎獗瑩璋璃瑾璀畿瘠瘩瘟瘤瘦瘡瘢皚皺盤瞎瞇瞌瞑瞋磋磅確磊碾磕碼磐稿稼穀稽稷稻窯窮箭箱範箴篆篇篁箠篌糊締練緯緻緘緬緝編緣線緞緩綞緙緲緹罵罷羯翩耦膛膜膝膠膚膘蔗蔽蔚蓮蔬蔭蔓蔑蔣蔡蔔蓬蔥蓿蔆螂蝴蝶蝠蝦蝸蝨蝙蝗蝌蝓衛衝褐複褒褓褕褊誼諒談諄誕請諸課諉諂調��\".split(\"\");\nfor(j = 0; j != D[167].length; ++j) if(D[167][j].charCodeAt(0) !== 0xFFFD) { e[D[167][j]] = 42752 + j; d[42752 + j] = D[167][j];}\nD[168] = \"������������������������������������������������誰論諍誶誹諛豌豎豬賠�������賞賦賤賬賭賢賣賜質賡赭趟趣踫踐踝踢踏踩踟踡踞躺輝輛輟������輩輦輪輜輞輥適遮遨遭遷鄰鄭鄧鄱醇醉醋醃鋅銻銷鋪鋤鋁銳�����銼鋒鋇鋰銲閭閱霄霆震霉靠鞍鞋鞏頡頫頜颳養餓餒餘駝駐駟駛駑駕駒駙骷髮髯鬧魅魄魷魯鴆鴉鴃麩麾黎墨齒儒儘儔儐儕冀冪凝劑劓勳噙噫噹噩噤噸噪器噥噱噯噬噢噶壁墾壇壅奮嬝嬴學寰導彊憲憑憩憊懍憶憾懊懈戰擅擁擋撻撼據擄擇擂操撿擒擔撾整曆曉暹曄曇暸樽樸樺橙橫橘樹橄橢橡橋橇��\".split(\"\");\nfor(j = 0; j != D[168].length; ++j) if(D[168][j].charCodeAt(0) !== 0xFFFD) { e[D[168][j]] = 43008 + j; d[43008 + j] = D[168][j];}\nD[169] = \"������������������������������������������������樵機橈歙歷氅濂澱澡濃�������澤濁澧澳激澹澶澦澠澴熾燉燐燒燈燕熹燎燙燜燃燄獨璜璣璘������璟璞瓢甌甍瘴瘸瘺盧盥瞠瞞瞟瞥磨磚磬磧禦積穎穆穌穋窺篙�����簑築篤篛篡篩篦糕糖縊縑縈縛縣縞縝縉縐罹羲翰翱翮耨膳膩膨臻興艘艙蕊蕙蕈蕨蕩蕃蕉蕭蕪蕞螃螟螞螢融衡褪褲褥褫褡親覦諦諺諫諱謀諜諧諮諾謁謂諷諭諳諶諼豫豭貓賴蹄踱踴蹂踹踵輻輯輸輳辨辦遵遴選遲遼遺鄴醒錠錶鋸錳錯錢鋼錫錄錚錐錦錡錕錮錙閻隧隨險雕霎霑霖霍霓霏靛靜靦鞘頰��\".split(\"\");\nfor(j = 0; j != D[169].length; ++j) if(D[169][j].charCodeAt(0) !== 0xFFFD) { e[D[169][j]] = 43264 + j; d[43264 + j] = D[169][j];}\nD[170] = \"������������������������������������������������頸頻頷頭頹頤餐館餞餛�������餡餚駭駢駱骸骼髻髭鬨鮑鴕鴣鴦鴨鴒鴛默黔龍龜優償儡儲勵������嚎嚀嚐嚅嚇嚏壕壓壑壎嬰嬪嬤孺尷屨嶼嶺嶽嶸幫彌徽應懂懇�����懦懋戲戴擎擊擘擠擰擦擬擱擢擭斂斃曙曖檀檔檄檢檜櫛檣橾檗檐檠歜殮毚氈濘濱濟濠濛濤濫濯澀濬濡濩濕濮濰燧營燮燦燥燭燬燴燠爵牆獰獲璩環璦璨癆療癌盪瞳瞪瞰瞬瞧瞭矯磷磺磴磯礁禧禪穗窿簇簍篾篷簌篠糠糜糞糢糟糙糝縮績繆縷縲繃縫總縱繅繁縴縹繈縵縿縯罄翳翼聱聲聰聯聳臆臃膺��\".split(\"\");\nfor(j = 0; j != D[170].length; ++j) if(D[170][j].charCodeAt(0) !== 0xFFFD) { e[D[170][j]] = 43520 + j; d[43520 + j] = D[170][j];}\nD[171] = \"������������������������������������������������臂臀膿膽臉膾臨舉艱薪�������薄蕾薜薑薔薯薛薇薨薊薦虧蟀蟑螳蟒蟆螫螻螺蟈蟋褻褶襄褸������褽覬謎謗謙講謊謠謝謄謐豁谿豳賺賽購賸賻趨蹉蹋蹈蹊轄輾�����轂轅輿避遽還邁邂邀鄹醣醞醜鍍鎂錨鍵鍊鍥鍋錘鍾鍬鍛鍰鍚鍔闊闋闌闈闆隱隸雖霜霞鞠韓顆颶餵騁駿鮮鮫鮪鮭鴻鴿麋黏點黜黝黛鼾齋叢嚕嚮壙壘嬸彝懣戳擴擲擾攆擺擻擷斷曜朦檳檬櫃檻檸櫂檮檯歟歸殯瀉瀋濾瀆濺瀑瀏燻燼燾燸獷獵璧璿甕癖癘癒瞽瞿瞻瞼礎禮穡穢穠竄竅簫簧簪簞簣簡糧織��\".split(\"\");\nfor(j = 0; j != D[171].length; ++j) if(D[171][j].charCodeAt(0) !== 0xFFFD) { e[D[171][j]] = 43776 + j; d[43776 + j] = D[171][j];}\nD[172] = \"������������������������������������������������繕繞繚繡繒繙罈翹翻職�������聶臍臏舊藏薩藍藐藉薰薺薹蟯蟬蟲蟠覆覲觴謨謹謬謫豐贅蹙������蹣蹦蹤蹟蹕軀轉轍邇邃邈醫醬釐鎔鎊鎖鎢鎳鎮鎬鎰鎘鎚鎗闔�����闖闐闕離雜雙雛雞霤鞣鞦鞭韹額顏題顎顓颺餾餿餽餮馥騎髁鬃鬆魏魎魍鯊鯉鯽鯈鯀鵑鵝鵠黠鼕鼬儳嚥嚨壞壟壢寵龐廬懲懷懶懵攀攏曠曝櫥櫝櫚櫓瀛瀟瀨瀚瀝瀕瀘爆爍牘犢獸獺璽瓊瓣疇疆癟癡矇礙禱穫穩簾簿簸簽簷籀繫繭繹繩繪繳羅羶羹羸臘藩藝藪藕藤藥藷蟻蠅蠍蟹蟾襠襟襖襞譁譜識證譚��\".split(\"\");\nfor(j = 0; j != D[172].length; ++j) if(D[172][j].charCodeAt(0) !== 0xFFFD) { e[D[172][j]] = 44032 + j; d[44032 + j] = D[172][j];}\nD[173] = \"������������������������������������������������譎譏譆譙贈贊蹼蹲躇蹶�������蹬蹺蹴轔轎辭邊邋醱醮鏡鏑鏟鏃鏈鏜鏝鏖鏢鏍鏘鏤鏗鏨關隴������難霪霧靡韜韻類願顛颼饅饉騖騙鬍鯨鯧鯖鯛鶉鵡鵲鵪鵬麒麗�����麓麴勸嚷嚶嚴嚼壤孀孃孽寶巉懸懺攘攔攙曦朧櫬瀾瀰瀲爐獻瓏癢癥礦礪礬礫竇競籌籃籍糯糰辮繽繼纂罌耀臚艦藻藹蘑藺蘆蘋蘇蘊蠔蠕襤覺觸議譬警譯譟譫贏贍躉躁躅躂醴釋鐘鐃鏽闡霰飄饒饑馨騫騰騷騵鰓鰍鹹麵黨鼯齟齣齡儷儸囁囀囂夔屬巍懼懾攝攜斕曩櫻欄櫺殲灌爛犧瓖瓔癩矓籐纏續羼��\".split(\"\");\nfor(j = 0; j != D[173].length; ++j) if(D[173][j].charCodeAt(0) !== 0xFFFD) { e[D[173][j]] = 44288 + j; d[44288 + j] = D[173][j];}\nD[174] = \"������������������������������������������������蘗蘭蘚蠣蠢蠡蠟襪襬覽�������譴護譽贓躊躍躋轟辯醺鐮鐳鐵鐺鐸鐲鐫闢霸霹露響顧顥饗驅������驃驀騾髏魔魑鰭鰥鶯鶴鷂鶸麝黯鼙齜齦齧儼儻囈囊囉孿巔巒�����彎懿攤權歡灑灘玀瓤疊癮癬禳籠籟聾聽臟襲襯觼讀贖贗躑躓轡酈鑄鑑鑒霽霾韃韁顫饕驕驍髒鬚鱉鰱鰾鰻鷓鷗鼴齬齪龔囌巖戀攣攫攪曬欐瓚竊籤籣籥纓纖纔臢蘸蘿蠱變邐邏鑣鑠鑤靨顯饜驚驛驗髓體髑鱔鱗鱖鷥麟黴囑壩攬灞癱癲矗罐羈蠶蠹衢讓讒讖艷贛釀鑪靂靈靄韆顰驟鬢魘鱟鷹鷺鹼鹽鼇齷��\".split(\"\");\nfor(j = 0; j != D[174].length; ++j) if(D[174][j].charCodeAt(0) !== 0xFFFD) { e[D[174][j]] = 44544 + j; d[44544 + j] = D[174][j];}\nD[175] = \"������������������������������������������������齲廳欖灣籬籮蠻觀躡釁�������鑲鑰顱饞髖鬣黌灤矚讚鑷韉驢驥纜讜躪釅鑽鑾鑼鱷鱸黷豔鑿������鸚爨驪鬱鸛鸞籲ソゾタダチヂッツヅテデトドナニヌネノハ�����バパヒビピフブプヘベペホボポマミムメモャヤュユョヨラリルレロヮワヰヱヲンヴヵヶАБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдеёжзийклмнопрстуфхцчшщъыьэюя⇧↸↹��䅚ｸ刂�冈�������������\".split(\"\");\nfor(j = 0; j != D[175].length; ++j) if(D[175][j].charCodeAt(0) !== 0xFFFD) { e[D[175][j]] = 44800 + j; d[44800 + j] = D[175][j];}\nD[221] = \"������������������������������������������������乂乜凵匚厂万丌乇亍囗�������屮彳丏冇与丮亓仂仉仈冘勼卬厹圠夃夬尐巿旡殳毌气爿丱丼������仨仜仩仡仝仚刌刉匜卌圢圣夗夯宁宄尒尻屴屳帄庀庂忉戉扐�����氕氶汃氿氻犮犰玊禸肊阞伎优伬仵伔仱伀价伈伝伂伅伢伓伄仴伒冱刓刐劦匢匟卍厊吇囡囟圮圪圴夼妀奼妅奻奾奷奿孖尕尥屼屺屻屾巟幵庄异弚彴忕忔忏扜扞扤扡扦扢扙扠扚扥攷旯旮朾朹朸朻机朿朼朳氘汆汒汜汏汊汔汋汌灱牞犴犵玎甪癿穵网艸艼芀艽艿虍襾邙邗邘邛邔阢阤阠阣佖伻佢佉体��\".split(\"\");\nfor(j = 0; j != D[221].length; ++j) if(D[221][j].charCodeAt(0) !== 0xFFFD) { e[D[221][j]] = 56576 + j; d[56576 + j] = D[221][j];}\nD[222] = \"������������������������������������������������佤伾佧佒佟佁佘伭伳伿�������佡冏冹刜刞刡劭劮匉卣卲厎厏吰吷吪呔呅吙吜吥吘吽呏呁吨������吤呇囮囧囥坁坅坌坉坋坒夆奀妦妘妠妗妎妢妐妏妧妡宎宒尨�����尪岍岏岈岋岉岒岊岆岓岕巠帊帎庋庉庌庈庍弅弝彸彶忒忑忐忭忨忮忳忡忤忣忺忯忷忻怀忴戺抃抌抎抏抔抇扱扻扺扰抁抈扷扽扲扴旰旴旳旲旵杅杇杙杕杌杈杝杍杚杋毐氙氚汸汧汫沄沋沏汱汯汩沚汭沇沕沜汦汳汥汻沎灴灺牣犿犽狃狆狁犺狅玕玗玓玔玒町甹疔疕皁礽耴肕肙肐肒肜芐芏芅芎芑芓��\".split(\"\");\nfor(j = 0; j != D[222].length; ++j) if(D[222][j].charCodeAt(0) !== 0xFFFD) { e[D[222][j]] = 56832 + j; d[56832 + j] = D[222][j];}\nD[223] = \"������������������������������������������������芊芃芄豸迉辿邟邡邥邞�������邧邠阰阨阯阭丳侘佼侅佽侀侇佶佴侉侄佷佌侗佪侚佹侁佸侐������侜侔侞侒侂侕佫佮冞冼冾刵刲刳剆刱劼匊匋匼厒厔咇呿咁咑�����咂咈呫呺呾呥呬呴呦咍呯呡呠咘呣呧呤囷囹坯坲坭坫坱坰坶垀坵坻坳坴坢坨坽夌奅妵妺姏姎妲姌姁妶妼姃姖妱妽姀姈妴姇孢孥宓宕屄屇岮岤岠岵岯岨岬岟岣岭岢岪岧岝岥岶岰岦帗帔帙弨弢弣弤彔徂彾彽忞忥怭怦怙怲怋怴怊怗怳怚怞怬怢怍怐怮怓怑怌怉怜戔戽抭抴拑抾抪抶拊抮抳抯抻抩抰��\".split(\"\");\nfor(j = 0; j != D[223].length; ++j) if(D[223][j].charCodeAt(0) !== 0xFFFD) { e[D[223][j]] = 57088 + j; d[57088 + j] = D[223][j];}\nD[224] = \"������������������������������������������������抸攽斨斻昉旼昄昒昈旻�������昃昋昍昅旽昑昐曶朊枅杬枎枒杶杻枘枆构杴枍枌杺枟枑枙枃������杽极杸杹枔欥殀歾毞氝沓泬泫泮泙沶泔沭泧沷泐泂沺泃泆泭�����泲泒泝沴沊沝沀泞泀洰泍泇沰泹泏泩泑炔炘炅炓炆炄炑炖炂炚炃牪狖狋狘狉狜狒狔狚狌狑玤玡玭玦玢玠玬玝瓝瓨甿畀甾疌疘皯盳盱盰盵矸矼矹矻矺矷祂礿秅穸穻竻籵糽耵肏肮肣肸肵肭舠芠苀芫芚芘芛芵芧芮芼芞芺芴芨芡芩苂芤苃芶芢虰虯虭虮豖迒迋迓迍迖迕迗邲邴邯邳邰阹阽阼阺陃俍俅��\".split(\"\");\nfor(j = 0; j != D[224].length; ++j) if(D[224][j].charCodeAt(0) !== 0xFFFD) { e[D[224][j]] = 57344 + j; d[57344 + j] = D[224][j];}\nD[225] = \"������������������������������������������������俓侲俉俋俁俔俜俙侻侳�������俛俇俖侺俀侹俬剄剉勀勂匽卼厗厖厙厘咺咡咭咥哏哃茍咷咮������哖咶哅哆咠呰咼咢咾呲哞咰垵垞垟垤垌垗垝垛垔垘垏垙垥垚�����垕壴复奓姡姞姮娀姱姝姺姽姼姶姤姲姷姛姩姳姵姠姾姴姭宨屌峐峘峌峗峋峛峞峚峉峇峊峖峓峔峏峈峆峎峟峸巹帡帢帣帠帤庰庤庢庛庣庥弇弮彖徆怷怹恔恲恞恅恓恇恉恛恌恀恂恟怤恄恘恦恮扂扃拏挍挋拵挎挃拫拹挏挌拸拶挀挓挔拺挕拻拰敁敃斪斿昶昡昲昵昜昦昢昳昫昺昝昴昹昮朏朐柁柲柈��\".split(\"\");\nfor(j = 0; j != D[225].length; ++j) if(D[225][j].charCodeAt(0) !== 0xFFFD) { e[D[225][j]] = 57600 + j; d[57600 + j] = D[225][j];}\nD[226] = \"������������������������������������������������枺柜枻柸柘柀枷柅柫柤�������柟枵柍枳柷柶柮柣柂枹柎柧柰枲柼柆柭柌枮柦柛柺柉柊柃柪������柋欨殂殄殶毖毘毠氠氡洨洴洭洟洼洿洒洊泚洳洄洙洺洚洑洀�����洝浂洁洘洷洃洏浀洇洠洬洈洢洉洐炷炟炾炱炰炡炴炵炩牁牉牊牬牰牳牮狊狤狨狫狟狪狦狣玅珌珂珈珅玹玶玵玴珫玿珇玾珃珆玸珋瓬瓮甮畇畈疧疪癹盄眈眃眄眅眊盷盻盺矧矨砆砑砒砅砐砏砎砉砃砓祊祌祋祅祄秕种秏秖秎窀穾竑笀笁籺籸籹籿粀粁紃紈紁罘羑羍羾耇耎耏耔耷胘胇胠胑胈胂胐胅��\".split(\"\");\nfor(j = 0; j != D[226].length; ++j) if(D[226][j].charCodeAt(0) !== 0xFFFD) { e[D[226][j]] = 57856 + j; d[57856 + j] = D[226][j];}\nD[227] = \"������������������������������������������������胣胙胜胊胕胉胏胗胦胍�������臿舡芔苙苾苹茇苨茀苕茺苫苖苴苬苡苲苵茌苻苶苰苪苤苠苺������苳苭虷虴虼虳衁衎衧衪衩觓訄訇赲迣迡迮迠郱邽邿郕郅邾郇�����郋郈釔釓陔陏陑陓陊陎倞倅倇倓倢倰倛俵俴倳倷倬俶俷倗倜倠倧倵倯倱倎党冔冓凊凄凅凈凎剡剚剒剞剟剕剢勍匎厞唦哢唗唒哧哳哤唚哿唄唈哫唑唅哱唊哻哷哸哠唎唃唋圁圂埌堲埕埒垺埆垽垼垸垶垿埇埐垹埁夎奊娙娖娭娮娕娏娗娊娞娳孬宧宭宬尃屖屔峬峿峮峱峷崀峹帩帨庨庮庪庬弳弰彧恝��\".split(\"\");\nfor(j = 0; j != D[227].length; ++j) if(D[227][j].charCodeAt(0) !== 0xFFFD) { e[D[227][j]] = 58112 + j; d[58112 + j] = D[227][j];}\nD[228] = \"������������������������������������������������恚恧恁悢悈悀悒悁悝悃�������悕悛悗悇悜悎戙扆拲挐捖挬捄捅挶捃揤挹捋捊挼挩捁挴捘捔������捙挭捇挳捚捑挸捗捀捈敊敆旆旃旄旂晊晟晇晑朒朓栟栚桉栲�����栳栻桋桏栖栱栜栵栫栭栯桎桄栴栝栒栔栦栨栮桍栺栥栠欬欯欭欱欴歭肂殈毦毤毨毣毢毧氥浺浣浤浶洍浡涒浘浢浭浯涑涍淯浿涆浞浧浠涗浰浼浟涂涘洯浨涋浾涀涄洖涃浻浽浵涐烜烓烑烝烋缹烢烗烒烞烠烔烍烅烆烇烚烎烡牂牸牷牶猀狺狴狾狶狳狻猁珓珙珥珖玼珧珣珩珜珒珛珔珝珚珗珘珨瓞瓟��\".split(\"\");\nfor(j = 0; j != D[228].length; ++j) if(D[228][j].charCodeAt(0) !== 0xFFFD) { e[D[228][j]] = 58368 + j; d[58368 + j] = D[228][j];}\nD[229] = \"������������������������������������������������瓴瓵甡畛畟疰痁疻痄痀�������疿疶疺皊盉眝眛眐眓眒眣眑眕眙眚眢眧砣砬砢砵砯砨砮砫砡������砩砳砪砱祔祛祏祜祓祒祑秫秬秠秮秭秪秜秞秝窆窉窅窋窌窊�����窇竘笐笄笓笅笏笈笊笎笉笒粄粑粊粌粈粍粅紞紝紑紎紘紖紓紟紒紏紌罜罡罞罠罝罛羖羒翃翂翀耖耾耹胺胲胹胵脁胻脀舁舯舥茳茭荄茙荑茥荖茿荁茦茜茢荂荎茛茪茈茼荍茖茤茠茷茯茩荇荅荌荓茞茬荋茧荈虓虒蚢蚨蚖蚍蚑蚞蚇蚗蚆蚋蚚蚅蚥蚙蚡蚧蚕蚘蚎蚝蚐蚔衃衄衭衵衶衲袀衱衿衯袃衾衴衼��\".split(\"\");\nfor(j = 0; j != D[229].length; ++j) if(D[229][j].charCodeAt(0) !== 0xFFFD) { e[D[229][j]] = 58624 + j; d[58624 + j] = D[229][j];}\nD[230] = \"������������������������������������������������訒豇豗豻貤貣赶赸趵趷�������趶軑軓迾迵适迿迻逄迼迶郖郠郙郚郣郟郥郘郛郗郜郤酐酎酏������釕釢釚陜陟隼飣髟鬯乿偰偪偡偞偠偓偋偝偲偈偍偁偛偊偢倕�����偅偟偩偫偣偤偆偀偮偳偗偑凐剫剭剬剮勖勓匭厜啵啶唼啍啐唴唪啑啢唶唵唰啒啅唌唲啥啎唹啈唭唻啀啋圊圇埻堔埢埶埜埴堀埭埽堈埸堋埳埏堇埮埣埲埥埬埡堎埼堐埧堁堌埱埩埰堍堄奜婠婘婕婧婞娸娵婭婐婟婥婬婓婤婗婃婝婒婄婛婈媎娾婍娹婌婰婩婇婑婖婂婜孲孮寁寀屙崞崋崝崚崠崌崨崍��\".split(\"\");\nfor(j = 0; j != D[230].length; ++j) if(D[230][j].charCodeAt(0) !== 0xFFFD) { e[D[230][j]] = 58880 + j; d[58880 + j] = D[230][j];}\nD[231] = \"������������������������������������������������崦崥崏崰崒崣崟崮帾帴�������庱庴庹庲庳弶弸徛徖徟悊悐悆悾悰悺惓惔惏惤惙惝惈悱惛悷������惊悿惃惍惀挲捥掊掂捽掽掞掭掝掗掫掎捯掇掐据掯捵掜捭掮�����捼掤挻掟捸掅掁掑掍捰敓旍晥晡晛晙晜晢朘桹梇梐梜桭桮梮梫楖桯梣梬梩桵桴梲梏桷梒桼桫桲梪梀桱桾梛梖梋梠梉梤桸桻梑梌梊桽欶欳欷欸殑殏殍殎殌氪淀涫涴涳湴涬淩淢涷淶淔渀淈淠淟淖涾淥淜淝淛淴淊涽淭淰涺淕淂淏淉淐淲淓淽淗淍淣涻烺焍烷焗烴焌烰焄烳焐烼烿焆焓焀烸烶焋焂焎��\".split(\"\");\nfor(j = 0; j != D[231].length; ++j) if(D[231][j].charCodeAt(0) !== 0xFFFD) { e[D[231][j]] = 59136 + j; d[59136 + j] = D[231][j];}\nD[232] = \"������������������������������������������������牾牻牼牿猝猗猇猑猘猊�������猈狿猏猞玈珶珸珵琄琁珽琇琀珺珼珿琌琋珴琈畤畣痎痒痏痋������痌痑痐皏皉盓眹眯眭眱眲眴眳眽眥眻眵硈硒硉硍硊硌砦硅硐�����祤祧祩祪祣祫祡离秺秸秶秷窏窔窐笵笻笴笥笰笢笤笳笘笪笝笱笫笭笯笲笸笚笣粔粘粖粣紵紽紸紶紺絅紬紩絁絇紾紿絊紻紨罣羕羜羝羛翊翋翍翐翑翇翏翉耟耞耛聇聃聈脘脥脙脛脭脟脬脞脡脕脧脝脢舑舸舳舺舴舲艴莐莣莨莍荺荳莤荴莏莁莕莙荵莔莩荽莃莌莝莛莪莋荾莥莯莈莗莰荿莦莇莮荶虙��\".split(\"\");\nfor(j = 0; j != D[232].length; ++j) if(D[232][j].charCodeAt(0) !== 0xFFFD) { e[D[232][j]] = 59392 + j; d[59392 + j] = D[232][j];}\nD[233] = \"������������������������������������������������虖蚿蚷蛂蛁蛅蚺蚰蛈蚹�������蚳蚸蛌蚴蚻蚼蛃蚽蚾衒袉袕袨袢袪袚袑袡袟袘袧袙袛袗袤袬������袌袓袎覂觖觙觕訰訧訬訞谹谻豜豝豽貥赽赻赹趼跂趹趿跁軘�����軞軝軜軗軠軡逤逋逑逜逌逡郯郪郰郴郲郳郔郫郬郩酖酘酚酓酕釬釴釱釳釸釤釹釪釫釷釨釮镺閆閈陼陭陫陱陯隿靪頄飥馗傛傕傔傞傋傣傃傌傎傝偨傜傒傂傇兟凔匒匑厤厧喑喨喥喭啷噅喢喓喈喏喵喁喣喒喤啽喌喦啿喕喡喎圌堩堷堙堞堧堣堨埵塈堥堜堛堳堿堶堮堹堸堭堬堻奡媯媔媟婺媢媞婸媦��\".split(\"\");\nfor(j = 0; j != D[233].length; ++j) if(D[233][j].charCodeAt(0) !== 0xFFFD) { e[D[233][j]] = 59648 + j; d[59648 + j] = D[233][j];}\nD[234] = \"������������������������������������������������婼媥媬媕媮娷媄媊媗媃�������媋媩婻婽媌媜媏媓媝寪寍寋寔寑寊寎尌尰崷嵃嵫嵁嵋崿崵嵑������嵎嵕崳崺嵒崽崱嵙嵂崹嵉崸崼崲崶嵀嵅幄幁彘徦徥徫惉悹惌�����惢惎惄愔惲愊愖愅惵愓惸惼惾惁愃愘愝愐惿愄愋扊掔掱掰揎揥揨揯揃撝揳揊揠揶揕揲揵摡揟掾揝揜揄揘揓揂揇揌揋揈揰揗揙攲敧敪敤敜敨敥斌斝斞斮旐旒晼晬晻暀晱晹晪晲朁椌棓椄棜椪棬棪棱椏棖棷棫棤棶椓椐棳棡椇棌椈楰梴椑棯棆椔棸棐棽棼棨椋椊椗棎棈棝棞棦棴棑椆棔棩椕椥棇欹欻��\".split(\"\");\nfor(j = 0; j != D[234].length; ++j) if(D[234][j].charCodeAt(0) !== 0xFFFD) { e[D[234][j]] = 59904 + j; d[59904 + j] = D[234][j];}\nD[235] = \"������������������������������������������������欿欼殔殗殙殕殽毰毲毳�������氰淼湆湇渟湉溈渼渽湅湢渫渿湁湝湳渜渳湋湀湑渻渃渮湞湨������湜湡渱渨湠湱湫渹渢渰湓湥渧湸湤湷湕湹湒湦渵渶湚焠焞焯�����烻焮焱焣焥焢焲焟焨焺焛牋牚犈犉犆犅犋猒猋猰猢猱猳猧猲猭猦猣猵猌琮琬琰琫琖琚琡琭琱琤琣琝琩琠琲瓻甯畯畬痧痚痡痦痝痟痤痗皕皒盚睆睇睄睍睅睊睎睋睌矞矬硠硤硥硜硭硱硪确硰硩硨硞硢祴祳祲祰稂稊稃稌稄窙竦竤筊筇筄筈筌筎筀筘筅粢粞粨粡絘絯絣絓絖絧絪絏絭絜絫絒絔絩絑絟��\".split(\"\");\nfor(j = 0; j != D[235].length; ++j) if(D[235][j].charCodeAt(0) !== 0xFFFD) { e[D[235][j]] = 60160 + j; d[60160 + j] = D[235][j];}\nD[236] = \"������������������������������������������������絎缾缿罥罦羢羠羡翗聑�������聏聐胾胔腃腊腒腏腇脽腍脺臦臮臷臸臹舄舼舽舿艵茻菏菹萣������菀菨萒菧菤菼菶萐菆菈菫菣莿萁菝菥菘菿菡菋菎菖菵菉萉萏�����菞萑萆菂菳菕菺菇菑菪萓莚菃菬菮菄菻菗菢萛菛菾蛘蛢蛦蛓蛣蛚蛪蛝蛫蛜蛬蛩蛗蛨蛑衈衖衕袺裗袹袸裀袾袶袼袷袽袲褁裉覕覘覗觝觚觛詎詍訹詙詀詗詘詄詅詒詈詑詊詌詏豟貁貀貺貾貰貹貵趄趀趉跘跓跍跇跖跜跏跕跙跈跗跅軯軷軺軹軦軮軥軵軧軨軶軫軱軬軴軩逭逴逯鄆鄬鄄郿郼鄈郹郻鄁鄀��\".split(\"\");\nfor(j = 0; j != D[236].length; ++j) if(D[236][j].charCodeAt(0) !== 0xFFFD) { e[D[236][j]] = 60416 + j; d[60416 + j] = D[236][j];}\nD[237] = \"������������������������������������������������鄇鄅鄃酡酤酟酢酠鈁鈊�������鈥鈃鈚鈦鈏鈌鈀鈒釿釽鈆鈄鈧鈂鈜鈤鈙鈗鈅鈖镻閍閌閐隇陾������隈隉隃隀雂雈雃雱雰靬靰靮頇颩飫鳦黹亃亄亶傽傿僆傮僄僊�����傴僈僂傰僁傺傱僋僉傶傸凗剺剸剻剼嗃嗛嗌嗐嗋嗊嗝嗀嗔嗄嗩喿嗒喍嗏嗕嗢嗖嗈嗲嗍嗙嗂圔塓塨塤塏塍塉塯塕塎塝塙塥塛堽塣塱壼嫇嫄嫋媺媸媱媵媰媿嫈媻嫆媷嫀嫊媴媶嫍媹媐寖寘寙尟尳嵱嵣嵊嵥嵲嵬嵞嵨嵧嵢巰幏幎幊幍幋廅廌廆廋廇彀徯徭惷慉慊愫慅愶愲愮慆愯慏愩慀戠酨戣戥戤揅揱��\".split(\"\");\nfor(j = 0; j != D[237].length; ++j) if(D[237][j].charCodeAt(0) !== 0xFFFD) { e[D[237][j]] = 60672 + j; d[60672 + j] = D[237][j];}\nD[238] = \"������������������������������������������������揫搐搒搉搠搤搳摃搟搕�������搘搹搷搢搣搌搦搰搨摁搵搯搊搚摀搥搧搋揧搛搮搡搎敯斒旓������暆暌暕暐暋暊暙暔晸朠楦楟椸楎楢楱椿楅楪椹楂楗楙楺楈楉�����椵楬椳椽楥棰楸椴楩楀楯楄楶楘楁楴楌椻楋椷楜楏楑椲楒椯楻椼歆歅歃歂歈歁殛毻毼毹毷毸溛滖滈溏滀溟溓溔溠溱溹滆滒溽滁溞滉溷溰滍溦滏溲溾滃滜滘溙溒溎溍溤溡溿溳滐滊溗溮溣煇煔煒煣煠煁煝煢煲煸煪煡煂煘煃煋煰煟煐煓煄煍煚牏犍犌犑犐犎猼獂猻猺獀獊獉瑄瑊瑋瑒瑑瑗瑀瑏瑐瑎��\".split(\"\");\nfor(j = 0; j != D[238].length; ++j) if(D[238][j].charCodeAt(0) !== 0xFFFD) { e[D[238][j]] = 60928 + j; d[60928 + j] = D[238][j];}\nD[239] = \"������������������������������������������������瑂瑆瑍瑔瓡瓿瓾瓽甝畹�������畷榃痯瘏瘃痷痾痼痹痸瘐痻痶痭痵痽皙皵盝睕睟睠睒睖睚睩������睧睔睙睭矠碇碚碔碏碄碕碅碆碡碃硹碙碀碖硻祼禂祽祹稑稘�����稙稒稗稕稢稓稛稐窣窢窞竫筦筤筭筴筩筲筥筳筱筰筡筸筶筣粲粴粯綈綆綀綍絿綅絺綎絻綃絼綌綔綄絽綒罭罫罧罨罬羦羥羧翛翜耡腤腠腷腜腩腛腢腲朡腞腶腧腯腄腡舝艉艄艀艂艅蓱萿葖葶葹蒏蒍葥葑葀蒆葧萰葍葽葚葙葴葳葝蔇葞萷萺萴葺葃葸萲葅萩菙葋萯葂萭葟葰萹葎葌葒葯蓅蒎萻葇萶萳��\".split(\"\");\nfor(j = 0; j != D[239].length; ++j) if(D[239][j].charCodeAt(0) !== 0xFFFD) { e[D[239][j]] = 61184 + j; d[61184 + j] = D[239][j];}\nD[240] = \"������������������������������������������������葨葾葄萫葠葔葮葐蜋蜄�������蛷蜌蛺蛖蛵蝍蛸蜎蜉蜁蛶蜍蜅裖裋裍裎裞裛裚裌裐覅覛觟觥������觤觡觠觢觜触詶誆詿詡訿詷誂誄詵誃誁詴詺谼豋豊豥豤豦貆�����貄貅賌赨赩趑趌趎趏趍趓趔趐趒跰跠跬跱跮跐跩跣跢跧跲跫跴輆軿輁輀輅輇輈輂輋遒逿遄遉逽鄐鄍鄏鄑鄖鄔鄋鄎酮酯鉈鉒鈰鈺鉦鈳鉥鉞銃鈮鉊鉆鉭鉬鉏鉠鉧鉯鈶鉡鉰鈱鉔鉣鉐鉲鉎鉓鉌鉖鈲閟閜閞閛隒隓隑隗雎雺雽雸雵靳靷靸靲頏頍頎颬飶飹馯馲馰馵骭骫魛鳪鳭鳧麀黽僦僔僗僨僳僛僪僝僤��\".split(\"\");\nfor(j = 0; j != D[240].length; ++j) if(D[240][j].charCodeAt(0) !== 0xFFFD) { e[D[240][j]] = 61440 + j; d[61440 + j] = D[240][j];}\nD[241] = \"������������������������������������������������僓僬僰僯僣僠凘劀劁勩�������勫匰厬嘧嘕嘌嘒嗼嘏嘜嘁嘓嘂嗺嘝嘄嗿嗹墉塼墐墘墆墁塿塴������墋塺墇墑墎塶墂墈塻墔墏壾奫嫜嫮嫥嫕嫪嫚嫭嫫嫳嫢嫠嫛嫬�����嫞嫝嫙嫨嫟孷寠寣屣嶂嶀嵽嶆嵺嶁嵷嶊嶉嶈嵾嵼嶍嵹嵿幘幙幓廘廑廗廎廜廕廙廒廔彄彃彯徶愬愨慁慞慱慳慒慓慲慬憀慴慔慺慛慥愻慪慡慖戩戧戫搫摍摛摝摴摶摲摳摽摵摦撦摎撂摞摜摋摓摠摐摿搿摬摫摙摥摷敳斠暡暠暟朅朄朢榱榶槉榠槎榖榰榬榼榑榙榎榧榍榩榾榯榿槄榽榤槔榹槊榚槏榳榓��\".split(\"\");\nfor(j = 0; j != D[241].length; ++j) if(D[241][j].charCodeAt(0) !== 0xFFFD) { e[D[241][j]] = 61696 + j; d[61696 + j] = D[241][j];}\nD[242] = \"������������������������������������������������榪榡榞槙榗榐槂榵榥槆�������歊歍歋殞殟殠毃毄毾滎滵滱漃漥滸漷滻漮漉潎漙漚漧漘漻漒������滭漊漶潳滹滮漭潀漰漼漵滫漇漎潃漅滽滶漹漜滼漺漟漍漞漈�����漡熇熐熉熀熅熂熏煻熆熁熗牄牓犗犕犓獃獍獑獌瑢瑳瑱瑵瑲瑧瑮甀甂甃畽疐瘖瘈瘌瘕瘑瘊瘔皸瞁睼瞅瞂睮瞀睯睾瞃碲碪碴碭碨硾碫碞碥碠碬碢碤禘禊禋禖禕禔禓禗禈禒禐稫穊稰稯稨稦窨窫窬竮箈箜箊箑箐箖箍箌箛箎箅箘劄箙箤箂粻粿粼粺綧綷緂綣綪緁緀緅綝緎緄緆緋緌綯綹綖綼綟綦綮綩��\".split(\"\");\nfor(j = 0; j != D[242].length; ++j) if(D[242][j].charCodeAt(0) !== 0xFFFD) { e[D[242][j]] = 61952 + j; d[61952 + j] = D[242][j];}\nD[243] = \"������������������������������������������������綡緉罳翢翣翥翞耤聝聜�������膉膆膃膇膍膌膋舕蒗蒤蒡蒟蒺蓎蓂蒬蒮蒫蒹蒴蓁蓍蒪蒚蒱蓐������蒝蒧蒻蒢蒔蓇蓌蒛蒩蒯蒨蓖蒘蒶蓏蒠蓗蓔蓒蓛蒰蒑虡蜳蜣蜨�����蝫蝀蜮蜞蜡蜙蜛蝃蜬蝁蜾蝆蜠蜲蜪蜭蜼蜒蜺蜱蜵蝂蜦蜧蜸蜤蜚蜰蜑裷裧裱裲裺裾裮裼裶裻裰裬裫覝覡覟覞觩觫觨誫誙誋誒誏誖谽豨豩賕賏賗趖踉踂跿踍跽踊踃踇踆踅跾踀踄輐輑輎輍鄣鄜鄠鄢鄟鄝鄚鄤鄡鄛酺酲酹酳銥銤鉶銛鉺銠銔銪銍銦銚銫鉹銗鉿銣鋮銎銂銕銢鉽銈銡銊銆銌銙銧鉾銇銩銝��\".split(\"\");\nfor(j = 0; j != D[243].length; ++j) if(D[243][j].charCodeAt(0) !== 0xFFFD) { e[D[243][j]] = 62208 + j; d[62208 + j] = D[243][j];}\nD[244] = \"������������������������������������������������銋鈭隞隡雿靘靽靺靾鞃�������鞀鞂靻鞄鞁靿韎韍頖颭颮餂餀餇馝馜駃馹馻馺駂馽駇骱髣髧������鬾鬿魠魡魟鳱鳲鳵麧僿儃儰僸儆儇僶僾儋儌僽儊劋劌勱勯噈�����噂噌嘵噁噊噉噆噘噚噀嘳嘽嘬嘾嘸嘪嘺圚墫墝墱墠墣墯墬墥墡壿嫿嫴嫽嫷嫶嬃嫸嬂嫹嬁嬇嬅嬏屧嶙嶗嶟嶒嶢嶓嶕嶠嶜嶡嶚嶞幩幝幠幜緳廛廞廡彉徲憋憃慹憱憰憢憉憛憓憯憭憟憒憪憡憍慦憳戭摮摰撖撠撅撗撜撏撋撊撌撣撟摨撱撘敶敺敹敻斲斳暵暰暩暲暷暪暯樀樆樗槥槸樕槱槤樠槿槬槢樛樝��\".split(\"\");\nfor(j = 0; j != D[244].length; ++j) if(D[244][j].charCodeAt(0) !== 0xFFFD) { e[D[244][j]] = 62464 + j; d[62464 + j] = D[244][j];}\nD[245] = \"������������������������������������������������槾樧槲槮樔槷槧橀樈槦�������槻樍槼槫樉樄樘樥樏槶樦樇槴樖歑殥殣殢殦氁氀毿氂潁漦潾������澇濆澒澍澉澌潢潏澅潚澖潶潬澂潕潲潒潐潗澔澓潝漀潡潫潽�����潧澐潓澋潩潿澕潣潷潪潻熲熯熛熰熠熚熩熵熝熥熞熤熡熪熜熧熳犘犚獘獒獞獟獠獝獛獡獚獙獢璇璉璊璆璁瑽璅璈瑼瑹甈甇畾瘥瘞瘙瘝瘜瘣瘚瘨瘛皜皝皞皛瞍瞏瞉瞈磍碻磏磌磑磎磔磈磃磄磉禚禡禠禜禢禛歶稹窲窴窳箷篋箾箬篎箯箹篊箵糅糈糌糋緷緛緪緧緗緡縃緺緦緶緱緰緮緟罶羬羰羭翭翫��\".split(\"\");\nfor(j = 0; j != D[245].length; ++j) if(D[245][j].charCodeAt(0) !== 0xFFFD) { e[D[245][j]] = 62720 + j; d[62720 + j] = D[245][j];}\nD[246] = \"������������������������������������������������翪翬翦翨聤聧膣膟膞膕�������膢膙膗舖艏艓艒艐艎艑蔤蔻蔏蔀蔩蔎蔉蔍蔟蔊蔧蔜蓻蔫蓺蔈������蔌蓴蔪蓲蔕蓷蓫蓳蓼蔒蓪蓩蔖蓾蔨蔝蔮蔂蓽蔞蓶蔱蔦蓧蓨蓰�����蓯蓹蔘蔠蔰蔋蔙蔯虢蝖蝣蝤蝷蟡蝳蝘蝔蝛蝒蝡蝚蝑蝞蝭蝪蝐蝎蝟蝝蝯蝬蝺蝮蝜蝥蝏蝻蝵蝢蝧蝩衚褅褌褔褋褗褘褙褆褖褑褎褉覢覤覣觭觰觬諏諆誸諓諑諔諕誻諗誾諀諅諘諃誺誽諙谾豍貏賥賟賙賨賚賝賧趠趜趡趛踠踣踥踤踮踕踛踖踑踙踦踧踔踒踘踓踜踗踚輬輤輘輚輠輣輖輗遳遰遯遧遫鄯鄫鄩��\".split(\"\");\nfor(j = 0; j != D[246].length; ++j) if(D[246][j].charCodeAt(0) !== 0xFFFD) { e[D[246][j]] = 62976 + j; d[62976 + j] = D[246][j];}\nD[247] = \"������������������������������������������������鄪鄲鄦鄮醅醆醊醁醂醄�������醀鋐鋃鋄鋀鋙銶鋏鋱鋟鋘鋩鋗鋝鋌鋯鋂鋨鋊鋈鋎鋦鋍鋕鋉鋠������鋞鋧鋑鋓銵鋡錥鋆銴镼閬閫閮閰隤隢雓霅霈霂靚鞊鞎鞈韐韏�����頞頝頦頩頨頠頛頧颲餈飺餑餔餖餗餕駜駍駏駓駔駎駉駖駘駋駗駌骳髬髫髳髲髱魆魃魧魴魱魦魶魵魰魨魤魬鳼鳺鳽鳿鳷鴇鴀鳹鳻鴈鴅鴄麃黓鼏鼐儜儓儗儚儑凞匴叡噰噠噮噳噦噣噭噲噞噷圜圛壈墽壉墿墺壂墼壆嬗嬙嬛嬡嬔嬓嬐嬖嬨嬚嬠嬞寯嶬嶱嶩嶧嶵嶰嶮嶪嶨嶲嶭嶯嶴幧幨幦幯廩廧廦廨廥彋��\".split(\"\");\nfor(j = 0; j != D[247].length; ++j) if(D[247][j].charCodeAt(0) !== 0xFFFD) { e[D[247][j]] = 63232 + j; d[63232 + j] = D[247][j];}\nD[248] = \"������������������������������������������������徼徻憝憨憖懅憴懆懁懌�������憺憿憸憌擗擖擐擏擉撽撉擃擛擳擙攳敿敼斢曈暾曀曊曋曏暽������暻暺曌朣樴橦橉橧樲橨樾橝橭橶橛橑樨橚樻樿橁橪橤橐橏橔�����橯橩橠樼橞橖橕橍橎橆歕歔歖殧殪殫毈毇氄氃氆澭濋澣濇澼濎濈潞濄澽澞濊澨瀄澥澮澺澬澪濏澿澸澢濉澫濍澯澲澰燅燂熿熸燖燀燁燋燔燊燇燏熽燘熼燆燚燛犝犞獩獦獧獬獥獫獪瑿璚璠璔璒璕璡甋疀瘯瘭瘱瘽瘳瘼瘵瘲瘰皻盦瞚瞝瞡瞜瞛瞢瞣瞕瞙瞗磝磩磥磪磞磣磛磡磢磭磟磠禤穄穈穇窶窸窵��\".split(\"\");\nfor(j = 0; j != D[248].length; ++j) if(D[248][j].charCodeAt(0) !== 0xFFFD) { e[D[248][j]] = 63488 + j; d[63488 + j] = D[248][j];}\nD[249] = \"������������������������������������������������窱窷篞篣篧篝篕篥篚篨�������篹篔篪篢篜篫篘篟糒糔糗糐糑縒縡縗縌縟縠縓縎縜縕縚縢縋������縏縖縍縔縥縤罃罻罼罺羱翯耪耩聬膱膦膮膹膵膫膰膬膴膲膷�����膧臲艕艖艗蕖蕅蕫蕍蕓蕡蕘蕀蕆蕤蕁蕢蕄蕑蕇蕣蔾蕛蕱蕎蕮蕵蕕蕧蕠薌蕦蕝蕔蕥蕬虣虥虤螤螛螏螗螓螒螈螁螖螘蝹螇螣螅螐螑螝螄螔螜螚螉褞褦褰褭褮褧褱褢褩褣褯褬褟觱諠諢諲諴諵諝謔諤諟諰諈諞諡諨諿諯諻貑貒貐賵賮賱賰賳赬赮趥趧踳踾踸蹀蹅踶踼踽蹁踰踿躽輶輮輵輲輹輷輴遶遹遻��\".split(\"\");\nfor(j = 0; j != D[249].length; ++j) if(D[249][j].charCodeAt(0) !== 0xFFFD) { e[D[249][j]] = 63744 + j; d[63744 + j] = D[249][j];}\nD[250] = \"������������������������������������������������邆郺鄳鄵鄶醓醐醑醍醏�������錧錞錈錟錆錏鍺錸錼錛錣錒錁鍆錭錎錍鋋錝鋺錓鋹鋷錴錂錤������鋿錩錹錵錪錔錌錋鋾錉錀鋻錖閼闍閾閹閺閶閿閵閽隩雔霋霒�����霐鞙鞗鞔韰韸頵頯頲餤餟餧餩馞駮駬駥駤駰駣駪駩駧骹骿骴骻髶髺髹髷鬳鮀鮅鮇魼魾魻鮂鮓鮒鮐魺鮕魽鮈鴥鴗鴠鴞鴔鴩鴝鴘鴢鴐鴙鴟麈麆麇麮麭黕黖黺鼒鼽儦儥儢儤儠儩勴嚓嚌嚍嚆嚄嚃噾嚂噿嚁壖壔壏壒嬭嬥嬲嬣嬬嬧嬦嬯嬮孻寱寲嶷幬幪徾懃憵憼懧懠懥懤懨懞擯擩擣擫擤擨斁斀斶旚曒檍��\".split(\"\");\nfor(j = 0; j != D[250].length; ++j) if(D[250][j].charCodeAt(0) !== 0xFFFD) { e[D[250][j]] = 64000 + j; d[64000 + j] = D[250][j];}\nD[251] = \"������������������������������������������������檖檁檥檉檟檛檡檞檇檓�������檎檕檃檨檤檑橿檦檚檅檌檒歛殭氉濌澩濴濔濣濜濭濧濦濞濲������濝濢濨燡燱燨燲燤燰燢獳獮獯璗璲璫璐璪璭璱璥璯甐甑甒甏�����疄癃癈癉癇皤盩瞵瞫瞲瞷瞶瞴瞱瞨矰磳磽礂磻磼磿磲礅磹磾礄禫禨穜穛穖穘穔穚窾竀竁簅簏篲簀篿篻簎篴簋篳簂簉簃簁篸篽簆篰篱簐簊糨縭縼繂縳顈縸縪繉繀繇縩繌縰縻縶繄縺罅罿罾罽翴翲耬膻臄臌臊臅臇膼臩艛艚艜薃薀薏薧薕薠薋薣蕻薤薚薞蕷蕼薉薡蕺蕸蕗薎薖薆薍薙薝薁薢薂薈薅蕹��\".split(\"\");\nfor(j = 0; j != D[251].length; ++j) if(D[251][j].charCodeAt(0) !== 0xFFFD) { e[D[251][j]] = 64256 + j; d[64256 + j] = D[251][j];}\nD[252] = \"������������������������������������������������蕶薘薐薟虨螾螪螭蟅螰�������螬螹螵螼螮蟉蟃蟂蟌螷螯蟄蟊螴螶螿螸螽蟞螲褵褳褼褾襁襒������褷襂覭覯覮觲觳謞謘謖謑謅謋謢謏謒謕謇謍謈謆謜謓謚豏豰�����豲豱豯貕貔賹赯蹎蹍蹓蹐蹌蹇轃轀邅遾鄸醚醢醛醙醟醡醝醠鎡鎃鎯鍤鍖鍇鍼鍘鍜鍶鍉鍐鍑鍠鍭鎏鍌鍪鍹鍗鍕鍒鍏鍱鍷鍻鍡鍞鍣鍧鍎鍙闇闀闉闃闅閷隮隰隬霠霟霘霝霙鞚鞡鞜鞞鞝韕韔韱顁顄顊顉顅顃餥餫餬餪餳餲餯餭餱餰馘馣馡騂駺駴駷駹駸駶駻駽駾駼騃骾髾髽鬁髼魈鮚鮨鮞鮛鮦鮡鮥鮤鮆��\".split(\"\");\nfor(j = 0; j != D[252].length; ++j) if(D[252][j].charCodeAt(0) !== 0xFFFD) { e[D[252][j]] = 64512 + j; d[64512 + j] = D[252][j];}\nD[253] = \"������������������������������������������������鮢鮠鮯鴳鵁鵧鴶鴮鴯鴱�������鴸鴰鵅鵂鵃鴾鴷鵀鴽翵鴭麊麉麍麰黈黚黻黿鼤鼣鼢齔龠儱儭������儮嚘嚜嚗嚚嚝嚙奰嬼屩屪巀幭幮懘懟懭懮懱懪懰懫懖懩擿攄�����擽擸攁攃擼斔旛曚曛曘櫅檹檽櫡櫆檺檶檷櫇檴檭歞毉氋瀇瀌瀍瀁瀅瀔瀎濿瀀濻瀦濼濷瀊爁燿燹爃燽獶璸瓀璵瓁璾璶璻瓂甔甓癜癤癙癐癓癗癚皦皽盬矂瞺礌礓礔礉礐礒礑禭禬穟簜簩簙簠簟簭簝簦簨簢簥簰繜繐繖繣繘繢繟繑繠繗繓羵羳翷翸聵臑臒臐艟艞薴藆藀藃藂薳薵薽藇藄薿藋藎藈藅薱薶��\".split(\"\");\nfor(j = 0; j != D[253].length; ++j) if(D[253][j].charCodeAt(0) !== 0xFFFD) { e[D[253][j]] = 64768 + j; d[64768 + j] = D[253][j];}\nD[254] = \"������������������������������������������������藒蘤薸薷薾虩蟧蟦蟢蟛�������蟫蟪蟥蟟蟳蟤蟔蟜蟓蟭蟘蟣蟗蟙蠁蟴蟨蟝襓襋襏襌襆襐襑襉������謪謧謣謳謰謵譇謯謼謾謱謥謷謦謶謮謤謻謽謺豂豵貙貘貗賾�����贄贂贀蹜蹢蹠蹗蹖蹞蹥蹧蹛蹚蹡蹝蹩蹔轆轇轈轋鄨鄺鄻鄾醨醥醧醯醪鎵鎌鎒鎷鎛鎝鎉鎧鎎鎪鎞鎦鎕鎈鎙鎟鎀鎍鎱鎑鎲鎤鎨鎴鎣闒闓闑隳雗雚巂雟雘雝霣霢霥鞬鞮鞨鞫鞤鞪鞢鞥韗韙韖韘韺顐顑顒颸饁餼餺騏騋騉騍騄騑騊騅騇騆髀髜鬈鬄鬅鬩鬵魊魌魋鯇鯆鯃鮿鯁鮵鮸鯓鮶鯄鮹鮽鵜鵓鵏鵊鵛鵋��\".split(\"\");\nfor(j = 0; j != D[254].length; ++j) if(D[254][j].charCodeAt(0) !== 0xFFFD) { e[D[254][j]] = 65024 + j; d[65024 + j] = D[254][j];}\nreturn {\"enc\": e, \"dec\": d }; })();\ncptable[20003] = (function(){ var d = [], e = {}, D = [], j;\nD[0] = \"\\u0000\\u0001\\u0002\\u0003\\u0004\\u0005\\u0006\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\u0014\\u0015\\u0016\\u0017\\u0018\\u0019\\u001a\\u001b\\u001c\\u001d\\u001e\\u001f !\\\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~��������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[0].length; ++j) if(D[0][j].charCodeAt(0) !== 0xFFFD) { e[D[0][j]] = 0 + j; d[0 + j] = D[0][j];}\nD[129] = \"����������������������������������������������������������������　、。，․•：；？！��‵′¨˄‾＿ヽヾゝゞ〃〄々〆〇ー–—／＼∼∥∣…‥‘’“”（）〔〕［］｛｝〈〉《》「」『』【】＋－±×�÷＝≠＜＞≦≧∞∴♂♀゜��℃￥＄￠￡％＃＆✽＠§☆★○●◎◇◆□■△▲▽▼※〒→←↑↓������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[129].length; ++j) if(D[129][j].charCodeAt(0) !== 0xFFFD) { e[D[129][j]] = 33024 + j; d[33024 + j] = D[129][j];}\nD[130] = \"�������������������������������������������������������������������������������０１２３４５６７８９�������ＡＢＣＤＥＦＧＨＩＪＫＬＭＮＯＰＱＲＳＴＵＶＷＸＹＺ�������ａｂｃｄｅｆｇｈｉｊｋｌｍｎｏｐｑｒｓｔｕｖｗｘｙｚ����ぁあぃいぅうぇえぉおかがきぎくぐけげこごさざしじすずせぜそぞただちぢっつづてでとどなにぬねのはばぱひびぴふぶぷへべぺほぼぽまみむめもゃやゅゆょよらりるれろゎわゐゑをん��������������\".split(\"\");\nfor(j = 0; j != D[130].length; ++j) if(D[130][j].charCodeAt(0) !== 0xFFFD) { e[D[130][j]] = 33280 + j; d[33280 + j] = D[130][j];}\nD[131] = \"����������������������������������������������������������������ァアィイゥウェエォオカガキギクグケゲコゴサザシジスズセゼソゾタダチヂッツヅテデトドナニヌネノハバパヒビピフブプヘベペホボポマミ�ムメモャヤュユョヨラリルレロヮワヰヱヲンヴヵヶ��������ΑΒΓΔΕΖΗΘΙΚΛΜΝΞΟΠΡΣΤΥΦΧΨΩ��������αβγδεζηθικλμνξοπρστυφχψω�����������������������������������������\".split(\"\");\nfor(j = 0; j != D[131].length; ++j) if(D[131][j].charCodeAt(0) !== 0xFFFD) { e[D[131][j]] = 33536 + j; d[33536 + j] = D[131][j];}\nD[132] = \"����������������������������������������������������������������АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ���������������абвгдеёжзийклмн�опрстуфхцчшщъыьэюя��������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[132].length; ++j) if(D[132][j].charCodeAt(0) !== 0xFFFD) { e[D[132][j]] = 33792 + j; d[33792 + j] = D[132][j];}\nD[135] = \"������������������������������������������������������������������丶丿�亅�亠����冂冖冫����勹��匸��卩�厶�����夂����宀������巛����幺广廴���彐彡�������攴����无��������������������������������疒癶��������������������������������������������������������辵��������隶���������������������\".split(\"\");\nfor(j = 0; j != D[135].length; ++j) if(D[135][j].charCodeAt(0) !== 0xFFFD) { e[D[135][j]] = 34560 + j; d[34560 + j] = D[135][j];}\nD[137] = \"����������������������������������������������������������������〡〢〣〤〥〦〧〨〩�卄�����˟ˊˇˋ˙ㄅㄆㄇㄈㄉㄊㄋㄌㄍㄎㄏㄐㄑㄒㄓㄔㄕㄖㄗㄘㄙㄚㄛㄜㄝㄞㄟㄠㄡㄢㄣㄤㄥㄦㄧㄨㄩ��������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[137].length; ++j) if(D[137][j].charCodeAt(0) !== 0xFFFD) { e[D[137][j]] = 35072 + j; d[35072 + j] = D[137][j];}\nD[138] = \"����������������������������������������������������������������①②③④⑤⑥⑦⑧⑨⑩������⑴⑵⑶⑷⑸⑹⑺⑻⑼⑽�����▁▂▃▄▅▆▇█▏▎▍▌▋▊▉┼┴┬┤├▔─│▕┌┐└┘╭╮╰╯�═╞╪╡◢◣◥◤╱╲╳��������������������﹁﹂﹃﹄︻︼�︲︳�︴﹏︵︶︷︸︹︺︽︾︿﹀��＊＂㊣℅��﹉﹊﹍﹎﹋﹌﹡√≒≡∩∪⊥∠∟⊿㏒㏑∫∮⊕⊙↖↗↙↘∵��℉㏕㎜㎝㎞㏎㎡㎎㎏㏄﹒���〝〞���⇧↸↹兙兛兞兝兡兣嗧瓩糎�������\".split(\"\");\nfor(j = 0; j != D[138].length; ++j) if(D[138][j].charCodeAt(0) !== 0xFFFD) { e[D[138][j]] = 35328 + j; d[35328 + j] = D[138][j];}\nD[139] = \"�����������������������������������������������������������������ⅠⅡⅢⅣⅤⅥⅦⅧⅨⅩ������ⅰⅱⅲⅳⅴⅵⅶⅷⅸⅹ￢￤��㈱№℡��������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[139].length; ++j) if(D[139][j].charCodeAt(0) !== 0xFFFD) { e[D[139][j]] = 35584 + j; d[35584 + j] = D[139][j];}\nD[140] = \"����������������������������������������������������������������一乙丁七乃九了二人儿入八几刀刁力匕十卜又三下丈上丫丸凡久么也乞于亡兀刃勺千叉口土士夕大女子孑孓寸小尢尸山川工己已巳巾干廾弋弓才�丑丐不中丰丹之尹予云井互五亢仁什仃仆仇仍今介仄元允內六兮公冗凶分切刈勻勾勿化匹午升卅卞厄友及反壬天夫太夭孔少尤尺屯巴幻廿弔引心戈戶手扎支文斗斤方日曰月木欠止歹毋比毛氏水火爪父爻片牙牛犬王丙世丕且丘主乍乏乎以付仔仕他仗代令仙仞充兄冉冊冬凹出凸刊加功包匆���\".split(\"\");\nfor(j = 0; j != D[140].length; ++j) if(D[140][j].charCodeAt(0) !== 0xFFFD) { e[D[140][j]] = 35840 + j; d[35840 + j] = D[140][j];}\nD[141] = \"����������������������������������������������������������������北匝仟半卉卡占卯卮去可古右召叮叩叨叼司叵叫另只史叱台句叭叻四囚外央失奴奶孕它尼巨巧左市布平幼弁弘弗必戊打扔扒扑斥旦朮本未末札正�母民氐永汁汀氾犯玄玉瓜瓦甘生用甩田由甲申疋白皮皿目矛矢石示禾穴立丞丟乒乓乩亙交亦亥仿伉伙伊伕伍伐休伏仲件任仰仳份企伋光兇兆先全共再冰列刑划刎刖劣匈匡匠印危吉吏同吊吐吁吋各向名合吃后吆吒因回囝圳地在圭圬圯圩夙多夷夸妄奸妃好她如妁字存宇守宅安寺尖屹州帆并���\".split(\"\");\nfor(j = 0; j != D[141].length; ++j) if(D[141][j].charCodeAt(0) !== 0xFFFD) { e[D[141][j]] = 36096 + j; d[36096 + j] = D[141][j];}\nD[142] = \"����������������������������������������������������������������年式弛忙忖戎戌戍成扣扛托收早旨旬旭曲曳有朽朴朱朵次此死氖汝汗汙江池汐汕污汛汍汎灰牟牝百竹米糸缶羊羽老考而耒耳聿肉肋肌臣自至臼舌�舛舟艮色艾虫血行衣西阡串亨位住佇佗佞伴佛何估佐佑伽伺伸佃佔似但佣作你伯低伶余佝佈佚兌克免兵冶冷別判利刪刨劫助努劬匣即卵吝吭吞吾否呎吧呆呃吳呈呂君吩告吹吻吸吮吵吶吠吼呀吱含吟听囪困囤囫坊坑址坍均坎圾坐坏圻壯夾妝妒妨妞妣妙妖妍妤妓妊妥孝孜孚孛完宋宏尬局屁���\".split(\"\");\nfor(j = 0; j != D[142].length; ++j) if(D[142][j].charCodeAt(0) !== 0xFFFD) { e[D[142][j]] = 36352 + j; d[36352 + j] = D[142][j];}\nD[143] = \"����������������������������������������������������������������尿尾岐岑岔岌巫希序庇床廷弄弟彤形彷役忘忌志忍忱快忸忪戒我抄抗抖技扶抉扭把扼找批扳抒扯折扮投抓抑抆改攻攸旱更束李杏材村杜杖杞杉杆�杠杓杗步每求汞沙沁沈沉沅沛汪決沐汰沌汨沖沒汽沃汲汾汴沆汶沍沔沘沂灶灼災灸牢牡牠狄狂玖甬甫男甸皂盯矣私秀禿究系罕肖肓肝肘肛肚育良芒芋芍見角言谷豆豕貝赤走足身車辛辰迂迆迅迄巡邑邢邪邦那酉釆里防阮阱阪阬並乖乳事些亞享京佯依侍佳使佬供例來侃佰併侈佩佻侖佾侏侑���\".split(\"\");\nfor(j = 0; j != D[143].length; ++j) if(D[143][j].charCodeAt(0) !== 0xFFFD) { e[D[143][j]] = 36608 + j; d[36608 + j] = D[143][j];}\nD[144] = \"����������������������������������������������������������������佺兔兒兕兩具其典冽函刻券刷刺到刮制剁劾劻卒協卓卑卦卷卸卹取叔受味呵咖呸咕咀呻呷咄咒咆呼咐呱呶和咚呢周咋命咎固垃坷坪坩坡坦坤坼夜�奉奇奈奄奔妾妻委妹妮姑姆姐姍始姓姊妯妳姒姅孟孤季宗定官宜宙宛尚屈居屆岷岡岸岩岫岱岳帘帚帖帕帛帑幸庚店府底庖延弦弧弩往征彿彼忝忠忽念忿怏怔怯怵怖怪怕怡性怩怫怛或戕房戾所承拉拌拄抿拂抹拒招披拓拔拋拈抨抽押拐拙拇拍抵拚抱拘拖拗拆抬拎放斧於旺昔易昌昆昂明昀昏���\".split(\"\");\nfor(j = 0; j != D[144].length; ++j) if(D[144][j].charCodeAt(0) !== 0xFFFD) { e[D[144][j]] = 36864 + j; d[36864 + j] = D[144][j];}\nD[145] = \"����������������������������������������������������������������昕昊昇服朋杭枋枕東果杳杷枇枝林杯杰板枉松析杵枚枓杼杪杲欣武歧歿氓氛泣注泳沱泌泥河沽沾沼波沫法泓沸泄油況沮泗泅泱沿治泡泛泊沬泯泜�泖泠炕炎炒炊炙爬爭爸版牧物狀狎狙狗狐玩玨玟玫玥甽疝疙疚的盂盲直知矽社祀祁秉秈空穹竺糾罔羌羋者肺肥肢肱股肫肩肴肪肯臥臾舍芳芝芙芭芽芟芹花芬芥芯芸芣芰芾芷虎虱初表軋迎返近邵邸邱邶采金長門阜陀阿阻附陂隹雨青非亟亭亮信侵侯便俠俑俏保促侶俘俟俊俗侮俐俄係俚俎俞���\".split(\"\");\nfor(j = 0; j != D[145].length; ++j) if(D[145][j].charCodeAt(0) !== 0xFFFD) { e[D[145][j]] = 37120 + j; d[37120 + j] = D[145][j];}\nD[146] = \"����������������������������������������������������������������侷兗冒冑冠剎剃削前剌剋則勇勉勃勁匍南卻厚叛咬哀咨哎哉咸咦咳哇哂咽咪品哄哈咯咫咱咻咩咧咿囿垂型垠垣垢城垮垓奕契奏奎奐姜姘姿姣姨娃�姥姪姚姦威姻孩宣宦室客宥封屎屏屍屋峙峒巷帝帥帟幽庠度建弈弭彥很待徊律徇後徉怒思怠急怎怨恍恰恨恢恆恃恬恫恪恤扁拜挖按拼拭持拮拽指拱拷拯括拾拴挑挂政故斫施既春昭映昧是星昨昱昤曷柿染柱柔某柬架枯柵柩柯柄柑枴柚查枸柏柞柳枰柙柢柝柒歪殃殆段毒毗氟泉洋洲洪流津洌���\".split(\"\");\nfor(j = 0; j != D[146].length; ++j) if(D[146][j].charCodeAt(0) !== 0xFFFD) { e[D[146][j]] = 37376 + j; d[37376 + j] = D[146][j];}\nD[147] = \"����������������������������������������������������������������洱洞洗活洽派洶洛泵洹洧洸洩洮洵洎洫炫為炳炬炯炭炸炮炤爰牲牯牴狩狠狡玷珊玻玲珍珀玳甚甭畏界畎畋疫疤疥疢疣癸皆皇皈盈盆盃盅省盹相眉�看盾盼眇矜砂研砌砍祆祉祈祇禹禺科秒秋穿突竿竽籽紂紅紀紉紇約紆缸美羿耄耐耍耑耶胖胥胚胃胄背胡胛胎胞胤胝致舢苧范茅苣苛苦茄若茂茉苒苗英茁苜苔苑苞苓苟苯茆虐虹虻虺衍衫要觔計訂訃貞負赴赳趴軍軌述迦迢迪迥迭迫迤迨郊郎郁郃酋酊重閂限陋陌降面革韋韭音頁風飛食首香乘���\".split(\"\");\nfor(j = 0; j != D[147].length; ++j) if(D[147][j].charCodeAt(0) !== 0xFFFD) { e[D[147][j]] = 37632 + j; d[37632 + j] = D[147][j];}\nD[148] = \"����������������������������������������������������������������亳倌倍倣俯倦倥俸倩倖倆值借倚倒們俺倀倔倨俱倡個候倘俳修倭倪俾倫倉兼冤冥冢凍凌准凋剖剜剔剛剝匪卿原厝叟哨唐唁唷哼哥哲唆哺唔哩哭員�唉哮哪哦唧唇哽唏圃圄埂埔埋埃堉夏套奘奚娑娘娜娟娛娓姬娠娣娩娥娌娉孫屘宰害家宴宮宵容宸射屑展屐峭峽峻峪峨峰島崁峴差席師庫庭座弱徒徑徐恙恣恥恐恕恭恩息悄悟悚悍悔悌悅悖扇拳挈拿捎挾振捕捂捆捏捉挺捐挽挪挫挨捍捌效敉料旁旅時晉晏晃晒晌晅晁書朔朕朗校核案框桓根桂���\".split(\"\");\nfor(j = 0; j != D[148].length; ++j) if(D[148][j].charCodeAt(0) !== 0xFFFD) { e[D[148][j]] = 37888 + j; d[37888 + j] = D[148][j];}\nD[149] = \"����������������������������������������������������������������桔栩梳栗桌桑栽柴桐桀格桃株桅栓栘桁殊殉殷氣氧氨氦氤泰浪涕消涇浦浸海浙涓浬涉浮浚浴浩涌涊浹涅浥涔烊烘烤烙烈烏爹特狼狹狽狸狷玆班琉�珮珠珪珞畔畝畜畚留疾病症疲疳疽疼疹痂疸皋皰益盍盎眩真眠眨矩砰砧砸砝破砷砥砭砠砟砲祕祐祠祟祖神祝祗祚秤秣秧租秦秩秘窄窈站笆笑粉紡紗紋紊素索純紐紕級紜納紙紛缺罟羔翅翁耆耘耕耙耗耽耿胱脂胰脅胭胴脆胸胳脈能脊胼胯臭臬舀舐航舫舨般芻茫荒荔荊茸荐草茵茴荏茲茹茶茗���\".split(\"\");\nfor(j = 0; j != D[149].length; ++j) if(D[149][j].charCodeAt(0) !== 0xFFFD) { e[D[149][j]] = 38144 + j; d[38144 + j] = D[149][j];}\nD[150] = \"����������������������������������������������������������������荀茱茨荃虔蚊蚪蚓蚤蚩蚌蚣蚜衰衷袁袂衽衹記訐討訌訕訊託訓訖訏訑豈豺豹財貢起躬軒軔軏辱送逆迷退迺迴逃追逅迸邕郡郝郢酒配酌釘針釗釜釙�閃院陣陡陛陝除陘陞隻飢馬骨高鬥鬲鬼乾偺偽停假偃偌做偉健偶偎偕偵側偷偏倏偯偭兜冕凰剪副勒務勘動匐匏匙匿區匾參曼商啪啦啄啞啡啃啊唱啖問啕唯啤唸售啜唬啣唳啁啗圈國圉域堅堊堆埠埤基堂堵執培夠奢娶婁婉婦婪婀娼婢婚婆婊孰寇寅寄寂宿密尉專將屠屜屝崇崆崎崛崖崢崑崩崔���\".split(\"\");\nfor(j = 0; j != D[150].length; ++j) if(D[150][j].charCodeAt(0) !== 0xFFFD) { e[D[150][j]] = 38400 + j; d[38400 + j] = D[150][j];}\nD[151] = \"����������������������������������������������������������������崙崤崧崗巢常帶帳帷康庸庶庵庾張強彗彬彩彫得徙從徘御徠徜恿患悉悠您惋悴惦悽情悻悵惜悼惘惕惆惟悸惚惇戚戛扈掠控捲掖探接捷捧掘措捱掩�掉掃掛捫推掄授掙採掬排掏掀捻捩捨捺敝敖救教敗啟敏敘敕敔斜斛斬族旋旌旎晝晚晤晨晦晞曹勗望梁梯梢梓梵桿桶梱梧梗械梃棄梭梆梅梔條梨梟梡梂欲殺毫毬氫涎涼淳淙液淡淌淤添淺清淇淋涯淑涮淞淹涸混淵淅淒渚涵淚淫淘淪深淮淨淆淄涪淬涿淦烹焉焊烽烯爽牽犁猜猛猖猓猙率琅琊球���\".split(\"\");\nfor(j = 0; j != D[151].length; ++j) if(D[151][j].charCodeAt(0) !== 0xFFFD) { e[D[151][j]] = 38656 + j; d[38656 + j] = D[151][j];}\nD[152] = \"����������������������������������������������������������������理現琍瓠瓶瓷甜產略畦畢異疏痔痕疵痊痍皎盔盒盛眷眾眼眶眸眺硫硃硎祥票祭移窒窕笠笨笛第符笙笞笮粒粗粕絆絃統紮紹紼絀細紳組累終紲紱缽�羞羚翌翎習耜聊聆脯脖脣脫脩脰脤舂舵舷舶船莎莞莘荸莢莖莽莫莒莊莓莉莠荷荻荼莆莧處彪蛇蛀蚶蛄蚵蛆蛋蚱蚯蛉術袞袈被袒袖袍袋覓規訪訝訣訥許設訟訛訢豉豚販責貫貨貪貧赧赦趾趺軛軟這逍通逗連速逝逐逕逞造透逢逖逛途部郭都酗野釵釦釣釧釭釩閉陪陵陳陸陰陴陶陷陬雀雪雩章竟���\".split(\"\");\nfor(j = 0; j != D[152].length; ++j) if(D[152][j].charCodeAt(0) !== 0xFFFD) { e[D[152][j]] = 38912 + j; d[38912 + j] = D[152][j];}\nD[153] = \"����������������������������������������������������������������頂頃魚鳥鹵鹿麥麻傢傍傅備傑傀傖傘傚最凱割剴創剩勞勝勛博厥啻喀喧啼喊喝喘喂喜喪喔喇喋喃喳單喟唾喲喚喻喬喱啾喉喫喙圍堯堪場堤堰報堡�堝堠壹壺奠婷媚婿媒媛媧孳孱寒富寓寐尊尋就嵌嵐崴嵇巽幅帽幀幃幾廊廁廂廄弼彭復循徨惑惡悲悶惠愜愣惺愕惰惻惴慨惱愎惶愉愀愒戟扉掣掌描揀揩揉揆揍插揣提握揖揭揮捶援揪換摒揚揹敞敦敢散斑斐斯普晰晴晶景暑智晾晷曾替期朝棺棕棠棘棗椅棟棵森棧棹棒棲棣棋棍植椒椎棉棚楮棻���\".split(\"\");\nfor(j = 0; j != D[153].length; ++j) if(D[153][j].charCodeAt(0) !== 0xFFFD) { e[D[153][j]] = 39168 + j; d[39168 + j] = D[153][j];}\nD[154] = \"����������������������������������������������������������������款欺欽殘殖殼毯氮氯氬港游湔渡渲湧湊渠渥渣減湛湘渤湖湮渭渦湯渴湍渺測湃渝渾滋溉渙湎湣湄湲湩湟焙焚焦焰無然煮焜牌犄犀猶猥猴猩琺琪琳�琢琥琵琶琴琯琛琦琨甥甦畫番痢痛痣痙痘痞痠登發皖皓皴盜睏短硝硬硯稍稈程稅稀窘窗窖童竣等策筆筐筒答筍筋筏筑粟粥絞結絨絕紫絮絲絡給絢絰絳善翔翕耋聒肅腕腔腋腑腎脹腆脾腌腓腴舒舜菩萃菸萍菠菅萋菁華菱菴著萊菰萌菌菽菲菊萸萎萄菜萇菔菟虛蛟蛙蛭蛔蛛蛤蛐蛞街裁裂袱覃視���\".split(\"\");\nfor(j = 0; j != D[154].length; ++j) if(D[154][j].charCodeAt(0) !== 0xFFFD) { e[D[154][j]] = 39424 + j; d[39424 + j] = D[154][j];}\nD[155] = \"����������������������������������������������������������������註詠評詞証詁詔詛詐詆訴診訶詖象貂貯貼貳貽賁費賀貴買貶貿貸越超趁跎距跋跚跑跌跛跆軻軸軼辜逮逵週逸進逶鄂郵鄉郾酣酥量鈔鈕鈣鈉鈞鈍鈐�鈇鈑閔閏開閑間閒閎隊階隋陽隅隆隍陲隄雁雅雄集雇雯雲韌項順須飧飪飯飩飲飭馮馭黃黍黑亂傭債傲傳僅傾催傷傻傯僇剿剷剽募勦勤勢勣匯嗟嗨嗓嗦嗎嗜嗇嗑嗣嗤嗯嗚嗡嗅嗆嗥嗉園圓塞塑塘塗塚塔填塌塭塊塢塒塋奧嫁嫉嫌媾媽媼媳嫂媲嵩嵯幌幹廉廈弒彙徬微愚意慈感想愛惹愁愈慎慌慄���\".split(\"\");\nfor(j = 0; j != D[155].length; ++j) if(D[155][j].charCodeAt(0) !== 0xFFFD) { e[D[155][j]] = 39680 + j; d[39680 + j] = D[155][j];}\nD[156] = \"����������������������������������������������������������������慍愾愴愧愍愆愷戡戢搓搾搞搪搭搽搬搏搜搔損搶搖搗搆敬斟新暗暉暇暈暖暄暘暍會榔業楚楷楠楔極椰概楊楨楫楞楓楹榆楝楣楛歇歲毀殿毓毽溢溯�滓溶滂源溝滇滅溥溘溼溺溫滑準溜滄滔溪溧溴煎煙煩煤煉照煜煬煦煌煥煞煆煨煖爺牒猷獅猿猾瑯瑚瑕瑟瑞瑁琿瑙瑛瑜當畸瘀痰瘁痲痱痺痿痴痳盞盟睛睫睦睞督睹睪睬睜睥睨睢矮碎碰碗碘碌碉硼碑碓硿祺祿禁萬禽稜稚稠稔稟稞窟窠筷節筠筮筧粱粳粵經絹綑綁綏絛置罩罪署義羨群聖聘肆肄���\".split(\"\");\nfor(j = 0; j != D[156].length; ++j) if(D[156][j].charCodeAt(0) !== 0xFFFD) { e[D[156][j]] = 39936 + j; d[39936 + j] = D[156][j];}\nD[157] = \"����������������������������������������������������������������腱腰腸腥腮腳腫腹腺腦舅艇蒂葷落萱葵葦葫葉葬葛萼萵葡董葩葭葆虞虜號蛹蜓蜈蜇蜀蛾蛻蜂蜃蜆蜊衙裟裔裙補裘裝裡裊裕裒覜解詫該詳試詩詰誇�詼詣誠話誅詭詢詮詬詹詻訾詨豢貊貉賊資賈賄貲賃賂賅跡跟跨路跳跺跪跤跦躲較載軾輊辟農運遊道遂達逼違遐遇遏過遍遑逾遁鄒鄗酬酪酩釉鈷鉗鈸鈽鉀鈾鉛鉋鉤鉑鈴鉉鉍鉅鈹鈿鉚閘隘隔隕雍雋雉雊雷電雹零靖靴靶預頑頓頊頒頌飼飴飽飾馳馱馴髡鳩麂鼎鼓鼠僧僮僥僖僭僚僕像僑僱僎僩兢���\".split(\"\");\nfor(j = 0; j != D[157].length; ++j) if(D[157][j].charCodeAt(0) !== 0xFFFD) { e[D[157][j]] = 40192 + j; d[40192 + j] = D[157][j];}\nD[158] = \"����������������������������������������������������������������凳劃劂匱厭嗾嘀嘛嘗嗽嘔嘆嘉嘍嘎嗷嘖嘟嘈嘐嗶團圖塵塾境墓墊塹墅塽壽夥夢夤奪奩嫡嫦嫩嫗嫖嫘嫣孵寞寧寡寥實寨寢寤察對屢嶄嶇幛幣幕幗幔�廓廖弊彆彰徹慇愿態慷慢慣慟慚慘慵截撇摘摔撤摸摟摺摑摧搴摭摻敲斡旗旖暢暨暝榜榨榕槁榮槓構榛榷榻榫榴槐槍榭槌榦槃榣歉歌氳漳演滾漓滴漩漾漠漬漏漂漢滿滯漆漱漸漲漣漕漫漯澈漪滬漁滲滌滷熔熙煽熊熄熒爾犒犖獄獐瑤瑣瑪瑰瑭甄疑瘧瘍瘋瘉瘓盡監瞄睽睿睡磁碟碧碳碩碣禎福禍���\".split(\"\");\nfor(j = 0; j != D[158].length; ++j) if(D[158][j].charCodeAt(0) !== 0xFFFD) { e[D[158][j]] = 40448 + j; d[40448 + j] = D[158][j];}\nD[159] = \"����������������������������������������������������������������種稱窪窩竭端管箕箋筵算箝箔箏箸箇箄粹粽精綻綰綜綽綾綠緊綴網綱綺綢綿綵綸維緒緇綬罰翠翡翟聞聚肇腐膀膏膈膊腿膂臧臺與舔舞艋蓉蒿蓆蓄�蒙蒞蒲蒜蓋蒸蓀蓓蒐蒼蓑蓊蜿蜜蜻蜢蜥蜴蜘蝕蜷蜩裳褂裴裹裸製裨褚裯誦誌語誣認誡誓誤說誥誨誘誑誚誧豪貍貌賓賑賒赫趙趕跼輔輒輕輓辣遠遘遜遣遙遞遢遝遛鄙鄘鄞酵酸酷酴鉸銀銅銘銖鉻銓銜銨鉼銑閡閨閩閣閥閤隙障際雌雒需靼鞅韶頗領颯颱餃餅餌餉駁骯骰髦魁魂鳴鳶鳳麼鼻齊億儀���\".split(\"\");\nfor(j = 0; j != D[159].length; ++j) if(D[159][j].charCodeAt(0) !== 0xFFFD) { e[D[159][j]] = 40704 + j; d[40704 + j] = D[159][j];}\nD[160] = \"����������������������������������������������������������������僻僵價儂儈儉儅凜劇劈劉劍劊勰厲嘮嘻嘹嘲嘿嘴嘩噓噎噗噴嘶嘯嘰墀墟增墳墜墮墩墦奭嬉嫻嬋嫵嬌嬈寮寬審寫層履嶝嶔幢幟幡廢廚廟廝廣廠彈影�德徵慶慧慮慝慕憂慼慰慫慾憧憐憫憎憬憚憤憔憮戮摩摯摹撞撲撈撐撰撥撓撕撩撒撮播撫撚撬撙撢撳敵敷數暮暫暴暱樣樟槨樁樞標槽模樓樊槳樂樅槭樑歐歎殤毅毆漿潼澄潑潦潔澆潭潛潸潮澎潺潰潤澗潘滕潯潠潟熟熬熱熨牖犛獎獗瑩璋璃瑾璀畿瘠瘩瘟瘤瘦瘡瘢皚皺盤瞎瞇瞌瞑瞋磋磅確磊碾���\".split(\"\");\nfor(j = 0; j != D[160].length; ++j) if(D[160][j].charCodeAt(0) !== 0xFFFD) { e[D[160][j]] = 40960 + j; d[40960 + j] = D[160][j];}\nD[161] = \"����������������������������������������������������������������磕碼磐稿稼穀稽稷稻窯窮箭箱範箴篆篇篁箠篌糊締練緯緻緘緬緝編緣線緞緩綞緙緲緹罵罷羯翩耦膛膜膝膠膚膘蔗蔽蔚蓮蔬蔭蔓蔑蔣蔡蔔蓬蔥蓿蔆�螂蝴蝶蝠蝦蝸蝨蝙蝗蝌蝓衛衝褐複褒褓褕褊誼諒談諄誕請諸課諉諂調誰論諍誶誹諛豌豎豬賠賞賦賤賬賭賢賣賜質賡赭趟趣踫踐踝踢踏踩踟踡踞躺輝輛輟輩輦輪輜輞輥適遮遨遭遷鄰鄭鄧鄱醇醉醋醃鋅銻銷鋪銬鋤鋁銳銼鋒鋇鋰銲閭閱霄霆震霉靠鞍鞋鞏頡頫頜颳養餓餒餘駝駐駟駛駑駕駒駙骷���\".split(\"\");\nfor(j = 0; j != D[161].length; ++j) if(D[161][j].charCodeAt(0) !== 0xFFFD) { e[D[161][j]] = 41216 + j; d[41216 + j] = D[161][j];}\nD[162] = \"����������������������������������������������������������������髮髯鬧魅魄魷魯鴆鴉鴃麩麾黎墨齒儒儘儔儐儕冀冪凝劑劓勳噙噫噹噩噤噸噪器噥噱噯噬噢噶壁墾壇壅奮嬝嬴學寰導彊憲憑憩憊懍憶憾懊懈戰擅擁�擋撻撼據擄擇擂操撿擒擔撾整曆曉暹曄曇暸樽樸樺橙橫橘樹橄橢橡橋橇樵機橈歙歷氅濂澱澡濃澤濁澧澳激澹澶澦澠澴熾燉燐燒燈燕熹燎燙燜燃燄獨璜璣璘璟璞瓢甌甍瘴瘸瘺盧盥瞠瞞瞟瞥磨磚磬磧禦積穎穆穌穋窺篙簑築篤篛篡篩篦糕糖縊縑縈縛縣縞縝縉縐罹羲翰翱翮耨膳膩膨臻興艘艙蕊���\".split(\"\");\nfor(j = 0; j != D[162].length; ++j) if(D[162][j].charCodeAt(0) !== 0xFFFD) { e[D[162][j]] = 41472 + j; d[41472 + j] = D[162][j];}\nD[163] = \"����������������������������������������������������������������蕙蕈蕨蕩蕃蕉蕭蕪蕞螃螟螞螢融衡褪褲褥褫褡親覦諦諺諫諱謀諜諧諮諾謁謂諷諭諳諶諼豫豭貓賴蹄踱踴蹂踹踵輻輯輸輳辨辦遵遴選遲遼遺鄴醒錠�錶鋸錳錯錢鋼錫錄錚錐錦錡錕錮錙閻隧隨險雕霎霑霖霍霓霏靛靜靦鞘頰頸頻頷頭頹頤餐館餞餛餡餚駭駢駱骸骼髻髭鬨鮑鴕鴣鴦鴨鴒鴛默黔龍龜優償儡儲勵嚎嚀嚐嚅嚇嚏壕壓壑壎嬰嬪嬤孺尷屨嶼嶺嶽嶸幫彌徽應懂懇懦懋戲戴擎擊擘擠擰擦擬擱擢擭斂斃曙曖檀檔檄檢檜櫛檣橾檗檐檠歜殮毚���\".split(\"\");\nfor(j = 0; j != D[163].length; ++j) if(D[163][j].charCodeAt(0) !== 0xFFFD) { e[D[163][j]] = 41728 + j; d[41728 + j] = D[163][j];}\nD[164] = \"����������������������������������������������������������������氈濘濱濟濠濛濤濫濯澀濬濡濩濕濮濰燧營燮燦燥燭燬燴燠爵牆獰獲璩環璦璨癆療癌盪瞳瞪瞰瞬瞧瞭矯磷磺磴磯礁禧禪穗窿簇簍篾篷簌篠糠糜糞糢�糟糙糝縮績繆縷縲繃縫總縱繅繁縴縹繈縵縿縯罄翳翼聱聲聰聯聳臆臃膺臂臀膿膽臉膾臨舉艱薪薄蕾薜薑薔薯薛薇薨薊虧蟀蟑螳蟒蟆螫螻螺蟈蟋褻褶襄褸褽覬謎謗謙講謊謠謝謄謐豁谿豳賺賽購賸賻趨蹉蹋蹈蹊轄輾轂轅輿避遽還邁邂邀鄹醣醞醜鍍鎂錨鍵鍊鍥鍋錘鍾鍬鍛鍰鍚鍔闊闋闌闈闆隱���\".split(\"\");\nfor(j = 0; j != D[164].length; ++j) if(D[164][j].charCodeAt(0) !== 0xFFFD) { e[D[164][j]] = 41984 + j; d[41984 + j] = D[164][j];}\nD[165] = \"����������������������������������������������������������������隸雖霜霞鞠韓顆颶餵騁駿鮮鮫鮪鮭鴻鴿麋黏點黜黝黛鼾齋叢嚕嚮壙壘嬸彝懣戳擴擲擾攆擺擻擷斷曜朦檳檬櫃檻檸櫂檮檯歟歸殯瀉瀋濾瀆濺瀑瀏燻�燼燾燸獷獵璧璿甕癖癘癒瞽瞿瞻瞼礎禮穡穢穠竄竅簫簧簪簞簣簡糧織繕繞繚繡繒繙罈翹翻職聶臍臏舊藏薩藍藐藉薰薺薹薦蟯蟬蟲蟠覆覲觴謨謹謬謫豐贅蹙蹣蹦蹤蹟蹕軀轉轍邇邃邈醫醬釐鎔鎊鎖鎢鎳鎮鎬鎰鎘鎚鎗闔闖闐闕離雜雙雛雞霤鞣鞦鞭韹額顏題顎顓颺餾餿餽餮馥騎髁鬃鬆魏魎魍鯊���\".split(\"\");\nfor(j = 0; j != D[165].length; ++j) if(D[165][j].charCodeAt(0) !== 0xFFFD) { e[D[165][j]] = 42240 + j; d[42240 + j] = D[165][j];}\nD[166] = \"����������������������������������������������������������������鯉鯽鯈鯀鵑鵝鵠黠鼕鼬儳嚥壞壟壢寵龐廬懲懷懶懵攀攏曠曝櫥櫝櫚櫓瀛瀟瀨瀚瀝瀕瀘爆爍牘犢獸獺璽瓊瓣疇疆癟癡矇礙禱穫穩簾簿簸簽簷籀繫繭�繹繩繪羅繳羶羹羸臘藩藝藪藕藤藥藷蟻蠅蠍蟹蟾襠襟襖襞譁譜識證譚譎譏譆譙贈贊蹼蹲躇蹶蹬蹺蹴轔轎辭邊邋醱醮鏡鏑鏟鏃鏈鏜鏝鏖鏢鏍鏘鏤鏗鏨關隴難霪霧靡韜韻類願顛颼饅饉騖騙鬍鯨鯧鯖鯛鶉鵡鵲鵪鵬麒麗麓麴勸嚨嚷嚶嚴嚼壤孀孃孽寶巉懸懺攘攔攙曦朧櫬瀾瀰瀲爐獻瓏癢癥礦礪礬���\".split(\"\");\nfor(j = 0; j != D[166].length; ++j) if(D[166][j].charCodeAt(0) !== 0xFFFD) { e[D[166][j]] = 42496 + j; d[42496 + j] = D[166][j];}\nD[167] = \"����������������������������������������������������������������礫竇競籌籃籍糯糰辮繽繼纂罌耀臚艦藻藹蘑藺蘆蘋蘇蘊蠔蠕襤覺觸議譬警譯譟譫贏贍躉躁躅躂醴釋鐘鐃鏽闡霰飄饒饑馨騫騰騷騵鰓鰍鹹麵黨鼯齟�齣齡儷儸囁囀囂夔屬巍懼懾攝攜斕曩櫻欄櫺殲灌爛犧瓖瓔癩矓籐纏續羼蘗蘭蘚蠣蠢蠡蠟襪襬覽譴護譽贓躊躍躋轟辯醺鐮鐳鐵鐺鐸鐲鐫闢霸霹露響顧顥饗驅驃驀騾髏魔魑鰭鰥鶯鶴鷂鶸麝黯鼙齜齦齧儼儻囈囊囉孿巔巒彎懿攤權歡灑灘玀瓤疊癮癬禳籠籟聾聽臟襲襯觼讀贖贗躑躓轡酈鑄鑑鑒霽���\".split(\"\");\nfor(j = 0; j != D[167].length; ++j) if(D[167][j].charCodeAt(0) !== 0xFFFD) { e[D[167][j]] = 42752 + j; d[42752 + j] = D[167][j];}\nD[168] = \"����������������������������������������������������������������霾韃韁顫饕驕驍髒鬚鱉鰱鰾鰻鷓鷗鼴齬齪龔囌巖戀攣攫攪曬欐瓚竊籤籣籥纓纖纔臢蘸蘿蠱變邐邏鑣鑠鑤靨顯饜驚驛驗髓體髑鱔鱗鱖鷥麟黴囑壩攬�灞癱癲矗罐羈蠶蠹衢讓讒讖艷贛釀鑪靂靈靄韆顰驟鬢魘鱟鷹鷺鹼鹽鼇齷齲廳欖灣籬籮蠻觀躡釁鑲鑰顱饞髖鬣黌灤矚讚鑷韉驢驥纜讜躪釅鑽鑾鑼鱷鱸黷豔鑿鸚爨驪鬱鸛鸞籲������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[168].length; ++j) if(D[168][j].charCodeAt(0) !== 0xFFFD) { e[D[168][j]] = 43008 + j; d[43008 + j] = D[168][j];}\nD[169] = \"����������������������������������������������������������������乂乜凵匚厂万丌乇亍囗兀屮彳丏冇与丮亓仂仉仈冘勼卬厹圠夃夬尐巿旡殳毌气爿丱丼仨仜仩仡仝仚刌匜卌圢圣夗夯宁宄尒尻屴屳帄庀庂忉戉扐氕�氶汃氿氻犮犰玊禸肊阞伎优伬仵伔仱伀价伈伝伂伅伢伓伄仴伒冱刓刉刐劦匢匟卍厊吇囡囟圮圪圴夼妀奼妅奻奾奷奿孖尕尥屼屺屻屾巟幵庄异弚彴忕忔忏扜扞扤扡扦扢扙扠扚扥旯旮朾朹朸朻机朿朼朳氘汆汒汜汏汊汔汋汌灱牞犴犵玎甪癿穵网艸艼芀艽艿虍襾邙邗邘邛邔阢阤阠阣佖伻佢佉体���\".split(\"\");\nfor(j = 0; j != D[169].length; ++j) if(D[169][j].charCodeAt(0) !== 0xFFFD) { e[D[169][j]] = 43264 + j; d[43264 + j] = D[169][j];}\nD[170] = \"����������������������������������������������������������������佤伾佧佒佟佁佘伭伳伿佡冏冹刜刞刡劭劮匉卣卲厎厏吰吷吪呔呅吙吜吥吘吽呏呁吨吤呇囮囧囥坁坅坌坉坋坒夆奀妦妘妠妗妎妢妐妏妧妡宎宒尨尪�岍岏岈岋岉岒岊岆岓岕巠帊帎庋庉庌庈庍弅弝彸彶忒忑忐忭忨忮忳忡忤忣忺忯忷忻怀忴戺抃抌抎抏抔抇扱扻扺扰抁抈扷扽扲扴攷旰旴旳旲旵杅杇杙杕杌杈杝杍杚杋毐氙氚汸汧汫沄沋沏汱汯汩沚汭沇沕沜汦汳汥汻沎灴灺牣犿犽狃狆狁犺狅玕玗玓玔玒町甹疔疕皁礽耴肕肙肐肒肜芐芏芅芎芑���\".split(\"\");\nfor(j = 0; j != D[170].length; ++j) if(D[170][j].charCodeAt(0) !== 0xFFFD) { e[D[170][j]] = 43520 + j; d[43520 + j] = D[170][j];}\nD[171] = \"����������������������������������������������������������������芓芊芃芄豸迉辿邟邡邥邞邧邠阰阨阯阭丳侘佼侅佽侀侇佶佴侉侄佷佌侗佪侚佹侁佸侐侜侔侞侒侂侕佫佮冞冼冾刵刲刳剆刱劼匊匋匼厒厔咇呿咁咑�咂咈呫呺呾呥呬呴呦咍呯呡呠咘呣呧呤囷囹坯坲坭坫坱坰坶垀坵坻坳坴坢坨坽夌奅妵妺姏姎妲姌姁妶妼姃姖妱妽姀姈妴姇孢孥宓宕屄屇岮岤岠岵岯岨岬岟岣岭岢岪岧岝岥岶岰岦帗帔帙弨弢弣弤彔徂彾彽忞忥怭怦怙怲怋怴怊怗怳怚怞怬怢怍怐怮怓怑怌怉怜戔戽抭抴拑抾抪抶拊抮抳抯抻抩���\".split(\"\");\nfor(j = 0; j != D[171].length; ++j) if(D[171][j].charCodeAt(0) !== 0xFFFD) { e[D[171][j]] = 43776 + j; d[43776 + j] = D[171][j];}\nD[172] = \"����������������������������������������������������������������抰抸攽斨斻昉旼昄昒昈旻昃昋昍昅旽昑昐曶朊枅杬枎枒杶杻枘枆构杴枍枌杺枟枑枙枃杽极杸杹枔欥殀歾毞氝沓泬泫泮泙沶泔沭泧沷泐泂沺泃泆泭�泲泒泝沴沊沝沀泞泀洰泍泇沰泹泏泩泑炔炘炅炓炆炄炑炖炂炚炃牪狖狋狘狉狜狒狔狚狌狑玤玡玭玦玢玠玬玝瓝瓨甿畀甾疌疘皯盳盱盰盵矸矼矹矻矺矷祂礿秅穸穻竻籵糽耵肏肮肣肸肵肭舠芠苀芫芚芘芛芵芧芮芼芞芺芴芨芡芩苂芤苃芶芢虰虯虭虮豖迒迋迓迍迖迕迗邲邴邯邳邰阹阽阼阺陃俍���\".split(\"\");\nfor(j = 0; j != D[172].length; ++j) if(D[172][j].charCodeAt(0) !== 0xFFFD) { e[D[172][j]] = 44032 + j; d[44032 + j] = D[172][j];}\nD[173] = \"����������������������������������������������������������������俅俓侲俉俋俁俔俜俙侻侳俛俇俖侺俀侹俬剄剉勀勂匽卼厗厖厙厘咺咡咭咥哏哃茍咷咮哖咶哅哆咠呰咼咢咾呲哞咰垵垞垟垤垌垗垝垛垔垘垏垙垥垚�垕壴复奓姡姞姮娀姱姝姺姽姼姶姤姲姷姛姩姳姵姠姾姴姭宨屌峐峘峌峗峋峛峞峚峉峇峊峖峓峔峏峈峆峎峟峸巹帡帢帣帠帤庰庤庢庛庣庥弇弮彖徆怷怹恔恲恞恅恓恇恉恛恌恀恂恟怤恄恘恦恮扂扃拏挍挋拵挎挃拫拹挏挌拸拶挀挓挔拺挕拻拰敁敃斪斿昶昡昲昵昜昦昢昳昫昺昝昴昹昮朏朐柁柲���\".split(\"\");\nfor(j = 0; j != D[173].length; ++j) if(D[173][j].charCodeAt(0) !== 0xFFFD) { e[D[173][j]] = 44288 + j; d[44288 + j] = D[173][j];}\nD[174] = \"����������������������������������������������������������������柈枺柜枻柸柘柀枷柅柫柤柟枵柍枳柷柶柮柣柂枹柎柧柰枲柼柆柭柌枮柦柛柺柉柊柃柪柋欨殂殄殶毖毘毠氠氡洨洴洭洟洼洿洒洊泚洳洄洙洺洚洑洀�洝浂洁洘洷洃洏浀洇洠洬洈洢洉洐炷炟炾炱炰炡炴炵炩牁牉牊牬牰牳牮狊狤狨狫狟狪狦狣玅珌珂珈珅玹玶玵玴珫玿珇玾珃珆玸珋瓬瓮甮畇畈疧疪癹盄眈眃眄眅眊盷盻盺矧矨砆砑砒砅砐砏砎砉砃砓祊祌祋祅祄秕种秏秖秎窀穾竑笀笁籺籸籹籿粀粁紃紈紁罘羑羍羾耇耎耏耔耷胘胇胠胑胈胂胐���\".split(\"\");\nfor(j = 0; j != D[174].length; ++j) if(D[174][j].charCodeAt(0) !== 0xFFFD) { e[D[174][j]] = 44544 + j; d[44544 + j] = D[174][j];}\nD[175] = \"����������������������������������������������������������������胅胣胙胜胊胕胉胏胗胦胍臿舡芔苙苾苹茇苨茀苕茺苫苖苴苬苡苲苵茌苻苶苰苪苤苠苺苳苭虷虴虼虳衁衎衧衪衩觓訄訇赲迣迡迮迠郱邽邿郕郅邾郇�郋郈釔釓陔陏陑陓陊陎倞倅倇倓倢倰倛俵俴倳倷倬俶俷倗倜倠倧倵倯倱倎党冔冓凊凄凅凈凎剡剚剒剞剟剕剢勍匎厞唦哢唗唒哧哳哤唚哿唄唈哫唑唅哱唊哻哷哸哠唎唃唋圁圂埌堲埕埒垺埆垽垼垸垶垿埇埐垹埁夎奊娙娖娭娮娕娏娗娊娞娳孬宧宭宬尃屖屔峬峿峮峱峷崀峹帩帨庨庮庪庬弳弰彧���\".split(\"\");\nfor(j = 0; j != D[175].length; ++j) if(D[175][j].charCodeAt(0) !== 0xFFFD) { e[D[175][j]] = 44800 + j; d[44800 + j] = D[175][j];}\nD[176] = \"����������������������������������������������������������������恝恚恧恁悢悈悀悒悁悝悃悕悛悗悇悜悎戙扆拲挐捖挬捄捅挶捃揤挹捋捊挼挩捁挴捘捔捙挭捇挳捚捑挸捗捀捈敊敆旆旃旄旂晊晟晇晑朒朓栟栚桉栲�栳栻桋桏栖栱栜栵栫栭栯桎桄栴栝栒栔栦栨栮桍栺栥栠欬欯欭欱欴歭肂殈毦毤毨毣毢毧氥浺浣浤浶洍浡涒浘浢浭浯涑涍淯浿涆浞浧浠涗浰浼浟涂涘洯浨涋浾涀涄洖涃浻浽浵涐烜烓烑烝烋缹烢烗烒烞烠烔烍烅烆烇烚烎烡牂牸牷牶猀狺狴狾狶狳狻猁珓珙珥珖玼珧珣珩珜珒珛珔珝珚珗珘珨瓞���\".split(\"\");\nfor(j = 0; j != D[176].length; ++j) if(D[176][j].charCodeAt(0) !== 0xFFFD) { e[D[176][j]] = 45056 + j; d[45056 + j] = D[176][j];}\nD[177] = \"����������������������������������������������������������������瓟瓴瓵甡畛畟疰痁疻痄痀疿疶疺皊盉眝眛眐眓眒眣眑眕眙眚眢眧砣砬砢砵砯砨砮砫砡砩砳砪砱祔祛祏祜祓祒祑秫秬秠秮秭秪秜秞秝窆窉窅窋窌窊�窇竘笐笄笓笅笏笈笊笎笉笒粄粑粊粌粈粍粅紞紝紑紎紘紖紓紟紒紏紌罜罡罞罠罝罛羖羒翃翂翀耖耾耹胺胲胹胵脁胻脀舁舯舥茳茭荄茙荑茥荖茿荁茦茜茢荂荎茛茪茈茼荍茖茤茠茷茯茩荇荅荌荓茞茬荋茧荈虓虒蚢蚨蚖蚍蚑蚞蚇蚗蚆蚋蚚蚅蚥蚙蚡蚧蚕蚘蚎蚝蚐蚔衃衄衭衵衶衲袀衱衿衯袃衾衴���\".split(\"\");\nfor(j = 0; j != D[177].length; ++j) if(D[177][j].charCodeAt(0) !== 0xFFFD) { e[D[177][j]] = 45312 + j; d[45312 + j] = D[177][j];}\nD[178] = \"����������������������������������������������������������������衼訒豇豗豻貤貣赶赸趵趷趶軑軓迾迵适迿迻逄迼迶郖郠郙郚郣郟郥郘郛郗郜郤酐酎酏釕釢釚陜陟隼飣髟鬯乿偰偪偡偞偠偓偋偝偲偈偍偁偛偊偢倕�偅偟偩偫偣偤偆偀偮偳偗偑凐剫剭剬剮勖勓匭厜啵啶唼啍啐唴唪啑啢唶唵唰啒啅唌唲啥啎唹啈唭唻啀啋圊圇埻堔埢埶埜埴堀埭埽堈埸堋埳埏堇埮埣埲埥埬埡堎埼堐埧堁堌埱埩埰堍堄奜婠婘婕婧婞娸娵婭婐婟婥婬婓婤婗婃婝婒婄婛婈媎娾婍娹婌婰婩婇婑婖婂婜孲孮寁寀屙崞崋崝崚崠崌崨���\".split(\"\");\nfor(j = 0; j != D[178].length; ++j) if(D[178][j].charCodeAt(0) !== 0xFFFD) { e[D[178][j]] = 45568 + j; d[45568 + j] = D[178][j];}\nD[179] = \"����������������������������������������������������������������崍崦崥崏崰崒崣崟崮帾帴庱庴庹庲庳弶弸徛徖徟悊悐悆悾悰悺惓惔惏惤惙惝惈悱惛悷惊悿惃惍惀挲捥掊掂捽掽掞掭掝掗掫掎捯掇掐据掯捵掜捭掮�捼掤挻掟捸掅掁掑掍捰敓旍晥晡晛晙晜晢朘桹梇梐梜桭桮梮梫楖桯梣梬梩桵桴梲梏桷梒桼桫桲梪梀桱桾梛梖梋梠梉梤桸桻梑梌梊桽欶欳欷欸殑殏殍殎殌氪淀涫涴涳湴涬淩淢涷淶淔渀淈淠淟淖涾淥淜淝淛淴淊涽淭淰涺淕淂淏淉淐淲淓淽淗淍淣涻烺焍烷焗烴焌烰焄烳焐烼烿焆焓焀烸烶焋焂���\".split(\"\");\nfor(j = 0; j != D[179].length; ++j) if(D[179][j].charCodeAt(0) !== 0xFFFD) { e[D[179][j]] = 45824 + j; d[45824 + j] = D[179][j];}\nD[180] = \"����������������������������������������������������������������焎牾牻牼牿猝猗猇猑猘猊猈狿猏猞玈珶珸珵琄琁珽琇琀珺珼珿琌琋珴琈畤畣痎痒痏痋痌痑痐皏皉盓眹眯眭眱眲眴眳眽眥眻眵硈硒硉硍硊硌砦硅硐�祤祧祩祪祣祫祡离秺秸秶秷窏窔窐笵筇笴笥笰笢笤笳笘笪笝笱笫笭笯笲笸笚笣粔粘粖粣紵紽紸紶紺絅紬紩絁絇紾紿絊紻紨罣羕羜羝羛翊翋翍翐翑翇翏翉耟耞耛聇聃聈脘脥脙脛脭脟脬脞脡脕脧脝脢舑舸舳舺舴舲艴莐莣莨莍荺荳莤荴莏莁莕莙荵莔莩荽莃莌莝莛莪莋荾莥莯莈莗莰荿莦莇莮荶���\".split(\"\");\nfor(j = 0; j != D[180].length; ++j) if(D[180][j].charCodeAt(0) !== 0xFFFD) { e[D[180][j]] = 46080 + j; d[46080 + j] = D[180][j];}\nD[181] = \"����������������������������������������������������������������莚虙虖蚿蚷蛂蛁蛅蚺蚰蛈蚹蚳蚸蛌蚴蚻蚼蛃蚽蚾衒袉袕袨袢袪袚袑袡袟袘袧袙袛袗袤袬袌袓袎覂觖觙觕訰訧訬訞谹谻豜豝豽貥赽赻赹趼跂趹趿跁�軘軞軝軜軗軠軡逤逋逑逜逌逡郯郪郰郴郲郳郔郫郬郩酖酘酚酓酕釬釴釱釳釸釤釹釪釫釷釨釮镺閆閈陼陭陫陱陯隿靪頄飥馗傛傕傔傞傋傣傃傌傎傝偨傜傒傂傇兟凔匒匑厤厧喑喨喥喭啷噅喢喓喈喏喵喁喣喒喤啽喌喦啿喕喡喎圌堩堷堙堞堧堣堨埵塈堥堜堛堳堿堶堮堹堸堭堬堻奡媯媔媟婺媢媞���\".split(\"\");\nfor(j = 0; j != D[181].length; ++j) if(D[181][j].charCodeAt(0) !== 0xFFFD) { e[D[181][j]] = 46336 + j; d[46336 + j] = D[181][j];}\nD[182] = \"����������������������������������������������������������������婸媦婼媥媬媕媮娷媄媊媗媃媋媩婻婽媌媜媏媓媝寪寍寋寔寑寊寎尌尰崷嵃嵫嵁嵋崿崵嵑嵎嵕崳崺嵒崽崱嵙嵂崹嵉崸崼崲崶嵀嵅幄幁彘徦徥徫惉悹�惌惢惎惄愔惲愊愖愅惵愓惸惼惾惁愃愘愝愐惿愄愋扊掔掱掰揎揥揨揯揃撝揳揊揠揶揕揲揵摡揟掾揝揜揄揘揓揂揇揌揋揈揰揗揙攲敧敪敤敜敨敥斌斝斞斮旐旒晼晬晻暀晱晹晪晲朁椌棓椄棜椪棬棪棱椏棖棷棫棤棶椓椐棳棡椇棌椈楰梴椑棯棆椔棸棐棽棼棨椋椊椗棎棈棝棞棦棴棑椆棔棩椕椥棇���\".split(\"\");\nfor(j = 0; j != D[182].length; ++j) if(D[182][j].charCodeAt(0) !== 0xFFFD) { e[D[182][j]] = 46592 + j; d[46592 + j] = D[182][j];}\nD[183] = \"����������������������������������������������������������������欹欻欿欼殔殗殙殕殽毰毲毳氰淼湆湇渟湉溈渼渽湅湢渫渿湁湝湳渜渳湋湀湑渻渃渮湞湨湜湡渱渨湠湱湫渹渢渰湓湥渧湸湤湷湕湹湒湦渵渶湚焠焞�焯烻焮焱焣焥焢焲焟焨焺焛牋牚犈犉犆犅犋猒猋猰猢猱猳猧猲猭猦猣猵猌琮琬琰琫琖琚琡琭琱琤琣琝琩琠琲瓻甯畯畬痧痚痡痦痝痟痤痗皕皒盚睆睇睄睍睅睊睎睋睌矞矬硠硤硥硜硭硱硪确硰硩硨硞硢祴祳祲祰稂稊稃稌稄窙竦竤筊笻筄筈筌筎筀筘筅粢粞粨粡絘絯絣絓絖絧絪絏絭絜絫絒絔絩���\".split(\"\");\nfor(j = 0; j != D[183].length; ++j) if(D[183][j].charCodeAt(0) !== 0xFFFD) { e[D[183][j]] = 46848 + j; d[46848 + j] = D[183][j];}\nD[184] = \"����������������������������������������������������������������絑絟絎缾缿罥罦羢羠羡翗聑聏聐胾胔腃腊腒腏腇脽腍脺臦臮臷臸臹舄舼舽舿艵茻菏菹萣菀菨萒菧菤菼菶萐菆菈菫菣莿萁菝菥菘菿菡菋菎菖菵菉萉�萏菞萑萆菂菳菕菺菇菑菪萓菃菬菮菄菻菗菢萛菛菾蛘蛢蛦蛓蛣蛚蛪蛝蛫蛜蛬蛩蛗蛨蛑衈衖衕袺裗袹袸裀袾袶袼袷袽袲褁裉覕覘覗觝觚觛詎詍訹詙詀詗詘詄詅詒詈詑詊詌詏豟貁貀貺貾貰貹貵趄趀趉跘跓跍跇跖跜跏跕跙跈跗跅軯軷軺軹軦軮軥軵軧軨軶軫軱軬軴軩逭逴逯鄆鄬鄄郿郼鄈郹郻鄁���\".split(\"\");\nfor(j = 0; j != D[184].length; ++j) if(D[184][j].charCodeAt(0) !== 0xFFFD) { e[D[184][j]] = 47104 + j; d[47104 + j] = D[184][j];}\nD[185] = \"����������������������������������������������������������������鄀鄇鄅鄃酡酤酟酢酠鈁鈊鈥鈃鈚鈦鈏鈌鈀鈒釿釽鈆鈄鈧鈂鈜鈤鈙鈗鈅鈖镻閍閌閐隇陾隈隉隃隀雂雈雃雱雰靬靰靮頇颩飫鳦黹亃亄亶傽傿僆傮僄僊�傴僈僂傰僁傺傱僋僉傶傸凗剺剸剻剼嗃嗛嗌嗐嗋嗊嗝嗀嗔嗄嗩喿嗒喍嗏嗕嗢嗖嗈嗲嗍嗙嗂圔塓塨塤塏塍塉塯塕塎塝塙塥塛堽塣塱壼嫇嫄嫋媺媸媱媵媰媿嫈媻嫆媷嫀嫊媴媶嫍媹媐寖寘寙尟尳嵱嵣嵊嵥嵲嵬嵞嵨嵧嵢巰幏幎幊幍幋廅廌廆廋廇彀徯徭惷慉慊愫慅愶愲愮慆愯慏愩慀戠酨戣戥戤揅���\".split(\"\");\nfor(j = 0; j != D[185].length; ++j) if(D[185][j].charCodeAt(0) !== 0xFFFD) { e[D[185][j]] = 47360 + j; d[47360 + j] = D[185][j];}\nD[186] = \"����������������������������������������������������������������揱揫搐搒搉搠搤搳摃搟搕搘搹搷搢搣搌搦搰搨摁搵搯搊搚摀搥搧搋揧搛搮搡搎敯斒旓暆暌暕暐暋暊暙暔晸朠楦楟椸楎楢楱椿楅楪椹楂楗楙楺楈楉�椵楬椳椽楥棰楸椴楩楀楯楄楶楘楁楴楌椻楋椷楜楏楑椲楒椯楻椼歆歅歃歂歈歁殛嗀毻毼毹毷毸溛滖滈溏滀溟溓溔溠溱溹滆滒溽滁溞滉溷溰滍溦滏溲溾滃滜滘溙溒溎溍溤溡溿溳滐滊溗溮溣煇煔煒煣煠煁煝煢煲煸煪煡煂煘煃煋煰煟煐煓煄煍煚牏犍犌犑犐犎猼獂猻猺獀獊獉瑄瑊瑋瑒瑑瑗瑀瑏���\".split(\"\");\nfor(j = 0; j != D[186].length; ++j) if(D[186][j].charCodeAt(0) !== 0xFFFD) { e[D[186][j]] = 47616 + j; d[47616 + j] = D[186][j];}\nD[187] = \"����������������������������������������������������������������瑐瑎瑂瑆瑍瑔瓡瓿瓾瓽甝畹畷榃痯瘏瘃痷痾痼痹痸瘐痻痶痭痵痽皙皵盝睕睟睠睒睖睚睩睧睔睙睭矠碇碚碔碏碄碕碅碆碡碃硹碙碀碖硻祼禂祽祹稑�稘稙稒稗稕稢稓稛稐窣窢窞竫筦筤筭筴筩筲筥筳筱筰筡筸筶筣粲粴粯綈綆綀綍絿綅絺綎絻綃絼綌綔綄絽綒罭罫罧罨罬羦羥羧翛翜耡腤腠腷腜腩腛腢腲朡腞腶腧腯腄腡舝艉艄艀艂艅蓱萿葖葶葹蒏蒍葥葑葀蒆葧萰葍葽葚葙葴葳葝蔇葞萷萺萴葺葃葸萲葅萩菙葋萯葂萭葟葰萹葎葌葒葯蓅蒎萻葇���\".split(\"\");\nfor(j = 0; j != D[187].length; ++j) if(D[187][j].charCodeAt(0) !== 0xFFFD) { e[D[187][j]] = 47872 + j; d[47872 + j] = D[187][j];}\nD[188] = \"����������������������������������������������������������������萶萳葨葾葄萫葠葔葮葐蜋蜄蛷蜌蛺蛖蛵蝍蛸蜎蜉蜁蛶蜍蜅裖裋裍裎裞裛裚裌裐覅覛觟觥觤觡觠觢觜触詶誆詿詡訿詷誂誄詵誃誁詴詺谼豋豊豥豤豦�貆貄貅賌赨赩趑趌趎趏趍趓趔趐趒跰跠跬跱跮跐跩跣跢跧跲跫跴輆軿輁輀輅輇輈輂輋遒逿遄遉逽鄐鄍鄏鄑鄖鄔鄋鄎酮酯鉈鉒鈰鈺鉦鈳鉥鉞銃鈮鉊鉆鉭鉬鉏鉠鉧鉯鈶鉡鉰鈱鉔鉣鉐鉲鉎鉓鉌鉖鈲閟閜閞閛隒隓隑隗雎雺雽雸雵靳靷靸靲頏頍頎颬飶飹馯馲馰馵骭骫魛鳪鳭鳧麀黽僦僔僗僨僳僛僪���\".split(\"\");\nfor(j = 0; j != D[188].length; ++j) if(D[188][j].charCodeAt(0) !== 0xFFFD) { e[D[188][j]] = 48128 + j; d[48128 + j] = D[188][j];}\nD[189] = \"����������������������������������������������������������������僝僤僓僬僰僯僣僠凘劀劁勩勫匰厬嘧嘕嘌嘒嗼嘏嘜嘁嘓嘂嗺嘝嘄嗿嗹墉塼墐墘墆墁塿塴墋塺墇墑墎塶墂墈塻墔墏壾奫嫜嫮嫥嫕嫪嫚嫭嫫嫳嫢嫠嫛�嫬嫞嫝嫙嫨嫟孷寠寣屣嶂嶀嵽嶆嵺嶁嵷嶊嶉嶈嵾嵼嶍嵹嵿幘幙幓廘廑廗廎廜廕廙廒廔彄彃彯徶愬愨慁慞慱慳慒慓慲慬憀慴慔慺慛慥愻慪慡慖戩戧戫搫摍摛摝摴摶摲摳摽摵摦撦摎撂摞摜摋摓摠摐摿搿摬摫摙摥摷敳斠暡暠暟朅朄朢榱榶槉榠槎榖榰榬榼榑榙榎榧榍榩榾榯榿槄榽榤槔榹槊榚槏���\".split(\"\");\nfor(j = 0; j != D[189].length; ++j) if(D[189][j].charCodeAt(0) !== 0xFFFD) { e[D[189][j]] = 48384 + j; d[48384 + j] = D[189][j];}\nD[190] = \"����������������������������������������������������������������榳榓榪榡榞槙榗榐槂榵榥槆歊歍歋殞殟殠毃毄毾滎滵滱漃漥滸漷滻漮漉潎漙漚漧漘漻漒滭漊漶潳滹滮漭潀漰漼漵滫漇漎潃漅滽滶漹漜滼漺漟漍漞�漈漡熇熐熉熀熅熂熏煻熆熁熗牄牓犗犕犓獃獍獑獌瑢瑳瑱瑵瑲瑧瑮甀甂甃畽疐瘖瘈瘌瘕瘑瘊瘔皸瞁睼瞅瞂睮瞀睯睾瞃碲碪碴碭碨硾碫碞碥碠碬碢碤禘禊禋禖禕禔禓禗禈禒禐稫穊稰稯稨稦窨窫窬竮箈箜箊箑箐箖箍箌箛箎箅箘劄箙箤箂粻粿粼粺綧綷緂綣綪緁緀緅綝緎緄緆緋緌綯綹綖綼綟綦���\".split(\"\");\nfor(j = 0; j != D[190].length; ++j) if(D[190][j].charCodeAt(0) !== 0xFFFD) { e[D[190][j]] = 48640 + j; d[48640 + j] = D[190][j];}\nD[191] = \"����������������������������������������������������������������綮綩綡緉罳翢翣翥翞耤聝聜膉膆膃膇膍膌膋舕蒗蒤蒡蒟蒺蓎蓂蒬蒮蒫蒹蒴蓁蓍蒪蒚蒱蓐蒝蒧蒻蒢蒔蓇蓌蒛蒩蒯蒨蓖蒘蒶蓏蒠蓗蓔蓒蓛蒰蒑虡蜳蜣�蜨蝫蝀蜮蜞蜡蜙蜛蝃蜬蝁蜾蝆蜠蜲蜪蜭蜼蜒蜺蜱蜵蝂蜦蜧蜸蜤蜚蜰蜑裷裧裱裲裺裾裮裼裶裻裰裬裫覝覡覟覞觩觫觨誫誙誋誒誏誖谽豨豩賕賏賗趖踉踂跿踍跽踊踃踇踆踅跾踀踄輐輑輎輍鄣鄜鄠鄢鄟鄝鄚鄤鄡鄛酺酲酹酳銥銤鉶銛鉺銠銔銪銍銦銚銫鉹銗鉿銣鋮銎銂銕銢鉽銈銡銊銆銌銙銧鉾銇���\".split(\"\");\nfor(j = 0; j != D[191].length; ++j) if(D[191][j].charCodeAt(0) !== 0xFFFD) { e[D[191][j]] = 48896 + j; d[48896 + j] = D[191][j];}\nD[192] = \"����������������������������������������������������������������銩銝銋鈭隞隡雿靘靽靺靾鞃鞀鞂靻鞄鞁靿韎韍頖颭颮餂餀餇馝馜駃馹馻馺駂馽駇骱髣髧鬾鬿魠魡魟鳱鳲鳵麧僿儃儰僸儆儇僶僾儋儌僽儊劋劌勱勯�噈噂噌嘵噁噊噉噆噘噚噀嘳嘽嘬嘾嘸嘪嘺圚墫墝墱墠墣墯墬墥墡壿嫿嫴嫽嫷嫶嬃嫸嬂嫹嬁嬇嬅嬏屧嶙嶗嶟嶒嶢嶓嶕嶠嶜嶡嶚嶞幩幝幠幜緳廛廞廡彉徲憋憃慹憱憰憢憉憛憓憯憭憟憒憪憡憍慦憳戭摮摰撖撠撅撗撜撏撋撊撌撣撟摨撱撘敶敺敹敻斲斳暵暰暩暲暷暪暯樀樆樗槥槸樕槱槤樠槿槬槢���\".split(\"\");\nfor(j = 0; j != D[192].length; ++j) if(D[192][j].charCodeAt(0) !== 0xFFFD) { e[D[192][j]] = 49152 + j; d[49152 + j] = D[192][j];}\nD[193] = \"����������������������������������������������������������������樛樝槾樧槲槮樔槷槧橀樈槦槻樍槼槫樉樄樘樥樏槶樦樇槴樖歑殥殣殢殦氁氀毿氂潁漦潾澇濆澒澍澉澌潢潏澅潚澖潶潬澂潕潲潒潐潗澔澓潝漀潡潫�潽潧澐潓澋潩潿澕潣潷潪潻熲熯熛熰熠熚熩熵熝熥熞熤熡熪熜熧熳犘犚獘獒獞獟獠獝獛獡獚獙獢璇璉璊璆璁瑽璅璈瑼瑹甈甇畾瘥瘞瘙瘝瘜瘣瘚瘨瘛皜皝皞皛瞍瞏瞉瞈磍碻磏磌磑磎磔磈磃磄磉禚禡禠禜禢禛歶稹窲窴窳箷篋箾箬篎箯箹篊箵糅糈糌糋緷緛緪緧緗緡縃緺緦緶緱緰緮緟罶羬羰羭���\".split(\"\");\nfor(j = 0; j != D[193].length; ++j) if(D[193][j].charCodeAt(0) !== 0xFFFD) { e[D[193][j]] = 49408 + j; d[49408 + j] = D[193][j];}\nD[194] = \"����������������������������������������������������������������翭翫翪翬翦翨聤聧膣膟膞膕膢膙膗舖艏艓艒艐艎艑蔤蔻蔏蔀蔩蔎蔉蔍蔟蔊蔧蔜蓻蔫蓺蔈蔌蓴蔪蓲蔕蓷蓫蓳蓼蔒蓪蓩蔖蓾蔨蔝蔮蔂蓽蔞蓶蔱蔦蓧蓨�蓰蓯蓹蔘蔠蔰蔋蔙蔯虢蝖蝣蝤蝷蟡蝳蝘蝔蝛蝒蝡蝚蝑蝞蝭蝪蝐蝎蝟蝝蝯蝬蝺蝮蝜蝥蝏蝻蝵蝢蝧蝩衚褅褌褔褋褗褘褙褆褖褑褎褉覢覤覣觭觰觬諏諆誸諓諑諔諕誻諗誾諀諅諘諃誺誽諙谾豍貏賥賟賙賨賚賝賧趠趜趡趛踠踣踥踤踮踕踛踖踑踙踦踧踔踒踘踓踜踗踚輬輤輘輚輠輣輖輗遳遰遯遧遫鄯���\".split(\"\");\nfor(j = 0; j != D[194].length; ++j) if(D[194][j].charCodeAt(0) !== 0xFFFD) { e[D[194][j]] = 49664 + j; d[49664 + j] = D[194][j];}\nD[195] = \"����������������������������������������������������������������鄫鄩鄪鄲鄦鄮醅醆醊醁醂醄醀鋐鋃鋄鋀鋙銶鋏鋱鋟鋘鋩鋗鋝鋌鋯鋂鋨鋊鋈鋎鋦鋍鋕鋉鋠鋞鋧鋑鋓銵鋡鋆銴镼閬閫閮閰隤隢雓霅霈霂靚鞊鞎鞈韐韏�頞頝頦頩頨頠頛頧颲餈飺餑餔餖餗餕駜駍駏駓駔駎駉駖駘駋駗駌骳髬髫髳髲髱魆魃魧魴魱魦魶魵魰魨魤魬鳼鳺鳽鳿鳷鴇鴀鳹鳻鴈鴅鴄麃黓鼏鼐儜儓儗儚儑凞匴叡噰噠噮噳噦噣噭噲噞噷圜圛壈墽壉墿墺壂墼壆嬗嬙嬛嬡嬔嬓嬐嬖嬨嬚嬠嬞寯嶬嶱嶩嶧嶵嶰嶮嶪嶨嶲嶭嶯嶴幧幨幦幯廩廧廦廨廥���\".split(\"\");\nfor(j = 0; j != D[195].length; ++j) if(D[195][j].charCodeAt(0) !== 0xFFFD) { e[D[195][j]] = 49920 + j; d[49920 + j] = D[195][j];}\nD[196] = \"����������������������������������������������������������������彋徼憝憨憖懅憴懆懁懌憺憿憸憌擗擖擐擏擉撽撉擃擛擳擙攳敿敼斢曈暾曀曊曋曏暽暻暺曌朣樴橦橉橧樲橨樾橝橭橶橛橑樨橚樻樿橁橪橤橐橏橔橯�橩橠樼橞橖橕橍橎橆歕歔歖殧殪殫毈毇氄氃氆澭濋澣濇澼濎濈潞濄澽澞濊澨瀄澥澮澺澬澪濏澿澸澢濉澫濍澯澲澰燅燂熿熸燖燀燁燋燔燊燇燏熽燘熼燆燚燛犝犞獩獦獧獬獥獫獪瑿璚璠璔璒璕璡甋疀瘯瘭瘱瘽瘳瘼瘵瘲瘰皻盦瞚瞝瞡瞜瞛瞢瞣瞕瞙瞗磝磩磥磪磞磣磛磡磢磭磟磠禤穄穈穇窶窸窵���\".split(\"\");\nfor(j = 0; j != D[196].length; ++j) if(D[196][j].charCodeAt(0) !== 0xFFFD) { e[D[196][j]] = 50176 + j; d[50176 + j] = D[196][j];}\nD[197] = \"����������������������������������������������������������������窱窷篞篣篧篝篕篥篚篨篹篔篪篢篜篫篘篟糒糔糗糐糑縒縡縗縌縟縠縓縎縜縕縚縢縋縏縖縍縔縥縤罃罻罼罺羱翯耪耩聬膱膦膮膹膵膫膰膬膴膲膷膧�臲艕艖艗蕖蕅蕫蕍蕓蕡蕘蕀蕆蕤蕁蕢蕄蕑蕇蕣蔾蕛蕱蕎蕮蕵蕕蕧蕠薌蕦蕝蕔蕥蕬虣虥虤螛螏螗螓螒螈螁螖螘蝹螇螣螅螐螑螝螄螔螜螚螉褞褦褰褭褮褧褱褢褩褣褯褬褟觱諠諢諲諴諵諝謔諤諟諰諈諞諡諨諿諯諻貑貒貐賵賮賱賰賳赬赮趥趧踳踾踸蹀蹅踶踼踽蹁踰踿躽輶輮輵輲輹輷輴遶遹遻邆���\".split(\"\");\nfor(j = 0; j != D[197].length; ++j) if(D[197][j].charCodeAt(0) !== 0xFFFD) { e[D[197][j]] = 50432 + j; d[50432 + j] = D[197][j];}\nD[198] = \"����������������������������������������������������������������郺鄳鄵鄶醓醐醑醍醏錧錞錈錟錆錏鍺錸錼錛錣錒錁鍆錭錎錍鋋錝鋺錥錓鋹鋷錴錂錤鋿錩錹錵錪錔錌錋鋾錉錀鋻錖閼闍閾閹閺閶閿閵閽隩雔霋霒霐�鞙鞗鞔韰韸頵頯頲餤餟餧餩馞駮駬駥駤駰駣駪駩駧骹骿骴骻髶髺髹髷鬳鮀鮅鮇魼魾魻鮂鮓鮒鮐魺鮕魽鮈鴥鴗鴠鴞鴔鴩鴝鴘鴢鴐鴙鴟麈麆麇麮麭黕黖黺鼒鼽儦儥儢儤儠儩勴嚓嚌嚍嚆嚄嚃噾嚂噿嚁壖壔壏壒嬭嬥嬲嬣嬬嬧嬦嬯嬮孻寱寲嶷幬幪徾徻懃憵憼懧懠懥懤懨懞擯擩擣擫擤擨斁斀斶旚曒���\".split(\"\");\nfor(j = 0; j != D[198].length; ++j) if(D[198][j].charCodeAt(0) !== 0xFFFD) { e[D[198][j]] = 50688 + j; d[50688 + j] = D[198][j];}\nD[199] = \"����������������������������������������������������������������檍檖檁檥檉檟檛檡檞檇檓檎檕檃檨檤檑橿檦檚檅檌檒歛殭氉濌澩濴濔濣濜濭濧濦濞濲濝濢濨燡燱燨燲燤燰燢獳獮獯璗璲璫璐璪璭璱璥璯甐甑甒甏�疄癃癈癉癇皤盩瞵瞫瞲瞷瞶瞴瞱瞨矰磳磽礂磻磼磲礅磹磾礄禫禨穜穛穖穘穔穚窾竀竁簅簏篲簀篿篻簎篴簋篳簂簉簃簁篸篽簆篰篱簐簊糨縭縼繂縳顈縸縪繉繀繇縩繌縰縻縶繄縺罅罿罾罽翴翲耬膻臄臌臊臅臇膼臩艛艚艜薃薀薏薧薕薠薋薣蕻薤薚薞蕷蕼薉薡蕺蕸蕗薎薖薆薍薙薝薁薢薂薈薅蕹���\".split(\"\");\nfor(j = 0; j != D[199].length; ++j) if(D[199][j].charCodeAt(0) !== 0xFFFD) { e[D[199][j]] = 50944 + j; d[50944 + j] = D[199][j];}\nD[200] = \"����������������������������������������������������������������蕶薘薐薟虨螾螪螭蟅螰螬螹螵螼螮蟉蟃蟂蟌螷螯蟄蟊螴螶螿螸螽蟞螲褵褳褼褾襁襒褷襂覭覯覮觲觳謞謘謖謑謅謋謢謏謒謕謇謍謈謆謜謓謚豏豰豲�豱豯貕貔賹赯蹎蹍蹓蹐蹌蹇轃轀邅遾鄸醚醢醛醙醟醡醝醠鎡鎃鎯鍤鍖鍇鍼鍘鍜鍶鍉鍐鍑鍠鍭鎏鍌鍪鍹鍗鍕鍒鍏鍱鍷鍻鍡鍞鍣鍧鎀鍎鍙闇闀闉闃闅閷隮隰隬霠霟霘霝霙鞚鞡鞜鞞鞝韕韔韱顁顄顊顉顅顃餥餫餬餪餳餲餯餭餱餰馘馣馡騂駺駴駷駹駸駶駻駽駾駼騃骾髾髽鬁髼魈鮚鮨鮞鮛鮦鮡鮥鮤���\".split(\"\");\nfor(j = 0; j != D[200].length; ++j) if(D[200][j].charCodeAt(0) !== 0xFFFD) { e[D[200][j]] = 51200 + j; d[51200 + j] = D[200][j];}\nD[201] = \"����������������������������������������������������������������鮆鮢鮠鮯鴳鵁鵧鴶鴮鴯鴱鴸鴰鵅鵂鵃鴾鴷鵀鴽翵鴭麊麉麍麰黈黚黻黿鼤鼣鼢齔龠儱儭儮嚘嚜嚗嚚嚝嚙奰嬼屩屪巀幭幮懘懟懭懮懱懪懰懫懖懩擿攄�擽擸攁攃擼斔旛曚曛曘櫅檹檽櫡櫆檺檶檷櫇檴檭歞毉氋瀇瀌瀍瀁瀅瀔瀎濿瀀濻瀦濼濷瀊爁燿燹爃燽獶璸瓀璵瓁璾璶璻瓂甔甓癜癤癙癐癓癗癚皦皽盬矂瞺磿礌礓礔礉礐礒礑禭禬穟簜簩簙簠簟簭簝簦簨簢簥簰繜繐繖繣繘繢繟繑繠繗繓羵羳翷翸聵臑臒臐艟艞薴藆藀藃藂薳薵薽藇藄薿藋藎藈藅���\".split(\"\");\nfor(j = 0; j != D[201].length; ++j) if(D[201][j].charCodeAt(0) !== 0xFFFD) { e[D[201][j]] = 51456 + j; d[51456 + j] = D[201][j];}\nD[202] = \"����������������������������������������������������������������薱薶藒蘤薸薷薾虩蟧蟦蟢蟛蟫蟪蟥蟟蟳蟤蟔蟜蟓蟭蟘蟣螤蟗蟙蠁蟴蟨蟝襓襋襏襌襆襐襑襉謪謧謣謳謰謵譇謯謼謾謱謥謷謦謶謮謤謻謽謺豂豵貙貘�貗賾贄贂贀蹜蹢蹠蹗蹖蹞蹥蹧蹛蹚蹡蹝蹩蹔轆轇轈轋鄨鄺鄻鄾醨醥醧醯醪鎵鎌鎒鎷鎛鎝鎉鎧鎎鎪鎞鎦鎕鎈鎙鎟鎍鎱鎑鎲鎤鎨鎴鎣鎥闒闓闑隳雗雚巂雟雘雝霣霢霥鞬鞮鞨鞫鞤鞪鞢鞥韗韙韖韘韺顐顑顒颸饁餼餺騏騋騉騍騄騑騊騅騇騆髀髜鬈鬄鬅鬩鬵魊魌魋鯇鯆鯃鮿鯁鮵鮸鯓鮶鯄鮹鮽鵜鵓鵏���\".split(\"\");\nfor(j = 0; j != D[202].length; ++j) if(D[202][j].charCodeAt(0) !== 0xFFFD) { e[D[202][j]] = 51712 + j; d[51712 + j] = D[202][j];}\nD[203] = \"����������������������������������������������������������������鵊鵛鵋鵙鵖鵌鵗鵒鵔鵟鵘鵚麎麌黟鼁鼀鼖鼥鼫鼪鼩鼨齌齕儴儵劖勷厴嚫嚭嚦嚧嚪嚬壚壝壛夒嬽嬾嬿巃幰徿懻攇攐攍攉攌攎斄旞旝曞櫧櫠櫌櫑櫙櫋�櫟櫜櫐櫫櫏櫍櫞歠殰氌瀙瀧瀠瀖瀫瀡瀢瀣瀩瀗瀤瀜瀪爌爊爇爂爅犥犦犤犣犡瓋瓅璷瓃甖癠矉矊矄矱礝礛礡礜礗礞禰穧穨簳簼簹簬簻糬糪繶繵繸繰繷繯繺繲繴繨罋罊羃羆羷翽翾聸臗臕艤艡艣藫藱藭藙藡藨藚藗藬藲藸藘藟藣藜藑藰藦藯藞藢蠀蟺蠃蟶蟷蠉蠌蠋蠆蟼蠈蟿蠊蠂襢襚襛襗襡襜襘襝���\".split(\"\");\nfor(j = 0; j != D[203].length; ++j) if(D[203][j].charCodeAt(0) !== 0xFFFD) { e[D[203][j]] = 51968 + j; d[51968 + j] = D[203][j];}\nD[204] = \"����������������������������������������������������������������襙覈覷覶觶譐譈譊譀譓譖譔譋譕譑譂譒譗豃豷豶貚贆贇贉趬趪趭趫蹭蹸蹳蹪蹯蹻軂轒轑轏轐轓辴酀鄿醰醭鏞鏇鏏鏂鏚鏐鏹鏬鏌鏙鎩鏦鏊鏔鏮鏣鏕�鏄鏎鏀鏒鏧镽闚闛雡霩霫霬霨霦鞳鞷鞶韝韞韟顜顙顝顗颿颽颻颾饈饇饃馦馧騚騕騥騝騤騛騢騠騧騣騞騜騔髂鬋鬊鬎鬌鬷鯪鯫鯠鯞鯤鯦鯢鯰鯔鯗鯬鯜鯙鯥鯕鯡鯚鵷鶁鶊鶄鶈鵱鶀鵸鶆鶋鶌鵽鵫鵴鵵鵰鵩鶅鵳鵻鶂鵯鵹鵿鶇鵨麔麑黀黼鼭齀齁齍齖齗齘匷嚲嚵嚳壣孅巆巇廮廯忀忁懹攗攖攕攓旟曨���\".split(\"\");\nfor(j = 0; j != D[204].length; ++j) if(D[204][j].charCodeAt(0) !== 0xFFFD) { e[D[204][j]] = 52224 + j; d[52224 + j] = D[204][j];}\nD[205] = \"����������������������������������������������������������������曣曤櫳櫰櫪櫨櫹櫱櫮櫯瀼瀵瀯瀷瀴瀱灂瀸瀿瀺瀹灀瀻瀳灁爓爔犨獽獼璺皫皪皾盭矌矎矏矍矲礥礣礧礨礤礩禲穮穬穭竷籉籈籊籇籅糮繻繾纁纀羺翿�聹臛臙舋艨艩蘢藿蘁藾蘛蘀藶蘄蘉蘅蘌藽蠙蠐蠑蠗蠓蠖襣襦覹觷譠譪譝譨譣譥譧譭趮躆躈躄轙轖轗轕轘轚邍酃酁醷醵醲醳鐋鐓鏻鐠鐏鐔鏾鐕鐐鐨鐙鐍鏵鐀鏷鐇鐎鐖鐒鏺鐉鏸鐊鏿鏼鐌鏶鐑鐆闞闠闟霮霯鞹鞻韽韾顠顢顣顟飁飂饐饎饙饌饋饓騲騴騱騬騪騶騩騮騸騭髇髊髆鬐鬒鬑鰋鰈鯷鰅鰒鯸���\".split(\"\");\nfor(j = 0; j != D[205].length; ++j) if(D[205][j].charCodeAt(0) !== 0xFFFD) { e[D[205][j]] = 52480 + j; d[52480 + j] = D[205][j];}\nD[206] = \"����������������������������������������������������������������鱀鰇鰎鰆鰗鰔鰉鶟鶙鶤鶝鶒鶘鶐鶛鶠鶔鶜鶪鶗鶡鶚鶢鶨鶞鶣鶿鶩鶖鶦鶧麙麛麚黥黤黧黦鼰鼮齛齠齞齝齙龑儺儹劘劗囃嚽嚾孈孇巋巏廱懽攛欂櫼欃�櫸欀灃灄灊灈灉灅灆爝爚爙獾甗癪矐礭礱礯籔籓糲纊纇纈纋纆纍罍羻耰臝蘘蘪蘦蘟蘣蘜蘙蘧蘮蘡蘠蘩蘞蘥蠩蠝蠛蠠蠤蠜蠫衊襭襩襮襫觺譹譸譅譺譻贐贔趯躎躌轞轛轝酆酄酅醹鐿鐻鐶鐩鐽鐼鐰鐹鐪鐷鐬鑀鐱闥闤闣霵霺鞿韡顤飉飆飀饘饖騹騽驆驄驂驁騺騿髍鬕鬗鬘鬖鬺魒鰫鰝鰜鰬鰣鰨鰩鰤���\".split(\"\");\nfor(j = 0; j != D[206].length; ++j) if(D[206][j].charCodeAt(0) !== 0xFFFD) { e[D[206][j]] = 52736 + j; d[52736 + j] = D[206][j];}\nD[207] = \"����������������������������������������������������������������鰡鶷鶶鶼鷁鷇鷊鷏鶾鷅鷃鶻鶵鷎鶹鶺鶬鷈鶱鶭鷌鶳鷍鶲鹺麜黫黮黭鼛鼘鼚鼱齎齥齤龒亹囆囅囋奱孋孌巕巑廲攡攠攦攢欋欈欉氍灕灖灗灒爞爟犩獿�瓘瓕瓙瓗癭皭礵禴穰穱籗籜籙籛籚糴糱纑罏羇臞艫蘴蘵蘳蘬蘲蘶蠬蠨蠦蠪蠥襱覿覾觻譾讄讂讆讅譿贕躕躔躚躒躐躖躗轠轢酇鑌鑐鑊鑋鑏鑇鑅鑈鑉鑆霿韣顪顩飋饔饛驎驓驔驌驏驈驊驉驒驐髐鬙鬫鬻魖魕鱆鱈鰿鱄鰹鰳鱁鰼鰷鰴鰲鰽鰶鷛鷒鷞鷚鷋鷐鷜鷑鷟鷩鷙鷘鷖鷵鷕鷝麶黰鼵鼳鼲齂齫龕龢���\".split(\"\");\nfor(j = 0; j != D[207].length; ++j) if(D[207][j].charCodeAt(0) !== 0xFFFD) { e[D[207][j]] = 52992 + j; d[52992 + j] = D[207][j];}\nD[208] = \"����������������������������������������������������������������儽劙壨壧奲孍巘蠯彏戁戃戄攩攥斖曫欑欒欏毊灛灚爢玂玁玃癰矔籧籦纕艬蘺虀蘹蘼蘱蘻蘾蠰蠲蠮蠳襶襴襳觾讌讎讋讈豅贙躘轤轣醼鑢鑕鑝鑗鑞韄�韅頀驖驙鬞鬟鬠鱒鱘鱐鱊鱍鱋鱕鱙鱌鱎鷻鷷鷯鷣鷫鷸鷤鷶鷡鷮鷦鷲鷰鷢鷬鷴鷳鷨鷭黂黐黲黳鼆鼜鼸鼷鼶齃齏齱齰齮齯囓囍孎屭攭曭曮欓灟灡灝灠爣瓛瓥矕礸禷禶籪纗羉艭虃蠸蠷蠵衋讔讕躞躟躠躝醾醽釂鑫鑨鑩雥靆靃靇韇韥驞髕魙鱣鱧鱦鱢鱞鱠鸂鷾鸇鸃鸆鸅鸀鸁鸉鷿鷽鸄麠鼞齆齴齵齶囔���\".split(\"\");\nfor(j = 0; j != D[208].length; ++j) if(D[208][j].charCodeAt(0) !== 0xFFFD) { e[D[208][j]] = 53248 + j; d[53248 + j] = D[208][j];}\nD[209] = \"����������������������������������������������������������������攮斸欘欙欗欚灢爦犪矘矙礹籩籫糶纚纘纛纙臠臡虆虇虈襹襺襼襻觿讘讙躥躤躣鑮鑭鑯鑱鑳靉顲饟鱨鱮鱭鸋鸍鸐鸏鸒鸑麡黵鼉齇齸齻齺齹圞灦籯蠼�趲躦釃鑴鑸鑶鑵驠鱴鱳鱱鱵鸔鸓黶鼊龤灨灥糷虪蠾蠽蠿讞貜躩軉靋顳顴飌饡馫驤驦驧鬤鸕鸗齈戇欞爧虌躨钂钀钁驩驨鬮鸙爩虋讟钃鱹麷癵驫鱺鸝灩灪麤齾齉龘�����������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[209].length; ++j) if(D[209][j].charCodeAt(0) !== 0xFFFD) { e[D[209][j]] = 53504 + j; d[53504 + j] = D[209][j];}\nD[210] = \"��������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[210].length; ++j) if(D[210][j].charCodeAt(0) !== 0xFFFD) { e[D[210][j]] = 53760 + j; d[53760 + j] = D[210][j];}\nD[211] = \"��������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[211].length; ++j) if(D[211][j].charCodeAt(0) !== 0xFFFD) { e[D[211][j]] = 54016 + j; d[54016 + j] = D[211][j];}\nD[212] = \"��������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[212].length; ++j) if(D[212][j].charCodeAt(0) !== 0xFFFD) { e[D[212][j]] = 54272 + j; d[54272 + j] = D[212][j];}\nD[213] = \"��������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[213].length; ++j) if(D[213][j].charCodeAt(0) !== 0xFFFD) { e[D[213][j]] = 54528 + j; d[54528 + j] = D[213][j];}\nD[214] = \"��������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[214].length; ++j) if(D[214][j].charCodeAt(0) !== 0xFFFD) { e[D[214][j]] = 54784 + j; d[54784 + j] = D[214][j];}\nD[215] = \"��������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[215].length; ++j) if(D[215][j].charCodeAt(0) !== 0xFFFD) { e[D[215][j]] = 55040 + j; d[55040 + j] = D[215][j];}\nD[216] = \"��������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[216].length; ++j) if(D[216][j].charCodeAt(0) !== 0xFFFD) { e[D[216][j]] = 55296 + j; d[55296 + j] = D[216][j];}\nD[217] = \"��������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[217].length; ++j) if(D[217][j].charCodeAt(0) !== 0xFFFD) { e[D[217][j]] = 55552 + j; d[55552 + j] = D[217][j];}\nD[218] = \"��������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[218].length; ++j) if(D[218][j].charCodeAt(0) !== 0xFFFD) { e[D[218][j]] = 55808 + j; d[55808 + j] = D[218][j];}\nD[219] = \"��������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[219].length; ++j) if(D[219][j].charCodeAt(0) !== 0xFFFD) { e[D[219][j]] = 56064 + j; d[56064 + j] = D[219][j];}\nD[220] = \"��������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[220].length; ++j) if(D[220][j].charCodeAt(0) !== 0xFFFD) { e[D[220][j]] = 56320 + j; d[56320 + j] = D[220][j];}\nD[221] = \"��������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[221].length; ++j) if(D[221][j].charCodeAt(0) !== 0xFFFD) { e[D[221][j]] = 56576 + j; d[56576 + j] = D[221][j];}\nD[222] = \"��������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[222].length; ++j) if(D[222][j].charCodeAt(0) !== 0xFFFD) { e[D[222][j]] = 56832 + j; d[56832 + j] = D[222][j];}\nD[223] = \"��������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[223].length; ++j) if(D[223][j].charCodeAt(0) !== 0xFFFD) { e[D[223][j]] = 57088 + j; d[57088 + j] = D[223][j];}\nD[224] = \"��������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[224].length; ++j) if(D[224][j].charCodeAt(0) !== 0xFFFD) { e[D[224][j]] = 57344 + j; d[57344 + j] = D[224][j];}\nD[225] = \"��������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[225].length; ++j) if(D[225][j].charCodeAt(0) !== 0xFFFD) { e[D[225][j]] = 57600 + j; d[57600 + j] = D[225][j];}\nD[226] = \"��������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[226].length; ++j) if(D[226][j].charCodeAt(0) !== 0xFFFD) { e[D[226][j]] = 57856 + j; d[57856 + j] = D[226][j];}\nD[227] = \"��������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[227].length; ++j) if(D[227][j].charCodeAt(0) !== 0xFFFD) { e[D[227][j]] = 58112 + j; d[58112 + j] = D[227][j];}\nD[228] = \"��������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[228].length; ++j) if(D[228][j].charCodeAt(0) !== 0xFFFD) { e[D[228][j]] = 58368 + j; d[58368 + j] = D[228][j];}\nD[229] = \"��������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[229].length; ++j) if(D[229][j].charCodeAt(0) !== 0xFFFD) { e[D[229][j]] = 58624 + j; d[58624 + j] = D[229][j];}\nD[230] = \"��������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[230].length; ++j) if(D[230][j].charCodeAt(0) !== 0xFFFD) { e[D[230][j]] = 58880 + j; d[58880 + j] = D[230][j];}\nD[231] = \"��������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[231].length; ++j) if(D[231][j].charCodeAt(0) !== 0xFFFD) { e[D[231][j]] = 59136 + j; d[59136 + j] = D[231][j];}\nD[232] = \"��������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[232].length; ++j) if(D[232][j].charCodeAt(0) !== 0xFFFD) { e[D[232][j]] = 59392 + j; d[59392 + j] = D[232][j];}\nD[249] = \"��������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[249].length; ++j) if(D[249][j].charCodeAt(0) !== 0xFFFD) { e[D[249][j]] = 63744 + j; d[63744 + j] = D[249][j];}\nD[250] = \"��������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[250].length; ++j) if(D[250][j].charCodeAt(0) !== 0xFFFD) { e[D[250][j]] = 64000 + j; d[64000 + j] = D[250][j];}\nD[251] = \"��������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[251].length; ++j) if(D[251][j].charCodeAt(0) !== 0xFFFD) { e[D[251][j]] = 64256 + j; d[64256 + j] = D[251][j];}\nreturn {\"enc\": e, \"dec\": d }; })();\ncptable[20004] = (function(){ var d = [], e = {}, D = [], j;\nD[0] = \"\\u0000\\u0001\\u0002\\u0003\\u0004\\u0005\\u0006\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\u0014\\u0015\\u0016\\u0017\\u0018\\u0019\\u001a\\u001b\\u001c\\u001d\\u001e\\u001f !\\\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~����������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[0].length; ++j) if(D[0][j].charCodeAt(0) !== 0xFFFD) { e[D[0][j]] = 0 + j; d[0 + j] = D[0][j];}\nD[161] = \"����������������������������������万丌丏冇与丘�丮丳么�乒乓�亄�亍亓��������仈��仜仨仩���仚�伔伀伕伈仱优伬��伓�������伝仴�������伂伭���伿�伳��佖佢佉体佤佡佧佒佁佇佝伾佣侅侀佴侄佷佌侚�����������������������������������一丁七丈三上下不丐丑且丕世丙丞丟並���丫中丰丱串�丶�丸丹主�丿乂乃久之乍乎乏乖乘�乙乜九乞也乩乳乾亂�亅了予事�二于云互五井亙�些亞亟�亠亡亢交亥亦亨享京亭亮亳亶亹�人什仁仃仄仆仇今�\".split(\"\");\nfor(j = 0; j != D[161].length; ++j) if(D[161][j].charCodeAt(0) !== 0xFFFD) { e[D[161][j]] = 41216 + j; d[41216 + j] = D[161][j];}\nD[162] = \"���������������������������������佹侁侐侞侇侒侕�佫佬侘佼侉佰侜�����������俬�侺����俙俍俓侲俉俋俁俜侻侳俇�俖侹���倓倢倞倇倰倛俴倳倷俷倗倠倧倵倯倱�倔��������倎�偯偺偤偰偆偡偞偠偋偍偛偊偝偢倕�����������������������������������介仍仂仉仔仕他仗付仙仝仞仡仟代令以仰仲仳仵件价任份仿企伉伊伋伍伎伏伐休伙伯估你伴伶伸伺伻似伽佃但佈位低住佐佑佔何佗余佘佚佛作佞佟佺佽佩佪佯佳併佶佸佻佾使侃來侈例侍侏侑侔侖侗供依侷俔俅侮侯侵�\".split(\"\");\nfor(j = 0; j != D[162].length; ++j) if(D[162][j].charCodeAt(0) !== 0xFFFD) { e[D[162][j]] = 41472 + j; d[41472 + j] = D[162][j];}\nD[163] = \"���������������������������������偭偓�偀����偣���偮�偳�偅偟偩偌偷�傣傋傂�傌傢傛傃傕傝偨傜�傇�������傸�傽傻傺僈�傿僆傮僄傯傰僁傱僋�僣������僬僝僤僓僛僪僔僿儃儰僸僽僶儅����儊儜儑�儚儓�������������������������������������侶便係促俄俊俎俏俐俑俗俘俚俛保俟俠俞�信修俶倀倅倌倬俯俱俳俵俸俺俾倉個倍倆倏們倒倖倘候倚倜�借倡倣值倥倦倨倩倪倫倭偈偎偲偁偃假偉偏偕做停健偪側偵偶傎傔傖傀傅傍傑傒偫傘備傚傞�催傭傲傳傴債傷�\".split(\"\");\nfor(j = 0; j != D[163].length; ++j) if(D[163][j].charCodeAt(0) !== 0xFFFD) { e[D[163][j]] = 41728 + j; d[41728 + j] = D[163][j];}\nD[164] = \"���������������������������������儩儠儦儥儡儢��������儱儭儴儵��儹儺儸儽��兙党兛兞兝兟�����������冔冘������������冼��冾����凅���凐���凔凘�����������刌刉刓刐刜刞刡�����������������������������������傾僂僅僇僉僊像僱僎僦僨僩僑僕僖僚偽僥僧僭僮�僵價僻僾儀儂億儆儈儉�儌僰儋儇儐儒儔儕儗儘儤償優儲儳儷儻儼兡儿兀允元兄充兆先光兇克兌免兔兒兕兗兜兢兣入內全兩��八公六兮共兵其具典兼冀�冂冉冊再�\".split(\"\");\nfor(j = 0; j != D[164].length; ++j) if(D[164][j].charCodeAt(0) !== 0xFFFD) { e[D[164][j]] = 41984 + j; d[41984 + j] = D[164][j];}\nD[165] = \"����������������������������������刱�剆��剎剌����剚剒剟剕剫剭剬剷剺剻剼劀劁劋��劗劘劙劦勀��������勛���勴�匆��匋匑�匢����匰匴匷匼匽卌��卹�卼��厒厗厖��厞厜厤�厬�����������������������������������������������冏冓冑冒冕�冖冗冞冠冢冤冥冪�冫冬冰�冱冶冷�冽�凄准凈�凊凋凌凍���凜凝�几凡�凱凳凰�凵凶凸凹�出函�刀刁刃分切刈刊刎刑划刖列刨初刪判別�利剁刮到刲刳刵制刷券�刺剋剃剄則剉削刻前剜剞�\".split(\"\");\nfor(j = 0; j != D[165].length; ++j) if(D[165][j].charCodeAt(0) !== 0xFFFD) { e[D[165][j]] = 42240 + j; d[42240 + j] = D[165][j];}\nD[166] = \"����������������������������������叼����吆吋�吇����吱呎吧��呅�呔听吨吰吷吘吽�吜吥咇呿咁咑咖呸咕咚呾呥呬呴�呠呺呤����呯�呡��咶哅�������咦咪哎咭咮哖咩咾咠呰咼哏哃哞哸��唑唅唦唇唔哪唷哢唗唒哧哳����������������������������������剡剔剖�剛剝剩剪剮副割剴創剸剽剿劂劃劄劇劈劉劊劌劍劑劓劖��力功加劣助努劫劬劭�劻劾劼勁勃�勇勉勍勒動勖勘務勝勞�募勢勣勤勦勩勰勳勱勵勷勸�勹勺勻勿�包匈匊匍匏匐勾匕化北匙�匚匜匝匟匠匡匣�\".split(\"\");\nfor(j = 0; j != D[166].length; ++j) if(D[166][j].charCodeAt(0) !== 0xFFFD) { e[D[166][j]] = 42496 + j; d[42496 + j] = D[166][j];}\nD[167] = \"���������������������������������唚哫�唋�唃唊��啡啃啊啪啦啤啍唭唴啵啶唌唲啥啎啑啢唶唵����啕唸唬�唻�������唹�唰啒啅������啿�喡喣喳喲喱喨喥喒噅喢�啽喌�喵啷嗡嗨嗦嗄嗩喿嗏嗕嗢嗖嗈嗲嗌嗐喍嗧��嗋嗊嗝����������������������������������匪匯匱匭���匸匹匾匿區�十千廾卅升午卉半卑卒卓協南博卍卜卞占卡卣卦�卩卬�卯印危卲�卵卷卸�卻卮即�卿�厂厄厎�厔厘厙厚厝原�厥�厭�厲��厶厹去�參��又叉及友反叔取受�叛叟叡叢�口古�\".split(\"\");\nfor(j = 0; j != D[167].length; ++j) if(D[167][j].charCodeAt(0) !== 0xFFFD) { e[D[167][j]] = 42752 + j; d[42752 + j] = D[167][j];}\nD[168] = \"���������������������������������嗀嗥嗯�����������嘌嘓嗼嗺嘝嘟嘍嘀嘛嘜嘁嘄嘧嘕噘噚噀嘳嘽噆嘾嘸嘺噈噂噁噊嘪嘮噗�������噙噹噞噰噠噣噭噮噳嚎嚐嚓嚌嚍嚆嚄嚃嚂噾���嚁���嚕嚘嚜嚗�������嚦嚧嚪嚫嚭嚵����������������������������������句另叨叩只叫召叭叮叱可台史右叵�司吁吃各合吉吊同名后吏吐向�吒君吝吞吟吠否吩咐吪含吭吮呈吳吵吶吸吹告吻吼吾呀呂呃呆咂呢呦呧周咒�呱呫味呵呶呷呻呼命咀咄咆咈和咎�咋咍咡�咢咥咧咨咫咬咯咱咳咷�\".split(\"\");\nfor(j = 0; j != D[168].length; ++j) if(D[168][j].charCodeAt(0) !== 0xFFFD) { e[D[168][j]] = 43008 + j; d[43008 + j] = D[168][j];}\nD[169] = \"�����������������������������������囃嚽嚾囆囋��囌�囔囝囡��囟囧�囥��������圁圊圌圔圚圛�圞圠�圣�圮��圴��圪���坁坋�坒�����坅圾����������坽坴坶垀坲坱垃坩坯坨坢����������垵垘����������������������������������咸咺咽哀品哂哄哆哇哈哉咻咿員哥唎哦哩哭哮哲哺哼哽哿唁唆唈唉唐哤哨唄唏售唯唱唳唾啁啣啄商問啟啖啗啜啞唪唼啐啻啼喁喀喂喃善�喇喈喉喊喏喓喋喑喘喙喚喜喝唧喧喻喪喬單啾嗃嗅嗎嗇嗑嗓嗔嗚嗛嗜嗟嗣嗤喔�\".split(\"\");\nfor(j = 0; j != D[169].length; ++j) if(D[169][j].charCodeAt(0) !== 0xFFFD) { e[D[169][j]] = 43264 + j; d[43264 + j] = D[169][j];}\nD[170] = \"���������������������������������垮垔垏垗�垥垙垟垌�������垕����垸埌垶垿埕埔埆垽垼�埇���垹垺�������埥埬埣埲埮埽埼埻堔堈埢埜埳�埧堀堌埱堎埩埰堍堄堋堉堐����������堩堷堥堣堭堬堝堨堛堮堿�堸�����������������������������������喟喤喫喭嗆嗉嗒嗿�嘆嘈嘉嘏嘐�嘒嘖嘗噓嗹嘂嘎嘔嗷嗽嗾嘬嘩嗶嘰嘯嘲嘴嘵嘶�嘹嘻嘿噉噌�噎噢�噤器噩噪噫噬噯噲噴噶噥噦噸噱嚀嚅嚇嚏嚙嚚嚲囅嚥嚬嚮嚳嚴嚨嚶嚼囀囁囂嚷囉囊囈囑囓叻囗回囚四囪因囤困囫�\".split(\"\");\nfor(j = 0; j != D[170].length; ++j) if(D[170][j].charCodeAt(0) !== 0xFFFD) { e[D[170][j]] = 43520 + j; d[43520 + j] = D[170][j];}\nD[171] = \"�����������������������������������������������堳��塥塭塨塣塝塙塉塯塕��������堽���墆塻墔墏墇塶墘墑墂墈塽塴墋塺��墎����������墥��������墡�墣墯墬墱�������壆墽壂�壔壒�����������������������������������囷囹固囿圃圄圈圉國�圇圂囮圍園圓圖團圜�土在圩圬圭圯地圻址坻�均坊坍坎坏坐坑�坌坡坤坦坭坵坷坼垂坪坫坰坳型垓垝垠垢垣垞垤垛垚埃埋城埒埂埏域埠�埭埶執培基堂堅堆堊埤埴埵埸�堙堞堡堠堤堪堯報堲�\".split(\"\");\nfor(j = 0; j != D[171].length; ++j) if(D[171][j].charCodeAt(0) !== 0xFFFD) { e[D[171][j]] = 43776 + j; d[43776 + j] = D[171][j];}\nD[172] = \"��������������������������������������壢壝壛�������壨壧��壴�壾�夃夌复夎夒夗����夼奅奊�奜���奫��奰�奲奿�奻奾她妅妀奼���妧妘妠妦妡�妏妎妢妐�����������妵妺姏姎妽姈妱姃�妶妴姌姁�妼����������������������������������場堵堧堰�塍塊塋塌塑塔墓塚塗塘塞填塢塏塤塒塎塓塵塹塼塾塿墀墁境墅墉墊�塈墐墜墝增墟墨墩墮墺墳墠墫墦墾壁壅壇壈壎壑壓壕壖壘壙壞壟壚�壤壩圳士壬壯壹壺�壽壼��夆�夂夏�夔�夕外夙多夜夠夢夤夥�\".split(\"\");\nfor(j = 0; j != D[172].length; ++j) if(D[172][j].charCodeAt(0) !== 0xFFFD) { e[D[172][j]] = 44032 + j; d[44032 + j] = D[172][j];}\nD[173] = \"���������������������������������姀妳姠���姲�姩姳姵姺姽娀姶姴�姛�姘姡娖娏娗娳����娭�������娊��娕婠婘婀婧娸婝媎�婰�娹�娾婃��婂�婑婍�����婟婥婬婒婛�婩婇��婈婌婓婤婗�������媃媄���������������������������������������大夭天太夫夬央失夯夷夸夾奄奇奈奉奎奏奐契奔奕奓套奚�奘奠奡奢奧奩奪�奭奮奀女奴奶奸好妁如妃妄妊妒妍妓妖妗妙妝妣妤妥妨妯妹妻妾姆姊始姍姐姑姒姓妲妮委姚姜姝姞�姣姤姥姨姦姪姬姅姻娃姿威娉姮姱�\".split(\"\");\nfor(j = 0; j != D[173].length; ++j) if(D[173][j].charCodeAt(0) !== 0xFFFD) { e[D[173][j]] = 44288 + j; d[44288 + j] = D[173][j];}\nD[174] = \"�����������������������������������婿媌媜婻媦媏媞婸�媓���媋���媝媮娷媔婼媥媬媗�嫇媱嫈媻媰嫀嫊�嫆��媐媹��媷媴媶��嫮嫥嫕嫭嫛嫳嫢嫬��嬞�嫨��嫿嫴嫽嫷嫶�嬅嫸�嫻�嫵����嬝嬔嬓嬐嬠��嬚�嬡���嬨�����������������������������������娌娑娘娛娜娟娠娣娥娩娓娼�娶婁婆婉婊婕婚婢�婦婪婭娵婐婞婷婺媒媚媛媟媢媧媊媕�媳媵媸媼媽媾媿嫁嫂嫄嫉嫋嫌媲媺嫖嫗嫠嫡嫣嫦嫩嫪嫘嫚嫜嫫�媯嬈嬉嬋嬌嬃嬖嬗嬙嬛嬴嬪嬤嬭嬲嬾嬰嬸孀孅孌妞子孑孔孕孖�\".split(\"\");\nfor(j = 0; j != D[174].length; ++j) if(D[174][j].charCodeAt(0) !== 0xFFFD) { e[D[174][j]] = 44544 + j; d[44544 + j] = D[174][j];}\nD[175] = \"���������������������������������嬦嬮�嬯���嬬嬥嬧�嬽嬿�����孃��孈孇孋�孍孎��孓����孢孬屘孮孲�孷�孻���宒宎����宨�宭��������寑寪寍寋寊������寯寲寱����尃�尌�尒尐�尳尷屇��屄����������������������������������字存孚孛孜孝孟季孤孥孩孫孰孱孳學孺�孿孵宀宁它宄�宅宇守安宋完宏宓宕宗官宙定宛宜客宣室宥宦宬宮宰害宴宵家宸容�寀宿寁寂�寄寅密寇寧富寐寒寓寔寖寘寎寞察寡寢寤寥實寨寠寙審寫寬寮寰寵寶宧寸寺封�\".split(\"\");\nfor(j = 0; j != D[175].length; ++j) if(D[175][j].charCodeAt(0) !== 0xFFFD) { e[D[175][j]] = 44800 + j; d[44800 + j] = D[175][j];}\nD[176] = \"���������������������������������屌�屖屔�屙屜�屪�屴�屾���岓����岍岏岈岋岉岒岊�������岥�岶��岮岤岠岭岪岧岬岟岦岯岝峐峘峌峛峞峚峖峗峎�峉峇峊�����峟���峏�峪�峿峮峱峷�峰��崀��崁峬崞崋崝崤����������������������������������射�將專尉尊尋對導�小少�尖尚�尟尕尢尤尨尪就尰�尬�尸尹尺尻尼尾尿局屁居屆屈�屋屍屎屐屑展屏屝屠屢屣層履屧屨屩屬屭�屮屯岳山屹屺屼岌岐岑岔�岡岢岨岩岫岱岵岷岸岣峒峙峋峨峭�島峻峽峓峴峹��\".split(\"\");\nfor(j = 0; j != D[176].length; ++j) if(D[176][j].charCodeAt(0) !== 0xFFFD) { e[D[176][j]] = 45056 + j; d[45056 + j] = D[176][j];}\nD[177] = \"���������������������������������崥崠崌崨崍�崆崏崰崒崣崟������崮��崷嵃��嵕崳崺崴崵嵑嵁崽�嵙嵂����嵧嵢嵨�����嵱嵣嵥嵲嵞�嶀嵽嶆嵺��嵷嶊嶉嶈嵹���嵿嵼嶜嶟��嶢嶝嶓嶕嶡嶚�������������嶵����������������������������������崇崎�崑崔崖崙崗崛崢崩崚崧崦嵇崿嵋嵫嵊嵌崶嵎嵐喦崱嵩嶁嵬嵯嵾嶂嶄嶇嶒嶔嶸嶠嶞嶧嶙嶷嶺嶼嶽巉巋巍巒巘巔巖嶗巛川州巡巢�工左巧巨巫差�己巳已巴�巷巽�巾�市布帆�帑帕希帖帗帘帙帚帛帔帝帡帟帥師�\".split(\"\");\nfor(j = 0; j != D[177].length; ++j) if(D[177][j].charCodeAt(0) !== 0xFFFD) { e[D[177][j]] = 45312 + j; d[45312 + j] = D[177][j];}\nD[178] = \"���������������������������������嶰嶮嶪嶨嶬嶱嶭嶩嶴��巀�巃����巆巇��巏�巕巑�巟巠�巰��巹�帊帢帣帠帤��帩帾帴�幏幎�幙幓幩幝幠�幧幨幦�幵�庂�庉庌庈����庰庤庢庛庣庨庮庪��庹庲庱����廄��廅廆廇�����������������������������������席帨帳帶帷常帽幃幄幅幀幋幌幔幕幗幘幟幡幢幣幪幫幬幭幯幰幛干平年并幸幹�幺幻幼幽幾�广庀庄庇床庋序底庖店庚府庠庥度座庫庭庳庵庶康庸庾庬庴廁廂廌廑廈廉廊廋�廓廖廚廕廝廛廟廠廡廢廣廨廩廬廱廳龐��\".split(\"\");\nfor(j = 0; j != D[178].length; ++j) if(D[178][j].charCodeAt(0) !== 0xFFFD) { e[D[178][j]] = 45568 + j; d[45568 + j] = D[178][j];}\nD[179] = \"����������������������������������廗廎廜廔廒廙廘��緳廞�廧廦廥��廮廯�廲蠯�异�弅������弚弝��弮弳弶�彃彆彉彋�彏彔�����彯虨彴�彸彶�彾彽�徛徖�徟�徫��徦徥��徲�徻徾�徿忀忁�����忔忕忷忨忞忥����������������������������������廴延廷�建���廿弁弄弇弈弊�弋�式弒�弓弔引弗弛弟弢弣弦弧弩弤弨弭弱弰張彄強弸弼彀彈彊彌彎弘彐彖彗彘彙彝��彡形彤彥彧彩彪彫彬彭彰影��彳彷役彼彿往征徂待徇很徉徊律後徐徑徒得徘徙徜從徠御�\".split(\"\");\nfor(j = 0; j != D[179].length; ++j) if(D[179][j].charCodeAt(0) !== 0xFFFD) { e[D[179][j]] = 45824 + j; d[45824 + j] = D[179][j];}\nD[180] = \"���������������������������������������怀���忣忺忯忳怜�怭怲怋怴怊怚怞怬怢怐怌怮怓怷怹�怉����恀恟恬�������恔恲恞恅恓恛����悎��悕悗悢悈悀悇悊悐悆恿您惦惈惔悺惁惏惤惌惢悷惉悹�惍������惊�������������������������������������徨復循徬徭微徯徵德徹徼徽�心必忉忌忍忒忖志忘忐忑忙忝忠忡忪快忭忮念忱忸忤忻忽忿怍怎怏怒怕怖怗怙怛思怠怡急怦性怨怩怪怫怯�怵�怳怔恁恂恃恆恇恌恍恐恕恙恚恝恢恣恤恥恧恨恩恪恫恭息恰悃恉悄悅悌�\".split(\"\");\nfor(j = 0; j != D[180].length; ++j) if(D[180][j].charCodeAt(0) !== 0xFFFD) { e[D[180][j]] = 46080 + j; d[46080 + j] = D[180][j];}\nD[181] = \"������������������������������������悿�����愘���惼惾惷愖愅惵�愓愃愐愣��愋惿���愝愄����慅愶愲慉愩愨愯愮���慦�慔慺慛慲慒慱慬憀慞�慖��憋憃慹��憱憰憪憡憭憟憢憉憛憓��憌��憳��������������������������������������������悍悒悔悖悚悉悛悝�悟悠患�悁悱�悲悴悵悶悸悻悼悽悾惄情惆惇惎惑惓惕惘惙惚惛惜惝惟惠惡悰惋惰惱惲想惴惶惸惹惺惻愀愁愆愈愉愊愍愎意愒愔愕愚愛愜感慍愧�愫愬愴愷慎愾愿�慄慆慇慈慊態慌慁慓慕慘�慝�\".split(\"\");\nfor(j = 0; j != D[181].length; ++j) if(D[181][j].charCodeAt(0) !== 0xFFFD) { e[D[181][j]] = 46336 + j; d[46336 + j] = D[181][j];}\nD[182] = \"������������������������������������憺憿懅憴懁憵憼���懖���懧懠懤懨懞懘�懭懮懱懪懰懫�懩懻懹��戃戄������戠酨���戫戧戭����戺扂扔扜扞�扡���扚�扺抈�扲����扽扴抁抌抎抏抇扻�抸�抭拎抮抿抴抾抪����������������������������������慚慟慢慣�慧慨慫慮慰慳慴慵慶慷慼慾�憂慥憊憐憑憔憚憎憝憤憧憨憩憬憫憮憯憲憍憶憸憾懃懆懂懇懈應懊懋懌懍�憒憖��懟懣懥懦懲懿懵懶懷懸懺懼懽懾戀戁戇�戈戊戌戍戎成我戒戔戕或戚戛戟戢戥戡戣戩截戳�\".split(\"\");\nfor(j = 0; j != D[182].length; ++j) if(D[182][j].charCodeAt(0) !== 0xFFFD) { e[D[182][j]] = 46592 + j; d[46592 + j] = D[182][j];}\nD[183] = \"�������������������������������������抰抩挋拵挎挃拫拹挏挌拸拶挀拲挐挕���挓�����挔�捖挬捅捃揤挩捁捘捔挭捀捏���挴捂�捇挸����捗捵掜掮掰捼掤挻掱�����掟��掁捥掂掭掝掗捺捯掙��掅���揎揥揨��������������������������������������戮戰戲戴戤戶戾房所戽扁扃�扆扇扈扉扊�手才扎扑扒打扐托扛扠扢扦扣扭扮扯扱扳扶批抵扼找承技抃抄抆抉把抑抒抓抔投抖抗折抨披抬抱抶抹押抽拂拄拆拇�拈拉拊拋拌拍拏拐拑拒拓拔�拖拗拘拙拚招拜扤拮拭括�\".split(\"\");\nfor(j = 0; j != D[183].length; ++j) if(D[183][j].charCodeAt(0) !== 0xFFFD) { e[D[183][j]] = 46848 + j; d[46848 + j] = D[183][j];}\nD[184] = \"���������������������������������揝揯揃揳揊揶揇揙�揵摡揟揹揕揘揱揍搾搉搤搳摃搟���搎搕搹搷搣搌搰摁搯搚摀搞搧搋搿搫��搡搛����摍摲摵摦撦摎撂摞摜摔摝�摋摻摓摐摿摮摰摫����摬���摷������撢撳撟撖撠撗撜撏撋����������������������������������拱拯拳拴拷拽拾拿持挂指挈按挍挑挖拼挨挪挫振挶挹挺挼挽挾捄捆捉捋捌捍捚捐�捕挲捎捧捨捩捫�捭据捲捱�捶捷�捻捽掀掃掇授掉掊掌掏掎掐排掖掘掛掠採探掣接控推掩措掬掯掄掞掔掫揀揄揆揉描�提插揖揚換�\".split(\"\");\nfor(j = 0; j != D[184].length; ++j) if(D[184][j].charCodeAt(0) !== 0xFFFD) { e[D[184][j]] = 47104 + j; d[47104 + j] = D[184][j];}\nD[185] = \"���������������������������������撊撌撣�������撘�����摨��撽撿�擃�擖擏擉���擩擤擨��擰�攁攎攆擽擸攇�擿攐攍攉攌攏��攗攕攓�攛攡攠攦����攭�攮��攳攽敁敃��敊敆��敓敧敪敤敜敯��敳�敹敿斀������������������������������������揜揠搽握揣揩揪揭揮揲援掽掾揅揗揰揫搆�損搏搒搓搔搖搗搜搠搢搥搦搨搪搬搭搴搵搶搐�搊搘摘摟摠摧摩摭摯摳摶摸摹摺摑摒摛撅摴摽撩撇撈撐撒撓撕撙撚撝撞撤撥撫播撮撰撲撬擫撱撻撼撾擁擂擄擅擇擊擋操擎擐�\".split(\"\");\nfor(j = 0; j != D[185].length; ++j) if(D[185][j].charCodeAt(0) !== 0xFFFD) { e[D[185][j]] = 47360 + j; d[47360 + j] = D[185][j];}\nD[186] = \"���������������������������������斄�斒斔斖�斞斠斪斲斳斶�斻��旍��旓旗�旚旞�旯旮�旳旲�昐昑炚�旼昄昒昍昈旻昊昋���昺昳昫����昤�昹�昡昲昜昦昢�������晒晅晊晟晇�����晥晙晜晢�����晼晾晻暀晪晱����������������������������������擒擔擗擘據擷攙擠�擢擣擦擬擯擱�擭擲擴擺擻擾攀攄攔攖攘攜攝�攢攣攤攪攫攬攩�支攲�攴收攷攸改攻放政故效敉敘教敏救敕敖敗敔�敝敞敢散敦敻敬敲整敵敷數敺斁斂斃��文斌斐斑斕�斗料斛斜斝斟斡斢斤�\".split(\"\");\nfor(j = 0; j != D[186].length; ++j) if(D[186][j].charCodeAt(0) !== 0xFFFD) { e[D[186][j]] = 47616 + j; d[47616 + j] = D[186][j];}\nD[187] = \"������������������������������������������暊�����暆暌暕暐暔晸暋�������暟暡暠�����暯��暰暩暲��曌���暺�暸暻曊曄曆�暽������曖曒曘���曣曤��曭曮曫曶朁朄�����������朒������������������������������������斥斧斨斬斯斮新斷�斸�方於施斿旎旁旂旃旄旅旆旐旋旌族旖旒�旛旟旝�无既旡日旦旨早旬旭旰旱旴旺昌昂昆昃明昏易昔昀昉昕昝星映春昧昨昭是昱昴昵昶晁時晃晉晌晏晚晛晝晞晡晤晨晦�普景晰�晴晶晷智晬暄�\".split(\"\");\nfor(j = 0; j != D[187].length; ++j) if(D[187][j].charCodeAt(0) !== 0xFFFD) { e[D[187][j]] = 47872 + j; d[47872 + j] = D[187][j];}\nD[188] = \"�����������������������������������������朠��������朣���朾朹朸朻机朿朼朳杙杅杍杚���杋���杈杹枍杺枔�杷枓枅杬枎枒杻枆构杴���柭���杸��柉����极�柲柈柸柃柀柅柫柋柤柍柶柣柂柧���柺�柊�����������������������������������暇暍暑暖暗暘暝暢暈暉暫�暮暱暴暵暹暨曉暾曀曈曇曏曙曚曛曜曝�曠曦曨曩曬昇曰曲曳更曷書曹曼曾替最會朅勗月有朋服朔朐朓朏朕朗望�朝期朢朦朧�木未末本札朮朱朴朵朽杆�杇杉杌李杏�材村杓杖杕杜杞束�\".split(\"\");\nfor(j = 0; j != D[188].length; ++j) if(D[188][j].charCodeAt(0) !== 0xFFFD) { e[D[188][j]] = 48128 + j; d[48128 + j] = D[188][j];}\nD[189] = \"�����������������������������������枺柦枮柛��柆桋桏栵栫栭栯栴栝栘栒栔�����������栮�栓栟栚桉栜�梠梉梤桸梑梌梊梒桼梖���桻梀梪���������梨梡梂梇桭梮梫楖梣梬梩桵桱桾梛棳棡椇棌椈楰梴椑棯棆椔棸棽棵棇����������������������������������杠杗杪杭柿杯杰東杲杳杶杵杝杼松板枉析枕林枙枚果枝�枇枋枌枘枯枲枳枵架枷枸柎枻柁柄柏某柑柒染柔柘柙柚柜柝柞柟柢查柬柯柮柰柱柳柴柵枰枹柷栗校栩株核栱根栻格栽桀桁桂桃桅框案桌桎桐桑桓桔�栖栲栳桄�\".split(\"\");\nfor(j = 0; j != D[189].length; ++j) if(D[189][j].charCodeAt(0) !== 0xFFFD) { e[D[189][j]] = 48384 + j; d[48384 + j] = D[189][j];}\nD[190] = \"���������������������������������椋椌椗棑椆椄棜椪棪椏棷棤棶�����������椊�椕�棴棔�����棎棩������椯楑������������楺楈楉椵楬椳楥椴楀楄楶���楌楋����楟楎楱楪楂楴椲楒楻椼���榵�������������������������������������桫桴桹桶桷桿梃梁梅梆梏梓梔梗�梜條梟梢梧�梭梯梱械梲梳梵桮梐桯棄棉棋棍棒棕棖棗棘棚棟棠棣棧棫棬森棰楦棲棹棺�棻棼�椅植椎椒棐棓棱棨椐椓椷椰椹椽椿楅楊楓楔櫛楗楙楘楚楞楝楠榆楢楣楫業楯楮極楷楹�\".split(\"\");\nfor(j = 0; j != D[190].length; ++j) if(D[190][j].charCodeAt(0) !== 0xFFFD) { e[D[190][j]] = 48640 + j; d[48640 + j] = D[190][j];}\nD[191] = \"���������������������������������槂�榳榞槙榶槉榠榰榬榑榙榍榩榗���������榽槔榹榐�榣榯榿槄�����槏�樝槾樧槲槮樔樀樆槸�槤樠槬槭槢樍�樘槶�樖樇槼���槦������槻�槷橀樄槴�����橞����橩���������������������������������������椸楛楨楩楸榔榕榖�榛榜榦榧榨榫榭榮榱榴榻榾槁�槊構槌槍槎槐槓榎榤榥榷榼樑槃槧槨�概槳�槽槿樁樂樊樓樕標樛樞樟模樣槥樅樏樗槱樲樸樵樹樽樾橄橈橋橐橙橛機橡橧橫樨檸橢樺橁檖橘檀檉檄檐檔檜檟�檠�\".split(\"\");\nfor(j = 0; j != D[191].length; ++j) if(D[191][j].charCodeAt(0) !== 0xFFFD) { e[D[191][j]] = 48896 + j; d[48896 + j] = D[191][j];}\nD[192] = \"�����������������������������������燊橯橇����橖樴橦橉橨橝橭橶橑橚樻樿橪橤���檛檡檞檇檓檎檕檃檨檑檚橿��檁檥檍橾檗�檽檭櫡櫆��櫅檹檴�������櫠櫌櫑櫙�櫋櫥櫐櫫櫧����櫰櫸櫨櫹����欂櫼��欋欈欉欐欑�����������������������������������檢檣檬檮檯檳檻櫂櫃�櫓櫚櫜櫝櫞櫟櫱櫪櫬櫺櫳�欄櫻權�欒欖欃柩欠次欣欬欲款欷欹欺欽欿歃歆歇歕歉歌歎歐歔欻歙歛�歟歠歡歞止正此步武歪歧歲歷歸�歹死歿殀殂殃殄殆殉殊殍殖殘殕殛殞殤殫殢殪殮殯殲�殳�\".split(\"\");\nfor(j = 0; j != D[192].length; ++j) if(D[192][j].charCodeAt(0) !== 0xFFFD) { e[D[192][j]] = 49152 + j; d[49152 + j] = D[192][j];}\nD[193] = \"���������������������������������欘欗欚欙欥欨�欯欭欱欴欶欳欸欼�歁�歂歈歊歍歋��歜歭�歾肂殈殑殏殔殗殙殟殠殥殣殦殧殭殰殶�毃毄毈毇毉毊毌毐�毚�毞�毦毤毨毣毰毲��毻毼毽毾氁氀毿氆氕氘氖氙氚氝氠氟氥氧氨氦氪氫��氰氬氮����������������������������������段殷殺殼殽殿毀毅毆�母毋每毒毓�比毖毗毘�毛�毧毫毬毯毳氂氅毸毹氄氈氍�氏氐民氓氯气氛氣氤氳浠水�永氾汁汀求汎汗污汛汜汝江池�汐汔汕汞汨汪汰汲汴汶�決汾沁沂沄沃沈沉沌沍沐沒沔沖�沙沚沛沆沓�\".split(\"\");\nfor(j = 0; j != D[193].length; ++j) if(D[193][j].charCodeAt(0) !== 0xFFFD) { e[D[193][j]] = 49408 + j; d[49408 + j] = D[193][j];}\nD[194] = \"���������������������������������氶�汃氿�氻���汆�������汌汒汍汙汏汊汋����汥�����沝沎�汽汸汫沋沏沘汱汯沇沕沜汦汳�泧沷泭泜泒泵��泍���泀泏泇沰����泩沺泃泬沶沭洢洏��浂���洬洉洁���洇洃�����������������������������������汩汭沅沬沫沮沱河沸油治沼沽沾沿泂泄況泅泔泆泉泊泌泓法泗泚泙泛泠泡波泣泥注泫泯泮泰泱泲泳�沴泐泖泝洄洊洋洌洎洒洗洛洟洞津洧汧洪洫洮洲洱洳洵洶洸活洼洽派洿流洙洚洹浙浚浣浦浩浪浮浴海浸浹浼涇消涉�\".split(\"\");\nfor(j = 0; j != D[194].length; ++j) if(D[194][j].charCodeAt(0) !== 0xFFFD) { e[D[194][j]] = 49664 + j; d[49664 + j] = D[194][j];}\nD[195] = \"���������������������������������洨洴洭洩洺洑洀洐���浀�洝�浻����洖�����涄�涐浽涮�涃涀�����浵����浺浤浶洍浘浬浢浭浯涍涊淯浿涆浞浧涗浰浟������������淗涺淕淐��淂淲�涫涳湴涬淢淶淔渀淈淠����������������������������������涌涓涔涕�涘浡�浥涂涅涒涑涯液涵涸涼涿淅淆淇淋淑淖淘淙淚淝淡淤淦淨淪淫淬淮淰深淟混清淹淺添涎涪涴淀淄淒淞�淩淜渙渚減渝渠渡渣渤渥渦測渭港渰渴游渺渾湃湄湅湊湍湎湖湘湛湝湧湫湮湯湲湱渟渢湑湓湔�\".split(\"\");\nfor(j = 0; j != D[195].length; ++j) if(D[195][j].charCodeAt(0) !== 0xFFFD) { e[D[195][j]] = 49920 + j; d[49920 + j] = D[195][j];}\nD[196] = \"���������������������������������涾淥淛淴淊涽淭淌淏淍��淉淣淓淳淵淼�湸���湒��湡渱渨湠渹湟��湚�湦���渧�渶�湕溙���湷��湆湇湉渼渽渲湥湢渫渿湁湳渜渳湣湋湀渻渃渮湞湨����湹湤�溎溣�溳����溗滐�������������������������������������湜�湩源準溛溜溝溟溠溢溤溥溧溦溪溫溯溱溲溶溷溺溼溽滁滂滃滄滅滋滌滎滑滓滔滕溏溘滇滘滫滮滯滲�滴滬滸�滾滿漁漂漆漏溉漓演漘漙漠漢漣漪漫漬漭漰漱漲漳漸漾漿�滷滹漈漉漎漚漦漩漯漵漶漊漕潁潑潔潘潛�\".split(\"\");\nfor(j = 0; j != D[196].length; ++j) if(D[196][j].charCodeAt(0) !== 0xFFFD) { e[D[196][j]] = 50176 + j; d[50176 + j] = D[196][j];}\nD[197] = \"���������������������������������溍�滊溿溒�滖滈滀溓溔溹滆滒�溞滉溰滍滏溴溾滜������漞����滵滱���漍����漟�潩��漀漜���漺滽��漹潻滼漃漥漷滻漮潎漧漻漒滭漼潳漇潃漅潽�潗澔澓澅潚澖潶潬潕潲潒潐�潣潡�����������������������������������潟潢�潤潦潭潮潰潼�潸潺澀澄澆澇澈澉澌澎潏潝潞潠潀濆潯潾澍澂澒溈澡�澣澤澮澳澹激濁�濃澠澥澦澧澨澰澴澱濇澶澼濘濔濕濈濊濛濟濠濡濤濫濬濮濯濰濱瀉濩濞濺濼濾瀆瀏瀑瀁瀕灠瀚瀛瀝瀟瀠瀨瀘瀡瀣瀼瀋瀍�\".split(\"\");\nfor(j = 0; j != D[197].length; ++j) if(D[197][j].charCodeAt(0) !== 0xFFFD) { e[D[197][j]] = 50432 + j; d[50432 + j] = D[197][j];}\nD[198] = \"�����������������������������������澐�澋�潪潓澕��澗����潧����澭濋濎濄澽澞濂瀄濌澩澬濏澢澫濍澲澿澺澪澯�濨����濷�濢������濲����濴濜濭濣濧濦�瀀濻���瀊���瀇瀌瀅瀔瀎濿�瀙瀖��瀫瀢瀩�瀤瀗����������������������������������瀧瀦�瀲瀾瀰瀵瀹瀺灌灃灉�灑灘灝灣灩灞灤炸火灰灶灸灺灼災�炊炎炒炕炙炘炤炫炬炭炮炯炰炱炳炷��烈烋烏��烘烜烝�烹烺烽焌焙焚焜無焦焰然焞焠��煇煉�煌煎煮煒熙煖煜煞煢煤煥煦照煩煨�煬煽熀熄�\".split(\"\");\nfor(j = 0; j != D[198].length; ++j) if(D[198][j].charCodeAt(0) !== 0xFFFD) { e[D[198][j]] = 50688 + j; d[50688 + j] = D[198][j];}\nD[199] = \"�����������������������������������瀯瀷瀴瀱灂瀸瀿灀瀳�瀻������灅灄灊灈�灆��灗��灒灛����灚灡灟灦灥灨灪��灱�灴���炔炅�������炑���炓炖炃���炄炆炟炾���炡���炩�炵炴�烅�烚�烞�烎烒����������������������������������熅熇熊熏熒熛熟熔熨熬熯熱熠熲熸�熹熾燀燂燐燖燙燃燄燈燎燒燔燕營燠燥燦燧燬燭燻燮燹燼燿燾爆爇爍爓爐爛爚爝爟焮焯�爨烤爪爭�爬爰為爵�父爹爺爸爻爽爾�爿�牂牁牆�片版牋牌牒�牖牘牓牙�牛牝牟牡�\".split(\"\");\nfor(j = 0; j != D[199].length; ++j) if(D[199][j].charCodeAt(0) !== 0xFFFD) { e[D[199][j]] = 50944 + j; d[50944 + j] = D[199][j];}\nD[200] = \"���������������������������������烇烡���烢烗烠��烍�烓烑缹烊烙����烶��烳焆�焋��焂烼烸��焀�烿����焉焊焍烷焗烴烯烰�焄��������������焱焣����������焟�焢����煠煁煝��煓��煋����������������������������������牢牣牧牴物牮牯牲牶牷特牽牿犀�犉犍犒犖犢犧犨牳犬犯犴狀狂狃狄狁狎狐狗狙狡�狠狩狴狸狹狼狽狻狺狷猋猁猖猗猙猛猜猝猞猊猘猢猥猩��猴猶猷�猱猺猻猾猿獃獄獅獍獐獒獗獘獧獨獪獬獠獮獲獯獳獷獵獸獺獻�\".split(\"\");\nfor(j = 0; j != D[200].length; ++j) if(D[200][j].charCodeAt(0) !== 0xFFFD) { e[D[200][j]] = 51200 + j; d[51200 + j] = D[200][j];}\nD[201] = \"���������������������������������煘���煪煄���煲��煸���煚煐煃煟煔煙煆煣熐熉熂煻��爃������熆�����熡��熥��熧�������熼熝熪熳熤熞熜熰熚�����燅熿燉燜燘燁燋燏��燇�燚���������熽����������������������������������玁獰玀玄率玅玈�玉王玎玕玔玖玟玠玢玦玨玩玫玲玳玷珂珇珈�玻珀珊珍珌玼珞珓珠珙珖珥珣珩珪班珧珮珽現球琅理琇琉珶�琊�琖琚琛琢琤琥琦琨琪琭琮琯琳琴琶琵琫琬玤琲瑋瑕瑙瑚瑛瑜瑞瑟�瑀瑁�瑑瑗瑣瑤瑩�\".split(\"\");\nfor(j = 0; j != D[201].length; ++j) if(D[201][j].charCodeAt(0) !== 0xFFFD) { e[D[201][j]] = 51456 + j; d[51456 + j] = D[201][j];}\nD[202] = \"������������������������������������燨�����燢�燤燱���燡燴��燸燽������爁���爌爊爂���������爔����爙��爞���爢�爣��爩������牄牉��牏牚牞牠牪牬牰牸�牼牾牻�犁犄犈犆犅��犌犑����������������������������������瑪瑰瑲�瑯瑱瑳�璀璃璋瑽瑾璁璆�璈璡璇璐璜璣璘璞璟璠璧璨璯環璪璫璽璲璸璵瓊瓏瓔瓛璿瓚�瓀瓘璥瓜瓞瓠瓢瓣瓤�瓦瓮瓴瓶瓷瓻甃甄甇瓿甌甍�甑甓甕甗甔甖瓩甘甚甜��生甡產甥甦�用甪甫甬甯�田由甲申�\".split(\"\");\nfor(j = 0; j != D[202].length; ++j) if(D[202][j].charCodeAt(0) !== 0xFFFD) { e[D[202][j]] = 51712 + j; d[51712 + j] = D[202][j];}\nD[203] = \"���������������������������������犐犎犕犓犗���犘犚犛��犝犞犥犦犤犣犡�犩犪�犮犰犵�犺狅犿犽狆�狖狋狘狉狜狒狔狚狌狑狊狤狨狫�狟狪狦狣猀狾狶狳���猌�猓猇猑猒猈狿猏猣猵猰猳猧猲猭猦�����猼獂獀獊��獎獑獌��獞����������������������������������男甸甽甾畀畋界畎畏町�甿畇畔畚畛畜畝留畟畢畤略畦番畫畬畯異�畷畹畽當畸畿疆疇疊�疋�疏疐疑�疒疔�疕疚疝疢疣疤疥疫疧疲疳�疵疸疹疼疽疾疿病症痂痊痌痍痒痔痕痗痘痛痞痣痡痢痯痰痲痴痺痼痾痿瘀瘁�\".split(\"\");\nfor(j = 0; j != D[203].length; ++j) if(D[203][j].charCodeAt(0) !== 0xFFFD) { e[D[203][j]] = 51968 + j; d[51968 + j] = D[203][j];}\nD[204] = \"���������������������������������獟獝獛獡獢獩獦獥獫�獶獽獼獾獿玂玃玆��玒�玗玓��玥�玬�玡玭�������珆�玹�玴珃珋�����玿玸玾玶珅�珛珔�珚���珨�珫珒����珜珘�珝�珸珵琄琁琀琍�琋�珼��珿珺琈�珴������������������������������������瘉瘋瘍瘏瘝瘐瘓瘕瘖瘞瘟瘠瘡瘢瘤瘥瘦瘧�瘨瘰瘳瘴瘵�瘼療癃癆癇癉癖瘺�癘癙癜癤癡癢癥�癭�癩癬癮�癰癱癲疙癶癸登發�白百皂的皆皇皈�皎皓皖皙皜皚皤�皦皭皪皫�皮皴�皸皺皽�皿盂盃盅盆盈益�\".split(\"\");\nfor(j = 0; j != D[204].length; ++j) if(D[204][j].charCodeAt(0) !== 0xFFFD) { e[D[204][j]] = 52224 + j; d[52224 + j] = D[204][j];}\nD[205] = \"������������������������������������������������瑎琠�������琩琺琰琡琱�������瑄瑊琿瑒�瑂瑔�瑏�瑍�����瑆��������瑹瑢瑵�����瑭������瑮瑧����������瑼璉璊璅�������������������������������������盍盎盒盔盛盜盝盞盟�盡監盤盥盧盦盭盩盪盬�目盲直相盼盾省眄眇眈眉眊看盻盰盱眚眛真眠眢眥�眩眙眯眵眴眶眷眸眺眼眾�眹睨睇睆睊睍睚睛睜睞睪睡睢督睦睫睠睟睥睹睿瞀�睯瞋瞍瞎瞑瞞瞠瞪瞥瞧瞬瞳�瞭�\".split(\"\");\nfor(j = 0; j != D[205].length; ++j) if(D[205][j].charCodeAt(0) !== 0xFFFD) { e[D[205][j]] = 52480 + j; d[52480 + j] = D[205][j];}\nD[206] = \"����������������������������������瑿������璕�璚璗����������璭���璱璩璦瓁�����璻�瓋璺瓅����������瓖瓗����瓝瓟瓡瓥瓨瓬瓵�瓾瓽甀甂�甈甋甐甒甏�甝����甩甭甮甹���畈���畣������������������������������������瞰瞶瞻瞽瞿矇矍矓矗矙瞢矚眭矛矜矞�矢矣知矧矩短矮矰矯矱�石�矼砆矻砂砉砌砍砑砒砭砢砣砥斫砦破砲砠砧砮砰硃研硎硜硝硤硨硫硬硭硯确碆碌碎硼碗�碇碔碑碓硾碡碪碞碭碟碣碧碩碬�碰確碼碾磁磅磊�磋磐�\".split(\"\");\nfor(j = 0; j != D[206].length; ++j) if(D[206][j].charCodeAt(0) !== 0xFFFD) { e[D[206][j]] = 52736 + j; d[52736 + j] = D[206][j];}\nD[207] = \"�����������������������������������������畾�疀��疌疘疶疰痁疻痄痀痐痎痏痋痑痦痝痟痤痠痙痧痚�痵痽瘃痱痷痹痸痻瘑瘊瘈瘌瘙瘜瘣瘩�瘯瘭�瘽瘲瘸癌癈�癒癐癓癠癟癪�癵癹癿皁��皊皋皏��皒���皝皞皛皯皰皵皻皾盄�盉�����������������������������������磔磕磉磑磛磟磚磧磨磬磯磲磺磽礁磷磻礎磈礙礬礧磴�礦礪礫礱��示礽社祀祁祅祇祈祉礿祕祊祏祐祓祔祖祗祚祛祜祝神祟祠祫祲祥祧票祭�祼祺祿�禁禋禍禎福禘禊禔禖禕禡�禦禠禫禧禪禨禮禰禱禳禴�禸禹禺�\".split(\"\");\nfor(j = 0; j != D[207].length; ++j) if(D[207][j].charCodeAt(0) !== 0xFFFD) { e[D[207][j]] = 52992 + j; d[52992 + j] = D[207][j];}\nD[208] = \"���������������������������������盓�����盚��������盯盵盳�眃眅盹�������眝眧眐眓眒眣眨眕眑眲眳眽���眱��睄睅睎睋睌��睏睙���睕睒睬睖睩睧睔瞁睼瞅瞂睮�瞄睽��������瞉瞇�瞏瞌瞟瞙瞚瞝瞡瞜瞛����������������������������������离禽�禾禿秀私秈秉�秋种科秕秒�秘秪租秠�秤秦秧秩秫秭秬秷秸移稀稂稅稈程稌稍稊稔稗稙稚稛稜稟稠�稹種稱稷稻稼稽稿穀穄穆�穋穌積穎穗穜穡穟穢穠穨穩穫穭穰�穴穵究穸穹突空�穿窀窄窅窆窈窋窊窒窕�\".split(\"\");\nfor(j = 0; j != D[208].length; ++j) if(D[208][j].charCodeAt(0) !== 0xFFFD) { e[D[208][j]] = 53248 + j; d[53248 + j] = D[208][j];}\nD[209] = \"���������������������������������瞕��瞵瞫瞴����矂瞼瞺�矉矊�矌矎矏矐矔矕矘��矠���矬�矲��矸�矹矽��矺矷�������砅砐砏砎�砃�砓砱砳��砷砬砵砯砟砨砸砝砡�砫����硐������������硅硈硉硍����������������������������������窖窞窗窘窟窠窨窩窪窬窮�窳窵窶窸窣窺窾�竁竄竅竇�竊�立竑站��竟章竣童竦�竭端競�竹竺竽竿笄笈笊笏笑笙笛笞笤笠笥符笨�笪笫第笮笆笎笱笳筅筆筇等筊筋筌筍筎筏筐筑筒�答策筠筤筥筦筧筩筮筲筴筵�\".split(\"\");\nfor(j = 0; j != D[209].length; ++j) if(D[209][j].charCodeAt(0) !== 0xFFFD) { e[D[209][j]] = 53504 + j; d[53504 + j] = D[209][j];}\nD[210] = \"���������������������������������硊硌硢�硠硥硱硪硰硩��碏碚碄碕碅碘碉���硻碖��硹�硿碙���碥�碳碲碴碨碫碤�碢����磍碻磏磌磎�磃������磠磡���磭磝磩磥磪磞磣磳礂磼��磹�礄�礅�������礌礓礔礉礝�����������������������������������筱箋箎箂箍箇箔箕算箛箝箠管箏箐��箘箜箊箬箭箯箱箴箸箾節篁範篆篇築篋篘篔篙篚篝篠篡篤簑篧篨篩篦篪篲篳�篴篷簀簆簇簋簍簌簏篌篾簃�簜簟簞簠簡簣簥簦簧簨簪簫簷簸�簻簽簾簿�籃籊籌籍�籐籔籓籀�\".split(\"\");\nfor(j = 0; j != D[210].length; ++j) if(D[210][j].charCodeAt(0) !== 0xFFFD) { e[D[210][j]] = 53760 + j; d[53760 + j] = D[210][j];}\nD[211] = \"���������������������������������礛礜�礞�礥礣礨礩��礯��礭礵��礸礹�祂��祄�祌祋��祒祑��祤���祩祪祣祡�����祴祳禂祹��������禓禗禐����禈�禒�禛�禚禜�禤�禭禬��禲���禷禶歶�秅��秏秖����������������������������������籙籚籛籜籟籠籤籥�籧籩籫籮籬籯籲篰米�籹粉粒粕粗粘粟粢粵粥��粱粲粹粳粺粼精糈糊�糕�糖糗糜糝糞糟糠�糙糧�糯糲糴�糱糶糎糸系糾紀紂約紅紆紇紈紉紊紋紵紖紏紝紞紽納紐紓純紗紘紙級紛紜素紡索紫�\".split(\"\");\nfor(j = 0; j != D[211].length; ++j) if(D[211][j].charCodeAt(0) !== 0xFFFD) { e[D[211][j]] = 54016 + j; d[54016 + j] = D[211][j];}\nD[212] = \"���������������������������������秎秝秮秜��秣��秺秶�稃���稄���稐稘稞稒�稑�稦稓���稫穊稰稯������穇穔�穈穘穚穛����穧��穮穬�穱����穾�窉窌��窏窔窐��窙���窢窫窴窲窯�窱窷竀窿���������������������������������������紩紬紮累細紲紳紹紺紼紾紿絀終絃組絆紱絅絏結絕絛絜�絞絡絢給絨絪絮絰統絲絳絖絹絺絿綁綈�綆綌綍綏綑經綃綜綠綢綦�綬維綮綰網綱�綴綵綸綹綺綻綽緅緌緎綾緇緊緋綣綯緒緘緝綿緞締緣�緦�編緩緬緯練緻�\".split(\"\");\nfor(j = 0; j != D[212].length; ++j) if(D[212][j].charCodeAt(0) !== 0xFFFD) { e[D[212][j]] = 54272 + j; d[54272 + j] = D[212][j];}\nD[213] = \"������������������������������������竘��竤���竫�竮��������竷�����笐笓笅��笉笵笻笴笰笢笘笝笭笯笲�笚������笣筘��筀�筄筈��筷筭筳�筣����筶筰筡��箤��箈箑箖箌箅箙箄�������������������������������������������縕緗緙緡�緲縏緹縈縉縊縋縐縗縛縝縟縣縑繁縞縠縢縫縱縲縳縵縶縷縹縻總績繄繅繆繇縭縰縴繈織繕繙繚繐繞繢繡繒繩繪繫繭�繯繳繹辮繻繼纁纂繽繾纆纇纈纘續纍纖纏纊纑纓纔纛纚纜�缶缸缺缾�罃�罄罅�罋罌�\".split(\"\");\nfor(j = 0; j != D[213].length; ++j) if(D[213][j].charCodeAt(0) !== 0xFFFD) { e[D[213][j]] = 54528 + j; d[54528 + j] = D[213][j];}\nD[214] = \"���������������������������������箷篎�箹�篛篕篥篞篣篹�篜篟篢����簉簁篸篽簅篿篻簎簂��簊��篱簩簙簭簝簢������簰��簳簼簹簬��籉籈籅�籇�籗���籣籦���籵籽籺籸��粁�粄粑粊�粅粍�����粣���������������������������������������罍罏罐�网罔罕罘罛罝罟罡罣�罩罪罭置罰罨署罳罫罶罵罷罹羃罽罿羅羆羇羈�羊羌美羑羔羖羜羚羝羞羢群羨義羯羲羵羶羸羹羼羽翀翁翅翊翌翎習翔翕翛翟翠翡翣翥翦翩翫翬翮翯翰翳翹翱翻翼翽翾翿耀�老考耄者耆�\".split(\"\");\nfor(j = 0; j != D[214].length; ++j) if(D[214][j].charCodeAt(0) !== 0xFFFD) { e[D[214][j]] = 54784 + j; d[54784 + j] = D[214][j];}\nD[215] = \"���������������������������������粔粨粞��粯������粽粻粿�����糌糅��糒糔�糑糢��糬糪���糰�糷��紁紃��紕紑紎紟紒�絊紨���紸紶絁絇�������絑絒絔���絩絘絯絣絓絧絫絭��絽綄��綒���綀綅綎����������������������������������耇耋�而耍耎耐耑�耒耔耕耗耘耙耜�耞耡耤耦耨�耰�耳耶�耽耿聃聆聊聒聖聘聚聞聯聰聲聳聵聶職聽聾�聿肄肅肆肇��肉肋肌肓肖肘肚肛肝股肢肥�肩肫肯肱育肴肸肺胃胄背胗胔胍胎胏胖胙胚胛胝胞�胠胭胯�\".split(\"\");\nfor(j = 0; j != D[215].length; ++j) if(D[215][j].charCodeAt(0) !== 0xFFFD) { e[D[215][j]] = 55040 + j; d[55040 + j] = D[215][j];}\nD[216] = \"���������������������������������絻絼綔綡�綧綷緂綪緁緀綝緄��綩��緆綖綼綟����������緟緮�線緷緛緪緧縃緺緶緱緰綞���縤縍�縒縡縌縓縎縜縚縖縮縸縪繉繀繃縩縿縼繂顈縺�縯����繜繖繣繘繟繑繠�繓��繗繶繵繸繰����������������������������������胡胥胸胼能胾脂�脅�胱脈脊�脘脛脞脤脣朘脩脥脫脬脯脹脾腆腊腋腎腐腑腓腔腕腥腦腴腫腮腯腰腱腸腹腠腿膀膂膋膏�腳膈膊膕膚膛膜膝膠膩膰膳膺膴膽膻膾膿臀臂臄臆臉臊臍臘臙臑臚臝臟臠胤臣臥臧臨�自臬臭�\".split(\"\");\nfor(j = 0; j != D[216].length; ++j) if(D[216][j].charCodeAt(0) !== 0xFFFD) { e[D[216][j]] = 55296 + j; d[55296 + j] = D[216][j];}\nD[217] = \"���������������������������������繷繺繲繴�纀��纋纕纗�纙�缽缿�罈罊�罜罞罠罦罧罬�罻罼罺罾羉羋羍���羒羕羛羠羡羥羧羦羬羰羭羱�羳�羷�羺羻羿羾翃翂��翋翍翐翑翇翏�翗翜�翢���翭翪翨��翴翲耏耖耟�耪耬耴��耵耷�����������������������������������臲�至致�臺臻�臼臾舁舀舂舄舅與興舉舊舋�舌舍舐舒�舖舛舜舞舝�舟舠舡航般舫�舷舵舶船舸舲舳舴艇艋艄艖艗艎艘艙艤艟艨艭艦艫�艮良艱�色艴艷�艸艽艾芃芄芊芋芍芎芑芒芙芝芟芡芣芤芧芨芥芩�芫�\".split(\"\");\nfor(j = 0; j != D[217].length; ++j) if(D[217][j].charCodeAt(0) !== 0xFFFD) { e[D[217][j]] = 55552 + j; d[55552 + j] = D[217][j];}\nD[218] = \"���������������������������������耾耹��聇聈����聑聏��������聝������聬聱�������聸聹��肊肏肕肙肐肒肜��肭�肮肪肣肵��胘胇胑胈胂胐胅胣胜胊胕胉�胳�胺胲胰胴胹胵脁胻脀�脆脝脰脙脖脭脟脡脕�脢�����������������������������������芬芭芮芯芰花芳芷芸芹芻芼芽�芾苑茆苒苓苔苕苗苙苛苜苞茍苣苡若苦苧苫英苴苹苻�苾茀茁茂范茄茈茅苃�茉茗荔茜茢茦茨茫茭茯茱茲茴茵茶茷茸茹荀荃萄荊荸荇草荍荏荐荑荒�荄莛荳荷荻荼荽�莊莎莒莓莖莘莞�\".split(\"\");\nfor(j = 0; j != D[218].length; ++j) if(D[218][j].charCodeAt(0) !== 0xFFFD) { e[D[218][j]] = 55808 + j; d[55808 + j] = D[218][j];}\nD[219] = \"�����������������������������������腃腌腒腏腇脽腍��脺���腤腷腜腩腛腢腲朡腞腶腧腺腄������膉膆膃膇膍膌膣膟膘膞膢����膱膦膮膹膵膫膨膬膲膷����臌臃臅臇臏臒臐臗臕�臛臞臢臡�臦臩臮臷臸臿��舑舕舔�舢舯舨�����������������������������������莠莢莧莆莨莩莪莫菟莉莽菀菁菅菇菉菊菑�菖菔菘菠菜菩堇華菰菱菲菴菶菹菼菽萁萃萆萊萋萌萍萎雈菡菌萩萐萇萼萬萱萵萸萹落葆葉葍著�葚葛葡董葦葩葫葬葭葯�葳葵葷葸葺葽蒂葑葹蒐�蒔蒙蒜蒡蒞蒟蒨�蒲蒸蒹�\".split(\"\");\nfor(j = 0; j != D[219].length; ++j) if(D[219][j].charCodeAt(0) !== 0xFFFD) { e[D[219][j]] = 56064 + j; d[56064 + j] = D[219][j];}\nD[220] = \"���������������������������������舺舿舼舽�艉艀艂艅��艏艓艒艐艑艕艚艜艛�艣艡�艩艬�艵�艼芀芐芏芅芓芔芠苀�苂芶�����芚芘芛芞芺芴苳���苪����苯苨茺苖苬苲苵茌苶�苠�苺茬��荌茳茙茥荖茿荁荂荎茛茪茧荈��荋茞����������������������������������蒺蒼蒿蓀蓁蓂蓄蓆蓉蓊蓋蓌蓍�蓑蔀蓐蓓�蔌蒯蒱蓧蓫蓬蓮蓰�蓴蔻蓺薌蓼蔆蔇蓿蔂蔑蔒蔓蔕蔗蔚蔞蔟蔡蔣蔭�蔥蔦蔔蓽蔽蔬蕺蔾蕃蕉蕊蕎蕕蕖蕘蕙蕝蕞蕡蕢蕨蕩蕪蕭薀薯蕆蕈�蕤薁蕷蕸蕾薐薢薄薅薇薈薉薊薑薔薖�\".split(\"\");\nfor(j = 0; j != D[220].length; ++j) if(D[220][j].charCodeAt(0) !== 0xFFFD) { e[D[220][j]] = 56320 + j; d[56320 + j] = D[220][j];}\nD[221] = \"���������������������������������荿茼茖茤茠茩荅茻莐�荶莰�莣莍荺莤荴莏莁莕莙荵莔莃莌莝���莗莇莦���淽��莋荾莥菏萣菸菨萒菧菤�菆菈�菣莿菝菥菿菋菎菻莚����菕菺菵萉萏菞菂菳��菮�����菄����菬菛萓��������������������������������������薙薛孽薜薦薨薩薪薤�薏薰薳薹薺薽薿藄藇藉藎藏藐藍�藕�藚藜藝藟藤藩藥藪藷藹藺�藻藾藿蘄蘅蘆蘇蘊��蘋蘀蘚蘞蘢蘩蘭�虀蘧蘸蘿蘼�虆蘑虍虎虐虓虔處虛虜虞號虡虢虥虣虧虩�虫虱虯虹虺蚓蚔蚕蚊蚋蚌蚣�\".split(\"\");\nfor(j = 0; j != D[221].length; ++j) if(D[221][j].charCodeAt(0) !== 0xFFFD) { e[D[221][j]] = 56576 + j; d[56576 + j] = D[221][j];}\nD[222] = \"���������������������������������葮��葄葠�葋萯葂萭葟葰葎葌葒�蓱�萿葖葶蒏蒍葥葀蒆葧萰葙葴葝�葞萷萺萴葃萲葅菙��萫����葇萶萳萻����������蓅蒗蒤蓎蒬蒮蒫蒴蒪蒚蒝蒧蒻蒢蓇蒛蒩蓖蒘蒶蓏蒠����蓒�蒰��������������������������������������蚤蚧蚩蚪蚨蚯蚰蚱蚳蚶�蛄蛀蛆蛇蛉蛑蛋蛙蛛蛟蛣蛤蛩蛺蛭蛾�蜂蜃蜇蜈蜋蜓蛸蛹蛻蜀蜉蜍蜊蜎蜘蜚蜜蜡蜣蜩蜥蜺蝃蜴蜞蝀螂蜢蜮蝎蝓蝕蝗蝘蝙蝝蝟蝠蝏蝥蝦蝮�蝶蜷�蜻蝌蝨蝡蝣蝤蝴蝸融螓螞螘螟螢螣�螃螄螫��\".split(\"\");\nfor(j = 0; j != D[222].length; ++j) if(D[222][j].charCodeAt(0) !== 0xFFFD) { e[D[222][j]] = 56832 + j; d[56832 + j] = D[222][j];}\nD[223] = \"�����������������������������������蔤蔏蔩蔎蔉蔍蔊蔧蔜蓻蔫蔈蔪��������蔋蔙�����蓲蓷蓳蓪蓩蔖蓾蔨蔝蔮蓶蔱蓨蕵蓯蓹蔘蔠蔰蕅蕫蕍蕓蕀蕁蕄蕇蕣蕛蕱蕮����蕧蕠蕦��蕬��蕔����������蕥�������������������������������������������螺螻螽螿蟄蟊螬螭螮螯螳蟀蟆蟈蟋蟣蟪蟒�蟠蟬蟲蟭蟹蟻蟾蟳蟶蠃蟿蠁蠅蠆蠍蠕蠖蠛蠜蠟蠡蠢蠣蠨蠹蠱蠲蠶蠻�血�衁衄����衊�行衍衎術衒衕衖街衙衚衝衛衡衢�衣表衫衰衲衷�衵衽衾衿袁袈袋袍袒袖袗�袚�\".split(\"\");\nfor(j = 0; j != D[223].length; ++j) if(D[223][j].charCodeAt(0) !== 0xFFFD) { e[D[223][j]] = 57088 + j; d[57088 + j] = D[223][j];}\nD[224] = \"�����������������������������������薟薃薧薕薠薋薣蕻薚薞蕼薡蕗薎薆薍薝薂薵藋藈藅薱薶藒蘤���薸薾薷��������薴藆藀藃藂���藫藱藭藙藡藨�藗藬藸藘藣藑�藯藞���������藰蘁蘛藲藶蘉蘌��藽�����蘘蘪蘦蘟����������������������������������袞�袤袪被衭��袷袱裁裂裊裎裀�裒裔裕裘裙補裝裟褎裨裯裰裱裳裴裸裼裹製裾複褊褌褉褂褪褐褓褘褙褡褚褥褧褫褰褲褦褵褶褻�襄襋襁�襖襚襌襜襞襛襝襠襟襦襪襏襤褸襫襭襯襴襲襼襶裌襾西要覃覆�覈��見�\".split(\"\");\nfor(j = 0; j != D[224].length; ++j) if(D[224][j].charCodeAt(0) !== 0xFFFD) { e[D[224][j]] = 57344 + j; d[57344 + j] = D[224][j];}\nD[225] = \"���������������������������������蘣蘜蘙蘮蘡蘠蘥���蘗蘶������蘴蘵�蘳蘬��蘲�蘺蘹蘱蘻蘾虃虇虈虌虋虒虙虖�虤虪虰虭虮�虳��虻虷虴蚢蚖蚍蚑蚞蚜蚇蚗蚆蚚蚅蚥�蚐蚝蚎蚙蚡��蚵�蛃蚾��蚽蚿蚷蛂蛁蛅蚺蛈蚹蚸蛌蚴蚻蚼蛔����������������������������������規覓視覘覜覡覦�親覬覯覲覷�覺覽覿�觀��角觔觖觚觝觕解觥觩觫觭觱觳觴觸觶觼觿�言訂訃訇計訊討訐訓訕訖託記訌訏訑訒訛訝訟訣訥訪許設�訢訴訶診証註訾詁詆詈�詎詐詒詔評詖詘詛詞詠詡詢詣�試詩詫�\".split(\"\");\nfor(j = 0; j != D[225].length; ++j) if(D[225][j].charCodeAt(0) !== 0xFFFD) { e[D[225][j]] = 57600 + j; d[57600 + j] = D[225][j];}\nD[226] = \"���������������������������������蛘蛢蛦蛓蛚蛪蛝蛐蛨蛫蛜蛬蛗蜄蛷蜌蛖蛵蝍蜆蜁蛶蜅�触�蜳蜿蜨蝫蜙蜛蜬蝁蜾蝆蜠蜲��蜪蜭蜼蜒蜱蜵蝂蜦蜧蜸蜤蜰蜑�蝻蝖蝷蟡蝳蝔蝛蝒蝚蝑蝞蝭蝪蝢���蝐蝯蝬蝺蝜螛螏螗螒螈螁螖蝹螇螅螐螑螝螔螜螚�螉����������������������������������詬詭詮詰話該詳詼詿誆誄誅誇詵詹誌認�誑誓誕誘誚語誠誡誣誤誥誦誨說誰課誶誹誼誾調諂諄談諉請諍諏諒諑論諗�諛諝諞諟諠諤諦諧諫諭諮諱諳諷諸諺諵諼諾謀謁謂諜諡諴諶謄謅謆謇�謊謎謐謔謗謙謚講謝�謠謏�\".split(\"\");\nfor(j = 0; j != D[226].length; ++j) if(D[226][j].charCodeAt(0) !== 0xFFFD) { e[D[226][j]] = 57856 + j; d[57856 + j] = D[226][j];}\nD[227] = \"����������������������������������螶螸蟞��螾螪蟅螰蟑螹螵螼蟉蟃蟂蟌螷��螴蟧蟦蟢蟯蟫蟥蟟蟤蟔蟜蟓蟘����蟗蟙蟴蟨�蠀蟺蟷蠉蠌蠋蟼蠈���蠔蠙蠐蠑蠗蠓蠩蠝蠠蠤蠫蠬�蠦蠪蠥蠰蠮蠳�蠸蠷蠵蠼蠾蠽蠿衃衈衋������衧衪衩袂����������������������������������謖謦謨謫謬謳謹謾譁�證�譎譏譒譔譖識譙譚�譜警譟譫譬譯議譴護譸譽讀譾�變讌讎讋讒讖讓讙讚�讜讞讟�谷谿豁��豆豈豋豌豉豇豎豐�豔豏豕豚豝象豢豨豪豫豬豭豳豵�豸豹豺貂貆貅貉貊貌貍貓貔��貝貞�\".split(\"\");\nfor(j = 0; j != D[227].length; ++j) if(D[227][j].charCodeAt(0) !== 0xFFFD) { e[D[227][j]] = 58112 + j; d[58112 + j] = D[227][j];}\nD[228] = \"���������������������������������衶袀衱衹衯袃衴������袉袕袨袢袑袡袟袘袧袙袛袬袌袺裗袹袸袶袼袽袲��袾���裖裋裡裍裞裛裚���裷裧裲裺裮裶裻褁�褅褔褋�褗褆褖褑褕褒褞褭褮褱褢褩褣褟褳褼褾襒褷襂褽����襓襆��������������������������������������負財貢貤貧貨貪販貫責貯貲貳貴貶貸買貺費貼貽貿賀賁貰賂賃賄賅資賈賊�賑賒賓賕賙賚賜賝賞�賠賡賢賣賤賦質賬賟賭賴賵賮賺賻購賽賾賸贄贅贈贊贇贍贏贐贓贔贖�贗贛贉赤赦赧赫赭赬�走赳赴赶起趁趄超越趕�\".split(\"\");\nfor(j = 0; j != D[228].length; ++j) if(D[228][j].charCodeAt(0) !== 0xFFFD) { e[D[228][j]] = 58368 + j; d[58368 + j] = D[228][j];}\nD[229] = \"����������������������������������襐襢襗襡襘��襣�襩襮襬襱�襳襹襺�覂覅�����覕覛覝覟覢覤覣覭覮�覶觓觙觛觟觤觡觠觢觜觨��觰觬觲觷觺觻觾�訄訰訧訬訞������詍訹詙詀詗詄詅詑��詊���詏詨��詶訿詷誂詻誃������������������������������������趙趣�趨趯�足趵趾跁趺趹跂跋跅跌跎跏跑跕跖跚跛距跗跫跟跡跣跨跪跬路跱跳跽踉踊跼踏踐踔踖踝踞踢踣踧踘踡踟踦踰踴踵踶�踽蹁蹂蹄踱蹀蹐蹇蹈蹉蹊躍蹌蹕蹔蹙蹟蹣蹤蹜蹝蹠蹯蹲蹴蹶蹺蹡蹢蹬蹭躕躁躄躅躇躉�\".split(\"\");\nfor(j = 0; j != D[229].length; ++j) if(D[229][j].charCodeAt(0) !== 0xFFFD) { e[D[229][j]] = 58624 + j; d[58624 + j] = D[229][j];}\nD[230] = \"�����������������������������������詴���誫誙誋誒誖誏�諃�誽�諆誸諓諔諕誻諀諅����諘�誺諿����諢諲諰諈諻�謞謘謑謋謢謒謕謍���謜謓謈謪謧謣謰謵譇謯謼謱謥謷���謽�謤��譗譐譈譊譆譀譓譋譕譑譠譪譝譨譧�譥譣����������������������������������躊躋蹋躐躑躒躓躔躚躡躩躪�蹚身躬�躲軀��躺車軋軌軍軏軒軔軛軟軨軫軸軹軷軼軺軾較輅輈載輀輇輊輒輓輔輕輗�輛輜輝輟輦輩輪輞輠輥�輯輳輸輹輻�輮輴輶輾輿轂轄轅轀轆轇轕轉轍轎轏轒轖轘轞轟轡轢轤��\".split(\"\");\nfor(j = 0; j != D[230].length; ++j) if(D[230][j].charCodeAt(0) !== 0xFFFD) { e[D[230][j]] = 58880 + j; d[58880 + j] = D[230][j];}\nD[231] = \"����������������������������������譹譅譺譻��讄讂讆��譿��讅���讔讕讘谹谻谼谽谾�豃豅豊豍��豗豜豟豥豤豦豰豲豱豯豷豶�豻豽貁貀貄貏貑貒�貕貙貘貗貚貜�貣�����貵貹��貾�賌賗賧��賥賨��賳賰��賹���贆�����������������������������������辛辜辟�辣�辦辨辭辯�辰辱農�辵迂迄迅迋迍迎近迓返迕迢迤迥迦迨迪迫迭迮述迴迷迸�追迺退送适逃逅逆逋逌逍透逐逑途逕逖逗這通逛逝逞速造逡逢連逭逮週進逵逶逸�逼遇遁遂遄逾遊運遍過遏遐遑遒道達違遘�\".split(\"\");\nfor(j = 0; j != D[231].length; ++j) if(D[231][j].charCodeAt(0) !== 0xFFFD) { e[D[231][j]] = 59136 + j; d[59136 + j] = D[231][j];}\nD[232] = \"�����������������������������������贕贙赨赩赮����赲赸��赻�����趀��趑趌趎趏趍趓趒�����趖�趟趠趜趡��趛�趥趧������趬趪趭趫趮��趲趴趷趼趿跘跓跍跇跜跙跈跆�跴跤跰跠跺跮跐跩跦跢跧跲踂跿踍踃踇踆踅����������������������������������遙遛遜遞遠�遣遢遝遨適遭遮遯遲遴遵遶遷選遹遺遻遼遽避邀邁邂還邅邇邃邈邊邏邐迻邑邛邗邙邕邢�那邡邦�邪邠邯邱邲邴邳邵邶邸邰邽郁郅郇郊邾郃��郕郛郎郡郢郤郙郜郟部郭郴郵郯都郿鄂鄒鄄鄔鄉鄗鄖鄙鄘�\".split(\"\");\nfor(j = 0; j != D[232].length; ++j) if(D[232][j].charCodeAt(0) !== 0xFFFD) { e[D[232][j]] = 59392 + j; d[59392 + j] = D[232][j];}\nD[233] = \"���������������������������������跾���踀�踚�踜踠踫踥踤踮踕踛踑踙踩踒踓��踳踾踸踹蹅踼�蹓�蹎蹍蹗蹖蹞蹥蹧蹛蹩蹦��蹼蹸蹳蹪蹻躆躈躂躎躖躗躘躞躟躠躝躥躤躣�躦躨��������躽軂����軉軑軓軘軞軝軜��軠�軴軩軯����������������������������������鄢鄞鄠鄜鄧鄫鄭鄰鄱鄴鄶鄲鄹鄿鄺酇酃酆酈郝酉酊酋酌配酎酒酖酗酢酥酣酤酡酩酪酬酲酵酷酸酴酹酺醃醅醆醇醉醊醋醍醐醒醓醜醞醡醢�醪醫醬醮醯醴醲醵醺醽醁醼釀釁釂�醱釆采釋釉里重野量釐鋅金釗釘釜針釣釧�\".split(\"\");\nfor(j = 0; j != D[233].length; ++j) if(D[233][j].charCodeAt(0) !== 0xFFFD) { e[D[233][j]] = 59648 + j; d[59648 + j] = D[233][j];}\nD[234] = \"���������������������������������軻軦軮軥軵軧軶軱軬�輆軿輁輂輋輍輐輑����輤輘輚輣輖輬輵輲輷���轃���轈轑轔轐轓轗轚轙轛轝轠轣��辴���辿迉迆������迒迖����迣��迠迡�迼迾迵迿逄逤逜��逴逯����逿�����������������������������������釬釦釭釵鈇鈀鈍�鈐鈒鈔鈕鈞鈴鈸鈺�鈿鉅鉉鉏鉗鉛鉞�鉤鉋鉶鉸鉦銀銃銅銎銍銑銓銖銘銛銜銚銳銶銷�銼鋈鋌鋏鋒鋟鋘鋤鋩鋪鋙銲鋸鋼錄錐錕錘錙錚錠錢錦錨錫錮錯錞錡鍊鍋鍛鍪�鍬鍵鍼鍾鍇鍍鍔鍠鍤鍥鍭鍰鎔鎉�\".split(\"\");\nfor(j = 0; j != D[234].length; ++j) if(D[234][j].charCodeAt(0) !== 0xFFFD) { e[D[234][j]] = 59904 + j; d[59904 + j] = D[234][j];}\nD[235] = \"����������������������������������������逽����������遫�遳遰邆�遾���邋邍邘邔�邟邥邞邧���������郱邿���郈郖郠�郚郣郥郘郗���郪郰郲郳郔郫�鄆鄬郾�鄃郺郼鄈郹郻鄁鄀鄇鄅�鄐鄍鄏鄑鄋鄎鄣鄟鄝����������������������������������鎖鎗鎚鎛鎞鎡鎌鎧鎬鎰鎮鎊鏃鏈鏑鏖鏗鏘鏜鏡鏝鏢鏞鏤鏟鏐鏦鏨鐃鏵鐓鏹鐘鐙鐫鐮鐲鐵鐶鐸鐩鐺鐻鑄鑊鑌鑑鑒鑤鑕�鑠鑢鑣鑪鑰鑯鑲鑵鑷鑱鑼鑽鑾鑿錳長�門閂閃閆閉閈開閎閏閑閒間閔閘閟閡閤閣閥閨閩閫閬閭閱閶�\".split(\"\");\nfor(j = 0; j != D[235].length; ++j) if(D[235][j].charCodeAt(0) !== 0xFFFD) { e[D[235][j]] = 60160 + j; d[60160 + j] = D[235][j];}\nD[236] = \"���������������������������������鄚鄤鄡鄛鄨�鄯鄩鄪鄦鄮�鄳鄵鄸�鄻鄾酀酁酅酄酐酏�酘酚酓����酠�酟�酮酯�酳��醀��醑�醣醚醛醙醟���醝醨醥醧�醰醭�醷醳�醹�醾釃釅釔釕釙釢������釴釱釳釩釸釤釹釫釷釮�釪�����������������������������������閹閻閼閽閾闃闇闈闉闊闋闌闍闐�闓闔闕闖闒關闚闠闡闞闢闤闥闆阜�阞阡阤阨阬阮阯阱防阪阻阼阿陀陂附陋限陌降陔陘陛陝陞陟陡院陣除陪陬陰陲陳陴陵陶陷陸陼陽�隍隄隅隆隈隉隊隋階隔隕�隗隘隙際障�隤隧�\".split(\"\");\nfor(j = 0; j != D[236].length; ++j) if(D[236][j].charCodeAt(0) !== 0xFFFD) { e[D[236][j]] = 60416 + j; d[60416 + j] = D[236][j];}\nD[237] = \"���������������������������������釨鈏鈌釿鈑釽鈆��鈂����鈗��鈤鈣鈉鈁鈊鈥鈃鈚鈦鈄鈜鈅鈖����鉚鈶����鉈鉒鈰鈷鈽鉍鈳鉥鉊鈹鉆鉑鉀鈾鉭鉬鉠鉧鉯鉡���鉰鉣鉎鉌�鈲鈱�鉖����鉐鉔銕�鉾��鉽銝銆����鈭�銙銂����������������������������������隩險隮隰隱隳隴隨隶隸�隹隻隼雀雁雄雅集雇雉雋雌雍雎雊雒雕嶲雖雘雙雛雜雝雞離難�雨雩雪雯雰雱雲零雷雹電需�霅霄霈霉霆震霍霎霏霑霓霖霜霞霢霤霧霰霪�露�霸霹霮霽霥霾靄靂靆靈靉霨青靖靚靛靜�非靠�\".split(\"\");\nfor(j = 0; j != D[237].length; ++j) if(D[237][j].charCodeAt(0) !== 0xFFFD) { e[D[237][j]] = 60672 + j; d[60672 + j] = D[237][j];}\nD[238] = \"�����������������������������������銨銥鉼銤鉻鉺銠銔銪銦銫鉹銗鉿銣鋮�銈銧銋���銌銇�鋇鋰鋗鋝鋯鋂鋨鋊鋁鋓鋉���銡��鋆鋕���鋡��鋧�鋎�鋑鋐鋃鋄鋀銻鋱銬�鋠������錧錈錟錆錏鍺錶錸錼錛錣錒錁鍆錭錎錍鋋�鏒�����������������������������������靡�面靦�靨�革靳靴鞅靶靷靸鞀�鞍鞏鞋鞗鞘鞙鞞鞚�鞠鞦鞫鞬鞭鞮�鞶�鞹�韁韃韆��韋韍韓韌韎韐�韔韝韘韙韜韞���韭�韱�音韶韻響韺頀�頁頂頃項頇順須頌頏預頑頒頷頓頊頍頎頖頗領頞頡頤�頲頦�\".split(\"\");\nfor(j = 0; j != D[238].length; ++j) if(D[238][j].charCodeAt(0) !== 0xFFFD) { e[D[238][j]] = 60928 + j; d[60928 + j] = D[238][j];}\nD[239] = \"������������������������������������鋺錴�������������錉鋿��鋻錔錖錩錪錂錀鋹錝�鋾��錥錋��錤�������鋷��錵���鍹鍏�鍕�鍱鍙��鍒���鍧�鍗����鎃鎯鍖鍘鍜鍶鍉鍚鍐鍑鎏鍌鎂������顉����������������������������������頫頭�頰��頸頹頻顆��題額顏�顓願顙顛類顜顢顥�顧顫顯顰顱顴�風颭颯颶颸颿颺颻颼飄飆飀颽�飛�食�飢飣�飧飩飪飫飭飲飯飴飼飽飾飶餂餃餅餈餉養餌餐餖餗餒餓餔餕餘餛餚餡餞餤餟餧館餬餮餱餲餳��\".split(\"\");\nfor(j = 0; j != D[239].length; ++j) if(D[239][j].charCodeAt(0) !== 0xFFFD) { e[D[239][j]] = 61184 + j; d[61184 + j] = D[239][j];}\nD[240] = \"�������������������������������������鎙��鍞����鍎���鎤鎣�鎕鎱鎟�鎈�����鎨������鎑�鎍鎵鎒鎷鎘鎝鎎鎪鎢鎳鎦鎀�����鏄鏕��������鏣鏔����鎥鏮����鏇鏏鏂鏚鏬鏌鏙鎩鏊鏍鏎����鏧鏀����������������������������������餼餽饁饅饈饉饋饌饎饐饑饒饔饕饗饜饟饞�首馘馗�香馥馨馝馡馣�馬馭馮馳馴馱馹駁駃駐駑駒駕駘駙駛駋駜駝駟駪駉駢駬駭駮駱�駰駸駿�騁騅騂騃�騑騎騋騏騖騄騙驄騠騣騤騧騫騰騶騵騸騷騮騾驀驁驂驃驅驈��\".split(\"\");\nfor(j = 0; j != D[240].length; ++j) if(D[240][j].charCodeAt(0) !== 0xFFFD) { e[D[240][j]] = 61440 + j; d[61440 + j] = D[240][j];}\nD[241] = \"���������������������������������鏽鐖鐉����鐆������鐑�鐌�鏺��鏸�鏿�鏶��鐋鏻鐠鐏鐔鏾鐕鐐鐨鐍鐀鏷鐇鐎鐼��鐿鐳�鐱��鐽�鑀�鐷������鐬鑈鑆�鑉鑅鑐鑋鑇鑗�鑏���������鑨��鑫鑩��鑮鑭鑸�����������������������������������驊驔驍驖驕驌驗驒驚�驙驛驟驢驤驥驩驪駗骨�骭骯骱骰骷骸骼�髀骾髏髆髑髒體髖髓�高�髟髡�髣髦髧髫髭髮�髳�髻髹鬆鬈鬅鬋鬍鬐鬒鬑鬘�鬙鬚鬟鬣鬢鬎鬥鬨鬧鬩�鬮�鬯鬱�鬲�鬵鬷鬻�鬼魁魂魃魄魊魅�\".split(\"\");\nfor(j = 0; j != D[241].length; ++j) if(D[241][j].charCodeAt(0) !== 0xFFFD) { e[D[241][j]] = 61696 + j; d[61696 + j] = D[241][j];}\nD[242] = \"����������������������������������鑴鑶��钂钀钁���钃�镺镻镼�镽���閍閌���閜閞���閮�����閺閿閵闀闅閷�闑闛闟�闣��阢阠阰����阹阽阺陃陏陑陓陊��陎����陭陫���隇陾隃隀����陱隒隓隑隞�������������������������������������魏��魈魍魎魑魔�魘�魚魨魯鮀魴�鮒鮐鮓鮞鮪鮆鮑鯗鮮鮫鯀鯉鯁鯊鯖鯢鯧鯫鯤鯨鯽��鰈鰍��鰓鰥鰜鰣鰭鰲鰷鰻鱄鱉鱔鱘鱟鱠鱣鱗鱎鱖鱨鱷鱸魺鳥鳦鳩鳧鳲鳳鳴鳶鴄鴟鴆鴇鴈鴉鴃�鴛鴞鴣鴦鴨鴒鴝鴻鴿鴽鵀鵂�\".split(\"\");\nfor(j = 0; j != D[242].length; ++j) if(D[242][j].charCodeAt(0) !== 0xFFFD) { e[D[242][j]] = 61952 + j; d[61952 + j] = D[242][j];}\nD[243] = \"�����������������������������������隡隢���隬����隿雂雃�雓雔��雗雚巂雟�雡�雥���雸雺雽雿��霂�������霙��霟霣�霬霦霩霫霯���霺霵霿�靃靇�靋���靪靬靰靮�靲靽靺靾鞃靼鞂靻鞄鞁靿�鞊鞎鞈鞔鞡鞜�����������������������������������鵜鵝鵑鵠鵓鵡鵒鵪鵰鵲鶉鵩鵬��鶖鶘鶚鶩鶯鶱鶴鶵鶺鶿鶊鷇鶬鶹鶻鶼鷁鷂�鷃鷗鷓鷕鷖鷙鷥鷩鷲鷹鷺鷦鷯鷴鷸鸇鸑鷽鸕鸚鸞鷟鸛鸝�鹵鹹鹼鹽鹺�鹿麂�麀麃麇麈麋麌�麑麒麓�麗麚麛麝�麟�麤�麥��麰麴��\".split(\"\");\nfor(j = 0; j != D[243].length; ++j) if(D[243][j].charCodeAt(0) !== 0xFFFD) { e[D[243][j]] = 62208 + j; d[62208 + j] = D[243][j];}\nD[244] = \"����������������������������������鞨鞣鞤鞪鞳鞷鞻鞿韄韅韇韉韏韕�韗韟韡韣韥韰���韹韽韾��頄����頧頛頩頝頨頠頜頵頯��顃顁顄顊�顅顐顑顒顎顝顗顠�顣顟顤顪顩��顲顳颬�颮颱颲颳���颾飁飂���飉飋飌���飥��飹����������������������������������麻麼麾�黃黈黌�黍黏黎黐�黑黔默黛黜點黝黠黥黧黨黯黴黮黶黷�黹黻黼�黽黿��鼇�鼉�鼎鼐鼏鼒�鼓鼕�鼖鼙鼛鼚�鼠鼢鼫鼬鼯�鼷�鼻鼽鼾齁��齊齋齎齏�齒齔齕齗齟齡齠齦齧�齬齪齮齲齶齷齣龍�龔�\".split(\"\");\nfor(j = 0; j != D[244].length; ++j) if(D[244][j].charCodeAt(0) !== 0xFFFD) { e[D[244][j]] = 62464 + j; d[62464 + j] = D[244][j];}\nD[245] = \"�������������������������������������餀飺�餇���餑餥���餯餭餰餫餪餵餾餿餺����饇饃饙�饖饘��饛����馜��馧��馦���馯馲馰馵馻馺駂馽駇�����駌�駍駏駓駔駎駖駥駤駣駩�������駺駴駷駹駶駻駽駾駼����������������������������������龕�龜�龠龢�ㄅㄆㄇㄈㄉㄊㄋㄌㄍㄎㄏㄐㄑㄒㄓㄔㄕㄖㄗㄘㄙㄚㄛㄜㄝㄞㄟㄠㄡㄢㄣㄤㄥㄦㄧㄨㄩˊˇˋ˙�！＂＃＄％＆‵（）＊＋，－．／０１２３４５６７８９：；＜＝＞？＠ＡＢＣＤＥＦＧＨＩＪＫＬＭ�\".split(\"\");\nfor(j = 0; j != D[245].length; ++j) if(D[245][j].charCodeAt(0) !== 0xFFFD) { e[D[245][j]] = 62720 + j; d[62720 + j] = D[245][j];}\nD[246] = \"���������������������������������騉騍騊騇����騆�騚騕騥騝騛騢騞騜騲騴騱騬騪騩騭�騿�騹騽驆騺�驎驓驏驉�驞驠�驦驧�驨驫骹骿骴髁髂髇髊髍髐髕���髜��髬髲�髯�髺髶�髾髽鬁髼鬃鬄���鬊鬌鬕鬗鬖鬞鬠鬤鬫鬳鬺鬾鬿魆魌����������������������������������ＮＯＰＱＲＳＴＵＶＷＸＹＺ［＼］＾＿｀ａｂｃｄｅｆｇｈｉｊｋｌｍｎｏｐｑｒｓｔｕｖｗｘｙｚ｛｜｝∼�。︵︶﹁﹂�\".split(\"\");\nfor(j = 0; j != D[246].length; ++j) if(D[246][j].charCodeAt(0) !== 0xFFFD) { e[D[246][j]] = 62976 + j; d[62976 + j] = D[246][j];}\nD[247] = \"���������������������������������魋����魒魖��魠魡���魤魧魷魱魦魶魵�鮕鮈��魽��鮅鮇魼魾魻鮂鮚鮭鮨鮛鮦鮡鮥鮤鮯��鮹��鮽鯇鯆鯃鮿鮵鮸鯈鯓�����鯕���鯪鯠鯞鯛鯦鯰鯔鯬�鯚鰗�鰋鯷鰅鰒鯸鱀鰎�鰇鰉�鰡��������������������������������������\".split(\"\");\nfor(j = 0; j != D[247].length; ++j) if(D[247][j].charCodeAt(0) !== 0xFFFD) { e[D[247][j]] = 63232 + j; d[63232 + j] = D[247][j];}\nD[248] = \"����������������������������������鰫鰝鰬鰨鰩鱆鱈鰿鰱鰾鰴鰹鰳鱁鰼���鱙�鱐鱊鱍鱋鱕��鱧鱦鱢鱞��鱭��鱮鱴鱳鱱���鱹鱺��鳪鳭鳱鳵鳼���鳺鳽鳿鳷鴀鳹鳻鴅���瞗��鴕鴥鴗鴠鴔鴩鴘鴢鴐鴳鵁鵧鴶鴮鴯鴱鴸������鴰�����������������������������������\".split(\"\");\nfor(j = 0; j != D[248].length; ++j) if(D[248][j].charCodeAt(0) !== 0xFFFD) { e[D[248][j]] = 63488 + j; d[63488 + j] = D[248][j];}\nD[249] = \"���������������������������������鵅鵃鴾鴷鵏鵊鵛鵋鵙鵖鵌鵗鵔鵟�鵘�����鵷鶁鶄鶈鵱鶀鵸鶆鶋鶌�鵿鵽鵫鵴鵵鶅鵳鵻鶂鵯鵹鶟鶙鶤鶝鶒鶐鶛鶠鶔鶜鶪鶗鶡鶢鶨鶞鶣�鶧鶷鶶鷊鷏鶾鷅鷎鷈鶭�鷌鷍鷝�鷛鷒鷞鷚鷋鷐鷜鷑鷘鷵鷻鷷鷣鷫鷬鷭�������������������������������������\".split(\"\");\nfor(j = 0; j != D[249].length; ++j) if(D[249][j].charCodeAt(0) !== 0xFFFD) { e[D[249][j]] = 63744 + j; d[63744 + j] = D[249][j];}\nD[250] = \"���������������������������������鷤鷶鷡鷮鷰鷢鸂鷾鸃鸆鸅鸀鸁鸉鷿鸄�鸋鸍鸐鸏鸔鸒鸓鸗鸙���麆麊麉���麎麔麙�麜�麠麡�麧麭麩麮��麵麶�麷�黀黂�黓黕黖黚黟黤黫黭黰黲黳黵�鼁鼀鼆鼊鼘鼜鼤鼣鼥鼪鼩鼨鼭鼰鼮鼱鼵鼴鼳鼲鼸鼶齀�����������������������������������\".split(\"\");\nfor(j = 0; j != D[250].length; ++j) if(D[250][j].charCodeAt(0) !== 0xFFFD) { e[D[250][j]] = 64000 + j; d[64000 + j] = D[250][j];}\nD[251] = \"���������������������������������齂齃齇齉齌齍齖齘齛齞齝齜齥齤齫齱齰齯齴齵齸齻齺齹齾�龒��龤���������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[251].length; ++j) if(D[251][j].charCodeAt(0) !== 0xFFFD) { e[D[251][j]] = 64256 + j; d[64256 + j] = D[251][j];}\nD[252] = \"������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[252].length; ++j) if(D[252][j].charCodeAt(0) !== 0xFFFD) { e[D[252][j]] = 64512 + j; d[64512 + j] = D[252][j];}\nD[253] = \"������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[253].length; ++j) if(D[253][j].charCodeAt(0) !== 0xFFFD) { e[D[253][j]] = 64768 + j; d[64768 + j] = D[253][j];}\nD[254] = \"������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[254].length; ++j) if(D[254][j].charCodeAt(0) !== 0xFFFD) { e[D[254][j]] = 65024 + j; d[65024 + j] = D[254][j];}\nreturn {\"enc\": e, \"dec\": d }; })();\ncptable[20005] = (function(){ var d = [], e = {}, D = [], j;\nD[0] = \"\\u0000\\u0001\\u0002\\u0003\\u0004\\u0005\\u0006\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\u0014\\u0015\\u0016\\u0017\\u0018\\u0019\\u001a\\u001b\\u001c\\u001d\\u001e\\u001f !\\\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~�������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[0].length; ++j) if(D[0][j].charCodeAt(0) !== 0xFFFD) { e[D[0][j]] = 0 + j; d[0 + j] = D[0][j];}\nD[141] = \"������������������������������������������������　，、。․•；：？！�������︰…‥﹐﹑‧﹒﹔﹕﹖﹗︱–︲—︳＿︴﹏（）︵︶｛｝︷������︸〔〕︹︺【】︻︼《》︽︾〈〉︿﹀「」﹁﹂『』﹃﹄﹙������������������﹚﹛﹜﹝﹞‘’“”〝〞′‵＃＆＊※§〃○●△▲◎☆★◇◆□■▽▼㊣℅‾￣��﹉﹊﹍﹎﹋﹌﹟﹠﹡＋－×÷±√＜＞＝≦≧≠∞≒≡﹢﹣﹤﹥﹦∼∩∪⊥∠∟⊿㏒㏑∫∮∵∴♀♂⊕⊙↑↓←→↖↗↙↘∥∣／＼�﹨�＄￥〒￠￡％＠℃℉﹩﹪﹫㏕���\".split(\"\");\nfor(j = 0; j != D[141].length; ++j) if(D[141][j].charCodeAt(0) !== 0xFFFD) { e[D[141][j]] = 36096 + j; d[36096 + j] = D[141][j];}\nD[142] = \"������������������������������������������������㎜㎝㎞㏎㎡㎎㎏㏄゜兙�������兛兞兝兡兣嗧瓩糎▁▂▃▄▅▆▇█▏▎▍▌▋▊▉┼┴┬������┤├▔─│▕┌┐└┘╭╮╰╯═╞╪╡◢◣◥◤╱╲╳０������������������１２３４５６７８９ⅠⅡⅢⅣⅤⅥⅦⅧⅨⅩ〡〢〣〤〥〦〧〨〩�卄�ＡＢＣＤＥＦＧＨＩＪＫＬＭＮＯＰＱＲＳＴＵＶＷＸＹＺａｂｃｄｅｆｇｈｉｊｋｌｍｎｏｐｑｒｓｔｕｖｗｘｙｚΑΒΓΔΕΖΗΘΙΚΛΜΝΞΟ�ΠΡΣΤΥΦΧΨΩαβγδ���\".split(\"\");\nfor(j = 0; j != D[142].length; ++j) if(D[142][j].charCodeAt(0) !== 0xFFFD) { e[D[142][j]] = 36352 + j; d[36352 + j] = D[142][j];}\nD[143] = \"������������������������������������������������εζηθικλμνξ�������οπρστυφχψωㄅㄆㄇㄈㄉㄊㄋㄌㄍㄎㄏㄐㄑㄒㄓㄔ������ㄕㄖㄗㄘㄙㄚㄛㄜㄝㄞㄟㄠㄡㄢㄣㄤㄥㄦㄧㄨㄩ˙˟ˊˇˋ���������������������������������������������������������������������������������一乙丁七乃九了二人儿入八几刀刁力匕十卜又三下丈上丫丸凡久么也乞于亡兀刃�勺千叉口土士夕大女子孑孓寸���\".split(\"\");\nfor(j = 0; j != D[143].length; ++j) if(D[143][j].charCodeAt(0) !== 0xFFFD) { e[D[143][j]] = 36608 + j; d[36608 + j] = D[143][j];}\nD[144] = \"������������������������������������������������小尢尸山川工己已巳巾�������干廾弋弓才丑丐不中丰丹之尹予云井互五亢仁什仃仆仇仍今������介仄元允內六兮公冗凶分切刈勻勾勿化匹午升卅卞厄友及反������������������壬天夫太夭孔少尤尺屯巴幻廿弔引心戈戶手扎支文斗斤方日曰月木欠止歹毋比毛氏水火爪父爻片牙牛犬王丙世丕且丘主乍乏乎以付仔仕他仗代令仙仞充兄冉冊冬凹出凸刊加功包匆北匝仟半卉卡占卯卮去可古右召叮叩叨叼司叵�叫另只史叱台句叭叻四囚外央���\".split(\"\");\nfor(j = 0; j != D[144].length; ++j) if(D[144][j].charCodeAt(0) !== 0xFFFD) { e[D[144][j]] = 36864 + j; d[36864 + j] = D[144][j];}\nD[145] = \"������������������������������������������������失奴奶孕它尼巨巧左市�������布平幼弁弘弗必戊打扔扒扑斥旦朮本未末札正母民氐永汁汀������氾犯玄玉瓜瓦甘生用甩田由甲申疋白皮皿目矛矢石示禾穴立������������������丞丟乒乓乩亙交亦亥仿伉伙伊伕伍伐休伏仲件任仰仳份企伋光兇兆先全共再冰列刑划刎刖劣匈匡匠印危吉吏同吊吐吁吋各向名合吃后吆吒因回囝圳地在圭圬圯圩夙多夷夸妄奸妃好她如妁字存宇守宅安寺尖屹州帆并年式弛忙忖�戎戌戍成扣扛托收早旨旬旭曲���\".split(\"\");\nfor(j = 0; j != D[145].length; ++j) if(D[145][j].charCodeAt(0) !== 0xFFFD) { e[D[145][j]] = 37120 + j; d[37120 + j] = D[145][j];}\nD[146] = \"������������������������������������������������曳有朽朴朱朵次此死氖�������汝汗汙江池汐汕污汛汍汎灰牟牝百竹米糸缶羊羽老考而耒耳������聿肉肋肌臣自至臼舌舛舟艮色艾虫血行衣西阡串亨位住佇佗������������������佞伴佛何估佐佑伽伺伸佃佔似但佣作你伯低伶余佝佈佚兌克免兵冶冷別判利刪刨劫助努劬匣即卵吝吭吞吾否呎吧呆呃吳呈呂君吩告吹吻吸吮吵吶吠吼呀吱含吟听囪困囤囫坊坑址坍均坎圾坐坏圻壯夾妝妒妨妞妣妙妖妍妤妓妊妥�孝孜孚孛完宋宏尬局屁尿尾岐���\".split(\"\");\nfor(j = 0; j != D[146].length; ++j) if(D[146][j].charCodeAt(0) !== 0xFFFD) { e[D[146][j]] = 37376 + j; d[37376 + j] = D[146][j];}\nD[147] = \"������������������������������������������������岑岔岌巫希序庇床廷弄�������弟彤形彷役忘忌志忍忱快忸忪戒我抄抗抖技扶抉扭把扼找批������扳抒扯折扮投抓抑抆改攻攸旱更束李杏材村杜杖杞杉杆杠杓������������������杗步每求汞沙沁沈沉沅沛汪決沐汰沌汨沖沒汽沃汲汾汴沆汶沍沔沘沂灶灼災灸牢牡牠狄狂玖甬甫男甸皂盯矣私秀禿究系罕肖肓肝肘肛肚育良芒芋芍見角言谷豆豕貝赤走足身車辛辰迂迆迅迄巡邑邢邪邦那酉釆里防阮阱阪阬並乖�乳事些亞享京佯依侍佳使佬供���\".split(\"\");\nfor(j = 0; j != D[147].length; ++j) if(D[147][j].charCodeAt(0) !== 0xFFFD) { e[D[147][j]] = 37632 + j; d[37632 + j] = D[147][j];}\nD[148] = \"������������������������������������������������例來侃佰併侈佩佻侖佾�������侏侑佺兔兒兕兩具其典冽函刻券刷刺到刮制剁劾劻卒協卓卑������卦卷卸卹取叔受味呵咖呸咕咀呻呷咄咒咆呼咐呱呶和咚呢周������������������咋命咎固垃坷坪坩坡坦坤坼夜奉奇奈奄奔妾妻委妹妮姑姆姐姍始姓姊妯妳姒姅孟孤季宗定官宜宙宛尚屈居屆岷岡岸岩岫岱岳帘帚帖帕帛帑幸庚店府底庖延弦弧弩往征彿彼忝忠忽念忿怏怔怯怵怖怪怕怡性怩怫怛或戕房戾所承拉�拌拄抿拂抹拒招披拓拔拋拈抨���\".split(\"\");\nfor(j = 0; j != D[148].length; ++j) if(D[148][j].charCodeAt(0) !== 0xFFFD) { e[D[148][j]] = 37888 + j; d[37888 + j] = D[148][j];}\nD[149] = \"������������������������������������������������抽押拐拙拇拍抵拚抱拘�������拖拗拆抬拎放斧於旺昔易昌昆昂明昀昏昕昊昇服朋杭枋枕東������果杳杷枇枝林杯杰板枉松析杵枚枓杼杪杲欣武歧歿氓氛泣注������������������泳沱泌泥河沽沾沼波沫法泓沸泄油況沮泗泅泱沿治泡泛泊沬泯泜泖泠炕炎炒炊炙爬爭爸版牧物狀狎狙狗狐玩玨玟玫玥甽疝疙疚的盂盲直知矽社祀祁秉秈空穹竺糾罔羌羋者肺肥肢肱股肫肩肴肪肯臥臾舍芳芝芙芭芽芟芹花芬芥芯�芸芣芰芾芷虎虱初表軋迎返近���\".split(\"\");\nfor(j = 0; j != D[149].length; ++j) if(D[149][j].charCodeAt(0) !== 0xFFFD) { e[D[149][j]] = 38144 + j; d[38144 + j] = D[149][j];}\nD[150] = \"������������������������������������������������邵邸邱邶采金長門阜陀�������阿阻附陂隹雨青非亟亭亮信侵侯便俠俑俏保促侶俘俟俊俗侮������俐俄係俚俎俞侷兗冒冑冠剎剃削前剌剋則勇勉勃勁匍南卻厚������������������叛咬哀咨哎哉咸咦咳哇哂咽咪品哄哈咯咫咱咻咩咧咿囿垂型垠垣垢城垮垓奕契奏奎奐姜姘姿姣姨娃姥姪姚姦威姻孩宣宦室客宥封屎屏屍屋峙峒巷帝帥帟幽庠度建弈弭彥很待徊律徇後徉怒思怠急怎怨恍恰恨恢恆恃恬恫恪恤扁拜�挖按拼拭持拮拽指拱拷拯括拾���\".split(\"\");\nfor(j = 0; j != D[150].length; ++j) if(D[150][j].charCodeAt(0) !== 0xFFFD) { e[D[150][j]] = 38400 + j; d[38400 + j] = D[150][j];}\nD[151] = \"������������������������������������������������拴挑挂政故斫施既春昭�������映昧是星昨昱昤曷柿染柱柔某柬架枯柵柩柯柄柑枴柚查枸柏������柞柳枰柙柢柝柒歪殃殆段毒毗氟泉洋洲洪流津洌洱洞洗活洽������������������派洶洛泵洹洧洸洩洮洵洎洫炫為炳炬炯炭炸炮炤爰牲牯牴狩狠狡玷珊玻玲珍珀玳甚甭畏界畎畋疫疤疥疢疣癸皆皇皈盈盆盃盅省盹相眉看盾盼眇矜砂研砌砍祆祉祈祇禹禺科秒秋穿突竿竽籽紂紅紀紉紇約紆缸美羿耄耐耍耑耶胖胥�胚胃胄背胡胛胎胞胤胝致舢苧���\".split(\"\");\nfor(j = 0; j != D[151].length; ++j) if(D[151][j].charCodeAt(0) !== 0xFFFD) { e[D[151][j]] = 38656 + j; d[38656 + j] = D[151][j];}\nD[152] = \"������������������������������������������������范茅苣苛苦茄若茂茉苒�������苗英茁苜苔苑苞苓苟苯茆虐虹虻虺衍衫要觔計訂訃貞負赴赳������趴軍軌述迦迢迪迥迭迫迤迨郊郎郁郃酋酊重閂限陋陌降面革������������������韋韭音頁風飛食首香乘亳倌倍倣俯倦倥俸倩倖倆值借倚倒們俺倀倔倨俱倡個候倘俳修倭倪俾倫倉兼冤冥冢凍凌准凋剖剜剔剛剝匪卿原厝叟哨唐唁唷哼哥哲唆哺唔哩哭員唉哮哪哦唧唇哽唏圃圄埂埔埋埃堉夏套奘奚娑娘娜娟娛娓�姬娠娣娩娥娌娉孫屘宰害家宴���\".split(\"\");\nfor(j = 0; j != D[152].length; ++j) if(D[152][j].charCodeAt(0) !== 0xFFFD) { e[D[152][j]] = 38912 + j; d[38912 + j] = D[152][j];}\nD[153] = \"������������������������������������������������宮宵容宸射屑展屐峭峽�������峻峪峨峰島崁峴差席師庫庭座弱徒徑徐恙恣恥恐恕恭恩息悄������悟悚悍悔悌悅悖扇拳挈拿捎挾振捕捂捆捏捉挺捐挽挪挫挨捍������������������捌效敉料旁旅時晉晏晃晒晌晅晁書朔朕朗校核案框桓根桂桔栩梳栗桌桑栽柴桐桀格桃株桅栓栘桁殊殉殷氣氧氨氦氤泰浪涕消涇浦浸海浙涓浬涉浮浚浴浩涌涊浹涅浥涔烊烘烤烙烈烏爹特狼狹狽狸狷玆班琉珮珠珪珞畔畝畜畚留疾�病症疲疳疽疼疹痂疸皋皰益盍���\".split(\"\");\nfor(j = 0; j != D[153].length; ++j) if(D[153][j].charCodeAt(0) !== 0xFFFD) { e[D[153][j]] = 39168 + j; d[39168 + j] = D[153][j];}\nD[154] = \"������������������������������������������������盎眩真眠眨矩砰砧砸砝�������破砷砥砭砠砟砲祕祐祠祟祖神祝祗祚秤秣秧租秦秩秘窄窈站������笆笑粉紡紗紋紊素索純紐紕級紜納紙紛缺罟羔翅翁耆耘耕耙������������������耗耽耿胱脂胰脅胭胴脆胸胳脈能脊胼胯臭臬舀舐航舫舨般芻茫荒荔荊茸荐草茵茴荏茲茹茶茗荀茱茨荃虔蚊蚪蚓蚤蚩蚌蚣蚜衰衷袁袂衽衹記訐討訌訕訊託訓訖訏訑豈豺豹財貢起躬軒軔軏辱送逆迷退迺迴逃追逅迸邕郡郝郢酒配酌�釘針釗釜釙閃院陣陡陛陝除陘���\".split(\"\");\nfor(j = 0; j != D[154].length; ++j) if(D[154][j].charCodeAt(0) !== 0xFFFD) { e[D[154][j]] = 39424 + j; d[39424 + j] = D[154][j];}\nD[155] = \"������������������������������������������������陞隻飢馬骨高鬥鬲鬼乾�������偺偽停假偃偌做偉健偶偎偕偵側偷偏倏偯偭兜冕凰剪副勒務������勘動匐匏匙匿區匾參曼商啪啦啄啞啡啃啊唱啖問啕唯啤唸售������������������啜唬啣唳啁啗圈國圉域堅堊堆埠埤基堂堵執培夠奢娶婁婉婦婪婀娼婢婚婆婊孰寇寅寄寂宿密尉專將屠屜屝崇崆崎崛崖崢崑崩崔崙崤崧崗巢常帶帳帷康庸庶庵庾張強彗彬彩彫得徙從徘御徠徜恿患悉悠您惋悴惦悽情悻悵惜悼惘惕�惆惟悸惚惇戚戛扈掠控捲掖探���\".split(\"\");\nfor(j = 0; j != D[155].length; ++j) if(D[155][j].charCodeAt(0) !== 0xFFFD) { e[D[155][j]] = 39680 + j; d[39680 + j] = D[155][j];}\nD[156] = \"������������������������������������������������接捷捧掘措捱掩掉掃掛�������捫推掄授掙採掬排掏掀捻捩捨捺敝敖救教敗啟敏敘敕敔斜斛������斬族旋旌旎晝晚晤晨晦晞曹勗望梁梯梢梓梵桿桶梱梧梗械梃������������������棄梭梆梅梔條梨梟梡梂欲殺毫毬氫涎涼淳淙液淡淌淤添淺清淇淋涯淑涮淞淹涸混淵淅淒渚涵淚淫淘淪深淮淨淆淄涪淬涿淦烹焉焊烽烯爽牽犁猜猛猖猓猙率琅琊球理現琍瓠瓶瓷甜產略畦畢異疏痔痕疵痊痍皎盔盒盛眷眾眼眶眸眺�硫硃硎祥票祭移窒窕笠笨笛第���\".split(\"\");\nfor(j = 0; j != D[156].length; ++j) if(D[156][j].charCodeAt(0) !== 0xFFFD) { e[D[156][j]] = 39936 + j; d[39936 + j] = D[156][j];}\nD[157] = \"������������������������������������������������符笙笞笮粒粗粕絆絃統�������紮紹紼絀細紳組累終紲紱缽羞羚翌翎習耜聊聆脯脖脣脫脩脰������脤舂舵舷舶船莎莞莘荸莢莖莽莫莒莊莓莉莠荷荻荼莆莧處彪������������������蛇蛀蚶蛄蚵蛆蛋蚱蚯蛉術袞袈被袒袖袍袋覓規訪訝訣訥許設訟訛訢豉豚販責貫貨貪貧赧赦趾趺軛軟這逍通逗連速逝逐逕逞造透逢逖逛途部郭都酗野釵釦釣釧釭釩閉陪陵陳陸陰陴陶陷陬雀雪雩章竟頂頃魚鳥鹵鹿麥麻傢傍傅備傑�傀傖傘傚最凱割剴創剩勞勝勛���\".split(\"\");\nfor(j = 0; j != D[157].length; ++j) if(D[157][j].charCodeAt(0) !== 0xFFFD) { e[D[157][j]] = 40192 + j; d[40192 + j] = D[157][j];}\nD[158] = \"������������������������������������������������博厥啻喀喧啼喊喝喘喂�������喜喪喔喇喋喃喳單喟唾喲喚喻喬喱啾喉喫喙圍堯堪場堤堰報������堡堝堠壹壺奠婷媚婿媒媛媧孳孱寒富寓寐尊尋就嵌嵐崴嵇巽������������������幅帽幀幃幾廊廁廂廄弼彭復循徨惑惡悲悶惠愜愣惺愕惰惻惴慨惱愎惶愉愀愒戟扉掣掌描揀揩揉揆揍插揣提握揖揭揮捶援揪換摒揚揹敞敦敢散斑斐斯普晰晴晶景暑智晾晷曾替期朝棺棕棠棘棗椅棟棵森棧棹棒棲棣棋棍植椒椎棉棚�楮棻款欺欽殘殖殼毯氮氯氬港���\".split(\"\");\nfor(j = 0; j != D[158].length; ++j) if(D[158][j].charCodeAt(0) !== 0xFFFD) { e[D[158][j]] = 40448 + j; d[40448 + j] = D[158][j];}\nD[159] = \"������������������������������������������������游湔渡渲湧湊渠渥渣減�������湛湘渤湖湮渭渦湯渴湍渺測湃渝渾滋溉渙湎湣湄湲湩湟焙焚������焦焰無然煮焜牌犄犀猶猥猴猩琺琪琳琢琥琵琶琴琯琛琦琨甥������������������甦畫番痢痛痣痙痘痞痠登發皖皓皴盜睏短硝硬硯稍稈程稅稀窘窗窖童竣等策筆筐筒答筍筋筏筑粟粥絞結絨絕紫絮絲絡給絢絰絳善翔翕耋聒肅腕腔腋腑腎脹腆脾腌腓腴舒舜菩萃菸萍菠菅萋菁華菱菴著萊菰萌菌菽菲菊萸萎萄菜萇�菔菟虛蛟蛙蛭蛔蛛蛤蛐蛞街裁���\".split(\"\");\nfor(j = 0; j != D[159].length; ++j) if(D[159][j].charCodeAt(0) !== 0xFFFD) { e[D[159][j]] = 40704 + j; d[40704 + j] = D[159][j];}\nD[160] = \"������������������������������������������������裂袱覃視註詠評詞証詁�������詔詛詐詆訴診訶詖象貂貯貼貳貽賁費賀貴買貶貿貸越超趁跎������距跋跚跑跌跛跆軻軸軼辜逮逵週逸進逶鄂郵鄉郾酣酥量鈔鈕������������������鈣鈉鈞鈍鈐鈇鈑閔閏開閑間閒閎隊階隋陽隅隆隍陲隄雁雅雄集雇雯雲韌項順須飧飪飯飩飲飭馮馭黃黍黑亂傭債傲傳僅傾催傷傻傯僇剿剷剽募勦勤勢勣匯嗟嗨嗓嗦嗎嗜嗇嗑嗣嗤嗯嗚嗡嗅嗆嗥嗉園圓塞塑塘塗塚塔填塌塭塊塢塒塋�奧嫁嫉嫌媾媽媼媳嫂媲嵩嵯幌���\".split(\"\");\nfor(j = 0; j != D[160].length; ++j) if(D[160][j].charCodeAt(0) !== 0xFFFD) { e[D[160][j]] = 40960 + j; d[40960 + j] = D[160][j];}\nD[161] = \"������������������������������������������������幹廉廈弒彙徬微愚意慈�������感想愛惹愁愈慎慌慄慍愾愴愧愍愆愷戡戢搓搾搞搪搭搽搬搏������搜搔損搶搖搗搆敬斟新暗暉暇暈暖暄暘暍會榔業楚楷楠楔極������������������椰概楊楨楫楞楓楹榆楝楣楛歇歲毀殿毓毽溢溯滓溶滂源溝滇滅溥溘溼溺溫滑準溜滄滔溪溧溴煎煙煩煤煉照煜煬煦煌煥煞煆煨煖爺牒猷獅猿猾瑯瑚瑕瑟瑞瑁琿瑙瑛瑜當畸瘀痰瘁痲痱痺痿痴痳盞盟睛睫睦睞督睹睪睬睜睥睨睢矮碎�碰碗碘碌碉硼碑碓硿祺祿禁萬���\".split(\"\");\nfor(j = 0; j != D[161].length; ++j) if(D[161][j].charCodeAt(0) !== 0xFFFD) { e[D[161][j]] = 41216 + j; d[41216 + j] = D[161][j];}\nD[162] = \"������������������������������������������������禽稜稚稠稔稟稞窟窠筷�������節筠筮筧粱粳粵經絹綑綁綏絛置罩罪署義羨群聖聘肆肄腱腰������腸腥腮腳腫腹腺腦舅艇蒂葷落萱葵葦葫葉葬葛萼萵葡董葩葭������������������葆虞虜號蛹蜓蜈蜇蜀蛾蛻蜂蜃蜆蜊衙裟裔裙補裘裝裡裊裕裒覜解詫該詳試詩詰誇詼詣誠話誅詭詢詮詬詹詻訾詨豢貊貉賊資賈賄貲賃賂賅跡跟跨路跳跺跪跤跦躲較載軾輊辟農運遊道遂達逼違遐遇遏過遍遑逾遁鄒鄗酬酪酩釉鈷鉗�鈸鈽鉀鈾鉛鉋鉤鉑鈴鉉鉍鉅鈹���\".split(\"\");\nfor(j = 0; j != D[162].length; ++j) if(D[162][j].charCodeAt(0) !== 0xFFFD) { e[D[162][j]] = 41472 + j; d[41472 + j] = D[162][j];}\nD[163] = \"������������������������������������������������鈿鉚閘隘隔隕雍雋雉雊�������雷電雹零靖靴靶預頑頓頊頒頌飼飴飽飾馳馱馴髡鳩麂鼎鼓鼠������僧僮僥僖僭僚僕像僑僱僎僩兢凳劃劂匱厭嗾嘀嘛嘗嗽嘔嘆嘉������������������嘍嘎嗷嘖嘟嘈嘐嗶團圖塵塾境墓墊塹墅塽壽夥夢夤奪奩嫡嫦嫩嫗嫖嫘嫣孵寞寧寡寥實寨寢寤察對屢嶄嶇幛幣幕幗幔廓廖弊彆彰徹慇愿態慷慢慣慟慚慘慵截撇摘摔撤摸摟摺摑摧搴摭摻敲斡旗旖暢暨暝榜榨榕槁榮槓構榛榷榻榫榴�槐槍榭槌榦槃榣歉歌氳漳演滾���\".split(\"\");\nfor(j = 0; j != D[163].length; ++j) if(D[163][j].charCodeAt(0) !== 0xFFFD) { e[D[163][j]] = 41728 + j; d[41728 + j] = D[163][j];}\nD[164] = \"������������������������������������������������漓滴漩漾漠漬漏漂漢滿�������滯漆漱漸漲漣漕漫漯澈漪滬漁滲滌滷熔熙煽熊熄熒爾犒犖獄������獐瑤瑣瑪瑰瑭甄疑瘧瘍瘋瘉瘓盡監瞄睽睿睡磁碟碧碳碩碣禎������������������福禍種稱窪窩竭端管箕箋筵算箝箔箏箸箇箄粹粽精綻綰綜綽綾綠緊綴網綱綺綢綿綵綸維緒緇綬罰翠翡翟聞聚肇腐膀膏膈膊腿膂臧臺與舔舞艋蓉蒿蓆蓄蒙蒞蒲蒜蓋蒸蓀蓓蒐蒼蓑蓊蜿蜜蜻蜢蜥蜴蜘蝕蜷蜩裳褂裴裹裸製裨褚裯誦誌�語誣認誡誓誤說誥誨誘誑誚誧���\".split(\"\");\nfor(j = 0; j != D[164].length; ++j) if(D[164][j].charCodeAt(0) !== 0xFFFD) { e[D[164][j]] = 41984 + j; d[41984 + j] = D[164][j];}\nD[165] = \"������������������������������������������������豪貍貌賓賑賒赫趙趕跼�������輔輒輕輓辣遠遘遜遣遙遞遢遝遛鄙鄘鄞酵酸酷酴鉸銀銅銘銖������鉻銓銜銨鉼銑閡閨閩閣閥閤隙障際雌雒需靼鞅韶頗領颯颱餃������������������餅餌餉駁骯骰髦魁魂鳴鳶鳳麼鼻齊億儀僻僵價儂儈儉儅凜劇劈劉劍劊勰厲嘮嘻嘹嘲嘿嘴嘩噓噎噗噴嘶嘯嘰墀墟增墳墜墮墩墦奭嬉嫻嬋嫵嬌嬈寮寬審寫層履嶝嶔幢幟幡廢廚廟廝廣廠彈影德徵慶慧慮慝慕憂慼慰慫慾憧憐憫憎憬憚�憤憔憮戮摩摯摹撞撲撈撐撰撥���\".split(\"\");\nfor(j = 0; j != D[165].length; ++j) if(D[165][j].charCodeAt(0) !== 0xFFFD) { e[D[165][j]] = 42240 + j; d[42240 + j] = D[165][j];}\nD[166] = \"������������������������������������������������撓撕撩撒撮播撫撚撬撙�������撢撳敵敷數暮暫暴暱樣樟槨樁樞標槽模樓樊槳樂樅槭樑歐歎������殤毅毆漿潼澄潑潦潔澆潭潛潸潮澎潺潰潤澗潘滕潯潠潟熟熬������������������熱熨牖犛獎獗瑩璋璃瑾璀畿瘠瘩瘟瘤瘦瘡瘢皚皺盤瞎瞇瞌瞑瞋磋磅確磊碾磕碼磐稿稼穀稽稷稻窯窮箭箱範箴篆篇篁箠篌糊締練緯緻緘緬緝編緣線緞緩綞緙緲緹罵罷羯翩耦膛膜膝膠膚膘蔗蔽蔚蓮蔬蔭蔓蔑蔣蔡蔔蓬蔥蓿蔆螂蝴蝶�蝠蝦蝸蝨蝙蝗蝌蝓衛衝褐複褒���\".split(\"\");\nfor(j = 0; j != D[166].length; ++j) if(D[166][j].charCodeAt(0) !== 0xFFFD) { e[D[166][j]] = 42496 + j; d[42496 + j] = D[166][j];}\nD[167] = \"������������������������������������������������褓褕褊誼諒談諄誕請諸�������課諉諂調誰論諍誶誹諛豌豎豬賠賞賦賤賬賭賢賣賜質賡赭趟������趣踫踐踝踢踏踩踟踡踞躺輝輛輟輩輦輪輜輞輥適遮遨遭遷鄰������������������鄭鄧鄱醇醉醋醃鋅銻銷鋪銬鋤鋁銳銼鋒鋇鋰銲閭閱霄霆震霉靠鞍鞋鞏頡頫頜颳養餓餒餘駝駐駟駛駑駕駒駙骷髮髯鬧魅魄魷魯鴆鴉鴃麩麾黎墨齒儒儘儔儐儕冀冪凝劑劓勳噙噫噹噩噤噸噪器噥噱噯噬噢噶壁墾壇壅奮嬝嬴學寰導彊�憲憑憩憊懍憶憾懊懈戰擅擁擋���\".split(\"\");\nfor(j = 0; j != D[167].length; ++j) if(D[167][j].charCodeAt(0) !== 0xFFFD) { e[D[167][j]] = 42752 + j; d[42752 + j] = D[167][j];}\nD[168] = \"������������������������������������������������撻撼據擄擇擂操撿擒擔�������撾整曆曉暹曄曇暸樽樸樺橙橫橘樹橄橢橡橋橇樵機橈歙歷氅������濂澱澡濃澤濁澧澳激澹澶澦澠澴熾燉燐燒燈燕熹燎燙燜燃燄������������������獨璜璣璘璟璞瓢甌甍瘴瘸瘺盧盥瞠瞞瞟瞥磨磚磬磧禦積穎穆穌穋窺篙簑築篤篛篡篩篦糕糖縊縑縈縛縣縞縝縉縐罹羲翰翱翮耨膳膩膨臻興艘艙蕊蕙蕈蕨蕩蕃蕉蕭蕪蕞螃螟螞螢融衡褪褲褥褫褡親覦諦諺諫諱謀諜諧諮諾謁謂諷諭諳�諶諼豫豭貓賴蹄踱踴蹂踹踵輻���\".split(\"\");\nfor(j = 0; j != D[168].length; ++j) if(D[168][j].charCodeAt(0) !== 0xFFFD) { e[D[168][j]] = 43008 + j; d[43008 + j] = D[168][j];}\nD[169] = \"������������������������������������������������輯輸輳辨辦遵遴選遲遼�������遺鄴醒錠錶鋸錳錯錢鋼錫錄錚錐錦錡錕錮錙閻隧隨險雕霎霑������霖霍霓霏靛靜靦鞘頰頸頻頷頭頹頤餐館餞餛餡餚駭駢駱骸骼������������������髻髭鬨鮑鴕鴣鴦鴨鴒鴛默黔龍龜優償儡儲勵嚎嚀嚐嚅嚇嚏壕壓壑壎嬰嬪嬤孺尷屨嶼嶺嶽嶸幫彌徽應懂懇懦懋戲戴擎擊擘擠擰擦擬擱擢擭斂斃曙曖檀檔檄檢檜櫛檣橾檗檐檠歜殮毚氈濘濱濟濠濛濤濫濯澀濬濡濩濕濮濰燧營燮燦燥�燭燬燴燠爵牆獰獲璩環璦璨癆���\".split(\"\");\nfor(j = 0; j != D[169].length; ++j) if(D[169][j].charCodeAt(0) !== 0xFFFD) { e[D[169][j]] = 43264 + j; d[43264 + j] = D[169][j];}\nD[170] = \"������������������������������������������������療癌盪瞳瞪瞰瞬瞧瞭矯�������磷磺磴磯礁禧禪穗窿簇簍篾篷簌篠糠糜糞糢糟糙糝縮績繆縷������縲繃縫總縱繅繁縴縹繈縵縿縯罄翳翼聱聲聰聯聳臆臃膺臂臀������������������膿膽臉膾臨舉艱薪薄蕾薜薑薔薯薛薇薨薊虧蟀蟑螳蟒蟆螫螻螺蟈蟋褻褶襄褸褽覬謎謗謙講謊謠謝謄謐豁谿豳賺賽購賸賻趨蹉蹋蹈蹊轄輾轂轅輿避遽還邁邂邀鄹醣醞醜鍍鎂錨鍵鍊鍥鍋錘鍾鍬鍛鍰鍚鍔闊闋闌闈闆隱隸雖霜霞鞠韓�顆颶餵騁駿鮮鮫鮪鮭鴻鴿麋黏���\".split(\"\");\nfor(j = 0; j != D[170].length; ++j) if(D[170][j].charCodeAt(0) !== 0xFFFD) { e[D[170][j]] = 43520 + j; d[43520 + j] = D[170][j];}\nD[171] = \"������������������������������������������������點黜黝黛鼾齋叢嚕嚮壙�������壘嬸彝懣戳擴擲擾攆擺擻擷斷曜朦檳檬櫃檻檸櫂檮檯歟歸殯������瀉瀋濾瀆濺瀑瀏燻燼燾燸獷獵璧璿甕癖癘癒瞽瞿瞻瞼礎禮穡������������������穢穠竄竅簫簧簪簞簣簡糧織繕繞繚繡繒繙罈翹翻職聶臍臏舊藏薩藍藐藉薰薺薹薦蟯蟬蟲蟠覆覲觴謨謹謬謫豐贅蹙蹣蹦蹤蹟蹕軀轉轍邇邃邈醫醬釐鎔鎊鎖鎢鎳鎮鎬鎰鎘鎚鎗闔闖闐闕離雜雙雛雞霤鞣鞦鞭韹額顏題顎顓颺餾餿餽餮�馥騎髁鬃鬆魏魎魍鯊鯉鯽鯈鯀���\".split(\"\");\nfor(j = 0; j != D[171].length; ++j) if(D[171][j].charCodeAt(0) !== 0xFFFD) { e[D[171][j]] = 43776 + j; d[43776 + j] = D[171][j];}\nD[172] = \"������������������������������������������������鵑鵝鵠黠鼕鼬儳嚥壞壟�������壢寵龐廬懲懷懶懵攀攏曠曝櫥櫝櫚櫓瀛瀟瀨瀚瀝瀕瀘爆爍牘������犢獸獺璽瓊瓣疇疆癟癡矇礙禱穫穩簾簿簸簽簷籀繫繭繹繩繪������������������羅繳羶羹羸臘藩藝藪藕藤藥藷蟻蠅蠍蟹蟾襠襟襖襞譁譜識證譚譎譏譆譙贈贊蹼蹲躇蹶蹬蹺蹴轔轎辭邊邋醱醮鏡鏑鏟鏃鏈鏜鏝鏖鏢鏍鏘鏤鏗鏨關隴難霪霧靡韜韻類願顛颼饅饉騖騙鬍鯨鯧鯖鯛鶉鵡鵲鵪鵬麒麗麓麴勸嚨嚷嚶嚴嚼壤�孀孃孽寶巉懸懺攘攔攙曦朧櫬���\".split(\"\");\nfor(j = 0; j != D[172].length; ++j) if(D[172][j].charCodeAt(0) !== 0xFFFD) { e[D[172][j]] = 44032 + j; d[44032 + j] = D[172][j];}\nD[173] = \"������������������������������������������������瀾瀰瀲爐獻瓏癢癥礦礪�������礬礫竇競籌籃籍糯糰辮繽繼纂罌耀臚艦藻藹蘑藺蘆蘋蘇蘊蠔������蠕襤覺觸議譬警譯譟譫贏贍躉躁躅躂醴釋鐘鐃鏽闡霰飄饒饑������������������馨騫騰騷騵鰓鰍鹹麵黨鼯齟齣齡儷儸囁囀囂夔屬巍懼懾攝攜斕曩櫻欄櫺殲灌爛犧瓖瓔癩矓籐纏續羼蘗蘭蘚蠣蠢蠡蠟襪襬覽譴護譽贓躊躍躋轟辯醺鐮鐳鐵鐺鐸鐲鐫闢霸霹露響顧顥饗驅驃驀騾髏魔魑鰭鰥鶯鶴鷂鶸麝黯鼙齜齦齧儼�儻囈囊囉孿巔巒彎懿攤權歡灑���\".split(\"\");\nfor(j = 0; j != D[173].length; ++j) if(D[173][j].charCodeAt(0) !== 0xFFFD) { e[D[173][j]] = 44288 + j; d[44288 + j] = D[173][j];}\nD[174] = \"������������������������������������������������灘玀瓤疊癮癬禳籠籟聾�������聽臟襲襯觼讀贖贗躑躓轡酈鑄鑑鑒霽霾韃韁顫饕驕驍髒鬚鱉������鰱鰾鰻鷓鷗鼴齬齪龔囌巖戀攣攫攪曬欐瓚竊籤籣籥纓纖纔臢������������������蘸蘿蠱變邐邏鑣鑠鑤靨顯饜驚驛驗髓體髑鱔鱗鱖鷥麟黴囑壩攬灞癱癲矗罐羈蠶蠹衢讓讒讖艷贛釀鑪靂靈靄韆顰驟鬢魘鱟鷹鷺鹼鹽鼇齷齲廳欖灣籬籮蠻觀躡釁鑲鑰顱饞髖鬣黌灤矚讚鑷韉驢驥纜讜躪釅鑽鑾鑼鱷鱸黷豔鑿鸚爨驪鬱�鸛鸞籲乂乜凵匚厂万丌乇亍囗���\".split(\"\");\nfor(j = 0; j != D[174].length; ++j) if(D[174][j].charCodeAt(0) !== 0xFFFD) { e[D[174][j]] = 44544 + j; d[44544 + j] = D[174][j];}\nD[175] = \"������������������������������������������������兀屮彳丏冇与丮亓仂仉�������仈冘勼卬厹圠夃夬尐巿旡殳毌气爿丱丼仨仜仩仡仝仚刌匜卌������圢圣夗夯宁宄尒尻屴屳帄庀庂忉戉扐氕氶汃氿氻犮犰玊禸肊������������������阞伎优伬仵伔仱伀价伈伝伂伅伢伓伄仴伒冱刓刉刐劦匢匟卍厊吇囡囟圮圪圴夼妀奼妅奻奾奷奿孖尕尥屼屺屻屾巟幵庄异弚彴忕忔忏扜扞扤扡扦扢扙扠扚扥旯旮朾朹朸朻机朿朼朳氘汆汒汜汏汊汔汋汌灱牞犴犵玎甪癿穵网艸艼芀�艽艿虍襾邙邗邘邛邔阢阤阠阣���\".split(\"\");\nfor(j = 0; j != D[175].length; ++j) if(D[175][j].charCodeAt(0) !== 0xFFFD) { e[D[175][j]] = 44800 + j; d[44800 + j] = D[175][j];}\nD[176] = \"������������������������������������������������佖伻佢佉体佤伾佧佒佟�������佁佘伭伳伿佡冏冹刜刞刡劭劮匉卣卲厎厏吰吷吪呔呅吙吜吥������吘吽呏呁吨吤呇囮囧囥坁坅坌坉坋坒夆奀妦妘妠妗妎妢妐妏������������������妧妡宎宒尨尪岍岏岈岋岉岒岊岆岓岕巠帊帎庋庉庌庈庍弅弝彸彶忒忑忐忭忨忮忳忡忤忣忺忯忷忻怀忴戺抃抌抎抏抔抇扱扻扺扰抁抈扷扽扲扴攷旰旴旳旲旵杅杇杙杕杌杈杝杍杚杋毐氙氚汸汧汫沄沋沏汱汯汩沚汭沇沕沜汦汳汥汻�沎灴灺牣犿犽狃狆狁犺狅玕玗���\".split(\"\");\nfor(j = 0; j != D[176].length; ++j) if(D[176][j].charCodeAt(0) !== 0xFFFD) { e[D[176][j]] = 45056 + j; d[45056 + j] = D[176][j];}\nD[177] = \"������������������������������������������������玓玔玒町甹疔疕皁礽耴�������肕肙肐肒肜芐芏芅芎芑芓芊芃芄豸迉辿邟邡邥邞邧邠阰阨阯������阭丳侘佼侅佽侀侇佶佴侉侄佷佌侗佪侚佹侁佸侐侜侔侞侒侂������������������侕佫佮冞冼冾刵刲刳剆刱劼匊匋匼厒厔咇呿咁咑咂咈呫呺呾呥呬呴呦咍呯呡呠咘呣呧呤囷囹坯坲坭坫坱坰坶垀坵坻坳坴坢坨坽夌奅妵妺姏姎妲姌姁妶妼姃姖妱妽姀姈妴姇孢孥宓宕屄屇岮岤岠岵岯岨岬岟岣岭岢岪岧岝岥岶岰岦�帗帔帙弨弢弣弤彔徂彾彽忞忥���\".split(\"\");\nfor(j = 0; j != D[177].length; ++j) if(D[177][j].charCodeAt(0) !== 0xFFFD) { e[D[177][j]] = 45312 + j; d[45312 + j] = D[177][j];}\nD[178] = \"������������������������������������������������怭怦怙怲怋怴怊怗怳怚�������怞怬怢怍怐怮怓怑怌怉怜戔戽抭抴拑抾抪抶拊抮抳抯抻抩抰������抸攽斨斻昉旼昄昒昈旻昃昋昍昅旽昑昐曶朊枅杬枎枒杶杻枘������������������枆构杴枍枌杺枟枑枙枃杽极杸杹枔欥殀歾毞氝沓泬泫泮泙沶泔沭泧沷泐泂沺泃泆泭泲泒泝沴沊沝沀泞泀洰泍泇沰泹泏泩泑炔炘炅炓炆炄炑炖炂炚炃牪狖狋狘狉狜狒狔狚狌狑玤玡玭玦玢玠玬玝瓝瓨甿畀甾疌疘皯盳盱盰盵矸矼矹�矻矺矷祂礿秅穸穻竻籵糽耵肏���\".split(\"\");\nfor(j = 0; j != D[178].length; ++j) if(D[178][j].charCodeAt(0) !== 0xFFFD) { e[D[178][j]] = 45568 + j; d[45568 + j] = D[178][j];}\nD[179] = \"������������������������������������������������肮肣肸肵肭舠芠苀芫芚�������芘芛芵芧芮芼芞芺芴芨芡芩苂芤苃芶芢虰虯虭虮豖迒迋迓迍������迖迕迗邲邴邯邳邰阹阽阼阺陃俍俅俓侲俉俋俁俔俜俙侻侳俛������������������俇俖侺俀侹俬剄剉勀勂匽卼厗厖厙厘咺咡咭咥哏哃茍咷咮哖咶哅哆咠呰咼咢咾呲哞咰垵垞垟垤垌垗垝垛垔垘垏垙垥垚垕壴复奓姡姞姮娀姱姝姺姽姼姶姤姲姷姛姩姳姵姠姾姴姭宨屌峐峘峌峗峋峛峞峚峉峇峊峖峓峔峏峈峆峎峟峸�巹帡帢帣帠帤庰庤庢庛庣庥弇���\".split(\"\");\nfor(j = 0; j != D[179].length; ++j) if(D[179][j].charCodeAt(0) !== 0xFFFD) { e[D[179][j]] = 45824 + j; d[45824 + j] = D[179][j];}\nD[180] = \"������������������������������������������������弮彖徆怷怹恔恲恞恅恓�������恇恉恛恌恀恂恟怤恄恘恦恮扂扃拏挍挋拵挎挃拫拹挏挌拸拶������挀挓挔拺挕拻拰敁敃斪斿昶昡昲昵昜昦昢昳昫昺昝昴昹昮朏������������������朐柁柲柈枺柜枻柸柘柀枷柅柫柤柟枵柍枳柷柶柮柣柂枹柎柧柰枲柼柆柭柌枮柦柛柺柉柊柃柪柋欨殂殄殶毖毘毠氠氡洨洴洭洟洼洿洒洊泚洳洄洙洺洚洑洀洝浂洁洘洷洃洏浀洇洠洬洈洢洉洐炷炟炾炱炰炡炴炵炩牁牉牊牬牰牳牮狊�狤狨狫狟狪狦狣玅珌珂珈珅玹���\".split(\"\");\nfor(j = 0; j != D[180].length; ++j) if(D[180][j].charCodeAt(0) !== 0xFFFD) { e[D[180][j]] = 46080 + j; d[46080 + j] = D[180][j];}\nD[181] = \"������������������������������������������������玶玵玴珫玿珇玾珃珆玸�������珋瓬瓮甮畇畈疧疪癹盄眈眃眄眅眊盷盻盺矧矨砆砑砒砅砐砏������砎砉砃砓祊祌祋祅祄秕种秏秖秎窀穾竑笀笁籺籸籹籿粀粁紃������������������紈紁罘羑羍羾耇耎耏耔耷胘胇胠胑胈胂胐胅胣胙胜胊胕胉胏胗胦胍臿舡芔苙苾苹茇苨茀苕茺苫苖苴苬苡苲苵茌苻苶苰苪苤苠苺苳苭虷虴虼虳衁衎衧衪衩觓訄訇赲迣迡迮迠郱邽邿郕郅邾郇郋郈釔釓陔陏陑陓陊陎倞倅倇倓倢倰倛�俵俴倳倷倬俶俷倗倜倠倧倵倯���\".split(\"\");\nfor(j = 0; j != D[181].length; ++j) if(D[181][j].charCodeAt(0) !== 0xFFFD) { e[D[181][j]] = 46336 + j; d[46336 + j] = D[181][j];}\nD[182] = \"������������������������������������������������倱倎党冔冓凊凄凅凈凎�������剡剚剒剞剟剕剢勍匎厞唦哢唗唒哧哳哤唚哿唄唈哫唑唅哱唊������哻哷哸哠唎唃唋圁圂埌堲埕埒垺埆垽垼垸垶垿埇埐垹埁夎奊������������������娙娖娭娮娕娏娗娊娞娳孬宧宭宬尃屖屔峬峿峮峱峷崀峹帩帨庨庮庪庬弳弰彧恝恚恧恁悢悈悀悒悁悝悃悕悛悗悇悜悎戙扆拲挐捖挬捄捅挶捃揤挹捋捊挼挩捁挴捘捔捙挭捇挳捚捑挸捗捀捈敊敆旆旃旄旂晊晟晇晑朒朓栟栚桉栲栳栻�桋桏栖栱栜栵栫栭栯桎桄栴栝���\".split(\"\");\nfor(j = 0; j != D[182].length; ++j) if(D[182][j].charCodeAt(0) !== 0xFFFD) { e[D[182][j]] = 46592 + j; d[46592 + j] = D[182][j];}\nD[183] = \"������������������������������������������������栒栔栦栨栮桍栺栥栠欬�������欯欭欱欴歭肂殈毦毤毨毣毢毧氥浺浣浤浶洍浡涒浘浢浭浯涑������涍淯浿涆浞浧浠涗浰浼浟涂涘洯浨涋浾涀涄洖涃浻浽浵涐烜������������������烓烑烝烋缹烢烗烒烞烠烔烍烅烆烇烚烎烡牂牸牷牶猀狺狴狾狶狳狻猁珓珙珥珖玼珧珣珩珜珒珛珔珝珚珗珘珨瓞瓟瓴瓵甡畛畟疰痁疻痄痀疿疶疺皊盉眝眛眐眓眒眣眑眕眙眚眢眧砣砬砢砵砯砨砮砫砡砩砳砪砱祔祛祏祜祓祒祑秫秬�秠秮秭秪秜秞秝窆窉窅窋窌窊���\".split(\"\");\nfor(j = 0; j != D[183].length; ++j) if(D[183][j].charCodeAt(0) !== 0xFFFD) { e[D[183][j]] = 46848 + j; d[46848 + j] = D[183][j];}\nD[184] = \"������������������������������������������������窇竘笐笄笓笅笏笈笊笎�������笉笒粄粑粊粌粈粍粅紞紝紑紎紘紖紓紟紒紏紌罜罡罞罠罝罛������羖羒翃翂翀耖耾耹胺胲胹胵脁胻脀舁舯舥茳茭荄茙荑茥荖茿������������������荁茦茜茢荂荎茛茪茈茼荍茖茤茠茷茯茩荇荅荌荓茞茬荋茧荈虓虒蚢蚨蚖蚍蚑蚞蚇蚗蚆蚋蚚蚅蚥蚙蚡蚧蚕蚘蚎蚝蚐蚔衃衄衭衵衶衲袀衱衿衯袃衾衴衼訒豇豗豻貤貣赶赸趵趷趶軑軓迾迵适迿迻逄迼迶郖郠郙郚郣郟郥郘郛郗郜郤酐�酎酏釕釢釚陜陟隼飣髟鬯乿偰���\".split(\"\");\nfor(j = 0; j != D[184].length; ++j) if(D[184][j].charCodeAt(0) !== 0xFFFD) { e[D[184][j]] = 47104 + j; d[47104 + j] = D[184][j];}\nD[185] = \"������������������������������������������������偪偡偞偠偓偋偝偲偈偍�������偁偛偊偢倕偅偟偩偫偣偤偆偀偮偳偗偑凐剫剭剬剮勖勓匭厜������啵啶唼啍啐唴唪啑啢唶唵唰啒啅唌唲啥啎唹啈唭唻啀啋圊圇������������������埻堔埢埶埜埴堀埭埽堈埸堋埳埏堇埮埣埲埥埬埡堎埼堐埧堁堌埱埩埰堍堄奜婠婘婕婧婞娸娵婭婐婟婥婬婓婤婗婃婝婒婄婛婈媎娾婍娹婌婰婩婇婑婖婂婜孲孮寁寀屙崞崋崝崚崠崌崨崍崦崥崏崰崒崣崟崮帾帴庱庴庹庲庳弶弸徛徖�徟悊悐悆悾悰悺惓惔惏惤惙惝���\".split(\"\");\nfor(j = 0; j != D[185].length; ++j) if(D[185][j].charCodeAt(0) !== 0xFFFD) { e[D[185][j]] = 47360 + j; d[47360 + j] = D[185][j];}\nD[186] = \"������������������������������������������������惈悱惛悷惊悿惃惍惀挲�������捥掊掂捽掽掞掭掝掗掫掎捯掇掐据掯捵掜捭掮捼掤挻掟捸掅������掁掑掍捰敓旍晥晡晛晙晜晢朘桹梇梐梜桭桮梮梫楖桯梣梬梩������������������桵桴梲梏桷梒桼桫桲梪梀桱桾梛梖梋梠梉梤桸桻梑梌梊桽欶欳欷欸殑殏殍殎殌氪淀涫涴涳湴涬淩淢涷淶淔渀淈淠淟淖涾淥淜淝淛淴淊涽淭淰涺淕淂淏淉淐淲淓淽淗淍淣涻烺焍烷焗烴焌烰焄烳焐烼烿焆焓焀烸烶焋焂焎牾牻牼牿�猝猗猇猑猘猊猈狿猏猞玈珶珸���\".split(\"\");\nfor(j = 0; j != D[186].length; ++j) if(D[186][j].charCodeAt(0) !== 0xFFFD) { e[D[186][j]] = 47616 + j; d[47616 + j] = D[186][j];}\nD[187] = \"������������������������������������������������珵琄琁珽琇琀珺珼珿琌�������琋珴琈畤畣痎痒痏痋痌痑痐皏皉盓眹眯眭眱眲眴眳眽眥眻眵������硈硒硉硍硊硌砦硅硐祤祧祩祪祣祫祡离秺秸秶秷窏窔窐笵筇������������������笴笥笰笢笤笳笘笪笝笱笫笭笯笲笸笚笣粔粘粖粣紵紽紸紶紺絅紬紩絁絇紾紿絊紻紨罣羕羜羝羛翊翋翍翐翑翇翏翉耟耞耛聇聃聈脘脥脙脛脭脟脬脞脡脕脧脝脢舑舸舳舺舴舲艴莐莣莨莍荺荳莤荴莏莁莕莙荵莔莩荽莃莌莝莛莪莋荾�莥莯莈莗莰荿莦莇莮荶莚虙虖���\".split(\"\");\nfor(j = 0; j != D[187].length; ++j) if(D[187][j].charCodeAt(0) !== 0xFFFD) { e[D[187][j]] = 47872 + j; d[47872 + j] = D[187][j];}\nD[188] = \"������������������������������������������������蚿蚷蛂蛁蛅蚺蚰蛈蚹蚳�������蚸蛌蚴蚻蚼蛃蚽蚾衒袉袕袨袢袪袚袑袡袟袘袧袙袛袗袤袬袌������袓袎覂觖觙觕訰訧訬訞谹谻豜豝豽貥赽赻赹趼跂趹趿跁軘軞������������������軝軜軗軠軡逤逋逑逜逌逡郯郪郰郴郲郳郔郫郬郩酖酘酚酓酕釬釴釱釳釸釤釹釪釫釷釨釮镺閆閈陼陭陫陱陯隿靪頄飥馗傛傕傔傞傋傣傃傌傎傝偨傜傒傂傇兟凔匒匑厤厧喑喨喥喭啷噅喢喓喈喏喵喁喣喒喤啽喌喦啿喕喡喎圌堩堷堙�堞堧堣堨埵塈堥堜堛堳堿堶堮���\".split(\"\");\nfor(j = 0; j != D[188].length; ++j) if(D[188][j].charCodeAt(0) !== 0xFFFD) { e[D[188][j]] = 48128 + j; d[48128 + j] = D[188][j];}\nD[189] = \"������������������������������������������������堹堸堭堬堻奡媯媔媟婺�������媢媞婸媦婼媥媬媕媮娷媄媊媗媃媋媩婻婽媌媜媏媓媝寪寍寋������寔寑寊寎尌尰崷嵃嵫嵁嵋崿崵嵑嵎嵕崳崺嵒崽崱嵙嵂崹嵉崸������������������崼崲崶嵀嵅幄幁彘徦徥徫惉悹惌惢惎惄愔惲愊愖愅惵愓惸惼惾惁愃愘愝愐惿愄愋扊掔掱掰揎揥揨揯揃撝揳揊揠揶揕揲揵摡揟掾揝揜揄揘揓揂揇揌揋揈揰揗揙攲敧敪敤敜敨敥斌斝斞斮旐旒晼晬晻暀晱晹晪晲朁椌棓椄棜椪棬棪棱�椏棖棷棫棤棶椓椐棳棡椇棌椈���\".split(\"\");\nfor(j = 0; j != D[189].length; ++j) if(D[189][j].charCodeAt(0) !== 0xFFFD) { e[D[189][j]] = 48384 + j; d[48384 + j] = D[189][j];}\nD[190] = \"������������������������������������������������楰梴椑棯棆椔棸棐棽棼�������棨椋椊椗棎棈棝棞棦棴棑椆棔棩椕椥棇欹欻欿欼殔殗殙殕殽������毰毲毳氰淼湆湇渟湉溈渼渽湅湢渫渿湁湝湳渜渳湋湀湑渻渃������������������渮湞湨湜湡渱渨湠湱湫渹渢渰湓湥渧湸湤湷湕湹湒湦渵渶湚焠焞焯烻焮焱焣焥焢焲焟焨焺焛牋牚犈犉犆犅犋猒猋猰猢猱猳猧猲猭猦猣猵猌琮琬琰琫琖琚琡琭琱琤琣琝琩琠琲瓻甯畯畬痧痚痡痦痝痟痤痗皕皒盚睆睇睄睍睅睊睎睋�睌矞矬硠硤硥硜硭硱硪确硰硩���\".split(\"\");\nfor(j = 0; j != D[190].length; ++j) if(D[190][j].charCodeAt(0) !== 0xFFFD) { e[D[190][j]] = 48640 + j; d[48640 + j] = D[190][j];}\nD[191] = \"������������������������������������������������硨硞硢祴祳祲祰稂稊稃�������稌稄窙竦竤筊笻筄筈筌筎筀筘筅粢粞粨粡絘絯絣絓絖絧絪絏������絭絜絫絒絔絩絑絟絎缾缿罥罦羢羠羡翗聑聏聐胾胔腃腊腒腏������������������腇脽腍脺臦臮臷臸臹舄舼舽舿艵茻菏菹萣菀菨萒菧菤菼菶萐菆菈菫菣莿萁菝菥菘菿菡菋菎菖菵菉萉萏菞萑萆菂菳菕菺菇菑菪萓菃菬菮菄菻菗菢萛菛菾蛘蛢蛦蛓蛣蛚蛪蛝蛫蛜蛬蛩蛗蛨蛑衈衖衕袺裗袹袸裀袾袶袼袷袽袲褁裉覕覘�覗觝觚觛詎詍訹詙詀詗詘詄詅���\".split(\"\");\nfor(j = 0; j != D[191].length; ++j) if(D[191][j].charCodeAt(0) !== 0xFFFD) { e[D[191][j]] = 48896 + j; d[48896 + j] = D[191][j];}\nD[192] = \"������������������������������������������������詒詈詑詊詌詏豟貁貀貺�������貾貰貹貵趄趀趉跘跓跍跇跖跜跏跕跙跈跗跅軯軷軺軹軦軮軥������軵軧軨軶軫軱軬軴軩逭逴逯鄆鄬鄄郿郼鄈郹郻鄁鄀鄇鄅鄃酡������������������酤酟酢酠鈁鈊鈥鈃鈚鈦鈏鈌鈀鈒釿釽鈆鈄鈧鈂鈜鈤鈙鈗鈅鈖镻閍閌閐隇陾隈隉隃隀雂雈雃雱雰靬靰靮頇颩飫鳦黹亃亄亶傽傿僆傮僄僊傴僈僂傰僁傺傱僋僉傶傸凗剺剸剻剼嗃嗛嗌嗐嗋嗊嗝嗀嗔嗄嗩喿嗒喍嗏嗕嗢嗖嗈嗲嗍嗙嗂圔�塓塨塤塏塍塉塯塕塎塝塙塥塛���\".split(\"\");\nfor(j = 0; j != D[192].length; ++j) if(D[192][j].charCodeAt(0) !== 0xFFFD) { e[D[192][j]] = 49152 + j; d[49152 + j] = D[192][j];}\nD[193] = \"������������������������������������������������堽塣塱壼嫇嫄嫋媺媸媱�������媵媰媿嫈媻嫆媷嫀嫊媴媶嫍媹媐寖寘寙尟尳嵱嵣嵊嵥嵲嵬嵞������嵨嵧嵢巰幏幎幊幍幋廅廌廆廋廇彀徯徭惷慉慊愫慅愶愲愮慆������������������愯慏愩慀戠酨戣戥戤揅揱揫搐搒搉搠搤搳摃搟搕搘搹搷搢搣搌搦搰搨摁搵搯搊搚摀搥搧搋揧搛搮搡搎敯斒旓暆暌暕暐暋暊暙暔晸朠楦楟椸楎楢楱椿楅楪椹楂楗楙楺楈楉椵楬椳椽楥棰楸椴楩楀楯楄楶楘楁楴楌椻楋椷楜楏楑椲楒�椯楻椼歆歅歃歂歈歁殛嗀毻毼���\".split(\"\");\nfor(j = 0; j != D[193].length; ++j) if(D[193][j].charCodeAt(0) !== 0xFFFD) { e[D[193][j]] = 49408 + j; d[49408 + j] = D[193][j];}\nD[194] = \"������������������������������������������������毹毷毸溛滖滈溏滀溟溓�������溔溠溱溹滆滒溽滁溞滉溷溰滍溦滏溲溾滃滜滘溙溒溎溍溤溡������溿溳滐滊溗溮溣煇煔煒煣煠煁煝煢煲煸煪煡煂煘煃煋煰煟煐������������������煓煄煍煚牏犍犌犑犐犎猼獂猻猺獀獊獉瑄瑊瑋瑒瑑瑗瑀瑏瑐瑎瑂瑆瑍瑔瓡瓿瓾瓽甝畹畷榃痯瘏瘃痷痾痼痹痸瘐痻痶痭痵痽皙皵盝睕睟睠睒睖睚睩睧睔睙睭矠碇碚碔碏碄碕碅碆碡碃硹碙碀碖硻祼禂祽祹稑稘稙稒稗稕稢稓稛稐窣�窢窞竫筦筤筭筴筩筲筥筳筱筰���\".split(\"\");\nfor(j = 0; j != D[194].length; ++j) if(D[194][j].charCodeAt(0) !== 0xFFFD) { e[D[194][j]] = 49664 + j; d[49664 + j] = D[194][j];}\nD[195] = \"������������������������������������������������筡筸筶筣粲粴粯綈綆綀�������綍絿綅絺綎絻綃絼綌綔綄絽綒罭罫罧罨罬羦羥羧翛翜耡腤腠������腷腜腩腛腢腲朡腞腶腧腯腄腡舝艉艄艀艂艅蓱萿葖葶葹蒏蒍������������������葥葑葀蒆葧萰葍葽葚葙葴葳葝蔇葞萷萺萴葺葃葸萲葅萩菙葋萯葂萭葟葰萹葎葌葒葯蓅蒎萻葇萶萳葨葾葄萫葠葔葮葐蜋蜄蛷蜌蛺蛖蛵蝍蛸蜎蜉蜁蛶蜍蜅裖裋裍裎裞裛裚裌裐覅覛觟觥觤觡觠觢觜触詶誆詿詡訿詷誂誄詵誃誁詴詺谼�豋豊豥豤豦貆貄貅賌赨赩趑趌���\".split(\"\");\nfor(j = 0; j != D[195].length; ++j) if(D[195][j].charCodeAt(0) !== 0xFFFD) { e[D[195][j]] = 49920 + j; d[49920 + j] = D[195][j];}\nD[196] = \"������������������������������������������������趎趏趍趓趔趐趒跰跠跬�������跱跮跐跩跣跢跧跲跫跴輆軿輁輀輅輇輈輂輋遒逿遄遉逽鄐鄍������鄏鄑鄖鄔鄋鄎酮酯鉈鉒鈰鈺鉦鈳鉥鉞銃鈮鉊鉆鉭鉬鉏鉠鉧鉯������������������鈶鉡鉰鈱鉔鉣鉐鉲鉎鉓鉌鉖鈲閟閜閞閛隒隓隑隗雎雺雽雸雵靳靷靸靲頏頍頎颬飶飹馯馲馰馵骭骫魛鳪鳭鳧麀黽僦僔僗僨僳僛僪僝僤僓僬僰僯僣僠凘劀劁勩勫匰厬嘧嘕嘌嘒嗼嘏嘜嘁嘓嘂嗺嘝嘄嗿嗹墉塼墐墘墆墁塿塴墋塺墇墑墎�塶墂墈塻墔墏壾奫嫜嫮嫥嫕嫪���\".split(\"\");\nfor(j = 0; j != D[196].length; ++j) if(D[196][j].charCodeAt(0) !== 0xFFFD) { e[D[196][j]] = 50176 + j; d[50176 + j] = D[196][j];}\nD[197] = \"������������������������������������������������嫚嫭嫫嫳嫢嫠嫛嫬嫞嫝�������嫙嫨嫟孷寠寣屣嶂嶀嵽嶆嵺嶁嵷嶊嶉嶈嵾嵼嶍嵹嵿幘幙幓廘������廑廗廎廜廕廙廒廔彄彃彯徶愬愨慁慞慱慳慒慓慲慬憀慴慔慺������������������慛慥愻慪慡慖戩戧戫搫摍摛摝摴摶摲摳摽摵摦撦摎撂摞摜摋摓摠摐摿搿摬摫摙摥摷敳斠暡暠暟朅朄朢榱榶槉榠槎榖榰榬榼榑榙榎榧榍榩榾榯榿槄榽榤槔榹槊榚槏榳榓榪榡榞槙榗榐槂榵榥槆歊歍歋殞殟殠毃毄毾滎滵滱漃漥滸漷�滻漮漉潎漙漚漧漘漻漒滭漊漶���\".split(\"\");\nfor(j = 0; j != D[197].length; ++j) if(D[197][j].charCodeAt(0) !== 0xFFFD) { e[D[197][j]] = 50432 + j; d[50432 + j] = D[197][j];}\nD[198] = \"������������������������������������������������潳滹滮漭潀漰漼漵滫漇�������漎潃漅滽滶漹漜滼漺漟漍漞漈漡熇熐熉熀熅熂熏煻熆熁熗牄������牓犗犕犓獃獍獑獌瑢瑳瑱瑵瑲瑧瑮甀甂甃畽疐瘖瘈瘌瘕瘑瘊������������������瘔皸瞁睼瞅瞂睮瞀睯睾瞃碲碪碴碭碨硾碫碞碥碠碬碢碤禘禊禋禖禕禔禓禗禈禒禐稫穊稰稯稨稦窨窫窬竮箈箜箊箑箐箖箍箌箛箎箅箘劄箙箤箂粻粿粼粺綧綷緂綣綪緁緀緅綝緎緄緆緋緌綯綹綖綼綟綦綮綩綡緉罳翢翣翥翞耤聝聜膉�膆膃膇膍膌膋舕蒗蒤蒡蒟蒺蓎���\".split(\"\");\nfor(j = 0; j != D[198].length; ++j) if(D[198][j].charCodeAt(0) !== 0xFFFD) { e[D[198][j]] = 50688 + j; d[50688 + j] = D[198][j];}\nD[199] = \"������������������������������������������������蓂蒬蒮蒫蒹蒴蓁蓍蒪蒚�������蒱蓐蒝蒧蒻蒢蒔蓇蓌蒛蒩蒯蒨蓖蒘蒶蓏蒠蓗蓔蓒蓛蒰蒑虡蜳������蜣蜨蝫蝀蜮蜞蜡蜙蜛蝃蜬蝁蜾蝆蜠蜲蜪蜭蜼蜒蜺蜱蜵蝂蜦蜧������������������蜸蜤蜚蜰蜑裷裧裱裲裺裾裮裼裶裻裰裬裫覝覡覟覞觩觫觨誫誙誋誒誏誖谽豨豩賕賏賗趖踉踂跿踍跽踊踃踇踆踅跾踀踄輐輑輎輍鄣鄜鄠鄢鄟鄝鄚鄤鄡鄛酺酲酹酳銥銤鉶銛鉺銠銔銪銍銦銚銫鉹銗鉿銣鋮銎銂銕銢鉽銈銡銊銆銌銙銧�鉾銇銩銝銋鈭隞隡雿靘靽靺靾���\".split(\"\");\nfor(j = 0; j != D[199].length; ++j) if(D[199][j].charCodeAt(0) !== 0xFFFD) { e[D[199][j]] = 50944 + j; d[50944 + j] = D[199][j];}\nD[200] = \"������������������������������������������������鞃鞀鞂靻鞄鞁靿韎韍頖�������颭颮餂餀餇馝馜駃馹馻馺駂馽駇骱髣髧鬾鬿魠魡魟鳱鳲鳵麧������僿儃儰僸儆儇僶僾儋儌僽儊劋劌勱勯噈噂噌嘵噁噊噉噆噘噚������������������噀嘳嘽嘬嘾嘸嘪嘺圚墫墝墱墠墣墯墬墥墡壿嫿嫴嫽嫷嫶嬃嫸嬂嫹嬁嬇嬅嬏屧嶙嶗嶟嶒嶢嶓嶕嶠嶜嶡嶚嶞幩幝幠幜緳廛廞廡彉徲憋憃慹憱憰憢憉憛憓憯憭憟憒憪憡憍慦憳戭摮摰撖撠撅撗撜撏撋撊撌撣撟摨撱撘敶敺敹敻斲斳暵暰�暩暲暷暪暯樀樆樗槥槸樕槱槤���\".split(\"\");\nfor(j = 0; j != D[200].length; ++j) if(D[200][j].charCodeAt(0) !== 0xFFFD) { e[D[200][j]] = 51200 + j; d[51200 + j] = D[200][j];}\nD[201] = \"������������������������������������������������樠槿槬槢樛樝槾樧槲槮�������樔槷槧橀樈槦槻樍槼槫樉樄樘樥樏槶樦樇槴樖歑殥殣殢殦氁������氀毿氂潁漦潾澇濆澒澍澉澌潢潏澅潚澖潶潬澂潕潲潒潐潗澔������������������澓潝漀潡潫潽潧澐潓澋潩潿澕潣潷潪潻熲熯熛熰熠熚熩熵熝熥熞熤熡熪熜熧熳犘犚獘獒獞獟獠獝獛獡獚獙獢璇璉璊璆璁瑽璅璈瑼瑹甈甇畾瘥瘞瘙瘝瘜瘣瘚瘨瘛皜皝皞皛瞍瞏瞉瞈磍碻磏磌磑磎磔磈磃磄磉禚禡禠禜禢禛歶稹窲窴�窳箷篋箾箬篎箯箹篊箵糅糈糌���\".split(\"\");\nfor(j = 0; j != D[201].length; ++j) if(D[201][j].charCodeAt(0) !== 0xFFFD) { e[D[201][j]] = 51456 + j; d[51456 + j] = D[201][j];}\nD[202] = \"������������������������������������������������糋緷緛緪緧緗緡縃緺緦�������緶緱緰緮緟罶羬羰羭翭翫翪翬翦翨聤聧膣膟膞膕膢膙膗舖艏������艓艒艐艎艑蔤蔻蔏蔀蔩蔎蔉蔍蔟蔊蔧蔜蓻蔫蓺蔈蔌蓴蔪蓲蔕������������������蓷蓫蓳蓼蔒蓪蓩蔖蓾蔨蔝蔮蔂蓽蔞蓶蔱蔦蓧蓨蓰蓯蓹蔘蔠蔰蔋蔙蔯虢蝖蝣蝤蝷蟡蝳蝘蝔蝛蝒蝡蝚蝑蝞蝭蝪蝐蝎蝟蝝蝯蝬蝺蝮蝜蝥蝏蝻蝵蝢蝧蝩衚褅褌褔褋褗褘褙褆褖褑褎褉覢覤覣觭觰觬諏諆誸諓諑諔諕誻諗誾諀諅諘諃誺誽諙�谾豍貏賥賟賙賨賚賝賧趠趜趡���\".split(\"\");\nfor(j = 0; j != D[202].length; ++j) if(D[202][j].charCodeAt(0) !== 0xFFFD) { e[D[202][j]] = 51712 + j; d[51712 + j] = D[202][j];}\nD[203] = \"������������������������������������������������趛踠踣踥踤踮踕踛踖踑�������踙踦踧踔踒踘踓踜踗踚輬輤輘輚輠輣輖輗遳遰遯遧遫鄯鄫鄩������鄪鄲鄦鄮醅醆醊醁醂醄醀鋐鋃鋄鋀鋙銶鋏鋱鋟鋘鋩鋗鋝鋌鋯������������������鋂鋨鋊鋈鋎鋦鋍鋕鋉鋠鋞鋧鋑鋓銵鋡鋆銴镼閬閫閮閰隤隢雓霅霈霂靚鞊鞎鞈韐韏頞頝頦頩頨頠頛頧颲餈飺餑餔餖餗餕駜駍駏駓駔駎駉駖駘駋駗駌骳髬髫髳髲髱魆魃魧魴魱魦魶魵魰魨魤魬鳼鳺鳽鳿鳷鴇鴀鳹鳻鴈鴅鴄麃黓鼏鼐儜�儓儗儚儑凞匴叡噰噠噮噳噦噣���\".split(\"\");\nfor(j = 0; j != D[203].length; ++j) if(D[203][j].charCodeAt(0) !== 0xFFFD) { e[D[203][j]] = 51968 + j; d[51968 + j] = D[203][j];}\nD[204] = \"������������������������������������������������噭噲噞噷圜圛壈墽壉墿�������墺壂墼壆嬗嬙嬛嬡嬔嬓嬐嬖嬨嬚嬠嬞寯嶬嶱嶩嶧嶵嶰嶮嶪嶨������嶲嶭嶯嶴幧幨幦幯廩廧廦廨廥彋徼憝憨憖懅憴懆懁懌憺憿憸������������������憌擗擖擐擏擉撽撉擃擛擳擙攳敿敼斢曈暾曀曊曋曏暽暻暺曌朣樴橦橉橧樲橨樾橝橭橶橛橑樨橚樻樿橁橪橤橐橏橔橯橩橠樼橞橖橕橍橎橆歕歔歖殧殪殫毈毇氄氃氆澭濋澣濇澼濎濈潞濄澽澞濊澨瀄澥澮澺澬澪濏澿澸澢濉澫濍澯澲�澰燅燂熿熸燖燀燁燋燔燊燇燏���\".split(\"\");\nfor(j = 0; j != D[204].length; ++j) if(D[204][j].charCodeAt(0) !== 0xFFFD) { e[D[204][j]] = 52224 + j; d[52224 + j] = D[204][j];}\nD[205] = \"������������������������������������������������熽燘熼燆燚燛犝犞獩獦�������獧獬獥獫獪瑿璚璠璔璒璕璡甋疀瘯瘭瘱瘽瘳瘼瘵瘲瘰皻盦瞚������瞝瞡瞜瞛瞢瞣瞕瞙瞗磝磩磥磪磞磣磛磡磢磭磟磠禤穄穈穇窶������������������窸窵窱窷篞篣篧篝篕篥篚篨篹篔篪篢篜篫篘篟糒糔糗糐糑縒縡縗縌縟縠縓縎縜縕縚縢縋縏縖縍縔縥縤罃罻罼罺羱翯耪耩聬膱膦膮膹膵膫膰膬膴膲膷膧臲艕艖艗蕖蕅蕫蕍蕓蕡蕘蕀蕆蕤蕁蕢蕄蕑蕇蕣蔾蕛蕱蕎蕮蕵蕕蕧蕠薌蕦蕝蕔�蕥蕬虣虥虤螛螏螗螓螒螈螁螖���\".split(\"\");\nfor(j = 0; j != D[205].length; ++j) if(D[205][j].charCodeAt(0) !== 0xFFFD) { e[D[205][j]] = 52480 + j; d[52480 + j] = D[205][j];}\nD[206] = \"������������������������������������������������螘蝹螇螣螅螐螑螝螄螔�������螜螚螉褞褦褰褭褮褧褱褢褩褣褯褬褟觱諠諢諲諴諵諝謔諤諟������諰諈諞諡諨諿諯諻貑貒貐賵賮賱賰賳赬赮趥趧踳踾踸蹀蹅踶������������������踼踽蹁踰踿躽輶輮輵輲輹輷輴遶遹遻邆郺鄳鄵鄶醓醐醑醍醏錧錞錈錟錆錏鍺錸錼錛錣錒錁鍆錭錎錍鋋錝鋺錥錓鋹鋷錴錂錤鋿錩錹錵錪錔錌錋鋾錉錀鋻錖閼闍閾閹閺閶閿閵閽隩雔霋霒霐鞙鞗鞔韰韸頵頯頲餤餟餧餩馞駮駬駥駤駰�駣駪駩駧骹骿骴骻髶髺髹髷鬳���\".split(\"\");\nfor(j = 0; j != D[206].length; ++j) if(D[206][j].charCodeAt(0) !== 0xFFFD) { e[D[206][j]] = 52736 + j; d[52736 + j] = D[206][j];}\nD[207] = \"������������������������������������������������鮀鮅鮇魼魾魻鮂鮓鮒鮐�������魺鮕魽鮈鴥鴗鴠鴞鴔鴩鴝鴘鴢鴐鴙鴟麈麆麇麮麭黕黖黺鼒鼽������儦儥儢儤儠儩勴嚓嚌嚍嚆嚄嚃噾嚂噿嚁壖壔壏壒嬭嬥嬲嬣嬬������������������嬧嬦嬯嬮孻寱寲嶷幬幪徾徻懃憵憼懧懠懥懤懨懞擯擩擣擫擤擨斁斀斶旚曒檍檖檁檥檉檟檛檡檞檇檓檎檕檃檨檤檑橿檦檚檅檌檒歛殭氉濌澩濴濔濣濜濭濧濦濞濲濝濢濨燡燱燨燲燤燰燢獳獮獯璗璲璫璐璪璭璱璥璯甐甑甒甏疄癃癈�癉癇皤盩瞵瞫瞲瞷瞶瞴瞱瞨矰���\".split(\"\");\nfor(j = 0; j != D[207].length; ++j) if(D[207][j].charCodeAt(0) !== 0xFFFD) { e[D[207][j]] = 52992 + j; d[52992 + j] = D[207][j];}\nD[208] = \"������������������������������������������������磳磽礂磻磼磲礅磹磾礄�������禫禨穜穛穖穘穔穚窾竀竁簅簏篲簀篿篻簎篴簋篳簂簉簃簁篸������篽簆篰篱簐簊糨縭縼繂縳顈縸縪繉繀繇縩繌縰縻縶繄縺罅罿������������������罾罽翴翲耬膻臄臌臊臅臇膼臩艛艚艜薃薀薏薧薕薠薋薣蕻薤薚薞蕷蕼薉薡蕺蕸蕗薎薖薆薍薙薝薁薢薂薈薅蕹蕶薘薐薟虨螾螪螭蟅螰螬螹螵螼螮蟉蟃蟂蟌螷螯蟄蟊螴螶螿螸螽蟞螲褵褳褼褾襁襒褷襂覭覯覮觲觳謞謘謖謑謅謋謢謏�謒謕謇謍謈謆謜謓謚豏豰豲豱���\".split(\"\");\nfor(j = 0; j != D[208].length; ++j) if(D[208][j].charCodeAt(0) !== 0xFFFD) { e[D[208][j]] = 53248 + j; d[53248 + j] = D[208][j];}\nD[209] = \"������������������������������������������������豯貕貔賹赯蹎蹍蹓蹐蹌�������蹇轃轀邅遾鄸醚醢醛醙醟醡醝醠鎡鎃鎯鍤鍖鍇鍼鍘鍜鍶鍉鍐������鍑鍠鍭鎏鍌鍪鍹鍗鍕鍒鍏鍱鍷鍻鍡鍞鍣鍧鎀鍎鍙闇闀闉闃闅������������������閷隮隰隬霠霟霘霝霙鞚鞡鞜鞞鞝韕韔韱顁顄顊顉顅顃餥餫餬餪餳餲餯餭餱餰馘馣馡騂駺駴駷駹駸駶駻駽駾駼騃骾髾髽鬁髼魈鮚鮨鮞鮛鮦鮡鮥鮤鮆鮢鮠鮯鴳鵁鵧鴶鴮鴯鴱鴸鴰鵅鵂鵃鴾鴷鵀鴽翵鴭麊麉麍麰黈黚黻黿鼤鼣鼢齔龠儱�儭儮嚘嚜嚗嚚嚝嚙奰嬼屩屪巀���\".split(\"\");\nfor(j = 0; j != D[209].length; ++j) if(D[209][j].charCodeAt(0) !== 0xFFFD) { e[D[209][j]] = 53504 + j; d[53504 + j] = D[209][j];}\nD[210] = \"������������������������������������������������幭幮懘懟懭懮懱懪懰懫�������懖懩擿攄擽擸攁攃擼斔旛曚曛曘櫅檹檽櫡櫆檺檶檷櫇檴檭歞������毉氋瀇瀌瀍瀁瀅瀔瀎濿瀀濻瀦濼濷瀊爁燿燹爃燽獶璸瓀璵瓁������������������璾璶璻瓂甔甓癜癤癙癐癓癗癚皦皽盬矂瞺磿礌礓礔礉礐礒礑禭禬穟簜簩簙簠簟簭簝簦簨簢簥簰繜繐繖繣繘繢繟繑繠繗繓羵羳翷翸聵臑臒臐艟艞薴藆藀藃藂薳薵薽藇藄薿藋藎藈藅薱薶藒蘤薸薷薾虩蟧蟦蟢蟛蟫蟪蟥蟟蟳蟤蟔蟜蟓�蟭蟘蟣螤蟗蟙蠁蟴蟨蟝襓襋襏���\".split(\"\");\nfor(j = 0; j != D[210].length; ++j) if(D[210][j].charCodeAt(0) !== 0xFFFD) { e[D[210][j]] = 53760 + j; d[53760 + j] = D[210][j];}\nD[211] = \"������������������������������������������������襌襆襐襑襉謪謧謣謳謰�������謵譇謯謼謾謱謥謷謦謶謮謤謻謽謺豂豵貙貘貗賾贄贂贀蹜蹢������蹠蹗蹖蹞蹥蹧蹛蹚蹡蹝蹩蹔轆轇轈轋鄨鄺鄻鄾醨醥醧醯醪鎵������������������鎌鎒鎷鎛鎝鎉鎧鎎鎪鎞鎦鎕鎈鎙鎟鎍鎱鎑鎲鎤鎨鎴鎣鎥闒闓闑隳雗雚巂雟雘雝霣霢霥鞬鞮鞨鞫鞤鞪鞢鞥韗韙韖韘韺顐顑顒颸饁餼餺騏騋騉騍騄騑騊騅騇騆髀髜鬈鬄鬅鬩鬵魊魌魋鯇鯆鯃鮿鯁鮵鮸鯓鮶鯄鮹鮽鵜鵓鵏鵊鵛鵋鵙鵖鵌�鵗鵒鵔鵟鵘鵚麎麌黟鼁鼀鼖鼥���\".split(\"\");\nfor(j = 0; j != D[211].length; ++j) if(D[211][j].charCodeAt(0) !== 0xFFFD) { e[D[211][j]] = 54016 + j; d[54016 + j] = D[211][j];}\nD[212] = \"������������������������������������������������鼫鼪鼩鼨齌齕儴儵劖勷�������厴嚫嚭嚦嚧嚪嚬壚壝壛夒嬽嬾嬿巃幰徿懻攇攐攍攉攌攎斄旞������旝曞櫧櫠櫌櫑櫙櫋櫟櫜櫐櫫櫏櫍櫞歠殰氌瀙瀧瀠瀖瀫瀡瀢瀣������������������瀩瀗瀤瀜瀪爌爊爇爂爅犥犦犤犣犡瓋瓅璷瓃甖癠矉矊矄矱礝礛礡礜礗礞禰穧穨簳簼簹簬簻糬糪繶繵繸繰繷繯繺繲繴繨罋罊羃羆羷翽翾聸臗臕艤艡艣藫藱藭藙藡藨藚藗藬藲藸藘藟藣藜藑藰藦藯藞藢蠀蟺蠃蟶蟷蠉蠌蠋蠆蟼蠈蟿蠊�蠂襢襚襛襗襡襜襘襝襙覈覷覶���\".split(\"\");\nfor(j = 0; j != D[212].length; ++j) if(D[212][j].charCodeAt(0) !== 0xFFFD) { e[D[212][j]] = 54272 + j; d[54272 + j] = D[212][j];}\nD[213] = \"������������������������������������������������觶譐譈譊譀譓譖譔譋譕�������譑譂譒譗豃豷豶貚贆贇贉趬趪趭趫蹭蹸蹳蹪蹯蹻軂轒轑轏轐������轓辴酀鄿醰醭鏞鏇鏏鏂鏚鏐鏹鏬鏌鏙鎩鏦鏊鏔鏮鏣鏕鏄鏎鏀������������������鏒鏧镽闚闛雡霩霫霬霨霦鞳鞷鞶韝韞韟顜顙顝顗颿颽颻颾饈饇饃馦馧騚騕騥騝騤騛騢騠騧騣騞騜騔髂鬋鬊鬎鬌鬷鯪鯫鯠鯞鯤鯦鯢鯰鯔鯗鯬鯜鯙鯥鯕鯡鯚鵷鶁鶊鶄鶈鵱鶀鵸鶆鶋鶌鵽鵫鵴鵵鵰鵩鶅鵳鵻鶂鵯鵹鵿鶇鵨麔麑黀黼鼭齀�齁齍齖齗齘匷嚲嚵嚳壣孅巆巇���\".split(\"\");\nfor(j = 0; j != D[213].length; ++j) if(D[213][j].charCodeAt(0) !== 0xFFFD) { e[D[213][j]] = 54528 + j; d[54528 + j] = D[213][j];}\nD[214] = \"������������������������������������������������廮廯忀忁懹攗攖攕攓旟�������曨曣曤櫳櫰櫪櫨櫹櫱櫮櫯瀼瀵瀯瀷瀴瀱灂瀸瀿瀺瀹灀瀻瀳灁������爓爔犨獽獼璺皫皪皾盭矌矎矏矍矲礥礣礧礨礤礩禲穮穬穭竷������������������籉籈籊籇籅糮繻繾纁纀羺翿聹臛臙舋艨艩蘢藿蘁藾蘛蘀藶蘄蘉蘅蘌藽蠙蠐蠑蠗蠓蠖襣襦覹觷譠譪譝譨譣譥譧譭趮躆躈躄轙轖轗轕轘轚邍酃酁醷醵醲醳鐋鐓鏻鐠鐏鐔鏾鐕鐐鐨鐙鐍鏵鐀鏷鐇鐎鐖鐒鏺鐉鏸鐊鏿鏼鐌鏶鐑鐆闞闠闟霮�霯鞹鞻韽韾顠顢顣顟飁飂饐饎���\".split(\"\");\nfor(j = 0; j != D[214].length; ++j) if(D[214][j].charCodeAt(0) !== 0xFFFD) { e[D[214][j]] = 54784 + j; d[54784 + j] = D[214][j];}\nD[215] = \"������������������������������������������������饙饌饋饓騲騴騱騬騪騶�������騩騮騸騭髇髊髆鬐鬒鬑鰋鰈鯷鰅鰒鯸鱀鰇鰎鰆鰗鰔鰉鶟鶙鶤������鶝鶒鶘鶐鶛鶠鶔鶜鶪鶗鶡鶚鶢鶨鶞鶣鶿鶩鶖鶦鶧麙麛麚黥黤������������������黧黦鼰鼮齛齠齞齝齙龑儺儹劘劗囃嚽嚾孈孇巋巏廱懽攛欂櫼欃櫸欀灃灄灊灈灉灅灆爝爚爙獾甗癪矐礭礱礯籔籓糲纊纇纈纋纆纍罍羻耰臝蘘蘪蘦蘟蘣蘜蘙蘧蘮蘡蘠蘩蘞蘥蠩蠝蠛蠠蠤蠜蠫衊襭襩襮襫觺譹譸譅譺譻贐贔趯躎躌轞轛�轝酆酄酅醹鐿鐻鐶鐩鐽鐼鐰鐹���\".split(\"\");\nfor(j = 0; j != D[215].length; ++j) if(D[215][j].charCodeAt(0) !== 0xFFFD) { e[D[215][j]] = 55040 + j; d[55040 + j] = D[215][j];}\nD[216] = \"������������������������������������������������鐪鐷鐬鑀鐱闥闤闣霵霺�������鞿韡顤飉飆飀饘饖騹騽驆驄驂驁騺騿髍鬕鬗鬘鬖鬺魒鰫鰝鰜������鰬鰣鰨鰩鰤鰡鶷鶶鶼鷁鷇鷊鷏鶾鷅鷃鶻鶵鷎鶹鶺鶬鷈鶱鶭鷌������������������鶳鷍鶲鹺麜黫黮黭鼛鼘鼚鼱齎齥齤龒亹囆囅囋奱孋孌巕巑廲攡攠攦攢欋欈欉氍灕灖灗灒爞爟犩獿瓘瓕瓙瓗癭皭礵禴穰穱籗籜籙籛籚糴糱纑罏羇臞艫蘴蘵蘳蘬蘲蘶蠬蠨蠦蠪蠥襱覿覾觻譾讄讂讆讅譿贕躕躔躚躒躐躖躗轠轢酇鑌鑐�鑊鑋鑏鑇鑅鑈鑉鑆霿韣顪顩飋���\".split(\"\");\nfor(j = 0; j != D[216].length; ++j) if(D[216][j].charCodeAt(0) !== 0xFFFD) { e[D[216][j]] = 55296 + j; d[55296 + j] = D[216][j];}\nD[217] = \"������������������������������������������������饔饛驎驓驔驌驏驈驊驉�������驒驐髐鬙鬫鬻魖魕鱆鱈鰿鱄鰹鰳鱁鰼鰷鰴鰲鰽鰶鷛鷒鷞鷚鷋������鷐鷜鷑鷟鷩鷙鷘鷖鷵鷕鷝麶黰鼵鼳鼲齂齫龕龢儽劙壨壧奲孍������������������巘蠯彏戁戃戄攩攥斖曫欑欒欏毊灛灚爢玂玁玃癰矔籧籦纕艬蘺虀蘹蘼蘱蘻蘾蠰蠲蠮蠳襶襴襳觾讌讎讋讈豅贙躘轤轣醼鑢鑕鑝鑗鑞韄韅頀驖驙鬞鬟鬠鱒鱘鱐鱊鱍鱋鱕鱙鱌鱎鷻鷷鷯鷣鷫鷸鷤鷶鷡鷮鷦鷲鷰鷢鷬鷴鷳鷨鷭黂黐黲黳鼆�鼜鼸鼷鼶齃齏齱齰齮齯囓囍孎���\".split(\"\");\nfor(j = 0; j != D[217].length; ++j) if(D[217][j].charCodeAt(0) !== 0xFFFD) { e[D[217][j]] = 55552 + j; d[55552 + j] = D[217][j];}\nD[218] = \"������������������������������������������������屭攭曭曮欓灟灡灝灠爣�������瓛瓥矕礸禷禶籪纗羉艭虃蠸蠷蠵衋讔讕躞躟躠躝醾醽釂鑫鑨������鑩雥靆靃靇韇韥驞髕魙鱣鱧鱦鱢鱞鱠鸂鷾鸇鸃鸆鸅鸀鸁鸉鷿������������������鷽鸄麠鼞齆齴齵齶囔攮斸欘欙欗欚灢爦犪矘矙礹籩籫糶纚纘纛纙臠臡虆虇虈襹襺襼襻觿讘讙躥躤躣鑮鑭鑯鑱鑳靉顲饟鱨鱮鱭鸋鸍鸐鸏鸒鸑麡黵鼉齇齸齻齺齹圞灦籯蠼趲躦釃鑴鑸鑶鑵驠鱴鱳鱱鱵鸔鸓黶鼊龤灨灥糷虪蠾蠽蠿讞貜�躩軉靋顳顴飌饡馫驤驦驧鬤鸕���\".split(\"\");\nfor(j = 0; j != D[218].length; ++j) if(D[218][j].charCodeAt(0) !== 0xFFFD) { e[D[218][j]] = 55808 + j; d[55808 + j] = D[218][j];}\nD[219] = \"������������������������������������������������鸗齈戇欞爧虌躨钂钀钁�������驩驨鬮鸙爩虋讟钃鱹麷癵驫鱺鸝灩灪麤齾齉龘����������������������������\".split(\"\");\nfor(j = 0; j != D[219].length; ++j) if(D[219][j].charCodeAt(0) !== 0xFFFD) { e[D[219][j]] = 56064 + j; d[56064 + j] = D[219][j];}\nD[220] = \"�����������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[220].length; ++j) if(D[220][j].charCodeAt(0) !== 0xFFFD) { e[D[220][j]] = 56320 + j; d[56320 + j] = D[220][j];}\nD[221] = \"�����������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[221].length; ++j) if(D[221][j].charCodeAt(0) !== 0xFFFD) { e[D[221][j]] = 56576 + j; d[56576 + j] = D[221][j];}\nD[222] = \"�����������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[222].length; ++j) if(D[222][j].charCodeAt(0) !== 0xFFFD) { e[D[222][j]] = 56832 + j; d[56832 + j] = D[222][j];}\nD[223] = \"�����������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[223].length; ++j) if(D[223][j].charCodeAt(0) !== 0xFFFD) { e[D[223][j]] = 57088 + j; d[57088 + j] = D[223][j];}\nD[224] = \"�����������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[224].length; ++j) if(D[224][j].charCodeAt(0) !== 0xFFFD) { e[D[224][j]] = 57344 + j; d[57344 + j] = D[224][j];}\nD[225] = \"�����������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[225].length; ++j) if(D[225][j].charCodeAt(0) !== 0xFFFD) { e[D[225][j]] = 57600 + j; d[57600 + j] = D[225][j];}\nD[226] = \"�����������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[226].length; ++j) if(D[226][j].charCodeAt(0) !== 0xFFFD) { e[D[226][j]] = 57856 + j; d[57856 + j] = D[226][j];}\nD[227] = \"�����������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[227].length; ++j) if(D[227][j].charCodeAt(0) !== 0xFFFD) { e[D[227][j]] = 58112 + j; d[58112 + j] = D[227][j];}\nD[228] = \"�����������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[228].length; ++j) if(D[228][j].charCodeAt(0) !== 0xFFFD) { e[D[228][j]] = 58368 + j; d[58368 + j] = D[228][j];}\nD[229] = \"�����������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[229].length; ++j) if(D[229][j].charCodeAt(0) !== 0xFFFD) { e[D[229][j]] = 58624 + j; d[58624 + j] = D[229][j];}\nD[230] = \"�����������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[230].length; ++j) if(D[230][j].charCodeAt(0) !== 0xFFFD) { e[D[230][j]] = 58880 + j; d[58880 + j] = D[230][j];}\nD[231] = \"�����������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[231].length; ++j) if(D[231][j].charCodeAt(0) !== 0xFFFD) { e[D[231][j]] = 59136 + j; d[59136 + j] = D[231][j];}\nD[232] = \"�����������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[232].length; ++j) if(D[232][j].charCodeAt(0) !== 0xFFFD) { e[D[232][j]] = 59392 + j; d[59392 + j] = D[232][j];}\nD[233] = \"�����������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[233].length; ++j) if(D[233][j].charCodeAt(0) !== 0xFFFD) { e[D[233][j]] = 59648 + j; d[59648 + j] = D[233][j];}\nD[234] = \"�����������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[234].length; ++j) if(D[234][j].charCodeAt(0) !== 0xFFFD) { e[D[234][j]] = 59904 + j; d[59904 + j] = D[234][j];}\nD[235] = \"�����������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[235].length; ++j) if(D[235][j].charCodeAt(0) !== 0xFFFD) { e[D[235][j]] = 60160 + j; d[60160 + j] = D[235][j];}\nD[236] = \"�����������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[236].length; ++j) if(D[236][j].charCodeAt(0) !== 0xFFFD) { e[D[236][j]] = 60416 + j; d[60416 + j] = D[236][j];}\nD[237] = \"�����������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[237].length; ++j) if(D[237][j].charCodeAt(0) !== 0xFFFD) { e[D[237][j]] = 60672 + j; d[60672 + j] = D[237][j];}\nD[238] = \"�����������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[238].length; ++j) if(D[238][j].charCodeAt(0) !== 0xFFFD) { e[D[238][j]] = 60928 + j; d[60928 + j] = D[238][j];}\nD[239] = \"�����������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[239].length; ++j) if(D[239][j].charCodeAt(0) !== 0xFFFD) { e[D[239][j]] = 61184 + j; d[61184 + j] = D[239][j];}\nD[240] = \"�����������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[240].length; ++j) if(D[240][j].charCodeAt(0) !== 0xFFFD) { e[D[240][j]] = 61440 + j; d[61440 + j] = D[240][j];}\nD[241] = \"�����������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[241].length; ++j) if(D[241][j].charCodeAt(0) !== 0xFFFD) { e[D[241][j]] = 61696 + j; d[61696 + j] = D[241][j];}\nD[242] = \"�����������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[242].length; ++j) if(D[242][j].charCodeAt(0) !== 0xFFFD) { e[D[242][j]] = 61952 + j; d[61952 + j] = D[242][j];}\nD[243] = \"�����������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[243].length; ++j) if(D[243][j].charCodeAt(0) !== 0xFFFD) { e[D[243][j]] = 62208 + j; d[62208 + j] = D[243][j];}\nD[244] = \"�����������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[244].length; ++j) if(D[244][j].charCodeAt(0) !== 0xFFFD) { e[D[244][j]] = 62464 + j; d[62464 + j] = D[244][j];}\nD[245] = \"������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[245].length; ++j) if(D[245][j].charCodeAt(0) !== 0xFFFD) { e[D[245][j]] = 62720 + j; d[62720 + j] = D[245][j];}\nD[249] = \"��������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[249].length; ++j) if(D[249][j].charCodeAt(0) !== 0xFFFD) { e[D[249][j]] = 63744 + j; d[63744 + j] = D[249][j];}\nD[250] = \"�����������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[250].length; ++j) if(D[250][j].charCodeAt(0) !== 0xFFFD) { e[D[250][j]] = 64000 + j; d[64000 + j] = D[250][j];}\nD[251] = \"�����������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[251].length; ++j) if(D[251][j].charCodeAt(0) !== 0xFFFD) { e[D[251][j]] = 64256 + j; d[64256 + j] = D[251][j];}\nD[252] = \"������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[252].length; ++j) if(D[252][j].charCodeAt(0) !== 0xFFFD) { e[D[252][j]] = 64512 + j; d[64512 + j] = D[252][j];}\nreturn {\"enc\": e, \"dec\": d }; })();\ncptable[20105] = (function(){ var d = \"��\\u0002\\u0003\\u0004\\u0005\\u0006\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\u0014\\u0015\\u0016\\u0017\\u0018\\u0019\\u001a\\u001b\\u001c\\u001d\\u001e\\u001f !\\\"#¤%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}‾∇��������������������������������������������������������������������������������������������������������������������������������\", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {\"enc\": e, \"dec\": D }; })();\ncptable[20106] = (function(){ var d = \"��\\u0002\\u0003\\u0004\\u0005\\u0006\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\u0014\\u0015\\u0016\\u0017\\u0018\\u0019\\u001a\\u001b\\u001c\\u001d\\u001e\\u001f !\\\"#$%&'()*+,-./0123456789:;<=>?§ABCDEFGHIJKLMNOPQRSTUVWXYZÄÖÜ^_`abcdefghijklmnopqrstuvwxyzäöüß��������������������������������������������������������������������������������������������������������������������������������\", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {\"enc\": e, \"dec\": D }; })();\ncptable[20107] = (function(){ var d = \"��\\u0002\\u0003\\u0004\\u0005\\u0006\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\u0014\\u0015\\u0016\\u0017\\u0018\\u0019\\u001a\\u001b\\u001c\\u001d\\u001e\\u001f !\\\"#¤%&'()*+,-./0123456789:;<=>?ÉABCDEFGHIJKLMNOPQRSTUVWXYZÄÖÅÜ_éabcdefghijklmnopqrstuvwxyzäöåü��������������������������������������������������������������������������������������������������������������������������������\", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {\"enc\": e, \"dec\": D }; })();\ncptable[20108] = (function(){ var d = \"��\\u0002\\u0003\\u0004\\u0005\\u0006\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\u0014\\u0015\\u0016\\u0017\\u0018\\u0019\\u001a\\u001b\\u001c\\u001d\\u001e\\u001f !\\\"§$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZÆØÅ^_`abcdefghijklmnopqrstuvwxyzæøå|��������������������������������������������������������������������������������������������������������������������������������\", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {\"enc\": e, \"dec\": D }; })();\ncptable[20261] = (function(){ var d = [], e = {}, D = [], j;\nD[0] = \"\\u0000\\u0001\\u0002\\u0003\\u0004\\u0005\\u0006\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\u0014\\u0015\\u0016\\u0017\\u0018\\u0019\\u001a\\u001b\\u001c\\u001d\\u001e\\u001f !\\\"��%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[]_abcdefghijklmnopqrstuvwxyz|¡¢£$¥#§¤«°±²³×µ¶·÷»¼½¾¿���������������ΩÆÐªĦĲĿŁØŒºÞŦŊŉĸæđðħıĳŀłøœßþŧŋ\".split(\"\");\nfor(j = 0; j != D[0].length; ++j) if(D[0][j].charCodeAt(0) !== 0xFFFD) { e[D[0][j]] = 0 + j; d[0 + j] = D[0][j];}\nD[193] = \"��������������������������������`��������������������������������À���È���Ì�����Ò�����Ù�Ẁ�Ỳ�������à���è���ì�����ò�����ù�ẁ�ỳ��������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[193].length; ++j) if(D[193][j].charCodeAt(0) !== 0xFFFD) { e[D[193][j]] = 49408 + j; d[49408 + j] = D[193][j];}\nD[194] = \"��������������������������������´��������������������������������Á�Ć�É�Ǵ�Í�ḰĹḾŃÓṔ�ŔŚ�Ú�Ẃ�ÝŹ������á�ć�é�ǵ�í�ḱĺḿńóṕ�ŕś�ú�ẃ�ýź�������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[194].length; ++j) if(D[194][j].charCodeAt(0) !== 0xFFFD) { e[D[194][j]] = 49664 + j; d[49664 + j] = D[194][j];}\nD[195] = \"��������������������������������^��������������������������������Â�Ĉ�Ê�ĜĤÎĴ����Ô���Ŝ�Û�Ŵ�ŶẐ������â�ĉ�ê�ĝĥîĵ����ô���ŝ�û�ŵ�ŷẑ�������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[195].length; ++j) if(D[195][j].charCodeAt(0) !== 0xFFFD) { e[D[195][j]] = 49920 + j; d[49920 + j] = D[195][j];}\nD[196] = \"��������������������������������~��������������������������������Ã���Ẽ���Ĩ����ÑÕ�����ŨṼ��Ỹ�������ã���ẽ���ĩ����ñõ�����ũṽ��ỹ��������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[196].length; ++j) if(D[196][j].charCodeAt(0) !== 0xFFFD) { e[D[196][j]] = 50176 + j; d[50176 + j] = D[196][j];}\nD[197] = \"��������������������������������¯��������������������������������Ā���Ē�Ḡ�Ī�����Ō�����Ū�����������ā���ē�ḡ�ī�����ō�����ū�����������������������������������������������������������������������������������������������������������Ǣ���������������ǣ��������������\".split(\"\");\nfor(j = 0; j != D[197].length; ++j) if(D[197][j].charCodeAt(0) !== 0xFFFD) { e[D[197][j]] = 50432 + j; d[50432 + j] = D[197][j];}\nD[198] = \"��������������������������������˘��������������������������������Ă���Ĕ�Ğ�Ĭ�����Ŏ�����Ŭ�����������ă���ĕ�ğ�ĭ�����ŏ�����ŭ������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[198].length; ++j) if(D[198][j].charCodeAt(0) !== 0xFFFD) { e[D[198][j]] = 50688 + j; d[50688 + j] = D[198][j];}\nD[199] = \"��������������������������������˙���������������������������������ḂĊḊĖḞĠḢİ���ṀṄ�Ṗ�ṘṠṪ��ẆẊẎŻ�������ḃċḋėḟġḣ����ṁṅ�ṗ�ṙṡṫ��ẇẋẏż�������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[199].length; ++j) if(D[199][j].charCodeAt(0) !== 0xFFFD) { e[D[199][j]] = 50944 + j; d[50944 + j] = D[199][j];}\nD[200] = \"��������������������������������¨��������������������������������Ä���Ë��ḦÏ�����Ö�����Ü�ẄẌŸ�������ä���ë��ḧï�����ö����ẗü�ẅẍÿ��������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[200].length; ++j) if(D[200][j].charCodeAt(0) !== 0xFFFD) { e[D[200][j]] = 51200 + j; d[51200 + j] = D[200][j];}\nD[202] = \"��������������������������������˚��������������������������������Å�������������������Ů�����������å�������������������ů�ẘ�ẙ��������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[202].length; ++j) if(D[202][j].charCodeAt(0) !== 0xFFFD) { e[D[202][j]] = 51712 + j; d[51712 + j] = D[202][j];}\nD[203] = \"��������������������������������¸����������������������������������ÇḐ��ĢḨ��ĶĻ�Ņ���ŖŞŢ��������������çḑ��ģḩ��ķļ�ņ���ŗşţ�������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[203].length; ++j) if(D[203][j].charCodeAt(0) !== 0xFFFD) { e[D[203][j]] = 51968 + j; d[51968 + j] = D[203][j];}\nD[205] = \"��������������������������������˝����������������������������������������������Ő�����Ű�������������������������ő�����ű������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[205].length; ++j) if(D[205][j].charCodeAt(0) !== 0xFFFD) { e[D[205][j]] = 52480 + j; d[52480 + j] = D[205][j];}\nD[206] = \"��������������������������������˛��������������������������������Ą���Ę���Į�����Ǫ�����Ų�����������ą���ę���į�����ǫ�����ų������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[206].length; ++j) if(D[206][j].charCodeAt(0) !== 0xFFFD) { e[D[206][j]] = 52736 + j; d[52736 + j] = D[206][j];}\nD[207] = \"��������������������������������ˇ��������������������������������Ǎ�ČĎĚ�Ǧ�Ǐ�ǨĽ�ŇǑ��ŘŠŤǓ����Ž������ǎ�čďě�ǧ�ǐǰǩľ�ňǒ��řšťǔ����ž�������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[207].length; ++j) if(D[207][j].charCodeAt(0) !== 0xFFFD) { e[D[207][j]] = 52992 + j; d[52992 + j] = D[207][j];}\nreturn {\"enc\": e, \"dec\": d }; })();\ncptable[20269] = (function(){ var d = \"\\u0002\\u0003\\u0004\\u0005\\u0006\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\u0014\\u0015\\u0016\\u0017\\u0018\\u0019\\u001a\\u001b\\u001c\\u001d\\u001e\\u001f !\\\"��%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]�_�abcdefghijklmnopqrstuvwxyz{|}��� ¡¢£$¥#§¤‘“«←↑→↓°±²³×µ¶·÷’”»¼½¿�`´^~¯̆̈�̧̨̲̊̋̌―¹®©™♩��⅛⅜⅝⅞ΩÆÐĦ�ĲĿŁØŒºÞŦŊŉĸæđðħıĳŀłøœßþŧ\", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {\"enc\": e, \"dec\": D }; })();\ncptable[20273] = (function(){ var d = \"\\u0002\\u0003\\t\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\b\\u0018\\u0019\\u001c\\u001d\\u001e\\u001f\\n\\u0017\\u001b\\u0005\\u0006\\u0007\\u0016\\u0004\\u0014\\u0015\\u001a  â{àáãåçñÄ.<(+!&éêëèíîïì~Ü$*);^-/Â[ÀÁÃÅÇÑö,%_>?øÉÊËÈÍÎÏÌ`:#§'=\\\"Øabcdefghi«»ðýþ±°jklmnopqrªºæ¸Æ¤µßstuvwxyz¡¿ÐÝÞ®¢£¥·©@¶¼½¾¬|¯¨´×äABCDEFGHI­ô¦òóõüJKLMNOPQR¹û}ùúÿÖ÷STUVWXYZ²Ô\\\\ÒÓÕ0123456789³Û]ÙÚ\", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {\"enc\": e, \"dec\": D }; })();\ncptable[20277] = (function(){ var d = \"\\u0002\\u0003\\t\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\b\\u0018\\u0019\\u001c\\u001d\\u001e\\u001f\\n\\u0017\\u001b\\u0005\\u0006\\u0007\\u0016\\u0004\\u0014\\u0015\\u001a  âäàáã}çñ#.<(+!&éêëèíîïìß¤Å*);^-/ÂÄÀÁÃ$ÇÑø,%_>?¦ÉÊËÈÍÎÏÌ`:ÆØ'=\\\"@abcdefghi«»ðýþ±°jklmnopqrªº{¸[]µüstuvwxyz¡¿ÐÝÞ®¢£¥·©§¶¼½¾¬|¯¨´×æABCDEFGHI­ôöòóõåJKLMNOPQR¹û~ùúÿ\\\\÷STUVWXYZ²ÔÖÒÓÕ0123456789³ÛÜÙÚ\", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {\"enc\": e, \"dec\": D }; })();\ncptable[20278] = (function(){ var d = \"\\u0002\\u0003\\t\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\b\\u0018\\u0019\\u001c\\u001d\\u001e\\u001f\\n\\u0017\\u001b\\u0005\\u0006\\u0007\\u0016\\u0004\\u0014\\u0015\\u001a  â{àáã}çñ§.<(+!&`êëèíîïìß¤Å*);^-/Â#ÀÁÃ$ÇÑö,%_>?ø\\\\ÊËÈÍÎÏÌé:ÄÖ'=\\\"Øabcdefghi«»ðýþ±°jklmnopqrªºæ¸Æ]µüstuvwxyz¡¿ÐÝÞ®¢£¥·©[¶¼½¾¬|¯¨´×äABCDEFGHI­ô¦òóõåJKLMNOPQR¹û~ùúÿÉ÷STUVWXYZ²Ô@ÒÓÕ0123456789³ÛÜÙÚ\", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {\"enc\": e, \"dec\": D }; })();\ncptable[20280] = (function(){ var d = \"\\u0002\\u0003\\t\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\b\\u0018\\u0019\\u001c\\u001d\\u001e\\u001f\\n\\u0017\\u001b\\u0005\\u0006\\u0007\\u0016\\u0004\\u0014\\u0015\\u001a  âä{áãå\\\\ñ°.<(+!&]êë}íîï~ßé$*);^-/ÂÄÀÁÃÅÇÑò,%_>?øÉÊËÈÍÎÏÌù:£§'=\\\"Øabcdefghi«»ðýþ±[jklmnopqrªºæ¸Æ¤µìstuvwxyz¡¿ÐÝÞ®¢#¥·©@¶¼½¾¬|¯¨´×àABCDEFGHI­ôö¦óõèJKLMNOPQR¹ûü`úÿç÷STUVWXYZ²ÔÖÒÓÕ0123456789³ÛÜÙÚ\", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {\"enc\": e, \"dec\": D }; })();\ncptable[20284] = (function(){ var d = \"\\u0002\\u0003\\t\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\b\\u0018\\u0019\\u001c\\u001d\\u001e\\u001f\\n\\u0017\\u001b\\u0005\\u0006\\u0007\\u0016\\u0004\\u0014\\u0015\\u001a  âäàáãåç¦[.<(+|&éêëèíîïìß]$*);¬-/ÂÄÀÁÃÅÇ#ñ,%_>?øÉÊËÈÍÎÏÌ`:Ñ@'=\\\"Øabcdefghi«»ðýþ±°jklmnopqrªºæ¸Æ¤µ¨stuvwxyz¡¿ÐÝÞ®¢£¥·©§¶¼½¾^!¯~´×{ABCDEFGHI­ôöòóõ}JKLMNOPQR¹ûüùúÿ\\\\÷STUVWXYZ²ÔÖÒÓÕ0123456789³ÛÜÙÚ\", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {\"enc\": e, \"dec\": D }; })();\ncptable[20285] = (function(){ var d = \"\\u0002\\u0003\\t\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\b\\u0018\\u0019\\u001c\\u001d\\u001e\\u001f\\n\\u0017\\u001b\\u0005\\u0006\\u0007\\u0016\\u0004\\u0014\\u0015\\u001a  âäàáãåçñ$.<(+|&éêëèíîïìß!£*);¬-/ÂÄÀÁÃÅÇÑ¦,%_>?øÉÊËÈÍÎÏÌ`:#@'=\\\"Øabcdefghi«»ðýþ±°jklmnopqrªºæ¸Æ¤µ¯stuvwxyz¡¿ÐÝÞ®¢[¥·©§¶¼½¾^]~¨´×{ABCDEFGHI­ôöòóõ}JKLMNOPQR¹ûüùúÿ\\\\÷STUVWXYZ²ÔÖÒÓÕ0123456789³ÛÜÙÚ\", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {\"enc\": e, \"dec\": D }; })();\ncptable[20290] = (function(){ var d = \"\\u0002\\u0003\\t\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\b\\u0018\\u0019\\u001c\\u001d\\u001e\\u001f\\n\\u0017\\u001b\\u0005\\u0006\\u0007\\u0016\\u0004\\u0014\\u0015\\u001a ｡｢｣､･ｦｧｨｩ£.<(+|&ｪｫｬｭｮｯ�ｰ�!¥*);¬-/abcdefgh�,%_>?[ijklmnop`:#@'=\\\"]ｱｲｳｴｵｶｷｸｹｺqｻｼｽｾｿﾀﾁﾂﾃﾄﾅﾆﾇﾈﾉr�ﾊﾋﾌ~‾ﾍﾎﾏﾐﾑﾒﾓﾔﾕsﾖﾗﾘﾙ^¢\\\\tuvwxyzﾚﾛﾜﾝﾞﾟ{ABCDEFGHI������}JKLMNOPQR������$�STUVWXYZ������0123456789�����\", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {\"enc\": e, \"dec\": D }; })();\ncptable[20297] = (function(){ var d = \"\\u0002\\u0003\\t\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\b\\u0018\\u0019\\u001c\\u001d\\u001e\\u001f\\n\\u0017\\u001b\\u0005\\u0006\\u0007\\u0016\\u0004\\u0014\\u0015\\u001a  âä@áãå\\\\ñ°.<(+!&{êë}íîïìß§$*);^-/ÂÄÀÁÃÅÇÑù,%_>?øÉÊËÈÍÎÏÌµ:£à'=\\\"Øabcdefghi«»ðýþ±[jklmnopqrªºæ¸Æ¤`¨stuvwxyz¡¿ÐÝÞ®¢#¥·©]¶¼½¾¬|¯~´×éABCDEFGHI­ôöòóõèJKLMNOPQR¹ûü¦úÿç÷STUVWXYZ²ÔÖÒÓÕ0123456789³ÛÜÙÚ\", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {\"enc\": e, \"dec\": D }; })();\ncptable[20420] = (function(){ var d = \"\\u0002\\u0003\\t\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\b\\u0018\\u0019\\u001c\\u001d\\u001e\\u001f\\n\\u0017\\u001b\\u0005\\u0006\\u0007\\u0016\\u0004\\u0014\\u0015\\u001a  ﹼﹽـﺀﺁﺂﺃ¢.<(+|&ﺄﺅ��ﺋﺍﺎﺏﺑ!$*);¬-/ﺓﺕﺗﺙﺛﺝﺟﺡ¦,%_>?ﺣﺥﺧﺩﺫﺭﺯﺳ،:#@'=\\\"abcdefghiﺷﺻﺿﻃﻇjklmnopqrﻉﻊﻋﻌﻍﻎﻏ÷stuvwxyzﻐﻑﻓﻕﻗﻙﻛﻝﻵﻶﻷﻸ��ﻻﻼﻟﻡﻣﻥﻧﻩ؛ABCDEFGHI­ﻫ�ﻬ�ﻭ؟JKLMNOPQRﻯﻰﻱﻲﻳ٠× STUVWXYZ١٢�٣٤٥0123456789�٦٧٨٩\", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {\"enc\": e, \"dec\": D }; })();\ncptable[20423] = (function(){ var d = \"\\u0002\\u0003\\t\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\b\\u0018\\u0019\\u001c\\u001d\\u001e\\u001f\\n\\u0017\\u001b\\u0005\\u0006\\u0007\\u0016\\u0004\\u0014\\u0015\\u001a ΑΒΓΔΕΖΗΘΙ[.<(+!&ΚΛΜΝΞΟΠΡΣ]$*);^-/ΤΥΦΧΨΩ��|,%_>?�ΆΈΉ ΊΌΎΏ`:£§'=\\\"ÄabcdefghiαβγδεζÖjklmnopqrηθικλμÜ¨stuvwxyzνξοπρσ�άέήϊίόύϋώςτυφχψ¸ABCDEFGHI­ωâàäê´JKLMNOPQR±éèëîï°�STUVWXYZ½öôûùü0123456789ÿçÇ��\", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {\"enc\": e, \"dec\": D }; })();\ncptable[20424] = (function(){ var d = \"\\u0002\\u0003\\t\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\b\\u0018\\u0019\\u001c\\u001d\\u001e\\u001f\\n\\u0017\\u001b\\u0005\\u0006\\u0007\\u0016\\u0004\\u0014\\u0015\\u001a אבגדהוזחט¢.<(+|&יךכלםמןנס!$*);¬-/עףפץצקרש¦,%_>?�ת�� ���‗`:#@'=\\\"�abcdefghi«»���±°jklmnopqr���¸�¤µ~stuvwxyz�����®^£¥•©§¶¼½¾[]‾¨´×{ABCDEFGHI­�����}JKLMNOPQR¹�����\\\\÷STUVWXYZ²�����0123456789³����\", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {\"enc\": e, \"dec\": D }; })();\ncptable[20833] = (function(){ var d = \"\\u0002\\u0003\\t\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\b\\u0018\\u0019\\u001c\\u001d\\u001e\\u001f\\n\\u0017\\u001b\\u0005\\u0006\\u0007\\u0016\\u0004\\u0014\\u0015\\u001a �ﾠﾡﾢﾣﾤﾥﾦﾧ¢.<(+|&�ﾨﾩﾪﾫﾬﾭﾮﾯ!$*);¬-/ﾰﾱﾲﾳﾴﾵﾶﾷ¦,%_>?[�ﾸﾹﾺﾻﾼﾽﾾ`:#@'=\\\"]abcdefghiￂￃￄￅￆￇ�jklmnopqrￊￋￌￍￎￏ‾~stuvwxyzￒￓￔￕￖￗ^�\\\\�������ￚￛￜ���{ABCDEFGHI������}JKLMNOPQR������₩�STUVWXYZ������0123456789�����\", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {\"enc\": e, \"dec\": D }; })();\ncptable[20838] = (function(){ var d = \"\\u0002\\u0003\\t\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\b\\u0018\\u0019\\u001c\\u001d\\u001e\\u001f\\n\\u0017\\u001b\\u0005\\u0006\\u0007\\u0016\\u0004\\u0014\\u0015\\u001a  กขฃคฅฆง[¢.<(+|&�จฉชซฌญฎ]!$*);¬-/ฏฐฑฒณดต^¦,%_>?฿๎ถทธนบปผ`:#@'=\\\"๏abcdefghiฝพฟภมย๚jklmnopqrรฤลฦวศ๛~stuvwxyzษสหฬอฮ๐๑๒๓๔๕๖๗๘๙ฯะัาำิ{ABCDEFGHI�ีึืุู}JKLMNOPQRฺเแโใไ\\\\�STUVWXYZๅๆ็่้๊0123456789๋์ํ��\", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {\"enc\": e, \"dec\": D }; })();\ncptable[20866] = (function(){ var d = \"ЪЪ\\u0002\\u0003\\u0004\\u0005\\u0006\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\u0014\\u0015\\u0016\\u0017\\u0018\\u0019\\u001a\\u001b\\u001c\\u001d\\u001e\\u001f !\\\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~─│┌┐└┘├┤┬┴┼▀▄█▌▐░▒▓⌠■∙√≈≤≥ ⌡°²·÷═║╒ё╓╔╕╖╗╘╙╚╛╜╝╞╟╠╡Ё╢╣╤╥╦╧╨╩╪╫╬©юабцдефгхийклмнопярстужвьызшэщчъЮАБЦДЕФГХИЙКЛМНОПЯРСТУЖВЬЫЗШЭЩЧЪ\", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {\"enc\": e, \"dec\": D }; })();\ncptable[20871] = (function(){ var d = \"\\u0002\\u0003\\t\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\b\\u0018\\u0019\\u001c\\u001d\\u001e\\u001f\\n\\u0017\\u001b\\u0005\\u0006\\u0007\\u0016\\u0004\\u0014\\u0015\\u001a  âäàáãåçñÞ.<(+!&éêëèíîïìßÆ$*);Ö-/ÂÄÀÁÃÅÇÑ¦,%_>?øÉÊËÈÍÎÏÌð:#Ð'=\\\"Øabcdefghi«»`ý{±°jklmnopqrªº}¸]¤µöstuvwxyz¡¿@Ý[®¢£¥·©§¶¼½¾¬|¯¨\\\\×þABCDEFGHI­ô~òóõæJKLMNOPQR¹ûüùúÿ´÷STUVWXYZ²Ô^ÒÓÕ0123456789³ÛÜÙÚ\", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {\"enc\": e, \"dec\": D }; })();\ncptable[20880] = (function(){ var d = \"\\u0002\\u0003\\t\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\b\\u0018\\u0019\\u001c\\u001d\\u001e\\u001f\\n\\u0017\\u001b\\u0005\\u0006\\u0007\\u0016\\u0004\\u0014\\u0015\\u001a  ђѓёєѕіїј[.<(+!&љњћќўџЪ№Ђ]$*);^-/ЃЁЄЅІЇЈЉ|,%_>?ЊЋЌ­ЎЏюаб`:#@'=\\\"цabcdefghiдефгхийjklmnopqrклмнопя~stuvwxyzрстужвьызшэщчъЮАБЦДЕФГ{ABCDEFGHIХИЙКЛМ}JKLMNOPQRНОПЯРС\\\\¤STUVWXYZТУЖВЬЫ0123456789ЗШЭЩЧ\", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {\"enc\": e, \"dec\": D }; })();\ncptable[20905] = (function(){ var d = \"\\u0002\\u0003\\t\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\b\\u0018\\u0019\\u001c\\u001d\\u001e\\u001f\\n\\u0017\\u001b\\u0005\\u0006\\u0007\\u0016\\u0004\\u0014\\u0015\\u001a  âäàá�ċ{ñÇ.<(+!&éêëèíîïìßĞİ*);^-/ÂÄÀÁ�Ċ[Ñş,%_>?�ÉÊËÈÍÎÏÌı:ÖŞ'=Ü˘abcdefghiħĉŝŭ�|°jklmnopqrĥĝĵ¸�¤µöstuvwxyzĦĈŜŬ�@˙£ż}Ż§]·½$ĤĜĴ¨´×çABCDEFGHI­ô~òóġğJKLMNOPQR`û\\\\ùú�ü÷STUVWXYZ²Ô#ÒÓĠ0123456789³Û\\\"ÙÚ\", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {\"enc\": e, \"dec\": D }; })();\ncptable[20924] = (function(){ var d = \"\\u0002\\u0003\\t\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\n\\b\\u0018\\u0019\\u001c\\u001d\\u001e\\u001f\\u0017\\u001b\\u0005\\u0006\\u0007\\u0016\\u0004\\u0014\\u0015\\u001a  âäàáãåçñÝ.<(+|&éêëèíîïìß!$*);^-/ÂÄÀÁÃÅÇÑŠ,%_>?øÉÊËÈÍÎÏÌ`:#@'=\\\"Øabcdefghi«»ðýþ±°jklmnopqrªºæžÆ€µ~stuvwxyz¡¿Ð[Þ®¢£¥·©§¶Œœ�¬š¯]Ž×{ABCDEFGHI­ôöòóõ}JKLMNOPQR¹ûüùúÿ\\\\÷STUVWXYZ²ÔÖÒÓÕ0123456789³ÛÜÙÚ\", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {\"enc\": e, \"dec\": D }; })();\ncptable[20932] = (function(){ var d = [], e = {}, D = [], j;\nD[0] = \"\\u0000\\u0001\\u0002\\u0003\\u0004\\u0005\\u0006\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\u0014\\u0015\\u0016\\u0017\\u0018\\u0019\\u001a\\u001b\\u001c\\u001d\\u001e\\u001f !\\\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~�����������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[0].length; ++j) if(D[0][j].charCodeAt(0) !== 0xFFFD) { e[D[0][j]] = 0 + j; d[0 + j] = D[0][j];}\nD[142] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������｡｢｣､･ｦｧｨｩｪｫｬｭｮｯｰｱｲｳｴｵｶｷｸｹｺｻｼｽｾｿﾀﾁﾂﾃﾄﾅﾆﾇﾈﾉﾊﾋﾌﾍﾎﾏﾐﾑﾒﾓﾔﾕﾖﾗﾘﾙﾚﾛﾜﾝﾞﾟ��������������������������������\".split(\"\");\nfor(j = 0; j != D[142].length; ++j) if(D[142][j].charCodeAt(0) !== 0xFFFD) { e[D[142][j]] = 36352 + j; d[36352 + j] = D[142][j];}\nD[161] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������　、。，．・：；？！゛゜´｀¨＾￣＿ヽヾゝゞ〃仝々〆〇ー―‐／＼〜‖｜…‥‘’“”（）〔〕［］｛｝〈〉《》「」『』【】＋−±×÷＝≠＜＞≦≧∞∴♂♀°′″℃￥＄¢£％＃＆＊＠§☆★○●◎◇�\".split(\"\");\nfor(j = 0; j != D[161].length; ++j) if(D[161][j].charCodeAt(0) !== 0xFFFD) { e[D[161][j]] = 41216 + j; d[41216 + j] = D[161][j];}\nD[162] = \"�����������������������������������������������˘ˇ¸˙˝¯˛˚�΄΅��������¡¦¿��������������������������������������ºª©®™¤������������������������������������������������◆□■△▲▽▼※〒→←↑↓〓�����������∈∋⊆⊇⊂⊃∪∩��������∧∨¬⇒⇔∀∃�����������∠⊥⌒∂∇≡≒≪≫√∽∝∵∫∬�������Å‰♯♭♪†‡¶����◯�\".split(\"\");\nfor(j = 0; j != D[162].length; ++j) if(D[162][j].charCodeAt(0) !== 0xFFFD) { e[D[162][j]] = 41472 + j; d[41472 + j] = D[162][j];}\nD[163] = \"��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������０１２３４５６７８９�������ＡＢＣＤＥＦＧＨＩＪＫＬＭＮＯＰＱＲＳＴＵＶＷＸＹＺ������ａｂｃｄｅｆｇｈｉｊｋｌｍｎｏｐｑｒｓｔｕｖｗｘｙｚ�����\".split(\"\");\nfor(j = 0; j != D[163].length; ++j) if(D[163][j].charCodeAt(0) !== 0xFFFD) { e[D[163][j]] = 41728 + j; d[41728 + j] = D[163][j];}\nD[164] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������ぁあぃいぅうぇえぉおかがきぎくぐけげこごさざしじすずせぜそぞただちぢっつづてでとどなにぬねのはばぱひびぴふぶぷへべぺほぼぽまみむめもゃやゅゆょよらりるれろゎわゐゑをん������������\".split(\"\");\nfor(j = 0; j != D[164].length; ++j) if(D[164][j].charCodeAt(0) !== 0xFFFD) { e[D[164][j]] = 41984 + j; d[41984 + j] = D[164][j];}\nD[165] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������ァアィイゥウェエォオカガキギクグケゲコゴサザシジスズセゼソゾタダチヂッツヅテデトドナニヌネノハバパヒビピフブプヘベペホボポマミムメモャヤュユョヨラリルレロヮワヰヱヲンヴヵヶ���������\".split(\"\");\nfor(j = 0; j != D[165].length; ++j) if(D[165][j].charCodeAt(0) !== 0xFFFD) { e[D[165][j]] = 42240 + j; d[42240 + j] = D[165][j];}\nD[166] = \"�������������������������������������������������������������������������������������������������ΆΈΉΊΪ�Ό�ΎΫ�Ώ����άέήίϊΐόςύϋΰώ������������������������������������ΑΒΓΔΕΖΗΘΙΚΛΜΝΞΟΠΡΣΤΥΦΧΨΩ��������αβγδεζηθικλμνξοπρστυφχψω���������������������������������������\".split(\"\");\nfor(j = 0; j != D[166].length; ++j) if(D[166][j].charCodeAt(0) !== 0xFFFD) { e[D[166][j]] = 42496 + j; d[42496 + j] = D[166][j];}\nD[167] = \"������������������������������������������������������������������ЂЃЄЅІЇЈЉЊЋЌЎЏ�����������������������������������ђѓєѕіїјљњћќўџ����������������������������������АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ���������������абвгдеёжзийклмнопрстуфхцчшщъыьэюя��������������\".split(\"\");\nfor(j = 0; j != D[167].length; ++j) if(D[167][j].charCodeAt(0) !== 0xFFFD) { e[D[167][j]] = 42752 + j; d[42752 + j] = D[167][j];}\nD[168] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������─│┌┐┘└├┬┤┴┼━┃┏┓┛┗┣┳┫┻╋┠┯┨┷┿┝┰┥┸╂���������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[168].length; ++j) if(D[168][j].charCodeAt(0) !== 0xFFFD) { e[D[168][j]] = 43008 + j; d[43008 + j] = D[168][j];}\nD[169] = \"���������������������������������ÆĐ�Ħ�Ĳ�ŁĿ�ŊØŒ�ŦÞ����������������æđðħıĳĸłŀŉŋøœßŧþ�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[169].length; ++j) if(D[169][j].charCodeAt(0) !== 0xFFFD) { e[D[169][j]] = 43264 + j; d[43264 + j] = D[169][j];}\nD[170] = \"���������������������������������ÁÀÄÂĂǍĀĄÅÃĆĈČÇĊĎÉÈËÊĚĖĒĘ�ĜĞĢĠĤÍÌÏÎǏİĪĮĨĴĶĹĽĻŃŇŅÑÓÒÖÔǑŐŌÕŔŘŖŚŜŠŞŤŢÚÙÜÛŬǓŰŪŲŮŨǗǛǙǕŴÝŸŶŹŽŻ����������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[170].length; ++j) if(D[170][j].charCodeAt(0) !== 0xFFFD) { e[D[170][j]] = 43520 + j; d[43520 + j] = D[170][j];}\nD[171] = \"���������������������������������áàäâăǎāąåãćĉčçċďéèëêěėēęǵĝğ�ġĥíìïîǐ�īįĩĵķĺľļńňņñóòöôǒőōõŕřŗśŝšşťţúùüûŭǔűūųůũǘǜǚǖŵýÿŷźžż����������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[171].length; ++j) if(D[171][j].charCodeAt(0) !== 0xFFFD) { e[D[171][j]] = 43776 + j; d[43776 + j] = D[171][j];}\nD[173] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������①②③④⑤⑥⑦⑧⑨⑩⑪⑫⑬⑭⑮⑯⑰⑱⑲⑳ⅠⅡⅢⅣⅤⅥⅦⅧⅨⅩ�㍉㌔㌢㍍㌘㌧㌃㌶㍑㍗㌍㌦㌣㌫㍊㌻㎜㎝㎞㎎㎏㏄㎡��������㍻〞〟№㏍℡㊤㊥㊦㊧㊨㈱㈲㈹㍾㍽㍼���∮∑���∟⊿������\".split(\"\");\nfor(j = 0; j != D[173].length; ++j) if(D[173][j].charCodeAt(0) !== 0xFFFD) { e[D[173][j]] = 44288 + j; d[44288 + j] = D[173][j];}\nD[176] = \"���������������������������������丂丄丅丌丒丟丣两丨丫丮丯丰丵乀乁乄乇乑乚乜乣乨乩乴乵乹乿亍亖亗亝亯亹仃仐仚仛仠仡仢仨仯仱仳仵份仾仿伀伂伃伈伋伌伒伕伖众伙伮伱你伳伵伷伹伻伾佀佂佈佉佋佌佒佔佖佘佟佣佪佬佮佱佷佸佹佺佽佾侁侂侄����������������������������������亜唖娃阿哀愛挨姶逢葵茜穐悪握渥旭葦芦鯵梓圧斡扱宛姐虻飴絢綾鮎或粟袷安庵按暗案闇鞍杏以伊位依偉囲夷委威尉惟意慰易椅為畏異移維緯胃萎衣謂違遺医井亥域育郁磯一壱溢逸稲茨芋鰯允印咽員因姻引飲淫胤蔭�\".split(\"\");\nfor(j = 0; j != D[176].length; ++j) if(D[176][j].charCodeAt(0) !== 0xFFFD) { e[D[176][j]] = 45056 + j; d[45056 + j] = D[176][j];}\nD[177] = \"���������������������������������侅侉侊侌侎侐侒侓侔侗侙侚侞侟侲侷侹侻侼侽侾俀俁俅俆俈俉俋俌俍俏俒俜俠俢俰俲俼俽俿倀倁倄倇倊倌倎倐倓倗倘倛倜倝倞倢倧倮倰倲倳倵偀偁偂偅偆偊偌偎偑偒偓偗偙偟偠偢偣偦偧偪偭偰偱倻傁傃傄傆傊傎傏傐����������������������������������院陰隠韻吋右宇烏羽迂雨卯鵜窺丑碓臼渦嘘唄欝蔚鰻姥厩浦瓜閏噂云運雲荏餌叡営嬰影映曳栄永泳洩瑛盈穎頴英衛詠鋭液疫益駅悦謁越閲榎厭円園堰奄宴延怨掩援沿演炎焔煙燕猿縁艶苑薗遠鉛鴛塩於汚甥凹央奥往応�\".split(\"\");\nfor(j = 0; j != D[177].length; ++j) if(D[177][j].charCodeAt(0) !== 0xFFFD) { e[D[177][j]] = 45312 + j; d[45312 + j] = D[177][j];}\nD[178] = \"���������������������������������傒傓傔傖傛傜傞傟傠傡傢傪傯傰傹傺傽僀僃僄僇僌僎僐僓僔僘僜僝僟僢僤僦僨僩僯僱僶僺僾儃儆儇儈儋儌儍儎僲儐儗儙儛儜儝儞儣儧儨儬儭儯儱儳儴儵儸儹兂兊兏兓兕兗兘兟兤兦兾冃冄冋冎冘冝冡冣冭冸冺冼冾冿凂����������������������������������押旺横欧殴王翁襖鴬鴎黄岡沖荻億屋憶臆桶牡乙俺卸恩温穏音下化仮何伽価佳加可嘉夏嫁家寡科暇果架歌河火珂禍禾稼箇花苛茄荷華菓蝦課嘩貨迦過霞蚊俄峨我牙画臥芽蛾賀雅餓駕介会解回塊壊廻快怪悔恢懐戒拐改�\".split(\"\");\nfor(j = 0; j != D[178].length; ++j) if(D[178][j].charCodeAt(0) !== 0xFFFD) { e[D[178][j]] = 45568 + j; d[45568 + j] = D[178][j];}\nD[179] = \"���������������������������������凈减凑凒凓凕凘凞凢凥凮凲凳凴凷刁刂刅划刓刕刖刘刢刨刱刲刵刼剅剉剕剗剘剚剜剟剠剡剦剮剷剸剹劀劂劅劊劌劓劕劖劗劘劚劜劤劥劦劧劯劰劶劷劸劺劻劽勀勄勆勈勌勏勑勔勖勛勜勡勥勨勩勪勬勰勱勴勶勷匀匃匊匋����������������������������������魁晦械海灰界皆絵芥蟹開階貝凱劾外咳害崖慨概涯碍蓋街該鎧骸浬馨蛙垣柿蛎鈎劃嚇各廓拡撹格核殻獲確穫覚角赫較郭閣隔革学岳楽額顎掛笠樫橿梶鰍潟割喝恰括活渇滑葛褐轄且鰹叶椛樺鞄株兜竃蒲釜鎌噛鴨栢茅萱�\".split(\"\");\nfor(j = 0; j != D[179].length; ++j) if(D[179][j].charCodeAt(0) !== 0xFFFD) { e[D[179][j]] = 45824 + j; d[45824 + j] = D[179][j];}\nD[180] = \"���������������������������������匌匑匓匘匛匜匞匟匥匧匨匩匫匬匭匰匲匵匼匽匾卂卌卋卙卛卡卣卥卬卭卲卹卾厃厇厈厎厓厔厙厝厡厤厪厫厯厲厴厵厷厸厺厽叀叅叏叒叓叕叚叝叞叠另叧叵吂吓吚吡吧吨吪启吱吴吵呃呄呇呍呏呞呢呤呦呧呩呫呭呮呴呿����������������������������������粥刈苅瓦乾侃冠寒刊勘勧巻喚堪姦完官寛干幹患感慣憾換敢柑桓棺款歓汗漢澗潅環甘監看竿管簡緩缶翰肝艦莞観諌貫還鑑間閑関陥韓館舘丸含岸巌玩癌眼岩翫贋雁頑顔願企伎危喜器基奇嬉寄岐希幾忌揮机旗既期棋棄�\".split(\"\");\nfor(j = 0; j != D[180].length; ++j) if(D[180][j].charCodeAt(0) !== 0xFFFD) { e[D[180][j]] = 46080 + j; d[46080 + j] = D[180][j];}\nD[181] = \"���������������������������������咁咃咅咈咉咍咑咕咖咜咟咡咦咧咩咪咭咮咱咷咹咺咻咿哆哊响哎哠哪哬哯哶哼哾哿唀唁唅唈唉唌唍唎唕唪唫唲唵唶唻唼唽啁啇啉啊啍啐啑啘啚啛啞啠啡啤啦啿喁喂喆喈喎喏喑喒喓喔喗喣喤喭喲喿嗁嗃嗆嗉嗋嗌嗎嗑嗒����������������������������������機帰毅気汽畿祈季稀紀徽規記貴起軌輝飢騎鬼亀偽儀妓宜戯技擬欺犠疑祇義蟻誼議掬菊鞠吉吃喫桔橘詰砧杵黍却客脚虐逆丘久仇休及吸宮弓急救朽求汲泣灸球究窮笈級糾給旧牛去居巨拒拠挙渠虚許距鋸漁禦魚亨享京�\".split(\"\");\nfor(j = 0; j != D[181].length; ++j) if(D[181][j].charCodeAt(0) !== 0xFFFD) { e[D[181][j]] = 46336 + j; d[46336 + j] = D[181][j];}\nD[182] = \"���������������������������������嗓嗗嗘嗛嗞嗢嗩嗶嗿嘅嘈嘊嘍嘎嘏嘐嘑嘒嘙嘬嘰嘳嘵嘷嘹嘻嘼嘽嘿噀噁噃噄噆噉噋噍噏噔噞噠噡噢噣噦噩噭噯噱噲噵嚄嚅嚈嚋嚌嚕嚙嚚嚝嚞嚟嚦嚧嚨嚩嚫嚬嚭嚱嚳嚷嚾囅囉囊囋囏囐囌囍囙囜囝囟囡囤囥囦囧囨囱囫园����������������������������������供侠僑兇競共凶協匡卿叫喬境峡強彊怯恐恭挟教橋況狂狭矯胸脅興蕎郷鏡響饗驚仰凝尭暁業局曲極玉桐粁僅勤均巾錦斤欣欽琴禁禽筋緊芹菌衿襟謹近金吟銀九倶句区狗玖矩苦躯駆駈駒具愚虞喰空偶寓遇隅串櫛釧屑屈�\".split(\"\");\nfor(j = 0; j != D[182].length; ++j) if(D[182][j].charCodeAt(0) !== 0xFFFD) { e[D[182][j]] = 46592 + j; d[46592 + j] = D[182][j];}\nD[183] = \"���������������������������������囶囷圁圂圇圊圌圑圕圚圛圝圠圢圣圤圥圩圪圬圮圯圳圴圽圾圿坅坆坌坍坒坢坥坧坨坫坭坮坯坰坱坳坴坵坷坹坺坻坼坾垁垃垌垔垗垙垚垜垝垞垟垡垕垧垨垩垬垸垽埇埈埌埏埕埝埞埤埦埧埩埭埰埵埶埸埽埾埿堃堄堈堉埡����������������������������������掘窟沓靴轡窪熊隈粂栗繰桑鍬勲君薫訓群軍郡卦袈祁係傾刑兄啓圭珪型契形径恵慶慧憩掲携敬景桂渓畦稽系経継繋罫茎荊蛍計詣警軽頚鶏芸迎鯨劇戟撃激隙桁傑欠決潔穴結血訣月件倹倦健兼券剣喧圏堅嫌建憲懸拳捲�\".split(\"\");\nfor(j = 0; j != D[183].length; ++j) if(D[183][j].charCodeAt(0) !== 0xFFFD) { e[D[183][j]] = 46848 + j; d[46848 + j] = D[183][j];}\nD[184] = \"���������������������������������堌堍堛堞堟堠堦堧堭堲堹堿塉塌塍塏塐塕塟塡塤塧塨塸塼塿墀墁墇墈墉墊墌墍墏墐墔墖墝墠墡墢墦墩墱墲壄墼壂壈壍壎壐壒壔壖壚壝壡壢壩壳夅夆夋夌夒夓夔虁夝夡夣夤夨夯夰夳夵夶夿奃奆奒奓奙奛奝奞奟奡奣奫奭����������������������������������検権牽犬献研硯絹県肩見謙賢軒遣鍵険顕験鹸元原厳幻弦減源玄現絃舷言諺限乎個古呼固姑孤己庫弧戸故枯湖狐糊袴股胡菰虎誇跨鈷雇顧鼓五互伍午呉吾娯後御悟梧檎瑚碁語誤護醐乞鯉交佼侯候倖光公功効勾厚口向�\".split(\"\");\nfor(j = 0; j != D[184].length; ++j) if(D[184][j].charCodeAt(0) !== 0xFFFD) { e[D[184][j]] = 47104 + j; d[47104 + j] = D[184][j];}\nD[185] = \"���������������������������������奯奲奵奶她奻奼妋妌妎妒妕妗妟妤妧妭妮妯妰妳妷妺妼姁姃姄姈姊姍姒姝姞姟姣姤姧姮姯姱姲姴姷娀娄娌娍娎娒娓娞娣娤娧娨娪娭娰婄婅婇婈婌婐婕婞婣婥婧婭婷婺婻婾媋媐媓媖媙媜媞媟媠媢媧媬媱媲媳媵媸媺媻媿����������������������������������后喉坑垢好孔孝宏工巧巷幸広庚康弘恒慌抗拘控攻昂晃更杭校梗構江洪浩港溝甲皇硬稿糠紅紘絞綱耕考肯肱腔膏航荒行衡講貢購郊酵鉱砿鋼閤降項香高鴻剛劫号合壕拷濠豪轟麹克刻告国穀酷鵠黒獄漉腰甑忽惚骨狛込�\".split(\"\");\nfor(j = 0; j != D[185].length; ++j) if(D[185][j].charCodeAt(0) !== 0xFFFD) { e[D[185][j]] = 47360 + j; d[47360 + j] = D[185][j];}\nD[186] = \"���������������������������������嫄嫆嫈嫏嫚嫜嫠嫥嫪嫮嫵嫶嫽嬀嬁嬈嬗嬴嬙嬛嬝嬡嬥嬭嬸孁孋孌孒孖孞孨孮孯孼孽孾孿宁宄宆宊宎宐宑宓宔宖宨宩宬宭宯宱宲宷宺宼寀寁寍寏寖寗寘寙寚寠寯寱寴寽尌尗尞尟尣尦尩尫尬尮尰尲尵尶屙屚屜屢屣屧屨屩����������������������������������此頃今困坤墾婚恨懇昏昆根梱混痕紺艮魂些佐叉唆嵯左差査沙瑳砂詐鎖裟坐座挫債催再最哉塞妻宰彩才採栽歳済災采犀砕砦祭斎細菜裁載際剤在材罪財冴坂阪堺榊肴咲崎埼碕鷺作削咋搾昨朔柵窄策索錯桜鮭笹匙冊刷�\".split(\"\");\nfor(j = 0; j != D[186].length; ++j) if(D[186][j].charCodeAt(0) !== 0xFFFD) { e[D[186][j]] = 47616 + j; d[47616 + j] = D[186][j];}\nD[187] = \"���������������������������������屭屰屴屵屺屻屼屽岇岈岊岏岒岝岟岠岢岣岦岪岲岴岵岺峉峋峒峝峗峮峱峲峴崁崆崍崒崫崣崤崦崧崱崴崹崽崿嵂嵃嵆嵈嵕嵑嵙嵊嵟嵠嵡嵢嵤嵪嵭嵰嵹嵺嵾嵿嶁嶃嶈嶊嶒嶓嶔嶕嶙嶛嶟嶠嶧嶫嶰嶴嶸嶹巃巇巋巐巎巘巙巠巤����������������������������������察拶撮擦札殺薩雑皐鯖捌錆鮫皿晒三傘参山惨撒散桟燦珊産算纂蚕讃賛酸餐斬暫残仕仔伺使刺司史嗣四士始姉姿子屍市師志思指支孜斯施旨枝止死氏獅祉私糸紙紫肢脂至視詞詩試誌諮資賜雌飼歯事似侍児字寺慈持時�\".split(\"\");\nfor(j = 0; j != D[187].length; ++j) if(D[187][j].charCodeAt(0) !== 0xFFFD) { e[D[187][j]] = 47872 + j; d[47872 + j] = D[187][j];}\nD[188] = \"���������������������������������巩巸巹帀帇帍帒帔帕帘帟帠帮帨帲帵帾幋幐幉幑幖幘幛幜幞幨幪幫幬幭幮幰庀庋庎庢庤庥庨庪庬庱庳庽庾庿廆廌廋廎廑廒廔廕廜廞廥廫异弆弇弈弎弙弜弝弡弢弣弤弨弫弬弮弰弴弶弻弽弿彀彄彅彇彍彐彔彘彛彠彣彤彧����������������������������������次滋治爾璽痔磁示而耳自蒔辞汐鹿式識鴫竺軸宍雫七叱執失嫉室悉湿漆疾質実蔀篠偲柴芝屡蕊縞舎写射捨赦斜煮社紗者謝車遮蛇邪借勺尺杓灼爵酌釈錫若寂弱惹主取守手朱殊狩珠種腫趣酒首儒受呪寿授樹綬需囚収周�\".split(\"\");\nfor(j = 0; j != D[188].length; ++j) if(D[188][j].charCodeAt(0) !== 0xFFFD) { e[D[188][j]] = 48128 + j; d[48128 + j] = D[188][j];}\nD[189] = \"���������������������������������彯彲彴彵彸彺彽彾徉徍徏徖徜徝徢徧徫徤徬徯徰徱徸忄忇忈忉忋忐忑忒忓忔忞忡忢忨忩忪忬忭忮忯忲忳忶忺忼怇怊怍怓怔怗怘怚怟怤怭怳怵恀恇恈恉恌恑恔恖恗恝恡恧恱恾恿悂悆悈悊悎悑悓悕悘悝悞悢悤悥您悰悱悷����������������������������������宗就州修愁拾洲秀秋終繍習臭舟蒐衆襲讐蹴輯週酋酬集醜什住充十従戎柔汁渋獣縦重銃叔夙宿淑祝縮粛塾熟出術述俊峻春瞬竣舜駿准循旬楯殉淳準潤盾純巡遵醇順処初所暑曙渚庶緒署書薯藷諸助叙女序徐恕鋤除傷償�\".split(\"\");\nfor(j = 0; j != D[189].length; ++j) if(D[189][j].charCodeAt(0) !== 0xFFFD) { e[D[189][j]] = 48384 + j; d[48384 + j] = D[189][j];}\nD[190] = \"���������������������������������悻悾惂惄惈惉惊惋惎惏惔惕惙惛惝惞惢惥惲惵惸惼惽愂愇愊愌愐愑愒愓愔愖愗愙愜愞愢愪愫愰愱愵愶愷愹慁慅慆慉慞慠慬慲慸慻慼慿憀憁憃憄憋憍憒憓憗憘憜憝憟憠憥憨憪憭憸憹憼懀懁懂懎懏懕懜懝懞懟懡懢懧懩懥����������������������������������勝匠升召哨商唱嘗奨妾娼宵将小少尚庄床廠彰承抄招掌捷昇昌昭晶松梢樟樵沼消渉湘焼焦照症省硝礁祥称章笑粧紹肖菖蒋蕉衝裳訟証詔詳象賞醤鉦鍾鐘障鞘上丈丞乗冗剰城場壌嬢常情擾条杖浄状畳穣蒸譲醸錠嘱埴飾�\".split(\"\");\nfor(j = 0; j != D[190].length; ++j) if(D[190][j].charCodeAt(0) !== 0xFFFD) { e[D[190][j]] = 48640 + j; d[48640 + j] = D[190][j];}\nD[191] = \"���������������������������������懬懭懯戁戃戄戇戓戕戜戠戢戣戧戩戫戹戽扂扃扄扆扌扐扑扒扔扖扚扜扤扭扯扳扺扽抍抎抏抐抦抨抳抶抷抺抾抿拄拎拕拖拚拪拲拴拼拽挃挄挊挋挍挐挓挖挘挩挪挭挵挶挹挼捁捂捃捄捆捊捋捎捒捓捔捘捛捥捦捬捭捱捴捵����������������������������������拭植殖燭織職色触食蝕辱尻伸信侵唇娠寝審心慎振新晋森榛浸深申疹真神秦紳臣芯薪親診身辛進針震人仁刃塵壬尋甚尽腎訊迅陣靭笥諏須酢図厨逗吹垂帥推水炊睡粋翠衰遂酔錐錘随瑞髄崇嵩数枢趨雛据杉椙菅頗雀裾�\".split(\"\");\nfor(j = 0; j != D[191].length; ++j) if(D[191][j].charCodeAt(0) !== 0xFFFD) { e[D[191][j]] = 48896 + j; d[48896 + j] = D[191][j];}\nD[192] = \"���������������������������������捸捼捽捿掂掄掇掊掐掔掕掙掚掞掤掦掭掮掯掽揁揅揈揎揑揓揔揕揜揠揥揪揬揲揳揵揸揹搉搊搐搒搔搘搞搠搢搤搥搩搪搯搰搵搽搿摋摏摑摒摓摔摚摛摜摝摟摠摡摣摭摳摴摻摽撅撇撏撐撑撘撙撛撝撟撡撣撦撨撬撳撽撾撿����������������������������������澄摺寸世瀬畝是凄制勢姓征性成政整星晴棲栖正清牲生盛精聖声製西誠誓請逝醒青静斉税脆隻席惜戚斥昔析石積籍績脊責赤跡蹟碩切拙接摂折設窃節説雪絶舌蝉仙先千占宣専尖川戦扇撰栓栴泉浅洗染潜煎煽旋穿箭線�\".split(\"\");\nfor(j = 0; j != D[192].length; ++j) if(D[192][j].charCodeAt(0) !== 0xFFFD) { e[D[192][j]] = 49152 + j; d[49152 + j] = D[192][j];}\nD[193] = \"���������������������������������擄擉擊擋擌擎擐擑擕擗擤擥擩擪擭擰擵擷擻擿攁攄攈攉攊攏攓攔攖攙攛攞攟攢攦攩攮攱攺攼攽敃敇敉敐敒敔敟敠敧敫敺敽斁斅斊斒斕斘斝斠斣斦斮斲斳斴斿旂旈旉旎旐旔旖旘旟旰旲旴旵旹旾旿昀昄昈昉昍昑昒昕昖昝����������������������������������繊羨腺舛船薦詮賎践選遷銭銑閃鮮前善漸然全禅繕膳糎噌塑岨措曾曽楚狙疏疎礎祖租粗素組蘇訴阻遡鼠僧創双叢倉喪壮奏爽宋層匝惣想捜掃挿掻操早曹巣槍槽漕燥争痩相窓糟総綜聡草荘葬蒼藻装走送遭鎗霜騒像増憎�\".split(\"\");\nfor(j = 0; j != D[193].length; ++j) if(D[193][j].charCodeAt(0) !== 0xFFFD) { e[D[193][j]] = 49408 + j; d[49408 + j] = D[193][j];}\nD[194] = \"���������������������������������昞昡昢昣昤昦昩昪昫昬昮昰昱昳昹昷晀晅晆晊晌晑晎晗晘晙晛晜晠晡曻晪晫晬晾晳晵晿晷晸晹晻暀晼暋暌暍暐暒暙暚暛暜暟暠暤暭暱暲暵暻暿曀曂曃曈曌曎曏曔曛曟曨曫曬曮曺朅朇朎朓朙朜朠朢朳朾杅杇杈杌杔杕杝����������������������������������臓蔵贈造促側則即息捉束測足速俗属賊族続卒袖其揃存孫尊損村遜他多太汰詑唾堕妥惰打柁舵楕陀駄騨体堆対耐岱帯待怠態戴替泰滞胎腿苔袋貸退逮隊黛鯛代台大第醍題鷹滝瀧卓啄宅托択拓沢濯琢託鐸濁諾茸凧蛸只�\".split(\"\");\nfor(j = 0; j != D[194].length; ++j) if(D[194][j].charCodeAt(0) !== 0xFFFD) { e[D[194][j]] = 49664 + j; d[49664 + j] = D[194][j];}\nD[195] = \"���������������������������������杦杬杮杴杶杻极构枎枏枑枓枖枘枙枛枰枱枲枵枻枼枽柹柀柂柃柅柈柉柒柗柙柜柡柦柰柲柶柷桒栔栙栝栟栨栧栬栭栯栰栱栳栻栿桄桅桊桌桕桗桘桛桫桮桯桰桱桲桵桹桺桻桼梂梄梆梈梖梘梚梜梡梣梥梩梪梮梲梻棅棈棌棏����������������������������������叩但達辰奪脱巽竪辿棚谷狸鱈樽誰丹単嘆坦担探旦歎淡湛炭短端箪綻耽胆蛋誕鍛団壇弾断暖檀段男談値知地弛恥智池痴稚置致蜘遅馳築畜竹筑蓄逐秩窒茶嫡着中仲宙忠抽昼柱注虫衷註酎鋳駐樗瀦猪苧著貯丁兆凋喋寵�\".split(\"\");\nfor(j = 0; j != D[195].length; ++j) if(D[195][j].charCodeAt(0) !== 0xFFFD) { e[D[195][j]] = 49920 + j; d[49920 + j] = D[195][j];}\nD[196] = \"���������������������������������棐棑棓棖棙棜棝棥棨棪棫棬棭棰棱棵棶棻棼棽椆椉椊椐椑椓椖椗椱椳椵椸椻楂楅楉楎楗楛楣楤楥楦楨楩楬楰楱楲楺楻楿榀榍榒榖榘榡榥榦榨榫榭榯榷榸榺榼槅槈槑槖槗槢槥槮槯槱槳槵槾樀樁樃樏樑樕樚樝樠樤樨樰樲����������������������������������帖帳庁弔張彫徴懲挑暢朝潮牒町眺聴脹腸蝶調諜超跳銚長頂鳥勅捗直朕沈珍賃鎮陳津墜椎槌追鎚痛通塚栂掴槻佃漬柘辻蔦綴鍔椿潰坪壷嬬紬爪吊釣鶴亭低停偵剃貞呈堤定帝底庭廷弟悌抵挺提梯汀碇禎程締艇訂諦蹄逓�\".split(\"\");\nfor(j = 0; j != D[196].length; ++j) if(D[196][j].charCodeAt(0) !== 0xFFFD) { e[D[196][j]] = 50176 + j; d[50176 + j] = D[196][j];}\nD[197] = \"���������������������������������樴樷樻樾樿橅橆橉橊橎橐橑橒橕橖橛橤橧橪橱橳橾檁檃檆檇檉檋檑檛檝檞檟檥檫檯檰檱檴檽檾檿櫆櫉櫈櫌櫐櫔櫕櫖櫜櫝櫤櫧櫬櫰櫱櫲櫼櫽欂欃欆欇欉欏欐欑欗欛欞欤欨欫欬欯欵欶欻欿歆歊歍歒歖歘歝歠歧歫歮歰歵歽����������������������������������邸鄭釘鼎泥摘擢敵滴的笛適鏑溺哲徹撤轍迭鉄典填天展店添纏甜貼転顛点伝殿澱田電兎吐堵塗妬屠徒斗杜渡登菟賭途都鍍砥砺努度土奴怒倒党冬凍刀唐塔塘套宕島嶋悼投搭東桃梼棟盗淘湯涛灯燈当痘祷等答筒糖統到�\".split(\"\");\nfor(j = 0; j != D[197].length; ++j) if(D[197][j].charCodeAt(0) !== 0xFFFD) { e[D[197][j]] = 50432 + j; d[50432 + j] = D[197][j];}\nD[198] = \"���������������������������������歾殂殅殗殛殟殠殢殣殨殩殬殭殮殰殸殹殽殾毃毄毉毌毖毚毡毣毦毧毮毱毷毹毿氂氄氅氉氍氎氐氒氙氟氦氧氨氬氮氳氵氶氺氻氿汊汋汍汏汒汔汙汛汜汫汭汯汴汶汸汹汻沅沆沇沉沔沕沗沘沜沟沰沲沴泂泆泍泏泐泑泒泔泖����������������������������������董蕩藤討謄豆踏逃透鐙陶頭騰闘働動同堂導憧撞洞瞳童胴萄道銅峠鴇匿得徳涜特督禿篤毒独読栃橡凸突椴届鳶苫寅酉瀞噸屯惇敦沌豚遁頓呑曇鈍奈那内乍凪薙謎灘捺鍋楢馴縄畷南楠軟難汝二尼弐迩匂賑肉虹廿日乳入�\".split(\"\");\nfor(j = 0; j != D[198].length; ++j) if(D[198][j].charCodeAt(0) !== 0xFFFD) { e[D[198][j]] = 50688 + j; d[50688 + j] = D[198][j];}\nD[199] = \"���������������������������������泚泜泠泧泩泫泬泮泲泴洄洇洊洎洏洑洓洚洦洧洨汧洮洯洱洹洼洿浗浞浟浡浥浧浯浰浼涂涇涑涒涔涖涗涘涪涬涴涷涹涽涿淄淈淊淎淏淖淛淝淟淠淢淥淩淯淰淴淶淼渀渄渞渢渧渲渶渹渻渼湄湅湈湉湋湏湑湒湓湔湗湜湝湞����������������������������������如尿韮任妊忍認濡禰祢寧葱猫熱年念捻撚燃粘乃廼之埜嚢悩濃納能脳膿農覗蚤巴把播覇杷波派琶破婆罵芭馬俳廃拝排敗杯盃牌背肺輩配倍培媒梅楳煤狽買売賠陪這蝿秤矧萩伯剥博拍柏泊白箔粕舶薄迫曝漠爆縛莫駁麦�\".split(\"\");\nfor(j = 0; j != D[199].length; ++j) if(D[199][j].charCodeAt(0) !== 0xFFFD) { e[D[199][j]] = 50944 + j; d[50944 + j] = D[199][j];}\nD[200] = \"���������������������������������湢湣湨湳湻湽溍溓溙溠溧溭溮溱溳溻溿滀滁滃滇滈滊滍滎滏滫滭滮滹滻滽漄漈漊漌漍漖漘漚漛漦漩漪漯漰漳漶漻漼漭潏潑潒潓潗潙潚潝潞潡潢潨潬潽潾澃澇澈澋澌澍澐澒澓澔澖澚澟澠澥澦澧澨澮澯澰澵澶澼濅濇濈濊����������������������������������函箱硲箸肇筈櫨幡肌畑畠八鉢溌発醗髪伐罰抜筏閥鳩噺塙蛤隼伴判半反叛帆搬斑板氾汎版犯班畔繁般藩販範釆煩頒飯挽晩番盤磐蕃蛮匪卑否妃庇彼悲扉批披斐比泌疲皮碑秘緋罷肥被誹費避非飛樋簸備尾微枇毘琵眉美�\".split(\"\");\nfor(j = 0; j != D[200].length; ++j) if(D[200][j].charCodeAt(0) !== 0xFFFD) { e[D[200][j]] = 51200 + j; d[51200 + j] = D[200][j];}\nD[201] = \"���������������������������������濚濞濨濩濰濵濹濼濽瀀瀅瀆瀇瀍瀗瀠瀣瀯瀴瀷瀹瀼灃灄灈灉灊灋灔灕灝灞灎灤灥灬灮灵灶灾炁炅炆炔炕炖炗炘炛炤炫炰炱炴炷烊烑烓烔烕烖烘烜烤烺焃焄焅焆焇焋焌焏焞焠焫焭焯焰焱焸煁煅煆煇煊煋煐煒煗煚煜煞煠����������������������������������鼻柊稗匹疋髭彦膝菱肘弼必畢筆逼桧姫媛紐百謬俵彪標氷漂瓢票表評豹廟描病秒苗錨鋲蒜蛭鰭品彬斌浜瀕貧賓頻敏瓶不付埠夫婦富冨布府怖扶敷斧普浮父符腐膚芙譜負賦赴阜附侮撫武舞葡蕪部封楓風葺蕗伏副復幅服�\".split(\"\");\nfor(j = 0; j != D[201].length; ++j) if(D[201][j].charCodeAt(0) !== 0xFFFD) { e[D[201][j]] = 51456 + j; d[51456 + j] = D[201][j];}\nD[202] = \"���������������������������������煨煹熀熅熇熌熒熚熛熠熢熯熰熲熳熺熿燀燁燄燋燌燓燖燙燚燜燸燾爀爇爈爉爓爗爚爝爟爤爫爯爴爸爹牁牂牃牅牎牏牐牓牕牖牚牜牞牠牣牨牫牮牯牱牷牸牻牼牿犄犉犍犎犓犛犨犭犮犱犴犾狁狇狉狌狕狖狘狟狥狳狴狺狻����������������������������������福腹複覆淵弗払沸仏物鮒分吻噴墳憤扮焚奮粉糞紛雰文聞丙併兵塀幣平弊柄並蔽閉陛米頁僻壁癖碧別瞥蔑箆偏変片篇編辺返遍便勉娩弁鞭保舗鋪圃捕歩甫補輔穂募墓慕戊暮母簿菩倣俸包呆報奉宝峰峯崩庖抱捧放方朋�\".split(\"\");\nfor(j = 0; j != D[202].length; ++j) if(D[202][j].charCodeAt(0) !== 0xFFFD) { e[D[202][j]] = 51712 + j; d[51712 + j] = D[202][j];}\nD[203] = \"���������������������������������狾猂猄猅猇猋猍猒猓猘猙猞猢猤猧猨猬猱猲猵猺猻猽獃獍獐獒獖獘獝獞獟獠獦獧獩獫獬獮獯獱獷獹獼玀玁玃玅玆玎玐玓玕玗玘玜玞玟玠玢玥玦玪玫玭玵玷玹玼玽玿珅珆珉珋珌珏珒珓珖珙珝珡珣珦珧珩珴珵珷珹珺珻珽����������������������������������法泡烹砲縫胞芳萌蓬蜂褒訪豊邦鋒飽鳳鵬乏亡傍剖坊妨帽忘忙房暴望某棒冒紡肪膨謀貌貿鉾防吠頬北僕卜墨撲朴牧睦穆釦勃没殆堀幌奔本翻凡盆摩磨魔麻埋妹昧枚毎哩槙幕膜枕鮪柾鱒桝亦俣又抹末沫迄侭繭麿万慢満�\".split(\"\");\nfor(j = 0; j != D[203].length; ++j) if(D[203][j].charCodeAt(0) !== 0xFFFD) { e[D[203][j]] = 51968 + j; d[51968 + j] = D[203][j];}\nD[204] = \"���������������������������������珿琀琁琄琇琊琑琚琛琤琦琨琩琪琫琬琭琮琯琰琱琹瑀瑃瑄瑆瑇瑋瑍瑑瑒瑗瑝瑢瑦瑧瑨瑫瑭瑮瑱瑲璀璁璅璆璇璉璏璐璑璒璘璙璚璜璟璠璡璣璦璨璩璪璫璮璯璱璲璵璹璻璿瓈瓉瓌瓐瓓瓘瓚瓛瓞瓟瓤瓨瓪瓫瓯瓴瓺瓻瓼瓿甆����������������������������������漫蔓味未魅巳箕岬密蜜湊蓑稔脈妙粍民眠務夢無牟矛霧鵡椋婿娘冥名命明盟迷銘鳴姪牝滅免棉綿緬面麺摸模茂妄孟毛猛盲網耗蒙儲木黙目杢勿餅尤戻籾貰問悶紋門匁也冶夜爺耶野弥矢厄役約薬訳躍靖柳薮鑓愉愈油癒�\".split(\"\");\nfor(j = 0; j != D[204].length; ++j) if(D[204][j].charCodeAt(0) !== 0xFFFD) { e[D[204][j]] = 52224 + j; d[52224 + j] = D[204][j];}\nD[205] = \"���������������������������������甒甖甗甠甡甤甧甩甪甯甶甹甽甾甿畀畃畇畈畎畐畒畗畞畟畡畯畱畹畺畻畼畽畾疁疅疐疒疓疕疙疜疢疤疴疺疿痀痁痄痆痌痎痏痗痜痟痠痡痤痧痬痮痯痱痹瘀瘂瘃瘄瘇瘈瘊瘌瘏瘒瘓瘕瘖瘙瘛瘜瘝瘞瘣瘥瘦瘩瘭瘲瘳瘵瘸瘹����������������������������������諭輸唯佑優勇友宥幽悠憂揖有柚湧涌猶猷由祐裕誘遊邑郵雄融夕予余与誉輿預傭幼妖容庸揚揺擁曜楊様洋溶熔用窯羊耀葉蓉要謡踊遥陽養慾抑欲沃浴翌翼淀羅螺裸来莱頼雷洛絡落酪乱卵嵐欄濫藍蘭覧利吏履李梨理璃�\".split(\"\");\nfor(j = 0; j != D[205].length; ++j) if(D[205][j].charCodeAt(0) !== 0xFFFD) { e[D[205][j]] = 52480 + j; d[52480 + j] = D[205][j];}\nD[206] = \"���������������������������������瘺瘼癊癀癁癃癄癅癉癋癕癙癟癤癥癭癮癯癱癴皁皅皌皍皕皛皜皝皟皠皢皣皤皥皦皧皨皪皭皽盁盅盉盋盌盎盔盙盠盦盨盬盰盱盶盹盼眀眆眊眎眒眔眕眗眙眚眜眢眨眭眮眯眴眵眶眹眽眾睂睅睆睊睍睎睏睒睖睗睜睞睟睠睢����������������������������������痢裏裡里離陸律率立葎掠略劉流溜琉留硫粒隆竜龍侶慮旅虜了亮僚両凌寮料梁涼猟療瞭稜糧良諒遼量陵領力緑倫厘林淋燐琳臨輪隣鱗麟瑠塁涙累類令伶例冷励嶺怜玲礼苓鈴隷零霊麗齢暦歴列劣烈裂廉恋憐漣煉簾練聯�\".split(\"\");\nfor(j = 0; j != D[206].length; ++j) if(D[206][j].charCodeAt(0) !== 0xFFFD) { e[D[206][j]] = 52736 + j; d[52736 + j] = D[206][j];}\nD[207] = \"���������������������������������睤睧睪睬睰睲睳睴睺睽瞀瞄瞌瞍瞔瞕瞖瞚瞟瞢瞧瞪瞮瞯瞱瞵瞾矃矉矑矒矕矙矞矟矠矤矦矪矬矰矱矴矸矻砅砆砉砍砎砑砝砡砢砣砭砮砰砵砷硃硄硇硈硌硎硒硜硞硠硡硣硤硨硪确硺硾碊碏碔碘碡碝碞碟碤碨碬碭碰碱碲碳����������������������������������蓮連錬呂魯櫓炉賂路露労婁廊弄朗楼榔浪漏牢狼篭老聾蝋郎六麓禄肋録論倭和話歪賄脇惑枠鷲亙亘鰐詫藁蕨椀湾碗腕��������������������������������������������\".split(\"\");\nfor(j = 0; j != D[207].length; ++j) if(D[207][j].charCodeAt(0) !== 0xFFFD) { e[D[207][j]] = 52992 + j; d[52992 + j] = D[207][j];}\nD[208] = \"���������������������������������碻碽碿磇磈磉磌磎磒磓磕磖磤磛磟磠磡磦磪磲磳礀磶磷磺磻磿礆礌礐礚礜礞礟礠礥礧礩礭礱礴礵礻礽礿祄祅祆祊祋祏祑祔祘祛祜祧祩祫祲祹祻祼祾禋禌禑禓禔禕禖禘禛禜禡禨禩禫禯禱禴禸离秂秄秇秈秊秏秔秖秚秝秞����������������������������������弌丐丕个丱丶丼丿乂乖乘亂亅豫亊舒弍于亞亟亠亢亰亳亶从仍仄仆仂仗仞仭仟价伉佚估佛佝佗佇佶侈侏侘佻佩佰侑佯來侖儘俔俟俎俘俛俑俚俐俤俥倚倨倔倪倥倅伜俶倡倩倬俾俯們倆偃假會偕偐偈做偖偬偸傀傚傅傴傲�\".split(\"\");\nfor(j = 0; j != D[208].length; ++j) if(D[208][j].charCodeAt(0) !== 0xFFFD) { e[D[208][j]] = 53248 + j; d[53248 + j] = D[208][j];}\nD[209] = \"���������������������������������秠秢秥秪秫秭秱秸秼稂稃稇稉稊稌稑稕稛稞稡稧稫稭稯稰稴稵稸稹稺穄穅穇穈穌穕穖穙穜穝穟穠穥穧穪穭穵穸穾窀窂窅窆窊窋窐窑窔窞窠窣窬窳窵窹窻窼竆竉竌竎竑竛竨竩竫竬竱竴竻竽竾笇笔笟笣笧笩笪笫笭笮笯笰����������������������������������僉僊傳僂僖僞僥僭僣僮價僵儉儁儂儖儕儔儚儡儺儷儼儻儿兀兒兌兔兢竸兩兪兮冀冂囘册冉冏冑冓冕冖冤冦冢冩冪冫决冱冲冰况冽凅凉凛几處凩凭凰凵凾刄刋刔刎刧刪刮刳刹剏剄剋剌剞剔剪剴剩剳剿剽劍劔劒剱劈劑辨�\".split(\"\");\nfor(j = 0; j != D[209].length; ++j) if(D[209][j].charCodeAt(0) !== 0xFFFD) { e[D[209][j]] = 53504 + j; d[53504 + j] = D[209][j];}\nD[210] = \"���������������������������������笱笴笽笿筀筁筇筎筕筠筤筦筩筪筭筯筲筳筷箄箉箎箐箑箖箛箞箠箥箬箯箰箲箵箶箺箻箼箽篂篅篈篊篔篖篗篙篚篛篨篪篲篴篵篸篹篺篼篾簁簂簃簄簆簉簋簌簎簏簙簛簠簥簦簨簬簱簳簴簶簹簺籆籊籕籑籒籓籙籚籛籜籝籞����������������������������������辧劬劭劼劵勁勍勗勞勣勦飭勠勳勵勸勹匆匈甸匍匐匏匕匚匣匯匱匳匸區卆卅丗卉卍凖卞卩卮夘卻卷厂厖厠厦厥厮厰厶參簒雙叟曼燮叮叨叭叺吁吽呀听吭吼吮吶吩吝呎咏呵咎呟呱呷呰咒呻咀呶咄咐咆哇咢咸咥咬哄哈咨�\".split(\"\");\nfor(j = 0; j != D[210].length; ++j) if(D[210][j].charCodeAt(0) !== 0xFFFD) { e[D[210][j]] = 53760 + j; d[53760 + j] = D[210][j];}\nD[211] = \"���������������������������������籡籣籧籩籭籮籰籲籹籼籽粆粇粏粔粞粠粦粰粶粷粺粻粼粿糄糇糈糉糍糏糓糔糕糗糙糚糝糦糩糫糵紃紇紈紉紏紑紒紓紖紝紞紣紦紪紭紱紼紽紾絀絁絇絈絍絑絓絗絙絚絜絝絥絧絪絰絸絺絻絿綁綂綃綅綆綈綋綌綍綑綖綗綝����������������������������������咫哂咤咾咼哘哥哦唏唔哽哮哭哺哢唹啀啣啌售啜啅啖啗唸唳啝喙喀咯喊喟啻啾喘喞單啼喃喩喇喨嗚嗅嗟嗄嗜嗤嗔嘔嗷嘖嗾嗽嘛嗹噎噐營嘴嘶嘲嘸噫噤嘯噬噪嚆嚀嚊嚠嚔嚏嚥嚮嚶嚴囂嚼囁囃囀囈囎囑囓囗囮囹圀囿圄圉�\".split(\"\");\nfor(j = 0; j != D[211].length; ++j) if(D[211][j].charCodeAt(0) !== 0xFFFD) { e[D[211][j]] = 54016 + j; d[54016 + j] = D[211][j];}\nD[212] = \"���������������������������������綞綦綧綪綳綶綷綹緂緃緄緅緆緌緍緎緗緙縀緢緥緦緪緫緭緱緵緶緹緺縈縐縑縕縗縜縝縠縧縨縬縭縯縳縶縿繄繅繇繎繐繒繘繟繡繢繥繫繮繯繳繸繾纁纆纇纊纍纑纕纘纚纝纞缼缻缽缾缿罃罄罇罏罒罓罛罜罝罡罣罤罥罦罭����������������������������������圈國圍圓團圖嗇圜圦圷圸坎圻址坏坩埀垈坡坿垉垓垠垳垤垪垰埃埆埔埒埓堊埖埣堋堙堝塲堡塢塋塰毀塒堽塹墅墹墟墫墺壞墻墸墮壅壓壑壗壙壘壥壜壤壟壯壺壹壻壼壽夂夊夐夛梦夥夬夭夲夸夾竒奕奐奎奚奘奢奠奧奬奩�\".split(\"\");\nfor(j = 0; j != D[212].length; ++j) if(D[212][j].charCodeAt(0) !== 0xFFFD) { e[D[212][j]] = 54272 + j; d[54272 + j] = D[212][j];}\nD[213] = \"���������������������������������罱罽罾罿羀羋羍羏羐羑羖羗羜羡羢羦羪羭羴羼羿翀翃翈翎翏翛翟翣翥翨翬翮翯翲翺翽翾翿耇耈耊耍耎耏耑耓耔耖耝耞耟耠耤耦耬耮耰耴耵耷耹耺耼耾聀聄聠聤聦聭聱聵肁肈肎肜肞肦肧肫肸肹胈胍胏胒胔胕胗胘胠胭胮����������������������������������奸妁妝佞侫妣妲姆姨姜妍姙姚娥娟娑娜娉娚婀婬婉娵娶婢婪媚媼媾嫋嫂媽嫣嫗嫦嫩嫖嫺嫻嬌嬋嬖嬲嫐嬪嬶嬾孃孅孀孑孕孚孛孥孩孰孳孵學斈孺宀它宦宸寃寇寉寔寐寤實寢寞寥寫寰寶寳尅將專對尓尠尢尨尸尹屁屆屎屓�\".split(\"\");\nfor(j = 0; j != D[213].length; ++j) if(D[213][j].charCodeAt(0) !== 0xFFFD) { e[D[213][j]] = 54528 + j; d[54528 + j] = D[213][j];}\nD[214] = \"���������������������������������胰胲胳胶胹胺胾脃脋脖脗脘脜脞脠脤脧脬脰脵脺脼腅腇腊腌腒腗腠腡腧腨腩腭腯腷膁膐膄膅膆膋膎膖膘膛膞膢膮膲膴膻臋臃臅臊臎臏臕臗臛臝臞臡臤臫臬臰臱臲臵臶臸臹臽臿舀舃舏舓舔舙舚舝舡舢舨舲舴舺艃艄艅艆����������������������������������屐屏孱屬屮乢屶屹岌岑岔妛岫岻岶岼岷峅岾峇峙峩峽峺峭嶌峪崋崕崗嵜崟崛崑崔崢崚崙崘嵌嵒嵎嵋嵬嵳嵶嶇嶄嶂嶢嶝嶬嶮嶽嶐嶷嶼巉巍巓巒巖巛巫已巵帋帚帙帑帛帶帷幄幃幀幎幗幔幟幢幤幇幵并幺麼广庠廁廂廈廐廏�\".split(\"\");\nfor(j = 0; j != D[214].length; ++j) if(D[214][j].charCodeAt(0) !== 0xFFFD) { e[D[214][j]] = 54784 + j; d[54784 + j] = D[214][j];}\nD[215] = \"���������������������������������艋艎艏艑艖艜艠艣艧艭艴艻艽艿芀芁芃芄芇芉芊芎芑芔芖芘芚芛芠芡芣芤芧芨芩芪芮芰芲芴芷芺芼芾芿苆苐苕苚苠苢苤苨苪苭苯苶苷苽苾茀茁茇茈茊茋荔茛茝茞茟茡茢茬茭茮茰茳茷茺茼茽荂荃荄荇荍荎荑荕荖荗荰荸����������������������������������廖廣廝廚廛廢廡廨廩廬廱廳廰廴廸廾弃弉彝彜弋弑弖弩弭弸彁彈彌彎弯彑彖彗彙彡彭彳彷徃徂彿徊很徑徇從徙徘徠徨徭徼忖忻忤忸忱忝悳忿怡恠怙怐怩怎怱怛怕怫怦怏怺恚恁恪恷恟恊恆恍恣恃恤恂恬恫恙悁悍惧悃悚�\".split(\"\");\nfor(j = 0; j != D[215].length; ++j) if(D[215][j].charCodeAt(0) !== 0xFFFD) { e[D[215][j]] = 55040 + j; d[55040 + j] = D[215][j];}\nD[216] = \"���������������������������������荽荿莀莂莄莆莍莒莔莕莘莙莛莜莝莦莧莩莬莾莿菀菇菉菏菐菑菔菝荓菨菪菶菸菹菼萁萆萊萏萑萕萙莭萯萹葅葇葈葊葍葏葑葒葖葘葙葚葜葠葤葥葧葪葰葳葴葶葸葼葽蒁蒅蒒蒓蒕蒞蒦蒨蒩蒪蒯蒱蒴蒺蒽蒾蓀蓂蓇蓈蓌蓏蓓����������������������������������悄悛悖悗悒悧悋惡悸惠惓悴忰悽惆悵惘慍愕愆惶惷愀惴惺愃愡惻惱愍愎慇愾愨愧慊愿愼愬愴愽慂慄慳慷慘慙慚慫慴慯慥慱慟慝慓慵憙憖憇憬憔憚憊憑憫憮懌懊應懷懈懃懆憺懋罹懍懦懣懶懺懴懿懽懼懾戀戈戉戍戌戔戛�\".split(\"\");\nfor(j = 0; j != D[216].length; ++j) if(D[216][j].charCodeAt(0) !== 0xFFFD) { e[D[216][j]] = 55296 + j; d[55296 + j] = D[216][j];}\nD[217] = \"���������������������������������蓜蓧蓪蓯蓰蓱蓲蓷蔲蓺蓻蓽蔂蔃蔇蔌蔎蔐蔜蔞蔢蔣蔤蔥蔧蔪蔫蔯蔳蔴蔶蔿蕆蕏蕐蕑蕒蕓蕖蕙蕜蕝蕞蕟蕠蕡蕢蕤蕫蕯蕹蕺蕻蕽蕿薁薅薆薉薋薌薏薓薘薝薟薠薢薥薧薴薶薷薸薼薽薾薿藂藇藊藋藎薭藘藚藟藠藦藨藭藳藶藼����������������������������������戞戡截戮戰戲戳扁扎扞扣扛扠扨扼抂抉找抒抓抖拔抃抔拗拑抻拏拿拆擔拈拜拌拊拂拇抛拉挌拮拱挧挂挈拯拵捐挾捍搜捏掖掎掀掫捶掣掏掉掟掵捫捩掾揩揀揆揣揉插揶揄搖搴搆搓搦搶攝搗搨搏摧摯摶摎攪撕撓撥撩撈撼�\".split(\"\");\nfor(j = 0; j != D[217].length; ++j) if(D[217][j].charCodeAt(0) !== 0xFFFD) { e[D[217][j]] = 55552 + j; d[55552 + j] = D[217][j];}\nD[218] = \"���������������������������������藿蘀蘄蘅蘍蘎蘐蘑蘒蘘蘙蘛蘞蘡蘧蘩蘶蘸蘺蘼蘽虀虂虆虒虓虖虗虘虙虝虠虡虢虣虤虩虬虯虵虶虷虺蚍蚑蚖蚘蚚蚜蚡蚦蚧蚨蚭蚱蚳蚴蚵蚷蚸蚹蚿蛀蛁蛃蛅蛑蛒蛕蛗蛚蛜蛠蛣蛥蛧蚈蛺蛼蛽蜄蜅蜇蜋蜎蜏蜐蜓蜔蜙蜞蜟蜡蜣����������������������������������據擒擅擇撻擘擂擱擧舉擠擡抬擣擯攬擶擴擲擺攀擽攘攜攅攤攣攫攴攵攷收攸畋效敖敕敍敘敞敝敲數斂斃變斛斟斫斷旃旆旁旄旌旒旛旙无旡旱杲昊昃旻杳昵昶昴昜晏晄晉晁晞晝晤晧晨晟晢晰暃暈暎暉暄暘暝曁暹曉暾暼�\".split(\"\");\nfor(j = 0; j != D[218].length; ++j) if(D[218][j].charCodeAt(0) !== 0xFFFD) { e[D[218][j]] = 55808 + j; d[55808 + j] = D[218][j];}\nD[219] = \"���������������������������������蜨蜮蜯蜱蜲蜹蜺蜼蜽蜾蝀蝃蝅蝍蝘蝝蝡蝤蝥蝯蝱蝲蝻螃螄螅螆螇螈螉螋螌螐螓螕螗螘螙螞螠螣螧螬螭螮螱螵螾螿蟁蟈蟉蟊蟎蟕蟖蟙蟚蟜蟟蟢蟣蟤蟪蟫蟭蟱蟳蟸蟺蟿蠁蠃蠆蠉蠊蠋蠐蠙蠒蠓蠔蠘蠚蠛蠜蠞蠟蠨蠭蠮蠰蠲蠵����������������������������������曄暸曖曚曠昿曦曩曰曵曷朏朖朞朦朧霸朮朿朶杁朸朷杆杞杠杙杣杤枉杰枩杼杪枌枋枦枡枅枷柯枴柬枳柩枸柤柞柝柢柮枹柎柆柧檜栞框栩桀桍栲桎梳栫桙档桷桿梟梏梭梔條梛梃檮梹桴梵梠梺椏梍桾椁棊椈棘椢椦棡椌棍�\".split(\"\");\nfor(j = 0; j != D[219].length; ++j) if(D[219][j].charCodeAt(0) !== 0xFFFD) { e[D[219][j]] = 56064 + j; d[56064 + j] = D[219][j];}\nD[220] = \"���������������������������������蠺蠼衁衃衅衈衉衊衋衎衑衕衖衘衚衜衟衠衤衩衱衹衻袀袘袚袛袜袟袠袨袪袺袽袾裀裊裋裌裍裎裑裒裓裛裞裧裯裰裱裵裷褁褆褍褎褏褕褖褘褙褚褜褠褦褧褨褰褱褲褵褹褺褾襀襂襅襆襉襏襒襗襚襛襜襡襢襣襫襮襰襳襵襺����������������������������������棔棧棕椶椒椄棗棣椥棹棠棯椨椪椚椣椡棆楹楷楜楸楫楔楾楮椹楴椽楙椰楡楞楝榁楪榲榮槐榿槁槓榾槎寨槊槝榻槃榧樮榑榠榜榕榴槞槨樂樛槿權槹槲槧樅榱樞槭樔槫樊樒櫁樣樓橄樌橲樶橸橇橢橙橦橈樸樢檐檍檠檄檢檣�\".split(\"\");\nfor(j = 0; j != D[220].length; ++j) if(D[220][j].charCodeAt(0) !== 0xFFFD) { e[D[220][j]] = 56320 + j; d[56320 + j] = D[220][j];}\nD[221] = \"���������������������������������襻襼襽覉覍覐覔覕覛覜覟覠覥覰覴覵覶覷覼觔觕觖觗觘觥觩觫觭觱觳觶觹觽觿訄訅訇訏訑訒訔訕訞訠訢訤訦訫訬訯訵訷訽訾詀詃詅詇詉詍詎詓詖詗詘詜詝詡詥詧詵詶詷詹詺詻詾詿誀誃誆誋誏誐誒誖誗誙誟誧誩誮誯誳����������������������������������檗蘗檻櫃櫂檸檳檬櫞櫑櫟檪櫚櫪櫻欅蘖櫺欒欖鬱欟欸欷盜欹飮歇歃歉歐歙歔歛歟歡歸歹歿殀殄殃殍殘殕殞殤殪殫殯殲殱殳殷殼毆毋毓毟毬毫毳毯麾氈氓气氛氤氣汞汕汢汪沂沍沚沁沛汾汨汳沒沐泄泱泓沽泗泅泝沮沱沾�\".split(\"\");\nfor(j = 0; j != D[221].length; ++j) if(D[221][j].charCodeAt(0) !== 0xFFFD) { e[D[221][j]] = 56576 + j; d[56576 + j] = D[221][j];}\nD[222] = \"���������������������������������誶誷誻誾諃諆諈諉諊諑諓諔諕諗諝諟諬諰諴諵諶諼諿謅謆謋謑謜謞謟謊謭謰謷謼譂譃譄譅譆譈譒譓譔譙譍譞譣譭譶譸譹譼譾讁讄讅讋讍讏讔讕讜讞讟谸谹谽谾豅豇豉豋豏豑豓豔豗豘豛豝豙豣豤豦豨豩豭豳豵豶豻豾貆����������������������������������沺泛泯泙泪洟衍洶洫洽洸洙洵洳洒洌浣涓浤浚浹浙涎涕濤涅淹渕渊涵淇淦涸淆淬淞淌淨淒淅淺淙淤淕淪淮渭湮渮渙湲湟渾渣湫渫湶湍渟湃渺湎渤滿渝游溂溪溘滉溷滓溽溯滄溲滔滕溏溥滂溟潁漑灌滬滸滾漿滲漱滯漲滌�\".split(\"\");\nfor(j = 0; j != D[222].length; ++j) if(D[222][j].charCodeAt(0) !== 0xFFFD) { e[D[222][j]] = 56832 + j; d[56832 + j] = D[222][j];}\nD[223] = \"���������������������������������貇貋貐貒貓貙貛貜貤貹貺賅賆賉賋賏賖賕賙賝賡賨賬賯賰賲賵賷賸賾賿贁贃贉贒贗贛赥赩赬赮赿趂趄趈趍趐趑趕趞趟趠趦趫趬趯趲趵趷趹趻跀跅跆跇跈跊跎跑跔跕跗跙跤跥跧跬跰趼跱跲跴跽踁踄踅踆踋踑踔踖踠踡踢����������������������������������漾漓滷澆潺潸澁澀潯潛濳潭澂潼潘澎澑濂潦澳澣澡澤澹濆澪濟濕濬濔濘濱濮濛瀉瀋濺瀑瀁瀏濾瀛瀚潴瀝瀘瀟瀰瀾瀲灑灣炙炒炯烱炬炸炳炮烟烋烝烙焉烽焜焙煥煕熈煦煢煌煖煬熏燻熄熕熨熬燗熹熾燒燉燔燎燠燬燧燵燼�\".split(\"\");\nfor(j = 0; j != D[223].length; ++j) if(D[223][j].charCodeAt(0) !== 0xFFFD) { e[D[223][j]] = 57088 + j; d[57088 + j] = D[223][j];}\nD[224] = \"���������������������������������踣踦踧踱踳踶踷踸踹踽蹀蹁蹋蹍蹎蹏蹔蹛蹜蹝蹞蹡蹢蹩蹬蹭蹯蹰蹱蹹蹺蹻躂躃躉躐躒躕躚躛躝躞躢躧躩躭躮躳躵躺躻軀軁軃軄軇軏軑軔軜軨軮軰軱軷軹軺軭輀輂輇輈輏輐輖輗輘輞輠輡輣輥輧輨輬輭輮輴輵輶輷輺轀轁����������������������������������燹燿爍爐爛爨爭爬爰爲爻爼爿牀牆牋牘牴牾犂犁犇犒犖犢犧犹犲狃狆狄狎狒狢狠狡狹狷倏猗猊猜猖猝猴猯猩猥猾獎獏默獗獪獨獰獸獵獻獺珈玳珎玻珀珥珮珞璢琅瑯琥珸琲琺瑕琿瑟瑙瑁瑜瑩瑰瑣瑪瑶瑾璋璞璧瓊瓏瓔珱�\".split(\"\");\nfor(j = 0; j != D[224].length; ++j) if(D[224][j].charCodeAt(0) !== 0xFFFD) { e[D[224][j]] = 57344 + j; d[57344 + j] = D[224][j];}\nD[225] = \"���������������������������������轃轇轏轑轒轓轔轕轘轝轞轥辝辠辡辤辥辦辵辶辸达迀迁迆迊迋迍运迒迓迕迠迣迤迨迮迱迵迶迻迾适逄逈逌逘逛逨逩逯逪逬逭逳逴逷逿遃遄遌遛遝遢遦遧遬遰遴遹邅邈邋邌邎邐邕邗邘邙邛邠邡邢邥邰邲邳邴邶邽郌邾郃����������������������������������瓠瓣瓧瓩瓮瓲瓰瓱瓸瓷甄甃甅甌甎甍甕甓甞甦甬甼畄畍畊畉畛畆畚畩畤畧畫畭畸當疆疇畴疊疉疂疔疚疝疥疣痂疳痃疵疽疸疼疱痍痊痒痙痣痞痾痿痼瘁痰痺痲痳瘋瘍瘉瘟瘧瘠瘡瘢瘤瘴瘰瘻癇癈癆癜癘癡癢癨癩癪癧癬癰�\".split(\"\");\nfor(j = 0; j != D[225].length; ++j) if(D[225][j].charCodeAt(0) !== 0xFFFD) { e[D[225][j]] = 57600 + j; d[57600 + j] = D[225][j];}\nD[226] = \"���������������������������������郄郅郇郈郕郗郘郙郜郝郟郥郒郶郫郯郰郴郾郿鄀鄄鄅鄆鄈鄍鄐鄔鄖鄗鄘鄚鄜鄞鄠鄥鄢鄣鄧鄩鄮鄯鄱鄴鄶鄷鄹鄺鄼鄽酃酇酈酏酓酗酙酚酛酡酤酧酭酴酹酺酻醁醃醅醆醊醎醑醓醔醕醘醞醡醦醨醬醭醮醰醱醲醳醶醻醼醽醿����������������������������������癲癶癸發皀皃皈皋皎皖皓皙皚皰皴皸皹皺盂盍盖盒盞盡盥盧盪蘯盻眈眇眄眩眤眞眥眦眛眷眸睇睚睨睫睛睥睿睾睹瞎瞋瞑瞠瞞瞰瞶瞹瞿瞼瞽瞻矇矍矗矚矜矣矮矼砌砒礦砠礪硅碎硴碆硼碚碌碣碵碪碯磑磆磋磔碾碼磅磊磬�\".split(\"\");\nfor(j = 0; j != D[226].length; ++j) if(D[226][j].charCodeAt(0) !== 0xFFFD) { e[D[226][j]] = 57856 + j; d[57856 + j] = D[226][j];}\nD[227] = \"���������������������������������釂釃釅釓釔釗釙釚釞釤釥釩釪釬釭釮釯釰釱釷釹釻釽鈀鈁鈄鈅鈆鈇鈉鈊鈌鈐鈒鈓鈖鈘鈜鈝鈣鈤鈥鈦鈨鈮鈯鈰鈳鈵鈶鈸鈹鈺鈼鈾鉀鉂鉃鉆鉇鉊鉍鉎鉏鉑鉘鉙鉜鉝鉠鉡鉥鉧鉨鉩鉮鉯鉰鉵鉶鉷鉸鉹鉻鉼鉽鉿銈銉銊銍銎銒銗����������������������������������磧磚磽磴礇礒礑礙礬礫祀祠祗祟祚祕祓祺祿禊禝禧齋禪禮禳禹禺秉秕秧秬秡秣稈稍稘稙稠稟禀稱稻稾稷穃穗穉穡穢穩龝穰穹穽窈窗窕窘窖窩竈窰窶竅竄窿邃竇竊竍竏竕竓站竚竝竡竢竦竭竰笂笏笊笆笳笘笙笞笵笨笶筐�\".split(\"\");\nfor(j = 0; j != D[227].length; ++j) if(D[227][j].charCodeAt(0) !== 0xFFFD) { e[D[227][j]] = 58112 + j; d[58112 + j] = D[227][j];}\nD[228] = \"���������������������������������銙銟銠銤銥銧銨銫銯銲銶銸銺銻銼銽銿鋀鋁鋂鋃鋅鋆鋇鋈鋋鋌鋍鋎鋐鋓鋕鋗鋘鋙鋜鋝鋟鋠鋡鋣鋥鋧鋨鋬鋮鋰鋹鋻鋿錀錂錈錍錑錔錕錜錝錞錟錡錤錥錧錩錪錳錴錶錷鍇鍈鍉鍐鍑鍒鍕鍗鍘鍚鍞鍤鍥鍧鍩鍪鍭鍯鍰鍱鍳鍴鍶����������������������������������筺笄筍笋筌筅筵筥筴筧筰筱筬筮箝箘箟箍箜箚箋箒箏筝箙篋篁篌篏箴篆篝篩簑簔篦篥籠簀簇簓篳篷簗簍篶簣簧簪簟簷簫簽籌籃籔籏籀籐籘籟籤籖籥籬籵粃粐粤粭粢粫粡粨粳粲粱粮粹粽糀糅糂糘糒糜糢鬻糯糲糴糶糺紆�\".split(\"\");\nfor(j = 0; j != D[228].length; ++j) if(D[228][j].charCodeAt(0) !== 0xFFFD) { e[D[228][j]] = 58368 + j; d[58368 + j] = D[228][j];}\nD[229] = \"���������������������������������鍺鍽鍿鎀鎁鎂鎈鎊鎋鎍鎏鎒鎕鎘鎛鎞鎡鎣鎤鎦鎨鎫鎴鎵鎶鎺鎩鏁鏄鏅鏆鏇鏉鏊鏋鏌鏍鏓鏙鏜鏞鏟鏢鏦鏧鏹鏷鏸鏺鏻鏽鐁鐂鐄鐈鐉鐍鐎鐏鐕鐖鐗鐟鐮鐯鐱鐲鐳鐴鐻鐿鐽鑃鑅鑈鑊鑌鑕鑙鑜鑟鑡鑣鑨鑫鑭鑮鑯鑱鑲钄钃镸镹����������������������������������紂紜紕紊絅絋紮紲紿紵絆絳絖絎絲絨絮絏絣經綉絛綏絽綛綺綮綣綵緇綽綫總綢綯緜綸綟綰緘緝緤緞緻緲緡縅縊縣縡縒縱縟縉縋縢繆繦縻縵縹繃縷縲縺繧繝繖繞繙繚繹繪繩繼繻纃緕繽辮繿纈纉續纒纐纓纔纖纎纛纜缸缺�\".split(\"\");\nfor(j = 0; j != D[229].length; ++j) if(D[229][j].charCodeAt(0) !== 0xFFFD) { e[D[229][j]] = 58624 + j; d[58624 + j] = D[229][j];}\nD[230] = \"���������������������������������镾閄閈閌閍閎閝閞閟閡閦閩閫閬閴閶閺閽閿闆闈闉闋闐闑闒闓闙闚闝闞闟闠闤闦阝阞阢阤阥阦阬阱阳阷阸阹阺阼阽陁陒陔陖陗陘陡陮陴陻陼陾陿隁隂隃隄隉隑隖隚隝隟隤隥隦隩隮隯隳隺雊雒嶲雘雚雝雞雟雩雯雱雺霂����������������������������������罅罌罍罎罐网罕罔罘罟罠罨罩罧罸羂羆羃羈羇羌羔羞羝羚羣羯羲羹羮羶羸譱翅翆翊翕翔翡翦翩翳翹飜耆耄耋耒耘耙耜耡耨耿耻聊聆聒聘聚聟聢聨聳聲聰聶聹聽聿肄肆肅肛肓肚肭冐肬胛胥胙胝胄胚胖脉胯胱脛脩脣脯腋�\".split(\"\");\nfor(j = 0; j != D[230].length; ++j) if(D[230][j].charCodeAt(0) !== 0xFFFD) { e[D[230][j]] = 58880 + j; d[58880 + j] = D[230][j];}\nD[231] = \"���������������������������������霃霅霉霚霛霝霡霢霣霨霱霳靁靃靊靎靏靕靗靘靚靛靣靧靪靮靳靶靷靸靻靽靿鞀鞉鞕鞖鞗鞙鞚鞞鞟鞢鞬鞮鞱鞲鞵鞶鞸鞹鞺鞼鞾鞿韁韄韅韇韉韊韌韍韎韐韑韔韗韘韙韝韞韠韛韡韤韯韱韴韷韸韺頇頊頙頍頎頔頖頜頞頠頣頦����������������������������������隋腆脾腓腑胼腱腮腥腦腴膃膈膊膀膂膠膕膤膣腟膓膩膰膵膾膸膽臀臂膺臉臍臑臙臘臈臚臟臠臧臺臻臾舁舂舅與舊舍舐舖舩舫舸舳艀艙艘艝艚艟艤艢艨艪艫舮艱艷艸艾芍芒芫芟芻芬苡苣苟苒苴苳苺莓范苻苹苞茆苜茉苙�\".split(\"\");\nfor(j = 0; j != D[231].length; ++j) if(D[231][j].charCodeAt(0) !== 0xFFFD) { e[D[231][j]] = 59136 + j; d[59136 + j] = D[231][j];}\nD[232] = \"���������������������������������頫頮頯頰頲頳頵頥頾顄顇顊顑顒顓顖顗顙顚顢顣顥顦顪顬颫颭颮颰颴颷颸颺颻颿飂飅飈飌飡飣飥飦飧飪飳飶餂餇餈餑餕餖餗餚餛餜餟餢餦餧餫餱餲餳餴餵餹餺餻餼饀饁饆饇饈饍饎饔饘饙饛饜饞饟饠馛馝馟馦馰馱馲馵����������������������������������茵茴茖茲茱荀茹荐荅茯茫茗茘莅莚莪莟莢莖茣莎莇莊荼莵荳荵莠莉莨菴萓菫菎菽萃菘萋菁菷萇菠菲萍萢萠莽萸蔆菻葭萪萼蕚蒄葷葫蒭葮蒂葩葆萬葯葹萵蓊葢蒹蒿蒟蓙蓍蒻蓚蓐蓁蓆蓖蒡蔡蓿蓴蔗蔘蔬蔟蔕蔔蓼蕀蕣蕘蕈�\".split(\"\");\nfor(j = 0; j != D[232].length; ++j) if(D[232][j].charCodeAt(0) !== 0xFFFD) { e[D[232][j]] = 59392 + j; d[59392 + j] = D[232][j];}\nD[233] = \"���������������������������������馹馺馽馿駃駉駓駔駙駚駜駞駧駪駫駬駰駴駵駹駽駾騂騃騄騋騌騐騑騖騞騠騢騣騤騧騭騮騳騵騶騸驇驁驄驊驋驌驎驑驔驖驝骪骬骮骯骲骴骵骶骹骻骾骿髁髃髆髈髎髐髒髕髖髗髛髜髠髤髥髧髩髬髲髳髵髹髺髽髿鬀鬁鬂鬃����������������������������������蕁蘂蕋蕕薀薤薈薑薊薨蕭薔薛藪薇薜蕷蕾薐藉薺藏薹藐藕藝藥藜藹蘊蘓蘋藾藺蘆蘢蘚蘰蘿虍乕虔號虧虱蚓蚣蚩蚪蚋蚌蚶蚯蛄蛆蚰蛉蠣蚫蛔蛞蛩蛬蛟蛛蛯蜒蜆蜈蜀蜃蛻蜑蜉蜍蛹蜊蜴蜿蜷蜻蜥蜩蜚蝠蝟蝸蝌蝎蝴蝗蝨蝮蝙�\".split(\"\");\nfor(j = 0; j != D[233].length; ++j) if(D[233][j].charCodeAt(0) !== 0xFFFD) { e[D[233][j]] = 59648 + j; d[59648 + j] = D[233][j];}\nD[234] = \"���������������������������������鬄鬅鬈鬉鬋鬌鬍鬎鬐鬒鬖鬙鬛鬜鬠鬦鬫鬭鬳鬴鬵鬷鬹鬺鬽魈魋魌魕魖魗魛魞魡魣魥魦魨魪魫魬魭魮魳魵魷魸魹魿鮀鮄鮅鮆鮇鮉鮊鮋鮍鮏鮐鮔鮚鮝鮞鮦鮧鮩鮬鮰鮱鮲鮷鮸鮻鮼鮾鮿鯁鯇鯈鯎鯐鯗鯘鯝鯟鯥鯧鯪鯫鯯鯳鯷鯸����������������������������������蝓蝣蝪蠅螢螟螂螯蟋螽蟀蟐雖螫蟄螳蟇蟆螻蟯蟲蟠蠏蠍蟾蟶蟷蠎蟒蠑蠖蠕蠢蠡蠱蠶蠹蠧蠻衄衂衒衙衞衢衫袁衾袞衵衽袵衲袂袗袒袮袙袢袍袤袰袿袱裃裄裔裘裙裝裹褂裼裴裨裲褄褌褊褓襃褞褥褪褫襁襄褻褶褸襌褝襠襞�\".split(\"\");\nfor(j = 0; j != D[234].length; ++j) if(D[234][j].charCodeAt(0) !== 0xFFFD) { e[D[234][j]] = 59904 + j; d[59904 + j] = D[234][j];}\nD[235] = \"���������������������������������鯹鯺鯽鯿鰀鰂鰋鰏鰑鰖鰘鰙鰚鰜鰞鰢鰣鰦鰧鰨鰩鰪鰱鰵鰶鰷鰽鱁鱃鱄鱅鱉鱊鱎鱏鱐鱓鱔鱖鱘鱛鱝鱞鱟鱣鱩鱪鱜鱫鱨鱮鱰鱲鱵鱷鱻鳦鳲鳷鳹鴋鴂鴑鴗鴘鴜鴝鴞鴯鴰鴲鴳鴴鴺鴼鵅鴽鵂鵃鵇鵊鵓鵔鵟鵣鵢鵥鵩鵪鵫鵰鵶鵷鵻����������������������������������襦襤襭襪襯襴襷襾覃覈覊覓覘覡覩覦覬覯覲覺覽覿觀觚觜觝觧觴觸訃訖訐訌訛訝訥訶詁詛詒詆詈詼詭詬詢誅誂誄誨誡誑誥誦誚誣諄諍諂諚諫諳諧諤諱謔諠諢諷諞諛謌謇謚諡謖謐謗謠謳鞫謦謫謾謨譁譌譏譎證譖譛譚譫�\".split(\"\");\nfor(j = 0; j != D[235].length; ++j) if(D[235][j].charCodeAt(0) !== 0xFFFD) { e[D[235][j]] = 60160 + j; d[60160 + j] = D[235][j];}\nD[236] = \"���������������������������������鵼鵾鶃鶄鶆鶊鶍鶎鶒鶓鶕鶖鶗鶘鶡鶪鶬鶮鶱鶵鶹鶼鶿鷃鷇鷉鷊鷔鷕鷖鷗鷚鷞鷟鷠鷥鷧鷩鷫鷮鷰鷳鷴鷾鸊鸂鸇鸎鸐鸑鸒鸕鸖鸙鸜鸝鹺鹻鹼麀麂麃麄麅麇麎麏麖麘麛麞麤麨麬麮麯麰麳麴麵黆黈黋黕黟黤黧黬黭黮黰黱黲黵����������������������������������譟譬譯譴譽讀讌讎讒讓讖讙讚谺豁谿豈豌豎豐豕豢豬豸豺貂貉貅貊貍貎貔豼貘戝貭貪貽貲貳貮貶賈賁賤賣賚賽賺賻贄贅贊贇贏贍贐齎贓賍贔贖赧赭赱赳趁趙跂趾趺跏跚跖跌跛跋跪跫跟跣跼踈踉跿踝踞踐踟蹂踵踰踴蹊�\".split(\"\");\nfor(j = 0; j != D[236].length; ++j) if(D[236][j].charCodeAt(0) !== 0xFFFD) { e[D[236][j]] = 60416 + j; d[60416 + j] = D[236][j];}\nD[237] = \"���������������������������������黸黿鼂鼃鼉鼏鼐鼑鼒鼔鼖鼗鼙鼚鼛鼟鼢鼦鼪鼫鼯鼱鼲鼴鼷鼹鼺鼼鼽鼿齁齃齄齅齆齇齓齕齖齗齘齚齝齞齨齩齭齮齯齰齱齳齵齺齽龏龐龑龒龔龖龗龞龡龢龣龥�������������������������������������������������������������蹇蹉蹌蹐蹈蹙蹤蹠踪蹣蹕蹶蹲蹼躁躇躅躄躋躊躓躑躔躙躪躡躬躰軆躱躾軅軈軋軛軣軼軻軫軾輊輅輕輒輙輓輜輟輛輌輦輳輻輹轅轂輾轌轉轆轎轗轜轢轣轤辜辟辣辭辯辷迚迥迢迪迯邇迴逅迹迺逑逕逡逍逞逖逋逧逶逵逹迸�\".split(\"\");\nfor(j = 0; j != D[237].length; ++j) if(D[237][j].charCodeAt(0) !== 0xFFFD) { e[D[237][j]] = 60672 + j; d[60672 + j] = D[237][j];}\nD[238] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������遏遐遑遒逎遉逾遖遘遞遨遯遶隨遲邂遽邁邀邊邉邏邨邯邱邵郢郤扈郛鄂鄒鄙鄲鄰酊酖酘酣酥酩酳酲醋醉醂醢醫醯醪醵醴醺釀釁釉釋釐釖釟釡釛釼釵釶鈞釿鈔鈬鈕鈑鉞鉗鉅鉉鉤鉈銕鈿鉋鉐銜銖銓銛鉚鋏銹銷鋩錏鋺鍄錮�\".split(\"\");\nfor(j = 0; j != D[238].length; ++j) if(D[238][j].charCodeAt(0) !== 0xFFFD) { e[D[238][j]] = 60928 + j; d[60928 + j] = D[238][j];}\nD[239] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������錙錢錚錣錺錵錻鍜鍠鍼鍮鍖鎰鎬鎭鎔鎹鏖鏗鏨鏥鏘鏃鏝鏐鏈鏤鐚鐔鐓鐃鐇鐐鐶鐫鐵鐡鐺鑁鑒鑄鑛鑠鑢鑞鑪鈩鑰鑵鑷鑽鑚鑼鑾钁鑿閂閇閊閔閖閘閙閠閨閧閭閼閻閹閾闊濶闃闍闌闕闔闖關闡闥闢阡阨阮阯陂陌陏陋陷陜陞�\".split(\"\");\nfor(j = 0; j != D[239].length; ++j) if(D[239][j].charCodeAt(0) !== 0xFFFD) { e[D[239][j]] = 61184 + j; d[61184 + j] = D[239][j];}\nD[240] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������陝陟陦陲陬隍隘隕隗險隧隱隲隰隴隶隸隹雎雋雉雍襍雜霍雕雹霄霆霈霓霎霑霏霖霙霤霪霰霹霽霾靄靆靈靂靉靜靠靤靦靨勒靫靱靹鞅靼鞁靺鞆鞋鞏鞐鞜鞨鞦鞣鞳鞴韃韆韈韋韜韭齏韲竟韶韵頏頌頸頤頡頷頽顆顏顋顫顯顰�\".split(\"\");\nfor(j = 0; j != D[240].length; ++j) if(D[240][j].charCodeAt(0) !== 0xFFFD) { e[D[240][j]] = 61440 + j; d[61440 + j] = D[240][j];}\nD[241] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������顱顴顳颪颯颱颶飄飃飆飩飫餃餉餒餔餘餡餝餞餤餠餬餮餽餾饂饉饅饐饋饑饒饌饕馗馘馥馭馮馼駟駛駝駘駑駭駮駱駲駻駸騁騏騅駢騙騫騷驅驂驀驃騾驕驍驛驗驟驢驥驤驩驫驪骭骰骼髀髏髑髓體髞髟髢髣髦髯髫髮髴髱髷�\".split(\"\");\nfor(j = 0; j != D[241].length; ++j) if(D[241][j].charCodeAt(0) !== 0xFFFD) { e[D[241][j]] = 61696 + j; d[61696 + j] = D[241][j];}\nD[242] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������髻鬆鬘鬚鬟鬢鬣鬥鬧鬨鬩鬪鬮鬯鬲魄魃魏魍魎魑魘魴鮓鮃鮑鮖鮗鮟鮠鮨鮴鯀鯊鮹鯆鯏鯑鯒鯣鯢鯤鯔鯡鰺鯲鯱鯰鰕鰔鰉鰓鰌鰆鰈鰒鰊鰄鰮鰛鰥鰤鰡鰰鱇鰲鱆鰾鱚鱠鱧鱶鱸鳧鳬鳰鴉鴈鳫鴃鴆鴪鴦鶯鴣鴟鵄鴕鴒鵁鴿鴾鵆鵈�\".split(\"\");\nfor(j = 0; j != D[242].length; ++j) if(D[242][j].charCodeAt(0) !== 0xFFFD) { e[D[242][j]] = 61952 + j; d[61952 + j] = D[242][j];}\nD[243] = \"���������������������������������ⅰⅱⅲⅳⅴⅵⅶⅷⅸⅹ����������＇＂���炻仼僴凬匇匤﨎咊坙﨏塚增寬峵嵓﨑德悅愠敎�晥晴朗栁﨓﨔橫櫢淸淲瀨凞猪甁皂皞益礰礼神祥福竧靖精綠緖羽荢﨟薰蘒﨡蠇諸譿賴赶﨣﨤逸郞都鄕﨧﨨閒隆����������������������������������鵝鵞鵤鵑鵐鵙鵲鶉鶇鶫鵯鵺鶚鶤鶩鶲鷄鷁鶻鶸鶺鷆鷏鷂鷙鷓鷸鷦鷭鷯鷽鸚鸛鸞鹵鹹鹽麁麈麋麌麒麕麑麝麥麩麸麪麭靡黌黎黏黐黔黜點黝黠黥黨黯黴黶黷黹黻黼黽鼇鼈皷鼕鼡鼬鼾齊齒齔齣齟齠齡齦齧齬齪齷齲齶龕龜龠�\".split(\"\");\nfor(j = 0; j != D[243].length; ++j) if(D[243][j].charCodeAt(0) !== 0xFFFD) { e[D[243][j]] = 62208 + j; d[62208 + j] = D[243][j];}\nD[244] = \"���������������������������������﨩霻�靑飯飼館馞髙魲鶴黑������������������������������������������������������靍�������������������������������������������������������������堯槇遙瑤凜熙�����������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[244].length; ++j) if(D[244][j].charCodeAt(0) !== 0xFFFD) { e[D[244][j]] = 62464 + j; d[62464 + j] = D[244][j];}\nD[245] = \"��������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[245].length; ++j) if(D[245][j].charCodeAt(0) !== 0xFFFD) { e[D[245][j]] = 62720 + j; d[62720 + j] = D[245][j];}\nD[246] = \"��������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[246].length; ++j) if(D[246][j].charCodeAt(0) !== 0xFFFD) { e[D[246][j]] = 62976 + j; d[62976 + j] = D[246][j];}\nD[247] = \"��������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[247].length; ++j) if(D[247][j].charCodeAt(0) !== 0xFFFD) { e[D[247][j]] = 63232 + j; d[63232 + j] = D[247][j];}\nD[248] = \"��������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[248].length; ++j) if(D[248][j].charCodeAt(0) !== 0xFFFD) { e[D[248][j]] = 63488 + j; d[63488 + j] = D[248][j];}\nD[249] = \"��������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[249].length; ++j) if(D[249][j].charCodeAt(0) !== 0xFFFD) { e[D[249][j]] = 63744 + j; d[63744 + j] = D[249][j];}\nD[250] = \"��������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[250].length; ++j) if(D[250][j].charCodeAt(0) !== 0xFFFD) { e[D[250][j]] = 64000 + j; d[64000 + j] = D[250][j];}\nD[251] = \"��������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[251].length; ++j) if(D[251][j].charCodeAt(0) !== 0xFFFD) { e[D[251][j]] = 64256 + j; d[64256 + j] = D[251][j];}\nD[252] = \"��������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[252].length; ++j) if(D[252][j].charCodeAt(0) !== 0xFFFD) { e[D[252][j]] = 64512 + j; d[64512 + j] = D[252][j];}\nD[253] = \"��������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[253].length; ++j) if(D[253][j].charCodeAt(0) !== 0xFFFD) { e[D[253][j]] = 64768 + j; d[64768 + j] = D[253][j];}\nD[254] = \"��������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[254].length; ++j) if(D[254][j].charCodeAt(0) !== 0xFFFD) { e[D[254][j]] = 65024 + j; d[65024 + j] = D[254][j];}\nreturn {\"enc\": e, \"dec\": d }; })();\ncptable[20936] = (function(){ var d = [], e = {}, D = [], j;\nD[0] = \"\\u0000\\u0001\\u0002\\u0003\\u0004\\u0005\\u0006\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\u0014\\u0015\\u0016\\u0017\\u0018\\u0019\\u001a\\u001b\\u001c\\u001d\\u001e\\u001f !\\\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~���������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[0].length; ++j) if(D[0][j].charCodeAt(0) !== 0xFFFD) { e[D[0][j]] = 0 + j; d[0 + j] = D[0][j];}\nD[161] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������　、。・ˉˇ¨〃々―～�…‘’“”〔〕〈〉《》「」『』〖〗【】±×÷∶∧∨∑∏∪∩∈∷√⊥∥∠⌒⊙∫∮≡≌≈∽∝≠≮≯≤≥∞∵∴♂♀°′″℃＄¤￠￡‰§№☆★○●◎◇◆□■△▲※→←↑↓〓�\".split(\"\");\nfor(j = 0; j != D[161].length; ++j) if(D[161][j].charCodeAt(0) !== 0xFFFD) { e[D[161][j]] = 41216 + j; d[41216 + j] = D[161][j];}\nD[162] = \"���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������⒈⒉⒊⒋⒌⒍⒎⒏⒐⒑⒒⒓⒔⒕⒖⒗⒘⒙⒚⒛⑴⑵⑶⑷⑸⑹⑺⑻⑼⑽⑾⑿⒀⒁⒂⒃⒄⒅⒆⒇①②③④⑤⑥⑦⑧⑨⑩��㈠㈡㈢㈣㈤㈥㈦㈧㈨㈩��ⅠⅡⅢⅣⅤⅥⅦⅧⅨⅩⅪⅫ���\".split(\"\");\nfor(j = 0; j != D[162].length; ++j) if(D[162][j].charCodeAt(0) !== 0xFFFD) { e[D[162][j]] = 41472 + j; d[41472 + j] = D[162][j];}\nD[163] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������！＂＃￥％＆＇（）＊＋，－．／０１２３４５６７８９：；＜＝＞？＠ＡＢＣＤＥＦＧＨＩＪＫＬＭＮＯＰＱＲＳＴＵＶＷＸＹＺ［＼］＾＿｀ａｂｃｄｅｆｇｈｉｊｋｌｍｎｏｐｑｒｓｔｕｖｗｘｙｚ｛｜｝￣�\".split(\"\");\nfor(j = 0; j != D[163].length; ++j) if(D[163][j].charCodeAt(0) !== 0xFFFD) { e[D[163][j]] = 41728 + j; d[41728 + j] = D[163][j];}\nD[164] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������ぁあぃいぅうぇえぉおかがきぎくぐけげこごさざしじすずせぜそぞただちぢっつづてでとどなにぬねのはばぱひびぴふぶぷへべぺほぼぽまみむめもゃやゅゆょよらりるれろゎわゐゑをん������������\".split(\"\");\nfor(j = 0; j != D[164].length; ++j) if(D[164][j].charCodeAt(0) !== 0xFFFD) { e[D[164][j]] = 41984 + j; d[41984 + j] = D[164][j];}\nD[165] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������ァアィイゥウェエォオカガキギクグケゲコゴサザシジスズセゼソゾタダチヂッツヅテデトドナニヌネノハバパヒビピフブプヘベペホボポマミムメモャヤュユョヨラリルレロヮワヰヱヲンヴヵヶ���������\".split(\"\");\nfor(j = 0; j != D[165].length; ++j) if(D[165][j].charCodeAt(0) !== 0xFFFD) { e[D[165][j]] = 42240 + j; d[42240 + j] = D[165][j];}\nD[166] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������ΑΒΓΔΕΖΗΘΙΚΛΜΝΞΟΠΡΣΤΥΦΧΨΩ��������αβγδεζηθικλμνξοπρστυφχψω���������������������������������������\".split(\"\");\nfor(j = 0; j != D[166].length; ++j) if(D[166][j].charCodeAt(0) !== 0xFFFD) { e[D[166][j]] = 42496 + j; d[42496 + j] = D[166][j];}\nD[167] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ���������������абвгдеёжзийклмнопрстуфхцчшщъыьэюя��������������\".split(\"\");\nfor(j = 0; j != D[167].length; ++j) if(D[167][j].charCodeAt(0) !== 0xFFFD) { e[D[167][j]] = 42752 + j; d[42752 + j] = D[167][j];}\nD[168] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������āáǎàēéěèīíǐìōóǒòūúǔùǖǘǚǜüê����������ㄅㄆㄇㄈㄉㄊㄋㄌㄍㄎㄏㄐㄑㄒㄓㄔㄕㄖㄗㄘㄙㄚㄛㄜㄝㄞㄟㄠㄡㄢㄣㄤㄥㄦㄧㄨㄩ����������������������\".split(\"\");\nfor(j = 0; j != D[168].length; ++j) if(D[168][j].charCodeAt(0) !== 0xFFFD) { e[D[168][j]] = 43008 + j; d[43008 + j] = D[168][j];}\nD[169] = \"��������������������������������������������������������������������������������������������������������������������������������������������������������������������─━│┃┄┅┆┇┈┉┊┋┌┍┎┏┐┑┒┓└┕┖┗┘┙┚┛├┝┞┟┠┡┢┣┤┥┦┧┨┩┪┫┬┭┮┯┰┱┲┳┴┵┶┷┸┹┺┻┼┽┾┿╀╁╂╃╄╅╆╇╈╉╊╋����������������\".split(\"\");\nfor(j = 0; j != D[169].length; ++j) if(D[169][j].charCodeAt(0) !== 0xFFFD) { e[D[169][j]] = 43264 + j; d[43264 + j] = D[169][j];}\nD[176] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������啊阿埃挨哎唉哀皑癌蔼矮艾碍爱隘鞍氨安俺按暗岸胺案肮昂盎凹敖熬翱袄傲奥懊澳芭捌扒叭吧笆八疤巴拔跋靶把耙坝霸罢爸白柏百摆佰败拜稗斑班搬扳般颁板版扮拌伴瓣半办绊邦帮梆榜膀绑棒磅蚌镑傍谤苞胞包褒剥�\".split(\"\");\nfor(j = 0; j != D[176].length; ++j) if(D[176][j].charCodeAt(0) !== 0xFFFD) { e[D[176][j]] = 45056 + j; d[45056 + j] = D[176][j];}\nD[177] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������薄雹保堡饱宝抱报暴豹鲍爆杯碑悲卑北辈背贝钡倍狈备惫焙被奔苯本笨崩绷甭泵蹦迸逼鼻比鄙笔彼碧蓖蔽毕毙毖币庇痹闭敝弊必辟壁臂避陛鞭边编贬扁便变卞辨辩辫遍标彪膘表鳖憋别瘪彬斌濒滨宾摈兵冰柄丙秉饼炳�\".split(\"\");\nfor(j = 0; j != D[177].length; ++j) if(D[177][j].charCodeAt(0) !== 0xFFFD) { e[D[177][j]] = 45312 + j; d[45312 + j] = D[177][j];}\nD[178] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������病并玻菠播拨钵波博勃搏铂箔伯帛舶脖膊渤泊驳捕卜哺补埠不布步簿部怖擦猜裁材才财睬踩采彩菜蔡餐参蚕残惭惨灿苍舱仓沧藏操糙槽曹草厕策侧册测层蹭插叉茬茶查碴搽察岔差诧拆柴豺搀掺蝉馋谗缠铲产阐颤昌猖�\".split(\"\");\nfor(j = 0; j != D[178].length; ++j) if(D[178][j].charCodeAt(0) !== 0xFFFD) { e[D[178][j]] = 45568 + j; d[45568 + j] = D[178][j];}\nD[179] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������场尝常长偿肠厂敞畅唱倡超抄钞朝嘲潮巢吵炒车扯撤掣彻澈郴臣辰尘晨忱沉陈趁衬撑称城橙成呈乘程惩澄诚承逞骋秤吃痴持匙池迟弛驰耻齿侈尺赤翅斥炽充冲虫崇宠抽酬畴踌稠愁筹仇绸瞅丑臭初出橱厨躇锄雏滁除楚�\".split(\"\");\nfor(j = 0; j != D[179].length; ++j) if(D[179][j].charCodeAt(0) !== 0xFFFD) { e[D[179][j]] = 45824 + j; d[45824 + j] = D[179][j];}\nD[180] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������础储矗搐触处揣川穿椽传船喘串疮窗幢床闯创吹炊捶锤垂春椿醇唇淳纯蠢戳绰疵茨磁雌辞慈瓷词此刺赐次聪葱囱匆从丛凑粗醋簇促蹿篡窜摧崔催脆瘁粹淬翠村存寸磋撮搓措挫错搭达答瘩打大呆歹傣戴带殆代贷袋待逮�\".split(\"\");\nfor(j = 0; j != D[180].length; ++j) if(D[180][j].charCodeAt(0) !== 0xFFFD) { e[D[180][j]] = 46080 + j; d[46080 + j] = D[180][j];}\nD[181] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������怠耽担丹单郸掸胆旦氮但惮淡诞弹蛋当挡党荡档刀捣蹈倒岛祷导到稻悼道盗德得的蹬灯登等瞪凳邓堤低滴迪敌笛狄涤翟嫡抵底地蒂第帝弟递缔颠掂滇碘点典靛垫电佃甸店惦奠淀殿碉叼雕凋刁掉吊钓调跌爹碟蝶迭谍叠�\".split(\"\");\nfor(j = 0; j != D[181].length; ++j) if(D[181][j].charCodeAt(0) !== 0xFFFD) { e[D[181][j]] = 46336 + j; d[46336 + j] = D[181][j];}\nD[182] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������丁盯叮钉顶鼎锭定订丢东冬董懂动栋侗恫冻洞兜抖斗陡豆逗痘都督毒犊独读堵睹赌杜镀肚度渡妒端短锻段断缎堆兑队对墩吨蹲敦顿囤钝盾遁掇哆多夺垛躲朵跺舵剁惰堕蛾峨鹅俄额讹娥恶厄扼遏鄂饿恩而儿耳尔饵洱二�\".split(\"\");\nfor(j = 0; j != D[182].length; ++j) if(D[182][j].charCodeAt(0) !== 0xFFFD) { e[D[182][j]] = 46592 + j; d[46592 + j] = D[182][j];}\nD[183] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������贰发罚筏伐乏阀法珐藩帆番翻樊矾钒繁凡烦反返范贩犯饭泛坊芳方肪房防妨仿访纺放菲非啡飞肥匪诽吠肺废沸费芬酚吩氛分纷坟焚汾粉奋份忿愤粪丰封枫蜂峰锋风疯烽逢冯缝讽奉凤佛否夫敷肤孵扶拂辐幅氟符伏俘服�\".split(\"\");\nfor(j = 0; j != D[183].length; ++j) if(D[183][j].charCodeAt(0) !== 0xFFFD) { e[D[183][j]] = 46848 + j; d[46848 + j] = D[183][j];}\nD[184] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������浮涪福袱弗甫抚辅俯釜斧脯腑府腐赴副覆赋复傅付阜父腹负富讣附妇缚咐噶嘎该改概钙盖溉干甘杆柑竿肝赶感秆敢赣冈刚钢缸肛纲岗港杠篙皋高膏羔糕搞镐稿告哥歌搁戈鸽胳疙割革葛格蛤阁隔铬个各给根跟耕更庚羹�\".split(\"\");\nfor(j = 0; j != D[184].length; ++j) if(D[184][j].charCodeAt(0) !== 0xFFFD) { e[D[184][j]] = 47104 + j; d[47104 + j] = D[184][j];}\nD[185] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������埂耿梗工攻功恭龚供躬公宫弓巩汞拱贡共钩勾沟苟狗垢构购够辜菇咕箍估沽孤姑鼓古蛊骨谷股故顾固雇刮瓜剐寡挂褂乖拐怪棺关官冠观管馆罐惯灌贯光广逛瑰规圭硅归龟闺轨鬼诡癸桂柜跪贵刽辊滚棍锅郭国果裹过哈�\".split(\"\");\nfor(j = 0; j != D[185].length; ++j) if(D[185][j].charCodeAt(0) !== 0xFFFD) { e[D[185][j]] = 47360 + j; d[47360 + j] = D[185][j];}\nD[186] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������骸孩海氦亥害骇酣憨邯韩含涵寒函喊罕翰撼捍旱憾悍焊汗汉夯杭航壕嚎豪毫郝好耗号浩呵喝荷菏核禾和何合盒貉阂河涸赫褐鹤贺嘿黑痕很狠恨哼亨横衡恒轰哄烘虹鸿洪宏弘红喉侯猴吼厚候后呼乎忽瑚壶葫胡蝴狐糊湖�\".split(\"\");\nfor(j = 0; j != D[186].length; ++j) if(D[186][j].charCodeAt(0) !== 0xFFFD) { e[D[186][j]] = 47616 + j; d[47616 + j] = D[186][j];}\nD[187] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������弧虎唬护互沪户花哗华猾滑画划化话槐徊怀淮坏欢环桓还缓换患唤痪豢焕涣宦幻荒慌黄磺蝗簧皇凰惶煌晃幌恍谎灰挥辉徽恢蛔回毁悔慧卉惠晦贿秽会烩汇讳诲绘荤昏婚魂浑混豁活伙火获或惑霍货祸击圾基机畸稽积箕�\".split(\"\");\nfor(j = 0; j != D[187].length; ++j) if(D[187][j].charCodeAt(0) !== 0xFFFD) { e[D[187][j]] = 47872 + j; d[47872 + j] = D[187][j];}\nD[188] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������肌饥迹激讥鸡姬绩缉吉极棘辑籍集及急疾汲即嫉级挤几脊己蓟技冀季伎祭剂悸济寄寂计记既忌际妓继纪嘉枷夹佳家加荚颊贾甲钾假稼价架驾嫁歼监坚尖笺间煎兼肩艰奸缄茧检柬碱硷拣捡简俭剪减荐槛鉴践贱见键箭件�\".split(\"\");\nfor(j = 0; j != D[188].length; ++j) if(D[188][j].charCodeAt(0) !== 0xFFFD) { e[D[188][j]] = 48128 + j; d[48128 + j] = D[188][j];}\nD[189] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������健舰剑饯渐溅涧建僵姜将浆江疆蒋桨奖讲匠酱降蕉椒礁焦胶交郊浇骄娇嚼搅铰矫侥脚狡角饺缴绞剿教酵轿较叫窖揭接皆秸街阶截劫节桔杰捷睫竭洁结解姐戒藉芥界借介疥诫届巾筋斤金今津襟紧锦仅谨进靳晋禁近烬浸�\".split(\"\");\nfor(j = 0; j != D[189].length; ++j) if(D[189][j].charCodeAt(0) !== 0xFFFD) { e[D[189][j]] = 48384 + j; d[48384 + j] = D[189][j];}\nD[190] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������尽劲荆兢茎睛晶鲸京惊精粳经井警景颈静境敬镜径痉靖竟竞净炯窘揪究纠玖韭久灸九酒厩救旧臼舅咎就疚鞠拘狙疽居驹菊局咀矩举沮聚拒据巨具距踞锯俱句惧炬剧捐鹃娟倦眷卷绢撅攫抉掘倔爵觉决诀绝均菌钧军君峻�\".split(\"\");\nfor(j = 0; j != D[190].length; ++j) if(D[190][j].charCodeAt(0) !== 0xFFFD) { e[D[190][j]] = 48640 + j; d[48640 + j] = D[190][j];}\nD[191] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������俊竣浚郡骏喀咖卡咯开揩楷凯慨刊堪勘坎砍看康慷糠扛抗亢炕考拷烤靠坷苛柯棵磕颗科壳咳可渴克刻客课肯啃垦恳坑吭空恐孔控抠口扣寇枯哭窟苦酷库裤夸垮挎跨胯块筷侩快宽款匡筐狂框矿眶旷况亏盔岿窥葵奎魁傀�\".split(\"\");\nfor(j = 0; j != D[191].length; ++j) if(D[191][j].charCodeAt(0) !== 0xFFFD) { e[D[191][j]] = 48896 + j; d[48896 + j] = D[191][j];}\nD[192] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������馈愧溃坤昆捆困括扩廓阔垃拉喇蜡腊辣啦莱来赖蓝婪栏拦篮阑兰澜谰揽览懒缆烂滥琅榔狼廊郎朗浪捞劳牢老佬姥酪烙涝勒乐雷镭蕾磊累儡垒擂肋类泪棱楞冷厘梨犁黎篱狸离漓理李里鲤礼莉荔吏栗丽厉励砾历利傈例俐�\".split(\"\");\nfor(j = 0; j != D[192].length; ++j) if(D[192][j].charCodeAt(0) !== 0xFFFD) { e[D[192][j]] = 49152 + j; d[49152 + j] = D[192][j];}\nD[193] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������痢立粒沥隶力璃哩俩联莲连镰廉怜涟帘敛脸链恋炼练粮凉梁粱良两辆量晾亮谅撩聊僚疗燎寥辽潦了撂镣廖料列裂烈劣猎琳林磷霖临邻鳞淋凛赁吝拎玲菱零龄铃伶羚凌灵陵岭领另令溜琉榴硫馏留刘瘤流柳六龙聋咙笼窿�\".split(\"\");\nfor(j = 0; j != D[193].length; ++j) if(D[193][j].charCodeAt(0) !== 0xFFFD) { e[D[193][j]] = 49408 + j; d[49408 + j] = D[193][j];}\nD[194] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������隆垄拢陇楼娄搂篓漏陋芦卢颅庐炉掳卤虏鲁麓碌露路赂鹿潞禄录陆戮驴吕铝侣旅履屡缕虑氯律率滤绿峦挛孪滦卵乱掠略抡轮伦仑沦纶论萝螺罗逻锣箩骡裸落洛骆络妈麻玛码蚂马骂嘛吗埋买麦卖迈脉瞒馒蛮满蔓曼慢漫�\".split(\"\");\nfor(j = 0; j != D[194].length; ++j) if(D[194][j].charCodeAt(0) !== 0xFFFD) { e[D[194][j]] = 49664 + j; d[49664 + j] = D[194][j];}\nD[195] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������谩芒茫盲氓忙莽猫茅锚毛矛铆卯茂冒帽貌贸么玫枚梅酶霉煤没眉媒镁每美昧寐妹媚门闷们萌蒙檬盟锰猛梦孟眯醚靡糜迷谜弥米秘觅泌蜜密幂棉眠绵冕免勉娩缅面苗描瞄藐秒渺庙妙蔑灭民抿皿敏悯闽明螟鸣铭名命谬摸�\".split(\"\");\nfor(j = 0; j != D[195].length; ++j) if(D[195][j].charCodeAt(0) !== 0xFFFD) { e[D[195][j]] = 49920 + j; d[49920 + j] = D[195][j];}\nD[196] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������摹蘑模膜磨摩魔抹末莫墨默沫漠寞陌谋牟某拇牡亩姆母墓暮幕募慕木目睦牧穆拿哪呐钠那娜纳氖乃奶耐奈南男难囊挠脑恼闹淖呢馁内嫩能妮霓倪泥尼拟你匿腻逆溺蔫拈年碾撵捻念娘酿鸟尿捏聂孽啮镊镍涅您柠狞凝宁�\".split(\"\");\nfor(j = 0; j != D[196].length; ++j) if(D[196][j].charCodeAt(0) !== 0xFFFD) { e[D[196][j]] = 50176 + j; d[50176 + j] = D[196][j];}\nD[197] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������拧泞牛扭钮纽脓浓农弄奴努怒女暖虐疟挪懦糯诺哦欧鸥殴藕呕偶沤啪趴爬帕怕琶拍排牌徘湃派攀潘盘磐盼畔判叛乓庞旁耪胖抛咆刨炮袍跑泡呸胚培裴赔陪配佩沛喷盆砰抨烹澎彭蓬棚硼篷膨朋鹏捧碰坯砒霹批披劈琵毗�\".split(\"\");\nfor(j = 0; j != D[197].length; ++j) if(D[197][j].charCodeAt(0) !== 0xFFFD) { e[D[197][j]] = 50432 + j; d[50432 + j] = D[197][j];}\nD[198] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������啤脾疲皮匹痞僻屁譬篇偏片骗飘漂瓢票撇瞥拼频贫品聘乒坪苹萍平凭瓶评屏坡泼颇婆破魄迫粕剖扑铺仆莆葡菩蒲埔朴圃普浦谱曝瀑期欺栖戚妻七凄漆柒沏其棋奇歧畦崎脐齐旗祈祁骑起岂乞企启契砌器气迄弃汽泣讫掐�\".split(\"\");\nfor(j = 0; j != D[198].length; ++j) if(D[198][j].charCodeAt(0) !== 0xFFFD) { e[D[198][j]] = 50688 + j; d[50688 + j] = D[198][j];}\nD[199] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������恰洽牵扦钎铅千迁签仟谦乾黔钱钳前潜遣浅谴堑嵌欠歉枪呛腔羌墙蔷强抢橇锹敲悄桥瞧乔侨巧鞘撬翘峭俏窍切茄且怯窃钦侵亲秦琴勤芹擒禽寝沁青轻氢倾卿清擎晴氰情顷请庆琼穷秋丘邱球求囚酋泅趋区蛆曲躯屈驱渠�\".split(\"\");\nfor(j = 0; j != D[199].length; ++j) if(D[199][j].charCodeAt(0) !== 0xFFFD) { e[D[199][j]] = 50944 + j; d[50944 + j] = D[199][j];}\nD[200] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������取娶龋趣去圈颧权醛泉全痊拳犬券劝缺炔瘸却鹊榷确雀裙群然燃冉染瓤壤攘嚷让饶扰绕惹热壬仁人忍韧任认刃妊纫扔仍日戎茸蓉荣融熔溶容绒冗揉柔肉茹蠕儒孺如辱乳汝入褥软阮蕊瑞锐闰润若弱撒洒萨腮鳃塞赛三叁�\".split(\"\");\nfor(j = 0; j != D[200].length; ++j) if(D[200][j].charCodeAt(0) !== 0xFFFD) { e[D[200][j]] = 51200 + j; d[51200 + j] = D[200][j];}\nD[201] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������伞散桑嗓丧搔骚扫嫂瑟色涩森僧莎砂杀刹沙纱傻啥煞筛晒珊苫杉山删煽衫闪陕擅赡膳善汕扇缮墒伤商赏晌上尚裳梢捎稍烧芍勺韶少哨邵绍奢赊蛇舌舍赦摄射慑涉社设砷申呻伸身深娠绅神沈审婶甚肾慎渗声生甥牲升绳�\".split(\"\");\nfor(j = 0; j != D[201].length; ++j) if(D[201][j].charCodeAt(0) !== 0xFFFD) { e[D[201][j]] = 51456 + j; d[51456 + j] = D[201][j];}\nD[202] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������省盛剩胜圣师失狮施湿诗尸虱十石拾时什食蚀实识史矢使屎驶始式示士世柿事拭誓逝势是嗜噬适仕侍释饰氏市恃室视试收手首守寿授售受瘦兽蔬枢梳殊抒输叔舒淑疏书赎孰熟薯暑曙署蜀黍鼠属术述树束戍竖墅庶数漱�\".split(\"\");\nfor(j = 0; j != D[202].length; ++j) if(D[202][j].charCodeAt(0) !== 0xFFFD) { e[D[202][j]] = 51712 + j; d[51712 + j] = D[202][j];}\nD[203] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������恕刷耍摔衰甩帅栓拴霜双爽谁水睡税吮瞬顺舜说硕朔烁斯撕嘶思私司丝死肆寺嗣四伺似饲巳松耸怂颂送宋讼诵搜艘擞嗽苏酥俗素速粟僳塑溯宿诉肃酸蒜算虽隋随绥髓碎岁穗遂隧祟孙损笋蓑梭唆缩琐索锁所塌他它她塔�\".split(\"\");\nfor(j = 0; j != D[203].length; ++j) if(D[203][j].charCodeAt(0) !== 0xFFFD) { e[D[203][j]] = 51968 + j; d[51968 + j] = D[203][j];}\nD[204] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������獭挞蹋踏胎苔抬台泰酞太态汰坍摊贪瘫滩坛檀痰潭谭谈坦毯袒碳探叹炭汤塘搪堂棠膛唐糖倘躺淌趟烫掏涛滔绦萄桃逃淘陶讨套特藤腾疼誊梯剔踢锑提题蹄啼体替嚏惕涕剃屉天添填田甜恬舔腆挑条迢眺跳贴铁帖厅听烃�\".split(\"\");\nfor(j = 0; j != D[204].length; ++j) if(D[204][j].charCodeAt(0) !== 0xFFFD) { e[D[204][j]] = 52224 + j; d[52224 + j] = D[204][j];}\nD[205] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������汀廷停亭庭挺艇通桐酮瞳同铜彤童桶捅筒统痛偷投头透凸秃突图徒途涂屠土吐兔湍团推颓腿蜕褪退吞屯臀拖托脱鸵陀驮驼椭妥拓唾挖哇蛙洼娃瓦袜歪外豌弯湾玩顽丸烷完碗挽晚皖惋宛婉万腕汪王亡枉网往旺望忘妄威�\".split(\"\");\nfor(j = 0; j != D[205].length; ++j) if(D[205][j].charCodeAt(0) !== 0xFFFD) { e[D[205][j]] = 52480 + j; d[52480 + j] = D[205][j];}\nD[206] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������巍微危韦违桅围唯惟为潍维苇萎委伟伪尾纬未蔚味畏胃喂魏位渭谓尉慰卫瘟温蚊文闻纹吻稳紊问嗡翁瓮挝蜗涡窝我斡卧握沃巫呜钨乌污诬屋无芜梧吾吴毋武五捂午舞伍侮坞戊雾晤物勿务悟误昔熙析西硒矽晰嘻吸锡牺�\".split(\"\");\nfor(j = 0; j != D[206].length; ++j) if(D[206][j].charCodeAt(0) !== 0xFFFD) { e[D[206][j]] = 52736 + j; d[52736 + j] = D[206][j];}\nD[207] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������稀息希悉膝夕惜熄烯溪汐犀檄袭席习媳喜铣洗系隙戏细瞎虾匣霞辖暇峡侠狭下厦夏吓掀锨先仙鲜纤咸贤衔舷闲涎弦嫌显险现献县腺馅羡宪陷限线相厢镶香箱襄湘乡翔祥详想响享项巷橡像向象萧硝霄削哮嚣销消宵淆晓�\".split(\"\");\nfor(j = 0; j != D[207].length; ++j) if(D[207][j].charCodeAt(0) !== 0xFFFD) { e[D[207][j]] = 52992 + j; d[52992 + j] = D[207][j];}\nD[208] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������小孝校肖啸笑效楔些歇蝎鞋协挟携邪斜胁谐写械卸蟹懈泄泻谢屑薪芯锌欣辛新忻心信衅星腥猩惺兴刑型形邢行醒幸杏性姓兄凶胸匈汹雄熊休修羞朽嗅锈秀袖绣墟戌需虚嘘须徐许蓄酗叙旭序畜恤絮婿绪续轩喧宣悬旋玄�\".split(\"\");\nfor(j = 0; j != D[208].length; ++j) if(D[208][j].charCodeAt(0) !== 0xFFFD) { e[D[208][j]] = 53248 + j; d[53248 + j] = D[208][j];}\nD[209] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������选癣眩绚靴薛学穴雪血勋熏循旬询寻驯巡殉汛训讯逊迅压押鸦鸭呀丫芽牙蚜崖衙涯雅哑亚讶焉咽阉烟淹盐严研蜒岩延言颜阎炎沿奄掩眼衍演艳堰燕厌砚雁唁彦焰宴谚验殃央鸯秧杨扬佯疡羊洋阳氧仰痒养样漾邀腰妖瑶�\".split(\"\");\nfor(j = 0; j != D[209].length; ++j) if(D[209][j].charCodeAt(0) !== 0xFFFD) { e[D[209][j]] = 53504 + j; d[53504 + j] = D[209][j];}\nD[210] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������摇尧遥窑谣姚咬舀药要耀椰噎耶爷野冶也页掖业叶曳腋夜液一壹医揖铱依伊衣颐夷遗移仪胰疑沂宜姨彝椅蚁倚已乙矣以艺抑易邑屹亿役臆逸肄疫亦裔意毅忆义益溢诣议谊译异翼翌绎茵荫因殷音阴姻吟银淫寅饮尹引隐�\".split(\"\");\nfor(j = 0; j != D[210].length; ++j) if(D[210][j].charCodeAt(0) !== 0xFFFD) { e[D[210][j]] = 53760 + j; d[53760 + j] = D[210][j];}\nD[211] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������印英樱婴鹰应缨莹萤营荧蝇迎赢盈影颖硬映哟拥佣臃痈庸雍踊蛹咏泳涌永恿勇用幽优悠忧尤由邮铀犹油游酉有友右佑釉诱又幼迂淤于盂榆虞愚舆余俞逾鱼愉渝渔隅予娱雨与屿禹宇语羽玉域芋郁吁遇喻峪御愈欲狱育誉�\".split(\"\");\nfor(j = 0; j != D[211].length; ++j) if(D[211][j].charCodeAt(0) !== 0xFFFD) { e[D[211][j]] = 54016 + j; d[54016 + j] = D[211][j];}\nD[212] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������浴寓裕预豫驭鸳渊冤元垣袁原援辕园员圆猿源缘远苑愿怨院曰约越跃钥岳粤月悦阅耘云郧匀陨允运蕴酝晕韵孕匝砸杂栽哉灾宰载再在咱攒暂赞赃脏葬遭糟凿藻枣早澡蚤躁噪造皂灶燥责择则泽贼怎增憎曾赠扎喳渣札轧�\".split(\"\");\nfor(j = 0; j != D[212].length; ++j) if(D[212][j].charCodeAt(0) !== 0xFFFD) { e[D[212][j]] = 54272 + j; d[54272 + j] = D[212][j];}\nD[213] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������铡闸眨栅榨咋乍炸诈摘斋宅窄债寨瞻毡詹粘沾盏斩辗崭展蘸栈占战站湛绽樟章彰漳张掌涨杖丈帐账仗胀瘴障招昭找沼赵照罩兆肇召遮折哲蛰辙者锗蔗这浙珍斟真甄砧臻贞针侦枕疹诊震振镇阵蒸挣睁征狰争怔整拯正政�\".split(\"\");\nfor(j = 0; j != D[213].length; ++j) if(D[213][j].charCodeAt(0) !== 0xFFFD) { e[D[213][j]] = 54528 + j; d[54528 + j] = D[213][j];}\nD[214] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������帧症郑证芝枝支吱蜘知肢脂汁之织职直植殖执值侄址指止趾只旨纸志挚掷至致置帜峙制智秩稚质炙痔滞治窒中盅忠钟衷终种肿重仲众舟周州洲诌粥轴肘帚咒皱宙昼骤珠株蛛朱猪诸诛逐竹烛煮拄瞩嘱主著柱助蛀贮铸筑�\".split(\"\");\nfor(j = 0; j != D[214].length; ++j) if(D[214][j].charCodeAt(0) !== 0xFFFD) { e[D[214][j]] = 54784 + j; d[54784 + j] = D[214][j];}\nD[215] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������住注祝驻抓爪拽专砖转撰赚篆桩庄装妆撞壮状椎锥追赘坠缀谆准捉拙卓桌琢茁酌啄着灼浊兹咨资姿滋淄孜紫仔籽滓子自渍字鬃棕踪宗综总纵邹走奏揍租足卒族祖诅阻组钻纂嘴醉最罪尊遵昨左佐柞做作坐座������\".split(\"\");\nfor(j = 0; j != D[215].length; ++j) if(D[215][j].charCodeAt(0) !== 0xFFFD) { e[D[215][j]] = 55040 + j; d[55040 + j] = D[215][j];}\nD[216] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������亍丌兀丐廿卅丕亘丞鬲孬噩丨禺丿匕乇夭爻卮氐囟胤馗毓睾鼗丶亟鼐乜乩亓芈孛啬嘏仄厍厝厣厥厮靥赝匚叵匦匮匾赜卦卣刂刈刎刭刳刿剀剌剞剡剜蒯剽劂劁劐劓冂罔亻仃仉仂仨仡仫仞伛仳伢佤仵伥伧伉伫佞佧攸佚佝�\".split(\"\");\nfor(j = 0; j != D[216].length; ++j) if(D[216][j].charCodeAt(0) !== 0xFFFD) { e[D[216][j]] = 55296 + j; d[55296 + j] = D[216][j];}\nD[217] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������佟佗伲伽佶佴侑侉侃侏佾佻侪佼侬侔俦俨俪俅俚俣俜俑俟俸倩偌俳倬倏倮倭俾倜倌倥倨偾偃偕偈偎偬偻傥傧傩傺僖儆僭僬僦僮儇儋仝氽佘佥俎龠汆籴兮巽黉馘冁夔勹匍訇匐凫夙兕亠兖亳衮袤亵脔裒禀嬴蠃羸冫冱冽冼�\".split(\"\");\nfor(j = 0; j != D[217].length; ++j) if(D[217][j].charCodeAt(0) !== 0xFFFD) { e[D[217][j]] = 55552 + j; d[55552 + j] = D[217][j];}\nD[218] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������凇冖冢冥讠讦讧讪讴讵讷诂诃诋诏诎诒诓诔诖诘诙诜诟诠诤诨诩诮诰诳诶诹诼诿谀谂谄谇谌谏谑谒谔谕谖谙谛谘谝谟谠谡谥谧谪谫谮谯谲谳谵谶卩卺阝阢阡阱阪阽阼陂陉陔陟陧陬陲陴隈隍隗隰邗邛邝邙邬邡邴邳邶邺�\".split(\"\");\nfor(j = 0; j != D[218].length; ++j) if(D[218][j].charCodeAt(0) !== 0xFFFD) { e[D[218][j]] = 55808 + j; d[55808 + j] = D[218][j];}\nD[219] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������邸邰郏郅邾郐郄郇郓郦郢郜郗郛郫郯郾鄄鄢鄞鄣鄱鄯鄹酃酆刍奂劢劬劭劾哿勐勖勰叟燮矍廴凵凼鬯厶弁畚巯坌垩垡塾墼壅壑圩圬圪圳圹圮圯坜圻坂坩垅坫垆坼坻坨坭坶坳垭垤垌垲埏垧垴垓垠埕埘埚埙埒垸埴埯埸埤埝�\".split(\"\");\nfor(j = 0; j != D[219].length; ++j) if(D[219][j].charCodeAt(0) !== 0xFFFD) { e[D[219][j]] = 56064 + j; d[56064 + j] = D[219][j];}\nD[220] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������堋堍埽埭堀堞堙塄堠塥塬墁墉墚墀馨鼙懿艹艽艿芏芊芨芄芎芑芗芙芫芸芾芰苈苊苣芘芷芮苋苌苁芩芴芡芪芟苄苎芤苡茉苷苤茏茇苜苴苒苘茌苻苓茑茚茆茔茕苠苕茜荑荛荜茈莒茼茴茱莛荞茯荏荇荃荟荀茗荠茭茺茳荦荥�\".split(\"\");\nfor(j = 0; j != D[220].length; ++j) if(D[220][j].charCodeAt(0) !== 0xFFFD) { e[D[220][j]] = 56320 + j; d[56320 + j] = D[220][j];}\nD[221] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������荨茛荩荬荪荭荮莰荸莳莴莠莪莓莜莅荼莶莩荽莸荻莘莞莨莺莼菁萁菥菘堇萘萋菝菽菖萜萸萑萆菔菟萏萃菸菹菪菅菀萦菰菡葜葑葚葙葳蒇蒈葺蒉葸萼葆葩葶蒌蒎萱葭蓁蓍蓐蓦蒽蓓蓊蒿蒺蓠蒡蒹蒴蒗蓥蓣蔌甍蔸蓰蔹蔟蔺�\".split(\"\");\nfor(j = 0; j != D[221].length; ++j) if(D[221][j].charCodeAt(0) !== 0xFFFD) { e[D[221][j]] = 56576 + j; d[56576 + j] = D[221][j];}\nD[222] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������蕖蔻蓿蓼蕙蕈蕨蕤蕞蕺瞢蕃蕲蕻薤薨薇薏蕹薮薜薅薹薷薰藓藁藜藿蘧蘅蘩蘖蘼廾弈夼奁耷奕奚奘匏尢尥尬尴扌扪抟抻拊拚拗拮挢拶挹捋捃掭揶捱捺掎掴捭掬掊捩掮掼揲揸揠揿揄揞揎摒揆掾摅摁搋搛搠搌搦搡摞撄摭撖�\".split(\"\");\nfor(j = 0; j != D[222].length; ++j) if(D[222][j].charCodeAt(0) !== 0xFFFD) { e[D[222][j]] = 56832 + j; d[56832 + j] = D[222][j];}\nD[223] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������摺撷撸撙撺擀擐擗擤擢攉攥攮弋忒甙弑卟叱叽叩叨叻吒吖吆呋呒呓呔呖呃吡呗呙吣吲咂咔呷呱呤咚咛咄呶呦咝哐咭哂咴哒咧咦哓哔呲咣哕咻咿哌哙哚哜咩咪咤哝哏哞唛哧唠哽唔哳唢唣唏唑唧唪啧喏喵啉啭啁啕唿啐唼�\".split(\"\");\nfor(j = 0; j != D[223].length; ++j) if(D[223][j].charCodeAt(0) !== 0xFFFD) { e[D[223][j]] = 57088 + j; d[57088 + j] = D[223][j];}\nD[224] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������唷啖啵啶啷唳唰啜喋嗒喃喱喹喈喁喟啾嗖喑啻嗟喽喾喔喙嗪嗷嗉嘟嗑嗫嗬嗔嗦嗝嗄嗯嗥嗲嗳嗌嗍嗨嗵嗤辔嘞嘈嘌嘁嘤嘣嗾嘀嘧嘭噘嘹噗嘬噍噢噙噜噌噔嚆噤噱噫噻噼嚅嚓嚯囔囗囝囡囵囫囹囿圄圊圉圜帏帙帔帑帱帻帼�\".split(\"\");\nfor(j = 0; j != D[224].length; ++j) if(D[224][j].charCodeAt(0) !== 0xFFFD) { e[D[224][j]] = 57344 + j; d[57344 + j] = D[224][j];}\nD[225] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������帷幄幔幛幞幡岌屺岍岐岖岈岘岙岑岚岜岵岢岽岬岫岱岣峁岷峄峒峤峋峥崂崃崧崦崮崤崞崆崛嵘崾崴崽嵬嵛嵯嵝嵫嵋嵊嵩嵴嶂嶙嶝豳嶷巅彳彷徂徇徉後徕徙徜徨徭徵徼衢彡犭犰犴犷犸狃狁狎狍狒狨狯狩狲狴狷猁狳猃狺�\".split(\"\");\nfor(j = 0; j != D[225].length; ++j) if(D[225][j].charCodeAt(0) !== 0xFFFD) { e[D[225][j]] = 57600 + j; d[57600 + j] = D[225][j];}\nD[226] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������狻猗猓猡猊猞猝猕猢猹猥猬猸猱獐獍獗獠獬獯獾舛夥飧夤夂饣饧饨饩饪饫饬饴饷饽馀馄馇馊馍馐馑馓馔馕庀庑庋庖庥庠庹庵庾庳赓廒廑廛廨廪膺忄忉忖忏怃忮怄忡忤忾怅怆忪忭忸怙怵怦怛怏怍怩怫怊怿怡恸恹恻恺恂�\".split(\"\");\nfor(j = 0; j != D[226].length; ++j) if(D[226][j].charCodeAt(0) !== 0xFFFD) { e[D[226][j]] = 57856 + j; d[57856 + j] = D[226][j];}\nD[227] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������恪恽悖悚悭悝悃悒悌悛惬悻悱惝惘惆惚悴愠愦愕愣惴愀愎愫慊慵憬憔憧憷懔懵忝隳闩闫闱闳闵闶闼闾阃阄阆阈阊阋阌阍阏阒阕阖阗阙阚丬爿戕氵汔汜汊沣沅沐沔沌汨汩汴汶沆沩泐泔沭泷泸泱泗沲泠泖泺泫泮沱泓泯泾�\".split(\"\");\nfor(j = 0; j != D[227].length; ++j) if(D[227][j].charCodeAt(0) !== 0xFFFD) { e[D[227][j]] = 58112 + j; d[58112 + j] = D[227][j];}\nD[228] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������洹洧洌浃浈洇洄洙洎洫浍洮洵洚浏浒浔洳涑浯涞涠浞涓涔浜浠浼浣渚淇淅淞渎涿淠渑淦淝淙渖涫渌涮渫湮湎湫溲湟溆湓湔渲渥湄滟溱溘滠漭滢溥溧溽溻溷滗溴滏溏滂溟潢潆潇漤漕滹漯漶潋潴漪漉漩澉澍澌潸潲潼潺濑�\".split(\"\");\nfor(j = 0; j != D[228].length; ++j) if(D[228][j].charCodeAt(0) !== 0xFFFD) { e[D[228][j]] = 58368 + j; d[58368 + j] = D[228][j];}\nD[229] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������濉澧澹澶濂濡濮濞濠濯瀚瀣瀛瀹瀵灏灞宀宄宕宓宥宸甯骞搴寤寮褰寰蹇謇辶迓迕迥迮迤迩迦迳迨逅逄逋逦逑逍逖逡逵逶逭逯遄遑遒遐遨遘遢遛暹遴遽邂邈邃邋彐彗彖彘尻咫屐屙孱屣屦羼弪弩弭艴弼鬻屮妁妃妍妩妪妣�\".split(\"\");\nfor(j = 0; j != D[229].length; ++j) if(D[229][j].charCodeAt(0) !== 0xFFFD) { e[D[229][j]] = 58624 + j; d[58624 + j] = D[229][j];}\nD[230] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������妗姊妫妞妤姒妲妯姗妾娅娆姝娈姣姘姹娌娉娲娴娑娣娓婀婧婊婕娼婢婵胬媪媛婷婺媾嫫媲嫒嫔媸嫠嫣嫱嫖嫦嫘嫜嬉嬗嬖嬲嬷孀尕尜孚孥孳孑孓孢驵驷驸驺驿驽骀骁骅骈骊骐骒骓骖骘骛骜骝骟骠骢骣骥骧纟纡纣纥纨纩�\".split(\"\");\nfor(j = 0; j != D[230].length; ++j) if(D[230][j].charCodeAt(0) !== 0xFFFD) { e[D[230][j]] = 58880 + j; d[58880 + j] = D[230][j];}\nD[231] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������纭纰纾绀绁绂绉绋绌绐绔绗绛绠绡绨绫绮绯绱绲缍绶绺绻绾缁缂缃缇缈缋缌缏缑缒缗缙缜缛缟缡缢缣缤缥缦缧缪缫缬缭缯缰缱缲缳缵幺畿巛甾邕玎玑玮玢玟珏珂珑玷玳珀珉珈珥珙顼琊珩珧珞玺珲琏琪瑛琦琥琨琰琮琬�\".split(\"\");\nfor(j = 0; j != D[231].length; ++j) if(D[231][j].charCodeAt(0) !== 0xFFFD) { e[D[231][j]] = 59136 + j; d[59136 + j] = D[231][j];}\nD[232] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������琛琚瑁瑜瑗瑕瑙瑷瑭瑾璜璎璀璁璇璋璞璨璩璐璧瓒璺韪韫韬杌杓杞杈杩枥枇杪杳枘枧杵枨枞枭枋杷杼柰栉柘栊柩枰栌柙枵柚枳柝栀柃枸柢栎柁柽栲栳桠桡桎桢桄桤梃栝桕桦桁桧桀栾桊桉栩梵梏桴桷梓桫棂楮棼椟椠棹�\".split(\"\");\nfor(j = 0; j != D[232].length; ++j) if(D[232][j].charCodeAt(0) !== 0xFFFD) { e[D[232][j]] = 59392 + j; d[59392 + j] = D[232][j];}\nD[233] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������椤棰椋椁楗棣椐楱椹楠楂楝榄楫榀榘楸椴槌榇榈槎榉楦楣楹榛榧榻榫榭槔榱槁槊槟榕槠榍槿樯槭樗樘橥槲橄樾檠橐橛樵檎橹樽樨橘橼檑檐檩檗檫猷獒殁殂殇殄殒殓殍殚殛殡殪轫轭轱轲轳轵轶轸轷轹轺轼轾辁辂辄辇辋�\".split(\"\");\nfor(j = 0; j != D[233].length; ++j) if(D[233][j].charCodeAt(0) !== 0xFFFD) { e[D[233][j]] = 59648 + j; d[59648 + j] = D[233][j];}\nD[234] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������辍辎辏辘辚軎戋戗戛戟戢戡戥戤戬臧瓯瓴瓿甏甑甓攴旮旯旰昊昙杲昃昕昀炅曷昝昴昱昶昵耆晟晔晁晏晖晡晗晷暄暌暧暝暾曛曜曦曩贲贳贶贻贽赀赅赆赈赉赇赍赕赙觇觊觋觌觎觏觐觑牮犟牝牦牯牾牿犄犋犍犏犒挈挲掰�\".split(\"\");\nfor(j = 0; j != D[234].length; ++j) if(D[234][j].charCodeAt(0) !== 0xFFFD) { e[D[234][j]] = 59904 + j; d[59904 + j] = D[234][j];}\nD[235] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������搿擘耄毪毳毽毵毹氅氇氆氍氕氘氙氚氡氩氤氪氲攵敕敫牍牒牖爰虢刖肟肜肓肼朊肽肱肫肭肴肷胧胨胩胪胛胂胄胙胍胗朐胝胫胱胴胭脍脎胲胼朕脒豚脶脞脬脘脲腈腌腓腴腙腚腱腠腩腼腽腭腧塍媵膈膂膑滕膣膪臌朦臊膻�\".split(\"\");\nfor(j = 0; j != D[235].length; ++j) if(D[235][j].charCodeAt(0) !== 0xFFFD) { e[D[235][j]] = 60160 + j; d[60160 + j] = D[235][j];}\nD[236] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������臁膦欤欷欹歃歆歙飑飒飓飕飙飚殳彀毂觳斐齑斓於旆旄旃旌旎旒旖炀炜炖炝炻烀炷炫炱烨烊焐焓焖焯焱煳煜煨煅煲煊煸煺熘熳熵熨熠燠燔燧燹爝爨灬焘煦熹戾戽扃扈扉礻祀祆祉祛祜祓祚祢祗祠祯祧祺禅禊禚禧禳忑忐�\".split(\"\");\nfor(j = 0; j != D[236].length; ++j) if(D[236][j].charCodeAt(0) !== 0xFFFD) { e[D[236][j]] = 60416 + j; d[60416 + j] = D[236][j];}\nD[237] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������怼恝恚恧恁恙恣悫愆愍慝憩憝懋懑戆肀聿沓泶淼矶矸砀砉砗砘砑斫砭砜砝砹砺砻砟砼砥砬砣砩硎硭硖硗砦硐硇硌硪碛碓碚碇碜碡碣碲碹碥磔磙磉磬磲礅磴礓礤礞礴龛黹黻黼盱眄眍盹眇眈眚眢眙眭眦眵眸睐睑睇睃睚睨�\".split(\"\");\nfor(j = 0; j != D[237].length; ++j) if(D[237][j].charCodeAt(0) !== 0xFFFD) { e[D[237][j]] = 60672 + j; d[60672 + j] = D[237][j];}\nD[238] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������睢睥睿瞍睽瞀瞌瞑瞟瞠瞰瞵瞽町畀畎畋畈畛畲畹疃罘罡罟詈罨罴罱罹羁罾盍盥蠲钅钆钇钋钊钌钍钏钐钔钗钕钚钛钜钣钤钫钪钭钬钯钰钲钴钶钷钸钹钺钼钽钿铄铈铉铊铋铌铍铎铐铑铒铕铖铗铙铘铛铞铟铠铢铤铥铧铨铪�\".split(\"\");\nfor(j = 0; j != D[238].length; ++j) if(D[238][j].charCodeAt(0) !== 0xFFFD) { e[D[238][j]] = 60928 + j; d[60928 + j] = D[238][j];}\nD[239] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������铩铫铮铯铳铴铵铷铹铼铽铿锃锂锆锇锉锊锍锎锏锒锓锔锕锖锘锛锝锞锟锢锪锫锩锬锱锲锴锶锷锸锼锾锿镂锵镄镅镆镉镌镎镏镒镓镔镖镗镘镙镛镞镟镝镡镢镤镥镦镧镨镩镪镫镬镯镱镲镳锺矧矬雉秕秭秣秫稆嵇稃稂稞稔�\".split(\"\");\nfor(j = 0; j != D[239].length; ++j) if(D[239][j].charCodeAt(0) !== 0xFFFD) { e[D[239][j]] = 61184 + j; d[61184 + j] = D[239][j];}\nD[240] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������稹稷穑黏馥穰皈皎皓皙皤瓞瓠甬鸠鸢鸨鸩鸪鸫鸬鸲鸱鸶鸸鸷鸹鸺鸾鹁鹂鹄鹆鹇鹈鹉鹋鹌鹎鹑鹕鹗鹚鹛鹜鹞鹣鹦鹧鹨鹩鹪鹫鹬鹱鹭鹳疒疔疖疠疝疬疣疳疴疸痄疱疰痃痂痖痍痣痨痦痤痫痧瘃痱痼痿瘐瘀瘅瘌瘗瘊瘥瘘瘕瘙�\".split(\"\");\nfor(j = 0; j != D[240].length; ++j) if(D[240][j].charCodeAt(0) !== 0xFFFD) { e[D[240][j]] = 61440 + j; d[61440 + j] = D[240][j];}\nD[241] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������瘛瘼瘢瘠癀瘭瘰瘿瘵癃瘾瘳癍癞癔癜癖癫癯翊竦穸穹窀窆窈窕窦窠窬窨窭窳衤衩衲衽衿袂袢裆袷袼裉裢裎裣裥裱褚裼裨裾裰褡褙褓褛褊褴褫褶襁襦襻疋胥皲皴矜耒耔耖耜耠耢耥耦耧耩耨耱耋耵聃聆聍聒聩聱覃顸颀颃�\".split(\"\");\nfor(j = 0; j != D[241].length; ++j) if(D[241][j].charCodeAt(0) !== 0xFFFD) { e[D[241][j]] = 61696 + j; d[61696 + j] = D[241][j];}\nD[242] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������颉颌颍颏颔颚颛颞颟颡颢颥颦虍虔虬虮虿虺虼虻蚨蚍蚋蚬蚝蚧蚣蚪蚓蚩蚶蛄蚵蛎蚰蚺蚱蚯蛉蛏蚴蛩蛱蛲蛭蛳蛐蜓蛞蛴蛟蛘蛑蜃蜇蛸蜈蜊蜍蜉蜣蜻蜞蜥蜮蜚蜾蝈蜴蜱蜩蜷蜿螂蜢蝽蝾蝻蝠蝰蝌蝮螋蝓蝣蝼蝤蝙蝥螓螯螨蟒�\".split(\"\");\nfor(j = 0; j != D[242].length; ++j) if(D[242][j].charCodeAt(0) !== 0xFFFD) { e[D[242][j]] = 61952 + j; d[61952 + j] = D[242][j];}\nD[243] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������蟆螈螅螭螗螃螫蟥螬螵螳蟋蟓螽蟑蟀蟊蟛蟪蟠蟮蠖蠓蟾蠊蠛蠡蠹蠼缶罂罄罅舐竺竽笈笃笄笕笊笫笏筇笸笪笙笮笱笠笥笤笳笾笞筘筚筅筵筌筝筠筮筻筢筲筱箐箦箧箸箬箝箨箅箪箜箢箫箴篑篁篌篝篚篥篦篪簌篾篼簏簖簋�\".split(\"\");\nfor(j = 0; j != D[243].length; ++j) if(D[243][j].charCodeAt(0) !== 0xFFFD) { e[D[243][j]] = 62208 + j; d[62208 + j] = D[243][j];}\nD[244] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������簟簪簦簸籁籀臾舁舂舄臬衄舡舢舣舭舯舨舫舸舻舳舴舾艄艉艋艏艚艟艨衾袅袈裘裟襞羝羟羧羯羰羲籼敉粑粝粜粞粢粲粼粽糁糇糌糍糈糅糗糨艮暨羿翎翕翥翡翦翩翮翳糸絷綦綮繇纛麸麴赳趄趔趑趱赧赭豇豉酊酐酎酏酤�\".split(\"\");\nfor(j = 0; j != D[244].length; ++j) if(D[244][j].charCodeAt(0) !== 0xFFFD) { e[D[244][j]] = 62464 + j; d[62464 + j] = D[244][j];}\nD[245] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������酢酡酰酩酯酽酾酲酴酹醌醅醐醍醑醢醣醪醭醮醯醵醴醺豕鹾趸跫踅蹙蹩趵趿趼趺跄跖跗跚跞跎跏跛跆跬跷跸跣跹跻跤踉跽踔踝踟踬踮踣踯踺蹀踹踵踽踱蹉蹁蹂蹑蹒蹊蹰蹶蹼蹯蹴躅躏躔躐躜躞豸貂貊貅貘貔斛觖觞觚觜�\".split(\"\");\nfor(j = 0; j != D[245].length; ++j) if(D[245][j].charCodeAt(0) !== 0xFFFD) { e[D[245][j]] = 62720 + j; d[62720 + j] = D[245][j];}\nD[246] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������觥觫觯訾謦靓雩雳雯霆霁霈霏霎霪霭霰霾龀龃龅龆龇龈龉龊龌黾鼋鼍隹隼隽雎雒瞿雠銎銮鋈錾鍪鏊鎏鐾鑫鱿鲂鲅鲆鲇鲈稣鲋鲎鲐鲑鲒鲔鲕鲚鲛鲞鲟鲠鲡鲢鲣鲥鲦鲧鲨鲩鲫鲭鲮鲰鲱鲲鲳鲴鲵鲶鲷鲺鲻鲼鲽鳄鳅鳆鳇鳊鳋�\".split(\"\");\nfor(j = 0; j != D[246].length; ++j) if(D[246][j].charCodeAt(0) !== 0xFFFD) { e[D[246][j]] = 62976 + j; d[62976 + j] = D[246][j];}\nD[247] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������鳌鳍鳎鳏鳐鳓鳔鳕鳗鳘鳙鳜鳝鳟鳢靼鞅鞑鞒鞔鞯鞫鞣鞲鞴骱骰骷鹘骶骺骼髁髀髅髂髋髌髑魅魃魇魉魈魍魑飨餍餮饕饔髟髡髦髯髫髻髭髹鬈鬏鬓鬟鬣麽麾縻麂麇麈麋麒鏖麝麟黛黜黝黠黟黢黩黧黥黪黯鼢鼬鼯鼹鼷鼽鼾齄�\".split(\"\");\nfor(j = 0; j != D[247].length; ++j) if(D[247][j].charCodeAt(0) !== 0xFFFD) { e[D[247][j]] = 63232 + j; d[63232 + j] = D[247][j];}\nreturn {\"enc\": e, \"dec\": d }; })();\ncptable[20949] = (function(){ var d = [], e = {}, D = [], j;\nD[0] = \"\\u0000\\u0001\\u0002\\u0003\\u0004\\u0005\\u0006\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\u0014\\u0015\\u0016\\u0017\\u0018\\u0019\\u001a\\u001b\\u001c\\u001d\\u001e\\u001f !\\\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[0].length; ++j) if(D[0][j].charCodeAt(0) !== 0xFFFD) { e[D[0][j]] = 0 + j; d[0 + j] = D[0][j];}\nD[161] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������　、。·‥…¨〃­―∥＼∼‘’“”〔〕〈〉《》「」『』【】±×÷≠≤≥∞∴°′″℃Å￠￡￥♂♀∠⊥⌒∂∇≡≒§※☆★○●◎◇◆□■△▲▽▼→←↑↓↔〓≪≫√∽∝∵∫∬∈∋⊆⊇⊂⊃∪∩∧∨￢�\".split(\"\");\nfor(j = 0; j != D[161].length; ++j) if(D[161][j].charCodeAt(0) !== 0xFFFD) { e[D[161][j]] = 41216 + j; d[41216 + j] = D[161][j];}\nD[162] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������⇒⇔∀∃´～ˇ˘˝˚˙¸˛¡¿ː∮∑∏¤℉‰◁◀▷▶♤♠♡♥♧♣⊙◈▣◐◑▒▤▥▨▧▦▩♨☏☎☜☞¶†‡↕↗↙↖↘♭♩♪♬㉿㈜№㏇™㏂㏘℡€®������������������������\".split(\"\");\nfor(j = 0; j != D[162].length; ++j) if(D[162][j].charCodeAt(0) !== 0xFFFD) { e[D[162][j]] = 41472 + j; d[41472 + j] = D[162][j];}\nD[163] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������！＂＃＄％＆＇（）＊＋，－．／０１２３４５６７８９：；＜＝＞？＠ＡＢＣＤＥＦＧＨＩＪＫＬＭＮＯＰＱＲＳＴＵＶＷＸＹＺ［￦］＾＿｀ａｂｃｄｅｆｇｈｉｊｋｌｍｎｏｐｑｒｓｔｕｖｗｘｙｚ｛｜｝￣�\".split(\"\");\nfor(j = 0; j != D[163].length; ++j) if(D[163][j].charCodeAt(0) !== 0xFFFD) { e[D[163][j]] = 41728 + j; d[41728 + j] = D[163][j];}\nD[164] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������ㄱㄲㄳㄴㄵㄶㄷㄸㄹㄺㄻㄼㄽㄾㄿㅀㅁㅂㅃㅄㅅㅆㅇㅈㅉㅊㅋㅌㅍㅎㅏㅐㅑㅒㅓㅔㅕㅖㅗㅘㅙㅚㅛㅜㅝㅞㅟㅠㅡㅢㅣㅤㅥㅦㅧㅨㅩㅪㅫㅬㅭㅮㅯㅰㅱㅲㅳㅴㅵㅶㅷㅸㅹㅺㅻㅼㅽㅾㅿㆀㆁㆂㆃㆄㆅㆆㆇㆈㆉㆊㆋㆌㆍㆎ�\".split(\"\");\nfor(j = 0; j != D[164].length; ++j) if(D[164][j].charCodeAt(0) !== 0xFFFD) { e[D[164][j]] = 41984 + j; d[41984 + j] = D[164][j];}\nD[165] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������ⅰⅱⅲⅳⅴⅵⅶⅷⅸⅹ�����ⅠⅡⅢⅣⅤⅥⅦⅧⅨⅩ�������ΑΒΓΔΕΖΗΘΙΚΛΜΝΞΟΠΡΣΤΥΦΧΨΩ��������αβγδεζηθικλμνξοπρστυφχψω�������\".split(\"\");\nfor(j = 0; j != D[165].length; ++j) if(D[165][j].charCodeAt(0) !== 0xFFFD) { e[D[165][j]] = 42240 + j; d[42240 + j] = D[165][j];}\nD[166] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������─│┌┐┘└├┬┤┴┼━┃┏┓┛┗┣┳┫┻╋┠┯┨┷┿┝┰┥┸╂┒┑┚┙┖┕┎┍┞┟┡┢┦┧┩┪┭┮┱┲┵┶┹┺┽┾╀╁╃╄╅╆╇╈╉╊���������������������������\".split(\"\");\nfor(j = 0; j != D[166].length; ++j) if(D[166][j].charCodeAt(0) !== 0xFFFD) { e[D[166][j]] = 42496 + j; d[42496 + j] = D[166][j];}\nD[167] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������㎕㎖㎗ℓ㎘㏄㎣㎤㎥㎦㎙㎚㎛㎜㎝㎞㎟㎠㎡㎢㏊㎍㎎㎏㏏㎈㎉㏈㎧㎨㎰㎱㎲㎳㎴㎵㎶㎷㎸㎹㎀㎁㎂㎃㎄㎺㎻㎼㎽㎾㎿㎐㎑㎒㎓㎔Ω㏀㏁㎊㎋㎌㏖㏅㎭㎮㎯㏛㎩㎪㎫㎬㏝㏐㏓㏃㏉㏜㏆����������������\".split(\"\");\nfor(j = 0; j != D[167].length; ++j) if(D[167][j].charCodeAt(0) !== 0xFFFD) { e[D[167][j]] = 42752 + j; d[42752 + j] = D[167][j];}\nD[168] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������ÆÐªĦ�Ĳ�ĿŁØŒºÞŦŊ�㉠㉡㉢㉣㉤㉥㉦㉧㉨㉩㉪㉫㉬㉭㉮㉯㉰㉱㉲㉳㉴㉵㉶㉷㉸㉹㉺㉻ⓐⓑⓒⓓⓔⓕⓖⓗⓘⓙⓚⓛⓜⓝⓞⓟⓠⓡⓢⓣⓤⓥⓦⓧⓨⓩ①②③④⑤⑥⑦⑧⑨⑩⑪⑫⑬⑭⑮½⅓⅔¼¾⅛⅜⅝⅞�\".split(\"\");\nfor(j = 0; j != D[168].length; ++j) if(D[168][j].charCodeAt(0) !== 0xFFFD) { e[D[168][j]] = 43008 + j; d[43008 + j] = D[168][j];}\nD[169] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������æđðħıĳĸŀłøœßþŧŋŉ㈀㈁㈂㈃㈄㈅㈆㈇㈈㈉㈊㈋㈌㈍㈎㈏㈐㈑㈒㈓㈔㈕㈖㈗㈘㈙㈚㈛⒜⒝⒞⒟⒠⒡⒢⒣⒤⒥⒦⒧⒨⒩⒪⒫⒬⒭⒮⒯⒰⒱⒲⒳⒴⒵⑴⑵⑶⑷⑸⑹⑺⑻⑼⑽⑾⑿⒀⒁⒂¹²³⁴ⁿ₁₂₃₄�\".split(\"\");\nfor(j = 0; j != D[169].length; ++j) if(D[169][j].charCodeAt(0) !== 0xFFFD) { e[D[169][j]] = 43264 + j; d[43264 + j] = D[169][j];}\nD[170] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������ぁあぃいぅうぇえぉおかがきぎくぐけげこごさざしじすずせぜそぞただちぢっつづてでとどなにぬねのはばぱひびぴふぶぷへべぺほぼぽまみむめもゃやゅゆょよらりるれろゎわゐゑをん������������\".split(\"\");\nfor(j = 0; j != D[170].length; ++j) if(D[170][j].charCodeAt(0) !== 0xFFFD) { e[D[170][j]] = 43520 + j; d[43520 + j] = D[170][j];}\nD[171] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������ァアィイゥウェエォオカガキギクグケゲコゴサザシジスズセゼソゾタダチヂッツヅテデトドナニヌネノハバパヒビピフブプヘベペホボポマミムメモャヤュユョヨラリルレロヮワヰヱヲンヴヵヶ���������\".split(\"\");\nfor(j = 0; j != D[171].length; ++j) if(D[171][j].charCodeAt(0) !== 0xFFFD) { e[D[171][j]] = 43776 + j; d[43776 + j] = D[171][j];}\nD[172] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ���������������абвгдеёжзийклмнопрстуфхцчшщъыьэюя��������������\".split(\"\");\nfor(j = 0; j != D[172].length; ++j) if(D[172][j].charCodeAt(0) !== 0xFFFD) { e[D[172][j]] = 44032 + j; d[44032 + j] = D[172][j];}\nD[176] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������가각간갇갈갉갊감갑값갓갔강갖갗같갚갛개객갠갤갬갭갯갰갱갸갹갼걀걋걍걔걘걜거걱건걷걸걺검겁것겄겅겆겉겊겋게겐겔겜겝겟겠겡겨격겪견겯결겸겹겻겼경곁계곈곌곕곗고곡곤곧골곪곬곯곰곱곳공곶과곽관괄괆�\".split(\"\");\nfor(j = 0; j != D[176].length; ++j) if(D[176][j].charCodeAt(0) !== 0xFFFD) { e[D[176][j]] = 45056 + j; d[45056 + j] = D[176][j];}\nD[177] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������괌괍괏광괘괜괠괩괬괭괴괵괸괼굄굅굇굉교굔굘굡굣구국군굳굴굵굶굻굼굽굿궁궂궈궉권궐궜궝궤궷귀귁귄귈귐귑귓규균귤그극근귿글긁금급긋긍긔기긱긴긷길긺김깁깃깅깆깊까깍깎깐깔깖깜깝깟깠깡깥깨깩깬깰깸�\".split(\"\");\nfor(j = 0; j != D[177].length; ++j) if(D[177][j].charCodeAt(0) !== 0xFFFD) { e[D[177][j]] = 45312 + j; d[45312 + j] = D[177][j];}\nD[178] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������깹깻깼깽꺄꺅꺌꺼꺽꺾껀껄껌껍껏껐껑께껙껜껨껫껭껴껸껼꼇꼈꼍꼐꼬꼭꼰꼲꼴꼼꼽꼿꽁꽂꽃꽈꽉꽐꽜꽝꽤꽥꽹꾀꾄꾈꾐꾑꾕꾜꾸꾹꾼꿀꿇꿈꿉꿋꿍꿎꿔꿜꿨꿩꿰꿱꿴꿸뀀뀁뀄뀌뀐뀔뀜뀝뀨끄끅끈끊끌끎끓끔끕끗끙�\".split(\"\");\nfor(j = 0; j != D[178].length; ++j) if(D[178][j].charCodeAt(0) !== 0xFFFD) { e[D[178][j]] = 45568 + j; d[45568 + j] = D[178][j];}\nD[179] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������끝끼끽낀낄낌낍낏낑나낙낚난낟날낡낢남납낫났낭낮낯낱낳내낵낸낼냄냅냇냈냉냐냑냔냘냠냥너넉넋넌널넒넓넘넙넛넜넝넣네넥넨넬넴넵넷넸넹녀녁년녈념녑녔녕녘녜녠노녹논놀놂놈놉놋농높놓놔놘놜놨뇌뇐뇔뇜뇝�\".split(\"\");\nfor(j = 0; j != D[179].length; ++j) if(D[179][j].charCodeAt(0) !== 0xFFFD) { e[D[179][j]] = 45824 + j; d[45824 + j] = D[179][j];}\nD[180] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������뇟뇨뇩뇬뇰뇹뇻뇽누눅눈눋눌눔눕눗눙눠눴눼뉘뉜뉠뉨뉩뉴뉵뉼늄늅늉느늑는늘늙늚늠늡늣능늦늪늬늰늴니닉닌닐닖님닙닛닝닢다닥닦단닫달닭닮닯닳담답닷닸당닺닻닿대댁댄댈댐댑댓댔댕댜더덕덖던덛덜덞덟덤덥�\".split(\"\");\nfor(j = 0; j != D[180].length; ++j) if(D[180][j].charCodeAt(0) !== 0xFFFD) { e[D[180][j]] = 46080 + j; d[46080 + j] = D[180][j];}\nD[181] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������덧덩덫덮데덱덴델뎀뎁뎃뎄뎅뎌뎐뎔뎠뎡뎨뎬도독돈돋돌돎돐돔돕돗동돛돝돠돤돨돼됐되된될됨됩됫됴두둑둔둘둠둡둣둥둬뒀뒈뒝뒤뒨뒬뒵뒷뒹듀듄듈듐듕드득든듣들듦듬듭듯등듸디딕딘딛딜딤딥딧딨딩딪따딱딴딸�\".split(\"\");\nfor(j = 0; j != D[181].length; ++j) if(D[181][j].charCodeAt(0) !== 0xFFFD) { e[D[181][j]] = 46336 + j; d[46336 + j] = D[181][j];}\nD[182] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������땀땁땃땄땅땋때땍땐땔땜땝땟땠땡떠떡떤떨떪떫떰떱떳떴떵떻떼떽뗀뗄뗌뗍뗏뗐뗑뗘뗬또똑똔똘똥똬똴뙈뙤뙨뚜뚝뚠뚤뚫뚬뚱뛔뛰뛴뛸뜀뜁뜅뜨뜩뜬뜯뜰뜸뜹뜻띄띈띌띔띕띠띤띨띰띱띳띵라락란랄람랍랏랐랑랒랖랗�\".split(\"\");\nfor(j = 0; j != D[182].length; ++j) if(D[182][j].charCodeAt(0) !== 0xFFFD) { e[D[182][j]] = 46592 + j; d[46592 + j] = D[182][j];}\nD[183] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������래랙랜랠램랩랫랬랭랴략랸럇량러럭런럴럼럽럿렀렁렇레렉렌렐렘렙렛렝려력련렬렴렵렷렸령례롄롑롓로록론롤롬롭롯롱롸롼뢍뢨뢰뢴뢸룀룁룃룅료룐룔룝룟룡루룩룬룰룸룹룻룽뤄뤘뤠뤼뤽륀륄륌륏륑류륙륜률륨륩�\".split(\"\");\nfor(j = 0; j != D[183].length; ++j) if(D[183][j].charCodeAt(0) !== 0xFFFD) { e[D[183][j]] = 46848 + j; d[46848 + j] = D[183][j];}\nD[184] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������륫륭르륵른를름릅릇릉릊릍릎리릭린릴림립릿링마막만많맏말맑맒맘맙맛망맞맡맣매맥맨맬맴맵맷맸맹맺먀먁먈먕머먹먼멀멂멈멉멋멍멎멓메멕멘멜멤멥멧멨멩며멱면멸몃몄명몇몌모목몫몬몰몲몸몹못몽뫄뫈뫘뫙뫼�\".split(\"\");\nfor(j = 0; j != D[184].length; ++j) if(D[184][j].charCodeAt(0) !== 0xFFFD) { e[D[184][j]] = 47104 + j; d[47104 + j] = D[184][j];}\nD[185] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������묀묄묍묏묑묘묜묠묩묫무묵묶문묻물묽묾뭄뭅뭇뭉뭍뭏뭐뭔뭘뭡뭣뭬뮈뮌뮐뮤뮨뮬뮴뮷므믄믈믐믓미믹민믿밀밂밈밉밋밌밍및밑바박밖밗반받발밝밞밟밤밥밧방밭배백밴밸뱀뱁뱃뱄뱅뱉뱌뱍뱐뱝버벅번벋벌벎범법벗�\".split(\"\");\nfor(j = 0; j != D[185].length; ++j) if(D[185][j].charCodeAt(0) !== 0xFFFD) { e[D[185][j]] = 47360 + j; d[47360 + j] = D[185][j];}\nD[186] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������벙벚베벡벤벧벨벰벱벳벴벵벼벽변별볍볏볐병볕볘볜보복볶본볼봄봅봇봉봐봔봤봬뵀뵈뵉뵌뵐뵘뵙뵤뵨부북분붇불붉붊붐붑붓붕붙붚붜붤붰붸뷔뷕뷘뷜뷩뷰뷴뷸븀븃븅브븍븐블븜븝븟비빅빈빌빎빔빕빗빙빚빛빠빡빤�\".split(\"\");\nfor(j = 0; j != D[186].length; ++j) if(D[186][j].charCodeAt(0) !== 0xFFFD) { e[D[186][j]] = 47616 + j; d[47616 + j] = D[186][j];}\nD[187] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������빨빪빰빱빳빴빵빻빼빽뺀뺄뺌뺍뺏뺐뺑뺘뺙뺨뻐뻑뻔뻗뻘뻠뻣뻤뻥뻬뼁뼈뼉뼘뼙뼛뼜뼝뽀뽁뽄뽈뽐뽑뽕뾔뾰뿅뿌뿍뿐뿔뿜뿟뿡쀼쁑쁘쁜쁠쁨쁩삐삑삔삘삠삡삣삥사삭삯산삳살삵삶삼삽삿샀상샅새색샌샐샘샙샛샜생샤�\".split(\"\");\nfor(j = 0; j != D[187].length; ++j) if(D[187][j].charCodeAt(0) !== 0xFFFD) { e[D[187][j]] = 47872 + j; d[47872 + j] = D[187][j];}\nD[188] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������샥샨샬샴샵샷샹섀섄섈섐섕서석섞섟선섣설섦섧섬섭섯섰성섶세섹센셀셈셉셋셌셍셔셕션셜셤셥셧셨셩셰셴셸솅소속솎손솔솖솜솝솟송솥솨솩솬솰솽쇄쇈쇌쇔쇗쇘쇠쇤쇨쇰쇱쇳쇼쇽숀숄숌숍숏숑수숙순숟술숨숩숫숭�\".split(\"\");\nfor(j = 0; j != D[188].length; ++j) if(D[188][j].charCodeAt(0) !== 0xFFFD) { e[D[188][j]] = 48128 + j; d[48128 + j] = D[188][j];}\nD[189] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������숯숱숲숴쉈쉐쉑쉔쉘쉠쉥쉬쉭쉰쉴쉼쉽쉿슁슈슉슐슘슛슝스슥슨슬슭슴습슷승시식신싣실싫심십싯싱싶싸싹싻싼쌀쌈쌉쌌쌍쌓쌔쌕쌘쌜쌤쌥쌨쌩썅써썩썬썰썲썸썹썼썽쎄쎈쎌쏀쏘쏙쏜쏟쏠쏢쏨쏩쏭쏴쏵쏸쐈쐐쐤쐬쐰�\".split(\"\");\nfor(j = 0; j != D[189].length; ++j) if(D[189][j].charCodeAt(0) !== 0xFFFD) { e[D[189][j]] = 48384 + j; d[48384 + j] = D[189][j];}\nD[190] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������쐴쐼쐽쑈쑤쑥쑨쑬쑴쑵쑹쒀쒔쒜쒸쒼쓩쓰쓱쓴쓸쓺쓿씀씁씌씐씔씜씨씩씬씰씸씹씻씽아악안앉않알앍앎앓암압앗았앙앝앞애액앤앨앰앱앳앴앵야약얀얄얇얌얍얏양얕얗얘얜얠얩어억언얹얻얼얽얾엄업없엇었엉엊엌엎�\".split(\"\");\nfor(j = 0; j != D[190].length; ++j) if(D[190][j].charCodeAt(0) !== 0xFFFD) { e[D[190][j]] = 48640 + j; d[48640 + j] = D[190][j];}\nD[191] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������에엑엔엘엠엡엣엥여역엮연열엶엷염엽엾엿였영옅옆옇예옌옐옘옙옛옜오옥온올옭옮옰옳옴옵옷옹옻와왁완왈왐왑왓왔왕왜왝왠왬왯왱외왹왼욀욈욉욋욍요욕욘욜욤욥욧용우욱운울욹욺움웁웃웅워웍원월웜웝웠웡웨�\".split(\"\");\nfor(j = 0; j != D[191].length; ++j) if(D[191][j].charCodeAt(0) !== 0xFFFD) { e[D[191][j]] = 48896 + j; d[48896 + j] = D[191][j];}\nD[192] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������웩웬웰웸웹웽위윅윈윌윔윕윗윙유육윤율윰윱윳융윷으윽은을읊음읍읏응읒읓읔읕읖읗의읜읠읨읫이익인일읽읾잃임입잇있잉잊잎자작잔잖잗잘잚잠잡잣잤장잦재잭잰잴잼잽잿쟀쟁쟈쟉쟌쟎쟐쟘쟝쟤쟨쟬저적전절젊�\".split(\"\");\nfor(j = 0; j != D[192].length; ++j) if(D[192][j].charCodeAt(0) !== 0xFFFD) { e[D[192][j]] = 49152 + j; d[49152 + j] = D[192][j];}\nD[193] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������점접젓정젖제젝젠젤젬젭젯젱져젼졀졈졉졌졍졔조족존졸졺좀좁좃종좆좇좋좌좍좔좝좟좡좨좼좽죄죈죌죔죕죗죙죠죡죤죵주죽준줄줅줆줌줍줏중줘줬줴쥐쥑쥔쥘쥠쥡쥣쥬쥰쥴쥼즈즉즌즐즘즙즛증지직진짇질짊짐집짓�\".split(\"\");\nfor(j = 0; j != D[193].length; ++j) if(D[193][j].charCodeAt(0) !== 0xFFFD) { e[D[193][j]] = 49408 + j; d[49408 + j] = D[193][j];}\nD[194] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������징짖짙짚짜짝짠짢짤짧짬짭짯짰짱째짹짼쨀쨈쨉쨋쨌쨍쨔쨘쨩쩌쩍쩐쩔쩜쩝쩟쩠쩡쩨쩽쪄쪘쪼쪽쫀쫄쫌쫍쫏쫑쫓쫘쫙쫠쫬쫴쬈쬐쬔쬘쬠쬡쭁쭈쭉쭌쭐쭘쭙쭝쭤쭸쭹쮜쮸쯔쯤쯧쯩찌찍찐찔찜찝찡찢찧차착찬찮찰참찹찻�\".split(\"\");\nfor(j = 0; j != D[194].length; ++j) if(D[194][j].charCodeAt(0) !== 0xFFFD) { e[D[194][j]] = 49664 + j; d[49664 + j] = D[194][j];}\nD[195] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������찼창찾채책챈챌챔챕챗챘챙챠챤챦챨챰챵처척천철첨첩첫첬청체첵첸첼쳄쳅쳇쳉쳐쳔쳤쳬쳰촁초촉촌촐촘촙촛총촤촨촬촹최쵠쵤쵬쵭쵯쵱쵸춈추축춘출춤춥춧충춰췄췌췐취췬췰췸췹췻췽츄츈츌츔츙츠측츤츨츰츱츳층�\".split(\"\");\nfor(j = 0; j != D[195].length; ++j) if(D[195][j].charCodeAt(0) !== 0xFFFD) { e[D[195][j]] = 49920 + j; d[49920 + j] = D[195][j];}\nD[196] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������치칙친칟칠칡침칩칫칭카칵칸칼캄캅캇캉캐캑캔캘캠캡캣캤캥캬캭컁커컥컨컫컬컴컵컷컸컹케켁켄켈켐켑켓켕켜켠켤켬켭켯켰켱켸코콕콘콜콤콥콧콩콰콱콴콸쾀쾅쾌쾡쾨쾰쿄쿠쿡쿤쿨쿰쿱쿳쿵쿼퀀퀄퀑퀘퀭퀴퀵퀸퀼�\".split(\"\");\nfor(j = 0; j != D[196].length; ++j) if(D[196][j].charCodeAt(0) !== 0xFFFD) { e[D[196][j]] = 50176 + j; d[50176 + j] = D[196][j];}\nD[197] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������큄큅큇큉큐큔큘큠크큭큰클큼큽킁키킥킨킬킴킵킷킹타탁탄탈탉탐탑탓탔탕태택탠탤탬탭탯탰탱탸턍터턱턴털턺텀텁텃텄텅테텍텐텔템텝텟텡텨텬텼톄톈토톡톤톨톰톱톳통톺톼퇀퇘퇴퇸툇툉툐투툭툰툴툼툽툿퉁퉈퉜�\".split(\"\");\nfor(j = 0; j != D[197].length; ++j) if(D[197][j].charCodeAt(0) !== 0xFFFD) { e[D[197][j]] = 50432 + j; d[50432 + j] = D[197][j];}\nD[198] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������퉤튀튁튄튈튐튑튕튜튠튤튬튱트특튼튿틀틂틈틉틋틔틘틜틤틥티틱틴틸팀팁팃팅파팍팎판팔팖팜팝팟팠팡팥패팩팬팰팸팹팻팼팽퍄퍅퍼퍽펀펄펌펍펏펐펑페펙펜펠펨펩펫펭펴편펼폄폅폈평폐폘폡폣포폭폰폴폼폽폿퐁�\".split(\"\");\nfor(j = 0; j != D[198].length; ++j) if(D[198][j].charCodeAt(0) !== 0xFFFD) { e[D[198][j]] = 50688 + j; d[50688 + j] = D[198][j];}\nD[199] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������퐈퐝푀푄표푠푤푭푯푸푹푼푿풀풂품풉풋풍풔풩퓌퓐퓔퓜퓟퓨퓬퓰퓸퓻퓽프픈플픔픕픗피픽핀필핌핍핏핑하학한할핥함합핫항해핵핸핼햄햅햇했행햐향허헉헌헐헒험헙헛헝헤헥헨헬헴헵헷헹혀혁현혈혐협혓혔형혜혠�\".split(\"\");\nfor(j = 0; j != D[199].length; ++j) if(D[199][j].charCodeAt(0) !== 0xFFFD) { e[D[199][j]] = 50944 + j; d[50944 + j] = D[199][j];}\nD[200] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������혤혭호혹혼홀홅홈홉홋홍홑화확환활홧황홰홱홴횃횅회획횐횔횝횟횡효횬횰횹횻후훅훈훌훑훔훗훙훠훤훨훰훵훼훽휀휄휑휘휙휜휠휨휩휫휭휴휵휸휼흄흇흉흐흑흔흖흗흘흙흠흡흣흥흩희흰흴흼흽힁히힉힌힐힘힙힛힝�\".split(\"\");\nfor(j = 0; j != D[200].length; ++j) if(D[200][j].charCodeAt(0) !== 0xFFFD) { e[D[200][j]] = 51200 + j; d[51200 + j] = D[200][j];}\nD[202] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������伽佳假價加可呵哥嘉嫁家暇架枷柯歌珂痂稼苛茄街袈訶賈跏軻迦駕刻却各恪慤殼珏脚覺角閣侃刊墾奸姦干幹懇揀杆柬桿澗癎看磵稈竿簡肝艮艱諫間乫喝曷渴碣竭葛褐蝎鞨勘坎堪嵌感憾戡敢柑橄減甘疳監瞰紺邯鑑鑒龕�\".split(\"\");\nfor(j = 0; j != D[202].length; ++j) if(D[202][j].charCodeAt(0) !== 0xFFFD) { e[D[202][j]] = 51712 + j; d[51712 + j] = D[202][j];}\nD[203] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������匣岬甲胛鉀閘剛堈姜岡崗康强彊慷江畺疆糠絳綱羌腔舡薑襁講鋼降鱇介价個凱塏愷愾慨改槪漑疥皆盖箇芥蓋豈鎧開喀客坑更粳羹醵倨去居巨拒据據擧渠炬祛距踞車遽鉅鋸乾件健巾建愆楗腱虔蹇鍵騫乞傑杰桀儉劍劒檢�\".split(\"\");\nfor(j = 0; j != D[203].length; ++j) if(D[203][j].charCodeAt(0) !== 0xFFFD) { e[D[203][j]] = 51968 + j; d[51968 + j] = D[203][j];}\nD[204] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������瞼鈐黔劫怯迲偈憩揭擊格檄激膈覡隔堅牽犬甄絹繭肩見譴遣鵑抉決潔結缺訣兼慊箝謙鉗鎌京俓倞傾儆勁勍卿坰境庚徑慶憬擎敬景暻更梗涇炅烱璟璥瓊痙硬磬竟競絅經耕耿脛莖警輕逕鏡頃頸驚鯨係啓堺契季屆悸戒桂械�\".split(\"\");\nfor(j = 0; j != D[204].length; ++j) if(D[204][j].charCodeAt(0) !== 0xFFFD) { e[D[204][j]] = 52224 + j; d[52224 + j] = D[204][j];}\nD[205] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������棨溪界癸磎稽系繫繼計誡谿階鷄古叩告呱固姑孤尻庫拷攷故敲暠枯槁沽痼皐睾稿羔考股膏苦苽菰藁蠱袴誥賈辜錮雇顧高鼓哭斛曲梏穀谷鵠困坤崑昆梱棍滾琨袞鯤汨滑骨供公共功孔工恐恭拱控攻珙空蚣貢鞏串寡戈果瓜�\".split(\"\");\nfor(j = 0; j != D[205].length; ++j) if(D[205][j].charCodeAt(0) !== 0xFFFD) { e[D[205][j]] = 52480 + j; d[52480 + j] = D[205][j];}\nD[206] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������科菓誇課跨過鍋顆廓槨藿郭串冠官寬慣棺款灌琯瓘管罐菅觀貫關館刮恝括适侊光匡壙廣曠洸炚狂珖筐胱鑛卦掛罫乖傀塊壞怪愧拐槐魁宏紘肱轟交僑咬喬嬌嶠巧攪敎校橋狡皎矯絞翹膠蕎蛟較轎郊餃驕鮫丘久九仇俱具勾�\".split(\"\");\nfor(j = 0; j != D[206].length; ++j) if(D[206][j].charCodeAt(0) !== 0xFFFD) { e[D[206][j]] = 52736 + j; d[52736 + j] = D[206][j];}\nD[207] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������區口句咎嘔坵垢寇嶇廐懼拘救枸柩構歐毆毬求溝灸狗玖球瞿矩究絿耉臼舅舊苟衢謳購軀逑邱鉤銶駒驅鳩鷗龜國局菊鞠鞫麴君窘群裙軍郡堀屈掘窟宮弓穹窮芎躬倦券勸卷圈拳捲權淃眷厥獗蕨蹶闕机櫃潰詭軌饋句晷歸貴�\".split(\"\");\nfor(j = 0; j != D[207].length; ++j) if(D[207][j].charCodeAt(0) !== 0xFFFD) { e[D[207][j]] = 52992 + j; d[52992 + j] = D[207][j];}\nD[208] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������鬼龜叫圭奎揆槻珪硅窺竅糾葵規赳逵閨勻均畇筠菌鈞龜橘克剋劇戟棘極隙僅劤勤懃斤根槿瑾筋芹菫覲謹近饉契今妗擒昑檎琴禁禽芩衾衿襟金錦伋及急扱汲級給亘兢矜肯企伎其冀嗜器圻基埼夔奇妓寄岐崎己幾忌技旗旣�\".split(\"\");\nfor(j = 0; j != D[208].length; ++j) if(D[208][j].charCodeAt(0) !== 0xFFFD) { e[D[208][j]] = 53248 + j; d[53248 + j] = D[208][j];}\nD[209] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������朞期杞棋棄機欺氣汽沂淇玘琦琪璂璣畸畿碁磯祁祇祈祺箕紀綺羈耆耭肌記譏豈起錡錤飢饑騎騏驥麒緊佶吉拮桔金喫儺喇奈娜懦懶拏拿癩羅蘿螺裸邏那樂洛烙珞落諾酪駱亂卵暖欄煖爛蘭難鸞捏捺南嵐枏楠湳濫男藍襤拉�\".split(\"\");\nfor(j = 0; j != D[209].length; ++j) if(D[209][j].charCodeAt(0) !== 0xFFFD) { e[D[209][j]] = 53504 + j; d[53504 + j] = D[209][j];}\nD[210] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������納臘蠟衲囊娘廊朗浪狼郎乃來內奈柰耐冷女年撚秊念恬拈捻寧寗努勞奴弩怒擄櫓爐瑙盧老蘆虜路露駑魯鷺碌祿綠菉錄鹿論壟弄濃籠聾膿農惱牢磊腦賂雷尿壘屢樓淚漏累縷陋嫩訥杻紐勒肋凜凌稜綾能菱陵尼泥匿溺多茶�\".split(\"\");\nfor(j = 0; j != D[210].length; ++j) if(D[210][j].charCodeAt(0) !== 0xFFFD) { e[D[210][j]] = 53760 + j; d[53760 + j] = D[210][j];}\nD[211] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������丹亶但單團壇彖斷旦檀段湍短端簞緞蛋袒鄲鍛撻澾獺疸達啖坍憺擔曇淡湛潭澹痰聃膽蕁覃談譚錟沓畓答踏遝唐堂塘幢戇撞棠當糖螳黨代垈坮大對岱帶待戴擡玳臺袋貸隊黛宅德悳倒刀到圖堵塗導屠島嶋度徒悼挑掉搗桃�\".split(\"\");\nfor(j = 0; j != D[211].length; ++j) if(D[211][j].charCodeAt(0) !== 0xFFFD) { e[D[211][j]] = 54016 + j; d[54016 + j] = D[211][j];}\nD[212] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������棹櫂淘渡滔濤燾盜睹禱稻萄覩賭跳蹈逃途道都鍍陶韜毒瀆牘犢獨督禿篤纛讀墩惇敦旽暾沌焞燉豚頓乭突仝冬凍動同憧東桐棟洞潼疼瞳童胴董銅兜斗杜枓痘竇荳讀豆逗頭屯臀芚遁遯鈍得嶝橙燈登等藤謄鄧騰喇懶拏癩羅�\".split(\"\");\nfor(j = 0; j != D[212].length; ++j) if(D[212][j].charCodeAt(0) !== 0xFFFD) { e[D[212][j]] = 54272 + j; d[54272 + j] = D[212][j];}\nD[213] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������蘿螺裸邏樂洛烙珞絡落諾酪駱丹亂卵欄欒瀾爛蘭鸞剌辣嵐擥攬欖濫籃纜藍襤覽拉臘蠟廊朗浪狼琅瑯螂郞來崍徠萊冷掠略亮倆兩凉梁樑粮粱糧良諒輛量侶儷勵呂廬慮戾旅櫚濾礪藜蠣閭驢驪麗黎力曆歷瀝礫轢靂憐戀攣漣�\".split(\"\");\nfor(j = 0; j != D[213].length; ++j) if(D[213][j].charCodeAt(0) !== 0xFFFD) { e[D[213][j]] = 54528 + j; d[54528 + j] = D[213][j];}\nD[214] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������煉璉練聯蓮輦連鍊冽列劣洌烈裂廉斂殮濂簾獵令伶囹寧岺嶺怜玲笭羚翎聆逞鈴零靈領齡例澧禮醴隷勞怒撈擄櫓潞瀘爐盧老蘆虜路輅露魯鷺鹵碌祿綠菉錄鹿麓論壟弄朧瀧瓏籠聾儡瀨牢磊賂賚賴雷了僚寮廖料燎療瞭聊蓼�\".split(\"\");\nfor(j = 0; j != D[214].length; ++j) if(D[214][j].charCodeAt(0) !== 0xFFFD) { e[D[214][j]] = 54784 + j; d[54784 + j] = D[214][j];}\nD[215] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������遼鬧龍壘婁屢樓淚漏瘻累縷蔞褸鏤陋劉旒柳榴流溜瀏琉瑠留瘤硫謬類六戮陸侖倫崙淪綸輪律慄栗率隆勒肋凜凌楞稜綾菱陵俚利厘吏唎履悧李梨浬犁狸理璃異痢籬罹羸莉裏裡里釐離鯉吝潾燐璘藺躪隣鱗麟林淋琳臨霖砬�\".split(\"\");\nfor(j = 0; j != D[215].length; ++j) if(D[215][j].charCodeAt(0) !== 0xFFFD) { e[D[215][j]] = 55040 + j; d[55040 + j] = D[215][j];}\nD[216] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������立笠粒摩瑪痲碼磨馬魔麻寞幕漠膜莫邈万卍娩巒彎慢挽晩曼滿漫灣瞞萬蔓蠻輓饅鰻唜抹末沫茉襪靺亡妄忘忙望網罔芒茫莽輞邙埋妹媒寐昧枚梅每煤罵買賣邁魅脈貊陌驀麥孟氓猛盲盟萌冪覓免冕勉棉沔眄眠綿緬面麵滅�\".split(\"\");\nfor(j = 0; j != D[216].length; ++j) if(D[216][j].charCodeAt(0) !== 0xFFFD) { e[D[216][j]] = 55296 + j; d[55296 + j] = D[216][j];}\nD[217] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������蔑冥名命明暝椧溟皿瞑茗蓂螟酩銘鳴袂侮冒募姆帽慕摸摹暮某模母毛牟牡瑁眸矛耗芼茅謀謨貌木沐牧目睦穆鶩歿沒夢朦蒙卯墓妙廟描昴杳渺猫竗苗錨務巫憮懋戊拇撫无楙武毋無珷畝繆舞茂蕪誣貿霧鵡墨默們刎吻問文�\".split(\"\");\nfor(j = 0; j != D[217].length; ++j) if(D[217][j].charCodeAt(0) !== 0xFFFD) { e[D[217][j]] = 55552 + j; d[55552 + j] = D[217][j];}\nD[218] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������汶紊紋聞蚊門雯勿沕物味媚尾嵋彌微未梶楣渼湄眉米美薇謎迷靡黴岷悶愍憫敏旻旼民泯玟珉緡閔密蜜謐剝博拍搏撲朴樸泊珀璞箔粕縛膊舶薄迫雹駁伴半反叛拌搬攀斑槃泮潘班畔瘢盤盼磐磻礬絆般蟠返頒飯勃拔撥渤潑�\".split(\"\");\nfor(j = 0; j != D[218].length; ++j) if(D[218][j].charCodeAt(0) !== 0xFFFD) { e[D[218][j]] = 55808 + j; d[55808 + j] = D[218][j];}\nD[219] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������發跋醱鉢髮魃倣傍坊妨尨幇彷房放方旁昉枋榜滂磅紡肪膀舫芳蒡蚌訪謗邦防龐倍俳北培徘拜排杯湃焙盃背胚裴裵褙賠輩配陪伯佰帛柏栢白百魄幡樊煩燔番磻繁蕃藩飜伐筏罰閥凡帆梵氾汎泛犯範范法琺僻劈壁擘檗璧癖�\".split(\"\");\nfor(j = 0; j != D[219].length; ++j) if(D[219][j].charCodeAt(0) !== 0xFFFD) { e[D[219][j]] = 56064 + j; d[56064 + j] = D[219][j];}\nD[220] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������碧蘗闢霹便卞弁變辨辯邊別瞥鱉鼈丙倂兵屛幷昞昺柄棅炳甁病秉竝輧餠騈保堡報寶普步洑湺潽珤甫菩補褓譜輔伏僕匐卜宓復服福腹茯蔔複覆輹輻馥鰒本乶俸奉封峯峰捧棒烽熢琫縫蓬蜂逢鋒鳳不付俯傅剖副否咐埠夫婦�\".split(\"\");\nfor(j = 0; j != D[220].length; ++j) if(D[220][j].charCodeAt(0) !== 0xFFFD) { e[D[220][j]] = 56320 + j; d[56320 + j] = D[220][j];}\nD[221] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������孚孵富府復扶敷斧浮溥父符簿缶腐腑膚艀芙莩訃負賦賻赴趺部釜阜附駙鳧北分吩噴墳奔奮忿憤扮昐汾焚盆粉糞紛芬賁雰不佛弗彿拂崩朋棚硼繃鵬丕備匕匪卑妃婢庇悲憊扉批斐枇榧比毖毗毘沸泌琵痺砒碑秕秘粃緋翡肥�\".split(\"\");\nfor(j = 0; j != D[221].length; ++j) if(D[221][j].charCodeAt(0) !== 0xFFFD) { e[D[221][j]] = 56576 + j; d[56576 + j] = D[221][j];}\nD[222] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������脾臂菲蜚裨誹譬費鄙非飛鼻嚬嬪彬斌檳殯浜濱瀕牝玭貧賓頻憑氷聘騁乍事些仕伺似使俟僿史司唆嗣四士奢娑寫寺射巳師徙思捨斜斯柶査梭死沙泗渣瀉獅砂社祀祠私篩紗絲肆舍莎蓑蛇裟詐詞謝賜赦辭邪飼駟麝削數朔索�\".split(\"\");\nfor(j = 0; j != D[222].length; ++j) if(D[222][j].charCodeAt(0) !== 0xFFFD) { e[D[222][j]] = 56832 + j; d[56832 + j] = D[222][j];}\nD[223] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������傘刪山散汕珊産疝算蒜酸霰乷撒殺煞薩三參杉森渗芟蔘衫揷澁鈒颯上傷像償商喪嘗孀尙峠常床庠廂想桑橡湘爽牀狀相祥箱翔裳觴詳象賞霜塞璽賽嗇塞穡索色牲生甥省笙墅壻嶼序庶徐恕抒捿敍暑曙書栖棲犀瑞筮絮緖署�\".split(\"\");\nfor(j = 0; j != D[223].length; ++j) if(D[223][j].charCodeAt(0) !== 0xFFFD) { e[D[223][j]] = 57088 + j; d[57088 + j] = D[223][j];}\nD[224] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������胥舒薯西誓逝鋤黍鼠夕奭席惜昔晳析汐淅潟石碩蓆釋錫仙僊先善嬋宣扇敾旋渲煽琁瑄璇璿癬禪線繕羨腺膳船蘚蟬詵跣選銑鐥饍鮮卨屑楔泄洩渫舌薛褻設說雪齧剡暹殲纖蟾贍閃陝攝涉燮葉城姓宬性惺成星晟猩珹盛省筬�\".split(\"\");\nfor(j = 0; j != D[224].length; ++j) if(D[224][j].charCodeAt(0) !== 0xFFFD) { e[D[224][j]] = 57344 + j; d[57344 + j] = D[224][j];}\nD[225] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������聖聲腥誠醒世勢歲洗稅笹細說貰召嘯塑宵小少巢所掃搔昭梳沼消溯瀟炤燒甦疏疎瘙笑篠簫素紹蔬蕭蘇訴逍遡邵銷韶騷俗屬束涑粟續謖贖速孫巽損蓀遜飡率宋悚松淞訟誦送頌刷殺灑碎鎖衰釗修受嗽囚垂壽嫂守岫峀帥愁�\".split(\"\");\nfor(j = 0; j != D[225].length; ++j) if(D[225][j].charCodeAt(0) !== 0xFFFD) { e[D[225][j]] = 57600 + j; d[57600 + j] = D[225][j];}\nD[226] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������戍手授搜收數樹殊水洙漱燧狩獸琇璲瘦睡秀穗竪粹綏綬繡羞脩茱蒐蓚藪袖誰讐輸遂邃酬銖銹隋隧隨雖需須首髓鬚叔塾夙孰宿淑潚熟琡璹肅菽巡徇循恂旬栒楯橓殉洵淳珣盾瞬筍純脣舜荀蓴蕣詢諄醇錞順馴戌術述鉥崇崧�\".split(\"\");\nfor(j = 0; j != D[226].length; ++j) if(D[226][j].charCodeAt(0) !== 0xFFFD) { e[D[226][j]] = 57856 + j; d[57856 + j] = D[226][j];}\nD[227] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������嵩瑟膝蝨濕拾習褶襲丞乘僧勝升承昇繩蠅陞侍匙嘶始媤尸屎屍市弑恃施是時枾柴猜矢示翅蒔蓍視試詩諡豕豺埴寔式息拭植殖湜熄篒蝕識軾食飾伸侁信呻娠宸愼新晨燼申神紳腎臣莘薪藎蜃訊身辛辰迅失室實悉審尋心沁�\".split(\"\");\nfor(j = 0; j != D[227].length; ++j) if(D[227][j].charCodeAt(0) !== 0xFFFD) { e[D[227][j]] = 58112 + j; d[58112 + j] = D[227][j];}\nD[228] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������沈深瀋甚芯諶什十拾雙氏亞俄兒啞娥峨我牙芽莪蛾衙訝阿雅餓鴉鵝堊岳嶽幄惡愕握樂渥鄂鍔顎鰐齷安岸按晏案眼雁鞍顔鮟斡謁軋閼唵岩巖庵暗癌菴闇壓押狎鴨仰央怏昻殃秧鴦厓哀埃崖愛曖涯碍艾隘靄厄扼掖液縊腋額�\".split(\"\");\nfor(j = 0; j != D[228].length; ++j) if(D[228][j].charCodeAt(0) !== 0xFFFD) { e[D[228][j]] = 58368 + j; d[58368 + j] = D[228][j];}\nD[229] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������櫻罌鶯鸚也倻冶夜惹揶椰爺耶若野弱掠略約若葯蒻藥躍亮佯兩凉壤孃恙揚攘敭暘梁楊樣洋瀁煬痒瘍禳穰糧羊良襄諒讓釀陽量養圄御於漁瘀禦語馭魚齬億憶抑檍臆偃堰彦焉言諺孼蘖俺儼嚴奄掩淹嶪業円予余勵呂女如廬�\".split(\"\");\nfor(j = 0; j != D[229].length; ++j) if(D[229][j].charCodeAt(0) !== 0xFFFD) { e[D[229][j]] = 58624 + j; d[58624 + j] = D[229][j];}\nD[230] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������旅歟汝濾璵礖礪與艅茹輿轝閭餘驪麗黎亦力域役易曆歷疫繹譯轢逆驛嚥堧姸娟宴年延憐戀捐挻撚椽沇沿涎涓淵演漣烟然煙煉燃燕璉硏硯秊筵緣練縯聯衍軟輦蓮連鉛鍊鳶列劣咽悅涅烈熱裂說閱厭廉念捻染殮炎焰琰艶苒�\".split(\"\");\nfor(j = 0; j != D[230].length; ++j) if(D[230][j].charCodeAt(0) !== 0xFFFD) { e[D[230][j]] = 58880 + j; d[58880 + j] = D[230][j];}\nD[231] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������簾閻髥鹽曄獵燁葉令囹塋寧嶺嶸影怜映暎楹榮永泳渶潁濚瀛瀯煐營獰玲瑛瑩瓔盈穎纓羚聆英詠迎鈴鍈零霙靈領乂倪例刈叡曳汭濊猊睿穢芮藝蘂禮裔詣譽豫醴銳隸霓預五伍俉傲午吾吳嗚塢墺奧娛寤悟惡懊敖旿晤梧汚澳�\".split(\"\");\nfor(j = 0; j != D[231].length; ++j) if(D[231][j].charCodeAt(0) !== 0xFFFD) { e[D[231][j]] = 59136 + j; d[59136 + j] = D[231][j];}\nD[232] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������烏熬獒筽蜈誤鰲鼇屋沃獄玉鈺溫瑥瘟穩縕蘊兀壅擁瓮甕癰翁邕雍饔渦瓦窩窪臥蛙蝸訛婉完宛梡椀浣玩琓琬碗緩翫脘腕莞豌阮頑曰往旺枉汪王倭娃歪矮外嵬巍猥畏了僚僥凹堯夭妖姚寥寮尿嶢拗搖撓擾料曜樂橈燎燿瑤療�\".split(\"\");\nfor(j = 0; j != D[232].length; ++j) if(D[232][j].charCodeAt(0) !== 0xFFFD) { e[D[232][j]] = 59392 + j; d[59392 + j] = D[232][j];}\nD[233] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������窈窯繇繞耀腰蓼蟯要謠遙遼邀饒慾欲浴縟褥辱俑傭冗勇埇墉容庸慂榕涌湧溶熔瑢用甬聳茸蓉踊鎔鏞龍于佑偶優又友右宇寓尤愚憂旴牛玗瑀盂祐禑禹紆羽芋藕虞迂遇郵釪隅雨雩勖彧旭昱栯煜稶郁頊云暈橒殞澐熉耘芸蕓�\".split(\"\");\nfor(j = 0; j != D[233].length; ++j) if(D[233][j].charCodeAt(0) !== 0xFFFD) { e[D[233][j]] = 59648 + j; d[59648 + j] = D[233][j];}\nD[234] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������運隕雲韻蔚鬱亐熊雄元原員圓園垣媛嫄寃怨愿援沅洹湲源爰猿瑗苑袁轅遠阮院願鴛月越鉞位偉僞危圍委威尉慰暐渭爲瑋緯胃萎葦蔿蝟衛褘謂違韋魏乳侑儒兪劉唯喩孺宥幼幽庾悠惟愈愉揄攸有杻柔柚柳楡楢油洧流游溜�\".split(\"\");\nfor(j = 0; j != D[234].length; ++j) if(D[234][j].charCodeAt(0) !== 0xFFFD) { e[D[234][j]] = 59904 + j; d[59904 + j] = D[234][j];}\nD[235] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������濡猶猷琉瑜由留癒硫紐維臾萸裕誘諛諭踰蹂遊逾遺酉釉鍮類六堉戮毓肉育陸倫允奫尹崙淪潤玧胤贇輪鈗閏律慄栗率聿戎瀜絨融隆垠恩慇殷誾銀隱乙吟淫蔭陰音飮揖泣邑凝應膺鷹依倚儀宜意懿擬椅毅疑矣義艤薏蟻衣誼�\".split(\"\");\nfor(j = 0; j != D[235].length; ++j) if(D[235][j].charCodeAt(0) !== 0xFFFD) { e[D[235][j]] = 60160 + j; d[60160 + j] = D[235][j];}\nD[236] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������議醫二以伊利吏夷姨履已弛彛怡易李梨泥爾珥理異痍痢移罹而耳肄苡荑裏裡貽貳邇里離飴餌匿溺瀷益翊翌翼謚人仁刃印吝咽因姻寅引忍湮燐璘絪茵藺蚓認隣靭靷鱗麟一佚佾壹日溢逸鎰馹任壬妊姙恁林淋稔臨荏賃入卄�\".split(\"\");\nfor(j = 0; j != D[236].length; ++j) if(D[236][j].charCodeAt(0) !== 0xFFFD) { e[D[236][j]] = 60416 + j; d[60416 + j] = D[236][j];}\nD[237] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������立笠粒仍剩孕芿仔刺咨姉姿子字孜恣慈滋炙煮玆瓷疵磁紫者自茨蔗藉諮資雌作勺嚼斫昨灼炸爵綽芍酌雀鵲孱棧殘潺盞岑暫潛箴簪蠶雜丈仗匠場墻壯奬將帳庄張掌暲杖樟檣欌漿牆狀獐璋章粧腸臟臧莊葬蔣薔藏裝贓醬長�\".split(\"\");\nfor(j = 0; j != D[237].length; ++j) if(D[237][j].charCodeAt(0) !== 0xFFFD) { e[D[237][j]] = 60672 + j; d[60672 + j] = D[237][j];}\nD[238] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������障再哉在宰才材栽梓渽滓災縡裁財載齋齎爭箏諍錚佇低儲咀姐底抵杵楮樗沮渚狙猪疽箸紵苧菹著藷詛貯躇這邸雎齟勣吊嫡寂摘敵滴狄炙的積笛籍績翟荻謫賊赤跡蹟迪迹適鏑佃佺傳全典前剪塡塼奠專展廛悛戰栓殿氈澱�\".split(\"\");\nfor(j = 0; j != D[238].length; ++j) if(D[238][j].charCodeAt(0) !== 0xFFFD) { e[D[238][j]] = 60928 + j; d[60928 + j] = D[238][j];}\nD[239] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������煎琠田甸畑癲筌箋箭篆纏詮輾轉鈿銓錢鐫電顚顫餞切截折浙癤竊節絶占岾店漸点粘霑鮎點接摺蝶丁井亭停偵呈姃定幀庭廷征情挺政整旌晶晸柾楨檉正汀淀淨渟湞瀞炡玎珽町睛碇禎程穽精綎艇訂諪貞鄭酊釘鉦鋌錠霆靖�\".split(\"\");\nfor(j = 0; j != D[239].length; ++j) if(D[239][j].charCodeAt(0) !== 0xFFFD) { e[D[239][j]] = 61184 + j; d[61184 + j] = D[239][j];}\nD[240] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������靜頂鼎制劑啼堤帝弟悌提梯濟祭第臍薺製諸蹄醍除際霽題齊俎兆凋助嘲弔彫措操早晁曺曹朝條棗槽漕潮照燥爪璪眺祖祚租稠窕粗糟組繰肇藻蚤詔調趙躁造遭釣阻雕鳥族簇足鏃存尊卒拙猝倧宗從悰慫棕淙琮種終綜縱腫�\".split(\"\");\nfor(j = 0; j != D[240].length; ++j) if(D[240][j].charCodeAt(0) !== 0xFFFD) { e[D[240][j]] = 61440 + j; d[61440 + j] = D[240][j];}\nD[241] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������踪踵鍾鐘佐坐左座挫罪主住侏做姝胄呪周嗾奏宙州廚晝朱柱株注洲湊澍炷珠疇籌紂紬綢舟蛛註誅走躊輳週酎酒鑄駐竹粥俊儁准埈寯峻晙樽浚準濬焌畯竣蠢逡遵雋駿茁中仲衆重卽櫛楫汁葺增憎曾拯烝甑症繒蒸證贈之只�\".split(\"\");\nfor(j = 0; j != D[241].length; ++j) if(D[241][j].charCodeAt(0) !== 0xFFFD) { e[D[241][j]] = 61696 + j; d[61696 + j] = D[241][j];}\nD[242] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������咫地址志持指摯支旨智枝枳止池沚漬知砥祉祗紙肢脂至芝芷蜘誌識贄趾遲直稙稷織職唇嗔塵振搢晉晋桭榛殄津溱珍瑨璡畛疹盡眞瞋秦縉縝臻蔯袗診賑軫辰進鎭陣陳震侄叱姪嫉帙桎瓆疾秩窒膣蛭質跌迭斟朕什執潗緝輯�\".split(\"\");\nfor(j = 0; j != D[242].length; ++j) if(D[242][j].charCodeAt(0) !== 0xFFFD) { e[D[242][j]] = 61952 + j; d[61952 + j] = D[242][j];}\nD[243] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������鏶集徵懲澄且侘借叉嗟嵯差次此磋箚茶蹉車遮捉搾着窄錯鑿齪撰澯燦璨瓚竄簒纂粲纘讚贊鑽餐饌刹察擦札紮僭參塹慘慙懺斬站讒讖倉倡創唱娼廠彰愴敞昌昶暢槍滄漲猖瘡窓脹艙菖蒼債埰寀寨彩採砦綵菜蔡采釵冊柵策�\".split(\"\");\nfor(j = 0; j != D[243].length; ++j) if(D[243][j].charCodeAt(0) !== 0xFFFD) { e[D[243][j]] = 62208 + j; d[62208 + j] = D[243][j];}\nD[244] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������責凄妻悽處倜刺剔尺慽戚拓擲斥滌瘠脊蹠陟隻仟千喘天川擅泉淺玔穿舛薦賤踐遷釧闡阡韆凸哲喆徹撤澈綴輟轍鐵僉尖沾添甛瞻簽籤詹諂堞妾帖捷牒疊睫諜貼輒廳晴淸聽菁請靑鯖切剃替涕滯締諦逮遞體初剿哨憔抄招梢�\".split(\"\");\nfor(j = 0; j != D[244].length; ++j) if(D[244][j].charCodeAt(0) !== 0xFFFD) { e[D[244][j]] = 62464 + j; d[62464 + j] = D[244][j];}\nD[245] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������椒楚樵炒焦硝礁礎秒稍肖艸苕草蕉貂超酢醋醮促囑燭矗蜀觸寸忖村邨叢塚寵悤憁摠總聰蔥銃撮催崔最墜抽推椎楸樞湫皺秋芻萩諏趨追鄒酋醜錐錘鎚雛騶鰍丑畜祝竺筑築縮蓄蹙蹴軸逐春椿瑃出朮黜充忠沖蟲衝衷悴膵萃�\".split(\"\");\nfor(j = 0; j != D[245].length; ++j) if(D[245][j].charCodeAt(0) !== 0xFFFD) { e[D[245][j]] = 62720 + j; d[62720 + j] = D[245][j];}\nD[246] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������贅取吹嘴娶就炊翠聚脆臭趣醉驟鷲側仄厠惻測層侈値嗤峙幟恥梔治淄熾痔痴癡稚穉緇緻置致蚩輜雉馳齒則勅飭親七柒漆侵寢枕沈浸琛砧針鍼蟄秤稱快他咤唾墮妥惰打拖朶楕舵陀馱駝倬卓啄坼度托拓擢晫柝濁濯琢琸託�\".split(\"\");\nfor(j = 0; j != D[246].length; ++j) if(D[246][j].charCodeAt(0) !== 0xFFFD) { e[D[246][j]] = 62976 + j; d[62976 + j] = D[246][j];}\nD[247] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������鐸呑嘆坦彈憚歎灘炭綻誕奪脫探眈耽貪塔搭榻宕帑湯糖蕩兌台太怠態殆汰泰笞胎苔跆邰颱宅擇澤撑攄兎吐土討慟桶洞痛筒統通堆槌腿褪退頹偸套妬投透鬪慝特闖坡婆巴把播擺杷波派爬琶破罷芭跛頗判坂板版瓣販辦鈑�\".split(\"\");\nfor(j = 0; j != D[247].length; ++j) if(D[247][j].charCodeAt(0) !== 0xFFFD) { e[D[247][j]] = 63232 + j; d[63232 + j] = D[247][j];}\nD[248] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������阪八叭捌佩唄悖敗沛浿牌狽稗覇貝彭澎烹膨愎便偏扁片篇編翩遍鞭騙貶坪平枰萍評吠嬖幣廢弊斃肺蔽閉陛佈包匍匏咆哺圃布怖抛抱捕暴泡浦疱砲胞脯苞葡蒲袍褒逋鋪飽鮑幅暴曝瀑爆輻俵剽彪慓杓標漂瓢票表豹飇飄驃�\".split(\"\");\nfor(j = 0; j != D[248].length; ++j) if(D[248][j].charCodeAt(0) !== 0xFFFD) { e[D[248][j]] = 63488 + j; d[63488 + j] = D[248][j];}\nD[249] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������品稟楓諷豊風馮彼披疲皮被避陂匹弼必泌珌畢疋筆苾馝乏逼下何厦夏廈昰河瑕荷蝦賀遐霞鰕壑學虐謔鶴寒恨悍旱汗漢澣瀚罕翰閑閒限韓割轄函含咸啣喊檻涵緘艦銜陷鹹合哈盒蛤閤闔陜亢伉姮嫦巷恒抗杭桁沆港缸肛航�\".split(\"\");\nfor(j = 0; j != D[249].length; ++j) if(D[249][j].charCodeAt(0) !== 0xFFFD) { e[D[249][j]] = 63744 + j; d[63744 + j] = D[249][j];}\nD[250] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������行降項亥偕咳垓奚孩害懈楷海瀣蟹解該諧邂駭骸劾核倖幸杏荇行享向嚮珦鄕響餉饗香噓墟虛許憲櫶獻軒歇險驗奕爀赫革俔峴弦懸晛泫炫玄玹現眩睍絃絢縣舷衒見賢鉉顯孑穴血頁嫌俠協夾峽挾浹狹脅脇莢鋏頰亨兄刑型�\".split(\"\");\nfor(j = 0; j != D[250].length; ++j) if(D[250][j].charCodeAt(0) !== 0xFFFD) { e[D[250][j]] = 64000 + j; d[64000 + j] = D[250][j];}\nD[251] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������形泂滎瀅灐炯熒珩瑩荊螢衡逈邢鎣馨兮彗惠慧暳蕙蹊醯鞋乎互呼壕壺好岵弧戶扈昊晧毫浩淏湖滸澔濠濩灝狐琥瑚瓠皓祜糊縞胡芦葫蒿虎號蝴護豪鎬頀顥惑或酷婚昏混渾琿魂忽惚笏哄弘汞泓洪烘紅虹訌鴻化和嬅樺火畵�\".split(\"\");\nfor(j = 0; j != D[251].length; ++j) if(D[251][j].charCodeAt(0) !== 0xFFFD) { e[D[251][j]] = 64256 + j; d[64256 + j] = D[251][j];}\nD[252] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������禍禾花華話譁貨靴廓擴攫確碻穫丸喚奐宦幻患換歡晥桓渙煥環紈還驩鰥活滑猾豁闊凰幌徨恍惶愰慌晃晄榥況湟滉潢煌璜皇篁簧荒蝗遑隍黃匯回廻徊恢悔懷晦會檜淮澮灰獪繪膾茴蛔誨賄劃獲宖橫鐄哮嚆孝效斅曉梟涍淆�\".split(\"\");\nfor(j = 0; j != D[252].length; ++j) if(D[252][j].charCodeAt(0) !== 0xFFFD) { e[D[252][j]] = 64512 + j; d[64512 + j] = D[252][j];}\nD[253] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������爻肴酵驍侯候厚后吼喉嗅帿後朽煦珝逅勛勳塤壎焄熏燻薰訓暈薨喧暄煊萱卉喙毁彙徽揮暉煇諱輝麾休携烋畦虧恤譎鷸兇凶匈洶胸黑昕欣炘痕吃屹紇訖欠欽歆吸恰洽翕興僖凞喜噫囍姬嬉希憙憘戱晞曦熙熹熺犧禧稀羲詰�\".split(\"\");\nfor(j = 0; j != D[253].length; ++j) if(D[253][j].charCodeAt(0) !== 0xFFFD) { e[D[253][j]] = 64768 + j; d[64768 + j] = D[253][j];}\nreturn {\"enc\": e, \"dec\": d }; })();\ncptable[21025] = (function(){ var d = \"\\u0002\\u0003\\t\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\b\\u0018\\u0019\\u001c\\u001d\\u001e\\u001f\\n\\u0017\\u001b\\u0005\\u0006\\u0007\\u0016\\u0004\\u0014\\u0015\\u001a  ђѓёєѕіїј[.<(+!&љњћќўџЪ№Ђ]$*);^-/ЃЁЄЅІЇЈЉ|,%_>?ЊЋЌ­ЎЏюаб`:#@'=\\\"цabcdefghiдефгхийjklmnopqrклмнопя~stuvwxyzрстужвьызшэщчъЮАБЦДЕФГ{ABCDEFGHIХИЙКЛМ}JKLMNOPQRНОПЯРС\\\\§STUVWXYZТУЖВЬЫ0123456789ЗШЭЩЧ\", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {\"enc\": e, \"dec\": D }; })();\ncptable[21027] = (function(){ var d = \"\\u0000\\u0001\\u0002\\u0003\\u0004\\u0005\\u0006\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\u0014\\u0015\\u0016\\u0017\\u0018\\u0019\\u001a\\u001b\\u001c\\u001d\\u001e\\u001f\\u0000 \\u0000｡｢｣､･ｦｧｨ¢.<(+|&ｩｪｫｬｭｮｯｰｱ!$*);¬-/ｲｳｴｵｶｷｹ\\u0000,%_>?ｺｻｼｽｾｿﾀﾁﾂ`:#@'\\\"\\u0000abcdefghiﾃﾄﾅﾆﾈ\\u0000jklmnopqrﾉﾊﾋﾌﾍﾎ¯~stuvwxyzﾏﾐﾑ[ﾒﾓ^£¥ﾔﾕﾖﾗﾘﾙﾚﾛﾜﾝ]ﾞﾟ{ABCDEFG\\u0000\\u0000}JKLMNOP\\u0000\\\\\\u0000STUVWX\\u0000\\u000001234567\", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {\"enc\": e, \"dec\": D }; })();\ncptable[21866] = (function(){ var d = \"ЪЪ\\u0002\\u0003\\u0004\\u0005\\u0006\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\u0014\\u0015\\u0016\\u0017\\u0018\\u0019\\u001a\\u001b\\u001c\\u001d\\u001e\\u001f !\\\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~─│┌┐└┘├┤┬┴┼▀▄█▌▐░▒▓⌠■∙√≈≤≥ ⌡°²·÷═║╒ёє╔ії╗╘╙╚╛ґў╞╟╠╡ЁЄ╣ІЇ╦╧╨╩╪ҐЎ©юабцдефгхийклмнопярстужвьызшэщчъЮАБЦДЕФГХИЙКЛМНОПЯРСТУЖВЬЫЗШЭЩЧЪ\", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {\"enc\": e, \"dec\": D }; })();\ncptable[29001] = (function(){ var d = \"ΈΉΊΌΎ°◘○◙♂♀♪♬☼▶◀↕‼¶§£Ώ↑↓→←Ë↔▲▼ !\\\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~ÇüéâäàåçêëèïîìÄÅÉæÆôöòûùΑÖÜøαØάΒáíóúñÑβΓγΔδΕεέΖζΗηή│ªÁÂÀΘθ║╗╝ΙΪ┐└º¡¿─΄ãÃ╚╔ιίϊ═ΐΚκΛÊλΜμÍΝν┘┌ΞξΟοόÓßÔΠõÕπΡρÚΣςσΤτΥΫυύϋΰΦφΧχΨ·ψΩωώ\", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {\"enc\": e, \"dec\": D }; })();\ncptable[38598] = (function(){ var d = \"\\u0002\\u0003\\u0004\\u0005\\u0006\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\u0014\\u0015\\u0016\\u0017\\u0018\\u0019\\u001a\\u001b\\u001c\\u001d\\u001e\\u001f !\\\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~ ¢£¤¥¦§¨©×«¬­®‾°±²³´µ¶·¸¹÷»¼½¾‗אבגדהוזחטיךכלםמןנסעףפץצקרשת\", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {\"enc\": e, \"dec\": D }; })();\ncptable[50220] = (function(){ var d = [], e = {}, D = [], j;\nD[0] = \"\\u0000\\u0001\\u0002\\u0003\\u0004\\u0005\\u0006\\u0007\\b\\t\\n\\u000b\\f\\r\\u0000\\u0000\\u0010\\u0011\\u0012\\u0013\\u0014\\u0015\\u0016\\u0017\\u0018\\u0019\\u001a\\u001b\\u001c\\u001d\\u001e\\u001f !\\\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~�������������������������������｡｢｣､･ｦｧｨｩｪｫｬｭｮｯｰｱｲｳｴｵｶｷｸｹｺｻｼｽｾｿﾀﾁﾂﾃﾄﾅﾆﾇﾈﾉﾊﾋﾌﾍﾎﾏﾐﾑﾒﾓﾔﾕﾖﾗﾘﾙﾚﾛﾜﾝﾞﾟ�����������������������������\".split(\"\");\nfor(j = 0; j != D[0].length; ++j) if(D[0][j].charCodeAt(0) !== 0xFFFD) { e[D[0][j]] = 0 + j; d[0 + j] = D[0][j];}\nD[1] = \"��������������\\u0001\\u0001������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[1].length; ++j) if(D[1][j].charCodeAt(0) !== 0xFFFD) { e[D[1][j]] = 256 + j; d[256 + j] = D[1][j];}\nD[2] = \"��������������\\u0002\\u0002������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[2].length; ++j) if(D[2][j].charCodeAt(0) !== 0xFFFD) { e[D[2][j]] = 512 + j; d[512 + j] = D[2][j];}\nD[3] = \"��������������\\u0003\\u0003������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[3].length; ++j) if(D[3][j].charCodeAt(0) !== 0xFFFD) { e[D[3][j]] = 768 + j; d[768 + j] = D[3][j];}\nD[4] = \"��������������\\u0004\\u0004������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[4].length; ++j) if(D[4][j].charCodeAt(0) !== 0xFFFD) { e[D[4][j]] = 1024 + j; d[1024 + j] = D[4][j];}\nD[5] = \"��������������\\u0005\\u0005������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[5].length; ++j) if(D[5][j].charCodeAt(0) !== 0xFFFD) { e[D[5][j]] = 1280 + j; d[1280 + j] = D[5][j];}\nD[6] = \"��������������\\u0006\\u0006������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[6].length; ++j) if(D[6][j].charCodeAt(0) !== 0xFFFD) { e[D[6][j]] = 1536 + j; d[1536 + j] = D[6][j];}\nD[7] = \"��������������\\u0007\\u0007������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[7].length; ++j) if(D[7][j].charCodeAt(0) !== 0xFFFD) { e[D[7][j]] = 1792 + j; d[1792 + j] = D[7][j];}\nD[8] = \"��������������\\b\\b������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[8].length; ++j) if(D[8][j].charCodeAt(0) !== 0xFFFD) { e[D[8][j]] = 2048 + j; d[2048 + j] = D[8][j];}\nD[9] = \"��������������\\t\\t������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[9].length; ++j) if(D[9][j].charCodeAt(0) !== 0xFFFD) { e[D[9][j]] = 2304 + j; d[2304 + j] = D[9][j];}\nD[10] = \"��������������\\n\\n������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[10].length; ++j) if(D[10][j].charCodeAt(0) !== 0xFFFD) { e[D[10][j]] = 2560 + j; d[2560 + j] = D[10][j];}\nD[11] = \"��������������\\u000b\\u000b������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[11].length; ++j) if(D[11][j].charCodeAt(0) !== 0xFFFD) { e[D[11][j]] = 2816 + j; d[2816 + j] = D[11][j];}\nD[12] = \"��������������\\f\\f������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[12].length; ++j) if(D[12][j].charCodeAt(0) !== 0xFFFD) { e[D[12][j]] = 3072 + j; d[3072 + j] = D[12][j];}\nD[13] = \"��������������\\r\\r������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[13].length; ++j) if(D[13][j].charCodeAt(0) !== 0xFFFD) { e[D[13][j]] = 3328 + j; d[3328 + j] = D[13][j];}\nD[14] = \"��������������\\r\\r�����������������｡｢｣､･ｦｧｨｩｪｫｬｭｮｯｰｱｲｳｴｵｶｷｸｹｺｻｼｽｾｿﾀﾁﾂﾃﾄﾅﾆﾇﾈﾉﾊﾋﾌﾍﾎﾏﾐﾑﾒﾓﾔﾕﾖﾗﾘﾙﾚﾛﾜﾝﾞﾟ�����������������������������������������������������������������｡｢｣､･ｦｧｨｩｪｫｬｭｮｯｰｱｲｳｴｵｶｷｸｹｺｻｼｽｾｿﾀﾁﾂﾃﾄﾅﾆﾇﾈﾉﾊﾋﾌﾍﾎﾏﾐﾑﾒﾓﾔﾕﾖﾗﾘﾙﾚﾛﾜﾝﾞﾟ��������������������������������\".split(\"\");\nfor(j = 0; j != D[14].length; ++j) if(D[14][j].charCodeAt(0) !== 0xFFFD) { e[D[14][j]] = 3584 + j; d[3584 + j] = D[14][j];}\nD[15] = \"�\\u0001\\u0002\\u0003\\u0004\\u0005\\u0006\\u0007\\b\\t\\n\\u000b\\f\\r\\r\\r\\u0010\\u0011\\u0012\\u0013\\u0014\\u0015\\u0016\\u0017\\u0018\\u0019\\u001a\\u001b\\u001c\\u001d\\u001e\\u001f !\\\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~�������������������������������｡｢｣､･ｦｧｨｩｪｫｬｭｮｯｰｱｲｳｴｵｶｷｸｹｺｻｼｽｾｿﾀﾁﾂﾃﾄﾅﾆﾇﾈﾉﾊﾋﾌﾍﾎﾏﾐﾑﾒﾓﾔﾕﾖﾗﾘﾙﾚﾛﾜﾝﾞﾟ�����������������������������\".split(\"\");\nfor(j = 0; j != D[15].length; ++j) if(D[15][j].charCodeAt(0) !== 0xFFFD) { e[D[15][j]] = 3840 + j; d[3840 + j] = D[15][j];}\nD[16] = \"��������������\\u0010\\u0010������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[16].length; ++j) if(D[16][j].charCodeAt(0) !== 0xFFFD) { e[D[16][j]] = 4096 + j; d[4096 + j] = D[16][j];}\nD[17] = \"��������������\\u0011\\u0011������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[17].length; ++j) if(D[17][j].charCodeAt(0) !== 0xFFFD) { e[D[17][j]] = 4352 + j; d[4352 + j] = D[17][j];}\nD[18] = \"��������������\\u0012\\u0012������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[18].length; ++j) if(D[18][j].charCodeAt(0) !== 0xFFFD) { e[D[18][j]] = 4608 + j; d[4608 + j] = D[18][j];}\nD[19] = \"��������������\\u0013\\u0013������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[19].length; ++j) if(D[19][j].charCodeAt(0) !== 0xFFFD) { e[D[19][j]] = 4864 + j; d[4864 + j] = D[19][j];}\nD[20] = \"��������������\\u0014\\u0014������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[20].length; ++j) if(D[20][j].charCodeAt(0) !== 0xFFFD) { e[D[20][j]] = 5120 + j; d[5120 + j] = D[20][j];}\nD[21] = \"��������������\\u0015\\u0015������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[21].length; ++j) if(D[21][j].charCodeAt(0) !== 0xFFFD) { e[D[21][j]] = 5376 + j; d[5376 + j] = D[21][j];}\nD[22] = \"��������������\\u0016\\u0016������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[22].length; ++j) if(D[22][j].charCodeAt(0) !== 0xFFFD) { e[D[22][j]] = 5632 + j; d[5632 + j] = D[22][j];}\nD[23] = \"��������������\\u0017\\u0017������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[23].length; ++j) if(D[23][j].charCodeAt(0) !== 0xFFFD) { e[D[23][j]] = 5888 + j; d[5888 + j] = D[23][j];}\nD[24] = \"��������������\\u0018\\u0018������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[24].length; ++j) if(D[24][j].charCodeAt(0) !== 0xFFFD) { e[D[24][j]] = 6144 + j; d[6144 + j] = D[24][j];}\nD[25] = \"��������������\\u0019\\u0019������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[25].length; ++j) if(D[25][j].charCodeAt(0) !== 0xFFFD) { e[D[25][j]] = 6400 + j; d[6400 + j] = D[25][j];}\nD[26] = \"��������������\\u001a\\u001a������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[26].length; ++j) if(D[26][j].charCodeAt(0) !== 0xFFFD) { e[D[26][j]] = 6656 + j; d[6656 + j] = D[26][j];}\nD[27] = \"��������������\\u001b\\u001b������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[27].length; ++j) if(D[27][j].charCodeAt(0) !== 0xFFFD) { e[D[27][j]] = 6912 + j; d[6912 + j] = D[27][j];}\nD[28] = \"��������������\\u001c\\u001c������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[28].length; ++j) if(D[28][j].charCodeAt(0) !== 0xFFFD) { e[D[28][j]] = 7168 + j; d[7168 + j] = D[28][j];}\nD[29] = \"��������������\\u001d\\u001d������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[29].length; ++j) if(D[29][j].charCodeAt(0) !== 0xFFFD) { e[D[29][j]] = 7424 + j; d[7424 + j] = D[29][j];}\nD[30] = \"��������������\\u001e\\u001e������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[30].length; ++j) if(D[30][j].charCodeAt(0) !== 0xFFFD) { e[D[30][j]] = 7680 + j; d[7680 + j] = D[30][j];}\nD[31] = \"��������������\\u001f\\u001f������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[31].length; ++j) if(D[31][j].charCodeAt(0) !== 0xFFFD) { e[D[31][j]] = 7936 + j; d[7936 + j] = D[31][j];}\nD[32] = \"��������������  ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[32].length; ++j) if(D[32][j].charCodeAt(0) !== 0xFFFD) { e[D[32][j]] = 8192 + j; d[8192 + j] = D[32][j];}\nD[33] = \"��������������!!������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[33].length; ++j) if(D[33][j].charCodeAt(0) !== 0xFFFD) { e[D[33][j]] = 8448 + j; d[8448 + j] = D[33][j];}\nD[34] = \"��������������\\\"\\\"������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[34].length; ++j) if(D[34][j].charCodeAt(0) !== 0xFFFD) { e[D[34][j]] = 8704 + j; d[8704 + j] = D[34][j];}\nD[35] = \"��������������##������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[35].length; ++j) if(D[35][j].charCodeAt(0) !== 0xFFFD) { e[D[35][j]] = 8960 + j; d[8960 + j] = D[35][j];}\nD[36] = \"��������������$$������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[36].length; ++j) if(D[36][j].charCodeAt(0) !== 0xFFFD) { e[D[36][j]] = 9216 + j; d[9216 + j] = D[36][j];}\nD[37] = \"��������������%%������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[37].length; ++j) if(D[37][j].charCodeAt(0) !== 0xFFFD) { e[D[37][j]] = 9472 + j; d[9472 + j] = D[37][j];}\nD[38] = \"��������������&&������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[38].length; ++j) if(D[38][j].charCodeAt(0) !== 0xFFFD) { e[D[38][j]] = 9728 + j; d[9728 + j] = D[38][j];}\nD[39] = \"��������������''������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[39].length; ++j) if(D[39][j].charCodeAt(0) !== 0xFFFD) { e[D[39][j]] = 9984 + j; d[9984 + j] = D[39][j];}\nD[40] = \"��������������((������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[40].length; ++j) if(D[40][j].charCodeAt(0) !== 0xFFFD) { e[D[40][j]] = 10240 + j; d[10240 + j] = D[40][j];}\nD[41] = \"��������������))������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[41].length; ++j) if(D[41][j].charCodeAt(0) !== 0xFFFD) { e[D[41][j]] = 10496 + j; d[10496 + j] = D[41][j];}\nD[42] = \"��������������**������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[42].length; ++j) if(D[42][j].charCodeAt(0) !== 0xFFFD) { e[D[42][j]] = 10752 + j; d[10752 + j] = D[42][j];}\nD[43] = \"��������������++������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[43].length; ++j) if(D[43][j].charCodeAt(0) !== 0xFFFD) { e[D[43][j]] = 11008 + j; d[11008 + j] = D[43][j];}\nD[44] = \"��������������,,������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[44].length; ++j) if(D[44][j].charCodeAt(0) !== 0xFFFD) { e[D[44][j]] = 11264 + j; d[11264 + j] = D[44][j];}\nD[45] = \"��������������--������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[45].length; ++j) if(D[45][j].charCodeAt(0) !== 0xFFFD) { e[D[45][j]] = 11520 + j; d[11520 + j] = D[45][j];}\nD[46] = \"��������������..������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[46].length; ++j) if(D[46][j].charCodeAt(0) !== 0xFFFD) { e[D[46][j]] = 11776 + j; d[11776 + j] = D[46][j];}\nD[47] = \"��������������//������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[47].length; ++j) if(D[47][j].charCodeAt(0) !== 0xFFFD) { e[D[47][j]] = 12032 + j; d[12032 + j] = D[47][j];}\nD[48] = \"��������������00������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[48].length; ++j) if(D[48][j].charCodeAt(0) !== 0xFFFD) { e[D[48][j]] = 12288 + j; d[12288 + j] = D[48][j];}\nD[49] = \"��������������11������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[49].length; ++j) if(D[49][j].charCodeAt(0) !== 0xFFFD) { e[D[49][j]] = 12544 + j; d[12544 + j] = D[49][j];}\nD[50] = \"��������������22������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[50].length; ++j) if(D[50][j].charCodeAt(0) !== 0xFFFD) { e[D[50][j]] = 12800 + j; d[12800 + j] = D[50][j];}\nD[51] = \"��������������33������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[51].length; ++j) if(D[51][j].charCodeAt(0) !== 0xFFFD) { e[D[51][j]] = 13056 + j; d[13056 + j] = D[51][j];}\nD[52] = \"��������������44������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[52].length; ++j) if(D[52][j].charCodeAt(0) !== 0xFFFD) { e[D[52][j]] = 13312 + j; d[13312 + j] = D[52][j];}\nD[53] = \"��������������55������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[53].length; ++j) if(D[53][j].charCodeAt(0) !== 0xFFFD) { e[D[53][j]] = 13568 + j; d[13568 + j] = D[53][j];}\nD[54] = \"��������������66������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[54].length; ++j) if(D[54][j].charCodeAt(0) !== 0xFFFD) { e[D[54][j]] = 13824 + j; d[13824 + j] = D[54][j];}\nD[55] = \"��������������77������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[55].length; ++j) if(D[55][j].charCodeAt(0) !== 0xFFFD) { e[D[55][j]] = 14080 + j; d[14080 + j] = D[55][j];}\nD[56] = \"��������������88������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[56].length; ++j) if(D[56][j].charCodeAt(0) !== 0xFFFD) { e[D[56][j]] = 14336 + j; d[14336 + j] = D[56][j];}\nD[57] = \"��������������99������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[57].length; ++j) if(D[57][j].charCodeAt(0) !== 0xFFFD) { e[D[57][j]] = 14592 + j; d[14592 + j] = D[57][j];}\nD[58] = \"��������������::������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[58].length; ++j) if(D[58][j].charCodeAt(0) !== 0xFFFD) { e[D[58][j]] = 14848 + j; d[14848 + j] = D[58][j];}\nD[59] = \"��������������;;������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[59].length; ++j) if(D[59][j].charCodeAt(0) !== 0xFFFD) { e[D[59][j]] = 15104 + j; d[15104 + j] = D[59][j];}\nD[60] = \"��������������<<������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[60].length; ++j) if(D[60][j].charCodeAt(0) !== 0xFFFD) { e[D[60][j]] = 15360 + j; d[15360 + j] = D[60][j];}\nD[61] = \"��������������==������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[61].length; ++j) if(D[61][j].charCodeAt(0) !== 0xFFFD) { e[D[61][j]] = 15616 + j; d[15616 + j] = D[61][j];}\nD[62] = \"��������������>>������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[62].length; ++j) if(D[62][j].charCodeAt(0) !== 0xFFFD) { e[D[62][j]] = 15872 + j; d[15872 + j] = D[62][j];}\nD[63] = \"��������������??������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[63].length; ++j) if(D[63][j].charCodeAt(0) !== 0xFFFD) { e[D[63][j]] = 16128 + j; d[16128 + j] = D[63][j];}\nD[64] = \"��������������@@������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[64].length; ++j) if(D[64][j].charCodeAt(0) !== 0xFFFD) { e[D[64][j]] = 16384 + j; d[16384 + j] = D[64][j];}\nD[65] = \"��������������AA������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[65].length; ++j) if(D[65][j].charCodeAt(0) !== 0xFFFD) { e[D[65][j]] = 16640 + j; d[16640 + j] = D[65][j];}\nD[66] = \"��������������BB������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[66].length; ++j) if(D[66][j].charCodeAt(0) !== 0xFFFD) { e[D[66][j]] = 16896 + j; d[16896 + j] = D[66][j];}\nD[67] = \"��������������CC������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[67].length; ++j) if(D[67][j].charCodeAt(0) !== 0xFFFD) { e[D[67][j]] = 17152 + j; d[17152 + j] = D[67][j];}\nD[68] = \"��������������DD������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[68].length; ++j) if(D[68][j].charCodeAt(0) !== 0xFFFD) { e[D[68][j]] = 17408 + j; d[17408 + j] = D[68][j];}\nD[69] = \"��������������EE������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[69].length; ++j) if(D[69][j].charCodeAt(0) !== 0xFFFD) { e[D[69][j]] = 17664 + j; d[17664 + j] = D[69][j];}\nD[70] = \"��������������FF������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[70].length; ++j) if(D[70][j].charCodeAt(0) !== 0xFFFD) { e[D[70][j]] = 17920 + j; d[17920 + j] = D[70][j];}\nD[71] = \"��������������GG������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[71].length; ++j) if(D[71][j].charCodeAt(0) !== 0xFFFD) { e[D[71][j]] = 18176 + j; d[18176 + j] = D[71][j];}\nD[72] = \"��������������HH������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[72].length; ++j) if(D[72][j].charCodeAt(0) !== 0xFFFD) { e[D[72][j]] = 18432 + j; d[18432 + j] = D[72][j];}\nD[73] = \"��������������II������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[73].length; ++j) if(D[73][j].charCodeAt(0) !== 0xFFFD) { e[D[73][j]] = 18688 + j; d[18688 + j] = D[73][j];}\nD[74] = \"��������������JJ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[74].length; ++j) if(D[74][j].charCodeAt(0) !== 0xFFFD) { e[D[74][j]] = 18944 + j; d[18944 + j] = D[74][j];}\nD[75] = \"��������������KK������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[75].length; ++j) if(D[75][j].charCodeAt(0) !== 0xFFFD) { e[D[75][j]] = 19200 + j; d[19200 + j] = D[75][j];}\nD[76] = \"��������������LL������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[76].length; ++j) if(D[76][j].charCodeAt(0) !== 0xFFFD) { e[D[76][j]] = 19456 + j; d[19456 + j] = D[76][j];}\nD[77] = \"��������������MM������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[77].length; ++j) if(D[77][j].charCodeAt(0) !== 0xFFFD) { e[D[77][j]] = 19712 + j; d[19712 + j] = D[77][j];}\nD[78] = \"��������������NN������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[78].length; ++j) if(D[78][j].charCodeAt(0) !== 0xFFFD) { e[D[78][j]] = 19968 + j; d[19968 + j] = D[78][j];}\nD[79] = \"��������������OO������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[79].length; ++j) if(D[79][j].charCodeAt(0) !== 0xFFFD) { e[D[79][j]] = 20224 + j; d[20224 + j] = D[79][j];}\nD[80] = \"��������������PP������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[80].length; ++j) if(D[80][j].charCodeAt(0) !== 0xFFFD) { e[D[80][j]] = 20480 + j; d[20480 + j] = D[80][j];}\nD[81] = \"��������������QQ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[81].length; ++j) if(D[81][j].charCodeAt(0) !== 0xFFFD) { e[D[81][j]] = 20736 + j; d[20736 + j] = D[81][j];}\nD[82] = \"��������������RR������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[82].length; ++j) if(D[82][j].charCodeAt(0) !== 0xFFFD) { e[D[82][j]] = 20992 + j; d[20992 + j] = D[82][j];}\nD[83] = \"��������������SS������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[83].length; ++j) if(D[83][j].charCodeAt(0) !== 0xFFFD) { e[D[83][j]] = 21248 + j; d[21248 + j] = D[83][j];}\nD[84] = \"��������������TT������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[84].length; ++j) if(D[84][j].charCodeAt(0) !== 0xFFFD) { e[D[84][j]] = 21504 + j; d[21504 + j] = D[84][j];}\nD[85] = \"��������������UU������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[85].length; ++j) if(D[85][j].charCodeAt(0) !== 0xFFFD) { e[D[85][j]] = 21760 + j; d[21760 + j] = D[85][j];}\nD[86] = \"��������������VV������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[86].length; ++j) if(D[86][j].charCodeAt(0) !== 0xFFFD) { e[D[86][j]] = 22016 + j; d[22016 + j] = D[86][j];}\nD[87] = \"��������������WW������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[87].length; ++j) if(D[87][j].charCodeAt(0) !== 0xFFFD) { e[D[87][j]] = 22272 + j; d[22272 + j] = D[87][j];}\nD[88] = \"��������������XX������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[88].length; ++j) if(D[88][j].charCodeAt(0) !== 0xFFFD) { e[D[88][j]] = 22528 + j; d[22528 + j] = D[88][j];}\nD[89] = \"��������������YY������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[89].length; ++j) if(D[89][j].charCodeAt(0) !== 0xFFFD) { e[D[89][j]] = 22784 + j; d[22784 + j] = D[89][j];}\nD[90] = \"��������������ZZ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[90].length; ++j) if(D[90][j].charCodeAt(0) !== 0xFFFD) { e[D[90][j]] = 23040 + j; d[23040 + j] = D[90][j];}\nD[91] = \"��������������[[������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[91].length; ++j) if(D[91][j].charCodeAt(0) !== 0xFFFD) { e[D[91][j]] = 23296 + j; d[23296 + j] = D[91][j];}\nD[92] = \"��������������\\\\\\\\������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[92].length; ++j) if(D[92][j].charCodeAt(0) !== 0xFFFD) { e[D[92][j]] = 23552 + j; d[23552 + j] = D[92][j];}\nD[93] = \"��������������]]������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[93].length; ++j) if(D[93][j].charCodeAt(0) !== 0xFFFD) { e[D[93][j]] = 23808 + j; d[23808 + j] = D[93][j];}\nD[94] = \"��������������^^������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[94].length; ++j) if(D[94][j].charCodeAt(0) !== 0xFFFD) { e[D[94][j]] = 24064 + j; d[24064 + j] = D[94][j];}\nD[95] = \"��������������__������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[95].length; ++j) if(D[95][j].charCodeAt(0) !== 0xFFFD) { e[D[95][j]] = 24320 + j; d[24320 + j] = D[95][j];}\nD[96] = \"��������������``������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[96].length; ++j) if(D[96][j].charCodeAt(0) !== 0xFFFD) { e[D[96][j]] = 24576 + j; d[24576 + j] = D[96][j];}\nD[97] = \"��������������aa������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[97].length; ++j) if(D[97][j].charCodeAt(0) !== 0xFFFD) { e[D[97][j]] = 24832 + j; d[24832 + j] = D[97][j];}\nD[98] = \"��������������bb������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[98].length; ++j) if(D[98][j].charCodeAt(0) !== 0xFFFD) { e[D[98][j]] = 25088 + j; d[25088 + j] = D[98][j];}\nD[99] = \"��������������cc������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[99].length; ++j) if(D[99][j].charCodeAt(0) !== 0xFFFD) { e[D[99][j]] = 25344 + j; d[25344 + j] = D[99][j];}\nD[100] = \"��������������dd������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[100].length; ++j) if(D[100][j].charCodeAt(0) !== 0xFFFD) { e[D[100][j]] = 25600 + j; d[25600 + j] = D[100][j];}\nD[101] = \"��������������ee������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[101].length; ++j) if(D[101][j].charCodeAt(0) !== 0xFFFD) { e[D[101][j]] = 25856 + j; d[25856 + j] = D[101][j];}\nD[102] = \"��������������ff������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[102].length; ++j) if(D[102][j].charCodeAt(0) !== 0xFFFD) { e[D[102][j]] = 26112 + j; d[26112 + j] = D[102][j];}\nD[103] = \"��������������gg������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[103].length; ++j) if(D[103][j].charCodeAt(0) !== 0xFFFD) { e[D[103][j]] = 26368 + j; d[26368 + j] = D[103][j];}\nD[104] = \"��������������hh������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[104].length; ++j) if(D[104][j].charCodeAt(0) !== 0xFFFD) { e[D[104][j]] = 26624 + j; d[26624 + j] = D[104][j];}\nD[105] = \"��������������ii������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[105].length; ++j) if(D[105][j].charCodeAt(0) !== 0xFFFD) { e[D[105][j]] = 26880 + j; d[26880 + j] = D[105][j];}\nD[106] = \"��������������jj������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[106].length; ++j) if(D[106][j].charCodeAt(0) !== 0xFFFD) { e[D[106][j]] = 27136 + j; d[27136 + j] = D[106][j];}\nD[107] = \"��������������kk������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[107].length; ++j) if(D[107][j].charCodeAt(0) !== 0xFFFD) { e[D[107][j]] = 27392 + j; d[27392 + j] = D[107][j];}\nD[108] = \"��������������ll������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[108].length; ++j) if(D[108][j].charCodeAt(0) !== 0xFFFD) { e[D[108][j]] = 27648 + j; d[27648 + j] = D[108][j];}\nD[109] = \"��������������mm������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[109].length; ++j) if(D[109][j].charCodeAt(0) !== 0xFFFD) { e[D[109][j]] = 27904 + j; d[27904 + j] = D[109][j];}\nD[110] = \"��������������nn������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[110].length; ++j) if(D[110][j].charCodeAt(0) !== 0xFFFD) { e[D[110][j]] = 28160 + j; d[28160 + j] = D[110][j];}\nD[111] = \"��������������oo������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[111].length; ++j) if(D[111][j].charCodeAt(0) !== 0xFFFD) { e[D[111][j]] = 28416 + j; d[28416 + j] = D[111][j];}\nD[112] = \"��������������pp������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[112].length; ++j) if(D[112][j].charCodeAt(0) !== 0xFFFD) { e[D[112][j]] = 28672 + j; d[28672 + j] = D[112][j];}\nD[113] = \"��������������qq������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[113].length; ++j) if(D[113][j].charCodeAt(0) !== 0xFFFD) { e[D[113][j]] = 28928 + j; d[28928 + j] = D[113][j];}\nD[114] = \"��������������rr������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[114].length; ++j) if(D[114][j].charCodeAt(0) !== 0xFFFD) { e[D[114][j]] = 29184 + j; d[29184 + j] = D[114][j];}\nD[115] = \"��������������ss������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[115].length; ++j) if(D[115][j].charCodeAt(0) !== 0xFFFD) { e[D[115][j]] = 29440 + j; d[29440 + j] = D[115][j];}\nD[116] = \"��������������tt������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[116].length; ++j) if(D[116][j].charCodeAt(0) !== 0xFFFD) { e[D[116][j]] = 29696 + j; d[29696 + j] = D[116][j];}\nD[117] = \"��������������uu������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[117].length; ++j) if(D[117][j].charCodeAt(0) !== 0xFFFD) { e[D[117][j]] = 29952 + j; d[29952 + j] = D[117][j];}\nD[118] = \"��������������vv������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[118].length; ++j) if(D[118][j].charCodeAt(0) !== 0xFFFD) { e[D[118][j]] = 30208 + j; d[30208 + j] = D[118][j];}\nD[119] = \"��������������ww������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[119].length; ++j) if(D[119][j].charCodeAt(0) !== 0xFFFD) { e[D[119][j]] = 30464 + j; d[30464 + j] = D[119][j];}\nD[120] = \"��������������xx������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[120].length; ++j) if(D[120][j].charCodeAt(0) !== 0xFFFD) { e[D[120][j]] = 30720 + j; d[30720 + j] = D[120][j];}\nD[121] = \"��������������yy������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[121].length; ++j) if(D[121][j].charCodeAt(0) !== 0xFFFD) { e[D[121][j]] = 30976 + j; d[30976 + j] = D[121][j];}\nD[122] = \"��������������zz������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[122].length; ++j) if(D[122][j].charCodeAt(0) !== 0xFFFD) { e[D[122][j]] = 31232 + j; d[31232 + j] = D[122][j];}\nD[123] = \"��������������{{������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[123].length; ++j) if(D[123][j].charCodeAt(0) !== 0xFFFD) { e[D[123][j]] = 31488 + j; d[31488 + j] = D[123][j];}\nD[124] = \"��������������||������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[124].length; ++j) if(D[124][j].charCodeAt(0) !== 0xFFFD) { e[D[124][j]] = 31744 + j; d[31744 + j] = D[124][j];}\nD[125] = \"��������������}}������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[125].length; ++j) if(D[125][j].charCodeAt(0) !== 0xFFFD) { e[D[125][j]] = 32000 + j; d[32000 + j] = D[125][j];}\nD[126] = \"��������������~~������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[126].length; ++j) if(D[126][j].charCodeAt(0) !== 0xFFFD) { e[D[126][j]] = 32256 + j; d[32256 + j] = D[126][j];}\nD[127] = \"��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[127].length; ++j) if(D[127][j].charCodeAt(0) !== 0xFFFD) { e[D[127][j]] = 32512 + j; d[32512 + j] = D[127][j];}\nD[128] = \"��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[128].length; ++j) if(D[128][j].charCodeAt(0) !== 0xFFFD) { e[D[128][j]] = 32768 + j; d[32768 + j] = D[128][j];}\nD[160] = \"��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[160].length; ++j) if(D[160][j].charCodeAt(0) !== 0xFFFD) { e[D[160][j]] = 40960 + j; d[40960 + j] = D[160][j];}\nD[161] = \"��������������｡｡������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[161].length; ++j) if(D[161][j].charCodeAt(0) !== 0xFFFD) { e[D[161][j]] = 41216 + j; d[41216 + j] = D[161][j];}\nD[162] = \"��������������｢｢������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[162].length; ++j) if(D[162][j].charCodeAt(0) !== 0xFFFD) { e[D[162][j]] = 41472 + j; d[41472 + j] = D[162][j];}\nD[163] = \"��������������｣｣������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[163].length; ++j) if(D[163][j].charCodeAt(0) !== 0xFFFD) { e[D[163][j]] = 41728 + j; d[41728 + j] = D[163][j];}\nD[164] = \"��������������､､������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[164].length; ++j) if(D[164][j].charCodeAt(0) !== 0xFFFD) { e[D[164][j]] = 41984 + j; d[41984 + j] = D[164][j];}\nD[165] = \"��������������･･������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[165].length; ++j) if(D[165][j].charCodeAt(0) !== 0xFFFD) { e[D[165][j]] = 42240 + j; d[42240 + j] = D[165][j];}\nD[166] = \"��������������ｦｦ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[166].length; ++j) if(D[166][j].charCodeAt(0) !== 0xFFFD) { e[D[166][j]] = 42496 + j; d[42496 + j] = D[166][j];}\nD[167] = \"��������������ｧｧ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[167].length; ++j) if(D[167][j].charCodeAt(0) !== 0xFFFD) { e[D[167][j]] = 42752 + j; d[42752 + j] = D[167][j];}\nD[168] = \"��������������ｨｨ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[168].length; ++j) if(D[168][j].charCodeAt(0) !== 0xFFFD) { e[D[168][j]] = 43008 + j; d[43008 + j] = D[168][j];}\nD[169] = \"��������������ｩｩ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[169].length; ++j) if(D[169][j].charCodeAt(0) !== 0xFFFD) { e[D[169][j]] = 43264 + j; d[43264 + j] = D[169][j];}\nD[170] = \"��������������ｪｪ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[170].length; ++j) if(D[170][j].charCodeAt(0) !== 0xFFFD) { e[D[170][j]] = 43520 + j; d[43520 + j] = D[170][j];}\nD[171] = \"��������������ｫｫ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[171].length; ++j) if(D[171][j].charCodeAt(0) !== 0xFFFD) { e[D[171][j]] = 43776 + j; d[43776 + j] = D[171][j];}\nD[172] = \"��������������ｬｬ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[172].length; ++j) if(D[172][j].charCodeAt(0) !== 0xFFFD) { e[D[172][j]] = 44032 + j; d[44032 + j] = D[172][j];}\nD[173] = \"��������������ｭｭ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[173].length; ++j) if(D[173][j].charCodeAt(0) !== 0xFFFD) { e[D[173][j]] = 44288 + j; d[44288 + j] = D[173][j];}\nD[174] = \"��������������ｮｮ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[174].length; ++j) if(D[174][j].charCodeAt(0) !== 0xFFFD) { e[D[174][j]] = 44544 + j; d[44544 + j] = D[174][j];}\nD[175] = \"��������������ｯｯ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[175].length; ++j) if(D[175][j].charCodeAt(0) !== 0xFFFD) { e[D[175][j]] = 44800 + j; d[44800 + j] = D[175][j];}\nD[176] = \"��������������ｰｰ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[176].length; ++j) if(D[176][j].charCodeAt(0) !== 0xFFFD) { e[D[176][j]] = 45056 + j; d[45056 + j] = D[176][j];}\nD[177] = \"��������������ｱｱ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[177].length; ++j) if(D[177][j].charCodeAt(0) !== 0xFFFD) { e[D[177][j]] = 45312 + j; d[45312 + j] = D[177][j];}\nD[178] = \"��������������ｲｲ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[178].length; ++j) if(D[178][j].charCodeAt(0) !== 0xFFFD) { e[D[178][j]] = 45568 + j; d[45568 + j] = D[178][j];}\nD[179] = \"��������������ｳｳ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[179].length; ++j) if(D[179][j].charCodeAt(0) !== 0xFFFD) { e[D[179][j]] = 45824 + j; d[45824 + j] = D[179][j];}\nD[180] = \"��������������ｴｴ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[180].length; ++j) if(D[180][j].charCodeAt(0) !== 0xFFFD) { e[D[180][j]] = 46080 + j; d[46080 + j] = D[180][j];}\nD[181] = \"��������������ｵｵ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[181].length; ++j) if(D[181][j].charCodeAt(0) !== 0xFFFD) { e[D[181][j]] = 46336 + j; d[46336 + j] = D[181][j];}\nD[182] = \"��������������ｶｶ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[182].length; ++j) if(D[182][j].charCodeAt(0) !== 0xFFFD) { e[D[182][j]] = 46592 + j; d[46592 + j] = D[182][j];}\nD[183] = \"��������������ｷｷ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[183].length; ++j) if(D[183][j].charCodeAt(0) !== 0xFFFD) { e[D[183][j]] = 46848 + j; d[46848 + j] = D[183][j];}\nD[184] = \"��������������ｸｸ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[184].length; ++j) if(D[184][j].charCodeAt(0) !== 0xFFFD) { e[D[184][j]] = 47104 + j; d[47104 + j] = D[184][j];}\nD[185] = \"��������������ｹｹ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[185].length; ++j) if(D[185][j].charCodeAt(0) !== 0xFFFD) { e[D[185][j]] = 47360 + j; d[47360 + j] = D[185][j];}\nD[186] = \"��������������ｺｺ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[186].length; ++j) if(D[186][j].charCodeAt(0) !== 0xFFFD) { e[D[186][j]] = 47616 + j; d[47616 + j] = D[186][j];}\nD[187] = \"��������������ｻｻ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[187].length; ++j) if(D[187][j].charCodeAt(0) !== 0xFFFD) { e[D[187][j]] = 47872 + j; d[47872 + j] = D[187][j];}\nD[188] = \"��������������ｼｼ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[188].length; ++j) if(D[188][j].charCodeAt(0) !== 0xFFFD) { e[D[188][j]] = 48128 + j; d[48128 + j] = D[188][j];}\nD[189] = \"��������������ｽｽ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[189].length; ++j) if(D[189][j].charCodeAt(0) !== 0xFFFD) { e[D[189][j]] = 48384 + j; d[48384 + j] = D[189][j];}\nD[190] = \"��������������ｾｾ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[190].length; ++j) if(D[190][j].charCodeAt(0) !== 0xFFFD) { e[D[190][j]] = 48640 + j; d[48640 + j] = D[190][j];}\nD[191] = \"��������������ｿｿ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[191].length; ++j) if(D[191][j].charCodeAt(0) !== 0xFFFD) { e[D[191][j]] = 48896 + j; d[48896 + j] = D[191][j];}\nD[192] = \"��������������ﾀﾀ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[192].length; ++j) if(D[192][j].charCodeAt(0) !== 0xFFFD) { e[D[192][j]] = 49152 + j; d[49152 + j] = D[192][j];}\nD[193] = \"��������������ﾁﾁ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[193].length; ++j) if(D[193][j].charCodeAt(0) !== 0xFFFD) { e[D[193][j]] = 49408 + j; d[49408 + j] = D[193][j];}\nD[194] = \"��������������ﾂﾂ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[194].length; ++j) if(D[194][j].charCodeAt(0) !== 0xFFFD) { e[D[194][j]] = 49664 + j; d[49664 + j] = D[194][j];}\nD[195] = \"��������������ﾃﾃ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[195].length; ++j) if(D[195][j].charCodeAt(0) !== 0xFFFD) { e[D[195][j]] = 49920 + j; d[49920 + j] = D[195][j];}\nD[196] = \"��������������ﾄﾄ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[196].length; ++j) if(D[196][j].charCodeAt(0) !== 0xFFFD) { e[D[196][j]] = 50176 + j; d[50176 + j] = D[196][j];}\nD[197] = \"��������������ﾅﾅ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[197].length; ++j) if(D[197][j].charCodeAt(0) !== 0xFFFD) { e[D[197][j]] = 50432 + j; d[50432 + j] = D[197][j];}\nD[198] = \"��������������ﾆﾆ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[198].length; ++j) if(D[198][j].charCodeAt(0) !== 0xFFFD) { e[D[198][j]] = 50688 + j; d[50688 + j] = D[198][j];}\nD[199] = \"��������������ﾇﾇ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[199].length; ++j) if(D[199][j].charCodeAt(0) !== 0xFFFD) { e[D[199][j]] = 50944 + j; d[50944 + j] = D[199][j];}\nD[200] = \"��������������ﾈﾈ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[200].length; ++j) if(D[200][j].charCodeAt(0) !== 0xFFFD) { e[D[200][j]] = 51200 + j; d[51200 + j] = D[200][j];}\nD[201] = \"��������������ﾉﾉ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[201].length; ++j) if(D[201][j].charCodeAt(0) !== 0xFFFD) { e[D[201][j]] = 51456 + j; d[51456 + j] = D[201][j];}\nD[202] = \"��������������ﾊﾊ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[202].length; ++j) if(D[202][j].charCodeAt(0) !== 0xFFFD) { e[D[202][j]] = 51712 + j; d[51712 + j] = D[202][j];}\nD[203] = \"��������������ﾋﾋ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[203].length; ++j) if(D[203][j].charCodeAt(0) !== 0xFFFD) { e[D[203][j]] = 51968 + j; d[51968 + j] = D[203][j];}\nD[204] = \"��������������ﾌﾌ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[204].length; ++j) if(D[204][j].charCodeAt(0) !== 0xFFFD) { e[D[204][j]] = 52224 + j; d[52224 + j] = D[204][j];}\nD[205] = \"��������������ﾍﾍ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[205].length; ++j) if(D[205][j].charCodeAt(0) !== 0xFFFD) { e[D[205][j]] = 52480 + j; d[52480 + j] = D[205][j];}\nD[206] = \"��������������ﾎﾎ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[206].length; ++j) if(D[206][j].charCodeAt(0) !== 0xFFFD) { e[D[206][j]] = 52736 + j; d[52736 + j] = D[206][j];}\nD[207] = \"��������������ﾏﾏ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[207].length; ++j) if(D[207][j].charCodeAt(0) !== 0xFFFD) { e[D[207][j]] = 52992 + j; d[52992 + j] = D[207][j];}\nD[208] = \"��������������ﾐﾐ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[208].length; ++j) if(D[208][j].charCodeAt(0) !== 0xFFFD) { e[D[208][j]] = 53248 + j; d[53248 + j] = D[208][j];}\nD[209] = \"��������������ﾑﾑ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[209].length; ++j) if(D[209][j].charCodeAt(0) !== 0xFFFD) { e[D[209][j]] = 53504 + j; d[53504 + j] = D[209][j];}\nD[210] = \"��������������ﾒﾒ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[210].length; ++j) if(D[210][j].charCodeAt(0) !== 0xFFFD) { e[D[210][j]] = 53760 + j; d[53760 + j] = D[210][j];}\nD[211] = \"��������������ﾓﾓ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[211].length; ++j) if(D[211][j].charCodeAt(0) !== 0xFFFD) { e[D[211][j]] = 54016 + j; d[54016 + j] = D[211][j];}\nD[212] = \"��������������ﾔﾔ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[212].length; ++j) if(D[212][j].charCodeAt(0) !== 0xFFFD) { e[D[212][j]] = 54272 + j; d[54272 + j] = D[212][j];}\nD[213] = \"��������������ﾕﾕ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[213].length; ++j) if(D[213][j].charCodeAt(0) !== 0xFFFD) { e[D[213][j]] = 54528 + j; d[54528 + j] = D[213][j];}\nD[214] = \"��������������ﾖﾖ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[214].length; ++j) if(D[214][j].charCodeAt(0) !== 0xFFFD) { e[D[214][j]] = 54784 + j; d[54784 + j] = D[214][j];}\nD[215] = \"��������������ﾗﾗ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[215].length; ++j) if(D[215][j].charCodeAt(0) !== 0xFFFD) { e[D[215][j]] = 55040 + j; d[55040 + j] = D[215][j];}\nD[216] = \"��������������ﾘﾘ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[216].length; ++j) if(D[216][j].charCodeAt(0) !== 0xFFFD) { e[D[216][j]] = 55296 + j; d[55296 + j] = D[216][j];}\nD[217] = \"��������������ﾙﾙ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[217].length; ++j) if(D[217][j].charCodeAt(0) !== 0xFFFD) { e[D[217][j]] = 55552 + j; d[55552 + j] = D[217][j];}\nD[218] = \"��������������ﾚﾚ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[218].length; ++j) if(D[218][j].charCodeAt(0) !== 0xFFFD) { e[D[218][j]] = 55808 + j; d[55808 + j] = D[218][j];}\nD[219] = \"��������������ﾛﾛ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[219].length; ++j) if(D[219][j].charCodeAt(0) !== 0xFFFD) { e[D[219][j]] = 56064 + j; d[56064 + j] = D[219][j];}\nD[220] = \"��������������ﾜﾜ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[220].length; ++j) if(D[220][j].charCodeAt(0) !== 0xFFFD) { e[D[220][j]] = 56320 + j; d[56320 + j] = D[220][j];}\nD[221] = \"��������������ﾝﾝ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[221].length; ++j) if(D[221][j].charCodeAt(0) !== 0xFFFD) { e[D[221][j]] = 56576 + j; d[56576 + j] = D[221][j];}\nD[222] = \"��������������ﾞﾞ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[222].length; ++j) if(D[222][j].charCodeAt(0) !== 0xFFFD) { e[D[222][j]] = 56832 + j; d[56832 + j] = D[222][j];}\nD[223] = \"��������������ﾟﾟ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[223].length; ++j) if(D[223][j].charCodeAt(0) !== 0xFFFD) { e[D[223][j]] = 57088 + j; d[57088 + j] = D[223][j];}\nD[253] = \"��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[253].length; ++j) if(D[253][j].charCodeAt(0) !== 0xFFFD) { e[D[253][j]] = 64768 + j; d[64768 + j] = D[253][j];}\nD[254] = \"��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[254].length; ++j) if(D[254][j].charCodeAt(0) !== 0xFFFD) { e[D[254][j]] = 65024 + j; d[65024 + j] = D[254][j];}\nD[255] = \"��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[255].length; ++j) if(D[255][j].charCodeAt(0) !== 0xFFFD) { e[D[255][j]] = 65280 + j; d[65280 + j] = D[255][j];}\nreturn {\"enc\": e, \"dec\": d }; })();\ncptable[50221] = (function(){ var d = [], e = {}, D = [], j;\nD[0] = \"\\u0000\\u0001\\u0002\\u0003\\u0004\\u0005\\u0006\\u0007\\b\\t\\n\\u000b\\f\\r\\u0000\\u0000\\u0010\\u0011\\u0012\\u0013\\u0014\\u0015\\u0016\\u0017\\u0018\\u0019\\u001a\\u001b\\u001c\\u001d\\u001e\\u001f !\\\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~�������������������������������｡｢｣､･ｦｧｨｩｪｫｬｭｮｯｰｱｲｳｴｵｶｷｸｹｺｻｼｽｾｿﾀﾁﾂﾃﾄﾅﾆﾇﾈﾉﾊﾋﾌﾍﾎﾏﾐﾑﾒﾓﾔﾕﾖﾗﾘﾙﾚﾛﾜﾝﾞﾟ�����������������������������\".split(\"\");\nfor(j = 0; j != D[0].length; ++j) if(D[0][j].charCodeAt(0) !== 0xFFFD) { e[D[0][j]] = 0 + j; d[0 + j] = D[0][j];}\nD[1] = \"��������������\\u0001\\u0001������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[1].length; ++j) if(D[1][j].charCodeAt(0) !== 0xFFFD) { e[D[1][j]] = 256 + j; d[256 + j] = D[1][j];}\nD[2] = \"��������������\\u0002\\u0002������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[2].length; ++j) if(D[2][j].charCodeAt(0) !== 0xFFFD) { e[D[2][j]] = 512 + j; d[512 + j] = D[2][j];}\nD[3] = \"��������������\\u0003\\u0003������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[3].length; ++j) if(D[3][j].charCodeAt(0) !== 0xFFFD) { e[D[3][j]] = 768 + j; d[768 + j] = D[3][j];}\nD[4] = \"��������������\\u0004\\u0004������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[4].length; ++j) if(D[4][j].charCodeAt(0) !== 0xFFFD) { e[D[4][j]] = 1024 + j; d[1024 + j] = D[4][j];}\nD[5] = \"��������������\\u0005\\u0005������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[5].length; ++j) if(D[5][j].charCodeAt(0) !== 0xFFFD) { e[D[5][j]] = 1280 + j; d[1280 + j] = D[5][j];}\nD[6] = \"��������������\\u0006\\u0006������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[6].length; ++j) if(D[6][j].charCodeAt(0) !== 0xFFFD) { e[D[6][j]] = 1536 + j; d[1536 + j] = D[6][j];}\nD[7] = \"��������������\\u0007\\u0007������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[7].length; ++j) if(D[7][j].charCodeAt(0) !== 0xFFFD) { e[D[7][j]] = 1792 + j; d[1792 + j] = D[7][j];}\nD[8] = \"��������������\\b\\b������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[8].length; ++j) if(D[8][j].charCodeAt(0) !== 0xFFFD) { e[D[8][j]] = 2048 + j; d[2048 + j] = D[8][j];}\nD[9] = \"��������������\\t\\t������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[9].length; ++j) if(D[9][j].charCodeAt(0) !== 0xFFFD) { e[D[9][j]] = 2304 + j; d[2304 + j] = D[9][j];}\nD[10] = \"��������������\\n\\n������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[10].length; ++j) if(D[10][j].charCodeAt(0) !== 0xFFFD) { e[D[10][j]] = 2560 + j; d[2560 + j] = D[10][j];}\nD[11] = \"��������������\\u000b\\u000b������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[11].length; ++j) if(D[11][j].charCodeAt(0) !== 0xFFFD) { e[D[11][j]] = 2816 + j; d[2816 + j] = D[11][j];}\nD[12] = \"��������������\\f\\f������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[12].length; ++j) if(D[12][j].charCodeAt(0) !== 0xFFFD) { e[D[12][j]] = 3072 + j; d[3072 + j] = D[12][j];}\nD[13] = \"��������������\\r\\r������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[13].length; ++j) if(D[13][j].charCodeAt(0) !== 0xFFFD) { e[D[13][j]] = 3328 + j; d[3328 + j] = D[13][j];}\nD[14] = \"��������������\\r\\r�����������������｡｢｣､･ｦｧｨｩｪｫｬｭｮｯｰｱｲｳｴｵｶｷｸｹｺｻｼｽｾｿﾀﾁﾂﾃﾄﾅﾆﾇﾈﾉﾊﾋﾌﾍﾎﾏﾐﾑﾒﾓﾔﾕﾖﾗﾘﾙﾚﾛﾜﾝﾞﾟ�����������������������������������������������������������������｡｢｣､･ｦｧｨｩｪｫｬｭｮｯｰｱｲｳｴｵｶｷｸｹｺｻｼｽｾｿﾀﾁﾂﾃﾄﾅﾆﾇﾈﾉﾊﾋﾌﾍﾎﾏﾐﾑﾒﾓﾔﾕﾖﾗﾘﾙﾚﾛﾜﾝﾞﾟ��������������������������������\".split(\"\");\nfor(j = 0; j != D[14].length; ++j) if(D[14][j].charCodeAt(0) !== 0xFFFD) { e[D[14][j]] = 3584 + j; d[3584 + j] = D[14][j];}\nD[15] = \"�\\u0001\\u0002\\u0003\\u0004\\u0005\\u0006\\u0007\\b\\t\\n\\u000b\\f\\r\\r\\r\\u0010\\u0011\\u0012\\u0013\\u0014\\u0015\\u0016\\u0017\\u0018\\u0019\\u001a\\u001b\\u001c\\u001d\\u001e\\u001f !\\\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~�������������������������������｡｢｣､･ｦｧｨｩｪｫｬｭｮｯｰｱｲｳｴｵｶｷｸｹｺｻｼｽｾｿﾀﾁﾂﾃﾄﾅﾆﾇﾈﾉﾊﾋﾌﾍﾎﾏﾐﾑﾒﾓﾔﾕﾖﾗﾘﾙﾚﾛﾜﾝﾞﾟ�����������������������������\".split(\"\");\nfor(j = 0; j != D[15].length; ++j) if(D[15][j].charCodeAt(0) !== 0xFFFD) { e[D[15][j]] = 3840 + j; d[3840 + j] = D[15][j];}\nD[16] = \"��������������\\u0010\\u0010������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[16].length; ++j) if(D[16][j].charCodeAt(0) !== 0xFFFD) { e[D[16][j]] = 4096 + j; d[4096 + j] = D[16][j];}\nD[17] = \"��������������\\u0011\\u0011������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[17].length; ++j) if(D[17][j].charCodeAt(0) !== 0xFFFD) { e[D[17][j]] = 4352 + j; d[4352 + j] = D[17][j];}\nD[18] = \"��������������\\u0012\\u0012������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[18].length; ++j) if(D[18][j].charCodeAt(0) !== 0xFFFD) { e[D[18][j]] = 4608 + j; d[4608 + j] = D[18][j];}\nD[19] = \"��������������\\u0013\\u0013������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[19].length; ++j) if(D[19][j].charCodeAt(0) !== 0xFFFD) { e[D[19][j]] = 4864 + j; d[4864 + j] = D[19][j];}\nD[20] = \"��������������\\u0014\\u0014������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[20].length; ++j) if(D[20][j].charCodeAt(0) !== 0xFFFD) { e[D[20][j]] = 5120 + j; d[5120 + j] = D[20][j];}\nD[21] = \"��������������\\u0015\\u0015������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[21].length; ++j) if(D[21][j].charCodeAt(0) !== 0xFFFD) { e[D[21][j]] = 5376 + j; d[5376 + j] = D[21][j];}\nD[22] = \"��������������\\u0016\\u0016������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[22].length; ++j) if(D[22][j].charCodeAt(0) !== 0xFFFD) { e[D[22][j]] = 5632 + j; d[5632 + j] = D[22][j];}\nD[23] = \"��������������\\u0017\\u0017������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[23].length; ++j) if(D[23][j].charCodeAt(0) !== 0xFFFD) { e[D[23][j]] = 5888 + j; d[5888 + j] = D[23][j];}\nD[24] = \"��������������\\u0018\\u0018������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[24].length; ++j) if(D[24][j].charCodeAt(0) !== 0xFFFD) { e[D[24][j]] = 6144 + j; d[6144 + j] = D[24][j];}\nD[25] = \"��������������\\u0019\\u0019������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[25].length; ++j) if(D[25][j].charCodeAt(0) !== 0xFFFD) { e[D[25][j]] = 6400 + j; d[6400 + j] = D[25][j];}\nD[26] = \"��������������\\u001a\\u001a������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[26].length; ++j) if(D[26][j].charCodeAt(0) !== 0xFFFD) { e[D[26][j]] = 6656 + j; d[6656 + j] = D[26][j];}\nD[27] = \"��������������\\u001b\\u001b������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[27].length; ++j) if(D[27][j].charCodeAt(0) !== 0xFFFD) { e[D[27][j]] = 6912 + j; d[6912 + j] = D[27][j];}\nD[28] = \"��������������\\u001c\\u001c������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[28].length; ++j) if(D[28][j].charCodeAt(0) !== 0xFFFD) { e[D[28][j]] = 7168 + j; d[7168 + j] = D[28][j];}\nD[29] = \"��������������\\u001d\\u001d������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[29].length; ++j) if(D[29][j].charCodeAt(0) !== 0xFFFD) { e[D[29][j]] = 7424 + j; d[7424 + j] = D[29][j];}\nD[30] = \"��������������\\u001e\\u001e������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[30].length; ++j) if(D[30][j].charCodeAt(0) !== 0xFFFD) { e[D[30][j]] = 7680 + j; d[7680 + j] = D[30][j];}\nD[31] = \"��������������\\u001f\\u001f������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[31].length; ++j) if(D[31][j].charCodeAt(0) !== 0xFFFD) { e[D[31][j]] = 7936 + j; d[7936 + j] = D[31][j];}\nD[32] = \"��������������  ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[32].length; ++j) if(D[32][j].charCodeAt(0) !== 0xFFFD) { e[D[32][j]] = 8192 + j; d[8192 + j] = D[32][j];}\nD[33] = \"��������������!!������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[33].length; ++j) if(D[33][j].charCodeAt(0) !== 0xFFFD) { e[D[33][j]] = 8448 + j; d[8448 + j] = D[33][j];}\nD[34] = \"��������������\\\"\\\"������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[34].length; ++j) if(D[34][j].charCodeAt(0) !== 0xFFFD) { e[D[34][j]] = 8704 + j; d[8704 + j] = D[34][j];}\nD[35] = \"��������������##������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[35].length; ++j) if(D[35][j].charCodeAt(0) !== 0xFFFD) { e[D[35][j]] = 8960 + j; d[8960 + j] = D[35][j];}\nD[36] = \"��������������$$������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[36].length; ++j) if(D[36][j].charCodeAt(0) !== 0xFFFD) { e[D[36][j]] = 9216 + j; d[9216 + j] = D[36][j];}\nD[37] = \"��������������%%������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[37].length; ++j) if(D[37][j].charCodeAt(0) !== 0xFFFD) { e[D[37][j]] = 9472 + j; d[9472 + j] = D[37][j];}\nD[38] = \"��������������&&������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[38].length; ++j) if(D[38][j].charCodeAt(0) !== 0xFFFD) { e[D[38][j]] = 9728 + j; d[9728 + j] = D[38][j];}\nD[39] = \"��������������''������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[39].length; ++j) if(D[39][j].charCodeAt(0) !== 0xFFFD) { e[D[39][j]] = 9984 + j; d[9984 + j] = D[39][j];}\nD[40] = \"��������������((������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[40].length; ++j) if(D[40][j].charCodeAt(0) !== 0xFFFD) { e[D[40][j]] = 10240 + j; d[10240 + j] = D[40][j];}\nD[41] = \"��������������))������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[41].length; ++j) if(D[41][j].charCodeAt(0) !== 0xFFFD) { e[D[41][j]] = 10496 + j; d[10496 + j] = D[41][j];}\nD[42] = \"��������������**������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[42].length; ++j) if(D[42][j].charCodeAt(0) !== 0xFFFD) { e[D[42][j]] = 10752 + j; d[10752 + j] = D[42][j];}\nD[43] = \"��������������++������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[43].length; ++j) if(D[43][j].charCodeAt(0) !== 0xFFFD) { e[D[43][j]] = 11008 + j; d[11008 + j] = D[43][j];}\nD[44] = \"��������������,,������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[44].length; ++j) if(D[44][j].charCodeAt(0) !== 0xFFFD) { e[D[44][j]] = 11264 + j; d[11264 + j] = D[44][j];}\nD[45] = \"��������������--������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[45].length; ++j) if(D[45][j].charCodeAt(0) !== 0xFFFD) { e[D[45][j]] = 11520 + j; d[11520 + j] = D[45][j];}\nD[46] = \"��������������..������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[46].length; ++j) if(D[46][j].charCodeAt(0) !== 0xFFFD) { e[D[46][j]] = 11776 + j; d[11776 + j] = D[46][j];}\nD[47] = \"��������������//������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[47].length; ++j) if(D[47][j].charCodeAt(0) !== 0xFFFD) { e[D[47][j]] = 12032 + j; d[12032 + j] = D[47][j];}\nD[48] = \"��������������00������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[48].length; ++j) if(D[48][j].charCodeAt(0) !== 0xFFFD) { e[D[48][j]] = 12288 + j; d[12288 + j] = D[48][j];}\nD[49] = \"��������������11������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[49].length; ++j) if(D[49][j].charCodeAt(0) !== 0xFFFD) { e[D[49][j]] = 12544 + j; d[12544 + j] = D[49][j];}\nD[50] = \"��������������22������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[50].length; ++j) if(D[50][j].charCodeAt(0) !== 0xFFFD) { e[D[50][j]] = 12800 + j; d[12800 + j] = D[50][j];}\nD[51] = \"��������������33������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[51].length; ++j) if(D[51][j].charCodeAt(0) !== 0xFFFD) { e[D[51][j]] = 13056 + j; d[13056 + j] = D[51][j];}\nD[52] = \"��������������44������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[52].length; ++j) if(D[52][j].charCodeAt(0) !== 0xFFFD) { e[D[52][j]] = 13312 + j; d[13312 + j] = D[52][j];}\nD[53] = \"��������������55������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[53].length; ++j) if(D[53][j].charCodeAt(0) !== 0xFFFD) { e[D[53][j]] = 13568 + j; d[13568 + j] = D[53][j];}\nD[54] = \"��������������66������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[54].length; ++j) if(D[54][j].charCodeAt(0) !== 0xFFFD) { e[D[54][j]] = 13824 + j; d[13824 + j] = D[54][j];}\nD[55] = \"��������������77������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[55].length; ++j) if(D[55][j].charCodeAt(0) !== 0xFFFD) { e[D[55][j]] = 14080 + j; d[14080 + j] = D[55][j];}\nD[56] = \"��������������88������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[56].length; ++j) if(D[56][j].charCodeAt(0) !== 0xFFFD) { e[D[56][j]] = 14336 + j; d[14336 + j] = D[56][j];}\nD[57] = \"��������������99������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[57].length; ++j) if(D[57][j].charCodeAt(0) !== 0xFFFD) { e[D[57][j]] = 14592 + j; d[14592 + j] = D[57][j];}\nD[58] = \"��������������::������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[58].length; ++j) if(D[58][j].charCodeAt(0) !== 0xFFFD) { e[D[58][j]] = 14848 + j; d[14848 + j] = D[58][j];}\nD[59] = \"��������������;;������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[59].length; ++j) if(D[59][j].charCodeAt(0) !== 0xFFFD) { e[D[59][j]] = 15104 + j; d[15104 + j] = D[59][j];}\nD[60] = \"��������������<<������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[60].length; ++j) if(D[60][j].charCodeAt(0) !== 0xFFFD) { e[D[60][j]] = 15360 + j; d[15360 + j] = D[60][j];}\nD[61] = \"��������������==������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[61].length; ++j) if(D[61][j].charCodeAt(0) !== 0xFFFD) { e[D[61][j]] = 15616 + j; d[15616 + j] = D[61][j];}\nD[62] = \"��������������>>������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[62].length; ++j) if(D[62][j].charCodeAt(0) !== 0xFFFD) { e[D[62][j]] = 15872 + j; d[15872 + j] = D[62][j];}\nD[63] = \"��������������??������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[63].length; ++j) if(D[63][j].charCodeAt(0) !== 0xFFFD) { e[D[63][j]] = 16128 + j; d[16128 + j] = D[63][j];}\nD[64] = \"��������������@@������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[64].length; ++j) if(D[64][j].charCodeAt(0) !== 0xFFFD) { e[D[64][j]] = 16384 + j; d[16384 + j] = D[64][j];}\nD[65] = \"��������������AA������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[65].length; ++j) if(D[65][j].charCodeAt(0) !== 0xFFFD) { e[D[65][j]] = 16640 + j; d[16640 + j] = D[65][j];}\nD[66] = \"��������������BB������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[66].length; ++j) if(D[66][j].charCodeAt(0) !== 0xFFFD) { e[D[66][j]] = 16896 + j; d[16896 + j] = D[66][j];}\nD[67] = \"��������������CC������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[67].length; ++j) if(D[67][j].charCodeAt(0) !== 0xFFFD) { e[D[67][j]] = 17152 + j; d[17152 + j] = D[67][j];}\nD[68] = \"��������������DD������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[68].length; ++j) if(D[68][j].charCodeAt(0) !== 0xFFFD) { e[D[68][j]] = 17408 + j; d[17408 + j] = D[68][j];}\nD[69] = \"��������������EE������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[69].length; ++j) if(D[69][j].charCodeAt(0) !== 0xFFFD) { e[D[69][j]] = 17664 + j; d[17664 + j] = D[69][j];}\nD[70] = \"��������������FF������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[70].length; ++j) if(D[70][j].charCodeAt(0) !== 0xFFFD) { e[D[70][j]] = 17920 + j; d[17920 + j] = D[70][j];}\nD[71] = \"��������������GG������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[71].length; ++j) if(D[71][j].charCodeAt(0) !== 0xFFFD) { e[D[71][j]] = 18176 + j; d[18176 + j] = D[71][j];}\nD[72] = \"��������������HH������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[72].length; ++j) if(D[72][j].charCodeAt(0) !== 0xFFFD) { e[D[72][j]] = 18432 + j; d[18432 + j] = D[72][j];}\nD[73] = \"��������������II������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[73].length; ++j) if(D[73][j].charCodeAt(0) !== 0xFFFD) { e[D[73][j]] = 18688 + j; d[18688 + j] = D[73][j];}\nD[74] = \"��������������JJ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[74].length; ++j) if(D[74][j].charCodeAt(0) !== 0xFFFD) { e[D[74][j]] = 18944 + j; d[18944 + j] = D[74][j];}\nD[75] = \"��������������KK������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[75].length; ++j) if(D[75][j].charCodeAt(0) !== 0xFFFD) { e[D[75][j]] = 19200 + j; d[19200 + j] = D[75][j];}\nD[76] = \"��������������LL������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[76].length; ++j) if(D[76][j].charCodeAt(0) !== 0xFFFD) { e[D[76][j]] = 19456 + j; d[19456 + j] = D[76][j];}\nD[77] = \"��������������MM������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[77].length; ++j) if(D[77][j].charCodeAt(0) !== 0xFFFD) { e[D[77][j]] = 19712 + j; d[19712 + j] = D[77][j];}\nD[78] = \"��������������NN������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[78].length; ++j) if(D[78][j].charCodeAt(0) !== 0xFFFD) { e[D[78][j]] = 19968 + j; d[19968 + j] = D[78][j];}\nD[79] = \"��������������OO������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[79].length; ++j) if(D[79][j].charCodeAt(0) !== 0xFFFD) { e[D[79][j]] = 20224 + j; d[20224 + j] = D[79][j];}\nD[80] = \"��������������PP������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[80].length; ++j) if(D[80][j].charCodeAt(0) !== 0xFFFD) { e[D[80][j]] = 20480 + j; d[20480 + j] = D[80][j];}\nD[81] = \"��������������QQ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[81].length; ++j) if(D[81][j].charCodeAt(0) !== 0xFFFD) { e[D[81][j]] = 20736 + j; d[20736 + j] = D[81][j];}\nD[82] = \"��������������RR������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[82].length; ++j) if(D[82][j].charCodeAt(0) !== 0xFFFD) { e[D[82][j]] = 20992 + j; d[20992 + j] = D[82][j];}\nD[83] = \"��������������SS������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[83].length; ++j) if(D[83][j].charCodeAt(0) !== 0xFFFD) { e[D[83][j]] = 21248 + j; d[21248 + j] = D[83][j];}\nD[84] = \"��������������TT������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[84].length; ++j) if(D[84][j].charCodeAt(0) !== 0xFFFD) { e[D[84][j]] = 21504 + j; d[21504 + j] = D[84][j];}\nD[85] = \"��������������UU������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[85].length; ++j) if(D[85][j].charCodeAt(0) !== 0xFFFD) { e[D[85][j]] = 21760 + j; d[21760 + j] = D[85][j];}\nD[86] = \"��������������VV������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[86].length; ++j) if(D[86][j].charCodeAt(0) !== 0xFFFD) { e[D[86][j]] = 22016 + j; d[22016 + j] = D[86][j];}\nD[87] = \"��������������WW������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[87].length; ++j) if(D[87][j].charCodeAt(0) !== 0xFFFD) { e[D[87][j]] = 22272 + j; d[22272 + j] = D[87][j];}\nD[88] = \"��������������XX������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[88].length; ++j) if(D[88][j].charCodeAt(0) !== 0xFFFD) { e[D[88][j]] = 22528 + j; d[22528 + j] = D[88][j];}\nD[89] = \"��������������YY������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[89].length; ++j) if(D[89][j].charCodeAt(0) !== 0xFFFD) { e[D[89][j]] = 22784 + j; d[22784 + j] = D[89][j];}\nD[90] = \"��������������ZZ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[90].length; ++j) if(D[90][j].charCodeAt(0) !== 0xFFFD) { e[D[90][j]] = 23040 + j; d[23040 + j] = D[90][j];}\nD[91] = \"��������������[[������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[91].length; ++j) if(D[91][j].charCodeAt(0) !== 0xFFFD) { e[D[91][j]] = 23296 + j; d[23296 + j] = D[91][j];}\nD[92] = \"��������������\\\\\\\\������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[92].length; ++j) if(D[92][j].charCodeAt(0) !== 0xFFFD) { e[D[92][j]] = 23552 + j; d[23552 + j] = D[92][j];}\nD[93] = \"��������������]]������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[93].length; ++j) if(D[93][j].charCodeAt(0) !== 0xFFFD) { e[D[93][j]] = 23808 + j; d[23808 + j] = D[93][j];}\nD[94] = \"��������������^^������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[94].length; ++j) if(D[94][j].charCodeAt(0) !== 0xFFFD) { e[D[94][j]] = 24064 + j; d[24064 + j] = D[94][j];}\nD[95] = \"��������������__������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[95].length; ++j) if(D[95][j].charCodeAt(0) !== 0xFFFD) { e[D[95][j]] = 24320 + j; d[24320 + j] = D[95][j];}\nD[96] = \"��������������``������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[96].length; ++j) if(D[96][j].charCodeAt(0) !== 0xFFFD) { e[D[96][j]] = 24576 + j; d[24576 + j] = D[96][j];}\nD[97] = \"��������������aa������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[97].length; ++j) if(D[97][j].charCodeAt(0) !== 0xFFFD) { e[D[97][j]] = 24832 + j; d[24832 + j] = D[97][j];}\nD[98] = \"��������������bb������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[98].length; ++j) if(D[98][j].charCodeAt(0) !== 0xFFFD) { e[D[98][j]] = 25088 + j; d[25088 + j] = D[98][j];}\nD[99] = \"��������������cc������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[99].length; ++j) if(D[99][j].charCodeAt(0) !== 0xFFFD) { e[D[99][j]] = 25344 + j; d[25344 + j] = D[99][j];}\nD[100] = \"��������������dd������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[100].length; ++j) if(D[100][j].charCodeAt(0) !== 0xFFFD) { e[D[100][j]] = 25600 + j; d[25600 + j] = D[100][j];}\nD[101] = \"��������������ee������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[101].length; ++j) if(D[101][j].charCodeAt(0) !== 0xFFFD) { e[D[101][j]] = 25856 + j; d[25856 + j] = D[101][j];}\nD[102] = \"��������������ff������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[102].length; ++j) if(D[102][j].charCodeAt(0) !== 0xFFFD) { e[D[102][j]] = 26112 + j; d[26112 + j] = D[102][j];}\nD[103] = \"��������������gg������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[103].length; ++j) if(D[103][j].charCodeAt(0) !== 0xFFFD) { e[D[103][j]] = 26368 + j; d[26368 + j] = D[103][j];}\nD[104] = \"��������������hh������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[104].length; ++j) if(D[104][j].charCodeAt(0) !== 0xFFFD) { e[D[104][j]] = 26624 + j; d[26624 + j] = D[104][j];}\nD[105] = \"��������������ii������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[105].length; ++j) if(D[105][j].charCodeAt(0) !== 0xFFFD) { e[D[105][j]] = 26880 + j; d[26880 + j] = D[105][j];}\nD[106] = \"��������������jj������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[106].length; ++j) if(D[106][j].charCodeAt(0) !== 0xFFFD) { e[D[106][j]] = 27136 + j; d[27136 + j] = D[106][j];}\nD[107] = \"��������������kk������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[107].length; ++j) if(D[107][j].charCodeAt(0) !== 0xFFFD) { e[D[107][j]] = 27392 + j; d[27392 + j] = D[107][j];}\nD[108] = \"��������������ll������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[108].length; ++j) if(D[108][j].charCodeAt(0) !== 0xFFFD) { e[D[108][j]] = 27648 + j; d[27648 + j] = D[108][j];}\nD[109] = \"��������������mm������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[109].length; ++j) if(D[109][j].charCodeAt(0) !== 0xFFFD) { e[D[109][j]] = 27904 + j; d[27904 + j] = D[109][j];}\nD[110] = \"��������������nn������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[110].length; ++j) if(D[110][j].charCodeAt(0) !== 0xFFFD) { e[D[110][j]] = 28160 + j; d[28160 + j] = D[110][j];}\nD[111] = \"��������������oo������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[111].length; ++j) if(D[111][j].charCodeAt(0) !== 0xFFFD) { e[D[111][j]] = 28416 + j; d[28416 + j] = D[111][j];}\nD[112] = \"��������������pp������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[112].length; ++j) if(D[112][j].charCodeAt(0) !== 0xFFFD) { e[D[112][j]] = 28672 + j; d[28672 + j] = D[112][j];}\nD[113] = \"��������������qq������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[113].length; ++j) if(D[113][j].charCodeAt(0) !== 0xFFFD) { e[D[113][j]] = 28928 + j; d[28928 + j] = D[113][j];}\nD[114] = \"��������������rr������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[114].length; ++j) if(D[114][j].charCodeAt(0) !== 0xFFFD) { e[D[114][j]] = 29184 + j; d[29184 + j] = D[114][j];}\nD[115] = \"��������������ss������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[115].length; ++j) if(D[115][j].charCodeAt(0) !== 0xFFFD) { e[D[115][j]] = 29440 + j; d[29440 + j] = D[115][j];}\nD[116] = \"��������������tt������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[116].length; ++j) if(D[116][j].charCodeAt(0) !== 0xFFFD) { e[D[116][j]] = 29696 + j; d[29696 + j] = D[116][j];}\nD[117] = \"��������������uu������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[117].length; ++j) if(D[117][j].charCodeAt(0) !== 0xFFFD) { e[D[117][j]] = 29952 + j; d[29952 + j] = D[117][j];}\nD[118] = \"��������������vv������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[118].length; ++j) if(D[118][j].charCodeAt(0) !== 0xFFFD) { e[D[118][j]] = 30208 + j; d[30208 + j] = D[118][j];}\nD[119] = \"��������������ww������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[119].length; ++j) if(D[119][j].charCodeAt(0) !== 0xFFFD) { e[D[119][j]] = 30464 + j; d[30464 + j] = D[119][j];}\nD[120] = \"��������������xx������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[120].length; ++j) if(D[120][j].charCodeAt(0) !== 0xFFFD) { e[D[120][j]] = 30720 + j; d[30720 + j] = D[120][j];}\nD[121] = \"��������������yy������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[121].length; ++j) if(D[121][j].charCodeAt(0) !== 0xFFFD) { e[D[121][j]] = 30976 + j; d[30976 + j] = D[121][j];}\nD[122] = \"��������������zz������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[122].length; ++j) if(D[122][j].charCodeAt(0) !== 0xFFFD) { e[D[122][j]] = 31232 + j; d[31232 + j] = D[122][j];}\nD[123] = \"��������������{{������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[123].length; ++j) if(D[123][j].charCodeAt(0) !== 0xFFFD) { e[D[123][j]] = 31488 + j; d[31488 + j] = D[123][j];}\nD[124] = \"��������������||������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[124].length; ++j) if(D[124][j].charCodeAt(0) !== 0xFFFD) { e[D[124][j]] = 31744 + j; d[31744 + j] = D[124][j];}\nD[125] = \"��������������}}������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[125].length; ++j) if(D[125][j].charCodeAt(0) !== 0xFFFD) { e[D[125][j]] = 32000 + j; d[32000 + j] = D[125][j];}\nD[126] = \"��������������~~������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[126].length; ++j) if(D[126][j].charCodeAt(0) !== 0xFFFD) { e[D[126][j]] = 32256 + j; d[32256 + j] = D[126][j];}\nD[127] = \"��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[127].length; ++j) if(D[127][j].charCodeAt(0) !== 0xFFFD) { e[D[127][j]] = 32512 + j; d[32512 + j] = D[127][j];}\nD[128] = \"��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[128].length; ++j) if(D[128][j].charCodeAt(0) !== 0xFFFD) { e[D[128][j]] = 32768 + j; d[32768 + j] = D[128][j];}\nD[160] = \"��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[160].length; ++j) if(D[160][j].charCodeAt(0) !== 0xFFFD) { e[D[160][j]] = 40960 + j; d[40960 + j] = D[160][j];}\nD[161] = \"��������������｡｡������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[161].length; ++j) if(D[161][j].charCodeAt(0) !== 0xFFFD) { e[D[161][j]] = 41216 + j; d[41216 + j] = D[161][j];}\nD[162] = \"��������������｢｢������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[162].length; ++j) if(D[162][j].charCodeAt(0) !== 0xFFFD) { e[D[162][j]] = 41472 + j; d[41472 + j] = D[162][j];}\nD[163] = \"��������������｣｣������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[163].length; ++j) if(D[163][j].charCodeAt(0) !== 0xFFFD) { e[D[163][j]] = 41728 + j; d[41728 + j] = D[163][j];}\nD[164] = \"��������������､､������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[164].length; ++j) if(D[164][j].charCodeAt(0) !== 0xFFFD) { e[D[164][j]] = 41984 + j; d[41984 + j] = D[164][j];}\nD[165] = \"��������������･･������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[165].length; ++j) if(D[165][j].charCodeAt(0) !== 0xFFFD) { e[D[165][j]] = 42240 + j; d[42240 + j] = D[165][j];}\nD[166] = \"��������������ｦｦ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[166].length; ++j) if(D[166][j].charCodeAt(0) !== 0xFFFD) { e[D[166][j]] = 42496 + j; d[42496 + j] = D[166][j];}\nD[167] = \"��������������ｧｧ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[167].length; ++j) if(D[167][j].charCodeAt(0) !== 0xFFFD) { e[D[167][j]] = 42752 + j; d[42752 + j] = D[167][j];}\nD[168] = \"��������������ｨｨ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[168].length; ++j) if(D[168][j].charCodeAt(0) !== 0xFFFD) { e[D[168][j]] = 43008 + j; d[43008 + j] = D[168][j];}\nD[169] = \"��������������ｩｩ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[169].length; ++j) if(D[169][j].charCodeAt(0) !== 0xFFFD) { e[D[169][j]] = 43264 + j; d[43264 + j] = D[169][j];}\nD[170] = \"��������������ｪｪ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[170].length; ++j) if(D[170][j].charCodeAt(0) !== 0xFFFD) { e[D[170][j]] = 43520 + j; d[43520 + j] = D[170][j];}\nD[171] = \"��������������ｫｫ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[171].length; ++j) if(D[171][j].charCodeAt(0) !== 0xFFFD) { e[D[171][j]] = 43776 + j; d[43776 + j] = D[171][j];}\nD[172] = \"��������������ｬｬ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[172].length; ++j) if(D[172][j].charCodeAt(0) !== 0xFFFD) { e[D[172][j]] = 44032 + j; d[44032 + j] = D[172][j];}\nD[173] = \"��������������ｭｭ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[173].length; ++j) if(D[173][j].charCodeAt(0) !== 0xFFFD) { e[D[173][j]] = 44288 + j; d[44288 + j] = D[173][j];}\nD[174] = \"��������������ｮｮ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[174].length; ++j) if(D[174][j].charCodeAt(0) !== 0xFFFD) { e[D[174][j]] = 44544 + j; d[44544 + j] = D[174][j];}\nD[175] = \"��������������ｯｯ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[175].length; ++j) if(D[175][j].charCodeAt(0) !== 0xFFFD) { e[D[175][j]] = 44800 + j; d[44800 + j] = D[175][j];}\nD[176] = \"��������������ｰｰ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[176].length; ++j) if(D[176][j].charCodeAt(0) !== 0xFFFD) { e[D[176][j]] = 45056 + j; d[45056 + j] = D[176][j];}\nD[177] = \"��������������ｱｱ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[177].length; ++j) if(D[177][j].charCodeAt(0) !== 0xFFFD) { e[D[177][j]] = 45312 + j; d[45312 + j] = D[177][j];}\nD[178] = \"��������������ｲｲ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[178].length; ++j) if(D[178][j].charCodeAt(0) !== 0xFFFD) { e[D[178][j]] = 45568 + j; d[45568 + j] = D[178][j];}\nD[179] = \"��������������ｳｳ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[179].length; ++j) if(D[179][j].charCodeAt(0) !== 0xFFFD) { e[D[179][j]] = 45824 + j; d[45824 + j] = D[179][j];}\nD[180] = \"��������������ｴｴ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[180].length; ++j) if(D[180][j].charCodeAt(0) !== 0xFFFD) { e[D[180][j]] = 46080 + j; d[46080 + j] = D[180][j];}\nD[181] = \"��������������ｵｵ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[181].length; ++j) if(D[181][j].charCodeAt(0) !== 0xFFFD) { e[D[181][j]] = 46336 + j; d[46336 + j] = D[181][j];}\nD[182] = \"��������������ｶｶ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[182].length; ++j) if(D[182][j].charCodeAt(0) !== 0xFFFD) { e[D[182][j]] = 46592 + j; d[46592 + j] = D[182][j];}\nD[183] = \"��������������ｷｷ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[183].length; ++j) if(D[183][j].charCodeAt(0) !== 0xFFFD) { e[D[183][j]] = 46848 + j; d[46848 + j] = D[183][j];}\nD[184] = \"��������������ｸｸ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[184].length; ++j) if(D[184][j].charCodeAt(0) !== 0xFFFD) { e[D[184][j]] = 47104 + j; d[47104 + j] = D[184][j];}\nD[185] = \"��������������ｹｹ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[185].length; ++j) if(D[185][j].charCodeAt(0) !== 0xFFFD) { e[D[185][j]] = 47360 + j; d[47360 + j] = D[185][j];}\nD[186] = \"��������������ｺｺ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[186].length; ++j) if(D[186][j].charCodeAt(0) !== 0xFFFD) { e[D[186][j]] = 47616 + j; d[47616 + j] = D[186][j];}\nD[187] = \"��������������ｻｻ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[187].length; ++j) if(D[187][j].charCodeAt(0) !== 0xFFFD) { e[D[187][j]] = 47872 + j; d[47872 + j] = D[187][j];}\nD[188] = \"��������������ｼｼ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[188].length; ++j) if(D[188][j].charCodeAt(0) !== 0xFFFD) { e[D[188][j]] = 48128 + j; d[48128 + j] = D[188][j];}\nD[189] = \"��������������ｽｽ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[189].length; ++j) if(D[189][j].charCodeAt(0) !== 0xFFFD) { e[D[189][j]] = 48384 + j; d[48384 + j] = D[189][j];}\nD[190] = \"��������������ｾｾ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[190].length; ++j) if(D[190][j].charCodeAt(0) !== 0xFFFD) { e[D[190][j]] = 48640 + j; d[48640 + j] = D[190][j];}\nD[191] = \"��������������ｿｿ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[191].length; ++j) if(D[191][j].charCodeAt(0) !== 0xFFFD) { e[D[191][j]] = 48896 + j; d[48896 + j] = D[191][j];}\nD[192] = \"��������������ﾀﾀ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[192].length; ++j) if(D[192][j].charCodeAt(0) !== 0xFFFD) { e[D[192][j]] = 49152 + j; d[49152 + j] = D[192][j];}\nD[193] = \"��������������ﾁﾁ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[193].length; ++j) if(D[193][j].charCodeAt(0) !== 0xFFFD) { e[D[193][j]] = 49408 + j; d[49408 + j] = D[193][j];}\nD[194] = \"��������������ﾂﾂ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[194].length; ++j) if(D[194][j].charCodeAt(0) !== 0xFFFD) { e[D[194][j]] = 49664 + j; d[49664 + j] = D[194][j];}\nD[195] = \"��������������ﾃﾃ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[195].length; ++j) if(D[195][j].charCodeAt(0) !== 0xFFFD) { e[D[195][j]] = 49920 + j; d[49920 + j] = D[195][j];}\nD[196] = \"��������������ﾄﾄ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[196].length; ++j) if(D[196][j].charCodeAt(0) !== 0xFFFD) { e[D[196][j]] = 50176 + j; d[50176 + j] = D[196][j];}\nD[197] = \"��������������ﾅﾅ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[197].length; ++j) if(D[197][j].charCodeAt(0) !== 0xFFFD) { e[D[197][j]] = 50432 + j; d[50432 + j] = D[197][j];}\nD[198] = \"��������������ﾆﾆ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[198].length; ++j) if(D[198][j].charCodeAt(0) !== 0xFFFD) { e[D[198][j]] = 50688 + j; d[50688 + j] = D[198][j];}\nD[199] = \"��������������ﾇﾇ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[199].length; ++j) if(D[199][j].charCodeAt(0) !== 0xFFFD) { e[D[199][j]] = 50944 + j; d[50944 + j] = D[199][j];}\nD[200] = \"��������������ﾈﾈ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[200].length; ++j) if(D[200][j].charCodeAt(0) !== 0xFFFD) { e[D[200][j]] = 51200 + j; d[51200 + j] = D[200][j];}\nD[201] = \"��������������ﾉﾉ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[201].length; ++j) if(D[201][j].charCodeAt(0) !== 0xFFFD) { e[D[201][j]] = 51456 + j; d[51456 + j] = D[201][j];}\nD[202] = \"��������������ﾊﾊ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[202].length; ++j) if(D[202][j].charCodeAt(0) !== 0xFFFD) { e[D[202][j]] = 51712 + j; d[51712 + j] = D[202][j];}\nD[203] = \"��������������ﾋﾋ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[203].length; ++j) if(D[203][j].charCodeAt(0) !== 0xFFFD) { e[D[203][j]] = 51968 + j; d[51968 + j] = D[203][j];}\nD[204] = \"��������������ﾌﾌ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[204].length; ++j) if(D[204][j].charCodeAt(0) !== 0xFFFD) { e[D[204][j]] = 52224 + j; d[52224 + j] = D[204][j];}\nD[205] = \"��������������ﾍﾍ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[205].length; ++j) if(D[205][j].charCodeAt(0) !== 0xFFFD) { e[D[205][j]] = 52480 + j; d[52480 + j] = D[205][j];}\nD[206] = \"��������������ﾎﾎ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[206].length; ++j) if(D[206][j].charCodeAt(0) !== 0xFFFD) { e[D[206][j]] = 52736 + j; d[52736 + j] = D[206][j];}\nD[207] = \"��������������ﾏﾏ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[207].length; ++j) if(D[207][j].charCodeAt(0) !== 0xFFFD) { e[D[207][j]] = 52992 + j; d[52992 + j] = D[207][j];}\nD[208] = \"��������������ﾐﾐ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[208].length; ++j) if(D[208][j].charCodeAt(0) !== 0xFFFD) { e[D[208][j]] = 53248 + j; d[53248 + j] = D[208][j];}\nD[209] = \"��������������ﾑﾑ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[209].length; ++j) if(D[209][j].charCodeAt(0) !== 0xFFFD) { e[D[209][j]] = 53504 + j; d[53504 + j] = D[209][j];}\nD[210] = \"��������������ﾒﾒ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[210].length; ++j) if(D[210][j].charCodeAt(0) !== 0xFFFD) { e[D[210][j]] = 53760 + j; d[53760 + j] = D[210][j];}\nD[211] = \"��������������ﾓﾓ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[211].length; ++j) if(D[211][j].charCodeAt(0) !== 0xFFFD) { e[D[211][j]] = 54016 + j; d[54016 + j] = D[211][j];}\nD[212] = \"��������������ﾔﾔ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[212].length; ++j) if(D[212][j].charCodeAt(0) !== 0xFFFD) { e[D[212][j]] = 54272 + j; d[54272 + j] = D[212][j];}\nD[213] = \"��������������ﾕﾕ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[213].length; ++j) if(D[213][j].charCodeAt(0) !== 0xFFFD) { e[D[213][j]] = 54528 + j; d[54528 + j] = D[213][j];}\nD[214] = \"��������������ﾖﾖ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[214].length; ++j) if(D[214][j].charCodeAt(0) !== 0xFFFD) { e[D[214][j]] = 54784 + j; d[54784 + j] = D[214][j];}\nD[215] = \"��������������ﾗﾗ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[215].length; ++j) if(D[215][j].charCodeAt(0) !== 0xFFFD) { e[D[215][j]] = 55040 + j; d[55040 + j] = D[215][j];}\nD[216] = \"��������������ﾘﾘ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[216].length; ++j) if(D[216][j].charCodeAt(0) !== 0xFFFD) { e[D[216][j]] = 55296 + j; d[55296 + j] = D[216][j];}\nD[217] = \"��������������ﾙﾙ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[217].length; ++j) if(D[217][j].charCodeAt(0) !== 0xFFFD) { e[D[217][j]] = 55552 + j; d[55552 + j] = D[217][j];}\nD[218] = \"��������������ﾚﾚ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[218].length; ++j) if(D[218][j].charCodeAt(0) !== 0xFFFD) { e[D[218][j]] = 55808 + j; d[55808 + j] = D[218][j];}\nD[219] = \"��������������ﾛﾛ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[219].length; ++j) if(D[219][j].charCodeAt(0) !== 0xFFFD) { e[D[219][j]] = 56064 + j; d[56064 + j] = D[219][j];}\nD[220] = \"��������������ﾜﾜ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[220].length; ++j) if(D[220][j].charCodeAt(0) !== 0xFFFD) { e[D[220][j]] = 56320 + j; d[56320 + j] = D[220][j];}\nD[221] = \"��������������ﾝﾝ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[221].length; ++j) if(D[221][j].charCodeAt(0) !== 0xFFFD) { e[D[221][j]] = 56576 + j; d[56576 + j] = D[221][j];}\nD[222] = \"��������������ﾞﾞ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[222].length; ++j) if(D[222][j].charCodeAt(0) !== 0xFFFD) { e[D[222][j]] = 56832 + j; d[56832 + j] = D[222][j];}\nD[223] = \"��������������ﾟﾟ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[223].length; ++j) if(D[223][j].charCodeAt(0) !== 0xFFFD) { e[D[223][j]] = 57088 + j; d[57088 + j] = D[223][j];}\nD[253] = \"��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[253].length; ++j) if(D[253][j].charCodeAt(0) !== 0xFFFD) { e[D[253][j]] = 64768 + j; d[64768 + j] = D[253][j];}\nD[254] = \"��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[254].length; ++j) if(D[254][j].charCodeAt(0) !== 0xFFFD) { e[D[254][j]] = 65024 + j; d[65024 + j] = D[254][j];}\nD[255] = \"��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[255].length; ++j) if(D[255][j].charCodeAt(0) !== 0xFFFD) { e[D[255][j]] = 65280 + j; d[65280 + j] = D[255][j];}\nreturn {\"enc\": e, \"dec\": d }; })();\ncptable[50222] = (function(){ var d = [], e = {}, D = [], j;\nD[0] = \"\\u0000\\u0001\\u0002\\u0003\\u0004\\u0005\\u0006\\u0007\\b\\t\\n\\u000b\\f\\r\\u0000\\u0000\\u0010\\u0011\\u0012\\u0013\\u0014\\u0015\\u0016\\u0017\\u0018\\u0019\\u001a\\u001b\\u001c\\u001d\\u001e\\u001f !\\\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~�������������������������������｡｢｣､･ｦｧｨｩｪｫｬｭｮｯｰｱｲｳｴｵｶｷｸｹｺｻｼｽｾｿﾀﾁﾂﾃﾄﾅﾆﾇﾈﾉﾊﾋﾌﾍﾎﾏﾐﾑﾒﾓﾔﾕﾖﾗﾘﾙﾚﾛﾜﾝﾞﾟ�����������������������������\".split(\"\");\nfor(j = 0; j != D[0].length; ++j) if(D[0][j].charCodeAt(0) !== 0xFFFD) { e[D[0][j]] = 0 + j; d[0 + j] = D[0][j];}\nD[1] = \"��������������\\u0001\\u0001������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[1].length; ++j) if(D[1][j].charCodeAt(0) !== 0xFFFD) { e[D[1][j]] = 256 + j; d[256 + j] = D[1][j];}\nD[2] = \"��������������\\u0002\\u0002������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[2].length; ++j) if(D[2][j].charCodeAt(0) !== 0xFFFD) { e[D[2][j]] = 512 + j; d[512 + j] = D[2][j];}\nD[3] = \"��������������\\u0003\\u0003������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[3].length; ++j) if(D[3][j].charCodeAt(0) !== 0xFFFD) { e[D[3][j]] = 768 + j; d[768 + j] = D[3][j];}\nD[4] = \"��������������\\u0004\\u0004������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[4].length; ++j) if(D[4][j].charCodeAt(0) !== 0xFFFD) { e[D[4][j]] = 1024 + j; d[1024 + j] = D[4][j];}\nD[5] = \"��������������\\u0005\\u0005������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[5].length; ++j) if(D[5][j].charCodeAt(0) !== 0xFFFD) { e[D[5][j]] = 1280 + j; d[1280 + j] = D[5][j];}\nD[6] = \"��������������\\u0006\\u0006������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[6].length; ++j) if(D[6][j].charCodeAt(0) !== 0xFFFD) { e[D[6][j]] = 1536 + j; d[1536 + j] = D[6][j];}\nD[7] = \"��������������\\u0007\\u0007������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[7].length; ++j) if(D[7][j].charCodeAt(0) !== 0xFFFD) { e[D[7][j]] = 1792 + j; d[1792 + j] = D[7][j];}\nD[8] = \"��������������\\b\\b������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[8].length; ++j) if(D[8][j].charCodeAt(0) !== 0xFFFD) { e[D[8][j]] = 2048 + j; d[2048 + j] = D[8][j];}\nD[9] = \"��������������\\t\\t������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[9].length; ++j) if(D[9][j].charCodeAt(0) !== 0xFFFD) { e[D[9][j]] = 2304 + j; d[2304 + j] = D[9][j];}\nD[10] = \"��������������\\n\\n������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[10].length; ++j) if(D[10][j].charCodeAt(0) !== 0xFFFD) { e[D[10][j]] = 2560 + j; d[2560 + j] = D[10][j];}\nD[11] = \"��������������\\u000b\\u000b������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[11].length; ++j) if(D[11][j].charCodeAt(0) !== 0xFFFD) { e[D[11][j]] = 2816 + j; d[2816 + j] = D[11][j];}\nD[12] = \"��������������\\f\\f������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[12].length; ++j) if(D[12][j].charCodeAt(0) !== 0xFFFD) { e[D[12][j]] = 3072 + j; d[3072 + j] = D[12][j];}\nD[13] = \"��������������\\r\\r������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[13].length; ++j) if(D[13][j].charCodeAt(0) !== 0xFFFD) { e[D[13][j]] = 3328 + j; d[3328 + j] = D[13][j];}\nD[14] = \"��������������\\r\\r�����������������｡｢｣､･ｦｧｨｩｪｫｬｭｮｯｰｱｲｳｴｵｶｷｸｹｺｻｼｽｾｿﾀﾁﾂﾃﾄﾅﾆﾇﾈﾉﾊﾋﾌﾍﾎﾏﾐﾑﾒﾓﾔﾕﾖﾗﾘﾙﾚﾛﾜﾝﾞﾟ�����������������������������������������������������������������｡｢｣､･ｦｧｨｩｪｫｬｭｮｯｰｱｲｳｴｵｶｷｸｹｺｻｼｽｾｿﾀﾁﾂﾃﾄﾅﾆﾇﾈﾉﾊﾋﾌﾍﾎﾏﾐﾑﾒﾓﾔﾕﾖﾗﾘﾙﾚﾛﾜﾝﾞﾟ��������������������������������\".split(\"\");\nfor(j = 0; j != D[14].length; ++j) if(D[14][j].charCodeAt(0) !== 0xFFFD) { e[D[14][j]] = 3584 + j; d[3584 + j] = D[14][j];}\nD[15] = \"�\\u0001\\u0002\\u0003\\u0004\\u0005\\u0006\\u0007\\b\\t\\n\\u000b\\f\\r\\r\\r\\u0010\\u0011\\u0012\\u0013\\u0014\\u0015\\u0016\\u0017\\u0018\\u0019\\u001a\\u001b\\u001c\\u001d\\u001e\\u001f !\\\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~�������������������������������｡｢｣､･ｦｧｨｩｪｫｬｭｮｯｰｱｲｳｴｵｶｷｸｹｺｻｼｽｾｿﾀﾁﾂﾃﾄﾅﾆﾇﾈﾉﾊﾋﾌﾍﾎﾏﾐﾑﾒﾓﾔﾕﾖﾗﾘﾙﾚﾛﾜﾝﾞﾟ�����������������������������\".split(\"\");\nfor(j = 0; j != D[15].length; ++j) if(D[15][j].charCodeAt(0) !== 0xFFFD) { e[D[15][j]] = 3840 + j; d[3840 + j] = D[15][j];}\nD[16] = \"��������������\\u0010\\u0010������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[16].length; ++j) if(D[16][j].charCodeAt(0) !== 0xFFFD) { e[D[16][j]] = 4096 + j; d[4096 + j] = D[16][j];}\nD[17] = \"��������������\\u0011\\u0011������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[17].length; ++j) if(D[17][j].charCodeAt(0) !== 0xFFFD) { e[D[17][j]] = 4352 + j; d[4352 + j] = D[17][j];}\nD[18] = \"��������������\\u0012\\u0012������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[18].length; ++j) if(D[18][j].charCodeAt(0) !== 0xFFFD) { e[D[18][j]] = 4608 + j; d[4608 + j] = D[18][j];}\nD[19] = \"��������������\\u0013\\u0013������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[19].length; ++j) if(D[19][j].charCodeAt(0) !== 0xFFFD) { e[D[19][j]] = 4864 + j; d[4864 + j] = D[19][j];}\nD[20] = \"��������������\\u0014\\u0014������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[20].length; ++j) if(D[20][j].charCodeAt(0) !== 0xFFFD) { e[D[20][j]] = 5120 + j; d[5120 + j] = D[20][j];}\nD[21] = \"��������������\\u0015\\u0015������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[21].length; ++j) if(D[21][j].charCodeAt(0) !== 0xFFFD) { e[D[21][j]] = 5376 + j; d[5376 + j] = D[21][j];}\nD[22] = \"��������������\\u0016\\u0016������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[22].length; ++j) if(D[22][j].charCodeAt(0) !== 0xFFFD) { e[D[22][j]] = 5632 + j; d[5632 + j] = D[22][j];}\nD[23] = \"��������������\\u0017\\u0017������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[23].length; ++j) if(D[23][j].charCodeAt(0) !== 0xFFFD) { e[D[23][j]] = 5888 + j; d[5888 + j] = D[23][j];}\nD[24] = \"��������������\\u0018\\u0018������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[24].length; ++j) if(D[24][j].charCodeAt(0) !== 0xFFFD) { e[D[24][j]] = 6144 + j; d[6144 + j] = D[24][j];}\nD[25] = \"��������������\\u0019\\u0019������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[25].length; ++j) if(D[25][j].charCodeAt(0) !== 0xFFFD) { e[D[25][j]] = 6400 + j; d[6400 + j] = D[25][j];}\nD[26] = \"��������������\\u001a\\u001a������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[26].length; ++j) if(D[26][j].charCodeAt(0) !== 0xFFFD) { e[D[26][j]] = 6656 + j; d[6656 + j] = D[26][j];}\nD[27] = \"��������������\\u001b\\u001b������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[27].length; ++j) if(D[27][j].charCodeAt(0) !== 0xFFFD) { e[D[27][j]] = 6912 + j; d[6912 + j] = D[27][j];}\nD[28] = \"��������������\\u001c\\u001c������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[28].length; ++j) if(D[28][j].charCodeAt(0) !== 0xFFFD) { e[D[28][j]] = 7168 + j; d[7168 + j] = D[28][j];}\nD[29] = \"��������������\\u001d\\u001d������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[29].length; ++j) if(D[29][j].charCodeAt(0) !== 0xFFFD) { e[D[29][j]] = 7424 + j; d[7424 + j] = D[29][j];}\nD[30] = \"��������������\\u001e\\u001e������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[30].length; ++j) if(D[30][j].charCodeAt(0) !== 0xFFFD) { e[D[30][j]] = 7680 + j; d[7680 + j] = D[30][j];}\nD[31] = \"��������������\\u001f\\u001f������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[31].length; ++j) if(D[31][j].charCodeAt(0) !== 0xFFFD) { e[D[31][j]] = 7936 + j; d[7936 + j] = D[31][j];}\nD[32] = \"��������������  ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[32].length; ++j) if(D[32][j].charCodeAt(0) !== 0xFFFD) { e[D[32][j]] = 8192 + j; d[8192 + j] = D[32][j];}\nD[33] = \"��������������!!������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[33].length; ++j) if(D[33][j].charCodeAt(0) !== 0xFFFD) { e[D[33][j]] = 8448 + j; d[8448 + j] = D[33][j];}\nD[34] = \"��������������\\\"\\\"������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[34].length; ++j) if(D[34][j].charCodeAt(0) !== 0xFFFD) { e[D[34][j]] = 8704 + j; d[8704 + j] = D[34][j];}\nD[35] = \"��������������##������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[35].length; ++j) if(D[35][j].charCodeAt(0) !== 0xFFFD) { e[D[35][j]] = 8960 + j; d[8960 + j] = D[35][j];}\nD[36] = \"��������������$$������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[36].length; ++j) if(D[36][j].charCodeAt(0) !== 0xFFFD) { e[D[36][j]] = 9216 + j; d[9216 + j] = D[36][j];}\nD[37] = \"��������������%%������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[37].length; ++j) if(D[37][j].charCodeAt(0) !== 0xFFFD) { e[D[37][j]] = 9472 + j; d[9472 + j] = D[37][j];}\nD[38] = \"��������������&&������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[38].length; ++j) if(D[38][j].charCodeAt(0) !== 0xFFFD) { e[D[38][j]] = 9728 + j; d[9728 + j] = D[38][j];}\nD[39] = \"��������������''������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[39].length; ++j) if(D[39][j].charCodeAt(0) !== 0xFFFD) { e[D[39][j]] = 9984 + j; d[9984 + j] = D[39][j];}\nD[40] = \"��������������((������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[40].length; ++j) if(D[40][j].charCodeAt(0) !== 0xFFFD) { e[D[40][j]] = 10240 + j; d[10240 + j] = D[40][j];}\nD[41] = \"��������������))������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[41].length; ++j) if(D[41][j].charCodeAt(0) !== 0xFFFD) { e[D[41][j]] = 10496 + j; d[10496 + j] = D[41][j];}\nD[42] = \"��������������**������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[42].length; ++j) if(D[42][j].charCodeAt(0) !== 0xFFFD) { e[D[42][j]] = 10752 + j; d[10752 + j] = D[42][j];}\nD[43] = \"��������������++������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[43].length; ++j) if(D[43][j].charCodeAt(0) !== 0xFFFD) { e[D[43][j]] = 11008 + j; d[11008 + j] = D[43][j];}\nD[44] = \"��������������,,������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[44].length; ++j) if(D[44][j].charCodeAt(0) !== 0xFFFD) { e[D[44][j]] = 11264 + j; d[11264 + j] = D[44][j];}\nD[45] = \"��������������--������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[45].length; ++j) if(D[45][j].charCodeAt(0) !== 0xFFFD) { e[D[45][j]] = 11520 + j; d[11520 + j] = D[45][j];}\nD[46] = \"��������������..������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[46].length; ++j) if(D[46][j].charCodeAt(0) !== 0xFFFD) { e[D[46][j]] = 11776 + j; d[11776 + j] = D[46][j];}\nD[47] = \"��������������//������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[47].length; ++j) if(D[47][j].charCodeAt(0) !== 0xFFFD) { e[D[47][j]] = 12032 + j; d[12032 + j] = D[47][j];}\nD[48] = \"��������������00������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[48].length; ++j) if(D[48][j].charCodeAt(0) !== 0xFFFD) { e[D[48][j]] = 12288 + j; d[12288 + j] = D[48][j];}\nD[49] = \"��������������11������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[49].length; ++j) if(D[49][j].charCodeAt(0) !== 0xFFFD) { e[D[49][j]] = 12544 + j; d[12544 + j] = D[49][j];}\nD[50] = \"��������������22������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[50].length; ++j) if(D[50][j].charCodeAt(0) !== 0xFFFD) { e[D[50][j]] = 12800 + j; d[12800 + j] = D[50][j];}\nD[51] = \"��������������33������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[51].length; ++j) if(D[51][j].charCodeAt(0) !== 0xFFFD) { e[D[51][j]] = 13056 + j; d[13056 + j] = D[51][j];}\nD[52] = \"��������������44������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[52].length; ++j) if(D[52][j].charCodeAt(0) !== 0xFFFD) { e[D[52][j]] = 13312 + j; d[13312 + j] = D[52][j];}\nD[53] = \"��������������55������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[53].length; ++j) if(D[53][j].charCodeAt(0) !== 0xFFFD) { e[D[53][j]] = 13568 + j; d[13568 + j] = D[53][j];}\nD[54] = \"��������������66������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[54].length; ++j) if(D[54][j].charCodeAt(0) !== 0xFFFD) { e[D[54][j]] = 13824 + j; d[13824 + j] = D[54][j];}\nD[55] = \"��������������77������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[55].length; ++j) if(D[55][j].charCodeAt(0) !== 0xFFFD) { e[D[55][j]] = 14080 + j; d[14080 + j] = D[55][j];}\nD[56] = \"��������������88������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[56].length; ++j) if(D[56][j].charCodeAt(0) !== 0xFFFD) { e[D[56][j]] = 14336 + j; d[14336 + j] = D[56][j];}\nD[57] = \"��������������99������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[57].length; ++j) if(D[57][j].charCodeAt(0) !== 0xFFFD) { e[D[57][j]] = 14592 + j; d[14592 + j] = D[57][j];}\nD[58] = \"��������������::������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[58].length; ++j) if(D[58][j].charCodeAt(0) !== 0xFFFD) { e[D[58][j]] = 14848 + j; d[14848 + j] = D[58][j];}\nD[59] = \"��������������;;������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[59].length; ++j) if(D[59][j].charCodeAt(0) !== 0xFFFD) { e[D[59][j]] = 15104 + j; d[15104 + j] = D[59][j];}\nD[60] = \"��������������<<������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[60].length; ++j) if(D[60][j].charCodeAt(0) !== 0xFFFD) { e[D[60][j]] = 15360 + j; d[15360 + j] = D[60][j];}\nD[61] = \"��������������==������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[61].length; ++j) if(D[61][j].charCodeAt(0) !== 0xFFFD) { e[D[61][j]] = 15616 + j; d[15616 + j] = D[61][j];}\nD[62] = \"��������������>>������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[62].length; ++j) if(D[62][j].charCodeAt(0) !== 0xFFFD) { e[D[62][j]] = 15872 + j; d[15872 + j] = D[62][j];}\nD[63] = \"��������������??������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[63].length; ++j) if(D[63][j].charCodeAt(0) !== 0xFFFD) { e[D[63][j]] = 16128 + j; d[16128 + j] = D[63][j];}\nD[64] = \"��������������@@������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[64].length; ++j) if(D[64][j].charCodeAt(0) !== 0xFFFD) { e[D[64][j]] = 16384 + j; d[16384 + j] = D[64][j];}\nD[65] = \"��������������AA������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[65].length; ++j) if(D[65][j].charCodeAt(0) !== 0xFFFD) { e[D[65][j]] = 16640 + j; d[16640 + j] = D[65][j];}\nD[66] = \"��������������BB������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[66].length; ++j) if(D[66][j].charCodeAt(0) !== 0xFFFD) { e[D[66][j]] = 16896 + j; d[16896 + j] = D[66][j];}\nD[67] = \"��������������CC������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[67].length; ++j) if(D[67][j].charCodeAt(0) !== 0xFFFD) { e[D[67][j]] = 17152 + j; d[17152 + j] = D[67][j];}\nD[68] = \"��������������DD������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[68].length; ++j) if(D[68][j].charCodeAt(0) !== 0xFFFD) { e[D[68][j]] = 17408 + j; d[17408 + j] = D[68][j];}\nD[69] = \"��������������EE������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[69].length; ++j) if(D[69][j].charCodeAt(0) !== 0xFFFD) { e[D[69][j]] = 17664 + j; d[17664 + j] = D[69][j];}\nD[70] = \"��������������FF������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[70].length; ++j) if(D[70][j].charCodeAt(0) !== 0xFFFD) { e[D[70][j]] = 17920 + j; d[17920 + j] = D[70][j];}\nD[71] = \"��������������GG������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[71].length; ++j) if(D[71][j].charCodeAt(0) !== 0xFFFD) { e[D[71][j]] = 18176 + j; d[18176 + j] = D[71][j];}\nD[72] = \"��������������HH������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[72].length; ++j) if(D[72][j].charCodeAt(0) !== 0xFFFD) { e[D[72][j]] = 18432 + j; d[18432 + j] = D[72][j];}\nD[73] = \"��������������II������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[73].length; ++j) if(D[73][j].charCodeAt(0) !== 0xFFFD) { e[D[73][j]] = 18688 + j; d[18688 + j] = D[73][j];}\nD[74] = \"��������������JJ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[74].length; ++j) if(D[74][j].charCodeAt(0) !== 0xFFFD) { e[D[74][j]] = 18944 + j; d[18944 + j] = D[74][j];}\nD[75] = \"��������������KK������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[75].length; ++j) if(D[75][j].charCodeAt(0) !== 0xFFFD) { e[D[75][j]] = 19200 + j; d[19200 + j] = D[75][j];}\nD[76] = \"��������������LL������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[76].length; ++j) if(D[76][j].charCodeAt(0) !== 0xFFFD) { e[D[76][j]] = 19456 + j; d[19456 + j] = D[76][j];}\nD[77] = \"��������������MM������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[77].length; ++j) if(D[77][j].charCodeAt(0) !== 0xFFFD) { e[D[77][j]] = 19712 + j; d[19712 + j] = D[77][j];}\nD[78] = \"��������������NN������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[78].length; ++j) if(D[78][j].charCodeAt(0) !== 0xFFFD) { e[D[78][j]] = 19968 + j; d[19968 + j] = D[78][j];}\nD[79] = \"��������������OO������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[79].length; ++j) if(D[79][j].charCodeAt(0) !== 0xFFFD) { e[D[79][j]] = 20224 + j; d[20224 + j] = D[79][j];}\nD[80] = \"��������������PP������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[80].length; ++j) if(D[80][j].charCodeAt(0) !== 0xFFFD) { e[D[80][j]] = 20480 + j; d[20480 + j] = D[80][j];}\nD[81] = \"��������������QQ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[81].length; ++j) if(D[81][j].charCodeAt(0) !== 0xFFFD) { e[D[81][j]] = 20736 + j; d[20736 + j] = D[81][j];}\nD[82] = \"��������������RR������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[82].length; ++j) if(D[82][j].charCodeAt(0) !== 0xFFFD) { e[D[82][j]] = 20992 + j; d[20992 + j] = D[82][j];}\nD[83] = \"��������������SS������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[83].length; ++j) if(D[83][j].charCodeAt(0) !== 0xFFFD) { e[D[83][j]] = 21248 + j; d[21248 + j] = D[83][j];}\nD[84] = \"��������������TT������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[84].length; ++j) if(D[84][j].charCodeAt(0) !== 0xFFFD) { e[D[84][j]] = 21504 + j; d[21504 + j] = D[84][j];}\nD[85] = \"��������������UU������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[85].length; ++j) if(D[85][j].charCodeAt(0) !== 0xFFFD) { e[D[85][j]] = 21760 + j; d[21760 + j] = D[85][j];}\nD[86] = \"��������������VV������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[86].length; ++j) if(D[86][j].charCodeAt(0) !== 0xFFFD) { e[D[86][j]] = 22016 + j; d[22016 + j] = D[86][j];}\nD[87] = \"��������������WW������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[87].length; ++j) if(D[87][j].charCodeAt(0) !== 0xFFFD) { e[D[87][j]] = 22272 + j; d[22272 + j] = D[87][j];}\nD[88] = \"��������������XX������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[88].length; ++j) if(D[88][j].charCodeAt(0) !== 0xFFFD) { e[D[88][j]] = 22528 + j; d[22528 + j] = D[88][j];}\nD[89] = \"��������������YY������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[89].length; ++j) if(D[89][j].charCodeAt(0) !== 0xFFFD) { e[D[89][j]] = 22784 + j; d[22784 + j] = D[89][j];}\nD[90] = \"��������������ZZ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[90].length; ++j) if(D[90][j].charCodeAt(0) !== 0xFFFD) { e[D[90][j]] = 23040 + j; d[23040 + j] = D[90][j];}\nD[91] = \"��������������[[������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[91].length; ++j) if(D[91][j].charCodeAt(0) !== 0xFFFD) { e[D[91][j]] = 23296 + j; d[23296 + j] = D[91][j];}\nD[92] = \"��������������\\\\\\\\������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[92].length; ++j) if(D[92][j].charCodeAt(0) !== 0xFFFD) { e[D[92][j]] = 23552 + j; d[23552 + j] = D[92][j];}\nD[93] = \"��������������]]������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[93].length; ++j) if(D[93][j].charCodeAt(0) !== 0xFFFD) { e[D[93][j]] = 23808 + j; d[23808 + j] = D[93][j];}\nD[94] = \"��������������^^������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[94].length; ++j) if(D[94][j].charCodeAt(0) !== 0xFFFD) { e[D[94][j]] = 24064 + j; d[24064 + j] = D[94][j];}\nD[95] = \"��������������__������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[95].length; ++j) if(D[95][j].charCodeAt(0) !== 0xFFFD) { e[D[95][j]] = 24320 + j; d[24320 + j] = D[95][j];}\nD[96] = \"��������������``������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[96].length; ++j) if(D[96][j].charCodeAt(0) !== 0xFFFD) { e[D[96][j]] = 24576 + j; d[24576 + j] = D[96][j];}\nD[97] = \"��������������aa������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[97].length; ++j) if(D[97][j].charCodeAt(0) !== 0xFFFD) { e[D[97][j]] = 24832 + j; d[24832 + j] = D[97][j];}\nD[98] = \"��������������bb������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[98].length; ++j) if(D[98][j].charCodeAt(0) !== 0xFFFD) { e[D[98][j]] = 25088 + j; d[25088 + j] = D[98][j];}\nD[99] = \"��������������cc������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[99].length; ++j) if(D[99][j].charCodeAt(0) !== 0xFFFD) { e[D[99][j]] = 25344 + j; d[25344 + j] = D[99][j];}\nD[100] = \"��������������dd������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[100].length; ++j) if(D[100][j].charCodeAt(0) !== 0xFFFD) { e[D[100][j]] = 25600 + j; d[25600 + j] = D[100][j];}\nD[101] = \"��������������ee������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[101].length; ++j) if(D[101][j].charCodeAt(0) !== 0xFFFD) { e[D[101][j]] = 25856 + j; d[25856 + j] = D[101][j];}\nD[102] = \"��������������ff������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[102].length; ++j) if(D[102][j].charCodeAt(0) !== 0xFFFD) { e[D[102][j]] = 26112 + j; d[26112 + j] = D[102][j];}\nD[103] = \"��������������gg������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[103].length; ++j) if(D[103][j].charCodeAt(0) !== 0xFFFD) { e[D[103][j]] = 26368 + j; d[26368 + j] = D[103][j];}\nD[104] = \"��������������hh������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[104].length; ++j) if(D[104][j].charCodeAt(0) !== 0xFFFD) { e[D[104][j]] = 26624 + j; d[26624 + j] = D[104][j];}\nD[105] = \"��������������ii������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[105].length; ++j) if(D[105][j].charCodeAt(0) !== 0xFFFD) { e[D[105][j]] = 26880 + j; d[26880 + j] = D[105][j];}\nD[106] = \"��������������jj������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[106].length; ++j) if(D[106][j].charCodeAt(0) !== 0xFFFD) { e[D[106][j]] = 27136 + j; d[27136 + j] = D[106][j];}\nD[107] = \"��������������kk������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[107].length; ++j) if(D[107][j].charCodeAt(0) !== 0xFFFD) { e[D[107][j]] = 27392 + j; d[27392 + j] = D[107][j];}\nD[108] = \"��������������ll������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[108].length; ++j) if(D[108][j].charCodeAt(0) !== 0xFFFD) { e[D[108][j]] = 27648 + j; d[27648 + j] = D[108][j];}\nD[109] = \"��������������mm������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[109].length; ++j) if(D[109][j].charCodeAt(0) !== 0xFFFD) { e[D[109][j]] = 27904 + j; d[27904 + j] = D[109][j];}\nD[110] = \"��������������nn������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[110].length; ++j) if(D[110][j].charCodeAt(0) !== 0xFFFD) { e[D[110][j]] = 28160 + j; d[28160 + j] = D[110][j];}\nD[111] = \"��������������oo������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[111].length; ++j) if(D[111][j].charCodeAt(0) !== 0xFFFD) { e[D[111][j]] = 28416 + j; d[28416 + j] = D[111][j];}\nD[112] = \"��������������pp������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[112].length; ++j) if(D[112][j].charCodeAt(0) !== 0xFFFD) { e[D[112][j]] = 28672 + j; d[28672 + j] = D[112][j];}\nD[113] = \"��������������qq������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[113].length; ++j) if(D[113][j].charCodeAt(0) !== 0xFFFD) { e[D[113][j]] = 28928 + j; d[28928 + j] = D[113][j];}\nD[114] = \"��������������rr������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[114].length; ++j) if(D[114][j].charCodeAt(0) !== 0xFFFD) { e[D[114][j]] = 29184 + j; d[29184 + j] = D[114][j];}\nD[115] = \"��������������ss������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[115].length; ++j) if(D[115][j].charCodeAt(0) !== 0xFFFD) { e[D[115][j]] = 29440 + j; d[29440 + j] = D[115][j];}\nD[116] = \"��������������tt������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[116].length; ++j) if(D[116][j].charCodeAt(0) !== 0xFFFD) { e[D[116][j]] = 29696 + j; d[29696 + j] = D[116][j];}\nD[117] = \"��������������uu������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[117].length; ++j) if(D[117][j].charCodeAt(0) !== 0xFFFD) { e[D[117][j]] = 29952 + j; d[29952 + j] = D[117][j];}\nD[118] = \"��������������vv������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[118].length; ++j) if(D[118][j].charCodeAt(0) !== 0xFFFD) { e[D[118][j]] = 30208 + j; d[30208 + j] = D[118][j];}\nD[119] = \"��������������ww������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[119].length; ++j) if(D[119][j].charCodeAt(0) !== 0xFFFD) { e[D[119][j]] = 30464 + j; d[30464 + j] = D[119][j];}\nD[120] = \"��������������xx������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[120].length; ++j) if(D[120][j].charCodeAt(0) !== 0xFFFD) { e[D[120][j]] = 30720 + j; d[30720 + j] = D[120][j];}\nD[121] = \"��������������yy������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[121].length; ++j) if(D[121][j].charCodeAt(0) !== 0xFFFD) { e[D[121][j]] = 30976 + j; d[30976 + j] = D[121][j];}\nD[122] = \"��������������zz������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[122].length; ++j) if(D[122][j].charCodeAt(0) !== 0xFFFD) { e[D[122][j]] = 31232 + j; d[31232 + j] = D[122][j];}\nD[123] = \"��������������{{������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[123].length; ++j) if(D[123][j].charCodeAt(0) !== 0xFFFD) { e[D[123][j]] = 31488 + j; d[31488 + j] = D[123][j];}\nD[124] = \"��������������||������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[124].length; ++j) if(D[124][j].charCodeAt(0) !== 0xFFFD) { e[D[124][j]] = 31744 + j; d[31744 + j] = D[124][j];}\nD[125] = \"��������������}}������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[125].length; ++j) if(D[125][j].charCodeAt(0) !== 0xFFFD) { e[D[125][j]] = 32000 + j; d[32000 + j] = D[125][j];}\nD[126] = \"��������������~~������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[126].length; ++j) if(D[126][j].charCodeAt(0) !== 0xFFFD) { e[D[126][j]] = 32256 + j; d[32256 + j] = D[126][j];}\nD[127] = \"��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[127].length; ++j) if(D[127][j].charCodeAt(0) !== 0xFFFD) { e[D[127][j]] = 32512 + j; d[32512 + j] = D[127][j];}\nD[128] = \"��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[128].length; ++j) if(D[128][j].charCodeAt(0) !== 0xFFFD) { e[D[128][j]] = 32768 + j; d[32768 + j] = D[128][j];}\nD[160] = \"��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[160].length; ++j) if(D[160][j].charCodeAt(0) !== 0xFFFD) { e[D[160][j]] = 40960 + j; d[40960 + j] = D[160][j];}\nD[161] = \"��������������｡｡������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[161].length; ++j) if(D[161][j].charCodeAt(0) !== 0xFFFD) { e[D[161][j]] = 41216 + j; d[41216 + j] = D[161][j];}\nD[162] = \"��������������｢｢������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[162].length; ++j) if(D[162][j].charCodeAt(0) !== 0xFFFD) { e[D[162][j]] = 41472 + j; d[41472 + j] = D[162][j];}\nD[163] = \"��������������｣｣������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[163].length; ++j) if(D[163][j].charCodeAt(0) !== 0xFFFD) { e[D[163][j]] = 41728 + j; d[41728 + j] = D[163][j];}\nD[164] = \"��������������､､������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[164].length; ++j) if(D[164][j].charCodeAt(0) !== 0xFFFD) { e[D[164][j]] = 41984 + j; d[41984 + j] = D[164][j];}\nD[165] = \"��������������･･������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[165].length; ++j) if(D[165][j].charCodeAt(0) !== 0xFFFD) { e[D[165][j]] = 42240 + j; d[42240 + j] = D[165][j];}\nD[166] = \"��������������ｦｦ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[166].length; ++j) if(D[166][j].charCodeAt(0) !== 0xFFFD) { e[D[166][j]] = 42496 + j; d[42496 + j] = D[166][j];}\nD[167] = \"��������������ｧｧ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[167].length; ++j) if(D[167][j].charCodeAt(0) !== 0xFFFD) { e[D[167][j]] = 42752 + j; d[42752 + j] = D[167][j];}\nD[168] = \"��������������ｨｨ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[168].length; ++j) if(D[168][j].charCodeAt(0) !== 0xFFFD) { e[D[168][j]] = 43008 + j; d[43008 + j] = D[168][j];}\nD[169] = \"��������������ｩｩ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[169].length; ++j) if(D[169][j].charCodeAt(0) !== 0xFFFD) { e[D[169][j]] = 43264 + j; d[43264 + j] = D[169][j];}\nD[170] = \"��������������ｪｪ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[170].length; ++j) if(D[170][j].charCodeAt(0) !== 0xFFFD) { e[D[170][j]] = 43520 + j; d[43520 + j] = D[170][j];}\nD[171] = \"��������������ｫｫ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[171].length; ++j) if(D[171][j].charCodeAt(0) !== 0xFFFD) { e[D[171][j]] = 43776 + j; d[43776 + j] = D[171][j];}\nD[172] = \"��������������ｬｬ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[172].length; ++j) if(D[172][j].charCodeAt(0) !== 0xFFFD) { e[D[172][j]] = 44032 + j; d[44032 + j] = D[172][j];}\nD[173] = \"��������������ｭｭ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[173].length; ++j) if(D[173][j].charCodeAt(0) !== 0xFFFD) { e[D[173][j]] = 44288 + j; d[44288 + j] = D[173][j];}\nD[174] = \"��������������ｮｮ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[174].length; ++j) if(D[174][j].charCodeAt(0) !== 0xFFFD) { e[D[174][j]] = 44544 + j; d[44544 + j] = D[174][j];}\nD[175] = \"��������������ｯｯ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[175].length; ++j) if(D[175][j].charCodeAt(0) !== 0xFFFD) { e[D[175][j]] = 44800 + j; d[44800 + j] = D[175][j];}\nD[176] = \"��������������ｰｰ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[176].length; ++j) if(D[176][j].charCodeAt(0) !== 0xFFFD) { e[D[176][j]] = 45056 + j; d[45056 + j] = D[176][j];}\nD[177] = \"��������������ｱｱ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[177].length; ++j) if(D[177][j].charCodeAt(0) !== 0xFFFD) { e[D[177][j]] = 45312 + j; d[45312 + j] = D[177][j];}\nD[178] = \"��������������ｲｲ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[178].length; ++j) if(D[178][j].charCodeAt(0) !== 0xFFFD) { e[D[178][j]] = 45568 + j; d[45568 + j] = D[178][j];}\nD[179] = \"��������������ｳｳ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[179].length; ++j) if(D[179][j].charCodeAt(0) !== 0xFFFD) { e[D[179][j]] = 45824 + j; d[45824 + j] = D[179][j];}\nD[180] = \"��������������ｴｴ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[180].length; ++j) if(D[180][j].charCodeAt(0) !== 0xFFFD) { e[D[180][j]] = 46080 + j; d[46080 + j] = D[180][j];}\nD[181] = \"��������������ｵｵ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[181].length; ++j) if(D[181][j].charCodeAt(0) !== 0xFFFD) { e[D[181][j]] = 46336 + j; d[46336 + j] = D[181][j];}\nD[182] = \"��������������ｶｶ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[182].length; ++j) if(D[182][j].charCodeAt(0) !== 0xFFFD) { e[D[182][j]] = 46592 + j; d[46592 + j] = D[182][j];}\nD[183] = \"��������������ｷｷ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[183].length; ++j) if(D[183][j].charCodeAt(0) !== 0xFFFD) { e[D[183][j]] = 46848 + j; d[46848 + j] = D[183][j];}\nD[184] = \"��������������ｸｸ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[184].length; ++j) if(D[184][j].charCodeAt(0) !== 0xFFFD) { e[D[184][j]] = 47104 + j; d[47104 + j] = D[184][j];}\nD[185] = \"��������������ｹｹ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[185].length; ++j) if(D[185][j].charCodeAt(0) !== 0xFFFD) { e[D[185][j]] = 47360 + j; d[47360 + j] = D[185][j];}\nD[186] = \"��������������ｺｺ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[186].length; ++j) if(D[186][j].charCodeAt(0) !== 0xFFFD) { e[D[186][j]] = 47616 + j; d[47616 + j] = D[186][j];}\nD[187] = \"��������������ｻｻ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[187].length; ++j) if(D[187][j].charCodeAt(0) !== 0xFFFD) { e[D[187][j]] = 47872 + j; d[47872 + j] = D[187][j];}\nD[188] = \"��������������ｼｼ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[188].length; ++j) if(D[188][j].charCodeAt(0) !== 0xFFFD) { e[D[188][j]] = 48128 + j; d[48128 + j] = D[188][j];}\nD[189] = \"��������������ｽｽ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[189].length; ++j) if(D[189][j].charCodeAt(0) !== 0xFFFD) { e[D[189][j]] = 48384 + j; d[48384 + j] = D[189][j];}\nD[190] = \"��������������ｾｾ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[190].length; ++j) if(D[190][j].charCodeAt(0) !== 0xFFFD) { e[D[190][j]] = 48640 + j; d[48640 + j] = D[190][j];}\nD[191] = \"��������������ｿｿ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[191].length; ++j) if(D[191][j].charCodeAt(0) !== 0xFFFD) { e[D[191][j]] = 48896 + j; d[48896 + j] = D[191][j];}\nD[192] = \"��������������ﾀﾀ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[192].length; ++j) if(D[192][j].charCodeAt(0) !== 0xFFFD) { e[D[192][j]] = 49152 + j; d[49152 + j] = D[192][j];}\nD[193] = \"��������������ﾁﾁ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[193].length; ++j) if(D[193][j].charCodeAt(0) !== 0xFFFD) { e[D[193][j]] = 49408 + j; d[49408 + j] = D[193][j];}\nD[194] = \"��������������ﾂﾂ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[194].length; ++j) if(D[194][j].charCodeAt(0) !== 0xFFFD) { e[D[194][j]] = 49664 + j; d[49664 + j] = D[194][j];}\nD[195] = \"��������������ﾃﾃ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[195].length; ++j) if(D[195][j].charCodeAt(0) !== 0xFFFD) { e[D[195][j]] = 49920 + j; d[49920 + j] = D[195][j];}\nD[196] = \"��������������ﾄﾄ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[196].length; ++j) if(D[196][j].charCodeAt(0) !== 0xFFFD) { e[D[196][j]] = 50176 + j; d[50176 + j] = D[196][j];}\nD[197] = \"��������������ﾅﾅ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[197].length; ++j) if(D[197][j].charCodeAt(0) !== 0xFFFD) { e[D[197][j]] = 50432 + j; d[50432 + j] = D[197][j];}\nD[198] = \"��������������ﾆﾆ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[198].length; ++j) if(D[198][j].charCodeAt(0) !== 0xFFFD) { e[D[198][j]] = 50688 + j; d[50688 + j] = D[198][j];}\nD[199] = \"��������������ﾇﾇ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[199].length; ++j) if(D[199][j].charCodeAt(0) !== 0xFFFD) { e[D[199][j]] = 50944 + j; d[50944 + j] = D[199][j];}\nD[200] = \"��������������ﾈﾈ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[200].length; ++j) if(D[200][j].charCodeAt(0) !== 0xFFFD) { e[D[200][j]] = 51200 + j; d[51200 + j] = D[200][j];}\nD[201] = \"��������������ﾉﾉ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[201].length; ++j) if(D[201][j].charCodeAt(0) !== 0xFFFD) { e[D[201][j]] = 51456 + j; d[51456 + j] = D[201][j];}\nD[202] = \"��������������ﾊﾊ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[202].length; ++j) if(D[202][j].charCodeAt(0) !== 0xFFFD) { e[D[202][j]] = 51712 + j; d[51712 + j] = D[202][j];}\nD[203] = \"��������������ﾋﾋ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[203].length; ++j) if(D[203][j].charCodeAt(0) !== 0xFFFD) { e[D[203][j]] = 51968 + j; d[51968 + j] = D[203][j];}\nD[204] = \"��������������ﾌﾌ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[204].length; ++j) if(D[204][j].charCodeAt(0) !== 0xFFFD) { e[D[204][j]] = 52224 + j; d[52224 + j] = D[204][j];}\nD[205] = \"��������������ﾍﾍ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[205].length; ++j) if(D[205][j].charCodeAt(0) !== 0xFFFD) { e[D[205][j]] = 52480 + j; d[52480 + j] = D[205][j];}\nD[206] = \"��������������ﾎﾎ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[206].length; ++j) if(D[206][j].charCodeAt(0) !== 0xFFFD) { e[D[206][j]] = 52736 + j; d[52736 + j] = D[206][j];}\nD[207] = \"��������������ﾏﾏ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[207].length; ++j) if(D[207][j].charCodeAt(0) !== 0xFFFD) { e[D[207][j]] = 52992 + j; d[52992 + j] = D[207][j];}\nD[208] = \"��������������ﾐﾐ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[208].length; ++j) if(D[208][j].charCodeAt(0) !== 0xFFFD) { e[D[208][j]] = 53248 + j; d[53248 + j] = D[208][j];}\nD[209] = \"��������������ﾑﾑ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[209].length; ++j) if(D[209][j].charCodeAt(0) !== 0xFFFD) { e[D[209][j]] = 53504 + j; d[53504 + j] = D[209][j];}\nD[210] = \"��������������ﾒﾒ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[210].length; ++j) if(D[210][j].charCodeAt(0) !== 0xFFFD) { e[D[210][j]] = 53760 + j; d[53760 + j] = D[210][j];}\nD[211] = \"��������������ﾓﾓ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[211].length; ++j) if(D[211][j].charCodeAt(0) !== 0xFFFD) { e[D[211][j]] = 54016 + j; d[54016 + j] = D[211][j];}\nD[212] = \"��������������ﾔﾔ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[212].length; ++j) if(D[212][j].charCodeAt(0) !== 0xFFFD) { e[D[212][j]] = 54272 + j; d[54272 + j] = D[212][j];}\nD[213] = \"��������������ﾕﾕ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[213].length; ++j) if(D[213][j].charCodeAt(0) !== 0xFFFD) { e[D[213][j]] = 54528 + j; d[54528 + j] = D[213][j];}\nD[214] = \"��������������ﾖﾖ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[214].length; ++j) if(D[214][j].charCodeAt(0) !== 0xFFFD) { e[D[214][j]] = 54784 + j; d[54784 + j] = D[214][j];}\nD[215] = \"��������������ﾗﾗ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[215].length; ++j) if(D[215][j].charCodeAt(0) !== 0xFFFD) { e[D[215][j]] = 55040 + j; d[55040 + j] = D[215][j];}\nD[216] = \"��������������ﾘﾘ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[216].length; ++j) if(D[216][j].charCodeAt(0) !== 0xFFFD) { e[D[216][j]] = 55296 + j; d[55296 + j] = D[216][j];}\nD[217] = \"��������������ﾙﾙ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[217].length; ++j) if(D[217][j].charCodeAt(0) !== 0xFFFD) { e[D[217][j]] = 55552 + j; d[55552 + j] = D[217][j];}\nD[218] = \"��������������ﾚﾚ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[218].length; ++j) if(D[218][j].charCodeAt(0) !== 0xFFFD) { e[D[218][j]] = 55808 + j; d[55808 + j] = D[218][j];}\nD[219] = \"��������������ﾛﾛ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[219].length; ++j) if(D[219][j].charCodeAt(0) !== 0xFFFD) { e[D[219][j]] = 56064 + j; d[56064 + j] = D[219][j];}\nD[220] = \"��������������ﾜﾜ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[220].length; ++j) if(D[220][j].charCodeAt(0) !== 0xFFFD) { e[D[220][j]] = 56320 + j; d[56320 + j] = D[220][j];}\nD[221] = \"��������������ﾝﾝ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[221].length; ++j) if(D[221][j].charCodeAt(0) !== 0xFFFD) { e[D[221][j]] = 56576 + j; d[56576 + j] = D[221][j];}\nD[222] = \"��������������ﾞﾞ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[222].length; ++j) if(D[222][j].charCodeAt(0) !== 0xFFFD) { e[D[222][j]] = 56832 + j; d[56832 + j] = D[222][j];}\nD[223] = \"��������������ﾟﾟ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[223].length; ++j) if(D[223][j].charCodeAt(0) !== 0xFFFD) { e[D[223][j]] = 57088 + j; d[57088 + j] = D[223][j];}\nD[253] = \"��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[253].length; ++j) if(D[253][j].charCodeAt(0) !== 0xFFFD) { e[D[253][j]] = 64768 + j; d[64768 + j] = D[253][j];}\nD[254] = \"��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[254].length; ++j) if(D[254][j].charCodeAt(0) !== 0xFFFD) { e[D[254][j]] = 65024 + j; d[65024 + j] = D[254][j];}\nD[255] = \"��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[255].length; ++j) if(D[255][j].charCodeAt(0) !== 0xFFFD) { e[D[255][j]] = 65280 + j; d[65280 + j] = D[255][j];}\nreturn {\"enc\": e, \"dec\": d }; })();\ncptable[50225] = (function(){ var d = [], e = {}, D = [], j;\nD[0] = \"\\u0000\\u0001\\u0002\\u0003\\u0004\\u0005\\u0006\\u0007\\b\\t\\n\\u000b\\f\\r\\u0000\\u0000\\u0010\\u0011\\u0012\\u0013\\u0014\\u0015\\u0016\\u0017\\u0018\\u0019\\u001a\\u001b\\u001c\\u001d\\u001e\\u001f !\\\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~��������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[0].length; ++j) if(D[0][j].charCodeAt(0) !== 0xFFFD) { e[D[0][j]] = 0 + j; d[0 + j] = D[0][j];}\nD[1] = \"��������������\\u0001\\u0001������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[1].length; ++j) if(D[1][j].charCodeAt(0) !== 0xFFFD) { e[D[1][j]] = 256 + j; d[256 + j] = D[1][j];}\nD[2] = \"��������������\\u0002\\u0002������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[2].length; ++j) if(D[2][j].charCodeAt(0) !== 0xFFFD) { e[D[2][j]] = 512 + j; d[512 + j] = D[2][j];}\nD[3] = \"��������������\\u0003\\u0003������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[3].length; ++j) if(D[3][j].charCodeAt(0) !== 0xFFFD) { e[D[3][j]] = 768 + j; d[768 + j] = D[3][j];}\nD[4] = \"��������������\\u0004\\u0004������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[4].length; ++j) if(D[4][j].charCodeAt(0) !== 0xFFFD) { e[D[4][j]] = 1024 + j; d[1024 + j] = D[4][j];}\nD[5] = \"��������������\\u0005\\u0005������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[5].length; ++j) if(D[5][j].charCodeAt(0) !== 0xFFFD) { e[D[5][j]] = 1280 + j; d[1280 + j] = D[5][j];}\nD[6] = \"��������������\\u0006\\u0006������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[6].length; ++j) if(D[6][j].charCodeAt(0) !== 0xFFFD) { e[D[6][j]] = 1536 + j; d[1536 + j] = D[6][j];}\nD[7] = \"��������������\\u0007\\u0007������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[7].length; ++j) if(D[7][j].charCodeAt(0) !== 0xFFFD) { e[D[7][j]] = 1792 + j; d[1792 + j] = D[7][j];}\nD[8] = \"��������������\\b\\b������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[8].length; ++j) if(D[8][j].charCodeAt(0) !== 0xFFFD) { e[D[8][j]] = 2048 + j; d[2048 + j] = D[8][j];}\nD[9] = \"��������������\\t\\t������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[9].length; ++j) if(D[9][j].charCodeAt(0) !== 0xFFFD) { e[D[9][j]] = 2304 + j; d[2304 + j] = D[9][j];}\nD[10] = \"��������������\\n\\n������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[10].length; ++j) if(D[10][j].charCodeAt(0) !== 0xFFFD) { e[D[10][j]] = 2560 + j; d[2560 + j] = D[10][j];}\nD[11] = \"��������������\\u000b\\u000b������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[11].length; ++j) if(D[11][j].charCodeAt(0) !== 0xFFFD) { e[D[11][j]] = 2816 + j; d[2816 + j] = D[11][j];}\nD[12] = \"��������������\\f\\f������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[12].length; ++j) if(D[12][j].charCodeAt(0) !== 0xFFFD) { e[D[12][j]] = 3072 + j; d[3072 + j] = D[12][j];}\nD[13] = \"��������������\\r\\r������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[13].length; ++j) if(D[13][j].charCodeAt(0) !== 0xFFFD) { e[D[13][j]] = 3328 + j; d[3328 + j] = D[13][j];}\nD[14] = \"���������\\t\\n���\\r\\r���������������� �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[14].length; ++j) if(D[14][j].charCodeAt(0) !== 0xFFFD) { e[D[14][j]] = 3584 + j; d[3584 + j] = D[14][j];}\nD[15] = \"�\\u0001\\u0002\\u0003\\u0004\\u0005\\u0006\\u0007\\b\\t\\n\\u000b\\f\\r\\r\\r\\u0010\\u0011\\u0012\\u0013\\u0014\\u0015\\u0016\\u0017\\u0018\\u0019\\u001a\\u001b\\u001c\\u001d\\u001e\\u001f !\\\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~��������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[15].length; ++j) if(D[15][j].charCodeAt(0) !== 0xFFFD) { e[D[15][j]] = 3840 + j; d[3840 + j] = D[15][j];}\nD[16] = \"��������������\\u0010\\u0010������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[16].length; ++j) if(D[16][j].charCodeAt(0) !== 0xFFFD) { e[D[16][j]] = 4096 + j; d[4096 + j] = D[16][j];}\nD[17] = \"��������������\\u0011\\u0011������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[17].length; ++j) if(D[17][j].charCodeAt(0) !== 0xFFFD) { e[D[17][j]] = 4352 + j; d[4352 + j] = D[17][j];}\nD[18] = \"��������������\\u0012\\u0012������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[18].length; ++j) if(D[18][j].charCodeAt(0) !== 0xFFFD) { e[D[18][j]] = 4608 + j; d[4608 + j] = D[18][j];}\nD[19] = \"��������������\\u0013\\u0013������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[19].length; ++j) if(D[19][j].charCodeAt(0) !== 0xFFFD) { e[D[19][j]] = 4864 + j; d[4864 + j] = D[19][j];}\nD[20] = \"��������������\\u0014\\u0014������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[20].length; ++j) if(D[20][j].charCodeAt(0) !== 0xFFFD) { e[D[20][j]] = 5120 + j; d[5120 + j] = D[20][j];}\nD[21] = \"��������������\\u0015\\u0015������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[21].length; ++j) if(D[21][j].charCodeAt(0) !== 0xFFFD) { e[D[21][j]] = 5376 + j; d[5376 + j] = D[21][j];}\nD[22] = \"��������������\\u0016\\u0016������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[22].length; ++j) if(D[22][j].charCodeAt(0) !== 0xFFFD) { e[D[22][j]] = 5632 + j; d[5632 + j] = D[22][j];}\nD[23] = \"��������������\\u0017\\u0017������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[23].length; ++j) if(D[23][j].charCodeAt(0) !== 0xFFFD) { e[D[23][j]] = 5888 + j; d[5888 + j] = D[23][j];}\nD[24] = \"��������������\\u0018\\u0018������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[24].length; ++j) if(D[24][j].charCodeAt(0) !== 0xFFFD) { e[D[24][j]] = 6144 + j; d[6144 + j] = D[24][j];}\nD[25] = \"��������������\\u0019\\u0019������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[25].length; ++j) if(D[25][j].charCodeAt(0) !== 0xFFFD) { e[D[25][j]] = 6400 + j; d[6400 + j] = D[25][j];}\nD[26] = \"��������������\\u001a\\u001a������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[26].length; ++j) if(D[26][j].charCodeAt(0) !== 0xFFFD) { e[D[26][j]] = 6656 + j; d[6656 + j] = D[26][j];}\nD[27] = \"��������������\\u001b\\u001b������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[27].length; ++j) if(D[27][j].charCodeAt(0) !== 0xFFFD) { e[D[27][j]] = 6912 + j; d[6912 + j] = D[27][j];}\nD[28] = \"��������������\\u001c\\u001c������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[28].length; ++j) if(D[28][j].charCodeAt(0) !== 0xFFFD) { e[D[28][j]] = 7168 + j; d[7168 + j] = D[28][j];}\nD[29] = \"��������������\\u001d\\u001d������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[29].length; ++j) if(D[29][j].charCodeAt(0) !== 0xFFFD) { e[D[29][j]] = 7424 + j; d[7424 + j] = D[29][j];}\nD[30] = \"��������������\\u001e\\u001e������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[30].length; ++j) if(D[30][j].charCodeAt(0) !== 0xFFFD) { e[D[30][j]] = 7680 + j; d[7680 + j] = D[30][j];}\nD[31] = \"��������������\\u001f\\u001f������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[31].length; ++j) if(D[31][j].charCodeAt(0) !== 0xFFFD) { e[D[31][j]] = 7936 + j; d[7936 + j] = D[31][j];}\nD[32] = \"��������������  ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[32].length; ++j) if(D[32][j].charCodeAt(0) !== 0xFFFD) { e[D[32][j]] = 8192 + j; d[8192 + j] = D[32][j];}\nD[33] = \"��������������!!������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[33].length; ++j) if(D[33][j].charCodeAt(0) !== 0xFFFD) { e[D[33][j]] = 8448 + j; d[8448 + j] = D[33][j];}\nD[34] = \"��������������\\\"\\\"������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[34].length; ++j) if(D[34][j].charCodeAt(0) !== 0xFFFD) { e[D[34][j]] = 8704 + j; d[8704 + j] = D[34][j];}\nD[35] = \"��������������##������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[35].length; ++j) if(D[35][j].charCodeAt(0) !== 0xFFFD) { e[D[35][j]] = 8960 + j; d[8960 + j] = D[35][j];}\nD[36] = \"��������������$$������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[36].length; ++j) if(D[36][j].charCodeAt(0) !== 0xFFFD) { e[D[36][j]] = 9216 + j; d[9216 + j] = D[36][j];}\nD[37] = \"��������������%%������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[37].length; ++j) if(D[37][j].charCodeAt(0) !== 0xFFFD) { e[D[37][j]] = 9472 + j; d[9472 + j] = D[37][j];}\nD[38] = \"��������������&&������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[38].length; ++j) if(D[38][j].charCodeAt(0) !== 0xFFFD) { e[D[38][j]] = 9728 + j; d[9728 + j] = D[38][j];}\nD[39] = \"��������������''������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[39].length; ++j) if(D[39][j].charCodeAt(0) !== 0xFFFD) { e[D[39][j]] = 9984 + j; d[9984 + j] = D[39][j];}\nD[40] = \"��������������((������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[40].length; ++j) if(D[40][j].charCodeAt(0) !== 0xFFFD) { e[D[40][j]] = 10240 + j; d[10240 + j] = D[40][j];}\nD[41] = \"��������������))������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[41].length; ++j) if(D[41][j].charCodeAt(0) !== 0xFFFD) { e[D[41][j]] = 10496 + j; d[10496 + j] = D[41][j];}\nD[42] = \"��������������**������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[42].length; ++j) if(D[42][j].charCodeAt(0) !== 0xFFFD) { e[D[42][j]] = 10752 + j; d[10752 + j] = D[42][j];}\nD[43] = \"��������������++������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[43].length; ++j) if(D[43][j].charCodeAt(0) !== 0xFFFD) { e[D[43][j]] = 11008 + j; d[11008 + j] = D[43][j];}\nD[44] = \"��������������,,������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[44].length; ++j) if(D[44][j].charCodeAt(0) !== 0xFFFD) { e[D[44][j]] = 11264 + j; d[11264 + j] = D[44][j];}\nD[45] = \"��������������--������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[45].length; ++j) if(D[45][j].charCodeAt(0) !== 0xFFFD) { e[D[45][j]] = 11520 + j; d[11520 + j] = D[45][j];}\nD[46] = \"��������������..������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[46].length; ++j) if(D[46][j].charCodeAt(0) !== 0xFFFD) { e[D[46][j]] = 11776 + j; d[11776 + j] = D[46][j];}\nD[47] = \"��������������//������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[47].length; ++j) if(D[47][j].charCodeAt(0) !== 0xFFFD) { e[D[47][j]] = 12032 + j; d[12032 + j] = D[47][j];}\nD[48] = \"��������������00������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[48].length; ++j) if(D[48][j].charCodeAt(0) !== 0xFFFD) { e[D[48][j]] = 12288 + j; d[12288 + j] = D[48][j];}\nD[49] = \"��������������11������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[49].length; ++j) if(D[49][j].charCodeAt(0) !== 0xFFFD) { e[D[49][j]] = 12544 + j; d[12544 + j] = D[49][j];}\nD[50] = \"��������������22������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[50].length; ++j) if(D[50][j].charCodeAt(0) !== 0xFFFD) { e[D[50][j]] = 12800 + j; d[12800 + j] = D[50][j];}\nD[51] = \"��������������33������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[51].length; ++j) if(D[51][j].charCodeAt(0) !== 0xFFFD) { e[D[51][j]] = 13056 + j; d[13056 + j] = D[51][j];}\nD[52] = \"��������������44������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[52].length; ++j) if(D[52][j].charCodeAt(0) !== 0xFFFD) { e[D[52][j]] = 13312 + j; d[13312 + j] = D[52][j];}\nD[53] = \"��������������55������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[53].length; ++j) if(D[53][j].charCodeAt(0) !== 0xFFFD) { e[D[53][j]] = 13568 + j; d[13568 + j] = D[53][j];}\nD[54] = \"��������������66������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[54].length; ++j) if(D[54][j].charCodeAt(0) !== 0xFFFD) { e[D[54][j]] = 13824 + j; d[13824 + j] = D[54][j];}\nD[55] = \"��������������77������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[55].length; ++j) if(D[55][j].charCodeAt(0) !== 0xFFFD) { e[D[55][j]] = 14080 + j; d[14080 + j] = D[55][j];}\nD[56] = \"��������������88������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[56].length; ++j) if(D[56][j].charCodeAt(0) !== 0xFFFD) { e[D[56][j]] = 14336 + j; d[14336 + j] = D[56][j];}\nD[57] = \"��������������99������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[57].length; ++j) if(D[57][j].charCodeAt(0) !== 0xFFFD) { e[D[57][j]] = 14592 + j; d[14592 + j] = D[57][j];}\nD[58] = \"��������������::������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[58].length; ++j) if(D[58][j].charCodeAt(0) !== 0xFFFD) { e[D[58][j]] = 14848 + j; d[14848 + j] = D[58][j];}\nD[59] = \"��������������;;������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[59].length; ++j) if(D[59][j].charCodeAt(0) !== 0xFFFD) { e[D[59][j]] = 15104 + j; d[15104 + j] = D[59][j];}\nD[60] = \"��������������<<������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[60].length; ++j) if(D[60][j].charCodeAt(0) !== 0xFFFD) { e[D[60][j]] = 15360 + j; d[15360 + j] = D[60][j];}\nD[61] = \"��������������==������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[61].length; ++j) if(D[61][j].charCodeAt(0) !== 0xFFFD) { e[D[61][j]] = 15616 + j; d[15616 + j] = D[61][j];}\nD[62] = \"��������������>>������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[62].length; ++j) if(D[62][j].charCodeAt(0) !== 0xFFFD) { e[D[62][j]] = 15872 + j; d[15872 + j] = D[62][j];}\nD[63] = \"��������������??������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[63].length; ++j) if(D[63][j].charCodeAt(0) !== 0xFFFD) { e[D[63][j]] = 16128 + j; d[16128 + j] = D[63][j];}\nD[64] = \"��������������@@������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[64].length; ++j) if(D[64][j].charCodeAt(0) !== 0xFFFD) { e[D[64][j]] = 16384 + j; d[16384 + j] = D[64][j];}\nD[65] = \"��������������AA������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[65].length; ++j) if(D[65][j].charCodeAt(0) !== 0xFFFD) { e[D[65][j]] = 16640 + j; d[16640 + j] = D[65][j];}\nD[66] = \"��������������BB������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[66].length; ++j) if(D[66][j].charCodeAt(0) !== 0xFFFD) { e[D[66][j]] = 16896 + j; d[16896 + j] = D[66][j];}\nD[67] = \"��������������CC������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[67].length; ++j) if(D[67][j].charCodeAt(0) !== 0xFFFD) { e[D[67][j]] = 17152 + j; d[17152 + j] = D[67][j];}\nD[68] = \"��������������DD������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[68].length; ++j) if(D[68][j].charCodeAt(0) !== 0xFFFD) { e[D[68][j]] = 17408 + j; d[17408 + j] = D[68][j];}\nD[69] = \"��������������EE������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[69].length; ++j) if(D[69][j].charCodeAt(0) !== 0xFFFD) { e[D[69][j]] = 17664 + j; d[17664 + j] = D[69][j];}\nD[70] = \"��������������FF������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[70].length; ++j) if(D[70][j].charCodeAt(0) !== 0xFFFD) { e[D[70][j]] = 17920 + j; d[17920 + j] = D[70][j];}\nD[71] = \"��������������GG������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[71].length; ++j) if(D[71][j].charCodeAt(0) !== 0xFFFD) { e[D[71][j]] = 18176 + j; d[18176 + j] = D[71][j];}\nD[72] = \"��������������HH������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[72].length; ++j) if(D[72][j].charCodeAt(0) !== 0xFFFD) { e[D[72][j]] = 18432 + j; d[18432 + j] = D[72][j];}\nD[73] = \"��������������II������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[73].length; ++j) if(D[73][j].charCodeAt(0) !== 0xFFFD) { e[D[73][j]] = 18688 + j; d[18688 + j] = D[73][j];}\nD[74] = \"��������������JJ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[74].length; ++j) if(D[74][j].charCodeAt(0) !== 0xFFFD) { e[D[74][j]] = 18944 + j; d[18944 + j] = D[74][j];}\nD[75] = \"��������������KK������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[75].length; ++j) if(D[75][j].charCodeAt(0) !== 0xFFFD) { e[D[75][j]] = 19200 + j; d[19200 + j] = D[75][j];}\nD[76] = \"��������������LL������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[76].length; ++j) if(D[76][j].charCodeAt(0) !== 0xFFFD) { e[D[76][j]] = 19456 + j; d[19456 + j] = D[76][j];}\nD[77] = \"��������������MM������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[77].length; ++j) if(D[77][j].charCodeAt(0) !== 0xFFFD) { e[D[77][j]] = 19712 + j; d[19712 + j] = D[77][j];}\nD[78] = \"��������������NN������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[78].length; ++j) if(D[78][j].charCodeAt(0) !== 0xFFFD) { e[D[78][j]] = 19968 + j; d[19968 + j] = D[78][j];}\nD[79] = \"��������������OO������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[79].length; ++j) if(D[79][j].charCodeAt(0) !== 0xFFFD) { e[D[79][j]] = 20224 + j; d[20224 + j] = D[79][j];}\nD[80] = \"��������������PP������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[80].length; ++j) if(D[80][j].charCodeAt(0) !== 0xFFFD) { e[D[80][j]] = 20480 + j; d[20480 + j] = D[80][j];}\nD[81] = \"��������������QQ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[81].length; ++j) if(D[81][j].charCodeAt(0) !== 0xFFFD) { e[D[81][j]] = 20736 + j; d[20736 + j] = D[81][j];}\nD[82] = \"��������������RR������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[82].length; ++j) if(D[82][j].charCodeAt(0) !== 0xFFFD) { e[D[82][j]] = 20992 + j; d[20992 + j] = D[82][j];}\nD[83] = \"��������������SS������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[83].length; ++j) if(D[83][j].charCodeAt(0) !== 0xFFFD) { e[D[83][j]] = 21248 + j; d[21248 + j] = D[83][j];}\nD[84] = \"��������������TT������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[84].length; ++j) if(D[84][j].charCodeAt(0) !== 0xFFFD) { e[D[84][j]] = 21504 + j; d[21504 + j] = D[84][j];}\nD[85] = \"��������������UU������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[85].length; ++j) if(D[85][j].charCodeAt(0) !== 0xFFFD) { e[D[85][j]] = 21760 + j; d[21760 + j] = D[85][j];}\nD[86] = \"��������������VV������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[86].length; ++j) if(D[86][j].charCodeAt(0) !== 0xFFFD) { e[D[86][j]] = 22016 + j; d[22016 + j] = D[86][j];}\nD[87] = \"��������������WW������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[87].length; ++j) if(D[87][j].charCodeAt(0) !== 0xFFFD) { e[D[87][j]] = 22272 + j; d[22272 + j] = D[87][j];}\nD[88] = \"��������������XX������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[88].length; ++j) if(D[88][j].charCodeAt(0) !== 0xFFFD) { e[D[88][j]] = 22528 + j; d[22528 + j] = D[88][j];}\nD[89] = \"��������������YY������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[89].length; ++j) if(D[89][j].charCodeAt(0) !== 0xFFFD) { e[D[89][j]] = 22784 + j; d[22784 + j] = D[89][j];}\nD[90] = \"��������������ZZ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[90].length; ++j) if(D[90][j].charCodeAt(0) !== 0xFFFD) { e[D[90][j]] = 23040 + j; d[23040 + j] = D[90][j];}\nD[91] = \"��������������[[������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[91].length; ++j) if(D[91][j].charCodeAt(0) !== 0xFFFD) { e[D[91][j]] = 23296 + j; d[23296 + j] = D[91][j];}\nD[92] = \"��������������\\\\\\\\������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[92].length; ++j) if(D[92][j].charCodeAt(0) !== 0xFFFD) { e[D[92][j]] = 23552 + j; d[23552 + j] = D[92][j];}\nD[93] = \"��������������]]������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[93].length; ++j) if(D[93][j].charCodeAt(0) !== 0xFFFD) { e[D[93][j]] = 23808 + j; d[23808 + j] = D[93][j];}\nD[94] = \"��������������^^������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[94].length; ++j) if(D[94][j].charCodeAt(0) !== 0xFFFD) { e[D[94][j]] = 24064 + j; d[24064 + j] = D[94][j];}\nD[95] = \"��������������__������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[95].length; ++j) if(D[95][j].charCodeAt(0) !== 0xFFFD) { e[D[95][j]] = 24320 + j; d[24320 + j] = D[95][j];}\nD[96] = \"��������������``������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[96].length; ++j) if(D[96][j].charCodeAt(0) !== 0xFFFD) { e[D[96][j]] = 24576 + j; d[24576 + j] = D[96][j];}\nD[97] = \"��������������aa������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[97].length; ++j) if(D[97][j].charCodeAt(0) !== 0xFFFD) { e[D[97][j]] = 24832 + j; d[24832 + j] = D[97][j];}\nD[98] = \"��������������bb������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[98].length; ++j) if(D[98][j].charCodeAt(0) !== 0xFFFD) { e[D[98][j]] = 25088 + j; d[25088 + j] = D[98][j];}\nD[99] = \"��������������cc������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[99].length; ++j) if(D[99][j].charCodeAt(0) !== 0xFFFD) { e[D[99][j]] = 25344 + j; d[25344 + j] = D[99][j];}\nD[100] = \"��������������dd������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[100].length; ++j) if(D[100][j].charCodeAt(0) !== 0xFFFD) { e[D[100][j]] = 25600 + j; d[25600 + j] = D[100][j];}\nD[101] = \"��������������ee������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[101].length; ++j) if(D[101][j].charCodeAt(0) !== 0xFFFD) { e[D[101][j]] = 25856 + j; d[25856 + j] = D[101][j];}\nD[102] = \"��������������ff������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[102].length; ++j) if(D[102][j].charCodeAt(0) !== 0xFFFD) { e[D[102][j]] = 26112 + j; d[26112 + j] = D[102][j];}\nD[103] = \"��������������gg������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[103].length; ++j) if(D[103][j].charCodeAt(0) !== 0xFFFD) { e[D[103][j]] = 26368 + j; d[26368 + j] = D[103][j];}\nD[104] = \"��������������hh������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[104].length; ++j) if(D[104][j].charCodeAt(0) !== 0xFFFD) { e[D[104][j]] = 26624 + j; d[26624 + j] = D[104][j];}\nD[105] = \"��������������ii������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[105].length; ++j) if(D[105][j].charCodeAt(0) !== 0xFFFD) { e[D[105][j]] = 26880 + j; d[26880 + j] = D[105][j];}\nD[106] = \"��������������jj������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[106].length; ++j) if(D[106][j].charCodeAt(0) !== 0xFFFD) { e[D[106][j]] = 27136 + j; d[27136 + j] = D[106][j];}\nD[107] = \"��������������kk������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[107].length; ++j) if(D[107][j].charCodeAt(0) !== 0xFFFD) { e[D[107][j]] = 27392 + j; d[27392 + j] = D[107][j];}\nD[108] = \"��������������ll������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[108].length; ++j) if(D[108][j].charCodeAt(0) !== 0xFFFD) { e[D[108][j]] = 27648 + j; d[27648 + j] = D[108][j];}\nD[109] = \"��������������mm������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[109].length; ++j) if(D[109][j].charCodeAt(0) !== 0xFFFD) { e[D[109][j]] = 27904 + j; d[27904 + j] = D[109][j];}\nD[110] = \"��������������nn������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[110].length; ++j) if(D[110][j].charCodeAt(0) !== 0xFFFD) { e[D[110][j]] = 28160 + j; d[28160 + j] = D[110][j];}\nD[111] = \"��������������oo������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[111].length; ++j) if(D[111][j].charCodeAt(0) !== 0xFFFD) { e[D[111][j]] = 28416 + j; d[28416 + j] = D[111][j];}\nD[112] = \"��������������pp������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[112].length; ++j) if(D[112][j].charCodeAt(0) !== 0xFFFD) { e[D[112][j]] = 28672 + j; d[28672 + j] = D[112][j];}\nD[113] = \"��������������qq������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[113].length; ++j) if(D[113][j].charCodeAt(0) !== 0xFFFD) { e[D[113][j]] = 28928 + j; d[28928 + j] = D[113][j];}\nD[114] = \"��������������rr������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[114].length; ++j) if(D[114][j].charCodeAt(0) !== 0xFFFD) { e[D[114][j]] = 29184 + j; d[29184 + j] = D[114][j];}\nD[115] = \"��������������ss������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[115].length; ++j) if(D[115][j].charCodeAt(0) !== 0xFFFD) { e[D[115][j]] = 29440 + j; d[29440 + j] = D[115][j];}\nD[116] = \"��������������tt������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[116].length; ++j) if(D[116][j].charCodeAt(0) !== 0xFFFD) { e[D[116][j]] = 29696 + j; d[29696 + j] = D[116][j];}\nD[117] = \"��������������uu������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[117].length; ++j) if(D[117][j].charCodeAt(0) !== 0xFFFD) { e[D[117][j]] = 29952 + j; d[29952 + j] = D[117][j];}\nD[118] = \"��������������vv������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[118].length; ++j) if(D[118][j].charCodeAt(0) !== 0xFFFD) { e[D[118][j]] = 30208 + j; d[30208 + j] = D[118][j];}\nD[119] = \"��������������ww������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[119].length; ++j) if(D[119][j].charCodeAt(0) !== 0xFFFD) { e[D[119][j]] = 30464 + j; d[30464 + j] = D[119][j];}\nD[120] = \"��������������xx������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[120].length; ++j) if(D[120][j].charCodeAt(0) !== 0xFFFD) { e[D[120][j]] = 30720 + j; d[30720 + j] = D[120][j];}\nD[121] = \"��������������yy������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[121].length; ++j) if(D[121][j].charCodeAt(0) !== 0xFFFD) { e[D[121][j]] = 30976 + j; d[30976 + j] = D[121][j];}\nD[122] = \"��������������zz������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[122].length; ++j) if(D[122][j].charCodeAt(0) !== 0xFFFD) { e[D[122][j]] = 31232 + j; d[31232 + j] = D[122][j];}\nD[123] = \"��������������{{������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[123].length; ++j) if(D[123][j].charCodeAt(0) !== 0xFFFD) { e[D[123][j]] = 31488 + j; d[31488 + j] = D[123][j];}\nD[124] = \"��������������||������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[124].length; ++j) if(D[124][j].charCodeAt(0) !== 0xFFFD) { e[D[124][j]] = 31744 + j; d[31744 + j] = D[124][j];}\nD[125] = \"��������������}}������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[125].length; ++j) if(D[125][j].charCodeAt(0) !== 0xFFFD) { e[D[125][j]] = 32000 + j; d[32000 + j] = D[125][j];}\nD[126] = \"��������������~~������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[126].length; ++j) if(D[126][j].charCodeAt(0) !== 0xFFFD) { e[D[126][j]] = 32256 + j; d[32256 + j] = D[126][j];}\nD[127] = \"��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[127].length; ++j) if(D[127][j].charCodeAt(0) !== 0xFFFD) { e[D[127][j]] = 32512 + j; d[32512 + j] = D[127][j];}\nreturn {\"enc\": e, \"dec\": d }; })();\ncptable[50227] = (function(){ var d = [], e = {}, D = [], j;\nD[0] = \"\\u0000\\u0001\\u0002\\u0003\\u0004\\u0005\\u0006\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\u0014\\u0015\\u0016\\u0017\\u0018\\u0019\\u001a\\u001b\\u001c\\u001d\\u001e\\u001f !\\\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~€������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[0].length; ++j) if(D[0][j].charCodeAt(0) !== 0xFFFD) { e[D[0][j]] = 0 + j; d[0 + j] = D[0][j];}\nD[129] = \"����������������������������������������������������������������丂丄丅丆丏丒丗丟丠両丣並丩丮丯丱丳丵丷丼乀乁乂乄乆乊乑乕乗乚乛乢乣乤乥乧乨乪乫乬乭乮乯乲乴乵乶乷乸乹乺乻乼乽乿亀亁亂亃亄亅亇亊�亐亖亗亙亜亝亞亣亪亯亰亱亴亶亷亸亹亼亽亾仈仌仏仐仒仚仛仜仠仢仦仧仩仭仮仯仱仴仸仹仺仼仾伀伂伃伄伅伆伇伈伋伌伒伓伔伕伖伜伝伡伣伨伩伬伭伮伱伳伵伷伹伻伾伿佀佁佂佄佅佇佈佉佊佋佌佒佔佖佡佢佦佨佪佫佭佮佱佲併佷佸佹佺佽侀侁侂侅來侇侊侌侎侐侒侓侕侖侘侙侚侜侞侟価侢�\".split(\"\");\nfor(j = 0; j != D[129].length; ++j) if(D[129][j].charCodeAt(0) !== 0xFFFD) { e[D[129][j]] = 33024 + j; d[33024 + j] = D[129][j];}\nD[130] = \"����������������������������������������������������������������侤侫侭侰侱侲侳侴侶侷侸侹侺侻侼侽侾俀俁係俆俇俈俉俋俌俍俒俓俔俕俖俙俛俠俢俤俥俧俫俬俰俲俴俵俶俷俹俻俼俽俿倀倁倂倃倄倅倆倇倈倉倊�個倎倐們倓倕倖倗倛倝倞倠倢倣値倧倫倯倰倱倲倳倴倵倶倷倸倹倻倽倿偀偁偂偄偅偆偉偊偋偍偐偑偒偓偔偖偗偘偙偛偝偞偟偠偡偢偣偤偦偧偨偩偪偫偭偮偯偰偱偲偳側偵偸偹偺偼偽傁傂傃傄傆傇傉傊傋傌傎傏傐傑傒傓傔傕傖傗傘備傚傛傜傝傞傟傠傡傢傤傦傪傫傭傮傯傰傱傳傴債傶傷傸傹傼�\".split(\"\");\nfor(j = 0; j != D[130].length; ++j) if(D[130][j].charCodeAt(0) !== 0xFFFD) { e[D[130][j]] = 33280 + j; d[33280 + j] = D[130][j];}\nD[131] = \"����������������������������������������������������������������傽傾傿僀僁僂僃僄僅僆僇僈僉僊僋僌働僎僐僑僒僓僔僕僗僘僙僛僜僝僞僟僠僡僢僣僤僥僨僩僪僫僯僰僱僲僴僶僷僸價僺僼僽僾僿儀儁儂儃億儅儈�儉儊儌儍儎儏儐儑儓儔儕儖儗儘儙儚儛儜儝儞償儠儢儣儤儥儦儧儨儩優儫儬儭儮儯儰儱儲儳儴儵儶儷儸儹儺儻儼儽儾兂兇兊兌兎兏児兒兓兗兘兙兛兝兞兟兠兡兣兤兦內兩兪兯兲兺兾兿冃冄円冇冊冋冎冏冐冑冓冔冘冚冝冞冟冡冣冦冧冨冩冪冭冮冴冸冹冺冾冿凁凂凃凅凈凊凍凎凐凒凓凔凕凖凗�\".split(\"\");\nfor(j = 0; j != D[131].length; ++j) if(D[131][j].charCodeAt(0) !== 0xFFFD) { e[D[131][j]] = 33536 + j; d[33536 + j] = D[131][j];}\nD[132] = \"����������������������������������������������������������������凘凙凚凜凞凟凢凣凥処凧凨凩凪凬凮凱凲凴凷凾刄刅刉刋刌刏刐刓刔刕刜刞刟刡刢刣別刦刧刪刬刯刱刲刴刵刼刾剄剅剆則剈剉剋剎剏剒剓剕剗剘�剙剚剛剝剟剠剢剣剤剦剨剫剬剭剮剰剱剳剴創剶剷剸剹剺剻剼剾劀劃劄劅劆劇劉劊劋劌劍劎劏劑劒劔劕劖劗劘劙劚劜劤劥劦劧劮劯劰労劵劶劷劸効劺劻劼劽勀勁勂勄勅勆勈勊勌勍勎勏勑勓勔動勗務勚勛勜勝勞勠勡勢勣勥勦勧勨勩勪勫勬勭勮勯勱勲勳勴勵勶勷勸勻勼勽匁匂匃匄匇匉匊匋匌匎�\".split(\"\");\nfor(j = 0; j != D[132].length; ++j) if(D[132][j].charCodeAt(0) !== 0xFFFD) { e[D[132][j]] = 33792 + j; d[33792 + j] = D[132][j];}\nD[133] = \"����������������������������������������������������������������匑匒匓匔匘匛匜匞匟匢匤匥匧匨匩匫匬匭匯匰匱匲匳匴匵匶匷匸匼匽區卂卄卆卋卌卍卐協単卙卛卝卥卨卪卬卭卲卶卹卻卼卽卾厀厁厃厇厈厊厎厏�厐厑厒厓厔厖厗厙厛厜厞厠厡厤厧厪厫厬厭厯厰厱厲厳厴厵厷厸厹厺厼厽厾叀參叄叅叆叇収叏叐叒叓叕叚叜叝叞叡叢叧叴叺叾叿吀吂吅吇吋吔吘吙吚吜吢吤吥吪吰吳吶吷吺吽吿呁呂呄呅呇呉呌呍呎呏呑呚呝呞呟呠呡呣呥呧呩呪呫呬呭呮呯呰呴呹呺呾呿咁咃咅咇咈咉咊咍咑咓咗咘咜咞咟咠咡�\".split(\"\");\nfor(j = 0; j != D[133].length; ++j) if(D[133][j].charCodeAt(0) !== 0xFFFD) { e[D[133][j]] = 34048 + j; d[34048 + j] = D[133][j];}\nD[134] = \"����������������������������������������������������������������咢咥咮咰咲咵咶咷咹咺咼咾哃哅哊哋哖哘哛哠員哢哣哤哫哬哯哰哱哴哵哶哷哸哹哻哾唀唂唃唄唅唈唊唋唌唍唎唒唓唕唖唗唘唙唚唜唝唞唟唡唥唦�唨唩唫唭唲唴唵唶唸唹唺唻唽啀啂啅啇啈啋啌啍啎問啑啒啓啔啗啘啙啚啛啝啞啟啠啢啣啨啩啫啯啰啱啲啳啴啹啺啽啿喅喆喌喍喎喐喒喓喕喖喗喚喛喞喠喡喢喣喤喥喦喨喩喪喫喬喭單喯喰喲喴営喸喺喼喿嗀嗁嗂嗃嗆嗇嗈嗊嗋嗎嗏嗐嗕嗗嗘嗙嗚嗛嗞嗠嗢嗧嗩嗭嗮嗰嗱嗴嗶嗸嗹嗺嗻嗼嗿嘂嘃嘄嘅�\".split(\"\");\nfor(j = 0; j != D[134].length; ++j) if(D[134][j].charCodeAt(0) !== 0xFFFD) { e[D[134][j]] = 34304 + j; d[34304 + j] = D[134][j];}\nD[135] = \"����������������������������������������������������������������嘆嘇嘊嘋嘍嘐嘑嘒嘓嘔嘕嘖嘗嘙嘚嘜嘝嘠嘡嘢嘥嘦嘨嘩嘪嘫嘮嘯嘰嘳嘵嘷嘸嘺嘼嘽嘾噀噁噂噃噄噅噆噇噈噉噊噋噏噐噑噒噓噕噖噚噛噝噞噟噠噡�噣噥噦噧噭噮噯噰噲噳噴噵噷噸噹噺噽噾噿嚀嚁嚂嚃嚄嚇嚈嚉嚊嚋嚌嚍嚐嚑嚒嚔嚕嚖嚗嚘嚙嚚嚛嚜嚝嚞嚟嚠嚡嚢嚤嚥嚦嚧嚨嚩嚪嚫嚬嚭嚮嚰嚱嚲嚳嚴嚵嚶嚸嚹嚺嚻嚽嚾嚿囀囁囂囃囄囅囆囇囈囉囋囌囍囎囏囐囑囒囓囕囖囘囙囜団囥囦囧囨囩囪囬囮囯囲図囶囷囸囻囼圀圁圂圅圇國圌圍圎圏圐圑�\".split(\"\");\nfor(j = 0; j != D[135].length; ++j) if(D[135][j].charCodeAt(0) !== 0xFFFD) { e[D[135][j]] = 34560 + j; d[34560 + j] = D[135][j];}\nD[136] = \"����������������������������������������������������������������園圓圔圕圖圗團圙圚圛圝圞圠圡圢圤圥圦圧圫圱圲圴圵圶圷圸圼圽圿坁坃坄坅坆坈坉坋坒坓坔坕坖坘坙坢坣坥坧坬坮坰坱坲坴坵坸坹坺坽坾坿垀�垁垇垈垉垊垍垎垏垐垑垔垕垖垗垘垙垚垜垝垞垟垥垨垪垬垯垰垱垳垵垶垷垹垺垻垼垽垾垿埀埁埄埅埆埇埈埉埊埌埍埐埑埓埖埗埛埜埞埡埢埣埥埦埧埨埩埪埫埬埮埰埱埲埳埵埶執埻埼埾埿堁堃堄堅堈堉堊堌堎堏堐堒堓堔堖堗堘堚堛堜堝堟堢堣堥堦堧堨堩堫堬堭堮堯報堲堳場堶堷堸堹堺堻堼堽�\".split(\"\");\nfor(j = 0; j != D[136].length; ++j) if(D[136][j].charCodeAt(0) !== 0xFFFD) { e[D[136][j]] = 34816 + j; d[34816 + j] = D[136][j];}\nD[137] = \"����������������������������������������������������������������堾堿塀塁塂塃塅塆塇塈塉塊塋塎塏塐塒塓塕塖塗塙塚塛塜塝塟塠塡塢塣塤塦塧塨塩塪塭塮塯塰塱塲塳塴塵塶塷塸塹塺塻塼塽塿墂墄墆墇墈墊墋墌�墍墎墏墐墑墔墕墖増墘墛墜墝墠墡墢墣墤墥墦墧墪墫墬墭墮墯墰墱墲墳墴墵墶墷墸墹墺墻墽墾墿壀壂壃壄壆壇壈壉壊壋壌壍壎壏壐壒壓壔壖壗壘壙壚壛壜壝壞壟壠壡壢壣壥壦壧壨壩壪壭壯壱売壴壵壷壸壺壻壼壽壾壿夀夁夃夅夆夈変夊夋夌夎夐夑夒夓夗夘夛夝夞夠夡夢夣夦夨夬夰夲夳夵夶夻�\".split(\"\");\nfor(j = 0; j != D[137].length; ++j) if(D[137][j].charCodeAt(0) !== 0xFFFD) { e[D[137][j]] = 35072 + j; d[35072 + j] = D[137][j];}\nD[138] = \"����������������������������������������������������������������夽夾夿奀奃奅奆奊奌奍奐奒奓奙奛奜奝奞奟奡奣奤奦奧奨奩奪奫奬奭奮奯奰奱奲奵奷奺奻奼奾奿妀妅妉妋妌妎妏妐妑妔妕妘妚妛妜妝妟妠妡妢妦�妧妬妭妰妱妳妴妵妶妷妸妺妼妽妿姀姁姂姃姄姅姇姈姉姌姍姎姏姕姖姙姛姞姟姠姡姢姤姦姧姩姪姫姭姮姯姰姱姲姳姴姵姶姷姸姺姼姽姾娀娂娊娋娍娎娏娐娒娔娕娖娗娙娚娛娝娞娡娢娤娦娧娨娪娫娬娭娮娯娰娳娵娷娸娹娺娻娽娾娿婁婂婃婄婅婇婈婋婌婍婎婏婐婑婒婓婔婖婗婘婙婛婜婝婞婟婠�\".split(\"\");\nfor(j = 0; j != D[138].length; ++j) if(D[138][j].charCodeAt(0) !== 0xFFFD) { e[D[138][j]] = 35328 + j; d[35328 + j] = D[138][j];}\nD[139] = \"����������������������������������������������������������������婡婣婤婥婦婨婩婫婬婭婮婯婰婱婲婳婸婹婻婼婽婾媀媁媂媃媄媅媆媇媈媉媊媋媌媍媎媏媐媑媓媔媕媖媗媘媙媜媝媞媟媠媡媢媣媤媥媦媧媨媩媫媬�媭媮媯媰媱媴媶媷媹媺媻媼媽媿嫀嫃嫄嫅嫆嫇嫈嫊嫋嫍嫎嫏嫐嫑嫓嫕嫗嫙嫚嫛嫝嫞嫟嫢嫤嫥嫧嫨嫪嫬嫭嫮嫯嫰嫲嫳嫴嫵嫶嫷嫸嫹嫺嫻嫼嫽嫾嫿嬀嬁嬂嬃嬄嬅嬆嬇嬈嬊嬋嬌嬍嬎嬏嬐嬑嬒嬓嬔嬕嬘嬙嬚嬛嬜嬝嬞嬟嬠嬡嬢嬣嬤嬥嬦嬧嬨嬩嬪嬫嬬嬭嬮嬯嬰嬱嬳嬵嬶嬸嬹嬺嬻嬼嬽嬾嬿孁孂孃孄孅孆孇�\".split(\"\");\nfor(j = 0; j != D[139].length; ++j) if(D[139][j].charCodeAt(0) !== 0xFFFD) { e[D[139][j]] = 35584 + j; d[35584 + j] = D[139][j];}\nD[140] = \"����������������������������������������������������������������孈孉孊孋孌孍孎孏孒孖孞孠孡孧孨孫孭孮孯孲孴孶孷學孹孻孼孾孿宂宆宊宍宎宐宑宒宔宖実宧宨宩宬宭宮宯宱宲宷宺宻宼寀寁寃寈寉寊寋寍寎寏�寑寔寕寖寗寘寙寚寛寜寠寢寣實寧審寪寫寬寭寯寱寲寳寴寵寶寷寽対尀専尃尅將專尋尌對導尐尒尓尗尙尛尞尟尠尡尣尦尨尩尪尫尭尮尯尰尲尳尵尶尷屃屄屆屇屌屍屒屓屔屖屗屘屚屛屜屝屟屢層屧屨屩屪屫屬屭屰屲屳屴屵屶屷屸屻屼屽屾岀岃岄岅岆岇岉岊岋岎岏岒岓岕岝岞岟岠岡岤岥岦岧岨�\".split(\"\");\nfor(j = 0; j != D[140].length; ++j) if(D[140][j].charCodeAt(0) !== 0xFFFD) { e[D[140][j]] = 35840 + j; d[35840 + j] = D[140][j];}\nD[141] = \"����������������������������������������������������������������岪岮岯岰岲岴岶岹岺岻岼岾峀峂峃峅峆峇峈峉峊峌峍峎峏峐峑峓峔峕峖峗峘峚峛峜峝峞峟峠峢峣峧峩峫峬峮峯峱峲峳峴峵島峷峸峹峺峼峽峾峿崀�崁崄崅崈崉崊崋崌崍崏崐崑崒崓崕崗崘崙崚崜崝崟崠崡崢崣崥崨崪崫崬崯崰崱崲崳崵崶崷崸崹崺崻崼崿嵀嵁嵂嵃嵄嵅嵆嵈嵉嵍嵎嵏嵐嵑嵒嵓嵔嵕嵖嵗嵙嵚嵜嵞嵟嵠嵡嵢嵣嵤嵥嵦嵧嵨嵪嵭嵮嵰嵱嵲嵳嵵嵶嵷嵸嵹嵺嵻嵼嵽嵾嵿嶀嶁嶃嶄嶅嶆嶇嶈嶉嶊嶋嶌嶍嶎嶏嶐嶑嶒嶓嶔嶕嶖嶗嶘嶚嶛嶜嶞嶟嶠�\".split(\"\");\nfor(j = 0; j != D[141].length; ++j) if(D[141][j].charCodeAt(0) !== 0xFFFD) { e[D[141][j]] = 36096 + j; d[36096 + j] = D[141][j];}\nD[142] = \"����������������������������������������������������������������嶡嶢嶣嶤嶥嶦嶧嶨嶩嶪嶫嶬嶭嶮嶯嶰嶱嶲嶳嶴嶵嶶嶸嶹嶺嶻嶼嶽嶾嶿巀巁巂巃巄巆巇巈巉巊巋巌巎巏巐巑巒巓巔巕巖巗巘巙巚巜巟巠巣巤巪巬巭�巰巵巶巸巹巺巻巼巿帀帄帇帉帊帋帍帎帒帓帗帞帟帠帡帢帣帤帥帨帩帪師帬帯帰帲帳帴帵帶帹帺帾帿幀幁幃幆幇幈幉幊幋幍幎幏幐幑幒幓幖幗幘幙幚幜幝幟幠幣幤幥幦幧幨幩幪幫幬幭幮幯幰幱幵幷幹幾庁庂広庅庈庉庌庍庎庒庘庛庝庡庢庣庤庨庩庪庫庬庮庯庰庱庲庴庺庻庼庽庿廀廁廂廃廄廅�\".split(\"\");\nfor(j = 0; j != D[142].length; ++j) if(D[142][j].charCodeAt(0) !== 0xFFFD) { e[D[142][j]] = 36352 + j; d[36352 + j] = D[142][j];}\nD[143] = \"����������������������������������������������������������������廆廇廈廋廌廍廎廏廐廔廕廗廘廙廚廜廝廞廟廠廡廢廣廤廥廦廧廩廫廬廭廮廯廰廱廲廳廵廸廹廻廼廽弅弆弇弉弌弍弎弐弒弔弖弙弚弜弝弞弡弢弣弤�弨弫弬弮弰弲弳弴張弶強弸弻弽弾弿彁彂彃彄彅彆彇彈彉彊彋彌彍彎彏彑彔彙彚彛彜彞彟彠彣彥彧彨彫彮彯彲彴彵彶彸彺彽彾彿徃徆徍徎徏徑従徔徖徚徛徝從徟徠徢徣徤徥徦徧復徫徬徯徰徱徲徳徴徶徸徹徺徻徾徿忀忁忂忇忈忊忋忎忓忔忕忚忛応忞忟忢忣忥忦忨忩忬忯忰忲忳忴忶忷忹忺忼怇�\".split(\"\");\nfor(j = 0; j != D[143].length; ++j) if(D[143][j].charCodeAt(0) !== 0xFFFD) { e[D[143][j]] = 36608 + j; d[36608 + j] = D[143][j];}\nD[144] = \"����������������������������������������������������������������怈怉怋怌怐怑怓怗怘怚怞怟怢怣怤怬怭怮怰怱怲怳怴怶怷怸怹怺怽怾恀恄恅恆恇恈恉恊恌恎恏恑恓恔恖恗恘恛恜恞恟恠恡恥恦恮恱恲恴恵恷恾悀�悁悂悅悆悇悈悊悋悎悏悐悑悓悕悗悘悙悜悞悡悢悤悥悧悩悪悮悰悳悵悶悷悹悺悽悾悿惀惁惂惃惄惇惈惉惌惍惎惏惐惒惓惔惖惗惙惛惞惡惢惣惤惥惪惱惲惵惷惸惻惼惽惾惿愂愃愄愅愇愊愋愌愐愑愒愓愔愖愗愘愙愛愜愝愞愡愢愥愨愩愪愬愭愮愯愰愱愲愳愴愵愶愷愸愹愺愻愼愽愾慀慁慂慃慄慅慆�\".split(\"\");\nfor(j = 0; j != D[144].length; ++j) if(D[144][j].charCodeAt(0) !== 0xFFFD) { e[D[144][j]] = 36864 + j; d[36864 + j] = D[144][j];}\nD[145] = \"����������������������������������������������������������������慇慉態慍慏慐慒慓慔慖慗慘慙慚慛慜慞慟慠慡慣慤慥慦慩慪慫慬慭慮慯慱慲慳慴慶慸慹慺慻慼慽慾慿憀憁憂憃憄憅憆憇憈憉憊憌憍憏憐憑憒憓憕�憖憗憘憙憚憛憜憞憟憠憡憢憣憤憥憦憪憫憭憮憯憰憱憲憳憴憵憶憸憹憺憻憼憽憿懀懁懃懄懅懆懇應懌懍懎懏懐懓懕懖懗懘懙懚懛懜懝懞懟懠懡懢懣懤懥懧懨懩懪懫懬懭懮懯懰懱懲懳懴懶懷懸懹懺懻懼懽懾戀戁戂戃戄戅戇戉戓戔戙戜戝戞戠戣戦戧戨戩戫戭戯戰戱戲戵戶戸戹戺戻戼扂扄扅扆扊�\".split(\"\");\nfor(j = 0; j != D[145].length; ++j) if(D[145][j].charCodeAt(0) !== 0xFFFD) { e[D[145][j]] = 37120 + j; d[37120 + j] = D[145][j];}\nD[146] = \"����������������������������������������������������������������扏扐払扖扗扙扚扜扝扞扟扠扡扢扤扥扨扱扲扴扵扷扸扺扻扽抁抂抃抅抆抇抈抋抌抍抎抏抐抔抙抜抝択抣抦抧抩抪抭抮抯抰抲抳抴抶抷抸抺抾拀拁�拃拋拏拑拕拝拞拠拡拤拪拫拰拲拵拸拹拺拻挀挃挄挅挆挊挋挌挍挏挐挒挓挔挕挗挘挙挜挦挧挩挬挭挮挰挱挳挴挵挶挷挸挻挼挾挿捀捁捄捇捈捊捑捒捓捔捖捗捘捙捚捛捜捝捠捤捥捦捨捪捫捬捯捰捲捳捴捵捸捹捼捽捾捿掁掃掄掅掆掋掍掑掓掔掕掗掙掚掛掜掝掞掟採掤掦掫掯掱掲掵掶掹掻掽掿揀�\".split(\"\");\nfor(j = 0; j != D[146].length; ++j) if(D[146][j].charCodeAt(0) !== 0xFFFD) { e[D[146][j]] = 37376 + j; d[37376 + j] = D[146][j];}\nD[147] = \"����������������������������������������������������������������揁揂揃揅揇揈揊揋揌揑揓揔揕揗揘揙揚換揜揝揟揢揤揥揦揧揨揫揬揮揯揰揱揳揵揷揹揺揻揼揾搃搄搆搇搈搉搊損搎搑搒搕搖搗搘搙搚搝搟搢搣搤�搥搧搨搩搫搮搯搰搱搲搳搵搶搷搸搹搻搼搾摀摂摃摉摋摌摍摎摏摐摑摓摕摖摗摙摚摛摜摝摟摠摡摢摣摤摥摦摨摪摫摬摮摯摰摱摲摳摴摵摶摷摻摼摽摾摿撀撁撃撆撈撉撊撋撌撍撎撏撐撓撔撗撘撚撛撜撝撟撠撡撢撣撥撦撧撨撪撫撯撱撲撳撴撶撹撻撽撾撿擁擃擄擆擇擈擉擊擋擌擏擑擓擔擕擖擙據�\".split(\"\");\nfor(j = 0; j != D[147].length; ++j) if(D[147][j].charCodeAt(0) !== 0xFFFD) { e[D[147][j]] = 37632 + j; d[37632 + j] = D[147][j];}\nD[148] = \"����������������������������������������������������������������擛擜擝擟擠擡擣擥擧擨擩擪擫擬擭擮擯擰擱擲擳擴擵擶擷擸擹擺擻擼擽擾擿攁攂攃攄攅攆攇攈攊攋攌攍攎攏攐攑攓攔攕攖攗攙攚攛攜攝攞攟攠攡�攢攣攤攦攧攨攩攪攬攭攰攱攲攳攷攺攼攽敀敁敂敃敄敆敇敊敋敍敎敐敒敓敔敗敘敚敜敟敠敡敤敥敧敨敩敪敭敮敯敱敳敵敶數敹敺敻敼敽敾敿斀斁斂斃斄斅斆斈斉斊斍斎斏斒斔斕斖斘斚斝斞斠斢斣斦斨斪斬斮斱斲斳斴斵斶斷斸斺斻斾斿旀旂旇旈旉旊旍旐旑旓旔旕旘旙旚旛旜旝旞旟旡旣旤旪旫�\".split(\"\");\nfor(j = 0; j != D[148].length; ++j) if(D[148][j].charCodeAt(0) !== 0xFFFD) { e[D[148][j]] = 37888 + j; d[37888 + j] = D[148][j];}\nD[149] = \"����������������������������������������������������������������旲旳旴旵旸旹旻旼旽旾旿昁昄昅昇昈昉昋昍昐昑昒昖昗昘昚昛昜昞昡昢昣昤昦昩昪昫昬昮昰昲昳昷昸昹昺昻昽昿晀時晄晅晆晇晈晉晊晍晎晐晑晘�晙晛晜晝晞晠晢晣晥晧晩晪晫晬晭晱晲晳晵晸晹晻晼晽晿暀暁暃暅暆暈暉暊暋暍暎暏暐暒暓暔暕暘暙暚暛暜暞暟暠暡暢暣暤暥暦暩暪暫暬暭暯暰暱暲暳暵暶暷暸暺暻暼暽暿曀曁曂曃曄曅曆曇曈曉曊曋曌曍曎曏曐曑曒曓曔曕曖曗曘曚曞曟曠曡曢曣曤曥曧曨曪曫曬曭曮曯曱曵曶書曺曻曽朁朂會�\".split(\"\");\nfor(j = 0; j != D[149].length; ++j) if(D[149][j].charCodeAt(0) !== 0xFFFD) { e[D[149][j]] = 38144 + j; d[38144 + j] = D[149][j];}\nD[150] = \"����������������������������������������������������������������朄朅朆朇朌朎朏朑朒朓朖朘朙朚朜朞朠朡朢朣朤朥朧朩朮朰朲朳朶朷朸朹朻朼朾朿杁杄杅杇杊杋杍杒杔杕杗杘杙杚杛杝杢杣杤杦杧杫杬杮東杴杶�杸杹杺杻杽枀枂枃枅枆枈枊枌枍枎枏枑枒枓枔枖枙枛枟枠枡枤枦枩枬枮枱枲枴枹枺枻枼枽枾枿柀柂柅柆柇柈柉柊柋柌柍柎柕柖柗柛柟柡柣柤柦柧柨柪柫柭柮柲柵柶柷柸柹柺査柼柾栁栂栃栄栆栍栐栒栔栕栘栙栚栛栜栞栟栠栢栣栤栥栦栧栨栫栬栭栮栯栰栱栴栵栶栺栻栿桇桋桍桏桒桖桗桘桙桚桛�\".split(\"\");\nfor(j = 0; j != D[150].length; ++j) if(D[150][j].charCodeAt(0) !== 0xFFFD) { e[D[150][j]] = 38400 + j; d[38400 + j] = D[150][j];}\nD[151] = \"����������������������������������������������������������������桜桝桞桟桪桬桭桮桯桰桱桲桳桵桸桹桺桻桼桽桾桿梀梂梄梇梈梉梊梋梌梍梎梐梑梒梔梕梖梘梙梚梛梜條梞梟梠梡梣梤梥梩梪梫梬梮梱梲梴梶梷梸�梹梺梻梼梽梾梿棁棃棄棅棆棇棈棊棌棎棏棐棑棓棔棖棗棙棛棜棝棞棟棡棢棤棥棦棧棨棩棪棫棬棭棯棲棳棴棶棷棸棻棽棾棿椀椂椃椄椆椇椈椉椊椌椏椑椓椔椕椖椗椘椙椚椛検椝椞椡椢椣椥椦椧椨椩椪椫椬椮椯椱椲椳椵椶椷椸椺椻椼椾楀楁楃楄楅楆楇楈楉楊楋楌楍楎楏楐楑楒楓楕楖楘楙楛楜楟�\".split(\"\");\nfor(j = 0; j != D[151].length; ++j) if(D[151][j].charCodeAt(0) !== 0xFFFD) { e[D[151][j]] = 38656 + j; d[38656 + j] = D[151][j];}\nD[152] = \"����������������������������������������������������������������楡楢楤楥楧楨楩楪楬業楯楰楲楳楴極楶楺楻楽楾楿榁榃榅榊榋榌榎榏榐榑榒榓榖榗榙榚榝榞榟榠榡榢榣榤榥榦榩榪榬榮榯榰榲榳榵榶榸榹榺榼榽�榾榿槀槂槃槄槅槆槇槈槉構槍槏槑槒槓槕槖槗様槙槚槜槝槞槡槢槣槤槥槦槧槨槩槪槫槬槮槯槰槱槳槴槵槶槷槸槹槺槻槼槾樀樁樂樃樄樅樆樇樈樉樋樌樍樎樏樐樑樒樓樔樕樖標樚樛樜樝樞樠樢樣樤樥樦樧権樫樬樭樮樰樲樳樴樶樷樸樹樺樻樼樿橀橁橂橃橅橆橈橉橊橋橌橍橎橏橑橒橓橔橕橖橗橚�\".split(\"\");\nfor(j = 0; j != D[152].length; ++j) if(D[152][j].charCodeAt(0) !== 0xFFFD) { e[D[152][j]] = 38912 + j; d[38912 + j] = D[152][j];}\nD[153] = \"����������������������������������������������������������������橜橝橞機橠橢橣橤橦橧橨橩橪橫橬橭橮橯橰橲橳橴橵橶橷橸橺橻橽橾橿檁檂檃檅檆檇檈檉檊檋檌檍檏檒檓檔檕檖檘檙檚檛檜檝檞檟檡檢檣檤檥檦�檧檨檪檭檮檯檰檱檲檳檴檵檶檷檸檹檺檻檼檽檾檿櫀櫁櫂櫃櫄櫅櫆櫇櫈櫉櫊櫋櫌櫍櫎櫏櫐櫑櫒櫓櫔櫕櫖櫗櫘櫙櫚櫛櫜櫝櫞櫟櫠櫡櫢櫣櫤櫥櫦櫧櫨櫩櫪櫫櫬櫭櫮櫯櫰櫱櫲櫳櫴櫵櫶櫷櫸櫹櫺櫻櫼櫽櫾櫿欀欁欂欃欄欅欆欇欈欉權欋欌欍欎欏欐欑欒欓欔欕欖欗欘欙欚欛欜欝欞欟欥欦欨欩欪欫欬欭欮�\".split(\"\");\nfor(j = 0; j != D[153].length; ++j) if(D[153][j].charCodeAt(0) !== 0xFFFD) { e[D[153][j]] = 39168 + j; d[39168 + j] = D[153][j];}\nD[154] = \"����������������������������������������������������������������欯欰欱欳欴欵欶欸欻欼欽欿歀歁歂歄歅歈歊歋歍歎歏歐歑歒歓歔歕歖歗歘歚歛歜歝歞歟歠歡歨歩歫歬歭歮歯歰歱歲歳歴歵歶歷歸歺歽歾歿殀殅殈�殌殎殏殐殑殔殕殗殘殙殜殝殞殟殠殢殣殤殥殦殧殨殩殫殬殭殮殯殰殱殲殶殸殹殺殻殼殽殾毀毃毄毆毇毈毉毊毌毎毐毑毘毚毜毝毞毟毠毢毣毤毥毦毧毨毩毬毭毮毰毱毲毴毶毷毸毺毻毼毾毿氀氁氂氃氄氈氉氊氋氌氎氒気氜氝氞氠氣氥氫氬氭氱氳氶氷氹氺氻氼氾氿汃汄汅汈汋汌汍汎汏汑汒汓汖汘�\".split(\"\");\nfor(j = 0; j != D[154].length; ++j) if(D[154][j].charCodeAt(0) !== 0xFFFD) { e[D[154][j]] = 39424 + j; d[39424 + j] = D[154][j];}\nD[155] = \"����������������������������������������������������������������汙汚汢汣汥汦汧汫汬汭汮汯汱汳汵汷汸決汻汼汿沀沄沇沊沋沍沎沑沒沕沖沗沘沚沜沝沞沠沢沨沬沯沰沴沵沶沷沺泀況泂泃泆泇泈泋泍泎泏泑泒泘�泙泚泜泝泟泤泦泧泩泬泭泲泴泹泿洀洂洃洅洆洈洉洊洍洏洐洑洓洔洕洖洘洜洝洟洠洡洢洣洤洦洨洩洬洭洯洰洴洶洷洸洺洿浀浂浄浉浌浐浕浖浗浘浛浝浟浡浢浤浥浧浨浫浬浭浰浱浲浳浵浶浹浺浻浽浾浿涀涁涃涄涆涇涊涋涍涏涐涒涖涗涘涙涚涜涢涥涬涭涰涱涳涴涶涷涹涺涻涼涽涾淁淂淃淈淉淊�\".split(\"\");\nfor(j = 0; j != D[155].length; ++j) if(D[155][j].charCodeAt(0) !== 0xFFFD) { e[D[155][j]] = 39680 + j; d[39680 + j] = D[155][j];}\nD[156] = \"����������������������������������������������������������������淍淎淏淐淒淓淔淕淗淚淛淜淟淢淣淥淧淨淩淪淭淯淰淲淴淵淶淸淺淽淾淿渀渁渂渃渄渆渇済渉渋渏渒渓渕渘渙減渜渞渟渢渦渧渨渪測渮渰渱渳渵�渶渷渹渻渼渽渾渿湀湁湂湅湆湇湈湉湊湋湌湏湐湑湒湕湗湙湚湜湝湞湠湡湢湣湤湥湦湧湨湩湪湬湭湯湰湱湲湳湴湵湶湷湸湹湺湻湼湽満溁溂溄溇溈溊溋溌溍溎溑溒溓溔溕準溗溙溚溛溝溞溠溡溣溤溦溨溩溫溬溭溮溰溳溵溸溹溼溾溿滀滃滄滅滆滈滉滊滌滍滎滐滒滖滘滙滛滜滝滣滧滪滫滬滭滮滯�\".split(\"\");\nfor(j = 0; j != D[156].length; ++j) if(D[156][j].charCodeAt(0) !== 0xFFFD) { e[D[156][j]] = 39936 + j; d[39936 + j] = D[156][j];}\nD[157] = \"����������������������������������������������������������������滰滱滲滳滵滶滷滸滺滻滼滽滾滿漀漁漃漄漅漇漈漊漋漌漍漎漐漑漒漖漗漘漙漚漛漜漝漞漟漡漢漣漥漦漧漨漬漮漰漲漴漵漷漸漹漺漻漼漽漿潀潁潂�潃潄潅潈潉潊潌潎潏潐潑潒潓潔潕潖潗潙潚潛潝潟潠潡潣潤潥潧潨潩潪潫潬潯潰潱潳潵潶潷潹潻潽潾潿澀澁澂澃澅澆澇澊澋澏澐澑澒澓澔澕澖澗澘澙澚澛澝澞澟澠澢澣澤澥澦澨澩澪澫澬澭澮澯澰澱澲澴澵澷澸澺澻澼澽澾澿濁濃濄濅濆濇濈濊濋濌濍濎濏濐濓濔濕濖濗濘濙濚濛濜濝濟濢濣濤濥�\".split(\"\");\nfor(j = 0; j != D[157].length; ++j) if(D[157][j].charCodeAt(0) !== 0xFFFD) { e[D[157][j]] = 40192 + j; d[40192 + j] = D[157][j];}\nD[158] = \"����������������������������������������������������������������濦濧濨濩濪濫濬濭濰濱濲濳濴濵濶濷濸濹濺濻濼濽濾濿瀀瀁瀂瀃瀄瀅瀆瀇瀈瀉瀊瀋瀌瀍瀎瀏瀐瀒瀓瀔瀕瀖瀗瀘瀙瀜瀝瀞瀟瀠瀡瀢瀤瀥瀦瀧瀨瀩瀪�瀫瀬瀭瀮瀯瀰瀱瀲瀳瀴瀶瀷瀸瀺瀻瀼瀽瀾瀿灀灁灂灃灄灅灆灇灈灉灊灋灍灎灐灑灒灓灔灕灖灗灘灙灚灛灜灝灟灠灡灢灣灤灥灦灧灨灩灪灮灱灲灳灴灷灹灺灻災炁炂炃炄炆炇炈炋炌炍炏炐炑炓炗炘炚炛炞炟炠炡炢炣炤炥炦炧炨炩炪炰炲炴炵炶為炾炿烄烅烆烇烉烋烌烍烎烏烐烑烒烓烔烕烖烗烚�\".split(\"\");\nfor(j = 0; j != D[158].length; ++j) if(D[158][j].charCodeAt(0) !== 0xFFFD) { e[D[158][j]] = 40448 + j; d[40448 + j] = D[158][j];}\nD[159] = \"����������������������������������������������������������������烜烝烞烠烡烢烣烥烪烮烰烱烲烳烴烵烶烸烺烻烼烾烿焀焁焂焃焄焅焆焇焈焋焌焍焎焏焑焒焔焗焛焜焝焞焟焠無焢焣焤焥焧焨焩焪焫焬焭焮焲焳焴�焵焷焸焹焺焻焼焽焾焿煀煁煂煃煄煆煇煈煉煋煍煏煐煑煒煓煔煕煖煗煘煙煚煛煝煟煠煡煢煣煥煩煪煫煬煭煯煰煱煴煵煶煷煹煻煼煾煿熀熁熂熃熅熆熇熈熉熋熌熍熎熐熑熒熓熕熖熗熚熛熜熝熞熡熢熣熤熥熦熧熩熪熫熭熮熯熰熱熲熴熶熷熸熺熻熼熽熾熿燀燁燂燄燅燆燇燈燉燊燋燌燍燏燐燑燒燓�\".split(\"\");\nfor(j = 0; j != D[159].length; ++j) if(D[159][j].charCodeAt(0) !== 0xFFFD) { e[D[159][j]] = 40704 + j; d[40704 + j] = D[159][j];}\nD[160] = \"����������������������������������������������������������������燖燗燘燙燚燛燜燝燞營燡燢燣燤燦燨燩燪燫燬燭燯燰燱燲燳燴燵燶燷燸燺燻燼燽燾燿爀爁爂爃爄爅爇爈爉爊爋爌爍爎爏爐爑爒爓爔爕爖爗爘爙爚�爛爜爞爟爠爡爢爣爤爥爦爧爩爫爭爮爯爲爳爴爺爼爾牀牁牂牃牄牅牆牉牊牋牎牏牐牑牓牔牕牗牘牚牜牞牠牣牤牥牨牪牫牬牭牰牱牳牴牶牷牸牻牼牽犂犃犅犆犇犈犉犌犎犐犑犓犔犕犖犗犘犙犚犛犜犝犞犠犡犢犣犤犥犦犧犨犩犪犫犮犱犲犳犵犺犻犼犽犾犿狀狅狆狇狉狊狋狌狏狑狓狔狕狖狘狚狛�\".split(\"\");\nfor(j = 0; j != D[160].length; ++j) if(D[160][j].charCodeAt(0) !== 0xFFFD) { e[D[160][j]] = 40960 + j; d[40960 + j] = D[160][j];}\nD[161] = \"�����������������������������������������������������������������　、。·ˉˇ¨〃々—～‖…‘’“”〔〕〈〉《》「」『』〖〗【】±×÷∶∧∨∑∏∪∩∈∷√⊥∥∠⌒⊙∫∮≡≌≈∽∝≠≮≯≤≥∞∵∴♂♀°′″℃＄¤￠￡‰§№☆★○●◎◇◆□■△▲※→←↑↓〓�\".split(\"\");\nfor(j = 0; j != D[161].length; ++j) if(D[161][j].charCodeAt(0) !== 0xFFFD) { e[D[161][j]] = 41216 + j; d[41216 + j] = D[161][j];}\nD[162] = \"�����������������������������������������������������������������ⅰⅱⅲⅳⅴⅵⅶⅷⅸⅹ⒈⒉⒊⒋⒌⒍⒎⒏⒐⒑⒒⒓⒔⒕⒖⒗⒘⒙⒚⒛⑴⑵⑶⑷⑸⑹⑺⑻⑼⑽⑾⑿⒀⒁⒂⒃⒄⒅⒆⒇①②③④⑤⑥⑦⑧⑨⑩㈠㈡㈢㈣㈤㈥㈦㈧㈨㈩ⅠⅡⅢⅣⅤⅥⅦⅧⅨⅩⅪⅫ�\".split(\"\");\nfor(j = 0; j != D[162].length; ++j) if(D[162][j].charCodeAt(0) !== 0xFFFD) { e[D[162][j]] = 41472 + j; d[41472 + j] = D[162][j];}\nD[163] = \"�����������������������������������������������������������������！＂＃￥％＆＇（）＊＋，－．／０１２３４５６７８９：；＜＝＞？＠ＡＢＣＤＥＦＧＨＩＪＫＬＭＮＯＰＱＲＳＴＵＶＷＸＹＺ［＼］＾＿｀ａｂｃｄｅｆｇｈｉｊｋｌｍｎｏｐｑｒｓｔｕｖｗｘｙｚ｛｜｝￣�\".split(\"\");\nfor(j = 0; j != D[163].length; ++j) if(D[163][j].charCodeAt(0) !== 0xFFFD) { e[D[163][j]] = 41728 + j; d[41728 + j] = D[163][j];}\nD[164] = \"�����������������������������������������������������������������ぁあぃいぅうぇえぉおかがきぎくぐけげこごさざしじすずせぜそぞただちぢっつづてでとどなにぬねのはばぱひびぴふぶぷへべぺほぼぽまみむめもゃやゅゆょよらりるれろゎわゐゑをん�\".split(\"\");\nfor(j = 0; j != D[164].length; ++j) if(D[164][j].charCodeAt(0) !== 0xFFFD) { e[D[164][j]] = 41984 + j; d[41984 + j] = D[164][j];}\nD[165] = \"�����������������������������������������������������������������ァアィイゥウェエォオカガキギクグケゲコゴサザシジスズセゼソゾタダチヂッツヅテデトドナニヌネノハバパヒビピフブプヘベペホボポマミムメモャヤュユョヨラリルレロヮワヰヱヲンヴヵヶ�\".split(\"\");\nfor(j = 0; j != D[165].length; ++j) if(D[165][j].charCodeAt(0) !== 0xFFFD) { e[D[165][j]] = 42240 + j; d[42240 + j] = D[165][j];}\nD[166] = \"�����������������������������������������������������������������ΑΒΓΔΕΖΗΘΙΚΛΜΝΞΟΠΡΣΤΥΦΧΨΩαβγδεζηθικλμνξοπρστυφχψω︵︶︹︺︿﹀︽︾﹁﹂﹃﹄︻︼︷︸︱︳︴�\".split(\"\");\nfor(j = 0; j != D[166].length; ++j) if(D[166][j].charCodeAt(0) !== 0xFFFD) { e[D[166][j]] = 42496 + j; d[42496 + j] = D[166][j];}\nD[167] = \"�����������������������������������������������������������������АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдеёжзийклмнопрстуфхцчшщъыьэюя�\".split(\"\");\nfor(j = 0; j != D[167].length; ++j) if(D[167][j].charCodeAt(0) !== 0xFFFD) { e[D[167][j]] = 42752 + j; d[42752 + j] = D[167][j];}\nD[168] = \"����������������������������������������������������������������ˊˋ˙–―‥‵℅℉↖↗↘↙∕∟∣≒≦≧⊿═║╒╓╔╕╖╗╘╙╚╛╜╝╞╟╠╡╢╣╤╥╦╧╨╩╪╫╬╭╮╯╰╱╲╳▁▂▃▄▅▆▇�█▉▊▋▌▍▎▏▓▔▕▼▽◢◣◤◥☉⊕〒〝〞āáǎàēéěèīíǐìōóǒòūúǔùǖǘǚǜüêɑńňɡㄅㄆㄇㄈㄉㄊㄋㄌㄍㄎㄏㄐㄑㄒㄓㄔㄕㄖㄗㄘㄙㄚㄛㄜㄝㄞㄟㄠㄡㄢㄣㄤㄥㄦㄧㄨㄩ�\".split(\"\");\nfor(j = 0; j != D[168].length; ++j) if(D[168][j].charCodeAt(0) !== 0xFFFD) { e[D[168][j]] = 43008 + j; d[43008 + j] = D[168][j];}\nD[169] = \"����������������������������������������������������������������〡〢〣〤〥〦〧〨〩㊣㎎㎏㎜㎝㎞㎡㏄㏎㏑㏒㏕︰￢￤℡㈱‐ー゛゜ヽヾ〆ゝゞ﹉﹊﹋﹌﹍﹎﹏﹐﹑﹒﹔﹕﹖﹗﹙﹚﹛﹜﹝﹞﹟﹠﹡�﹢﹣﹤﹥﹦﹨﹩﹪﹫〇─━│┃┄┅┆┇┈┉┊┋┌┍┎┏┐┑┒┓└┕┖┗┘┙┚┛├┝┞┟┠┡┢┣┤┥┦┧┨┩┪┫┬┭┮┯┰┱┲┳┴┵┶┷┸┹┺┻┼┽┾┿╀╁╂╃╄╅╆╇╈╉╊╋�\".split(\"\");\nfor(j = 0; j != D[169].length; ++j) if(D[169][j].charCodeAt(0) !== 0xFFFD) { e[D[169][j]] = 43264 + j; d[43264 + j] = D[169][j];}\nD[170] = \"����������������������������������������������������������������狜狝狟狢狣狤狥狦狧狪狫狵狶狹狽狾狿猀猂猄猅猆猇猈猉猋猌猍猏猐猑猒猔猘猙猚猟猠猣猤猦猧猨猭猯猰猲猳猵猶猺猻猼猽獀獁獂獃獄獅獆獇獈�獉獊獋獌獎獏獑獓獔獕獖獘獙獚獛獜獝獞獟獡獢獣獤獥獦獧獨獩獪獫獮獰獱�\".split(\"\");\nfor(j = 0; j != D[170].length; ++j) if(D[170][j].charCodeAt(0) !== 0xFFFD) { e[D[170][j]] = 43520 + j; d[43520 + j] = D[170][j];}\nD[171] = \"����������������������������������������������������������������獲獳獴獵獶獷獸獹獺獻獼獽獿玀玁玂玃玅玆玈玊玌玍玏玐玒玓玔玕玗玘玙玚玜玝玞玠玡玣玤玥玦玧玨玪玬玭玱玴玵玶玸玹玼玽玾玿珁珃珄珅珆珇�珋珌珎珒珓珔珕珖珗珘珚珛珜珝珟珡珢珣珤珦珨珪珫珬珮珯珰珱珳珴珵珶珷�\".split(\"\");\nfor(j = 0; j != D[171].length; ++j) if(D[171][j].charCodeAt(0) !== 0xFFFD) { e[D[171][j]] = 43776 + j; d[43776 + j] = D[171][j];}\nD[172] = \"����������������������������������������������������������������珸珹珺珻珼珽現珿琀琁琂琄琇琈琋琌琍琎琑琒琓琔琕琖琗琘琙琜琝琞琟琠琡琣琤琧琩琫琭琯琱琲琷琸琹琺琻琽琾琿瑀瑂瑃瑄瑅瑆瑇瑈瑉瑊瑋瑌瑍�瑎瑏瑐瑑瑒瑓瑔瑖瑘瑝瑠瑡瑢瑣瑤瑥瑦瑧瑨瑩瑪瑫瑬瑮瑯瑱瑲瑳瑴瑵瑸瑹瑺�\".split(\"\");\nfor(j = 0; j != D[172].length; ++j) if(D[172][j].charCodeAt(0) !== 0xFFFD) { e[D[172][j]] = 44032 + j; d[44032 + j] = D[172][j];}\nD[173] = \"����������������������������������������������������������������瑻瑼瑽瑿璂璄璅璆璈璉璊璌璍璏璑璒璓璔璕璖璗璘璙璚璛璝璟璠璡璢璣璤璥璦璪璫璬璭璮璯環璱璲璳璴璵璶璷璸璹璻璼璽璾璿瓀瓁瓂瓃瓄瓅瓆瓇�瓈瓉瓊瓋瓌瓍瓎瓏瓐瓑瓓瓔瓕瓖瓗瓘瓙瓚瓛瓝瓟瓡瓥瓧瓨瓩瓪瓫瓬瓭瓰瓱瓲�\".split(\"\");\nfor(j = 0; j != D[173].length; ++j) if(D[173][j].charCodeAt(0) !== 0xFFFD) { e[D[173][j]] = 44288 + j; d[44288 + j] = D[173][j];}\nD[174] = \"����������������������������������������������������������������瓳瓵瓸瓹瓺瓻瓼瓽瓾甀甁甂甃甅甆甇甈甉甊甋甌甎甐甒甔甕甖甗甛甝甞甠甡產産甤甦甧甪甮甴甶甹甼甽甿畁畂畃畄畆畇畉畊畍畐畑畒畓畕畖畗畘�畝畞畟畠畡畢畣畤畧畨畩畫畬畭畮畯異畱畳畵當畷畺畻畼畽畾疀疁疂疄疅疇�\".split(\"\");\nfor(j = 0; j != D[174].length; ++j) if(D[174][j].charCodeAt(0) !== 0xFFFD) { e[D[174][j]] = 44544 + j; d[44544 + j] = D[174][j];}\nD[175] = \"����������������������������������������������������������������疈疉疊疌疍疎疐疓疕疘疛疜疞疢疦疧疨疩疪疭疶疷疺疻疿痀痁痆痋痌痎痏痐痑痓痗痙痚痜痝痟痠痡痥痩痬痭痮痯痲痳痵痶痷痸痺痻痽痾瘂瘄瘆瘇�瘈瘉瘋瘍瘎瘏瘑瘒瘓瘔瘖瘚瘜瘝瘞瘡瘣瘧瘨瘬瘮瘯瘱瘲瘶瘷瘹瘺瘻瘽癁療癄�\".split(\"\");\nfor(j = 0; j != D[175].length; ++j) if(D[175][j].charCodeAt(0) !== 0xFFFD) { e[D[175][j]] = 44800 + j; d[44800 + j] = D[175][j];}\nD[176] = \"����������������������������������������������������������������癅癆癇癈癉癊癋癎癏癐癑癒癓癕癗癘癙癚癛癝癟癠癡癢癤癥癦癧癨癩癪癬癭癮癰癱癲癳癴癵癶癷癹発發癿皀皁皃皅皉皊皌皍皏皐皒皔皕皗皘皚皛�皜皝皞皟皠皡皢皣皥皦皧皨皩皪皫皬皭皯皰皳皵皶皷皸皹皺皻皼皽皾盀盁盃啊阿埃挨哎唉哀皑癌蔼矮艾碍爱隘鞍氨安俺按暗岸胺案肮昂盎凹敖熬翱袄傲奥懊澳芭捌扒叭吧笆八疤巴拔跋靶把耙坝霸罢爸白柏百摆佰败拜稗斑班搬扳般颁板版扮拌伴瓣半办绊邦帮梆榜膀绑棒磅蚌镑傍谤苞胞包褒剥�\".split(\"\");\nfor(j = 0; j != D[176].length; ++j) if(D[176][j].charCodeAt(0) !== 0xFFFD) { e[D[176][j]] = 45056 + j; d[45056 + j] = D[176][j];}\nD[177] = \"����������������������������������������������������������������盄盇盉盋盌盓盕盙盚盜盝盞盠盡盢監盤盦盧盨盩盪盫盬盭盰盳盵盶盷盺盻盽盿眀眂眃眅眆眊県眎眏眐眑眒眓眔眕眖眗眘眛眜眝眞眡眣眤眥眧眪眫�眬眮眰眱眲眳眴眹眻眽眾眿睂睄睅睆睈睉睊睋睌睍睎睏睒睓睔睕睖睗睘睙睜薄雹保堡饱宝抱报暴豹鲍爆杯碑悲卑北辈背贝钡倍狈备惫焙被奔苯本笨崩绷甭泵蹦迸逼鼻比鄙笔彼碧蓖蔽毕毙毖币庇痹闭敝弊必辟壁臂避陛鞭边编贬扁便变卞辨辩辫遍标彪膘表鳖憋别瘪彬斌濒滨宾摈兵冰柄丙秉饼炳�\".split(\"\");\nfor(j = 0; j != D[177].length; ++j) if(D[177][j].charCodeAt(0) !== 0xFFFD) { e[D[177][j]] = 45312 + j; d[45312 + j] = D[177][j];}\nD[178] = \"����������������������������������������������������������������睝睞睟睠睤睧睩睪睭睮睯睰睱睲睳睴睵睶睷睸睺睻睼瞁瞂瞃瞆瞇瞈瞉瞊瞋瞏瞐瞓瞔瞕瞖瞗瞘瞙瞚瞛瞜瞝瞞瞡瞣瞤瞦瞨瞫瞭瞮瞯瞱瞲瞴瞶瞷瞸瞹瞺�瞼瞾矀矁矂矃矄矅矆矇矈矉矊矋矌矎矏矐矑矒矓矔矕矖矘矙矚矝矞矟矠矡矤病并玻菠播拨钵波博勃搏铂箔伯帛舶脖膊渤泊驳捕卜哺补埠不布步簿部怖擦猜裁材才财睬踩采彩菜蔡餐参蚕残惭惨灿苍舱仓沧藏操糙槽曹草厕策侧册测层蹭插叉茬茶查碴搽察岔差诧拆柴豺搀掺蝉馋谗缠铲产阐颤昌猖�\".split(\"\");\nfor(j = 0; j != D[178].length; ++j) if(D[178][j].charCodeAt(0) !== 0xFFFD) { e[D[178][j]] = 45568 + j; d[45568 + j] = D[178][j];}\nD[179] = \"����������������������������������������������������������������矦矨矪矯矰矱矲矴矵矷矹矺矻矼砃砄砅砆砇砈砊砋砎砏砐砓砕砙砛砞砠砡砢砤砨砪砫砮砯砱砲砳砵砶砽砿硁硂硃硄硆硈硉硊硋硍硏硑硓硔硘硙硚�硛硜硞硟硠硡硢硣硤硥硦硧硨硩硯硰硱硲硳硴硵硶硸硹硺硻硽硾硿碀碁碂碃场尝常长偿肠厂敞畅唱倡超抄钞朝嘲潮巢吵炒车扯撤掣彻澈郴臣辰尘晨忱沉陈趁衬撑称城橙成呈乘程惩澄诚承逞骋秤吃痴持匙池迟弛驰耻齿侈尺赤翅斥炽充冲虫崇宠抽酬畴踌稠愁筹仇绸瞅丑臭初出橱厨躇锄雏滁除楚�\".split(\"\");\nfor(j = 0; j != D[179].length; ++j) if(D[179][j].charCodeAt(0) !== 0xFFFD) { e[D[179][j]] = 45824 + j; d[45824 + j] = D[179][j];}\nD[180] = \"����������������������������������������������������������������碄碅碆碈碊碋碏碐碒碔碕碖碙碝碞碠碢碤碦碨碩碪碫碬碭碮碯碵碶碷碸確碻碼碽碿磀磂磃磄磆磇磈磌磍磎磏磑磒磓磖磗磘磚磛磜磝磞磟磠磡磢磣�磤磥磦磧磩磪磫磭磮磯磰磱磳磵磶磸磹磻磼磽磾磿礀礂礃礄礆礇礈礉礊礋礌础储矗搐触处揣川穿椽传船喘串疮窗幢床闯创吹炊捶锤垂春椿醇唇淳纯蠢戳绰疵茨磁雌辞慈瓷词此刺赐次聪葱囱匆从丛凑粗醋簇促蹿篡窜摧崔催脆瘁粹淬翠村存寸磋撮搓措挫错搭达答瘩打大呆歹傣戴带殆代贷袋待逮�\".split(\"\");\nfor(j = 0; j != D[180].length; ++j) if(D[180][j].charCodeAt(0) !== 0xFFFD) { e[D[180][j]] = 46080 + j; d[46080 + j] = D[180][j];}\nD[181] = \"����������������������������������������������������������������礍礎礏礐礑礒礔礕礖礗礘礙礚礛礜礝礟礠礡礢礣礥礦礧礨礩礪礫礬礭礮礯礰礱礲礳礵礶礷礸礹礽礿祂祃祄祅祇祊祋祌祍祎祏祐祑祒祔祕祘祙祡祣�祤祦祩祪祫祬祮祰祱祲祳祴祵祶祹祻祼祽祾祿禂禃禆禇禈禉禋禌禍禎禐禑禒怠耽担丹单郸掸胆旦氮但惮淡诞弹蛋当挡党荡档刀捣蹈倒岛祷导到稻悼道盗德得的蹬灯登等瞪凳邓堤低滴迪敌笛狄涤翟嫡抵底地蒂第帝弟递缔颠掂滇碘点典靛垫电佃甸店惦奠淀殿碉叼雕凋刁掉吊钓调跌爹碟蝶迭谍叠�\".split(\"\");\nfor(j = 0; j != D[181].length; ++j) if(D[181][j].charCodeAt(0) !== 0xFFFD) { e[D[181][j]] = 46336 + j; d[46336 + j] = D[181][j];}\nD[182] = \"����������������������������������������������������������������禓禔禕禖禗禘禙禛禜禝禞禟禠禡禢禣禤禥禦禨禩禪禫禬禭禮禯禰禱禲禴禵禶禷禸禼禿秂秄秅秇秈秊秌秎秏秐秓秔秖秗秙秚秛秜秝秞秠秡秢秥秨秪�秬秮秱秲秳秴秵秶秷秹秺秼秾秿稁稄稅稇稈稉稊稌稏稐稑稒稓稕稖稘稙稛稜丁盯叮钉顶鼎锭定订丢东冬董懂动栋侗恫冻洞兜抖斗陡豆逗痘都督毒犊独读堵睹赌杜镀肚度渡妒端短锻段断缎堆兑队对墩吨蹲敦顿囤钝盾遁掇哆多夺垛躲朵跺舵剁惰堕蛾峨鹅俄额讹娥恶厄扼遏鄂饿恩而儿耳尔饵洱二�\".split(\"\");\nfor(j = 0; j != D[182].length; ++j) if(D[182][j].charCodeAt(0) !== 0xFFFD) { e[D[182][j]] = 46592 + j; d[46592 + j] = D[182][j];}\nD[183] = \"����������������������������������������������������������������稝稟稡稢稤稥稦稧稨稩稪稫稬稭種稯稰稱稲稴稵稶稸稺稾穀穁穂穃穄穅穇穈穉穊穋穌積穎穏穐穒穓穔穕穖穘穙穚穛穜穝穞穟穠穡穢穣穤穥穦穧穨�穩穪穫穬穭穮穯穱穲穳穵穻穼穽穾窂窅窇窉窊窋窌窎窏窐窓窔窙窚窛窞窡窢贰发罚筏伐乏阀法珐藩帆番翻樊矾钒繁凡烦反返范贩犯饭泛坊芳方肪房防妨仿访纺放菲非啡飞肥匪诽吠肺废沸费芬酚吩氛分纷坟焚汾粉奋份忿愤粪丰封枫蜂峰锋风疯烽逢冯缝讽奉凤佛否夫敷肤孵扶拂辐幅氟符伏俘服�\".split(\"\");\nfor(j = 0; j != D[183].length; ++j) if(D[183][j].charCodeAt(0) !== 0xFFFD) { e[D[183][j]] = 46848 + j; d[46848 + j] = D[183][j];}\nD[184] = \"����������������������������������������������������������������窣窤窧窩窪窫窮窯窰窱窲窴窵窶窷窸窹窺窻窼窽窾竀竁竂竃竄竅竆竇竈竉竊竌竍竎竏竐竑竒竓竔竕竗竘竚竛竜竝竡竢竤竧竨竩竪竫竬竮竰竱竲竳�竴竵競竷竸竻竼竾笀笁笂笅笇笉笌笍笎笐笒笓笖笗笘笚笜笝笟笡笢笣笧笩笭浮涪福袱弗甫抚辅俯釜斧脯腑府腐赴副覆赋复傅付阜父腹负富讣附妇缚咐噶嘎该改概钙盖溉干甘杆柑竿肝赶感秆敢赣冈刚钢缸肛纲岗港杠篙皋高膏羔糕搞镐稿告哥歌搁戈鸽胳疙割革葛格蛤阁隔铬个各给根跟耕更庚羹�\".split(\"\");\nfor(j = 0; j != D[184].length; ++j) if(D[184][j].charCodeAt(0) !== 0xFFFD) { e[D[184][j]] = 47104 + j; d[47104 + j] = D[184][j];}\nD[185] = \"����������������������������������������������������������������笯笰笲笴笵笶笷笹笻笽笿筀筁筂筃筄筆筈筊筍筎筓筕筗筙筜筞筟筡筣筤筥筦筧筨筩筪筫筬筭筯筰筳筴筶筸筺筼筽筿箁箂箃箄箆箇箈箉箊箋箌箎箏�箑箒箓箖箘箙箚箛箞箟箠箣箤箥箮箯箰箲箳箵箶箷箹箺箻箼箽箾箿節篂篃範埂耿梗工攻功恭龚供躬公宫弓巩汞拱贡共钩勾沟苟狗垢构购够辜菇咕箍估沽孤姑鼓古蛊骨谷股故顾固雇刮瓜剐寡挂褂乖拐怪棺关官冠观管馆罐惯灌贯光广逛瑰规圭硅归龟闺轨鬼诡癸桂柜跪贵刽辊滚棍锅郭国果裹过哈�\".split(\"\");\nfor(j = 0; j != D[185].length; ++j) if(D[185][j].charCodeAt(0) !== 0xFFFD) { e[D[185][j]] = 47360 + j; d[47360 + j] = D[185][j];}\nD[186] = \"����������������������������������������������������������������篅篈築篊篋篍篎篏篐篒篔篕篖篗篘篛篜篞篟篠篢篣篤篧篨篩篫篬篭篯篰篲篳篴篵篶篸篹篺篻篽篿簀簁簂簃簄簅簆簈簉簊簍簎簐簑簒簓簔簕簗簘簙�簚簛簜簝簞簠簡簢簣簤簥簨簩簫簬簭簮簯簰簱簲簳簴簵簶簷簹簺簻簼簽簾籂骸孩海氦亥害骇酣憨邯韩含涵寒函喊罕翰撼捍旱憾悍焊汗汉夯杭航壕嚎豪毫郝好耗号浩呵喝荷菏核禾和何合盒貉阂河涸赫褐鹤贺嘿黑痕很狠恨哼亨横衡恒轰哄烘虹鸿洪宏弘红喉侯猴吼厚候后呼乎忽瑚壶葫胡蝴狐糊湖�\".split(\"\");\nfor(j = 0; j != D[186].length; ++j) if(D[186][j].charCodeAt(0) !== 0xFFFD) { e[D[186][j]] = 47616 + j; d[47616 + j] = D[186][j];}\nD[187] = \"����������������������������������������������������������������籃籄籅籆籇籈籉籊籋籌籎籏籐籑籒籓籔籕籖籗籘籙籚籛籜籝籞籟籠籡籢籣籤籥籦籧籨籩籪籫籬籭籮籯籰籱籲籵籶籷籸籹籺籾籿粀粁粂粃粄粅粆粇�粈粊粋粌粍粎粏粐粓粔粖粙粚粛粠粡粣粦粧粨粩粫粬粭粯粰粴粵粶粷粸粺粻弧虎唬护互沪户花哗华猾滑画划化话槐徊怀淮坏欢环桓还缓换患唤痪豢焕涣宦幻荒慌黄磺蝗簧皇凰惶煌晃幌恍谎灰挥辉徽恢蛔回毁悔慧卉惠晦贿秽会烩汇讳诲绘荤昏婚魂浑混豁活伙火获或惑霍货祸击圾基机畸稽积箕�\".split(\"\");\nfor(j = 0; j != D[187].length; ++j) if(D[187][j].charCodeAt(0) !== 0xFFFD) { e[D[187][j]] = 47872 + j; d[47872 + j] = D[187][j];}\nD[188] = \"����������������������������������������������������������������粿糀糂糃糄糆糉糋糎糏糐糑糒糓糔糘糚糛糝糞糡糢糣糤糥糦糧糩糪糫糬糭糮糰糱糲糳糴糵糶糷糹糺糼糽糾糿紀紁紂紃約紅紆紇紈紉紋紌納紎紏紐�紑紒紓純紕紖紗紘紙級紛紜紝紞紟紡紣紤紥紦紨紩紪紬紭紮細紱紲紳紴紵紶肌饥迹激讥鸡姬绩缉吉极棘辑籍集及急疾汲即嫉级挤几脊己蓟技冀季伎祭剂悸济寄寂计记既忌际妓继纪嘉枷夹佳家加荚颊贾甲钾假稼价架驾嫁歼监坚尖笺间煎兼肩艰奸缄茧检柬碱硷拣捡简俭剪减荐槛鉴践贱见键箭件�\".split(\"\");\nfor(j = 0; j != D[188].length; ++j) if(D[188][j].charCodeAt(0) !== 0xFFFD) { e[D[188][j]] = 48128 + j; d[48128 + j] = D[188][j];}\nD[189] = \"����������������������������������������������������������������紷紸紹紺紻紼紽紾紿絀絁終絃組絅絆絇絈絉絊絋経絍絎絏結絑絒絓絔絕絖絗絘絙絚絛絜絝絞絟絠絡絢絣絤絥給絧絨絩絪絫絬絭絯絰統絲絳絴絵絶�絸絹絺絻絼絽絾絿綀綁綂綃綄綅綆綇綈綉綊綋綌綍綎綏綐綑綒經綔綕綖綗綘健舰剑饯渐溅涧建僵姜将浆江疆蒋桨奖讲匠酱降蕉椒礁焦胶交郊浇骄娇嚼搅铰矫侥脚狡角饺缴绞剿教酵轿较叫窖揭接皆秸街阶截劫节桔杰捷睫竭洁结解姐戒藉芥界借介疥诫届巾筋斤金今津襟紧锦仅谨进靳晋禁近烬浸�\".split(\"\");\nfor(j = 0; j != D[189].length; ++j) if(D[189][j].charCodeAt(0) !== 0xFFFD) { e[D[189][j]] = 48384 + j; d[48384 + j] = D[189][j];}\nD[190] = \"����������������������������������������������������������������継続綛綜綝綞綟綠綡綢綣綤綥綧綨綩綪綫綬維綯綰綱網綳綴綵綶綷綸綹綺綻綼綽綾綿緀緁緂緃緄緅緆緇緈緉緊緋緌緍緎総緐緑緒緓緔緕緖緗緘緙�線緛緜緝緞緟締緡緢緣緤緥緦緧編緩緪緫緬緭緮緯緰緱緲緳練緵緶緷緸緹緺尽劲荆兢茎睛晶鲸京惊精粳经井警景颈静境敬镜径痉靖竟竞净炯窘揪究纠玖韭久灸九酒厩救旧臼舅咎就疚鞠拘狙疽居驹菊局咀矩举沮聚拒据巨具距踞锯俱句惧炬剧捐鹃娟倦眷卷绢撅攫抉掘倔爵觉决诀绝均菌钧军君峻�\".split(\"\");\nfor(j = 0; j != D[190].length; ++j) if(D[190][j].charCodeAt(0) !== 0xFFFD) { e[D[190][j]] = 48640 + j; d[48640 + j] = D[190][j];}\nD[191] = \"����������������������������������������������������������������緻緼緽緾緿縀縁縂縃縄縅縆縇縈縉縊縋縌縍縎縏縐縑縒縓縔縕縖縗縘縙縚縛縜縝縞縟縠縡縢縣縤縥縦縧縨縩縪縫縬縭縮縯縰縱縲縳縴縵縶縷縸縹�縺縼總績縿繀繂繃繄繅繆繈繉繊繋繌繍繎繏繐繑繒繓織繕繖繗繘繙繚繛繜繝俊竣浚郡骏喀咖卡咯开揩楷凯慨刊堪勘坎砍看康慷糠扛抗亢炕考拷烤靠坷苛柯棵磕颗科壳咳可渴克刻客课肯啃垦恳坑吭空恐孔控抠口扣寇枯哭窟苦酷库裤夸垮挎跨胯块筷侩快宽款匡筐狂框矿眶旷况亏盔岿窥葵奎魁傀�\".split(\"\");\nfor(j = 0; j != D[191].length; ++j) if(D[191][j].charCodeAt(0) !== 0xFFFD) { e[D[191][j]] = 48896 + j; d[48896 + j] = D[191][j];}\nD[192] = \"����������������������������������������������������������������繞繟繠繡繢繣繤繥繦繧繨繩繪繫繬繭繮繯繰繱繲繳繴繵繶繷繸繹繺繻繼繽繾繿纀纁纃纄纅纆纇纈纉纊纋續纍纎纏纐纑纒纓纔纕纖纗纘纙纚纜纝纞�纮纴纻纼绖绤绬绹缊缐缞缷缹缻缼缽缾缿罀罁罃罆罇罈罉罊罋罌罍罎罏罒罓馈愧溃坤昆捆困括扩廓阔垃拉喇蜡腊辣啦莱来赖蓝婪栏拦篮阑兰澜谰揽览懒缆烂滥琅榔狼廊郎朗浪捞劳牢老佬姥酪烙涝勒乐雷镭蕾磊累儡垒擂肋类泪棱楞冷厘梨犁黎篱狸离漓理李里鲤礼莉荔吏栗丽厉励砾历利傈例俐�\".split(\"\");\nfor(j = 0; j != D[192].length; ++j) if(D[192][j].charCodeAt(0) !== 0xFFFD) { e[D[192][j]] = 49152 + j; d[49152 + j] = D[192][j];}\nD[193] = \"����������������������������������������������������������������罖罙罛罜罝罞罠罣罤罥罦罧罫罬罭罯罰罳罵罶罷罸罺罻罼罽罿羀羂羃羄羅羆羇羈羉羋羍羏羐羑羒羓羕羖羗羘羙羛羜羠羢羣羥羦羨義羪羫羬羭羮羱�羳羴羵羶羷羺羻羾翀翂翃翄翆翇翈翉翋翍翏翐翑習翓翖翗翙翚翛翜翝翞翢翣痢立粒沥隶力璃哩俩联莲连镰廉怜涟帘敛脸链恋炼练粮凉梁粱良两辆量晾亮谅撩聊僚疗燎寥辽潦了撂镣廖料列裂烈劣猎琳林磷霖临邻鳞淋凛赁吝拎玲菱零龄铃伶羚凌灵陵岭领另令溜琉榴硫馏留刘瘤流柳六龙聋咙笼窿�\".split(\"\");\nfor(j = 0; j != D[193].length; ++j) if(D[193][j].charCodeAt(0) !== 0xFFFD) { e[D[193][j]] = 49408 + j; d[49408 + j] = D[193][j];}\nD[194] = \"����������������������������������������������������������������翤翧翨翪翫翬翭翯翲翴翵翶翷翸翹翺翽翾翿耂耇耈耉耊耎耏耑耓耚耛耝耞耟耡耣耤耫耬耭耮耯耰耲耴耹耺耼耾聀聁聄聅聇聈聉聎聏聐聑聓聕聖聗�聙聛聜聝聞聟聠聡聢聣聤聥聦聧聨聫聬聭聮聯聰聲聳聴聵聶職聸聹聺聻聼聽隆垄拢陇楼娄搂篓漏陋芦卢颅庐炉掳卤虏鲁麓碌露路赂鹿潞禄录陆戮驴吕铝侣旅履屡缕虑氯律率滤绿峦挛孪滦卵乱掠略抡轮伦仑沦纶论萝螺罗逻锣箩骡裸落洛骆络妈麻玛码蚂马骂嘛吗埋买麦卖迈脉瞒馒蛮满蔓曼慢漫�\".split(\"\");\nfor(j = 0; j != D[194].length; ++j) if(D[194][j].charCodeAt(0) !== 0xFFFD) { e[D[194][j]] = 49664 + j; d[49664 + j] = D[194][j];}\nD[195] = \"����������������������������������������������������������������聾肁肂肅肈肊肍肎肏肐肑肒肔肕肗肙肞肣肦肧肨肬肰肳肵肶肸肹肻胅胇胈胉胊胋胏胐胑胒胓胔胕胘胟胠胢胣胦胮胵胷胹胻胾胿脀脁脃脄脅脇脈脋�脌脕脗脙脛脜脝脟脠脡脢脣脤脥脦脧脨脩脪脫脭脮脰脳脴脵脷脹脺脻脼脽脿谩芒茫盲氓忙莽猫茅锚毛矛铆卯茂冒帽貌贸么玫枚梅酶霉煤没眉媒镁每美昧寐妹媚门闷们萌蒙檬盟锰猛梦孟眯醚靡糜迷谜弥米秘觅泌蜜密幂棉眠绵冕免勉娩缅面苗描瞄藐秒渺庙妙蔑灭民抿皿敏悯闽明螟鸣铭名命谬摸�\".split(\"\");\nfor(j = 0; j != D[195].length; ++j) if(D[195][j].charCodeAt(0) !== 0xFFFD) { e[D[195][j]] = 49920 + j; d[49920 + j] = D[195][j];}\nD[196] = \"����������������������������������������������������������������腀腁腂腃腄腅腇腉腍腎腏腒腖腗腘腛腜腝腞腟腡腢腣腤腦腨腪腫腬腯腲腳腵腶腷腸膁膃膄膅膆膇膉膋膌膍膎膐膒膓膔膕膖膗膙膚膞膟膠膡膢膤膥�膧膩膫膬膭膮膯膰膱膲膴膵膶膷膸膹膼膽膾膿臄臅臇臈臉臋臍臎臏臐臑臒臓摹蘑模膜磨摩魔抹末莫墨默沫漠寞陌谋牟某拇牡亩姆母墓暮幕募慕木目睦牧穆拿哪呐钠那娜纳氖乃奶耐奈南男难囊挠脑恼闹淖呢馁内嫩能妮霓倪泥尼拟你匿腻逆溺蔫拈年碾撵捻念娘酿鸟尿捏聂孽啮镊镍涅您柠狞凝宁�\".split(\"\");\nfor(j = 0; j != D[196].length; ++j) if(D[196][j].charCodeAt(0) !== 0xFFFD) { e[D[196][j]] = 50176 + j; d[50176 + j] = D[196][j];}\nD[197] = \"����������������������������������������������������������������臔臕臖臗臘臙臚臛臜臝臞臟臠臡臢臤臥臦臨臩臫臮臯臰臱臲臵臶臷臸臹臺臽臿舃與興舉舊舋舎舏舑舓舕舖舗舘舙舚舝舠舤舥舦舧舩舮舲舺舼舽舿�艀艁艂艃艅艆艈艊艌艍艎艐艑艒艓艔艕艖艗艙艛艜艝艞艠艡艢艣艤艥艦艧艩拧泞牛扭钮纽脓浓农弄奴努怒女暖虐疟挪懦糯诺哦欧鸥殴藕呕偶沤啪趴爬帕怕琶拍排牌徘湃派攀潘盘磐盼畔判叛乓庞旁耪胖抛咆刨炮袍跑泡呸胚培裴赔陪配佩沛喷盆砰抨烹澎彭蓬棚硼篷膨朋鹏捧碰坯砒霹批披劈琵毗�\".split(\"\");\nfor(j = 0; j != D[197].length; ++j) if(D[197][j].charCodeAt(0) !== 0xFFFD) { e[D[197][j]] = 50432 + j; d[50432 + j] = D[197][j];}\nD[198] = \"����������������������������������������������������������������艪艫艬艭艱艵艶艷艸艻艼芀芁芃芅芆芇芉芌芐芓芔芕芖芚芛芞芠芢芣芧芲芵芶芺芻芼芿苀苂苃苅苆苉苐苖苙苚苝苢苧苨苩苪苬苭苮苰苲苳苵苶苸�苺苼苽苾苿茀茊茋茍茐茒茓茖茘茙茝茞茟茠茡茢茣茤茥茦茩茪茮茰茲茷茻茽啤脾疲皮匹痞僻屁譬篇偏片骗飘漂瓢票撇瞥拼频贫品聘乒坪苹萍平凭瓶评屏坡泼颇婆破魄迫粕剖扑铺仆莆葡菩蒲埔朴圃普浦谱曝瀑期欺栖戚妻七凄漆柒沏其棋奇歧畦崎脐齐旗祈祁骑起岂乞企启契砌器气迄弃汽泣讫掐�\".split(\"\");\nfor(j = 0; j != D[198].length; ++j) if(D[198][j].charCodeAt(0) !== 0xFFFD) { e[D[198][j]] = 50688 + j; d[50688 + j] = D[198][j];}\nD[199] = \"����������������������������������������������������������������茾茿荁荂荄荅荈荊荋荌荍荎荓荕荖荗荘荙荝荢荰荱荲荳荴荵荶荹荺荾荿莀莁莂莃莄莇莈莊莋莌莍莏莐莑莔莕莖莗莙莚莝莟莡莢莣莤莥莦莧莬莭莮�莯莵莻莾莿菂菃菄菆菈菉菋菍菎菐菑菒菓菕菗菙菚菛菞菢菣菤菦菧菨菫菬菭恰洽牵扦钎铅千迁签仟谦乾黔钱钳前潜遣浅谴堑嵌欠歉枪呛腔羌墙蔷强抢橇锹敲悄桥瞧乔侨巧鞘撬翘峭俏窍切茄且怯窃钦侵亲秦琴勤芹擒禽寝沁青轻氢倾卿清擎晴氰情顷请庆琼穷秋丘邱球求囚酋泅趋区蛆曲躯屈驱渠�\".split(\"\");\nfor(j = 0; j != D[199].length; ++j) if(D[199][j].charCodeAt(0) !== 0xFFFD) { e[D[199][j]] = 50944 + j; d[50944 + j] = D[199][j];}\nD[200] = \"����������������������������������������������������������������菮華菳菴菵菶菷菺菻菼菾菿萀萂萅萇萈萉萊萐萒萓萔萕萖萗萙萚萛萞萟萠萡萢萣萩萪萫萬萭萮萯萰萲萳萴萵萶萷萹萺萻萾萿葀葁葂葃葄葅葇葈葉�葊葋葌葍葎葏葐葒葓葔葕葖葘葝葞葟葠葢葤葥葦葧葨葪葮葯葰葲葴葷葹葻葼取娶龋趣去圈颧权醛泉全痊拳犬券劝缺炔瘸却鹊榷确雀裙群然燃冉染瓤壤攘嚷让饶扰绕惹热壬仁人忍韧任认刃妊纫扔仍日戎茸蓉荣融熔溶容绒冗揉柔肉茹蠕儒孺如辱乳汝入褥软阮蕊瑞锐闰润若弱撒洒萨腮鳃塞赛三叁�\".split(\"\");\nfor(j = 0; j != D[200].length; ++j) if(D[200][j].charCodeAt(0) !== 0xFFFD) { e[D[200][j]] = 51200 + j; d[51200 + j] = D[200][j];}\nD[201] = \"����������������������������������������������������������������葽葾葿蒀蒁蒃蒄蒅蒆蒊蒍蒏蒐蒑蒒蒓蒔蒕蒖蒘蒚蒛蒝蒞蒟蒠蒢蒣蒤蒥蒦蒧蒨蒩蒪蒫蒬蒭蒮蒰蒱蒳蒵蒶蒷蒻蒼蒾蓀蓂蓃蓅蓆蓇蓈蓋蓌蓎蓏蓒蓔蓕蓗�蓘蓙蓚蓛蓜蓞蓡蓢蓤蓧蓨蓩蓪蓫蓭蓮蓯蓱蓲蓳蓴蓵蓶蓷蓸蓹蓺蓻蓽蓾蔀蔁蔂伞散桑嗓丧搔骚扫嫂瑟色涩森僧莎砂杀刹沙纱傻啥煞筛晒珊苫杉山删煽衫闪陕擅赡膳善汕扇缮墒伤商赏晌上尚裳梢捎稍烧芍勺韶少哨邵绍奢赊蛇舌舍赦摄射慑涉社设砷申呻伸身深娠绅神沈审婶甚肾慎渗声生甥牲升绳�\".split(\"\");\nfor(j = 0; j != D[201].length; ++j) if(D[201][j].charCodeAt(0) !== 0xFFFD) { e[D[201][j]] = 51456 + j; d[51456 + j] = D[201][j];}\nD[202] = \"����������������������������������������������������������������蔃蔄蔅蔆蔇蔈蔉蔊蔋蔍蔎蔏蔐蔒蔔蔕蔖蔘蔙蔛蔜蔝蔞蔠蔢蔣蔤蔥蔦蔧蔨蔩蔪蔭蔮蔯蔰蔱蔲蔳蔴蔵蔶蔾蔿蕀蕁蕂蕄蕅蕆蕇蕋蕌蕍蕎蕏蕐蕑蕒蕓蕔蕕�蕗蕘蕚蕛蕜蕝蕟蕠蕡蕢蕣蕥蕦蕧蕩蕪蕫蕬蕭蕮蕯蕰蕱蕳蕵蕶蕷蕸蕼蕽蕿薀薁省盛剩胜圣师失狮施湿诗尸虱十石拾时什食蚀实识史矢使屎驶始式示士世柿事拭誓逝势是嗜噬适仕侍释饰氏市恃室视试收手首守寿授售受瘦兽蔬枢梳殊抒输叔舒淑疏书赎孰熟薯暑曙署蜀黍鼠属术述树束戍竖墅庶数漱�\".split(\"\");\nfor(j = 0; j != D[202].length; ++j) if(D[202][j].charCodeAt(0) !== 0xFFFD) { e[D[202][j]] = 51712 + j; d[51712 + j] = D[202][j];}\nD[203] = \"����������������������������������������������������������������薂薃薆薈薉薊薋薌薍薎薐薑薒薓薔薕薖薗薘薙薚薝薞薟薠薡薢薣薥薦薧薩薫薬薭薱薲薳薴薵薶薸薺薻薼薽薾薿藀藂藃藄藅藆藇藈藊藋藌藍藎藑藒�藔藖藗藘藙藚藛藝藞藟藠藡藢藣藥藦藧藨藪藫藬藭藮藯藰藱藲藳藴藵藶藷藸恕刷耍摔衰甩帅栓拴霜双爽谁水睡税吮瞬顺舜说硕朔烁斯撕嘶思私司丝死肆寺嗣四伺似饲巳松耸怂颂送宋讼诵搜艘擞嗽苏酥俗素速粟僳塑溯宿诉肃酸蒜算虽隋随绥髓碎岁穗遂隧祟孙损笋蓑梭唆缩琐索锁所塌他它她塔�\".split(\"\");\nfor(j = 0; j != D[203].length; ++j) if(D[203][j].charCodeAt(0) !== 0xFFFD) { e[D[203][j]] = 51968 + j; d[51968 + j] = D[203][j];}\nD[204] = \"����������������������������������������������������������������藹藺藼藽藾蘀蘁蘂蘃蘄蘆蘇蘈蘉蘊蘋蘌蘍蘎蘏蘐蘒蘓蘔蘕蘗蘘蘙蘚蘛蘜蘝蘞蘟蘠蘡蘢蘣蘤蘥蘦蘨蘪蘫蘬蘭蘮蘯蘰蘱蘲蘳蘴蘵蘶蘷蘹蘺蘻蘽蘾蘿虀�虁虂虃虄虅虆虇虈虉虊虋虌虒虓處虖虗虘虙虛虜虝號虠虡虣虤虥虦虧虨虩虪獭挞蹋踏胎苔抬台泰酞太态汰坍摊贪瘫滩坛檀痰潭谭谈坦毯袒碳探叹炭汤塘搪堂棠膛唐糖倘躺淌趟烫掏涛滔绦萄桃逃淘陶讨套特藤腾疼誊梯剔踢锑提题蹄啼体替嚏惕涕剃屉天添填田甜恬舔腆挑条迢眺跳贴铁帖厅听烃�\".split(\"\");\nfor(j = 0; j != D[204].length; ++j) if(D[204][j].charCodeAt(0) !== 0xFFFD) { e[D[204][j]] = 52224 + j; d[52224 + j] = D[204][j];}\nD[205] = \"����������������������������������������������������������������虭虯虰虲虳虴虵虶虷虸蚃蚄蚅蚆蚇蚈蚉蚎蚏蚐蚑蚒蚔蚖蚗蚘蚙蚚蚛蚞蚟蚠蚡蚢蚥蚦蚫蚭蚮蚲蚳蚷蚸蚹蚻蚼蚽蚾蚿蛁蛂蛃蛅蛈蛌蛍蛒蛓蛕蛖蛗蛚蛜�蛝蛠蛡蛢蛣蛥蛦蛧蛨蛪蛫蛬蛯蛵蛶蛷蛺蛻蛼蛽蛿蜁蜄蜅蜆蜋蜌蜎蜏蜐蜑蜔蜖汀廷停亭庭挺艇通桐酮瞳同铜彤童桶捅筒统痛偷投头透凸秃突图徒途涂屠土吐兔湍团推颓腿蜕褪退吞屯臀拖托脱鸵陀驮驼椭妥拓唾挖哇蛙洼娃瓦袜歪外豌弯湾玩顽丸烷完碗挽晚皖惋宛婉万腕汪王亡枉网往旺望忘妄威�\".split(\"\");\nfor(j = 0; j != D[205].length; ++j) if(D[205][j].charCodeAt(0) !== 0xFFFD) { e[D[205][j]] = 52480 + j; d[52480 + j] = D[205][j];}\nD[206] = \"����������������������������������������������������������������蜙蜛蜝蜟蜠蜤蜦蜧蜨蜪蜫蜬蜭蜯蜰蜲蜳蜵蜶蜸蜹蜺蜼蜽蝀蝁蝂蝃蝄蝅蝆蝊蝋蝍蝏蝐蝑蝒蝔蝕蝖蝘蝚蝛蝜蝝蝞蝟蝡蝢蝦蝧蝨蝩蝪蝫蝬蝭蝯蝱蝲蝳蝵�蝷蝸蝹蝺蝿螀螁螄螆螇螉螊螌螎螏螐螑螒螔螕螖螘螙螚螛螜螝螞螠螡螢螣螤巍微危韦违桅围唯惟为潍维苇萎委伟伪尾纬未蔚味畏胃喂魏位渭谓尉慰卫瘟温蚊文闻纹吻稳紊问嗡翁瓮挝蜗涡窝我斡卧握沃巫呜钨乌污诬屋无芜梧吾吴毋武五捂午舞伍侮坞戊雾晤物勿务悟误昔熙析西硒矽晰嘻吸锡牺�\".split(\"\");\nfor(j = 0; j != D[206].length; ++j) if(D[206][j].charCodeAt(0) !== 0xFFFD) { e[D[206][j]] = 52736 + j; d[52736 + j] = D[206][j];}\nD[207] = \"����������������������������������������������������������������螥螦螧螩螪螮螰螱螲螴螶螷螸螹螻螼螾螿蟁蟂蟃蟄蟅蟇蟈蟉蟌蟍蟎蟏蟐蟔蟕蟖蟗蟘蟙蟚蟜蟝蟞蟟蟡蟢蟣蟤蟦蟧蟨蟩蟫蟬蟭蟯蟰蟱蟲蟳蟴蟵蟶蟷蟸�蟺蟻蟼蟽蟿蠀蠁蠂蠄蠅蠆蠇蠈蠉蠋蠌蠍蠎蠏蠐蠑蠒蠔蠗蠘蠙蠚蠜蠝蠞蠟蠠蠣稀息希悉膝夕惜熄烯溪汐犀檄袭席习媳喜铣洗系隙戏细瞎虾匣霞辖暇峡侠狭下厦夏吓掀锨先仙鲜纤咸贤衔舷闲涎弦嫌显险现献县腺馅羡宪陷限线相厢镶香箱襄湘乡翔祥详想响享项巷橡像向象萧硝霄削哮嚣销消宵淆晓�\".split(\"\");\nfor(j = 0; j != D[207].length; ++j) if(D[207][j].charCodeAt(0) !== 0xFFFD) { e[D[207][j]] = 52992 + j; d[52992 + j] = D[207][j];}\nD[208] = \"����������������������������������������������������������������蠤蠥蠦蠧蠨蠩蠪蠫蠬蠭蠮蠯蠰蠱蠳蠴蠵蠶蠷蠸蠺蠻蠽蠾蠿衁衂衃衆衇衈衉衊衋衎衏衐衑衒術衕衖衘衚衛衜衝衞衟衠衦衧衪衭衯衱衳衴衵衶衸衹衺�衻衼袀袃袆袇袉袊袌袎袏袐袑袓袔袕袗袘袙袚袛袝袞袟袠袡袣袥袦袧袨袩袪小孝校肖啸笑效楔些歇蝎鞋协挟携邪斜胁谐写械卸蟹懈泄泻谢屑薪芯锌欣辛新忻心信衅星腥猩惺兴刑型形邢行醒幸杏性姓兄凶胸匈汹雄熊休修羞朽嗅锈秀袖绣墟戌需虚嘘须徐许蓄酗叙旭序畜恤絮婿绪续轩喧宣悬旋玄�\".split(\"\");\nfor(j = 0; j != D[208].length; ++j) if(D[208][j].charCodeAt(0) !== 0xFFFD) { e[D[208][j]] = 53248 + j; d[53248 + j] = D[208][j];}\nD[209] = \"����������������������������������������������������������������袬袮袯袰袲袳袴袵袶袸袹袺袻袽袾袿裀裃裄裇裈裊裋裌裍裏裐裑裓裖裗裚裛補裝裞裠裡裦裧裩裪裫裬裭裮裯裲裵裶裷裺裻製裿褀褁褃褄褅褆複褈�褉褋褌褍褎褏褑褔褕褖褗褘褜褝褞褟褠褢褣褤褦褧褨褩褬褭褮褯褱褲褳褵褷选癣眩绚靴薛学穴雪血勋熏循旬询寻驯巡殉汛训讯逊迅压押鸦鸭呀丫芽牙蚜崖衙涯雅哑亚讶焉咽阉烟淹盐严研蜒岩延言颜阎炎沿奄掩眼衍演艳堰燕厌砚雁唁彦焰宴谚验殃央鸯秧杨扬佯疡羊洋阳氧仰痒养样漾邀腰妖瑶�\".split(\"\");\nfor(j = 0; j != D[209].length; ++j) if(D[209][j].charCodeAt(0) !== 0xFFFD) { e[D[209][j]] = 53504 + j; d[53504 + j] = D[209][j];}\nD[210] = \"����������������������������������������������������������������褸褹褺褻褼褽褾褿襀襂襃襅襆襇襈襉襊襋襌襍襎襏襐襑襒襓襔襕襖襗襘襙襚襛襜襝襠襡襢襣襤襥襧襨襩襪襫襬襭襮襯襰襱襲襳襴襵襶襷襸襹襺襼�襽襾覀覂覄覅覇覈覉覊見覌覍覎規覐覑覒覓覔覕視覗覘覙覚覛覜覝覞覟覠覡摇尧遥窑谣姚咬舀药要耀椰噎耶爷野冶也页掖业叶曳腋夜液一壹医揖铱依伊衣颐夷遗移仪胰疑沂宜姨彝椅蚁倚已乙矣以艺抑易邑屹亿役臆逸肄疫亦裔意毅忆义益溢诣议谊译异翼翌绎茵荫因殷音阴姻吟银淫寅饮尹引隐�\".split(\"\");\nfor(j = 0; j != D[210].length; ++j) if(D[210][j].charCodeAt(0) !== 0xFFFD) { e[D[210][j]] = 53760 + j; d[53760 + j] = D[210][j];}\nD[211] = \"����������������������������������������������������������������覢覣覤覥覦覧覨覩親覫覬覭覮覯覰覱覲観覴覵覶覷覸覹覺覻覼覽覾覿觀觃觍觓觔觕觗觘觙觛觝觟觠觡觢觤觧觨觩觪觬觭觮觰觱觲觴觵觶觷觸觹觺�觻觼觽觾觿訁訂訃訄訅訆計訉訊訋訌訍討訏訐訑訒訓訔訕訖託記訙訚訛訜訝印英樱婴鹰应缨莹萤营荧蝇迎赢盈影颖硬映哟拥佣臃痈庸雍踊蛹咏泳涌永恿勇用幽优悠忧尤由邮铀犹油游酉有友右佑釉诱又幼迂淤于盂榆虞愚舆余俞逾鱼愉渝渔隅予娱雨与屿禹宇语羽玉域芋郁吁遇喻峪御愈欲狱育誉�\".split(\"\");\nfor(j = 0; j != D[211].length; ++j) if(D[211][j].charCodeAt(0) !== 0xFFFD) { e[D[211][j]] = 54016 + j; d[54016 + j] = D[211][j];}\nD[212] = \"����������������������������������������������������������������訞訟訠訡訢訣訤訥訦訧訨訩訪訫訬設訮訯訰許訲訳訴訵訶訷訸訹診註証訽訿詀詁詂詃詄詅詆詇詉詊詋詌詍詎詏詐詑詒詓詔評詖詗詘詙詚詛詜詝詞�詟詠詡詢詣詤詥試詧詨詩詪詫詬詭詮詯詰話該詳詴詵詶詷詸詺詻詼詽詾詿誀浴寓裕预豫驭鸳渊冤元垣袁原援辕园员圆猿源缘远苑愿怨院曰约越跃钥岳粤月悦阅耘云郧匀陨允运蕴酝晕韵孕匝砸杂栽哉灾宰载再在咱攒暂赞赃脏葬遭糟凿藻枣早澡蚤躁噪造皂灶燥责择则泽贼怎增憎曾赠扎喳渣札轧�\".split(\"\");\nfor(j = 0; j != D[212].length; ++j) if(D[212][j].charCodeAt(0) !== 0xFFFD) { e[D[212][j]] = 54272 + j; d[54272 + j] = D[212][j];}\nD[213] = \"����������������������������������������������������������������誁誂誃誄誅誆誇誈誋誌認誎誏誐誑誒誔誕誖誗誘誙誚誛誜誝語誟誠誡誢誣誤誥誦誧誨誩說誫説読誮誯誰誱課誳誴誵誶誷誸誹誺誻誼誽誾調諀諁諂�諃諄諅諆談諈諉諊請諌諍諎諏諐諑諒諓諔諕論諗諘諙諚諛諜諝諞諟諠諡諢諣铡闸眨栅榨咋乍炸诈摘斋宅窄债寨瞻毡詹粘沾盏斩辗崭展蘸栈占战站湛绽樟章彰漳张掌涨杖丈帐账仗胀瘴障招昭找沼赵照罩兆肇召遮折哲蛰辙者锗蔗这浙珍斟真甄砧臻贞针侦枕疹诊震振镇阵蒸挣睁征狰争怔整拯正政�\".split(\"\");\nfor(j = 0; j != D[213].length; ++j) if(D[213][j].charCodeAt(0) !== 0xFFFD) { e[D[213][j]] = 54528 + j; d[54528 + j] = D[213][j];}\nD[214] = \"����������������������������������������������������������������諤諥諦諧諨諩諪諫諬諭諮諯諰諱諲諳諴諵諶諷諸諹諺諻諼諽諾諿謀謁謂謃謄謅謆謈謉謊謋謌謍謎謏謐謑謒謓謔謕謖謗謘謙謚講謜謝謞謟謠謡謢謣�謤謥謧謨謩謪謫謬謭謮謯謰謱謲謳謴謵謶謷謸謹謺謻謼謽謾謿譀譁譂譃譄譅帧症郑证芝枝支吱蜘知肢脂汁之织职直植殖执值侄址指止趾只旨纸志挚掷至致置帜峙制智秩稚质炙痔滞治窒中盅忠钟衷终种肿重仲众舟周州洲诌粥轴肘帚咒皱宙昼骤珠株蛛朱猪诸诛逐竹烛煮拄瞩嘱主著柱助蛀贮铸筑�\".split(\"\");\nfor(j = 0; j != D[214].length; ++j) if(D[214][j].charCodeAt(0) !== 0xFFFD) { e[D[214][j]] = 54784 + j; d[54784 + j] = D[214][j];}\nD[215] = \"����������������������������������������������������������������譆譇譈證譊譋譌譍譎譏譐譑譒譓譔譕譖譗識譙譚譛譜譝譞譟譠譡譢譣譤譥譧譨譩譪譫譭譮譯議譱譲譳譴譵譶護譸譹譺譻譼譽譾譿讀讁讂讃讄讅讆�讇讈讉變讋讌讍讎讏讐讑讒讓讔讕讖讗讘讙讚讛讜讝讞讟讬讱讻诇诐诪谉谞住注祝驻抓爪拽专砖转撰赚篆桩庄装妆撞壮状椎锥追赘坠缀谆准捉拙卓桌琢茁酌啄着灼浊兹咨资姿滋淄孜紫仔籽滓子自渍字鬃棕踪宗综总纵邹走奏揍租足卒族祖诅阻组钻纂嘴醉最罪尊遵昨左佐柞做作坐座�\".split(\"\");\nfor(j = 0; j != D[215].length; ++j) if(D[215][j].charCodeAt(0) !== 0xFFFD) { e[D[215][j]] = 55040 + j; d[55040 + j] = D[215][j];}\nD[216] = \"����������������������������������������������������������������谸谹谺谻谼谽谾谿豀豂豃豄豅豈豊豋豍豎豏豐豑豒豓豔豖豗豘豙豛豜豝豞豟豠豣豤豥豦豧豨豩豬豭豮豯豰豱豲豴豵豶豷豻豼豽豾豿貀貁貃貄貆貇�貈貋貍貎貏貐貑貒貓貕貖貗貙貚貛貜貝貞貟負財貢貣貤貥貦貧貨販貪貫責貭亍丌兀丐廿卅丕亘丞鬲孬噩丨禺丿匕乇夭爻卮氐囟胤馗毓睾鼗丶亟鼐乜乩亓芈孛啬嘏仄厍厝厣厥厮靥赝匚叵匦匮匾赜卦卣刂刈刎刭刳刿剀剌剞剡剜蒯剽劂劁劐劓冂罔亻仃仉仂仨仡仫仞伛仳伢佤仵伥伧伉伫佞佧攸佚佝�\".split(\"\");\nfor(j = 0; j != D[216].length; ++j) if(D[216][j].charCodeAt(0) !== 0xFFFD) { e[D[216][j]] = 55296 + j; d[55296 + j] = D[216][j];}\nD[217] = \"����������������������������������������������������������������貮貯貰貱貲貳貴貵貶買貸貹貺費貼貽貾貿賀賁賂賃賄賅賆資賈賉賊賋賌賍賎賏賐賑賒賓賔賕賖賗賘賙賚賛賜賝賞賟賠賡賢賣賤賥賦賧賨賩質賫賬�賭賮賯賰賱賲賳賴賵賶賷賸賹賺賻購賽賾賿贀贁贂贃贄贅贆贇贈贉贊贋贌贍佟佗伲伽佶佴侑侉侃侏佾佻侪佼侬侔俦俨俪俅俚俣俜俑俟俸倩偌俳倬倏倮倭俾倜倌倥倨偾偃偕偈偎偬偻傥傧傩傺僖儆僭僬僦僮儇儋仝氽佘佥俎龠汆籴兮巽黉馘冁夔勹匍訇匐凫夙兕亠兖亳衮袤亵脔裒禀嬴蠃羸冫冱冽冼�\".split(\"\");\nfor(j = 0; j != D[217].length; ++j) if(D[217][j].charCodeAt(0) !== 0xFFFD) { e[D[217][j]] = 55552 + j; d[55552 + j] = D[217][j];}\nD[218] = \"����������������������������������������������������������������贎贏贐贑贒贓贔贕贖贗贘贙贚贛贜贠赑赒赗赟赥赨赩赪赬赮赯赱赲赸赹赺赻赼赽赾赿趀趂趃趆趇趈趉趌趍趎趏趐趒趓趕趖趗趘趙趚趛趜趝趞趠趡�趢趤趥趦趧趨趩趪趫趬趭趮趯趰趲趶趷趹趻趽跀跁跂跅跇跈跉跊跍跐跒跓跔凇冖冢冥讠讦讧讪讴讵讷诂诃诋诏诎诒诓诔诖诘诙诜诟诠诤诨诩诮诰诳诶诹诼诿谀谂谄谇谌谏谑谒谔谕谖谙谛谘谝谟谠谡谥谧谪谫谮谯谲谳谵谶卩卺阝阢阡阱阪阽阼陂陉陔陟陧陬陲陴隈隍隗隰邗邛邝邙邬邡邴邳邶邺�\".split(\"\");\nfor(j = 0; j != D[218].length; ++j) if(D[218][j].charCodeAt(0) !== 0xFFFD) { e[D[218][j]] = 55808 + j; d[55808 + j] = D[218][j];}\nD[219] = \"����������������������������������������������������������������跕跘跙跜跠跡跢跥跦跧跩跭跮跰跱跲跴跶跼跾跿踀踁踂踃踄踆踇踈踋踍踎踐踑踒踓踕踖踗踘踙踚踛踜踠踡踤踥踦踧踨踫踭踰踲踳踴踶踷踸踻踼踾�踿蹃蹅蹆蹌蹍蹎蹏蹐蹓蹔蹕蹖蹗蹘蹚蹛蹜蹝蹞蹟蹠蹡蹢蹣蹤蹥蹧蹨蹪蹫蹮蹱邸邰郏郅邾郐郄郇郓郦郢郜郗郛郫郯郾鄄鄢鄞鄣鄱鄯鄹酃酆刍奂劢劬劭劾哿勐勖勰叟燮矍廴凵凼鬯厶弁畚巯坌垩垡塾墼壅壑圩圬圪圳圹圮圯坜圻坂坩垅坫垆坼坻坨坭坶坳垭垤垌垲埏垧垴垓垠埕埘埚埙埒垸埴埯埸埤埝�\".split(\"\");\nfor(j = 0; j != D[219].length; ++j) if(D[219][j].charCodeAt(0) !== 0xFFFD) { e[D[219][j]] = 56064 + j; d[56064 + j] = D[219][j];}\nD[220] = \"����������������������������������������������������������������蹳蹵蹷蹸蹹蹺蹻蹽蹾躀躂躃躄躆躈躉躊躋躌躍躎躑躒躓躕躖躗躘躙躚躛躝躟躠躡躢躣躤躥躦躧躨躩躪躭躮躰躱躳躴躵躶躷躸躹躻躼躽躾躿軀軁軂�軃軄軅軆軇軈軉車軋軌軍軏軐軑軒軓軔軕軖軗軘軙軚軛軜軝軞軟軠軡転軣軤堋堍埽埭堀堞堙塄堠塥塬墁墉墚墀馨鼙懿艹艽艿芏芊芨芄芎芑芗芙芫芸芾芰苈苊苣芘芷芮苋苌苁芩芴芡芪芟苄苎芤苡茉苷苤茏茇苜苴苒苘茌苻苓茑茚茆茔茕苠苕茜荑荛荜茈莒茼茴茱莛荞茯荏荇荃荟荀茗荠茭茺茳荦荥�\".split(\"\");\nfor(j = 0; j != D[220].length; ++j) if(D[220][j].charCodeAt(0) !== 0xFFFD) { e[D[220][j]] = 56320 + j; d[56320 + j] = D[220][j];}\nD[221] = \"����������������������������������������������������������������軥軦軧軨軩軪軫軬軭軮軯軰軱軲軳軴軵軶軷軸軹軺軻軼軽軾軿輀輁輂較輄輅輆輇輈載輊輋輌輍輎輏輐輑輒輓輔輕輖輗輘輙輚輛輜輝輞輟輠輡輢輣�輤輥輦輧輨輩輪輫輬輭輮輯輰輱輲輳輴輵輶輷輸輹輺輻輼輽輾輿轀轁轂轃轄荨茛荩荬荪荭荮莰荸莳莴莠莪莓莜莅荼莶莩荽莸荻莘莞莨莺莼菁萁菥菘堇萘萋菝菽菖萜萸萑萆菔菟萏萃菸菹菪菅菀萦菰菡葜葑葚葙葳蒇蒈葺蒉葸萼葆葩葶蒌蒎萱葭蓁蓍蓐蓦蒽蓓蓊蒿蒺蓠蒡蒹蒴蒗蓥蓣蔌甍蔸蓰蔹蔟蔺�\".split(\"\");\nfor(j = 0; j != D[221].length; ++j) if(D[221][j].charCodeAt(0) !== 0xFFFD) { e[D[221][j]] = 56576 + j; d[56576 + j] = D[221][j];}\nD[222] = \"����������������������������������������������������������������轅轆轇轈轉轊轋轌轍轎轏轐轑轒轓轔轕轖轗轘轙轚轛轜轝轞轟轠轡轢轣轤轥轪辀辌辒辝辠辡辢辤辥辦辧辪辬辭辮辯農辳辴辵辷辸辺辻込辿迀迃迆�迉迊迋迌迍迏迒迖迗迚迠迡迣迧迬迯迱迲迴迵迶迺迻迼迾迿逇逈逌逎逓逕逘蕖蔻蓿蓼蕙蕈蕨蕤蕞蕺瞢蕃蕲蕻薤薨薇薏蕹薮薜薅薹薷薰藓藁藜藿蘧蘅蘩蘖蘼廾弈夼奁耷奕奚奘匏尢尥尬尴扌扪抟抻拊拚拗拮挢拶挹捋捃掭揶捱捺掎掴捭掬掊捩掮掼揲揸揠揿揄揞揎摒揆掾摅摁搋搛搠搌搦搡摞撄摭撖�\".split(\"\");\nfor(j = 0; j != D[222].length; ++j) if(D[222][j].charCodeAt(0) !== 0xFFFD) { e[D[222][j]] = 56832 + j; d[56832 + j] = D[222][j];}\nD[223] = \"����������������������������������������������������������������這逜連逤逥逧逨逩逪逫逬逰週進逳逴逷逹逺逽逿遀遃遅遆遈遉遊運遌過達違遖遙遚遜遝遞遟遠遡遤遦遧適遪遫遬遯遰遱遲遳遶遷選遹遺遻遼遾邁�還邅邆邇邉邊邌邍邎邏邐邒邔邖邘邚邜邞邟邠邤邥邧邨邩邫邭邲邷邼邽邿郀摺撷撸撙撺擀擐擗擤擢攉攥攮弋忒甙弑卟叱叽叩叨叻吒吖吆呋呒呓呔呖呃吡呗呙吣吲咂咔呷呱呤咚咛咄呶呦咝哐咭哂咴哒咧咦哓哔呲咣哕咻咿哌哙哚哜咩咪咤哝哏哞唛哧唠哽唔哳唢唣唏唑唧唪啧喏喵啉啭啁啕唿啐唼�\".split(\"\");\nfor(j = 0; j != D[223].length; ++j) if(D[223][j].charCodeAt(0) !== 0xFFFD) { e[D[223][j]] = 57088 + j; d[57088 + j] = D[223][j];}\nD[224] = \"����������������������������������������������������������������郂郃郆郈郉郋郌郍郒郔郕郖郘郙郚郞郟郠郣郤郥郩郪郬郮郰郱郲郳郵郶郷郹郺郻郼郿鄀鄁鄃鄅鄆鄇鄈鄉鄊鄋鄌鄍鄎鄏鄐鄑鄒鄓鄔鄕鄖鄗鄘鄚鄛鄜�鄝鄟鄠鄡鄤鄥鄦鄧鄨鄩鄪鄫鄬鄭鄮鄰鄲鄳鄴鄵鄶鄷鄸鄺鄻鄼鄽鄾鄿酀酁酂酄唷啖啵啶啷唳唰啜喋嗒喃喱喹喈喁喟啾嗖喑啻嗟喽喾喔喙嗪嗷嗉嘟嗑嗫嗬嗔嗦嗝嗄嗯嗥嗲嗳嗌嗍嗨嗵嗤辔嘞嘈嘌嘁嘤嘣嗾嘀嘧嘭噘嘹噗嘬噍噢噙噜噌噔嚆噤噱噫噻噼嚅嚓嚯囔囗囝囡囵囫囹囿圄圊圉圜帏帙帔帑帱帻帼�\".split(\"\");\nfor(j = 0; j != D[224].length; ++j) if(D[224][j].charCodeAt(0) !== 0xFFFD) { e[D[224][j]] = 57344 + j; d[57344 + j] = D[224][j];}\nD[225] = \"����������������������������������������������������������������酅酇酈酑酓酔酕酖酘酙酛酜酟酠酦酧酨酫酭酳酺酻酼醀醁醂醃醄醆醈醊醎醏醓醔醕醖醗醘醙醜醝醞醟醠醡醤醥醦醧醨醩醫醬醰醱醲醳醶醷醸醹醻�醼醽醾醿釀釁釂釃釄釅釆釈釋釐釒釓釔釕釖釗釘釙釚釛針釞釟釠釡釢釣釤釥帷幄幔幛幞幡岌屺岍岐岖岈岘岙岑岚岜岵岢岽岬岫岱岣峁岷峄峒峤峋峥崂崃崧崦崮崤崞崆崛嵘崾崴崽嵬嵛嵯嵝嵫嵋嵊嵩嵴嶂嶙嶝豳嶷巅彳彷徂徇徉後徕徙徜徨徭徵徼衢彡犭犰犴犷犸狃狁狎狍狒狨狯狩狲狴狷猁狳猃狺�\".split(\"\");\nfor(j = 0; j != D[225].length; ++j) if(D[225][j].charCodeAt(0) !== 0xFFFD) { e[D[225][j]] = 57600 + j; d[57600 + j] = D[225][j];}\nD[226] = \"����������������������������������������������������������������釦釧釨釩釪釫釬釭釮釯釰釱釲釳釴釵釶釷釸釹釺釻釼釽釾釿鈀鈁鈂鈃鈄鈅鈆鈇鈈鈉鈊鈋鈌鈍鈎鈏鈐鈑鈒鈓鈔鈕鈖鈗鈘鈙鈚鈛鈜鈝鈞鈟鈠鈡鈢鈣鈤�鈥鈦鈧鈨鈩鈪鈫鈬鈭鈮鈯鈰鈱鈲鈳鈴鈵鈶鈷鈸鈹鈺鈻鈼鈽鈾鈿鉀鉁鉂鉃鉄鉅狻猗猓猡猊猞猝猕猢猹猥猬猸猱獐獍獗獠獬獯獾舛夥飧夤夂饣饧饨饩饪饫饬饴饷饽馀馄馇馊馍馐馑馓馔馕庀庑庋庖庥庠庹庵庾庳赓廒廑廛廨廪膺忄忉忖忏怃忮怄忡忤忾怅怆忪忭忸怙怵怦怛怏怍怩怫怊怿怡恸恹恻恺恂�\".split(\"\");\nfor(j = 0; j != D[226].length; ++j) if(D[226][j].charCodeAt(0) !== 0xFFFD) { e[D[226][j]] = 57856 + j; d[57856 + j] = D[226][j];}\nD[227] = \"����������������������������������������������������������������鉆鉇鉈鉉鉊鉋鉌鉍鉎鉏鉐鉑鉒鉓鉔鉕鉖鉗鉘鉙鉚鉛鉜鉝鉞鉟鉠鉡鉢鉣鉤鉥鉦鉧鉨鉩鉪鉫鉬鉭鉮鉯鉰鉱鉲鉳鉵鉶鉷鉸鉹鉺鉻鉼鉽鉾鉿銀銁銂銃銄銅�銆銇銈銉銊銋銌銍銏銐銑銒銓銔銕銖銗銘銙銚銛銜銝銞銟銠銡銢銣銤銥銦銧恪恽悖悚悭悝悃悒悌悛惬悻悱惝惘惆惚悴愠愦愕愣惴愀愎愫慊慵憬憔憧憷懔懵忝隳闩闫闱闳闵闶闼闾阃阄阆阈阊阋阌阍阏阒阕阖阗阙阚丬爿戕氵汔汜汊沣沅沐沔沌汨汩汴汶沆沩泐泔沭泷泸泱泗沲泠泖泺泫泮沱泓泯泾�\".split(\"\");\nfor(j = 0; j != D[227].length; ++j) if(D[227][j].charCodeAt(0) !== 0xFFFD) { e[D[227][j]] = 58112 + j; d[58112 + j] = D[227][j];}\nD[228] = \"����������������������������������������������������������������銨銩銪銫銬銭銯銰銱銲銳銴銵銶銷銸銹銺銻銼銽銾銿鋀鋁鋂鋃鋄鋅鋆鋇鋉鋊鋋鋌鋍鋎鋏鋐鋑鋒鋓鋔鋕鋖鋗鋘鋙鋚鋛鋜鋝鋞鋟鋠鋡鋢鋣鋤鋥鋦鋧鋨�鋩鋪鋫鋬鋭鋮鋯鋰鋱鋲鋳鋴鋵鋶鋷鋸鋹鋺鋻鋼鋽鋾鋿錀錁錂錃錄錅錆錇錈錉洹洧洌浃浈洇洄洙洎洫浍洮洵洚浏浒浔洳涑浯涞涠浞涓涔浜浠浼浣渚淇淅淞渎涿淠渑淦淝淙渖涫渌涮渫湮湎湫溲湟溆湓湔渲渥湄滟溱溘滠漭滢溥溧溽溻溷滗溴滏溏滂溟潢潆潇漤漕滹漯漶潋潴漪漉漩澉澍澌潸潲潼潺濑�\".split(\"\");\nfor(j = 0; j != D[228].length; ++j) if(D[228][j].charCodeAt(0) !== 0xFFFD) { e[D[228][j]] = 58368 + j; d[58368 + j] = D[228][j];}\nD[229] = \"����������������������������������������������������������������錊錋錌錍錎錏錐錑錒錓錔錕錖錗錘錙錚錛錜錝錞錟錠錡錢錣錤錥錦錧錨錩錪錫錬錭錮錯錰錱録錳錴錵錶錷錸錹錺錻錼錽錿鍀鍁鍂鍃鍄鍅鍆鍇鍈鍉�鍊鍋鍌鍍鍎鍏鍐鍑鍒鍓鍔鍕鍖鍗鍘鍙鍚鍛鍜鍝鍞鍟鍠鍡鍢鍣鍤鍥鍦鍧鍨鍩鍫濉澧澹澶濂濡濮濞濠濯瀚瀣瀛瀹瀵灏灞宀宄宕宓宥宸甯骞搴寤寮褰寰蹇謇辶迓迕迥迮迤迩迦迳迨逅逄逋逦逑逍逖逡逵逶逭逯遄遑遒遐遨遘遢遛暹遴遽邂邈邃邋彐彗彖彘尻咫屐屙孱屣屦羼弪弩弭艴弼鬻屮妁妃妍妩妪妣�\".split(\"\");\nfor(j = 0; j != D[229].length; ++j) if(D[229][j].charCodeAt(0) !== 0xFFFD) { e[D[229][j]] = 58624 + j; d[58624 + j] = D[229][j];}\nD[230] = \"����������������������������������������������������������������鍬鍭鍮鍯鍰鍱鍲鍳鍴鍵鍶鍷鍸鍹鍺鍻鍼鍽鍾鍿鎀鎁鎂鎃鎄鎅鎆鎇鎈鎉鎊鎋鎌鎍鎎鎐鎑鎒鎓鎔鎕鎖鎗鎘鎙鎚鎛鎜鎝鎞鎟鎠鎡鎢鎣鎤鎥鎦鎧鎨鎩鎪鎫�鎬鎭鎮鎯鎰鎱鎲鎳鎴鎵鎶鎷鎸鎹鎺鎻鎼鎽鎾鎿鏀鏁鏂鏃鏄鏅鏆鏇鏈鏉鏋鏌鏍妗姊妫妞妤姒妲妯姗妾娅娆姝娈姣姘姹娌娉娲娴娑娣娓婀婧婊婕娼婢婵胬媪媛婷婺媾嫫媲嫒嫔媸嫠嫣嫱嫖嫦嫘嫜嬉嬗嬖嬲嬷孀尕尜孚孥孳孑孓孢驵驷驸驺驿驽骀骁骅骈骊骐骒骓骖骘骛骜骝骟骠骢骣骥骧纟纡纣纥纨纩�\".split(\"\");\nfor(j = 0; j != D[230].length; ++j) if(D[230][j].charCodeAt(0) !== 0xFFFD) { e[D[230][j]] = 58880 + j; d[58880 + j] = D[230][j];}\nD[231] = \"����������������������������������������������������������������鏎鏏鏐鏑鏒鏓鏔鏕鏗鏘鏙鏚鏛鏜鏝鏞鏟鏠鏡鏢鏣鏤鏥鏦鏧鏨鏩鏪鏫鏬鏭鏮鏯鏰鏱鏲鏳鏴鏵鏶鏷鏸鏹鏺鏻鏼鏽鏾鏿鐀鐁鐂鐃鐄鐅鐆鐇鐈鐉鐊鐋鐌鐍�鐎鐏鐐鐑鐒鐓鐔鐕鐖鐗鐘鐙鐚鐛鐜鐝鐞鐟鐠鐡鐢鐣鐤鐥鐦鐧鐨鐩鐪鐫鐬鐭鐮纭纰纾绀绁绂绉绋绌绐绔绗绛绠绡绨绫绮绯绱绲缍绶绺绻绾缁缂缃缇缈缋缌缏缑缒缗缙缜缛缟缡缢缣缤缥缦缧缪缫缬缭缯缰缱缲缳缵幺畿巛甾邕玎玑玮玢玟珏珂珑玷玳珀珉珈珥珙顼琊珩珧珞玺珲琏琪瑛琦琥琨琰琮琬�\".split(\"\");\nfor(j = 0; j != D[231].length; ++j) if(D[231][j].charCodeAt(0) !== 0xFFFD) { e[D[231][j]] = 59136 + j; d[59136 + j] = D[231][j];}\nD[232] = \"����������������������������������������������������������������鐯鐰鐱鐲鐳鐴鐵鐶鐷鐸鐹鐺鐻鐼鐽鐿鑀鑁鑂鑃鑄鑅鑆鑇鑈鑉鑊鑋鑌鑍鑎鑏鑐鑑鑒鑓鑔鑕鑖鑗鑘鑙鑚鑛鑜鑝鑞鑟鑠鑡鑢鑣鑤鑥鑦鑧鑨鑩鑪鑬鑭鑮鑯�鑰鑱鑲鑳鑴鑵鑶鑷鑸鑹鑺鑻鑼鑽鑾鑿钀钁钂钃钄钑钖钘铇铏铓铔铚铦铻锜锠琛琚瑁瑜瑗瑕瑙瑷瑭瑾璜璎璀璁璇璋璞璨璩璐璧瓒璺韪韫韬杌杓杞杈杩枥枇杪杳枘枧杵枨枞枭枋杷杼柰栉柘栊柩枰栌柙枵柚枳柝栀柃枸柢栎柁柽栲栳桠桡桎桢桄桤梃栝桕桦桁桧桀栾桊桉栩梵梏桴桷梓桫棂楮棼椟椠棹�\".split(\"\");\nfor(j = 0; j != D[232].length; ++j) if(D[232][j].charCodeAt(0) !== 0xFFFD) { e[D[232][j]] = 59392 + j; d[59392 + j] = D[232][j];}\nD[233] = \"����������������������������������������������������������������锧锳锽镃镈镋镕镚镠镮镴镵長镸镹镺镻镼镽镾門閁閂閃閄閅閆閇閈閉閊開閌閍閎閏閐閑閒間閔閕閖閗閘閙閚閛閜閝閞閟閠閡関閣閤閥閦閧閨閩閪�閫閬閭閮閯閰閱閲閳閴閵閶閷閸閹閺閻閼閽閾閿闀闁闂闃闄闅闆闇闈闉闊闋椤棰椋椁楗棣椐楱椹楠楂楝榄楫榀榘楸椴槌榇榈槎榉楦楣楹榛榧榻榫榭槔榱槁槊槟榕槠榍槿樯槭樗樘橥槲橄樾檠橐橛樵檎橹樽樨橘橼檑檐檩檗檫猷獒殁殂殇殄殒殓殍殚殛殡殪轫轭轱轲轳轵轶轸轷轹轺轼轾辁辂辄辇辋�\".split(\"\");\nfor(j = 0; j != D[233].length; ++j) if(D[233][j].charCodeAt(0) !== 0xFFFD) { e[D[233][j]] = 59648 + j; d[59648 + j] = D[233][j];}\nD[234] = \"����������������������������������������������������������������闌闍闎闏闐闑闒闓闔闕闖闗闘闙闚闛關闝闞闟闠闡闢闣闤闥闦闧闬闿阇阓阘阛阞阠阣阤阥阦阧阨阩阫阬阭阯阰阷阸阹阺阾陁陃陊陎陏陑陒陓陖陗�陘陙陚陜陝陞陠陣陥陦陫陭陮陯陰陱陳陸陹険陻陼陽陾陿隀隁隂隃隄隇隉隊辍辎辏辘辚軎戋戗戛戟戢戡戥戤戬臧瓯瓴瓿甏甑甓攴旮旯旰昊昙杲昃昕昀炅曷昝昴昱昶昵耆晟晔晁晏晖晡晗晷暄暌暧暝暾曛曜曦曩贲贳贶贻贽赀赅赆赈赉赇赍赕赙觇觊觋觌觎觏觐觑牮犟牝牦牯牾牿犄犋犍犏犒挈挲掰�\".split(\"\");\nfor(j = 0; j != D[234].length; ++j) if(D[234][j].charCodeAt(0) !== 0xFFFD) { e[D[234][j]] = 59904 + j; d[59904 + j] = D[234][j];}\nD[235] = \"����������������������������������������������������������������隌階隑隒隓隕隖隚際隝隞隟隠隡隢隣隤隥隦隨隩險隫隬隭隮隯隱隲隴隵隷隸隺隻隿雂雃雈雊雋雐雑雓雔雖雗雘雙雚雛雜雝雞雟雡離難雤雥雦雧雫�雬雭雮雰雱雲雴雵雸雺電雼雽雿霂霃霅霊霋霌霐霑霒霔霕霗霘霙霚霛霝霟霠搿擘耄毪毳毽毵毹氅氇氆氍氕氘氙氚氡氩氤氪氲攵敕敫牍牒牖爰虢刖肟肜肓肼朊肽肱肫肭肴肷胧胨胩胪胛胂胄胙胍胗朐胝胫胱胴胭脍脎胲胼朕脒豚脶脞脬脘脲腈腌腓腴腙腚腱腠腩腼腽腭腧塍媵膈膂膑滕膣膪臌朦臊膻�\".split(\"\");\nfor(j = 0; j != D[235].length; ++j) if(D[235][j].charCodeAt(0) !== 0xFFFD) { e[D[235][j]] = 60160 + j; d[60160 + j] = D[235][j];}\nD[236] = \"����������������������������������������������������������������霡霢霣霤霥霦霧霨霩霫霬霮霯霱霳霴霵霶霷霺霻霼霽霿靀靁靂靃靄靅靆靇靈靉靊靋靌靍靎靏靐靑靔靕靗靘靚靜靝靟靣靤靦靧靨靪靫靬靭靮靯靰靱�靲靵靷靸靹靺靻靽靾靿鞀鞁鞂鞃鞄鞆鞇鞈鞉鞊鞌鞎鞏鞐鞓鞕鞖鞗鞙鞚鞛鞜鞝臁膦欤欷欹歃歆歙飑飒飓飕飙飚殳彀毂觳斐齑斓於旆旄旃旌旎旒旖炀炜炖炝炻烀炷炫炱烨烊焐焓焖焯焱煳煜煨煅煲煊煸煺熘熳熵熨熠燠燔燧燹爝爨灬焘煦熹戾戽扃扈扉礻祀祆祉祛祜祓祚祢祗祠祯祧祺禅禊禚禧禳忑忐�\".split(\"\");\nfor(j = 0; j != D[236].length; ++j) if(D[236][j].charCodeAt(0) !== 0xFFFD) { e[D[236][j]] = 60416 + j; d[60416 + j] = D[236][j];}\nD[237] = \"����������������������������������������������������������������鞞鞟鞡鞢鞤鞥鞦鞧鞨鞩鞪鞬鞮鞰鞱鞳鞵鞶鞷鞸鞹鞺鞻鞼鞽鞾鞿韀韁韂韃韄韅韆韇韈韉韊韋韌韍韎韏韐韑韒韓韔韕韖韗韘韙韚韛韜韝韞韟韠韡韢韣�韤韥韨韮韯韰韱韲韴韷韸韹韺韻韼韽韾響頀頁頂頃頄項順頇須頉頊頋頌頍頎怼恝恚恧恁恙恣悫愆愍慝憩憝懋懑戆肀聿沓泶淼矶矸砀砉砗砘砑斫砭砜砝砹砺砻砟砼砥砬砣砩硎硭硖硗砦硐硇硌硪碛碓碚碇碜碡碣碲碹碥磔磙磉磬磲礅磴礓礤礞礴龛黹黻黼盱眄眍盹眇眈眚眢眙眭眦眵眸睐睑睇睃睚睨�\".split(\"\");\nfor(j = 0; j != D[237].length; ++j) if(D[237][j].charCodeAt(0) !== 0xFFFD) { e[D[237][j]] = 60672 + j; d[60672 + j] = D[237][j];}\nD[238] = \"����������������������������������������������������������������頏預頑頒頓頔頕頖頗領頙頚頛頜頝頞頟頠頡頢頣頤頥頦頧頨頩頪頫頬頭頮頯頰頱頲頳頴頵頶頷頸頹頺頻頼頽頾頿顀顁顂顃顄顅顆顇顈顉顊顋題額�顎顏顐顑顒顓顔顕顖顗願顙顚顛顜顝類顟顠顡顢顣顤顥顦顧顨顩顪顫顬顭顮睢睥睿瞍睽瞀瞌瞑瞟瞠瞰瞵瞽町畀畎畋畈畛畲畹疃罘罡罟詈罨罴罱罹羁罾盍盥蠲钅钆钇钋钊钌钍钏钐钔钗钕钚钛钜钣钤钫钪钭钬钯钰钲钴钶钷钸钹钺钼钽钿铄铈铉铊铋铌铍铎铐铑铒铕铖铗铙铘铛铞铟铠铢铤铥铧铨铪�\".split(\"\");\nfor(j = 0; j != D[238].length; ++j) if(D[238][j].charCodeAt(0) !== 0xFFFD) { e[D[238][j]] = 60928 + j; d[60928 + j] = D[238][j];}\nD[239] = \"����������������������������������������������������������������顯顰顱顲顳顴颋颎颒颕颙颣風颩颪颫颬颭颮颯颰颱颲颳颴颵颶颷颸颹颺颻颼颽颾颿飀飁飂飃飄飅飆飇飈飉飊飋飌飍飏飐飔飖飗飛飜飝飠飡飢飣飤�飥飦飩飪飫飬飭飮飯飰飱飲飳飴飵飶飷飸飹飺飻飼飽飾飿餀餁餂餃餄餅餆餇铩铫铮铯铳铴铵铷铹铼铽铿锃锂锆锇锉锊锍锎锏锒锓锔锕锖锘锛锝锞锟锢锪锫锩锬锱锲锴锶锷锸锼锾锿镂锵镄镅镆镉镌镎镏镒镓镔镖镗镘镙镛镞镟镝镡镢镤镥镦镧镨镩镪镫镬镯镱镲镳锺矧矬雉秕秭秣秫稆嵇稃稂稞稔�\".split(\"\");\nfor(j = 0; j != D[239].length; ++j) if(D[239][j].charCodeAt(0) !== 0xFFFD) { e[D[239][j]] = 61184 + j; d[61184 + j] = D[239][j];}\nD[240] = \"����������������������������������������������������������������餈餉養餋餌餎餏餑餒餓餔餕餖餗餘餙餚餛餜餝餞餟餠餡餢餣餤餥餦餧館餩餪餫餬餭餯餰餱餲餳餴餵餶餷餸餹餺餻餼餽餾餿饀饁饂饃饄饅饆饇饈饉�饊饋饌饍饎饏饐饑饒饓饖饗饘饙饚饛饜饝饞饟饠饡饢饤饦饳饸饹饻饾馂馃馉稹稷穑黏馥穰皈皎皓皙皤瓞瓠甬鸠鸢鸨鸩鸪鸫鸬鸲鸱鸶鸸鸷鸹鸺鸾鹁鹂鹄鹆鹇鹈鹉鹋鹌鹎鹑鹕鹗鹚鹛鹜鹞鹣鹦鹧鹨鹩鹪鹫鹬鹱鹭鹳疒疔疖疠疝疬疣疳疴疸痄疱疰痃痂痖痍痣痨痦痤痫痧瘃痱痼痿瘐瘀瘅瘌瘗瘊瘥瘘瘕瘙�\".split(\"\");\nfor(j = 0; j != D[240].length; ++j) if(D[240][j].charCodeAt(0) !== 0xFFFD) { e[D[240][j]] = 61440 + j; d[61440 + j] = D[240][j];}\nD[241] = \"����������������������������������������������������������������馌馎馚馛馜馝馞馟馠馡馢馣馤馦馧馩馪馫馬馭馮馯馰馱馲馳馴馵馶馷馸馹馺馻馼馽馾馿駀駁駂駃駄駅駆駇駈駉駊駋駌駍駎駏駐駑駒駓駔駕駖駗駘�駙駚駛駜駝駞駟駠駡駢駣駤駥駦駧駨駩駪駫駬駭駮駯駰駱駲駳駴駵駶駷駸駹瘛瘼瘢瘠癀瘭瘰瘿瘵癃瘾瘳癍癞癔癜癖癫癯翊竦穸穹窀窆窈窕窦窠窬窨窭窳衤衩衲衽衿袂袢裆袷袼裉裢裎裣裥裱褚裼裨裾裰褡褙褓褛褊褴褫褶襁襦襻疋胥皲皴矜耒耔耖耜耠耢耥耦耧耩耨耱耋耵聃聆聍聒聩聱覃顸颀颃�\".split(\"\");\nfor(j = 0; j != D[241].length; ++j) if(D[241][j].charCodeAt(0) !== 0xFFFD) { e[D[241][j]] = 61696 + j; d[61696 + j] = D[241][j];}\nD[242] = \"����������������������������������������������������������������駺駻駼駽駾駿騀騁騂騃騄騅騆騇騈騉騊騋騌騍騎騏騐騑騒験騔騕騖騗騘騙騚騛騜騝騞騟騠騡騢騣騤騥騦騧騨騩騪騫騬騭騮騯騰騱騲騳騴騵騶騷騸�騹騺騻騼騽騾騿驀驁驂驃驄驅驆驇驈驉驊驋驌驍驎驏驐驑驒驓驔驕驖驗驘驙颉颌颍颏颔颚颛颞颟颡颢颥颦虍虔虬虮虿虺虼虻蚨蚍蚋蚬蚝蚧蚣蚪蚓蚩蚶蛄蚵蛎蚰蚺蚱蚯蛉蛏蚴蛩蛱蛲蛭蛳蛐蜓蛞蛴蛟蛘蛑蜃蜇蛸蜈蜊蜍蜉蜣蜻蜞蜥蜮蜚蜾蝈蜴蜱蜩蜷蜿螂蜢蝽蝾蝻蝠蝰蝌蝮螋蝓蝣蝼蝤蝙蝥螓螯螨蟒�\".split(\"\");\nfor(j = 0; j != D[242].length; ++j) if(D[242][j].charCodeAt(0) !== 0xFFFD) { e[D[242][j]] = 61952 + j; d[61952 + j] = D[242][j];}\nD[243] = \"����������������������������������������������������������������驚驛驜驝驞驟驠驡驢驣驤驥驦驧驨驩驪驫驲骃骉骍骎骔骕骙骦骩骪骫骬骭骮骯骲骳骴骵骹骻骽骾骿髃髄髆髇髈髉髊髍髎髏髐髒體髕髖髗髙髚髛髜�髝髞髠髢髣髤髥髧髨髩髪髬髮髰髱髲髳髴髵髶髷髸髺髼髽髾髿鬀鬁鬂鬄鬅鬆蟆螈螅螭螗螃螫蟥螬螵螳蟋蟓螽蟑蟀蟊蟛蟪蟠蟮蠖蠓蟾蠊蠛蠡蠹蠼缶罂罄罅舐竺竽笈笃笄笕笊笫笏筇笸笪笙笮笱笠笥笤笳笾笞筘筚筅筵筌筝筠筮筻筢筲筱箐箦箧箸箬箝箨箅箪箜箢箫箴篑篁篌篝篚篥篦篪簌篾篼簏簖簋�\".split(\"\");\nfor(j = 0; j != D[243].length; ++j) if(D[243][j].charCodeAt(0) !== 0xFFFD) { e[D[243][j]] = 62208 + j; d[62208 + j] = D[243][j];}\nD[244] = \"����������������������������������������������������������������鬇鬉鬊鬋鬌鬍鬎鬐鬑鬒鬔鬕鬖鬗鬘鬙鬚鬛鬜鬝鬞鬠鬡鬢鬤鬥鬦鬧鬨鬩鬪鬫鬬鬭鬮鬰鬱鬳鬴鬵鬶鬷鬸鬹鬺鬽鬾鬿魀魆魊魋魌魎魐魒魓魕魖魗魘魙魚�魛魜魝魞魟魠魡魢魣魤魥魦魧魨魩魪魫魬魭魮魯魰魱魲魳魴魵魶魷魸魹魺魻簟簪簦簸籁籀臾舁舂舄臬衄舡舢舣舭舯舨舫舸舻舳舴舾艄艉艋艏艚艟艨衾袅袈裘裟襞羝羟羧羯羰羲籼敉粑粝粜粞粢粲粼粽糁糇糌糍糈糅糗糨艮暨羿翎翕翥翡翦翩翮翳糸絷綦綮繇纛麸麴赳趄趔趑趱赧赭豇豉酊酐酎酏酤�\".split(\"\");\nfor(j = 0; j != D[244].length; ++j) if(D[244][j].charCodeAt(0) !== 0xFFFD) { e[D[244][j]] = 62464 + j; d[62464 + j] = D[244][j];}\nD[245] = \"����������������������������������������������������������������魼魽魾魿鮀鮁鮂鮃鮄鮅鮆鮇鮈鮉鮊鮋鮌鮍鮎鮏鮐鮑鮒鮓鮔鮕鮖鮗鮘鮙鮚鮛鮜鮝鮞鮟鮠鮡鮢鮣鮤鮥鮦鮧鮨鮩鮪鮫鮬鮭鮮鮯鮰鮱鮲鮳鮴鮵鮶鮷鮸鮹鮺�鮻鮼鮽鮾鮿鯀鯁鯂鯃鯄鯅鯆鯇鯈鯉鯊鯋鯌鯍鯎鯏鯐鯑鯒鯓鯔鯕鯖鯗鯘鯙鯚鯛酢酡酰酩酯酽酾酲酴酹醌醅醐醍醑醢醣醪醭醮醯醵醴醺豕鹾趸跫踅蹙蹩趵趿趼趺跄跖跗跚跞跎跏跛跆跬跷跸跣跹跻跤踉跽踔踝踟踬踮踣踯踺蹀踹踵踽踱蹉蹁蹂蹑蹒蹊蹰蹶蹼蹯蹴躅躏躔躐躜躞豸貂貊貅貘貔斛觖觞觚觜�\".split(\"\");\nfor(j = 0; j != D[245].length; ++j) if(D[245][j].charCodeAt(0) !== 0xFFFD) { e[D[245][j]] = 62720 + j; d[62720 + j] = D[245][j];}\nD[246] = \"����������������������������������������������������������������鯜鯝鯞鯟鯠鯡鯢鯣鯤鯥鯦鯧鯨鯩鯪鯫鯬鯭鯮鯯鯰鯱鯲鯳鯴鯵鯶鯷鯸鯹鯺鯻鯼鯽鯾鯿鰀鰁鰂鰃鰄鰅鰆鰇鰈鰉鰊鰋鰌鰍鰎鰏鰐鰑鰒鰓鰔鰕鰖鰗鰘鰙鰚�鰛鰜鰝鰞鰟鰠鰡鰢鰣鰤鰥鰦鰧鰨鰩鰪鰫鰬鰭鰮鰯鰰鰱鰲鰳鰴鰵鰶鰷鰸鰹鰺鰻觥觫觯訾謦靓雩雳雯霆霁霈霏霎霪霭霰霾龀龃龅龆龇龈龉龊龌黾鼋鼍隹隼隽雎雒瞿雠銎銮鋈錾鍪鏊鎏鐾鑫鱿鲂鲅鲆鲇鲈稣鲋鲎鲐鲑鲒鲔鲕鲚鲛鲞鲟鲠鲡鲢鲣鲥鲦鲧鲨鲩鲫鲭鲮鲰鲱鲲鲳鲴鲵鲶鲷鲺鲻鲼鲽鳄鳅鳆鳇鳊鳋�\".split(\"\");\nfor(j = 0; j != D[246].length; ++j) if(D[246][j].charCodeAt(0) !== 0xFFFD) { e[D[246][j]] = 62976 + j; d[62976 + j] = D[246][j];}\nD[247] = \"����������������������������������������������������������������鰼鰽鰾鰿鱀鱁鱂鱃鱄鱅鱆鱇鱈鱉鱊鱋鱌鱍鱎鱏鱐鱑鱒鱓鱔鱕鱖鱗鱘鱙鱚鱛鱜鱝鱞鱟鱠鱡鱢鱣鱤鱥鱦鱧鱨鱩鱪鱫鱬鱭鱮鱯鱰鱱鱲鱳鱴鱵鱶鱷鱸鱹鱺�鱻鱽鱾鲀鲃鲄鲉鲊鲌鲏鲓鲖鲗鲘鲙鲝鲪鲬鲯鲹鲾鲿鳀鳁鳂鳈鳉鳑鳒鳚鳛鳠鳡鳌鳍鳎鳏鳐鳓鳔鳕鳗鳘鳙鳜鳝鳟鳢靼鞅鞑鞒鞔鞯鞫鞣鞲鞴骱骰骷鹘骶骺骼髁髀髅髂髋髌髑魅魃魇魉魈魍魑飨餍餮饕饔髟髡髦髯髫髻髭髹鬈鬏鬓鬟鬣麽麾縻麂麇麈麋麒鏖麝麟黛黜黝黠黟黢黩黧黥黪黯鼢鼬鼯鼹鼷鼽鼾齄�\".split(\"\");\nfor(j = 0; j != D[247].length; ++j) if(D[247][j].charCodeAt(0) !== 0xFFFD) { e[D[247][j]] = 63232 + j; d[63232 + j] = D[247][j];}\nD[248] = \"����������������������������������������������������������������鳣鳤鳥鳦鳧鳨鳩鳪鳫鳬鳭鳮鳯鳰鳱鳲鳳鳴鳵鳶鳷鳸鳹鳺鳻鳼鳽鳾鳿鴀鴁鴂鴃鴄鴅鴆鴇鴈鴉鴊鴋鴌鴍鴎鴏鴐鴑鴒鴓鴔鴕鴖鴗鴘鴙鴚鴛鴜鴝鴞鴟鴠鴡�鴢鴣鴤鴥鴦鴧鴨鴩鴪鴫鴬鴭鴮鴯鴰鴱鴲鴳鴴鴵鴶鴷鴸鴹鴺鴻鴼鴽鴾鴿鵀鵁鵂�\".split(\"\");\nfor(j = 0; j != D[248].length; ++j) if(D[248][j].charCodeAt(0) !== 0xFFFD) { e[D[248][j]] = 63488 + j; d[63488 + j] = D[248][j];}\nD[249] = \"����������������������������������������������������������������鵃鵄鵅鵆鵇鵈鵉鵊鵋鵌鵍鵎鵏鵐鵑鵒鵓鵔鵕鵖鵗鵘鵙鵚鵛鵜鵝鵞鵟鵠鵡鵢鵣鵤鵥鵦鵧鵨鵩鵪鵫鵬鵭鵮鵯鵰鵱鵲鵳鵴鵵鵶鵷鵸鵹鵺鵻鵼鵽鵾鵿鶀鶁�鶂鶃鶄鶅鶆鶇鶈鶉鶊鶋鶌鶍鶎鶏鶐鶑鶒鶓鶔鶕鶖鶗鶘鶙鶚鶛鶜鶝鶞鶟鶠鶡鶢�\".split(\"\");\nfor(j = 0; j != D[249].length; ++j) if(D[249][j].charCodeAt(0) !== 0xFFFD) { e[D[249][j]] = 63744 + j; d[63744 + j] = D[249][j];}\nD[250] = \"����������������������������������������������������������������鶣鶤鶥鶦鶧鶨鶩鶪鶫鶬鶭鶮鶯鶰鶱鶲鶳鶴鶵鶶鶷鶸鶹鶺鶻鶼鶽鶾鶿鷀鷁鷂鷃鷄鷅鷆鷇鷈鷉鷊鷋鷌鷍鷎鷏鷐鷑鷒鷓鷔鷕鷖鷗鷘鷙鷚鷛鷜鷝鷞鷟鷠鷡�鷢鷣鷤鷥鷦鷧鷨鷩鷪鷫鷬鷭鷮鷯鷰鷱鷲鷳鷴鷵鷶鷷鷸鷹鷺鷻鷼鷽鷾鷿鸀鸁鸂�\".split(\"\");\nfor(j = 0; j != D[250].length; ++j) if(D[250][j].charCodeAt(0) !== 0xFFFD) { e[D[250][j]] = 64000 + j; d[64000 + j] = D[250][j];}\nD[251] = \"����������������������������������������������������������������鸃鸄鸅鸆鸇鸈鸉鸊鸋鸌鸍鸎鸏鸐鸑鸒鸓鸔鸕鸖鸗鸘鸙鸚鸛鸜鸝鸞鸤鸧鸮鸰鸴鸻鸼鹀鹍鹐鹒鹓鹔鹖鹙鹝鹟鹠鹡鹢鹥鹮鹯鹲鹴鹵鹶鹷鹸鹹鹺鹻鹼鹽麀�麁麃麄麅麆麉麊麌麍麎麏麐麑麔麕麖麗麘麙麚麛麜麞麠麡麢麣麤麥麧麨麩麪�\".split(\"\");\nfor(j = 0; j != D[251].length; ++j) if(D[251][j].charCodeAt(0) !== 0xFFFD) { e[D[251][j]] = 64256 + j; d[64256 + j] = D[251][j];}\nD[252] = \"����������������������������������������������������������������麫麬麭麮麯麰麱麲麳麵麶麷麹麺麼麿黀黁黂黃黅黆黇黈黊黋黌黐黒黓黕黖黗黙黚點黡黣黤黦黨黫黬黭黮黰黱黲黳黴黵黶黷黸黺黽黿鼀鼁鼂鼃鼄鼅�鼆鼇鼈鼉鼊鼌鼏鼑鼒鼔鼕鼖鼘鼚鼛鼜鼝鼞鼟鼡鼣鼤鼥鼦鼧鼨鼩鼪鼫鼭鼮鼰鼱�\".split(\"\");\nfor(j = 0; j != D[252].length; ++j) if(D[252][j].charCodeAt(0) !== 0xFFFD) { e[D[252][j]] = 64512 + j; d[64512 + j] = D[252][j];}\nD[253] = \"����������������������������������������������������������������鼲鼳鼴鼵鼶鼸鼺鼼鼿齀齁齂齃齅齆齇齈齉齊齋齌齍齎齏齒齓齔齕齖齗齘齙齚齛齜齝齞齟齠齡齢齣齤齥齦齧齨齩齪齫齬齭齮齯齰齱齲齳齴齵齶齷齸�齹齺齻齼齽齾龁龂龍龎龏龐龑龒龓龔龕龖龗龘龜龝龞龡龢龣龤龥郎凉秊裏隣�\".split(\"\");\nfor(j = 0; j != D[253].length; ++j) if(D[253][j].charCodeAt(0) !== 0xFFFD) { e[D[253][j]] = 64768 + j; d[64768 + j] = D[253][j];}\nD[254] = \"����������������������������������������������������������������兀嗀﨎﨏﨑﨓﨔礼﨟蘒﨡﨣﨤﨧﨨﨩��\".split(\"\");\nfor(j = 0; j != D[254].length; ++j) if(D[254][j].charCodeAt(0) !== 0xFFFD) { e[D[254][j]] = 65024 + j; d[65024 + j] = D[254][j];}\nreturn {\"enc\": e, \"dec\": d }; })();\ncptable[51932] = (function(){ var d = [], e = {}, D = [], j;\nD[0] = \"\\u0000\\u0001\\u0002\\u0003\\u0004\\u0005\\u0006\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\u0014\\u0015\\u0016\\u0017\\u0018\\u0019\\u001a\\u001b\\u001c\\u001d\\u001e\\u001f !\\\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~�����������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[0].length; ++j) if(D[0][j].charCodeAt(0) !== 0xFFFD) { e[D[0][j]] = 0 + j; d[0 + j] = D[0][j];}\nD[142] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������｡｢｣､･ｦｧｨｩｪｫｬｭｮｯｰｱｲｳｴｵｶｷｸｹｺｻｼｽｾｿﾀﾁﾂﾃﾄﾅﾆﾇﾈﾉﾊﾋﾌﾍﾎﾏﾐﾑﾒﾓﾔﾕﾖﾗﾘﾙﾚﾛﾜﾝﾞﾟ��������������������������������\".split(\"\");\nfor(j = 0; j != D[142].length; ++j) if(D[142][j].charCodeAt(0) !== 0xFFFD) { e[D[142][j]] = 36352 + j; d[36352 + j] = D[142][j];}\nD[161] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������　、。，．・：；？！゛゜´｀¨＾￣＿ヽヾゝゞ〃仝々〆〇ー―‐／＼～∥｜…‥‘’“”（）〔〕［］｛｝〈〉《》「」『』【】＋－±×÷＝≠＜＞≦≧∞∴♂♀°′″℃￥＄￠￡％＃＆＊＠§☆★○●◎◇�\".split(\"\");\nfor(j = 0; j != D[161].length; ++j) if(D[161][j].charCodeAt(0) !== 0xFFFD) { e[D[161][j]] = 41216 + j; d[41216 + j] = D[161][j];}\nD[162] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������◆□■△▲▽▼※〒→←↑↓〓�����������∈∋⊆⊇⊂⊃∪∩��������∧∨￢⇒⇔∀∃�����������∠⊥⌒∂∇≡≒≪≫√∽∝∵∫∬�������Å‰♯♭♪†‡¶����◯�\".split(\"\");\nfor(j = 0; j != D[162].length; ++j) if(D[162][j].charCodeAt(0) !== 0xFFFD) { e[D[162][j]] = 41472 + j; d[41472 + j] = D[162][j];}\nD[163] = \"��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������０１２３４５６７８９�������ＡＢＣＤＥＦＧＨＩＪＫＬＭＮＯＰＱＲＳＴＵＶＷＸＹＺ������ａｂｃｄｅｆｇｈｉｊｋｌｍｎｏｐｑｒｓｔｕｖｗｘｙｚ�����\".split(\"\");\nfor(j = 0; j != D[163].length; ++j) if(D[163][j].charCodeAt(0) !== 0xFFFD) { e[D[163][j]] = 41728 + j; d[41728 + j] = D[163][j];}\nD[164] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������ぁあぃいぅうぇえぉおかがきぎくぐけげこごさざしじすずせぜそぞただちぢっつづてでとどなにぬねのはばぱひびぴふぶぷへべぺほぼぽまみむめもゃやゅゆょよらりるれろゎわゐゑをん������������\".split(\"\");\nfor(j = 0; j != D[164].length; ++j) if(D[164][j].charCodeAt(0) !== 0xFFFD) { e[D[164][j]] = 41984 + j; d[41984 + j] = D[164][j];}\nD[165] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������ァアィイゥウェエォオカガキギクグケゲコゴサザシジスズセゼソゾタダチヂッツヅテデトドナニヌネノハバパヒビピフブプヘベペホボポマミムメモャヤュユョヨラリルレロヮワヰヱヲンヴヵヶ���������\".split(\"\");\nfor(j = 0; j != D[165].length; ++j) if(D[165][j].charCodeAt(0) !== 0xFFFD) { e[D[165][j]] = 42240 + j; d[42240 + j] = D[165][j];}\nD[166] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������ΑΒΓΔΕΖΗΘΙΚΛΜΝΞΟΠΡΣΤΥΦΧΨΩ��������αβγδεζηθικλμνξοπρστυφχψω���������������������������������������\".split(\"\");\nfor(j = 0; j != D[166].length; ++j) if(D[166][j].charCodeAt(0) !== 0xFFFD) { e[D[166][j]] = 42496 + j; d[42496 + j] = D[166][j];}\nD[167] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ���������������абвгдеёжзийклмнопрстуфхцчшщъыьэюя��������������\".split(\"\");\nfor(j = 0; j != D[167].length; ++j) if(D[167][j].charCodeAt(0) !== 0xFFFD) { e[D[167][j]] = 42752 + j; d[42752 + j] = D[167][j];}\nD[168] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������─│┌┐┘└├┬┤┴┼━┃┏┓┛┗┣┳┫┻╋┠┯┨┷┿┝┰┥┸╂���������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[168].length; ++j) if(D[168][j].charCodeAt(0) !== 0xFFFD) { e[D[168][j]] = 43008 + j; d[43008 + j] = D[168][j];}\nD[173] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������①②③④⑤⑥⑦⑧⑨⑩⑪⑫⑬⑭⑮⑯⑰⑱⑲⑳ⅠⅡⅢⅣⅤⅥⅦⅧⅨⅩ�㍉㌔㌢㍍㌘㌧㌃㌶㍑㍗㌍㌦㌣㌫㍊㌻㎜㎝㎞㎎㎏㏄㎡��������㍻〝〟№㏍℡㊤㊥㊦㊧㊨㈱㈲㈹㍾㍽㍼���∮∑���∟⊿������\".split(\"\");\nfor(j = 0; j != D[173].length; ++j) if(D[173][j].charCodeAt(0) !== 0xFFFD) { e[D[173][j]] = 44288 + j; d[44288 + j] = D[173][j];}\nD[176] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������亜唖娃阿哀愛挨姶逢葵茜穐悪握渥旭葦芦鯵梓圧斡扱宛姐虻飴絢綾鮎或粟袷安庵按暗案闇鞍杏以伊位依偉囲夷委威尉惟意慰易椅為畏異移維緯胃萎衣謂違遺医井亥域育郁磯一壱溢逸稲茨芋鰯允印咽員因姻引飲淫胤蔭�\".split(\"\");\nfor(j = 0; j != D[176].length; ++j) if(D[176][j].charCodeAt(0) !== 0xFFFD) { e[D[176][j]] = 45056 + j; d[45056 + j] = D[176][j];}\nD[177] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������院陰隠韻吋右宇烏羽迂雨卯鵜窺丑碓臼渦嘘唄欝蔚鰻姥厩浦瓜閏噂云運雲荏餌叡営嬰影映曳栄永泳洩瑛盈穎頴英衛詠鋭液疫益駅悦謁越閲榎厭円園堰奄宴延怨掩援沿演炎焔煙燕猿縁艶苑薗遠鉛鴛塩於汚甥凹央奥往応�\".split(\"\");\nfor(j = 0; j != D[177].length; ++j) if(D[177][j].charCodeAt(0) !== 0xFFFD) { e[D[177][j]] = 45312 + j; d[45312 + j] = D[177][j];}\nD[178] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������押旺横欧殴王翁襖鴬鴎黄岡沖荻億屋憶臆桶牡乙俺卸恩温穏音下化仮何伽価佳加可嘉夏嫁家寡科暇果架歌河火珂禍禾稼箇花苛茄荷華菓蝦課嘩貨迦過霞蚊俄峨我牙画臥芽蛾賀雅餓駕介会解回塊壊廻快怪悔恢懐戒拐改�\".split(\"\");\nfor(j = 0; j != D[178].length; ++j) if(D[178][j].charCodeAt(0) !== 0xFFFD) { e[D[178][j]] = 45568 + j; d[45568 + j] = D[178][j];}\nD[179] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������魁晦械海灰界皆絵芥蟹開階貝凱劾外咳害崖慨概涯碍蓋街該鎧骸浬馨蛙垣柿蛎鈎劃嚇各廓拡撹格核殻獲確穫覚角赫較郭閣隔革学岳楽額顎掛笠樫橿梶鰍潟割喝恰括活渇滑葛褐轄且鰹叶椛樺鞄株兜竃蒲釜鎌噛鴨栢茅萱�\".split(\"\");\nfor(j = 0; j != D[179].length; ++j) if(D[179][j].charCodeAt(0) !== 0xFFFD) { e[D[179][j]] = 45824 + j; d[45824 + j] = D[179][j];}\nD[180] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������粥刈苅瓦乾侃冠寒刊勘勧巻喚堪姦完官寛干幹患感慣憾換敢柑桓棺款歓汗漢澗潅環甘監看竿管簡緩缶翰肝艦莞観諌貫還鑑間閑関陥韓館舘丸含岸巌玩癌眼岩翫贋雁頑顔願企伎危喜器基奇嬉寄岐希幾忌揮机旗既期棋棄�\".split(\"\");\nfor(j = 0; j != D[180].length; ++j) if(D[180][j].charCodeAt(0) !== 0xFFFD) { e[D[180][j]] = 46080 + j; d[46080 + j] = D[180][j];}\nD[181] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������機帰毅気汽畿祈季稀紀徽規記貴起軌輝飢騎鬼亀偽儀妓宜戯技擬欺犠疑祇義蟻誼議掬菊鞠吉吃喫桔橘詰砧杵黍却客脚虐逆丘久仇休及吸宮弓急救朽求汲泣灸球究窮笈級糾給旧牛去居巨拒拠挙渠虚許距鋸漁禦魚亨享京�\".split(\"\");\nfor(j = 0; j != D[181].length; ++j) if(D[181][j].charCodeAt(0) !== 0xFFFD) { e[D[181][j]] = 46336 + j; d[46336 + j] = D[181][j];}\nD[182] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������供侠僑兇競共凶協匡卿叫喬境峡強彊怯恐恭挟教橋況狂狭矯胸脅興蕎郷鏡響饗驚仰凝尭暁業局曲極玉桐粁僅勤均巾錦斤欣欽琴禁禽筋緊芹菌衿襟謹近金吟銀九倶句区狗玖矩苦躯駆駈駒具愚虞喰空偶寓遇隅串櫛釧屑屈�\".split(\"\");\nfor(j = 0; j != D[182].length; ++j) if(D[182][j].charCodeAt(0) !== 0xFFFD) { e[D[182][j]] = 46592 + j; d[46592 + j] = D[182][j];}\nD[183] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������掘窟沓靴轡窪熊隈粂栗繰桑鍬勲君薫訓群軍郡卦袈祁係傾刑兄啓圭珪型契形径恵慶慧憩掲携敬景桂渓畦稽系経継繋罫茎荊蛍計詣警軽頚鶏芸迎鯨劇戟撃激隙桁傑欠決潔穴結血訣月件倹倦健兼券剣喧圏堅嫌建憲懸拳捲�\".split(\"\");\nfor(j = 0; j != D[183].length; ++j) if(D[183][j].charCodeAt(0) !== 0xFFFD) { e[D[183][j]] = 46848 + j; d[46848 + j] = D[183][j];}\nD[184] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������検権牽犬献研硯絹県肩見謙賢軒遣鍵険顕験鹸元原厳幻弦減源玄現絃舷言諺限乎個古呼固姑孤己庫弧戸故枯湖狐糊袴股胡菰虎誇跨鈷雇顧鼓五互伍午呉吾娯後御悟梧檎瑚碁語誤護醐乞鯉交佼侯候倖光公功効勾厚口向�\".split(\"\");\nfor(j = 0; j != D[184].length; ++j) if(D[184][j].charCodeAt(0) !== 0xFFFD) { e[D[184][j]] = 47104 + j; d[47104 + j] = D[184][j];}\nD[185] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������后喉坑垢好孔孝宏工巧巷幸広庚康弘恒慌抗拘控攻昂晃更杭校梗構江洪浩港溝甲皇硬稿糠紅紘絞綱耕考肯肱腔膏航荒行衡講貢購郊酵鉱砿鋼閤降項香高鴻剛劫号合壕拷濠豪轟麹克刻告国穀酷鵠黒獄漉腰甑忽惚骨狛込�\".split(\"\");\nfor(j = 0; j != D[185].length; ++j) if(D[185][j].charCodeAt(0) !== 0xFFFD) { e[D[185][j]] = 47360 + j; d[47360 + j] = D[185][j];}\nD[186] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������此頃今困坤墾婚恨懇昏昆根梱混痕紺艮魂些佐叉唆嵯左差査沙瑳砂詐鎖裟坐座挫債催再最哉塞妻宰彩才採栽歳済災采犀砕砦祭斎細菜裁載際剤在材罪財冴坂阪堺榊肴咲崎埼碕鷺作削咋搾昨朔柵窄策索錯桜鮭笹匙冊刷�\".split(\"\");\nfor(j = 0; j != D[186].length; ++j) if(D[186][j].charCodeAt(0) !== 0xFFFD) { e[D[186][j]] = 47616 + j; d[47616 + j] = D[186][j];}\nD[187] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������察拶撮擦札殺薩雑皐鯖捌錆鮫皿晒三傘参山惨撒散桟燦珊産算纂蚕讃賛酸餐斬暫残仕仔伺使刺司史嗣四士始姉姿子屍市師志思指支孜斯施旨枝止死氏獅祉私糸紙紫肢脂至視詞詩試誌諮資賜雌飼歯事似侍児字寺慈持時�\".split(\"\");\nfor(j = 0; j != D[187].length; ++j) if(D[187][j].charCodeAt(0) !== 0xFFFD) { e[D[187][j]] = 47872 + j; d[47872 + j] = D[187][j];}\nD[188] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������次滋治爾璽痔磁示而耳自蒔辞汐鹿式識鴫竺軸宍雫七叱執失嫉室悉湿漆疾質実蔀篠偲柴芝屡蕊縞舎写射捨赦斜煮社紗者謝車遮蛇邪借勺尺杓灼爵酌釈錫若寂弱惹主取守手朱殊狩珠種腫趣酒首儒受呪寿授樹綬需囚収周�\".split(\"\");\nfor(j = 0; j != D[188].length; ++j) if(D[188][j].charCodeAt(0) !== 0xFFFD) { e[D[188][j]] = 48128 + j; d[48128 + j] = D[188][j];}\nD[189] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������宗就州修愁拾洲秀秋終繍習臭舟蒐衆襲讐蹴輯週酋酬集醜什住充十従戎柔汁渋獣縦重銃叔夙宿淑祝縮粛塾熟出術述俊峻春瞬竣舜駿准循旬楯殉淳準潤盾純巡遵醇順処初所暑曙渚庶緒署書薯藷諸助叙女序徐恕鋤除傷償�\".split(\"\");\nfor(j = 0; j != D[189].length; ++j) if(D[189][j].charCodeAt(0) !== 0xFFFD) { e[D[189][j]] = 48384 + j; d[48384 + j] = D[189][j];}\nD[190] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������勝匠升召哨商唱嘗奨妾娼宵将小少尚庄床廠彰承抄招掌捷昇昌昭晶松梢樟樵沼消渉湘焼焦照症省硝礁祥称章笑粧紹肖菖蒋蕉衝裳訟証詔詳象賞醤鉦鍾鐘障鞘上丈丞乗冗剰城場壌嬢常情擾条杖浄状畳穣蒸譲醸錠嘱埴飾�\".split(\"\");\nfor(j = 0; j != D[190].length; ++j) if(D[190][j].charCodeAt(0) !== 0xFFFD) { e[D[190][j]] = 48640 + j; d[48640 + j] = D[190][j];}\nD[191] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������拭植殖燭織職色触食蝕辱尻伸信侵唇娠寝審心慎振新晋森榛浸深申疹真神秦紳臣芯薪親診身辛進針震人仁刃塵壬尋甚尽腎訊迅陣靭笥諏須酢図厨逗吹垂帥推水炊睡粋翠衰遂酔錐錘随瑞髄崇嵩数枢趨雛据杉椙菅頗雀裾�\".split(\"\");\nfor(j = 0; j != D[191].length; ++j) if(D[191][j].charCodeAt(0) !== 0xFFFD) { e[D[191][j]] = 48896 + j; d[48896 + j] = D[191][j];}\nD[192] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������澄摺寸世瀬畝是凄制勢姓征性成政整星晴棲栖正清牲生盛精聖声製西誠誓請逝醒青静斉税脆隻席惜戚斥昔析石積籍績脊責赤跡蹟碩切拙接摂折設窃節説雪絶舌蝉仙先千占宣専尖川戦扇撰栓栴泉浅洗染潜煎煽旋穿箭線�\".split(\"\");\nfor(j = 0; j != D[192].length; ++j) if(D[192][j].charCodeAt(0) !== 0xFFFD) { e[D[192][j]] = 49152 + j; d[49152 + j] = D[192][j];}\nD[193] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������繊羨腺舛船薦詮賎践選遷銭銑閃鮮前善漸然全禅繕膳糎噌塑岨措曾曽楚狙疏疎礎祖租粗素組蘇訴阻遡鼠僧創双叢倉喪壮奏爽宋層匝惣想捜掃挿掻操早曹巣槍槽漕燥争痩相窓糟総綜聡草荘葬蒼藻装走送遭鎗霜騒像増憎�\".split(\"\");\nfor(j = 0; j != D[193].length; ++j) if(D[193][j].charCodeAt(0) !== 0xFFFD) { e[D[193][j]] = 49408 + j; d[49408 + j] = D[193][j];}\nD[194] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������臓蔵贈造促側則即息捉束測足速俗属賊族続卒袖其揃存孫尊損村遜他多太汰詑唾堕妥惰打柁舵楕陀駄騨体堆対耐岱帯待怠態戴替泰滞胎腿苔袋貸退逮隊黛鯛代台大第醍題鷹滝瀧卓啄宅托択拓沢濯琢託鐸濁諾茸凧蛸只�\".split(\"\");\nfor(j = 0; j != D[194].length; ++j) if(D[194][j].charCodeAt(0) !== 0xFFFD) { e[D[194][j]] = 49664 + j; d[49664 + j] = D[194][j];}\nD[195] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������叩但達辰奪脱巽竪辿棚谷狸鱈樽誰丹単嘆坦担探旦歎淡湛炭短端箪綻耽胆蛋誕鍛団壇弾断暖檀段男談値知地弛恥智池痴稚置致蜘遅馳築畜竹筑蓄逐秩窒茶嫡着中仲宙忠抽昼柱注虫衷註酎鋳駐樗瀦猪苧著貯丁兆凋喋寵�\".split(\"\");\nfor(j = 0; j != D[195].length; ++j) if(D[195][j].charCodeAt(0) !== 0xFFFD) { e[D[195][j]] = 49920 + j; d[49920 + j] = D[195][j];}\nD[196] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������帖帳庁弔張彫徴懲挑暢朝潮牒町眺聴脹腸蝶調諜超跳銚長頂鳥勅捗直朕沈珍賃鎮陳津墜椎槌追鎚痛通塚栂掴槻佃漬柘辻蔦綴鍔椿潰坪壷嬬紬爪吊釣鶴亭低停偵剃貞呈堤定帝底庭廷弟悌抵挺提梯汀碇禎程締艇訂諦蹄逓�\".split(\"\");\nfor(j = 0; j != D[196].length; ++j) if(D[196][j].charCodeAt(0) !== 0xFFFD) { e[D[196][j]] = 50176 + j; d[50176 + j] = D[196][j];}\nD[197] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������邸鄭釘鼎泥摘擢敵滴的笛適鏑溺哲徹撤轍迭鉄典填天展店添纏甜貼転顛点伝殿澱田電兎吐堵塗妬屠徒斗杜渡登菟賭途都鍍砥砺努度土奴怒倒党冬凍刀唐塔塘套宕島嶋悼投搭東桃梼棟盗淘湯涛灯燈当痘祷等答筒糖統到�\".split(\"\");\nfor(j = 0; j != D[197].length; ++j) if(D[197][j].charCodeAt(0) !== 0xFFFD) { e[D[197][j]] = 50432 + j; d[50432 + j] = D[197][j];}\nD[198] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������董蕩藤討謄豆踏逃透鐙陶頭騰闘働動同堂導憧撞洞瞳童胴萄道銅峠鴇匿得徳涜特督禿篤毒独読栃橡凸突椴届鳶苫寅酉瀞噸屯惇敦沌豚遁頓呑曇鈍奈那内乍凪薙謎灘捺鍋楢馴縄畷南楠軟難汝二尼弐迩匂賑肉虹廿日乳入�\".split(\"\");\nfor(j = 0; j != D[198].length; ++j) if(D[198][j].charCodeAt(0) !== 0xFFFD) { e[D[198][j]] = 50688 + j; d[50688 + j] = D[198][j];}\nD[199] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������如尿韮任妊忍認濡禰祢寧葱猫熱年念捻撚燃粘乃廼之埜嚢悩濃納能脳膿農覗蚤巴把播覇杷波派琶破婆罵芭馬俳廃拝排敗杯盃牌背肺輩配倍培媒梅楳煤狽買売賠陪這蝿秤矧萩伯剥博拍柏泊白箔粕舶薄迫曝漠爆縛莫駁麦�\".split(\"\");\nfor(j = 0; j != D[199].length; ++j) if(D[199][j].charCodeAt(0) !== 0xFFFD) { e[D[199][j]] = 50944 + j; d[50944 + j] = D[199][j];}\nD[200] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������函箱硲箸肇筈櫨幡肌畑畠八鉢溌発醗髪伐罰抜筏閥鳩噺塙蛤隼伴判半反叛帆搬斑板氾汎版犯班畔繁般藩販範釆煩頒飯挽晩番盤磐蕃蛮匪卑否妃庇彼悲扉批披斐比泌疲皮碑秘緋罷肥被誹費避非飛樋簸備尾微枇毘琵眉美�\".split(\"\");\nfor(j = 0; j != D[200].length; ++j) if(D[200][j].charCodeAt(0) !== 0xFFFD) { e[D[200][j]] = 51200 + j; d[51200 + j] = D[200][j];}\nD[201] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������鼻柊稗匹疋髭彦膝菱肘弼必畢筆逼桧姫媛紐百謬俵彪標氷漂瓢票表評豹廟描病秒苗錨鋲蒜蛭鰭品彬斌浜瀕貧賓頻敏瓶不付埠夫婦富冨布府怖扶敷斧普浮父符腐膚芙譜負賦赴阜附侮撫武舞葡蕪部封楓風葺蕗伏副復幅服�\".split(\"\");\nfor(j = 0; j != D[201].length; ++j) if(D[201][j].charCodeAt(0) !== 0xFFFD) { e[D[201][j]] = 51456 + j; d[51456 + j] = D[201][j];}\nD[202] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������福腹複覆淵弗払沸仏物鮒分吻噴墳憤扮焚奮粉糞紛雰文聞丙併兵塀幣平弊柄並蔽閉陛米頁僻壁癖碧別瞥蔑箆偏変片篇編辺返遍便勉娩弁鞭保舗鋪圃捕歩甫補輔穂募墓慕戊暮母簿菩倣俸包呆報奉宝峰峯崩庖抱捧放方朋�\".split(\"\");\nfor(j = 0; j != D[202].length; ++j) if(D[202][j].charCodeAt(0) !== 0xFFFD) { e[D[202][j]] = 51712 + j; d[51712 + j] = D[202][j];}\nD[203] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������法泡烹砲縫胞芳萌蓬蜂褒訪豊邦鋒飽鳳鵬乏亡傍剖坊妨帽忘忙房暴望某棒冒紡肪膨謀貌貿鉾防吠頬北僕卜墨撲朴牧睦穆釦勃没殆堀幌奔本翻凡盆摩磨魔麻埋妹昧枚毎哩槙幕膜枕鮪柾鱒桝亦俣又抹末沫迄侭繭麿万慢満�\".split(\"\");\nfor(j = 0; j != D[203].length; ++j) if(D[203][j].charCodeAt(0) !== 0xFFFD) { e[D[203][j]] = 51968 + j; d[51968 + j] = D[203][j];}\nD[204] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������漫蔓味未魅巳箕岬密蜜湊蓑稔脈妙粍民眠務夢無牟矛霧鵡椋婿娘冥名命明盟迷銘鳴姪牝滅免棉綿緬面麺摸模茂妄孟毛猛盲網耗蒙儲木黙目杢勿餅尤戻籾貰問悶紋門匁也冶夜爺耶野弥矢厄役約薬訳躍靖柳薮鑓愉愈油癒�\".split(\"\");\nfor(j = 0; j != D[204].length; ++j) if(D[204][j].charCodeAt(0) !== 0xFFFD) { e[D[204][j]] = 52224 + j; d[52224 + j] = D[204][j];}\nD[205] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������諭輸唯佑優勇友宥幽悠憂揖有柚湧涌猶猷由祐裕誘遊邑郵雄融夕予余与誉輿預傭幼妖容庸揚揺擁曜楊様洋溶熔用窯羊耀葉蓉要謡踊遥陽養慾抑欲沃浴翌翼淀羅螺裸来莱頼雷洛絡落酪乱卵嵐欄濫藍蘭覧利吏履李梨理璃�\".split(\"\");\nfor(j = 0; j != D[205].length; ++j) if(D[205][j].charCodeAt(0) !== 0xFFFD) { e[D[205][j]] = 52480 + j; d[52480 + j] = D[205][j];}\nD[206] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������痢裏裡里離陸律率立葎掠略劉流溜琉留硫粒隆竜龍侶慮旅虜了亮僚両凌寮料梁涼猟療瞭稜糧良諒遼量陵領力緑倫厘林淋燐琳臨輪隣鱗麟瑠塁涙累類令伶例冷励嶺怜玲礼苓鈴隷零霊麗齢暦歴列劣烈裂廉恋憐漣煉簾練聯�\".split(\"\");\nfor(j = 0; j != D[206].length; ++j) if(D[206][j].charCodeAt(0) !== 0xFFFD) { e[D[206][j]] = 52736 + j; d[52736 + j] = D[206][j];}\nD[207] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������蓮連錬呂魯櫓炉賂路露労婁廊弄朗楼榔浪漏牢狼篭老聾蝋郎六麓禄肋録論倭和話歪賄脇惑枠鷲亙亘鰐詫藁蕨椀湾碗腕��������������������������������������������\".split(\"\");\nfor(j = 0; j != D[207].length; ++j) if(D[207][j].charCodeAt(0) !== 0xFFFD) { e[D[207][j]] = 52992 + j; d[52992 + j] = D[207][j];}\nD[208] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������弌丐丕个丱丶丼丿乂乖乘亂亅豫亊舒弍于亞亟亠亢亰亳亶从仍仄仆仂仗仞仭仟价伉佚估佛佝佗佇佶侈侏侘佻佩佰侑佯來侖儘俔俟俎俘俛俑俚俐俤俥倚倨倔倪倥倅伜俶倡倩倬俾俯們倆偃假會偕偐偈做偖偬偸傀傚傅傴傲�\".split(\"\");\nfor(j = 0; j != D[208].length; ++j) if(D[208][j].charCodeAt(0) !== 0xFFFD) { e[D[208][j]] = 53248 + j; d[53248 + j] = D[208][j];}\nD[209] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������僉僊傳僂僖僞僥僭僣僮價僵儉儁儂儖儕儔儚儡儺儷儼儻儿兀兒兌兔兢竸兩兪兮冀冂囘册冉冏冑冓冕冖冤冦冢冩冪冫决冱冲冰况冽凅凉凛几處凩凭凰凵凾刄刋刔刎刧刪刮刳刹剏剄剋剌剞剔剪剴剩剳剿剽劍劔劒剱劈劑辨�\".split(\"\");\nfor(j = 0; j != D[209].length; ++j) if(D[209][j].charCodeAt(0) !== 0xFFFD) { e[D[209][j]] = 53504 + j; d[53504 + j] = D[209][j];}\nD[210] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������辧劬劭劼劵勁勍勗勞勣勦飭勠勳勵勸勹匆匈甸匍匐匏匕匚匣匯匱匳匸區卆卅丗卉卍凖卞卩卮夘卻卷厂厖厠厦厥厮厰厶參簒雙叟曼燮叮叨叭叺吁吽呀听吭吼吮吶吩吝呎咏呵咎呟呱呷呰咒呻咀呶咄咐咆哇咢咸咥咬哄哈咨�\".split(\"\");\nfor(j = 0; j != D[210].length; ++j) if(D[210][j].charCodeAt(0) !== 0xFFFD) { e[D[210][j]] = 53760 + j; d[53760 + j] = D[210][j];}\nD[211] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������咫哂咤咾咼哘哥哦唏唔哽哮哭哺哢唹啀啣啌售啜啅啖啗唸唳啝喙喀咯喊喟啻啾喘喞單啼喃喩喇喨嗚嗅嗟嗄嗜嗤嗔嘔嗷嘖嗾嗽嘛嗹噎噐營嘴嘶嘲嘸噫噤嘯噬噪嚆嚀嚊嚠嚔嚏嚥嚮嚶嚴囂嚼囁囃囀囈囎囑囓囗囮囹圀囿圄圉�\".split(\"\");\nfor(j = 0; j != D[211].length; ++j) if(D[211][j].charCodeAt(0) !== 0xFFFD) { e[D[211][j]] = 54016 + j; d[54016 + j] = D[211][j];}\nD[212] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������圈國圍圓團圖嗇圜圦圷圸坎圻址坏坩埀垈坡坿垉垓垠垳垤垪垰埃埆埔埒埓堊埖埣堋堙堝塲堡塢塋塰毀塒堽塹墅墹墟墫墺壞墻墸墮壅壓壑壗壙壘壥壜壤壟壯壺壹壻壼壽夂夊夐夛梦夥夬夭夲夸夾竒奕奐奎奚奘奢奠奧奬奩�\".split(\"\");\nfor(j = 0; j != D[212].length; ++j) if(D[212][j].charCodeAt(0) !== 0xFFFD) { e[D[212][j]] = 54272 + j; d[54272 + j] = D[212][j];}\nD[213] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������奸妁妝佞侫妣妲姆姨姜妍姙姚娥娟娑娜娉娚婀婬婉娵娶婢婪媚媼媾嫋嫂媽嫣嫗嫦嫩嫖嫺嫻嬌嬋嬖嬲嫐嬪嬶嬾孃孅孀孑孕孚孛孥孩孰孳孵學斈孺宀它宦宸寃寇寉寔寐寤實寢寞寥寫寰寶寳尅將專對尓尠尢尨尸尹屁屆屎屓�\".split(\"\");\nfor(j = 0; j != D[213].length; ++j) if(D[213][j].charCodeAt(0) !== 0xFFFD) { e[D[213][j]] = 54528 + j; d[54528 + j] = D[213][j];}\nD[214] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������屐屏孱屬屮乢屶屹岌岑岔妛岫岻岶岼岷峅岾峇峙峩峽峺峭嶌峪崋崕崗嵜崟崛崑崔崢崚崙崘嵌嵒嵎嵋嵬嵳嵶嶇嶄嶂嶢嶝嶬嶮嶽嶐嶷嶼巉巍巓巒巖巛巫已巵帋帚帙帑帛帶帷幄幃幀幎幗幔幟幢幤幇幵并幺麼广庠廁廂廈廐廏�\".split(\"\");\nfor(j = 0; j != D[214].length; ++j) if(D[214][j].charCodeAt(0) !== 0xFFFD) { e[D[214][j]] = 54784 + j; d[54784 + j] = D[214][j];}\nD[215] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������廖廣廝廚廛廢廡廨廩廬廱廳廰廴廸廾弃弉彝彜弋弑弖弩弭弸彁彈彌彎弯彑彖彗彙彡彭彳彷徃徂彿徊很徑徇從徙徘徠徨徭徼忖忻忤忸忱忝悳忿怡恠怙怐怩怎怱怛怕怫怦怏怺恚恁恪恷恟恊恆恍恣恃恤恂恬恫恙悁悍惧悃悚�\".split(\"\");\nfor(j = 0; j != D[215].length; ++j) if(D[215][j].charCodeAt(0) !== 0xFFFD) { e[D[215][j]] = 55040 + j; d[55040 + j] = D[215][j];}\nD[216] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������悄悛悖悗悒悧悋惡悸惠惓悴忰悽惆悵惘慍愕愆惶惷愀惴惺愃愡惻惱愍愎慇愾愨愧慊愿愼愬愴愽慂慄慳慷慘慙慚慫慴慯慥慱慟慝慓慵憙憖憇憬憔憚憊憑憫憮懌懊應懷懈懃懆憺懋罹懍懦懣懶懺懴懿懽懼懾戀戈戉戍戌戔戛�\".split(\"\");\nfor(j = 0; j != D[216].length; ++j) if(D[216][j].charCodeAt(0) !== 0xFFFD) { e[D[216][j]] = 55296 + j; d[55296 + j] = D[216][j];}\nD[217] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������戞戡截戮戰戲戳扁扎扞扣扛扠扨扼抂抉找抒抓抖拔抃抔拗拑抻拏拿拆擔拈拜拌拊拂拇抛拉挌拮拱挧挂挈拯拵捐挾捍搜捏掖掎掀掫捶掣掏掉掟掵捫捩掾揩揀揆揣揉插揶揄搖搴搆搓搦搶攝搗搨搏摧摯摶摎攪撕撓撥撩撈撼�\".split(\"\");\nfor(j = 0; j != D[217].length; ++j) if(D[217][j].charCodeAt(0) !== 0xFFFD) { e[D[217][j]] = 55552 + j; d[55552 + j] = D[217][j];}\nD[218] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������據擒擅擇撻擘擂擱擧舉擠擡抬擣擯攬擶擴擲擺攀擽攘攜攅攤攣攫攴攵攷收攸畋效敖敕敍敘敞敝敲數斂斃變斛斟斫斷旃旆旁旄旌旒旛旙无旡旱杲昊昃旻杳昵昶昴昜晏晄晉晁晞晝晤晧晨晟晢晰暃暈暎暉暄暘暝曁暹曉暾暼�\".split(\"\");\nfor(j = 0; j != D[218].length; ++j) if(D[218][j].charCodeAt(0) !== 0xFFFD) { e[D[218][j]] = 55808 + j; d[55808 + j] = D[218][j];}\nD[219] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������曄暸曖曚曠昿曦曩曰曵曷朏朖朞朦朧霸朮朿朶杁朸朷杆杞杠杙杣杤枉杰枩杼杪枌枋枦枡枅枷柯枴柬枳柩枸柤柞柝柢柮枹柎柆柧檜栞框栩桀桍栲桎梳栫桙档桷桿梟梏梭梔條梛梃檮梹桴梵梠梺椏梍桾椁棊椈棘椢椦棡椌棍�\".split(\"\");\nfor(j = 0; j != D[219].length; ++j) if(D[219][j].charCodeAt(0) !== 0xFFFD) { e[D[219][j]] = 56064 + j; d[56064 + j] = D[219][j];}\nD[220] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������棔棧棕椶椒椄棗棣椥棹棠棯椨椪椚椣椡棆楹楷楜楸楫楔楾楮椹楴椽楙椰楡楞楝榁楪榲榮槐榿槁槓榾槎寨槊槝榻槃榧樮榑榠榜榕榴槞槨樂樛槿權槹槲槧樅榱樞槭樔槫樊樒櫁樣樓橄樌橲樶橸橇橢橙橦橈樸樢檐檍檠檄檢檣�\".split(\"\");\nfor(j = 0; j != D[220].length; ++j) if(D[220][j].charCodeAt(0) !== 0xFFFD) { e[D[220][j]] = 56320 + j; d[56320 + j] = D[220][j];}\nD[221] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������檗蘗檻櫃櫂檸檳檬櫞櫑櫟檪櫚櫪櫻欅蘖櫺欒欖鬱欟欸欷盜欹飮歇歃歉歐歙歔歛歟歡歸歹歿殀殄殃殍殘殕殞殤殪殫殯殲殱殳殷殼毆毋毓毟毬毫毳毯麾氈氓气氛氤氣汞汕汢汪沂沍沚沁沛汾汨汳沒沐泄泱泓沽泗泅泝沮沱沾�\".split(\"\");\nfor(j = 0; j != D[221].length; ++j) if(D[221][j].charCodeAt(0) !== 0xFFFD) { e[D[221][j]] = 56576 + j; d[56576 + j] = D[221][j];}\nD[222] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������沺泛泯泙泪洟衍洶洫洽洸洙洵洳洒洌浣涓浤浚浹浙涎涕濤涅淹渕渊涵淇淦涸淆淬淞淌淨淒淅淺淙淤淕淪淮渭湮渮渙湲湟渾渣湫渫湶湍渟湃渺湎渤滿渝游溂溪溘滉溷滓溽溯滄溲滔滕溏溥滂溟潁漑灌滬滸滾漿滲漱滯漲滌�\".split(\"\");\nfor(j = 0; j != D[222].length; ++j) if(D[222][j].charCodeAt(0) !== 0xFFFD) { e[D[222][j]] = 56832 + j; d[56832 + j] = D[222][j];}\nD[223] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������漾漓滷澆潺潸澁澀潯潛濳潭澂潼潘澎澑濂潦澳澣澡澤澹濆澪濟濕濬濔濘濱濮濛瀉瀋濺瀑瀁瀏濾瀛瀚潴瀝瀘瀟瀰瀾瀲灑灣炙炒炯烱炬炸炳炮烟烋烝烙焉烽焜焙煥煕熈煦煢煌煖煬熏燻熄熕熨熬燗熹熾燒燉燔燎燠燬燧燵燼�\".split(\"\");\nfor(j = 0; j != D[223].length; ++j) if(D[223][j].charCodeAt(0) !== 0xFFFD) { e[D[223][j]] = 57088 + j; d[57088 + j] = D[223][j];}\nD[224] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������燹燿爍爐爛爨爭爬爰爲爻爼爿牀牆牋牘牴牾犂犁犇犒犖犢犧犹犲狃狆狄狎狒狢狠狡狹狷倏猗猊猜猖猝猴猯猩猥猾獎獏默獗獪獨獰獸獵獻獺珈玳珎玻珀珥珮珞璢琅瑯琥珸琲琺瑕琿瑟瑙瑁瑜瑩瑰瑣瑪瑶瑾璋璞璧瓊瓏瓔珱�\".split(\"\");\nfor(j = 0; j != D[224].length; ++j) if(D[224][j].charCodeAt(0) !== 0xFFFD) { e[D[224][j]] = 57344 + j; d[57344 + j] = D[224][j];}\nD[225] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������瓠瓣瓧瓩瓮瓲瓰瓱瓸瓷甄甃甅甌甎甍甕甓甞甦甬甼畄畍畊畉畛畆畚畩畤畧畫畭畸當疆疇畴疊疉疂疔疚疝疥疣痂疳痃疵疽疸疼疱痍痊痒痙痣痞痾痿痼瘁痰痺痲痳瘋瘍瘉瘟瘧瘠瘡瘢瘤瘴瘰瘻癇癈癆癜癘癡癢癨癩癪癧癬癰�\".split(\"\");\nfor(j = 0; j != D[225].length; ++j) if(D[225][j].charCodeAt(0) !== 0xFFFD) { e[D[225][j]] = 57600 + j; d[57600 + j] = D[225][j];}\nD[226] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������癲癶癸發皀皃皈皋皎皖皓皙皚皰皴皸皹皺盂盍盖盒盞盡盥盧盪蘯盻眈眇眄眩眤眞眥眦眛眷眸睇睚睨睫睛睥睿睾睹瞎瞋瞑瞠瞞瞰瞶瞹瞿瞼瞽瞻矇矍矗矚矜矣矮矼砌砒礦砠礪硅碎硴碆硼碚碌碣碵碪碯磑磆磋磔碾碼磅磊磬�\".split(\"\");\nfor(j = 0; j != D[226].length; ++j) if(D[226][j].charCodeAt(0) !== 0xFFFD) { e[D[226][j]] = 57856 + j; d[57856 + j] = D[226][j];}\nD[227] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������磧磚磽磴礇礒礑礙礬礫祀祠祗祟祚祕祓祺祿禊禝禧齋禪禮禳禹禺秉秕秧秬秡秣稈稍稘稙稠稟禀稱稻稾稷穃穗穉穡穢穩龝穰穹穽窈窗窕窘窖窩竈窰窶竅竄窿邃竇竊竍竏竕竓站竚竝竡竢竦竭竰笂笏笊笆笳笘笙笞笵笨笶筐�\".split(\"\");\nfor(j = 0; j != D[227].length; ++j) if(D[227][j].charCodeAt(0) !== 0xFFFD) { e[D[227][j]] = 58112 + j; d[58112 + j] = D[227][j];}\nD[228] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������筺笄筍笋筌筅筵筥筴筧筰筱筬筮箝箘箟箍箜箚箋箒箏筝箙篋篁篌篏箴篆篝篩簑簔篦篥籠簀簇簓篳篷簗簍篶簣簧簪簟簷簫簽籌籃籔籏籀籐籘籟籤籖籥籬籵粃粐粤粭粢粫粡粨粳粲粱粮粹粽糀糅糂糘糒糜糢鬻糯糲糴糶糺紆�\".split(\"\");\nfor(j = 0; j != D[228].length; ++j) if(D[228][j].charCodeAt(0) !== 0xFFFD) { e[D[228][j]] = 58368 + j; d[58368 + j] = D[228][j];}\nD[229] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������紂紜紕紊絅絋紮紲紿紵絆絳絖絎絲絨絮絏絣經綉絛綏絽綛綺綮綣綵緇綽綫總綢綯緜綸綟綰緘緝緤緞緻緲緡縅縊縣縡縒縱縟縉縋縢繆繦縻縵縹繃縷縲縺繧繝繖繞繙繚繹繪繩繼繻纃緕繽辮繿纈纉續纒纐纓纔纖纎纛纜缸缺�\".split(\"\");\nfor(j = 0; j != D[229].length; ++j) if(D[229][j].charCodeAt(0) !== 0xFFFD) { e[D[229][j]] = 58624 + j; d[58624 + j] = D[229][j];}\nD[230] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������罅罌罍罎罐网罕罔罘罟罠罨罩罧罸羂羆羃羈羇羌羔羞羝羚羣羯羲羹羮羶羸譱翅翆翊翕翔翡翦翩翳翹飜耆耄耋耒耘耙耜耡耨耿耻聊聆聒聘聚聟聢聨聳聲聰聶聹聽聿肄肆肅肛肓肚肭冐肬胛胥胙胝胄胚胖脉胯胱脛脩脣脯腋�\".split(\"\");\nfor(j = 0; j != D[230].length; ++j) if(D[230][j].charCodeAt(0) !== 0xFFFD) { e[D[230][j]] = 58880 + j; d[58880 + j] = D[230][j];}\nD[231] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������隋腆脾腓腑胼腱腮腥腦腴膃膈膊膀膂膠膕膤膣腟膓膩膰膵膾膸膽臀臂膺臉臍臑臙臘臈臚臟臠臧臺臻臾舁舂舅與舊舍舐舖舩舫舸舳艀艙艘艝艚艟艤艢艨艪艫舮艱艷艸艾芍芒芫芟芻芬苡苣苟苒苴苳苺莓范苻苹苞茆苜茉苙�\".split(\"\");\nfor(j = 0; j != D[231].length; ++j) if(D[231][j].charCodeAt(0) !== 0xFFFD) { e[D[231][j]] = 59136 + j; d[59136 + j] = D[231][j];}\nD[232] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������茵茴茖茲茱荀茹荐荅茯茫茗茘莅莚莪莟莢莖茣莎莇莊荼莵荳荵莠莉莨菴萓菫菎菽萃菘萋菁菷萇菠菲萍萢萠莽萸蔆菻葭萪萼蕚蒄葷葫蒭葮蒂葩葆萬葯葹萵蓊葢蒹蒿蒟蓙蓍蒻蓚蓐蓁蓆蓖蒡蔡蓿蓴蔗蔘蔬蔟蔕蔔蓼蕀蕣蕘蕈�\".split(\"\");\nfor(j = 0; j != D[232].length; ++j) if(D[232][j].charCodeAt(0) !== 0xFFFD) { e[D[232][j]] = 59392 + j; d[59392 + j] = D[232][j];}\nD[233] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������蕁蘂蕋蕕薀薤薈薑薊薨蕭薔薛藪薇薜蕷蕾薐藉薺藏薹藐藕藝藥藜藹蘊蘓蘋藾藺蘆蘢蘚蘰蘿虍乕虔號虧虱蚓蚣蚩蚪蚋蚌蚶蚯蛄蛆蚰蛉蠣蚫蛔蛞蛩蛬蛟蛛蛯蜒蜆蜈蜀蜃蛻蜑蜉蜍蛹蜊蜴蜿蜷蜻蜥蜩蜚蝠蝟蝸蝌蝎蝴蝗蝨蝮蝙�\".split(\"\");\nfor(j = 0; j != D[233].length; ++j) if(D[233][j].charCodeAt(0) !== 0xFFFD) { e[D[233][j]] = 59648 + j; d[59648 + j] = D[233][j];}\nD[234] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������蝓蝣蝪蠅螢螟螂螯蟋螽蟀蟐雖螫蟄螳蟇蟆螻蟯蟲蟠蠏蠍蟾蟶蟷蠎蟒蠑蠖蠕蠢蠡蠱蠶蠹蠧蠻衄衂衒衙衞衢衫袁衾袞衵衽袵衲袂袗袒袮袙袢袍袤袰袿袱裃裄裔裘裙裝裹褂裼裴裨裲褄褌褊褓襃褞褥褪褫襁襄褻褶褸襌褝襠襞�\".split(\"\");\nfor(j = 0; j != D[234].length; ++j) if(D[234][j].charCodeAt(0) !== 0xFFFD) { e[D[234][j]] = 59904 + j; d[59904 + j] = D[234][j];}\nD[235] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������襦襤襭襪襯襴襷襾覃覈覊覓覘覡覩覦覬覯覲覺覽覿觀觚觜觝觧觴觸訃訖訐訌訛訝訥訶詁詛詒詆詈詼詭詬詢誅誂誄誨誡誑誥誦誚誣諄諍諂諚諫諳諧諤諱謔諠諢諷諞諛謌謇謚諡謖謐謗謠謳鞫謦謫謾謨譁譌譏譎證譖譛譚譫�\".split(\"\");\nfor(j = 0; j != D[235].length; ++j) if(D[235][j].charCodeAt(0) !== 0xFFFD) { e[D[235][j]] = 60160 + j; d[60160 + j] = D[235][j];}\nD[236] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������譟譬譯譴譽讀讌讎讒讓讖讙讚谺豁谿豈豌豎豐豕豢豬豸豺貂貉貅貊貍貎貔豼貘戝貭貪貽貲貳貮貶賈賁賤賣賚賽賺賻贄贅贊贇贏贍贐齎贓賍贔贖赧赭赱赳趁趙跂趾趺跏跚跖跌跛跋跪跫跟跣跼踈踉跿踝踞踐踟蹂踵踰踴蹊�\".split(\"\");\nfor(j = 0; j != D[236].length; ++j) if(D[236][j].charCodeAt(0) !== 0xFFFD) { e[D[236][j]] = 60416 + j; d[60416 + j] = D[236][j];}\nD[237] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������蹇蹉蹌蹐蹈蹙蹤蹠踪蹣蹕蹶蹲蹼躁躇躅躄躋躊躓躑躔躙躪躡躬躰軆躱躾軅軈軋軛軣軼軻軫軾輊輅輕輒輙輓輜輟輛輌輦輳輻輹轅轂輾轌轉轆轎轗轜轢轣轤辜辟辣辭辯辷迚迥迢迪迯邇迴逅迹迺逑逕逡逍逞逖逋逧逶逵逹迸�\".split(\"\");\nfor(j = 0; j != D[237].length; ++j) if(D[237][j].charCodeAt(0) !== 0xFFFD) { e[D[237][j]] = 60672 + j; d[60672 + j] = D[237][j];}\nD[238] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������遏遐遑遒逎遉逾遖遘遞遨遯遶隨遲邂遽邁邀邊邉邏邨邯邱邵郢郤扈郛鄂鄒鄙鄲鄰酊酖酘酣酥酩酳酲醋醉醂醢醫醯醪醵醴醺釀釁釉釋釐釖釟釡釛釼釵釶鈞釿鈔鈬鈕鈑鉞鉗鉅鉉鉤鉈銕鈿鉋鉐銜銖銓銛鉚鋏銹銷鋩錏鋺鍄錮�\".split(\"\");\nfor(j = 0; j != D[238].length; ++j) if(D[238][j].charCodeAt(0) !== 0xFFFD) { e[D[238][j]] = 60928 + j; d[60928 + j] = D[238][j];}\nD[239] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������錙錢錚錣錺錵錻鍜鍠鍼鍮鍖鎰鎬鎭鎔鎹鏖鏗鏨鏥鏘鏃鏝鏐鏈鏤鐚鐔鐓鐃鐇鐐鐶鐫鐵鐡鐺鑁鑒鑄鑛鑠鑢鑞鑪鈩鑰鑵鑷鑽鑚鑼鑾钁鑿閂閇閊閔閖閘閙閠閨閧閭閼閻閹閾闊濶闃闍闌闕闔闖關闡闥闢阡阨阮阯陂陌陏陋陷陜陞�\".split(\"\");\nfor(j = 0; j != D[239].length; ++j) if(D[239][j].charCodeAt(0) !== 0xFFFD) { e[D[239][j]] = 61184 + j; d[61184 + j] = D[239][j];}\nD[240] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������陝陟陦陲陬隍隘隕隗險隧隱隲隰隴隶隸隹雎雋雉雍襍雜霍雕雹霄霆霈霓霎霑霏霖霙霤霪霰霹霽霾靄靆靈靂靉靜靠靤靦靨勒靫靱靹鞅靼鞁靺鞆鞋鞏鞐鞜鞨鞦鞣鞳鞴韃韆韈韋韜韭齏韲竟韶韵頏頌頸頤頡頷頽顆顏顋顫顯顰�\".split(\"\");\nfor(j = 0; j != D[240].length; ++j) if(D[240][j].charCodeAt(0) !== 0xFFFD) { e[D[240][j]] = 61440 + j; d[61440 + j] = D[240][j];}\nD[241] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������顱顴顳颪颯颱颶飄飃飆飩飫餃餉餒餔餘餡餝餞餤餠餬餮餽餾饂饉饅饐饋饑饒饌饕馗馘馥馭馮馼駟駛駝駘駑駭駮駱駲駻駸騁騏騅駢騙騫騷驅驂驀驃騾驕驍驛驗驟驢驥驤驩驫驪骭骰骼髀髏髑髓體髞髟髢髣髦髯髫髮髴髱髷�\".split(\"\");\nfor(j = 0; j != D[241].length; ++j) if(D[241][j].charCodeAt(0) !== 0xFFFD) { e[D[241][j]] = 61696 + j; d[61696 + j] = D[241][j];}\nD[242] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������髻鬆鬘鬚鬟鬢鬣鬥鬧鬨鬩鬪鬮鬯鬲魄魃魏魍魎魑魘魴鮓鮃鮑鮖鮗鮟鮠鮨鮴鯀鯊鮹鯆鯏鯑鯒鯣鯢鯤鯔鯡鰺鯲鯱鯰鰕鰔鰉鰓鰌鰆鰈鰒鰊鰄鰮鰛鰥鰤鰡鰰鱇鰲鱆鰾鱚鱠鱧鱶鱸鳧鳬鳰鴉鴈鳫鴃鴆鴪鴦鶯鴣鴟鵄鴕鴒鵁鴿鴾鵆鵈�\".split(\"\");\nfor(j = 0; j != D[242].length; ++j) if(D[242][j].charCodeAt(0) !== 0xFFFD) { e[D[242][j]] = 61952 + j; d[61952 + j] = D[242][j];}\nD[243] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������鵝鵞鵤鵑鵐鵙鵲鶉鶇鶫鵯鵺鶚鶤鶩鶲鷄鷁鶻鶸鶺鷆鷏鷂鷙鷓鷸鷦鷭鷯鷽鸚鸛鸞鹵鹹鹽麁麈麋麌麒麕麑麝麥麩麸麪麭靡黌黎黏黐黔黜點黝黠黥黨黯黴黶黷黹黻黼黽鼇鼈皷鼕鼡鼬鼾齊齒齔齣齟齠齡齦齧齬齪齷齲齶龕龜龠�\".split(\"\");\nfor(j = 0; j != D[243].length; ++j) if(D[243][j].charCodeAt(0) !== 0xFFFD) { e[D[243][j]] = 62208 + j; d[62208 + j] = D[243][j];}\nD[244] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������堯槇遙瑤凜熙�����������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[244].length; ++j) if(D[244][j].charCodeAt(0) !== 0xFFFD) { e[D[244][j]] = 62464 + j; d[62464 + j] = D[244][j];}\nD[249] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������纊褜鍈銈蓜俉炻昱棈鋹曻彅丨仡仼伀伃伹佖侒侊侚侔俍偀倢俿倞偆偰偂傔僴僘兊兤冝冾凬刕劜劦勀勛匀匇匤卲厓厲叝﨎咜咊咩哿喆坙坥垬埈埇﨏塚增墲夋奓奛奝奣妤妺孖寀甯寘寬尞岦岺峵崧嵓﨑嵂嵭嶸嶹巐弡弴彧德�\".split(\"\");\nfor(j = 0; j != D[249].length; ++j) if(D[249][j].charCodeAt(0) !== 0xFFFD) { e[D[249][j]] = 63744 + j; d[63744 + j] = D[249][j];}\nD[250] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������忞恝悅悊惞惕愠惲愑愷愰憘戓抦揵摠撝擎敎昀昕昻昉昮昞昤晥晗晙晴晳暙暠暲暿曺朎朗杦枻桒柀栁桄棏﨓楨﨔榘槢樰橫橆橳橾櫢櫤毖氿汜沆汯泚洄涇浯涖涬淏淸淲淼渹湜渧渼溿澈澵濵瀅瀇瀨炅炫焏焄煜煆煇凞燁燾犱�\".split(\"\");\nfor(j = 0; j != D[250].length; ++j) if(D[250][j].charCodeAt(0) !== 0xFFFD) { e[D[250][j]] = 64000 + j; d[64000 + j] = D[250][j];}\nD[251] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������犾猤猪獷玽珉珖珣珒琇珵琦琪琩琮瑢璉璟甁畯皂皜皞皛皦益睆劯砡硎硤硺礰礼神祥禔福禛竑竧靖竫箞精絈絜綷綠緖繒罇羡羽茁荢荿菇菶葈蒴蕓蕙蕫﨟薰蘒﨡蠇裵訒訷詹誧誾諟諸諶譓譿賰賴贒赶﨣軏﨤逸遧郞都鄕鄧釚�\".split(\"\");\nfor(j = 0; j != D[251].length; ++j) if(D[251][j].charCodeAt(0) !== 0xFFFD) { e[D[251][j]] = 64256 + j; d[64256 + j] = D[251][j];}\nD[252] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������釗釞釭釮釤釥鈆鈐鈊鈺鉀鈼鉎鉙鉑鈹鉧銧鉷鉸鋧鋗鋙鋐﨧鋕鋠鋓錥錡鋻﨨錞鋿錝錂鍰鍗鎤鏆鏞鏸鐱鑅鑈閒隆﨩隝隯霳霻靃靍靏靑靕顗顥飯飼餧館馞驎髙髜魵魲鮏鮱鮻鰀鵰鵫鶴鸙黑��ⅰⅱⅲⅳⅴⅵⅶⅷⅸⅹ�￤＇＂�\".split(\"\");\nfor(j = 0; j != D[252].length; ++j) if(D[252][j].charCodeAt(0) !== 0xFFFD) { e[D[252][j]] = 64512 + j; d[64512 + j] = D[252][j];}\nreturn {\"enc\": e, \"dec\": d }; })();\ncptable[51936] = (function(){ var d = [], e = {}, D = [], j;\nD[0] = \"\\u0000\\u0001\\u0002\\u0003\\u0004\\u0005\\u0006\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\u0014\\u0015\\u0016\\u0017\\u0018\\u0019\\u001a\\u001b\\u001c\\u001d\\u001e\\u001f !\\\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~€������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[0].length; ++j) if(D[0][j].charCodeAt(0) !== 0xFFFD) { e[D[0][j]] = 0 + j; d[0 + j] = D[0][j];}\nD[129] = \"����������������������������������������������������������������丂丄丅丆丏丒丗丟丠両丣並丩丮丯丱丳丵丷丼乀乁乂乄乆乊乑乕乗乚乛乢乣乤乥乧乨乪乫乬乭乮乯乲乴乵乶乷乸乹乺乻乼乽乿亀亁亂亃亄亅亇亊�亐亖亗亙亜亝亞亣亪亯亰亱亴亶亷亸亹亼亽亾仈仌仏仐仒仚仛仜仠仢仦仧仩仭仮仯仱仴仸仹仺仼仾伀伂伃伄伅伆伇伈伋伌伒伓伔伕伖伜伝伡伣伨伩伬伭伮伱伳伵伷伹伻伾伿佀佁佂佄佅佇佈佉佊佋佌佒佔佖佡佢佦佨佪佫佭佮佱佲併佷佸佹佺佽侀侁侂侅來侇侊侌侎侐侒侓侕侖侘侙侚侜侞侟価侢�\".split(\"\");\nfor(j = 0; j != D[129].length; ++j) if(D[129][j].charCodeAt(0) !== 0xFFFD) { e[D[129][j]] = 33024 + j; d[33024 + j] = D[129][j];}\nD[130] = \"����������������������������������������������������������������侤侫侭侰侱侲侳侴侶侷侸侹侺侻侼侽侾俀俁係俆俇俈俉俋俌俍俒俓俔俕俖俙俛俠俢俤俥俧俫俬俰俲俴俵俶俷俹俻俼俽俿倀倁倂倃倄倅倆倇倈倉倊�個倎倐們倓倕倖倗倛倝倞倠倢倣値倧倫倯倰倱倲倳倴倵倶倷倸倹倻倽倿偀偁偂偄偅偆偉偊偋偍偐偑偒偓偔偖偗偘偙偛偝偞偟偠偡偢偣偤偦偧偨偩偪偫偭偮偯偰偱偲偳側偵偸偹偺偼偽傁傂傃傄傆傇傉傊傋傌傎傏傐傑傒傓傔傕傖傗傘備傚傛傜傝傞傟傠傡傢傤傦傪傫傭傮傯傰傱傳傴債傶傷傸傹傼�\".split(\"\");\nfor(j = 0; j != D[130].length; ++j) if(D[130][j].charCodeAt(0) !== 0xFFFD) { e[D[130][j]] = 33280 + j; d[33280 + j] = D[130][j];}\nD[131] = \"����������������������������������������������������������������傽傾傿僀僁僂僃僄僅僆僇僈僉僊僋僌働僎僐僑僒僓僔僕僗僘僙僛僜僝僞僟僠僡僢僣僤僥僨僩僪僫僯僰僱僲僴僶僷僸價僺僼僽僾僿儀儁儂儃億儅儈�儉儊儌儍儎儏儐儑儓儔儕儖儗儘儙儚儛儜儝儞償儠儢儣儤儥儦儧儨儩優儫儬儭儮儯儰儱儲儳儴儵儶儷儸儹儺儻儼儽儾兂兇兊兌兎兏児兒兓兗兘兙兛兝兞兟兠兡兣兤兦內兩兪兯兲兺兾兿冃冄円冇冊冋冎冏冐冑冓冔冘冚冝冞冟冡冣冦冧冨冩冪冭冮冴冸冹冺冾冿凁凂凃凅凈凊凍凎凐凒凓凔凕凖凗�\".split(\"\");\nfor(j = 0; j != D[131].length; ++j) if(D[131][j].charCodeAt(0) !== 0xFFFD) { e[D[131][j]] = 33536 + j; d[33536 + j] = D[131][j];}\nD[132] = \"����������������������������������������������������������������凘凙凚凜凞凟凢凣凥処凧凨凩凪凬凮凱凲凴凷凾刄刅刉刋刌刏刐刓刔刕刜刞刟刡刢刣別刦刧刪刬刯刱刲刴刵刼刾剄剅剆則剈剉剋剎剏剒剓剕剗剘�剙剚剛剝剟剠剢剣剤剦剨剫剬剭剮剰剱剳剴創剶剷剸剹剺剻剼剾劀劃劄劅劆劇劉劊劋劌劍劎劏劑劒劔劕劖劗劘劙劚劜劤劥劦劧劮劯劰労劵劶劷劸効劺劻劼劽勀勁勂勄勅勆勈勊勌勍勎勏勑勓勔動勗務勚勛勜勝勞勠勡勢勣勥勦勧勨勩勪勫勬勭勮勯勱勲勳勴勵勶勷勸勻勼勽匁匂匃匄匇匉匊匋匌匎�\".split(\"\");\nfor(j = 0; j != D[132].length; ++j) if(D[132][j].charCodeAt(0) !== 0xFFFD) { e[D[132][j]] = 33792 + j; d[33792 + j] = D[132][j];}\nD[133] = \"����������������������������������������������������������������匑匒匓匔匘匛匜匞匟匢匤匥匧匨匩匫匬匭匯匰匱匲匳匴匵匶匷匸匼匽區卂卄卆卋卌卍卐協単卙卛卝卥卨卪卬卭卲卶卹卻卼卽卾厀厁厃厇厈厊厎厏�厐厑厒厓厔厖厗厙厛厜厞厠厡厤厧厪厫厬厭厯厰厱厲厳厴厵厷厸厹厺厼厽厾叀參叄叅叆叇収叏叐叒叓叕叚叜叝叞叡叢叧叴叺叾叿吀吂吅吇吋吔吘吙吚吜吢吤吥吪吰吳吶吷吺吽吿呁呂呄呅呇呉呌呍呎呏呑呚呝呞呟呠呡呣呥呧呩呪呫呬呭呮呯呰呴呹呺呾呿咁咃咅咇咈咉咊咍咑咓咗咘咜咞咟咠咡�\".split(\"\");\nfor(j = 0; j != D[133].length; ++j) if(D[133][j].charCodeAt(0) !== 0xFFFD) { e[D[133][j]] = 34048 + j; d[34048 + j] = D[133][j];}\nD[134] = \"����������������������������������������������������������������咢咥咮咰咲咵咶咷咹咺咼咾哃哅哊哋哖哘哛哠員哢哣哤哫哬哯哰哱哴哵哶哷哸哹哻哾唀唂唃唄唅唈唊唋唌唍唎唒唓唕唖唗唘唙唚唜唝唞唟唡唥唦�唨唩唫唭唲唴唵唶唸唹唺唻唽啀啂啅啇啈啋啌啍啎問啑啒啓啔啗啘啙啚啛啝啞啟啠啢啣啨啩啫啯啰啱啲啳啴啹啺啽啿喅喆喌喍喎喐喒喓喕喖喗喚喛喞喠喡喢喣喤喥喦喨喩喪喫喬喭單喯喰喲喴営喸喺喼喿嗀嗁嗂嗃嗆嗇嗈嗊嗋嗎嗏嗐嗕嗗嗘嗙嗚嗛嗞嗠嗢嗧嗩嗭嗮嗰嗱嗴嗶嗸嗹嗺嗻嗼嗿嘂嘃嘄嘅�\".split(\"\");\nfor(j = 0; j != D[134].length; ++j) if(D[134][j].charCodeAt(0) !== 0xFFFD) { e[D[134][j]] = 34304 + j; d[34304 + j] = D[134][j];}\nD[135] = \"����������������������������������������������������������������嘆嘇嘊嘋嘍嘐嘑嘒嘓嘔嘕嘖嘗嘙嘚嘜嘝嘠嘡嘢嘥嘦嘨嘩嘪嘫嘮嘯嘰嘳嘵嘷嘸嘺嘼嘽嘾噀噁噂噃噄噅噆噇噈噉噊噋噏噐噑噒噓噕噖噚噛噝噞噟噠噡�噣噥噦噧噭噮噯噰噲噳噴噵噷噸噹噺噽噾噿嚀嚁嚂嚃嚄嚇嚈嚉嚊嚋嚌嚍嚐嚑嚒嚔嚕嚖嚗嚘嚙嚚嚛嚜嚝嚞嚟嚠嚡嚢嚤嚥嚦嚧嚨嚩嚪嚫嚬嚭嚮嚰嚱嚲嚳嚴嚵嚶嚸嚹嚺嚻嚽嚾嚿囀囁囂囃囄囅囆囇囈囉囋囌囍囎囏囐囑囒囓囕囖囘囙囜団囥囦囧囨囩囪囬囮囯囲図囶囷囸囻囼圀圁圂圅圇國圌圍圎圏圐圑�\".split(\"\");\nfor(j = 0; j != D[135].length; ++j) if(D[135][j].charCodeAt(0) !== 0xFFFD) { e[D[135][j]] = 34560 + j; d[34560 + j] = D[135][j];}\nD[136] = \"����������������������������������������������������������������園圓圔圕圖圗團圙圚圛圝圞圠圡圢圤圥圦圧圫圱圲圴圵圶圷圸圼圽圿坁坃坄坅坆坈坉坋坒坓坔坕坖坘坙坢坣坥坧坬坮坰坱坲坴坵坸坹坺坽坾坿垀�垁垇垈垉垊垍垎垏垐垑垔垕垖垗垘垙垚垜垝垞垟垥垨垪垬垯垰垱垳垵垶垷垹垺垻垼垽垾垿埀埁埄埅埆埇埈埉埊埌埍埐埑埓埖埗埛埜埞埡埢埣埥埦埧埨埩埪埫埬埮埰埱埲埳埵埶執埻埼埾埿堁堃堄堅堈堉堊堌堎堏堐堒堓堔堖堗堘堚堛堜堝堟堢堣堥堦堧堨堩堫堬堭堮堯報堲堳場堶堷堸堹堺堻堼堽�\".split(\"\");\nfor(j = 0; j != D[136].length; ++j) if(D[136][j].charCodeAt(0) !== 0xFFFD) { e[D[136][j]] = 34816 + j; d[34816 + j] = D[136][j];}\nD[137] = \"����������������������������������������������������������������堾堿塀塁塂塃塅塆塇塈塉塊塋塎塏塐塒塓塕塖塗塙塚塛塜塝塟塠塡塢塣塤塦塧塨塩塪塭塮塯塰塱塲塳塴塵塶塷塸塹塺塻塼塽塿墂墄墆墇墈墊墋墌�墍墎墏墐墑墔墕墖増墘墛墜墝墠墡墢墣墤墥墦墧墪墫墬墭墮墯墰墱墲墳墴墵墶墷墸墹墺墻墽墾墿壀壂壃壄壆壇壈壉壊壋壌壍壎壏壐壒壓壔壖壗壘壙壚壛壜壝壞壟壠壡壢壣壥壦壧壨壩壪壭壯壱売壴壵壷壸壺壻壼壽壾壿夀夁夃夅夆夈変夊夋夌夎夐夑夒夓夗夘夛夝夞夠夡夢夣夦夨夬夰夲夳夵夶夻�\".split(\"\");\nfor(j = 0; j != D[137].length; ++j) if(D[137][j].charCodeAt(0) !== 0xFFFD) { e[D[137][j]] = 35072 + j; d[35072 + j] = D[137][j];}\nD[138] = \"����������������������������������������������������������������夽夾夿奀奃奅奆奊奌奍奐奒奓奙奛奜奝奞奟奡奣奤奦奧奨奩奪奫奬奭奮奯奰奱奲奵奷奺奻奼奾奿妀妅妉妋妌妎妏妐妑妔妕妘妚妛妜妝妟妠妡妢妦�妧妬妭妰妱妳妴妵妶妷妸妺妼妽妿姀姁姂姃姄姅姇姈姉姌姍姎姏姕姖姙姛姞姟姠姡姢姤姦姧姩姪姫姭姮姯姰姱姲姳姴姵姶姷姸姺姼姽姾娀娂娊娋娍娎娏娐娒娔娕娖娗娙娚娛娝娞娡娢娤娦娧娨娪娫娬娭娮娯娰娳娵娷娸娹娺娻娽娾娿婁婂婃婄婅婇婈婋婌婍婎婏婐婑婒婓婔婖婗婘婙婛婜婝婞婟婠�\".split(\"\");\nfor(j = 0; j != D[138].length; ++j) if(D[138][j].charCodeAt(0) !== 0xFFFD) { e[D[138][j]] = 35328 + j; d[35328 + j] = D[138][j];}\nD[139] = \"����������������������������������������������������������������婡婣婤婥婦婨婩婫婬婭婮婯婰婱婲婳婸婹婻婼婽婾媀媁媂媃媄媅媆媇媈媉媊媋媌媍媎媏媐媑媓媔媕媖媗媘媙媜媝媞媟媠媡媢媣媤媥媦媧媨媩媫媬�媭媮媯媰媱媴媶媷媹媺媻媼媽媿嫀嫃嫄嫅嫆嫇嫈嫊嫋嫍嫎嫏嫐嫑嫓嫕嫗嫙嫚嫛嫝嫞嫟嫢嫤嫥嫧嫨嫪嫬嫭嫮嫯嫰嫲嫳嫴嫵嫶嫷嫸嫹嫺嫻嫼嫽嫾嫿嬀嬁嬂嬃嬄嬅嬆嬇嬈嬊嬋嬌嬍嬎嬏嬐嬑嬒嬓嬔嬕嬘嬙嬚嬛嬜嬝嬞嬟嬠嬡嬢嬣嬤嬥嬦嬧嬨嬩嬪嬫嬬嬭嬮嬯嬰嬱嬳嬵嬶嬸嬹嬺嬻嬼嬽嬾嬿孁孂孃孄孅孆孇�\".split(\"\");\nfor(j = 0; j != D[139].length; ++j) if(D[139][j].charCodeAt(0) !== 0xFFFD) { e[D[139][j]] = 35584 + j; d[35584 + j] = D[139][j];}\nD[140] = \"����������������������������������������������������������������孈孉孊孋孌孍孎孏孒孖孞孠孡孧孨孫孭孮孯孲孴孶孷學孹孻孼孾孿宂宆宊宍宎宐宑宒宔宖実宧宨宩宬宭宮宯宱宲宷宺宻宼寀寁寃寈寉寊寋寍寎寏�寑寔寕寖寗寘寙寚寛寜寠寢寣實寧審寪寫寬寭寯寱寲寳寴寵寶寷寽対尀専尃尅將專尋尌對導尐尒尓尗尙尛尞尟尠尡尣尦尨尩尪尫尭尮尯尰尲尳尵尶尷屃屄屆屇屌屍屒屓屔屖屗屘屚屛屜屝屟屢層屧屨屩屪屫屬屭屰屲屳屴屵屶屷屸屻屼屽屾岀岃岄岅岆岇岉岊岋岎岏岒岓岕岝岞岟岠岡岤岥岦岧岨�\".split(\"\");\nfor(j = 0; j != D[140].length; ++j) if(D[140][j].charCodeAt(0) !== 0xFFFD) { e[D[140][j]] = 35840 + j; d[35840 + j] = D[140][j];}\nD[141] = \"����������������������������������������������������������������岪岮岯岰岲岴岶岹岺岻岼岾峀峂峃峅峆峇峈峉峊峌峍峎峏峐峑峓峔峕峖峗峘峚峛峜峝峞峟峠峢峣峧峩峫峬峮峯峱峲峳峴峵島峷峸峹峺峼峽峾峿崀�崁崄崅崈崉崊崋崌崍崏崐崑崒崓崕崗崘崙崚崜崝崟崠崡崢崣崥崨崪崫崬崯崰崱崲崳崵崶崷崸崹崺崻崼崿嵀嵁嵂嵃嵄嵅嵆嵈嵉嵍嵎嵏嵐嵑嵒嵓嵔嵕嵖嵗嵙嵚嵜嵞嵟嵠嵡嵢嵣嵤嵥嵦嵧嵨嵪嵭嵮嵰嵱嵲嵳嵵嵶嵷嵸嵹嵺嵻嵼嵽嵾嵿嶀嶁嶃嶄嶅嶆嶇嶈嶉嶊嶋嶌嶍嶎嶏嶐嶑嶒嶓嶔嶕嶖嶗嶘嶚嶛嶜嶞嶟嶠�\".split(\"\");\nfor(j = 0; j != D[141].length; ++j) if(D[141][j].charCodeAt(0) !== 0xFFFD) { e[D[141][j]] = 36096 + j; d[36096 + j] = D[141][j];}\nD[142] = \"����������������������������������������������������������������嶡嶢嶣嶤嶥嶦嶧嶨嶩嶪嶫嶬嶭嶮嶯嶰嶱嶲嶳嶴嶵嶶嶸嶹嶺嶻嶼嶽嶾嶿巀巁巂巃巄巆巇巈巉巊巋巌巎巏巐巑巒巓巔巕巖巗巘巙巚巜巟巠巣巤巪巬巭�巰巵巶巸巹巺巻巼巿帀帄帇帉帊帋帍帎帒帓帗帞帟帠帡帢帣帤帥帨帩帪師帬帯帰帲帳帴帵帶帹帺帾帿幀幁幃幆幇幈幉幊幋幍幎幏幐幑幒幓幖幗幘幙幚幜幝幟幠幣幤幥幦幧幨幩幪幫幬幭幮幯幰幱幵幷幹幾庁庂広庅庈庉庌庍庎庒庘庛庝庡庢庣庤庨庩庪庫庬庮庯庰庱庲庴庺庻庼庽庿廀廁廂廃廄廅�\".split(\"\");\nfor(j = 0; j != D[142].length; ++j) if(D[142][j].charCodeAt(0) !== 0xFFFD) { e[D[142][j]] = 36352 + j; d[36352 + j] = D[142][j];}\nD[143] = \"����������������������������������������������������������������廆廇廈廋廌廍廎廏廐廔廕廗廘廙廚廜廝廞廟廠廡廢廣廤廥廦廧廩廫廬廭廮廯廰廱廲廳廵廸廹廻廼廽弅弆弇弉弌弍弎弐弒弔弖弙弚弜弝弞弡弢弣弤�弨弫弬弮弰弲弳弴張弶強弸弻弽弾弿彁彂彃彄彅彆彇彈彉彊彋彌彍彎彏彑彔彙彚彛彜彞彟彠彣彥彧彨彫彮彯彲彴彵彶彸彺彽彾彿徃徆徍徎徏徑従徔徖徚徛徝從徟徠徢徣徤徥徦徧復徫徬徯徰徱徲徳徴徶徸徹徺徻徾徿忀忁忂忇忈忊忋忎忓忔忕忚忛応忞忟忢忣忥忦忨忩忬忯忰忲忳忴忶忷忹忺忼怇�\".split(\"\");\nfor(j = 0; j != D[143].length; ++j) if(D[143][j].charCodeAt(0) !== 0xFFFD) { e[D[143][j]] = 36608 + j; d[36608 + j] = D[143][j];}\nD[144] = \"����������������������������������������������������������������怈怉怋怌怐怑怓怗怘怚怞怟怢怣怤怬怭怮怰怱怲怳怴怶怷怸怹怺怽怾恀恄恅恆恇恈恉恊恌恎恏恑恓恔恖恗恘恛恜恞恟恠恡恥恦恮恱恲恴恵恷恾悀�悁悂悅悆悇悈悊悋悎悏悐悑悓悕悗悘悙悜悞悡悢悤悥悧悩悪悮悰悳悵悶悷悹悺悽悾悿惀惁惂惃惄惇惈惉惌惍惎惏惐惒惓惔惖惗惙惛惞惡惢惣惤惥惪惱惲惵惷惸惻惼惽惾惿愂愃愄愅愇愊愋愌愐愑愒愓愔愖愗愘愙愛愜愝愞愡愢愥愨愩愪愬愭愮愯愰愱愲愳愴愵愶愷愸愹愺愻愼愽愾慀慁慂慃慄慅慆�\".split(\"\");\nfor(j = 0; j != D[144].length; ++j) if(D[144][j].charCodeAt(0) !== 0xFFFD) { e[D[144][j]] = 36864 + j; d[36864 + j] = D[144][j];}\nD[145] = \"����������������������������������������������������������������慇慉態慍慏慐慒慓慔慖慗慘慙慚慛慜慞慟慠慡慣慤慥慦慩慪慫慬慭慮慯慱慲慳慴慶慸慹慺慻慼慽慾慿憀憁憂憃憄憅憆憇憈憉憊憌憍憏憐憑憒憓憕�憖憗憘憙憚憛憜憞憟憠憡憢憣憤憥憦憪憫憭憮憯憰憱憲憳憴憵憶憸憹憺憻憼憽憿懀懁懃懄懅懆懇應懌懍懎懏懐懓懕懖懗懘懙懚懛懜懝懞懟懠懡懢懣懤懥懧懨懩懪懫懬懭懮懯懰懱懲懳懴懶懷懸懹懺懻懼懽懾戀戁戂戃戄戅戇戉戓戔戙戜戝戞戠戣戦戧戨戩戫戭戯戰戱戲戵戶戸戹戺戻戼扂扄扅扆扊�\".split(\"\");\nfor(j = 0; j != D[145].length; ++j) if(D[145][j].charCodeAt(0) !== 0xFFFD) { e[D[145][j]] = 37120 + j; d[37120 + j] = D[145][j];}\nD[146] = \"����������������������������������������������������������������扏扐払扖扗扙扚扜扝扞扟扠扡扢扤扥扨扱扲扴扵扷扸扺扻扽抁抂抃抅抆抇抈抋抌抍抎抏抐抔抙抜抝択抣抦抧抩抪抭抮抯抰抲抳抴抶抷抸抺抾拀拁�拃拋拏拑拕拝拞拠拡拤拪拫拰拲拵拸拹拺拻挀挃挄挅挆挊挋挌挍挏挐挒挓挔挕挗挘挙挜挦挧挩挬挭挮挰挱挳挴挵挶挷挸挻挼挾挿捀捁捄捇捈捊捑捒捓捔捖捗捘捙捚捛捜捝捠捤捥捦捨捪捫捬捯捰捲捳捴捵捸捹捼捽捾捿掁掃掄掅掆掋掍掑掓掔掕掗掙掚掛掜掝掞掟採掤掦掫掯掱掲掵掶掹掻掽掿揀�\".split(\"\");\nfor(j = 0; j != D[146].length; ++j) if(D[146][j].charCodeAt(0) !== 0xFFFD) { e[D[146][j]] = 37376 + j; d[37376 + j] = D[146][j];}\nD[147] = \"����������������������������������������������������������������揁揂揃揅揇揈揊揋揌揑揓揔揕揗揘揙揚換揜揝揟揢揤揥揦揧揨揫揬揮揯揰揱揳揵揷揹揺揻揼揾搃搄搆搇搈搉搊損搎搑搒搕搖搗搘搙搚搝搟搢搣搤�搥搧搨搩搫搮搯搰搱搲搳搵搶搷搸搹搻搼搾摀摂摃摉摋摌摍摎摏摐摑摓摕摖摗摙摚摛摜摝摟摠摡摢摣摤摥摦摨摪摫摬摮摯摰摱摲摳摴摵摶摷摻摼摽摾摿撀撁撃撆撈撉撊撋撌撍撎撏撐撓撔撗撘撚撛撜撝撟撠撡撢撣撥撦撧撨撪撫撯撱撲撳撴撶撹撻撽撾撿擁擃擄擆擇擈擉擊擋擌擏擑擓擔擕擖擙據�\".split(\"\");\nfor(j = 0; j != D[147].length; ++j) if(D[147][j].charCodeAt(0) !== 0xFFFD) { e[D[147][j]] = 37632 + j; d[37632 + j] = D[147][j];}\nD[148] = \"����������������������������������������������������������������擛擜擝擟擠擡擣擥擧擨擩擪擫擬擭擮擯擰擱擲擳擴擵擶擷擸擹擺擻擼擽擾擿攁攂攃攄攅攆攇攈攊攋攌攍攎攏攐攑攓攔攕攖攗攙攚攛攜攝攞攟攠攡�攢攣攤攦攧攨攩攪攬攭攰攱攲攳攷攺攼攽敀敁敂敃敄敆敇敊敋敍敎敐敒敓敔敗敘敚敜敟敠敡敤敥敧敨敩敪敭敮敯敱敳敵敶數敹敺敻敼敽敾敿斀斁斂斃斄斅斆斈斉斊斍斎斏斒斔斕斖斘斚斝斞斠斢斣斦斨斪斬斮斱斲斳斴斵斶斷斸斺斻斾斿旀旂旇旈旉旊旍旐旑旓旔旕旘旙旚旛旜旝旞旟旡旣旤旪旫�\".split(\"\");\nfor(j = 0; j != D[148].length; ++j) if(D[148][j].charCodeAt(0) !== 0xFFFD) { e[D[148][j]] = 37888 + j; d[37888 + j] = D[148][j];}\nD[149] = \"����������������������������������������������������������������旲旳旴旵旸旹旻旼旽旾旿昁昄昅昇昈昉昋昍昐昑昒昖昗昘昚昛昜昞昡昢昣昤昦昩昪昫昬昮昰昲昳昷昸昹昺昻昽昿晀時晄晅晆晇晈晉晊晍晎晐晑晘�晙晛晜晝晞晠晢晣晥晧晩晪晫晬晭晱晲晳晵晸晹晻晼晽晿暀暁暃暅暆暈暉暊暋暍暎暏暐暒暓暔暕暘暙暚暛暜暞暟暠暡暢暣暤暥暦暩暪暫暬暭暯暰暱暲暳暵暶暷暸暺暻暼暽暿曀曁曂曃曄曅曆曇曈曉曊曋曌曍曎曏曐曑曒曓曔曕曖曗曘曚曞曟曠曡曢曣曤曥曧曨曪曫曬曭曮曯曱曵曶書曺曻曽朁朂會�\".split(\"\");\nfor(j = 0; j != D[149].length; ++j) if(D[149][j].charCodeAt(0) !== 0xFFFD) { e[D[149][j]] = 38144 + j; d[38144 + j] = D[149][j];}\nD[150] = \"����������������������������������������������������������������朄朅朆朇朌朎朏朑朒朓朖朘朙朚朜朞朠朡朢朣朤朥朧朩朮朰朲朳朶朷朸朹朻朼朾朿杁杄杅杇杊杋杍杒杔杕杗杘杙杚杛杝杢杣杤杦杧杫杬杮東杴杶�杸杹杺杻杽枀枂枃枅枆枈枊枌枍枎枏枑枒枓枔枖枙枛枟枠枡枤枦枩枬枮枱枲枴枹枺枻枼枽枾枿柀柂柅柆柇柈柉柊柋柌柍柎柕柖柗柛柟柡柣柤柦柧柨柪柫柭柮柲柵柶柷柸柹柺査柼柾栁栂栃栄栆栍栐栒栔栕栘栙栚栛栜栞栟栠栢栣栤栥栦栧栨栫栬栭栮栯栰栱栴栵栶栺栻栿桇桋桍桏桒桖桗桘桙桚桛�\".split(\"\");\nfor(j = 0; j != D[150].length; ++j) if(D[150][j].charCodeAt(0) !== 0xFFFD) { e[D[150][j]] = 38400 + j; d[38400 + j] = D[150][j];}\nD[151] = \"����������������������������������������������������������������桜桝桞桟桪桬桭桮桯桰桱桲桳桵桸桹桺桻桼桽桾桿梀梂梄梇梈梉梊梋梌梍梎梐梑梒梔梕梖梘梙梚梛梜條梞梟梠梡梣梤梥梩梪梫梬梮梱梲梴梶梷梸�梹梺梻梼梽梾梿棁棃棄棅棆棇棈棊棌棎棏棐棑棓棔棖棗棙棛棜棝棞棟棡棢棤棥棦棧棨棩棪棫棬棭棯棲棳棴棶棷棸棻棽棾棿椀椂椃椄椆椇椈椉椊椌椏椑椓椔椕椖椗椘椙椚椛検椝椞椡椢椣椥椦椧椨椩椪椫椬椮椯椱椲椳椵椶椷椸椺椻椼椾楀楁楃楄楅楆楇楈楉楊楋楌楍楎楏楐楑楒楓楕楖楘楙楛楜楟�\".split(\"\");\nfor(j = 0; j != D[151].length; ++j) if(D[151][j].charCodeAt(0) !== 0xFFFD) { e[D[151][j]] = 38656 + j; d[38656 + j] = D[151][j];}\nD[152] = \"����������������������������������������������������������������楡楢楤楥楧楨楩楪楬業楯楰楲楳楴極楶楺楻楽楾楿榁榃榅榊榋榌榎榏榐榑榒榓榖榗榙榚榝榞榟榠榡榢榣榤榥榦榩榪榬榮榯榰榲榳榵榶榸榹榺榼榽�榾榿槀槂槃槄槅槆槇槈槉構槍槏槑槒槓槕槖槗様槙槚槜槝槞槡槢槣槤槥槦槧槨槩槪槫槬槮槯槰槱槳槴槵槶槷槸槹槺槻槼槾樀樁樂樃樄樅樆樇樈樉樋樌樍樎樏樐樑樒樓樔樕樖標樚樛樜樝樞樠樢樣樤樥樦樧権樫樬樭樮樰樲樳樴樶樷樸樹樺樻樼樿橀橁橂橃橅橆橈橉橊橋橌橍橎橏橑橒橓橔橕橖橗橚�\".split(\"\");\nfor(j = 0; j != D[152].length; ++j) if(D[152][j].charCodeAt(0) !== 0xFFFD) { e[D[152][j]] = 38912 + j; d[38912 + j] = D[152][j];}\nD[153] = \"����������������������������������������������������������������橜橝橞機橠橢橣橤橦橧橨橩橪橫橬橭橮橯橰橲橳橴橵橶橷橸橺橻橽橾橿檁檂檃檅檆檇檈檉檊檋檌檍檏檒檓檔檕檖檘檙檚檛檜檝檞檟檡檢檣檤檥檦�檧檨檪檭檮檯檰檱檲檳檴檵檶檷檸檹檺檻檼檽檾檿櫀櫁櫂櫃櫄櫅櫆櫇櫈櫉櫊櫋櫌櫍櫎櫏櫐櫑櫒櫓櫔櫕櫖櫗櫘櫙櫚櫛櫜櫝櫞櫟櫠櫡櫢櫣櫤櫥櫦櫧櫨櫩櫪櫫櫬櫭櫮櫯櫰櫱櫲櫳櫴櫵櫶櫷櫸櫹櫺櫻櫼櫽櫾櫿欀欁欂欃欄欅欆欇欈欉權欋欌欍欎欏欐欑欒欓欔欕欖欗欘欙欚欛欜欝欞欟欥欦欨欩欪欫欬欭欮�\".split(\"\");\nfor(j = 0; j != D[153].length; ++j) if(D[153][j].charCodeAt(0) !== 0xFFFD) { e[D[153][j]] = 39168 + j; d[39168 + j] = D[153][j];}\nD[154] = \"����������������������������������������������������������������欯欰欱欳欴欵欶欸欻欼欽欿歀歁歂歄歅歈歊歋歍歎歏歐歑歒歓歔歕歖歗歘歚歛歜歝歞歟歠歡歨歩歫歬歭歮歯歰歱歲歳歴歵歶歷歸歺歽歾歿殀殅殈�殌殎殏殐殑殔殕殗殘殙殜殝殞殟殠殢殣殤殥殦殧殨殩殫殬殭殮殯殰殱殲殶殸殹殺殻殼殽殾毀毃毄毆毇毈毉毊毌毎毐毑毘毚毜毝毞毟毠毢毣毤毥毦毧毨毩毬毭毮毰毱毲毴毶毷毸毺毻毼毾毿氀氁氂氃氄氈氉氊氋氌氎氒気氜氝氞氠氣氥氫氬氭氱氳氶氷氹氺氻氼氾氿汃汄汅汈汋汌汍汎汏汑汒汓汖汘�\".split(\"\");\nfor(j = 0; j != D[154].length; ++j) if(D[154][j].charCodeAt(0) !== 0xFFFD) { e[D[154][j]] = 39424 + j; d[39424 + j] = D[154][j];}\nD[155] = \"����������������������������������������������������������������汙汚汢汣汥汦汧汫汬汭汮汯汱汳汵汷汸決汻汼汿沀沄沇沊沋沍沎沑沒沕沖沗沘沚沜沝沞沠沢沨沬沯沰沴沵沶沷沺泀況泂泃泆泇泈泋泍泎泏泑泒泘�泙泚泜泝泟泤泦泧泩泬泭泲泴泹泿洀洂洃洅洆洈洉洊洍洏洐洑洓洔洕洖洘洜洝洟洠洡洢洣洤洦洨洩洬洭洯洰洴洶洷洸洺洿浀浂浄浉浌浐浕浖浗浘浛浝浟浡浢浤浥浧浨浫浬浭浰浱浲浳浵浶浹浺浻浽浾浿涀涁涃涄涆涇涊涋涍涏涐涒涖涗涘涙涚涜涢涥涬涭涰涱涳涴涶涷涹涺涻涼涽涾淁淂淃淈淉淊�\".split(\"\");\nfor(j = 0; j != D[155].length; ++j) if(D[155][j].charCodeAt(0) !== 0xFFFD) { e[D[155][j]] = 39680 + j; d[39680 + j] = D[155][j];}\nD[156] = \"����������������������������������������������������������������淍淎淏淐淒淓淔淕淗淚淛淜淟淢淣淥淧淨淩淪淭淯淰淲淴淵淶淸淺淽淾淿渀渁渂渃渄渆渇済渉渋渏渒渓渕渘渙減渜渞渟渢渦渧渨渪測渮渰渱渳渵�渶渷渹渻渼渽渾渿湀湁湂湅湆湇湈湉湊湋湌湏湐湑湒湕湗湙湚湜湝湞湠湡湢湣湤湥湦湧湨湩湪湬湭湯湰湱湲湳湴湵湶湷湸湹湺湻湼湽満溁溂溄溇溈溊溋溌溍溎溑溒溓溔溕準溗溙溚溛溝溞溠溡溣溤溦溨溩溫溬溭溮溰溳溵溸溹溼溾溿滀滃滄滅滆滈滉滊滌滍滎滐滒滖滘滙滛滜滝滣滧滪滫滬滭滮滯�\".split(\"\");\nfor(j = 0; j != D[156].length; ++j) if(D[156][j].charCodeAt(0) !== 0xFFFD) { e[D[156][j]] = 39936 + j; d[39936 + j] = D[156][j];}\nD[157] = \"����������������������������������������������������������������滰滱滲滳滵滶滷滸滺滻滼滽滾滿漀漁漃漄漅漇漈漊漋漌漍漎漐漑漒漖漗漘漙漚漛漜漝漞漟漡漢漣漥漦漧漨漬漮漰漲漴漵漷漸漹漺漻漼漽漿潀潁潂�潃潄潅潈潉潊潌潎潏潐潑潒潓潔潕潖潗潙潚潛潝潟潠潡潣潤潥潧潨潩潪潫潬潯潰潱潳潵潶潷潹潻潽潾潿澀澁澂澃澅澆澇澊澋澏澐澑澒澓澔澕澖澗澘澙澚澛澝澞澟澠澢澣澤澥澦澨澩澪澫澬澭澮澯澰澱澲澴澵澷澸澺澻澼澽澾澿濁濃濄濅濆濇濈濊濋濌濍濎濏濐濓濔濕濖濗濘濙濚濛濜濝濟濢濣濤濥�\".split(\"\");\nfor(j = 0; j != D[157].length; ++j) if(D[157][j].charCodeAt(0) !== 0xFFFD) { e[D[157][j]] = 40192 + j; d[40192 + j] = D[157][j];}\nD[158] = \"����������������������������������������������������������������濦濧濨濩濪濫濬濭濰濱濲濳濴濵濶濷濸濹濺濻濼濽濾濿瀀瀁瀂瀃瀄瀅瀆瀇瀈瀉瀊瀋瀌瀍瀎瀏瀐瀒瀓瀔瀕瀖瀗瀘瀙瀜瀝瀞瀟瀠瀡瀢瀤瀥瀦瀧瀨瀩瀪�瀫瀬瀭瀮瀯瀰瀱瀲瀳瀴瀶瀷瀸瀺瀻瀼瀽瀾瀿灀灁灂灃灄灅灆灇灈灉灊灋灍灎灐灑灒灓灔灕灖灗灘灙灚灛灜灝灟灠灡灢灣灤灥灦灧灨灩灪灮灱灲灳灴灷灹灺灻災炁炂炃炄炆炇炈炋炌炍炏炐炑炓炗炘炚炛炞炟炠炡炢炣炤炥炦炧炨炩炪炰炲炴炵炶為炾炿烄烅烆烇烉烋烌烍烎烏烐烑烒烓烔烕烖烗烚�\".split(\"\");\nfor(j = 0; j != D[158].length; ++j) if(D[158][j].charCodeAt(0) !== 0xFFFD) { e[D[158][j]] = 40448 + j; d[40448 + j] = D[158][j];}\nD[159] = \"����������������������������������������������������������������烜烝烞烠烡烢烣烥烪烮烰烱烲烳烴烵烶烸烺烻烼烾烿焀焁焂焃焄焅焆焇焈焋焌焍焎焏焑焒焔焗焛焜焝焞焟焠無焢焣焤焥焧焨焩焪焫焬焭焮焲焳焴�焵焷焸焹焺焻焼焽焾焿煀煁煂煃煄煆煇煈煉煋煍煏煐煑煒煓煔煕煖煗煘煙煚煛煝煟煠煡煢煣煥煩煪煫煬煭煯煰煱煴煵煶煷煹煻煼煾煿熀熁熂熃熅熆熇熈熉熋熌熍熎熐熑熒熓熕熖熗熚熛熜熝熞熡熢熣熤熥熦熧熩熪熫熭熮熯熰熱熲熴熶熷熸熺熻熼熽熾熿燀燁燂燄燅燆燇燈燉燊燋燌燍燏燐燑燒燓�\".split(\"\");\nfor(j = 0; j != D[159].length; ++j) if(D[159][j].charCodeAt(0) !== 0xFFFD) { e[D[159][j]] = 40704 + j; d[40704 + j] = D[159][j];}\nD[160] = \"����������������������������������������������������������������燖燗燘燙燚燛燜燝燞營燡燢燣燤燦燨燩燪燫燬燭燯燰燱燲燳燴燵燶燷燸燺燻燼燽燾燿爀爁爂爃爄爅爇爈爉爊爋爌爍爎爏爐爑爒爓爔爕爖爗爘爙爚�爛爜爞爟爠爡爢爣爤爥爦爧爩爫爭爮爯爲爳爴爺爼爾牀牁牂牃牄牅牆牉牊牋牎牏牐牑牓牔牕牗牘牚牜牞牠牣牤牥牨牪牫牬牭牰牱牳牴牶牷牸牻牼牽犂犃犅犆犇犈犉犌犎犐犑犓犔犕犖犗犘犙犚犛犜犝犞犠犡犢犣犤犥犦犧犨犩犪犫犮犱犲犳犵犺犻犼犽犾犿狀狅狆狇狉狊狋狌狏狑狓狔狕狖狘狚狛�\".split(\"\");\nfor(j = 0; j != D[160].length; ++j) if(D[160][j].charCodeAt(0) !== 0xFFFD) { e[D[160][j]] = 40960 + j; d[40960 + j] = D[160][j];}\nD[161] = \"�����������������������������������������������������������������　、。·ˉˇ¨〃々—～‖…‘’“”〔〕〈〉《》「」『』〖〗【】±×÷∶∧∨∑∏∪∩∈∷√⊥∥∠⌒⊙∫∮≡≌≈∽∝≠≮≯≤≥∞∵∴♂♀°′″℃＄¤￠￡‰§№☆★○●◎◇◆□■△▲※→←↑↓〓�\".split(\"\");\nfor(j = 0; j != D[161].length; ++j) if(D[161][j].charCodeAt(0) !== 0xFFFD) { e[D[161][j]] = 41216 + j; d[41216 + j] = D[161][j];}\nD[162] = \"�����������������������������������������������������������������ⅰⅱⅲⅳⅴⅵⅶⅷⅸⅹ⒈⒉⒊⒋⒌⒍⒎⒏⒐⒑⒒⒓⒔⒕⒖⒗⒘⒙⒚⒛⑴⑵⑶⑷⑸⑹⑺⑻⑼⑽⑾⑿⒀⒁⒂⒃⒄⒅⒆⒇①②③④⑤⑥⑦⑧⑨⑩㈠㈡㈢㈣㈤㈥㈦㈧㈨㈩ⅠⅡⅢⅣⅤⅥⅦⅧⅨⅩⅪⅫ�\".split(\"\");\nfor(j = 0; j != D[162].length; ++j) if(D[162][j].charCodeAt(0) !== 0xFFFD) { e[D[162][j]] = 41472 + j; d[41472 + j] = D[162][j];}\nD[163] = \"�����������������������������������������������������������������！＂＃￥％＆＇（）＊＋，－．／０１２３４５６７８９：；＜＝＞？＠ＡＢＣＤＥＦＧＨＩＪＫＬＭＮＯＰＱＲＳＴＵＶＷＸＹＺ［＼］＾＿｀ａｂｃｄｅｆｇｈｉｊｋｌｍｎｏｐｑｒｓｔｕｖｗｘｙｚ｛｜｝￣�\".split(\"\");\nfor(j = 0; j != D[163].length; ++j) if(D[163][j].charCodeAt(0) !== 0xFFFD) { e[D[163][j]] = 41728 + j; d[41728 + j] = D[163][j];}\nD[164] = \"�����������������������������������������������������������������ぁあぃいぅうぇえぉおかがきぎくぐけげこごさざしじすずせぜそぞただちぢっつづてでとどなにぬねのはばぱひびぴふぶぷへべぺほぼぽまみむめもゃやゅゆょよらりるれろゎわゐゑをん�\".split(\"\");\nfor(j = 0; j != D[164].length; ++j) if(D[164][j].charCodeAt(0) !== 0xFFFD) { e[D[164][j]] = 41984 + j; d[41984 + j] = D[164][j];}\nD[165] = \"�����������������������������������������������������������������ァアィイゥウェエォオカガキギクグケゲコゴサザシジスズセゼソゾタダチヂッツヅテデトドナニヌネノハバパヒビピフブプヘベペホボポマミムメモャヤュユョヨラリルレロヮワヰヱヲンヴヵヶ�\".split(\"\");\nfor(j = 0; j != D[165].length; ++j) if(D[165][j].charCodeAt(0) !== 0xFFFD) { e[D[165][j]] = 42240 + j; d[42240 + j] = D[165][j];}\nD[166] = \"�����������������������������������������������������������������ΑΒΓΔΕΖΗΘΙΚΛΜΝΞΟΠΡΣΤΥΦΧΨΩαβγδεζηθικλμνξοπρστυφχψω︵︶︹︺︿﹀︽︾﹁﹂﹃﹄︻︼︷︸︱︳︴�\".split(\"\");\nfor(j = 0; j != D[166].length; ++j) if(D[166][j].charCodeAt(0) !== 0xFFFD) { e[D[166][j]] = 42496 + j; d[42496 + j] = D[166][j];}\nD[167] = \"�����������������������������������������������������������������АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдеёжзийклмнопрстуфхцчшщъыьэюя�\".split(\"\");\nfor(j = 0; j != D[167].length; ++j) if(D[167][j].charCodeAt(0) !== 0xFFFD) { e[D[167][j]] = 42752 + j; d[42752 + j] = D[167][j];}\nD[168] = \"����������������������������������������������������������������ˊˋ˙–―‥‵℅℉↖↗↘↙∕∟∣≒≦≧⊿═║╒╓╔╕╖╗╘╙╚╛╜╝╞╟╠╡╢╣╤╥╦╧╨╩╪╫╬╭╮╯╰╱╲╳▁▂▃▄▅▆▇�█▉▊▋▌▍▎▏▓▔▕▼▽◢◣◤◥☉⊕〒〝〞āáǎàēéěèīíǐìōóǒòūúǔùǖǘǚǜüêɑńňɡㄅㄆㄇㄈㄉㄊㄋㄌㄍㄎㄏㄐㄑㄒㄓㄔㄕㄖㄗㄘㄙㄚㄛㄜㄝㄞㄟㄠㄡㄢㄣㄤㄥㄦㄧㄨㄩ�\".split(\"\");\nfor(j = 0; j != D[168].length; ++j) if(D[168][j].charCodeAt(0) !== 0xFFFD) { e[D[168][j]] = 43008 + j; d[43008 + j] = D[168][j];}\nD[169] = \"����������������������������������������������������������������〡〢〣〤〥〦〧〨〩㊣㎎㎏㎜㎝㎞㎡㏄㏎㏑㏒㏕︰￢￤℡㈱‐ー゛゜ヽヾ〆ゝゞ﹉﹊﹋﹌﹍﹎﹏﹐﹑﹒﹔﹕﹖﹗﹙﹚﹛﹜﹝﹞﹟﹠﹡�﹢﹣﹤﹥﹦﹨﹩﹪﹫〇─━│┃┄┅┆┇┈┉┊┋┌┍┎┏┐┑┒┓└┕┖┗┘┙┚┛├┝┞┟┠┡┢┣┤┥┦┧┨┩┪┫┬┭┮┯┰┱┲┳┴┵┶┷┸┹┺┻┼┽┾┿╀╁╂╃╄╅╆╇╈╉╊╋�\".split(\"\");\nfor(j = 0; j != D[169].length; ++j) if(D[169][j].charCodeAt(0) !== 0xFFFD) { e[D[169][j]] = 43264 + j; d[43264 + j] = D[169][j];}\nD[170] = \"����������������������������������������������������������������狜狝狟狢狣狤狥狦狧狪狫狵狶狹狽狾狿猀猂猄猅猆猇猈猉猋猌猍猏猐猑猒猔猘猙猚猟猠猣猤猦猧猨猭猯猰猲猳猵猶猺猻猼猽獀獁獂獃獄獅獆獇獈�獉獊獋獌獎獏獑獓獔獕獖獘獙獚獛獜獝獞獟獡獢獣獤獥獦獧獨獩獪獫獮獰獱�\".split(\"\");\nfor(j = 0; j != D[170].length; ++j) if(D[170][j].charCodeAt(0) !== 0xFFFD) { e[D[170][j]] = 43520 + j; d[43520 + j] = D[170][j];}\nD[171] = \"����������������������������������������������������������������獲獳獴獵獶獷獸獹獺獻獼獽獿玀玁玂玃玅玆玈玊玌玍玏玐玒玓玔玕玗玘玙玚玜玝玞玠玡玣玤玥玦玧玨玪玬玭玱玴玵玶玸玹玼玽玾玿珁珃珄珅珆珇�珋珌珎珒珓珔珕珖珗珘珚珛珜珝珟珡珢珣珤珦珨珪珫珬珮珯珰珱珳珴珵珶珷�\".split(\"\");\nfor(j = 0; j != D[171].length; ++j) if(D[171][j].charCodeAt(0) !== 0xFFFD) { e[D[171][j]] = 43776 + j; d[43776 + j] = D[171][j];}\nD[172] = \"����������������������������������������������������������������珸珹珺珻珼珽現珿琀琁琂琄琇琈琋琌琍琎琑琒琓琔琕琖琗琘琙琜琝琞琟琠琡琣琤琧琩琫琭琯琱琲琷琸琹琺琻琽琾琿瑀瑂瑃瑄瑅瑆瑇瑈瑉瑊瑋瑌瑍�瑎瑏瑐瑑瑒瑓瑔瑖瑘瑝瑠瑡瑢瑣瑤瑥瑦瑧瑨瑩瑪瑫瑬瑮瑯瑱瑲瑳瑴瑵瑸瑹瑺�\".split(\"\");\nfor(j = 0; j != D[172].length; ++j) if(D[172][j].charCodeAt(0) !== 0xFFFD) { e[D[172][j]] = 44032 + j; d[44032 + j] = D[172][j];}\nD[173] = \"����������������������������������������������������������������瑻瑼瑽瑿璂璄璅璆璈璉璊璌璍璏璑璒璓璔璕璖璗璘璙璚璛璝璟璠璡璢璣璤璥璦璪璫璬璭璮璯環璱璲璳璴璵璶璷璸璹璻璼璽璾璿瓀瓁瓂瓃瓄瓅瓆瓇�瓈瓉瓊瓋瓌瓍瓎瓏瓐瓑瓓瓔瓕瓖瓗瓘瓙瓚瓛瓝瓟瓡瓥瓧瓨瓩瓪瓫瓬瓭瓰瓱瓲�\".split(\"\");\nfor(j = 0; j != D[173].length; ++j) if(D[173][j].charCodeAt(0) !== 0xFFFD) { e[D[173][j]] = 44288 + j; d[44288 + j] = D[173][j];}\nD[174] = \"����������������������������������������������������������������瓳瓵瓸瓹瓺瓻瓼瓽瓾甀甁甂甃甅甆甇甈甉甊甋甌甎甐甒甔甕甖甗甛甝甞甠甡產産甤甦甧甪甮甴甶甹甼甽甿畁畂畃畄畆畇畉畊畍畐畑畒畓畕畖畗畘�畝畞畟畠畡畢畣畤畧畨畩畫畬畭畮畯異畱畳畵當畷畺畻畼畽畾疀疁疂疄疅疇�\".split(\"\");\nfor(j = 0; j != D[174].length; ++j) if(D[174][j].charCodeAt(0) !== 0xFFFD) { e[D[174][j]] = 44544 + j; d[44544 + j] = D[174][j];}\nD[175] = \"����������������������������������������������������������������疈疉疊疌疍疎疐疓疕疘疛疜疞疢疦疧疨疩疪疭疶疷疺疻疿痀痁痆痋痌痎痏痐痑痓痗痙痚痜痝痟痠痡痥痩痬痭痮痯痲痳痵痶痷痸痺痻痽痾瘂瘄瘆瘇�瘈瘉瘋瘍瘎瘏瘑瘒瘓瘔瘖瘚瘜瘝瘞瘡瘣瘧瘨瘬瘮瘯瘱瘲瘶瘷瘹瘺瘻瘽癁療癄�\".split(\"\");\nfor(j = 0; j != D[175].length; ++j) if(D[175][j].charCodeAt(0) !== 0xFFFD) { e[D[175][j]] = 44800 + j; d[44800 + j] = D[175][j];}\nD[176] = \"����������������������������������������������������������������癅癆癇癈癉癊癋癎癏癐癑癒癓癕癗癘癙癚癛癝癟癠癡癢癤癥癦癧癨癩癪癬癭癮癰癱癲癳癴癵癶癷癹発發癿皀皁皃皅皉皊皌皍皏皐皒皔皕皗皘皚皛�皜皝皞皟皠皡皢皣皥皦皧皨皩皪皫皬皭皯皰皳皵皶皷皸皹皺皻皼皽皾盀盁盃啊阿埃挨哎唉哀皑癌蔼矮艾碍爱隘鞍氨安俺按暗岸胺案肮昂盎凹敖熬翱袄傲奥懊澳芭捌扒叭吧笆八疤巴拔跋靶把耙坝霸罢爸白柏百摆佰败拜稗斑班搬扳般颁板版扮拌伴瓣半办绊邦帮梆榜膀绑棒磅蚌镑傍谤苞胞包褒剥�\".split(\"\");\nfor(j = 0; j != D[176].length; ++j) if(D[176][j].charCodeAt(0) !== 0xFFFD) { e[D[176][j]] = 45056 + j; d[45056 + j] = D[176][j];}\nD[177] = \"����������������������������������������������������������������盄盇盉盋盌盓盕盙盚盜盝盞盠盡盢監盤盦盧盨盩盪盫盬盭盰盳盵盶盷盺盻盽盿眀眂眃眅眆眊県眎眏眐眑眒眓眔眕眖眗眘眛眜眝眞眡眣眤眥眧眪眫�眬眮眰眱眲眳眴眹眻眽眾眿睂睄睅睆睈睉睊睋睌睍睎睏睒睓睔睕睖睗睘睙睜薄雹保堡饱宝抱报暴豹鲍爆杯碑悲卑北辈背贝钡倍狈备惫焙被奔苯本笨崩绷甭泵蹦迸逼鼻比鄙笔彼碧蓖蔽毕毙毖币庇痹闭敝弊必辟壁臂避陛鞭边编贬扁便变卞辨辩辫遍标彪膘表鳖憋别瘪彬斌濒滨宾摈兵冰柄丙秉饼炳�\".split(\"\");\nfor(j = 0; j != D[177].length; ++j) if(D[177][j].charCodeAt(0) !== 0xFFFD) { e[D[177][j]] = 45312 + j; d[45312 + j] = D[177][j];}\nD[178] = \"����������������������������������������������������������������睝睞睟睠睤睧睩睪睭睮睯睰睱睲睳睴睵睶睷睸睺睻睼瞁瞂瞃瞆瞇瞈瞉瞊瞋瞏瞐瞓瞔瞕瞖瞗瞘瞙瞚瞛瞜瞝瞞瞡瞣瞤瞦瞨瞫瞭瞮瞯瞱瞲瞴瞶瞷瞸瞹瞺�瞼瞾矀矁矂矃矄矅矆矇矈矉矊矋矌矎矏矐矑矒矓矔矕矖矘矙矚矝矞矟矠矡矤病并玻菠播拨钵波博勃搏铂箔伯帛舶脖膊渤泊驳捕卜哺补埠不布步簿部怖擦猜裁材才财睬踩采彩菜蔡餐参蚕残惭惨灿苍舱仓沧藏操糙槽曹草厕策侧册测层蹭插叉茬茶查碴搽察岔差诧拆柴豺搀掺蝉馋谗缠铲产阐颤昌猖�\".split(\"\");\nfor(j = 0; j != D[178].length; ++j) if(D[178][j].charCodeAt(0) !== 0xFFFD) { e[D[178][j]] = 45568 + j; d[45568 + j] = D[178][j];}\nD[179] = \"����������������������������������������������������������������矦矨矪矯矰矱矲矴矵矷矹矺矻矼砃砄砅砆砇砈砊砋砎砏砐砓砕砙砛砞砠砡砢砤砨砪砫砮砯砱砲砳砵砶砽砿硁硂硃硄硆硈硉硊硋硍硏硑硓硔硘硙硚�硛硜硞硟硠硡硢硣硤硥硦硧硨硩硯硰硱硲硳硴硵硶硸硹硺硻硽硾硿碀碁碂碃场尝常长偿肠厂敞畅唱倡超抄钞朝嘲潮巢吵炒车扯撤掣彻澈郴臣辰尘晨忱沉陈趁衬撑称城橙成呈乘程惩澄诚承逞骋秤吃痴持匙池迟弛驰耻齿侈尺赤翅斥炽充冲虫崇宠抽酬畴踌稠愁筹仇绸瞅丑臭初出橱厨躇锄雏滁除楚�\".split(\"\");\nfor(j = 0; j != D[179].length; ++j) if(D[179][j].charCodeAt(0) !== 0xFFFD) { e[D[179][j]] = 45824 + j; d[45824 + j] = D[179][j];}\nD[180] = \"����������������������������������������������������������������碄碅碆碈碊碋碏碐碒碔碕碖碙碝碞碠碢碤碦碨碩碪碫碬碭碮碯碵碶碷碸確碻碼碽碿磀磂磃磄磆磇磈磌磍磎磏磑磒磓磖磗磘磚磛磜磝磞磟磠磡磢磣�磤磥磦磧磩磪磫磭磮磯磰磱磳磵磶磸磹磻磼磽磾磿礀礂礃礄礆礇礈礉礊礋礌础储矗搐触处揣川穿椽传船喘串疮窗幢床闯创吹炊捶锤垂春椿醇唇淳纯蠢戳绰疵茨磁雌辞慈瓷词此刺赐次聪葱囱匆从丛凑粗醋簇促蹿篡窜摧崔催脆瘁粹淬翠村存寸磋撮搓措挫错搭达答瘩打大呆歹傣戴带殆代贷袋待逮�\".split(\"\");\nfor(j = 0; j != D[180].length; ++j) if(D[180][j].charCodeAt(0) !== 0xFFFD) { e[D[180][j]] = 46080 + j; d[46080 + j] = D[180][j];}\nD[181] = \"����������������������������������������������������������������礍礎礏礐礑礒礔礕礖礗礘礙礚礛礜礝礟礠礡礢礣礥礦礧礨礩礪礫礬礭礮礯礰礱礲礳礵礶礷礸礹礽礿祂祃祄祅祇祊祋祌祍祎祏祐祑祒祔祕祘祙祡祣�祤祦祩祪祫祬祮祰祱祲祳祴祵祶祹祻祼祽祾祿禂禃禆禇禈禉禋禌禍禎禐禑禒怠耽担丹单郸掸胆旦氮但惮淡诞弹蛋当挡党荡档刀捣蹈倒岛祷导到稻悼道盗德得的蹬灯登等瞪凳邓堤低滴迪敌笛狄涤翟嫡抵底地蒂第帝弟递缔颠掂滇碘点典靛垫电佃甸店惦奠淀殿碉叼雕凋刁掉吊钓调跌爹碟蝶迭谍叠�\".split(\"\");\nfor(j = 0; j != D[181].length; ++j) if(D[181][j].charCodeAt(0) !== 0xFFFD) { e[D[181][j]] = 46336 + j; d[46336 + j] = D[181][j];}\nD[182] = \"����������������������������������������������������������������禓禔禕禖禗禘禙禛禜禝禞禟禠禡禢禣禤禥禦禨禩禪禫禬禭禮禯禰禱禲禴禵禶禷禸禼禿秂秄秅秇秈秊秌秎秏秐秓秔秖秗秙秚秛秜秝秞秠秡秢秥秨秪�秬秮秱秲秳秴秵秶秷秹秺秼秾秿稁稄稅稇稈稉稊稌稏稐稑稒稓稕稖稘稙稛稜丁盯叮钉顶鼎锭定订丢东冬董懂动栋侗恫冻洞兜抖斗陡豆逗痘都督毒犊独读堵睹赌杜镀肚度渡妒端短锻段断缎堆兑队对墩吨蹲敦顿囤钝盾遁掇哆多夺垛躲朵跺舵剁惰堕蛾峨鹅俄额讹娥恶厄扼遏鄂饿恩而儿耳尔饵洱二�\".split(\"\");\nfor(j = 0; j != D[182].length; ++j) if(D[182][j].charCodeAt(0) !== 0xFFFD) { e[D[182][j]] = 46592 + j; d[46592 + j] = D[182][j];}\nD[183] = \"����������������������������������������������������������������稝稟稡稢稤稥稦稧稨稩稪稫稬稭種稯稰稱稲稴稵稶稸稺稾穀穁穂穃穄穅穇穈穉穊穋穌積穎穏穐穒穓穔穕穖穘穙穚穛穜穝穞穟穠穡穢穣穤穥穦穧穨�穩穪穫穬穭穮穯穱穲穳穵穻穼穽穾窂窅窇窉窊窋窌窎窏窐窓窔窙窚窛窞窡窢贰发罚筏伐乏阀法珐藩帆番翻樊矾钒繁凡烦反返范贩犯饭泛坊芳方肪房防妨仿访纺放菲非啡飞肥匪诽吠肺废沸费芬酚吩氛分纷坟焚汾粉奋份忿愤粪丰封枫蜂峰锋风疯烽逢冯缝讽奉凤佛否夫敷肤孵扶拂辐幅氟符伏俘服�\".split(\"\");\nfor(j = 0; j != D[183].length; ++j) if(D[183][j].charCodeAt(0) !== 0xFFFD) { e[D[183][j]] = 46848 + j; d[46848 + j] = D[183][j];}\nD[184] = \"����������������������������������������������������������������窣窤窧窩窪窫窮窯窰窱窲窴窵窶窷窸窹窺窻窼窽窾竀竁竂竃竄竅竆竇竈竉竊竌竍竎竏竐竑竒竓竔竕竗竘竚竛竜竝竡竢竤竧竨竩竪竫竬竮竰竱竲竳�竴竵競竷竸竻竼竾笀笁笂笅笇笉笌笍笎笐笒笓笖笗笘笚笜笝笟笡笢笣笧笩笭浮涪福袱弗甫抚辅俯釜斧脯腑府腐赴副覆赋复傅付阜父腹负富讣附妇缚咐噶嘎该改概钙盖溉干甘杆柑竿肝赶感秆敢赣冈刚钢缸肛纲岗港杠篙皋高膏羔糕搞镐稿告哥歌搁戈鸽胳疙割革葛格蛤阁隔铬个各给根跟耕更庚羹�\".split(\"\");\nfor(j = 0; j != D[184].length; ++j) if(D[184][j].charCodeAt(0) !== 0xFFFD) { e[D[184][j]] = 47104 + j; d[47104 + j] = D[184][j];}\nD[185] = \"����������������������������������������������������������������笯笰笲笴笵笶笷笹笻笽笿筀筁筂筃筄筆筈筊筍筎筓筕筗筙筜筞筟筡筣筤筥筦筧筨筩筪筫筬筭筯筰筳筴筶筸筺筼筽筿箁箂箃箄箆箇箈箉箊箋箌箎箏�箑箒箓箖箘箙箚箛箞箟箠箣箤箥箮箯箰箲箳箵箶箷箹箺箻箼箽箾箿節篂篃範埂耿梗工攻功恭龚供躬公宫弓巩汞拱贡共钩勾沟苟狗垢构购够辜菇咕箍估沽孤姑鼓古蛊骨谷股故顾固雇刮瓜剐寡挂褂乖拐怪棺关官冠观管馆罐惯灌贯光广逛瑰规圭硅归龟闺轨鬼诡癸桂柜跪贵刽辊滚棍锅郭国果裹过哈�\".split(\"\");\nfor(j = 0; j != D[185].length; ++j) if(D[185][j].charCodeAt(0) !== 0xFFFD) { e[D[185][j]] = 47360 + j; d[47360 + j] = D[185][j];}\nD[186] = \"����������������������������������������������������������������篅篈築篊篋篍篎篏篐篒篔篕篖篗篘篛篜篞篟篠篢篣篤篧篨篩篫篬篭篯篰篲篳篴篵篶篸篹篺篻篽篿簀簁簂簃簄簅簆簈簉簊簍簎簐簑簒簓簔簕簗簘簙�簚簛簜簝簞簠簡簢簣簤簥簨簩簫簬簭簮簯簰簱簲簳簴簵簶簷簹簺簻簼簽簾籂骸孩海氦亥害骇酣憨邯韩含涵寒函喊罕翰撼捍旱憾悍焊汗汉夯杭航壕嚎豪毫郝好耗号浩呵喝荷菏核禾和何合盒貉阂河涸赫褐鹤贺嘿黑痕很狠恨哼亨横衡恒轰哄烘虹鸿洪宏弘红喉侯猴吼厚候后呼乎忽瑚壶葫胡蝴狐糊湖�\".split(\"\");\nfor(j = 0; j != D[186].length; ++j) if(D[186][j].charCodeAt(0) !== 0xFFFD) { e[D[186][j]] = 47616 + j; d[47616 + j] = D[186][j];}\nD[187] = \"����������������������������������������������������������������籃籄籅籆籇籈籉籊籋籌籎籏籐籑籒籓籔籕籖籗籘籙籚籛籜籝籞籟籠籡籢籣籤籥籦籧籨籩籪籫籬籭籮籯籰籱籲籵籶籷籸籹籺籾籿粀粁粂粃粄粅粆粇�粈粊粋粌粍粎粏粐粓粔粖粙粚粛粠粡粣粦粧粨粩粫粬粭粯粰粴粵粶粷粸粺粻弧虎唬护互沪户花哗华猾滑画划化话槐徊怀淮坏欢环桓还缓换患唤痪豢焕涣宦幻荒慌黄磺蝗簧皇凰惶煌晃幌恍谎灰挥辉徽恢蛔回毁悔慧卉惠晦贿秽会烩汇讳诲绘荤昏婚魂浑混豁活伙火获或惑霍货祸击圾基机畸稽积箕�\".split(\"\");\nfor(j = 0; j != D[187].length; ++j) if(D[187][j].charCodeAt(0) !== 0xFFFD) { e[D[187][j]] = 47872 + j; d[47872 + j] = D[187][j];}\nD[188] = \"����������������������������������������������������������������粿糀糂糃糄糆糉糋糎糏糐糑糒糓糔糘糚糛糝糞糡糢糣糤糥糦糧糩糪糫糬糭糮糰糱糲糳糴糵糶糷糹糺糼糽糾糿紀紁紂紃約紅紆紇紈紉紋紌納紎紏紐�紑紒紓純紕紖紗紘紙級紛紜紝紞紟紡紣紤紥紦紨紩紪紬紭紮細紱紲紳紴紵紶肌饥迹激讥鸡姬绩缉吉极棘辑籍集及急疾汲即嫉级挤几脊己蓟技冀季伎祭剂悸济寄寂计记既忌际妓继纪嘉枷夹佳家加荚颊贾甲钾假稼价架驾嫁歼监坚尖笺间煎兼肩艰奸缄茧检柬碱硷拣捡简俭剪减荐槛鉴践贱见键箭件�\".split(\"\");\nfor(j = 0; j != D[188].length; ++j) if(D[188][j].charCodeAt(0) !== 0xFFFD) { e[D[188][j]] = 48128 + j; d[48128 + j] = D[188][j];}\nD[189] = \"����������������������������������������������������������������紷紸紹紺紻紼紽紾紿絀絁終絃組絅絆絇絈絉絊絋経絍絎絏結絑絒絓絔絕絖絗絘絙絚絛絜絝絞絟絠絡絢絣絤絥給絧絨絩絪絫絬絭絯絰統絲絳絴絵絶�絸絹絺絻絼絽絾絿綀綁綂綃綄綅綆綇綈綉綊綋綌綍綎綏綐綑綒經綔綕綖綗綘健舰剑饯渐溅涧建僵姜将浆江疆蒋桨奖讲匠酱降蕉椒礁焦胶交郊浇骄娇嚼搅铰矫侥脚狡角饺缴绞剿教酵轿较叫窖揭接皆秸街阶截劫节桔杰捷睫竭洁结解姐戒藉芥界借介疥诫届巾筋斤金今津襟紧锦仅谨进靳晋禁近烬浸�\".split(\"\");\nfor(j = 0; j != D[189].length; ++j) if(D[189][j].charCodeAt(0) !== 0xFFFD) { e[D[189][j]] = 48384 + j; d[48384 + j] = D[189][j];}\nD[190] = \"����������������������������������������������������������������継続綛綜綝綞綟綠綡綢綣綤綥綧綨綩綪綫綬維綯綰綱網綳綴綵綶綷綸綹綺綻綼綽綾綿緀緁緂緃緄緅緆緇緈緉緊緋緌緍緎総緐緑緒緓緔緕緖緗緘緙�線緛緜緝緞緟締緡緢緣緤緥緦緧編緩緪緫緬緭緮緯緰緱緲緳練緵緶緷緸緹緺尽劲荆兢茎睛晶鲸京惊精粳经井警景颈静境敬镜径痉靖竟竞净炯窘揪究纠玖韭久灸九酒厩救旧臼舅咎就疚鞠拘狙疽居驹菊局咀矩举沮聚拒据巨具距踞锯俱句惧炬剧捐鹃娟倦眷卷绢撅攫抉掘倔爵觉决诀绝均菌钧军君峻�\".split(\"\");\nfor(j = 0; j != D[190].length; ++j) if(D[190][j].charCodeAt(0) !== 0xFFFD) { e[D[190][j]] = 48640 + j; d[48640 + j] = D[190][j];}\nD[191] = \"����������������������������������������������������������������緻緼緽緾緿縀縁縂縃縄縅縆縇縈縉縊縋縌縍縎縏縐縑縒縓縔縕縖縗縘縙縚縛縜縝縞縟縠縡縢縣縤縥縦縧縨縩縪縫縬縭縮縯縰縱縲縳縴縵縶縷縸縹�縺縼總績縿繀繂繃繄繅繆繈繉繊繋繌繍繎繏繐繑繒繓織繕繖繗繘繙繚繛繜繝俊竣浚郡骏喀咖卡咯开揩楷凯慨刊堪勘坎砍看康慷糠扛抗亢炕考拷烤靠坷苛柯棵磕颗科壳咳可渴克刻客课肯啃垦恳坑吭空恐孔控抠口扣寇枯哭窟苦酷库裤夸垮挎跨胯块筷侩快宽款匡筐狂框矿眶旷况亏盔岿窥葵奎魁傀�\".split(\"\");\nfor(j = 0; j != D[191].length; ++j) if(D[191][j].charCodeAt(0) !== 0xFFFD) { e[D[191][j]] = 48896 + j; d[48896 + j] = D[191][j];}\nD[192] = \"����������������������������������������������������������������繞繟繠繡繢繣繤繥繦繧繨繩繪繫繬繭繮繯繰繱繲繳繴繵繶繷繸繹繺繻繼繽繾繿纀纁纃纄纅纆纇纈纉纊纋續纍纎纏纐纑纒纓纔纕纖纗纘纙纚纜纝纞�纮纴纻纼绖绤绬绹缊缐缞缷缹缻缼缽缾缿罀罁罃罆罇罈罉罊罋罌罍罎罏罒罓馈愧溃坤昆捆困括扩廓阔垃拉喇蜡腊辣啦莱来赖蓝婪栏拦篮阑兰澜谰揽览懒缆烂滥琅榔狼廊郎朗浪捞劳牢老佬姥酪烙涝勒乐雷镭蕾磊累儡垒擂肋类泪棱楞冷厘梨犁黎篱狸离漓理李里鲤礼莉荔吏栗丽厉励砾历利傈例俐�\".split(\"\");\nfor(j = 0; j != D[192].length; ++j) if(D[192][j].charCodeAt(0) !== 0xFFFD) { e[D[192][j]] = 49152 + j; d[49152 + j] = D[192][j];}\nD[193] = \"����������������������������������������������������������������罖罙罛罜罝罞罠罣罤罥罦罧罫罬罭罯罰罳罵罶罷罸罺罻罼罽罿羀羂羃羄羅羆羇羈羉羋羍羏羐羑羒羓羕羖羗羘羙羛羜羠羢羣羥羦羨義羪羫羬羭羮羱�羳羴羵羶羷羺羻羾翀翂翃翄翆翇翈翉翋翍翏翐翑習翓翖翗翙翚翛翜翝翞翢翣痢立粒沥隶力璃哩俩联莲连镰廉怜涟帘敛脸链恋炼练粮凉梁粱良两辆量晾亮谅撩聊僚疗燎寥辽潦了撂镣廖料列裂烈劣猎琳林磷霖临邻鳞淋凛赁吝拎玲菱零龄铃伶羚凌灵陵岭领另令溜琉榴硫馏留刘瘤流柳六龙聋咙笼窿�\".split(\"\");\nfor(j = 0; j != D[193].length; ++j) if(D[193][j].charCodeAt(0) !== 0xFFFD) { e[D[193][j]] = 49408 + j; d[49408 + j] = D[193][j];}\nD[194] = \"����������������������������������������������������������������翤翧翨翪翫翬翭翯翲翴翵翶翷翸翹翺翽翾翿耂耇耈耉耊耎耏耑耓耚耛耝耞耟耡耣耤耫耬耭耮耯耰耲耴耹耺耼耾聀聁聄聅聇聈聉聎聏聐聑聓聕聖聗�聙聛聜聝聞聟聠聡聢聣聤聥聦聧聨聫聬聭聮聯聰聲聳聴聵聶職聸聹聺聻聼聽隆垄拢陇楼娄搂篓漏陋芦卢颅庐炉掳卤虏鲁麓碌露路赂鹿潞禄录陆戮驴吕铝侣旅履屡缕虑氯律率滤绿峦挛孪滦卵乱掠略抡轮伦仑沦纶论萝螺罗逻锣箩骡裸落洛骆络妈麻玛码蚂马骂嘛吗埋买麦卖迈脉瞒馒蛮满蔓曼慢漫�\".split(\"\");\nfor(j = 0; j != D[194].length; ++j) if(D[194][j].charCodeAt(0) !== 0xFFFD) { e[D[194][j]] = 49664 + j; d[49664 + j] = D[194][j];}\nD[195] = \"����������������������������������������������������������������聾肁肂肅肈肊肍肎肏肐肑肒肔肕肗肙肞肣肦肧肨肬肰肳肵肶肸肹肻胅胇胈胉胊胋胏胐胑胒胓胔胕胘胟胠胢胣胦胮胵胷胹胻胾胿脀脁脃脄脅脇脈脋�脌脕脗脙脛脜脝脟脠脡脢脣脤脥脦脧脨脩脪脫脭脮脰脳脴脵脷脹脺脻脼脽脿谩芒茫盲氓忙莽猫茅锚毛矛铆卯茂冒帽貌贸么玫枚梅酶霉煤没眉媒镁每美昧寐妹媚门闷们萌蒙檬盟锰猛梦孟眯醚靡糜迷谜弥米秘觅泌蜜密幂棉眠绵冕免勉娩缅面苗描瞄藐秒渺庙妙蔑灭民抿皿敏悯闽明螟鸣铭名命谬摸�\".split(\"\");\nfor(j = 0; j != D[195].length; ++j) if(D[195][j].charCodeAt(0) !== 0xFFFD) { e[D[195][j]] = 49920 + j; d[49920 + j] = D[195][j];}\nD[196] = \"����������������������������������������������������������������腀腁腂腃腄腅腇腉腍腎腏腒腖腗腘腛腜腝腞腟腡腢腣腤腦腨腪腫腬腯腲腳腵腶腷腸膁膃膄膅膆膇膉膋膌膍膎膐膒膓膔膕膖膗膙膚膞膟膠膡膢膤膥�膧膩膫膬膭膮膯膰膱膲膴膵膶膷膸膹膼膽膾膿臄臅臇臈臉臋臍臎臏臐臑臒臓摹蘑模膜磨摩魔抹末莫墨默沫漠寞陌谋牟某拇牡亩姆母墓暮幕募慕木目睦牧穆拿哪呐钠那娜纳氖乃奶耐奈南男难囊挠脑恼闹淖呢馁内嫩能妮霓倪泥尼拟你匿腻逆溺蔫拈年碾撵捻念娘酿鸟尿捏聂孽啮镊镍涅您柠狞凝宁�\".split(\"\");\nfor(j = 0; j != D[196].length; ++j) if(D[196][j].charCodeAt(0) !== 0xFFFD) { e[D[196][j]] = 50176 + j; d[50176 + j] = D[196][j];}\nD[197] = \"����������������������������������������������������������������臔臕臖臗臘臙臚臛臜臝臞臟臠臡臢臤臥臦臨臩臫臮臯臰臱臲臵臶臷臸臹臺臽臿舃與興舉舊舋舎舏舑舓舕舖舗舘舙舚舝舠舤舥舦舧舩舮舲舺舼舽舿�艀艁艂艃艅艆艈艊艌艍艎艐艑艒艓艔艕艖艗艙艛艜艝艞艠艡艢艣艤艥艦艧艩拧泞牛扭钮纽脓浓农弄奴努怒女暖虐疟挪懦糯诺哦欧鸥殴藕呕偶沤啪趴爬帕怕琶拍排牌徘湃派攀潘盘磐盼畔判叛乓庞旁耪胖抛咆刨炮袍跑泡呸胚培裴赔陪配佩沛喷盆砰抨烹澎彭蓬棚硼篷膨朋鹏捧碰坯砒霹批披劈琵毗�\".split(\"\");\nfor(j = 0; j != D[197].length; ++j) if(D[197][j].charCodeAt(0) !== 0xFFFD) { e[D[197][j]] = 50432 + j; d[50432 + j] = D[197][j];}\nD[198] = \"����������������������������������������������������������������艪艫艬艭艱艵艶艷艸艻艼芀芁芃芅芆芇芉芌芐芓芔芕芖芚芛芞芠芢芣芧芲芵芶芺芻芼芿苀苂苃苅苆苉苐苖苙苚苝苢苧苨苩苪苬苭苮苰苲苳苵苶苸�苺苼苽苾苿茀茊茋茍茐茒茓茖茘茙茝茞茟茠茡茢茣茤茥茦茩茪茮茰茲茷茻茽啤脾疲皮匹痞僻屁譬篇偏片骗飘漂瓢票撇瞥拼频贫品聘乒坪苹萍平凭瓶评屏坡泼颇婆破魄迫粕剖扑铺仆莆葡菩蒲埔朴圃普浦谱曝瀑期欺栖戚妻七凄漆柒沏其棋奇歧畦崎脐齐旗祈祁骑起岂乞企启契砌器气迄弃汽泣讫掐�\".split(\"\");\nfor(j = 0; j != D[198].length; ++j) if(D[198][j].charCodeAt(0) !== 0xFFFD) { e[D[198][j]] = 50688 + j; d[50688 + j] = D[198][j];}\nD[199] = \"����������������������������������������������������������������茾茿荁荂荄荅荈荊荋荌荍荎荓荕荖荗荘荙荝荢荰荱荲荳荴荵荶荹荺荾荿莀莁莂莃莄莇莈莊莋莌莍莏莐莑莔莕莖莗莙莚莝莟莡莢莣莤莥莦莧莬莭莮�莯莵莻莾莿菂菃菄菆菈菉菋菍菎菐菑菒菓菕菗菙菚菛菞菢菣菤菦菧菨菫菬菭恰洽牵扦钎铅千迁签仟谦乾黔钱钳前潜遣浅谴堑嵌欠歉枪呛腔羌墙蔷强抢橇锹敲悄桥瞧乔侨巧鞘撬翘峭俏窍切茄且怯窃钦侵亲秦琴勤芹擒禽寝沁青轻氢倾卿清擎晴氰情顷请庆琼穷秋丘邱球求囚酋泅趋区蛆曲躯屈驱渠�\".split(\"\");\nfor(j = 0; j != D[199].length; ++j) if(D[199][j].charCodeAt(0) !== 0xFFFD) { e[D[199][j]] = 50944 + j; d[50944 + j] = D[199][j];}\nD[200] = \"����������������������������������������������������������������菮華菳菴菵菶菷菺菻菼菾菿萀萂萅萇萈萉萊萐萒萓萔萕萖萗萙萚萛萞萟萠萡萢萣萩萪萫萬萭萮萯萰萲萳萴萵萶萷萹萺萻萾萿葀葁葂葃葄葅葇葈葉�葊葋葌葍葎葏葐葒葓葔葕葖葘葝葞葟葠葢葤葥葦葧葨葪葮葯葰葲葴葷葹葻葼取娶龋趣去圈颧权醛泉全痊拳犬券劝缺炔瘸却鹊榷确雀裙群然燃冉染瓤壤攘嚷让饶扰绕惹热壬仁人忍韧任认刃妊纫扔仍日戎茸蓉荣融熔溶容绒冗揉柔肉茹蠕儒孺如辱乳汝入褥软阮蕊瑞锐闰润若弱撒洒萨腮鳃塞赛三叁�\".split(\"\");\nfor(j = 0; j != D[200].length; ++j) if(D[200][j].charCodeAt(0) !== 0xFFFD) { e[D[200][j]] = 51200 + j; d[51200 + j] = D[200][j];}\nD[201] = \"����������������������������������������������������������������葽葾葿蒀蒁蒃蒄蒅蒆蒊蒍蒏蒐蒑蒒蒓蒔蒕蒖蒘蒚蒛蒝蒞蒟蒠蒢蒣蒤蒥蒦蒧蒨蒩蒪蒫蒬蒭蒮蒰蒱蒳蒵蒶蒷蒻蒼蒾蓀蓂蓃蓅蓆蓇蓈蓋蓌蓎蓏蓒蓔蓕蓗�蓘蓙蓚蓛蓜蓞蓡蓢蓤蓧蓨蓩蓪蓫蓭蓮蓯蓱蓲蓳蓴蓵蓶蓷蓸蓹蓺蓻蓽蓾蔀蔁蔂伞散桑嗓丧搔骚扫嫂瑟色涩森僧莎砂杀刹沙纱傻啥煞筛晒珊苫杉山删煽衫闪陕擅赡膳善汕扇缮墒伤商赏晌上尚裳梢捎稍烧芍勺韶少哨邵绍奢赊蛇舌舍赦摄射慑涉社设砷申呻伸身深娠绅神沈审婶甚肾慎渗声生甥牲升绳�\".split(\"\");\nfor(j = 0; j != D[201].length; ++j) if(D[201][j].charCodeAt(0) !== 0xFFFD) { e[D[201][j]] = 51456 + j; d[51456 + j] = D[201][j];}\nD[202] = \"����������������������������������������������������������������蔃蔄蔅蔆蔇蔈蔉蔊蔋蔍蔎蔏蔐蔒蔔蔕蔖蔘蔙蔛蔜蔝蔞蔠蔢蔣蔤蔥蔦蔧蔨蔩蔪蔭蔮蔯蔰蔱蔲蔳蔴蔵蔶蔾蔿蕀蕁蕂蕄蕅蕆蕇蕋蕌蕍蕎蕏蕐蕑蕒蕓蕔蕕�蕗蕘蕚蕛蕜蕝蕟蕠蕡蕢蕣蕥蕦蕧蕩蕪蕫蕬蕭蕮蕯蕰蕱蕳蕵蕶蕷蕸蕼蕽蕿薀薁省盛剩胜圣师失狮施湿诗尸虱十石拾时什食蚀实识史矢使屎驶始式示士世柿事拭誓逝势是嗜噬适仕侍释饰氏市恃室视试收手首守寿授售受瘦兽蔬枢梳殊抒输叔舒淑疏书赎孰熟薯暑曙署蜀黍鼠属术述树束戍竖墅庶数漱�\".split(\"\");\nfor(j = 0; j != D[202].length; ++j) if(D[202][j].charCodeAt(0) !== 0xFFFD) { e[D[202][j]] = 51712 + j; d[51712 + j] = D[202][j];}\nD[203] = \"����������������������������������������������������������������薂薃薆薈薉薊薋薌薍薎薐薑薒薓薔薕薖薗薘薙薚薝薞薟薠薡薢薣薥薦薧薩薫薬薭薱薲薳薴薵薶薸薺薻薼薽薾薿藀藂藃藄藅藆藇藈藊藋藌藍藎藑藒�藔藖藗藘藙藚藛藝藞藟藠藡藢藣藥藦藧藨藪藫藬藭藮藯藰藱藲藳藴藵藶藷藸恕刷耍摔衰甩帅栓拴霜双爽谁水睡税吮瞬顺舜说硕朔烁斯撕嘶思私司丝死肆寺嗣四伺似饲巳松耸怂颂送宋讼诵搜艘擞嗽苏酥俗素速粟僳塑溯宿诉肃酸蒜算虽隋随绥髓碎岁穗遂隧祟孙损笋蓑梭唆缩琐索锁所塌他它她塔�\".split(\"\");\nfor(j = 0; j != D[203].length; ++j) if(D[203][j].charCodeAt(0) !== 0xFFFD) { e[D[203][j]] = 51968 + j; d[51968 + j] = D[203][j];}\nD[204] = \"����������������������������������������������������������������藹藺藼藽藾蘀蘁蘂蘃蘄蘆蘇蘈蘉蘊蘋蘌蘍蘎蘏蘐蘒蘓蘔蘕蘗蘘蘙蘚蘛蘜蘝蘞蘟蘠蘡蘢蘣蘤蘥蘦蘨蘪蘫蘬蘭蘮蘯蘰蘱蘲蘳蘴蘵蘶蘷蘹蘺蘻蘽蘾蘿虀�虁虂虃虄虅虆虇虈虉虊虋虌虒虓處虖虗虘虙虛虜虝號虠虡虣虤虥虦虧虨虩虪獭挞蹋踏胎苔抬台泰酞太态汰坍摊贪瘫滩坛檀痰潭谭谈坦毯袒碳探叹炭汤塘搪堂棠膛唐糖倘躺淌趟烫掏涛滔绦萄桃逃淘陶讨套特藤腾疼誊梯剔踢锑提题蹄啼体替嚏惕涕剃屉天添填田甜恬舔腆挑条迢眺跳贴铁帖厅听烃�\".split(\"\");\nfor(j = 0; j != D[204].length; ++j) if(D[204][j].charCodeAt(0) !== 0xFFFD) { e[D[204][j]] = 52224 + j; d[52224 + j] = D[204][j];}\nD[205] = \"����������������������������������������������������������������虭虯虰虲虳虴虵虶虷虸蚃蚄蚅蚆蚇蚈蚉蚎蚏蚐蚑蚒蚔蚖蚗蚘蚙蚚蚛蚞蚟蚠蚡蚢蚥蚦蚫蚭蚮蚲蚳蚷蚸蚹蚻蚼蚽蚾蚿蛁蛂蛃蛅蛈蛌蛍蛒蛓蛕蛖蛗蛚蛜�蛝蛠蛡蛢蛣蛥蛦蛧蛨蛪蛫蛬蛯蛵蛶蛷蛺蛻蛼蛽蛿蜁蜄蜅蜆蜋蜌蜎蜏蜐蜑蜔蜖汀廷停亭庭挺艇通桐酮瞳同铜彤童桶捅筒统痛偷投头透凸秃突图徒途涂屠土吐兔湍团推颓腿蜕褪退吞屯臀拖托脱鸵陀驮驼椭妥拓唾挖哇蛙洼娃瓦袜歪外豌弯湾玩顽丸烷完碗挽晚皖惋宛婉万腕汪王亡枉网往旺望忘妄威�\".split(\"\");\nfor(j = 0; j != D[205].length; ++j) if(D[205][j].charCodeAt(0) !== 0xFFFD) { e[D[205][j]] = 52480 + j; d[52480 + j] = D[205][j];}\nD[206] = \"����������������������������������������������������������������蜙蜛蜝蜟蜠蜤蜦蜧蜨蜪蜫蜬蜭蜯蜰蜲蜳蜵蜶蜸蜹蜺蜼蜽蝀蝁蝂蝃蝄蝅蝆蝊蝋蝍蝏蝐蝑蝒蝔蝕蝖蝘蝚蝛蝜蝝蝞蝟蝡蝢蝦蝧蝨蝩蝪蝫蝬蝭蝯蝱蝲蝳蝵�蝷蝸蝹蝺蝿螀螁螄螆螇螉螊螌螎螏螐螑螒螔螕螖螘螙螚螛螜螝螞螠螡螢螣螤巍微危韦违桅围唯惟为潍维苇萎委伟伪尾纬未蔚味畏胃喂魏位渭谓尉慰卫瘟温蚊文闻纹吻稳紊问嗡翁瓮挝蜗涡窝我斡卧握沃巫呜钨乌污诬屋无芜梧吾吴毋武五捂午舞伍侮坞戊雾晤物勿务悟误昔熙析西硒矽晰嘻吸锡牺�\".split(\"\");\nfor(j = 0; j != D[206].length; ++j) if(D[206][j].charCodeAt(0) !== 0xFFFD) { e[D[206][j]] = 52736 + j; d[52736 + j] = D[206][j];}\nD[207] = \"����������������������������������������������������������������螥螦螧螩螪螮螰螱螲螴螶螷螸螹螻螼螾螿蟁蟂蟃蟄蟅蟇蟈蟉蟌蟍蟎蟏蟐蟔蟕蟖蟗蟘蟙蟚蟜蟝蟞蟟蟡蟢蟣蟤蟦蟧蟨蟩蟫蟬蟭蟯蟰蟱蟲蟳蟴蟵蟶蟷蟸�蟺蟻蟼蟽蟿蠀蠁蠂蠄蠅蠆蠇蠈蠉蠋蠌蠍蠎蠏蠐蠑蠒蠔蠗蠘蠙蠚蠜蠝蠞蠟蠠蠣稀息希悉膝夕惜熄烯溪汐犀檄袭席习媳喜铣洗系隙戏细瞎虾匣霞辖暇峡侠狭下厦夏吓掀锨先仙鲜纤咸贤衔舷闲涎弦嫌显险现献县腺馅羡宪陷限线相厢镶香箱襄湘乡翔祥详想响享项巷橡像向象萧硝霄削哮嚣销消宵淆晓�\".split(\"\");\nfor(j = 0; j != D[207].length; ++j) if(D[207][j].charCodeAt(0) !== 0xFFFD) { e[D[207][j]] = 52992 + j; d[52992 + j] = D[207][j];}\nD[208] = \"����������������������������������������������������������������蠤蠥蠦蠧蠨蠩蠪蠫蠬蠭蠮蠯蠰蠱蠳蠴蠵蠶蠷蠸蠺蠻蠽蠾蠿衁衂衃衆衇衈衉衊衋衎衏衐衑衒術衕衖衘衚衛衜衝衞衟衠衦衧衪衭衯衱衳衴衵衶衸衹衺�衻衼袀袃袆袇袉袊袌袎袏袐袑袓袔袕袗袘袙袚袛袝袞袟袠袡袣袥袦袧袨袩袪小孝校肖啸笑效楔些歇蝎鞋协挟携邪斜胁谐写械卸蟹懈泄泻谢屑薪芯锌欣辛新忻心信衅星腥猩惺兴刑型形邢行醒幸杏性姓兄凶胸匈汹雄熊休修羞朽嗅锈秀袖绣墟戌需虚嘘须徐许蓄酗叙旭序畜恤絮婿绪续轩喧宣悬旋玄�\".split(\"\");\nfor(j = 0; j != D[208].length; ++j) if(D[208][j].charCodeAt(0) !== 0xFFFD) { e[D[208][j]] = 53248 + j; d[53248 + j] = D[208][j];}\nD[209] = \"����������������������������������������������������������������袬袮袯袰袲袳袴袵袶袸袹袺袻袽袾袿裀裃裄裇裈裊裋裌裍裏裐裑裓裖裗裚裛補裝裞裠裡裦裧裩裪裫裬裭裮裯裲裵裶裷裺裻製裿褀褁褃褄褅褆複褈�褉褋褌褍褎褏褑褔褕褖褗褘褜褝褞褟褠褢褣褤褦褧褨褩褬褭褮褯褱褲褳褵褷选癣眩绚靴薛学穴雪血勋熏循旬询寻驯巡殉汛训讯逊迅压押鸦鸭呀丫芽牙蚜崖衙涯雅哑亚讶焉咽阉烟淹盐严研蜒岩延言颜阎炎沿奄掩眼衍演艳堰燕厌砚雁唁彦焰宴谚验殃央鸯秧杨扬佯疡羊洋阳氧仰痒养样漾邀腰妖瑶�\".split(\"\");\nfor(j = 0; j != D[209].length; ++j) if(D[209][j].charCodeAt(0) !== 0xFFFD) { e[D[209][j]] = 53504 + j; d[53504 + j] = D[209][j];}\nD[210] = \"����������������������������������������������������������������褸褹褺褻褼褽褾褿襀襂襃襅襆襇襈襉襊襋襌襍襎襏襐襑襒襓襔襕襖襗襘襙襚襛襜襝襠襡襢襣襤襥襧襨襩襪襫襬襭襮襯襰襱襲襳襴襵襶襷襸襹襺襼�襽襾覀覂覄覅覇覈覉覊見覌覍覎規覐覑覒覓覔覕視覗覘覙覚覛覜覝覞覟覠覡摇尧遥窑谣姚咬舀药要耀椰噎耶爷野冶也页掖业叶曳腋夜液一壹医揖铱依伊衣颐夷遗移仪胰疑沂宜姨彝椅蚁倚已乙矣以艺抑易邑屹亿役臆逸肄疫亦裔意毅忆义益溢诣议谊译异翼翌绎茵荫因殷音阴姻吟银淫寅饮尹引隐�\".split(\"\");\nfor(j = 0; j != D[210].length; ++j) if(D[210][j].charCodeAt(0) !== 0xFFFD) { e[D[210][j]] = 53760 + j; d[53760 + j] = D[210][j];}\nD[211] = \"����������������������������������������������������������������覢覣覤覥覦覧覨覩親覫覬覭覮覯覰覱覲観覴覵覶覷覸覹覺覻覼覽覾覿觀觃觍觓觔觕觗觘觙觛觝觟觠觡觢觤觧觨觩觪觬觭觮觰觱觲觴觵觶觷觸觹觺�觻觼觽觾觿訁訂訃訄訅訆計訉訊訋訌訍討訏訐訑訒訓訔訕訖託記訙訚訛訜訝印英樱婴鹰应缨莹萤营荧蝇迎赢盈影颖硬映哟拥佣臃痈庸雍踊蛹咏泳涌永恿勇用幽优悠忧尤由邮铀犹油游酉有友右佑釉诱又幼迂淤于盂榆虞愚舆余俞逾鱼愉渝渔隅予娱雨与屿禹宇语羽玉域芋郁吁遇喻峪御愈欲狱育誉�\".split(\"\");\nfor(j = 0; j != D[211].length; ++j) if(D[211][j].charCodeAt(0) !== 0xFFFD) { e[D[211][j]] = 54016 + j; d[54016 + j] = D[211][j];}\nD[212] = \"����������������������������������������������������������������訞訟訠訡訢訣訤訥訦訧訨訩訪訫訬設訮訯訰許訲訳訴訵訶訷訸訹診註証訽訿詀詁詂詃詄詅詆詇詉詊詋詌詍詎詏詐詑詒詓詔評詖詗詘詙詚詛詜詝詞�詟詠詡詢詣詤詥試詧詨詩詪詫詬詭詮詯詰話該詳詴詵詶詷詸詺詻詼詽詾詿誀浴寓裕预豫驭鸳渊冤元垣袁原援辕园员圆猿源缘远苑愿怨院曰约越跃钥岳粤月悦阅耘云郧匀陨允运蕴酝晕韵孕匝砸杂栽哉灾宰载再在咱攒暂赞赃脏葬遭糟凿藻枣早澡蚤躁噪造皂灶燥责择则泽贼怎增憎曾赠扎喳渣札轧�\".split(\"\");\nfor(j = 0; j != D[212].length; ++j) if(D[212][j].charCodeAt(0) !== 0xFFFD) { e[D[212][j]] = 54272 + j; d[54272 + j] = D[212][j];}\nD[213] = \"����������������������������������������������������������������誁誂誃誄誅誆誇誈誋誌認誎誏誐誑誒誔誕誖誗誘誙誚誛誜誝語誟誠誡誢誣誤誥誦誧誨誩說誫説読誮誯誰誱課誳誴誵誶誷誸誹誺誻誼誽誾調諀諁諂�諃諄諅諆談諈諉諊請諌諍諎諏諐諑諒諓諔諕論諗諘諙諚諛諜諝諞諟諠諡諢諣铡闸眨栅榨咋乍炸诈摘斋宅窄债寨瞻毡詹粘沾盏斩辗崭展蘸栈占战站湛绽樟章彰漳张掌涨杖丈帐账仗胀瘴障招昭找沼赵照罩兆肇召遮折哲蛰辙者锗蔗这浙珍斟真甄砧臻贞针侦枕疹诊震振镇阵蒸挣睁征狰争怔整拯正政�\".split(\"\");\nfor(j = 0; j != D[213].length; ++j) if(D[213][j].charCodeAt(0) !== 0xFFFD) { e[D[213][j]] = 54528 + j; d[54528 + j] = D[213][j];}\nD[214] = \"����������������������������������������������������������������諤諥諦諧諨諩諪諫諬諭諮諯諰諱諲諳諴諵諶諷諸諹諺諻諼諽諾諿謀謁謂謃謄謅謆謈謉謊謋謌謍謎謏謐謑謒謓謔謕謖謗謘謙謚講謜謝謞謟謠謡謢謣�謤謥謧謨謩謪謫謬謭謮謯謰謱謲謳謴謵謶謷謸謹謺謻謼謽謾謿譀譁譂譃譄譅帧症郑证芝枝支吱蜘知肢脂汁之织职直植殖执值侄址指止趾只旨纸志挚掷至致置帜峙制智秩稚质炙痔滞治窒中盅忠钟衷终种肿重仲众舟周州洲诌粥轴肘帚咒皱宙昼骤珠株蛛朱猪诸诛逐竹烛煮拄瞩嘱主著柱助蛀贮铸筑�\".split(\"\");\nfor(j = 0; j != D[214].length; ++j) if(D[214][j].charCodeAt(0) !== 0xFFFD) { e[D[214][j]] = 54784 + j; d[54784 + j] = D[214][j];}\nD[215] = \"����������������������������������������������������������������譆譇譈證譊譋譌譍譎譏譐譑譒譓譔譕譖譗識譙譚譛譜譝譞譟譠譡譢譣譤譥譧譨譩譪譫譭譮譯議譱譲譳譴譵譶護譸譹譺譻譼譽譾譿讀讁讂讃讄讅讆�讇讈讉變讋讌讍讎讏讐讑讒讓讔讕讖讗讘讙讚讛讜讝讞讟讬讱讻诇诐诪谉谞住注祝驻抓爪拽专砖转撰赚篆桩庄装妆撞壮状椎锥追赘坠缀谆准捉拙卓桌琢茁酌啄着灼浊兹咨资姿滋淄孜紫仔籽滓子自渍字鬃棕踪宗综总纵邹走奏揍租足卒族祖诅阻组钻纂嘴醉最罪尊遵昨左佐柞做作坐座�\".split(\"\");\nfor(j = 0; j != D[215].length; ++j) if(D[215][j].charCodeAt(0) !== 0xFFFD) { e[D[215][j]] = 55040 + j; d[55040 + j] = D[215][j];}\nD[216] = \"����������������������������������������������������������������谸谹谺谻谼谽谾谿豀豂豃豄豅豈豊豋豍豎豏豐豑豒豓豔豖豗豘豙豛豜豝豞豟豠豣豤豥豦豧豨豩豬豭豮豯豰豱豲豴豵豶豷豻豼豽豾豿貀貁貃貄貆貇�貈貋貍貎貏貐貑貒貓貕貖貗貙貚貛貜貝貞貟負財貢貣貤貥貦貧貨販貪貫責貭亍丌兀丐廿卅丕亘丞鬲孬噩丨禺丿匕乇夭爻卮氐囟胤馗毓睾鼗丶亟鼐乜乩亓芈孛啬嘏仄厍厝厣厥厮靥赝匚叵匦匮匾赜卦卣刂刈刎刭刳刿剀剌剞剡剜蒯剽劂劁劐劓冂罔亻仃仉仂仨仡仫仞伛仳伢佤仵伥伧伉伫佞佧攸佚佝�\".split(\"\");\nfor(j = 0; j != D[216].length; ++j) if(D[216][j].charCodeAt(0) !== 0xFFFD) { e[D[216][j]] = 55296 + j; d[55296 + j] = D[216][j];}\nD[217] = \"����������������������������������������������������������������貮貯貰貱貲貳貴貵貶買貸貹貺費貼貽貾貿賀賁賂賃賄賅賆資賈賉賊賋賌賍賎賏賐賑賒賓賔賕賖賗賘賙賚賛賜賝賞賟賠賡賢賣賤賥賦賧賨賩質賫賬�賭賮賯賰賱賲賳賴賵賶賷賸賹賺賻購賽賾賿贀贁贂贃贄贅贆贇贈贉贊贋贌贍佟佗伲伽佶佴侑侉侃侏佾佻侪佼侬侔俦俨俪俅俚俣俜俑俟俸倩偌俳倬倏倮倭俾倜倌倥倨偾偃偕偈偎偬偻傥傧傩傺僖儆僭僬僦僮儇儋仝氽佘佥俎龠汆籴兮巽黉馘冁夔勹匍訇匐凫夙兕亠兖亳衮袤亵脔裒禀嬴蠃羸冫冱冽冼�\".split(\"\");\nfor(j = 0; j != D[217].length; ++j) if(D[217][j].charCodeAt(0) !== 0xFFFD) { e[D[217][j]] = 55552 + j; d[55552 + j] = D[217][j];}\nD[218] = \"����������������������������������������������������������������贎贏贐贑贒贓贔贕贖贗贘贙贚贛贜贠赑赒赗赟赥赨赩赪赬赮赯赱赲赸赹赺赻赼赽赾赿趀趂趃趆趇趈趉趌趍趎趏趐趒趓趕趖趗趘趙趚趛趜趝趞趠趡�趢趤趥趦趧趨趩趪趫趬趭趮趯趰趲趶趷趹趻趽跀跁跂跅跇跈跉跊跍跐跒跓跔凇冖冢冥讠讦讧讪讴讵讷诂诃诋诏诎诒诓诔诖诘诙诜诟诠诤诨诩诮诰诳诶诹诼诿谀谂谄谇谌谏谑谒谔谕谖谙谛谘谝谟谠谡谥谧谪谫谮谯谲谳谵谶卩卺阝阢阡阱阪阽阼陂陉陔陟陧陬陲陴隈隍隗隰邗邛邝邙邬邡邴邳邶邺�\".split(\"\");\nfor(j = 0; j != D[218].length; ++j) if(D[218][j].charCodeAt(0) !== 0xFFFD) { e[D[218][j]] = 55808 + j; d[55808 + j] = D[218][j];}\nD[219] = \"����������������������������������������������������������������跕跘跙跜跠跡跢跥跦跧跩跭跮跰跱跲跴跶跼跾跿踀踁踂踃踄踆踇踈踋踍踎踐踑踒踓踕踖踗踘踙踚踛踜踠踡踤踥踦踧踨踫踭踰踲踳踴踶踷踸踻踼踾�踿蹃蹅蹆蹌蹍蹎蹏蹐蹓蹔蹕蹖蹗蹘蹚蹛蹜蹝蹞蹟蹠蹡蹢蹣蹤蹥蹧蹨蹪蹫蹮蹱邸邰郏郅邾郐郄郇郓郦郢郜郗郛郫郯郾鄄鄢鄞鄣鄱鄯鄹酃酆刍奂劢劬劭劾哿勐勖勰叟燮矍廴凵凼鬯厶弁畚巯坌垩垡塾墼壅壑圩圬圪圳圹圮圯坜圻坂坩垅坫垆坼坻坨坭坶坳垭垤垌垲埏垧垴垓垠埕埘埚埙埒垸埴埯埸埤埝�\".split(\"\");\nfor(j = 0; j != D[219].length; ++j) if(D[219][j].charCodeAt(0) !== 0xFFFD) { e[D[219][j]] = 56064 + j; d[56064 + j] = D[219][j];}\nD[220] = \"����������������������������������������������������������������蹳蹵蹷蹸蹹蹺蹻蹽蹾躀躂躃躄躆躈躉躊躋躌躍躎躑躒躓躕躖躗躘躙躚躛躝躟躠躡躢躣躤躥躦躧躨躩躪躭躮躰躱躳躴躵躶躷躸躹躻躼躽躾躿軀軁軂�軃軄軅軆軇軈軉車軋軌軍軏軐軑軒軓軔軕軖軗軘軙軚軛軜軝軞軟軠軡転軣軤堋堍埽埭堀堞堙塄堠塥塬墁墉墚墀馨鼙懿艹艽艿芏芊芨芄芎芑芗芙芫芸芾芰苈苊苣芘芷芮苋苌苁芩芴芡芪芟苄苎芤苡茉苷苤茏茇苜苴苒苘茌苻苓茑茚茆茔茕苠苕茜荑荛荜茈莒茼茴茱莛荞茯荏荇荃荟荀茗荠茭茺茳荦荥�\".split(\"\");\nfor(j = 0; j != D[220].length; ++j) if(D[220][j].charCodeAt(0) !== 0xFFFD) { e[D[220][j]] = 56320 + j; d[56320 + j] = D[220][j];}\nD[221] = \"����������������������������������������������������������������軥軦軧軨軩軪軫軬軭軮軯軰軱軲軳軴軵軶軷軸軹軺軻軼軽軾軿輀輁輂較輄輅輆輇輈載輊輋輌輍輎輏輐輑輒輓輔輕輖輗輘輙輚輛輜輝輞輟輠輡輢輣�輤輥輦輧輨輩輪輫輬輭輮輯輰輱輲輳輴輵輶輷輸輹輺輻輼輽輾輿轀轁轂轃轄荨茛荩荬荪荭荮莰荸莳莴莠莪莓莜莅荼莶莩荽莸荻莘莞莨莺莼菁萁菥菘堇萘萋菝菽菖萜萸萑萆菔菟萏萃菸菹菪菅菀萦菰菡葜葑葚葙葳蒇蒈葺蒉葸萼葆葩葶蒌蒎萱葭蓁蓍蓐蓦蒽蓓蓊蒿蒺蓠蒡蒹蒴蒗蓥蓣蔌甍蔸蓰蔹蔟蔺�\".split(\"\");\nfor(j = 0; j != D[221].length; ++j) if(D[221][j].charCodeAt(0) !== 0xFFFD) { e[D[221][j]] = 56576 + j; d[56576 + j] = D[221][j];}\nD[222] = \"����������������������������������������������������������������轅轆轇轈轉轊轋轌轍轎轏轐轑轒轓轔轕轖轗轘轙轚轛轜轝轞轟轠轡轢轣轤轥轪辀辌辒辝辠辡辢辤辥辦辧辪辬辭辮辯農辳辴辵辷辸辺辻込辿迀迃迆�迉迊迋迌迍迏迒迖迗迚迠迡迣迧迬迯迱迲迴迵迶迺迻迼迾迿逇逈逌逎逓逕逘蕖蔻蓿蓼蕙蕈蕨蕤蕞蕺瞢蕃蕲蕻薤薨薇薏蕹薮薜薅薹薷薰藓藁藜藿蘧蘅蘩蘖蘼廾弈夼奁耷奕奚奘匏尢尥尬尴扌扪抟抻拊拚拗拮挢拶挹捋捃掭揶捱捺掎掴捭掬掊捩掮掼揲揸揠揿揄揞揎摒揆掾摅摁搋搛搠搌搦搡摞撄摭撖�\".split(\"\");\nfor(j = 0; j != D[222].length; ++j) if(D[222][j].charCodeAt(0) !== 0xFFFD) { e[D[222][j]] = 56832 + j; d[56832 + j] = D[222][j];}\nD[223] = \"����������������������������������������������������������������這逜連逤逥逧逨逩逪逫逬逰週進逳逴逷逹逺逽逿遀遃遅遆遈遉遊運遌過達違遖遙遚遜遝遞遟遠遡遤遦遧適遪遫遬遯遰遱遲遳遶遷選遹遺遻遼遾邁�還邅邆邇邉邊邌邍邎邏邐邒邔邖邘邚邜邞邟邠邤邥邧邨邩邫邭邲邷邼邽邿郀摺撷撸撙撺擀擐擗擤擢攉攥攮弋忒甙弑卟叱叽叩叨叻吒吖吆呋呒呓呔呖呃吡呗呙吣吲咂咔呷呱呤咚咛咄呶呦咝哐咭哂咴哒咧咦哓哔呲咣哕咻咿哌哙哚哜咩咪咤哝哏哞唛哧唠哽唔哳唢唣唏唑唧唪啧喏喵啉啭啁啕唿啐唼�\".split(\"\");\nfor(j = 0; j != D[223].length; ++j) if(D[223][j].charCodeAt(0) !== 0xFFFD) { e[D[223][j]] = 57088 + j; d[57088 + j] = D[223][j];}\nD[224] = \"����������������������������������������������������������������郂郃郆郈郉郋郌郍郒郔郕郖郘郙郚郞郟郠郣郤郥郩郪郬郮郰郱郲郳郵郶郷郹郺郻郼郿鄀鄁鄃鄅鄆鄇鄈鄉鄊鄋鄌鄍鄎鄏鄐鄑鄒鄓鄔鄕鄖鄗鄘鄚鄛鄜�鄝鄟鄠鄡鄤鄥鄦鄧鄨鄩鄪鄫鄬鄭鄮鄰鄲鄳鄴鄵鄶鄷鄸鄺鄻鄼鄽鄾鄿酀酁酂酄唷啖啵啶啷唳唰啜喋嗒喃喱喹喈喁喟啾嗖喑啻嗟喽喾喔喙嗪嗷嗉嘟嗑嗫嗬嗔嗦嗝嗄嗯嗥嗲嗳嗌嗍嗨嗵嗤辔嘞嘈嘌嘁嘤嘣嗾嘀嘧嘭噘嘹噗嘬噍噢噙噜噌噔嚆噤噱噫噻噼嚅嚓嚯囔囗囝囡囵囫囹囿圄圊圉圜帏帙帔帑帱帻帼�\".split(\"\");\nfor(j = 0; j != D[224].length; ++j) if(D[224][j].charCodeAt(0) !== 0xFFFD) { e[D[224][j]] = 57344 + j; d[57344 + j] = D[224][j];}\nD[225] = \"����������������������������������������������������������������酅酇酈酑酓酔酕酖酘酙酛酜酟酠酦酧酨酫酭酳酺酻酼醀醁醂醃醄醆醈醊醎醏醓醔醕醖醗醘醙醜醝醞醟醠醡醤醥醦醧醨醩醫醬醰醱醲醳醶醷醸醹醻�醼醽醾醿釀釁釂釃釄釅釆釈釋釐釒釓釔釕釖釗釘釙釚釛針釞釟釠釡釢釣釤釥帷幄幔幛幞幡岌屺岍岐岖岈岘岙岑岚岜岵岢岽岬岫岱岣峁岷峄峒峤峋峥崂崃崧崦崮崤崞崆崛嵘崾崴崽嵬嵛嵯嵝嵫嵋嵊嵩嵴嶂嶙嶝豳嶷巅彳彷徂徇徉後徕徙徜徨徭徵徼衢彡犭犰犴犷犸狃狁狎狍狒狨狯狩狲狴狷猁狳猃狺�\".split(\"\");\nfor(j = 0; j != D[225].length; ++j) if(D[225][j].charCodeAt(0) !== 0xFFFD) { e[D[225][j]] = 57600 + j; d[57600 + j] = D[225][j];}\nD[226] = \"����������������������������������������������������������������釦釧釨釩釪釫釬釭釮釯釰釱釲釳釴釵釶釷釸釹釺釻釼釽釾釿鈀鈁鈂鈃鈄鈅鈆鈇鈈鈉鈊鈋鈌鈍鈎鈏鈐鈑鈒鈓鈔鈕鈖鈗鈘鈙鈚鈛鈜鈝鈞鈟鈠鈡鈢鈣鈤�鈥鈦鈧鈨鈩鈪鈫鈬鈭鈮鈯鈰鈱鈲鈳鈴鈵鈶鈷鈸鈹鈺鈻鈼鈽鈾鈿鉀鉁鉂鉃鉄鉅狻猗猓猡猊猞猝猕猢猹猥猬猸猱獐獍獗獠獬獯獾舛夥飧夤夂饣饧饨饩饪饫饬饴饷饽馀馄馇馊馍馐馑馓馔馕庀庑庋庖庥庠庹庵庾庳赓廒廑廛廨廪膺忄忉忖忏怃忮怄忡忤忾怅怆忪忭忸怙怵怦怛怏怍怩怫怊怿怡恸恹恻恺恂�\".split(\"\");\nfor(j = 0; j != D[226].length; ++j) if(D[226][j].charCodeAt(0) !== 0xFFFD) { e[D[226][j]] = 57856 + j; d[57856 + j] = D[226][j];}\nD[227] = \"����������������������������������������������������������������鉆鉇鉈鉉鉊鉋鉌鉍鉎鉏鉐鉑鉒鉓鉔鉕鉖鉗鉘鉙鉚鉛鉜鉝鉞鉟鉠鉡鉢鉣鉤鉥鉦鉧鉨鉩鉪鉫鉬鉭鉮鉯鉰鉱鉲鉳鉵鉶鉷鉸鉹鉺鉻鉼鉽鉾鉿銀銁銂銃銄銅�銆銇銈銉銊銋銌銍銏銐銑銒銓銔銕銖銗銘銙銚銛銜銝銞銟銠銡銢銣銤銥銦銧恪恽悖悚悭悝悃悒悌悛惬悻悱惝惘惆惚悴愠愦愕愣惴愀愎愫慊慵憬憔憧憷懔懵忝隳闩闫闱闳闵闶闼闾阃阄阆阈阊阋阌阍阏阒阕阖阗阙阚丬爿戕氵汔汜汊沣沅沐沔沌汨汩汴汶沆沩泐泔沭泷泸泱泗沲泠泖泺泫泮沱泓泯泾�\".split(\"\");\nfor(j = 0; j != D[227].length; ++j) if(D[227][j].charCodeAt(0) !== 0xFFFD) { e[D[227][j]] = 58112 + j; d[58112 + j] = D[227][j];}\nD[228] = \"����������������������������������������������������������������銨銩銪銫銬銭銯銰銱銲銳銴銵銶銷銸銹銺銻銼銽銾銿鋀鋁鋂鋃鋄鋅鋆鋇鋉鋊鋋鋌鋍鋎鋏鋐鋑鋒鋓鋔鋕鋖鋗鋘鋙鋚鋛鋜鋝鋞鋟鋠鋡鋢鋣鋤鋥鋦鋧鋨�鋩鋪鋫鋬鋭鋮鋯鋰鋱鋲鋳鋴鋵鋶鋷鋸鋹鋺鋻鋼鋽鋾鋿錀錁錂錃錄錅錆錇錈錉洹洧洌浃浈洇洄洙洎洫浍洮洵洚浏浒浔洳涑浯涞涠浞涓涔浜浠浼浣渚淇淅淞渎涿淠渑淦淝淙渖涫渌涮渫湮湎湫溲湟溆湓湔渲渥湄滟溱溘滠漭滢溥溧溽溻溷滗溴滏溏滂溟潢潆潇漤漕滹漯漶潋潴漪漉漩澉澍澌潸潲潼潺濑�\".split(\"\");\nfor(j = 0; j != D[228].length; ++j) if(D[228][j].charCodeAt(0) !== 0xFFFD) { e[D[228][j]] = 58368 + j; d[58368 + j] = D[228][j];}\nD[229] = \"����������������������������������������������������������������錊錋錌錍錎錏錐錑錒錓錔錕錖錗錘錙錚錛錜錝錞錟錠錡錢錣錤錥錦錧錨錩錪錫錬錭錮錯錰錱録錳錴錵錶錷錸錹錺錻錼錽錿鍀鍁鍂鍃鍄鍅鍆鍇鍈鍉�鍊鍋鍌鍍鍎鍏鍐鍑鍒鍓鍔鍕鍖鍗鍘鍙鍚鍛鍜鍝鍞鍟鍠鍡鍢鍣鍤鍥鍦鍧鍨鍩鍫濉澧澹澶濂濡濮濞濠濯瀚瀣瀛瀹瀵灏灞宀宄宕宓宥宸甯骞搴寤寮褰寰蹇謇辶迓迕迥迮迤迩迦迳迨逅逄逋逦逑逍逖逡逵逶逭逯遄遑遒遐遨遘遢遛暹遴遽邂邈邃邋彐彗彖彘尻咫屐屙孱屣屦羼弪弩弭艴弼鬻屮妁妃妍妩妪妣�\".split(\"\");\nfor(j = 0; j != D[229].length; ++j) if(D[229][j].charCodeAt(0) !== 0xFFFD) { e[D[229][j]] = 58624 + j; d[58624 + j] = D[229][j];}\nD[230] = \"����������������������������������������������������������������鍬鍭鍮鍯鍰鍱鍲鍳鍴鍵鍶鍷鍸鍹鍺鍻鍼鍽鍾鍿鎀鎁鎂鎃鎄鎅鎆鎇鎈鎉鎊鎋鎌鎍鎎鎐鎑鎒鎓鎔鎕鎖鎗鎘鎙鎚鎛鎜鎝鎞鎟鎠鎡鎢鎣鎤鎥鎦鎧鎨鎩鎪鎫�鎬鎭鎮鎯鎰鎱鎲鎳鎴鎵鎶鎷鎸鎹鎺鎻鎼鎽鎾鎿鏀鏁鏂鏃鏄鏅鏆鏇鏈鏉鏋鏌鏍妗姊妫妞妤姒妲妯姗妾娅娆姝娈姣姘姹娌娉娲娴娑娣娓婀婧婊婕娼婢婵胬媪媛婷婺媾嫫媲嫒嫔媸嫠嫣嫱嫖嫦嫘嫜嬉嬗嬖嬲嬷孀尕尜孚孥孳孑孓孢驵驷驸驺驿驽骀骁骅骈骊骐骒骓骖骘骛骜骝骟骠骢骣骥骧纟纡纣纥纨纩�\".split(\"\");\nfor(j = 0; j != D[230].length; ++j) if(D[230][j].charCodeAt(0) !== 0xFFFD) { e[D[230][j]] = 58880 + j; d[58880 + j] = D[230][j];}\nD[231] = \"����������������������������������������������������������������鏎鏏鏐鏑鏒鏓鏔鏕鏗鏘鏙鏚鏛鏜鏝鏞鏟鏠鏡鏢鏣鏤鏥鏦鏧鏨鏩鏪鏫鏬鏭鏮鏯鏰鏱鏲鏳鏴鏵鏶鏷鏸鏹鏺鏻鏼鏽鏾鏿鐀鐁鐂鐃鐄鐅鐆鐇鐈鐉鐊鐋鐌鐍�鐎鐏鐐鐑鐒鐓鐔鐕鐖鐗鐘鐙鐚鐛鐜鐝鐞鐟鐠鐡鐢鐣鐤鐥鐦鐧鐨鐩鐪鐫鐬鐭鐮纭纰纾绀绁绂绉绋绌绐绔绗绛绠绡绨绫绮绯绱绲缍绶绺绻绾缁缂缃缇缈缋缌缏缑缒缗缙缜缛缟缡缢缣缤缥缦缧缪缫缬缭缯缰缱缲缳缵幺畿巛甾邕玎玑玮玢玟珏珂珑玷玳珀珉珈珥珙顼琊珩珧珞玺珲琏琪瑛琦琥琨琰琮琬�\".split(\"\");\nfor(j = 0; j != D[231].length; ++j) if(D[231][j].charCodeAt(0) !== 0xFFFD) { e[D[231][j]] = 59136 + j; d[59136 + j] = D[231][j];}\nD[232] = \"����������������������������������������������������������������鐯鐰鐱鐲鐳鐴鐵鐶鐷鐸鐹鐺鐻鐼鐽鐿鑀鑁鑂鑃鑄鑅鑆鑇鑈鑉鑊鑋鑌鑍鑎鑏鑐鑑鑒鑓鑔鑕鑖鑗鑘鑙鑚鑛鑜鑝鑞鑟鑠鑡鑢鑣鑤鑥鑦鑧鑨鑩鑪鑬鑭鑮鑯�鑰鑱鑲鑳鑴鑵鑶鑷鑸鑹鑺鑻鑼鑽鑾鑿钀钁钂钃钄钑钖钘铇铏铓铔铚铦铻锜锠琛琚瑁瑜瑗瑕瑙瑷瑭瑾璜璎璀璁璇璋璞璨璩璐璧瓒璺韪韫韬杌杓杞杈杩枥枇杪杳枘枧杵枨枞枭枋杷杼柰栉柘栊柩枰栌柙枵柚枳柝栀柃枸柢栎柁柽栲栳桠桡桎桢桄桤梃栝桕桦桁桧桀栾桊桉栩梵梏桴桷梓桫棂楮棼椟椠棹�\".split(\"\");\nfor(j = 0; j != D[232].length; ++j) if(D[232][j].charCodeAt(0) !== 0xFFFD) { e[D[232][j]] = 59392 + j; d[59392 + j] = D[232][j];}\nD[233] = \"����������������������������������������������������������������锧锳锽镃镈镋镕镚镠镮镴镵長镸镹镺镻镼镽镾門閁閂閃閄閅閆閇閈閉閊開閌閍閎閏閐閑閒間閔閕閖閗閘閙閚閛閜閝閞閟閠閡関閣閤閥閦閧閨閩閪�閫閬閭閮閯閰閱閲閳閴閵閶閷閸閹閺閻閼閽閾閿闀闁闂闃闄闅闆闇闈闉闊闋椤棰椋椁楗棣椐楱椹楠楂楝榄楫榀榘楸椴槌榇榈槎榉楦楣楹榛榧榻榫榭槔榱槁槊槟榕槠榍槿樯槭樗樘橥槲橄樾檠橐橛樵檎橹樽樨橘橼檑檐檩檗檫猷獒殁殂殇殄殒殓殍殚殛殡殪轫轭轱轲轳轵轶轸轷轹轺轼轾辁辂辄辇辋�\".split(\"\");\nfor(j = 0; j != D[233].length; ++j) if(D[233][j].charCodeAt(0) !== 0xFFFD) { e[D[233][j]] = 59648 + j; d[59648 + j] = D[233][j];}\nD[234] = \"����������������������������������������������������������������闌闍闎闏闐闑闒闓闔闕闖闗闘闙闚闛關闝闞闟闠闡闢闣闤闥闦闧闬闿阇阓阘阛阞阠阣阤阥阦阧阨阩阫阬阭阯阰阷阸阹阺阾陁陃陊陎陏陑陒陓陖陗�陘陙陚陜陝陞陠陣陥陦陫陭陮陯陰陱陳陸陹険陻陼陽陾陿隀隁隂隃隄隇隉隊辍辎辏辘辚軎戋戗戛戟戢戡戥戤戬臧瓯瓴瓿甏甑甓攴旮旯旰昊昙杲昃昕昀炅曷昝昴昱昶昵耆晟晔晁晏晖晡晗晷暄暌暧暝暾曛曜曦曩贲贳贶贻贽赀赅赆赈赉赇赍赕赙觇觊觋觌觎觏觐觑牮犟牝牦牯牾牿犄犋犍犏犒挈挲掰�\".split(\"\");\nfor(j = 0; j != D[234].length; ++j) if(D[234][j].charCodeAt(0) !== 0xFFFD) { e[D[234][j]] = 59904 + j; d[59904 + j] = D[234][j];}\nD[235] = \"����������������������������������������������������������������隌階隑隒隓隕隖隚際隝隞隟隠隡隢隣隤隥隦隨隩險隫隬隭隮隯隱隲隴隵隷隸隺隻隿雂雃雈雊雋雐雑雓雔雖雗雘雙雚雛雜雝雞雟雡離難雤雥雦雧雫�雬雭雮雰雱雲雴雵雸雺電雼雽雿霂霃霅霊霋霌霐霑霒霔霕霗霘霙霚霛霝霟霠搿擘耄毪毳毽毵毹氅氇氆氍氕氘氙氚氡氩氤氪氲攵敕敫牍牒牖爰虢刖肟肜肓肼朊肽肱肫肭肴肷胧胨胩胪胛胂胄胙胍胗朐胝胫胱胴胭脍脎胲胼朕脒豚脶脞脬脘脲腈腌腓腴腙腚腱腠腩腼腽腭腧塍媵膈膂膑滕膣膪臌朦臊膻�\".split(\"\");\nfor(j = 0; j != D[235].length; ++j) if(D[235][j].charCodeAt(0) !== 0xFFFD) { e[D[235][j]] = 60160 + j; d[60160 + j] = D[235][j];}\nD[236] = \"����������������������������������������������������������������霡霢霣霤霥霦霧霨霩霫霬霮霯霱霳霴霵霶霷霺霻霼霽霿靀靁靂靃靄靅靆靇靈靉靊靋靌靍靎靏靐靑靔靕靗靘靚靜靝靟靣靤靦靧靨靪靫靬靭靮靯靰靱�靲靵靷靸靹靺靻靽靾靿鞀鞁鞂鞃鞄鞆鞇鞈鞉鞊鞌鞎鞏鞐鞓鞕鞖鞗鞙鞚鞛鞜鞝臁膦欤欷欹歃歆歙飑飒飓飕飙飚殳彀毂觳斐齑斓於旆旄旃旌旎旒旖炀炜炖炝炻烀炷炫炱烨烊焐焓焖焯焱煳煜煨煅煲煊煸煺熘熳熵熨熠燠燔燧燹爝爨灬焘煦熹戾戽扃扈扉礻祀祆祉祛祜祓祚祢祗祠祯祧祺禅禊禚禧禳忑忐�\".split(\"\");\nfor(j = 0; j != D[236].length; ++j) if(D[236][j].charCodeAt(0) !== 0xFFFD) { e[D[236][j]] = 60416 + j; d[60416 + j] = D[236][j];}\nD[237] = \"����������������������������������������������������������������鞞鞟鞡鞢鞤鞥鞦鞧鞨鞩鞪鞬鞮鞰鞱鞳鞵鞶鞷鞸鞹鞺鞻鞼鞽鞾鞿韀韁韂韃韄韅韆韇韈韉韊韋韌韍韎韏韐韑韒韓韔韕韖韗韘韙韚韛韜韝韞韟韠韡韢韣�韤韥韨韮韯韰韱韲韴韷韸韹韺韻韼韽韾響頀頁頂頃頄項順頇須頉頊頋頌頍頎怼恝恚恧恁恙恣悫愆愍慝憩憝懋懑戆肀聿沓泶淼矶矸砀砉砗砘砑斫砭砜砝砹砺砻砟砼砥砬砣砩硎硭硖硗砦硐硇硌硪碛碓碚碇碜碡碣碲碹碥磔磙磉磬磲礅磴礓礤礞礴龛黹黻黼盱眄眍盹眇眈眚眢眙眭眦眵眸睐睑睇睃睚睨�\".split(\"\");\nfor(j = 0; j != D[237].length; ++j) if(D[237][j].charCodeAt(0) !== 0xFFFD) { e[D[237][j]] = 60672 + j; d[60672 + j] = D[237][j];}\nD[238] = \"����������������������������������������������������������������頏預頑頒頓頔頕頖頗領頙頚頛頜頝頞頟頠頡頢頣頤頥頦頧頨頩頪頫頬頭頮頯頰頱頲頳頴頵頶頷頸頹頺頻頼頽頾頿顀顁顂顃顄顅顆顇顈顉顊顋題額�顎顏顐顑顒顓顔顕顖顗願顙顚顛顜顝類顟顠顡顢顣顤顥顦顧顨顩顪顫顬顭顮睢睥睿瞍睽瞀瞌瞑瞟瞠瞰瞵瞽町畀畎畋畈畛畲畹疃罘罡罟詈罨罴罱罹羁罾盍盥蠲钅钆钇钋钊钌钍钏钐钔钗钕钚钛钜钣钤钫钪钭钬钯钰钲钴钶钷钸钹钺钼钽钿铄铈铉铊铋铌铍铎铐铑铒铕铖铗铙铘铛铞铟铠铢铤铥铧铨铪�\".split(\"\");\nfor(j = 0; j != D[238].length; ++j) if(D[238][j].charCodeAt(0) !== 0xFFFD) { e[D[238][j]] = 60928 + j; d[60928 + j] = D[238][j];}\nD[239] = \"����������������������������������������������������������������顯顰顱顲顳顴颋颎颒颕颙颣風颩颪颫颬颭颮颯颰颱颲颳颴颵颶颷颸颹颺颻颼颽颾颿飀飁飂飃飄飅飆飇飈飉飊飋飌飍飏飐飔飖飗飛飜飝飠飡飢飣飤�飥飦飩飪飫飬飭飮飯飰飱飲飳飴飵飶飷飸飹飺飻飼飽飾飿餀餁餂餃餄餅餆餇铩铫铮铯铳铴铵铷铹铼铽铿锃锂锆锇锉锊锍锎锏锒锓锔锕锖锘锛锝锞锟锢锪锫锩锬锱锲锴锶锷锸锼锾锿镂锵镄镅镆镉镌镎镏镒镓镔镖镗镘镙镛镞镟镝镡镢镤镥镦镧镨镩镪镫镬镯镱镲镳锺矧矬雉秕秭秣秫稆嵇稃稂稞稔�\".split(\"\");\nfor(j = 0; j != D[239].length; ++j) if(D[239][j].charCodeAt(0) !== 0xFFFD) { e[D[239][j]] = 61184 + j; d[61184 + j] = D[239][j];}\nD[240] = \"����������������������������������������������������������������餈餉養餋餌餎餏餑餒餓餔餕餖餗餘餙餚餛餜餝餞餟餠餡餢餣餤餥餦餧館餩餪餫餬餭餯餰餱餲餳餴餵餶餷餸餹餺餻餼餽餾餿饀饁饂饃饄饅饆饇饈饉�饊饋饌饍饎饏饐饑饒饓饖饗饘饙饚饛饜饝饞饟饠饡饢饤饦饳饸饹饻饾馂馃馉稹稷穑黏馥穰皈皎皓皙皤瓞瓠甬鸠鸢鸨鸩鸪鸫鸬鸲鸱鸶鸸鸷鸹鸺鸾鹁鹂鹄鹆鹇鹈鹉鹋鹌鹎鹑鹕鹗鹚鹛鹜鹞鹣鹦鹧鹨鹩鹪鹫鹬鹱鹭鹳疒疔疖疠疝疬疣疳疴疸痄疱疰痃痂痖痍痣痨痦痤痫痧瘃痱痼痿瘐瘀瘅瘌瘗瘊瘥瘘瘕瘙�\".split(\"\");\nfor(j = 0; j != D[240].length; ++j) if(D[240][j].charCodeAt(0) !== 0xFFFD) { e[D[240][j]] = 61440 + j; d[61440 + j] = D[240][j];}\nD[241] = \"����������������������������������������������������������������馌馎馚馛馜馝馞馟馠馡馢馣馤馦馧馩馪馫馬馭馮馯馰馱馲馳馴馵馶馷馸馹馺馻馼馽馾馿駀駁駂駃駄駅駆駇駈駉駊駋駌駍駎駏駐駑駒駓駔駕駖駗駘�駙駚駛駜駝駞駟駠駡駢駣駤駥駦駧駨駩駪駫駬駭駮駯駰駱駲駳駴駵駶駷駸駹瘛瘼瘢瘠癀瘭瘰瘿瘵癃瘾瘳癍癞癔癜癖癫癯翊竦穸穹窀窆窈窕窦窠窬窨窭窳衤衩衲衽衿袂袢裆袷袼裉裢裎裣裥裱褚裼裨裾裰褡褙褓褛褊褴褫褶襁襦襻疋胥皲皴矜耒耔耖耜耠耢耥耦耧耩耨耱耋耵聃聆聍聒聩聱覃顸颀颃�\".split(\"\");\nfor(j = 0; j != D[241].length; ++j) if(D[241][j].charCodeAt(0) !== 0xFFFD) { e[D[241][j]] = 61696 + j; d[61696 + j] = D[241][j];}\nD[242] = \"����������������������������������������������������������������駺駻駼駽駾駿騀騁騂騃騄騅騆騇騈騉騊騋騌騍騎騏騐騑騒験騔騕騖騗騘騙騚騛騜騝騞騟騠騡騢騣騤騥騦騧騨騩騪騫騬騭騮騯騰騱騲騳騴騵騶騷騸�騹騺騻騼騽騾騿驀驁驂驃驄驅驆驇驈驉驊驋驌驍驎驏驐驑驒驓驔驕驖驗驘驙颉颌颍颏颔颚颛颞颟颡颢颥颦虍虔虬虮虿虺虼虻蚨蚍蚋蚬蚝蚧蚣蚪蚓蚩蚶蛄蚵蛎蚰蚺蚱蚯蛉蛏蚴蛩蛱蛲蛭蛳蛐蜓蛞蛴蛟蛘蛑蜃蜇蛸蜈蜊蜍蜉蜣蜻蜞蜥蜮蜚蜾蝈蜴蜱蜩蜷蜿螂蜢蝽蝾蝻蝠蝰蝌蝮螋蝓蝣蝼蝤蝙蝥螓螯螨蟒�\".split(\"\");\nfor(j = 0; j != D[242].length; ++j) if(D[242][j].charCodeAt(0) !== 0xFFFD) { e[D[242][j]] = 61952 + j; d[61952 + j] = D[242][j];}\nD[243] = \"����������������������������������������������������������������驚驛驜驝驞驟驠驡驢驣驤驥驦驧驨驩驪驫驲骃骉骍骎骔骕骙骦骩骪骫骬骭骮骯骲骳骴骵骹骻骽骾骿髃髄髆髇髈髉髊髍髎髏髐髒體髕髖髗髙髚髛髜�髝髞髠髢髣髤髥髧髨髩髪髬髮髰髱髲髳髴髵髶髷髸髺髼髽髾髿鬀鬁鬂鬄鬅鬆蟆螈螅螭螗螃螫蟥螬螵螳蟋蟓螽蟑蟀蟊蟛蟪蟠蟮蠖蠓蟾蠊蠛蠡蠹蠼缶罂罄罅舐竺竽笈笃笄笕笊笫笏筇笸笪笙笮笱笠笥笤笳笾笞筘筚筅筵筌筝筠筮筻筢筲筱箐箦箧箸箬箝箨箅箪箜箢箫箴篑篁篌篝篚篥篦篪簌篾篼簏簖簋�\".split(\"\");\nfor(j = 0; j != D[243].length; ++j) if(D[243][j].charCodeAt(0) !== 0xFFFD) { e[D[243][j]] = 62208 + j; d[62208 + j] = D[243][j];}\nD[244] = \"����������������������������������������������������������������鬇鬉鬊鬋鬌鬍鬎鬐鬑鬒鬔鬕鬖鬗鬘鬙鬚鬛鬜鬝鬞鬠鬡鬢鬤鬥鬦鬧鬨鬩鬪鬫鬬鬭鬮鬰鬱鬳鬴鬵鬶鬷鬸鬹鬺鬽鬾鬿魀魆魊魋魌魎魐魒魓魕魖魗魘魙魚�魛魜魝魞魟魠魡魢魣魤魥魦魧魨魩魪魫魬魭魮魯魰魱魲魳魴魵魶魷魸魹魺魻簟簪簦簸籁籀臾舁舂舄臬衄舡舢舣舭舯舨舫舸舻舳舴舾艄艉艋艏艚艟艨衾袅袈裘裟襞羝羟羧羯羰羲籼敉粑粝粜粞粢粲粼粽糁糇糌糍糈糅糗糨艮暨羿翎翕翥翡翦翩翮翳糸絷綦綮繇纛麸麴赳趄趔趑趱赧赭豇豉酊酐酎酏酤�\".split(\"\");\nfor(j = 0; j != D[244].length; ++j) if(D[244][j].charCodeAt(0) !== 0xFFFD) { e[D[244][j]] = 62464 + j; d[62464 + j] = D[244][j];}\nD[245] = \"����������������������������������������������������������������魼魽魾魿鮀鮁鮂鮃鮄鮅鮆鮇鮈鮉鮊鮋鮌鮍鮎鮏鮐鮑鮒鮓鮔鮕鮖鮗鮘鮙鮚鮛鮜鮝鮞鮟鮠鮡鮢鮣鮤鮥鮦鮧鮨鮩鮪鮫鮬鮭鮮鮯鮰鮱鮲鮳鮴鮵鮶鮷鮸鮹鮺�鮻鮼鮽鮾鮿鯀鯁鯂鯃鯄鯅鯆鯇鯈鯉鯊鯋鯌鯍鯎鯏鯐鯑鯒鯓鯔鯕鯖鯗鯘鯙鯚鯛酢酡酰酩酯酽酾酲酴酹醌醅醐醍醑醢醣醪醭醮醯醵醴醺豕鹾趸跫踅蹙蹩趵趿趼趺跄跖跗跚跞跎跏跛跆跬跷跸跣跹跻跤踉跽踔踝踟踬踮踣踯踺蹀踹踵踽踱蹉蹁蹂蹑蹒蹊蹰蹶蹼蹯蹴躅躏躔躐躜躞豸貂貊貅貘貔斛觖觞觚觜�\".split(\"\");\nfor(j = 0; j != D[245].length; ++j) if(D[245][j].charCodeAt(0) !== 0xFFFD) { e[D[245][j]] = 62720 + j; d[62720 + j] = D[245][j];}\nD[246] = \"����������������������������������������������������������������鯜鯝鯞鯟鯠鯡鯢鯣鯤鯥鯦鯧鯨鯩鯪鯫鯬鯭鯮鯯鯰鯱鯲鯳鯴鯵鯶鯷鯸鯹鯺鯻鯼鯽鯾鯿鰀鰁鰂鰃鰄鰅鰆鰇鰈鰉鰊鰋鰌鰍鰎鰏鰐鰑鰒鰓鰔鰕鰖鰗鰘鰙鰚�鰛鰜鰝鰞鰟鰠鰡鰢鰣鰤鰥鰦鰧鰨鰩鰪鰫鰬鰭鰮鰯鰰鰱鰲鰳鰴鰵鰶鰷鰸鰹鰺鰻觥觫觯訾謦靓雩雳雯霆霁霈霏霎霪霭霰霾龀龃龅龆龇龈龉龊龌黾鼋鼍隹隼隽雎雒瞿雠銎銮鋈錾鍪鏊鎏鐾鑫鱿鲂鲅鲆鲇鲈稣鲋鲎鲐鲑鲒鲔鲕鲚鲛鲞鲟鲠鲡鲢鲣鲥鲦鲧鲨鲩鲫鲭鲮鲰鲱鲲鲳鲴鲵鲶鲷鲺鲻鲼鲽鳄鳅鳆鳇鳊鳋�\".split(\"\");\nfor(j = 0; j != D[246].length; ++j) if(D[246][j].charCodeAt(0) !== 0xFFFD) { e[D[246][j]] = 62976 + j; d[62976 + j] = D[246][j];}\nD[247] = \"����������������������������������������������������������������鰼鰽鰾鰿鱀鱁鱂鱃鱄鱅鱆鱇鱈鱉鱊鱋鱌鱍鱎鱏鱐鱑鱒鱓鱔鱕鱖鱗鱘鱙鱚鱛鱜鱝鱞鱟鱠鱡鱢鱣鱤鱥鱦鱧鱨鱩鱪鱫鱬鱭鱮鱯鱰鱱鱲鱳鱴鱵鱶鱷鱸鱹鱺�鱻鱽鱾鲀鲃鲄鲉鲊鲌鲏鲓鲖鲗鲘鲙鲝鲪鲬鲯鲹鲾鲿鳀鳁鳂鳈鳉鳑鳒鳚鳛鳠鳡鳌鳍鳎鳏鳐鳓鳔鳕鳗鳘鳙鳜鳝鳟鳢靼鞅鞑鞒鞔鞯鞫鞣鞲鞴骱骰骷鹘骶骺骼髁髀髅髂髋髌髑魅魃魇魉魈魍魑飨餍餮饕饔髟髡髦髯髫髻髭髹鬈鬏鬓鬟鬣麽麾縻麂麇麈麋麒鏖麝麟黛黜黝黠黟黢黩黧黥黪黯鼢鼬鼯鼹鼷鼽鼾齄�\".split(\"\");\nfor(j = 0; j != D[247].length; ++j) if(D[247][j].charCodeAt(0) !== 0xFFFD) { e[D[247][j]] = 63232 + j; d[63232 + j] = D[247][j];}\nD[248] = \"����������������������������������������������������������������鳣鳤鳥鳦鳧鳨鳩鳪鳫鳬鳭鳮鳯鳰鳱鳲鳳鳴鳵鳶鳷鳸鳹鳺鳻鳼鳽鳾鳿鴀鴁鴂鴃鴄鴅鴆鴇鴈鴉鴊鴋鴌鴍鴎鴏鴐鴑鴒鴓鴔鴕鴖鴗鴘鴙鴚鴛鴜鴝鴞鴟鴠鴡�鴢鴣鴤鴥鴦鴧鴨鴩鴪鴫鴬鴭鴮鴯鴰鴱鴲鴳鴴鴵鴶鴷鴸鴹鴺鴻鴼鴽鴾鴿鵀鵁鵂�\".split(\"\");\nfor(j = 0; j != D[248].length; ++j) if(D[248][j].charCodeAt(0) !== 0xFFFD) { e[D[248][j]] = 63488 + j; d[63488 + j] = D[248][j];}\nD[249] = \"����������������������������������������������������������������鵃鵄鵅鵆鵇鵈鵉鵊鵋鵌鵍鵎鵏鵐鵑鵒鵓鵔鵕鵖鵗鵘鵙鵚鵛鵜鵝鵞鵟鵠鵡鵢鵣鵤鵥鵦鵧鵨鵩鵪鵫鵬鵭鵮鵯鵰鵱鵲鵳鵴鵵鵶鵷鵸鵹鵺鵻鵼鵽鵾鵿鶀鶁�鶂鶃鶄鶅鶆鶇鶈鶉鶊鶋鶌鶍鶎鶏鶐鶑鶒鶓鶔鶕鶖鶗鶘鶙鶚鶛鶜鶝鶞鶟鶠鶡鶢�\".split(\"\");\nfor(j = 0; j != D[249].length; ++j) if(D[249][j].charCodeAt(0) !== 0xFFFD) { e[D[249][j]] = 63744 + j; d[63744 + j] = D[249][j];}\nD[250] = \"����������������������������������������������������������������鶣鶤鶥鶦鶧鶨鶩鶪鶫鶬鶭鶮鶯鶰鶱鶲鶳鶴鶵鶶鶷鶸鶹鶺鶻鶼鶽鶾鶿鷀鷁鷂鷃鷄鷅鷆鷇鷈鷉鷊鷋鷌鷍鷎鷏鷐鷑鷒鷓鷔鷕鷖鷗鷘鷙鷚鷛鷜鷝鷞鷟鷠鷡�鷢鷣鷤鷥鷦鷧鷨鷩鷪鷫鷬鷭鷮鷯鷰鷱鷲鷳鷴鷵鷶鷷鷸鷹鷺鷻鷼鷽鷾鷿鸀鸁鸂�\".split(\"\");\nfor(j = 0; j != D[250].length; ++j) if(D[250][j].charCodeAt(0) !== 0xFFFD) { e[D[250][j]] = 64000 + j; d[64000 + j] = D[250][j];}\nD[251] = \"����������������������������������������������������������������鸃鸄鸅鸆鸇鸈鸉鸊鸋鸌鸍鸎鸏鸐鸑鸒鸓鸔鸕鸖鸗鸘鸙鸚鸛鸜鸝鸞鸤鸧鸮鸰鸴鸻鸼鹀鹍鹐鹒鹓鹔鹖鹙鹝鹟鹠鹡鹢鹥鹮鹯鹲鹴鹵鹶鹷鹸鹹鹺鹻鹼鹽麀�麁麃麄麅麆麉麊麌麍麎麏麐麑麔麕麖麗麘麙麚麛麜麞麠麡麢麣麤麥麧麨麩麪�\".split(\"\");\nfor(j = 0; j != D[251].length; ++j) if(D[251][j].charCodeAt(0) !== 0xFFFD) { e[D[251][j]] = 64256 + j; d[64256 + j] = D[251][j];}\nD[252] = \"����������������������������������������������������������������麫麬麭麮麯麰麱麲麳麵麶麷麹麺麼麿黀黁黂黃黅黆黇黈黊黋黌黐黒黓黕黖黗黙黚點黡黣黤黦黨黫黬黭黮黰黱黲黳黴黵黶黷黸黺黽黿鼀鼁鼂鼃鼄鼅�鼆鼇鼈鼉鼊鼌鼏鼑鼒鼔鼕鼖鼘鼚鼛鼜鼝鼞鼟鼡鼣鼤鼥鼦鼧鼨鼩鼪鼫鼭鼮鼰鼱�\".split(\"\");\nfor(j = 0; j != D[252].length; ++j) if(D[252][j].charCodeAt(0) !== 0xFFFD) { e[D[252][j]] = 64512 + j; d[64512 + j] = D[252][j];}\nD[253] = \"����������������������������������������������������������������鼲鼳鼴鼵鼶鼸鼺鼼鼿齀齁齂齃齅齆齇齈齉齊齋齌齍齎齏齒齓齔齕齖齗齘齙齚齛齜齝齞齟齠齡齢齣齤齥齦齧齨齩齪齫齬齭齮齯齰齱齲齳齴齵齶齷齸�齹齺齻齼齽齾龁龂龍龎龏龐龑龒龓龔龕龖龗龘龜龝龞龡龢龣龤龥郎凉秊裏隣�\".split(\"\");\nfor(j = 0; j != D[253].length; ++j) if(D[253][j].charCodeAt(0) !== 0xFFFD) { e[D[253][j]] = 64768 + j; d[64768 + j] = D[253][j];}\nD[254] = \"����������������������������������������������������������������兀嗀﨎﨏﨑﨓﨔礼﨟蘒﨡﨣﨤﨧﨨﨩��\".split(\"\");\nfor(j = 0; j != D[254].length; ++j) if(D[254][j].charCodeAt(0) !== 0xFFFD) { e[D[254][j]] = 65024 + j; d[65024 + j] = D[254][j];}\nreturn {\"enc\": e, \"dec\": d }; })();\ncptable[51949] = (function(){ var d = [], e = {}, D = [], j;\nD[0] = \"\\u0000\\u0001\\u0002\\u0003\\u0004\\u0005\\u0006\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\u0014\\u0015\\u0016\\u0017\\u0018\\u0019\\u001a\\u001b\\u001c\\u001d\\u001e\\u001f !\\\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[0].length; ++j) if(D[0][j].charCodeAt(0) !== 0xFFFD) { e[D[0][j]] = 0 + j; d[0 + j] = D[0][j];}\nD[161] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������　、。·‥…¨〃­―∥＼∼‘’“”〔〕〈〉《》「」『』【】±×÷≠≤≥∞∴°′″℃Å￠￡￥♂♀∠⊥⌒∂∇≡≒§※☆★○●◎◇◆□■△▲▽▼→←↑↓↔〓≪≫√∽∝∵∫∬∈∋⊆⊇⊂⊃∪∩∧∨￢�\".split(\"\");\nfor(j = 0; j != D[161].length; ++j) if(D[161][j].charCodeAt(0) !== 0xFFFD) { e[D[161][j]] = 41216 + j; d[41216 + j] = D[161][j];}\nD[162] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������⇒⇔∀∃´～ˇ˘˝˚˙¸˛¡¿ː∮∑∏¤℉‰◁◀▷▶♤♠♡♥♧♣⊙◈▣◐◑▒▤▥▨▧▦▩♨☏☎☜☞¶†‡↕↗↙↖↘♭♩♪♬㉿㈜№㏇™㏂㏘℡€®������������������������\".split(\"\");\nfor(j = 0; j != D[162].length; ++j) if(D[162][j].charCodeAt(0) !== 0xFFFD) { e[D[162][j]] = 41472 + j; d[41472 + j] = D[162][j];}\nD[163] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������！＂＃＄％＆＇（）＊＋，－．／０１２３４５６７８９：；＜＝＞？＠ＡＢＣＤＥＦＧＨＩＪＫＬＭＮＯＰＱＲＳＴＵＶＷＸＹＺ［￦］＾＿｀ａｂｃｄｅｆｇｈｉｊｋｌｍｎｏｐｑｒｓｔｕｖｗｘｙｚ｛｜｝￣�\".split(\"\");\nfor(j = 0; j != D[163].length; ++j) if(D[163][j].charCodeAt(0) !== 0xFFFD) { e[D[163][j]] = 41728 + j; d[41728 + j] = D[163][j];}\nD[164] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������ㄱㄲㄳㄴㄵㄶㄷㄸㄹㄺㄻㄼㄽㄾㄿㅀㅁㅂㅃㅄㅅㅆㅇㅈㅉㅊㅋㅌㅍㅎㅏㅐㅑㅒㅓㅔㅕㅖㅗㅘㅙㅚㅛㅜㅝㅞㅟㅠㅡㅢㅣㅤㅥㅦㅧㅨㅩㅪㅫㅬㅭㅮㅯㅰㅱㅲㅳㅴㅵㅶㅷㅸㅹㅺㅻㅼㅽㅾㅿㆀㆁㆂㆃㆄㆅㆆㆇㆈㆉㆊㆋㆌㆍㆎ�\".split(\"\");\nfor(j = 0; j != D[164].length; ++j) if(D[164][j].charCodeAt(0) !== 0xFFFD) { e[D[164][j]] = 41984 + j; d[41984 + j] = D[164][j];}\nD[165] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������ⅰⅱⅲⅳⅴⅵⅶⅷⅸⅹ�����ⅠⅡⅢⅣⅤⅥⅦⅧⅨⅩ�������ΑΒΓΔΕΖΗΘΙΚΛΜΝΞΟΠΡΣΤΥΦΧΨΩ��������αβγδεζηθικλμνξοπρστυφχψω�������\".split(\"\");\nfor(j = 0; j != D[165].length; ++j) if(D[165][j].charCodeAt(0) !== 0xFFFD) { e[D[165][j]] = 42240 + j; d[42240 + j] = D[165][j];}\nD[166] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������─│┌┐┘└├┬┤┴┼━┃┏┓┛┗┣┳┫┻╋┠┯┨┷┿┝┰┥┸╂┒┑┚┙┖┕┎┍┞┟┡┢┦┧┩┪┭┮┱┲┵┶┹┺┽┾╀╁╃╄╅╆╇╈╉╊���������������������������\".split(\"\");\nfor(j = 0; j != D[166].length; ++j) if(D[166][j].charCodeAt(0) !== 0xFFFD) { e[D[166][j]] = 42496 + j; d[42496 + j] = D[166][j];}\nD[167] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������㎕㎖㎗ℓ㎘㏄㎣㎤㎥㎦㎙㎚㎛㎜㎝㎞㎟㎠㎡㎢㏊㎍㎎㎏㏏㎈㎉㏈㎧㎨㎰㎱㎲㎳㎴㎵㎶㎷㎸㎹㎀㎁㎂㎃㎄㎺㎻㎼㎽㎾㎿㎐㎑㎒㎓㎔Ω㏀㏁㎊㎋㎌㏖㏅㎭㎮㎯㏛㎩㎪㎫㎬㏝㏐㏓㏃㏉㏜㏆����������������\".split(\"\");\nfor(j = 0; j != D[167].length; ++j) if(D[167][j].charCodeAt(0) !== 0xFFFD) { e[D[167][j]] = 42752 + j; d[42752 + j] = D[167][j];}\nD[168] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������ÆÐªĦ�Ĳ�ĿŁØŒºÞŦŊ�㉠㉡㉢㉣㉤㉥㉦㉧㉨㉩㉪㉫㉬㉭㉮㉯㉰㉱㉲㉳㉴㉵㉶㉷㉸㉹㉺㉻ⓐⓑⓒⓓⓔⓕⓖⓗⓘⓙⓚⓛⓜⓝⓞⓟⓠⓡⓢⓣⓤⓥⓦⓧⓨⓩ①②③④⑤⑥⑦⑧⑨⑩⑪⑫⑬⑭⑮½⅓⅔¼¾⅛⅜⅝⅞�\".split(\"\");\nfor(j = 0; j != D[168].length; ++j) if(D[168][j].charCodeAt(0) !== 0xFFFD) { e[D[168][j]] = 43008 + j; d[43008 + j] = D[168][j];}\nD[169] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������æđðħıĳĸŀłøœßþŧŋŉ㈀㈁㈂㈃㈄㈅㈆㈇㈈㈉㈊㈋㈌㈍㈎㈏㈐㈑㈒㈓㈔㈕㈖㈗㈘㈙㈚㈛⒜⒝⒞⒟⒠⒡⒢⒣⒤⒥⒦⒧⒨⒩⒪⒫⒬⒭⒮⒯⒰⒱⒲⒳⒴⒵⑴⑵⑶⑷⑸⑹⑺⑻⑼⑽⑾⑿⒀⒁⒂¹²³⁴ⁿ₁₂₃₄�\".split(\"\");\nfor(j = 0; j != D[169].length; ++j) if(D[169][j].charCodeAt(0) !== 0xFFFD) { e[D[169][j]] = 43264 + j; d[43264 + j] = D[169][j];}\nD[170] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������ぁあぃいぅうぇえぉおかがきぎくぐけげこごさざしじすずせぜそぞただちぢっつづてでとどなにぬねのはばぱひびぴふぶぷへべぺほぼぽまみむめもゃやゅゆょよらりるれろゎわゐゑをん������������\".split(\"\");\nfor(j = 0; j != D[170].length; ++j) if(D[170][j].charCodeAt(0) !== 0xFFFD) { e[D[170][j]] = 43520 + j; d[43520 + j] = D[170][j];}\nD[171] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������ァアィイゥウェエォオカガキギクグケゲコゴサザシジスズセゼソゾタダチヂッツヅテデトドナニヌネノハバパヒビピフブプヘベペホボポマミムメモャヤュユョヨラリルレロヮワヰヱヲンヴヵヶ���������\".split(\"\");\nfor(j = 0; j != D[171].length; ++j) if(D[171][j].charCodeAt(0) !== 0xFFFD) { e[D[171][j]] = 43776 + j; d[43776 + j] = D[171][j];}\nD[172] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ���������������абвгдеёжзийклмнопрстуфхцчшщъыьэюя��������������\".split(\"\");\nfor(j = 0; j != D[172].length; ++j) if(D[172][j].charCodeAt(0) !== 0xFFFD) { e[D[172][j]] = 44032 + j; d[44032 + j] = D[172][j];}\nD[176] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������가각간갇갈갉갊감갑값갓갔강갖갗같갚갛개객갠갤갬갭갯갰갱갸갹갼걀걋걍걔걘걜거걱건걷걸걺검겁것겄겅겆겉겊겋게겐겔겜겝겟겠겡겨격겪견겯결겸겹겻겼경곁계곈곌곕곗고곡곤곧골곪곬곯곰곱곳공곶과곽관괄괆�\".split(\"\");\nfor(j = 0; j != D[176].length; ++j) if(D[176][j].charCodeAt(0) !== 0xFFFD) { e[D[176][j]] = 45056 + j; d[45056 + j] = D[176][j];}\nD[177] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������괌괍괏광괘괜괠괩괬괭괴괵괸괼굄굅굇굉교굔굘굡굣구국군굳굴굵굶굻굼굽굿궁궂궈궉권궐궜궝궤궷귀귁귄귈귐귑귓규균귤그극근귿글긁금급긋긍긔기긱긴긷길긺김깁깃깅깆깊까깍깎깐깔깖깜깝깟깠깡깥깨깩깬깰깸�\".split(\"\");\nfor(j = 0; j != D[177].length; ++j) if(D[177][j].charCodeAt(0) !== 0xFFFD) { e[D[177][j]] = 45312 + j; d[45312 + j] = D[177][j];}\nD[178] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������깹깻깼깽꺄꺅꺌꺼꺽꺾껀껄껌껍껏껐껑께껙껜껨껫껭껴껸껼꼇꼈꼍꼐꼬꼭꼰꼲꼴꼼꼽꼿꽁꽂꽃꽈꽉꽐꽜꽝꽤꽥꽹꾀꾄꾈꾐꾑꾕꾜꾸꾹꾼꿀꿇꿈꿉꿋꿍꿎꿔꿜꿨꿩꿰꿱꿴꿸뀀뀁뀄뀌뀐뀔뀜뀝뀨끄끅끈끊끌끎끓끔끕끗끙�\".split(\"\");\nfor(j = 0; j != D[178].length; ++j) if(D[178][j].charCodeAt(0) !== 0xFFFD) { e[D[178][j]] = 45568 + j; d[45568 + j] = D[178][j];}\nD[179] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������끝끼끽낀낄낌낍낏낑나낙낚난낟날낡낢남납낫났낭낮낯낱낳내낵낸낼냄냅냇냈냉냐냑냔냘냠냥너넉넋넌널넒넓넘넙넛넜넝넣네넥넨넬넴넵넷넸넹녀녁년녈념녑녔녕녘녜녠노녹논놀놂놈놉놋농높놓놔놘놜놨뇌뇐뇔뇜뇝�\".split(\"\");\nfor(j = 0; j != D[179].length; ++j) if(D[179][j].charCodeAt(0) !== 0xFFFD) { e[D[179][j]] = 45824 + j; d[45824 + j] = D[179][j];}\nD[180] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������뇟뇨뇩뇬뇰뇹뇻뇽누눅눈눋눌눔눕눗눙눠눴눼뉘뉜뉠뉨뉩뉴뉵뉼늄늅늉느늑는늘늙늚늠늡늣능늦늪늬늰늴니닉닌닐닖님닙닛닝닢다닥닦단닫달닭닮닯닳담답닷닸당닺닻닿대댁댄댈댐댑댓댔댕댜더덕덖던덛덜덞덟덤덥�\".split(\"\");\nfor(j = 0; j != D[180].length; ++j) if(D[180][j].charCodeAt(0) !== 0xFFFD) { e[D[180][j]] = 46080 + j; d[46080 + j] = D[180][j];}\nD[181] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������덧덩덫덮데덱덴델뎀뎁뎃뎄뎅뎌뎐뎔뎠뎡뎨뎬도독돈돋돌돎돐돔돕돗동돛돝돠돤돨돼됐되된될됨됩됫됴두둑둔둘둠둡둣둥둬뒀뒈뒝뒤뒨뒬뒵뒷뒹듀듄듈듐듕드득든듣들듦듬듭듯등듸디딕딘딛딜딤딥딧딨딩딪따딱딴딸�\".split(\"\");\nfor(j = 0; j != D[181].length; ++j) if(D[181][j].charCodeAt(0) !== 0xFFFD) { e[D[181][j]] = 46336 + j; d[46336 + j] = D[181][j];}\nD[182] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������땀땁땃땄땅땋때땍땐땔땜땝땟땠땡떠떡떤떨떪떫떰떱떳떴떵떻떼떽뗀뗄뗌뗍뗏뗐뗑뗘뗬또똑똔똘똥똬똴뙈뙤뙨뚜뚝뚠뚤뚫뚬뚱뛔뛰뛴뛸뜀뜁뜅뜨뜩뜬뜯뜰뜸뜹뜻띄띈띌띔띕띠띤띨띰띱띳띵라락란랄람랍랏랐랑랒랖랗�\".split(\"\");\nfor(j = 0; j != D[182].length; ++j) if(D[182][j].charCodeAt(0) !== 0xFFFD) { e[D[182][j]] = 46592 + j; d[46592 + j] = D[182][j];}\nD[183] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������래랙랜랠램랩랫랬랭랴략랸럇량러럭런럴럼럽럿렀렁렇레렉렌렐렘렙렛렝려력련렬렴렵렷렸령례롄롑롓로록론롤롬롭롯롱롸롼뢍뢨뢰뢴뢸룀룁룃룅료룐룔룝룟룡루룩룬룰룸룹룻룽뤄뤘뤠뤼뤽륀륄륌륏륑류륙륜률륨륩�\".split(\"\");\nfor(j = 0; j != D[183].length; ++j) if(D[183][j].charCodeAt(0) !== 0xFFFD) { e[D[183][j]] = 46848 + j; d[46848 + j] = D[183][j];}\nD[184] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������륫륭르륵른를름릅릇릉릊릍릎리릭린릴림립릿링마막만많맏말맑맒맘맙맛망맞맡맣매맥맨맬맴맵맷맸맹맺먀먁먈먕머먹먼멀멂멈멉멋멍멎멓메멕멘멜멤멥멧멨멩며멱면멸몃몄명몇몌모목몫몬몰몲몸몹못몽뫄뫈뫘뫙뫼�\".split(\"\");\nfor(j = 0; j != D[184].length; ++j) if(D[184][j].charCodeAt(0) !== 0xFFFD) { e[D[184][j]] = 47104 + j; d[47104 + j] = D[184][j];}\nD[185] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������묀묄묍묏묑묘묜묠묩묫무묵묶문묻물묽묾뭄뭅뭇뭉뭍뭏뭐뭔뭘뭡뭣뭬뮈뮌뮐뮤뮨뮬뮴뮷므믄믈믐믓미믹민믿밀밂밈밉밋밌밍및밑바박밖밗반받발밝밞밟밤밥밧방밭배백밴밸뱀뱁뱃뱄뱅뱉뱌뱍뱐뱝버벅번벋벌벎범법벗�\".split(\"\");\nfor(j = 0; j != D[185].length; ++j) if(D[185][j].charCodeAt(0) !== 0xFFFD) { e[D[185][j]] = 47360 + j; d[47360 + j] = D[185][j];}\nD[186] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������벙벚베벡벤벧벨벰벱벳벴벵벼벽변별볍볏볐병볕볘볜보복볶본볼봄봅봇봉봐봔봤봬뵀뵈뵉뵌뵐뵘뵙뵤뵨부북분붇불붉붊붐붑붓붕붙붚붜붤붰붸뷔뷕뷘뷜뷩뷰뷴뷸븀븃븅브븍븐블븜븝븟비빅빈빌빎빔빕빗빙빚빛빠빡빤�\".split(\"\");\nfor(j = 0; j != D[186].length; ++j) if(D[186][j].charCodeAt(0) !== 0xFFFD) { e[D[186][j]] = 47616 + j; d[47616 + j] = D[186][j];}\nD[187] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������빨빪빰빱빳빴빵빻빼빽뺀뺄뺌뺍뺏뺐뺑뺘뺙뺨뻐뻑뻔뻗뻘뻠뻣뻤뻥뻬뼁뼈뼉뼘뼙뼛뼜뼝뽀뽁뽄뽈뽐뽑뽕뾔뾰뿅뿌뿍뿐뿔뿜뿟뿡쀼쁑쁘쁜쁠쁨쁩삐삑삔삘삠삡삣삥사삭삯산삳살삵삶삼삽삿샀상샅새색샌샐샘샙샛샜생샤�\".split(\"\");\nfor(j = 0; j != D[187].length; ++j) if(D[187][j].charCodeAt(0) !== 0xFFFD) { e[D[187][j]] = 47872 + j; d[47872 + j] = D[187][j];}\nD[188] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������샥샨샬샴샵샷샹섀섄섈섐섕서석섞섟선섣설섦섧섬섭섯섰성섶세섹센셀셈셉셋셌셍셔셕션셜셤셥셧셨셩셰셴셸솅소속솎손솔솖솜솝솟송솥솨솩솬솰솽쇄쇈쇌쇔쇗쇘쇠쇤쇨쇰쇱쇳쇼쇽숀숄숌숍숏숑수숙순숟술숨숩숫숭�\".split(\"\");\nfor(j = 0; j != D[188].length; ++j) if(D[188][j].charCodeAt(0) !== 0xFFFD) { e[D[188][j]] = 48128 + j; d[48128 + j] = D[188][j];}\nD[189] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������숯숱숲숴쉈쉐쉑쉔쉘쉠쉥쉬쉭쉰쉴쉼쉽쉿슁슈슉슐슘슛슝스슥슨슬슭슴습슷승시식신싣실싫심십싯싱싶싸싹싻싼쌀쌈쌉쌌쌍쌓쌔쌕쌘쌜쌤쌥쌨쌩썅써썩썬썰썲썸썹썼썽쎄쎈쎌쏀쏘쏙쏜쏟쏠쏢쏨쏩쏭쏴쏵쏸쐈쐐쐤쐬쐰�\".split(\"\");\nfor(j = 0; j != D[189].length; ++j) if(D[189][j].charCodeAt(0) !== 0xFFFD) { e[D[189][j]] = 48384 + j; d[48384 + j] = D[189][j];}\nD[190] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������쐴쐼쐽쑈쑤쑥쑨쑬쑴쑵쑹쒀쒔쒜쒸쒼쓩쓰쓱쓴쓸쓺쓿씀씁씌씐씔씜씨씩씬씰씸씹씻씽아악안앉않알앍앎앓암압앗았앙앝앞애액앤앨앰앱앳앴앵야약얀얄얇얌얍얏양얕얗얘얜얠얩어억언얹얻얼얽얾엄업없엇었엉엊엌엎�\".split(\"\");\nfor(j = 0; j != D[190].length; ++j) if(D[190][j].charCodeAt(0) !== 0xFFFD) { e[D[190][j]] = 48640 + j; d[48640 + j] = D[190][j];}\nD[191] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������에엑엔엘엠엡엣엥여역엮연열엶엷염엽엾엿였영옅옆옇예옌옐옘옙옛옜오옥온올옭옮옰옳옴옵옷옹옻와왁완왈왐왑왓왔왕왜왝왠왬왯왱외왹왼욀욈욉욋욍요욕욘욜욤욥욧용우욱운울욹욺움웁웃웅워웍원월웜웝웠웡웨�\".split(\"\");\nfor(j = 0; j != D[191].length; ++j) if(D[191][j].charCodeAt(0) !== 0xFFFD) { e[D[191][j]] = 48896 + j; d[48896 + j] = D[191][j];}\nD[192] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������웩웬웰웸웹웽위윅윈윌윔윕윗윙유육윤율윰윱윳융윷으윽은을읊음읍읏응읒읓읔읕읖읗의읜읠읨읫이익인일읽읾잃임입잇있잉잊잎자작잔잖잗잘잚잠잡잣잤장잦재잭잰잴잼잽잿쟀쟁쟈쟉쟌쟎쟐쟘쟝쟤쟨쟬저적전절젊�\".split(\"\");\nfor(j = 0; j != D[192].length; ++j) if(D[192][j].charCodeAt(0) !== 0xFFFD) { e[D[192][j]] = 49152 + j; d[49152 + j] = D[192][j];}\nD[193] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������점접젓정젖제젝젠젤젬젭젯젱져젼졀졈졉졌졍졔조족존졸졺좀좁좃종좆좇좋좌좍좔좝좟좡좨좼좽죄죈죌죔죕죗죙죠죡죤죵주죽준줄줅줆줌줍줏중줘줬줴쥐쥑쥔쥘쥠쥡쥣쥬쥰쥴쥼즈즉즌즐즘즙즛증지직진짇질짊짐집짓�\".split(\"\");\nfor(j = 0; j != D[193].length; ++j) if(D[193][j].charCodeAt(0) !== 0xFFFD) { e[D[193][j]] = 49408 + j; d[49408 + j] = D[193][j];}\nD[194] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������징짖짙짚짜짝짠짢짤짧짬짭짯짰짱째짹짼쨀쨈쨉쨋쨌쨍쨔쨘쨩쩌쩍쩐쩔쩜쩝쩟쩠쩡쩨쩽쪄쪘쪼쪽쫀쫄쫌쫍쫏쫑쫓쫘쫙쫠쫬쫴쬈쬐쬔쬘쬠쬡쭁쭈쭉쭌쭐쭘쭙쭝쭤쭸쭹쮜쮸쯔쯤쯧쯩찌찍찐찔찜찝찡찢찧차착찬찮찰참찹찻�\".split(\"\");\nfor(j = 0; j != D[194].length; ++j) if(D[194][j].charCodeAt(0) !== 0xFFFD) { e[D[194][j]] = 49664 + j; d[49664 + j] = D[194][j];}\nD[195] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������찼창찾채책챈챌챔챕챗챘챙챠챤챦챨챰챵처척천철첨첩첫첬청체첵첸첼쳄쳅쳇쳉쳐쳔쳤쳬쳰촁초촉촌촐촘촙촛총촤촨촬촹최쵠쵤쵬쵭쵯쵱쵸춈추축춘출춤춥춧충춰췄췌췐취췬췰췸췹췻췽츄츈츌츔츙츠측츤츨츰츱츳층�\".split(\"\");\nfor(j = 0; j != D[195].length; ++j) if(D[195][j].charCodeAt(0) !== 0xFFFD) { e[D[195][j]] = 49920 + j; d[49920 + j] = D[195][j];}\nD[196] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������치칙친칟칠칡침칩칫칭카칵칸칼캄캅캇캉캐캑캔캘캠캡캣캤캥캬캭컁커컥컨컫컬컴컵컷컸컹케켁켄켈켐켑켓켕켜켠켤켬켭켯켰켱켸코콕콘콜콤콥콧콩콰콱콴콸쾀쾅쾌쾡쾨쾰쿄쿠쿡쿤쿨쿰쿱쿳쿵쿼퀀퀄퀑퀘퀭퀴퀵퀸퀼�\".split(\"\");\nfor(j = 0; j != D[196].length; ++j) if(D[196][j].charCodeAt(0) !== 0xFFFD) { e[D[196][j]] = 50176 + j; d[50176 + j] = D[196][j];}\nD[197] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������큄큅큇큉큐큔큘큠크큭큰클큼큽킁키킥킨킬킴킵킷킹타탁탄탈탉탐탑탓탔탕태택탠탤탬탭탯탰탱탸턍터턱턴털턺텀텁텃텄텅테텍텐텔템텝텟텡텨텬텼톄톈토톡톤톨톰톱톳통톺톼퇀퇘퇴퇸툇툉툐투툭툰툴툼툽툿퉁퉈퉜�\".split(\"\");\nfor(j = 0; j != D[197].length; ++j) if(D[197][j].charCodeAt(0) !== 0xFFFD) { e[D[197][j]] = 50432 + j; d[50432 + j] = D[197][j];}\nD[198] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������퉤튀튁튄튈튐튑튕튜튠튤튬튱트특튼튿틀틂틈틉틋틔틘틜틤틥티틱틴틸팀팁팃팅파팍팎판팔팖팜팝팟팠팡팥패팩팬팰팸팹팻팼팽퍄퍅퍼퍽펀펄펌펍펏펐펑페펙펜펠펨펩펫펭펴편펼폄폅폈평폐폘폡폣포폭폰폴폼폽폿퐁�\".split(\"\");\nfor(j = 0; j != D[198].length; ++j) if(D[198][j].charCodeAt(0) !== 0xFFFD) { e[D[198][j]] = 50688 + j; d[50688 + j] = D[198][j];}\nD[199] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������퐈퐝푀푄표푠푤푭푯푸푹푼푿풀풂품풉풋풍풔풩퓌퓐퓔퓜퓟퓨퓬퓰퓸퓻퓽프픈플픔픕픗피픽핀필핌핍핏핑하학한할핥함합핫항해핵핸핼햄햅햇했행햐향허헉헌헐헒험헙헛헝헤헥헨헬헴헵헷헹혀혁현혈혐협혓혔형혜혠�\".split(\"\");\nfor(j = 0; j != D[199].length; ++j) if(D[199][j].charCodeAt(0) !== 0xFFFD) { e[D[199][j]] = 50944 + j; d[50944 + j] = D[199][j];}\nD[200] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������혤혭호혹혼홀홅홈홉홋홍홑화확환활홧황홰홱홴횃횅회획횐횔횝횟횡효횬횰횹횻후훅훈훌훑훔훗훙훠훤훨훰훵훼훽휀휄휑휘휙휜휠휨휩휫휭휴휵휸휼흄흇흉흐흑흔흖흗흘흙흠흡흣흥흩희흰흴흼흽힁히힉힌힐힘힙힛힝�\".split(\"\");\nfor(j = 0; j != D[200].length; ++j) if(D[200][j].charCodeAt(0) !== 0xFFFD) { e[D[200][j]] = 51200 + j; d[51200 + j] = D[200][j];}\nD[202] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������伽佳假價加可呵哥嘉嫁家暇架枷柯歌珂痂稼苛茄街袈訶賈跏軻迦駕刻却各恪慤殼珏脚覺角閣侃刊墾奸姦干幹懇揀杆柬桿澗癎看磵稈竿簡肝艮艱諫間乫喝曷渴碣竭葛褐蝎鞨勘坎堪嵌感憾戡敢柑橄減甘疳監瞰紺邯鑑鑒龕�\".split(\"\");\nfor(j = 0; j != D[202].length; ++j) if(D[202][j].charCodeAt(0) !== 0xFFFD) { e[D[202][j]] = 51712 + j; d[51712 + j] = D[202][j];}\nD[203] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������匣岬甲胛鉀閘剛堈姜岡崗康强彊慷江畺疆糠絳綱羌腔舡薑襁講鋼降鱇介价個凱塏愷愾慨改槪漑疥皆盖箇芥蓋豈鎧開喀客坑更粳羹醵倨去居巨拒据據擧渠炬祛距踞車遽鉅鋸乾件健巾建愆楗腱虔蹇鍵騫乞傑杰桀儉劍劒檢�\".split(\"\");\nfor(j = 0; j != D[203].length; ++j) if(D[203][j].charCodeAt(0) !== 0xFFFD) { e[D[203][j]] = 51968 + j; d[51968 + j] = D[203][j];}\nD[204] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������瞼鈐黔劫怯迲偈憩揭擊格檄激膈覡隔堅牽犬甄絹繭肩見譴遣鵑抉決潔結缺訣兼慊箝謙鉗鎌京俓倞傾儆勁勍卿坰境庚徑慶憬擎敬景暻更梗涇炅烱璟璥瓊痙硬磬竟競絅經耕耿脛莖警輕逕鏡頃頸驚鯨係啓堺契季屆悸戒桂械�\".split(\"\");\nfor(j = 0; j != D[204].length; ++j) if(D[204][j].charCodeAt(0) !== 0xFFFD) { e[D[204][j]] = 52224 + j; d[52224 + j] = D[204][j];}\nD[205] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������棨溪界癸磎稽系繫繼計誡谿階鷄古叩告呱固姑孤尻庫拷攷故敲暠枯槁沽痼皐睾稿羔考股膏苦苽菰藁蠱袴誥賈辜錮雇顧高鼓哭斛曲梏穀谷鵠困坤崑昆梱棍滾琨袞鯤汨滑骨供公共功孔工恐恭拱控攻珙空蚣貢鞏串寡戈果瓜�\".split(\"\");\nfor(j = 0; j != D[205].length; ++j) if(D[205][j].charCodeAt(0) !== 0xFFFD) { e[D[205][j]] = 52480 + j; d[52480 + j] = D[205][j];}\nD[206] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������科菓誇課跨過鍋顆廓槨藿郭串冠官寬慣棺款灌琯瓘管罐菅觀貫關館刮恝括适侊光匡壙廣曠洸炚狂珖筐胱鑛卦掛罫乖傀塊壞怪愧拐槐魁宏紘肱轟交僑咬喬嬌嶠巧攪敎校橋狡皎矯絞翹膠蕎蛟較轎郊餃驕鮫丘久九仇俱具勾�\".split(\"\");\nfor(j = 0; j != D[206].length; ++j) if(D[206][j].charCodeAt(0) !== 0xFFFD) { e[D[206][j]] = 52736 + j; d[52736 + j] = D[206][j];}\nD[207] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������區口句咎嘔坵垢寇嶇廐懼拘救枸柩構歐毆毬求溝灸狗玖球瞿矩究絿耉臼舅舊苟衢謳購軀逑邱鉤銶駒驅鳩鷗龜國局菊鞠鞫麴君窘群裙軍郡堀屈掘窟宮弓穹窮芎躬倦券勸卷圈拳捲權淃眷厥獗蕨蹶闕机櫃潰詭軌饋句晷歸貴�\".split(\"\");\nfor(j = 0; j != D[207].length; ++j) if(D[207][j].charCodeAt(0) !== 0xFFFD) { e[D[207][j]] = 52992 + j; d[52992 + j] = D[207][j];}\nD[208] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������鬼龜叫圭奎揆槻珪硅窺竅糾葵規赳逵閨勻均畇筠菌鈞龜橘克剋劇戟棘極隙僅劤勤懃斤根槿瑾筋芹菫覲謹近饉契今妗擒昑檎琴禁禽芩衾衿襟金錦伋及急扱汲級給亘兢矜肯企伎其冀嗜器圻基埼夔奇妓寄岐崎己幾忌技旗旣�\".split(\"\");\nfor(j = 0; j != D[208].length; ++j) if(D[208][j].charCodeAt(0) !== 0xFFFD) { e[D[208][j]] = 53248 + j; d[53248 + j] = D[208][j];}\nD[209] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������朞期杞棋棄機欺氣汽沂淇玘琦琪璂璣畸畿碁磯祁祇祈祺箕紀綺羈耆耭肌記譏豈起錡錤飢饑騎騏驥麒緊佶吉拮桔金喫儺喇奈娜懦懶拏拿癩羅蘿螺裸邏那樂洛烙珞落諾酪駱亂卵暖欄煖爛蘭難鸞捏捺南嵐枏楠湳濫男藍襤拉�\".split(\"\");\nfor(j = 0; j != D[209].length; ++j) if(D[209][j].charCodeAt(0) !== 0xFFFD) { e[D[209][j]] = 53504 + j; d[53504 + j] = D[209][j];}\nD[210] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������納臘蠟衲囊娘廊朗浪狼郎乃來內奈柰耐冷女年撚秊念恬拈捻寧寗努勞奴弩怒擄櫓爐瑙盧老蘆虜路露駑魯鷺碌祿綠菉錄鹿論壟弄濃籠聾膿農惱牢磊腦賂雷尿壘屢樓淚漏累縷陋嫩訥杻紐勒肋凜凌稜綾能菱陵尼泥匿溺多茶�\".split(\"\");\nfor(j = 0; j != D[210].length; ++j) if(D[210][j].charCodeAt(0) !== 0xFFFD) { e[D[210][j]] = 53760 + j; d[53760 + j] = D[210][j];}\nD[211] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������丹亶但單團壇彖斷旦檀段湍短端簞緞蛋袒鄲鍛撻澾獺疸達啖坍憺擔曇淡湛潭澹痰聃膽蕁覃談譚錟沓畓答踏遝唐堂塘幢戇撞棠當糖螳黨代垈坮大對岱帶待戴擡玳臺袋貸隊黛宅德悳倒刀到圖堵塗導屠島嶋度徒悼挑掉搗桃�\".split(\"\");\nfor(j = 0; j != D[211].length; ++j) if(D[211][j].charCodeAt(0) !== 0xFFFD) { e[D[211][j]] = 54016 + j; d[54016 + j] = D[211][j];}\nD[212] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������棹櫂淘渡滔濤燾盜睹禱稻萄覩賭跳蹈逃途道都鍍陶韜毒瀆牘犢獨督禿篤纛讀墩惇敦旽暾沌焞燉豚頓乭突仝冬凍動同憧東桐棟洞潼疼瞳童胴董銅兜斗杜枓痘竇荳讀豆逗頭屯臀芚遁遯鈍得嶝橙燈登等藤謄鄧騰喇懶拏癩羅�\".split(\"\");\nfor(j = 0; j != D[212].length; ++j) if(D[212][j].charCodeAt(0) !== 0xFFFD) { e[D[212][j]] = 54272 + j; d[54272 + j] = D[212][j];}\nD[213] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������蘿螺裸邏樂洛烙珞絡落諾酪駱丹亂卵欄欒瀾爛蘭鸞剌辣嵐擥攬欖濫籃纜藍襤覽拉臘蠟廊朗浪狼琅瑯螂郞來崍徠萊冷掠略亮倆兩凉梁樑粮粱糧良諒輛量侶儷勵呂廬慮戾旅櫚濾礪藜蠣閭驢驪麗黎力曆歷瀝礫轢靂憐戀攣漣�\".split(\"\");\nfor(j = 0; j != D[213].length; ++j) if(D[213][j].charCodeAt(0) !== 0xFFFD) { e[D[213][j]] = 54528 + j; d[54528 + j] = D[213][j];}\nD[214] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������煉璉練聯蓮輦連鍊冽列劣洌烈裂廉斂殮濂簾獵令伶囹寧岺嶺怜玲笭羚翎聆逞鈴零靈領齡例澧禮醴隷勞怒撈擄櫓潞瀘爐盧老蘆虜路輅露魯鷺鹵碌祿綠菉錄鹿麓論壟弄朧瀧瓏籠聾儡瀨牢磊賂賚賴雷了僚寮廖料燎療瞭聊蓼�\".split(\"\");\nfor(j = 0; j != D[214].length; ++j) if(D[214][j].charCodeAt(0) !== 0xFFFD) { e[D[214][j]] = 54784 + j; d[54784 + j] = D[214][j];}\nD[215] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������遼鬧龍壘婁屢樓淚漏瘻累縷蔞褸鏤陋劉旒柳榴流溜瀏琉瑠留瘤硫謬類六戮陸侖倫崙淪綸輪律慄栗率隆勒肋凜凌楞稜綾菱陵俚利厘吏唎履悧李梨浬犁狸理璃異痢籬罹羸莉裏裡里釐離鯉吝潾燐璘藺躪隣鱗麟林淋琳臨霖砬�\".split(\"\");\nfor(j = 0; j != D[215].length; ++j) if(D[215][j].charCodeAt(0) !== 0xFFFD) { e[D[215][j]] = 55040 + j; d[55040 + j] = D[215][j];}\nD[216] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������立笠粒摩瑪痲碼磨馬魔麻寞幕漠膜莫邈万卍娩巒彎慢挽晩曼滿漫灣瞞萬蔓蠻輓饅鰻唜抹末沫茉襪靺亡妄忘忙望網罔芒茫莽輞邙埋妹媒寐昧枚梅每煤罵買賣邁魅脈貊陌驀麥孟氓猛盲盟萌冪覓免冕勉棉沔眄眠綿緬面麵滅�\".split(\"\");\nfor(j = 0; j != D[216].length; ++j) if(D[216][j].charCodeAt(0) !== 0xFFFD) { e[D[216][j]] = 55296 + j; d[55296 + j] = D[216][j];}\nD[217] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������蔑冥名命明暝椧溟皿瞑茗蓂螟酩銘鳴袂侮冒募姆帽慕摸摹暮某模母毛牟牡瑁眸矛耗芼茅謀謨貌木沐牧目睦穆鶩歿沒夢朦蒙卯墓妙廟描昴杳渺猫竗苗錨務巫憮懋戊拇撫无楙武毋無珷畝繆舞茂蕪誣貿霧鵡墨默們刎吻問文�\".split(\"\");\nfor(j = 0; j != D[217].length; ++j) if(D[217][j].charCodeAt(0) !== 0xFFFD) { e[D[217][j]] = 55552 + j; d[55552 + j] = D[217][j];}\nD[218] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������汶紊紋聞蚊門雯勿沕物味媚尾嵋彌微未梶楣渼湄眉米美薇謎迷靡黴岷悶愍憫敏旻旼民泯玟珉緡閔密蜜謐剝博拍搏撲朴樸泊珀璞箔粕縛膊舶薄迫雹駁伴半反叛拌搬攀斑槃泮潘班畔瘢盤盼磐磻礬絆般蟠返頒飯勃拔撥渤潑�\".split(\"\");\nfor(j = 0; j != D[218].length; ++j) if(D[218][j].charCodeAt(0) !== 0xFFFD) { e[D[218][j]] = 55808 + j; d[55808 + j] = D[218][j];}\nD[219] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������發跋醱鉢髮魃倣傍坊妨尨幇彷房放方旁昉枋榜滂磅紡肪膀舫芳蒡蚌訪謗邦防龐倍俳北培徘拜排杯湃焙盃背胚裴裵褙賠輩配陪伯佰帛柏栢白百魄幡樊煩燔番磻繁蕃藩飜伐筏罰閥凡帆梵氾汎泛犯範范法琺僻劈壁擘檗璧癖�\".split(\"\");\nfor(j = 0; j != D[219].length; ++j) if(D[219][j].charCodeAt(0) !== 0xFFFD) { e[D[219][j]] = 56064 + j; d[56064 + j] = D[219][j];}\nD[220] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������碧蘗闢霹便卞弁變辨辯邊別瞥鱉鼈丙倂兵屛幷昞昺柄棅炳甁病秉竝輧餠騈保堡報寶普步洑湺潽珤甫菩補褓譜輔伏僕匐卜宓復服福腹茯蔔複覆輹輻馥鰒本乶俸奉封峯峰捧棒烽熢琫縫蓬蜂逢鋒鳳不付俯傅剖副否咐埠夫婦�\".split(\"\");\nfor(j = 0; j != D[220].length; ++j) if(D[220][j].charCodeAt(0) !== 0xFFFD) { e[D[220][j]] = 56320 + j; d[56320 + j] = D[220][j];}\nD[221] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������孚孵富府復扶敷斧浮溥父符簿缶腐腑膚艀芙莩訃負賦賻赴趺部釜阜附駙鳧北分吩噴墳奔奮忿憤扮昐汾焚盆粉糞紛芬賁雰不佛弗彿拂崩朋棚硼繃鵬丕備匕匪卑妃婢庇悲憊扉批斐枇榧比毖毗毘沸泌琵痺砒碑秕秘粃緋翡肥�\".split(\"\");\nfor(j = 0; j != D[221].length; ++j) if(D[221][j].charCodeAt(0) !== 0xFFFD) { e[D[221][j]] = 56576 + j; d[56576 + j] = D[221][j];}\nD[222] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������脾臂菲蜚裨誹譬費鄙非飛鼻嚬嬪彬斌檳殯浜濱瀕牝玭貧賓頻憑氷聘騁乍事些仕伺似使俟僿史司唆嗣四士奢娑寫寺射巳師徙思捨斜斯柶査梭死沙泗渣瀉獅砂社祀祠私篩紗絲肆舍莎蓑蛇裟詐詞謝賜赦辭邪飼駟麝削數朔索�\".split(\"\");\nfor(j = 0; j != D[222].length; ++j) if(D[222][j].charCodeAt(0) !== 0xFFFD) { e[D[222][j]] = 56832 + j; d[56832 + j] = D[222][j];}\nD[223] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������傘刪山散汕珊産疝算蒜酸霰乷撒殺煞薩三參杉森渗芟蔘衫揷澁鈒颯上傷像償商喪嘗孀尙峠常床庠廂想桑橡湘爽牀狀相祥箱翔裳觴詳象賞霜塞璽賽嗇塞穡索色牲生甥省笙墅壻嶼序庶徐恕抒捿敍暑曙書栖棲犀瑞筮絮緖署�\".split(\"\");\nfor(j = 0; j != D[223].length; ++j) if(D[223][j].charCodeAt(0) !== 0xFFFD) { e[D[223][j]] = 57088 + j; d[57088 + j] = D[223][j];}\nD[224] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������胥舒薯西誓逝鋤黍鼠夕奭席惜昔晳析汐淅潟石碩蓆釋錫仙僊先善嬋宣扇敾旋渲煽琁瑄璇璿癬禪線繕羨腺膳船蘚蟬詵跣選銑鐥饍鮮卨屑楔泄洩渫舌薛褻設說雪齧剡暹殲纖蟾贍閃陝攝涉燮葉城姓宬性惺成星晟猩珹盛省筬�\".split(\"\");\nfor(j = 0; j != D[224].length; ++j) if(D[224][j].charCodeAt(0) !== 0xFFFD) { e[D[224][j]] = 57344 + j; d[57344 + j] = D[224][j];}\nD[225] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������聖聲腥誠醒世勢歲洗稅笹細說貰召嘯塑宵小少巢所掃搔昭梳沼消溯瀟炤燒甦疏疎瘙笑篠簫素紹蔬蕭蘇訴逍遡邵銷韶騷俗屬束涑粟續謖贖速孫巽損蓀遜飡率宋悚松淞訟誦送頌刷殺灑碎鎖衰釗修受嗽囚垂壽嫂守岫峀帥愁�\".split(\"\");\nfor(j = 0; j != D[225].length; ++j) if(D[225][j].charCodeAt(0) !== 0xFFFD) { e[D[225][j]] = 57600 + j; d[57600 + j] = D[225][j];}\nD[226] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������戍手授搜收數樹殊水洙漱燧狩獸琇璲瘦睡秀穗竪粹綏綬繡羞脩茱蒐蓚藪袖誰讐輸遂邃酬銖銹隋隧隨雖需須首髓鬚叔塾夙孰宿淑潚熟琡璹肅菽巡徇循恂旬栒楯橓殉洵淳珣盾瞬筍純脣舜荀蓴蕣詢諄醇錞順馴戌術述鉥崇崧�\".split(\"\");\nfor(j = 0; j != D[226].length; ++j) if(D[226][j].charCodeAt(0) !== 0xFFFD) { e[D[226][j]] = 57856 + j; d[57856 + j] = D[226][j];}\nD[227] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������嵩瑟膝蝨濕拾習褶襲丞乘僧勝升承昇繩蠅陞侍匙嘶始媤尸屎屍市弑恃施是時枾柴猜矢示翅蒔蓍視試詩諡豕豺埴寔式息拭植殖湜熄篒蝕識軾食飾伸侁信呻娠宸愼新晨燼申神紳腎臣莘薪藎蜃訊身辛辰迅失室實悉審尋心沁�\".split(\"\");\nfor(j = 0; j != D[227].length; ++j) if(D[227][j].charCodeAt(0) !== 0xFFFD) { e[D[227][j]] = 58112 + j; d[58112 + j] = D[227][j];}\nD[228] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������沈深瀋甚芯諶什十拾雙氏亞俄兒啞娥峨我牙芽莪蛾衙訝阿雅餓鴉鵝堊岳嶽幄惡愕握樂渥鄂鍔顎鰐齷安岸按晏案眼雁鞍顔鮟斡謁軋閼唵岩巖庵暗癌菴闇壓押狎鴨仰央怏昻殃秧鴦厓哀埃崖愛曖涯碍艾隘靄厄扼掖液縊腋額�\".split(\"\");\nfor(j = 0; j != D[228].length; ++j) if(D[228][j].charCodeAt(0) !== 0xFFFD) { e[D[228][j]] = 58368 + j; d[58368 + j] = D[228][j];}\nD[229] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������櫻罌鶯鸚也倻冶夜惹揶椰爺耶若野弱掠略約若葯蒻藥躍亮佯兩凉壤孃恙揚攘敭暘梁楊樣洋瀁煬痒瘍禳穰糧羊良襄諒讓釀陽量養圄御於漁瘀禦語馭魚齬億憶抑檍臆偃堰彦焉言諺孼蘖俺儼嚴奄掩淹嶪業円予余勵呂女如廬�\".split(\"\");\nfor(j = 0; j != D[229].length; ++j) if(D[229][j].charCodeAt(0) !== 0xFFFD) { e[D[229][j]] = 58624 + j; d[58624 + j] = D[229][j];}\nD[230] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������旅歟汝濾璵礖礪與艅茹輿轝閭餘驪麗黎亦力域役易曆歷疫繹譯轢逆驛嚥堧姸娟宴年延憐戀捐挻撚椽沇沿涎涓淵演漣烟然煙煉燃燕璉硏硯秊筵緣練縯聯衍軟輦蓮連鉛鍊鳶列劣咽悅涅烈熱裂說閱厭廉念捻染殮炎焰琰艶苒�\".split(\"\");\nfor(j = 0; j != D[230].length; ++j) if(D[230][j].charCodeAt(0) !== 0xFFFD) { e[D[230][j]] = 58880 + j; d[58880 + j] = D[230][j];}\nD[231] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������簾閻髥鹽曄獵燁葉令囹塋寧嶺嶸影怜映暎楹榮永泳渶潁濚瀛瀯煐營獰玲瑛瑩瓔盈穎纓羚聆英詠迎鈴鍈零霙靈領乂倪例刈叡曳汭濊猊睿穢芮藝蘂禮裔詣譽豫醴銳隸霓預五伍俉傲午吾吳嗚塢墺奧娛寤悟惡懊敖旿晤梧汚澳�\".split(\"\");\nfor(j = 0; j != D[231].length; ++j) if(D[231][j].charCodeAt(0) !== 0xFFFD) { e[D[231][j]] = 59136 + j; d[59136 + j] = D[231][j];}\nD[232] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������烏熬獒筽蜈誤鰲鼇屋沃獄玉鈺溫瑥瘟穩縕蘊兀壅擁瓮甕癰翁邕雍饔渦瓦窩窪臥蛙蝸訛婉完宛梡椀浣玩琓琬碗緩翫脘腕莞豌阮頑曰往旺枉汪王倭娃歪矮外嵬巍猥畏了僚僥凹堯夭妖姚寥寮尿嶢拗搖撓擾料曜樂橈燎燿瑤療�\".split(\"\");\nfor(j = 0; j != D[232].length; ++j) if(D[232][j].charCodeAt(0) !== 0xFFFD) { e[D[232][j]] = 59392 + j; d[59392 + j] = D[232][j];}\nD[233] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������窈窯繇繞耀腰蓼蟯要謠遙遼邀饒慾欲浴縟褥辱俑傭冗勇埇墉容庸慂榕涌湧溶熔瑢用甬聳茸蓉踊鎔鏞龍于佑偶優又友右宇寓尤愚憂旴牛玗瑀盂祐禑禹紆羽芋藕虞迂遇郵釪隅雨雩勖彧旭昱栯煜稶郁頊云暈橒殞澐熉耘芸蕓�\".split(\"\");\nfor(j = 0; j != D[233].length; ++j) if(D[233][j].charCodeAt(0) !== 0xFFFD) { e[D[233][j]] = 59648 + j; d[59648 + j] = D[233][j];}\nD[234] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������運隕雲韻蔚鬱亐熊雄元原員圓園垣媛嫄寃怨愿援沅洹湲源爰猿瑗苑袁轅遠阮院願鴛月越鉞位偉僞危圍委威尉慰暐渭爲瑋緯胃萎葦蔿蝟衛褘謂違韋魏乳侑儒兪劉唯喩孺宥幼幽庾悠惟愈愉揄攸有杻柔柚柳楡楢油洧流游溜�\".split(\"\");\nfor(j = 0; j != D[234].length; ++j) if(D[234][j].charCodeAt(0) !== 0xFFFD) { e[D[234][j]] = 59904 + j; d[59904 + j] = D[234][j];}\nD[235] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������濡猶猷琉瑜由留癒硫紐維臾萸裕誘諛諭踰蹂遊逾遺酉釉鍮類六堉戮毓肉育陸倫允奫尹崙淪潤玧胤贇輪鈗閏律慄栗率聿戎瀜絨融隆垠恩慇殷誾銀隱乙吟淫蔭陰音飮揖泣邑凝應膺鷹依倚儀宜意懿擬椅毅疑矣義艤薏蟻衣誼�\".split(\"\");\nfor(j = 0; j != D[235].length; ++j) if(D[235][j].charCodeAt(0) !== 0xFFFD) { e[D[235][j]] = 60160 + j; d[60160 + j] = D[235][j];}\nD[236] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������議醫二以伊利吏夷姨履已弛彛怡易李梨泥爾珥理異痍痢移罹而耳肄苡荑裏裡貽貳邇里離飴餌匿溺瀷益翊翌翼謚人仁刃印吝咽因姻寅引忍湮燐璘絪茵藺蚓認隣靭靷鱗麟一佚佾壹日溢逸鎰馹任壬妊姙恁林淋稔臨荏賃入卄�\".split(\"\");\nfor(j = 0; j != D[236].length; ++j) if(D[236][j].charCodeAt(0) !== 0xFFFD) { e[D[236][j]] = 60416 + j; d[60416 + j] = D[236][j];}\nD[237] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������立笠粒仍剩孕芿仔刺咨姉姿子字孜恣慈滋炙煮玆瓷疵磁紫者自茨蔗藉諮資雌作勺嚼斫昨灼炸爵綽芍酌雀鵲孱棧殘潺盞岑暫潛箴簪蠶雜丈仗匠場墻壯奬將帳庄張掌暲杖樟檣欌漿牆狀獐璋章粧腸臟臧莊葬蔣薔藏裝贓醬長�\".split(\"\");\nfor(j = 0; j != D[237].length; ++j) if(D[237][j].charCodeAt(0) !== 0xFFFD) { e[D[237][j]] = 60672 + j; d[60672 + j] = D[237][j];}\nD[238] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������障再哉在宰才材栽梓渽滓災縡裁財載齋齎爭箏諍錚佇低儲咀姐底抵杵楮樗沮渚狙猪疽箸紵苧菹著藷詛貯躇這邸雎齟勣吊嫡寂摘敵滴狄炙的積笛籍績翟荻謫賊赤跡蹟迪迹適鏑佃佺傳全典前剪塡塼奠專展廛悛戰栓殿氈澱�\".split(\"\");\nfor(j = 0; j != D[238].length; ++j) if(D[238][j].charCodeAt(0) !== 0xFFFD) { e[D[238][j]] = 60928 + j; d[60928 + j] = D[238][j];}\nD[239] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������煎琠田甸畑癲筌箋箭篆纏詮輾轉鈿銓錢鐫電顚顫餞切截折浙癤竊節絶占岾店漸点粘霑鮎點接摺蝶丁井亭停偵呈姃定幀庭廷征情挺政整旌晶晸柾楨檉正汀淀淨渟湞瀞炡玎珽町睛碇禎程穽精綎艇訂諪貞鄭酊釘鉦鋌錠霆靖�\".split(\"\");\nfor(j = 0; j != D[239].length; ++j) if(D[239][j].charCodeAt(0) !== 0xFFFD) { e[D[239][j]] = 61184 + j; d[61184 + j] = D[239][j];}\nD[240] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������靜頂鼎制劑啼堤帝弟悌提梯濟祭第臍薺製諸蹄醍除際霽題齊俎兆凋助嘲弔彫措操早晁曺曹朝條棗槽漕潮照燥爪璪眺祖祚租稠窕粗糟組繰肇藻蚤詔調趙躁造遭釣阻雕鳥族簇足鏃存尊卒拙猝倧宗從悰慫棕淙琮種終綜縱腫�\".split(\"\");\nfor(j = 0; j != D[240].length; ++j) if(D[240][j].charCodeAt(0) !== 0xFFFD) { e[D[240][j]] = 61440 + j; d[61440 + j] = D[240][j];}\nD[241] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������踪踵鍾鐘佐坐左座挫罪主住侏做姝胄呪周嗾奏宙州廚晝朱柱株注洲湊澍炷珠疇籌紂紬綢舟蛛註誅走躊輳週酎酒鑄駐竹粥俊儁准埈寯峻晙樽浚準濬焌畯竣蠢逡遵雋駿茁中仲衆重卽櫛楫汁葺增憎曾拯烝甑症繒蒸證贈之只�\".split(\"\");\nfor(j = 0; j != D[241].length; ++j) if(D[241][j].charCodeAt(0) !== 0xFFFD) { e[D[241][j]] = 61696 + j; d[61696 + j] = D[241][j];}\nD[242] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������咫地址志持指摯支旨智枝枳止池沚漬知砥祉祗紙肢脂至芝芷蜘誌識贄趾遲直稙稷織職唇嗔塵振搢晉晋桭榛殄津溱珍瑨璡畛疹盡眞瞋秦縉縝臻蔯袗診賑軫辰進鎭陣陳震侄叱姪嫉帙桎瓆疾秩窒膣蛭質跌迭斟朕什執潗緝輯�\".split(\"\");\nfor(j = 0; j != D[242].length; ++j) if(D[242][j].charCodeAt(0) !== 0xFFFD) { e[D[242][j]] = 61952 + j; d[61952 + j] = D[242][j];}\nD[243] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������鏶集徵懲澄且侘借叉嗟嵯差次此磋箚茶蹉車遮捉搾着窄錯鑿齪撰澯燦璨瓚竄簒纂粲纘讚贊鑽餐饌刹察擦札紮僭參塹慘慙懺斬站讒讖倉倡創唱娼廠彰愴敞昌昶暢槍滄漲猖瘡窓脹艙菖蒼債埰寀寨彩採砦綵菜蔡采釵冊柵策�\".split(\"\");\nfor(j = 0; j != D[243].length; ++j) if(D[243][j].charCodeAt(0) !== 0xFFFD) { e[D[243][j]] = 62208 + j; d[62208 + j] = D[243][j];}\nD[244] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������責凄妻悽處倜刺剔尺慽戚拓擲斥滌瘠脊蹠陟隻仟千喘天川擅泉淺玔穿舛薦賤踐遷釧闡阡韆凸哲喆徹撤澈綴輟轍鐵僉尖沾添甛瞻簽籤詹諂堞妾帖捷牒疊睫諜貼輒廳晴淸聽菁請靑鯖切剃替涕滯締諦逮遞體初剿哨憔抄招梢�\".split(\"\");\nfor(j = 0; j != D[244].length; ++j) if(D[244][j].charCodeAt(0) !== 0xFFFD) { e[D[244][j]] = 62464 + j; d[62464 + j] = D[244][j];}\nD[245] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������椒楚樵炒焦硝礁礎秒稍肖艸苕草蕉貂超酢醋醮促囑燭矗蜀觸寸忖村邨叢塚寵悤憁摠總聰蔥銃撮催崔最墜抽推椎楸樞湫皺秋芻萩諏趨追鄒酋醜錐錘鎚雛騶鰍丑畜祝竺筑築縮蓄蹙蹴軸逐春椿瑃出朮黜充忠沖蟲衝衷悴膵萃�\".split(\"\");\nfor(j = 0; j != D[245].length; ++j) if(D[245][j].charCodeAt(0) !== 0xFFFD) { e[D[245][j]] = 62720 + j; d[62720 + j] = D[245][j];}\nD[246] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������贅取吹嘴娶就炊翠聚脆臭趣醉驟鷲側仄厠惻測層侈値嗤峙幟恥梔治淄熾痔痴癡稚穉緇緻置致蚩輜雉馳齒則勅飭親七柒漆侵寢枕沈浸琛砧針鍼蟄秤稱快他咤唾墮妥惰打拖朶楕舵陀馱駝倬卓啄坼度托拓擢晫柝濁濯琢琸託�\".split(\"\");\nfor(j = 0; j != D[246].length; ++j) if(D[246][j].charCodeAt(0) !== 0xFFFD) { e[D[246][j]] = 62976 + j; d[62976 + j] = D[246][j];}\nD[247] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������鐸呑嘆坦彈憚歎灘炭綻誕奪脫探眈耽貪塔搭榻宕帑湯糖蕩兌台太怠態殆汰泰笞胎苔跆邰颱宅擇澤撑攄兎吐土討慟桶洞痛筒統通堆槌腿褪退頹偸套妬投透鬪慝特闖坡婆巴把播擺杷波派爬琶破罷芭跛頗判坂板版瓣販辦鈑�\".split(\"\");\nfor(j = 0; j != D[247].length; ++j) if(D[247][j].charCodeAt(0) !== 0xFFFD) { e[D[247][j]] = 63232 + j; d[63232 + j] = D[247][j];}\nD[248] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������阪八叭捌佩唄悖敗沛浿牌狽稗覇貝彭澎烹膨愎便偏扁片篇編翩遍鞭騙貶坪平枰萍評吠嬖幣廢弊斃肺蔽閉陛佈包匍匏咆哺圃布怖抛抱捕暴泡浦疱砲胞脯苞葡蒲袍褒逋鋪飽鮑幅暴曝瀑爆輻俵剽彪慓杓標漂瓢票表豹飇飄驃�\".split(\"\");\nfor(j = 0; j != D[248].length; ++j) if(D[248][j].charCodeAt(0) !== 0xFFFD) { e[D[248][j]] = 63488 + j; d[63488 + j] = D[248][j];}\nD[249] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������品稟楓諷豊風馮彼披疲皮被避陂匹弼必泌珌畢疋筆苾馝乏逼下何厦夏廈昰河瑕荷蝦賀遐霞鰕壑學虐謔鶴寒恨悍旱汗漢澣瀚罕翰閑閒限韓割轄函含咸啣喊檻涵緘艦銜陷鹹合哈盒蛤閤闔陜亢伉姮嫦巷恒抗杭桁沆港缸肛航�\".split(\"\");\nfor(j = 0; j != D[249].length; ++j) if(D[249][j].charCodeAt(0) !== 0xFFFD) { e[D[249][j]] = 63744 + j; d[63744 + j] = D[249][j];}\nD[250] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������行降項亥偕咳垓奚孩害懈楷海瀣蟹解該諧邂駭骸劾核倖幸杏荇行享向嚮珦鄕響餉饗香噓墟虛許憲櫶獻軒歇險驗奕爀赫革俔峴弦懸晛泫炫玄玹現眩睍絃絢縣舷衒見賢鉉顯孑穴血頁嫌俠協夾峽挾浹狹脅脇莢鋏頰亨兄刑型�\".split(\"\");\nfor(j = 0; j != D[250].length; ++j) if(D[250][j].charCodeAt(0) !== 0xFFFD) { e[D[250][j]] = 64000 + j; d[64000 + j] = D[250][j];}\nD[251] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������形泂滎瀅灐炯熒珩瑩荊螢衡逈邢鎣馨兮彗惠慧暳蕙蹊醯鞋乎互呼壕壺好岵弧戶扈昊晧毫浩淏湖滸澔濠濩灝狐琥瑚瓠皓祜糊縞胡芦葫蒿虎號蝴護豪鎬頀顥惑或酷婚昏混渾琿魂忽惚笏哄弘汞泓洪烘紅虹訌鴻化和嬅樺火畵�\".split(\"\");\nfor(j = 0; j != D[251].length; ++j) if(D[251][j].charCodeAt(0) !== 0xFFFD) { e[D[251][j]] = 64256 + j; d[64256 + j] = D[251][j];}\nD[252] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������禍禾花華話譁貨靴廓擴攫確碻穫丸喚奐宦幻患換歡晥桓渙煥環紈還驩鰥活滑猾豁闊凰幌徨恍惶愰慌晃晄榥況湟滉潢煌璜皇篁簧荒蝗遑隍黃匯回廻徊恢悔懷晦會檜淮澮灰獪繪膾茴蛔誨賄劃獲宖橫鐄哮嚆孝效斅曉梟涍淆�\".split(\"\");\nfor(j = 0; j != D[252].length; ++j) if(D[252][j].charCodeAt(0) !== 0xFFFD) { e[D[252][j]] = 64512 + j; d[64512 + j] = D[252][j];}\nD[253] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������爻肴酵驍侯候厚后吼喉嗅帿後朽煦珝逅勛勳塤壎焄熏燻薰訓暈薨喧暄煊萱卉喙毁彙徽揮暉煇諱輝麾休携烋畦虧恤譎鷸兇凶匈洶胸黑昕欣炘痕吃屹紇訖欠欽歆吸恰洽翕興僖凞喜噫囍姬嬉希憙憘戱晞曦熙熹熺犧禧稀羲詰�\".split(\"\");\nfor(j = 0; j != D[253].length; ++j) if(D[253][j].charCodeAt(0) !== 0xFFFD) { e[D[253][j]] = 64768 + j; d[64768 + j] = D[253][j];}\nreturn {\"enc\": e, \"dec\": d }; })();\ncptable[52936] = (function(){ var d = [], e = {}, D = [], j;\nD[0] = \"\\u0000\\u0001\\u0002\\u0003\\u0004\\u0005\\u0006\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\u0014\\u0015\\u0016\\u0017\\u0018\\u0019\\u001a\\u001b\\u001c\\u001d\\u001e\\u001f !\\\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}�€������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[0].length; ++j) if(D[0][j].charCodeAt(0) !== 0xFFFD) { e[D[0][j]] = 0 + j; d[0 + j] = D[0][j];}\nD[126] = \"���������������������������������������������������������������������������������������������������������������������������~���������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[126].length; ++j) if(D[126][j].charCodeAt(0) !== 0xFFFD) { e[D[126][j]] = 32256 + j; d[32256 + j] = D[126][j];}\nreturn {\"enc\": e, \"dec\": d }; })();\ncptable[54936] = (function(){ var d = [], e = {}, D = [], j;\nD[0] = \"\\u0000\\u0001\\u0002\\u0003\\u0004\\u0005\\u0006\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\u0014\\u0015\\u0016\\u0017\\u0018\\u0019\\u001a\\u001b\\u001c\\u001d\\u001e\\u001f !\\\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~��������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[0].length; ++j) if(D[0][j].charCodeAt(0) !== 0xFFFD) { e[D[0][j]] = 0 + j; d[0 + j] = D[0][j];}\nD[129] = \"����������������������������������������������������������������丂丄丅丆丏丒丗丟丠両丣並丩丮丯丱丳丵丷丼乀乁乂乄乆乊乑乕乗乚乛乢乣乤乥乧乨乪乫乬乭乮乯乲乴乵乶乷乸乹乺乻乼乽乿亀亁亂亃亄亅亇亊�亐亖亗亙亜亝亞亣亪亯亰亱亴亶亷亸亹亼亽亾仈仌仏仐仒仚仛仜仠仢仦仧仩仭仮仯仱仴仸仹仺仼仾伀伂伃伄伅伆伇伈伋伌伒伓伔伕伖伜伝伡伣伨伩伬伭伮伱伳伵伷伹伻伾伿佀佁佂佄佅佇佈佉佊佋佌佒佔佖佡佢佦佨佪佫佭佮佱佲併佷佸佹佺佽侀侁侂侅來侇侊侌侎侐侒侓侕侖侘侙侚侜侞侟価侢�\".split(\"\");\nfor(j = 0; j != D[129].length; ++j) if(D[129][j].charCodeAt(0) !== 0xFFFD) { e[D[129][j]] = 33024 + j; d[33024 + j] = D[129][j];}\nD[130] = \"����������������������������������������������������������������侤侫侭侰侱侲侳侴侶侷侸侹侺侻侼侽侾俀俁係俆俇俈俉俋俌俍俒俓俔俕俖俙俛俠俢俤俥俧俫俬俰俲俴俵俶俷俹俻俼俽俿倀倁倂倃倄倅倆倇倈倉倊�個倎倐們倓倕倖倗倛倝倞倠倢倣値倧倫倯倰倱倲倳倴倵倶倷倸倹倻倽倿偀偁偂偄偅偆偉偊偋偍偐偑偒偓偔偖偗偘偙偛偝偞偟偠偡偢偣偤偦偧偨偩偪偫偭偮偯偰偱偲偳側偵偸偹偺偼偽傁傂傃傄傆傇傉傊傋傌傎傏傐傑傒傓傔傕傖傗傘備傚傛傜傝傞傟傠傡傢傤傦傪傫傭傮傯傰傱傳傴債傶傷傸傹傼�\".split(\"\");\nfor(j = 0; j != D[130].length; ++j) if(D[130][j].charCodeAt(0) !== 0xFFFD) { e[D[130][j]] = 33280 + j; d[33280 + j] = D[130][j];}\nD[131] = \"����������������������������������������������������������������傽傾傿僀僁僂僃僄僅僆僇僈僉僊僋僌働僎僐僑僒僓僔僕僗僘僙僛僜僝僞僟僠僡僢僣僤僥僨僩僪僫僯僰僱僲僴僶僷僸價僺僼僽僾僿儀儁儂儃億儅儈�儉儊儌儍儎儏儐儑儓儔儕儖儗儘儙儚儛儜儝儞償儠儢儣儤儥儦儧儨儩優儫儬儭儮儯儰儱儲儳儴儵儶儷儸儹儺儻儼儽儾兂兇兊兌兎兏児兒兓兗兘兙兛兝兞兟兠兡兣兤兦內兩兪兯兲兺兾兿冃冄円冇冊冋冎冏冐冑冓冔冘冚冝冞冟冡冣冦冧冨冩冪冭冮冴冸冹冺冾冿凁凂凃凅凈凊凍凎凐凒凓凔凕凖凗�\".split(\"\");\nfor(j = 0; j != D[131].length; ++j) if(D[131][j].charCodeAt(0) !== 0xFFFD) { e[D[131][j]] = 33536 + j; d[33536 + j] = D[131][j];}\nD[132] = \"����������������������������������������������������������������凘凙凚凜凞凟凢凣凥処凧凨凩凪凬凮凱凲凴凷凾刄刅刉刋刌刏刐刓刔刕刜刞刟刡刢刣別刦刧刪刬刯刱刲刴刵刼刾剄剅剆則剈剉剋剎剏剒剓剕剗剘�剙剚剛剝剟剠剢剣剤剦剨剫剬剭剮剰剱剳剴創剶剷剸剹剺剻剼剾劀劃劄劅劆劇劉劊劋劌劍劎劏劑劒劔劕劖劗劘劙劚劜劤劥劦劧劮劯劰労劵劶劷劸効劺劻劼劽勀勁勂勄勅勆勈勊勌勍勎勏勑勓勔動勗務勚勛勜勝勞勠勡勢勣勥勦勧勨勩勪勫勬勭勮勯勱勲勳勴勵勶勷勸勻勼勽匁匂匃匄匇匉匊匋匌匎�\".split(\"\");\nfor(j = 0; j != D[132].length; ++j) if(D[132][j].charCodeAt(0) !== 0xFFFD) { e[D[132][j]] = 33792 + j; d[33792 + j] = D[132][j];}\nD[133] = \"����������������������������������������������������������������匑匒匓匔匘匛匜匞匟匢匤匥匧匨匩匫匬匭匯匰匱匲匳匴匵匶匷匸匼匽區卂卄卆卋卌卍卐協単卙卛卝卥卨卪卬卭卲卶卹卻卼卽卾厀厁厃厇厈厊厎厏�厐厑厒厓厔厖厗厙厛厜厞厠厡厤厧厪厫厬厭厯厰厱厲厳厴厵厷厸厹厺厼厽厾叀參叄叅叆叇収叏叐叒叓叕叚叜叝叞叡叢叧叴叺叾叿吀吂吅吇吋吔吘吙吚吜吢吤吥吪吰吳吶吷吺吽吿呁呂呄呅呇呉呌呍呎呏呑呚呝呞呟呠呡呣呥呧呩呪呫呬呭呮呯呰呴呹呺呾呿咁咃咅咇咈咉咊咍咑咓咗咘咜咞咟咠咡�\".split(\"\");\nfor(j = 0; j != D[133].length; ++j) if(D[133][j].charCodeAt(0) !== 0xFFFD) { e[D[133][j]] = 34048 + j; d[34048 + j] = D[133][j];}\nD[134] = \"����������������������������������������������������������������咢咥咮咰咲咵咶咷咹咺咼咾哃哅哊哋哖哘哛哠員哢哣哤哫哬哯哰哱哴哵哶哷哸哹哻哾唀唂唃唄唅唈唊唋唌唍唎唒唓唕唖唗唘唙唚唜唝唞唟唡唥唦�唨唩唫唭唲唴唵唶唸唹唺唻唽啀啂啅啇啈啋啌啍啎問啑啒啓啔啗啘啙啚啛啝啞啟啠啢啣啨啩啫啯啰啱啲啳啴啹啺啽啿喅喆喌喍喎喐喒喓喕喖喗喚喛喞喠喡喢喣喤喥喦喨喩喪喫喬喭單喯喰喲喴営喸喺喼喿嗀嗁嗂嗃嗆嗇嗈嗊嗋嗎嗏嗐嗕嗗嗘嗙嗚嗛嗞嗠嗢嗧嗩嗭嗮嗰嗱嗴嗶嗸嗹嗺嗻嗼嗿嘂嘃嘄嘅�\".split(\"\");\nfor(j = 0; j != D[134].length; ++j) if(D[134][j].charCodeAt(0) !== 0xFFFD) { e[D[134][j]] = 34304 + j; d[34304 + j] = D[134][j];}\nD[135] = \"����������������������������������������������������������������嘆嘇嘊嘋嘍嘐嘑嘒嘓嘔嘕嘖嘗嘙嘚嘜嘝嘠嘡嘢嘥嘦嘨嘩嘪嘫嘮嘯嘰嘳嘵嘷嘸嘺嘼嘽嘾噀噁噂噃噄噅噆噇噈噉噊噋噏噐噑噒噓噕噖噚噛噝噞噟噠噡�噣噥噦噧噭噮噯噰噲噳噴噵噷噸噹噺噽噾噿嚀嚁嚂嚃嚄嚇嚈嚉嚊嚋嚌嚍嚐嚑嚒嚔嚕嚖嚗嚘嚙嚚嚛嚜嚝嚞嚟嚠嚡嚢嚤嚥嚦嚧嚨嚩嚪嚫嚬嚭嚮嚰嚱嚲嚳嚴嚵嚶嚸嚹嚺嚻嚽嚾嚿囀囁囂囃囄囅囆囇囈囉囋囌囍囎囏囐囑囒囓囕囖囘囙囜団囥囦囧囨囩囪囬囮囯囲図囶囷囸囻囼圀圁圂圅圇國圌圍圎圏圐圑�\".split(\"\");\nfor(j = 0; j != D[135].length; ++j) if(D[135][j].charCodeAt(0) !== 0xFFFD) { e[D[135][j]] = 34560 + j; d[34560 + j] = D[135][j];}\nD[136] = \"����������������������������������������������������������������園圓圔圕圖圗團圙圚圛圝圞圠圡圢圤圥圦圧圫圱圲圴圵圶圷圸圼圽圿坁坃坄坅坆坈坉坋坒坓坔坕坖坘坙坢坣坥坧坬坮坰坱坲坴坵坸坹坺坽坾坿垀�垁垇垈垉垊垍垎垏垐垑垔垕垖垗垘垙垚垜垝垞垟垥垨垪垬垯垰垱垳垵垶垷垹垺垻垼垽垾垿埀埁埄埅埆埇埈埉埊埌埍埐埑埓埖埗埛埜埞埡埢埣埥埦埧埨埩埪埫埬埮埰埱埲埳埵埶執埻埼埾埿堁堃堄堅堈堉堊堌堎堏堐堒堓堔堖堗堘堚堛堜堝堟堢堣堥堦堧堨堩堫堬堭堮堯報堲堳場堶堷堸堹堺堻堼堽�\".split(\"\");\nfor(j = 0; j != D[136].length; ++j) if(D[136][j].charCodeAt(0) !== 0xFFFD) { e[D[136][j]] = 34816 + j; d[34816 + j] = D[136][j];}\nD[137] = \"����������������������������������������������������������������堾堿塀塁塂塃塅塆塇塈塉塊塋塎塏塐塒塓塕塖塗塙塚塛塜塝塟塠塡塢塣塤塦塧塨塩塪塭塮塯塰塱塲塳塴塵塶塷塸塹塺塻塼塽塿墂墄墆墇墈墊墋墌�墍墎墏墐墑墔墕墖増墘墛墜墝墠墡墢墣墤墥墦墧墪墫墬墭墮墯墰墱墲墳墴墵墶墷墸墹墺墻墽墾墿壀壂壃壄壆壇壈壉壊壋壌壍壎壏壐壒壓壔壖壗壘壙壚壛壜壝壞壟壠壡壢壣壥壦壧壨壩壪壭壯壱売壴壵壷壸壺壻壼壽壾壿夀夁夃夅夆夈変夊夋夌夎夐夑夒夓夗夘夛夝夞夠夡夢夣夦夨夬夰夲夳夵夶夻�\".split(\"\");\nfor(j = 0; j != D[137].length; ++j) if(D[137][j].charCodeAt(0) !== 0xFFFD) { e[D[137][j]] = 35072 + j; d[35072 + j] = D[137][j];}\nD[138] = \"����������������������������������������������������������������夽夾夿奀奃奅奆奊奌奍奐奒奓奙奛奜奝奞奟奡奣奤奦奧奨奩奪奫奬奭奮奯奰奱奲奵奷奺奻奼奾奿妀妅妉妋妌妎妏妐妑妔妕妘妚妛妜妝妟妠妡妢妦�妧妬妭妰妱妳妴妵妶妷妸妺妼妽妿姀姁姂姃姄姅姇姈姉姌姍姎姏姕姖姙姛姞姟姠姡姢姤姦姧姩姪姫姭姮姯姰姱姲姳姴姵姶姷姸姺姼姽姾娀娂娊娋娍娎娏娐娒娔娕娖娗娙娚娛娝娞娡娢娤娦娧娨娪娫娬娭娮娯娰娳娵娷娸娹娺娻娽娾娿婁婂婃婄婅婇婈婋婌婍婎婏婐婑婒婓婔婖婗婘婙婛婜婝婞婟婠�\".split(\"\");\nfor(j = 0; j != D[138].length; ++j) if(D[138][j].charCodeAt(0) !== 0xFFFD) { e[D[138][j]] = 35328 + j; d[35328 + j] = D[138][j];}\nD[139] = \"����������������������������������������������������������������婡婣婤婥婦婨婩婫婬婭婮婯婰婱婲婳婸婹婻婼婽婾媀媁媂媃媄媅媆媇媈媉媊媋媌媍媎媏媐媑媓媔媕媖媗媘媙媜媝媞媟媠媡媢媣媤媥媦媧媨媩媫媬�媭媮媯媰媱媴媶媷媹媺媻媼媽媿嫀嫃嫄嫅嫆嫇嫈嫊嫋嫍嫎嫏嫐嫑嫓嫕嫗嫙嫚嫛嫝嫞嫟嫢嫤嫥嫧嫨嫪嫬嫭嫮嫯嫰嫲嫳嫴嫵嫶嫷嫸嫹嫺嫻嫼嫽嫾嫿嬀嬁嬂嬃嬄嬅嬆嬇嬈嬊嬋嬌嬍嬎嬏嬐嬑嬒嬓嬔嬕嬘嬙嬚嬛嬜嬝嬞嬟嬠嬡嬢嬣嬤嬥嬦嬧嬨嬩嬪嬫嬬嬭嬮嬯嬰嬱嬳嬵嬶嬸嬹嬺嬻嬼嬽嬾嬿孁孂孃孄孅孆孇�\".split(\"\");\nfor(j = 0; j != D[139].length; ++j) if(D[139][j].charCodeAt(0) !== 0xFFFD) { e[D[139][j]] = 35584 + j; d[35584 + j] = D[139][j];}\nD[140] = \"����������������������������������������������������������������孈孉孊孋孌孍孎孏孒孖孞孠孡孧孨孫孭孮孯孲孴孶孷學孹孻孼孾孿宂宆宊宍宎宐宑宒宔宖実宧宨宩宬宭宮宯宱宲宷宺宻宼寀寁寃寈寉寊寋寍寎寏�寑寔寕寖寗寘寙寚寛寜寠寢寣實寧審寪寫寬寭寯寱寲寳寴寵寶寷寽対尀専尃尅將專尋尌對導尐尒尓尗尙尛尞尟尠尡尣尦尨尩尪尫尭尮尯尰尲尳尵尶尷屃屄屆屇屌屍屒屓屔屖屗屘屚屛屜屝屟屢層屧屨屩屪屫屬屭屰屲屳屴屵屶屷屸屻屼屽屾岀岃岄岅岆岇岉岊岋岎岏岒岓岕岝岞岟岠岡岤岥岦岧岨�\".split(\"\");\nfor(j = 0; j != D[140].length; ++j) if(D[140][j].charCodeAt(0) !== 0xFFFD) { e[D[140][j]] = 35840 + j; d[35840 + j] = D[140][j];}\nD[141] = \"����������������������������������������������������������������岪岮岯岰岲岴岶岹岺岻岼岾峀峂峃峅峆峇峈峉峊峌峍峎峏峐峑峓峔峕峖峗峘峚峛峜峝峞峟峠峢峣峧峩峫峬峮峯峱峲峳峴峵島峷峸峹峺峼峽峾峿崀�崁崄崅崈崉崊崋崌崍崏崐崑崒崓崕崗崘崙崚崜崝崟崠崡崢崣崥崨崪崫崬崯崰崱崲崳崵崶崷崸崹崺崻崼崿嵀嵁嵂嵃嵄嵅嵆嵈嵉嵍嵎嵏嵐嵑嵒嵓嵔嵕嵖嵗嵙嵚嵜嵞嵟嵠嵡嵢嵣嵤嵥嵦嵧嵨嵪嵭嵮嵰嵱嵲嵳嵵嵶嵷嵸嵹嵺嵻嵼嵽嵾嵿嶀嶁嶃嶄嶅嶆嶇嶈嶉嶊嶋嶌嶍嶎嶏嶐嶑嶒嶓嶔嶕嶖嶗嶘嶚嶛嶜嶞嶟嶠�\".split(\"\");\nfor(j = 0; j != D[141].length; ++j) if(D[141][j].charCodeAt(0) !== 0xFFFD) { e[D[141][j]] = 36096 + j; d[36096 + j] = D[141][j];}\nD[142] = \"����������������������������������������������������������������嶡嶢嶣嶤嶥嶦嶧嶨嶩嶪嶫嶬嶭嶮嶯嶰嶱嶲嶳嶴嶵嶶嶸嶹嶺嶻嶼嶽嶾嶿巀巁巂巃巄巆巇巈巉巊巋巌巎巏巐巑巒巓巔巕巖巗巘巙巚巜巟巠巣巤巪巬巭�巰巵巶巸巹巺巻巼巿帀帄帇帉帊帋帍帎帒帓帗帞帟帠帡帢帣帤帥帨帩帪師帬帯帰帲帳帴帵帶帹帺帾帿幀幁幃幆幇幈幉幊幋幍幎幏幐幑幒幓幖幗幘幙幚幜幝幟幠幣幤幥幦幧幨幩幪幫幬幭幮幯幰幱幵幷幹幾庁庂広庅庈庉庌庍庎庒庘庛庝庡庢庣庤庨庩庪庫庬庮庯庰庱庲庴庺庻庼庽庿廀廁廂廃廄廅�\".split(\"\");\nfor(j = 0; j != D[142].length; ++j) if(D[142][j].charCodeAt(0) !== 0xFFFD) { e[D[142][j]] = 36352 + j; d[36352 + j] = D[142][j];}\nD[143] = \"����������������������������������������������������������������廆廇廈廋廌廍廎廏廐廔廕廗廘廙廚廜廝廞廟廠廡廢廣廤廥廦廧廩廫廬廭廮廯廰廱廲廳廵廸廹廻廼廽弅弆弇弉弌弍弎弐弒弔弖弙弚弜弝弞弡弢弣弤�弨弫弬弮弰弲弳弴張弶強弸弻弽弾弿彁彂彃彄彅彆彇彈彉彊彋彌彍彎彏彑彔彙彚彛彜彞彟彠彣彥彧彨彫彮彯彲彴彵彶彸彺彽彾彿徃徆徍徎徏徑従徔徖徚徛徝從徟徠徢徣徤徥徦徧復徫徬徯徰徱徲徳徴徶徸徹徺徻徾徿忀忁忂忇忈忊忋忎忓忔忕忚忛応忞忟忢忣忥忦忨忩忬忯忰忲忳忴忶忷忹忺忼怇�\".split(\"\");\nfor(j = 0; j != D[143].length; ++j) if(D[143][j].charCodeAt(0) !== 0xFFFD) { e[D[143][j]] = 36608 + j; d[36608 + j] = D[143][j];}\nD[144] = \"����������������������������������������������������������������怈怉怋怌怐怑怓怗怘怚怞怟怢怣怤怬怭怮怰怱怲怳怴怶怷怸怹怺怽怾恀恄恅恆恇恈恉恊恌恎恏恑恓恔恖恗恘恛恜恞恟恠恡恥恦恮恱恲恴恵恷恾悀�悁悂悅悆悇悈悊悋悎悏悐悑悓悕悗悘悙悜悞悡悢悤悥悧悩悪悮悰悳悵悶悷悹悺悽悾悿惀惁惂惃惄惇惈惉惌惍惎惏惐惒惓惔惖惗惙惛惞惡惢惣惤惥惪惱惲惵惷惸惻惼惽惾惿愂愃愄愅愇愊愋愌愐愑愒愓愔愖愗愘愙愛愜愝愞愡愢愥愨愩愪愬愭愮愯愰愱愲愳愴愵愶愷愸愹愺愻愼愽愾慀慁慂慃慄慅慆�\".split(\"\");\nfor(j = 0; j != D[144].length; ++j) if(D[144][j].charCodeAt(0) !== 0xFFFD) { e[D[144][j]] = 36864 + j; d[36864 + j] = D[144][j];}\nD[145] = \"����������������������������������������������������������������慇慉態慍慏慐慒慓慔慖慗慘慙慚慛慜慞慟慠慡慣慤慥慦慩慪慫慬慭慮慯慱慲慳慴慶慸慹慺慻慼慽慾慿憀憁憂憃憄憅憆憇憈憉憊憌憍憏憐憑憒憓憕�憖憗憘憙憚憛憜憞憟憠憡憢憣憤憥憦憪憫憭憮憯憰憱憲憳憴憵憶憸憹憺憻憼憽憿懀懁懃懄懅懆懇應懌懍懎懏懐懓懕懖懗懘懙懚懛懜懝懞懟懠懡懢懣懤懥懧懨懩懪懫懬懭懮懯懰懱懲懳懴懶懷懸懹懺懻懼懽懾戀戁戂戃戄戅戇戉戓戔戙戜戝戞戠戣戦戧戨戩戫戭戯戰戱戲戵戶戸戹戺戻戼扂扄扅扆扊�\".split(\"\");\nfor(j = 0; j != D[145].length; ++j) if(D[145][j].charCodeAt(0) !== 0xFFFD) { e[D[145][j]] = 37120 + j; d[37120 + j] = D[145][j];}\nD[146] = \"����������������������������������������������������������������扏扐払扖扗扙扚扜扝扞扟扠扡扢扤扥扨扱扲扴扵扷扸扺扻扽抁抂抃抅抆抇抈抋抌抍抎抏抐抔抙抜抝択抣抦抧抩抪抭抮抯抰抲抳抴抶抷抸抺抾拀拁�拃拋拏拑拕拝拞拠拡拤拪拫拰拲拵拸拹拺拻挀挃挄挅挆挊挋挌挍挏挐挒挓挔挕挗挘挙挜挦挧挩挬挭挮挰挱挳挴挵挶挷挸挻挼挾挿捀捁捄捇捈捊捑捒捓捔捖捗捘捙捚捛捜捝捠捤捥捦捨捪捫捬捯捰捲捳捴捵捸捹捼捽捾捿掁掃掄掅掆掋掍掑掓掔掕掗掙掚掛掜掝掞掟採掤掦掫掯掱掲掵掶掹掻掽掿揀�\".split(\"\");\nfor(j = 0; j != D[146].length; ++j) if(D[146][j].charCodeAt(0) !== 0xFFFD) { e[D[146][j]] = 37376 + j; d[37376 + j] = D[146][j];}\nD[147] = \"����������������������������������������������������������������揁揂揃揅揇揈揊揋揌揑揓揔揕揗揘揙揚換揜揝揟揢揤揥揦揧揨揫揬揮揯揰揱揳揵揷揹揺揻揼揾搃搄搆搇搈搉搊損搎搑搒搕搖搗搘搙搚搝搟搢搣搤�搥搧搨搩搫搮搯搰搱搲搳搵搶搷搸搹搻搼搾摀摂摃摉摋摌摍摎摏摐摑摓摕摖摗摙摚摛摜摝摟摠摡摢摣摤摥摦摨摪摫摬摮摯摰摱摲摳摴摵摶摷摻摼摽摾摿撀撁撃撆撈撉撊撋撌撍撎撏撐撓撔撗撘撚撛撜撝撟撠撡撢撣撥撦撧撨撪撫撯撱撲撳撴撶撹撻撽撾撿擁擃擄擆擇擈擉擊擋擌擏擑擓擔擕擖擙據�\".split(\"\");\nfor(j = 0; j != D[147].length; ++j) if(D[147][j].charCodeAt(0) !== 0xFFFD) { e[D[147][j]] = 37632 + j; d[37632 + j] = D[147][j];}\nD[148] = \"����������������������������������������������������������������擛擜擝擟擠擡擣擥擧擨擩擪擫擬擭擮擯擰擱擲擳擴擵擶擷擸擹擺擻擼擽擾擿攁攂攃攄攅攆攇攈攊攋攌攍攎攏攐攑攓攔攕攖攗攙攚攛攜攝攞攟攠攡�攢攣攤攦攧攨攩攪攬攭攰攱攲攳攷攺攼攽敀敁敂敃敄敆敇敊敋敍敎敐敒敓敔敗敘敚敜敟敠敡敤敥敧敨敩敪敭敮敯敱敳敵敶數敹敺敻敼敽敾敿斀斁斂斃斄斅斆斈斉斊斍斎斏斒斔斕斖斘斚斝斞斠斢斣斦斨斪斬斮斱斲斳斴斵斶斷斸斺斻斾斿旀旂旇旈旉旊旍旐旑旓旔旕旘旙旚旛旜旝旞旟旡旣旤旪旫�\".split(\"\");\nfor(j = 0; j != D[148].length; ++j) if(D[148][j].charCodeAt(0) !== 0xFFFD) { e[D[148][j]] = 37888 + j; d[37888 + j] = D[148][j];}\nD[149] = \"����������������������������������������������������������������旲旳旴旵旸旹旻旼旽旾旿昁昄昅昇昈昉昋昍昐昑昒昖昗昘昚昛昜昞昡昢昣昤昦昩昪昫昬昮昰昲昳昷昸昹昺昻昽昿晀時晄晅晆晇晈晉晊晍晎晐晑晘�晙晛晜晝晞晠晢晣晥晧晩晪晫晬晭晱晲晳晵晸晹晻晼晽晿暀暁暃暅暆暈暉暊暋暍暎暏暐暒暓暔暕暘暙暚暛暜暞暟暠暡暢暣暤暥暦暩暪暫暬暭暯暰暱暲暳暵暶暷暸暺暻暼暽暿曀曁曂曃曄曅曆曇曈曉曊曋曌曍曎曏曐曑曒曓曔曕曖曗曘曚曞曟曠曡曢曣曤曥曧曨曪曫曬曭曮曯曱曵曶書曺曻曽朁朂會�\".split(\"\");\nfor(j = 0; j != D[149].length; ++j) if(D[149][j].charCodeAt(0) !== 0xFFFD) { e[D[149][j]] = 38144 + j; d[38144 + j] = D[149][j];}\nD[150] = \"����������������������������������������������������������������朄朅朆朇朌朎朏朑朒朓朖朘朙朚朜朞朠朡朢朣朤朥朧朩朮朰朲朳朶朷朸朹朻朼朾朿杁杄杅杇杊杋杍杒杔杕杗杘杙杚杛杝杢杣杤杦杧杫杬杮東杴杶�杸杹杺杻杽枀枂枃枅枆枈枊枌枍枎枏枑枒枓枔枖枙枛枟枠枡枤枦枩枬枮枱枲枴枹枺枻枼枽枾枿柀柂柅柆柇柈柉柊柋柌柍柎柕柖柗柛柟柡柣柤柦柧柨柪柫柭柮柲柵柶柷柸柹柺査柼柾栁栂栃栄栆栍栐栒栔栕栘栙栚栛栜栞栟栠栢栣栤栥栦栧栨栫栬栭栮栯栰栱栴栵栶栺栻栿桇桋桍桏桒桖桗桘桙桚桛�\".split(\"\");\nfor(j = 0; j != D[150].length; ++j) if(D[150][j].charCodeAt(0) !== 0xFFFD) { e[D[150][j]] = 38400 + j; d[38400 + j] = D[150][j];}\nD[151] = \"����������������������������������������������������������������桜桝桞桟桪桬桭桮桯桰桱桲桳桵桸桹桺桻桼桽桾桿梀梂梄梇梈梉梊梋梌梍梎梐梑梒梔梕梖梘梙梚梛梜條梞梟梠梡梣梤梥梩梪梫梬梮梱梲梴梶梷梸�梹梺梻梼梽梾梿棁棃棄棅棆棇棈棊棌棎棏棐棑棓棔棖棗棙棛棜棝棞棟棡棢棤棥棦棧棨棩棪棫棬棭棯棲棳棴棶棷棸棻棽棾棿椀椂椃椄椆椇椈椉椊椌椏椑椓椔椕椖椗椘椙椚椛検椝椞椡椢椣椥椦椧椨椩椪椫椬椮椯椱椲椳椵椶椷椸椺椻椼椾楀楁楃楄楅楆楇楈楉楊楋楌楍楎楏楐楑楒楓楕楖楘楙楛楜楟�\".split(\"\");\nfor(j = 0; j != D[151].length; ++j) if(D[151][j].charCodeAt(0) !== 0xFFFD) { e[D[151][j]] = 38656 + j; d[38656 + j] = D[151][j];}\nD[152] = \"����������������������������������������������������������������楡楢楤楥楧楨楩楪楬業楯楰楲楳楴極楶楺楻楽楾楿榁榃榅榊榋榌榎榏榐榑榒榓榖榗榙榚榝榞榟榠榡榢榣榤榥榦榩榪榬榮榯榰榲榳榵榶榸榹榺榼榽�榾榿槀槂槃槄槅槆槇槈槉構槍槏槑槒槓槕槖槗様槙槚槜槝槞槡槢槣槤槥槦槧槨槩槪槫槬槮槯槰槱槳槴槵槶槷槸槹槺槻槼槾樀樁樂樃樄樅樆樇樈樉樋樌樍樎樏樐樑樒樓樔樕樖標樚樛樜樝樞樠樢樣樤樥樦樧権樫樬樭樮樰樲樳樴樶樷樸樹樺樻樼樿橀橁橂橃橅橆橈橉橊橋橌橍橎橏橑橒橓橔橕橖橗橚�\".split(\"\");\nfor(j = 0; j != D[152].length; ++j) if(D[152][j].charCodeAt(0) !== 0xFFFD) { e[D[152][j]] = 38912 + j; d[38912 + j] = D[152][j];}\nD[153] = \"����������������������������������������������������������������橜橝橞機橠橢橣橤橦橧橨橩橪橫橬橭橮橯橰橲橳橴橵橶橷橸橺橻橽橾橿檁檂檃檅檆檇檈檉檊檋檌檍檏檒檓檔檕檖檘檙檚檛檜檝檞檟檡檢檣檤檥檦�檧檨檪檭檮檯檰檱檲檳檴檵檶檷檸檹檺檻檼檽檾檿櫀櫁櫂櫃櫄櫅櫆櫇櫈櫉櫊櫋櫌櫍櫎櫏櫐櫑櫒櫓櫔櫕櫖櫗櫘櫙櫚櫛櫜櫝櫞櫟櫠櫡櫢櫣櫤櫥櫦櫧櫨櫩櫪櫫櫬櫭櫮櫯櫰櫱櫲櫳櫴櫵櫶櫷櫸櫹櫺櫻櫼櫽櫾櫿欀欁欂欃欄欅欆欇欈欉權欋欌欍欎欏欐欑欒欓欔欕欖欗欘欙欚欛欜欝欞欟欥欦欨欩欪欫欬欭欮�\".split(\"\");\nfor(j = 0; j != D[153].length; ++j) if(D[153][j].charCodeAt(0) !== 0xFFFD) { e[D[153][j]] = 39168 + j; d[39168 + j] = D[153][j];}\nD[154] = \"����������������������������������������������������������������欯欰欱欳欴欵欶欸欻欼欽欿歀歁歂歄歅歈歊歋歍歎歏歐歑歒歓歔歕歖歗歘歚歛歜歝歞歟歠歡歨歩歫歬歭歮歯歰歱歲歳歴歵歶歷歸歺歽歾歿殀殅殈�殌殎殏殐殑殔殕殗殘殙殜殝殞殟殠殢殣殤殥殦殧殨殩殫殬殭殮殯殰殱殲殶殸殹殺殻殼殽殾毀毃毄毆毇毈毉毊毌毎毐毑毘毚毜毝毞毟毠毢毣毤毥毦毧毨毩毬毭毮毰毱毲毴毶毷毸毺毻毼毾毿氀氁氂氃氄氈氉氊氋氌氎氒気氜氝氞氠氣氥氫氬氭氱氳氶氷氹氺氻氼氾氿汃汄汅汈汋汌汍汎汏汑汒汓汖汘�\".split(\"\");\nfor(j = 0; j != D[154].length; ++j) if(D[154][j].charCodeAt(0) !== 0xFFFD) { e[D[154][j]] = 39424 + j; d[39424 + j] = D[154][j];}\nD[155] = \"����������������������������������������������������������������汙汚汢汣汥汦汧汫汬汭汮汯汱汳汵汷汸決汻汼汿沀沄沇沊沋沍沎沑沒沕沖沗沘沚沜沝沞沠沢沨沬沯沰沴沵沶沷沺泀況泂泃泆泇泈泋泍泎泏泑泒泘�泙泚泜泝泟泤泦泧泩泬泭泲泴泹泿洀洂洃洅洆洈洉洊洍洏洐洑洓洔洕洖洘洜洝洟洠洡洢洣洤洦洨洩洬洭洯洰洴洶洷洸洺洿浀浂浄浉浌浐浕浖浗浘浛浝浟浡浢浤浥浧浨浫浬浭浰浱浲浳浵浶浹浺浻浽浾浿涀涁涃涄涆涇涊涋涍涏涐涒涖涗涘涙涚涜涢涥涬涭涰涱涳涴涶涷涹涺涻涼涽涾淁淂淃淈淉淊�\".split(\"\");\nfor(j = 0; j != D[155].length; ++j) if(D[155][j].charCodeAt(0) !== 0xFFFD) { e[D[155][j]] = 39680 + j; d[39680 + j] = D[155][j];}\nD[156] = \"����������������������������������������������������������������淍淎淏淐淒淓淔淕淗淚淛淜淟淢淣淥淧淨淩淪淭淯淰淲淴淵淶淸淺淽淾淿渀渁渂渃渄渆渇済渉渋渏渒渓渕渘渙減渜渞渟渢渦渧渨渪測渮渰渱渳渵�渶渷渹渻渼渽渾渿湀湁湂湅湆湇湈湉湊湋湌湏湐湑湒湕湗湙湚湜湝湞湠湡湢湣湤湥湦湧湨湩湪湬湭湯湰湱湲湳湴湵湶湷湸湹湺湻湼湽満溁溂溄溇溈溊溋溌溍溎溑溒溓溔溕準溗溙溚溛溝溞溠溡溣溤溦溨溩溫溬溭溮溰溳溵溸溹溼溾溿滀滃滄滅滆滈滉滊滌滍滎滐滒滖滘滙滛滜滝滣滧滪滫滬滭滮滯�\".split(\"\");\nfor(j = 0; j != D[156].length; ++j) if(D[156][j].charCodeAt(0) !== 0xFFFD) { e[D[156][j]] = 39936 + j; d[39936 + j] = D[156][j];}\nD[157] = \"����������������������������������������������������������������滰滱滲滳滵滶滷滸滺滻滼滽滾滿漀漁漃漄漅漇漈漊漋漌漍漎漐漑漒漖漗漘漙漚漛漜漝漞漟漡漢漣漥漦漧漨漬漮漰漲漴漵漷漸漹漺漻漼漽漿潀潁潂�潃潄潅潈潉潊潌潎潏潐潑潒潓潔潕潖潗潙潚潛潝潟潠潡潣潤潥潧潨潩潪潫潬潯潰潱潳潵潶潷潹潻潽潾潿澀澁澂澃澅澆澇澊澋澏澐澑澒澓澔澕澖澗澘澙澚澛澝澞澟澠澢澣澤澥澦澨澩澪澫澬澭澮澯澰澱澲澴澵澷澸澺澻澼澽澾澿濁濃濄濅濆濇濈濊濋濌濍濎濏濐濓濔濕濖濗濘濙濚濛濜濝濟濢濣濤濥�\".split(\"\");\nfor(j = 0; j != D[157].length; ++j) if(D[157][j].charCodeAt(0) !== 0xFFFD) { e[D[157][j]] = 40192 + j; d[40192 + j] = D[157][j];}\nD[158] = \"����������������������������������������������������������������濦濧濨濩濪濫濬濭濰濱濲濳濴濵濶濷濸濹濺濻濼濽濾濿瀀瀁瀂瀃瀄瀅瀆瀇瀈瀉瀊瀋瀌瀍瀎瀏瀐瀒瀓瀔瀕瀖瀗瀘瀙瀜瀝瀞瀟瀠瀡瀢瀤瀥瀦瀧瀨瀩瀪�瀫瀬瀭瀮瀯瀰瀱瀲瀳瀴瀶瀷瀸瀺瀻瀼瀽瀾瀿灀灁灂灃灄灅灆灇灈灉灊灋灍灎灐灑灒灓灔灕灖灗灘灙灚灛灜灝灟灠灡灢灣灤灥灦灧灨灩灪灮灱灲灳灴灷灹灺灻災炁炂炃炄炆炇炈炋炌炍炏炐炑炓炗炘炚炛炞炟炠炡炢炣炤炥炦炧炨炩炪炰炲炴炵炶為炾炿烄烅烆烇烉烋烌烍烎烏烐烑烒烓烔烕烖烗烚�\".split(\"\");\nfor(j = 0; j != D[158].length; ++j) if(D[158][j].charCodeAt(0) !== 0xFFFD) { e[D[158][j]] = 40448 + j; d[40448 + j] = D[158][j];}\nD[159] = \"����������������������������������������������������������������烜烝烞烠烡烢烣烥烪烮烰烱烲烳烴烵烶烸烺烻烼烾烿焀焁焂焃焄焅焆焇焈焋焌焍焎焏焑焒焔焗焛焜焝焞焟焠無焢焣焤焥焧焨焩焪焫焬焭焮焲焳焴�焵焷焸焹焺焻焼焽焾焿煀煁煂煃煄煆煇煈煉煋煍煏煐煑煒煓煔煕煖煗煘煙煚煛煝煟煠煡煢煣煥煩煪煫煬煭煯煰煱煴煵煶煷煹煻煼煾煿熀熁熂熃熅熆熇熈熉熋熌熍熎熐熑熒熓熕熖熗熚熛熜熝熞熡熢熣熤熥熦熧熩熪熫熭熮熯熰熱熲熴熶熷熸熺熻熼熽熾熿燀燁燂燄燅燆燇燈燉燊燋燌燍燏燐燑燒燓�\".split(\"\");\nfor(j = 0; j != D[159].length; ++j) if(D[159][j].charCodeAt(0) !== 0xFFFD) { e[D[159][j]] = 40704 + j; d[40704 + j] = D[159][j];}\nD[160] = \"����������������������������������������������������������������燖燗燘燙燚燛燜燝燞營燡燢燣燤燦燨燩燪燫燬燭燯燰燱燲燳燴燵燶燷燸燺燻燼燽燾燿爀爁爂爃爄爅爇爈爉爊爋爌爍爎爏爐爑爒爓爔爕爖爗爘爙爚�爛爜爞爟爠爡爢爣爤爥爦爧爩爫爭爮爯爲爳爴爺爼爾牀牁牂牃牄牅牆牉牊牋牎牏牐牑牓牔牕牗牘牚牜牞牠牣牤牥牨牪牫牬牭牰牱牳牴牶牷牸牻牼牽犂犃犅犆犇犈犉犌犎犐犑犓犔犕犖犗犘犙犚犛犜犝犞犠犡犢犣犤犥犦犧犨犩犪犫犮犱犲犳犵犺犻犼犽犾犿狀狅狆狇狉狊狋狌狏狑狓狔狕狖狘狚狛�\".split(\"\");\nfor(j = 0; j != D[160].length; ++j) if(D[160][j].charCodeAt(0) !== 0xFFFD) { e[D[160][j]] = 40960 + j; d[40960 + j] = D[160][j];}\nD[161] = \"�����������������������������������������������������������������　、。·ˉˇ¨〃々—～‖…‘’“”〔〕〈〉《》「」『』〖〗【】±×÷∶∧∨∑∏∪∩∈∷√⊥∥∠⌒⊙∫∮≡≌≈∽∝≠≮≯≤≥∞∵∴♂♀°′″℃＄¤￠￡‰§№☆★○●◎◇◆□■△▲※→←↑↓〓�\".split(\"\");\nfor(j = 0; j != D[161].length; ++j) if(D[161][j].charCodeAt(0) !== 0xFFFD) { e[D[161][j]] = 41216 + j; d[41216 + j] = D[161][j];}\nD[162] = \"�����������������������������������������������������������������ⅰⅱⅲⅳⅴⅵⅶⅷⅸⅹ⒈⒉⒊⒋⒌⒍⒎⒏⒐⒑⒒⒓⒔⒕⒖⒗⒘⒙⒚⒛⑴⑵⑶⑷⑸⑹⑺⑻⑼⑽⑾⑿⒀⒁⒂⒃⒄⒅⒆⒇①②③④⑤⑥⑦⑧⑨⑩€㈠㈡㈢㈣㈤㈥㈦㈧㈨㈩ⅠⅡⅢⅣⅤⅥⅦⅧⅨⅩⅪⅫ�\".split(\"\");\nfor(j = 0; j != D[162].length; ++j) if(D[162][j].charCodeAt(0) !== 0xFFFD) { e[D[162][j]] = 41472 + j; d[41472 + j] = D[162][j];}\nD[163] = \"�����������������������������������������������������������������！＂＃￥％＆＇（）＊＋，－．／０１２３４５６７８９：；＜＝＞？＠ＡＢＣＤＥＦＧＨＩＪＫＬＭＮＯＰＱＲＳＴＵＶＷＸＹＺ［＼］＾＿｀ａｂｃｄｅｆｇｈｉｊｋｌｍｎｏｐｑｒｓｔｕｖｗｘｙｚ｛｜｝￣�\".split(\"\");\nfor(j = 0; j != D[163].length; ++j) if(D[163][j].charCodeAt(0) !== 0xFFFD) { e[D[163][j]] = 41728 + j; d[41728 + j] = D[163][j];}\nD[164] = \"�����������������������������������������������������������������ぁあぃいぅうぇえぉおかがきぎくぐけげこごさざしじすずせぜそぞただちぢっつづてでとどなにぬねのはばぱひびぴふぶぷへべぺほぼぽまみむめもゃやゅゆょよらりるれろゎわゐゑをん�\".split(\"\");\nfor(j = 0; j != D[164].length; ++j) if(D[164][j].charCodeAt(0) !== 0xFFFD) { e[D[164][j]] = 41984 + j; d[41984 + j] = D[164][j];}\nD[165] = \"�����������������������������������������������������������������ァアィイゥウェエォオカガキギクグケゲコゴサザシジスズセゼソゾタダチヂッツヅテデトドナニヌネノハバパヒビピフブプヘベペホボポマミムメモャヤュユョヨラリルレロヮワヰヱヲンヴヵヶ�\".split(\"\");\nfor(j = 0; j != D[165].length; ++j) if(D[165][j].charCodeAt(0) !== 0xFFFD) { e[D[165][j]] = 42240 + j; d[42240 + j] = D[165][j];}\nD[166] = \"�����������������������������������������������������������������ΑΒΓΔΕΖΗΘΙΚΛΜΝΞΟΠΡΣΤΥΦΧΨΩαβγδεζηθικλμνξοπρστυφχψω︵︶︹︺︿﹀︽︾﹁﹂﹃﹄︻︼︷︸︱︳︴�\".split(\"\");\nfor(j = 0; j != D[166].length; ++j) if(D[166][j].charCodeAt(0) !== 0xFFFD) { e[D[166][j]] = 42496 + j; d[42496 + j] = D[166][j];}\nD[167] = \"�����������������������������������������������������������������АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдеёжзийклмнопрстуфхцчшщъыьэюя�\".split(\"\");\nfor(j = 0; j != D[167].length; ++j) if(D[167][j].charCodeAt(0) !== 0xFFFD) { e[D[167][j]] = 42752 + j; d[42752 + j] = D[167][j];}\nD[168] = \"����������������������������������������������������������������ˊˋ˙–―‥‵℅℉↖↗↘↙∕∟∣≒≦≧⊿═║╒╓╔╕╖╗╘╙╚╛╜╝╞╟╠╡╢╣╤╥╦╧╨╩╪╫╬╭╮╯╰╱╲╳▁▂▃▄▅▆▇�█▉▊▋▌▍▎▏▓▔▕▼▽◢◣◤◥☉⊕〒〝〞āáǎàēéěèīíǐìōóǒòūúǔùǖǘǚǜüêɑńňǹɡㄅㄆㄇㄈㄉㄊㄋㄌㄍㄎㄏㄐㄑㄒㄓㄔㄕㄖㄗㄘㄙㄚㄛㄜㄝㄞㄟㄠㄡㄢㄣㄤㄥㄦㄧㄨㄩ�\".split(\"\");\nfor(j = 0; j != D[168].length; ++j) if(D[168][j].charCodeAt(0) !== 0xFFFD) { e[D[168][j]] = 43008 + j; d[43008 + j] = D[168][j];}\nD[169] = \"����������������������������������������������������������������〡〢〣〤〥〦〧〨〩㊣㎎㎏㎜㎝㎞㎡㏄㏎㏑㏒㏕︰￢￤℡㈱‐ー゛゜ヽヾ〆ゝゞ﹉﹊﹋﹌﹍﹎﹏﹐﹑﹒﹔﹕﹖﹗﹙﹚﹛﹜﹝﹞﹟﹠﹡�﹢﹣﹤﹥﹦﹨﹩﹪﹫〾⿰⿱⿲⿳⿴⿵⿶⿷⿸⿹⿺⿻〇─━│┃┄┅┆┇┈┉┊┋┌┍┎┏┐┑┒┓└┕┖┗┘┙┚┛├┝┞┟┠┡┢┣┤┥┦┧┨┩┪┫┬┭┮┯┰┱┲┳┴┵┶┷┸┹┺┻┼┽┾┿╀╁╂╃╄╅╆╇╈╉╊╋�\".split(\"\");\nfor(j = 0; j != D[169].length; ++j) if(D[169][j].charCodeAt(0) !== 0xFFFD) { e[D[169][j]] = 43264 + j; d[43264 + j] = D[169][j];}\nD[170] = \"����������������������������������������������������������������狜狝狟狢狣狤狥狦狧狪狫狵狶狹狽狾狿猀猂猄猅猆猇猈猉猋猌猍猏猐猑猒猔猘猙猚猟猠猣猤猦猧猨猭猯猰猲猳猵猶猺猻猼猽獀獁獂獃獄獅獆獇獈�獉獊獋獌獎獏獑獓獔獕獖獘獙獚獛獜獝獞獟獡獢獣獤獥獦獧獨獩獪獫獮獰獱�\".split(\"\");\nfor(j = 0; j != D[170].length; ++j) if(D[170][j].charCodeAt(0) !== 0xFFFD) { e[D[170][j]] = 43520 + j; d[43520 + j] = D[170][j];}\nD[171] = \"����������������������������������������������������������������獲獳獴獵獶獷獸獹獺獻獼獽獿玀玁玂玃玅玆玈玊玌玍玏玐玒玓玔玕玗玘玙玚玜玝玞玠玡玣玤玥玦玧玨玪玬玭玱玴玵玶玸玹玼玽玾玿珁珃珄珅珆珇�珋珌珎珒珓珔珕珖珗珘珚珛珜珝珟珡珢珣珤珦珨珪珫珬珮珯珰珱珳珴珵珶珷�\".split(\"\");\nfor(j = 0; j != D[171].length; ++j) if(D[171][j].charCodeAt(0) !== 0xFFFD) { e[D[171][j]] = 43776 + j; d[43776 + j] = D[171][j];}\nD[172] = \"����������������������������������������������������������������珸珹珺珻珼珽現珿琀琁琂琄琇琈琋琌琍琎琑琒琓琔琕琖琗琘琙琜琝琞琟琠琡琣琤琧琩琫琭琯琱琲琷琸琹琺琻琽琾琿瑀瑂瑃瑄瑅瑆瑇瑈瑉瑊瑋瑌瑍�瑎瑏瑐瑑瑒瑓瑔瑖瑘瑝瑠瑡瑢瑣瑤瑥瑦瑧瑨瑩瑪瑫瑬瑮瑯瑱瑲瑳瑴瑵瑸瑹瑺�\".split(\"\");\nfor(j = 0; j != D[172].length; ++j) if(D[172][j].charCodeAt(0) !== 0xFFFD) { e[D[172][j]] = 44032 + j; d[44032 + j] = D[172][j];}\nD[173] = \"����������������������������������������������������������������瑻瑼瑽瑿璂璄璅璆璈璉璊璌璍璏璑璒璓璔璕璖璗璘璙璚璛璝璟璠璡璢璣璤璥璦璪璫璬璭璮璯環璱璲璳璴璵璶璷璸璹璻璼璽璾璿瓀瓁瓂瓃瓄瓅瓆瓇�瓈瓉瓊瓋瓌瓍瓎瓏瓐瓑瓓瓔瓕瓖瓗瓘瓙瓚瓛瓝瓟瓡瓥瓧瓨瓩瓪瓫瓬瓭瓰瓱瓲�\".split(\"\");\nfor(j = 0; j != D[173].length; ++j) if(D[173][j].charCodeAt(0) !== 0xFFFD) { e[D[173][j]] = 44288 + j; d[44288 + j] = D[173][j];}\nD[174] = \"����������������������������������������������������������������瓳瓵瓸瓹瓺瓻瓼瓽瓾甀甁甂甃甅甆甇甈甉甊甋甌甎甐甒甔甕甖甗甛甝甞甠甡產産甤甦甧甪甮甴甶甹甼甽甿畁畂畃畄畆畇畉畊畍畐畑畒畓畕畖畗畘�畝畞畟畠畡畢畣畤畧畨畩畫畬畭畮畯異畱畳畵當畷畺畻畼畽畾疀疁疂疄疅疇�\".split(\"\");\nfor(j = 0; j != D[174].length; ++j) if(D[174][j].charCodeAt(0) !== 0xFFFD) { e[D[174][j]] = 44544 + j; d[44544 + j] = D[174][j];}\nD[175] = \"����������������������������������������������������������������疈疉疊疌疍疎疐疓疕疘疛疜疞疢疦疧疨疩疪疭疶疷疺疻疿痀痁痆痋痌痎痏痐痑痓痗痙痚痜痝痟痠痡痥痩痬痭痮痯痲痳痵痶痷痸痺痻痽痾瘂瘄瘆瘇�瘈瘉瘋瘍瘎瘏瘑瘒瘓瘔瘖瘚瘜瘝瘞瘡瘣瘧瘨瘬瘮瘯瘱瘲瘶瘷瘹瘺瘻瘽癁療癄�\".split(\"\");\nfor(j = 0; j != D[175].length; ++j) if(D[175][j].charCodeAt(0) !== 0xFFFD) { e[D[175][j]] = 44800 + j; d[44800 + j] = D[175][j];}\nD[176] = \"����������������������������������������������������������������癅癆癇癈癉癊癋癎癏癐癑癒癓癕癗癘癙癚癛癝癟癠癡癢癤癥癦癧癨癩癪癬癭癮癰癱癲癳癴癵癶癷癹発發癿皀皁皃皅皉皊皌皍皏皐皒皔皕皗皘皚皛�皜皝皞皟皠皡皢皣皥皦皧皨皩皪皫皬皭皯皰皳皵皶皷皸皹皺皻皼皽皾盀盁盃啊阿埃挨哎唉哀皑癌蔼矮艾碍爱隘鞍氨安俺按暗岸胺案肮昂盎凹敖熬翱袄傲奥懊澳芭捌扒叭吧笆八疤巴拔跋靶把耙坝霸罢爸白柏百摆佰败拜稗斑班搬扳般颁板版扮拌伴瓣半办绊邦帮梆榜膀绑棒磅蚌镑傍谤苞胞包褒剥�\".split(\"\");\nfor(j = 0; j != D[176].length; ++j) if(D[176][j].charCodeAt(0) !== 0xFFFD) { e[D[176][j]] = 45056 + j; d[45056 + j] = D[176][j];}\nD[177] = \"����������������������������������������������������������������盄盇盉盋盌盓盕盙盚盜盝盞盠盡盢監盤盦盧盨盩盪盫盬盭盰盳盵盶盷盺盻盽盿眀眂眃眅眆眊県眎眏眐眑眒眓眔眕眖眗眘眛眜眝眞眡眣眤眥眧眪眫�眬眮眰眱眲眳眴眹眻眽眾眿睂睄睅睆睈睉睊睋睌睍睎睏睒睓睔睕睖睗睘睙睜薄雹保堡饱宝抱报暴豹鲍爆杯碑悲卑北辈背贝钡倍狈备惫焙被奔苯本笨崩绷甭泵蹦迸逼鼻比鄙笔彼碧蓖蔽毕毙毖币庇痹闭敝弊必辟壁臂避陛鞭边编贬扁便变卞辨辩辫遍标彪膘表鳖憋别瘪彬斌濒滨宾摈兵冰柄丙秉饼炳�\".split(\"\");\nfor(j = 0; j != D[177].length; ++j) if(D[177][j].charCodeAt(0) !== 0xFFFD) { e[D[177][j]] = 45312 + j; d[45312 + j] = D[177][j];}\nD[178] = \"����������������������������������������������������������������睝睞睟睠睤睧睩睪睭睮睯睰睱睲睳睴睵睶睷睸睺睻睼瞁瞂瞃瞆瞇瞈瞉瞊瞋瞏瞐瞓瞔瞕瞖瞗瞘瞙瞚瞛瞜瞝瞞瞡瞣瞤瞦瞨瞫瞭瞮瞯瞱瞲瞴瞶瞷瞸瞹瞺�瞼瞾矀矁矂矃矄矅矆矇矈矉矊矋矌矎矏矐矑矒矓矔矕矖矘矙矚矝矞矟矠矡矤病并玻菠播拨钵波博勃搏铂箔伯帛舶脖膊渤泊驳捕卜哺补埠不布步簿部怖擦猜裁材才财睬踩采彩菜蔡餐参蚕残惭惨灿苍舱仓沧藏操糙槽曹草厕策侧册测层蹭插叉茬茶查碴搽察岔差诧拆柴豺搀掺蝉馋谗缠铲产阐颤昌猖�\".split(\"\");\nfor(j = 0; j != D[178].length; ++j) if(D[178][j].charCodeAt(0) !== 0xFFFD) { e[D[178][j]] = 45568 + j; d[45568 + j] = D[178][j];}\nD[179] = \"����������������������������������������������������������������矦矨矪矯矰矱矲矴矵矷矹矺矻矼砃砄砅砆砇砈砊砋砎砏砐砓砕砙砛砞砠砡砢砤砨砪砫砮砯砱砲砳砵砶砽砿硁硂硃硄硆硈硉硊硋硍硏硑硓硔硘硙硚�硛硜硞硟硠硡硢硣硤硥硦硧硨硩硯硰硱硲硳硴硵硶硸硹硺硻硽硾硿碀碁碂碃场尝常长偿肠厂敞畅唱倡超抄钞朝嘲潮巢吵炒车扯撤掣彻澈郴臣辰尘晨忱沉陈趁衬撑称城橙成呈乘程惩澄诚承逞骋秤吃痴持匙池迟弛驰耻齿侈尺赤翅斥炽充冲虫崇宠抽酬畴踌稠愁筹仇绸瞅丑臭初出橱厨躇锄雏滁除楚�\".split(\"\");\nfor(j = 0; j != D[179].length; ++j) if(D[179][j].charCodeAt(0) !== 0xFFFD) { e[D[179][j]] = 45824 + j; d[45824 + j] = D[179][j];}\nD[180] = \"����������������������������������������������������������������碄碅碆碈碊碋碏碐碒碔碕碖碙碝碞碠碢碤碦碨碩碪碫碬碭碮碯碵碶碷碸確碻碼碽碿磀磂磃磄磆磇磈磌磍磎磏磑磒磓磖磗磘磚磛磜磝磞磟磠磡磢磣�磤磥磦磧磩磪磫磭磮磯磰磱磳磵磶磸磹磻磼磽磾磿礀礂礃礄礆礇礈礉礊礋礌础储矗搐触处揣川穿椽传船喘串疮窗幢床闯创吹炊捶锤垂春椿醇唇淳纯蠢戳绰疵茨磁雌辞慈瓷词此刺赐次聪葱囱匆从丛凑粗醋簇促蹿篡窜摧崔催脆瘁粹淬翠村存寸磋撮搓措挫错搭达答瘩打大呆歹傣戴带殆代贷袋待逮�\".split(\"\");\nfor(j = 0; j != D[180].length; ++j) if(D[180][j].charCodeAt(0) !== 0xFFFD) { e[D[180][j]] = 46080 + j; d[46080 + j] = D[180][j];}\nD[181] = \"����������������������������������������������������������������礍礎礏礐礑礒礔礕礖礗礘礙礚礛礜礝礟礠礡礢礣礥礦礧礨礩礪礫礬礭礮礯礰礱礲礳礵礶礷礸礹礽礿祂祃祄祅祇祊祋祌祍祎祏祐祑祒祔祕祘祙祡祣�祤祦祩祪祫祬祮祰祱祲祳祴祵祶祹祻祼祽祾祿禂禃禆禇禈禉禋禌禍禎禐禑禒怠耽担丹单郸掸胆旦氮但惮淡诞弹蛋当挡党荡档刀捣蹈倒岛祷导到稻悼道盗德得的蹬灯登等瞪凳邓堤低滴迪敌笛狄涤翟嫡抵底地蒂第帝弟递缔颠掂滇碘点典靛垫电佃甸店惦奠淀殿碉叼雕凋刁掉吊钓调跌爹碟蝶迭谍叠�\".split(\"\");\nfor(j = 0; j != D[181].length; ++j) if(D[181][j].charCodeAt(0) !== 0xFFFD) { e[D[181][j]] = 46336 + j; d[46336 + j] = D[181][j];}\nD[182] = \"����������������������������������������������������������������禓禔禕禖禗禘禙禛禜禝禞禟禠禡禢禣禤禥禦禨禩禪禫禬禭禮禯禰禱禲禴禵禶禷禸禼禿秂秄秅秇秈秊秌秎秏秐秓秔秖秗秙秚秛秜秝秞秠秡秢秥秨秪�秬秮秱秲秳秴秵秶秷秹秺秼秾秿稁稄稅稇稈稉稊稌稏稐稑稒稓稕稖稘稙稛稜丁盯叮钉顶鼎锭定订丢东冬董懂动栋侗恫冻洞兜抖斗陡豆逗痘都督毒犊独读堵睹赌杜镀肚度渡妒端短锻段断缎堆兑队对墩吨蹲敦顿囤钝盾遁掇哆多夺垛躲朵跺舵剁惰堕蛾峨鹅俄额讹娥恶厄扼遏鄂饿恩而儿耳尔饵洱二�\".split(\"\");\nfor(j = 0; j != D[182].length; ++j) if(D[182][j].charCodeAt(0) !== 0xFFFD) { e[D[182][j]] = 46592 + j; d[46592 + j] = D[182][j];}\nD[183] = \"����������������������������������������������������������������稝稟稡稢稤稥稦稧稨稩稪稫稬稭種稯稰稱稲稴稵稶稸稺稾穀穁穂穃穄穅穇穈穉穊穋穌積穎穏穐穒穓穔穕穖穘穙穚穛穜穝穞穟穠穡穢穣穤穥穦穧穨�穩穪穫穬穭穮穯穱穲穳穵穻穼穽穾窂窅窇窉窊窋窌窎窏窐窓窔窙窚窛窞窡窢贰发罚筏伐乏阀法珐藩帆番翻樊矾钒繁凡烦反返范贩犯饭泛坊芳方肪房防妨仿访纺放菲非啡飞肥匪诽吠肺废沸费芬酚吩氛分纷坟焚汾粉奋份忿愤粪丰封枫蜂峰锋风疯烽逢冯缝讽奉凤佛否夫敷肤孵扶拂辐幅氟符伏俘服�\".split(\"\");\nfor(j = 0; j != D[183].length; ++j) if(D[183][j].charCodeAt(0) !== 0xFFFD) { e[D[183][j]] = 46848 + j; d[46848 + j] = D[183][j];}\nD[184] = \"����������������������������������������������������������������窣窤窧窩窪窫窮窯窰窱窲窴窵窶窷窸窹窺窻窼窽窾竀竁竂竃竄竅竆竇竈竉竊竌竍竎竏竐竑竒竓竔竕竗竘竚竛竜竝竡竢竤竧竨竩竪竫竬竮竰竱竲竳�竴竵競竷竸竻竼竾笀笁笂笅笇笉笌笍笎笐笒笓笖笗笘笚笜笝笟笡笢笣笧笩笭浮涪福袱弗甫抚辅俯釜斧脯腑府腐赴副覆赋复傅付阜父腹负富讣附妇缚咐噶嘎该改概钙盖溉干甘杆柑竿肝赶感秆敢赣冈刚钢缸肛纲岗港杠篙皋高膏羔糕搞镐稿告哥歌搁戈鸽胳疙割革葛格蛤阁隔铬个各给根跟耕更庚羹�\".split(\"\");\nfor(j = 0; j != D[184].length; ++j) if(D[184][j].charCodeAt(0) !== 0xFFFD) { e[D[184][j]] = 47104 + j; d[47104 + j] = D[184][j];}\nD[185] = \"����������������������������������������������������������������笯笰笲笴笵笶笷笹笻笽笿筀筁筂筃筄筆筈筊筍筎筓筕筗筙筜筞筟筡筣筤筥筦筧筨筩筪筫筬筭筯筰筳筴筶筸筺筼筽筿箁箂箃箄箆箇箈箉箊箋箌箎箏�箑箒箓箖箘箙箚箛箞箟箠箣箤箥箮箯箰箲箳箵箶箷箹箺箻箼箽箾箿節篂篃範埂耿梗工攻功恭龚供躬公宫弓巩汞拱贡共钩勾沟苟狗垢构购够辜菇咕箍估沽孤姑鼓古蛊骨谷股故顾固雇刮瓜剐寡挂褂乖拐怪棺关官冠观管馆罐惯灌贯光广逛瑰规圭硅归龟闺轨鬼诡癸桂柜跪贵刽辊滚棍锅郭国果裹过哈�\".split(\"\");\nfor(j = 0; j != D[185].length; ++j) if(D[185][j].charCodeAt(0) !== 0xFFFD) { e[D[185][j]] = 47360 + j; d[47360 + j] = D[185][j];}\nD[186] = \"����������������������������������������������������������������篅篈築篊篋篍篎篏篐篒篔篕篖篗篘篛篜篞篟篠篢篣篤篧篨篩篫篬篭篯篰篲篳篴篵篶篸篹篺篻篽篿簀簁簂簃簄簅簆簈簉簊簍簎簐簑簒簓簔簕簗簘簙�簚簛簜簝簞簠簡簢簣簤簥簨簩簫簬簭簮簯簰簱簲簳簴簵簶簷簹簺簻簼簽簾籂骸孩海氦亥害骇酣憨邯韩含涵寒函喊罕翰撼捍旱憾悍焊汗汉夯杭航壕嚎豪毫郝好耗号浩呵喝荷菏核禾和何合盒貉阂河涸赫褐鹤贺嘿黑痕很狠恨哼亨横衡恒轰哄烘虹鸿洪宏弘红喉侯猴吼厚候后呼乎忽瑚壶葫胡蝴狐糊湖�\".split(\"\");\nfor(j = 0; j != D[186].length; ++j) if(D[186][j].charCodeAt(0) !== 0xFFFD) { e[D[186][j]] = 47616 + j; d[47616 + j] = D[186][j];}\nD[187] = \"����������������������������������������������������������������籃籄籅籆籇籈籉籊籋籌籎籏籐籑籒籓籔籕籖籗籘籙籚籛籜籝籞籟籠籡籢籣籤籥籦籧籨籩籪籫籬籭籮籯籰籱籲籵籶籷籸籹籺籾籿粀粁粂粃粄粅粆粇�粈粊粋粌粍粎粏粐粓粔粖粙粚粛粠粡粣粦粧粨粩粫粬粭粯粰粴粵粶粷粸粺粻弧虎唬护互沪户花哗华猾滑画划化话槐徊怀淮坏欢环桓还缓换患唤痪豢焕涣宦幻荒慌黄磺蝗簧皇凰惶煌晃幌恍谎灰挥辉徽恢蛔回毁悔慧卉惠晦贿秽会烩汇讳诲绘荤昏婚魂浑混豁活伙火获或惑霍货祸击圾基机畸稽积箕�\".split(\"\");\nfor(j = 0; j != D[187].length; ++j) if(D[187][j].charCodeAt(0) !== 0xFFFD) { e[D[187][j]] = 47872 + j; d[47872 + j] = D[187][j];}\nD[188] = \"����������������������������������������������������������������粿糀糂糃糄糆糉糋糎糏糐糑糒糓糔糘糚糛糝糞糡糢糣糤糥糦糧糩糪糫糬糭糮糰糱糲糳糴糵糶糷糹糺糼糽糾糿紀紁紂紃約紅紆紇紈紉紋紌納紎紏紐�紑紒紓純紕紖紗紘紙級紛紜紝紞紟紡紣紤紥紦紨紩紪紬紭紮細紱紲紳紴紵紶肌饥迹激讥鸡姬绩缉吉极棘辑籍集及急疾汲即嫉级挤几脊己蓟技冀季伎祭剂悸济寄寂计记既忌际妓继纪嘉枷夹佳家加荚颊贾甲钾假稼价架驾嫁歼监坚尖笺间煎兼肩艰奸缄茧检柬碱硷拣捡简俭剪减荐槛鉴践贱见键箭件�\".split(\"\");\nfor(j = 0; j != D[188].length; ++j) if(D[188][j].charCodeAt(0) !== 0xFFFD) { e[D[188][j]] = 48128 + j; d[48128 + j] = D[188][j];}\nD[189] = \"����������������������������������������������������������������紷紸紹紺紻紼紽紾紿絀絁終絃組絅絆絇絈絉絊絋経絍絎絏結絑絒絓絔絕絖絗絘絙絚絛絜絝絞絟絠絡絢絣絤絥給絧絨絩絪絫絬絭絯絰統絲絳絴絵絶�絸絹絺絻絼絽絾絿綀綁綂綃綄綅綆綇綈綉綊綋綌綍綎綏綐綑綒經綔綕綖綗綘健舰剑饯渐溅涧建僵姜将浆江疆蒋桨奖讲匠酱降蕉椒礁焦胶交郊浇骄娇嚼搅铰矫侥脚狡角饺缴绞剿教酵轿较叫窖揭接皆秸街阶截劫节桔杰捷睫竭洁结解姐戒藉芥界借介疥诫届巾筋斤金今津襟紧锦仅谨进靳晋禁近烬浸�\".split(\"\");\nfor(j = 0; j != D[189].length; ++j) if(D[189][j].charCodeAt(0) !== 0xFFFD) { e[D[189][j]] = 48384 + j; d[48384 + j] = D[189][j];}\nD[190] = \"����������������������������������������������������������������継続綛綜綝綞綟綠綡綢綣綤綥綧綨綩綪綫綬維綯綰綱網綳綴綵綶綷綸綹綺綻綼綽綾綿緀緁緂緃緄緅緆緇緈緉緊緋緌緍緎総緐緑緒緓緔緕緖緗緘緙�線緛緜緝緞緟締緡緢緣緤緥緦緧編緩緪緫緬緭緮緯緰緱緲緳練緵緶緷緸緹緺尽劲荆兢茎睛晶鲸京惊精粳经井警景颈静境敬镜径痉靖竟竞净炯窘揪究纠玖韭久灸九酒厩救旧臼舅咎就疚鞠拘狙疽居驹菊局咀矩举沮聚拒据巨具距踞锯俱句惧炬剧捐鹃娟倦眷卷绢撅攫抉掘倔爵觉决诀绝均菌钧军君峻�\".split(\"\");\nfor(j = 0; j != D[190].length; ++j) if(D[190][j].charCodeAt(0) !== 0xFFFD) { e[D[190][j]] = 48640 + j; d[48640 + j] = D[190][j];}\nD[191] = \"����������������������������������������������������������������緻緼緽緾緿縀縁縂縃縄縅縆縇縈縉縊縋縌縍縎縏縐縑縒縓縔縕縖縗縘縙縚縛縜縝縞縟縠縡縢縣縤縥縦縧縨縩縪縫縬縭縮縯縰縱縲縳縴縵縶縷縸縹�縺縼總績縿繀繂繃繄繅繆繈繉繊繋繌繍繎繏繐繑繒繓織繕繖繗繘繙繚繛繜繝俊竣浚郡骏喀咖卡咯开揩楷凯慨刊堪勘坎砍看康慷糠扛抗亢炕考拷烤靠坷苛柯棵磕颗科壳咳可渴克刻客课肯啃垦恳坑吭空恐孔控抠口扣寇枯哭窟苦酷库裤夸垮挎跨胯块筷侩快宽款匡筐狂框矿眶旷况亏盔岿窥葵奎魁傀�\".split(\"\");\nfor(j = 0; j != D[191].length; ++j) if(D[191][j].charCodeAt(0) !== 0xFFFD) { e[D[191][j]] = 48896 + j; d[48896 + j] = D[191][j];}\nD[192] = \"����������������������������������������������������������������繞繟繠繡繢繣繤繥繦繧繨繩繪繫繬繭繮繯繰繱繲繳繴繵繶繷繸繹繺繻繼繽繾繿纀纁纃纄纅纆纇纈纉纊纋續纍纎纏纐纑纒纓纔纕纖纗纘纙纚纜纝纞�纮纴纻纼绖绤绬绹缊缐缞缷缹缻缼缽缾缿罀罁罃罆罇罈罉罊罋罌罍罎罏罒罓馈愧溃坤昆捆困括扩廓阔垃拉喇蜡腊辣啦莱来赖蓝婪栏拦篮阑兰澜谰揽览懒缆烂滥琅榔狼廊郎朗浪捞劳牢老佬姥酪烙涝勒乐雷镭蕾磊累儡垒擂肋类泪棱楞冷厘梨犁黎篱狸离漓理李里鲤礼莉荔吏栗丽厉励砾历利傈例俐�\".split(\"\");\nfor(j = 0; j != D[192].length; ++j) if(D[192][j].charCodeAt(0) !== 0xFFFD) { e[D[192][j]] = 49152 + j; d[49152 + j] = D[192][j];}\nD[193] = \"����������������������������������������������������������������罖罙罛罜罝罞罠罣罤罥罦罧罫罬罭罯罰罳罵罶罷罸罺罻罼罽罿羀羂羃羄羅羆羇羈羉羋羍羏羐羑羒羓羕羖羗羘羙羛羜羠羢羣羥羦羨義羪羫羬羭羮羱�羳羴羵羶羷羺羻羾翀翂翃翄翆翇翈翉翋翍翏翐翑習翓翖翗翙翚翛翜翝翞翢翣痢立粒沥隶力璃哩俩联莲连镰廉怜涟帘敛脸链恋炼练粮凉梁粱良两辆量晾亮谅撩聊僚疗燎寥辽潦了撂镣廖料列裂烈劣猎琳林磷霖临邻鳞淋凛赁吝拎玲菱零龄铃伶羚凌灵陵岭领另令溜琉榴硫馏留刘瘤流柳六龙聋咙笼窿�\".split(\"\");\nfor(j = 0; j != D[193].length; ++j) if(D[193][j].charCodeAt(0) !== 0xFFFD) { e[D[193][j]] = 49408 + j; d[49408 + j] = D[193][j];}\nD[194] = \"����������������������������������������������������������������翤翧翨翪翫翬翭翯翲翴翵翶翷翸翹翺翽翾翿耂耇耈耉耊耎耏耑耓耚耛耝耞耟耡耣耤耫耬耭耮耯耰耲耴耹耺耼耾聀聁聄聅聇聈聉聎聏聐聑聓聕聖聗�聙聛聜聝聞聟聠聡聢聣聤聥聦聧聨聫聬聭聮聯聰聲聳聴聵聶職聸聹聺聻聼聽隆垄拢陇楼娄搂篓漏陋芦卢颅庐炉掳卤虏鲁麓碌露路赂鹿潞禄录陆戮驴吕铝侣旅履屡缕虑氯律率滤绿峦挛孪滦卵乱掠略抡轮伦仑沦纶论萝螺罗逻锣箩骡裸落洛骆络妈麻玛码蚂马骂嘛吗埋买麦卖迈脉瞒馒蛮满蔓曼慢漫�\".split(\"\");\nfor(j = 0; j != D[194].length; ++j) if(D[194][j].charCodeAt(0) !== 0xFFFD) { e[D[194][j]] = 49664 + j; d[49664 + j] = D[194][j];}\nD[195] = \"����������������������������������������������������������������聾肁肂肅肈肊肍肎肏肐肑肒肔肕肗肙肞肣肦肧肨肬肰肳肵肶肸肹肻胅胇胈胉胊胋胏胐胑胒胓胔胕胘胟胠胢胣胦胮胵胷胹胻胾胿脀脁脃脄脅脇脈脋�脌脕脗脙脛脜脝脟脠脡脢脣脤脥脦脧脨脩脪脫脭脮脰脳脴脵脷脹脺脻脼脽脿谩芒茫盲氓忙莽猫茅锚毛矛铆卯茂冒帽貌贸么玫枚梅酶霉煤没眉媒镁每美昧寐妹媚门闷们萌蒙檬盟锰猛梦孟眯醚靡糜迷谜弥米秘觅泌蜜密幂棉眠绵冕免勉娩缅面苗描瞄藐秒渺庙妙蔑灭民抿皿敏悯闽明螟鸣铭名命谬摸�\".split(\"\");\nfor(j = 0; j != D[195].length; ++j) if(D[195][j].charCodeAt(0) !== 0xFFFD) { e[D[195][j]] = 49920 + j; d[49920 + j] = D[195][j];}\nD[196] = \"����������������������������������������������������������������腀腁腂腃腄腅腇腉腍腎腏腒腖腗腘腛腜腝腞腟腡腢腣腤腦腨腪腫腬腯腲腳腵腶腷腸膁膃膄膅膆膇膉膋膌膍膎膐膒膓膔膕膖膗膙膚膞膟膠膡膢膤膥�膧膩膫膬膭膮膯膰膱膲膴膵膶膷膸膹膼膽膾膿臄臅臇臈臉臋臍臎臏臐臑臒臓摹蘑模膜磨摩魔抹末莫墨默沫漠寞陌谋牟某拇牡亩姆母墓暮幕募慕木目睦牧穆拿哪呐钠那娜纳氖乃奶耐奈南男难囊挠脑恼闹淖呢馁内嫩能妮霓倪泥尼拟你匿腻逆溺蔫拈年碾撵捻念娘酿鸟尿捏聂孽啮镊镍涅您柠狞凝宁�\".split(\"\");\nfor(j = 0; j != D[196].length; ++j) if(D[196][j].charCodeAt(0) !== 0xFFFD) { e[D[196][j]] = 50176 + j; d[50176 + j] = D[196][j];}\nD[197] = \"����������������������������������������������������������������臔臕臖臗臘臙臚臛臜臝臞臟臠臡臢臤臥臦臨臩臫臮臯臰臱臲臵臶臷臸臹臺臽臿舃與興舉舊舋舎舏舑舓舕舖舗舘舙舚舝舠舤舥舦舧舩舮舲舺舼舽舿�艀艁艂艃艅艆艈艊艌艍艎艐艑艒艓艔艕艖艗艙艛艜艝艞艠艡艢艣艤艥艦艧艩拧泞牛扭钮纽脓浓农弄奴努怒女暖虐疟挪懦糯诺哦欧鸥殴藕呕偶沤啪趴爬帕怕琶拍排牌徘湃派攀潘盘磐盼畔判叛乓庞旁耪胖抛咆刨炮袍跑泡呸胚培裴赔陪配佩沛喷盆砰抨烹澎彭蓬棚硼篷膨朋鹏捧碰坯砒霹批披劈琵毗�\".split(\"\");\nfor(j = 0; j != D[197].length; ++j) if(D[197][j].charCodeAt(0) !== 0xFFFD) { e[D[197][j]] = 50432 + j; d[50432 + j] = D[197][j];}\nD[198] = \"����������������������������������������������������������������艪艫艬艭艱艵艶艷艸艻艼芀芁芃芅芆芇芉芌芐芓芔芕芖芚芛芞芠芢芣芧芲芵芶芺芻芼芿苀苂苃苅苆苉苐苖苙苚苝苢苧苨苩苪苬苭苮苰苲苳苵苶苸�苺苼苽苾苿茀茊茋茍茐茒茓茖茘茙茝茞茟茠茡茢茣茤茥茦茩茪茮茰茲茷茻茽啤脾疲皮匹痞僻屁譬篇偏片骗飘漂瓢票撇瞥拼频贫品聘乒坪苹萍平凭瓶评屏坡泼颇婆破魄迫粕剖扑铺仆莆葡菩蒲埔朴圃普浦谱曝瀑期欺栖戚妻七凄漆柒沏其棋奇歧畦崎脐齐旗祈祁骑起岂乞企启契砌器气迄弃汽泣讫掐�\".split(\"\");\nfor(j = 0; j != D[198].length; ++j) if(D[198][j].charCodeAt(0) !== 0xFFFD) { e[D[198][j]] = 50688 + j; d[50688 + j] = D[198][j];}\nD[199] = \"����������������������������������������������������������������茾茿荁荂荄荅荈荊荋荌荍荎荓荕荖荗荘荙荝荢荰荱荲荳荴荵荶荹荺荾荿莀莁莂莃莄莇莈莊莋莌莍莏莐莑莔莕莖莗莙莚莝莟莡莢莣莤莥莦莧莬莭莮�莯莵莻莾莿菂菃菄菆菈菉菋菍菎菐菑菒菓菕菗菙菚菛菞菢菣菤菦菧菨菫菬菭恰洽牵扦钎铅千迁签仟谦乾黔钱钳前潜遣浅谴堑嵌欠歉枪呛腔羌墙蔷强抢橇锹敲悄桥瞧乔侨巧鞘撬翘峭俏窍切茄且怯窃钦侵亲秦琴勤芹擒禽寝沁青轻氢倾卿清擎晴氰情顷请庆琼穷秋丘邱球求囚酋泅趋区蛆曲躯屈驱渠�\".split(\"\");\nfor(j = 0; j != D[199].length; ++j) if(D[199][j].charCodeAt(0) !== 0xFFFD) { e[D[199][j]] = 50944 + j; d[50944 + j] = D[199][j];}\nD[200] = \"����������������������������������������������������������������菮華菳菴菵菶菷菺菻菼菾菿萀萂萅萇萈萉萊萐萒萓萔萕萖萗萙萚萛萞萟萠萡萢萣萩萪萫萬萭萮萯萰萲萳萴萵萶萷萹萺萻萾萿葀葁葂葃葄葅葇葈葉�葊葋葌葍葎葏葐葒葓葔葕葖葘葝葞葟葠葢葤葥葦葧葨葪葮葯葰葲葴葷葹葻葼取娶龋趣去圈颧权醛泉全痊拳犬券劝缺炔瘸却鹊榷确雀裙群然燃冉染瓤壤攘嚷让饶扰绕惹热壬仁人忍韧任认刃妊纫扔仍日戎茸蓉荣融熔溶容绒冗揉柔肉茹蠕儒孺如辱乳汝入褥软阮蕊瑞锐闰润若弱撒洒萨腮鳃塞赛三叁�\".split(\"\");\nfor(j = 0; j != D[200].length; ++j) if(D[200][j].charCodeAt(0) !== 0xFFFD) { e[D[200][j]] = 51200 + j; d[51200 + j] = D[200][j];}\nD[201] = \"����������������������������������������������������������������葽葾葿蒀蒁蒃蒄蒅蒆蒊蒍蒏蒐蒑蒒蒓蒔蒕蒖蒘蒚蒛蒝蒞蒟蒠蒢蒣蒤蒥蒦蒧蒨蒩蒪蒫蒬蒭蒮蒰蒱蒳蒵蒶蒷蒻蒼蒾蓀蓂蓃蓅蓆蓇蓈蓋蓌蓎蓏蓒蓔蓕蓗�蓘蓙蓚蓛蓜蓞蓡蓢蓤蓧蓨蓩蓪蓫蓭蓮蓯蓱蓲蓳蓴蓵蓶蓷蓸蓹蓺蓻蓽蓾蔀蔁蔂伞散桑嗓丧搔骚扫嫂瑟色涩森僧莎砂杀刹沙纱傻啥煞筛晒珊苫杉山删煽衫闪陕擅赡膳善汕扇缮墒伤商赏晌上尚裳梢捎稍烧芍勺韶少哨邵绍奢赊蛇舌舍赦摄射慑涉社设砷申呻伸身深娠绅神沈审婶甚肾慎渗声生甥牲升绳�\".split(\"\");\nfor(j = 0; j != D[201].length; ++j) if(D[201][j].charCodeAt(0) !== 0xFFFD) { e[D[201][j]] = 51456 + j; d[51456 + j] = D[201][j];}\nD[202] = \"����������������������������������������������������������������蔃蔄蔅蔆蔇蔈蔉蔊蔋蔍蔎蔏蔐蔒蔔蔕蔖蔘蔙蔛蔜蔝蔞蔠蔢蔣蔤蔥蔦蔧蔨蔩蔪蔭蔮蔯蔰蔱蔲蔳蔴蔵蔶蔾蔿蕀蕁蕂蕄蕅蕆蕇蕋蕌蕍蕎蕏蕐蕑蕒蕓蕔蕕�蕗蕘蕚蕛蕜蕝蕟蕠蕡蕢蕣蕥蕦蕧蕩蕪蕫蕬蕭蕮蕯蕰蕱蕳蕵蕶蕷蕸蕼蕽蕿薀薁省盛剩胜圣师失狮施湿诗尸虱十石拾时什食蚀实识史矢使屎驶始式示士世柿事拭誓逝势是嗜噬适仕侍释饰氏市恃室视试收手首守寿授售受瘦兽蔬枢梳殊抒输叔舒淑疏书赎孰熟薯暑曙署蜀黍鼠属术述树束戍竖墅庶数漱�\".split(\"\");\nfor(j = 0; j != D[202].length; ++j) if(D[202][j].charCodeAt(0) !== 0xFFFD) { e[D[202][j]] = 51712 + j; d[51712 + j] = D[202][j];}\nD[203] = \"����������������������������������������������������������������薂薃薆薈薉薊薋薌薍薎薐薑薒薓薔薕薖薗薘薙薚薝薞薟薠薡薢薣薥薦薧薩薫薬薭薱薲薳薴薵薶薸薺薻薼薽薾薿藀藂藃藄藅藆藇藈藊藋藌藍藎藑藒�藔藖藗藘藙藚藛藝藞藟藠藡藢藣藥藦藧藨藪藫藬藭藮藯藰藱藲藳藴藵藶藷藸恕刷耍摔衰甩帅栓拴霜双爽谁水睡税吮瞬顺舜说硕朔烁斯撕嘶思私司丝死肆寺嗣四伺似饲巳松耸怂颂送宋讼诵搜艘擞嗽苏酥俗素速粟僳塑溯宿诉肃酸蒜算虽隋随绥髓碎岁穗遂隧祟孙损笋蓑梭唆缩琐索锁所塌他它她塔�\".split(\"\");\nfor(j = 0; j != D[203].length; ++j) if(D[203][j].charCodeAt(0) !== 0xFFFD) { e[D[203][j]] = 51968 + j; d[51968 + j] = D[203][j];}\nD[204] = \"����������������������������������������������������������������藹藺藼藽藾蘀蘁蘂蘃蘄蘆蘇蘈蘉蘊蘋蘌蘍蘎蘏蘐蘒蘓蘔蘕蘗蘘蘙蘚蘛蘜蘝蘞蘟蘠蘡蘢蘣蘤蘥蘦蘨蘪蘫蘬蘭蘮蘯蘰蘱蘲蘳蘴蘵蘶蘷蘹蘺蘻蘽蘾蘿虀�虁虂虃虄虅虆虇虈虉虊虋虌虒虓處虖虗虘虙虛虜虝號虠虡虣虤虥虦虧虨虩虪獭挞蹋踏胎苔抬台泰酞太态汰坍摊贪瘫滩坛檀痰潭谭谈坦毯袒碳探叹炭汤塘搪堂棠膛唐糖倘躺淌趟烫掏涛滔绦萄桃逃淘陶讨套特藤腾疼誊梯剔踢锑提题蹄啼体替嚏惕涕剃屉天添填田甜恬舔腆挑条迢眺跳贴铁帖厅听烃�\".split(\"\");\nfor(j = 0; j != D[204].length; ++j) if(D[204][j].charCodeAt(0) !== 0xFFFD) { e[D[204][j]] = 52224 + j; d[52224 + j] = D[204][j];}\nD[205] = \"����������������������������������������������������������������虭虯虰虲虳虴虵虶虷虸蚃蚄蚅蚆蚇蚈蚉蚎蚏蚐蚑蚒蚔蚖蚗蚘蚙蚚蚛蚞蚟蚠蚡蚢蚥蚦蚫蚭蚮蚲蚳蚷蚸蚹蚻蚼蚽蚾蚿蛁蛂蛃蛅蛈蛌蛍蛒蛓蛕蛖蛗蛚蛜�蛝蛠蛡蛢蛣蛥蛦蛧蛨蛪蛫蛬蛯蛵蛶蛷蛺蛻蛼蛽蛿蜁蜄蜅蜆蜋蜌蜎蜏蜐蜑蜔蜖汀廷停亭庭挺艇通桐酮瞳同铜彤童桶捅筒统痛偷投头透凸秃突图徒途涂屠土吐兔湍团推颓腿蜕褪退吞屯臀拖托脱鸵陀驮驼椭妥拓唾挖哇蛙洼娃瓦袜歪外豌弯湾玩顽丸烷完碗挽晚皖惋宛婉万腕汪王亡枉网往旺望忘妄威�\".split(\"\");\nfor(j = 0; j != D[205].length; ++j) if(D[205][j].charCodeAt(0) !== 0xFFFD) { e[D[205][j]] = 52480 + j; d[52480 + j] = D[205][j];}\nD[206] = \"����������������������������������������������������������������蜙蜛蜝蜟蜠蜤蜦蜧蜨蜪蜫蜬蜭蜯蜰蜲蜳蜵蜶蜸蜹蜺蜼蜽蝀蝁蝂蝃蝄蝅蝆蝊蝋蝍蝏蝐蝑蝒蝔蝕蝖蝘蝚蝛蝜蝝蝞蝟蝡蝢蝦蝧蝨蝩蝪蝫蝬蝭蝯蝱蝲蝳蝵�蝷蝸蝹蝺蝿螀螁螄螆螇螉螊螌螎螏螐螑螒螔螕螖螘螙螚螛螜螝螞螠螡螢螣螤巍微危韦违桅围唯惟为潍维苇萎委伟伪尾纬未蔚味畏胃喂魏位渭谓尉慰卫瘟温蚊文闻纹吻稳紊问嗡翁瓮挝蜗涡窝我斡卧握沃巫呜钨乌污诬屋无芜梧吾吴毋武五捂午舞伍侮坞戊雾晤物勿务悟误昔熙析西硒矽晰嘻吸锡牺�\".split(\"\");\nfor(j = 0; j != D[206].length; ++j) if(D[206][j].charCodeAt(0) !== 0xFFFD) { e[D[206][j]] = 52736 + j; d[52736 + j] = D[206][j];}\nD[207] = \"����������������������������������������������������������������螥螦螧螩螪螮螰螱螲螴螶螷螸螹螻螼螾螿蟁蟂蟃蟄蟅蟇蟈蟉蟌蟍蟎蟏蟐蟔蟕蟖蟗蟘蟙蟚蟜蟝蟞蟟蟡蟢蟣蟤蟦蟧蟨蟩蟫蟬蟭蟯蟰蟱蟲蟳蟴蟵蟶蟷蟸�蟺蟻蟼蟽蟿蠀蠁蠂蠄蠅蠆蠇蠈蠉蠋蠌蠍蠎蠏蠐蠑蠒蠔蠗蠘蠙蠚蠜蠝蠞蠟蠠蠣稀息希悉膝夕惜熄烯溪汐犀檄袭席习媳喜铣洗系隙戏细瞎虾匣霞辖暇峡侠狭下厦夏吓掀锨先仙鲜纤咸贤衔舷闲涎弦嫌显险现献县腺馅羡宪陷限线相厢镶香箱襄湘乡翔祥详想响享项巷橡像向象萧硝霄削哮嚣销消宵淆晓�\".split(\"\");\nfor(j = 0; j != D[207].length; ++j) if(D[207][j].charCodeAt(0) !== 0xFFFD) { e[D[207][j]] = 52992 + j; d[52992 + j] = D[207][j];}\nD[208] = \"����������������������������������������������������������������蠤蠥蠦蠧蠨蠩蠪蠫蠬蠭蠮蠯蠰蠱蠳蠴蠵蠶蠷蠸蠺蠻蠽蠾蠿衁衂衃衆衇衈衉衊衋衎衏衐衑衒術衕衖衘衚衛衜衝衞衟衠衦衧衪衭衯衱衳衴衵衶衸衹衺�衻衼袀袃袆袇袉袊袌袎袏袐袑袓袔袕袗袘袙袚袛袝袞袟袠袡袣袥袦袧袨袩袪小孝校肖啸笑效楔些歇蝎鞋协挟携邪斜胁谐写械卸蟹懈泄泻谢屑薪芯锌欣辛新忻心信衅星腥猩惺兴刑型形邢行醒幸杏性姓兄凶胸匈汹雄熊休修羞朽嗅锈秀袖绣墟戌需虚嘘须徐许蓄酗叙旭序畜恤絮婿绪续轩喧宣悬旋玄�\".split(\"\");\nfor(j = 0; j != D[208].length; ++j) if(D[208][j].charCodeAt(0) !== 0xFFFD) { e[D[208][j]] = 53248 + j; d[53248 + j] = D[208][j];}\nD[209] = \"����������������������������������������������������������������袬袮袯袰袲袳袴袵袶袸袹袺袻袽袾袿裀裃裄裇裈裊裋裌裍裏裐裑裓裖裗裚裛補裝裞裠裡裦裧裩裪裫裬裭裮裯裲裵裶裷裺裻製裿褀褁褃褄褅褆複褈�褉褋褌褍褎褏褑褔褕褖褗褘褜褝褞褟褠褢褣褤褦褧褨褩褬褭褮褯褱褲褳褵褷选癣眩绚靴薛学穴雪血勋熏循旬询寻驯巡殉汛训讯逊迅压押鸦鸭呀丫芽牙蚜崖衙涯雅哑亚讶焉咽阉烟淹盐严研蜒岩延言颜阎炎沿奄掩眼衍演艳堰燕厌砚雁唁彦焰宴谚验殃央鸯秧杨扬佯疡羊洋阳氧仰痒养样漾邀腰妖瑶�\".split(\"\");\nfor(j = 0; j != D[209].length; ++j) if(D[209][j].charCodeAt(0) !== 0xFFFD) { e[D[209][j]] = 53504 + j; d[53504 + j] = D[209][j];}\nD[210] = \"����������������������������������������������������������������褸褹褺褻褼褽褾褿襀襂襃襅襆襇襈襉襊襋襌襍襎襏襐襑襒襓襔襕襖襗襘襙襚襛襜襝襠襡襢襣襤襥襧襨襩襪襫襬襭襮襯襰襱襲襳襴襵襶襷襸襹襺襼�襽襾覀覂覄覅覇覈覉覊見覌覍覎規覐覑覒覓覔覕視覗覘覙覚覛覜覝覞覟覠覡摇尧遥窑谣姚咬舀药要耀椰噎耶爷野冶也页掖业叶曳腋夜液一壹医揖铱依伊衣颐夷遗移仪胰疑沂宜姨彝椅蚁倚已乙矣以艺抑易邑屹亿役臆逸肄疫亦裔意毅忆义益溢诣议谊译异翼翌绎茵荫因殷音阴姻吟银淫寅饮尹引隐�\".split(\"\");\nfor(j = 0; j != D[210].length; ++j) if(D[210][j].charCodeAt(0) !== 0xFFFD) { e[D[210][j]] = 53760 + j; d[53760 + j] = D[210][j];}\nD[211] = \"����������������������������������������������������������������覢覣覤覥覦覧覨覩親覫覬覭覮覯覰覱覲観覴覵覶覷覸覹覺覻覼覽覾覿觀觃觍觓觔觕觗觘觙觛觝觟觠觡觢觤觧觨觩觪觬觭觮觰觱觲觴觵觶觷觸觹觺�觻觼觽觾觿訁訂訃訄訅訆計訉訊訋訌訍討訏訐訑訒訓訔訕訖託記訙訚訛訜訝印英樱婴鹰应缨莹萤营荧蝇迎赢盈影颖硬映哟拥佣臃痈庸雍踊蛹咏泳涌永恿勇用幽优悠忧尤由邮铀犹油游酉有友右佑釉诱又幼迂淤于盂榆虞愚舆余俞逾鱼愉渝渔隅予娱雨与屿禹宇语羽玉域芋郁吁遇喻峪御愈欲狱育誉�\".split(\"\");\nfor(j = 0; j != D[211].length; ++j) if(D[211][j].charCodeAt(0) !== 0xFFFD) { e[D[211][j]] = 54016 + j; d[54016 + j] = D[211][j];}\nD[212] = \"����������������������������������������������������������������訞訟訠訡訢訣訤訥訦訧訨訩訪訫訬設訮訯訰許訲訳訴訵訶訷訸訹診註証訽訿詀詁詂詃詄詅詆詇詉詊詋詌詍詎詏詐詑詒詓詔評詖詗詘詙詚詛詜詝詞�詟詠詡詢詣詤詥試詧詨詩詪詫詬詭詮詯詰話該詳詴詵詶詷詸詺詻詼詽詾詿誀浴寓裕预豫驭鸳渊冤元垣袁原援辕园员圆猿源缘远苑愿怨院曰约越跃钥岳粤月悦阅耘云郧匀陨允运蕴酝晕韵孕匝砸杂栽哉灾宰载再在咱攒暂赞赃脏葬遭糟凿藻枣早澡蚤躁噪造皂灶燥责择则泽贼怎增憎曾赠扎喳渣札轧�\".split(\"\");\nfor(j = 0; j != D[212].length; ++j) if(D[212][j].charCodeAt(0) !== 0xFFFD) { e[D[212][j]] = 54272 + j; d[54272 + j] = D[212][j];}\nD[213] = \"����������������������������������������������������������������誁誂誃誄誅誆誇誈誋誌認誎誏誐誑誒誔誕誖誗誘誙誚誛誜誝語誟誠誡誢誣誤誥誦誧誨誩說誫説読誮誯誰誱課誳誴誵誶誷誸誹誺誻誼誽誾調諀諁諂�諃諄諅諆談諈諉諊請諌諍諎諏諐諑諒諓諔諕論諗諘諙諚諛諜諝諞諟諠諡諢諣铡闸眨栅榨咋乍炸诈摘斋宅窄债寨瞻毡詹粘沾盏斩辗崭展蘸栈占战站湛绽樟章彰漳张掌涨杖丈帐账仗胀瘴障招昭找沼赵照罩兆肇召遮折哲蛰辙者锗蔗这浙珍斟真甄砧臻贞针侦枕疹诊震振镇阵蒸挣睁征狰争怔整拯正政�\".split(\"\");\nfor(j = 0; j != D[213].length; ++j) if(D[213][j].charCodeAt(0) !== 0xFFFD) { e[D[213][j]] = 54528 + j; d[54528 + j] = D[213][j];}\nD[214] = \"����������������������������������������������������������������諤諥諦諧諨諩諪諫諬諭諮諯諰諱諲諳諴諵諶諷諸諹諺諻諼諽諾諿謀謁謂謃謄謅謆謈謉謊謋謌謍謎謏謐謑謒謓謔謕謖謗謘謙謚講謜謝謞謟謠謡謢謣�謤謥謧謨謩謪謫謬謭謮謯謰謱謲謳謴謵謶謷謸謹謺謻謼謽謾謿譀譁譂譃譄譅帧症郑证芝枝支吱蜘知肢脂汁之织职直植殖执值侄址指止趾只旨纸志挚掷至致置帜峙制智秩稚质炙痔滞治窒中盅忠钟衷终种肿重仲众舟周州洲诌粥轴肘帚咒皱宙昼骤珠株蛛朱猪诸诛逐竹烛煮拄瞩嘱主著柱助蛀贮铸筑�\".split(\"\");\nfor(j = 0; j != D[214].length; ++j) if(D[214][j].charCodeAt(0) !== 0xFFFD) { e[D[214][j]] = 54784 + j; d[54784 + j] = D[214][j];}\nD[215] = \"����������������������������������������������������������������譆譇譈證譊譋譌譍譎譏譐譑譒譓譔譕譖譗識譙譚譛譜譝譞譟譠譡譢譣譤譥譧譨譩譪譫譭譮譯議譱譲譳譴譵譶護譸譹譺譻譼譽譾譿讀讁讂讃讄讅讆�讇讈讉變讋讌讍讎讏讐讑讒讓讔讕讖讗讘讙讚讛讜讝讞讟讬讱讻诇诐诪谉谞住注祝驻抓爪拽专砖转撰赚篆桩庄装妆撞壮状椎锥追赘坠缀谆准捉拙卓桌琢茁酌啄着灼浊兹咨资姿滋淄孜紫仔籽滓子自渍字鬃棕踪宗综总纵邹走奏揍租足卒族祖诅阻组钻纂嘴醉最罪尊遵昨左佐柞做作坐座�\".split(\"\");\nfor(j = 0; j != D[215].length; ++j) if(D[215][j].charCodeAt(0) !== 0xFFFD) { e[D[215][j]] = 55040 + j; d[55040 + j] = D[215][j];}\nD[216] = \"����������������������������������������������������������������谸谹谺谻谼谽谾谿豀豂豃豄豅豈豊豋豍豎豏豐豑豒豓豔豖豗豘豙豛豜豝豞豟豠豣豤豥豦豧豨豩豬豭豮豯豰豱豲豴豵豶豷豻豼豽豾豿貀貁貃貄貆貇�貈貋貍貎貏貐貑貒貓貕貖貗貙貚貛貜貝貞貟負財貢貣貤貥貦貧貨販貪貫責貭亍丌兀丐廿卅丕亘丞鬲孬噩丨禺丿匕乇夭爻卮氐囟胤馗毓睾鼗丶亟鼐乜乩亓芈孛啬嘏仄厍厝厣厥厮靥赝匚叵匦匮匾赜卦卣刂刈刎刭刳刿剀剌剞剡剜蒯剽劂劁劐劓冂罔亻仃仉仂仨仡仫仞伛仳伢佤仵伥伧伉伫佞佧攸佚佝�\".split(\"\");\nfor(j = 0; j != D[216].length; ++j) if(D[216][j].charCodeAt(0) !== 0xFFFD) { e[D[216][j]] = 55296 + j; d[55296 + j] = D[216][j];}\nD[217] = \"����������������������������������������������������������������貮貯貰貱貲貳貴貵貶買貸貹貺費貼貽貾貿賀賁賂賃賄賅賆資賈賉賊賋賌賍賎賏賐賑賒賓賔賕賖賗賘賙賚賛賜賝賞賟賠賡賢賣賤賥賦賧賨賩質賫賬�賭賮賯賰賱賲賳賴賵賶賷賸賹賺賻購賽賾賿贀贁贂贃贄贅贆贇贈贉贊贋贌贍佟佗伲伽佶佴侑侉侃侏佾佻侪佼侬侔俦俨俪俅俚俣俜俑俟俸倩偌俳倬倏倮倭俾倜倌倥倨偾偃偕偈偎偬偻傥傧傩傺僖儆僭僬僦僮儇儋仝氽佘佥俎龠汆籴兮巽黉馘冁夔勹匍訇匐凫夙兕亠兖亳衮袤亵脔裒禀嬴蠃羸冫冱冽冼�\".split(\"\");\nfor(j = 0; j != D[217].length; ++j) if(D[217][j].charCodeAt(0) !== 0xFFFD) { e[D[217][j]] = 55552 + j; d[55552 + j] = D[217][j];}\nD[218] = \"����������������������������������������������������������������贎贏贐贑贒贓贔贕贖贗贘贙贚贛贜贠赑赒赗赟赥赨赩赪赬赮赯赱赲赸赹赺赻赼赽赾赿趀趂趃趆趇趈趉趌趍趎趏趐趒趓趕趖趗趘趙趚趛趜趝趞趠趡�趢趤趥趦趧趨趩趪趫趬趭趮趯趰趲趶趷趹趻趽跀跁跂跅跇跈跉跊跍跐跒跓跔凇冖冢冥讠讦讧讪讴讵讷诂诃诋诏诎诒诓诔诖诘诙诜诟诠诤诨诩诮诰诳诶诹诼诿谀谂谄谇谌谏谑谒谔谕谖谙谛谘谝谟谠谡谥谧谪谫谮谯谲谳谵谶卩卺阝阢阡阱阪阽阼陂陉陔陟陧陬陲陴隈隍隗隰邗邛邝邙邬邡邴邳邶邺�\".split(\"\");\nfor(j = 0; j != D[218].length; ++j) if(D[218][j].charCodeAt(0) !== 0xFFFD) { e[D[218][j]] = 55808 + j; d[55808 + j] = D[218][j];}\nD[219] = \"����������������������������������������������������������������跕跘跙跜跠跡跢跥跦跧跩跭跮跰跱跲跴跶跼跾跿踀踁踂踃踄踆踇踈踋踍踎踐踑踒踓踕踖踗踘踙踚踛踜踠踡踤踥踦踧踨踫踭踰踲踳踴踶踷踸踻踼踾�踿蹃蹅蹆蹌蹍蹎蹏蹐蹓蹔蹕蹖蹗蹘蹚蹛蹜蹝蹞蹟蹠蹡蹢蹣蹤蹥蹧蹨蹪蹫蹮蹱邸邰郏郅邾郐郄郇郓郦郢郜郗郛郫郯郾鄄鄢鄞鄣鄱鄯鄹酃酆刍奂劢劬劭劾哿勐勖勰叟燮矍廴凵凼鬯厶弁畚巯坌垩垡塾墼壅壑圩圬圪圳圹圮圯坜圻坂坩垅坫垆坼坻坨坭坶坳垭垤垌垲埏垧垴垓垠埕埘埚埙埒垸埴埯埸埤埝�\".split(\"\");\nfor(j = 0; j != D[219].length; ++j) if(D[219][j].charCodeAt(0) !== 0xFFFD) { e[D[219][j]] = 56064 + j; d[56064 + j] = D[219][j];}\nD[220] = \"����������������������������������������������������������������蹳蹵蹷蹸蹹蹺蹻蹽蹾躀躂躃躄躆躈躉躊躋躌躍躎躑躒躓躕躖躗躘躙躚躛躝躟躠躡躢躣躤躥躦躧躨躩躪躭躮躰躱躳躴躵躶躷躸躹躻躼躽躾躿軀軁軂�軃軄軅軆軇軈軉車軋軌軍軏軐軑軒軓軔軕軖軗軘軙軚軛軜軝軞軟軠軡転軣軤堋堍埽埭堀堞堙塄堠塥塬墁墉墚墀馨鼙懿艹艽艿芏芊芨芄芎芑芗芙芫芸芾芰苈苊苣芘芷芮苋苌苁芩芴芡芪芟苄苎芤苡茉苷苤茏茇苜苴苒苘茌苻苓茑茚茆茔茕苠苕茜荑荛荜茈莒茼茴茱莛荞茯荏荇荃荟荀茗荠茭茺茳荦荥�\".split(\"\");\nfor(j = 0; j != D[220].length; ++j) if(D[220][j].charCodeAt(0) !== 0xFFFD) { e[D[220][j]] = 56320 + j; d[56320 + j] = D[220][j];}\nD[221] = \"����������������������������������������������������������������軥軦軧軨軩軪軫軬軭軮軯軰軱軲軳軴軵軶軷軸軹軺軻軼軽軾軿輀輁輂較輄輅輆輇輈載輊輋輌輍輎輏輐輑輒輓輔輕輖輗輘輙輚輛輜輝輞輟輠輡輢輣�輤輥輦輧輨輩輪輫輬輭輮輯輰輱輲輳輴輵輶輷輸輹輺輻輼輽輾輿轀轁轂轃轄荨茛荩荬荪荭荮莰荸莳莴莠莪莓莜莅荼莶莩荽莸荻莘莞莨莺莼菁萁菥菘堇萘萋菝菽菖萜萸萑萆菔菟萏萃菸菹菪菅菀萦菰菡葜葑葚葙葳蒇蒈葺蒉葸萼葆葩葶蒌蒎萱葭蓁蓍蓐蓦蒽蓓蓊蒿蒺蓠蒡蒹蒴蒗蓥蓣蔌甍蔸蓰蔹蔟蔺�\".split(\"\");\nfor(j = 0; j != D[221].length; ++j) if(D[221][j].charCodeAt(0) !== 0xFFFD) { e[D[221][j]] = 56576 + j; d[56576 + j] = D[221][j];}\nD[222] = \"����������������������������������������������������������������轅轆轇轈轉轊轋轌轍轎轏轐轑轒轓轔轕轖轗轘轙轚轛轜轝轞轟轠轡轢轣轤轥轪辀辌辒辝辠辡辢辤辥辦辧辪辬辭辮辯農辳辴辵辷辸辺辻込辿迀迃迆�迉迊迋迌迍迏迒迖迗迚迠迡迣迧迬迯迱迲迴迵迶迺迻迼迾迿逇逈逌逎逓逕逘蕖蔻蓿蓼蕙蕈蕨蕤蕞蕺瞢蕃蕲蕻薤薨薇薏蕹薮薜薅薹薷薰藓藁藜藿蘧蘅蘩蘖蘼廾弈夼奁耷奕奚奘匏尢尥尬尴扌扪抟抻拊拚拗拮挢拶挹捋捃掭揶捱捺掎掴捭掬掊捩掮掼揲揸揠揿揄揞揎摒揆掾摅摁搋搛搠搌搦搡摞撄摭撖�\".split(\"\");\nfor(j = 0; j != D[222].length; ++j) if(D[222][j].charCodeAt(0) !== 0xFFFD) { e[D[222][j]] = 56832 + j; d[56832 + j] = D[222][j];}\nD[223] = \"����������������������������������������������������������������這逜連逤逥逧逨逩逪逫逬逰週進逳逴逷逹逺逽逿遀遃遅遆遈遉遊運遌過達違遖遙遚遜遝遞遟遠遡遤遦遧適遪遫遬遯遰遱遲遳遶遷選遹遺遻遼遾邁�還邅邆邇邉邊邌邍邎邏邐邒邔邖邘邚邜邞邟邠邤邥邧邨邩邫邭邲邷邼邽邿郀摺撷撸撙撺擀擐擗擤擢攉攥攮弋忒甙弑卟叱叽叩叨叻吒吖吆呋呒呓呔呖呃吡呗呙吣吲咂咔呷呱呤咚咛咄呶呦咝哐咭哂咴哒咧咦哓哔呲咣哕咻咿哌哙哚哜咩咪咤哝哏哞唛哧唠哽唔哳唢唣唏唑唧唪啧喏喵啉啭啁啕唿啐唼�\".split(\"\");\nfor(j = 0; j != D[223].length; ++j) if(D[223][j].charCodeAt(0) !== 0xFFFD) { e[D[223][j]] = 57088 + j; d[57088 + j] = D[223][j];}\nD[224] = \"����������������������������������������������������������������郂郃郆郈郉郋郌郍郒郔郕郖郘郙郚郞郟郠郣郤郥郩郪郬郮郰郱郲郳郵郶郷郹郺郻郼郿鄀鄁鄃鄅鄆鄇鄈鄉鄊鄋鄌鄍鄎鄏鄐鄑鄒鄓鄔鄕鄖鄗鄘鄚鄛鄜�鄝鄟鄠鄡鄤鄥鄦鄧鄨鄩鄪鄫鄬鄭鄮鄰鄲鄳鄴鄵鄶鄷鄸鄺鄻鄼鄽鄾鄿酀酁酂酄唷啖啵啶啷唳唰啜喋嗒喃喱喹喈喁喟啾嗖喑啻嗟喽喾喔喙嗪嗷嗉嘟嗑嗫嗬嗔嗦嗝嗄嗯嗥嗲嗳嗌嗍嗨嗵嗤辔嘞嘈嘌嘁嘤嘣嗾嘀嘧嘭噘嘹噗嘬噍噢噙噜噌噔嚆噤噱噫噻噼嚅嚓嚯囔囗囝囡囵囫囹囿圄圊圉圜帏帙帔帑帱帻帼�\".split(\"\");\nfor(j = 0; j != D[224].length; ++j) if(D[224][j].charCodeAt(0) !== 0xFFFD) { e[D[224][j]] = 57344 + j; d[57344 + j] = D[224][j];}\nD[225] = \"����������������������������������������������������������������酅酇酈酑酓酔酕酖酘酙酛酜酟酠酦酧酨酫酭酳酺酻酼醀醁醂醃醄醆醈醊醎醏醓醔醕醖醗醘醙醜醝醞醟醠醡醤醥醦醧醨醩醫醬醰醱醲醳醶醷醸醹醻�醼醽醾醿釀釁釂釃釄釅釆釈釋釐釒釓釔釕釖釗釘釙釚釛針釞釟釠釡釢釣釤釥帷幄幔幛幞幡岌屺岍岐岖岈岘岙岑岚岜岵岢岽岬岫岱岣峁岷峄峒峤峋峥崂崃崧崦崮崤崞崆崛嵘崾崴崽嵬嵛嵯嵝嵫嵋嵊嵩嵴嶂嶙嶝豳嶷巅彳彷徂徇徉後徕徙徜徨徭徵徼衢彡犭犰犴犷犸狃狁狎狍狒狨狯狩狲狴狷猁狳猃狺�\".split(\"\");\nfor(j = 0; j != D[225].length; ++j) if(D[225][j].charCodeAt(0) !== 0xFFFD) { e[D[225][j]] = 57600 + j; d[57600 + j] = D[225][j];}\nD[226] = \"����������������������������������������������������������������釦釧釨釩釪釫釬釭釮釯釰釱釲釳釴釵釶釷釸釹釺釻釼釽釾釿鈀鈁鈂鈃鈄鈅鈆鈇鈈鈉鈊鈋鈌鈍鈎鈏鈐鈑鈒鈓鈔鈕鈖鈗鈘鈙鈚鈛鈜鈝鈞鈟鈠鈡鈢鈣鈤�鈥鈦鈧鈨鈩鈪鈫鈬鈭鈮鈯鈰鈱鈲鈳鈴鈵鈶鈷鈸鈹鈺鈻鈼鈽鈾鈿鉀鉁鉂鉃鉄鉅狻猗猓猡猊猞猝猕猢猹猥猬猸猱獐獍獗獠獬獯獾舛夥飧夤夂饣饧饨饩饪饫饬饴饷饽馀馄馇馊馍馐馑馓馔馕庀庑庋庖庥庠庹庵庾庳赓廒廑廛廨廪膺忄忉忖忏怃忮怄忡忤忾怅怆忪忭忸怙怵怦怛怏怍怩怫怊怿怡恸恹恻恺恂�\".split(\"\");\nfor(j = 0; j != D[226].length; ++j) if(D[226][j].charCodeAt(0) !== 0xFFFD) { e[D[226][j]] = 57856 + j; d[57856 + j] = D[226][j];}\nD[227] = \"����������������������������������������������������������������鉆鉇鉈鉉鉊鉋鉌鉍鉎鉏鉐鉑鉒鉓鉔鉕鉖鉗鉘鉙鉚鉛鉜鉝鉞鉟鉠鉡鉢鉣鉤鉥鉦鉧鉨鉩鉪鉫鉬鉭鉮鉯鉰鉱鉲鉳鉵鉶鉷鉸鉹鉺鉻鉼鉽鉾鉿銀銁銂銃銄銅�銆銇銈銉銊銋銌銍銏銐銑銒銓銔銕銖銗銘銙銚銛銜銝銞銟銠銡銢銣銤銥銦銧恪恽悖悚悭悝悃悒悌悛惬悻悱惝惘惆惚悴愠愦愕愣惴愀愎愫慊慵憬憔憧憷懔懵忝隳闩闫闱闳闵闶闼闾阃阄阆阈阊阋阌阍阏阒阕阖阗阙阚丬爿戕氵汔汜汊沣沅沐沔沌汨汩汴汶沆沩泐泔沭泷泸泱泗沲泠泖泺泫泮沱泓泯泾�\".split(\"\");\nfor(j = 0; j != D[227].length; ++j) if(D[227][j].charCodeAt(0) !== 0xFFFD) { e[D[227][j]] = 58112 + j; d[58112 + j] = D[227][j];}\nD[228] = \"����������������������������������������������������������������銨銩銪銫銬銭銯銰銱銲銳銴銵銶銷銸銹銺銻銼銽銾銿鋀鋁鋂鋃鋄鋅鋆鋇鋉鋊鋋鋌鋍鋎鋏鋐鋑鋒鋓鋔鋕鋖鋗鋘鋙鋚鋛鋜鋝鋞鋟鋠鋡鋢鋣鋤鋥鋦鋧鋨�鋩鋪鋫鋬鋭鋮鋯鋰鋱鋲鋳鋴鋵鋶鋷鋸鋹鋺鋻鋼鋽鋾鋿錀錁錂錃錄錅錆錇錈錉洹洧洌浃浈洇洄洙洎洫浍洮洵洚浏浒浔洳涑浯涞涠浞涓涔浜浠浼浣渚淇淅淞渎涿淠渑淦淝淙渖涫渌涮渫湮湎湫溲湟溆湓湔渲渥湄滟溱溘滠漭滢溥溧溽溻溷滗溴滏溏滂溟潢潆潇漤漕滹漯漶潋潴漪漉漩澉澍澌潸潲潼潺濑�\".split(\"\");\nfor(j = 0; j != D[228].length; ++j) if(D[228][j].charCodeAt(0) !== 0xFFFD) { e[D[228][j]] = 58368 + j; d[58368 + j] = D[228][j];}\nD[229] = \"����������������������������������������������������������������錊錋錌錍錎錏錐錑錒錓錔錕錖錗錘錙錚錛錜錝錞錟錠錡錢錣錤錥錦錧錨錩錪錫錬錭錮錯錰錱録錳錴錵錶錷錸錹錺錻錼錽錿鍀鍁鍂鍃鍄鍅鍆鍇鍈鍉�鍊鍋鍌鍍鍎鍏鍐鍑鍒鍓鍔鍕鍖鍗鍘鍙鍚鍛鍜鍝鍞鍟鍠鍡鍢鍣鍤鍥鍦鍧鍨鍩鍫濉澧澹澶濂濡濮濞濠濯瀚瀣瀛瀹瀵灏灞宀宄宕宓宥宸甯骞搴寤寮褰寰蹇謇辶迓迕迥迮迤迩迦迳迨逅逄逋逦逑逍逖逡逵逶逭逯遄遑遒遐遨遘遢遛暹遴遽邂邈邃邋彐彗彖彘尻咫屐屙孱屣屦羼弪弩弭艴弼鬻屮妁妃妍妩妪妣�\".split(\"\");\nfor(j = 0; j != D[229].length; ++j) if(D[229][j].charCodeAt(0) !== 0xFFFD) { e[D[229][j]] = 58624 + j; d[58624 + j] = D[229][j];}\nD[230] = \"����������������������������������������������������������������鍬鍭鍮鍯鍰鍱鍲鍳鍴鍵鍶鍷鍸鍹鍺鍻鍼鍽鍾鍿鎀鎁鎂鎃鎄鎅鎆鎇鎈鎉鎊鎋鎌鎍鎎鎐鎑鎒鎓鎔鎕鎖鎗鎘鎙鎚鎛鎜鎝鎞鎟鎠鎡鎢鎣鎤鎥鎦鎧鎨鎩鎪鎫�鎬鎭鎮鎯鎰鎱鎲鎳鎴鎵鎶鎷鎸鎹鎺鎻鎼鎽鎾鎿鏀鏁鏂鏃鏄鏅鏆鏇鏈鏉鏋鏌鏍妗姊妫妞妤姒妲妯姗妾娅娆姝娈姣姘姹娌娉娲娴娑娣娓婀婧婊婕娼婢婵胬媪媛婷婺媾嫫媲嫒嫔媸嫠嫣嫱嫖嫦嫘嫜嬉嬗嬖嬲嬷孀尕尜孚孥孳孑孓孢驵驷驸驺驿驽骀骁骅骈骊骐骒骓骖骘骛骜骝骟骠骢骣骥骧纟纡纣纥纨纩�\".split(\"\");\nfor(j = 0; j != D[230].length; ++j) if(D[230][j].charCodeAt(0) !== 0xFFFD) { e[D[230][j]] = 58880 + j; d[58880 + j] = D[230][j];}\nD[231] = \"����������������������������������������������������������������鏎鏏鏐鏑鏒鏓鏔鏕鏗鏘鏙鏚鏛鏜鏝鏞鏟鏠鏡鏢鏣鏤鏥鏦鏧鏨鏩鏪鏫鏬鏭鏮鏯鏰鏱鏲鏳鏴鏵鏶鏷鏸鏹鏺鏻鏼鏽鏾鏿鐀鐁鐂鐃鐄鐅鐆鐇鐈鐉鐊鐋鐌鐍�鐎鐏鐐鐑鐒鐓鐔鐕鐖鐗鐘鐙鐚鐛鐜鐝鐞鐟鐠鐡鐢鐣鐤鐥鐦鐧鐨鐩鐪鐫鐬鐭鐮纭纰纾绀绁绂绉绋绌绐绔绗绛绠绡绨绫绮绯绱绲缍绶绺绻绾缁缂缃缇缈缋缌缏缑缒缗缙缜缛缟缡缢缣缤缥缦缧缪缫缬缭缯缰缱缲缳缵幺畿巛甾邕玎玑玮玢玟珏珂珑玷玳珀珉珈珥珙顼琊珩珧珞玺珲琏琪瑛琦琥琨琰琮琬�\".split(\"\");\nfor(j = 0; j != D[231].length; ++j) if(D[231][j].charCodeAt(0) !== 0xFFFD) { e[D[231][j]] = 59136 + j; d[59136 + j] = D[231][j];}\nD[232] = \"����������������������������������������������������������������鐯鐰鐱鐲鐳鐴鐵鐶鐷鐸鐹鐺鐻鐼鐽鐿鑀鑁鑂鑃鑄鑅鑆鑇鑈鑉鑊鑋鑌鑍鑎鑏鑐鑑鑒鑓鑔鑕鑖鑗鑘鑙鑚鑛鑜鑝鑞鑟鑠鑡鑢鑣鑤鑥鑦鑧鑨鑩鑪鑬鑭鑮鑯�鑰鑱鑲鑳鑴鑵鑶鑷鑸鑹鑺鑻鑼鑽鑾鑿钀钁钂钃钄钑钖钘铇铏铓铔铚铦铻锜锠琛琚瑁瑜瑗瑕瑙瑷瑭瑾璜璎璀璁璇璋璞璨璩璐璧瓒璺韪韫韬杌杓杞杈杩枥枇杪杳枘枧杵枨枞枭枋杷杼柰栉柘栊柩枰栌柙枵柚枳柝栀柃枸柢栎柁柽栲栳桠桡桎桢桄桤梃栝桕桦桁桧桀栾桊桉栩梵梏桴桷梓桫棂楮棼椟椠棹�\".split(\"\");\nfor(j = 0; j != D[232].length; ++j) if(D[232][j].charCodeAt(0) !== 0xFFFD) { e[D[232][j]] = 59392 + j; d[59392 + j] = D[232][j];}\nD[233] = \"����������������������������������������������������������������锧锳锽镃镈镋镕镚镠镮镴镵長镸镹镺镻镼镽镾門閁閂閃閄閅閆閇閈閉閊開閌閍閎閏閐閑閒間閔閕閖閗閘閙閚閛閜閝閞閟閠閡関閣閤閥閦閧閨閩閪�閫閬閭閮閯閰閱閲閳閴閵閶閷閸閹閺閻閼閽閾閿闀闁闂闃闄闅闆闇闈闉闊闋椤棰椋椁楗棣椐楱椹楠楂楝榄楫榀榘楸椴槌榇榈槎榉楦楣楹榛榧榻榫榭槔榱槁槊槟榕槠榍槿樯槭樗樘橥槲橄樾檠橐橛樵檎橹樽樨橘橼檑檐檩檗檫猷獒殁殂殇殄殒殓殍殚殛殡殪轫轭轱轲轳轵轶轸轷轹轺轼轾辁辂辄辇辋�\".split(\"\");\nfor(j = 0; j != D[233].length; ++j) if(D[233][j].charCodeAt(0) !== 0xFFFD) { e[D[233][j]] = 59648 + j; d[59648 + j] = D[233][j];}\nD[234] = \"����������������������������������������������������������������闌闍闎闏闐闑闒闓闔闕闖闗闘闙闚闛關闝闞闟闠闡闢闣闤闥闦闧闬闿阇阓阘阛阞阠阣阤阥阦阧阨阩阫阬阭阯阰阷阸阹阺阾陁陃陊陎陏陑陒陓陖陗�陘陙陚陜陝陞陠陣陥陦陫陭陮陯陰陱陳陸陹険陻陼陽陾陿隀隁隂隃隄隇隉隊辍辎辏辘辚軎戋戗戛戟戢戡戥戤戬臧瓯瓴瓿甏甑甓攴旮旯旰昊昙杲昃昕昀炅曷昝昴昱昶昵耆晟晔晁晏晖晡晗晷暄暌暧暝暾曛曜曦曩贲贳贶贻贽赀赅赆赈赉赇赍赕赙觇觊觋觌觎觏觐觑牮犟牝牦牯牾牿犄犋犍犏犒挈挲掰�\".split(\"\");\nfor(j = 0; j != D[234].length; ++j) if(D[234][j].charCodeAt(0) !== 0xFFFD) { e[D[234][j]] = 59904 + j; d[59904 + j] = D[234][j];}\nD[235] = \"����������������������������������������������������������������隌階隑隒隓隕隖隚際隝隞隟隠隡隢隣隤隥隦隨隩險隫隬隭隮隯隱隲隴隵隷隸隺隻隿雂雃雈雊雋雐雑雓雔雖雗雘雙雚雛雜雝雞雟雡離難雤雥雦雧雫�雬雭雮雰雱雲雴雵雸雺電雼雽雿霂霃霅霊霋霌霐霑霒霔霕霗霘霙霚霛霝霟霠搿擘耄毪毳毽毵毹氅氇氆氍氕氘氙氚氡氩氤氪氲攵敕敫牍牒牖爰虢刖肟肜肓肼朊肽肱肫肭肴肷胧胨胩胪胛胂胄胙胍胗朐胝胫胱胴胭脍脎胲胼朕脒豚脶脞脬脘脲腈腌腓腴腙腚腱腠腩腼腽腭腧塍媵膈膂膑滕膣膪臌朦臊膻�\".split(\"\");\nfor(j = 0; j != D[235].length; ++j) if(D[235][j].charCodeAt(0) !== 0xFFFD) { e[D[235][j]] = 60160 + j; d[60160 + j] = D[235][j];}\nD[236] = \"����������������������������������������������������������������霡霢霣霤霥霦霧霨霩霫霬霮霯霱霳霴霵霶霷霺霻霼霽霿靀靁靂靃靄靅靆靇靈靉靊靋靌靍靎靏靐靑靔靕靗靘靚靜靝靟靣靤靦靧靨靪靫靬靭靮靯靰靱�靲靵靷靸靹靺靻靽靾靿鞀鞁鞂鞃鞄鞆鞇鞈鞉鞊鞌鞎鞏鞐鞓鞕鞖鞗鞙鞚鞛鞜鞝臁膦欤欷欹歃歆歙飑飒飓飕飙飚殳彀毂觳斐齑斓於旆旄旃旌旎旒旖炀炜炖炝炻烀炷炫炱烨烊焐焓焖焯焱煳煜煨煅煲煊煸煺熘熳熵熨熠燠燔燧燹爝爨灬焘煦熹戾戽扃扈扉礻祀祆祉祛祜祓祚祢祗祠祯祧祺禅禊禚禧禳忑忐�\".split(\"\");\nfor(j = 0; j != D[236].length; ++j) if(D[236][j].charCodeAt(0) !== 0xFFFD) { e[D[236][j]] = 60416 + j; d[60416 + j] = D[236][j];}\nD[237] = \"����������������������������������������������������������������鞞鞟鞡鞢鞤鞥鞦鞧鞨鞩鞪鞬鞮鞰鞱鞳鞵鞶鞷鞸鞹鞺鞻鞼鞽鞾鞿韀韁韂韃韄韅韆韇韈韉韊韋韌韍韎韏韐韑韒韓韔韕韖韗韘韙韚韛韜韝韞韟韠韡韢韣�韤韥韨韮韯韰韱韲韴韷韸韹韺韻韼韽韾響頀頁頂頃頄項順頇須頉頊頋頌頍頎怼恝恚恧恁恙恣悫愆愍慝憩憝懋懑戆肀聿沓泶淼矶矸砀砉砗砘砑斫砭砜砝砹砺砻砟砼砥砬砣砩硎硭硖硗砦硐硇硌硪碛碓碚碇碜碡碣碲碹碥磔磙磉磬磲礅磴礓礤礞礴龛黹黻黼盱眄眍盹眇眈眚眢眙眭眦眵眸睐睑睇睃睚睨�\".split(\"\");\nfor(j = 0; j != D[237].length; ++j) if(D[237][j].charCodeAt(0) !== 0xFFFD) { e[D[237][j]] = 60672 + j; d[60672 + j] = D[237][j];}\nD[238] = \"����������������������������������������������������������������頏預頑頒頓頔頕頖頗領頙頚頛頜頝頞頟頠頡頢頣頤頥頦頧頨頩頪頫頬頭頮頯頰頱頲頳頴頵頶頷頸頹頺頻頼頽頾頿顀顁顂顃顄顅顆顇顈顉顊顋題額�顎顏顐顑顒顓顔顕顖顗願顙顚顛顜顝類顟顠顡顢顣顤顥顦顧顨顩顪顫顬顭顮睢睥睿瞍睽瞀瞌瞑瞟瞠瞰瞵瞽町畀畎畋畈畛畲畹疃罘罡罟詈罨罴罱罹羁罾盍盥蠲钅钆钇钋钊钌钍钏钐钔钗钕钚钛钜钣钤钫钪钭钬钯钰钲钴钶钷钸钹钺钼钽钿铄铈铉铊铋铌铍铎铐铑铒铕铖铗铙铘铛铞铟铠铢铤铥铧铨铪�\".split(\"\");\nfor(j = 0; j != D[238].length; ++j) if(D[238][j].charCodeAt(0) !== 0xFFFD) { e[D[238][j]] = 60928 + j; d[60928 + j] = D[238][j];}\nD[239] = \"����������������������������������������������������������������顯顰顱顲顳顴颋颎颒颕颙颣風颩颪颫颬颭颮颯颰颱颲颳颴颵颶颷颸颹颺颻颼颽颾颿飀飁飂飃飄飅飆飇飈飉飊飋飌飍飏飐飔飖飗飛飜飝飠飡飢飣飤�飥飦飩飪飫飬飭飮飯飰飱飲飳飴飵飶飷飸飹飺飻飼飽飾飿餀餁餂餃餄餅餆餇铩铫铮铯铳铴铵铷铹铼铽铿锃锂锆锇锉锊锍锎锏锒锓锔锕锖锘锛锝锞锟锢锪锫锩锬锱锲锴锶锷锸锼锾锿镂锵镄镅镆镉镌镎镏镒镓镔镖镗镘镙镛镞镟镝镡镢镤镥镦镧镨镩镪镫镬镯镱镲镳锺矧矬雉秕秭秣秫稆嵇稃稂稞稔�\".split(\"\");\nfor(j = 0; j != D[239].length; ++j) if(D[239][j].charCodeAt(0) !== 0xFFFD) { e[D[239][j]] = 61184 + j; d[61184 + j] = D[239][j];}\nD[240] = \"����������������������������������������������������������������餈餉養餋餌餎餏餑餒餓餔餕餖餗餘餙餚餛餜餝餞餟餠餡餢餣餤餥餦餧館餩餪餫餬餭餯餰餱餲餳餴餵餶餷餸餹餺餻餼餽餾餿饀饁饂饃饄饅饆饇饈饉�饊饋饌饍饎饏饐饑饒饓饖饗饘饙饚饛饜饝饞饟饠饡饢饤饦饳饸饹饻饾馂馃馉稹稷穑黏馥穰皈皎皓皙皤瓞瓠甬鸠鸢鸨鸩鸪鸫鸬鸲鸱鸶鸸鸷鸹鸺鸾鹁鹂鹄鹆鹇鹈鹉鹋鹌鹎鹑鹕鹗鹚鹛鹜鹞鹣鹦鹧鹨鹩鹪鹫鹬鹱鹭鹳疒疔疖疠疝疬疣疳疴疸痄疱疰痃痂痖痍痣痨痦痤痫痧瘃痱痼痿瘐瘀瘅瘌瘗瘊瘥瘘瘕瘙�\".split(\"\");\nfor(j = 0; j != D[240].length; ++j) if(D[240][j].charCodeAt(0) !== 0xFFFD) { e[D[240][j]] = 61440 + j; d[61440 + j] = D[240][j];}\nD[241] = \"����������������������������������������������������������������馌馎馚馛馜馝馞馟馠馡馢馣馤馦馧馩馪馫馬馭馮馯馰馱馲馳馴馵馶馷馸馹馺馻馼馽馾馿駀駁駂駃駄駅駆駇駈駉駊駋駌駍駎駏駐駑駒駓駔駕駖駗駘�駙駚駛駜駝駞駟駠駡駢駣駤駥駦駧駨駩駪駫駬駭駮駯駰駱駲駳駴駵駶駷駸駹瘛瘼瘢瘠癀瘭瘰瘿瘵癃瘾瘳癍癞癔癜癖癫癯翊竦穸穹窀窆窈窕窦窠窬窨窭窳衤衩衲衽衿袂袢裆袷袼裉裢裎裣裥裱褚裼裨裾裰褡褙褓褛褊褴褫褶襁襦襻疋胥皲皴矜耒耔耖耜耠耢耥耦耧耩耨耱耋耵聃聆聍聒聩聱覃顸颀颃�\".split(\"\");\nfor(j = 0; j != D[241].length; ++j) if(D[241][j].charCodeAt(0) !== 0xFFFD) { e[D[241][j]] = 61696 + j; d[61696 + j] = D[241][j];}\nD[242] = \"����������������������������������������������������������������駺駻駼駽駾駿騀騁騂騃騄騅騆騇騈騉騊騋騌騍騎騏騐騑騒験騔騕騖騗騘騙騚騛騜騝騞騟騠騡騢騣騤騥騦騧騨騩騪騫騬騭騮騯騰騱騲騳騴騵騶騷騸�騹騺騻騼騽騾騿驀驁驂驃驄驅驆驇驈驉驊驋驌驍驎驏驐驑驒驓驔驕驖驗驘驙颉颌颍颏颔颚颛颞颟颡颢颥颦虍虔虬虮虿虺虼虻蚨蚍蚋蚬蚝蚧蚣蚪蚓蚩蚶蛄蚵蛎蚰蚺蚱蚯蛉蛏蚴蛩蛱蛲蛭蛳蛐蜓蛞蛴蛟蛘蛑蜃蜇蛸蜈蜊蜍蜉蜣蜻蜞蜥蜮蜚蜾蝈蜴蜱蜩蜷蜿螂蜢蝽蝾蝻蝠蝰蝌蝮螋蝓蝣蝼蝤蝙蝥螓螯螨蟒�\".split(\"\");\nfor(j = 0; j != D[242].length; ++j) if(D[242][j].charCodeAt(0) !== 0xFFFD) { e[D[242][j]] = 61952 + j; d[61952 + j] = D[242][j];}\nD[243] = \"����������������������������������������������������������������驚驛驜驝驞驟驠驡驢驣驤驥驦驧驨驩驪驫驲骃骉骍骎骔骕骙骦骩骪骫骬骭骮骯骲骳骴骵骹骻骽骾骿髃髄髆髇髈髉髊髍髎髏髐髒體髕髖髗髙髚髛髜�髝髞髠髢髣髤髥髧髨髩髪髬髮髰髱髲髳髴髵髶髷髸髺髼髽髾髿鬀鬁鬂鬄鬅鬆蟆螈螅螭螗螃螫蟥螬螵螳蟋蟓螽蟑蟀蟊蟛蟪蟠蟮蠖蠓蟾蠊蠛蠡蠹蠼缶罂罄罅舐竺竽笈笃笄笕笊笫笏筇笸笪笙笮笱笠笥笤笳笾笞筘筚筅筵筌筝筠筮筻筢筲筱箐箦箧箸箬箝箨箅箪箜箢箫箴篑篁篌篝篚篥篦篪簌篾篼簏簖簋�\".split(\"\");\nfor(j = 0; j != D[243].length; ++j) if(D[243][j].charCodeAt(0) !== 0xFFFD) { e[D[243][j]] = 62208 + j; d[62208 + j] = D[243][j];}\nD[244] = \"����������������������������������������������������������������鬇鬉鬊鬋鬌鬍鬎鬐鬑鬒鬔鬕鬖鬗鬘鬙鬚鬛鬜鬝鬞鬠鬡鬢鬤鬥鬦鬧鬨鬩鬪鬫鬬鬭鬮鬰鬱鬳鬴鬵鬶鬷鬸鬹鬺鬽鬾鬿魀魆魊魋魌魎魐魒魓魕魖魗魘魙魚�魛魜魝魞魟魠魡魢魣魤魥魦魧魨魩魪魫魬魭魮魯魰魱魲魳魴魵魶魷魸魹魺魻簟簪簦簸籁籀臾舁舂舄臬衄舡舢舣舭舯舨舫舸舻舳舴舾艄艉艋艏艚艟艨衾袅袈裘裟襞羝羟羧羯羰羲籼敉粑粝粜粞粢粲粼粽糁糇糌糍糈糅糗糨艮暨羿翎翕翥翡翦翩翮翳糸絷綦綮繇纛麸麴赳趄趔趑趱赧赭豇豉酊酐酎酏酤�\".split(\"\");\nfor(j = 0; j != D[244].length; ++j) if(D[244][j].charCodeAt(0) !== 0xFFFD) { e[D[244][j]] = 62464 + j; d[62464 + j] = D[244][j];}\nD[245] = \"����������������������������������������������������������������魼魽魾魿鮀鮁鮂鮃鮄鮅鮆鮇鮈鮉鮊鮋鮌鮍鮎鮏鮐鮑鮒鮓鮔鮕鮖鮗鮘鮙鮚鮛鮜鮝鮞鮟鮠鮡鮢鮣鮤鮥鮦鮧鮨鮩鮪鮫鮬鮭鮮鮯鮰鮱鮲鮳鮴鮵鮶鮷鮸鮹鮺�鮻鮼鮽鮾鮿鯀鯁鯂鯃鯄鯅鯆鯇鯈鯉鯊鯋鯌鯍鯎鯏鯐鯑鯒鯓鯔鯕鯖鯗鯘鯙鯚鯛酢酡酰酩酯酽酾酲酴酹醌醅醐醍醑醢醣醪醭醮醯醵醴醺豕鹾趸跫踅蹙蹩趵趿趼趺跄跖跗跚跞跎跏跛跆跬跷跸跣跹跻跤踉跽踔踝踟踬踮踣踯踺蹀踹踵踽踱蹉蹁蹂蹑蹒蹊蹰蹶蹼蹯蹴躅躏躔躐躜躞豸貂貊貅貘貔斛觖觞觚觜�\".split(\"\");\nfor(j = 0; j != D[245].length; ++j) if(D[245][j].charCodeAt(0) !== 0xFFFD) { e[D[245][j]] = 62720 + j; d[62720 + j] = D[245][j];}\nD[246] = \"����������������������������������������������������������������鯜鯝鯞鯟鯠鯡鯢鯣鯤鯥鯦鯧鯨鯩鯪鯫鯬鯭鯮鯯鯰鯱鯲鯳鯴鯵鯶鯷鯸鯹鯺鯻鯼鯽鯾鯿鰀鰁鰂鰃鰄鰅鰆鰇鰈鰉鰊鰋鰌鰍鰎鰏鰐鰑鰒鰓鰔鰕鰖鰗鰘鰙鰚�鰛鰜鰝鰞鰟鰠鰡鰢鰣鰤鰥鰦鰧鰨鰩鰪鰫鰬鰭鰮鰯鰰鰱鰲鰳鰴鰵鰶鰷鰸鰹鰺鰻觥觫觯訾謦靓雩雳雯霆霁霈霏霎霪霭霰霾龀龃龅龆龇龈龉龊龌黾鼋鼍隹隼隽雎雒瞿雠銎銮鋈錾鍪鏊鎏鐾鑫鱿鲂鲅鲆鲇鲈稣鲋鲎鲐鲑鲒鲔鲕鲚鲛鲞鲟鲠鲡鲢鲣鲥鲦鲧鲨鲩鲫鲭鲮鲰鲱鲲鲳鲴鲵鲶鲷鲺鲻鲼鲽鳄鳅鳆鳇鳊鳋�\".split(\"\");\nfor(j = 0; j != D[246].length; ++j) if(D[246][j].charCodeAt(0) !== 0xFFFD) { e[D[246][j]] = 62976 + j; d[62976 + j] = D[246][j];}\nD[247] = \"����������������������������������������������������������������鰼鰽鰾鰿鱀鱁鱂鱃鱄鱅鱆鱇鱈鱉鱊鱋鱌鱍鱎鱏鱐鱑鱒鱓鱔鱕鱖鱗鱘鱙鱚鱛鱜鱝鱞鱟鱠鱡鱢鱣鱤鱥鱦鱧鱨鱩鱪鱫鱬鱭鱮鱯鱰鱱鱲鱳鱴鱵鱶鱷鱸鱹鱺�鱻鱽鱾鲀鲃鲄鲉鲊鲌鲏鲓鲖鲗鲘鲙鲝鲪鲬鲯鲹鲾鲿鳀鳁鳂鳈鳉鳑鳒鳚鳛鳠鳡鳌鳍鳎鳏鳐鳓鳔鳕鳗鳘鳙鳜鳝鳟鳢靼鞅鞑鞒鞔鞯鞫鞣鞲鞴骱骰骷鹘骶骺骼髁髀髅髂髋髌髑魅魃魇魉魈魍魑飨餍餮饕饔髟髡髦髯髫髻髭髹鬈鬏鬓鬟鬣麽麾縻麂麇麈麋麒鏖麝麟黛黜黝黠黟黢黩黧黥黪黯鼢鼬鼯鼹鼷鼽鼾齄�\".split(\"\");\nfor(j = 0; j != D[247].length; ++j) if(D[247][j].charCodeAt(0) !== 0xFFFD) { e[D[247][j]] = 63232 + j; d[63232 + j] = D[247][j];}\nD[248] = \"����������������������������������������������������������������鳣鳤鳥鳦鳧鳨鳩鳪鳫鳬鳭鳮鳯鳰鳱鳲鳳鳴鳵鳶鳷鳸鳹鳺鳻鳼鳽鳾鳿鴀鴁鴂鴃鴄鴅鴆鴇鴈鴉鴊鴋鴌鴍鴎鴏鴐鴑鴒鴓鴔鴕鴖鴗鴘鴙鴚鴛鴜鴝鴞鴟鴠鴡�鴢鴣鴤鴥鴦鴧鴨鴩鴪鴫鴬鴭鴮鴯鴰鴱鴲鴳鴴鴵鴶鴷鴸鴹鴺鴻鴼鴽鴾鴿鵀鵁鵂�\".split(\"\");\nfor(j = 0; j != D[248].length; ++j) if(D[248][j].charCodeAt(0) !== 0xFFFD) { e[D[248][j]] = 63488 + j; d[63488 + j] = D[248][j];}\nD[249] = \"����������������������������������������������������������������鵃鵄鵅鵆鵇鵈鵉鵊鵋鵌鵍鵎鵏鵐鵑鵒鵓鵔鵕鵖鵗鵘鵙鵚鵛鵜鵝鵞鵟鵠鵡鵢鵣鵤鵥鵦鵧鵨鵩鵪鵫鵬鵭鵮鵯鵰鵱鵲鵳鵴鵵鵶鵷鵸鵹鵺鵻鵼鵽鵾鵿鶀鶁�鶂鶃鶄鶅鶆鶇鶈鶉鶊鶋鶌鶍鶎鶏鶐鶑鶒鶓鶔鶕鶖鶗鶘鶙鶚鶛鶜鶝鶞鶟鶠鶡鶢�\".split(\"\");\nfor(j = 0; j != D[249].length; ++j) if(D[249][j].charCodeAt(0) !== 0xFFFD) { e[D[249][j]] = 63744 + j; d[63744 + j] = D[249][j];}\nD[250] = \"����������������������������������������������������������������鶣鶤鶥鶦鶧鶨鶩鶪鶫鶬鶭鶮鶯鶰鶱鶲鶳鶴鶵鶶鶷鶸鶹鶺鶻鶼鶽鶾鶿鷀鷁鷂鷃鷄鷅鷆鷇鷈鷉鷊鷋鷌鷍鷎鷏鷐鷑鷒鷓鷔鷕鷖鷗鷘鷙鷚鷛鷜鷝鷞鷟鷠鷡�鷢鷣鷤鷥鷦鷧鷨鷩鷪鷫鷬鷭鷮鷯鷰鷱鷲鷳鷴鷵鷶鷷鷸鷹鷺鷻鷼鷽鷾鷿鸀鸁鸂�\".split(\"\");\nfor(j = 0; j != D[250].length; ++j) if(D[250][j].charCodeAt(0) !== 0xFFFD) { e[D[250][j]] = 64000 + j; d[64000 + j] = D[250][j];}\nD[251] = \"����������������������������������������������������������������鸃鸄鸅鸆鸇鸈鸉鸊鸋鸌鸍鸎鸏鸐鸑鸒鸓鸔鸕鸖鸗鸘鸙鸚鸛鸜鸝鸞鸤鸧鸮鸰鸴鸻鸼鹀鹍鹐鹒鹓鹔鹖鹙鹝鹟鹠鹡鹢鹥鹮鹯鹲鹴鹵鹶鹷鹸鹹鹺鹻鹼鹽麀�麁麃麄麅麆麉麊麌麍麎麏麐麑麔麕麖麗麘麙麚麛麜麞麠麡麢麣麤麥麧麨麩麪�\".split(\"\");\nfor(j = 0; j != D[251].length; ++j) if(D[251][j].charCodeAt(0) !== 0xFFFD) { e[D[251][j]] = 64256 + j; d[64256 + j] = D[251][j];}\nD[252] = \"����������������������������������������������������������������麫麬麭麮麯麰麱麲麳麵麶麷麹麺麼麿黀黁黂黃黅黆黇黈黊黋黌黐黒黓黕黖黗黙黚點黡黣黤黦黨黫黬黭黮黰黱黲黳黴黵黶黷黸黺黽黿鼀鼁鼂鼃鼄鼅�鼆鼇鼈鼉鼊鼌鼏鼑鼒鼔鼕鼖鼘鼚鼛鼜鼝鼞鼟鼡鼣鼤鼥鼦鼧鼨鼩鼪鼫鼭鼮鼰鼱�\".split(\"\");\nfor(j = 0; j != D[252].length; ++j) if(D[252][j].charCodeAt(0) !== 0xFFFD) { e[D[252][j]] = 64512 + j; d[64512 + j] = D[252][j];}\nD[253] = \"����������������������������������������������������������������鼲鼳鼴鼵鼶鼸鼺鼼鼿齀齁齂齃齅齆齇齈齉齊齋齌齍齎齏齒齓齔齕齖齗齘齙齚齛齜齝齞齟齠齡齢齣齤齥齦齧齨齩齪齫齬齭齮齯齰齱齲齳齴齵齶齷齸�齹齺齻齼齽齾龁龂龍龎龏龐龑龒龓龔龕龖龗龘龜龝龞龡龢龣龤龥郎凉秊裏隣�\".split(\"\");\nfor(j = 0; j != D[253].length; ++j) if(D[253][j].charCodeAt(0) !== 0xFFFD) { e[D[253][j]] = 64768 + j; d[64768 + j] = D[253][j];}\nD[254] = \"����������������������������������������������������������������兀嗀﨎﨏﨑﨓﨔礼﨟蘒﨡﨣﨤﨧﨨﨩⺁⺄㑳㑇⺈⺋㖞㘚㘎⺌⺗㥮㤘㧏㧟㩳㧐㭎㱮㳠⺧⺪䁖䅟⺮䌷⺳⺶⺷䎱䎬⺻䏝䓖䙡䙌�䜣䜩䝼䞍⻊䥇䥺䥽䦂䦃䦅䦆䦟䦛䦷䦶䲣䲟䲠䲡䱷䲢䴓䴔䴕䴖䴗䴘䴙䶮�\".split(\"\");\nfor(j = 0; j != D[254].length; ++j) if(D[254][j].charCodeAt(0) !== 0xFFFD) { e[D[254][j]] = 65024 + j; d[65024 + j] = D[254][j];}\nreturn {\"enc\": e, \"dec\": d }; })();\ncptable[57002] = (function(){ var d = [], e = {}, D = [], j;\nD[0] = \"\\u0000\\u0001\\u0002\\u0003\\u0004\\u0005\\u0006\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\u0014\\u0015\\u0016\\u0017\\u0018\\u0019\\u001a\\u001b\\u001c\\u001d\\u001e\\u001f !\\\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~�ँंःअआइईउऊऋऎएऐऍऒओऔऑकखगघङचछजझञटठडढणतथदधनऩपफबभमयय़रऱलळऴवशषसह�ािीुूृॆेैॅॊोौॉ़्।������०१२३४५६७८९�����\".split(\"\");\nfor(j = 0; j != D[0].length; ++j) if(D[0][j].charCodeAt(0) !== 0xFFFD) { e[D[0][j]] = 0 + j; d[0 + j] = D[0][j];}\nD[161] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ॐ����������������������\".split(\"\");\nfor(j = 0; j != D[161].length; ++j) if(D[161][j].charCodeAt(0) !== 0xFFFD) { e[D[161][j]] = 41216 + j; d[41216 + j] = D[161][j];}\nD[166] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ऌ����������������������\".split(\"\");\nfor(j = 0; j != D[166].length; ++j) if(D[166][j].charCodeAt(0) !== 0xFFFD) { e[D[166][j]] = 42496 + j; d[42496 + j] = D[166][j];}\nD[167] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ॡ����������������������\".split(\"\");\nfor(j = 0; j != D[167].length; ++j) if(D[167][j].charCodeAt(0) !== 0xFFFD) { e[D[167][j]] = 42752 + j; d[42752 + j] = D[167][j];}\nD[170] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ॠ����������������������\".split(\"\");\nfor(j = 0; j != D[170].length; ++j) if(D[170][j].charCodeAt(0) !== 0xFFFD) { e[D[170][j]] = 43520 + j; d[43520 + j] = D[170][j];}\nD[179] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������क़����������������������\".split(\"\");\nfor(j = 0; j != D[179].length; ++j) if(D[179][j].charCodeAt(0) !== 0xFFFD) { e[D[179][j]] = 45824 + j; d[45824 + j] = D[179][j];}\nD[180] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ख़����������������������\".split(\"\");\nfor(j = 0; j != D[180].length; ++j) if(D[180][j].charCodeAt(0) !== 0xFFFD) { e[D[180][j]] = 46080 + j; d[46080 + j] = D[180][j];}\nD[181] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ग़����������������������\".split(\"\");\nfor(j = 0; j != D[181].length; ++j) if(D[181][j].charCodeAt(0) !== 0xFFFD) { e[D[181][j]] = 46336 + j; d[46336 + j] = D[181][j];}\nD[186] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ज़����������������������\".split(\"\");\nfor(j = 0; j != D[186].length; ++j) if(D[186][j].charCodeAt(0) !== 0xFFFD) { e[D[186][j]] = 47616 + j; d[47616 + j] = D[186][j];}\nD[191] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ड़����������������������\".split(\"\");\nfor(j = 0; j != D[191].length; ++j) if(D[191][j].charCodeAt(0) !== 0xFFFD) { e[D[191][j]] = 48896 + j; d[48896 + j] = D[191][j];}\nD[192] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ढ़����������������������\".split(\"\");\nfor(j = 0; j != D[192].length; ++j) if(D[192][j].charCodeAt(0) !== 0xFFFD) { e[D[192][j]] = 49152 + j; d[49152 + j] = D[192][j];}\nD[201] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������फ़����������������������\".split(\"\");\nfor(j = 0; j != D[201].length; ++j) if(D[201][j].charCodeAt(0) !== 0xFFFD) { e[D[201][j]] = 51456 + j; d[51456 + j] = D[201][j];}\nD[219] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ॢ����������������������\".split(\"\");\nfor(j = 0; j != D[219].length; ++j) if(D[219][j].charCodeAt(0) !== 0xFFFD) { e[D[219][j]] = 56064 + j; d[56064 + j] = D[219][j];}\nD[220] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ॣ����������������������\".split(\"\");\nfor(j = 0; j != D[220].length; ++j) if(D[220][j].charCodeAt(0) !== 0xFFFD) { e[D[220][j]] = 56320 + j; d[56320 + j] = D[220][j];}\nD[223] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ॄ����������������������\".split(\"\");\nfor(j = 0; j != D[223].length; ++j) if(D[223][j].charCodeAt(0) !== 0xFFFD) { e[D[223][j]] = 57088 + j; d[57088 + j] = D[223][j];}\nD[234] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ऽ����������������������\".split(\"\");\nfor(j = 0; j != D[234].length; ++j) if(D[234][j].charCodeAt(0) !== 0xFFFD) { e[D[234][j]] = 59904 + j; d[59904 + j] = D[234][j];}\nD[239] = \"����������������������������������������������������������������९९९९९९९९९९९९������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[239].length; ++j) if(D[239][j].charCodeAt(0) !== 0xFFFD) { e[D[239][j]] = 61184 + j; d[61184 + j] = D[239][j];}\nD[240] = \"����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������॒������॰����������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[240].length; ++j) if(D[240][j].charCodeAt(0) !== 0xFFFD) { e[D[240][j]] = 61440 + j; d[61440 + j] = D[240][j];}\nreturn {\"enc\": e, \"dec\": d }; })();\ncptable[57003] = (function(){ var d = [], e = {}, D = [], j;\nD[0] = \"\\u0000\\u0001\\u0002\\u0003\\u0004\\u0005\\u0006\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\u0014\\u0015\\u0016\\u0017\\u0018\\u0019\\u001a\\u001b\\u001c\\u001d\\u001e\\u001f !\\\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~�ঁংঃঅআইঈউঊঋএএঐঐওওঔঔকখগঘঙচছজঝঞটঠডঢণতথদধননপফবভমযয়ররলললবশষসহ�ািীুূৃেেৈৈোোৌৌ়্.������০১২৩৪৫৬৭৮৯�����\".split(\"\");\nfor(j = 0; j != D[0].length; ++j) if(D[0][j].charCodeAt(0) !== 0xFFFD) { e[D[0][j]] = 0 + j; d[0 + j] = D[0][j];}\nD[166] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ঌ����������������������\".split(\"\");\nfor(j = 0; j != D[166].length; ++j) if(D[166][j].charCodeAt(0) !== 0xFFFD) { e[D[166][j]] = 42496 + j; d[42496 + j] = D[166][j];}\nD[167] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ৡ����������������������\".split(\"\");\nfor(j = 0; j != D[167].length; ++j) if(D[167][j].charCodeAt(0) !== 0xFFFD) { e[D[167][j]] = 42752 + j; d[42752 + j] = D[167][j];}\nD[170] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ৠ����������������������\".split(\"\");\nfor(j = 0; j != D[170].length; ++j) if(D[170][j].charCodeAt(0) !== 0xFFFD) { e[D[170][j]] = 43520 + j; d[43520 + j] = D[170][j];}\nD[191] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ড়����������������������\".split(\"\");\nfor(j = 0; j != D[191].length; ++j) if(D[191][j].charCodeAt(0) !== 0xFFFD) { e[D[191][j]] = 48896 + j; d[48896 + j] = D[191][j];}\nD[192] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ঢ়����������������������\".split(\"\");\nfor(j = 0; j != D[192].length; ++j) if(D[192][j].charCodeAt(0) !== 0xFFFD) { e[D[192][j]] = 49152 + j; d[49152 + j] = D[192][j];}\nD[219] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ৢ����������������������\".split(\"\");\nfor(j = 0; j != D[219].length; ++j) if(D[219][j].charCodeAt(0) !== 0xFFFD) { e[D[219][j]] = 56064 + j; d[56064 + j] = D[219][j];}\nD[220] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ৣ����������������������\".split(\"\");\nfor(j = 0; j != D[220].length; ++j) if(D[220][j].charCodeAt(0) !== 0xFFFD) { e[D[220][j]] = 56320 + j; d[56320 + j] = D[220][j];}\nD[223] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ৄ����������������������\".split(\"\");\nfor(j = 0; j != D[223].length; ++j) if(D[223][j].charCodeAt(0) !== 0xFFFD) { e[D[223][j]] = 57088 + j; d[57088 + j] = D[223][j];}\nD[239] = \"����������������������������������������������������������������৯৯৯৯৯৯৯৯৯৯৯৯������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[239].length; ++j) if(D[239][j].charCodeAt(0) !== 0xFFFD) { e[D[239][j]] = 61184 + j; d[61184 + j] = D[239][j];}\nreturn {\"enc\": e, \"dec\": d }; })();\ncptable[57004] = (function(){ var d = [], e = {}, D = [], j;\nD[0] = \"\\u0000\\u0001\\u0002\\u0003\\u0004\\u0005\\u0006\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\u0014\\u0015\\u0016\\u0017\\u0018\\u0019\\u001a\\u001b\\u001c\\u001d\\u001e\\u001f !\\\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~��ஂஃஅஆஇஈஉஊ�ஏஏஐஐஒஓஔஔககககஙசசஜஜஞடடடடணததததநனபபபபமயயரறலளழவஷஷஸஹ�ாிீுூ�ெேைைொோௌௌ்�.������0௧௨௩௪௫௬௭௮௯�����\".split(\"\");\nfor(j = 0; j != D[0].length; ++j) if(D[0][j].charCodeAt(0) !== 0xFFFD) { e[D[0][j]] = 0 + j; d[0 + j] = D[0][j];}\nD[239] = \"����������������������������������������������������������������௯௯௯௯௯௯௯௯௯௯௯௯������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[239].length; ++j) if(D[239][j].charCodeAt(0) !== 0xFFFD) { e[D[239][j]] = 61184 + j; d[61184 + j] = D[239][j];}\nreturn {\"enc\": e, \"dec\": d }; })();\ncptable[57005] = (function(){ var d = [], e = {}, D = [], j;\nD[0] = \"\\u0000\\u0001\\u0002\\u0003\\u0004\\u0005\\u0006\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\u0014\\u0015\\u0016\\u0017\\u0018\\u0019\\u001a\\u001b\\u001c\\u001d\\u001e\\u001f !\\\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~�ఁంఃఅఆఇఈఉఊఋఎఏఐఐఒఓఔఔకఖగఘఙచఛజఝఞటఠడఢణతథదధననపఫబభమయయరఱలళళవశషసహ�ాిీుూృెేైైొోౌౌ్�.������౦౧౨౩౪౫౬౭౮౯�����\".split(\"\");\nfor(j = 0; j != D[0].length; ++j) if(D[0][j].charCodeAt(0) !== 0xFFFD) { e[D[0][j]] = 0 + j; d[0 + j] = D[0][j];}\nD[166] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ఌ����������������������\".split(\"\");\nfor(j = 0; j != D[166].length; ++j) if(D[166][j].charCodeAt(0) !== 0xFFFD) { e[D[166][j]] = 42496 + j; d[42496 + j] = D[166][j];}\nD[167] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ౡ����������������������\".split(\"\");\nfor(j = 0; j != D[167].length; ++j) if(D[167][j].charCodeAt(0) !== 0xFFFD) { e[D[167][j]] = 42752 + j; d[42752 + j] = D[167][j];}\nD[170] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ౠ����������������������\".split(\"\");\nfor(j = 0; j != D[170].length; ++j) if(D[170][j].charCodeAt(0) !== 0xFFFD) { e[D[170][j]] = 43520 + j; d[43520 + j] = D[170][j];}\nD[223] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ౄ����������������������\".split(\"\");\nfor(j = 0; j != D[223].length; ++j) if(D[223][j].charCodeAt(0) !== 0xFFFD) { e[D[223][j]] = 57088 + j; d[57088 + j] = D[223][j];}\nD[239] = \"����������������������������������������������������������������౯౯౯౯౯౯౯౯౯౯౯౯������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[239].length; ++j) if(D[239][j].charCodeAt(0) !== 0xFFFD) { e[D[239][j]] = 61184 + j; d[61184 + j] = D[239][j];}\nreturn {\"enc\": e, \"dec\": d }; })();\ncptable[57006] = (function(){ var d = [], e = {}, D = [], j;\nD[0] = \"\\u0000\\u0001\\u0002\\u0003\\u0004\\u0005\\u0006\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\u0014\\u0015\\u0016\\u0017\\u0018\\u0019\\u001a\\u001b\\u001c\\u001d\\u001e\\u001f !\\\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~�ঁংঃঅআইঈউঊঋএএঐঐওওঔঔকখগঘঙচছজঝঞটঠডঢণতথদধননপফবভমযয়ররলললবশষসহ�ািীুূৃেেৈৈোোৌৌ়্.������০১২৩৪৫৬৭৮৯�����\".split(\"\");\nfor(j = 0; j != D[0].length; ++j) if(D[0][j].charCodeAt(0) !== 0xFFFD) { e[D[0][j]] = 0 + j; d[0 + j] = D[0][j];}\nD[166] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ঌ����������������������\".split(\"\");\nfor(j = 0; j != D[166].length; ++j) if(D[166][j].charCodeAt(0) !== 0xFFFD) { e[D[166][j]] = 42496 + j; d[42496 + j] = D[166][j];}\nD[167] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ৡ����������������������\".split(\"\");\nfor(j = 0; j != D[167].length; ++j) if(D[167][j].charCodeAt(0) !== 0xFFFD) { e[D[167][j]] = 42752 + j; d[42752 + j] = D[167][j];}\nD[170] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ৠ����������������������\".split(\"\");\nfor(j = 0; j != D[170].length; ++j) if(D[170][j].charCodeAt(0) !== 0xFFFD) { e[D[170][j]] = 43520 + j; d[43520 + j] = D[170][j];}\nD[191] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ড়����������������������\".split(\"\");\nfor(j = 0; j != D[191].length; ++j) if(D[191][j].charCodeAt(0) !== 0xFFFD) { e[D[191][j]] = 48896 + j; d[48896 + j] = D[191][j];}\nD[192] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ঢ়����������������������\".split(\"\");\nfor(j = 0; j != D[192].length; ++j) if(D[192][j].charCodeAt(0) !== 0xFFFD) { e[D[192][j]] = 49152 + j; d[49152 + j] = D[192][j];}\nD[219] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ৢ����������������������\".split(\"\");\nfor(j = 0; j != D[219].length; ++j) if(D[219][j].charCodeAt(0) !== 0xFFFD) { e[D[219][j]] = 56064 + j; d[56064 + j] = D[219][j];}\nD[220] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ৣ����������������������\".split(\"\");\nfor(j = 0; j != D[220].length; ++j) if(D[220][j].charCodeAt(0) !== 0xFFFD) { e[D[220][j]] = 56320 + j; d[56320 + j] = D[220][j];}\nD[223] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ৄ����������������������\".split(\"\");\nfor(j = 0; j != D[223].length; ++j) if(D[223][j].charCodeAt(0) !== 0xFFFD) { e[D[223][j]] = 57088 + j; d[57088 + j] = D[223][j];}\nD[239] = \"����������������������������������������������������������������৯৯৯৯৯৯৯৯৯৯৯৯������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[239].length; ++j) if(D[239][j].charCodeAt(0) !== 0xFFFD) { e[D[239][j]] = 61184 + j; d[61184 + j] = D[239][j];}\nreturn {\"enc\": e, \"dec\": d }; })();\ncptable[57007] = (function(){ var d = [], e = {}, D = [], j;\nD[0] = \"\\u0000\\u0001\\u0002\\u0003\\u0004\\u0005\\u0006\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\u0014\\u0015\\u0016\\u0017\\u0018\\u0019\\u001a\\u001b\\u001c\\u001d\\u001e\\u001f !\\\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~�ଁଂଃଅଆଇଈଉଊଋଏଏଐଐଐଓଔଔକଖଗଘଙଚଛଜଝଞଟଠଡଢଣତଥଦଧନନପଫବଭମଯୟରରଲଳଳବଶଷସହ�ାିୀୁୂୃେେୈୈୋୋୌୌ଼୍.������୦୧୨୩୪୫୬୭୮୯�����\".split(\"\");\nfor(j = 0; j != D[0].length; ++j) if(D[0][j].charCodeAt(0) !== 0xFFFD) { e[D[0][j]] = 0 + j; d[0 + j] = D[0][j];}\nD[166] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ఌ����������������������\".split(\"\");\nfor(j = 0; j != D[166].length; ++j) if(D[166][j].charCodeAt(0) !== 0xFFFD) { e[D[166][j]] = 42496 + j; d[42496 + j] = D[166][j];}\nD[167] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ౡ����������������������\".split(\"\");\nfor(j = 0; j != D[167].length; ++j) if(D[167][j].charCodeAt(0) !== 0xFFFD) { e[D[167][j]] = 42752 + j; d[42752 + j] = D[167][j];}\nD[170] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ౠ����������������������\".split(\"\");\nfor(j = 0; j != D[170].length; ++j) if(D[170][j].charCodeAt(0) !== 0xFFFD) { e[D[170][j]] = 43520 + j; d[43520 + j] = D[170][j];}\nD[191] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ଡ଼����������������������\".split(\"\");\nfor(j = 0; j != D[191].length; ++j) if(D[191][j].charCodeAt(0) !== 0xFFFD) { e[D[191][j]] = 48896 + j; d[48896 + j] = D[191][j];}\nD[192] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ଢ଼����������������������\".split(\"\");\nfor(j = 0; j != D[192].length; ++j) if(D[192][j].charCodeAt(0) !== 0xFFFD) { e[D[192][j]] = 49152 + j; d[49152 + j] = D[192][j];}\nD[223] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ౄ����������������������\".split(\"\");\nfor(j = 0; j != D[223].length; ++j) if(D[223][j].charCodeAt(0) !== 0xFFFD) { e[D[223][j]] = 57088 + j; d[57088 + j] = D[223][j];}\nD[234] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ଽ����������������������\".split(\"\");\nfor(j = 0; j != D[234].length; ++j) if(D[234][j].charCodeAt(0) !== 0xFFFD) { e[D[234][j]] = 59904 + j; d[59904 + j] = D[234][j];}\nD[239] = \"����������������������������������������������������������������୯୯୯୯୯୯୯୯୯୯୯୯������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[239].length; ++j) if(D[239][j].charCodeAt(0) !== 0xFFFD) { e[D[239][j]] = 61184 + j; d[61184 + j] = D[239][j];}\nreturn {\"enc\": e, \"dec\": d }; })();\ncptable[57008] = (function(){ var d = [], e = {}, D = [], j;\nD[0] = \"\\u0000\\u0001\\u0002\\u0003\\u0004\\u0005\\u0006\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\u0014\\u0015\\u0016\\u0017\\u0018\\u0019\\u001a\\u001b\\u001c\\u001d\\u001e\\u001f !\\\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~��ಂಃಅಆಇಈಉಊಋಎಏಐಐಒಓಔಔಕಖಗಘಙಚಛಜಝಞಟಠಡಢಣತಥದಧನನಪಫಬಭಮಯಯರಱಲಳಳವಶಷಸಹ�ಾಿೀುೂೃೆೇೈೈೊೋೌೌ್�.������೦೧೨೩೪೫೬೭೮೯�����\".split(\"\");\nfor(j = 0; j != D[0].length; ++j) if(D[0][j].charCodeAt(0) !== 0xFFFD) { e[D[0][j]] = 0 + j; d[0 + j] = D[0][j];}\nD[166] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ಌ����������������������\".split(\"\");\nfor(j = 0; j != D[166].length; ++j) if(D[166][j].charCodeAt(0) !== 0xFFFD) { e[D[166][j]] = 42496 + j; d[42496 + j] = D[166][j];}\nD[167] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ೡ����������������������\".split(\"\");\nfor(j = 0; j != D[167].length; ++j) if(D[167][j].charCodeAt(0) !== 0xFFFD) { e[D[167][j]] = 42752 + j; d[42752 + j] = D[167][j];}\nD[170] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ೠ����������������������\".split(\"\");\nfor(j = 0; j != D[170].length; ++j) if(D[170][j].charCodeAt(0) !== 0xFFFD) { e[D[170][j]] = 43520 + j; d[43520 + j] = D[170][j];}\nD[201] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ೞ����������������������\".split(\"\");\nfor(j = 0; j != D[201].length; ++j) if(D[201][j].charCodeAt(0) !== 0xFFFD) { e[D[201][j]] = 51456 + j; d[51456 + j] = D[201][j];}\nD[223] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ೄ����������������������\".split(\"\");\nfor(j = 0; j != D[223].length; ++j) if(D[223][j].charCodeAt(0) !== 0xFFFD) { e[D[223][j]] = 57088 + j; d[57088 + j] = D[223][j];}\nD[239] = \"����������������������������������������������������������������೯೯೯೯೯೯೯೯೯೯೯೯������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[239].length; ++j) if(D[239][j].charCodeAt(0) !== 0xFFFD) { e[D[239][j]] = 61184 + j; d[61184 + j] = D[239][j];}\nreturn {\"enc\": e, \"dec\": d }; })();\ncptable[57009] = (function(){ var d = [], e = {}, D = [], j;\nD[0] = \"\\u0000\\u0001\\u0002\\u0003\\u0004\\u0005\\u0006\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\u0014\\u0015\\u0016\\u0017\\u0018\\u0019\\u001a\\u001b\\u001c\\u001d\\u001e\\u001f !\\\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~��ംഃഅആഇഈഉഊഋഎഏഐഐഒഓഔഔകഖഗഘങചഛജഝഞടഠഡഢണതഥദധനനപഫബഭമയയരറലളഴവശഷസഹ�ാിീുൂൃെേൈൈൊോൌൌ്�.������൦൧൨൩൪൫൬൭൮൯�����\".split(\"\");\nfor(j = 0; j != D[0].length; ++j) if(D[0][j].charCodeAt(0) !== 0xFFFD) { e[D[0][j]] = 0 + j; d[0 + j] = D[0][j];}\nD[166] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ഌ����������������������\".split(\"\");\nfor(j = 0; j != D[166].length; ++j) if(D[166][j].charCodeAt(0) !== 0xFFFD) { e[D[166][j]] = 42496 + j; d[42496 + j] = D[166][j];}\nD[167] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ൡ����������������������\".split(\"\");\nfor(j = 0; j != D[167].length; ++j) if(D[167][j].charCodeAt(0) !== 0xFFFD) { e[D[167][j]] = 42752 + j; d[42752 + j] = D[167][j];}\nD[170] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ൠ����������������������\".split(\"\");\nfor(j = 0; j != D[170].length; ++j) if(D[170][j].charCodeAt(0) !== 0xFFFD) { e[D[170][j]] = 43520 + j; d[43520 + j] = D[170][j];}\nD[239] = \"����������������������������������������������������������������൯൯൯൯൯൯൯൯൯൯൯൯������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[239].length; ++j) if(D[239][j].charCodeAt(0) !== 0xFFFD) { e[D[239][j]] = 61184 + j; d[61184 + j] = D[239][j];}\nreturn {\"enc\": e, \"dec\": d }; })();\ncptable[57010] = (function(){ var d = [], e = {}, D = [], j;\nD[0] = \"\\u0000\\u0001\\u0002\\u0003\\u0004\\u0005\\u0006\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\u0014\\u0015\\u0016\\u0017\\u0018\\u0019\\u001a\\u001b\\u001c\\u001d\\u001e\\u001f !\\\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~�ઁંઃઅઆઇઈઉઊઋએએઐઍઍઓઔઑકખગઘઙચછજઝઞટઠડઢણતથદધનનપફબભમયયરરલળળવશષસહ�ાિીુૂૃેેૈૅોોૌૉ઼્.������૦૧૨૩૪૫૬૭૮૯�����\".split(\"\");\nfor(j = 0; j != D[0].length; ++j) if(D[0][j].charCodeAt(0) !== 0xFFFD) { e[D[0][j]] = 0 + j; d[0 + j] = D[0][j];}\nD[161] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ૐ����������������������\".split(\"\");\nfor(j = 0; j != D[161].length; ++j) if(D[161][j].charCodeAt(0) !== 0xFFFD) { e[D[161][j]] = 41216 + j; d[41216 + j] = D[161][j];}\nD[170] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ૠ����������������������\".split(\"\");\nfor(j = 0; j != D[170].length; ++j) if(D[170][j].charCodeAt(0) !== 0xFFFD) { e[D[170][j]] = 43520 + j; d[43520 + j] = D[170][j];}\nD[223] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ૄ����������������������\".split(\"\");\nfor(j = 0; j != D[223].length; ++j) if(D[223][j].charCodeAt(0) !== 0xFFFD) { e[D[223][j]] = 57088 + j; d[57088 + j] = D[223][j];}\nD[234] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ઽ����������������������\".split(\"\");\nfor(j = 0; j != D[234].length; ++j) if(D[234][j].charCodeAt(0) !== 0xFFFD) { e[D[234][j]] = 59904 + j; d[59904 + j] = D[234][j];}\nD[239] = \"����������������������������������������������������������������૯૯૯૯૯૯૯૯૯૯૯૯������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[239].length; ++j) if(D[239][j].charCodeAt(0) !== 0xFFFD) { e[D[239][j]] = 61184 + j; d[61184 + j] = D[239][j];}\nreturn {\"enc\": e, \"dec\": d }; })();\ncptable[57011] = (function(){ var d = [], e = {}, D = [], j;\nD[0] = \"\\u0000\\u0001\\u0002\\u0003\\u0004\\u0005\\u0006\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\u0014\\u0015\\u0016\\u0017\\u0018\\u0019\\u001a\\u001b\\u001c\\u001d\\u001e\\u001f !\\\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~��ਂ�ਅਆਇਈਉਊ�ਏਏਐਐਐਓਔਔਕਖਗਘਙਚਛਜਝਞਟਠਡਢਣਤਥਦਧਨਨਪਫਬਭਮਯਯਰਰਲਲ਼ਲ਼ਵਸ਼ਸ਼ਸਹ�ਾਿੀੁੂ�ੇੇੈੈੋੋੌੌ਼੍.������੦੧੨੩੪੫੬੭੮੯�����\".split(\"\");\nfor(j = 0; j != D[0].length; ++j) if(D[0][j].charCodeAt(0) !== 0xFFFD) { e[D[0][j]] = 0 + j; d[0 + j] = D[0][j];}\nD[180] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ਖ਼����������������������\".split(\"\");\nfor(j = 0; j != D[180].length; ++j) if(D[180][j].charCodeAt(0) !== 0xFFFD) { e[D[180][j]] = 46080 + j; d[46080 + j] = D[180][j];}\nD[181] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ਗ਼����������������������\".split(\"\");\nfor(j = 0; j != D[181].length; ++j) if(D[181][j].charCodeAt(0) !== 0xFFFD) { e[D[181][j]] = 46336 + j; d[46336 + j] = D[181][j];}\nD[186] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ਜ਼����������������������\".split(\"\");\nfor(j = 0; j != D[186].length; ++j) if(D[186][j].charCodeAt(0) !== 0xFFFD) { e[D[186][j]] = 47616 + j; d[47616 + j] = D[186][j];}\nD[192] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ੜ����������������������\".split(\"\");\nfor(j = 0; j != D[192].length; ++j) if(D[192][j].charCodeAt(0) !== 0xFFFD) { e[D[192][j]] = 49152 + j; d[49152 + j] = D[192][j];}\nD[201] = \"�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ਫ਼����������������������\".split(\"\");\nfor(j = 0; j != D[201].length; ++j) if(D[201][j].charCodeAt(0) !== 0xFFFD) { e[D[201][j]] = 51456 + j; d[51456 + j] = D[201][j];}\nD[239] = \"����������������������������������������������������������������੯੯੯੯੯੯੯੯੯੯੯੯������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������\".split(\"\");\nfor(j = 0; j != D[239].length; ++j) if(D[239][j].charCodeAt(0) !== 0xFFFD) { e[D[239][j]] = 61184 + j; d[61184 + j] = D[239][j];}\nreturn {\"enc\": e, \"dec\": d }; })();\ncptable[620] = (function(){ var d = \"\\u0000\\u0001\\u0002\\u0003\\u0004\\u0005\\u0006\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\u0014\\u0015\\u0016\\u0017\\u0018\\u0019\\u001a\\u001b\\u001c\\u001d\\u001e\\u001f !\\\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~ÇüéâäàąçêëèïîćÄĄĘęłôöĆûùŚÖÜ¢Ł¥śƒŹŻóÓńŃźż¿⌐¬½¼¡«»░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀αßΓπΣσµτΦΘΩδ∞φε∩≡±≥≤⌠⌡÷≈°∙·√ⁿ²■ \", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {\"enc\": e, \"dec\": D }; })();\ncptable[895] = (function(){ var d = \"\\u0000\\u0001\\u0002\\u0003\\u0004\\u0005\\u0006\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\u0014\\u0015\\u0016\\u0017\\u0018\\u0019\\u001a\\u001b\\u001c\\u001d\\u001e\\u001f !\\\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~ČüéďäĎŤčěĚĹÍľǪÄÁÉžŽôöÓůÚýÖÜŠĽÝŘťáíóúňŇŮÔšřŕŔ¼§«»░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀αßΓπΣσµτΦΘΩδ∞φε∩≡±≥≤⌠⌡÷≈°∙·√ⁿ²■ \", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {\"enc\": e, \"dec\": D }; })();\n// eslint-disable-next-line no-undef\nif ( true && module.exports && typeof DO_NOT_EXPORT_CODEPAGE === 'undefined') module.exports = cptable;\n\n\n/***/ }),\n\n/***/ \"./node_modules/codepage/cputils.js\":\n/*!******************************************!*\\\n  !*** ./node_modules/codepage/cputils.js ***!\n  \\******************************************/\n/***/ (function(module, __unused_webpack_exports, __webpack_require__) {\n\n/* cputils.js (C) 2013-present SheetJS -- http://sheetjs.com */\n/* vim: set ft=javascript: */\n/*jshint newcap: false */\n(function(root, factory) {\n  /*jshint ignore:start */\n  /*eslint-disable */\n  \"use strict\";\n  if(typeof cptable === \"undefined\") {\n    if(true){\n      var cpt = __webpack_require__(/*! ./cptable */ \"./node_modules/codepage/cptable.js\");\n      if ( true && module.exports && typeof DO_NOT_EXPORT_CODEPAGE === 'undefined') module.exports = factory(cpt);\n      else root.cptable = factory(cpt);\n    } else {}\n  } else cptable = factory(cptable);\n  /*eslint-enable */\n  /*jshint ignore:end */\n}(this, function(cpt){\n  \"use strict\";\n  /*global module, Buffer */\n  var magic = {\n    \"1200\":\"utf16le\",\n    \"1201\":\"utf16be\",\n    \"12000\":\"utf32le\",\n    \"12001\":\"utf32be\",\n    \"16969\":\"utf64le\",\n    \"20127\":\"ascii\",\n    \"65000\":\"utf7\",\n    \"65001\":\"utf8\"\n  };\n\n  var sbcs_cache = [874,1250,1251,1252,1253,1254,1255,1256,10000];\n  var dbcs_cache = [932,936,949,950];\n  var magic_cache = [65001];\n  var magic_decode = {};\n  var magic_encode = {};\n  var cpdcache = {};\n  var cpecache = {};\n\n  var sfcc = function sfcc(x) { return String.fromCharCode(x); };\n  var cca = function cca(x) { return x.charCodeAt(0); };\n\n  var has_buf = (typeof Buffer !== 'undefined');\n  var Buffer_from = function(){};\n  if(has_buf) {\n    var nbfs = !Buffer.from;\n    if(!nbfs) try { Buffer.from(\"foo\", \"utf8\"); } catch(e) { nbfs = true; }\n    Buffer_from = nbfs ? function(buf, enc) { return (enc) ? new Buffer(buf, enc) : new Buffer(buf); } : Buffer.from.bind(Buffer);\n    // $FlowIgnore\n    if(!Buffer.allocUnsafe) Buffer.allocUnsafe = function(n) { return new Buffer(n); };\n\n    var mdl = 1024, mdb = Buffer.allocUnsafe(mdl);\n    var make_EE = function make_EE(E){\n      var EE = Buffer.allocUnsafe(65536);\n      for(var i = 0; i < 65536;++i) EE[i] = 0;\n      var keys = Object.keys(E), len = keys.length;\n      for(var ee = 0, e = keys[ee]; ee < len; ++ee) {\n        if(!(e = keys[ee])) continue;\n        EE[e.charCodeAt(0)] = E[e];\n      }\n      return EE;\n    };\n    var sbcs_encode = function make_sbcs_encode(cp) {\n      var EE = make_EE(cpt[cp].enc);\n      return function sbcs_e(data, ofmt) {\n        var len = data.length;\n        var out, i=0, j=0, D=0, w=0;\n        if(typeof data === 'string') {\n          out = Buffer.allocUnsafe(len);\n          for(i = 0; i < len; ++i) out[i] = EE[data.charCodeAt(i)];\n        } else if(Buffer.isBuffer(data)) {\n          out = Buffer.allocUnsafe(2*len);\n          j = 0;\n          for(i = 0; i < len; ++i) {\n            D = data[i];\n            if(D < 128) out[j++] = EE[D];\n            else if(D < 224) { out[j++] = EE[((D&31)<<6)+(data[i+1]&63)]; ++i; }\n            else if(D < 240) { out[j++] = EE[((D&15)<<12)+((data[i+1]&63)<<6)+(data[i+2]&63)]; i+=2; }\n            else {\n              w = ((D&7)<<18)+((data[i+1]&63)<<12)+((data[i+2]&63)<<6)+(data[i+3]&63); i+=3;\n              if(w < 65536) out[j++] = EE[w];\n              else { w -= 65536; out[j++] = EE[0xD800 + ((w>>10)&1023)]; out[j++] = EE[0xDC00 + (w&1023)]; }\n            }\n          }\n          out = out.slice(0,j);\n        } else {\n          out = Buffer.allocUnsafe(len);\n          for(i = 0; i < len; ++i) out[i] = EE[data[i].charCodeAt(0)];\n        }\n        if(!ofmt || ofmt === 'buf') return out;\n        if(ofmt !== 'arr') return out.toString('binary');\n        return [].slice.call(out);\n      };\n    };\n    var sbcs_decode = function make_sbcs_decode(cp) {\n      var D = cpt[cp].dec;\n      var DD = Buffer.allocUnsafe(131072), d=0, c=\"\";\n      for(d=0;d<D.length;++d) {\n        if(!(c=D[d])) continue;\n        var w = c.charCodeAt(0);\n        DD[2*d] = w&255; DD[2*d+1] = w>>8;\n      }\n      return function sbcs_d(data) {\n        var len = data.length, i=0, j=0;\n        if(2 * len > mdl) { mdl = 2 * len; mdb = Buffer.allocUnsafe(mdl); }\n        if(Buffer.isBuffer(data)) {\n          for(i = 0; i < len; i++) {\n            j = 2*data[i];\n            mdb[2*i] = DD[j]; mdb[2*i+1] = DD[j+1];\n          }\n        } else if(typeof data === \"string\") {\n          for(i = 0; i < len; i++) {\n            j = 2*data.charCodeAt(i);\n            mdb[2*i] = DD[j]; mdb[2*i+1] = DD[j+1];\n          }\n        } else {\n          for(i = 0; i < len; i++) {\n            j = 2*data[i];\n            mdb[2*i] = DD[j]; mdb[2*i+1] = DD[j+1];\n          }\n        }\n        return mdb.slice(0, 2 * len).toString('ucs2');\n      };\n    };\n    var dbcs_encode = function make_dbcs_encode(cp) {\n      var E = cpt[cp].enc;\n      var EE = Buffer.allocUnsafe(131072);\n      for(var i = 0; i < 131072; ++i) EE[i] = 0;\n      var keys = Object.keys(E);\n      for(var ee = 0, e = keys[ee]; ee < keys.length; ++ee) {\n        if(!(e = keys[ee])) continue;\n        var f = e.charCodeAt(0);\n        EE[2*f] = E[e] & 255; EE[2*f+1] = E[e]>>8;\n      }\n      return function dbcs_e(data, ofmt) {\n        var len = data.length, out = Buffer.allocUnsafe(2*len), i=0, j=0, jj=0, k=0, D=0;\n        if(typeof data === 'string') {\n          for(i = k = 0; i < len; ++i) {\n            j = data.charCodeAt(i)*2;\n            out[k++] = EE[j+1] || EE[j]; if(EE[j+1] > 0) out[k++] = EE[j];\n          }\n          out = out.slice(0,k);\n        } else if(Buffer.isBuffer(data)) {\n          for(i = k = 0; i < len; ++i) {\n            D = data[i];\n            if(D < 128) j = D;\n            else if(D < 224) { j = ((D&31)<<6)+(data[i+1]&63); ++i; }\n            else if(D < 240) { j = ((D&15)<<12)+((data[i+1]&63)<<6)+(data[i+2]&63); i+=2; }\n            else { j = ((D&7)<<18)+((data[i+1]&63)<<12)+((data[i+2]&63)<<6)+(data[i+3]&63); i+=3; }\n            if(j<65536) { j*=2; out[k++] = EE[j+1] || EE[j]; if(EE[j+1] > 0) out[k++] = EE[j]; }\n            else { jj = j-65536;\n              j=2*(0xD800 + ((jj>>10)&1023)); out[k++] = EE[j+1] || EE[j]; if(EE[j+1] > 0) out[k++] = EE[j];\n              j=2*(0xDC00 + (jj&1023)); out[k++] = EE[j+1] || EE[j]; if(EE[j+1] > 0) out[k++] = EE[j];\n            }\n          }\n          out = out.slice(0,k);\n        } else {\n          for(i = k = 0; i < len; i++) {\n            j = data[i].charCodeAt(0)*2;\n            out[k++] = EE[j+1] || EE[j]; if(EE[j+1] > 0) out[k++] = EE[j];\n          }\n        }\n        if(!ofmt || ofmt === 'buf') return out;\n        if(ofmt !== 'arr') return out.toString('binary');\n        return [].slice.call(out);\n      };\n    };\n    var dbcs_decode = function make_dbcs_decode(cp) {\n      var D = cpt[cp].dec;\n      var DD = Buffer.allocUnsafe(131072), d=0, c, w=0, j=0, i=0;\n      for(i = 0; i < 65536; ++i) { DD[2*i] = 0xFF; DD[2*i+1] = 0xFD;}\n      for(d = 0; d < D.length; ++d) {\n        if(!(c=D[d])) continue;\n        w = c.charCodeAt(0);\n        j = 2*d;\n        DD[j] = w&255; DD[j+1] = w>>8;\n      }\n      return function dbcs_d(data) {\n        var len = data.length, out = Buffer.allocUnsafe(2*len), i=0, j=0, k=0;\n        if(Buffer.isBuffer(data)) {\n          for(i = 0; i < len; i++) {\n            j = 2*data[i];\n            if(DD[j]===0xFF && DD[j+1]===0xFD) { j=2*((data[i]<<8)+data[i+1]); ++i; }\n            out[k++] = DD[j]; out[k++] = DD[j+1];\n          }\n        } else if(typeof data === \"string\") {\n          for(i = 0; i < len; i++) {\n            j = 2*data.charCodeAt(i);\n            if(DD[j]===0xFF && DD[j+1]===0xFD) { j=2*((data.charCodeAt(i)<<8)+data.charCodeAt(i+1)); ++i; }\n            out[k++] = DD[j]; out[k++] = DD[j+1];\n          }\n        } else {\n          for(i = 0; i < len; i++) {\n            j = 2*data[i];\n            if(DD[j]===0xFF && DD[j+1]===0xFD) { j=2*((data[i]<<8)+data[i+1]); ++i; }\n            out[k++] = DD[j]; out[k++] = DD[j+1];\n          }\n        }\n        return out.slice(0,k).toString('ucs2');\n      };\n    };\n    magic_decode[65001] = function utf8_d(data) {\n      if(typeof data === \"string\") return utf8_d(data.split(\"\").map(cca));\n      var len = data.length, w = 0, ww = 0;\n      if(4 * len > mdl) { mdl = 4 * len; mdb = Buffer.allocUnsafe(mdl); }\n      var i = 0;\n      if(len >= 3 && data[0] == 0xEF) if(data[1] == 0xBB && data[2] == 0xBF) i = 3;\n      for(var j = 1, k = 0, D = 0; i < len; i+=j) {\n        j = 1; D = data[i];\n        if(D < 128) w = D;\n        else if(D < 224) { w=(D&31)*64+(data[i+1]&63); j=2; }\n        else if(D < 240) { w=((D&15)<<12)+(data[i+1]&63)*64+(data[i+2]&63); j=3; }\n        else { w=(D&7)*262144+((data[i+1]&63)<<12)+(data[i+2]&63)*64+(data[i+3]&63); j=4; }\n        if(w < 65536) { mdb[k++] = w&255; mdb[k++] = w>>8; }\n        else {\n          w -= 65536; ww = 0xD800 + ((w>>10)&1023); w = 0xDC00 + (w&1023);\n          mdb[k++] = ww&255; mdb[k++] = ww>>>8; mdb[k++] = w&255; mdb[k++] = (w>>>8)&255;\n        }\n      }\n      return mdb.slice(0,k).toString('ucs2');\n    };\n    magic_encode[65001] = function utf8_e(data, ofmt) {\n      if(has_buf && Buffer.isBuffer(data)) {\n        if(!ofmt || ofmt === 'buf') return data;\n        if(ofmt !== 'arr') return data.toString('binary');\n        return [].slice.call(data);\n      }\n      var len = data.length, w = 0, ww = 0, j = 0;\n      var direct = typeof data === \"string\";\n      if(4 * len > mdl) { mdl = 4 * len; mdb = Buffer.allocUnsafe(mdl); }\n      for(var i = 0; i < len; ++i) {\n        w = direct ? data.charCodeAt(i) : data[i].charCodeAt(0);\n        if(w <= 0x007F) mdb[j++] = w;\n        else if(w <= 0x07FF) {\n          mdb[j++] = 192 + (w >> 6);\n          mdb[j++] = 128 + (w&63);\n        } else if(w >= 0xD800 && w <= 0xDFFF) {\n          w -= 0xD800; ++i;\n          ww = (direct ? data.charCodeAt(i) : data[i].charCodeAt(0)) - 0xDC00 + (w << 10);\n          mdb[j++] = 240 + ((ww>>>18) & 0x07);\n          mdb[j++] = 144 + ((ww>>>12) & 0x3F);\n          mdb[j++] = 128 + ((ww>>>6) & 0x3F);\n          mdb[j++] = 128 + (ww & 0x3F);\n        } else {\n          mdb[j++] = 224 + (w >> 12);\n          mdb[j++] = 128 + ((w >> 6)&63);\n          mdb[j++] = 128 + (w&63);\n        }\n      }\n      if(!ofmt || ofmt === 'buf') return mdb.slice(0,j);\n      if(ofmt !== 'arr') return mdb.slice(0,j).toString('binary');\n      return [].slice.call(mdb, 0, j);\n    };\n  }\n\n  var encache = function encache() {\n    if(has_buf) {\n      if(cpdcache[sbcs_cache[0]]) return;\n      var i=0, s=0;\n      for(i = 0; i < sbcs_cache.length; ++i) {\n        s = sbcs_cache[i];\n        if(cpt[s]) {\n          cpdcache[s] = sbcs_decode(s);\n          cpecache[s] = sbcs_encode(s);\n        }\n      }\n      for(i = 0; i < dbcs_cache.length; ++i) {\n        s = dbcs_cache[i];\n        if(cpt[s]) {\n          cpdcache[s] = dbcs_decode(s);\n          cpecache[s] = dbcs_encode(s);\n        }\n      }\n      for(i = 0; i < magic_cache.length; ++i) {\n        s = magic_cache[i];\n        if(magic_decode[s]) cpdcache[s] = magic_decode[s];\n        if(magic_encode[s]) cpecache[s] = magic_encode[s];\n      }\n    }\n  };\n  var null_enc = function(data, ofmt) { void ofmt; return \"\"; };\n  var cp_decache = function cp_decache(cp) { delete cpdcache[cp]; delete cpecache[cp]; };\n  var decache = function decache() {\n    if(has_buf) {\n      if(!cpdcache[sbcs_cache[0]]) return;\n      sbcs_cache.forEach(cp_decache);\n      dbcs_cache.forEach(cp_decache);\n      magic_cache.forEach(cp_decache);\n    }\n    last_enc = null_enc; last_cp = 0;\n  };\n  var cache = {\n    encache: encache,\n    decache: decache,\n    sbcs: sbcs_cache,\n    dbcs: dbcs_cache\n  };\n\n  encache();\n\n  var BM = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/\";\n  var SetD = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789'(),-./:?\";\n  var last_enc = null_enc, last_cp = 0;\n  var encode = function encode(cp, data, ofmt) {\n    if(cp === last_cp && last_enc) { return last_enc(data, ofmt); }\n    if(cpecache[cp]) { last_enc = cpecache[last_cp=cp]; return last_enc(data, ofmt); }\n    if(has_buf && Buffer.isBuffer(data)) data = data.toString('utf8');\n    var len = data.length;\n    var out = has_buf ? Buffer.allocUnsafe(4*len) : [], w=0, i=0, j = 0, ww=0;\n    var C = cpt[cp], E, M = \"\";\n    var isstr = typeof data === 'string';\n    if(C && (E=C.enc)) for(i = 0; i < len; ++i, ++j) {\n      w = E[isstr? data.charAt(i) : data[i]];\n      if(w > 255) {\n        out[j] = w>>8;\n        out[++j] = w&255;\n      } else out[j] = w&255;\n    }\n    else if((M=magic[cp])) switch(M) {\n      case \"utf8\":\n        if(has_buf && isstr) { out = Buffer_from(data, M); j = out.length; break; }\n        for(i = 0; i < len; ++i, ++j) {\n          w = isstr ? data.charCodeAt(i) : data[i].charCodeAt(0);\n          if(w <= 0x007F) out[j] = w;\n          else if(w <= 0x07FF) {\n            out[j]   = 192 + (w >> 6);\n            out[++j] = 128 + (w&63);\n          } else if(w >= 0xD800 && w <= 0xDFFF) {\n            w -= 0xD800;\n            ww = (isstr ? data.charCodeAt(++i) : data[++i].charCodeAt(0)) - 0xDC00 + (w << 10);\n            out[j]   = 240 + ((ww>>>18) & 0x07);\n            out[++j] = 144 + ((ww>>>12) & 0x3F);\n            out[++j] = 128 + ((ww>>>6) & 0x3F);\n            out[++j] = 128 + (ww & 0x3F);\n          } else {\n            out[j]   = 224 + (w >> 12);\n            out[++j] = 128 + ((w >> 6)&63);\n            out[++j] = 128 + (w&63);\n          }\n        }\n        break;\n      case \"ascii\":\n        if(has_buf && typeof data === \"string\") { out = Buffer_from(data, M); j = out.length; break; }\n        for(i = 0; i < len; ++i, ++j) {\n          w = isstr ? data.charCodeAt(i) : data[i].charCodeAt(0);\n          if(w <= 0x007F) out[j] = w;\n          else throw new Error(\"bad ascii \" + w);\n        }\n        break;\n      case \"utf16le\":\n        if(has_buf && typeof data === \"string\") { out = Buffer_from(data, M); j = out.length; break; }\n        for(i = 0; i < len; ++i) {\n          w = isstr ? data.charCodeAt(i) : data[i].charCodeAt(0);\n          out[j++] = w&255;\n          out[j++] = w>>8;\n        }\n        break;\n      case \"utf16be\":\n        for(i = 0; i < len; ++i) {\n          w = isstr ? data.charCodeAt(i) : data[i].charCodeAt(0);\n          out[j++] = w>>8;\n          out[j++] = w&255;\n        }\n        break;\n      case \"utf32le\":\n        for(i = 0; i < len; ++i) {\n          w = isstr ? data.charCodeAt(i) : data[i].charCodeAt(0);\n          if(w >= 0xD800 && w <= 0xDFFF) w = 0x10000 + ((w - 0xD800) << 10) + (data[++i].charCodeAt(0) - 0xDC00);\n          out[j++] = w&255; w >>= 8;\n          out[j++] = w&255; w >>= 8;\n          out[j++] = w&255; w >>= 8;\n          out[j++] = w&255;\n        }\n        break;\n      case \"utf32be\":\n        for(i = 0; i < len; ++i) {\n          w = isstr ? data.charCodeAt(i) : data[i].charCodeAt(0);\n          if(w >= 0xD800 && w <= 0xDFFF) w = 0x10000 + ((w - 0xD800) << 10) + (data[++i].charCodeAt(0) - 0xDC00);\n          out[j+3] = w&255; w >>= 8;\n          out[j+2] = w&255; w >>= 8;\n          out[j+1] = w&255; w >>= 8;\n          out[j] = w&255;\n          j+=4;\n        }\n        break;\n      case \"utf7\":\n        for(i = 0; i < len; i++) {\n          var c = isstr ? data.charAt(i) : data[i].charAt(0);\n          if(c === \"+\") { out[j++] = 0x2b; out[j++] = 0x2d; continue; }\n          if(SetD.indexOf(c) > -1) { out[j++] = c.charCodeAt(0); continue; }\n          var tt = encode(1201, c);\n          out[j++] = 0x2b;\n          out[j++] = BM.charCodeAt(tt[0]>>2);\n          out[j++] = BM.charCodeAt(((tt[0]&0x03)<<4) + ((tt[1]||0)>>4));\n          out[j++] = BM.charCodeAt(((tt[1]&0x0F)<<2) + ((tt[2]||0)>>6));\n          out[j++] = 0x2d;\n        }\n        break;\n      default: throw new Error(\"Unsupported magic: \" + cp + \" \" + magic[cp]);\n    }\n    else throw new Error(\"Unrecognized CP: \" + cp);\n    out = out.slice(0,j);\n    if(!has_buf) return (ofmt == 'str') ? (out).map(sfcc).join(\"\") : out;\n    if(!ofmt || ofmt === 'buf') return out;\n    if(ofmt !== 'arr') return out.toString('binary');\n    return [].slice.call(out);\n  };\n  var decode = function decode(cp, data) {\n    var F; if((F=cpdcache[cp])) return F(data);\n    if(typeof data === \"string\") return decode(cp, data.split(\"\").map(cca));\n    var len = data.length, out = new Array(len), s=\"\", w=0, i=0, j=1, k=0, ww=0;\n    var C = cpt[cp], D, M=\"\";\n    if(C && (D=C.dec)) {\n      for(i = 0; i < len; i+=j) {\n        j = 2;\n        s = D[(data[i]<<8)+ data[i+1]];\n        if(!s) {\n          j = 1;\n          s = D[data[i]];\n        }\n        if(!s) throw new Error('Unrecognized code: ' + data[i] + ' ' + data[i+j-1] + ' ' + i + ' ' + j + ' ' + D[data[i]]);\n        out[k++] = s;\n      }\n    }\n    else if((M=magic[cp])) switch(M) {\n      case \"utf8\":\n        if(len >= 3 && data[0] == 0xEF) if(data[1] == 0xBB && data[2] == 0xBF) i = 3;\n        for(; i < len; i+=j) {\n          j = 1;\n          if(data[i] < 128) w = data[i];\n          else if(data[i] < 224) { w=(data[i]&31)*64+(data[i+1]&63); j=2; }\n          else if(data[i] < 240) { w=((data[i]&15)<<12)+(data[i+1]&63)*64+(data[i+2]&63); j=3; }\n          else { w=(data[i]&7)*262144+((data[i+1]&63)<<12)+(data[i+2]&63)*64+(data[i+3]&63); j=4; }\n          if(w < 65536) { out[k++] = String.fromCharCode(w); }\n          else {\n            w -= 65536; ww = 0xD800 + ((w>>10)&1023); w = 0xDC00 + (w&1023);\n            out[k++] = String.fromCharCode(ww); out[k++] = String.fromCharCode(w);\n          }\n        }\n        break;\n      case \"ascii\":\n        if(has_buf && Buffer.isBuffer(data)) return data.toString(M);\n        for(i = 0; i < len; i++) out[i] = String.fromCharCode(data[i]);\n        k = len; break;\n      case \"utf16le\":\n        if(len >= 2 && data[0] == 0xFF) if(data[1] == 0xFE) i = 2;\n        if(has_buf && Buffer.isBuffer(data)) return data.toString(M);\n        j = 2;\n        for(; i+1 < len; i+=j) {\n          out[k++] = String.fromCharCode((data[i+1]<<8) + data[i]);\n        }\n        break;\n      case \"utf16be\":\n        if(len >= 2 && data[0] == 0xFE) if(data[1] == 0xFF) i = 2;\n        j = 2;\n        for(; i+1 < len; i+=j) {\n          out[k++] = String.fromCharCode((data[i]<<8) + data[i+1]);\n        }\n        break;\n      case \"utf32le\":\n        if(len >= 4 && data[0] == 0xFF) if(data[1] == 0xFE && data[2] === 0 && data[3] === 0) i = 4;\n        j = 4;\n        for(; i < len; i+=j) {\n          w = (data[i+3]<<24) + (data[i+2]<<16) + (data[i+1]<<8) + (data[i]);\n          if(w > 0xFFFF) {\n            w -= 0x10000;\n            out[k++] = String.fromCharCode(0xD800 + ((w >> 10) & 0x3FF));\n            out[k++] = String.fromCharCode(0xDC00 + (w & 0x3FF));\n          }\n          else out[k++] = String.fromCharCode(w);\n        }\n        break;\n      case \"utf32be\":\n        if(len >= 4 && data[3] == 0xFF) if(data[2] == 0xFE && data[1] === 0 && data[0] === 0) i = 4;\n        j = 4;\n        for(; i < len; i+=j) {\n          w = (data[i]<<24) + (data[i+1]<<16) + (data[i+2]<<8) + (data[i+3]);\n          if(w > 0xFFFF) {\n            w -= 0x10000;\n            out[k++] = String.fromCharCode(0xD800 + ((w >> 10) & 0x3FF));\n            out[k++] = String.fromCharCode(0xDC00 + (w & 0x3FF));\n          }\n          else out[k++] = String.fromCharCode(w);\n        }\n        break;\n      case \"utf7\":\n        if(len >= 4 && data[0] == 0x2B && data[1] == 0x2F && data[2] == 0x76) {\n          if(len >= 5 && data[3] == 0x38 && data[4] == 0x2D) i = 5;\n          else if(data[3] == 0x38 || data[3] == 0x39 || data[3] == 0x2B || data[3] == 0x2F) i = 4;\n        }\n        for(; i < len; i+=j) {\n          if(data[i] !== 0x2b) { j=1; out[k++] = String.fromCharCode(data[i]); continue; }\n          j=1;\n          if(data[i+1] === 0x2d) { j = 2; out[k++] = \"+\"; continue; }\n          // eslint-disable-next-line no-useless-escape\n          while(String.fromCharCode(data[i+j]).match(/[A-Za-z0-9+\\/]/)) j++;\n          var dash = 0;\n          if(data[i+j] === 0x2d) { ++j; dash=1; }\n          var tt = [];\n          var o64 = \"\";\n          var c1=0, c2=0, c3=0;\n          var e1=0, e2=0, e3=0, e4=0;\n          for(var l = 1; l < j - dash;) {\n            e1 = BM.indexOf(String.fromCharCode(data[i+l++]));\n            e2 = BM.indexOf(String.fromCharCode(data[i+l++]));\n            c1 = e1 << 2 | e2 >> 4;\n            tt.push(c1);\n            e3 = BM.indexOf(String.fromCharCode(data[i+l++]));\n            if(e3 === -1) break;\n            c2 = (e2 & 15) << 4 | e3 >> 2;\n            tt.push(c2);\n            e4 = BM.indexOf(String.fromCharCode(data[i+l++]));\n            if(e4 === -1) break;\n            c3 = (e3 & 3) << 6 | e4;\n            if(e4 < 64) tt.push(c3);\n          }\n          o64 = decode(1201, tt);\n          for(l = 0; l < o64.length; ++l) out[k++] = o64.charAt(l);\n        }\n        break;\n      default: throw new Error(\"Unsupported magic: \" + cp + \" \" + magic[cp]);\n    }\n    else throw new Error(\"Unrecognized CP: \" + cp);\n    return out.slice(0,k).join(\"\");\n  };\n  var hascp = function hascp(cp) { return !!(cpt[cp] || magic[cp]); };\n  cpt.utils = { decode: decode, encode: encode, hascp: hascp, magic: magic, cache:cache };\n  return cpt;\n}));\n\n\n/***/ }),\n\n/***/ \"./src/rtfjs/Document.ts\":\n/*!*******************************!*\\\n  !*** ./src/rtfjs/Document.ts ***!\n  \\*******************************/\n/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"Document\": () => (/* binding */ Document)\n/* harmony export */ });\n/* harmony import */ var _Helper__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./Helper */ \"./src/rtfjs/Helper.ts\");\n/*\n\nThe MIT License (MIT)\n\nCopyright (c) 2015 Thomas Bluemel\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n\n*/\n\nvar Document = /** @class */ (function () {\n    function Document(settings) {\n        this._settings = settings || {};\n        this._meta = {};\n        this._fonts = [];\n        this._colors = [];\n        this._autoColor = null;\n        this._stylesheets = [];\n        this._ins = [];\n    }\n    Document.prototype._lookupColor = function (idx) {\n        if (idx === 0) {\n            if (this._autoColor == null) {\n                return null;\n            }\n            return this._colors[this._autoColor];\n        }\n        if (idx < 0 || idx >= this._colors.length) {\n            throw new _Helper__WEBPACK_IMPORTED_MODULE_0__.RTFJSError(\"Invalid color index\");\n        }\n        return this._colors[idx];\n    };\n    Document.prototype.addIns = function (ins) {\n        this._ins.push(ins);\n    };\n    return Document;\n}());\n\n\n\n/***/ }),\n\n/***/ \"./src/rtfjs/DocumentFacade.ts\":\n/*!*************************************!*\\\n  !*** ./src/rtfjs/DocumentFacade.ts ***!\n  \\*************************************/\n/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"DocumentFacade\": () => (/* binding */ DocumentFacade)\n/* harmony export */ });\n/* harmony import */ var _Document__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./Document */ \"./src/rtfjs/Document.ts\");\n/* harmony import */ var _Helper__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./Helper */ \"./src/rtfjs/Helper.ts\");\n/* harmony import */ var _parser_Parser__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./parser/Parser */ \"./src/rtfjs/parser/Parser.ts\");\n/* harmony import */ var _renderer_Renderer__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./renderer/Renderer */ \"./src/rtfjs/renderer/Renderer.ts\");\n/*\n\nThe MIT License (MIT)\n\nCopyright (c) 2015 Thomas Bluemel\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n\n*/\n\n\n\n\nvar DocumentFacade = /** @class */ (function () {\n    function DocumentFacade(blob, settings) {\n        this._document = new _Document__WEBPACK_IMPORTED_MODULE_0__.Document(settings);\n        this._renderer = new _renderer_Renderer__WEBPACK_IMPORTED_MODULE_3__.Renderer(this._document);\n        var parser = new _parser_Parser__WEBPACK_IMPORTED_MODULE_2__.Parser(this._document, blob, this._renderer);\n        this._parsed = parser.parse();\n    }\n    DocumentFacade.prototype.metadata = function () {\n        return this._document._meta;\n    };\n    DocumentFacade.prototype.render = function () {\n        var _this = this;\n        return this._parsed\n            .then(function () {\n            return _this._renderer.buildDom();\n        }).catch(function (error) {\n            throw new _Helper__WEBPACK_IMPORTED_MODULE_1__.RTFJSError(error);\n        });\n    };\n    return DocumentFacade;\n}());\n\n\n\n/***/ }),\n\n/***/ \"./src/rtfjs/Helper.ts\":\n/*!*****************************!*\\\n  !*** ./src/rtfjs/Helper.ts ***!\n  \\*****************************/\n/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"RTFJSError\": () => (/* binding */ RTFJSError),\n/* harmony export */   \"loggingEnabled\": () => (/* binding */ loggingEnabled),\n/* harmony export */   \"Helper\": () => (/* binding */ Helper)\n/* harmony export */ });\n/*\n\nThe MIT License (MIT)\n\nCopyright (c) 2015 Thomas Bluemel\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n\n*/\nvar __extends = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        if (typeof b !== \"function\" && b !== null)\n            throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar RTFJSError = /** @class */ (function (_super) {\n    __extends(RTFJSError, _super);\n    function RTFJSError(message) {\n        var _newTarget = this.constructor;\n        var _this = _super.call(this, message) || this;\n        Object.setPrototypeOf(_this, _newTarget.prototype); // restore prototype chain\n        return _this;\n    }\n    return RTFJSError;\n}(Error));\n\nvar isLoggingEnabled = true;\nfunction loggingEnabled(enabled) {\n    isLoggingEnabled = enabled;\n}\nvar Helper = /** @class */ (function () {\n    function Helper() {\n    }\n    Helper.log = function (message) {\n        if (isLoggingEnabled) {\n            console.log(message);\n        }\n    };\n    Helper._isalpha = function (str) {\n        var len = str.length;\n        for (var i = 0; i < len; i++) {\n            var ch = str.charCodeAt(i);\n            if (!((ch >= this._A && ch <= this._Z) ||\n                (ch >= this._a && ch <= this._z))) {\n                return false;\n            }\n        }\n        return len > 0;\n    };\n    Helper._isdigit = function (str) {\n        var len = str.length;\n        for (var i = 0; i < len; i++) {\n            var ch = str.charCodeAt(i);\n            if (ch < this._0 || ch > this._9) {\n                return false;\n            }\n        }\n        return len > 0;\n    };\n    Helper._parseHex = function (str) {\n        var len = str.length;\n        for (var i = 0; i < len; i++) {\n            var ch = str.charCodeAt(i);\n            if (!((ch >= this._0 && ch <= this._9) ||\n                (ch >= this._a && ch <= this._f) ||\n                (ch >= this._A && ch <= this._F))) {\n                return NaN;\n            }\n        }\n        if (len > 0) {\n            return parseInt(str, 16);\n        }\n        return NaN;\n    };\n    Helper._blobToBinary = function (blob) {\n        var view = new Uint8Array(blob);\n        var ret = \"\";\n        var len = view.length;\n        for (var i = 0; i < len; i++) {\n            ret += String.fromCharCode(view[i]);\n        }\n        return ret;\n    };\n    Helper._hexToBlob = function (str) {\n        var len = str.length;\n        var buf = new ArrayBuffer(Math.floor(len-- / 2));\n        var view = new Uint8Array(buf);\n        var d = 0;\n        for (var i = 0; i < len; i += 2) {\n            var val = this._parseHex(str.substr(i, 2));\n            if (isNaN(val)) {\n                return null;\n            }\n            view[d++] = val;\n        }\n        return buf;\n    };\n    Helper._hexToBinary = function (str) {\n        var bin = \"\";\n        var len = str.length - 1;\n        for (var i = 0; i < len; i += 2) {\n            var val = this._parseHex(str.substr(i, 2));\n            if (isNaN(val)) {\n                return null;\n            }\n            bin += String.fromCharCode(val);\n        }\n        return bin;\n    };\n    Helper._mapCharset = function (idx) {\n        return this._charsetMap[idx.toString()];\n    };\n    Helper._mapColorTheme = function (name) {\n        return this._colorThemeMap[name];\n    };\n    Helper._colorToStr = function (color) {\n        return \"rgb(\" + color.r + \",\" + color.g + \",\" + color.b + \")\";\n    };\n    Helper._twipsToPt = function (twips) {\n        return Math.floor(twips / 20);\n    };\n    Helper._twipsToPx = function (twips) {\n        return Math.floor(twips / 20 * 96 / 72);\n    };\n    Helper._pxToTwips = function (px) {\n        return Math.floor(px * 20 * 72 / 96);\n    };\n    Helper.JUSTIFICATION = {\n        LEFT: \"left\",\n        CENTER: \"center\",\n        RIGHT: \"right\",\n        JUSTIFY: \"justify\",\n    };\n    Helper.BREAKTYPE = {\n        NONE: \"none\",\n        COL: \"col\",\n        EVEN: \"even\",\n        ODD: \"odd\",\n        PAGE: \"page\",\n    };\n    Helper.PAGENUMBER = {\n        DECIMAL: \"decimal\",\n        UROM: \"urom\",\n        LROM: \"lrom\",\n        ULTR: \"ultr\",\n        LLTR: \"lltr\", // TODO: ???\n    };\n    Helper.UNDERLINE = {\n        NONE: \"none\",\n        CONTINUOUS: \"continuous\",\n        DOTTED: \"dotted\",\n        DASHED: \"dashed\",\n        DASHDOTTED: \"dashdotted\",\n        DASHDOTDOTTED: \" dashdotdotted\",\n        DOUBLE: \"double\",\n        HEAVYWAVE: \"heavywave\",\n        LONGDASHED: \"longdashed\",\n        THICK: \"thick\",\n        THICKDOTTED: \"thickdotted\",\n        THICKDASHED: \"thickdashed\",\n        THICKDASHDOTTED: \"thickdashdotted\",\n        THICKDASHDOTDOTTED: \"thickdashdotdotted\",\n        THICKLONGDASH: \"thicklongdash\",\n        DOUBLEWAVE: \"doublewave\",\n        WORD: \"word\",\n        WAVE: \"wave\",\n    };\n    Helper.FONTPITCH = {\n        DEFAULT: 0,\n        FIXED: 1,\n        VARIABLE: 2,\n    };\n    Helper.CHARACTER_TYPE = {\n        LOWANSI: \"loch\",\n        HIGHANSI: \"hich\",\n        DOUBLE: \"dbch\",\n    };\n    Helper._A = \"A\".charCodeAt(0);\n    Helper._a = \"a\".charCodeAt(0);\n    Helper._F = \"F\".charCodeAt(0);\n    Helper._f = \"f\".charCodeAt(0);\n    Helper._Z = \"Z\".charCodeAt(0);\n    Helper._z = \"z\".charCodeAt(0);\n    Helper._0 = \"0\".charCodeAt(0);\n    Helper._9 = \"9\".charCodeAt(0);\n    Helper._charsetMap = {\n        0: 1252,\n        2: 42,\n        77: 10000,\n        78: 10001,\n        79: 10003,\n        80: 10008,\n        81: 10002,\n        83: 10005,\n        84: 10004,\n        85: 10006,\n        86: 10081,\n        87: 10021,\n        88: 10029,\n        89: 10007,\n        128: 932,\n        129: 949,\n        130: 1361,\n        134: 936,\n        136: 950,\n        161: 1253,\n        162: 1254,\n        163: 1258,\n        177: 1255,\n        178: 1256,\n        186: 1257,\n        204: 1251,\n        222: 874,\n        238: 1250,\n        254: 437,\n        255: 850, // OEM\n    };\n    Helper._colorThemeMap = {\n        // TODO\n        maindarkone: null,\n        mainlightone: null,\n        maindarktwo: null,\n        mainlighttwo: null,\n        accentone: null,\n        accenttwo: null,\n        accentthree: null,\n        accentfour: null,\n        accentfive: null,\n        accentsix: null,\n        hyperlink: null,\n        followedhyperlink: null,\n        backgroundone: null,\n        textone: null,\n        backgroundtwo: null,\n        texttwo: null,\n    };\n    return Helper;\n}());\n\n\n\n/***/ }),\n\n/***/ \"./src/rtfjs/parser/Containers.ts\":\n/*!****************************************!*\\\n  !*** ./src/rtfjs/parser/Containers.ts ***!\n  \\****************************************/\n/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"Chp\": () => (/* binding */ Chp),\n/* harmony export */   \"Pap\": () => (/* binding */ Pap),\n/* harmony export */   \"Sep\": () => (/* binding */ Sep),\n/* harmony export */   \"Dop\": () => (/* binding */ Dop),\n/* harmony export */   \"State\": () => (/* binding */ State),\n/* harmony export */   \"GlobalState\": () => (/* binding */ GlobalState),\n/* harmony export */   \"PlainText\": () => (/* binding */ PlainText),\n/* harmony export */   \"HexText\": () => (/* binding */ HexText)\n/* harmony export */ });\n/* harmony import */ var _Helper__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../Helper */ \"./src/rtfjs/Helper.ts\");\n/*\n\nThe MIT License (MIT)\n\nCopyright (c) 2015 Thomas Bluemel\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n\n*/\n\nvar Chp = /** @class */ (function () {\n    function Chp(parent) {\n        if (parent != null) {\n            this.bold = parent.bold;\n            this.underline = parent.underline;\n            this.italic = parent.italic;\n            this.strikethrough = parent.strikethrough;\n            this.dblstrikethrough = parent.dblstrikethrough;\n            this.colorindex = parent.colorindex;\n            this.highlightindex = parent.highlightindex;\n            this.fontsize = parent.fontsize;\n            this.fontfamily = parent.fontfamily;\n        }\n        else {\n            this.bold = false;\n            this.underline = _Helper__WEBPACK_IMPORTED_MODULE_0__.Helper.UNDERLINE.NONE;\n            this.italic = false;\n            this.strikethrough = false;\n            this.dblstrikethrough = false;\n            this.colorindex = 0;\n            this.highlightindex = 0;\n            this.fontsize = 24;\n        }\n    }\n    return Chp;\n}());\n\nvar Pap = /** @class */ (function () {\n    function Pap(parent) {\n        if (parent != null) {\n            this.indent = {\n                left: parent.indent.left,\n                right: parent.indent.right,\n                firstline: parent.indent.firstline,\n            };\n            this.justification = parent.justification;\n            this.spacebefore = parent.spacebefore;\n            this.spaceafter = parent.spaceafter;\n            this.charactertype = parent.charactertype;\n        }\n        else {\n            this.indent = {\n                left: 0,\n                right: 0,\n                firstline: 0,\n            };\n            this.justification = _Helper__WEBPACK_IMPORTED_MODULE_0__.Helper.JUSTIFICATION.LEFT;\n            this.spacebefore = 0;\n            this.spaceafter = 0;\n            this.charactertype = null;\n        }\n    }\n    return Pap;\n}());\n\nvar Sep = /** @class */ (function () {\n    function Sep(parent) {\n        if (parent != null) {\n            this.columns = parent.columns;\n            this.breaktype = parent.breaktype;\n            this.pagenumber = {\n                x: parent.pagenumber.x,\n                y: parent.pagenumber.y,\n            };\n            this.pagenumberformat = parent.pagenumberformat;\n        }\n        else {\n            this.columns = 0;\n            this.breaktype = _Helper__WEBPACK_IMPORTED_MODULE_0__.Helper.BREAKTYPE.NONE;\n            this.pagenumber = {\n                x: 0,\n                y: 0,\n            };\n            this.pagenumberformat = _Helper__WEBPACK_IMPORTED_MODULE_0__.Helper.PAGENUMBER.DECIMAL;\n        }\n    }\n    return Sep;\n}());\n\nvar Dop = /** @class */ (function () {\n    function Dop(parent) {\n        if (parent != null) {\n            this.width = parent.width;\n            this.height = parent.height;\n            this.margin = {\n                left: parent.margin.left,\n                top: parent.margin.top,\n                right: parent.margin.right,\n                bottom: parent.margin.bottom,\n            };\n            this.pagenumberstart = parent.pagenumberstart;\n            this.facingpages = parent.facingpages;\n            this.landscape = parent.landscape;\n        }\n        else {\n            this.width = 0;\n            this.height = 0;\n            this.margin = {\n                left: 0,\n                top: 0,\n                right: 0,\n                bottom: 0,\n            };\n            this.pagenumberstart = 0;\n            this.facingpages = false;\n            this.landscape = false;\n        }\n    }\n    return Dop;\n}());\n\nvar State = /** @class */ (function () {\n    function State(parent) {\n        this.parent = parent;\n        this.first = true;\n        this.skipchars = 0;\n        this.bindata = 0;\n        if (parent != null) {\n            this.chp = new Chp(parent.chp);\n            this.pap = new Pap(parent.pap);\n            this.sep = new Sep(parent.sep);\n            this.dop = new Dop(parent.dop);\n            this.destination = parent.destination;\n            this.skipunknowndestination = parent.skipunknowndestination;\n            this.skipdestination = parent.skipdestination;\n            this.ucn = parent.ucn;\n        }\n        else {\n            this.chp = new Chp(null);\n            this.pap = new Pap(null);\n            this.sep = new Sep(null);\n            this.dop = new Dop(null);\n            this.destination = null;\n            this.skipunknowndestination = false;\n            this.skipdestination = false;\n            this.ucn = 1;\n        }\n    }\n    return State;\n}());\n\nvar GlobalState = /** @class */ (function () {\n    function GlobalState(blob, renderer) {\n        this.data = new Uint8Array(blob);\n        this.pos = 0;\n        this.line = 1;\n        this.column = 0;\n        this.state = null;\n        this.version = null;\n        this.text = [];\n        this.codepage = 1252;\n        this._asyncTasks = [];\n        this.renderer = renderer;\n    }\n    return GlobalState;\n}());\n\nvar PlainText = /** @class */ (function () {\n    function PlainText(text) {\n        this.text = text;\n    }\n    return PlainText;\n}());\n\nvar HexText = /** @class */ (function () {\n    function HexText(hex, chp) {\n        this.hex = hex;\n        this.chp = chp;\n    }\n    return HexText;\n}());\n\n\n\n/***/ }),\n\n/***/ \"./src/rtfjs/parser/Parser.ts\":\n/*!************************************!*\\\n  !*** ./src/rtfjs/parser/Parser.ts ***!\n  \\************************************/\n/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"Parser\": () => (/* binding */ Parser)\n/* harmony export */ });\n/* harmony import */ var codepage__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! codepage */ \"./node_modules/codepage/cputils.js\");\n/* harmony import */ var codepage__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(codepage__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _Helper__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../Helper */ \"./src/rtfjs/Helper.ts\");\n/* harmony import */ var _renderer_RenderChp__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../renderer/RenderChp */ \"./src/rtfjs/renderer/RenderChp.ts\");\n/* harmony import */ var _renderer_RenderPap__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../renderer/RenderPap */ \"./src/rtfjs/renderer/RenderPap.ts\");\n/* harmony import */ var _Containers__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./Containers */ \"./src/rtfjs/parser/Containers.ts\");\n/* harmony import */ var _destinations_DestinationBase__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./destinations/DestinationBase */ \"./src/rtfjs/parser/destinations/DestinationBase.ts\");\n/* harmony import */ var _destinations_Destinations__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./destinations/Destinations */ \"./src/rtfjs/parser/destinations/Destinations.ts\");\n/*\n\nThe MIT License (MIT)\n\nCopyright (c) 2015 Thomas Bluemel\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n\n*/\n\n\n\n\n\n\n\nvar Parser = /** @class */ (function () {\n    function Parser(document, blob, renderer) {\n        this.inst = document;\n        this.parser = new _Containers__WEBPACK_IMPORTED_MODULE_4__.GlobalState(blob, renderer);\n    }\n    Parser.prototype.parse = function () {\n        if (this.parser.data.length > 1 && String.fromCharCode(this.parser.data[0]) === \"{\") {\n            this.parseLoop(false, true);\n            return Promise.all(this.parser._asyncTasks).then(function () {\n                return;\n            });\n        }\n        if (this.parser.version == null) {\n            throw new _Helper__WEBPACK_IMPORTED_MODULE_1__.RTFJSError(\"Not a valid rtf document\");\n        }\n        if (this.parser.state != null) {\n            throw new _Helper__WEBPACK_IMPORTED_MODULE_1__.RTFJSError(\"File truncated\");\n        }\n    };\n    Parser.prototype.eof = function () {\n        return this.parser.pos >= this.parser.data.length;\n    };\n    Parser.prototype.readChar = function () {\n        if (this.parser.pos < this.parser.data.length) {\n            this.parser.column++;\n            return String.fromCharCode(this.parser.data[this.parser.pos++]);\n        }\n        throw new _Helper__WEBPACK_IMPORTED_MODULE_1__.RTFJSError(\"Unexpected end of file\");\n    };\n    Parser.prototype.unreadChar = function () {\n        if (this.parser.pos > 0) {\n            this.parser.column--;\n            this.parser.pos--;\n        }\n        else {\n            throw new _Helper__WEBPACK_IMPORTED_MODULE_1__.RTFJSError(\"Already at beginning of file\");\n        }\n    };\n    Parser.prototype.readBlob = function (cnt) {\n        if (this.parser.pos + cnt > this.parser.data.length) {\n            throw new _Helper__WEBPACK_IMPORTED_MODULE_1__.RTFJSError(\"Cannot read binary data: too long\");\n        }\n        var buf = new ArrayBuffer(cnt);\n        var view = new Uint8Array(buf);\n        for (var i = 0; i < cnt; i++) {\n            view[i] = this.parser.data[this.parser.pos + i];\n        }\n        return buf;\n    };\n    Parser.prototype.applyDestination = function (always) {\n        var dest = this.parser.state.destination;\n        if (dest != null) {\n            if (always || this.parser.state.parent == null\n                || this.parser.state.parent.destination !== this.parser.state.destination) {\n                if (dest.apply != null) {\n                    dest.apply();\n                }\n                this.parser.state.destination = null;\n            }\n        }\n    };\n    Parser.prototype.applyText = function () {\n        if (this.parser.text.length > 0) {\n            var dest = this.parser.state.destination;\n            if (dest == null) {\n                throw new _Helper__WEBPACK_IMPORTED_MODULE_1__.RTFJSError(\"Cannot route text to destination\");\n            }\n            if (dest.appendText != null && !this.parser.state.skipdestination) {\n                var summarizedText = this.summarizeText(this.parser.text);\n                dest.appendText(summarizedText);\n            }\n            this.parser.text = [];\n        }\n    };\n    Parser.prototype.summarizeText = function (text) {\n        var result = \"\";\n        for (var i = 0; i < text.length; i++) {\n            var value = text[i];\n            if (value instanceof _Containers__WEBPACK_IMPORTED_MODULE_4__.PlainText) {\n                result += value.text;\n            }\n            else if (value instanceof _Containers__WEBPACK_IMPORTED_MODULE_4__.HexText) {\n                // Looking for current fonttbl charset\n                var codepage = this.parser.codepage;\n                if (Object.prototype.hasOwnProperty.call(value.chp, \"fontfamily\")) {\n                    var idx = value.chp.fontfamily;\n                    // Code page 42 isn't a real code page and shouldn't appear here\n                    if (this.inst._fonts !== undefined && this.inst._fonts[idx] != null\n                        && this.inst._fonts[idx].charset && this.inst._fonts[idx].charset !== 42) {\n                        codepage = this.inst._fonts[idx].charset;\n                    }\n                }\n                var hex = value.hex;\n                if (this.parser.state.pap.charactertype === _Helper__WEBPACK_IMPORTED_MODULE_1__.Helper.CHARACTER_TYPE.DOUBLE\n                    || (this.parser.state.pap.charactertype == null && hex >= 0x80)) {\n                    // A reference check is sufficient for the chp instances,\n                    // as they have to be the same if they belong to one character\n                    if (i + 1 < text.length\n                        && text[i + 1] instanceof _Containers__WEBPACK_IMPORTED_MODULE_4__.HexText && text[i + 1].chp === value.chp) {\n                        var doubleByteCharacterHex = hex * 0x100 + text[i + 1].hex;\n                        // Verify the double byte character is valid for this code page\n                        if ((codepage__WEBPACK_IMPORTED_MODULE_0___default())[codepage].dec[doubleByteCharacterHex] !== undefined) {\n                            hex = doubleByteCharacterHex;\n                            // Don't process the following hex character twice\n                            i++;\n                        }\n                    }\n                }\n                result += (codepage__WEBPACK_IMPORTED_MODULE_0___default())[codepage].dec[hex];\n            }\n        }\n        return result;\n    };\n    Parser.prototype.pushState = function (forceSkip) {\n        this.parser.state = new _Containers__WEBPACK_IMPORTED_MODULE_4__.State(this.parser.state);\n        if (forceSkip) {\n            this.parser.state.skipdestination = true;\n        }\n        var dest = this.parser.state.destination;\n        if (dest != null && !this.parser.state.skipdestination) {\n            if (dest.sub != null) {\n                var sub = dest.sub();\n                if (sub != null) {\n                    this.parser.state.destination = sub;\n                }\n            }\n        }\n    };\n    Parser.prototype.popState = function () {\n        var state = this.parser.state;\n        if (state == null) {\n            throw new _Helper__WEBPACK_IMPORTED_MODULE_1__.RTFJSError(\"Unexpected end of state\");\n        }\n        this.applyText();\n        if (state.parent == null || state.destination !== state.parent.destination) {\n            this.applyDestination(true);\n        }\n        this.parser.state = state.parent;\n        if (this.parser.state !== null) {\n            var currentState_1 = this.parser.state;\n            this.inst._ins.push(function (renderer) {\n                renderer.setChp(new _renderer_RenderChp__WEBPACK_IMPORTED_MODULE_2__.RenderChp(currentState_1.chp));\n            });\n            this.inst._ins.push(function (renderer) {\n                renderer.setPap(new _renderer_RenderPap__WEBPACK_IMPORTED_MODULE_3__.RenderPap(currentState_1.pap));\n            });\n        }\n        return this.parser.state;\n    };\n    Parser.prototype.changeDestination = function (name, param) {\n        this.applyText();\n        var handler = _destinations_Destinations__WEBPACK_IMPORTED_MODULE_6__.Destinations[name];\n        if (handler != null) {\n            this.applyDestination(false);\n            if (handler instanceof _destinations_DestinationBase__WEBPACK_IMPORTED_MODULE_5__.DestinationFactory) {\n                this.parser.state.destination = handler.newDestination(this.parser, this.inst, name, param);\n            }\n            else {\n                this.parser.state.destination = new handler(this.parser, this.inst, name, param);\n            }\n            return true;\n        }\n        return false;\n    };\n    Parser.prototype.processKeyword = function (keyword, param) {\n        var first = this.parser.state.first;\n        if (first) {\n            if (keyword === \"*\") {\n                this.parser.state.skipunknowndestination = true;\n                return;\n            }\n            this.parser.state.first = false;\n        }\n        if (this.parser.state.bindata > 0) {\n            throw new _Helper__WEBPACK_IMPORTED_MODULE_1__.RTFJSError(\"Keyword encountered within binary data\");\n        }\n        // Reset if we unexpectedly encounter a keyword\n        this.parser.state.skipchars = 0;\n        switch (keyword) {\n            case \"tab\":\n                return \"\\t\";\n            case \"emdash\":\n                return \"—\";\n            case \"endash\":\n                return \"–\";\n            case \"emspace\":\n                return \" \";\n            case \"enspace\":\n                return \" \";\n            case \"qmspace\":\n                return \" \";\n            case \"bullet\":\n                return \"•\";\n            case \"lquote\":\n                return \"‘\";\n            case \"rquote\":\n                return \"’\";\n            case \"ldblquote\":\n                return \"“\";\n            case \"rdblquote\":\n                return \"”\";\n            case \"~\":\n                return \" \";\n            case \"_\":\n                return \"‑\";\n            case \"{\":\n            case \"}\":\n            case \"\\\\\":\n                return keyword;\n            case \"uc\":\n                if (param != null && param >= 0) {\n                    this.parser.state.ucn = param;\n                }\n                break;\n            case \"u\":\n                if (param != null) {\n                    if (param < 0) {\n                        param += 65536;\n                    }\n                    if (param < 0 || param > 65535) {\n                        throw new _Helper__WEBPACK_IMPORTED_MODULE_1__.RTFJSError(\"Invalid unicode character encountered\");\n                    }\n                    var idx = this.parser.state.chp.fontfamily;\n                    // Code page 42 indicates a symbol, symbols between 0x0020 and 0x00ff\n                    // are mapped to the range between 0xf020 and 0xf0ff\n                    if (idx && this.inst._fonts\n                        && this.inst._fonts[idx].charset && this.inst._fonts[idx].charset === 42\n                        && param >= 0xf020 && param <= 0xf0ff) {\n                        this.appendText(new _Containers__WEBPACK_IMPORTED_MODULE_4__.PlainText(String.fromCharCode(param - 0xf000)));\n                    }\n                    else {\n                        this.appendText(new _Containers__WEBPACK_IMPORTED_MODULE_4__.PlainText(String.fromCharCode(param)));\n                    }\n                    this.parser.state.skipchars = this.parser.state.ucn;\n                }\n                return;\n            case \"bin\":\n                if (param == null) {\n                    throw new _Helper__WEBPACK_IMPORTED_MODULE_1__.RTFJSError(\"Binary data is missing length\");\n                }\n                if (param < 0) {\n                    throw new _Helper__WEBPACK_IMPORTED_MODULE_1__.RTFJSError(\"Binary data with invalid length\");\n                }\n                this.parser.state.bindata = param;\n                return;\n            case \"upr\":\n                this.parseLoop(true, false); // skip the first sub destination (ansi)\n                // this will be followed by a \\ud sub destination\n                return;\n            case \"ud\":\n            case \"ltrch\":\n            case \"rtlch\":\n                return;\n            case \"\\n\":\n            case \"\\r\": {\n                // Carriage return and line feed must be treated like a \\par, so we rewrite the keyword\n                // here and then fall through to the default behavior\n                this.parser.line++;\n                this.parser.column = 0;\n                keyword = \"par\";\n            }\n            // eslint-disable-next-line no-fallthrough\n            default:\n                if (!this.parser.state.skipdestination) {\n                    if (first) {\n                        if (!this.changeDestination(keyword, param)) {\n                            var handled = false;\n                            var dest = this.parser.state.destination;\n                            if (dest != null) {\n                                if (dest.handleKeyword != null) {\n                                    handled = dest.handleKeyword(keyword, param) || false;\n                                }\n                            }\n                            if (!handled && this.parser.state.skipunknowndestination) {\n                                this.parser.state.skipdestination = true;\n                            }\n                        }\n                    }\n                    else {\n                        this.applyText();\n                        var dest = this.parser.state.destination;\n                        if (dest != null) {\n                            if (dest.handleKeyword != null) {\n                                dest.handleKeyword(keyword, param);\n                            }\n                        }\n                        else {\n                            _Helper__WEBPACK_IMPORTED_MODULE_1__.Helper.log(\"Unhandled keyword: \" + keyword + \" param: \" + param);\n                        }\n                    }\n                }\n                return;\n        }\n        this.parser.state.skipdestination = false;\n    };\n    Parser.prototype.appendText = function (textData) {\n        this.parser.state.first = false;\n        if (this.parser.state.skipchars > 0) {\n            if (textData instanceof _Containers__WEBPACK_IMPORTED_MODULE_4__.PlainText) {\n                var len = textData.text.length;\n                if (this.parser.state.skipchars >= len) {\n                    this.parser.state.skipchars -= len;\n                    return;\n                }\n                if (this.parser.state.destination == null || !this.parser.state.skipdestination) {\n                    this.parser.text.push(new _Containers__WEBPACK_IMPORTED_MODULE_4__.PlainText(textData.text.slice(this.parser.state.skipchars)));\n                }\n            }\n            else {\n                if (this.parser.state.skipchars >= 1) {\n                    this.parser.state.skipchars -= 1;\n                    return;\n                }\n                if (this.parser.state.destination == null || !this.parser.state.skipdestination) {\n                    this.parser.text.push(textData);\n                }\n            }\n            this.parser.state.skipchars = 0;\n        }\n        else if (this.parser.state.destination == null || !this.parser.state.skipdestination) {\n            this.parser.text.push(textData);\n        }\n    };\n    Parser.prototype.applyBlob = function (blob) {\n        this.parser.state.first = false;\n        this.applyText();\n        if (this.parser.state.skipchars > 0) {\n            // \\bin and all its data is considered one character for skipping purposes\n            this.parser.state.skipchars--;\n        }\n        else {\n            var dest = this.parser.state.destination;\n            if (dest == null) {\n                throw new _Helper__WEBPACK_IMPORTED_MODULE_1__.RTFJSError(\"Cannot route binary to destination\");\n            }\n            if (dest.handleBlob != null && !this.parser.state.skipdestination) {\n                dest.handleBlob(blob);\n            }\n        }\n    };\n    Parser.prototype.parseKeyword = function (process) {\n        if (this.parser.state == null) {\n            throw new _Helper__WEBPACK_IMPORTED_MODULE_1__.RTFJSError(\"No state\");\n        }\n        var param;\n        var ch = this.readChar();\n        if (!_Helper__WEBPACK_IMPORTED_MODULE_1__.Helper._isalpha(ch)) {\n            // 8 bit character encoded as hexadecimal\n            if (ch === \"'\") {\n                var hex = this.readChar() + this.readChar();\n                param = _Helper__WEBPACK_IMPORTED_MODULE_1__.Helper._parseHex(hex);\n                if (isNaN(param)) {\n                    throw new _Helper__WEBPACK_IMPORTED_MODULE_1__.RTFJSError(\"Could not parse hexadecimal number\");\n                }\n                if (process) {\n                    this.appendText(new _Containers__WEBPACK_IMPORTED_MODULE_4__.HexText(param, this.parser.state.chp));\n                }\n            }\n            else if (process) {\n                var text = this.processKeyword(ch, null);\n                if (text != null) {\n                    this.appendText(new _Containers__WEBPACK_IMPORTED_MODULE_4__.PlainText(text));\n                }\n            }\n        }\n        else {\n            var keyword = ch;\n            ch = this.readChar();\n            while (keyword.length < 30 && _Helper__WEBPACK_IMPORTED_MODULE_1__.Helper._isalpha(ch)) {\n                keyword += ch;\n                ch = this.readChar();\n            }\n            var num = void 0;\n            if (ch === \"-\") {\n                num = \"-\";\n                ch = this.readChar();\n            }\n            else {\n                num = \"\";\n            }\n            if (_Helper__WEBPACK_IMPORTED_MODULE_1__.Helper._isdigit(ch)) {\n                do {\n                    num += ch;\n                    ch = this.readChar();\n                } while (num.length < 20 && _Helper__WEBPACK_IMPORTED_MODULE_1__.Helper._isdigit(ch));\n                if (num.length >= 20) {\n                    throw new _Helper__WEBPACK_IMPORTED_MODULE_1__.RTFJSError(\"Param for keyword \" + keyword + \" too long\");\n                }\n                param = parseInt(num, 10);\n                if (isNaN(param)) {\n                    throw new _Helper__WEBPACK_IMPORTED_MODULE_1__.RTFJSError(\"Invalid keyword \" + keyword + \" param\");\n                }\n            }\n            if (ch !== \" \") {\n                this.unreadChar();\n            }\n            if (process) {\n                var text = this.processKeyword(keyword, param);\n                if (text != null) {\n                    this.appendText(new _Containers__WEBPACK_IMPORTED_MODULE_4__.PlainText(text));\n                }\n            }\n        }\n    };\n    Parser.prototype.parseLoop = function (skip, process) {\n        try {\n            var initialState = this.parser.state;\n            main_loop: while (!this.eof()) {\n                if (this.parser.state != null && this.parser.state.bindata > 0) {\n                    var blob = this.readBlob(this.parser.state.bindata);\n                    this.parser.state.bindata = 0;\n                    this.applyBlob(blob);\n                }\n                else {\n                    var ch = this.readChar();\n                    switch (ch) {\n                        case \"\\r\":\n                            continue;\n                        case \"\\n\":\n                            this.parser.line++;\n                            this.parser.column = 0;\n                            continue;\n                        case \"{\":\n                            this.pushState(skip);\n                            break;\n                        case \"}\":\n                            if (initialState === this.parser.state) {\n                                this.unreadChar();\n                                break main_loop;\n                            }\n                            else if (this.popState() === initialState) {\n                                break main_loop;\n                            }\n                            break;\n                        case \"\\\\\":\n                            this.parseKeyword(!skip ? process : null);\n                            break;\n                        default:\n                            if (!skip) {\n                                this.appendText(new _Containers__WEBPACK_IMPORTED_MODULE_4__.PlainText(ch));\n                            }\n                            break;\n                    }\n                }\n            }\n        }\n        catch (error) {\n            if (error instanceof _Helper__WEBPACK_IMPORTED_MODULE_1__.RTFJSError) {\n                error.message += \" (line: \" + this.parser.line + \"; column: \" + this.parser.column + \")\";\n            }\n            throw error;\n        }\n    };\n    return Parser;\n}());\n\n\n\n/***/ }),\n\n/***/ \"./src/rtfjs/parser/destinations/ColortblDestinations.ts\":\n/*!***************************************************************!*\\\n  !*** ./src/rtfjs/parser/destinations/ColortblDestinations.ts ***!\n  \\***************************************************************/\n/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"ColortblDestination\": () => (/* binding */ ColortblDestination)\n/* harmony export */ });\n/* harmony import */ var _Helper__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../Helper */ \"./src/rtfjs/Helper.ts\");\n/* harmony import */ var _DestinationBase__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./DestinationBase */ \"./src/rtfjs/parser/destinations/DestinationBase.ts\");\n/*\n\nThe MIT License (MIT)\n\nCopyright (c) 2015 Thomas Bluemel\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n\n*/\nvar __extends = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        if (typeof b !== \"function\" && b !== null)\n            throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\n\n\nvar ColortblDestination = /** @class */ (function (_super) {\n    __extends(ColortblDestination, _super);\n    function ColortblDestination(parser, inst) {\n        var _this = _super.call(this, \"colortbl\") || this;\n        _this._colors = [];\n        _this._current = null;\n        _this._autoIndex = null;\n        _this.inst = inst;\n        return _this;\n    }\n    ColortblDestination.prototype.appendText = function (text) {\n        // We expect this method to be called after the color was fully defined.\n        if (text.trim() !== \";\") {\n            throw new _Helper__WEBPACK_IMPORTED_MODULE_0__.RTFJSError(\"Error parsing colortbl destination\");\n        }\n        if (this._current == null) {\n            if (this._autoIndex != null) {\n                throw new _Helper__WEBPACK_IMPORTED_MODULE_0__.RTFJSError(\"colortbl cannot define more than one auto color\");\n            }\n            this._autoIndex = this._colors.length;\n            this._startNewColor();\n        }\n        else {\n            if (this._current.tint < 255 && this._current.shade < 255) {\n                throw new _Helper__WEBPACK_IMPORTED_MODULE_0__.RTFJSError(\"colortbl cannot define shade and tint at the same time\");\n            }\n        }\n        this._colors.push(this._current);\n        this._current = null;\n    };\n    ColortblDestination.prototype.handleKeyword = function (keyword, param) {\n        if (this._current == null) {\n            this._startNewColor();\n        }\n        switch (keyword) {\n            case \"red\":\n                this._current.r = this._validateColorValueRange(keyword, param);\n                return true;\n            case \"green\":\n                this._current.g = this._validateColorValueRange(keyword, param);\n                return true;\n            case \"blue\":\n                this._current.b = this._validateColorValueRange(keyword, param);\n                return true;\n            case \"ctint\":\n                this._current.tint = this._validateColorValueRange(keyword, param);\n                return true;\n            case \"cshade\":\n                this._current.shade = this._validateColorValueRange(keyword, param);\n                return true;\n            default:\n                if (keyword[0] === \"c\") {\n                    this._current.theme = _Helper__WEBPACK_IMPORTED_MODULE_0__.Helper._mapColorTheme(keyword.slice(1));\n                    return true;\n                }\n                break;\n        }\n        _Helper__WEBPACK_IMPORTED_MODULE_0__.Helper.log(\"[colortbl] handleKeyword(): unhandled keyword: \" + keyword);\n        return false;\n    };\n    ColortblDestination.prototype.apply = function () {\n        _Helper__WEBPACK_IMPORTED_MODULE_0__.Helper.log(\"[colortbl] apply()\");\n        if (this._autoIndex == null) {\n            this._autoIndex = 0;\n        }\n        if (this._autoIndex >= this._colors.length) {\n            throw new _Helper__WEBPACK_IMPORTED_MODULE_0__.RTFJSError(\"colortbl doesn't define auto color\");\n        }\n        for (var idx in this._colors) {\n            _Helper__WEBPACK_IMPORTED_MODULE_0__.Helper.log(\"[colortbl] [\" + idx + \"] = \"\n                + this._colors[idx].r + \",\" + this._colors[idx].g + \",\" + this._colors[idx].b\n                + \" theme: \" + this._colors[idx].theme);\n        }\n        this.inst._colors = this._colors;\n        this.inst._autoColor = this._autoIndex;\n        delete this._colors;\n    };\n    ColortblDestination.prototype._startNewColor = function () {\n        this._current = {\n            r: 0,\n            g: 0,\n            b: 0,\n            tint: 255,\n            shade: 255,\n            theme: null,\n        };\n        return this._current;\n    };\n    ColortblDestination.prototype._validateColorValueRange = function (keyword, param) {\n        if (param == null) {\n            throw new _Helper__WEBPACK_IMPORTED_MODULE_0__.RTFJSError(keyword + \" has no param\");\n        }\n        if (param < 0 || param > 255) {\n            throw new _Helper__WEBPACK_IMPORTED_MODULE_0__.RTFJSError(keyword + \" has invalid param value\");\n        }\n        return param;\n    };\n    return ColortblDestination;\n}(_DestinationBase__WEBPACK_IMPORTED_MODULE_1__.DestinationBase));\n\n\n\n/***/ }),\n\n/***/ \"./src/rtfjs/parser/destinations/DestinationBase.ts\":\n/*!**********************************************************!*\\\n  !*** ./src/rtfjs/parser/destinations/DestinationBase.ts ***!\n  \\**********************************************************/\n/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"DestinationFactory\": () => (/* binding */ DestinationFactory),\n/* harmony export */   \"findParentDestination\": () => (/* binding */ findParentDestination),\n/* harmony export */   \"DestinationBase\": () => (/* binding */ DestinationBase),\n/* harmony export */   \"DestinationTextBase\": () => (/* binding */ DestinationTextBase),\n/* harmony export */   \"DestinationFormattedTextBase\": () => (/* binding */ DestinationFormattedTextBase),\n/* harmony export */   \"GenericPropertyDestinationFactory\": () => (/* binding */ GenericPropertyDestinationFactory),\n/* harmony export */   \"GenericSubTextPropertyDestinationFactory\": () => (/* binding */ GenericSubTextPropertyDestinationFactory),\n/* harmony export */   \"RequiredDestinationFactory\": () => (/* binding */ RequiredDestinationFactory)\n/* harmony export */ });\n/* harmony import */ var _Helper__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../Helper */ \"./src/rtfjs/Helper.ts\");\n/*\n\nThe MIT License (MIT)\n\nCopyright (c) 2015 Thomas Bluemel\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n\n*/\nvar __extends = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        if (typeof b !== \"function\" && b !== null)\n            throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\n\nvar DestinationFactory = /** @class */ (function () {\n    function DestinationFactory() {\n    }\n    DestinationFactory.prototype.newDestination = function (parser, inst, name, param) {\n        return new this.class(parser, inst, name, param);\n    };\n    return DestinationFactory;\n}());\n\nvar findParentDestination = function (parser, dest) {\n    var state = parser.state;\n    while (state != null) {\n        if (state.destination == null) {\n            break;\n        }\n        if (state.destination._name === dest) {\n            return state.destination;\n        }\n        state = state.parent;\n    }\n    _Helper__WEBPACK_IMPORTED_MODULE_0__.Helper.log(\"findParentDestination() did not find destination \" + dest);\n};\nvar DestinationBase = /** @class */ (function () {\n    function DestinationBase(name) {\n        this._name = name;\n    }\n    return DestinationBase;\n}());\n\nvar DestinationTextBase = /** @class */ (function () {\n    function DestinationTextBase(name) {\n        this._name = name;\n        this.text = \"\";\n    }\n    DestinationTextBase.prototype.appendText = function (text) {\n        this.text += text;\n    };\n    return DestinationTextBase;\n}());\n\nvar DestinationFormattedTextBase = /** @class */ (function () {\n    function DestinationFormattedTextBase(parser, name) {\n        this.parser = parser;\n        this._name = name;\n        this._records = [];\n    }\n    DestinationFormattedTextBase.prototype.appendText = function (text) {\n        this._records.push(function (rtf) {\n            rtf.appendText(text);\n        });\n    };\n    DestinationFormattedTextBase.prototype.handleKeyword = function (keyword, param) {\n        this._records.push(function (rtf) {\n            return rtf.handleKeyword(keyword, param);\n        });\n    };\n    DestinationFormattedTextBase.prototype.apply = function () {\n        var rtf = findParentDestination(this.parser, \"rtf\");\n        if (rtf == null) {\n            throw new _Helper__WEBPACK_IMPORTED_MODULE_0__.RTFJSError(\"IDestination \" + this._name + \" is not child of rtf destination\");\n        }\n        var len = this._records.length;\n        var doRender = true;\n        if (this.renderBegin != null) {\n            doRender = this.renderBegin(rtf, len);\n        }\n        if (doRender) {\n            for (var i = 0; i < len; i++) {\n                this._records[i](rtf);\n            }\n            if (this.renderEnd != null) {\n                this.renderEnd(rtf, len);\n            }\n        }\n        delete this._records;\n    };\n    return DestinationFormattedTextBase;\n}());\n\nvar GenericPropertyDestinationFactory = /** @class */ (function (_super) {\n    __extends(GenericPropertyDestinationFactory, _super);\n    function GenericPropertyDestinationFactory(parentdest, metaprop) {\n        var _this = _super.call(this) || this;\n        _this.class = /** @class */ (function (_super) {\n            __extends(class_1, _super);\n            function class_1(parser, inst, name) {\n                var _this = _super.call(this, name) || this;\n                _this.parser = parser;\n                return _this;\n            }\n            class_1.prototype.apply = function () {\n                var dest = findParentDestination(this.parser, parentdest);\n                if (dest == null) {\n                    throw new _Helper__WEBPACK_IMPORTED_MODULE_0__.RTFJSError(\"IDestination \" + this._name + \" must be within \"\n                        + parentdest + \" destination\");\n                }\n                if (dest.setMetadata == null) {\n                    throw new _Helper__WEBPACK_IMPORTED_MODULE_0__.RTFJSError(\"IDestination \" + parentdest + \" does not accept meta data\");\n                }\n                dest.setMetadata(metaprop, this.text);\n            };\n            return class_1;\n        }(DestinationTextBase));\n        return _this;\n    }\n    return GenericPropertyDestinationFactory;\n}(DestinationFactory));\n\nvar GenericSubTextPropertyDestinationFactory = /** @class */ (function (_super) {\n    __extends(GenericSubTextPropertyDestinationFactory, _super);\n    function GenericSubTextPropertyDestinationFactory(name, parentDest, propOrFunc) {\n        var _this = _super.call(this) || this;\n        _this.class = /** @class */ (function (_super) {\n            __extends(class_2, _super);\n            function class_2(parser) {\n                var _this = _super.call(this, name) || this;\n                _this.parser = parser;\n                return _this;\n            }\n            class_2.prototype.apply = function () {\n                var dest = findParentDestination(this.parser, parentDest);\n                if (dest == null) {\n                    throw new _Helper__WEBPACK_IMPORTED_MODULE_0__.RTFJSError(this._name + \" destination must be child of \" + parentDest + \" destination\");\n                }\n                if (dest[propOrFunc] == null) {\n                    throw new _Helper__WEBPACK_IMPORTED_MODULE_0__.RTFJSError(this._name + \" destination cannot find member + \" + propOrFunc\n                        + \" in \" + parentDest + \" destination\");\n                }\n                if (dest[propOrFunc] instanceof Function) {\n                    dest[propOrFunc](this.text);\n                }\n                else {\n                    dest[propOrFunc] = this.text;\n                }\n            };\n            return class_2;\n        }(DestinationTextBase));\n        return _this;\n    }\n    return GenericSubTextPropertyDestinationFactory;\n}(DestinationFactory));\n\nvar RequiredDestinationFactory = /** @class */ (function (_super) {\n    __extends(RequiredDestinationFactory, _super);\n    function RequiredDestinationFactory(name) {\n        var _this = _super.call(this) || this;\n        _this.class = /** @class */ (function (_super) {\n            __extends(class_3, _super);\n            function class_3() {\n                return _super.call(this, name) || this;\n            }\n            return class_3;\n        }(DestinationBase));\n        return _this;\n    }\n    return RequiredDestinationFactory;\n}(DestinationFactory));\n\n\n\n/***/ }),\n\n/***/ \"./src/rtfjs/parser/destinations/Destinations.ts\":\n/*!*******************************************************!*\\\n  !*** ./src/rtfjs/parser/destinations/Destinations.ts ***!\n  \\*******************************************************/\n/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"Destinations\": () => (/* binding */ Destinations)\n/* harmony export */ });\n/* harmony import */ var _ColortblDestinations__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./ColortblDestinations */ \"./src/rtfjs/parser/destinations/ColortblDestinations.ts\");\n/* harmony import */ var _DestinationBase__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./DestinationBase */ \"./src/rtfjs/parser/destinations/DestinationBase.ts\");\n/* harmony import */ var _FieldDestinations__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./FieldDestinations */ \"./src/rtfjs/parser/destinations/FieldDestinations.ts\");\n/* harmony import */ var _FonttblDestinations__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./FonttblDestinations */ \"./src/rtfjs/parser/destinations/FonttblDestinations.ts\");\n/* harmony import */ var _MetaDestinations__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./MetaDestinations */ \"./src/rtfjs/parser/destinations/MetaDestinations.ts\");\n/* harmony import */ var _PictDestinations__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./PictDestinations */ \"./src/rtfjs/parser/destinations/PictDestinations.ts\");\n/* harmony import */ var _RtfDestination__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./RtfDestination */ \"./src/rtfjs/parser/destinations/RtfDestination.ts\");\n/* harmony import */ var _StylesheetDestination__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./StylesheetDestination */ \"./src/rtfjs/parser/destinations/StylesheetDestination.ts\");\n/*\n\nThe MIT License (MIT)\n\nCopyright (c) 2015 Thomas Bluemel\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n\n*/\n\n\n\n\n\n\n\n\nvar Destinations = {\n    rtf: _RtfDestination__WEBPACK_IMPORTED_MODULE_6__.RtfDestination,\n    info: _MetaDestinations__WEBPACK_IMPORTED_MODULE_4__.InfoDestination,\n    title: new _MetaDestinations__WEBPACK_IMPORTED_MODULE_4__.MetaPropertyDestinationFactory(\"title\"),\n    subject: new _MetaDestinations__WEBPACK_IMPORTED_MODULE_4__.MetaPropertyDestinationFactory(\"subject\"),\n    author: new _MetaDestinations__WEBPACK_IMPORTED_MODULE_4__.MetaPropertyDestinationFactory(\"author\"),\n    manager: new _MetaDestinations__WEBPACK_IMPORTED_MODULE_4__.MetaPropertyDestinationFactory(\"manager\"),\n    company: new _MetaDestinations__WEBPACK_IMPORTED_MODULE_4__.MetaPropertyDestinationFactory(\"company\"),\n    operator: new _MetaDestinations__WEBPACK_IMPORTED_MODULE_4__.MetaPropertyDestinationFactory(\"operator\"),\n    category: new _MetaDestinations__WEBPACK_IMPORTED_MODULE_4__.MetaPropertyDestinationFactory(\"category\"),\n    keywords: new _MetaDestinations__WEBPACK_IMPORTED_MODULE_4__.MetaPropertyDestinationFactory(\"keywords\"),\n    doccomm: new _MetaDestinations__WEBPACK_IMPORTED_MODULE_4__.MetaPropertyDestinationFactory(\"doccomm\"),\n    hlinkbase: new _MetaDestinations__WEBPACK_IMPORTED_MODULE_4__.MetaPropertyDestinationFactory(\"hlinkbase\"),\n    generator: new _DestinationBase__WEBPACK_IMPORTED_MODULE_1__.GenericPropertyDestinationFactory(\"rtf\", \"generator\"),\n    creatim: new _MetaDestinations__WEBPACK_IMPORTED_MODULE_4__.MetaPropertyTimeDestinationFactory(\"creatim\"),\n    revtim: new _MetaDestinations__WEBPACK_IMPORTED_MODULE_4__.MetaPropertyTimeDestinationFactory(\"revtim\"),\n    printim: new _MetaDestinations__WEBPACK_IMPORTED_MODULE_4__.MetaPropertyTimeDestinationFactory(\"printim\"),\n    buptim: new _MetaDestinations__WEBPACK_IMPORTED_MODULE_4__.MetaPropertyTimeDestinationFactory(\"buptim\"),\n    fonttbl: _FonttblDestinations__WEBPACK_IMPORTED_MODULE_3__.FonttblDestination,\n    falt: new _DestinationBase__WEBPACK_IMPORTED_MODULE_1__.GenericSubTextPropertyDestinationFactory(\"falt\", \"fonttbl:sub\", \"setAltFontName\"),\n    colortbl: _ColortblDestinations__WEBPACK_IMPORTED_MODULE_0__.ColortblDestination,\n    stylesheet: _StylesheetDestination__WEBPACK_IMPORTED_MODULE_7__.StylesheetDestination,\n    footer: new _DestinationBase__WEBPACK_IMPORTED_MODULE_1__.RequiredDestinationFactory(\"footer\"),\n    footerf: new _DestinationBase__WEBPACK_IMPORTED_MODULE_1__.RequiredDestinationFactory(\"footerf\"),\n    footerl: new _DestinationBase__WEBPACK_IMPORTED_MODULE_1__.RequiredDestinationFactory(\"footerl\"),\n    footerr: new _DestinationBase__WEBPACK_IMPORTED_MODULE_1__.RequiredDestinationFactory(\"footerr\"),\n    footnote: new _DestinationBase__WEBPACK_IMPORTED_MODULE_1__.RequiredDestinationFactory(\"footnote\"),\n    ftncn: new _DestinationBase__WEBPACK_IMPORTED_MODULE_1__.RequiredDestinationFactory(\"ftncn\"),\n    ftnsep: new _DestinationBase__WEBPACK_IMPORTED_MODULE_1__.RequiredDestinationFactory(\"ftnsep\"),\n    ftnsepc: new _DestinationBase__WEBPACK_IMPORTED_MODULE_1__.RequiredDestinationFactory(\"ftnsepc\"),\n    header: new _DestinationBase__WEBPACK_IMPORTED_MODULE_1__.RequiredDestinationFactory(\"header\"),\n    headerf: new _DestinationBase__WEBPACK_IMPORTED_MODULE_1__.RequiredDestinationFactory(\"headerf\"),\n    headerl: new _DestinationBase__WEBPACK_IMPORTED_MODULE_1__.RequiredDestinationFactory(\"headerl\"),\n    headerr: new _DestinationBase__WEBPACK_IMPORTED_MODULE_1__.RequiredDestinationFactory(\"headerr\"),\n    pict: _PictDestinations__WEBPACK_IMPORTED_MODULE_5__.PictDestination,\n    shppict: new _PictDestinations__WEBPACK_IMPORTED_MODULE_5__.PictGroupDestinationFactory(false),\n    nonshppict: new _PictDestinations__WEBPACK_IMPORTED_MODULE_5__.PictGroupDestinationFactory(true),\n    private1: new _DestinationBase__WEBPACK_IMPORTED_MODULE_1__.RequiredDestinationFactory(\"private1\"),\n    rxe: new _DestinationBase__WEBPACK_IMPORTED_MODULE_1__.RequiredDestinationFactory(\"rxe\"),\n    tc: new _DestinationBase__WEBPACK_IMPORTED_MODULE_1__.RequiredDestinationFactory(\"tc\"),\n    txe: new _DestinationBase__WEBPACK_IMPORTED_MODULE_1__.RequiredDestinationFactory(\"txe\"),\n    xe: new _DestinationBase__WEBPACK_IMPORTED_MODULE_1__.RequiredDestinationFactory(\"xe\"),\n    field: _FieldDestinations__WEBPACK_IMPORTED_MODULE_2__.FieldDestination,\n    fldinst: _FieldDestinations__WEBPACK_IMPORTED_MODULE_2__.FldinstDestination,\n    fldrslt: _FieldDestinations__WEBPACK_IMPORTED_MODULE_2__.FldrsltDestination,\n};\n\n\n/***/ }),\n\n/***/ \"./src/rtfjs/parser/destinations/FieldDestinations.ts\":\n/*!************************************************************!*\\\n  !*** ./src/rtfjs/parser/destinations/FieldDestinations.ts ***!\n  \\************************************************************/\n/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"FieldDestination\": () => (/* binding */ FieldDestination),\n/* harmony export */   \"FldinstDestination\": () => (/* binding */ FldinstDestination),\n/* harmony export */   \"FldrsltDestination\": () => (/* binding */ FldrsltDestination)\n/* harmony export */ });\n/* harmony import */ var _Helper__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../Helper */ \"./src/rtfjs/Helper.ts\");\n/* harmony import */ var _DestinationBase__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./DestinationBase */ \"./src/rtfjs/parser/destinations/DestinationBase.ts\");\n/* harmony import */ var _PictDestinations__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./PictDestinations */ \"./src/rtfjs/parser/destinations/PictDestinations.ts\");\n/*\n\nThe MIT License (MIT)\n\nCopyright (c) 2015 Thomas Bluemel\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n\n*/\nvar __extends = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        if (typeof b !== \"function\" && b !== null)\n            throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\n\n\n\nvar FieldDestination = /** @class */ (function (_super) {\n    __extends(FieldDestination, _super);\n    function FieldDestination() {\n        var _this = _super.call(this, \"field\") || this;\n        _this._haveInst = false;\n        _this._parsedInst = null; // FieldBase\n        _this._result = null;\n        return _this;\n    }\n    FieldDestination.prototype.apply = function () {\n        if (!this._haveInst) {\n            throw new _Helper__WEBPACK_IMPORTED_MODULE_0__.RTFJSError(\"IField has no fldinst destination\");\n        }\n        // A fldrslt destination should be included but is not required\n        // if (this._result == null)\n        //     throw new RTFJSError(\"IField has no fldrslt destination\");\n    };\n    FieldDestination.prototype.setInst = function (inst) {\n        var _this = this;\n        this._haveInst = true;\n        if (this._parsedInst != null) {\n            throw new _Helper__WEBPACK_IMPORTED_MODULE_0__.RTFJSError(\"IField cannot have multiple fldinst destinations\");\n        }\n        if (inst instanceof Promise) {\n            inst.then(function (parsedInst) {\n                _this._parsedInst = parsedInst;\n            }).catch(function (error) {\n                _this._parsedInst = null;\n                throw new _Helper__WEBPACK_IMPORTED_MODULE_0__.RTFJSError(error.message);\n            });\n        }\n        else {\n            this._parsedInst = inst;\n        }\n    };\n    FieldDestination.prototype.getInst = function () {\n        return this._parsedInst;\n    };\n    FieldDestination.prototype.setResult = function (inst) {\n        if (this._result != null) {\n            throw new _Helper__WEBPACK_IMPORTED_MODULE_0__.RTFJSError(\"IField cannot have multiple fldrslt destinations\");\n        }\n        this._result = inst;\n    };\n    return FieldDestination;\n}(_DestinationBase__WEBPACK_IMPORTED_MODULE_1__.DestinationBase));\n\nvar FieldBase = /** @class */ (function () {\n    function FieldBase(fldinst) {\n        this._fldinst = fldinst;\n    }\n    FieldBase.prototype.renderFieldEnd = function (field, rtf, records) {\n        if (records > 0) {\n            rtf.addIns(function (renderer) {\n                renderer.popContainer();\n            });\n        }\n    };\n    return FieldBase;\n}());\nvar FieldHyperlink = /** @class */ (function (_super) {\n    __extends(FieldHyperlink, _super);\n    function FieldHyperlink(fldinst, data) {\n        var _this = _super.call(this, fldinst) || this;\n        _this._url = data;\n        return _this;\n    }\n    FieldHyperlink.prototype.url = function () {\n        return this._url;\n    };\n    FieldHyperlink.prototype.renderFieldBegin = function (field, rtf, records) {\n        // eslint-disable-next-line @typescript-eslint/no-this-alias\n        var self = this;\n        if (records > 0) {\n            rtf.addIns(function (renderer) {\n                var inst = renderer._doc;\n                var create = function () {\n                    return renderer.buildHyperlinkElement(self._url);\n                };\n                var container;\n                if (inst._settings.onHyperlink != null) {\n                    container = inst._settings.onHyperlink(create, {\n                        url: function () {\n                            return self.url();\n                        },\n                    });\n                }\n                else {\n                    var elem = create();\n                    container = {\n                        element: elem,\n                        content: elem,\n                    };\n                }\n                renderer.pushContainer(container);\n            });\n            return true;\n        }\n        return false;\n    };\n    return FieldHyperlink;\n}(FieldBase));\nvar FldinstDestination = /** @class */ (function (_super) {\n    __extends(FldinstDestination, _super);\n    function FldinstDestination(parser, inst) {\n        var _this = _super.call(this, \"fldinst\") || this;\n        _this.parser = parser;\n        _this.inst = inst;\n        return _this;\n    }\n    FldinstDestination.prototype.apply = function () {\n        var field = (0,_DestinationBase__WEBPACK_IMPORTED_MODULE_1__.findParentDestination)(this.parser, \"field\");\n        if (field == null) {\n            throw new _Helper__WEBPACK_IMPORTED_MODULE_0__.RTFJSError(\"fldinst destination must be child of field destination\");\n        }\n        field.setInst(this.parseType());\n    };\n    FldinstDestination.prototype.parseType = function () {\n        var _this = this;\n        this.text = this.text.trim();\n        var sep = this.text.indexOf(\" \");\n        if (sep > 0) {\n            var data_1 = this.text.substr(sep + 1);\n            if (data_1.length >= 2 && data_1[0] === \"\\\"\") {\n                var end = data_1.indexOf(\"\\\"\", 1);\n                if (end >= 1) {\n                    data_1 = data_1.substring(1, end);\n                }\n            }\n            var fieldType = this.text.substr(0, sep).toUpperCase();\n            switch (fieldType) {\n                case \"HYPERLINK\":\n                    return new FieldHyperlink(this, data_1);\n                case \"IMPORT\":\n                    if (typeof this.inst._settings.onImport === \"function\") {\n                        var pict_1;\n                        this.inst.addIns(function (renderer) {\n                            var inst = renderer._doc;\n                            // backup\n                            var hook = inst._settings.onPicture;\n                            inst._settings.onPicture = null;\n                            // eslint-disable-next-line prefer-const\n                            var _a = pict_1.apply(true), isLegacy = _a.isLegacy, element = _a.element;\n                            // restore\n                            inst._settings.onPicture = hook;\n                            if (typeof hook === \"function\") {\n                                element = hook(isLegacy, function () { return element; });\n                            }\n                            if (element != null) {\n                                renderer.appendElement(element);\n                            }\n                        });\n                        var promise = new Promise(function (resolve, reject) {\n                            try {\n                                var cb = function (_a) {\n                                    var error = _a.error, keyword = _a.keyword, blob = _a.blob, width = _a.width, height = _a.height;\n                                    if (!error && typeof keyword === \"string\" && keyword && blob) {\n                                        var dims = {\n                                            w: _Helper__WEBPACK_IMPORTED_MODULE_0__.Helper._pxToTwips(width || window.document.body.clientWidth\n                                                || window.innerWidth),\n                                            h: _Helper__WEBPACK_IMPORTED_MODULE_0__.Helper._pxToTwips(height || 300),\n                                        };\n                                        pict_1 = new _PictDestinations__WEBPACK_IMPORTED_MODULE_2__.PictDestination(_this.parser, _this.inst);\n                                        pict_1.handleBlob(blob);\n                                        pict_1.handleKeyword(keyword, 8); // mapMode: 8 => preserve aspect ratio\n                                        pict_1._displaysize.width = dims.w;\n                                        pict_1._displaysize.height = dims.h;\n                                        pict_1._size.width = dims.w;\n                                        pict_1._size.height = dims.h;\n                                        var _parsedInst = {\n                                            renderFieldBegin: function () { return true; },\n                                            renderFieldEnd: function () { return null; },\n                                        };\n                                        resolve(_parsedInst);\n                                    }\n                                    else {\n                                        _Helper__WEBPACK_IMPORTED_MODULE_0__.Helper.log(\"[fldinst]: failed to IMPORT image file: \" + data_1);\n                                        if (error) {\n                                            error = (error instanceof Error) ? error : new Error(error);\n                                            reject(error);\n                                        }\n                                        else {\n                                            resolve(null);\n                                        }\n                                    }\n                                };\n                                _this.inst._settings.onImport(data_1, cb);\n                            }\n                            catch (error) {\n                                reject(error);\n                            }\n                        });\n                        this.parser._asyncTasks.push(promise);\n                        return promise;\n                    }\n                    break;\n                default:\n                    _Helper__WEBPACK_IMPORTED_MODULE_0__.Helper.log(\"[fldinst]: unknown field type: \" + fieldType);\n                    break;\n            }\n        }\n    };\n    return FldinstDestination;\n}(_DestinationBase__WEBPACK_IMPORTED_MODULE_1__.DestinationTextBase));\n\nvar FldrsltDestination = /** @class */ (function (_super) {\n    __extends(FldrsltDestination, _super);\n    function FldrsltDestination(parser, inst) {\n        return _super.call(this, parser, \"fldrslt\") || this;\n    }\n    FldrsltDestination.prototype.apply = function () {\n        var field = (0,_DestinationBase__WEBPACK_IMPORTED_MODULE_1__.findParentDestination)(this.parser, \"field\");\n        if (field != null) {\n            field.setResult(this);\n        }\n        _super.prototype.apply.call(this);\n    };\n    FldrsltDestination.prototype.renderBegin = function (rtf, records) {\n        var field = (0,_DestinationBase__WEBPACK_IMPORTED_MODULE_1__.findParentDestination)(this.parser, \"field\");\n        if (field != null) {\n            var inst = field.getInst();\n            if (inst != null) {\n                return inst.renderFieldBegin(field, rtf, records);\n            }\n        }\n        return false;\n    };\n    FldrsltDestination.prototype.renderEnd = function (rtf, records) {\n        var field = (0,_DestinationBase__WEBPACK_IMPORTED_MODULE_1__.findParentDestination)(this.parser, \"field\");\n        if (field != null) {\n            var inst = field.getInst();\n            if (inst != null) {\n                inst.renderFieldEnd(field, rtf, records);\n            }\n        }\n    };\n    return FldrsltDestination;\n}(_DestinationBase__WEBPACK_IMPORTED_MODULE_1__.DestinationFormattedTextBase));\n\n\n\n/***/ }),\n\n/***/ \"./src/rtfjs/parser/destinations/FonttblDestinations.ts\":\n/*!**************************************************************!*\\\n  !*** ./src/rtfjs/parser/destinations/FonttblDestinations.ts ***!\n  \\**************************************************************/\n/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"FonttblDestinationSub\": () => (/* binding */ FonttblDestinationSub),\n/* harmony export */   \"FonttblDestination\": () => (/* binding */ FonttblDestination)\n/* harmony export */ });\n/* harmony import */ var _Helper__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../Helper */ \"./src/rtfjs/Helper.ts\");\n/* harmony import */ var _DestinationBase__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./DestinationBase */ \"./src/rtfjs/parser/destinations/DestinationBase.ts\");\n/*\n\nThe MIT License (MIT)\n\nCopyright (c) 2015 Thomas Bluemel\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n\n*/\nvar __extends = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        if (typeof b !== \"function\" && b !== null)\n            throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\n\n\nvar FonttblDestinationSub = /** @class */ (function (_super) {\n    __extends(FonttblDestinationSub, _super);\n    function FonttblDestinationSub(fonttbl) {\n        var _this = _super.call(this, \"fonttbl:sub\") || this;\n        _this._fonttbl = fonttbl;\n        _this.index = null;\n        _this.fontname = null;\n        _this.altfontname = null;\n        _this.family = null;\n        _this.pitch = _Helper__WEBPACK_IMPORTED_MODULE_0__.Helper.FONTPITCH.DEFAULT;\n        _this.bias = 0;\n        _this.charset = null;\n        return _this;\n    }\n    FonttblDestinationSub.prototype.handleKeyword = function (keyword, param) {\n        switch (keyword) {\n            case \"f\":\n                this.index = param;\n                return true;\n            case \"fnil\":\n                return true;\n            case \"froman\":\n            case \"fswiss\":\n            case \"fmodern\":\n            case \"fscript\":\n            case \"fdecor\":\n            case \"ftech\":\n            case \"fbidi\":\n            case \"flomajor\":\n            case \"fhimajor\":\n            case \"fdbmajor\":\n            case \"fbimajor\":\n            case \"flominor\":\n            case \"fhiminor\":\n            case \"fdbminor\":\n            case \"fbiminor\":\n                this.family = keyword.slice(1);\n                return true;\n            case \"fprq\":\n                switch (param) {\n                    case 0:\n                        this.pitch = _Helper__WEBPACK_IMPORTED_MODULE_0__.Helper.FONTPITCH.DEFAULT;\n                        break;\n                    case 1:\n                        this.pitch = _Helper__WEBPACK_IMPORTED_MODULE_0__.Helper.FONTPITCH.FIXED;\n                        break;\n                    case 2:\n                        this.pitch = _Helper__WEBPACK_IMPORTED_MODULE_0__.Helper.FONTPITCH.VARIABLE;\n                        break;\n                }\n                return true;\n            case \"fbias\":\n                if (param != null) {\n                    this.bias = param;\n                }\n                return true;\n            case \"fcharset\":\n                if (param != null) {\n                    this.charset = _Helper__WEBPACK_IMPORTED_MODULE_0__.Helper._mapCharset(param);\n                    if (this.charset == null) {\n                        _Helper__WEBPACK_IMPORTED_MODULE_0__.Helper.log(\"Unknown font charset: \" + param);\n                    }\n                }\n                return true;\n            case \"cpg\":\n                if (param != null) {\n                    this.charset = param;\n                }\n                return true;\n        }\n        return false;\n    };\n    FonttblDestinationSub.prototype.appendText = function (text) {\n        if (this.fontname == null) {\n            this.fontname = text;\n        }\n        else {\n            this.fontname += text;\n        }\n    };\n    FonttblDestinationSub.prototype.apply = function () {\n        if (this.index == null) {\n            throw new _Helper__WEBPACK_IMPORTED_MODULE_0__.RTFJSError(\"No font index provided\");\n        }\n        if (this.fontname == null) {\n            throw new _Helper__WEBPACK_IMPORTED_MODULE_0__.RTFJSError(\"No font name provided\");\n        }\n        this._fonttbl.addSub(this);\n        delete this._fonttbl;\n    };\n    FonttblDestinationSub.prototype.setAltFontName = function (name) {\n        this.altfontname = name;\n    };\n    return FonttblDestinationSub;\n}(_DestinationBase__WEBPACK_IMPORTED_MODULE_1__.DestinationBase));\n\nvar FonttblDestination = /** @class */ (function (_super) {\n    __extends(FonttblDestination, _super);\n    function FonttblDestination(parser, inst) {\n        var _this = _super.call(this, \"fonttbl\") || this;\n        _this._fonts = [];\n        _this._sub = null;\n        _this.inst = inst;\n        return _this;\n    }\n    FonttblDestination.prototype.sub = function () {\n        return new FonttblDestinationSub(this);\n    };\n    FonttblDestination.prototype.apply = function () {\n        _Helper__WEBPACK_IMPORTED_MODULE_0__.Helper.log(\"[fonttbl] apply()\");\n        for (var idx in this._fonts) {\n            _Helper__WEBPACK_IMPORTED_MODULE_0__.Helper.log(\"[fonttbl][\" + idx + \"] index = \" + this._fonts[idx].fontname\n                + \" alternative: \" + this._fonts[idx].altfontname);\n        }\n        this.inst._fonts = this._fonts;\n        delete this._fonts;\n    };\n    FonttblDestination.prototype.appendText = function (text) {\n        this._sub.appendText(text);\n        this._sub.apply();\n    };\n    FonttblDestination.prototype.handleKeyword = function (keyword, param) {\n        if (keyword === \"f\") {\n            this._sub = this.sub();\n        }\n        this._sub.handleKeyword(keyword, param);\n    };\n    FonttblDestination.prototype.addSub = function (sub) {\n        this._fonts[sub.index] = sub;\n    };\n    return FonttblDestination;\n}(_DestinationBase__WEBPACK_IMPORTED_MODULE_1__.DestinationBase));\n\n\n\n/***/ }),\n\n/***/ \"./src/rtfjs/parser/destinations/MetaDestinations.ts\":\n/*!***********************************************************!*\\\n  !*** ./src/rtfjs/parser/destinations/MetaDestinations.ts ***!\n  \\***********************************************************/\n/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"InfoDestination\": () => (/* binding */ InfoDestination),\n/* harmony export */   \"MetaPropertyDestinationFactory\": () => (/* binding */ MetaPropertyDestinationFactory),\n/* harmony export */   \"MetaPropertyTimeDestinationFactory\": () => (/* binding */ MetaPropertyTimeDestinationFactory)\n/* harmony export */ });\n/* harmony import */ var _Helper__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../Helper */ \"./src/rtfjs/Helper.ts\");\n/* harmony import */ var _DestinationBase__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./DestinationBase */ \"./src/rtfjs/parser/destinations/DestinationBase.ts\");\n/*\n\nThe MIT License (MIT)\n\nCopyright (c) 2015 Thomas Bluemel\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n\n*/\nvar __extends = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        if (typeof b !== \"function\" && b !== null)\n            throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\n\n\nvar InfoDestination = /** @class */ (function (_super) {\n    __extends(InfoDestination, _super);\n    function InfoDestination(parser, inst, name) {\n        var _this = _super.call(this, name) || this;\n        _this._metadata = {};\n        _this.inst = inst;\n        return _this;\n    }\n    InfoDestination.prototype.apply = function () {\n        for (var prop in this._metadata) {\n            this.inst._meta[prop] = this._metadata[prop];\n        }\n        delete this._metadata;\n    };\n    InfoDestination.prototype.setMetadata = function (prop, val) {\n        this._metadata[prop] = val;\n    };\n    return InfoDestination;\n}(_DestinationBase__WEBPACK_IMPORTED_MODULE_1__.DestinationBase));\n\nvar MetaPropertyDestinationFactory = /** @class */ (function (_super) {\n    __extends(MetaPropertyDestinationFactory, _super);\n    function MetaPropertyDestinationFactory(metaprop) {\n        var _this = _super.call(this) || this;\n        _this.class = /** @class */ (function (_super) {\n            __extends(class_1, _super);\n            function class_1(parser, inst, name) {\n                var _this = _super.call(this, name) || this;\n                _this.parser = parser;\n                return _this;\n            }\n            class_1.prototype.apply = function () {\n                var info = (0,_DestinationBase__WEBPACK_IMPORTED_MODULE_1__.findParentDestination)(this.parser, \"info\");\n                if (info == null) {\n                    throw new _Helper__WEBPACK_IMPORTED_MODULE_0__.RTFJSError(\"IDestination \" + this._name + \" must be within info destination\");\n                }\n                info.setMetadata(metaprop, this.text);\n            };\n            return class_1;\n        }(_DestinationBase__WEBPACK_IMPORTED_MODULE_1__.DestinationTextBase));\n        return _this;\n    }\n    return MetaPropertyDestinationFactory;\n}(_DestinationBase__WEBPACK_IMPORTED_MODULE_1__.DestinationFactory));\n\nvar MetaPropertyTimeDestinationFactory = /** @class */ (function (_super) {\n    __extends(MetaPropertyTimeDestinationFactory, _super);\n    function MetaPropertyTimeDestinationFactory(metaprop) {\n        var _this = _super.call(this) || this;\n        _this.class = /** @class */ (function (_super) {\n            __extends(class_2, _super);\n            function class_2(parser, inst, name) {\n                var _this = _super.call(this, name) || this;\n                _this._yr = null;\n                _this._mo = null;\n                _this._dy = null;\n                _this._hr = null;\n                _this._min = null;\n                _this._sec = null;\n                _this.parser = parser;\n                return _this;\n            }\n            class_2.prototype.handleKeyword = function (keyword, param) {\n                switch (keyword) {\n                    case \"yr\":\n                        this._yr = param;\n                        break;\n                    case \"mo\":\n                        this._mo = param;\n                        break;\n                    case \"dy\":\n                        this._dy = param;\n                        break;\n                    case \"hr\":\n                        this._hr = param;\n                        break;\n                    case \"min\":\n                        this._min = param;\n                        break;\n                    case \"sec\":\n                        this._sec = param;\n                        break;\n                    default:\n                        return false;\n                }\n                if (param == null) {\n                    throw new _Helper__WEBPACK_IMPORTED_MODULE_0__.RTFJSError(\"No param found for keyword \" + keyword);\n                }\n                return true;\n            };\n            class_2.prototype.apply = function () {\n                var info = (0,_DestinationBase__WEBPACK_IMPORTED_MODULE_1__.findParentDestination)(this.parser, \"info\");\n                if (info == null) {\n                    throw new _Helper__WEBPACK_IMPORTED_MODULE_0__.RTFJSError(\"IDestination \" + this._name + \" must be within info destination\");\n                }\n                var date = new Date(Date.UTC(this._yr != null ? this._yr : 1970, this._mo != null ? this._mo : 1, this._dy != null ? this._dy : 1, this._hr != null ? this._hr : 0, this._min != null ? this._min : 0, this._sec != null ? this._sec : 0, 0));\n                info.setMetadata(metaprop, date);\n            };\n            return class_2;\n        }(_DestinationBase__WEBPACK_IMPORTED_MODULE_1__.DestinationBase));\n        return _this;\n    }\n    return MetaPropertyTimeDestinationFactory;\n}(_DestinationBase__WEBPACK_IMPORTED_MODULE_1__.DestinationFactory));\n\n\n\n/***/ }),\n\n/***/ \"./src/rtfjs/parser/destinations/PictDestinations.ts\":\n/*!***********************************************************!*\\\n  !*** ./src/rtfjs/parser/destinations/PictDestinations.ts ***!\n  \\***********************************************************/\n/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"PictGroupDestinationFactory\": () => (/* binding */ PictGroupDestinationFactory),\n/* harmony export */   \"PictDestination\": () => (/* binding */ PictDestination)\n/* harmony export */ });\n/* harmony import */ var EMFJS__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! EMFJS */ \"EMFJS\");\n/* harmony import */ var EMFJS__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(EMFJS__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var WMFJS__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! WMFJS */ \"WMFJS\");\n/* harmony import */ var WMFJS__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(WMFJS__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _Helper__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../Helper */ \"./src/rtfjs/Helper.ts\");\n/* harmony import */ var _DestinationBase__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./DestinationBase */ \"./src/rtfjs/parser/destinations/DestinationBase.ts\");\n/*\n\nThe MIT License (MIT)\n\nCopyright (c) 2015 Thomas Bluemel\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n\n*/\nvar __extends = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        if (typeof b !== \"function\" && b !== null)\n            throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\n\n\n\n\nvar PictGroupDestinationFactory = /** @class */ (function (_super) {\n    __extends(PictGroupDestinationFactory, _super);\n    function PictGroupDestinationFactory(legacy) {\n        var _this = _super.call(this) || this;\n        _this.class = /** @class */ (function (_super) {\n            __extends(class_1, _super);\n            function class_1() {\n                var _this = _super.call(this, \"pict-group\") || this;\n                _this._legacy = legacy;\n                return _this;\n            }\n            class_1.prototype.isLegacy = function () {\n                return this._legacy;\n            };\n            return class_1;\n        }(_DestinationBase__WEBPACK_IMPORTED_MODULE_3__.DestinationTextBase));\n        return _this;\n    }\n    return PictGroupDestinationFactory;\n}(_DestinationBase__WEBPACK_IMPORTED_MODULE_3__.DestinationFactory));\n\nvar PictDestination = /** @class */ (function (_super) {\n    __extends(PictDestination, _super);\n    function PictDestination(parser, inst) {\n        var _this = _super.call(this, \"pict\") || this;\n        _this._pictHandlers = {\n            picw: _this._setPropValueRequired(\"_size\", \"width\"),\n            pich: _this._setPropValueRequired(\"_size\", \"height\"),\n            picwgoal: _this._setPropValueRequired(\"_displaysize\", \"width\"),\n            pichgoal: _this._setPropValueRequired(\"_displaysize\", \"height\"),\n        };\n        _this._pictTypeHandler = {\n            emfblip: (function () {\n                if (typeof EMFJS__WEBPACK_IMPORTED_MODULE_0__ !== \"undefined\") {\n                    return function () {\n                        return {\n                            load: function () {\n                                try {\n                                    return new EMFJS__WEBPACK_IMPORTED_MODULE_0__.Renderer(_this._blob);\n                                }\n                                catch (e) {\n                                    if (e instanceof EMFJS__WEBPACK_IMPORTED_MODULE_0__.Error) {\n                                        return e.message;\n                                    }\n                                    else {\n                                        throw e;\n                                    }\n                                }\n                            },\n                            render: function (img) {\n                                return img.render({\n                                    width: _Helper__WEBPACK_IMPORTED_MODULE_2__.Helper._twipsToPt(_this._displaysize.width) + \"pt\",\n                                    height: _Helper__WEBPACK_IMPORTED_MODULE_2__.Helper._twipsToPt(_this._displaysize.height) + \"pt\",\n                                    wExt: _this._size.width,\n                                    hExt: _this._size.height,\n                                    xExt: _this._size.width,\n                                    yExt: _this._size.height,\n                                    mapMode: 8,\n                                });\n                            },\n                        };\n                    };\n                }\n                else {\n                    return \"\";\n                }\n            })(),\n            pngblip: \"image/png\",\n            jpegblip: \"image/jpeg\",\n            macpict: \"\",\n            pmmetafile: \"\",\n            wmetafile: (function () {\n                if (typeof WMFJS__WEBPACK_IMPORTED_MODULE_1__ !== \"undefined\") {\n                    return function (param) {\n                        if (param == null || param < 0 || param > 8) {\n                            throw new _Helper__WEBPACK_IMPORTED_MODULE_2__.RTFJSError(\"Insufficient metafile information\");\n                        }\n                        return {\n                            load: function () {\n                                try {\n                                    return new WMFJS__WEBPACK_IMPORTED_MODULE_1__.Renderer(_this._blob);\n                                }\n                                catch (e) {\n                                    if (e instanceof WMFJS__WEBPACK_IMPORTED_MODULE_1__.Error) {\n                                        return e.message;\n                                    }\n                                    else {\n                                        throw e;\n                                    }\n                                }\n                            },\n                            render: function (img) {\n                                return img.render({\n                                    width: _Helper__WEBPACK_IMPORTED_MODULE_2__.Helper._twipsToPt(_this._displaysize.width) + \"pt\",\n                                    height: _Helper__WEBPACK_IMPORTED_MODULE_2__.Helper._twipsToPt(_this._displaysize.height) + \"pt\",\n                                    xExt: _this._size.width,\n                                    yExt: _this._size.height,\n                                    mapMode: param,\n                                });\n                            },\n                        };\n                    };\n                }\n                else {\n                    return \"\";\n                }\n            })(),\n            dibitmap: \"\",\n            wbitmap: \"\", // TODO\n        };\n        _this._type = null;\n        _this._blob = null;\n        _this._displaysize = {\n            width: null,\n            height: null,\n        };\n        _this._size = {\n            width: null,\n            height: null,\n        };\n        _this.parser = parser;\n        _this.inst = inst;\n        return _this;\n    }\n    PictDestination.prototype.handleKeyword = function (keyword, param) {\n        var handler = this._pictHandlers[keyword];\n        if (handler != null) {\n            handler(param);\n            return true;\n        }\n        var type = this._pictTypeHandler[keyword];\n        if (type != null) {\n            if (this._type == null) {\n                if (typeof type === \"function\") {\n                    var info_1 = type(param);\n                    if (info_1 != null) {\n                        this._type = function () {\n                            var renderer = info_1.load();\n                            if (renderer != null) {\n                                if (typeof renderer === \"string\") {\n                                    return renderer;\n                                }\n                                return function () {\n                                    return info_1.render(renderer);\n                                };\n                            }\n                        };\n                    }\n                }\n                else {\n                    this._type = type;\n                }\n            }\n            return true;\n        }\n        return false;\n    };\n    PictDestination.prototype.handleBlob = function (blob) {\n        this._blob = blob;\n    };\n    PictDestination.prototype.apply = function (rendering) {\n        var _this = this;\n        if (rendering === void 0) { rendering = false; }\n        if (this._type == null) {\n            throw new _Helper__WEBPACK_IMPORTED_MODULE_2__.RTFJSError(\"Picture type unknown or not specified\");\n        }\n        var pictGroup = (0,_DestinationBase__WEBPACK_IMPORTED_MODULE_3__.findParentDestination)(this.parser, \"pict-group\");\n        var isLegacy = (pictGroup != null ? pictGroup.isLegacy() : null);\n        var type = this._type;\n        if (typeof type === \"function\") {\n            // type is the trampoline function that executes the .load function\n            // and returns a renderer trampoline that ends up calling the .render function\n            if (this._blob == null) {\n                this._blob = _Helper__WEBPACK_IMPORTED_MODULE_2__.Helper._hexToBlob(this.text);\n                if (this._blob == null) {\n                    throw new _Helper__WEBPACK_IMPORTED_MODULE_2__.RTFJSError(\"Could not parse picture data\");\n                }\n                delete this.text;\n            }\n            var doRender_1 = function (renderer, render) {\n                var inst = renderer._doc;\n                var pictrender = type();\n                if (pictrender != null) {\n                    if (typeof pictrender === \"string\") {\n                        _Helper__WEBPACK_IMPORTED_MODULE_2__.Helper.log(\"[pict] Could not load image: \" + pictrender);\n                        if (render) {\n                            return renderer.buildPicture(pictrender, null);\n                        }\n                        else {\n                            inst.addIns(function (rendererForPicture) {\n                                rendererForPicture.picture(pictrender, null);\n                            });\n                        }\n                    }\n                    else {\n                        if (typeof pictrender !== \"function\") {\n                            throw new _Helper__WEBPACK_IMPORTED_MODULE_2__.RTFJSError(\"Expected a picture render function\");\n                        }\n                        if (render) {\n                            return renderer.buildRenderedPicture(pictrender());\n                        }\n                        else {\n                            inst.addIns(function (rendererForPicture) {\n                                rendererForPicture.renderedPicture(pictrender());\n                            });\n                        }\n                    }\n                }\n            };\n            if (this.inst._settings.onPicture != null) {\n                this.inst.addIns(function (renderer) {\n                    var elem = _this.inst._settings.onPicture(isLegacy, function () {\n                        return doRender_1(renderer, true);\n                    });\n                    if (elem != null) {\n                        renderer.appendElement(elem);\n                    }\n                });\n            }\n            else {\n                return {\n                    isLegacy: isLegacy,\n                    element: doRender_1(this.parser.renderer, rendering),\n                };\n            }\n        }\n        else if (typeof type === \"string\") {\n            var text_1 = this.text;\n            var blob_1 = this._blob;\n            var doRender_2 = function (renderer, render) {\n                var bin = blob_1 != null ? _Helper__WEBPACK_IMPORTED_MODULE_2__.Helper._blobToBinary(blob_1) : _Helper__WEBPACK_IMPORTED_MODULE_2__.Helper._hexToBinary(text_1);\n                if (type !== \"\") {\n                    if (render) {\n                        return renderer.buildPicture(type, bin);\n                    }\n                    else {\n                        renderer._doc.addIns(function (rendererForPicture) {\n                            rendererForPicture.picture(type, bin);\n                        });\n                    }\n                }\n                else {\n                    if (render) {\n                        return renderer.buildPicture(\"Unsupported image format\", null);\n                    }\n                    else {\n                        renderer._doc.addIns(function (rendererForPicture) {\n                            rendererForPicture.picture(\"Unsupported image format\", null);\n                        });\n                    }\n                }\n            };\n            if (this.inst._settings.onPicture != null) {\n                this.inst.addIns(function (renderer) {\n                    var elem = _this.inst._settings.onPicture(isLegacy, function () {\n                        return doRender_2(renderer, true);\n                    });\n                    if (elem != null) {\n                        renderer.appendElement(elem);\n                    }\n                });\n            }\n            else {\n                return {\n                    isLegacy: isLegacy,\n                    element: doRender_2(this.parser.renderer, rendering),\n                };\n            }\n        }\n        delete this.text;\n    };\n    PictDestination.prototype._setPropValueRequired = function (member, prop) {\n        var _this = this;\n        return function (param) {\n            if (param == null) {\n                throw new _Helper__WEBPACK_IMPORTED_MODULE_2__.RTFJSError(\"Picture property has no value\");\n            }\n            _Helper__WEBPACK_IMPORTED_MODULE_2__.Helper.log(\"[pict] set \" + member + \".\" + prop + \" = \" + param);\n            var obj = (member != null ? _this[member] : _this);\n            obj[prop] = param;\n        };\n    };\n    return PictDestination;\n}(_DestinationBase__WEBPACK_IMPORTED_MODULE_3__.DestinationTextBase));\n\n\n\n/***/ }),\n\n/***/ \"./src/rtfjs/parser/destinations/RtfDestination.ts\":\n/*!*********************************************************!*\\\n  !*** ./src/rtfjs/parser/destinations/RtfDestination.ts ***!\n  \\*********************************************************/\n/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"RtfDestination\": () => (/* binding */ RtfDestination)\n/* harmony export */ });\n/* harmony import */ var _Helper__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../Helper */ \"./src/rtfjs/Helper.ts\");\n/* harmony import */ var _renderer_RenderChp__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../renderer/RenderChp */ \"./src/rtfjs/renderer/RenderChp.ts\");\n/* harmony import */ var _renderer_RenderPap__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../renderer/RenderPap */ \"./src/rtfjs/renderer/RenderPap.ts\");\n/* harmony import */ var _Containers__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../Containers */ \"./src/rtfjs/parser/Containers.ts\");\n/* harmony import */ var _DestinationBase__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./DestinationBase */ \"./src/rtfjs/parser/destinations/DestinationBase.ts\");\n/*\n\nThe MIT License (MIT)\n\nCopyright (c) 2015 Thomas Bluemel\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n\n*/\nvar __extends = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        if (typeof b !== \"function\" && b !== null)\n            throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\n\n\n\n\n\nvar RtfDestination = /** @class */ (function (_super) {\n    __extends(RtfDestination, _super);\n    function RtfDestination(parser, inst, name, param) {\n        var _this = _super.call(this, name) || this;\n        _this._charFormatHandlers = {\n            ansicpg: function (param) {\n                // if the value is 0, use the default charset as 0 is not valid\n                if (param > 0) {\n                    _Helper__WEBPACK_IMPORTED_MODULE_0__.Helper.log(\"[rtf] using charset: \" + param);\n                    _this.parser.codepage = param;\n                }\n            },\n            sectd: function () {\n                _Helper__WEBPACK_IMPORTED_MODULE_0__.Helper.log(\"[rtf] reset to section defaults\");\n                _this.parser.state.sep = new _Containers__WEBPACK_IMPORTED_MODULE_3__.Sep(null);\n            },\n            plain: function () {\n                _Helper__WEBPACK_IMPORTED_MODULE_0__.Helper.log(\"[rtf] reset to character defaults\");\n                _this.parser.state.chp = new _Containers__WEBPACK_IMPORTED_MODULE_3__.Chp(null);\n            },\n            pard: function () {\n                _Helper__WEBPACK_IMPORTED_MODULE_0__.Helper.log(\"[rtf] reset to paragraph defaults\");\n                _this.parser.state.pap = new _Containers__WEBPACK_IMPORTED_MODULE_3__.Pap(null);\n            },\n            b: _this._genericFormatOnOff(\"chp\", \"bold\"),\n            i: _this._genericFormatOnOff(\"chp\", \"italic\"),\n            cf: _this._genericFormatSetValRequired(\"chp\", \"colorindex\"),\n            highlight: _this._genericFormatSetValRequired(\"chp\", \"highlightindex\"),\n            fs: _this._genericFormatSetValRequired(\"chp\", \"fontsize\"),\n            f: _this._genericFormatSetValRequired(\"chp\", \"fontfamily\"),\n            loch: _this._genericFormatSetNoParam(\"pap\", \"charactertype\", _Helper__WEBPACK_IMPORTED_MODULE_0__.Helper.CHARACTER_TYPE.LOWANSI),\n            hich: _this._genericFormatSetNoParam(\"pap\", \"charactertype\", _Helper__WEBPACK_IMPORTED_MODULE_0__.Helper.CHARACTER_TYPE.HIGHANSI),\n            dbch: _this._genericFormatSetNoParam(\"pap\", \"charactertype\", _Helper__WEBPACK_IMPORTED_MODULE_0__.Helper.CHARACTER_TYPE.DOUBLE),\n            strike: _this._genericFormatOnOff(\"chp\", \"strikethrough\"),\n            striked: _this._genericFormatOnOff(\"chp\", \"dblstrikethrough\"),\n            ul: _this._genericFormatOnOff(\"chp\", \"underline\", _Helper__WEBPACK_IMPORTED_MODULE_0__.Helper.UNDERLINE.CONTINUOUS, _Helper__WEBPACK_IMPORTED_MODULE_0__.Helper.UNDERLINE.NONE),\n            uld: _this._genericFormatOnOff(\"chp\", \"underline\", _Helper__WEBPACK_IMPORTED_MODULE_0__.Helper.UNDERLINE.DOTTED, _Helper__WEBPACK_IMPORTED_MODULE_0__.Helper.UNDERLINE.NONE),\n            uldash: _this._genericFormatOnOff(\"chp\", \"underline\", _Helper__WEBPACK_IMPORTED_MODULE_0__.Helper.UNDERLINE.DASHED, _Helper__WEBPACK_IMPORTED_MODULE_0__.Helper.UNDERLINE.NONE),\n            uldashd: _this._genericFormatOnOff(\"chp\", \"underline\", _Helper__WEBPACK_IMPORTED_MODULE_0__.Helper.UNDERLINE.DASHDOTTED, _Helper__WEBPACK_IMPORTED_MODULE_0__.Helper.UNDERLINE.NONE),\n            uldashdd: _this._genericFormatOnOff(\"chp\", \"underline\", _Helper__WEBPACK_IMPORTED_MODULE_0__.Helper.UNDERLINE.DASHDOTDOTTED, _Helper__WEBPACK_IMPORTED_MODULE_0__.Helper.UNDERLINE.NONE),\n            uldb: _this._genericFormatOnOff(\"chp\", \"underline\", _Helper__WEBPACK_IMPORTED_MODULE_0__.Helper.UNDERLINE.DOUBLE, _Helper__WEBPACK_IMPORTED_MODULE_0__.Helper.UNDERLINE.NONE),\n            ulhwave: _this._genericFormatOnOff(\"chp\", \"underline\", _Helper__WEBPACK_IMPORTED_MODULE_0__.Helper.UNDERLINE.HEAVYWAVE, _Helper__WEBPACK_IMPORTED_MODULE_0__.Helper.UNDERLINE.NONE),\n            ulldash: _this._genericFormatOnOff(\"chp\", \"underline\", _Helper__WEBPACK_IMPORTED_MODULE_0__.Helper.UNDERLINE.LONGDASHED, _Helper__WEBPACK_IMPORTED_MODULE_0__.Helper.UNDERLINE.NONE),\n            ulnone: _this._genericFormatSetNoParam(\"chp\", \"underline\", _Helper__WEBPACK_IMPORTED_MODULE_0__.Helper.UNDERLINE.NONE),\n            ulth: _this._genericFormatOnOff(\"chp\", \"underline\", _Helper__WEBPACK_IMPORTED_MODULE_0__.Helper.UNDERLINE.THICK, _Helper__WEBPACK_IMPORTED_MODULE_0__.Helper.UNDERLINE.NONE),\n            ulthd: _this._genericFormatOnOff(\"chp\", \"underline\", _Helper__WEBPACK_IMPORTED_MODULE_0__.Helper.UNDERLINE.THICKDOTTED, _Helper__WEBPACK_IMPORTED_MODULE_0__.Helper.UNDERLINE.NONE),\n            ulthdash: _this._genericFormatOnOff(\"chp\", \"underline\", _Helper__WEBPACK_IMPORTED_MODULE_0__.Helper.UNDERLINE.THICKDASHED, _Helper__WEBPACK_IMPORTED_MODULE_0__.Helper.UNDERLINE.NONE),\n            ulthdashd: _this._genericFormatOnOff(\"chp\", \"underline\", _Helper__WEBPACK_IMPORTED_MODULE_0__.Helper.UNDERLINE.THICKDASHDOTTED, _Helper__WEBPACK_IMPORTED_MODULE_0__.Helper.UNDERLINE.NONE),\n            ulthdashdd: _this._genericFormatOnOff(\"chp\", \"underline\", _Helper__WEBPACK_IMPORTED_MODULE_0__.Helper.UNDERLINE.THICKDASHDOTDOTTED, _Helper__WEBPACK_IMPORTED_MODULE_0__.Helper.UNDERLINE.NONE),\n            ululdbwave: _this._genericFormatOnOff(\"chp\", \"underline\", _Helper__WEBPACK_IMPORTED_MODULE_0__.Helper.UNDERLINE.DOUBLEWAVE, _Helper__WEBPACK_IMPORTED_MODULE_0__.Helper.UNDERLINE.NONE),\n            ulw: _this._genericFormatOnOff(\"chp\", \"underline\", _Helper__WEBPACK_IMPORTED_MODULE_0__.Helper.UNDERLINE.WORD, _Helper__WEBPACK_IMPORTED_MODULE_0__.Helper.UNDERLINE.NONE),\n            ulwave: _this._genericFormatOnOff(\"chp\", \"underline\", _Helper__WEBPACK_IMPORTED_MODULE_0__.Helper.UNDERLINE.WAVE, _Helper__WEBPACK_IMPORTED_MODULE_0__.Helper.UNDERLINE.NONE),\n            li: _this._genericFormatSetMemberVal(\"pap\", \"indent\", \"left\", 0),\n            ri: _this._genericFormatSetMemberVal(\"pap\", \"indent\", \"right\", 0),\n            fi: _this._genericFormatSetMemberVal(\"pap\", \"indent\", \"firstline\", 0),\n            sa: _this._genericFormatSetValRequired(\"pap\", \"spaceafter\"),\n            sb: _this._genericFormatSetValRequired(\"pap\", \"spacebefore\"),\n            cols: _this._genericFormatSetVal(\"sep\", \"columns\", 0),\n            sbknone: _this._genericFormatSetNoParam(\"sep\", \"breaktype\", _Helper__WEBPACK_IMPORTED_MODULE_0__.Helper.BREAKTYPE.NONE),\n            sbkcol: _this._genericFormatSetNoParam(\"sep\", \"breaktype\", _Helper__WEBPACK_IMPORTED_MODULE_0__.Helper.BREAKTYPE.COL),\n            sbkeven: _this._genericFormatSetNoParam(\"sep\", \"breaktype\", _Helper__WEBPACK_IMPORTED_MODULE_0__.Helper.BREAKTYPE.EVEN),\n            sbkodd: _this._genericFormatSetNoParam(\"sep\", \"breaktype\", _Helper__WEBPACK_IMPORTED_MODULE_0__.Helper.BREAKTYPE.ODD),\n            sbkpage: _this._genericFormatSetNoParam(\"sep\", \"breaktype\", _Helper__WEBPACK_IMPORTED_MODULE_0__.Helper.BREAKTYPE.PAGE),\n            pgnx: _this._genericFormatSetMemberVal(\"sep\", \"pagenumber\", \"x\", 0),\n            pgny: _this._genericFormatSetMemberVal(\"sep\", \"pagenumber\", \"y\", 0),\n            pgndec: _this._genericFormatSetNoParam(\"sep\", \"pagenumberformat\", _Helper__WEBPACK_IMPORTED_MODULE_0__.Helper.PAGENUMBER.DECIMAL),\n            pgnucrm: _this._genericFormatSetNoParam(\"sep\", \"pagenumberformat\", _Helper__WEBPACK_IMPORTED_MODULE_0__.Helper.PAGENUMBER.UROM),\n            pgnlcrm: _this._genericFormatSetNoParam(\"sep\", \"pagenumberformat\", _Helper__WEBPACK_IMPORTED_MODULE_0__.Helper.PAGENUMBER.LROM),\n            pgnucltr: _this._genericFormatSetNoParam(\"sep\", \"pagenumberformat\", _Helper__WEBPACK_IMPORTED_MODULE_0__.Helper.PAGENUMBER.ULTR),\n            pgnlcltr: _this._genericFormatSetNoParam(\"sep\", \"pagenumberformat\", _Helper__WEBPACK_IMPORTED_MODULE_0__.Helper.PAGENUMBER.LLTR),\n            qc: _this._genericFormatSetNoParam(\"pap\", \"justification\", _Helper__WEBPACK_IMPORTED_MODULE_0__.Helper.JUSTIFICATION.CENTER),\n            ql: _this._genericFormatSetNoParam(\"pap\", \"justification\", _Helper__WEBPACK_IMPORTED_MODULE_0__.Helper.JUSTIFICATION.LEFT),\n            qr: _this._genericFormatSetNoParam(\"pap\", \"justification\", _Helper__WEBPACK_IMPORTED_MODULE_0__.Helper.JUSTIFICATION.RIGHT),\n            qj: _this._genericFormatSetNoParam(\"pap\", \"justification\", _Helper__WEBPACK_IMPORTED_MODULE_0__.Helper.JUSTIFICATION.JUSTIFY),\n            paperw: _this._genericFormatSetVal(\"dop\", \"width\", 12240),\n            paperh: _this._genericFormatSetVal(\"dop\", \"height\", 15480),\n            margl: _this._genericFormatSetMemberVal(\"dop\", \"margin\", \"left\", 1800),\n            margr: _this._genericFormatSetMemberVal(\"dop\", \"margin\", \"right\", 1800),\n            margt: _this._genericFormatSetMemberVal(\"dop\", \"margin\", \"top\", 1440),\n            margb: _this._genericFormatSetMemberVal(\"dop\", \"margin\", \"bottom\", 1440),\n            pgnstart: _this._genericFormatSetVal(\"dop\", \"pagenumberstart\", 1),\n            facingp: _this._genericFormatSetNoParam(\"dop\", \"facingpages\", true),\n            landscape: _this._genericFormatSetNoParam(\"dop\", \"landscape\", true),\n            par: _this._addInsHandler(function (renderer) {\n                renderer.startPar();\n            }),\n            line: _this._addInsHandler(function (renderer) {\n                renderer.lineBreak();\n            }),\n        };\n        if (parser.version != null) {\n            throw new _Helper__WEBPACK_IMPORTED_MODULE_0__.RTFJSError(\"Unexpected rtf destination\");\n        }\n        // This parameter should be one, but older versions of the spec allow for omission of the version number\n        if (param && param !== 1) {\n            throw new _Helper__WEBPACK_IMPORTED_MODULE_0__.RTFJSError(\"Unsupported rtf version\");\n        }\n        parser.version = 1;\n        _this._metadata = {};\n        _this.parser = parser;\n        _this.inst = inst;\n        return _this;\n    }\n    RtfDestination.prototype.addIns = function (func) {\n        this.inst.addIns(func);\n    };\n    RtfDestination.prototype.appendText = function (text) {\n        _Helper__WEBPACK_IMPORTED_MODULE_0__.Helper.log(\"[rtf] output: \" + text);\n        this.inst.addIns(text);\n    };\n    RtfDestination.prototype.sub = function () {\n        _Helper__WEBPACK_IMPORTED_MODULE_0__.Helper.log(\"[rtf].sub()\");\n    };\n    RtfDestination.prototype.handleKeyword = function (keyword, param) {\n        var handler = this._charFormatHandlers[keyword];\n        if (handler != null) {\n            handler(param);\n            return true;\n        }\n        return false;\n    };\n    RtfDestination.prototype.apply = function () {\n        _Helper__WEBPACK_IMPORTED_MODULE_0__.Helper.log(\"[rtf] apply()\");\n        for (var prop in this._metadata) {\n            this.inst._meta[prop] = this._metadata[prop];\n        }\n        delete this._metadata;\n    };\n    RtfDestination.prototype.setMetadata = function (prop, val) {\n        this._metadata[prop] = val;\n    };\n    RtfDestination.prototype._addInsHandler = function (func) {\n        var _this = this;\n        return function (param) {\n            _this.inst.addIns(func);\n        };\n    };\n    RtfDestination.prototype._addFormatIns = function (ptype, props) {\n        _Helper__WEBPACK_IMPORTED_MODULE_0__.Helper.log(\"[rtf] update \" + ptype);\n        switch (ptype) {\n            case \"chp\": {\n                var rchp_1 = new _renderer_RenderChp__WEBPACK_IMPORTED_MODULE_1__.RenderChp(new _Containers__WEBPACK_IMPORTED_MODULE_3__.Chp(props));\n                this.inst.addIns(function (renderer) {\n                    renderer.setChp(rchp_1);\n                });\n                break;\n            }\n            case \"pap\": {\n                var rpap_1 = new _renderer_RenderPap__WEBPACK_IMPORTED_MODULE_2__.RenderPap(new _Containers__WEBPACK_IMPORTED_MODULE_3__.Pap(props));\n                this.inst.addIns(function (renderer) {\n                    renderer.setPap(rpap_1);\n                });\n                break;\n            }\n        }\n    };\n    RtfDestination.prototype._genericFormatSetNoParam = function (ptype, prop, val) {\n        var _this = this;\n        return function (param) {\n            var props = _this.parser.state[ptype];\n            props[prop] = val;\n            _Helper__WEBPACK_IMPORTED_MODULE_0__.Helper.log(\"[rtf] state.\" + ptype + \".\" + prop + \" = \" + props[prop].toString());\n            _this._addFormatIns(ptype, props);\n        };\n    };\n    RtfDestination.prototype._genericFormatOnOff = function (ptype, prop, onval, offval) {\n        var _this = this;\n        return function (param) {\n            var props = _this.parser.state[ptype];\n            props[prop] = (param == null || param !== 0)\n                ? (onval != null ? onval : true) : (offval != null ? offval : false);\n            _Helper__WEBPACK_IMPORTED_MODULE_0__.Helper.log(\"[rtf] state.\" + ptype + \".\" + prop + \" = \" + props[prop].toString());\n            _this._addFormatIns(ptype, props);\n        };\n    };\n    RtfDestination.prototype._genericFormatSetVal = function (ptype, prop, defaultval) {\n        var _this = this;\n        return function (param) {\n            var props = _this.parser.state[ptype];\n            props[prop] = (param == null) ? defaultval : param;\n            _Helper__WEBPACK_IMPORTED_MODULE_0__.Helper.log(\"[rtf] state.\" + ptype + \".\" + prop + \" = \" + props[prop].toString());\n            _this._addFormatIns(ptype, props);\n        };\n    };\n    RtfDestination.prototype._genericFormatSetValRequired = function (ptype, prop) {\n        var _this = this;\n        return function (param) {\n            if (param == null) {\n                throw new _Helper__WEBPACK_IMPORTED_MODULE_0__.RTFJSError(\"Keyword without required param\");\n            }\n            var props = _this.parser.state[ptype];\n            props[prop] = param;\n            _Helper__WEBPACK_IMPORTED_MODULE_0__.Helper.log(\"[rtf] state.\" + ptype + \".\" + prop + \" = \" + props[prop].toString());\n            _this._addFormatIns(ptype, props);\n        };\n    };\n    RtfDestination.prototype._genericFormatSetMemberVal = function (ptype, prop, member, defaultval) {\n        var _this = this;\n        return function (param) {\n            var props = _this.parser.state[ptype];\n            var members = props[prop];\n            members[member] = (param == null) ? defaultval : param;\n            _Helper__WEBPACK_IMPORTED_MODULE_0__.Helper.log(\"[rtf] state.\" + ptype + \".\" + prop + \".\" + member + \" = \" + members[member].toString());\n            _this._addFormatIns(ptype, props);\n        };\n    };\n    return RtfDestination;\n}(_DestinationBase__WEBPACK_IMPORTED_MODULE_4__.DestinationBase));\n\n\n\n/***/ }),\n\n/***/ \"./src/rtfjs/parser/destinations/StylesheetDestination.ts\":\n/*!****************************************************************!*\\\n  !*** ./src/rtfjs/parser/destinations/StylesheetDestination.ts ***!\n  \\****************************************************************/\n/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"StylesheetDestinationSub\": () => (/* binding */ StylesheetDestinationSub),\n/* harmony export */   \"StylesheetDestination\": () => (/* binding */ StylesheetDestination)\n/* harmony export */ });\n/* harmony import */ var _Helper__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../Helper */ \"./src/rtfjs/Helper.ts\");\n/* harmony import */ var _DestinationBase__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./DestinationBase */ \"./src/rtfjs/parser/destinations/DestinationBase.ts\");\n/*\n\nThe MIT License (MIT)\n\nCopyright (c) 2015 Thomas Bluemel\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n\n*/\nvar __extends = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        if (typeof b !== \"function\" && b !== null)\n            throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\n\n\nvar StylesheetDestinationSub = /** @class */ (function (_super) {\n    __extends(StylesheetDestinationSub, _super);\n    function StylesheetDestinationSub(stylesheet) {\n        var _this = _super.call(this, \"stylesheet:sub\") || this;\n        _this._stylesheet = stylesheet;\n        _this.index = 0;\n        _this.name = null;\n        _this.handler = _this._handleKeywordCommon(\"paragraph\");\n        return _this;\n    }\n    StylesheetDestinationSub.prototype.handleKeyword = function (keyword, param) {\n        switch (keyword) {\n            case \"s\":\n                this.index = param;\n                return true;\n            case \"cs\":\n                delete this.paragraph;\n                this.handler = this._handleKeywordCommon(\"character\");\n                this.index = param;\n                return true;\n            case \"ds\":\n                delete this.paragraph;\n                this.handler = this._handleKeywordCommon(\"section\");\n                this.index = param;\n                return true;\n            case \"ts\":\n                delete this.paragraph;\n                this.handler = this._handleKeywordCommon(\"table\");\n                this.index = param;\n                return true;\n        }\n        return this.handler(keyword, param);\n    };\n    StylesheetDestinationSub.prototype.appendText = function (text) {\n        if (this.name == null) {\n            this.name = text;\n        }\n        else {\n            this.name += text;\n        }\n    };\n    StylesheetDestinationSub.prototype.apply = function () {\n        this._stylesheet.addSub({\n            index: this.index,\n            name: this.name,\n        });\n        delete this._stylesheet;\n    };\n    StylesheetDestinationSub.prototype._handleKeywordCommon = function (member) {\n        return function (keyword, param) {\n            _Helper__WEBPACK_IMPORTED_MODULE_0__.Helper.log(\"[stylesheet:sub].\" + member + \": unhandled keyword: \" + keyword + \" param: \" + param);\n            return false;\n        };\n    };\n    return StylesheetDestinationSub;\n}(_DestinationBase__WEBPACK_IMPORTED_MODULE_1__.DestinationBase));\n\nvar StylesheetDestination = /** @class */ (function (_super) {\n    __extends(StylesheetDestination, _super);\n    function StylesheetDestination(parser, inst) {\n        var _this = _super.call(this, \"stylesheet\") || this;\n        _this._stylesheets = [];\n        _this.inst = inst;\n        return _this;\n    }\n    StylesheetDestination.prototype.sub = function () {\n        return new StylesheetDestinationSub(this);\n    };\n    StylesheetDestination.prototype.apply = function () {\n        _Helper__WEBPACK_IMPORTED_MODULE_0__.Helper.log(\"[stylesheet] apply()\");\n        for (var idx in this._stylesheets) {\n            _Helper__WEBPACK_IMPORTED_MODULE_0__.Helper.log(\"[stylesheet] [\" + idx + \"] name: \" + this._stylesheets[idx].name);\n        }\n        this.inst._stylesheets = this._stylesheets;\n        delete this._stylesheets;\n    };\n    StylesheetDestination.prototype.addSub = function (sub) {\n        // Some documents will redefine stylesheets\n        // if (this._stylesheets[sub.index] != null)\n        //     throw new RTFJSError(\"Cannot redefine stylesheet with index \" + sub.index);\n        this._stylesheets[sub.index] = sub;\n    };\n    return StylesheetDestination;\n}(_DestinationBase__WEBPACK_IMPORTED_MODULE_1__.DestinationBase));\n\n\n\n/***/ }),\n\n/***/ \"./src/rtfjs/renderer/RenderChp.ts\":\n/*!*****************************************!*\\\n  !*** ./src/rtfjs/renderer/RenderChp.ts ***!\n  \\*****************************************/\n/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"RenderChp\": () => (/* binding */ RenderChp)\n/* harmony export */ });\n/* harmony import */ var _Helper__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../Helper */ \"./src/rtfjs/Helper.ts\");\n/*\n\nThe MIT License (MIT)\n\nCopyright (c) 2015 Thomas Bluemel\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n\n*/\n\nvar RenderChp = /** @class */ (function () {\n    function RenderChp(chp) {\n        this._chp = chp;\n    }\n    RenderChp.prototype.apply = function (doc, el) {\n        _Helper__WEBPACK_IMPORTED_MODULE_0__.Helper.log(\"[rtf] RenderChp: \" + el.textContent);\n        _Helper__WEBPACK_IMPORTED_MODULE_0__.Helper.log(\"[rtf] RenderChp apply: \" + JSON.stringify(this._chp));\n        if (this._chp.bold) {\n            el.style.fontWeight = \"bold\";\n        }\n        if (this._chp.italic) {\n            el.style.fontStyle = \"italic\";\n        }\n        if (Object.prototype.hasOwnProperty.call(this._chp, \"fontfamily\") && doc._fonts[this._chp.fontfamily]) {\n            var fontFamily = doc._fonts[this._chp.fontfamily].fontname.replace(\";\", \"\");\n            if (fontFamily !== \"Symbol\") {\n                el.style.fontFamily = fontFamily;\n            }\n        }\n        var deco = [];\n        if (this._chp.underline !== _Helper__WEBPACK_IMPORTED_MODULE_0__.Helper.UNDERLINE.NONE) {\n            deco.push(\"underline\");\n        }\n        if (this._chp.strikethrough || this._chp.dblstrikethrough) {\n            deco.push(\"line-through\");\n        }\n        if (deco.length > 0) {\n            el.style.textDecoration = deco.join(\" \");\n        }\n        if (this._chp.colorindex !== 0) {\n            var color = doc._lookupColor(this._chp.colorindex);\n            if (color != null) {\n                el.style.color = _Helper__WEBPACK_IMPORTED_MODULE_0__.Helper._colorToStr(color);\n            }\n        }\n        if (this._chp.highlightindex !== 0) {\n            var color = doc._lookupColor(this._chp.highlightindex);\n            if (color != null) {\n                el.style.backgroundColor = _Helper__WEBPACK_IMPORTED_MODULE_0__.Helper._colorToStr(color);\n            }\n        }\n        el.style.fontSize = Math.floor(this._chp.fontsize / 2) + \"pt\";\n    };\n    return RenderChp;\n}());\n\n\n\n/***/ }),\n\n/***/ \"./src/rtfjs/renderer/RenderPap.ts\":\n/*!*****************************************!*\\\n  !*** ./src/rtfjs/renderer/RenderPap.ts ***!\n  \\*****************************************/\n/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"RenderPap\": () => (/* binding */ RenderPap)\n/* harmony export */ });\n/* harmony import */ var _Helper__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../Helper */ \"./src/rtfjs/Helper.ts\");\n/*\n\nThe MIT License (MIT)\n\nCopyright (c) 2015 Thomas Bluemel\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n\n*/\n\nvar RenderPap = /** @class */ (function () {\n    function RenderPap(pap) {\n        this._pap = pap;\n    }\n    RenderPap.prototype.apply = function (doc, el, rchp, ismaindiv) {\n        _Helper__WEBPACK_IMPORTED_MODULE_0__.Helper.log(\"[rtf] RenderPap apply:\" + (rchp != null ? \" chp=\" + JSON.stringify(rchp._chp) : \"\")\n            + \" pap=\" + JSON.stringify(this._pap) + \" ismaindiv=\" + ismaindiv);\n        if (ismaindiv) {\n            if (this._pap.spacebefore !== 0) {\n                el.style.marginTop = _Helper__WEBPACK_IMPORTED_MODULE_0__.Helper._twipsToPt(this._pap.spacebefore) + \"pt\";\n            }\n            else {\n                el.style.marginTop = \"\";\n            }\n            if (this._pap.spaceafter !== 0) {\n                el.style.marginBottom = _Helper__WEBPACK_IMPORTED_MODULE_0__.Helper._twipsToPt(this._pap.spaceafter) + \"pt\";\n            }\n            else {\n                el.style.marginBottom = \"\";\n            }\n            if (rchp != null) {\n                el.style.minHeight = Math.floor(rchp._chp.fontsize / 2) + \"pt\";\n            }\n        }\n        else {\n            switch (this._pap.justification) {\n                case _Helper__WEBPACK_IMPORTED_MODULE_0__.Helper.JUSTIFICATION.LEFT:\n                    el.style.textAlign = \"left\";\n                    break;\n                case _Helper__WEBPACK_IMPORTED_MODULE_0__.Helper.JUSTIFICATION.RIGHT:\n                    el.style.textAlign = \"right\";\n                    break;\n                case _Helper__WEBPACK_IMPORTED_MODULE_0__.Helper.JUSTIFICATION.CENTER:\n                    el.style.textAlign = \"center\";\n                    break;\n                case _Helper__WEBPACK_IMPORTED_MODULE_0__.Helper.JUSTIFICATION.JUSTIFY:\n                    el.style.textAlign = \"justify\";\n                    break;\n            }\n        }\n    };\n    return RenderPap;\n}());\n\n\n\n/***/ }),\n\n/***/ \"./src/rtfjs/renderer/Renderer.ts\":\n/*!****************************************!*\\\n  !*** ./src/rtfjs/renderer/Renderer.ts ***!\n  \\****************************************/\n/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"Renderer\": () => (/* binding */ Renderer)\n/* harmony export */ });\n/* harmony import */ var _Helper__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../Helper */ \"./src/rtfjs/Helper.ts\");\n/*\n\nThe MIT License (MIT)\n\nCopyright (c) 2015 Thomas Bluemel\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n\n*/\n\nvar Renderer = /** @class */ (function () {\n    function Renderer(doc) {\n        this._doc = doc;\n        this._dom = null;\n        this._curRChp = null;\n        this._curRPap = null;\n        this._curpar = null;\n        this._cursubpar = null;\n        this._curcont = [];\n    }\n    Renderer.prototype.pushContainer = function (contel) {\n        if (this._curpar == null) {\n            this.startPar();\n        }\n        var len = this._curcont.push(contel);\n        if (len > 1) {\n            var prevcontel = this._curcont[len - 1];\n            prevcontel.content.append(contel.element);\n        }\n        else {\n            if (this._cursubpar != null) {\n                this._cursubpar.append(contel.element);\n            }\n            else {\n                this._curpar.append(contel.element);\n            }\n        }\n    };\n    Renderer.prototype.popContainer = function () {\n        var contel = this._curcont.pop();\n        if (contel == null) {\n            throw new _Helper__WEBPACK_IMPORTED_MODULE_0__.RTFJSError(\"No container on rendering stack\");\n        }\n    };\n    Renderer.prototype.buildHyperlinkElement = function (url) {\n        var link = document.createElement(\"a\");\n        link.href = url;\n        return link;\n    };\n    Renderer.prototype._appendToPar = function (el, newsubpar) {\n        if (this._curpar == null) {\n            this.startPar();\n        }\n        if (newsubpar === true) {\n            var subpar = document.createElement(\"div\");\n            if (this._cursubpar == null) {\n                subpar.append.apply(subpar, Array.from(this._curpar.childNodes));\n                this._curpar.append(subpar);\n                subpar = document.createElement(\"div\");\n            }\n            if (el) {\n                subpar.append(el);\n            }\n            if (this._curRPap != null) {\n                this._curRPap.apply(this._doc, subpar, this._curRChp, false);\n            }\n            this._cursubpar = subpar;\n            this._curpar.append(subpar);\n        }\n        else if (el) {\n            var contelCnt = this._curcont.length;\n            if (contelCnt > 0) {\n                this._curcont[contelCnt - 1].content.append(el);\n            }\n            else if (this._cursubpar != null) {\n                this._cursubpar.append(el);\n            }\n            else {\n                this._curpar.append(el);\n            }\n        }\n    };\n    Renderer.prototype.startPar = function () {\n        this._curpar = document.createElement(\"div\");\n        if (this._curRPap != null) {\n            this._curRPap.apply(this._doc, this._curpar, this._curRChp, true);\n            this._curRPap.apply(this._doc, this._curpar, this._curRChp, false);\n        }\n        this._cursubpar = null;\n        this._curcont = [];\n        this._dom.push(this._curpar);\n    };\n    Renderer.prototype.lineBreak = function () {\n        this._appendToPar(null, true);\n    };\n    Renderer.prototype.setChp = function (rchp) {\n        this._curRChp = rchp;\n    };\n    Renderer.prototype.setPap = function (rpap) {\n        this._curRPap = rpap;\n        if (this._cursubpar != null) {\n            this._curRPap.apply(this._doc, this._cursubpar, null, false);\n        }\n        else if (this._curpar != null) {\n            // Don't have a sub-paragraph at all, apply everything\n            this._curRPap.apply(this._doc, this._curpar, null, true);\n            this._curRPap.apply(this._doc, this._curpar, null, false);\n        }\n    };\n    Renderer.prototype.appendElement = function (element) {\n        this._appendToPar(element);\n    };\n    Renderer.prototype.buildRenderedPicture = function (element) {\n        if (element == null) {\n            element = document.createElement(\"span\");\n            element.textContent = \"[failed to render image]\";\n        }\n        return element;\n    };\n    Renderer.prototype.renderedPicture = function (element) {\n        this._appendToPar(this.buildRenderedPicture(element));\n    };\n    Renderer.prototype.buildPicture = function (mime, data) {\n        if (data != null) {\n            var image = document.createElement(\"img\");\n            image.src = \"data:\" + mime + \";base64,\" + btoa(data);\n            return image;\n        }\n        else {\n            var err = \"image type not supported\";\n            if (typeof mime === \"string\" && mime !== \"\") {\n                err = mime;\n            }\n            var span = document.createElement(\"span\");\n            span.textContent = \"[\" + err + \"]\";\n            return span;\n        }\n    };\n    Renderer.prototype.picture = function (mime, data) {\n        this._appendToPar(this.buildPicture(mime, data));\n    };\n    Renderer.prototype.buildDom = function () {\n        if (this._dom != null) {\n            return this._dom;\n        }\n        this._dom = [];\n        this._curRChp = null;\n        this._curRPap = null;\n        this._curpar = null;\n        var len = this._doc._ins.length;\n        for (var i = 0; i < len; i++) {\n            var ins = this._doc._ins[i];\n            if (typeof ins === \"string\") {\n                var span = document.createElement(\"span\");\n                span.textContent = ins;\n                if (this._curRChp != null) {\n                    this._curRChp.apply(this._doc, span);\n                }\n                this._appendToPar(span);\n            }\n            else {\n                ins(this);\n            }\n        }\n        return this._dom;\n    };\n    return Renderer;\n}());\n\n\n\n/***/ }),\n\n/***/ \"EMFJS\":\n/*!**************************************************************************************************************************!*\\\n  !*** external {\"commonjs\":\"./EMFJS.bundle.js\",\"commonjs2\":\"./EMFJS.bundle.js\",\"amd\":\"./EMFJS.bundle.js\",\"root\":\"EMFJS\"} ***!\n  \\**************************************************************************************************************************/\n/***/ ((module) => {\n\n\"use strict\";\nmodule.exports = __WEBPACK_EXTERNAL_MODULE_EMFJS__;\n\n/***/ }),\n\n/***/ \"WMFJS\":\n/*!**************************************************************************************************************************!*\\\n  !*** external {\"commonjs\":\"./WMFJS.bundle.js\",\"commonjs2\":\"./WMFJS.bundle.js\",\"amd\":\"./WMFJS.bundle.js\",\"root\":\"WMFJS\"} ***!\n  \\**************************************************************************************************************************/\n/***/ ((module) => {\n\n\"use strict\";\nmodule.exports = __WEBPACK_EXTERNAL_MODULE_WMFJS__;\n\n/***/ })\n\n/******/ \t});\n/************************************************************************/\n/******/ \t// The module cache\n/******/ \tvar __webpack_module_cache__ = {};\n/******/ \t\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n/******/ \t\t// Check if module is in cache\n/******/ \t\tvar cachedModule = __webpack_module_cache__[moduleId];\n/******/ \t\tif (cachedModule !== undefined) {\n/******/ \t\t\treturn cachedModule.exports;\n/******/ \t\t}\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = __webpack_module_cache__[moduleId] = {\n/******/ \t\t\t// no module.id needed\n/******/ \t\t\t// no module.loaded needed\n/******/ \t\t\texports: {}\n/******/ \t\t};\n/******/ \t\n/******/ \t\t// Execute the module function\n/******/ \t\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n/******/ \t\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/ \t\n/************************************************************************/\n/******/ \t/* webpack/runtime/compat get default export */\n/******/ \t(() => {\n/******/ \t\t// getDefaultExport function for compatibility with non-harmony modules\n/******/ \t\t__webpack_require__.n = (module) => {\n/******/ \t\t\tvar getter = module && module.__esModule ?\n/******/ \t\t\t\t() => (module['default']) :\n/******/ \t\t\t\t() => (module);\n/******/ \t\t\t__webpack_require__.d(getter, { a: getter });\n/******/ \t\t\treturn getter;\n/******/ \t\t};\n/******/ \t})();\n/******/ \t\n/******/ \t/* webpack/runtime/define property getters */\n/******/ \t(() => {\n/******/ \t\t// define getter functions for harmony exports\n/******/ \t\t__webpack_require__.d = (exports, definition) => {\n/******/ \t\t\tfor(var key in definition) {\n/******/ \t\t\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n/******/ \t\t\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n/******/ \t\t\t\t}\n/******/ \t\t\t}\n/******/ \t\t};\n/******/ \t})();\n/******/ \t\n/******/ \t/* webpack/runtime/hasOwnProperty shorthand */\n/******/ \t(() => {\n/******/ \t\t__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))\n/******/ \t})();\n/******/ \t\n/******/ \t/* webpack/runtime/make namespace object */\n/******/ \t(() => {\n/******/ \t\t// define __esModule on exports\n/******/ \t\t__webpack_require__.r = (exports) => {\n/******/ \t\t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n/******/ \t\t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n/******/ \t\t\t}\n/******/ \t\t\tObject.defineProperty(exports, '__esModule', { value: true });\n/******/ \t\t};\n/******/ \t})();\n/******/ \t\n/************************************************************************/\nvar __webpack_exports__ = {};\n// This entry need to be wrapped in an IIFE because it need to be in strict mode.\n(() => {\n\"use strict\";\n/*!****************************!*\\\n  !*** ./src/rtfjs/index.ts ***!\n  \\****************************/\n__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"Document\": () => (/* reexport safe */ _DocumentFacade__WEBPACK_IMPORTED_MODULE_0__.DocumentFacade),\n/* harmony export */   \"Error\": () => (/* reexport safe */ _Helper__WEBPACK_IMPORTED_MODULE_1__.RTFJSError),\n/* harmony export */   \"loggingEnabled\": () => (/* reexport safe */ _Helper__WEBPACK_IMPORTED_MODULE_1__.loggingEnabled)\n/* harmony export */ });\n/* harmony import */ var _DocumentFacade__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./DocumentFacade */ \"./src/rtfjs/DocumentFacade.ts\");\n/* harmony import */ var _Helper__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./Helper */ \"./src/rtfjs/Helper.ts\");\n/*\n\nThe MIT License (MIT)\n\nCopyright (c) 2015 Thomas Bluemel\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n\n*/\n\n\n\n})();\n\n/******/ \treturn __webpack_exports__;\n/******/ })()\n;\n});\n//# sourceMappingURL=RTFJS.bundle.js.map"
  },
  {
    "path": "application/public/js/WMFJS.bundle.js",
    "content": "(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"WMFJS\"] = factory();\n\telse\n\t\troot[\"WMFJS\"] = factory();\n})(this, function() {\nreturn /******/ (() => { // webpackBootstrap\n/******/ \t\"use strict\";\n/******/ \tvar __webpack_modules__ = ({\n\n/***/ \"./src/util/SVG.ts\":\n/*!*************************!*\\\n  !*** ./src/util/SVG.ts ***!\n  \\*************************/\n/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {\n\n__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"SVGFilters\": () => (/* binding */ SVGFilters),\n/* harmony export */   \"SVGPathBuilder\": () => (/* binding */ SVGPathBuilder),\n/* harmony export */   \"SVG\": () => (/* binding */ SVG)\n/* harmony export */ });\n/*\n\nThe MIT License (MIT)\n\nCopyright (c) 2020 Ynse Hoornenborg\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n\n*/\nvar SVGFilters = /** @class */ (function () {\n    function SVGFilters() {\n    }\n    SVGFilters.prototype.flood = function (filter, resultId, color, opacity, _settings) {\n        var floodElement = document.createElementNS(\"http://www.w3.org/2000/svg\", \"feFlood\");\n        if (resultId) {\n            floodElement.setAttribute(\"id\", resultId);\n        }\n        floodElement.setAttribute(\"flood-color\", color);\n        floodElement.setAttribute(\"flood-opacity\", opacity.toString());\n        filter.appendChild(floodElement);\n    };\n    SVGFilters.prototype.composite = function (filter, resultId, in1, in2, k1, k2, k3, k4, _settings) {\n        var compositeElement = document.createElementNS(\"http://www.w3.org/2000/svg\", \"feComposite\");\n        if (resultId) {\n            compositeElement.setAttribute(\"id\", resultId);\n        }\n        compositeElement.setAttribute(\"in\", in1);\n        compositeElement.setAttribute(\"in2\", in2);\n        filter.appendChild(compositeElement);\n    };\n    return SVGFilters;\n}());\n\nvar SVGPathBuilder = /** @class */ (function () {\n    function SVGPathBuilder() {\n        this._path = \"\";\n    }\n    SVGPathBuilder.prototype.move = function (x, y) {\n        this._path += \" M \" + x + \" \" + y;\n    };\n    SVGPathBuilder.prototype.path = function () {\n        return this._path.substr(1);\n    };\n    SVGPathBuilder.prototype.line = function (pts) {\n        var _this = this;\n        pts.forEach(function (point) {\n            _this._path += \" L \" + point[0] + \" \" + point[1];\n        });\n    };\n    SVGPathBuilder.prototype.curveC = function (x1, y1, x2, y2, x, y) {\n        this._path += \" C \" + x1 + \" \" + y1 + \", \" + x2 + \" \" + y2 + \", \" + x + \" \" + y;\n    };\n    SVGPathBuilder.prototype.close = function () {\n        this._path += \" Z\";\n    };\n    return SVGPathBuilder;\n}());\n\nvar SVG = /** @class */ (function () {\n    function SVG(svg) {\n        this.filters = new SVGFilters();\n        this._defs = undefined;\n        this._svg = svg;\n    }\n    SVG.prototype.svg = function (parent, x, y, width, height, settings) {\n        var svgElement = document.createElementNS(\"http://www.w3.org/2000/svg\", \"svg\");\n        svgElement.setAttribute(\"x\", x.toString());\n        svgElement.setAttribute(\"y\", y.toString());\n        svgElement.setAttribute(\"width\", width.toString());\n        svgElement.setAttribute(\"height\", height.toString());\n        this._appendSettings(settings, svgElement);\n        if (parent != null) {\n            parent.appendChild(svgElement);\n        }\n        else {\n            this._svg.appendChild(svgElement);\n        }\n        return svgElement;\n    };\n    SVG.prototype.image = function (parent, x, y, width, height, url, settings) {\n        var imageElement = document.createElementNS(\"http://www.w3.org/2000/svg\", \"image\");\n        imageElement.setAttribute(\"x\", x.toString());\n        imageElement.setAttribute(\"y\", y.toString());\n        imageElement.setAttribute(\"width\", width.toString());\n        imageElement.setAttribute(\"height\", height.toString());\n        imageElement.setAttributeNS(\"http://www.w3.org/1999/xlink\", \"href\", url);\n        this._appendSettings(settings, imageElement);\n        parent.appendChild(imageElement);\n        return imageElement;\n    };\n    SVG.prototype.rect = function (parent, x, y, width, height, rx, ry, settings) {\n        var rectElement = document.createElementNS(\"http://www.w3.org/2000/svg\", \"rect\");\n        rectElement.setAttribute(\"x\", x.toString());\n        rectElement.setAttribute(\"y\", y.toString());\n        rectElement.setAttribute(\"width\", width.toString());\n        rectElement.setAttribute(\"height\", height.toString());\n        if (rx !== undefined) {\n            if (rx instanceof Number) {\n                rectElement.setAttribute(\"rx\", rx.toString());\n            }\n            else if (rx instanceof Object) {\n                this._appendSettings(rx, rectElement);\n            }\n        }\n        if (ry !== undefined) {\n            rectElement.setAttribute(\"ry\", ry.toString());\n        }\n        this._appendSettings(settings, rectElement);\n        parent.appendChild(rectElement);\n        return rectElement;\n    };\n    SVG.prototype.line = function (parent, x1, y1, x2, y2, settings) {\n        var lineElement = document.createElementNS(\"http://www.w3.org/2000/svg\", \"line\");\n        lineElement.setAttribute(\"x1\", x1.toString());\n        lineElement.setAttribute(\"y1\", y1.toString());\n        lineElement.setAttribute(\"x2\", x2.toString());\n        lineElement.setAttribute(\"y2\", y2.toString());\n        this._appendSettings(settings, lineElement);\n        parent.appendChild(lineElement);\n        return lineElement;\n    };\n    SVG.prototype.polygon = function (parent, points, settings) {\n        var polygonElement = document.createElementNS(\"http://www.w3.org/2000/svg\", \"polygon\");\n        polygonElement.setAttribute(\"points\", points.map(function (point) { return point.join(\",\"); }).join(\" \"));\n        this._appendSettings(settings, polygonElement);\n        parent.appendChild(polygonElement);\n        return polygonElement;\n    };\n    SVG.prototype.polyline = function (parent, points, settings) {\n        var polylineElement = document.createElementNS(\"http://www.w3.org/2000/svg\", \"polyline\");\n        polylineElement.setAttribute(\"points\", points.map(function (point) { return point.join(\",\"); }).join(\" \"));\n        this._appendSettings(settings, polylineElement);\n        parent.appendChild(polylineElement);\n        return polylineElement;\n    };\n    SVG.prototype.ellipse = function (parent, cx, cy, rx, ry, settings) {\n        var ellipseElement = document.createElementNS(\"http://www.w3.org/2000/svg\", \"ellipse\");\n        ellipseElement.setAttribute(\"cx\", cx.toString());\n        ellipseElement.setAttribute(\"cy\", cy.toString());\n        ellipseElement.setAttribute(\"rx\", rx.toString());\n        ellipseElement.setAttribute(\"ry\", ry.toString());\n        this._appendSettings(settings, ellipseElement);\n        parent.appendChild(ellipseElement);\n        return ellipseElement;\n    };\n    SVG.prototype.path = function (parent, builder, settings) {\n        var pathElement = document.createElementNS(\"http://www.w3.org/2000/svg\", \"path\");\n        pathElement.setAttribute(\"d\", builder.path());\n        this._appendSettings(settings, pathElement);\n        parent.appendChild(pathElement);\n        return pathElement;\n    };\n    SVG.prototype.text = function (parent, x, y, value, settings) {\n        var textElement = document.createElementNS(\"http://www.w3.org/2000/svg\", \"text\");\n        textElement.setAttribute(\"x\", x.toString());\n        textElement.setAttribute(\"y\", y.toString());\n        this._appendSettings(settings, textElement);\n        var textNode = document.createTextNode(value);\n        textElement.appendChild(textNode);\n        parent.appendChild(textElement);\n        return textElement;\n    };\n    SVG.prototype.filter = function (parent, id, x, y, width, height, settings) {\n        var filterElement = document.createElementNS(\"http://www.w3.org/2000/svg\", \"filter\");\n        filterElement.setAttribute(\"x\", x.toString());\n        filterElement.setAttribute(\"y\", y.toString());\n        filterElement.setAttribute(\"width\", width.toString());\n        filterElement.setAttribute(\"height\", height.toString());\n        this._appendSettings(settings, filterElement);\n        parent.appendChild(filterElement);\n        return filterElement;\n    };\n    SVG.prototype.pattern = function (parent, resultId, x, y, width, height, settings) {\n        var patternElement = document.createElementNS(\"http://www.w3.org/2000/svg\", \"pattern\");\n        if (resultId) {\n            patternElement.setAttribute(\"id\", resultId);\n        }\n        patternElement.setAttribute(\"x\", x.toString());\n        patternElement.setAttribute(\"y\", y.toString());\n        patternElement.setAttribute(\"width\", width.toString());\n        patternElement.setAttribute(\"height\", height.toString());\n        this._appendSettings(settings, patternElement);\n        parent.appendChild(patternElement);\n        return patternElement;\n    };\n    SVG.prototype.defs = function () {\n        if (this._defs === undefined) {\n            var defsElement = document.createElementNS(\"http://www.w3.org/2000/svg\", \"defs\");\n            this._svg.appendChild(defsElement);\n            this._defs = defsElement;\n        }\n        return this._defs;\n    };\n    SVG.prototype.clipPath = function (parent, resultId, units, settings) {\n        var clipElement = document.createElementNS(\"http://www.w3.org/2000/svg\", \"clipPath\");\n        if (resultId) {\n            clipElement.setAttribute(\"id\", resultId);\n        }\n        if (units === undefined) {\n            units = \"userSpaceOnUse\";\n        }\n        clipElement.setAttribute(\"clipPathUnits\", units);\n        this._appendSettings(settings, clipElement);\n        parent.appendChild(clipElement);\n        return clipElement;\n    };\n    SVG.prototype.createPath = function () {\n        return new SVGPathBuilder();\n    };\n    SVG.prototype._appendSettings = function (settings, element) {\n        if (settings !== undefined) {\n            Object.keys(settings).forEach(function (key) {\n                element.setAttribute(key, settings[key]);\n            });\n        }\n    };\n    return SVG;\n}());\n\n\n\n/***/ }),\n\n/***/ \"./src/util/index.ts\":\n/*!***************************!*\\\n  !*** ./src/util/index.ts ***!\n  \\***************************/\n/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {\n\n__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"SVG\": () => (/* reexport safe */ _SVG__WEBPACK_IMPORTED_MODULE_0__.SVG)\n/* harmony export */ });\n/* harmony import */ var _SVG__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./SVG */ \"./src/util/SVG.ts\");\n/*\n\nThe MIT License (MIT)\n\nCopyright (c) 2020 Tom Zoehner\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n\n*/\n\n\n\n/***/ }),\n\n/***/ \"./src/wmfjs/Bitmap.ts\":\n/*!*****************************!*\\\n  !*** ./src/wmfjs/Bitmap.ts ***!\n  \\*****************************/\n/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {\n\n__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"BitmapInfo\": () => (/* binding */ BitmapInfo),\n/* harmony export */   \"DIBitmap\": () => (/* binding */ DIBitmap),\n/* harmony export */   \"Bitmap16\": () => (/* binding */ Bitmap16),\n/* harmony export */   \"PatternBitmap16\": () => (/* binding */ PatternBitmap16)\n/* harmony export */ });\n/* harmony import */ var _Helper__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./Helper */ \"./src/wmfjs/Helper.ts\");\n/*\n\nThe MIT License (MIT)\n\nCopyright (c) 2015 Thomas Bluemel\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n\n*/\nvar __extends = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        if (typeof b !== \"function\" && b !== null)\n            throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\n\nvar BitmapCoreHeader = /** @class */ (function () {\n    function BitmapCoreHeader(reader, skipsize) {\n        if (skipsize) {\n            reader.skip(4);\n        }\n        this.width = reader.readUint16();\n        this.height = reader.readUint16();\n        this.planes = reader.readUint16();\n        this.bitcount = reader.readUint16();\n    }\n    BitmapCoreHeader.prototype.colors = function () {\n        return this.bitcount <= 8 ? 1 << this.bitcount : 0;\n    };\n    return BitmapCoreHeader;\n}());\nvar BitmapInfoHeader = /** @class */ (function () {\n    function BitmapInfoHeader(reader, skipsize) {\n        if (skipsize) {\n            reader.skip(4);\n        }\n        this.width = reader.readInt32();\n        this.height = reader.readInt32();\n        this.planes = reader.readUint16();\n        this.bitcount = reader.readUint16();\n        this.compression = reader.readUint32();\n        this.sizeimage = reader.readUint32();\n        this.xpelspermeter = reader.readInt32();\n        this.ypelspermeter = reader.readInt32();\n        this.clrused = reader.readUint32();\n        this.clrimportant = reader.readUint32();\n    }\n    BitmapInfoHeader.prototype.colors = function () {\n        if (this.clrused !== 0) {\n            return this.clrused < 256 ? this.clrused : 256;\n        }\n        else {\n            return this.bitcount > 8 ? 0 : 1 << this.bitcount;\n        }\n    };\n    return BitmapInfoHeader;\n}());\nvar BitmapInfo = /** @class */ (function () {\n    function BitmapInfo(reader, usergb) {\n        this._reader = reader;\n        this._offset = reader.pos;\n        this._usergb = usergb;\n        var hdrsize = reader.readUint32();\n        this._infosize = hdrsize;\n        if (hdrsize === _Helper__WEBPACK_IMPORTED_MODULE_0__.Helper.GDI.BITMAPCOREHEADER_SIZE) {\n            this._header = new BitmapCoreHeader(reader, false);\n            this._infosize += this._header.colors() * (usergb ? 3 : 2);\n        }\n        else {\n            this._header = new BitmapInfoHeader(reader, false);\n            var masks = this._header.compression === _Helper__WEBPACK_IMPORTED_MODULE_0__.Helper.GDI.BitmapCompression.BI_BITFIELDS ? 3 : 0;\n            if (hdrsize <= _Helper__WEBPACK_IMPORTED_MODULE_0__.Helper.GDI.BITMAPINFOHEADER_SIZE + (masks * 4)) {\n                this._infosize = _Helper__WEBPACK_IMPORTED_MODULE_0__.Helper.GDI.BITMAPINFOHEADER_SIZE + (masks * 4);\n            }\n            this._infosize += this._header.colors() * (usergb ? 4 : 2);\n        }\n    }\n    BitmapInfo.prototype.getWidth = function () {\n        return this._header.width;\n    };\n    BitmapInfo.prototype.getHeight = function () {\n        return Math.abs(this._header.height);\n    };\n    BitmapInfo.prototype.infosize = function () {\n        return this._infosize;\n    };\n    BitmapInfo.prototype.header = function () {\n        return this._header;\n    };\n    return BitmapInfo;\n}());\n\nvar DIBitmap = /** @class */ (function () {\n    function DIBitmap(reader, size) {\n        this._reader = reader;\n        this._offset = reader.pos;\n        this._size = size;\n        this._info = new BitmapInfo(reader, true);\n    }\n    DIBitmap.prototype.getWidth = function () {\n        return this._info.getWidth();\n    };\n    DIBitmap.prototype.getHeight = function () {\n        return this._info.getHeight();\n    };\n    DIBitmap.prototype.base64ref = function () {\n        var prevpos = this._reader.pos;\n        this._reader.seek(this._offset);\n        var mime = \"image/bmp\";\n        var header = this._info.header();\n        var data;\n        if (header instanceof BitmapInfoHeader && header.compression != null) {\n            switch (header.compression) {\n                case _Helper__WEBPACK_IMPORTED_MODULE_0__.Helper.GDI.BitmapCompression.BI_JPEG:\n                    mime = \"data:image/jpeg\";\n                    break;\n                case _Helper__WEBPACK_IMPORTED_MODULE_0__.Helper.GDI.BitmapCompression.BI_PNG:\n                    mime = \"data:image/png\";\n                    break;\n                default:\n                    data = this.makeBitmapFileHeader();\n                    break;\n            }\n        }\n        else {\n            data = this.makeBitmapFileHeader();\n        }\n        if (data != null) {\n            data += this._reader.readBinary(this._size);\n        }\n        else {\n            data = this._reader.readBinary(this._size);\n        }\n        var ref = \"data:\" + mime + \";base64,\" + btoa(data);\n        this._reader.seek(prevpos);\n        return ref;\n    };\n    DIBitmap.prototype.makeBitmapFileHeader = function () {\n        var buf = new ArrayBuffer(14);\n        var view = new Uint8Array(buf);\n        view[0] = 0x42;\n        view[1] = 0x4d;\n        _Helper__WEBPACK_IMPORTED_MODULE_0__.Helper._writeUint32Val(view, 2, this._size + 14);\n        _Helper__WEBPACK_IMPORTED_MODULE_0__.Helper._writeUint32Val(view, 10, this._info.infosize() + 14);\n        return _Helper__WEBPACK_IMPORTED_MODULE_0__.Helper._blobToBinary(view);\n    };\n    return DIBitmap;\n}());\n\nvar Bitmap16 = /** @class */ (function () {\n    function Bitmap16(reader, size) {\n        if (reader != null) {\n            size = size;\n            this._reader = reader;\n            this._offset = reader.pos;\n            this._size = size;\n            this.type = reader.readInt16();\n            this.width = reader.readInt16();\n            this.height = reader.readInt16();\n            this.widthBytes = reader.readInt16();\n            this.planes = reader.readUint8();\n            this.bitsPixel = reader.readUint8();\n            this.bitsOffset = reader.pos;\n            this.bitsSize = (((this.width * this.bitsPixel + 15) >> 4) << 1) * this.height;\n            if (this.bitsSize > size - 10) {\n                throw new _Helper__WEBPACK_IMPORTED_MODULE_0__.WMFJSError(\"Bitmap should have \" + this.bitsSize + \" bytes, but has \" + (size - 10));\n            }\n        }\n        else {\n            var copy = size;\n            this._reader = copy._reader;\n            this._offset = copy._offset;\n            this._size = copy._size;\n            this.type = copy.type;\n            this.width = copy.width;\n            this.height = copy.height;\n            this.widthBytes = copy.widthBytes;\n            this.planes = copy.planes;\n            this.bitsPixel = copy.bitsPixel;\n            this.bitsOffset = copy.bitsOffset;\n            this.bitsSize = copy.bitsSize;\n        }\n    }\n    Bitmap16.prototype.getWidth = function () {\n        return this.width;\n    };\n    Bitmap16.prototype.getHeight = function () {\n        return this.height;\n    };\n    Bitmap16.prototype.clone = function () {\n        return new Bitmap16(null, this);\n    };\n    return Bitmap16;\n}());\n\nvar PatternBitmap16 = /** @class */ (function (_super) {\n    __extends(PatternBitmap16, _super);\n    function PatternBitmap16(reader, size) {\n        var _this = _super.call(this, reader, size) || this;\n        if (reader != null) {\n            _this.bitsOffset += 22; // skip bits (4 bytes) + reserved (18 bytes)\n        }\n        return _this;\n    }\n    PatternBitmap16.prototype.clone = function () {\n        return new PatternBitmap16(null, this);\n    };\n    return PatternBitmap16;\n}(Bitmap16));\n\n\n\n/***/ }),\n\n/***/ \"./src/wmfjs/Blob.ts\":\n/*!***************************!*\\\n  !*** ./src/wmfjs/Blob.ts ***!\n  \\***************************/\n/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {\n\n__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"Blob\": () => (/* binding */ Blob)\n/* harmony export */ });\n/* harmony import */ var _Helper__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./Helper */ \"./src/wmfjs/Helper.ts\");\n/*\n\nThe MIT License (MIT)\n\nCopyright (c) 2015 Thomas Bluemel\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n\n*/\n\nvar Blob = /** @class */ (function () {\n    function Blob(blob, offset) {\n        if (blob instanceof Blob) {\n            this.blob = blob.blob;\n            this.data = blob.data;\n            this.pos = offset || blob.pos;\n        }\n        else {\n            this.blob = blob;\n            this.data = new Uint8Array(blob);\n            this.pos = offset || 0;\n        }\n    }\n    Blob.prototype.eof = function () {\n        return this.pos >= this.data.length;\n    };\n    Blob.prototype.seek = function (newpos) {\n        if (newpos < 0 || newpos > this.data.length) {\n            throw new _Helper__WEBPACK_IMPORTED_MODULE_0__.WMFJSError(\"Invalid seek position\");\n        }\n        this.pos = newpos;\n    };\n    Blob.prototype.skip = function (cnt) {\n        var newPos = this.pos + cnt;\n        if (newPos > this.data.length) {\n            throw new _Helper__WEBPACK_IMPORTED_MODULE_0__.WMFJSError(\"Unexpected end of file\");\n        }\n        this.pos = newPos;\n    };\n    Blob.prototype.readBinary = function (cnt) {\n        var end = this.pos + cnt;\n        if (end > this.data.length) {\n            throw new _Helper__WEBPACK_IMPORTED_MODULE_0__.WMFJSError(\"Unexpected end of file\");\n        }\n        var ret = \"\";\n        while (cnt-- > 0) {\n            ret += String.fromCharCode(this.data[this.pos++]);\n        }\n        return ret;\n    };\n    Blob.prototype.readInt8 = function () {\n        if (this.pos + 1 > this.data.length) {\n            throw new _Helper__WEBPACK_IMPORTED_MODULE_0__.WMFJSError(\"Unexpected end of file\");\n        }\n        return this.data[this.pos++];\n    };\n    Blob.prototype.readUint8 = function () {\n        return this.readInt8() >>> 0;\n    };\n    Blob.prototype.readInt32 = function () {\n        if (this.pos + 4 > this.data.length) {\n            throw new _Helper__WEBPACK_IMPORTED_MODULE_0__.WMFJSError(\"Unexpected end of file\");\n        }\n        var val = this.data[this.pos++];\n        val |= this.data[this.pos++] << 8;\n        val |= this.data[this.pos++] << 16;\n        val |= this.data[this.pos++] << 24;\n        return val;\n    };\n    Blob.prototype.readUint32 = function () {\n        return this.readInt32() >>> 0;\n    };\n    Blob.prototype.readUint16 = function () {\n        if (this.pos + 2 > this.data.length) {\n            throw new _Helper__WEBPACK_IMPORTED_MODULE_0__.WMFJSError(\"Unexpected end of file\");\n        }\n        var val = this.data[this.pos++];\n        val |= this.data[this.pos++] << 8;\n        return val;\n    };\n    Blob.prototype.readInt16 = function () {\n        var val = this.readUint16();\n        if (val > 32767) {\n            val -= 65536;\n        }\n        return val;\n    };\n    Blob.prototype.readString = function (length) {\n        if (this.pos + length > this.data.length) {\n            throw new _Helper__WEBPACK_IMPORTED_MODULE_0__.WMFJSError(\"Unexpected end of file\");\n        }\n        var ret = \"\";\n        for (var i = 0; i < length; i++) {\n            ret += String.fromCharCode(this.data[this.pos++] >>> 0);\n        }\n        return ret;\n    };\n    Blob.prototype.readNullTermString = function (maxSize) {\n        var ret = \"\";\n        if (maxSize > 0) {\n            maxSize--;\n            for (var i = 0; i < maxSize; i++) {\n                if (this.pos + i + 1 > this.data.length) {\n                    throw new _Helper__WEBPACK_IMPORTED_MODULE_0__.WMFJSError(\"Unexpected end of file\");\n                }\n                var byte = this.data[this.pos + i] >>> 0;\n                if (byte === 0) {\n                    break;\n                }\n                ret += String.fromCharCode(byte);\n            }\n        }\n        return ret;\n    };\n    return Blob;\n}());\n\n\n\n/***/ }),\n\n/***/ \"./src/wmfjs/GDIContext.ts\":\n/*!*********************************!*\\\n  !*** ./src/wmfjs/GDIContext.ts ***!\n  \\*********************************/\n/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {\n\n__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"GDIContext\": () => (/* binding */ GDIContext)\n/* harmony export */ });\n/* harmony import */ var _Helper__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./Helper */ \"./src/wmfjs/Helper.ts\");\n/* harmony import */ var _Primitives__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./Primitives */ \"./src/wmfjs/Primitives.ts\");\n/* harmony import */ var _Region__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./Region */ \"./src/wmfjs/Region.ts\");\n/* harmony import */ var _Style__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./Style */ \"./src/wmfjs/Style.ts\");\n/*\n\nThe MIT License (MIT)\n\nCopyright (c) 2015 Thomas Bluemel\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n\n*/\n\n\n\n\nvar GDIContextState = /** @class */ (function () {\n    function GDIContextState(copy, defObjects) {\n        if (copy != null) {\n            this._svggroup = copy._svggroup;\n            this._svgclipChanged = copy._svgclipChanged;\n            this._svgtextbkfilter = copy._svgtextbkfilter;\n            this.mapmode = copy.mapmode;\n            this.stretchmode = copy.stretchmode;\n            this.textalign = copy.textalign;\n            this.bkmode = copy.bkmode;\n            this.textcolor = copy.textcolor.clone();\n            this.bkcolor = copy.bkcolor.clone();\n            this.polyfillmode = copy.polyfillmode;\n            this.wx = copy.wx;\n            this.wy = copy.wy;\n            this.ww = copy.ww;\n            this.wh = copy.wh;\n            this.vx = copy.vx;\n            this.vy = copy.vy;\n            this.vw = copy.vw;\n            this.vh = copy.vh;\n            this.x = copy.x;\n            this.y = copy.y;\n            this.clip = copy.clip;\n            this.ownclip = false;\n            this.selected = {};\n            for (var type in copy.selected) {\n                this.selected[type] = copy.selected[type];\n            }\n        }\n        else {\n            this._svggroup = null;\n            this._svgclipChanged = false;\n            this._svgtextbkfilter = null;\n            this.mapmode = _Helper__WEBPACK_IMPORTED_MODULE_0__.Helper.GDI.MapMode.MM_ANISOTROPIC;\n            this.stretchmode = _Helper__WEBPACK_IMPORTED_MODULE_0__.Helper.GDI.StretchMode.COLORONCOLOR;\n            this.textalign = 0; // TA_LEFT | TA_TOP | TA_NOUPDATECP\n            this.bkmode = _Helper__WEBPACK_IMPORTED_MODULE_0__.Helper.GDI.MixMode.OPAQUE;\n            this.textcolor = new _Style__WEBPACK_IMPORTED_MODULE_3__.ColorRef(null, 0, 0, 0);\n            this.bkcolor = new _Style__WEBPACK_IMPORTED_MODULE_3__.ColorRef(null, 255, 255, 255);\n            this.polyfillmode = _Helper__WEBPACK_IMPORTED_MODULE_0__.Helper.GDI.PolyFillMode.ALTERNATE;\n            this.wx = 0;\n            this.wy = 0;\n            this.ww = 0;\n            this.wh = 0;\n            this.vx = 0;\n            this.vy = 0;\n            this.vw = 0;\n            this.vh = 0;\n            this.x = 0;\n            this.y = 0;\n            this.clip = null;\n            this.ownclip = false;\n            this.selected = {};\n            for (var type in defObjects) {\n                var defObj = defObjects[type];\n                this.selected[type] = defObj != null ? defObj.clone() : null;\n            }\n        }\n    }\n    return GDIContextState;\n}());\nvar GDIContext = /** @class */ (function () {\n    function GDIContext(svg) {\n        this._svg = svg;\n        this._svgdefs = null;\n        this._svgPatterns = {};\n        this._svgClipPaths = {};\n        this.defObjects = {\n            brush: new _Style__WEBPACK_IMPORTED_MODULE_3__.Brush(null, null),\n            pen: new _Style__WEBPACK_IMPORTED_MODULE_3__.Pen(null, _Helper__WEBPACK_IMPORTED_MODULE_0__.Helper.GDI.PenStyle.PS_SOLID, new _Primitives__WEBPACK_IMPORTED_MODULE_1__.PointS(null, 1, 1), new _Style__WEBPACK_IMPORTED_MODULE_3__.ColorRef(null, 0, 0, 0), 0, 0),\n            font: new _Style__WEBPACK_IMPORTED_MODULE_3__.Font(null, null),\n            palette: null,\n            region: null,\n        };\n        this.state = new GDIContextState(null, this.defObjects);\n        this.statestack = [this.state];\n        this.objects = {};\n    }\n    GDIContext.prototype.setMapMode = function (mode) {\n        _Helper__WEBPACK_IMPORTED_MODULE_0__.Helper.log(\"[gdi] setMapMode: mode=\" + mode);\n        this.state.mapmode = mode;\n        this.state._svggroup = null;\n    };\n    GDIContext.prototype.setWindowOrg = function (x, y) {\n        _Helper__WEBPACK_IMPORTED_MODULE_0__.Helper.log(\"[gdi] setWindowOrg: x=\" + x + \" y=\" + y);\n        this.state.wx = x;\n        this.state.wy = y;\n        this.state._svggroup = null;\n    };\n    GDIContext.prototype.setWindowExt = function (x, y) {\n        _Helper__WEBPACK_IMPORTED_MODULE_0__.Helper.log(\"[gdi] setWindowExt: x=\" + x + \" y=\" + y);\n        this.state.ww = x;\n        this.state.wh = y;\n        this.state._svggroup = null;\n    };\n    GDIContext.prototype.offsetWindowOrg = function (offX, offY) {\n        _Helper__WEBPACK_IMPORTED_MODULE_0__.Helper.log(\"[gdi] offsetWindowOrg: offX=\" + offX + \" offY=\" + offY);\n        this.state.wx += offX;\n        this.state.wy += offY;\n        this.state._svggroup = null;\n    };\n    GDIContext.prototype.setViewportOrg = function (x, y) {\n        _Helper__WEBPACK_IMPORTED_MODULE_0__.Helper.log(\"[gdi] setViewportOrg: x=\" + x + \" y=\" + y);\n        this.state.vx = x;\n        this.state.vy = y;\n        this.state._svggroup = null;\n    };\n    GDIContext.prototype.setViewportExt = function (x, y) {\n        _Helper__WEBPACK_IMPORTED_MODULE_0__.Helper.log(\"[gdi] setViewportExt: x=\" + x + \" y=\" + y);\n        this.state.vw = x;\n        this.state.vh = y;\n        this.state._svggroup = null;\n    };\n    GDIContext.prototype.offsetViewportOrg = function (offX, offY) {\n        _Helper__WEBPACK_IMPORTED_MODULE_0__.Helper.log(\"[gdi] offsetViewportOrg: offX=\" + offX + \" offY=\" + offY);\n        this.state.vx += offX;\n        this.state.vy += offY;\n        this.state._svggroup = null;\n    };\n    GDIContext.prototype.saveDC = function () {\n        _Helper__WEBPACK_IMPORTED_MODULE_0__.Helper.log(\"[gdi] saveDC\");\n        var prevstate = this.state;\n        this.state = new GDIContextState(this.state);\n        this.statestack.push(prevstate);\n        this.state._svggroup = null;\n    };\n    GDIContext.prototype.restoreDC = function (saved) {\n        _Helper__WEBPACK_IMPORTED_MODULE_0__.Helper.log(\"[gdi] restoreDC: saved=\" + saved);\n        if (this.statestack.length > 1) {\n            if (saved === -1) {\n                this.state = this.statestack.pop();\n            }\n            else if (saved < -1) {\n                throw new _Helper__WEBPACK_IMPORTED_MODULE_0__.WMFJSError(\"restoreDC: relative restore not implemented\");\n            }\n            else if (saved > 1) {\n                throw new _Helper__WEBPACK_IMPORTED_MODULE_0__.WMFJSError(\"restoreDC: absolute restore not implemented\");\n            }\n        }\n        else {\n            throw new _Helper__WEBPACK_IMPORTED_MODULE_0__.WMFJSError(\"No saved contexts\");\n        }\n        this.state._svggroup = null;\n    };\n    GDIContext.prototype.escape = function (func, blob, offset, count) {\n        _Helper__WEBPACK_IMPORTED_MODULE_0__.Helper.log(\"[gdi] escape: func=\" + func + \" offset=\" + offset + \" count=\" + count);\n    };\n    GDIContext.prototype.setStretchBltMode = function (stretchMode) {\n        _Helper__WEBPACK_IMPORTED_MODULE_0__.Helper.log(\"[gdi] setStretchBltMode: stretchMode=\" + stretchMode);\n    };\n    GDIContext.prototype.stretchDib = function (srcX, srcY, srcW, srcH, dstX, dstY, dstW, dstH, rasterOp, colorUsage, dib) {\n        _Helper__WEBPACK_IMPORTED_MODULE_0__.Helper.log(\"[gdi] stretchDib: srcX=\" + srcX + \" srcY=\" + srcY + \" srcW=\" + srcW + \" srcH=\" + srcH\n            + \" dstX=\" + dstX + \" dstY=\" + dstY + \" dstW=\" + dstW + \" dstH=\" + dstH\n            + \" rasterOp=0x\" + rasterOp.toString(16));\n        srcX = this._todevX(srcX);\n        srcY = this._todevY(srcY);\n        srcW = this._todevW(srcW);\n        srcH = this._todevH(srcH);\n        dstX = this._todevX(dstX);\n        dstY = this._todevY(dstY);\n        dstW = this._todevW(dstW);\n        dstH = this._todevH(dstH);\n        _Helper__WEBPACK_IMPORTED_MODULE_0__.Helper.log(\"[gdi] stretchDib: TRANSLATED: srcX=\" + srcX + \" srcY=\" + srcY + \" srcW=\" + srcW + \" srcH=\" + srcH\n            + \" dstX=\" + dstX + \" dstY=\" + dstY + \" dstW=\" + dstW + \" dstH=\" + dstH\n            + \" rasterOp=0x\" + rasterOp.toString(16) + \" colorUsage=0x\" + colorUsage.toString(16));\n        this._pushGroup();\n        this._svg.image(this.state._svggroup, dstX, dstY, dstW, dstH, dib.base64ref());\n    };\n    GDIContext.prototype.stretchDibBits = function (srcX, srcY, srcW, srcH, dstX, dstY, dstW, dstH, rasterOp, dib) {\n        _Helper__WEBPACK_IMPORTED_MODULE_0__.Helper.log(\"[gdi] stretchDibBits: srcX=\" + srcX + \" srcY=\" + srcY + \" srcW=\" + srcW + \" srcH=\" + srcH\n            + \" dstX=\" + dstX + \" dstY=\" + dstY + \" dstW=\" + dstW + \" dstH=\" + dstH\n            + \" rasterOp=0x\" + rasterOp.toString(16));\n        srcX = this._todevX(srcX);\n        srcY = this._todevY(srcY);\n        srcW = this._todevW(srcW);\n        srcH = this._todevH(srcH);\n        dstX = this._todevX(dstX);\n        dstY = this._todevY(dstY);\n        dstW = this._todevW(dstW);\n        dstH = this._todevH(dstH);\n        _Helper__WEBPACK_IMPORTED_MODULE_0__.Helper.log(\"[gdi] stretchDibBits: TRANSLATED:\"\n            + \" srcX=\" + srcX + \" srcY=\" + srcY + \" srcW=\" + srcW + \" srcH=\" + srcH\n            + \" dstX=\" + dstX + \" dstY=\" + dstY + \" dstW=\" + dstW + \" dstH=\" + dstH\n            + \" rasterOp=0x\" + rasterOp.toString(16));\n        this._pushGroup();\n        this._svg.image(this.state._svggroup, dstX, dstY, dstW, dstH, dib.base64ref());\n    };\n    GDIContext.prototype.rectangle = function (rect, rw, rh) {\n        _Helper__WEBPACK_IMPORTED_MODULE_0__.Helper.log(\"[gdi] rectangle: rect=\" + rect.toString() + \" with pen \" + this.state.selected.pen.toString()\n            + \" and brush \" + this.state.selected.brush.toString());\n        var bottom = this._todevY(rect.bottom);\n        var right = this._todevX(rect.right);\n        var top = this._todevY(rect.top);\n        var left = this._todevX(rect.left);\n        rw = this._todevH(rw);\n        rh = this._todevH(rh);\n        _Helper__WEBPACK_IMPORTED_MODULE_0__.Helper.log(\"[gdi] rectangle: TRANSLATED: bottom=\" + bottom + \" right=\" + right + \" top=\" + top\n            + \" left=\" + left + \" rh=\" + rh + \" rw=\" + rw);\n        this._pushGroup();\n        var opts = this._applyOpts(null, true, true, false);\n        this._svg.rect(this.state._svggroup, left, top, right - left, bottom - top, rw / 2, rh / 2, opts);\n    };\n    GDIContext.prototype.textOut = function (x, y, text) {\n        _Helper__WEBPACK_IMPORTED_MODULE_0__.Helper.log(\"[gdi] textOut: x=\" + x + \" y=\" + y + \" text=\" + text\n            + \" with font \" + this.state.selected.font.toString());\n        x = this._todevX(x);\n        y = this._todevY(y);\n        _Helper__WEBPACK_IMPORTED_MODULE_0__.Helper.log(\"[gdi] textOut: TRANSLATED: x=\" + x + \" y=\" + y);\n        this._pushGroup();\n        var opts = this._applyOpts(null, false, false, true);\n        if (this.state.selected.font.escapement !== 0) {\n            opts.transform = \"rotate(\" + [(-this.state.selected.font.escapement / 10), x, y] + \")\";\n            opts.style = \"dominant-baseline: middle; text-anchor: start;\";\n        }\n        if (this.state.bkmode === _Helper__WEBPACK_IMPORTED_MODULE_0__.Helper.GDI.MixMode.OPAQUE) {\n            if (this.state._svgtextbkfilter == null) {\n                var filterId = _Helper__WEBPACK_IMPORTED_MODULE_0__.Helper._makeUniqueId(\"f\");\n                var filter = this._svg.filter(this._getSvgDef(), filterId, 0, 0, 1, 1);\n                this._svg.filters.flood(filter, null, \"#\" + this.state.bkcolor.toHex(), 1.0);\n                this._svg.filters.composite(filter, null, null, \"SourceGraphic\");\n                this.state._svgtextbkfilter = filter;\n            }\n            opts.filter = \"url(#\" + this.state._svgtextbkfilter.id + \")\";\n        }\n        this._svg.text(this.state._svggroup, x, y, text, opts);\n    };\n    GDIContext.prototype.extTextOut = function (x, y, text, fwOpts, rect, dx) {\n        _Helper__WEBPACK_IMPORTED_MODULE_0__.Helper.log(\"[gdi] extTextOut: x=\" + x + \" y=\" + y + \" text=\" + text\n            + \" with font \" + this.state.selected.font.toString());\n        x = this._todevX(x);\n        y = this._todevY(y);\n        _Helper__WEBPACK_IMPORTED_MODULE_0__.Helper.log(\"[gdi] extTextOut: TRANSLATED: x=\" + x + \" y=\" + y);\n        this._pushGroup();\n        var opts = this._applyOpts(null, false, false, true);\n        if (this.state.selected.font.escapement !== 0) {\n            opts.transform = \"rotate(\" + [(-this.state.selected.font.escapement / 10), x, y] + \")\";\n            opts.style = \"dominant-baseline: middle; text-anchor: start;\";\n        }\n        if (this.state.bkmode === _Helper__WEBPACK_IMPORTED_MODULE_0__.Helper.GDI.MixMode.OPAQUE) {\n            if (this.state._svgtextbkfilter == null) {\n                var filterId = _Helper__WEBPACK_IMPORTED_MODULE_0__.Helper._makeUniqueId(\"f\");\n                var filter = this._svg.filter(this._getSvgDef(), filterId, 0, 0, 1, 1);\n                this._svg.filters.flood(filter, null, \"#\" + this.state.bkcolor.toHex(), 1.0);\n                this._svg.filters.composite(filter, null, null, \"SourceGraphic\");\n                this.state._svgtextbkfilter = filter;\n            }\n            opts.filter = \"url(#\" + this.state._svgtextbkfilter.id + \")\";\n        }\n        this._svg.text(this.state._svggroup, x, y, text, opts);\n    };\n    GDIContext.prototype.lineTo = function (x, y) {\n        _Helper__WEBPACK_IMPORTED_MODULE_0__.Helper.log(\"[gdi] lineTo: x=\" + x + \" y=\" + y + \" with pen \" + this.state.selected.pen.toString());\n        var toX = this._todevX(x);\n        var toY = this._todevY(y);\n        var fromX = this._todevX(this.state.x);\n        var fromY = this._todevY(this.state.y);\n        // Update position\n        this.state.x = x;\n        this.state.y = y;\n        _Helper__WEBPACK_IMPORTED_MODULE_0__.Helper.log(\"[gdi] lineTo: TRANSLATED: toX=\" + toX + \" toY=\" + toY + \" fromX=\" + fromX + \" fromY=\" + fromY);\n        this._pushGroup();\n        var opts = this._applyOpts(null, true, false, false);\n        this._svg.line(this.state._svggroup, fromX, fromY, toX, toY, opts);\n    };\n    GDIContext.prototype.moveTo = function (x, y) {\n        _Helper__WEBPACK_IMPORTED_MODULE_0__.Helper.log(\"[gdi] moveTo: x=\" + x + \" y=\" + y);\n        this.state.x = x;\n        this.state.y = y;\n    };\n    GDIContext.prototype.polygon = function (points, first) {\n        _Helper__WEBPACK_IMPORTED_MODULE_0__.Helper.log(\"[gdi] polygon: points=\" + points + \" with pen \" + this.state.selected.pen.toString()\n            + \" and brush \" + this.state.selected.brush.toString());\n        var pts = [];\n        for (var i = 0; i < points.length; i++) {\n            var point = points[i];\n            pts.push([this._todevX(point.x), this._todevY(point.y)]);\n        }\n        _Helper__WEBPACK_IMPORTED_MODULE_0__.Helper.log(\"[gdi] polygon: TRANSLATED: pts=\" + pts);\n        if (first) {\n            this._pushGroup();\n        }\n        var opts = {\n            \"fill-rule\": this.state.polyfillmode === _Helper__WEBPACK_IMPORTED_MODULE_0__.Helper.GDI.PolyFillMode.ALTERNATE ? \"evenodd\" : \"nonzero\",\n        };\n        this._applyOpts(opts, true, true, false);\n        this._svg.polygon(this.state._svggroup, pts, opts);\n    };\n    GDIContext.prototype.polyPolygon = function (polygons) {\n        _Helper__WEBPACK_IMPORTED_MODULE_0__.Helper.log(\"[gdi] polyPolygon: polygons.length=\" + polygons.length\n            + \" with pen \" + this.state.selected.pen.toString()\n            + \" and brush \" + this.state.selected.brush.toString());\n        var cnt = polygons.length;\n        for (var i = 0; i < cnt; i++) {\n            this.polygon(polygons[i], i === 0);\n        }\n    };\n    GDIContext.prototype.polyline = function (points) {\n        _Helper__WEBPACK_IMPORTED_MODULE_0__.Helper.log(\"[gdi] polyline: points=\" + points + \" with pen \" + this.state.selected.pen.toString());\n        var pts = [];\n        for (var i = 0; i < points.length; i++) {\n            var point = points[i];\n            pts.push([this._todevX(point.x), this._todevY(point.y)]);\n        }\n        _Helper__WEBPACK_IMPORTED_MODULE_0__.Helper.log(\"[gdi] polyline: TRANSLATED: pts=\" + pts);\n        this._pushGroup();\n        var opts = this._applyOpts({ fill: \"none\" }, true, false, false);\n        this._svg.polyline(this.state._svggroup, pts, opts);\n    };\n    GDIContext.prototype.ellipse = function (rect) {\n        _Helper__WEBPACK_IMPORTED_MODULE_0__.Helper.log(\"[gdi] ellipse: rect=\" + rect.toString() + \" with pen \" + this.state.selected.pen.toString()\n            + \" and brush \" + this.state.selected.brush.toString());\n        var bottom = this._todevY(rect.bottom);\n        var right = this._todevX(rect.right);\n        var top = this._todevY(rect.top);\n        var left = this._todevX(rect.left);\n        _Helper__WEBPACK_IMPORTED_MODULE_0__.Helper.log(\"[gdi] ellipse: TRANSLATED: bottom=\" + bottom + \" right=\" + right + \" top=\" + top + \" left=\" + left);\n        this._pushGroup();\n        var width2 = (right - left) / 2;\n        var height2 = (bottom - top) / 2;\n        var opts = this._applyOpts(null, true, true, false);\n        this._svg.ellipse(this.state._svggroup, left + width2, top + height2, width2, height2, opts);\n    };\n    GDIContext.prototype.excludeClipRect = function (rect) {\n        _Helper__WEBPACK_IMPORTED_MODULE_0__.Helper.log(\"[gdi] excludeClipRect: rect=\" + rect.toString());\n        this._getClipRgn().subtract(rect);\n    };\n    GDIContext.prototype.intersectClipRect = function (rect) {\n        _Helper__WEBPACK_IMPORTED_MODULE_0__.Helper.log(\"[gdi] intersectClipRect: rect=\" + rect.toString());\n        this._getClipRgn().intersect(rect);\n    };\n    GDIContext.prototype.offsetClipRgn = function (offX, offY) {\n        _Helper__WEBPACK_IMPORTED_MODULE_0__.Helper.log(\"[gdi] offsetClipRgn: offX=\" + offX + \" offY=\" + offY);\n        this._getClipRgn().offset(offX, offY);\n    };\n    GDIContext.prototype.setTextAlign = function (textAlignmentMode) {\n        _Helper__WEBPACK_IMPORTED_MODULE_0__.Helper.log(\"[gdi] setTextAlign: textAlignmentMode=0x\" + textAlignmentMode.toString(16));\n        this.state.textalign = textAlignmentMode;\n    };\n    GDIContext.prototype.setBkMode = function (bkMode) {\n        _Helper__WEBPACK_IMPORTED_MODULE_0__.Helper.log(\"[gdi] setBkMode: bkMode=0x\" + bkMode.toString(16));\n        this.state.bkmode = bkMode;\n    };\n    GDIContext.prototype.setTextColor = function (textColor) {\n        _Helper__WEBPACK_IMPORTED_MODULE_0__.Helper.log(\"[gdi] setTextColor: textColor=\" + textColor.toString());\n        this.state.textcolor = textColor;\n    };\n    GDIContext.prototype.setBkColor = function (bkColor) {\n        _Helper__WEBPACK_IMPORTED_MODULE_0__.Helper.log(\"[gdi] setBkColor: bkColor=\" + bkColor.toString());\n        this.state.bkcolor = bkColor;\n        this.state._svgtextbkfilter = null;\n    };\n    GDIContext.prototype.setPolyFillMode = function (polyFillMode) {\n        _Helper__WEBPACK_IMPORTED_MODULE_0__.Helper.log(\"[gdi] setPolyFillMode: polyFillMode=\" + polyFillMode);\n        this.state.polyfillmode = polyFillMode;\n    };\n    GDIContext.prototype.createBrush = function (brush) {\n        var idx = this._storeObject(brush);\n        _Helper__WEBPACK_IMPORTED_MODULE_0__.Helper.log(\"[gdi] createBrush: brush=\" + brush.toString() + \" with handle \" + idx);\n    };\n    GDIContext.prototype.createFont = function (font) {\n        var idx = this._storeObject(font);\n        _Helper__WEBPACK_IMPORTED_MODULE_0__.Helper.log(\"[gdi] createFont: font=\" + font.toString() + \" with handle \" + idx);\n    };\n    GDIContext.prototype.createPen = function (pen) {\n        var idx = this._storeObject(pen);\n        _Helper__WEBPACK_IMPORTED_MODULE_0__.Helper.log(\"[gdi] createPen: pen=\" + pen.toString() + \" width handle \" + idx);\n    };\n    GDIContext.prototype.createPalette = function (palette) {\n        var idx = this._storeObject(palette);\n        _Helper__WEBPACK_IMPORTED_MODULE_0__.Helper.log(\"[gdi] createPalette: palette=\" + palette.toString() + \" width handle \" + idx);\n    };\n    GDIContext.prototype.createRegion = function (region) {\n        var idx = this._storeObject(region);\n        _Helper__WEBPACK_IMPORTED_MODULE_0__.Helper.log(\"[gdi] createRegion: region=\" + region.toString() + \" width handle \" + idx);\n    };\n    GDIContext.prototype.createPatternBrush = function (patternBrush) {\n        var idx = this._storeObject(patternBrush);\n        _Helper__WEBPACK_IMPORTED_MODULE_0__.Helper.log(\"[gdi] createRegion: region=\" + patternBrush.toString() + \" width handle \" + idx);\n    };\n    GDIContext.prototype.selectObject = function (objIdx, checkType) {\n        var obj = this._getObject(objIdx);\n        if (obj != null && (checkType == null || obj.type === checkType)) {\n            this._selectObject(obj);\n            _Helper__WEBPACK_IMPORTED_MODULE_0__.Helper.log(\"[gdi] selectObject: objIdx=\" + objIdx\n                + (obj ? \" selected \" + obj.type + \": \" + obj.toString() : \"[invalid index]\"));\n        }\n        else {\n            _Helper__WEBPACK_IMPORTED_MODULE_0__.Helper.log(\"[gdi] selectObject: objIdx=\" + objIdx\n                + (obj ? \" invalid object type: \" + obj.type : \"[invalid index]\"));\n        }\n    };\n    GDIContext.prototype.deleteObject = function (objIdx) {\n        var ret = this._deleteObject(objIdx);\n        _Helper__WEBPACK_IMPORTED_MODULE_0__.Helper.log(\"[gdi] deleteObject: objIdx=\" + objIdx + (ret ? \" deleted object\" : \"[invalid index]\"));\n    };\n    GDIContext.prototype._pushGroup = function () {\n        if (this.state._svggroup == null || this.state._svgclipChanged) {\n            this.state._svgclipChanged = false;\n            this.state._svgtextbkfilter = null;\n            var settings = {\n                viewBox: [this.state.vx, this.state.vy, this.state.vw, this.state.vh].join(\" \"),\n                preserveAspectRatio: \"none\",\n            };\n            if (this.state.clip != null) {\n                _Helper__WEBPACK_IMPORTED_MODULE_0__.Helper.log(\"[gdi] new svg x=\" + this.state.vx + \" y=\" + this.state.vy\n                    + \" width=\" + this.state.vw + \" height=\" + this.state.vh + \" with clipping\");\n                settings[\"clip-path\"] = \"url(#\" + this._getSvgClipPathForRegion(this.state.clip) + \")\";\n            }\n            else {\n                _Helper__WEBPACK_IMPORTED_MODULE_0__.Helper.log(\"[gdi] new svg x=\" + this.state.vx + \" y=\" + this.state.vy\n                    + \" width=\" + this.state.vw + \" height=\" + this.state.vh + \" without clipping\");\n            }\n            this.state._svggroup = this._svg.svg(this.state._svggroup, this.state.vx, this.state.vy, this.state.vw, this.state.vh, settings);\n        }\n    };\n    GDIContext.prototype._storeObject = function (obj) {\n        var i = 0;\n        while (this.objects[i.toString()] != null && i <= 65535) {\n            i++;\n        }\n        if (i > 65535) {\n            _Helper__WEBPACK_IMPORTED_MODULE_0__.Helper.log(\"[gdi] Too many objects!\");\n            return -1;\n        }\n        this.objects[i.toString()] = obj;\n        return i;\n    };\n    GDIContext.prototype._getObject = function (objIdx) {\n        var obj = this.objects[objIdx.toString()];\n        if (obj == null) {\n            _Helper__WEBPACK_IMPORTED_MODULE_0__.Helper.log(\"[gdi] No object with handle \" + objIdx);\n        }\n        return obj;\n    };\n    GDIContext.prototype._getSvgDef = function () {\n        if (this._svgdefs == null) {\n            this._svgdefs = this._svg.defs();\n        }\n        return this._svgdefs;\n    };\n    GDIContext.prototype._getSvgClipPathForRegion = function (region) {\n        for (var existingId in this._svgClipPaths) {\n            var rgn = this._svgClipPaths[existingId];\n            if (rgn === region) {\n                return existingId;\n            }\n        }\n        var id = _Helper__WEBPACK_IMPORTED_MODULE_0__.Helper._makeUniqueId(\"c\");\n        var sclip = this._svg.clipPath(this._getSvgDef(), id, \"userSpaceOnUse\");\n        switch (region.complexity) {\n            case 1:\n                this._svg.rect(sclip, this._todevX(region.bounds.left), this._todevY(region.bounds.top), this._todevW(region.bounds.right - region.bounds.left), this._todevH(region.bounds.bottom - region.bounds.top), { \"fill\": \"black\", \"stroke-width\": 0 });\n                break;\n            case 2:\n                for (var i = 0; i < region.scans.length; i++) {\n                    var scan = region.scans[i];\n                    for (var j = 0; j < scan.scanlines.length; j++) {\n                        var scanline = scan.scanlines[j];\n                        this._svg.rect(sclip, this._todevX(scanline.left), this._todevY(scan.top), this._todevW(scanline.right - scanline.left), this._todevH(scan.bottom - scan.top), { \"fill\": \"black\", \"stroke-width\": 0 });\n                    }\n                }\n                break;\n        }\n        this._svgClipPaths[id] = region;\n        return id;\n    };\n    GDIContext.prototype._getSvgPatternForBrush = function (brush) {\n        for (var existingId in this._svgPatterns) {\n            var pat = this._svgPatterns[existingId];\n            if (pat === brush) {\n                return existingId;\n            }\n        }\n        var width;\n        var height;\n        var img;\n        switch (brush.style) {\n            case _Helper__WEBPACK_IMPORTED_MODULE_0__.Helper.GDI.BrushStyle.BS_PATTERN:\n                width = brush.pattern.getWidth();\n                height = brush.pattern.getHeight();\n                break;\n            case _Helper__WEBPACK_IMPORTED_MODULE_0__.Helper.GDI.BrushStyle.BS_DIBPATTERNPT:\n                width = brush.dibpatternpt.getWidth();\n                height = brush.dibpatternpt.getHeight();\n                img = brush.dibpatternpt.base64ref();\n                break;\n            default:\n                throw new _Helper__WEBPACK_IMPORTED_MODULE_0__.WMFJSError(\"Invalid brush style\");\n        }\n        var id = _Helper__WEBPACK_IMPORTED_MODULE_0__.Helper._makeUniqueId(\"p\");\n        var spat = this._svg.pattern(this._getSvgDef(), id, 0, 0, width, height, { patternUnits: \"userSpaceOnUse\" });\n        this._svg.image(spat, 0, 0, width, height, img);\n        this._svgPatterns[id] = brush;\n        return id;\n    };\n    GDIContext.prototype._selectObject = function (obj) {\n        this.state.selected[obj.type] = obj;\n        if (obj.type === \"region\") {\n            this.state._svgclipChanged = true;\n        }\n    };\n    GDIContext.prototype._deleteObject = function (objIdx) {\n        var obj = this.objects[objIdx.toString()];\n        if (obj != null) {\n            for (var i = 0; i < this.statestack.length; i++) {\n                var state = this.statestack[i];\n                if (state.selected[obj.type] === obj) {\n                    state.selected[obj.type] = this.defObjects[obj.type].clone();\n                }\n            }\n            delete this.objects[objIdx.toString()];\n            return true;\n        }\n        _Helper__WEBPACK_IMPORTED_MODULE_0__.Helper.log(\"[gdi] Cannot delete object with invalid handle \" + objIdx);\n        return false;\n    };\n    GDIContext.prototype._getClipRgn = function () {\n        if (this.state.clip != null) {\n            if (!this.state.ownclip) {\n                this.state.clip = this.state.clip.clone();\n            }\n        }\n        else {\n            if (this.state.selected.region != null) {\n                this.state.clip = this.state.selected.region.clone();\n            }\n            else {\n                this.state.clip = (0,_Region__WEBPACK_IMPORTED_MODULE_2__.CreateSimpleRegion)(this.state.wx, this.state.wy, this.state.wx + this.state.ww, this.state.wy + this.state.wh);\n            }\n        }\n        this.state.ownclip = true;\n        return this.state.clip;\n    };\n    GDIContext.prototype._todevX = function (val) {\n        // http://wvware.sourceforge.net/caolan/mapmode.html\n        // logical -> device\n        return Math.floor((val - this.state.wx) * (this.state.vw / this.state.ww)) + this.state.vx;\n    };\n    GDIContext.prototype._todevY = function (val) {\n        // http://wvware.sourceforge.net/caolan/mapmode.html\n        // logical -> device\n        return Math.floor((val - this.state.wy) * (this.state.vh / this.state.wh)) + this.state.vy;\n    };\n    GDIContext.prototype._todevW = function (val) {\n        // http://wvware.sourceforge.net/caolan/mapmode.html\n        // logical -> device\n        return Math.floor(val * (this.state.vw / this.state.ww)) + this.state.vx;\n    };\n    GDIContext.prototype._todevH = function (val) {\n        // http://wvware.sourceforge.net/caolan/mapmode.html\n        // logical -> device\n        return Math.floor(val * (this.state.vh / this.state.wh)) + this.state.vy;\n    };\n    GDIContext.prototype._tologicalX = function (val) {\n        // http://wvware.sourceforge.net/caolan/mapmode.html\n        // logical -> device\n        return Math.floor((val - this.state.vx) / (this.state.vw / this.state.ww)) + this.state.wx;\n    };\n    GDIContext.prototype._tologicalY = function (val) {\n        // http://wvware.sourceforge.net/caolan/mapmode.html\n        // logical -> device\n        return Math.floor((val - this.state.vy) / (this.state.vh / this.state.wh)) + this.state.wy;\n    };\n    GDIContext.prototype._tologicalW = function (val) {\n        // http://wvware.sourceforge.net/caolan/mapmode.html\n        // logical -> device\n        return Math.floor(val / (this.state.vw / this.state.ww)) + this.state.wx;\n    };\n    GDIContext.prototype._tologicalH = function (val) {\n        // http://wvware.sourceforge.net/caolan/mapmode.html\n        // logical -> device\n        return Math.floor(val / (this.state.vh / this.state.wh)) + this.state.wy;\n    };\n    GDIContext.prototype._applyOpts = function (opts, usePen, useBrush, useFont) {\n        if (opts == null) {\n            opts = {};\n        }\n        if (usePen) {\n            var pen = this.state.selected.pen;\n            if (pen.style !== _Helper__WEBPACK_IMPORTED_MODULE_0__.Helper.GDI.PenStyle.PS_NULL) {\n                opts.stroke = \"#\" + pen.color.toHex(), // TODO: pen style\n                    opts[\"stroke-width\"] = this._todevW(pen.width.x); // TODO: is .y ever used?\n                var dotWidth = void 0;\n                if ((pen.linecap & _Helper__WEBPACK_IMPORTED_MODULE_0__.Helper.GDI.PenStyle.PS_ENDCAP_SQUARE) !== 0) {\n                    opts[\"stroke-linecap\"] = \"square\";\n                    dotWidth = 1;\n                }\n                else if ((pen.linecap & _Helper__WEBPACK_IMPORTED_MODULE_0__.Helper.GDI.PenStyle.PS_ENDCAP_FLAT) !== 0) {\n                    opts[\"stroke-linecap\"] = \"butt\";\n                    dotWidth = opts[\"stroke-width\"];\n                }\n                else {\n                    opts[\"stroke-linecap\"] = \"round\";\n                    dotWidth = 1;\n                }\n                if ((pen.join & _Helper__WEBPACK_IMPORTED_MODULE_0__.Helper.GDI.PenStyle.PS_JOIN_BEVEL) !== 0) {\n                    opts[\"stroke-linejoin\"] = \"bevel\";\n                }\n                else if ((pen.join & _Helper__WEBPACK_IMPORTED_MODULE_0__.Helper.GDI.PenStyle.PS_JOIN_MITER) !== 0) {\n                    opts[\"stroke-linejoin\"] = \"miter\";\n                }\n                else {\n                    opts[\"stroke-linejoin\"] = \"round\";\n                }\n                var dashWidth = opts[\"stroke-width\"] * 4;\n                var dotSpacing = opts[\"stroke-width\"] * 2;\n                switch (pen.style) {\n                    case _Helper__WEBPACK_IMPORTED_MODULE_0__.Helper.GDI.PenStyle.PS_DASH:\n                        opts[\"stroke-dasharray\"] = [dashWidth, dotSpacing].toString();\n                        break;\n                    case _Helper__WEBPACK_IMPORTED_MODULE_0__.Helper.GDI.PenStyle.PS_DOT:\n                        opts[\"stroke-dasharray\"] = [dotWidth, dotSpacing].toString();\n                        break;\n                    case _Helper__WEBPACK_IMPORTED_MODULE_0__.Helper.GDI.PenStyle.PS_DASHDOT:\n                        opts[\"stroke-dasharray\"] = [dashWidth, dotSpacing, dotWidth, dotSpacing].toString();\n                        break;\n                    case _Helper__WEBPACK_IMPORTED_MODULE_0__.Helper.GDI.PenStyle.PS_DASHDOTDOT:\n                        opts[\"stroke-dasharray\"]\n                            = [dashWidth, dotSpacing, dotWidth, dotSpacing, dotWidth, dotSpacing].toString();\n                        break;\n                }\n            }\n        }\n        if (useBrush) {\n            var brush = this.state.selected.brush;\n            switch (brush.style) {\n                case _Helper__WEBPACK_IMPORTED_MODULE_0__.Helper.GDI.BrushStyle.BS_SOLID:\n                    opts.fill = \"#\" + brush.color.toHex();\n                    break;\n                case _Helper__WEBPACK_IMPORTED_MODULE_0__.Helper.GDI.BrushStyle.BS_PATTERN:\n                case _Helper__WEBPACK_IMPORTED_MODULE_0__.Helper.GDI.BrushStyle.BS_DIBPATTERNPT:\n                    opts.fill = \"url(#\" + this._getSvgPatternForBrush(brush) + \")\";\n                    break;\n                case _Helper__WEBPACK_IMPORTED_MODULE_0__.Helper.GDI.BrushStyle.BS_NULL:\n                    opts.fill = \"none\";\n                    break;\n                default:\n                    _Helper__WEBPACK_IMPORTED_MODULE_0__.Helper.log(\"[gdi] unsupported brush style: \" + brush.style);\n                    opts.fill = \"none\";\n                    break;\n            }\n        }\n        if (useFont) {\n            var font = this.state.selected.font;\n            opts[\"font-family\"] = font.facename;\n            opts[\"font-size\"] = this._todevH(Math.abs(font.height));\n            opts.fill = \"#\" + this.state.textcolor.toHex();\n        }\n        return opts;\n    };\n    return GDIContext;\n}());\n\n\n\n/***/ }),\n\n/***/ \"./src/wmfjs/Helper.ts\":\n/*!*****************************!*\\\n  !*** ./src/wmfjs/Helper.ts ***!\n  \\*****************************/\n/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {\n\n__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"WMFJSError\": () => (/* binding */ WMFJSError),\n/* harmony export */   \"loggingEnabled\": () => (/* binding */ loggingEnabled),\n/* harmony export */   \"Helper\": () => (/* binding */ Helper)\n/* harmony export */ });\n/*\n\nThe MIT License (MIT)\n\nCopyright (c) 2015 Thomas Bluemel\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n\n*/\nvar __extends = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        if (typeof b !== \"function\" && b !== null)\n            throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar WMFJSError = /** @class */ (function (_super) {\n    __extends(WMFJSError, _super);\n    function WMFJSError(message) {\n        var _newTarget = this.constructor;\n        var _this = _super.call(this, message) || this;\n        Object.setPrototypeOf(_this, _newTarget.prototype); // restore prototype chain\n        return _this;\n    }\n    return WMFJSError;\n}(Error));\n\nvar isLoggingEnabled = true;\nfunction loggingEnabled(enabled) {\n    isLoggingEnabled = enabled;\n}\nvar Helper = /** @class */ (function () {\n    function Helper() {\n    }\n    Helper.log = function (message) {\n        if (isLoggingEnabled) {\n            console.log(message);\n        }\n    };\n    Helper._makeUniqueId = function (prefix) {\n        return \"wmfjs_\" + prefix + (this._uniqueId++);\n    };\n    Helper._writeUint32Val = function (uint8arr, pos, val) {\n        uint8arr[pos++] = val & 0xff;\n        uint8arr[pos++] = (val >>> 8) & 0xff;\n        uint8arr[pos++] = (val >>> 16) & 0xff;\n        uint8arr[pos++] = (val >>> 24) & 0xff;\n    };\n    Helper._blobToBinary = function (blob) {\n        var ret = \"\";\n        var len = blob.length;\n        for (var i = 0; i < len; i++) {\n            ret += String.fromCharCode(blob[i]);\n        }\n        return ret;\n    };\n    Helper.GDI = {\n        METAHEADER_SIZE: 18,\n        BITMAPINFOHEADER_SIZE: 40,\n        BITMAPCOREHEADER_SIZE: 12,\n        MetafileType: {\n            MEMORYMETAFILE: 1,\n            DISKMETAFILE: 2,\n        },\n        MetafileVersion: {\n            METAVERSION100: 0x100,\n            METAVERSION300: 0x300,\n        },\n        RecordType: {\n            META_EOF: 0x0000,\n            META_REALIZEPALETTE: 0x0035,\n            META_SETPALENTRIES: 0x0037,\n            META_SETBKMODE: 0x0102,\n            META_SETMAPMODE: 0x0103,\n            META_SETROP2: 0x0104,\n            META_SETRELABS: 0x0105,\n            META_SETPOLYFILLMODE: 0x0106,\n            META_SETSTRETCHBLTMODE: 0x0107,\n            META_SETTEXTCHAREXTRA: 0x0108,\n            META_RESTOREDC: 0x0127,\n            META_RESIZEPALETTE: 0x0139,\n            META_DIBCREATEPATTERNBRUSH: 0x0142,\n            META_SETLAYOUT: 0x0149,\n            META_SETBKCOLOR: 0x0201,\n            META_SETTEXTCOLOR: 0x0209,\n            META_OFFSETVIEWPORTORG: 0x0211,\n            META_LINETO: 0x0213,\n            META_MOVETO: 0x0214,\n            META_OFFSETCLIPRGN: 0x0220,\n            META_FILLREGION: 0x0228,\n            META_SETMAPPERFLAGS: 0x0231,\n            META_SELECTPALETTE: 0x0234,\n            META_POLYGON: 0x0324,\n            META_POLYLINE: 0x0325,\n            META_SETTEXTJUSTIFICATION: 0x020a,\n            META_SETWINDOWORG: 0x020b,\n            META_SETWINDOWEXT: 0x020c,\n            META_SETVIEWPORTORG: 0x020d,\n            META_SETVIEWPORTEXT: 0x020e,\n            META_OFFSETWINDOWORG: 0x020f,\n            META_SCALEWINDOWEXT: 0x0410,\n            META_SCALEVIEWPORTEXT: 0x0412,\n            META_EXCLUDECLIPRECT: 0x0415,\n            META_INTERSECTCLIPRECT: 0x0416,\n            META_ELLIPSE: 0x0418,\n            META_FLOODFILL: 0x0419,\n            META_FRAMEREGION: 0x0429,\n            META_ANIMATEPALETTE: 0x0436,\n            META_TEXTOUT: 0x0521,\n            META_POLYPOLYGON: 0x0538,\n            META_EXTFLOODFILL: 0x0548,\n            META_RECTANGLE: 0x041b,\n            META_SETPIXEL: 0x041f,\n            META_ROUNDRECT: 0x061c,\n            META_PATBLT: 0x061d,\n            META_SAVEDC: 0x001e,\n            META_PIE: 0x081a,\n            META_STRETCHBLT: 0x0b23,\n            META_ESCAPE: 0x0626,\n            META_INVERTREGION: 0x012a,\n            META_PAINTREGION: 0x012b,\n            META_SELECTCLIPREGION: 0x012c,\n            META_SELECTOBJECT: 0x012d,\n            META_SETTEXTALIGN: 0x012e,\n            META_ARC: 0x0817,\n            META_CHORD: 0x0830,\n            META_BITBLT: 0x0922,\n            META_EXTTEXTOUT: 0x0a32,\n            META_SETDIBTODEV: 0x0d33,\n            META_DIBBITBLT: 0x0940,\n            META_DIBSTRETCHBLT: 0x0b41,\n            META_STRETCHDIB: 0x0f43,\n            META_DELETEOBJECT: 0x01f0,\n            META_CREATEPALETTE: 0x00f7,\n            META_CREATEPATTERNBRUSH: 0x01f9,\n            META_CREATEPENINDIRECT: 0x02fa,\n            META_CREATEFONTINDIRECT: 0x02fb,\n            META_CREATEBRUSHINDIRECT: 0x02fc,\n            META_CREATEREGION: 0x06ff,\n        },\n        MetafileEscapes: {\n            NEWFRAME: 0x0001,\n            ABORTDOC: 0x0002,\n            NEXTBAND: 0x0003,\n            SETCOLORTABLE: 0x0004,\n            GETCOLORTABLE: 0x0005,\n            FLUSHOUT: 0x0006,\n            DRAFTMODE: 0x0007,\n            QUERYESCSUPPORT: 0x0008,\n            SETABORTPROC: 0x0009,\n            STARTDOC: 0x000a,\n            ENDDOC: 0x000b,\n            GETPHYSPAGESIZE: 0x000c,\n            GETPRINTINGOFFSET: 0x000d,\n            GETSCALINGFACTOR: 0x000e,\n            META_ESCAPE_ENHANCED_METAFILE: 0x000f,\n            SETPENWIDTH: 0x0010,\n            SETCOPYCOUNT: 0x0011,\n            SETPAPERSOURCE: 0x0012,\n            PASSTHROUGH: 0x0013,\n            GETTECHNOLOGY: 0x0014,\n            SETLINECAP: 0x0015,\n            SETLINEJOIN: 0x0016,\n            SETMITERLIMIT: 0x0017,\n            BANDINFO: 0x0018,\n            DRAWPATTERNRECT: 0x0019,\n            GETVECTORPENSIZE: 0x001a,\n            GETVECTORBRUSHSIZE: 0x001b,\n            ENABLEDUPLEX: 0x001c,\n            GETSETPAPERBINS: 0x001d,\n            GETSETPRINTORIENT: 0x001e,\n            ENUMPAPERBINS: 0x001f,\n            SETDIBSCALING: 0x0020,\n            EPSPRINTING: 0x0021,\n            ENUMPAPERMETRICS: 0x0022,\n            GETSETPAPERMETRICS: 0x0023,\n            POSTSCRIPT_DATA: 0x0025,\n            POSTSCRIPT_IGNORE: 0x0026,\n            GETDEVICEUNITS: 0x002a,\n            GETEXTENDEDTEXTMETRICS: 0x0100,\n            GETPAIRKERNTABLE: 0x0102,\n            EXTTEXTOUT: 0x0200,\n            GETFACENAME: 0x0201,\n            DOWNLOADFACE: 0x0202,\n            METAFILE_DRIVER: 0x0801,\n            QUERYDIBSUPPORT: 0x0c01,\n            BEGIN_PATH: 0x1000,\n            CLIP_TO_PATH: 0x1001,\n            END_PATH: 0x1002,\n            OPEN_CHANNEL: 0x100e,\n            DOWNLOADHEADER: 0x100f,\n            CLOSE_CHANNEL: 0x1010,\n            POSTSCRIPT_PASSTHROUGH: 0x1013,\n            ENCAPSULATED_POSTSCRIPT: 0x1014,\n            POSTSCRIPT_IDENTIFY: 0x1015,\n            POSTSCRIPT_INJECTION: 0x1016,\n            CHECKJPEGFORMAT: 0x1017,\n            CHECKPNGFORMAT: 0x1018,\n            GET_PS_FEATURESETTING: 0x1019,\n            MXDC_ESCAPE: 0x101a,\n            SPCLPASSTHROUGH2: 0x11d8,\n        },\n        MapMode: {\n            MM_TEXT: 1,\n            MM_LOMETRIC: 2,\n            MM_HIMETRIC: 3,\n            MM_LOENGLISH: 4,\n            MM_HIENGLISH: 5,\n            MM_TWIPS: 6,\n            MM_ISOTROPIC: 7,\n            MM_ANISOTROPIC: 8,\n        },\n        StretchMode: {\n            BLACKONWHITE: 1,\n            WHITEONBLACK: 2,\n            COLORONCOLOR: 3,\n            HALFTONE: 4,\n        },\n        TextAlignmentMode: {\n            TA_UPDATECP: 1,\n            TA_RIGHT: 2,\n            TA_CENTER: 6,\n            TA_BOTTOM: 8,\n            TA_BASELINE: 24,\n            TA_RTLREADING: 256,\n        },\n        MixMode: {\n            TRANSPARENT: 1,\n            OPAQUE: 2,\n        },\n        VerticalTextAlignmentMode: {\n            VTA_BOTTOM: 2,\n            VTA_CENTER: 6,\n            VTA_LEFT: 8,\n            VTA_BASELINE: 24,\n        },\n        BrushStyle: {\n            BS_SOLID: 0,\n            BS_NULL: 1,\n            BS_HATCHED: 2,\n            BS_PATTERN: 3,\n            BS_INDEXED: 4,\n            BS_DIBPATTERN: 5,\n            BS_DIBPATTERNPT: 6,\n            BS_PATTERN8X8: 7,\n            BS_DIBPATTERN8X8: 8,\n            BS_MONOPATTERN: 9,\n        },\n        PenStyle: {\n            PS_SOLID: 0,\n            PS_DASH: 1,\n            PS_DOT: 2,\n            PS_DASHDOT: 3,\n            PS_DASHDOTDOT: 4,\n            PS_NULL: 5,\n            PS_INSIDEFRAME: 6,\n            PS_USERSTYLE: 7,\n            PS_ALTERNATE: 8,\n            PS_ENDCAP_SQUARE: 256,\n            PS_ENDCAP_FLAT: 512,\n            PS_JOIN_BEVEL: 4096,\n            PS_JOIN_MITER: 8192,\n        },\n        PolyFillMode: {\n            ALTERNATE: 1,\n            WINDING: 2,\n        },\n        ColorUsage: {\n            DIB_RGB_COLORS: 0,\n            DIB_PAL_COLORS: 1,\n            DIB_PAL_INDICES: 2,\n        },\n        PaletteEntryFlag: {\n            PC_RESERVED: 1,\n            PC_EXPLICIT: 2,\n            PC_NOCOLLAPSE: 4,\n        },\n        BitmapCompression: {\n            BI_RGB: 0,\n            BI_RLE8: 1,\n            BI_RLE4: 2,\n            BI_BITFIELDS: 3,\n            BI_JPEG: 4,\n            BI_PNG: 5,\n        },\n    };\n    Helper._uniqueId = 0;\n    return Helper;\n}());\n\n\n\n/***/ }),\n\n/***/ \"./src/wmfjs/Primitives.ts\":\n/*!*********************************!*\\\n  !*** ./src/wmfjs/Primitives.ts ***!\n  \\*********************************/\n/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {\n\n__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"PointS\": () => (/* binding */ PointS),\n/* harmony export */   \"Rect\": () => (/* binding */ Rect),\n/* harmony export */   \"Obj\": () => (/* binding */ Obj)\n/* harmony export */ });\n/* harmony import */ var _Helper__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./Helper */ \"./src/wmfjs/Helper.ts\");\n/*\n\nThe MIT License (MIT)\n\nCopyright (c) 2015 Thomas Bluemel\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n\n*/\n\nvar PointS = /** @class */ (function () {\n    function PointS(reader, x, y) {\n        if (reader != null) {\n            this.x = reader.readInt16();\n            this.y = reader.readInt16();\n        }\n        else {\n            this.x = x;\n            this.y = y;\n        }\n    }\n    PointS.prototype.clone = function () {\n        return new PointS(null, this.x, this.y);\n    };\n    PointS.prototype.toString = function () {\n        return \"{x: \" + this.x + \", y: \" + this.y + \"}\";\n    };\n    return PointS;\n}());\n\nvar Rect = /** @class */ (function () {\n    function Rect(reader, left, top, right, bottom) {\n        if (reader != null) {\n            this.bottom = reader.readInt16();\n            this.right = reader.readInt16();\n            this.top = reader.readInt16();\n            this.left = reader.readInt16();\n        }\n        else {\n            this.bottom = bottom;\n            this.right = right;\n            this.top = top;\n            this.left = left;\n        }\n    }\n    Rect.prototype.clone = function () {\n        return new Rect(null, this.left, this.top, this.right, this.bottom);\n    };\n    Rect.prototype.toString = function () {\n        return \"{left: \" + this.left + \", top: \" + this.top + \", right: \" + this.right\n            + \", bottom: \" + this.bottom + \"}\";\n    };\n    Rect.prototype.empty = function () {\n        return this.left >= this.right || this.top >= this.bottom;\n    };\n    Rect.prototype.intersect = function (rect) {\n        if (this.empty() || rect.empty()) {\n            return null;\n        }\n        if (this.left >= rect.right || this.top >= rect.bottom ||\n            this.right <= rect.left || this.bottom <= rect.top) {\n            return null;\n        }\n        return new Rect(null, Math.max(this.left, rect.left), Math.max(this.top, rect.top), Math.min(this.right, rect.right), Math.min(this.bottom, rect.bottom));\n    };\n    return Rect;\n}());\n\nvar Obj = /** @class */ (function () {\n    function Obj(type) {\n        this.type = type;\n    }\n    Obj.prototype.clone = function () {\n        throw new _Helper__WEBPACK_IMPORTED_MODULE_0__.WMFJSError(\"clone not implemented\");\n    };\n    Obj.prototype.toString = function () {\n        throw new _Helper__WEBPACK_IMPORTED_MODULE_0__.WMFJSError(\"toString not implemented\");\n    };\n    return Obj;\n}());\n\n\n\n/***/ }),\n\n/***/ \"./src/wmfjs/Region.ts\":\n/*!*****************************!*\\\n  !*** ./src/wmfjs/Region.ts ***!\n  \\*****************************/\n/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {\n\n__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"Region\": () => (/* binding */ Region),\n/* harmony export */   \"CreateSimpleRegion\": () => (/* binding */ CreateSimpleRegion),\n/* harmony export */   \"Scan\": () => (/* binding */ Scan)\n/* harmony export */ });\n/* harmony import */ var _Helper__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./Helper */ \"./src/wmfjs/Helper.ts\");\n/* harmony import */ var _Primitives__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./Primitives */ \"./src/wmfjs/Primitives.ts\");\n/*\n\nThe MIT License (MIT)\n\nCopyright (c) 2015 Thomas Bluemel\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n\n*/\nvar __extends = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        if (typeof b !== \"function\" && b !== null)\n            throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\n\n\nvar Region = /** @class */ (function (_super) {\n    __extends(Region, _super);\n    function Region(reader, copy) {\n        var _this = _super.call(this, \"region\") || this;\n        if (reader != null) {\n            reader.skip(2);\n            if (reader.readInt16() !== 6) {\n                throw new _Helper__WEBPACK_IMPORTED_MODULE_0__.WMFJSError(\"Invalid region identifier\");\n            }\n            reader.skip(2);\n            var rgnSize = reader.readInt16();\n            var scanCnt = reader.readInt16();\n            reader.skip(2);\n            // note, Rect in reverse, can't use Rect(reader) directly\n            var left = reader.readInt16();\n            var top_1 = reader.readInt16();\n            var right = reader.readInt16();\n            var bottom = reader.readInt16();\n            _this.bounds = new _Primitives__WEBPACK_IMPORTED_MODULE_1__.Rect(null, left, top_1, right, bottom);\n            _this.scans = [];\n            for (var i = 0; i < scanCnt; i++) {\n                _this.scans.push(new Scan(reader));\n            }\n            _this._updateComplexity();\n        }\n        else if (copy != null) {\n            _this.bounds = copy.bounds != null ? copy.bounds.clone() : null;\n            if (copy.scans != null) {\n                _this.scans = [];\n                for (var i = 0; i < copy.scans.length; i++) {\n                    _this.scans.push(copy.scans[i].clone());\n                }\n            }\n            else {\n                _this.scans = null;\n            }\n            _this.complexity = copy.complexity;\n        }\n        else {\n            _this.bounds = null;\n            _this.scans = null;\n            _this.complexity = 0;\n        }\n        return _this;\n    }\n    Region.prototype.clone = function () {\n        return new Region(null, this);\n    };\n    Region.prototype.toString = function () {\n        var _complexity = [\"null\", \"simple\", \"complex\"];\n        return \"{complexity: \" + _complexity[this.complexity]\n            + \" bounds: \" + (this.bounds != null ? this.bounds.toString() : \"[none]\")\n            + \" #scans: \" + (this.scans != null ? this.scans.length : \"[none]\") + \"}\";\n    };\n    Region.prototype._updateComplexity = function () {\n        if (this.bounds == null) {\n            this.complexity = 0;\n            this.scans = null;\n        }\n        else if (this.bounds.empty()) {\n            this.complexity = 0;\n            this.scans = null;\n            this.bounds = null;\n        }\n        else if (this.scans == null) {\n            this.complexity = 1;\n        }\n        else {\n            this.complexity = 2;\n            if (this.scans.length === 1) {\n                var scan = this.scans[0];\n                if (scan.top === this.bounds.top && scan.bottom === this.bounds.bottom && scan.scanlines.length === 1) {\n                    var scanline = scan.scanlines[0];\n                    if (scanline.left === this.bounds.left && scanline.right === this.bounds.right) {\n                        this.scans = null;\n                        this.complexity = 1;\n                    }\n                }\n            }\n        }\n    };\n    Region.prototype.subtract = function (rect) {\n        _Helper__WEBPACK_IMPORTED_MODULE_0__.Helper.log(\"[wmf] Region \" + this.toString() + \" subtract \" + rect.toString());\n        if (this.bounds != null) {\n            var isect = this.bounds.intersect(rect);\n            if (isect != null) { // Only need to do anything if there is any chance of an overlap\n                if (this.scans == null) {\n                    // We currently have a simple region and there is some kind of an overlap.\n                    // We need to create scanlines now.  Simplest method is to fake one scan line\n                    // that equals the simple region and re-use the same logic as for complex regions\n                    this.scans = [];\n                    this.scans.push(new Scan(null, null, this.bounds.top, this.bounds.bottom, [{ left: this.bounds.left, right: this.bounds.right }]));\n                    this.complexity = 2;\n                }\n                // We (now) have a complex region.  First we skip any scans that are entirely above rect.top\n                // The first scan that falls partially below rect.top needs to be split into two scans.\n                var si = 0;\n                while (si < this.scans.length) {\n                    var scan = this.scans[si];\n                    if (scan.bottom >= rect.top) {\n                        // We need to clone this scan into two so that we can subtract from the second one\n                        var cloned = scan.clone();\n                        scan.bottom = rect.top - 1;\n                        cloned.top = rect.top;\n                        if (scan.top >= scan.bottom) {\n                            this.scans[si] = cloned;\n                        }\n                        else {\n                            _Helper__WEBPACK_IMPORTED_MODULE_0__.Helper.log(\"[wmf] Region split top scan \" + si + \" for substraction\");\n                            this.scans.splice(++si, 0, cloned);\n                        }\n                        break;\n                    }\n                    si++;\n                }\n                // Now find the first one that falls at least partially below rect.bottom, which needs to be\n                // split if it is only partially below rect.bottom\n                var first = si;\n                while (si < this.scans.length) {\n                    var scan = this.scans[si];\n                    if (scan.top > rect.bottom) {\n                        break;\n                    }\n                    if (scan.bottom > rect.bottom) {\n                        // We need to clone this scan into two so that we can subtract from the first one\n                        var cloned = scan.clone();\n                        scan.bottom = rect.bottom;\n                        cloned.top = rect.bottom + 1;\n                        if (scan.top >= scan.bottom) {\n                            this.scans[si] = cloned;\n                        }\n                        else {\n                            _Helper__WEBPACK_IMPORTED_MODULE_0__.Helper.log(\"[wmf] Region split bottom scan \" + si + \" for substraction\");\n                            this.scans.splice(++si, 0, cloned);\n                        }\n                        break;\n                    }\n                    si++;\n                }\n                // Now perform a subtraction on each scan in between rect.top and rect.bottom.  Because we\n                // cloned scans that partially overlapped rect.top and rect.bottom, we don't have to\n                // account for this anymore.\n                if (first < this.scans.length) {\n                    var last = si;\n                    si = first;\n                    while (si < last) {\n                        var scan = this.scans[si];\n                        if (!scan.subtract(rect.left, rect.right)) {\n                            _Helper__WEBPACK_IMPORTED_MODULE_0__.Helper.log(\"[wmf] Region remove now empty scan \" + si + \" due to subtraction\");\n                            this.scans.splice(si, 1);\n                            last--;\n                            continue;\n                        }\n                        si++;\n                    }\n                }\n                // Update bounds\n                if (this.scans != null) {\n                    var left = void 0;\n                    var top_2;\n                    var right = void 0;\n                    var bottom = void 0;\n                    var len = this.scans.length;\n                    for (var i = 0; i < len; i++) {\n                        var scan = this.scans[i];\n                        if (i === 0) {\n                            top_2 = scan.top;\n                        }\n                        if (i === len - 1) {\n                            bottom = scan.bottom;\n                        }\n                        var slen = scan.scanlines.length;\n                        if (slen > 0) {\n                            var scanline = scan.scanlines[0];\n                            if (left == null || scanline.left < left) {\n                                left = scanline.left;\n                            }\n                            scanline = scan.scanlines[slen - 1];\n                            if (right == null || scanline.right > right) {\n                                right = scanline.right;\n                            }\n                        }\n                    }\n                    if (left != null && top_2 != null && right != null && bottom != null) {\n                        this.bounds = new _Primitives__WEBPACK_IMPORTED_MODULE_1__.Rect(null, left, top_2, right, bottom);\n                        this._updateComplexity();\n                    }\n                    else {\n                        // This has to be a null region now\n                        this.bounds = null;\n                        this.scans = null;\n                        this.complexity = 0;\n                    }\n                }\n                else {\n                    this._updateComplexity();\n                }\n            }\n        }\n        _Helper__WEBPACK_IMPORTED_MODULE_0__.Helper.log(\"[wmf] Region subtraction -> \" + this.toString());\n    };\n    Region.prototype.intersect = function (rect) {\n        _Helper__WEBPACK_IMPORTED_MODULE_0__.Helper.log(\"[wmf] Region \" + this.toString() + \" intersect with \" + rect.toString());\n        if (this.bounds != null) {\n            this.bounds = this.bounds.intersect(rect);\n            if (this.bounds != null) {\n                if (this.scans != null) {\n                    var si = 0;\n                    // Remove any scans that are entirely above the new bounds.top\n                    while (si < this.scans.length) {\n                        var scan = this.scans[si];\n                        if (scan.bottom < this.bounds.top) {\n                            si++;\n                        }\n                        else {\n                            break;\n                        }\n                    }\n                    if (si > 0) {\n                        _Helper__WEBPACK_IMPORTED_MODULE_0__.Helper.log(\"[wmf] Region remove \" + si + \" scans from top\");\n                        this.scans.splice(0, si);\n                        // Adjust the first scan's top to match the new bounds.top\n                        if (this.scans.length > 0) {\n                            this.scans[0].top = this.bounds.top;\n                        }\n                    }\n                    // Get rid of anything that falls outside the new bounds.left/bounds.right\n                    si = 0;\n                    while (si < this.scans.length) {\n                        var scan = this.scans[si];\n                        if (scan.top > this.bounds.bottom) {\n                            // Remove this and all remaining scans that fall entirely below the new bounds.bottom\n                            _Helper__WEBPACK_IMPORTED_MODULE_0__.Helper.log(\"[wmf] Region remove \" + (this.scans.length - si) + \" scans from bottom\");\n                            this.scans.splice(si, this.scans.length - si);\n                            break;\n                        }\n                        if (!scan.intersect(this.bounds.left, this.bounds.right)) {\n                            // Remove now empty scan\n                            _Helper__WEBPACK_IMPORTED_MODULE_0__.Helper.log(\"[wmf] Region remove now empty scan \" + si + \" due to intersection\");\n                            this.scans.splice(si, 1);\n                            continue;\n                        }\n                        si++;\n                    }\n                    // If there are any scans left, adjust the last one's bottom to the new bounds.bottom\n                    if (this.scans.length > 0) {\n                        this.scans[this.scans.length - 1].bottom = this.bounds.bottom;\n                    }\n                    this._updateComplexity();\n                }\n            }\n            else {\n                this.scans = null;\n                this.complexity = 0;\n            }\n        }\n        _Helper__WEBPACK_IMPORTED_MODULE_0__.Helper.log(\"[wmf] Region intersection -> \" + this.toString());\n    };\n    Region.prototype.offset = function (offX, offY) {\n        if (this.bounds != null) {\n            this.bounds.left += offX;\n            this.bounds.top += offY;\n            this.bounds.right += offX;\n            this.bounds.bottom += offY;\n        }\n        if (this.scans != null) {\n            var slen = this.scans.length;\n            for (var si = 0; si < slen; si++) {\n                var scan = this.scans[si];\n                scan.top += offY;\n                scan.bottom += offY;\n                var len = scan.scanlines.length;\n                for (var i = 0; i < len; i++) {\n                    var scanline = scan.scanlines[i];\n                    scanline.left += offX;\n                    scanline.right += offX;\n                }\n            }\n        }\n    };\n    return Region;\n}(_Primitives__WEBPACK_IMPORTED_MODULE_1__.Obj));\n\nfunction CreateSimpleRegion(left, top, right, bottom) {\n    var rgn = new Region(null, null);\n    rgn.bounds = new _Primitives__WEBPACK_IMPORTED_MODULE_1__.Rect(null, left, top, right, bottom);\n    rgn._updateComplexity();\n    return rgn;\n}\nvar Scan = /** @class */ (function () {\n    function Scan(reader, copy, top, bottom, scanlines) {\n        if (reader != null) {\n            var cnt = reader.readUint16();\n            this.top = reader.readUint16();\n            this.bottom = reader.readUint16();\n            this.scanlines = [];\n            for (var i = 0; i < cnt; i++) {\n                var left = reader.readUint16();\n                var right = reader.readUint16();\n                this.scanlines.push({ left: left, right: right });\n            }\n            reader.skip(2);\n        }\n        else if (copy != null) {\n            this.top = copy.top;\n            this.bottom = copy.bottom;\n            this.scanlines = [];\n            for (var i = 0; i < copy.scanlines.length; i++) {\n                var scanline = copy.scanlines[i];\n                this.scanlines.push({ left: scanline.left, right: scanline.right });\n            }\n        }\n        else {\n            this.top = top;\n            this.bottom = bottom;\n            this.scanlines = scanlines;\n        }\n    }\n    Scan.prototype.clone = function () {\n        return new Scan(null, this);\n    };\n    Scan.prototype.subtract = function (left, right) {\n        var i;\n        // Keep everything on the left side\n        i = 0;\n        while (i < this.scanlines.length) {\n            var scanline = this.scanlines[i];\n            if (scanline.left <= left) {\n                if (scanline.right >= left) {\n                    scanline.right = left - 1;\n                    if (scanline.left >= scanline.right) {\n                        this.scanlines.splice(i, 1);\n                        continue;\n                    }\n                }\n                i++;\n            }\n            else {\n                break;\n            }\n        }\n        // Find the first one that may exceed to the right side\n        var first = i;\n        var cnt = 0;\n        while (i < this.scanlines.length) {\n            var scanline = this.scanlines[i];\n            if (scanline.right > right) {\n                scanline.left = right;\n                cnt = i - first;\n                if (scanline.left >= scanline.right) {\n                    cnt++;\n                }\n                break;\n            }\n            i++;\n        }\n        // Delete everything we're subtracting\n        if (cnt > 0 && first < this.scanlines.length) {\n            this.scanlines.splice(first, cnt);\n        }\n        return this.scanlines.length > 0;\n    };\n    Scan.prototype.intersect = function (left, right) {\n        // Get rid of anything that falls entirely outside to the left\n        for (var i = 0; i < this.scanlines.length; i++) {\n            var scanline = this.scanlines[i];\n            if (scanline.left >= left || scanline.right >= left) {\n                if (i > 0) {\n                    this.scanlines.splice(0, i);\n                }\n                break;\n            }\n        }\n        if (this.scanlines.length > 0) {\n            // Adjust the first to match the left, if needed\n            var scanline = this.scanlines[0];\n            if (scanline.left < left) {\n                scanline.left = left;\n            }\n            // Get rid of anything that falls entirely outside to the right\n            for (var i = 0; i < this.scanlines.length; i++) {\n                scanline = this.scanlines[i];\n                if (scanline.left > right) {\n                    this.scanlines.splice(i, this.scanlines.length - i);\n                    break;\n                }\n            }\n            if (this.scanlines.length > 0) {\n                // Adjust the last to match the right, if needed\n                scanline = this.scanlines[this.scanlines.length - 1];\n                if (scanline.right > right) {\n                    scanline.right = right;\n                }\n            }\n        }\n        return this.scanlines.length > 0;\n    };\n    Scan.prototype.toString = function () {\n        return \"{ #scanlines: \" + this.scanlines.length + \"}\";\n    };\n    return Scan;\n}());\n\n\n\n/***/ }),\n\n/***/ \"./src/wmfjs/Renderer.ts\":\n/*!*******************************!*\\\n  !*** ./src/wmfjs/Renderer.ts ***!\n  \\*******************************/\n/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {\n\n__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"Renderer\": () => (/* binding */ Renderer)\n/* harmony export */ });\n/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../util */ \"./src/util/index.ts\");\n/* harmony import */ var _Blob__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./Blob */ \"./src/wmfjs/Blob.ts\");\n/* harmony import */ var _GDIContext__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./GDIContext */ \"./src/wmfjs/GDIContext.ts\");\n/* harmony import */ var _Helper__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./Helper */ \"./src/wmfjs/Helper.ts\");\n/* harmony import */ var _WMFRecords__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./WMFRecords */ \"./src/wmfjs/WMFRecords.ts\");\n/*\n\nThe MIT License (MIT)\n\nCopyright (c) 2015 Thomas Bluemel\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n\n*/\n\n\n\n\n\nvar Renderer = /** @class */ (function () {\n    function Renderer(blob) {\n        this.parse(blob);\n        _Helper__WEBPACK_IMPORTED_MODULE_3__.Helper.log(\"WMFJS.Renderer instantiated\");\n    }\n    Renderer.prototype.render = function (info) {\n        var svgElement = document.createElementNS(\"http://www.w3.org/2000/svg\", \"svg\");\n        this._render(new _util__WEBPACK_IMPORTED_MODULE_0__.SVG(svgElement), info.mapMode, info.xExt, info.yExt);\n        svgElement.setAttribute(\"viewBox\", [0, 0, info.xExt, info.yExt].join(\" \"));\n        svgElement.setAttribute(\"preserveAspectRatio\", \"none\"); // TODO: MM_ISOTROPIC vs MM_ANISOTROPIC\n        svgElement.setAttribute(\"width\", info.width);\n        svgElement.setAttribute(\"height\", info.height);\n        return svgElement;\n    };\n    Renderer.prototype.parse = function (blob) {\n        this._img = null;\n        var reader = new _Blob__WEBPACK_IMPORTED_MODULE_1__.Blob(blob);\n        var type;\n        var size;\n        var placable;\n        var headerstart;\n        var key = reader.readUint32();\n        if (key === 0x9ac6cdd7) {\n            placable = new WMFPlacable(reader);\n            headerstart = reader.pos;\n            type = reader.readUint16();\n            size = reader.readUint16();\n        }\n        else {\n            headerstart = 0;\n            type = key & 0xffff;\n            size = (key >>> 16) & 0xffff;\n        }\n        switch (type) {\n            case _Helper__WEBPACK_IMPORTED_MODULE_3__.Helper.GDI.MetafileType.MEMORYMETAFILE:\n            case _Helper__WEBPACK_IMPORTED_MODULE_3__.Helper.GDI.MetafileType.DISKMETAFILE:\n                if (size === _Helper__WEBPACK_IMPORTED_MODULE_3__.Helper.GDI.METAHEADER_SIZE / 2) {\n                    var version = reader.readUint16();\n                    switch (version) {\n                        case _Helper__WEBPACK_IMPORTED_MODULE_3__.Helper.GDI.MetafileVersion.METAVERSION100:\n                        case _Helper__WEBPACK_IMPORTED_MODULE_3__.Helper.GDI.MetafileVersion.METAVERSION300:\n                            this._img = new WMF(reader, placable, version, headerstart + (size * 2));\n                            break;\n                    }\n                }\n                break;\n        }\n        if (this._img == null) {\n            throw new _Helper__WEBPACK_IMPORTED_MODULE_3__.WMFJSError(\"Format not recognized\");\n        }\n    };\n    Renderer.prototype._render = function (svg, mapMode, xExt, yExt) {\n        // See https://www-user.tu-chemnitz.de/~ygu/petzold/ch18b.htm\n        var gdi = new _GDIContext__WEBPACK_IMPORTED_MODULE_2__.GDIContext(svg);\n        gdi.setViewportExt(xExt, yExt);\n        gdi.setMapMode(mapMode);\n        _Helper__WEBPACK_IMPORTED_MODULE_3__.Helper.log(\"[WMF] BEGIN RENDERING --->\");\n        this._img.render(gdi);\n        _Helper__WEBPACK_IMPORTED_MODULE_3__.Helper.log(\"[WMF] <--- DONE RENDERING\");\n    };\n    return Renderer;\n}());\n\nvar WMFRect16 = /** @class */ (function () {\n    function WMFRect16(reader) {\n        this.left = reader.readInt16();\n        this.top = reader.readInt16();\n        this.right = reader.readInt16();\n        this.bottom = reader.readInt16();\n    }\n    WMFRect16.prototype.toString = function () {\n        return \"{left: \" + this.left + \", top: \" + this.top + \", right: \" + this.right\n            + \", bottom: \" + this.bottom + \"}\";\n    };\n    return WMFRect16;\n}());\nvar WMFPlacable = /** @class */ (function () {\n    function WMFPlacable(reader) {\n        reader.skip(2);\n        this.boundingBox = new WMFRect16(reader);\n        this.unitsPerInch = reader.readInt16();\n        reader.skip(4);\n        reader.skip(2); // TODO: checksum\n        _Helper__WEBPACK_IMPORTED_MODULE_3__.Helper.log(\"Got bounding box \" + this.boundingBox + \" and \" + this.unitsPerInch + \" units/inch\");\n    }\n    return WMFPlacable;\n}());\nvar WMF = /** @class */ (function () {\n    function WMF(reader, placable, version, hdrsize) {\n        this._version = version;\n        this._hdrsize = hdrsize;\n        this._placable = placable;\n        this._records = new _WMFRecords__WEBPACK_IMPORTED_MODULE_4__.WMFRecords(reader, this._hdrsize);\n    }\n    WMF.prototype.render = function (gdi) {\n        this._records.play(gdi);\n    };\n    return WMF;\n}());\n\n\n/***/ }),\n\n/***/ \"./src/wmfjs/Style.ts\":\n/*!****************************!*\\\n  !*** ./src/wmfjs/Style.ts ***!\n  \\****************************/\n/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {\n\n__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"ColorRef\": () => (/* binding */ ColorRef),\n/* harmony export */   \"Font\": () => (/* binding */ Font),\n/* harmony export */   \"Brush\": () => (/* binding */ Brush),\n/* harmony export */   \"Pen\": () => (/* binding */ Pen),\n/* harmony export */   \"PaletteEntry\": () => (/* binding */ PaletteEntry),\n/* harmony export */   \"Palette\": () => (/* binding */ Palette)\n/* harmony export */ });\n/* harmony import */ var _Bitmap__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./Bitmap */ \"./src/wmfjs/Bitmap.ts\");\n/* harmony import */ var _Helper__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./Helper */ \"./src/wmfjs/Helper.ts\");\n/* harmony import */ var _Primitives__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./Primitives */ \"./src/wmfjs/Primitives.ts\");\n/*\n\nThe MIT License (MIT)\n\nCopyright (c) 2015 Thomas Bluemel\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n\n*/\nvar __extends = (undefined && undefined.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        if (typeof b !== \"function\" && b !== null)\n            throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\n\n\n\nvar ColorRef = /** @class */ (function () {\n    function ColorRef(reader, r, g, b) {\n        if (reader != null) {\n            this.r = reader.readUint8();\n            this.g = reader.readUint8();\n            this.b = reader.readUint8();\n            reader.skip(1);\n        }\n        else {\n            this.r = r;\n            this.g = g;\n            this.b = b;\n        }\n    }\n    ColorRef.prototype.clone = function () {\n        return new ColorRef(null, this.r, this.g, this.b);\n    };\n    ColorRef.prototype.toHex = function () {\n        var rgb = (this.r << 16) | (this.g << 8) | this.b;\n        return (0x1000000 + rgb).toString(16).slice(1);\n    };\n    ColorRef.prototype.toString = function () {\n        return \"{r: \" + this.r + \", g: \" + this.g + \", b: \" + this.b + \"}\";\n    };\n    return ColorRef;\n}());\n\nvar Font = /** @class */ (function (_super) {\n    __extends(Font, _super);\n    function Font(reader, copy) {\n        var _this = _super.call(this, \"font\") || this;\n        if (reader != null) {\n            _this.height = reader.readInt16();\n            _this.width = reader.readInt16();\n            _this.escapement = reader.readInt16();\n            _this.orientation = reader.readInt16();\n            _this.weight = reader.readInt16();\n            _this.italic = reader.readUint8();\n            _this.underline = reader.readUint8();\n            _this.strikeout = reader.readUint8();\n            _this.charset = reader.readUint8();\n            _this.outprecision = reader.readUint8();\n            _this.clipprecision = reader.readUint8();\n            _this.quality = reader.readUint8();\n            var pitchAndFamily = reader.readUint8();\n            _this.pitch = pitchAndFamily & 0xf; // TODO: double check\n            _this.family = (pitchAndFamily >> 6) & 0x3; // TODO: double check\n            var dataLength = copy;\n            var start = reader.pos;\n            _this.facename = reader.readNullTermString(Math.min(dataLength - (reader.pos - start), 32));\n        }\n        else if (copy != null) {\n            copy = copy;\n            _this.height = copy.height;\n            _this.width = copy.width;\n            _this.escapement = copy.escapement;\n            _this.orientation = copy.orientation;\n            _this.weight = copy.weight;\n            _this.italic = copy.italic;\n            _this.underline = copy.underline;\n            _this.strikeout = copy.strikeout;\n            _this.charset = copy.charset;\n            _this.outprecision = copy.outprecision;\n            _this.clipprecision = copy.clipprecision;\n            _this.quality = copy.quality;\n            _this.pitch = copy.pitch;\n            _this.family = copy.family;\n            _this.facename = copy.facename;\n        }\n        else {\n            // TODO: Values for a default font?\n            _this.height = -80;\n            _this.width = 0;\n            _this.escapement = 0;\n            _this.orientation = 0;\n            _this.weight = 400;\n            _this.italic = 0;\n            _this.underline = 0;\n            _this.strikeout = 0;\n            _this.charset = 0;\n            _this.outprecision = 0;\n            _this.clipprecision = 0;\n            _this.quality = 0;\n            _this.pitch = 0;\n            _this.family = 0;\n            _this.facename = \"Helvetica\";\n        }\n        return _this;\n    }\n    Font.prototype.clone = function () {\n        return new Font(null, this);\n    };\n    Font.prototype.toString = function () {\n        return JSON.stringify(this);\n    };\n    return Font;\n}(_Primitives__WEBPACK_IMPORTED_MODULE_2__.Obj));\n\nvar Brush = /** @class */ (function (_super) {\n    __extends(Brush, _super);\n    function Brush(reader, copy, forceDibPattern) {\n        var _this = _super.call(this, \"brush\") || this;\n        if (reader != null) {\n            var dataLength = copy;\n            var start = reader.pos;\n            if (forceDibPattern === true || forceDibPattern === false) {\n                _this.style = reader.readUint16();\n                if (forceDibPattern && _this.style !== _Helper__WEBPACK_IMPORTED_MODULE_1__.Helper.GDI.BrushStyle.BS_PATTERN) {\n                    _this.style = _Helper__WEBPACK_IMPORTED_MODULE_1__.Helper.GDI.BrushStyle.BS_DIBPATTERNPT;\n                }\n                switch (_this.style) {\n                    case _Helper__WEBPACK_IMPORTED_MODULE_1__.Helper.GDI.BrushStyle.BS_SOLID:\n                        _this.color = new ColorRef(reader);\n                        break;\n                    case _Helper__WEBPACK_IMPORTED_MODULE_1__.Helper.GDI.BrushStyle.BS_PATTERN:\n                        reader.skip(forceDibPattern ? 2 : 6);\n                        _this.pattern = new _Bitmap__WEBPACK_IMPORTED_MODULE_0__.Bitmap16(reader, dataLength - (reader.pos - start));\n                        break;\n                    case _Helper__WEBPACK_IMPORTED_MODULE_1__.Helper.GDI.BrushStyle.BS_DIBPATTERNPT:\n                        _this.colorusage = forceDibPattern ? reader.readUint16() : reader.readUint32();\n                        if (!forceDibPattern) {\n                            reader.skip(2);\n                        }\n                        _this.dibpatternpt = new _Bitmap__WEBPACK_IMPORTED_MODULE_0__.DIBitmap(reader, dataLength - (reader.pos - start));\n                        break;\n                    case _Helper__WEBPACK_IMPORTED_MODULE_1__.Helper.GDI.BrushStyle.BS_HATCHED:\n                        _this.color = new ColorRef(reader);\n                        _this.hatchstyle = reader.readUint16();\n                        break;\n                }\n            }\n            else if (forceDibPattern instanceof _Bitmap__WEBPACK_IMPORTED_MODULE_0__.PatternBitmap16) {\n                _this.style = _Helper__WEBPACK_IMPORTED_MODULE_1__.Helper.GDI.BrushStyle.BS_PATTERN;\n                _this.pattern = forceDibPattern;\n            }\n        }\n        else if (copy != null) {\n            copy = copy;\n            _this.style = copy.style;\n            switch (_this.style) {\n                case _Helper__WEBPACK_IMPORTED_MODULE_1__.Helper.GDI.BrushStyle.BS_SOLID:\n                    _this.color = copy.color.clone();\n                    break;\n                case _Helper__WEBPACK_IMPORTED_MODULE_1__.Helper.GDI.BrushStyle.BS_PATTERN:\n                    _this.pattern = copy.pattern.clone();\n                    break;\n                case _Helper__WEBPACK_IMPORTED_MODULE_1__.Helper.GDI.BrushStyle.BS_DIBPATTERNPT:\n                    _this.colorusage = copy.colorusage;\n                    _this.dibpatternpt = copy.dibpatternpt;\n                    break;\n                case _Helper__WEBPACK_IMPORTED_MODULE_1__.Helper.GDI.BrushStyle.BS_HATCHED:\n                    _this.color = copy.color.clone();\n                    _this.hatchstyle = copy.hatchstyle;\n                    break;\n            }\n        }\n        return _this;\n    }\n    Brush.prototype.clone = function () {\n        return new Brush(null, this);\n    };\n    Brush.prototype.toString = function () {\n        var ret = \"{style: \" + this.style;\n        switch (this.style) {\n            case _Helper__WEBPACK_IMPORTED_MODULE_1__.Helper.GDI.BrushStyle.BS_SOLID:\n                ret += \", color: \" + this.color.toString();\n                break;\n            case _Helper__WEBPACK_IMPORTED_MODULE_1__.Helper.GDI.BrushStyle.BS_DIBPATTERNPT:\n                ret += \", colorusage: \" + this.colorusage;\n                break;\n            case _Helper__WEBPACK_IMPORTED_MODULE_1__.Helper.GDI.BrushStyle.BS_HATCHED:\n                ret += \", color: \" + this.color.toString() + \", hatchstyle: \" + this.hatchstyle;\n                break;\n        }\n        return ret + \"}\";\n    };\n    return Brush;\n}(_Primitives__WEBPACK_IMPORTED_MODULE_2__.Obj));\n\nvar Pen = /** @class */ (function (_super) {\n    __extends(Pen, _super);\n    function Pen(reader, style, width, color, linecap, join) {\n        var _this = _super.call(this, \"pen\") || this;\n        if (reader != null) {\n            style = reader.readUint16();\n            _this.style = style & 0xFF;\n            _this.width = new _Primitives__WEBPACK_IMPORTED_MODULE_2__.PointS(reader);\n            _this.color = new ColorRef(reader);\n            _this.linecap = (style & (_Helper__WEBPACK_IMPORTED_MODULE_1__.Helper.GDI.PenStyle.PS_ENDCAP_SQUARE | _Helper__WEBPACK_IMPORTED_MODULE_1__.Helper.GDI.PenStyle.PS_ENDCAP_FLAT));\n            _this.join = (style & (_Helper__WEBPACK_IMPORTED_MODULE_1__.Helper.GDI.PenStyle.PS_JOIN_BEVEL | _Helper__WEBPACK_IMPORTED_MODULE_1__.Helper.GDI.PenStyle.PS_JOIN_MITER));\n        }\n        else {\n            _this.style = style;\n            _this.width = width;\n            _this.color = color;\n            _this.linecap = linecap;\n            _this.join = join;\n        }\n        return _this;\n    }\n    Pen.prototype.clone = function () {\n        return new Pen(null, this.style, this.width.clone(), this.color.clone(), this.linecap, this.join);\n    };\n    Pen.prototype.toString = function () {\n        return \"{style: \" + this.style + \", width: \" + this.width.toString() + \", color: \" + this.color.toString()\n            + \", linecap: \" + this.linecap + \", join: \" + this.join + \"}\";\n    };\n    return Pen;\n}(_Primitives__WEBPACK_IMPORTED_MODULE_2__.Obj));\n\nvar PaletteEntry = /** @class */ (function () {\n    function PaletteEntry(reader, copy) {\n        if (reader != null) {\n            this.flag = reader.readUint8();\n            this.b = reader.readUint8();\n            this.g = reader.readUint8();\n            this.r = reader.readUint8();\n        }\n        else {\n            this.flag = copy.flag;\n            this.b = copy.b;\n            this.g = copy.g;\n            this.r = copy.r;\n        }\n    }\n    PaletteEntry.prototype.clone = function () {\n        return new PaletteEntry(null, this);\n    };\n    return PaletteEntry;\n}());\n\nvar Palette = /** @class */ (function (_super) {\n    __extends(Palette, _super);\n    function Palette(reader, copy) {\n        var _this = _super.call(this, \"palette\") || this;\n        if (reader != null) {\n            _this.start = reader.readUint16();\n            var cnt = reader.readUint16();\n            _this.entries = [];\n            while (cnt > 0) {\n                _this.entries.push(new PaletteEntry(reader));\n                cnt--;\n            }\n        }\n        else {\n            _this.start = copy.start;\n            _this.entries = [];\n            var len = copy.entries.length;\n            for (var i = 0; i < len; i++) {\n                _this.entries.push(copy.entries[i]);\n            }\n        }\n        return _this;\n    }\n    Palette.prototype.clone = function () {\n        return new Palette(null, this);\n    };\n    Palette.prototype.toString = function () {\n        return \"{ #entries: \" + this.entries.length + \"}\"; // TODO\n    };\n    return Palette;\n}(_Primitives__WEBPACK_IMPORTED_MODULE_2__.Obj));\n\n\n\n/***/ }),\n\n/***/ \"./src/wmfjs/WMFRecords.ts\":\n/*!*********************************!*\\\n  !*** ./src/wmfjs/WMFRecords.ts ***!\n  \\*********************************/\n/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {\n\n__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"WMFRecords\": () => (/* binding */ WMFRecords)\n/* harmony export */ });\n/* harmony import */ var _Bitmap__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./Bitmap */ \"./src/wmfjs/Bitmap.ts\");\n/* harmony import */ var _Blob__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./Blob */ \"./src/wmfjs/Blob.ts\");\n/* harmony import */ var _Helper__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./Helper */ \"./src/wmfjs/Helper.ts\");\n/* harmony import */ var _Primitives__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./Primitives */ \"./src/wmfjs/Primitives.ts\");\n/* harmony import */ var _Region__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./Region */ \"./src/wmfjs/Region.ts\");\n/* harmony import */ var _Style__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./Style */ \"./src/wmfjs/Style.ts\");\n/*\n\nThe MIT License (MIT)\n\nCopyright (c) 2015 Thomas Bluemel\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n\n*/\n\n\n\n\n\n\nvar WMFRecords = /** @class */ (function () {\n    function WMFRecords(reader, first) {\n        this._records = [];\n        var all = false;\n        var curpos = first;\n        var _loop_1 = function () {\n            reader.seek(curpos);\n            var size = reader.readUint32();\n            if (size < 3) {\n                throw new _Helper__WEBPACK_IMPORTED_MODULE_2__.WMFJSError(\"Invalid record size\");\n            }\n            var type = reader.readUint16();\n            switch (type) {\n                case _Helper__WEBPACK_IMPORTED_MODULE_2__.Helper.GDI.RecordType.META_EOF:\n                    all = true;\n                    return \"break-main_loop\";\n                case _Helper__WEBPACK_IMPORTED_MODULE_2__.Helper.GDI.RecordType.META_SETMAPMODE: {\n                    var mapMode_1 = reader.readUint16();\n                    this_1._records.push(function (gdi) {\n                        gdi.setMapMode(mapMode_1);\n                    });\n                    break;\n                }\n                case _Helper__WEBPACK_IMPORTED_MODULE_2__.Helper.GDI.RecordType.META_SETWINDOWORG: {\n                    var y_1 = reader.readInt16();\n                    var x_1 = reader.readInt16();\n                    this_1._records.push(function (gdi) {\n                        gdi.setWindowOrg(x_1, y_1);\n                    });\n                    break;\n                }\n                case _Helper__WEBPACK_IMPORTED_MODULE_2__.Helper.GDI.RecordType.META_SETWINDOWEXT: {\n                    var y_2 = reader.readInt16();\n                    var x_2 = reader.readInt16();\n                    this_1._records.push(function (gdi) {\n                        gdi.setWindowExt(x_2, y_2);\n                    });\n                    break;\n                }\n                case _Helper__WEBPACK_IMPORTED_MODULE_2__.Helper.GDI.RecordType.META_OFFSETWINDOWORG: {\n                    var offY_1 = reader.readInt16();\n                    var offX_1 = reader.readInt16();\n                    this_1._records.push(function (gdi) {\n                        gdi.offsetWindowOrg(offX_1, offY_1);\n                    });\n                    break;\n                }\n                case _Helper__WEBPACK_IMPORTED_MODULE_2__.Helper.GDI.RecordType.META_SETVIEWPORTORG: {\n                    var y_3 = reader.readInt16();\n                    var x_3 = reader.readInt16();\n                    this_1._records.push(function (gdi) {\n                        gdi.setViewportOrg(x_3, y_3);\n                    });\n                    break;\n                }\n                case _Helper__WEBPACK_IMPORTED_MODULE_2__.Helper.GDI.RecordType.META_SETVIEWPORTEXT: {\n                    var y_4 = reader.readInt16();\n                    var x_4 = reader.readInt16();\n                    this_1._records.push(function (gdi) {\n                        gdi.setViewportExt(x_4, y_4);\n                    });\n                    break;\n                }\n                case _Helper__WEBPACK_IMPORTED_MODULE_2__.Helper.GDI.RecordType.META_OFFSETVIEWPORTORG: {\n                    var offY_2 = reader.readInt16();\n                    var offX_2 = reader.readInt16();\n                    this_1._records.push(function (gdi) {\n                        gdi.offsetViewportOrg(offX_2, offY_2);\n                    });\n                    break;\n                }\n                case _Helper__WEBPACK_IMPORTED_MODULE_2__.Helper.GDI.RecordType.META_SAVEDC: {\n                    this_1._records.push(function (gdi) {\n                        gdi.saveDC();\n                    });\n                    break;\n                }\n                case _Helper__WEBPACK_IMPORTED_MODULE_2__.Helper.GDI.RecordType.META_RESTOREDC: {\n                    var saved_1 = reader.readInt16();\n                    this_1._records.push(function (gdi) {\n                        gdi.restoreDC(saved_1);\n                    });\n                    break;\n                }\n                case _Helper__WEBPACK_IMPORTED_MODULE_2__.Helper.GDI.RecordType.META_SETSTRETCHBLTMODE: {\n                    var stretchMode_1 = reader.readUint16();\n                    this_1._records.push(function (gdi) {\n                        gdi.setStretchBltMode(stretchMode_1);\n                    });\n                    break;\n                }\n                case _Helper__WEBPACK_IMPORTED_MODULE_2__.Helper.GDI.RecordType.META_DIBSTRETCHBLT: {\n                    var haveSrcDib = ((type >> 8) + 3 !== size);\n                    var rasterOp_1 = reader.readUint16() | (reader.readUint16() << 16);\n                    var srcH_1 = reader.readInt16();\n                    var srcW_1 = reader.readInt16();\n                    var srcY_1 = reader.readInt16();\n                    var srcX_1 = reader.readInt16();\n                    var destH_1 = reader.readInt16();\n                    var destW_1 = reader.readInt16();\n                    var destY_1 = reader.readInt16();\n                    var destX_1 = reader.readInt16();\n                    var datalength = size * 2 - (reader.pos - curpos);\n                    var dib_1 = new _Bitmap__WEBPACK_IMPORTED_MODULE_0__.DIBitmap(reader, datalength);\n                    this_1._records.push(function (gdi) {\n                        gdi.stretchDibBits(srcX_1, srcY_1, srcW_1, srcH_1, destX_1, destY_1, destW_1, destH_1, rasterOp_1, dib_1);\n                    });\n                    break;\n                }\n                case _Helper__WEBPACK_IMPORTED_MODULE_2__.Helper.GDI.RecordType.META_STRETCHDIB: {\n                    var rasterOp_2 = reader.readUint16() | (reader.readUint16() << 16);\n                    var colorUsage_1 = reader.readInt16();\n                    var srcH_2 = reader.readInt16();\n                    var srcW_2 = reader.readInt16();\n                    var srcY_2 = reader.readInt16();\n                    var srcX_2 = reader.readInt16();\n                    var destH_2 = reader.readInt16();\n                    var destW_2 = reader.readInt16();\n                    var destY_2 = reader.readInt16();\n                    var destX_2 = reader.readInt16();\n                    var datalength = size * 2 - (reader.pos - curpos);\n                    var dib_2 = new _Bitmap__WEBPACK_IMPORTED_MODULE_0__.DIBitmap(reader, datalength);\n                    this_1._records.push(function (gdi) {\n                        gdi.stretchDib(srcX_2, srcY_2, srcW_2, srcH_2, destX_2, destY_2, destW_2, destH_2, rasterOp_2, colorUsage_1, dib_2);\n                    });\n                    break;\n                }\n                case _Helper__WEBPACK_IMPORTED_MODULE_2__.Helper.GDI.RecordType.META_ESCAPE: {\n                    var func_1 = reader.readUint16();\n                    var count_1 = reader.readUint16();\n                    var offset_1 = reader.pos;\n                    var blob_1 = new _Blob__WEBPACK_IMPORTED_MODULE_1__.Blob(reader, offset_1);\n                    this_1._records.push(function (gdi) {\n                        gdi.escape(func_1, blob_1, offset_1, count_1);\n                    });\n                    break;\n                }\n                case _Helper__WEBPACK_IMPORTED_MODULE_2__.Helper.GDI.RecordType.META_SETTEXTALIGN: {\n                    var textAlign_1 = reader.readUint16();\n                    this_1._records.push(function (gdi) {\n                        gdi.setTextAlign(textAlign_1);\n                    });\n                    break;\n                }\n                case _Helper__WEBPACK_IMPORTED_MODULE_2__.Helper.GDI.RecordType.META_SETBKMODE: {\n                    var bkMode_1 = reader.readUint16();\n                    this_1._records.push(function (gdi) {\n                        gdi.setBkMode(bkMode_1);\n                    });\n                    break;\n                }\n                case _Helper__WEBPACK_IMPORTED_MODULE_2__.Helper.GDI.RecordType.META_SETTEXTCOLOR: {\n                    var textColor_1 = new _Style__WEBPACK_IMPORTED_MODULE_5__.ColorRef(reader);\n                    this_1._records.push(function (gdi) {\n                        gdi.setTextColor(textColor_1);\n                    });\n                    break;\n                }\n                case _Helper__WEBPACK_IMPORTED_MODULE_2__.Helper.GDI.RecordType.META_SETBKCOLOR: {\n                    var bkColor_1 = new _Style__WEBPACK_IMPORTED_MODULE_5__.ColorRef(reader);\n                    this_1._records.push(function (gdi) {\n                        gdi.setBkColor(bkColor_1);\n                    });\n                    break;\n                }\n                case _Helper__WEBPACK_IMPORTED_MODULE_2__.Helper.GDI.RecordType.META_CREATEBRUSHINDIRECT: {\n                    var datalength = size * 2 - (reader.pos - curpos);\n                    var brush_1 = new _Style__WEBPACK_IMPORTED_MODULE_5__.Brush(reader, datalength, false);\n                    this_1._records.push(function (gdi) {\n                        gdi.createBrush(brush_1);\n                    });\n                    break;\n                }\n                case _Helper__WEBPACK_IMPORTED_MODULE_2__.Helper.GDI.RecordType.META_DIBCREATEPATTERNBRUSH: {\n                    var datalength = size * 2 - (reader.pos - curpos);\n                    var brush_2 = new _Style__WEBPACK_IMPORTED_MODULE_5__.Brush(reader, datalength, true);\n                    this_1._records.push(function (gdi) {\n                        gdi.createBrush(brush_2);\n                    });\n                    break;\n                }\n                case _Helper__WEBPACK_IMPORTED_MODULE_2__.Helper.GDI.RecordType.META_CREATEPENINDIRECT: {\n                    var pen_1 = new _Style__WEBPACK_IMPORTED_MODULE_5__.Pen(reader);\n                    this_1._records.push(function (gdi) {\n                        gdi.createPen(pen_1);\n                    });\n                    break;\n                }\n                case _Helper__WEBPACK_IMPORTED_MODULE_2__.Helper.GDI.RecordType.META_CREATEFONTINDIRECT: {\n                    var datalength = size * 2 - (reader.pos - curpos);\n                    var font_1 = new _Style__WEBPACK_IMPORTED_MODULE_5__.Font(reader, datalength);\n                    this_1._records.push(function (gdi) {\n                        gdi.createFont(font_1);\n                    });\n                    break;\n                }\n                case _Helper__WEBPACK_IMPORTED_MODULE_2__.Helper.GDI.RecordType.META_SELECTOBJECT: {\n                    var idx_1 = reader.readUint16();\n                    this_1._records.push(function (gdi) {\n                        gdi.selectObject(idx_1, null);\n                    });\n                    break;\n                }\n                case _Helper__WEBPACK_IMPORTED_MODULE_2__.Helper.GDI.RecordType.META_SELECTPALETTE: {\n                    var idx_2 = reader.readUint16();\n                    this_1._records.push(function (gdi) {\n                        gdi.selectObject(idx_2, \"palette\");\n                    });\n                    break;\n                }\n                case _Helper__WEBPACK_IMPORTED_MODULE_2__.Helper.GDI.RecordType.META_SELECTCLIPREGION: {\n                    var idx_3 = reader.readUint16();\n                    this_1._records.push(function (gdi) {\n                        gdi.selectObject(idx_3, \"region\");\n                    });\n                    break;\n                }\n                case _Helper__WEBPACK_IMPORTED_MODULE_2__.Helper.GDI.RecordType.META_DELETEOBJECT: {\n                    var idx_4 = reader.readUint16();\n                    this_1._records.push(function (gdi) {\n                        gdi.deleteObject(idx_4);\n                    });\n                    break;\n                }\n                case _Helper__WEBPACK_IMPORTED_MODULE_2__.Helper.GDI.RecordType.META_RECTANGLE: {\n                    var rect_1 = new _Primitives__WEBPACK_IMPORTED_MODULE_3__.Rect(reader);\n                    this_1._records.push(function (gdi) {\n                        gdi.rectangle(rect_1, 0, 0);\n                    });\n                    break;\n                }\n                case _Helper__WEBPACK_IMPORTED_MODULE_2__.Helper.GDI.RecordType.META_ROUNDRECT: {\n                    var rh_1 = reader.readInt16();\n                    var rw_1 = reader.readInt16();\n                    var rect_2 = new _Primitives__WEBPACK_IMPORTED_MODULE_3__.Rect(reader);\n                    this_1._records.push(function (gdi) {\n                        gdi.rectangle(rect_2, rw_1, rh_1);\n                    });\n                    break;\n                }\n                case _Helper__WEBPACK_IMPORTED_MODULE_2__.Helper.GDI.RecordType.META_LINETO: {\n                    var y_5 = reader.readInt16();\n                    var x_5 = reader.readInt16();\n                    this_1._records.push(function (gdi) {\n                        gdi.lineTo(x_5, y_5);\n                    });\n                    break;\n                }\n                case _Helper__WEBPACK_IMPORTED_MODULE_2__.Helper.GDI.RecordType.META_MOVETO: {\n                    var y_6 = reader.readInt16();\n                    var x_6 = reader.readInt16();\n                    this_1._records.push(function (gdi) {\n                        gdi.moveTo(x_6, y_6);\n                    });\n                    break;\n                }\n                case _Helper__WEBPACK_IMPORTED_MODULE_2__.Helper.GDI.RecordType.META_TEXTOUT: {\n                    var len = reader.readInt16();\n                    if (len > 0) {\n                        var text_1 = reader.readString(len);\n                        reader.skip(len % 2);\n                        var y_7 = reader.readInt16();\n                        var x_7 = reader.readInt16();\n                        this_1._records.push(function (gdi) {\n                            gdi.textOut(x_7, y_7, text_1);\n                        });\n                    }\n                    break;\n                }\n                case _Helper__WEBPACK_IMPORTED_MODULE_2__.Helper.GDI.RecordType.META_EXTTEXTOUT: {\n                    var y_8 = reader.readInt16();\n                    var x_8 = reader.readInt16();\n                    var len = reader.readInt16();\n                    var fwOpts_1 = reader.readUint16();\n                    var hasRect = null;\n                    var hasDx = null;\n                    if (size * 2 === 14 + len + len % 2) {\n                        hasRect = false;\n                        hasDx = false;\n                    }\n                    if (size * 2 === 14 + 8 + len + len % 2) {\n                        hasRect = true;\n                        hasDx = false;\n                    }\n                    if (size * 2 === 14 + len + len % 2 + len * 2) {\n                        hasRect = false;\n                        hasDx = true;\n                    }\n                    if (size * 2 === 14 + 8 + len + len % 2 + len * 2) {\n                        hasRect = true;\n                        hasDx = true;\n                    }\n                    var rect_3 = hasRect ? new _Primitives__WEBPACK_IMPORTED_MODULE_3__.Rect(reader) : null;\n                    if (len > 0) {\n                        var text_2 = reader.readString(len);\n                        reader.skip(len % 2);\n                        var dx_1 = [];\n                        if (hasDx) {\n                            for (var i = 0; i < text_2.length; i++) {\n                                dx_1.push(reader.readInt16());\n                            }\n                        }\n                        this_1._records.push(function (gdi) {\n                            gdi.extTextOut(x_8, y_8, text_2, fwOpts_1, rect_3, dx_1);\n                        });\n                    }\n                    break;\n                }\n                case _Helper__WEBPACK_IMPORTED_MODULE_2__.Helper.GDI.RecordType.META_EXCLUDECLIPRECT: {\n                    var rect_4 = new _Primitives__WEBPACK_IMPORTED_MODULE_3__.Rect(reader);\n                    this_1._records.push(function (gdi) {\n                        gdi.excludeClipRect(rect_4);\n                    });\n                    break;\n                }\n                case _Helper__WEBPACK_IMPORTED_MODULE_2__.Helper.GDI.RecordType.META_INTERSECTCLIPRECT: {\n                    var rect_5 = new _Primitives__WEBPACK_IMPORTED_MODULE_3__.Rect(reader);\n                    this_1._records.push(function (gdi) {\n                        gdi.intersectClipRect(rect_5);\n                    });\n                    break;\n                }\n                case _Helper__WEBPACK_IMPORTED_MODULE_2__.Helper.GDI.RecordType.META_POLYGON: {\n                    var cnt = reader.readInt16();\n                    var points_1 = [];\n                    while (cnt > 0) {\n                        points_1.push(new _Primitives__WEBPACK_IMPORTED_MODULE_3__.PointS(reader));\n                        cnt--;\n                    }\n                    this_1._records.push(function (gdi) {\n                        gdi.polygon(points_1, true);\n                    });\n                    break;\n                }\n                case _Helper__WEBPACK_IMPORTED_MODULE_2__.Helper.GDI.RecordType.META_SETPOLYFILLMODE: {\n                    var polyfillmode_1 = reader.readUint16();\n                    this_1._records.push(function (gdi) {\n                        gdi.setPolyFillMode(polyfillmode_1);\n                    });\n                    break;\n                }\n                case _Helper__WEBPACK_IMPORTED_MODULE_2__.Helper.GDI.RecordType.META_POLYPOLYGON: {\n                    var cnt = reader.readUint16();\n                    var polygonsPtCnts = [];\n                    for (var i = 0; i < cnt; i++) {\n                        polygonsPtCnts.push(reader.readUint16());\n                    }\n                    var polygons_1 = [];\n                    for (var i = 0; i < cnt; i++) {\n                        var ptCnt = polygonsPtCnts[i];\n                        var p = [];\n                        for (var ip = 0; ip < ptCnt; ip++) {\n                            p.push(new _Primitives__WEBPACK_IMPORTED_MODULE_3__.PointS(reader));\n                        }\n                        polygons_1.push(p);\n                    }\n                    this_1._records.push(function (gdi) {\n                        gdi.polyPolygon(polygons_1);\n                    });\n                    break;\n                }\n                case _Helper__WEBPACK_IMPORTED_MODULE_2__.Helper.GDI.RecordType.META_POLYLINE: {\n                    var cnt = reader.readInt16();\n                    var points_2 = [];\n                    while (cnt > 0) {\n                        points_2.push(new _Primitives__WEBPACK_IMPORTED_MODULE_3__.PointS(reader));\n                        cnt--;\n                    }\n                    this_1._records.push(function (gdi) {\n                        gdi.polyline(points_2);\n                    });\n                    break;\n                }\n                case _Helper__WEBPACK_IMPORTED_MODULE_2__.Helper.GDI.RecordType.META_ELLIPSE: {\n                    var rect_6 = new _Primitives__WEBPACK_IMPORTED_MODULE_3__.Rect(reader);\n                    this_1._records.push(function (gdi) {\n                        gdi.ellipse(rect_6);\n                    });\n                    break;\n                }\n                case _Helper__WEBPACK_IMPORTED_MODULE_2__.Helper.GDI.RecordType.META_CREATEPALETTE: {\n                    var palette_1 = new _Style__WEBPACK_IMPORTED_MODULE_5__.Palette(reader);\n                    this_1._records.push(function (gdi) {\n                        gdi.createPalette(palette_1);\n                    });\n                    break;\n                }\n                case _Helper__WEBPACK_IMPORTED_MODULE_2__.Helper.GDI.RecordType.META_CREATEREGION: {\n                    var region_1 = new _Region__WEBPACK_IMPORTED_MODULE_4__.Region(reader);\n                    this_1._records.push(function (gdi) {\n                        gdi.createRegion(region_1);\n                    });\n                    break;\n                }\n                case _Helper__WEBPACK_IMPORTED_MODULE_2__.Helper.GDI.RecordType.META_CREATEPATTERNBRUSH: {\n                    var datalength = size * 2 - (reader.pos - curpos);\n                    var patternBitmap = new _Bitmap__WEBPACK_IMPORTED_MODULE_0__.PatternBitmap16(reader, datalength);\n                    var brush_3 = new _Style__WEBPACK_IMPORTED_MODULE_5__.Brush(reader, datalength, patternBitmap);\n                    this_1._records.push(function (gdi) {\n                        gdi.createPatternBrush(brush_3);\n                    });\n                    break;\n                }\n                case _Helper__WEBPACK_IMPORTED_MODULE_2__.Helper.GDI.RecordType.META_OFFSETCLIPRGN: {\n                    var offY_3 = reader.readInt16();\n                    var offX_3 = reader.readInt16();\n                    this_1._records.push(function (gdi) {\n                        gdi.offsetClipRgn(offX_3, offY_3);\n                    });\n                    break;\n                }\n                case _Helper__WEBPACK_IMPORTED_MODULE_2__.Helper.GDI.RecordType.META_REALIZEPALETTE:\n                case _Helper__WEBPACK_IMPORTED_MODULE_2__.Helper.GDI.RecordType.META_SETPALENTRIES:\n                case _Helper__WEBPACK_IMPORTED_MODULE_2__.Helper.GDI.RecordType.META_SETROP2:\n                case _Helper__WEBPACK_IMPORTED_MODULE_2__.Helper.GDI.RecordType.META_SETRELABS:\n                case _Helper__WEBPACK_IMPORTED_MODULE_2__.Helper.GDI.RecordType.META_SETTEXTCHAREXTRA:\n                case _Helper__WEBPACK_IMPORTED_MODULE_2__.Helper.GDI.RecordType.META_RESIZEPALETTE:\n                case _Helper__WEBPACK_IMPORTED_MODULE_2__.Helper.GDI.RecordType.META_SETLAYOUT:\n                case _Helper__WEBPACK_IMPORTED_MODULE_2__.Helper.GDI.RecordType.META_FILLREGION:\n                case _Helper__WEBPACK_IMPORTED_MODULE_2__.Helper.GDI.RecordType.META_SETMAPPERFLAGS:\n                case _Helper__WEBPACK_IMPORTED_MODULE_2__.Helper.GDI.RecordType.META_SETTEXTJUSTIFICATION:\n                case _Helper__WEBPACK_IMPORTED_MODULE_2__.Helper.GDI.RecordType.META_SCALEWINDOWEXT:\n                case _Helper__WEBPACK_IMPORTED_MODULE_2__.Helper.GDI.RecordType.META_SCALEVIEWPORTEXT:\n                case _Helper__WEBPACK_IMPORTED_MODULE_2__.Helper.GDI.RecordType.META_FLOODFILL:\n                case _Helper__WEBPACK_IMPORTED_MODULE_2__.Helper.GDI.RecordType.META_FRAMEREGION:\n                case _Helper__WEBPACK_IMPORTED_MODULE_2__.Helper.GDI.RecordType.META_ANIMATEPALETTE:\n                case _Helper__WEBPACK_IMPORTED_MODULE_2__.Helper.GDI.RecordType.META_EXTFLOODFILL:\n                case _Helper__WEBPACK_IMPORTED_MODULE_2__.Helper.GDI.RecordType.META_SETPIXEL:\n                case _Helper__WEBPACK_IMPORTED_MODULE_2__.Helper.GDI.RecordType.META_PATBLT:\n                case _Helper__WEBPACK_IMPORTED_MODULE_2__.Helper.GDI.RecordType.META_PIE:\n                case _Helper__WEBPACK_IMPORTED_MODULE_2__.Helper.GDI.RecordType.META_STRETCHBLT:\n                case _Helper__WEBPACK_IMPORTED_MODULE_2__.Helper.GDI.RecordType.META_INVERTREGION:\n                case _Helper__WEBPACK_IMPORTED_MODULE_2__.Helper.GDI.RecordType.META_PAINTREGION:\n                case _Helper__WEBPACK_IMPORTED_MODULE_2__.Helper.GDI.RecordType.META_ARC:\n                case _Helper__WEBPACK_IMPORTED_MODULE_2__.Helper.GDI.RecordType.META_CHORD:\n                case _Helper__WEBPACK_IMPORTED_MODULE_2__.Helper.GDI.RecordType.META_BITBLT:\n                case _Helper__WEBPACK_IMPORTED_MODULE_2__.Helper.GDI.RecordType.META_SETDIBTODEV:\n                case _Helper__WEBPACK_IMPORTED_MODULE_2__.Helper.GDI.RecordType.META_DIBBITBLT:\n                default: {\n                    var recordName = \"UNKNOWN\";\n                    for (var name_1 in _Helper__WEBPACK_IMPORTED_MODULE_2__.Helper.GDI.RecordType) {\n                        var recordTypes = _Helper__WEBPACK_IMPORTED_MODULE_2__.Helper.GDI.RecordType;\n                        if (recordTypes[name_1] === type) {\n                            recordName = name_1;\n                            break;\n                        }\n                    }\n                    _Helper__WEBPACK_IMPORTED_MODULE_2__.Helper.log(\"[WMF] \" + recordName + \" record (0x\" + type.toString(16) + \") at offset 0x\"\n                        + curpos.toString(16) + \" with \" + (size * 2) + \" bytes\");\n                    break;\n                }\n            }\n            curpos += size * 2;\n        };\n        var this_1 = this;\n        main_loop: while (!all) {\n            var state_1 = _loop_1();\n            switch (state_1) {\n                case \"break-main_loop\": break main_loop;\n            }\n        }\n        if (!all) {\n            throw new _Helper__WEBPACK_IMPORTED_MODULE_2__.WMFJSError(\"Could not read all records\");\n        }\n    }\n    WMFRecords.prototype.play = function (gdi) {\n        var len = this._records.length;\n        for (var i = 0; i < len; i++) {\n            this._records[i](gdi);\n        }\n    };\n    return WMFRecords;\n}());\n\n\n\n/***/ })\n\n/******/ \t});\n/************************************************************************/\n/******/ \t// The module cache\n/******/ \tvar __webpack_module_cache__ = {};\n/******/ \t\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n/******/ \t\t// Check if module is in cache\n/******/ \t\tvar cachedModule = __webpack_module_cache__[moduleId];\n/******/ \t\tif (cachedModule !== undefined) {\n/******/ \t\t\treturn cachedModule.exports;\n/******/ \t\t}\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = __webpack_module_cache__[moduleId] = {\n/******/ \t\t\t// no module.id needed\n/******/ \t\t\t// no module.loaded needed\n/******/ \t\t\texports: {}\n/******/ \t\t};\n/******/ \t\n/******/ \t\t// Execute the module function\n/******/ \t\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n/******/ \t\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/ \t\n/************************************************************************/\n/******/ \t/* webpack/runtime/define property getters */\n/******/ \t(() => {\n/******/ \t\t// define getter functions for harmony exports\n/******/ \t\t__webpack_require__.d = (exports, definition) => {\n/******/ \t\t\tfor(var key in definition) {\n/******/ \t\t\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n/******/ \t\t\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n/******/ \t\t\t\t}\n/******/ \t\t\t}\n/******/ \t\t};\n/******/ \t})();\n/******/ \t\n/******/ \t/* webpack/runtime/hasOwnProperty shorthand */\n/******/ \t(() => {\n/******/ \t\t__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))\n/******/ \t})();\n/******/ \t\n/******/ \t/* webpack/runtime/make namespace object */\n/******/ \t(() => {\n/******/ \t\t// define __esModule on exports\n/******/ \t\t__webpack_require__.r = (exports) => {\n/******/ \t\t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n/******/ \t\t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n/******/ \t\t\t}\n/******/ \t\t\tObject.defineProperty(exports, '__esModule', { value: true });\n/******/ \t\t};\n/******/ \t})();\n/******/ \t\n/************************************************************************/\nvar __webpack_exports__ = {};\n// This entry need to be wrapped in an IIFE because it need to be isolated against other modules in the chunk.\n(() => {\n/*!****************************!*\\\n  !*** ./src/wmfjs/index.ts ***!\n  \\****************************/\n__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   \"Renderer\": () => (/* reexport safe */ _Renderer__WEBPACK_IMPORTED_MODULE_0__.Renderer),\n/* harmony export */   \"Error\": () => (/* reexport safe */ _Helper__WEBPACK_IMPORTED_MODULE_1__.WMFJSError),\n/* harmony export */   \"loggingEnabled\": () => (/* reexport safe */ _Helper__WEBPACK_IMPORTED_MODULE_1__.loggingEnabled)\n/* harmony export */ });\n/* harmony import */ var _Renderer__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./Renderer */ \"./src/wmfjs/Renderer.ts\");\n/* harmony import */ var _Helper__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./Helper */ \"./src/wmfjs/Helper.ts\");\n/*\n\nThe MIT License (MIT)\n\nCopyright (c) 2015 Thomas Bluemel\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n\n*/\n\n\n\n})();\n\n/******/ \treturn __webpack_exports__;\n/******/ })()\n;\n});\n//# sourceMappingURL=WMFJS.bundle.js.map"
  },
  {
    "path": "application/public/js/djvu.js",
    "content": "var DjVu = (function () {\n    'use strict';\n\n    function DjVuScript() {\n    'use strict';\n\n    var DjVu = {\n        VERSION: '0.5.3',\n        IS_DEBUG: false,\n        setDebugMode: (flag) => DjVu.IS_DEBUG = flag\n    };\n    function pLimit(limit = 4) {\n        const queue = [];\n        let running = 0;\n        const runNext = async () => {\n            if (!queue.length || running >= limit) return;\n            const func = queue.shift();\n            try {\n                running++;\n                await func();\n            } finally {\n                running--;\n                runNext();\n            }\n        };\n        return func => new Promise((resolve, reject) => {\n            queue.push(() => func().then(resolve, reject));\n            runNext();\n        });\n    }\n    function loadFileViaXHR(url, responseType = 'arraybuffer') {\n        return new Promise((resolve, reject) => {\n            var xhr = new XMLHttpRequest();\n            xhr.open(\"GET\", url);\n            xhr.responseType = responseType;\n            xhr.onload = (e) => resolve(xhr);\n            xhr.onerror = (e) => reject(xhr);\n            xhr.send();\n        });\n    }\n    const utf8Decoder = self.TextDecoder ? new self.TextDecoder() : {\n        decode(utf8array) {\n            const codePoints = utf8ToCodePoints(utf8array);\n            return String.fromCodePoint(...codePoints);\n        }\n    };\n    function createStringFromUtf8Array(utf8array) {\n        return utf8Decoder.decode(utf8array);\n    }\n    function utf8ToCodePoints(utf8array) {\n        var i, c;\n        var codePoints = [];\n        i = 0;\n        while (i < utf8array.length) {\n            c = utf8array[i++];\n            switch (c >> 4) {\n                case 0: case 1: case 2: case 3: case 4: case 5: case 6: case 7:\n                    codePoints.push(c);\n                    break;\n                case 12: case 13:\n                    codePoints.push(((c & 0x1F) << 6) | (utf8array[i++] & 0x3F));\n                    break;\n                case 14:\n                    codePoints.push(\n                        ((c & 0x0F) << 12) |\n                        ((utf8array[i++] & 0x3F) << 6) |\n                        (utf8array[i++] & 0x3F)\n                    );\n                    break;\n                case 15:\n                    codePoints.push(\n                        ((c & 0x07) << 18) |\n                        ((utf8array[i++] & 0x3F) << 12) |\n                        ((utf8array[i++] & 0x3F) << 6) |\n                        (utf8array[i++] & 0x3F)\n                    );\n                    break;\n            }\n        }\n        return codePoints.map(codePoint => {\n            return codePoint > 0x10FFFF ? 120 : codePoint;\n        });\n    }\n    function codePointsToUtf8(codePoints) {\n        var utf8array = [];\n        codePoints.forEach(codePoint => {\n            if (codePoint < 0x80) {\n                utf8array.push(codePoint);\n            } else if (codePoint < 0x800) {\n                utf8array.push(0xC0 | (codePoint >> 6));\n                utf8array.push(0x80 | (codePoint & 0x3F));\n            } else if (codePoint < 0x10000) {\n                utf8array.push(0xE0 | (codePoint >> 12));\n                utf8array.push(0x80 | ((codePoint >> 6) & 0x3F));\n                utf8array.push(0x80 | (codePoint & 0x3F));\n            } else {\n                utf8array.push(0xF0 | (codePoint >> 18));\n                utf8array.push(0x80 | ((codePoint >> 12) & 0x3F));\n                utf8array.push(0x80 | ((codePoint >> 6) & 0x3F));\n                utf8array.push(0x80 | (codePoint & 0x3F));\n            }\n        });\n        return new Uint8Array(utf8array);\n    }\n    function stringToCodePoints(str) {\n        var codePoints = [];\n        for (var i = 0; i < str.length; i++) {\n            var code = str.codePointAt(i);\n            codePoints.push(code);\n            if (code > 65535) {\n                i++;\n            }\n        }\n        return codePoints;\n    }\n\n    const pageSize = 64 * 1024;\n    const growthLimit = 20 * 1024 * 1024 / pageSize;\n    class ByteStreamWriter {\n        constructor(length = 0) {\n            this.memory = new WebAssembly.Memory({ initial: Math.ceil(length / pageSize), maximum: 65536 });\n            this.assignBufferFromMemory();\n            this.offset = 0;\n            this.offsetMarks = {};\n        }\n        assignBufferFromMemory() {\n            this.buffer = this.memory.buffer;\n            this.viewer = new DataView(this.buffer);\n        }\n        reset() {\n            this.offset = 0;\n            this.offsetMarks = {};\n        }\n        saveOffsetMark(mark) {\n            this.offsetMarks[mark] = this.offset;\n            return this;\n        }\n        writeByte(byte) {\n            this.checkOffset(1);\n            this.viewer.setUint8(this.offset++, byte);\n            return this;\n        }\n        writeStr(str) {\n            this.writeArray(codePointsToUtf8(stringToCodePoints(str)));\n            return this;\n        }\n        writeInt32(val) {\n            this.checkOffset(4);\n            this.viewer.setInt32(this.offset, val);\n            this.offset += 4;\n            return this;\n        }\n        rewriteInt32(off, val) {\n            var xoff = off;\n            if (typeof (xoff) === 'string') {\n                xoff = this.offsetMarks[off];\n                this.offsetMarks[off] += 4;\n            }\n            this.viewer.setInt32(xoff, val);\n        }\n        rewriteSize(offmark) {\n            if (!this.offsetMarks[offmark]) throw new Error('Unexisting offset mark');\n            var xoff = this.offsetMarks[offmark];\n            this.viewer.setInt32(xoff, this.offset - xoff - 4);\n        }\n        getBuffer() {\n            if (this.offset === this.buffer.byteLength) {\n                return this.buffer;\n            }\n            return this.buffer.slice(0, this.offset);\n        }\n        checkOffset(requiredBytesNumber = 0) {\n            const bool = this.offset + requiredBytesNumber > this.buffer.byteLength;\n            if (bool) {\n                this._expand(requiredBytesNumber);\n            }\n            return bool;\n        }\n        _expand(requiredBytesNumber) {\n            this.memory.grow(Math.max(\n                Math.ceil(requiredBytesNumber / pageSize),\n                Math.min(this.memory.buffer.byteLength / pageSize, growthLimit)\n            ));\n            this.assignBufferFromMemory();\n        }\n        jump(length) {\n            length = +length;\n            if (length > 0) {\n                this.checkOffset(length);\n            }\n            this.offset += length;\n            return this;\n        }\n        writeByteStream(bs) {\n            this.writeArray(bs.toUint8Array());\n        }\n        writeArray(arr) {\n            while (this.checkOffset(arr.length)) { }\n            new Uint8Array(this.buffer).set(arr, this.offset);\n            this.offset += arr.length;\n        }\n        writeBuffer(buffer) {\n            this.writeArray(new Uint8Array(buffer));\n        }\n        writeStrNT(str) {\n            this.writeStr(str);\n            this.writeByte(0);\n        }\n        writeInt16(val) {\n            this.checkOffset(2);\n            this.viewer.setInt16(this.offset, val);\n            this.offset += 2;\n            return this;\n        }\n        writeUint16(val) {\n            this.checkOffset(2);\n            this.viewer.setUint16(this.offset, val);\n            this.offset += 2;\n            return this;\n        }\n        writeInt24(val) {\n            this.writeByte((val >> 16) & 0xff)\n                .writeByte((val >> 8) & 0xff)\n                .writeByte(val & 0xff);\n            return this;\n        }\n    }\n\n    class ZPEncoder {\n        constructor(bsw) {\n            this.bsw = bsw || new ByteStreamWriter();\n            this.a = 0;\n            this.scount = 0;\n            this.byte = 0;\n            this.delay = 25;\n            this.subend = 0;\n            this.buffer = 0xffffff;\n            this.nrun = 0;\n        }\n        outbit(bit) {\n            if (this.delay > 0) {\n                if (this.delay < 0xff)\n                    this.delay -= 1;\n            }\n            else {\n                this.byte = (this.byte << 1) | bit;\n                if (++this.scount == 8) {\n                    this.bsw.writeByte(this.byte);\n                    this.scount = 0;\n                    this.byte = 0;\n                }\n            }\n        }\n        zemit(b) {\n            this.buffer = (this.buffer << 1) + b;\n            b = (this.buffer >> 24);\n            this.buffer = (this.buffer & 0xffffff);\n            switch (b) {\n                case 1:\n                    this.outbit(1);\n                    while (this.nrun-- > 0)\n                        this.outbit(0);\n                    this.nrun = 0;\n                    break;\n                case 0xff:\n                    this.outbit(0);\n                    while (this.nrun-- > 0)\n                        this.outbit(1);\n                    this.nrun = 0;\n                    break;\n                case 0:\n                    this.nrun += 1;\n                    break;\n                default:\n                    throw new Exception('ZPEncoder::zemit() error!');\n            }\n        }\n        encode(bit, ctx, n) {\n            bit = +bit;\n            if (!ctx) {\n                return this._ptencode(bit, 0x8000 + (this.a >> 1));\n            }\n            var z = this.a + this.p[ctx[n]];\n            if (bit != (ctx[n] & 1)) {\n                var d = 0x6000 + ((z + this.a) >> 2);\n                if (z > d) {\n                    z = d;\n                }\n                ctx[n] = this.dn[ctx[n]];\n                z = 0x10000 - z;\n                this.subend += z;\n                this.a += z;\n            } else if (z >= 0x8000) {\n                var d = 0x6000 + ((z + this.a) >> 2);\n                if (z > d) {\n                    z = d;\n                }\n                if (this.a >= this.m[ctx[n]])\n                    ctx[n] = this.up[ctx[n]];\n                this.a = z;\n            } else {\n                this.a = z;\n                return;\n            }\n            while (this.a >= 0x8000) {\n                this.zemit(1 - (this.subend >> 15));\n                this.subend = 0xffff & (this.subend << 1);\n                this.a = 0xffff & (this.a << 1);\n            }\n        }\n        IWencode(bit) {\n            this._ptencode(bit, 0x8000 + ((this.a + this.a + this.a) >> 3));\n        }\n        _ptencode(bit, z) {\n            if (bit) {\n                z = 0x10000 - z;\n                this.subend += z;\n                this.a += z;\n            } else {\n                this.a = z;\n            }\n            while (this.a >= 0x8000) {\n                this.zemit(1 - (this.subend >> 15));\n                this.subend = 0xffff & (this.subend << 1);\n                this.a = 0xffff & (this.a << 1);\n            }\n        }\n        eflush() {\n            if (this.subend > 0x8000)\n                this.subend = 0x10000;\n            else if (this.subend > 0)\n                this.subend = 0x8000;\n            while (this.buffer != 0xffffff || this.subend) {\n                this.zemit(1 - (this.subend >> 15));\n                this.subend = 0xffff & (this.subend << 1);\n            }\n            this.outbit(1);\n            while (this.nrun-- > 0)\n                this.outbit(0);\n            this.nrun = 0;\n            while (this.scount > 0)\n                this.outbit(1);\n            this.delay = 0xff;\n        }\n    }\n    class ZPDecoder {\n        constructor(bs) {\n            this.bs = bs;\n            this.a = 0x0000;\n            this.c = this.bs.byte();\n            this.c <<= 8;\n            var tmp = this.bs.byte();\n            this.c |= tmp;\n            this.z = 0;\n            this.d = 0;\n            this.f = Math.min(this.c, 0x7fff);\n            this.ffzt = new Int8Array(256);\n            for (var i = 0; i < 256; i++) {\n                this.ffzt[i] = 0;\n                for (var j = i; j & 0x80; j <<= 1)\n                    this.ffzt[i] += 1;\n            }\n            this.delay = 25;\n            this.scount = 0;\n            this.buffer = 0;\n            this.preload();\n        }\n        preload() {\n            while (this.scount <= 24) {\n                var byte = this.bs.byte();\n                this.buffer = (this.buffer << 8) | byte;\n                this.scount += 8;\n            }\n        }\n        ffz(x) {\n            return (x >= 0xff00) ? (this.ffzt[x & 0xff] + 8) : (this.ffzt[(x >> 8) & 0xff]);\n        }\n        decode(ctx, n) {\n            if (!ctx) {\n                return this._ptdecode(0x8000 + (this.a >> 1));\n            }\n            this.b = ctx[n] & 1;\n            this.z = this.a + this.p[ctx[n]];\n            if (this.z <= this.f) {\n                this.a = this.z;\n                return this.b;\n            }\n            this.d = 0x6000 + ((this.a + this.z) >> 2);\n            if (this.z > this.d) {\n                this.z = this.d;\n            }\n            if (this.z > this.c) {\n                this.b = 1 - this.b;\n                this.z = 0x10000 - this.z;\n                this.a += this.z;\n                this.c += this.z;\n                ctx[n] = this.dn[ctx[n]];\n                var shift = this.ffz(this.a);\n                this.scount -= shift;\n                this.a = 0xffff & (this.a << shift);\n                this.c = 0xffff & (\n                    (this.c << shift) | (this.buffer >> this.scount) & ((1 << shift) - 1)\n                );\n            }\n            else {\n                if (this.a >= this.m[ctx[n]]) {\n                    ctx[n] = this.up[ctx[n]];\n                }\n                this.scount--;\n                this.a = 0xffff & (this.z << 1);\n                this.c = 0xffff & (\n                    (this.c << 1) | ((this.buffer >> this.scount) & 1)\n                );\n            }\n            if (this.scount < 16)\n                this.preload();\n            this.f = Math.min(this.c, 0x7fff);\n            return this.b;\n        }\n        IWdecode() {\n            return this._ptdecode(0x8000 + ((this.a + this.a + this.a) >> 3));\n        }\n        _ptdecode(z) {\n            this.b = 0;\n            if (z > this.c) {\n                this.b = 1;\n                z = 0x10000 - z;\n                this.a += z;\n                this.c += z;\n                var shift = this.ffz(this.a);\n                this.scount -= shift;\n                this.a = 0xffff & (this.a << shift);\n                this.c = 0xffff & (\n                    (this.c << shift) | (this.buffer >> this.scount) & ((1 << shift) - 1)\n                );\n            }\n            else {\n                this.b = 0;\n                this.scount--;\n                this.a = 0xffff & (z << 1);\n                this.c = 0xffff & (\n                    (this.c << 1) | ((this.buffer >> this.scount) & 1)\n                );\n            }\n            if (this.scount < 16)\n                this.preload();\n            this.f = Math.min(this.c, 0x7fff);\n            return this.b;\n        }\n    }\n    ZPEncoder.prototype.p = ZPDecoder.prototype.p = Uint16Array.of(\n        0x8000, 0x8000, 0x8000, 0x6bbd, 0x6bbd, 0x5d45, 0x5d45, 0x51b9, 0x51b9, 0x4813,\n        0x4813, 0x3fd5, 0x3fd5, 0x38b1, 0x38b1, 0x3275, 0x3275, 0x2cfd, 0x2cfd, 0x2825,\n        0x2825, 0x23ab, 0x23ab, 0x1f87, 0x1f87, 0x1bbb, 0x1bbb, 0x1845, 0x1845, 0x1523,\n        0x1523, 0x1253, 0x1253, 0xfcf, 0xfcf, 0xd95, 0xd95, 0xb9d, 0xb9d, 0x9e3,\n        0x9e3, 0x861, 0x861, 0x711, 0x711, 0x5f1, 0x5f1, 0x4f9, 0x4f9, 0x425,\n        0x425, 0x371, 0x371, 0x2d9, 0x2d9, 0x259, 0x259, 0x1ed, 0x1ed, 0x193,\n        0x193, 0x149, 0x149, 0x10b, 0x10b, 0xd5, 0xd5, 0xa5, 0xa5, 0x7b,\n        0x7b, 0x57, 0x57, 0x3b, 0x3b, 0x23, 0x23, 0x13, 0x13, 0x7,\n        0x7, 0x1, 0x1, 0x5695, 0x24ee, 0x8000, 0xd30, 0x481a, 0x481, 0x3579,\n        0x17a, 0x24ef, 0x7b, 0x1978, 0x28, 0x10ca, 0xd, 0xb5d, 0x34, 0x78a,\n        0xa0, 0x50f, 0x117, 0x358, 0x1ea, 0x234, 0x144, 0x173, 0x234, 0xf5,\n        0x353, 0xa1, 0x5c5, 0x11a, 0x3cf, 0x1aa, 0x285, 0x286, 0x1ab, 0x3d3,\n        0x11a, 0x5c5, 0xba, 0x8ad, 0x7a, 0xccc, 0x1eb, 0x1302, 0x2e6, 0x1b81,\n        0x45e, 0x24ef, 0x690, 0x2865, 0x9de, 0x3987, 0xdc8, 0x2c99, 0x10ca, 0x3b5f,\n        0xb5d, 0x5695, 0x78a, 0x8000, 0x50f, 0x24ee, 0x358, 0xd30, 0x234, 0x481,\n        0x173, 0x17a, 0xf5, 0x7b, 0xa1, 0x28, 0x11a, 0xd, 0x1aa, 0x34,\n        0x286, 0xa0, 0x3d3, 0x117, 0x5c5, 0x1ea, 0x8ad, 0x144, 0xccc, 0x234,\n        0x1302, 0x353, 0x1b81, 0x5c5, 0x24ef, 0x3cf, 0x2b74, 0x285, 0x201d, 0x1ab,\n        0x1715, 0x11a, 0xfb7, 0xba, 0xa67, 0x1eb, 0x6e7, 0x2e6, 0x496, 0x45e,\n        0x30d, 0x690, 0x206, 0x9de, 0x155, 0xdc8, 0xe1, 0x2b74, 0x94, 0x201d,\n        0x188, 0x1715, 0x252, 0xfb7, 0x383, 0xa67, 0x547, 0x6e7, 0x7e2, 0x496,\n        0xbc0, 0x30d, 0x1178, 0x206, 0x19da, 0x155, 0x24ef, 0xe1, 0x320e, 0x94,\n        0x432a, 0x188, 0x447d, 0x252, 0x5ece, 0x383, 0x8000, 0x547, 0x481a, 0x7e2,\n        0x3579, 0xbc0, 0x24ef, 0x1178, 0x1978, 0x19da, 0x2865, 0x24ef, 0x3987, 0x320e,\n        0x2c99, 0x432a, 0x3b5f, 0x447d, 0x5695, 0x5ece, 0x8000, 0x8000, 0x5695, 0x481a, 0x481a\n    );\n    ZPEncoder.prototype.m = ZPDecoder.prototype.m = Uint16Array.of(\n        0x0, 0x0, 0x0, 0x10a5, 0x10a5, 0x1f28, 0x1f28, 0x2bd3, 0x2bd3, 0x36e3,\n        0x36e3, 0x408c, 0x408c, 0x48fd, 0x48fd, 0x505d, 0x505d, 0x56d0, 0x56d0, 0x5c71,\n        0x5c71, 0x615b, 0x615b, 0x65a5, 0x65a5, 0x6962, 0x6962, 0x6ca2, 0x6ca2, 0x6f74,\n        0x6f74, 0x71e6, 0x71e6, 0x7404, 0x7404, 0x75d6, 0x75d6, 0x7768, 0x7768, 0x78c2,\n        0x78c2, 0x79ea, 0x79ea, 0x7ae7, 0x7ae7, 0x7bbe, 0x7bbe, 0x7c75, 0x7c75, 0x7d0f,\n        0x7d0f, 0x7d91, 0x7d91, 0x7dfe, 0x7dfe, 0x7e5a, 0x7e5a, 0x7ea6, 0x7ea6, 0x7ee6,\n        0x7ee6, 0x7f1a, 0x7f1a, 0x7f45, 0x7f45, 0x7f6b, 0x7f6b, 0x7f8d, 0x7f8d, 0x7faa,\n        0x7faa, 0x7fc3, 0x7fc3, 0x7fd7, 0x7fd7, 0x7fe7, 0x7fe7, 0x7ff2, 0x7ff2, 0x7ffa,\n        0x7ffa, 0x7fff, 0x7fff, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n        0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n        0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n        0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n        0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n        0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n        0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n        0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n        0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n        0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n        0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n        0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n        0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n        0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n        0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n        0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,\n        0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0\n    );\n    ZPEncoder.prototype.up = ZPDecoder.prototype.up = Uint8Array.of(\n        84, 3, 4, 5, 6, 7, 8, 9, 10, 11,\n        12, 13, 14, 15, 16, 17, 18, 19, 20, 21,\n        22, 23, 24, 25, 26, 27, 28, 29, 30, 31,\n        32, 33, 34, 35, 36, 37, 38, 39, 40, 41,\n        42, 43, 44, 45, 46, 47, 48, 49, 50, 51,\n        52, 53, 54, 55, 56, 57, 58, 59, 60, 61,\n        62, 63, 64, 65, 66, 67, 68, 69, 70, 71,\n        72, 73, 74, 75, 76, 77, 78, 79, 80, 81,\n        82, 81, 82, 9, 86, 5, 88, 89, 90, 91,\n        92, 93, 94, 95, 96, 97, 82, 99, 76, 101,\n        70, 103, 66, 105, 106, 107, 66, 109, 60, 111,\n        56, 69, 114, 65, 116, 61, 118, 57, 120, 53,\n        122, 49, 124, 43, 72, 39, 60, 33, 56, 29,\n        52, 23, 48, 23, 42, 137, 38, 21, 140, 15,\n        142, 9, 144, 141, 146, 147, 148, 149, 150, 151,\n        152, 153, 154, 155, 70, 157, 66, 81, 62, 75,\n        58, 69, 54, 65, 50, 167, 44, 65, 40, 59,\n        34, 55, 30, 175, 24, 177, 178, 179, 180, 181,\n        182, 183, 184, 69, 186, 59, 188, 55, 190, 51,\n        192, 47, 194, 41, 196, 37, 198, 199, 72, 201,\n        62, 203, 58, 205, 54, 207, 50, 209, 46, 211,\n        40, 213, 36, 215, 30, 217, 26, 219, 20, 71,\n        14, 61, 14, 57, 8, 53, 228, 49, 230, 45,\n        232, 39, 234, 35, 138, 29, 24, 25, 240, 19,\n        22, 13, 16, 13, 10, 7, 244, 249, 10, 89, 230\n    );\n    ZPEncoder.prototype.dn = ZPDecoder.prototype.dn = Uint8Array.of(\n        145, 4, 3, 1, 2, 3, 4, 5, 6, 7,\n        8, 9, 10, 11, 12, 13, 14, 15, 16, 17,\n        18, 19, 20, 21, 22, 23, 24, 25, 26, 27,\n        28, 29, 30, 31, 32, 33, 34, 35, 36, 37,\n        38, 39, 40, 41, 42, 43, 44, 45, 46, 47,\n        48, 49, 50, 51, 52, 53, 54, 55, 56, 57,\n        58, 59, 60, 61, 62, 63, 64, 65, 66, 67,\n        68, 69, 70, 71, 72, 73, 74, 75, 76, 77,\n        78, 79, 80, 85, 226, 6, 176, 143, 138, 141,\n        112, 135, 104, 133, 100, 129, 98, 127, 72, 125,\n        102, 123, 60, 121, 110, 119, 108, 117, 54, 115,\n        48, 113, 134, 59, 132, 55, 130, 51, 128, 47,\n        126, 41, 62, 37, 66, 31, 54, 25, 50, 131,\n        46, 17, 40, 15, 136, 7, 32, 139, 172, 9,\n        170, 85, 168, 248, 166, 247, 164, 197, 162, 95,\n        160, 173, 158, 165, 156, 161, 60, 159, 56, 71,\n        52, 163, 48, 59, 42, 171, 38, 169, 32, 53,\n        26, 47, 174, 193, 18, 191, 222, 189, 218, 187,\n        216, 185, 214, 61, 212, 53, 210, 49, 208, 45,\n        206, 39, 204, 195, 202, 31, 200, 243, 64, 239,\n        56, 237, 52, 235, 48, 233, 44, 231, 38, 229,\n        34, 227, 28, 225, 22, 223, 16, 221, 220, 63,\n        8, 55, 224, 51, 2, 47, 87, 43, 246, 37,\n        244, 33, 238, 27, 236, 21, 16, 15, 8, 241,\n        242, 7, 10, 245, 2, 1, 83, 250, 2, 143, 246\n    );\n\n    class Bitmap {\n        constructor(width, height) {\n            var length = Math.ceil(width * height / 8);\n            this.height = height;\n            this.width = width;\n            this.innerArray = new Uint8Array(length);\n        }\n        getBits(i, j, bitNumber) {\n            if (!this.hasRow(i) || j >= this.width) {\n                return 0;\n            }\n            if (j < 0) {\n                bitNumber += j;\n                j = 0;\n            }\n            var tmp = i * this.width + j;\n            var index = tmp >> 3;\n            var bitIndex = tmp & 7;\n            var mask = 32768 >>> bitIndex;\n            var twoBytes = ((this.innerArray[index] << 8) | (this.innerArray[index + 1] || 0));\n            var existingBits = this.width - j;\n            var border = bitNumber < existingBits ? bitNumber : existingBits;\n            for (var k = 1; k < border; k++) {\n                mask |= 32768 >>> (bitIndex + k);\n            }\n            return (twoBytes & mask) >>> (16 - bitIndex - bitNumber);\n        }\n        get(i, j) {\n            if (!this.hasRow(i) || j < 0 || j >= this.width) {\n                return 0;\n            }\n            var tmp = i * this.width + j;\n            var index = tmp >> 3;\n            var bitIndex = tmp & 7;\n            var mask = 128 >> bitIndex;\n            return (this.innerArray[index] & mask) ? 1 : 0;\n        }\n        set(i, j) {\n            var tmp = i * this.width + j;\n            var index = tmp >> 3;\n            var bitIndex = tmp & 7;\n            var mask = 128 >> bitIndex;\n            this.innerArray[index] |= mask;\n            return;\n        }\n        hasRow(r) {\n            return r >= 0 && r < this.height;\n        }\n        removeEmptyEdges() {\n            var bottomShift = 0;\n            var topShift = 0;\n            var leftShift = 0;\n            var rightShift = 0;\n            main_cycle: for (var i = 0; i < this.height; i++) {\n                for (var j = 0; j < this.width; j++) {\n                    if (this.get(i, j)) {\n                        break main_cycle;\n                    }\n                }\n                bottomShift++;\n            }\n            main_cycle: for (var i = this.height - 1; i >= 0; i--) {\n                for (var j = 0; j < this.width; j++) {\n                    if (this.get(i, j)) {\n                        break main_cycle;\n                    }\n                }\n                topShift++;\n            }\n            main_cycle: for (var j = 0; j < this.width; j++) {\n                for (var i = 0; i < this.height; i++) {\n                    if (this.get(i, j)) {\n                        break main_cycle;\n                    }\n                }\n                leftShift++;\n            }\n            main_cycle: for (var j = this.width - 1; j >= 0; j--) {\n                for (var i = 0; i < this.height; i++) {\n                    if (this.get(i, j)) {\n                        break main_cycle;\n                    }\n                }\n                rightShift++;\n            }\n            if (topShift || bottomShift || leftShift || rightShift) {\n                var newWidth = this.width - leftShift - rightShift;\n                var newHeight = this.height - topShift - bottomShift;\n                var newBitMap = new Bitmap(newWidth, newHeight);\n                for (var i = bottomShift, p = 0; p < newHeight; p++ , i++) {\n                    for (var j = leftShift, q = 0; q < newWidth; q++ , j++) {\n                        if (this.get(i, j)) {\n                            newBitMap.set(p, q);\n                        }\n                    }\n                }\n                return newBitMap;\n            }\n            return this;\n        }\n    }\n    class NumContext {\n        constructor() {\n            this.ctx = [0];\n            this._left = null;\n            this._right = null;\n        }\n        get left() {\n            if (!this._left) {\n                this._left = new NumContext();\n            }\n            return this._left;\n        }\n        get right() {\n            if (!this._right) {\n                this._right = new NumContext();\n            }\n            return this._right;\n        }\n    }\n    class Baseline {\n        constructor() {\n            this.arr = new Array(3);\n            this.fill(0);\n            this.index = -1;\n        }\n        add(val) {\n            if (++this.index === 3) {\n                this.index = 0;\n            }\n            this.arr[this.index] = val;\n        }\n        getVal() {\n            if (this.arr[0] >= this.arr[1] && this.arr[0] <= this.arr[2]\n                || this.arr[0] <= this.arr[1] && this.arr[0] >= this.arr[2]) {\n                return this.arr[0];\n            }\n            else if (this.arr[1] >= this.arr[0] && this.arr[1] <= this.arr[2]\n                || this.arr[1] <= this.arr[0] && this.arr[1] >= this.arr[2]) {\n                return this.arr[1];\n            } else {\n                return this.arr[2];\n            }\n        }\n        fill(val) {\n            this.arr[0] = this.arr[1] = this.arr[2] = val;\n        }\n    }\n\n    class DjVuError {\n        constructor(code, message, additionalData = null) {\n            this.code = code;\n            this.message = message;\n            if (additionalData) this.additionalData = additionalData;\n        }\n    }\n    class IncorrectFileFormatDjVuError extends DjVuError {\n        constructor() {\n            super(DjVuErrorCodes.INCORRECT_FILE_FORMAT, \"The provided file is not a .djvu file!\");\n        }\n    }\n    class NoSuchPageDjVuError extends DjVuError {\n        constructor(pageNumber) {\n            super(DjVuErrorCodes.NO_SUCH_PAGE, \"There is no page with the number \" + pageNumber + \" !\");\n            this.pageNumber = pageNumber;\n        }\n    }\n    class CorruptedFileDjVuError extends DjVuError {\n        constructor(message = \"\", data = null) {\n            super(DjVuErrorCodes.FILE_IS_CORRUPTED, \"The file is corrupted! \" + message, data);\n        }\n    }\n    class UnableToTransferDataDjVuError extends DjVuError {\n        constructor(tasks) {\n            super(DjVuErrorCodes.DATA_CANNOT_BE_TRANSFERRED,\n                \"The data cannot be transferred from the worker to the main page! \" +\n                \"Perhaps, you requested a complex object like DjVuPage, but only simple objects can be transferred between workers.\"\n            );\n            this.tasks = tasks;\n        }\n    }\n    class IncorrectTaskDjVuError extends DjVuError {\n        constructor(task) {\n            super(DjVuErrorCodes.INCORRECT_TASK, \"The task contains an incorrect sequence of functions!\");\n            this.task = task;\n        }\n    }\n    class NoBaseUrlDjVuError extends DjVuError {\n        constructor() {\n            super(DjVuErrorCodes.NO_BASE_URL,\n                \"The base URL is required for the indirect djvu to load components,\" +\n                \" but no base URL was provided to the document constructor!\"\n            );\n        }\n    }\n    function getErrorMessageByData(data) {\n        var message = '';\n        if (data.pageNumber) {\n            if (data.dependencyId) {\n                message = `A dependency ${data.dependencyId} for the page number ${data.pageNumber} can't be loaded!\\n`;\n            } else {\n                message = `The page number ${data.pageNumber} can't be loaded!`;\n            }\n        } else if (data.dependencyId) {\n            message = `A dependency ${data.dependencyId} can't be loaded!\\n`;\n        }\n        return message;\n    }\n    class UnsuccessfulRequestDjVuError extends DjVuError {\n        constructor(xhr, data = { pageNumber: null, dependencyId: null }) {\n            var message = getErrorMessageByData(data);\n            super(DjVuErrorCodes.UNSUCCESSFUL_REQUEST,\n                message + '\\n' +\n                `The request to ${xhr.responseURL} wasn't successful.\\n` +\n                `The response status is ${xhr.status}.\\n` +\n                `The response status text is: \"${xhr.statusText}\".`\n            );\n            this.status = xhr.status;\n            this.statusText = xhr.statusText;\n            this.url = xhr.responseURL;\n            if (data.pageNumber) {\n                this.pageNumber = data.pageNumber;\n            }\n            if (data.dependencyId) {\n                this.dependencyId = data.dependencyId;\n            }\n        }\n    }\n    class NetworkDjVuError extends DjVuError {\n        constructor(data = { pageNumber: null, dependencyId: null, url: null }) {\n            super(DjVuErrorCodes.NETWORK_ERROR,\n                getErrorMessageByData(data) + '\\n' +\n                \"A network error occurred! Check your network connection!\"\n            );\n            if (data.pageNumber) {\n                this.pageNumber = data.pageNumber;\n            }\n            if (data.dependencyId) {\n                this.dependencyId = data.dependencyId;\n            }\n            if (data.url) {\n                this.url = data.url;\n            }\n        }\n    }\n    const DjVuErrorCodes = Object.freeze({\n        FILE_IS_CORRUPTED: 'FILE_IS_CORRUPTED',\n        INCORRECT_FILE_FORMAT: 'INCORRECT_FILE_FORMAT',\n        NO_SUCH_PAGE: 'NO_SUCH_PAGE',\n        UNEXPECTED_ERROR: 'UNEXPECTED_ERROR',\n        DATA_CANNOT_BE_TRANSFERRED: 'DATA_CANNOT_BE_TRANSFERRED',\n        INCORRECT_TASK: 'INCORRECT_TASK',\n        NO_BASE_URL: 'NO_BASE_URL',\n        NETWORK_ERROR: 'NETWORK_ERROR',\n        UNSUCCESSFUL_REQUEST: 'UNSUCCESSFUL_REQUEST',\n    });\n\n    class IFFChunk {\n        constructor(bs) {\n            this.id = bs.readStr4();\n            this.length = bs.getInt32();\n            this.bs = bs;\n        }\n        toString() {\n            return this.id + \" \" + this.length + '\\n';\n        }\n    }\n    class CompositeChunk extends IFFChunk {\n        constructor(bs) {\n            super(bs);\n            this.id += ':' + bs.readStr4();\n        }\n        toString(innerString = '') {\n            return super.toString() + '    ' + innerString.replace(/\\n/g, '\\n    ') + '\\n';\n        }\n    }\n    class ColorChunk extends IFFChunk {\n        constructor(bs) {\n            super(bs);\n            this.header = new ColorChunkDataHeader(bs);\n        }\n        toString() {\n            return this.id + \" \" + this.length + this.header.toString();\n        }\n    }\n    class INFOChunk extends IFFChunk {\n        constructor(bs) {\n            super(bs);\n            if (this.length < 5) {\n                throw new CorruptedFileDjVuError(\"The INFO chunk is shorter than 5 bytes!\")\n            }\n            this.width = bs.getInt16();\n            this.height = bs.getInt16();\n            this.minver = bs.getInt8();\n            this.majver = this.length > 5 ? bs.getInt8() : 0;\n            if (this.length > 7) {\n                this.dpi = bs.getUint8();\n                this.dpi |= bs.getUint8() << 8;\n            } else {\n                this.dpi = 300;\n            }\n            this.gamma = this.length > 8 ? bs.getInt8() : 22;\n            this.flags = this.length > 9 ? bs.getInt8() : 0;\n            if (this.dpi < 25 || this.dpi > 6000) {\n                this.dpi = 300;\n            }\n            if (this.gamma < 3) {\n                this.gamma = 3;\n            }\n            if (this.gamma > 50) {\n                this.gamma = 50;\n            }\n        }\n        toString() {\n            var str = super.toString();\n            str += \"{\" + 'width:' + this.width + ', '\n                + 'height:' + this.height + ', '\n                + 'minver:' + this.minver + ', '\n                + 'majver:' + this.majver + ', '\n                + 'dpi:' + this.dpi + ', '\n                + 'gamma:' + this.gamma + ', '\n                + 'flags:' + this.flags + '}\\n';\n            return str;\n        }\n    }\n    class ColorChunkDataHeader {\n        constructor(bs) {\n            this.serial = bs.getUint8();\n            this.slices = bs.getUint8();\n            if (!this.serial) {\n                this.majver = bs.getUint8();\n                this.grayscale = this.majver >> 7;\n                this.minver = bs.getUint8();\n                this.width = bs.getUint16();\n                this.height = bs.getUint16();\n                var byte = bs.getUint8();\n                this.delayInit = byte & 127;\n                if (!byte & 128) {\n                    console.warn('Old image reconstruction should be applied!');\n                }\n            }\n        }\n        toString() {\n            return '\\n' + JSON.stringify(this) + \"\\n\";\n        }\n    }\n    class INCLChunk extends IFFChunk {\n        constructor(bs) {\n            super(bs);\n            this.ref = this.bs.readStrUTF();\n        }\n        toString() {\n            var str = super.toString();\n            str += \"{Reference: \" + this.ref + '}\\n';\n            return str;\n        }\n    }\n    class CIDaChunk extends INCLChunk { }\n    class ErrorChunk {\n        constructor(id, e) {\n            this.id = id;\n            this.e = e;\n        }\n        toString() {\n            return `Error creating ${this.id}: ${this.e.toString()}\\n`;\n        }\n    }\n\n    class JB2Codec extends IFFChunk {\n        constructor(bs) {\n            super(bs);\n            this.zp = new ZPDecoder(this.bs);\n            this.directBitmapCtx = new Uint8Array(1024);\n            this.refinementBitmapCtx = new Uint8Array(2048);\n            this.offsetTypeCtx = [0];\n            this.resetNumContexts();\n        }\n        resetNumContexts() {\n            this.recordTypeCtx = new NumContext();\n            this.imageSizeCtx = new NumContext();\n            this.symbolWidthCtx = new NumContext();\n            this.symbolHeightCtx = new NumContext();\n            this.inheritDictSizeCtx = new NumContext();\n            this.hoffCtx = new NumContext();\n            this.voffCtx = new NumContext();\n            this.shoffCtx = new NumContext();\n            this.svoffCtx = new NumContext();\n            this.symbolIndexCtx = new NumContext();\n            this.symbolHeightDiffCtx = new NumContext();\n            this.symbolWidthDiffCtx = new NumContext();\n            this.commentLengthCtx = new NumContext();\n            this.commentOctetCtx = new NumContext();\n            this.horizontalAbsLocationCtx = new NumContext();\n            this.verticalAbsLocationCtx = new NumContext();\n        }\n        decodeNum(low, high, numctx) {\n            var negative = false;\n            var cutoff;\n            cutoff = 0;\n            for (var phase = 1, range = 0xffffffff; range != 1;) {\n                var decision = (low >= cutoff) || ((high >= cutoff) && this.zp.decode(numctx.ctx, 0));\n                numctx = decision ? numctx.right : numctx.left;\n                switch (phase) {\n                    case 1:\n                        negative = !decision;\n                        if (negative) {\n                            var temp = - low - 1;\n                            low = - high - 1;\n                            high = temp;\n                        }\n                        phase = 2; cutoff = 1;\n                        break;\n                    case 2:\n                        if (!decision) {\n                            phase = 3;\n                            range = (cutoff + 1) / 2;\n                            if (range == 1)\n                                cutoff = 0;\n                            else\n                                cutoff -= range / 2;\n                        }\n                        else {\n                            cutoff += cutoff + 1;\n                        }\n                        break;\n                    case 3:\n                        range /= 2;\n                        if (range != 1) {\n                            if (!decision)\n                                cutoff -= range / 2;\n                            else\n                                cutoff += range / 2;\n                        }\n                        else if (!decision) {\n                            cutoff--;\n                        }\n                        break;\n                }\n            }\n            return (negative) ? (- cutoff - 1) : cutoff;\n        }\n        decodeBitmap(width, height) {\n            var bitmap = new Bitmap(width, height);\n            for (var i = height - 1; i >= 0; i--) {\n                for (var j = 0; j < width; j++) {\n                    var ind = this.getCtxIndex(bitmap, i, j);\n                    if (this.zp.decode(this.directBitmapCtx, ind)) { bitmap.set(i, j); }            }\n            }\n            return bitmap;\n        }\n        getCtxIndex(bm, i, j) {\n            var index = 0;\n            var r = i + 2;\n            if (bm.hasRow(r)) {\n                index = (bm.getBits(r, j - 1, 3)) << 7;\n            }\n            r--;\n            if (bm.hasRow(r)) {\n                index |= bm.getBits(r, j - 2, 5) << 2;\n            }\n            index |= bm.getBits(i, j - 2, 2);\n            return index;\n        }\n        decodeBitmapRef(width, height, mbm) {\n            var cbm = new Bitmap(width, height);\n            var alignInfo = this.alignBitmaps(cbm, mbm);\n            for (var i = height - 1; i >= 0; i--) {\n                for (var j = 0; j < width; j++) {\n                    this.zp.decode(this.refinementBitmapCtx,\n                        this.getCtxIndexRef(cbm, mbm, alignInfo, i, j)) ? cbm.set(i, j) : 0;\n                }\n            }\n            return cbm;\n        }\n        getCtxIndexRef(cbm, mbm, alignInfo, i, j) {\n            var index = 0;\n            var r = i + 1;\n            if (cbm.hasRow(r)) {\n                index = cbm.getBits(r, j - 1, 3) << 8;\n            }\n            index |= cbm.get(i, j - 1) << 7;\n            r = i + alignInfo.rowshift + 1;\n            var c = j + alignInfo.colshift;\n            index |= mbm.hasRow(r) ? mbm.get(r, c) << 6 : 0;\n            r--;\n            if (mbm.hasRow(r)) {\n                index |= mbm.getBits(r, c - 1, 3) << 3;\n            }\n            r--;\n            if (mbm.hasRow(r)) {\n                index |= mbm.getBits(r, c - 1, 3);\n            }\n            return index;\n        }\n        alignBitmaps(cbm, mbm) {\n            var cwidth = cbm.width - 1;\n            var cheight = cbm.height - 1;\n            var crow, ccol, mrow, mcol;\n            crow = cheight >> 1;\n            ccol = cwidth >> 1;\n            mrow = (mbm.height - 1) >> 1;\n            mcol = (mbm.width - 1) >> 1;\n            return {\n                'rowshift': mrow - crow,\n                'colshift': mcol - ccol\n            };\n        }\n        decodeComment() {\n            var length = this.decodeNum(0, 262142, this.commentLengthCtx);\n            var comment = new Uint8Array(length);\n            for (var i = 0; i < length; comment[i++] = this.decodeNum(0, 255, this.commentOctetCtx)) { }\n            return comment;\n        }\n        drawBitmap(bm) {\n            var image = document.createElement('canvas')\n                .getContext('2d')\n                .createImageData(bm.width, bm.height);\n            for (var i = 0; i < bm.height; i++) {\n                for (var j = 0; j < bm.width; j++) {\n                    var v = bm.get(i, j) ? 0 : 255;\n                    var index = ((bm.height - i - 1) * bm.width + j) * 4;\n                    image.data[index] = v;\n                    image.data[index + 1] = v;\n                    image.data[index + 2] = v;\n                    image.data[index + 3] = 255;\n                }\n            }\n            Globals.drawImage(image);\n        }\n    }\n\n    class JB2Dict extends JB2Codec {\n        constructor(bs) {\n            super(bs);\n            this.dict = [];\n            this.isDecoded = false;\n        }\n        decode(djbz) {\n            if (this.isDecoded) {\n                return;\n            }\n            var type = this.decodeNum(0, 11, this.recordTypeCtx);\n            if (type == 9) {\n                var size = this.decodeNum(0, 262142, this.inheritDictSizeCtx);\n                djbz.decode();\n                this.dict = djbz.dict.slice(0, size);\n                type = this.decodeNum(0, 11, this.recordTypeCtx);\n            }\n            this.decodeNum(0, 262142, this.imageSizeCtx);\n            this.decodeNum(0, 262142, this.imageSizeCtx);\n            var flag = this.zp.decode([0], 0);\n            if (flag) {\n                throw new Error(\"Bad flag!!!\");\n            }\n            type = this.decodeNum(0, 11, this.recordTypeCtx);\n            var width, widthdiff, heightdiff, symbolIndex;\n            var height;\n            var bm;\n            while (type !== 11) {\n                switch (type) {\n                    case 2:\n                        width = this.decodeNum(0, 262142, this.symbolWidthCtx);\n                        height = this.decodeNum(0, 262142, this.symbolHeightCtx);\n                        bm = this.decodeBitmap(width, height);\n                        this.dict.push(bm);\n                        break;\n                    case 5:\n                        symbolIndex = this.decodeNum(0, this.dict.length - 1, this.symbolIndexCtx);\n                        widthdiff = this.decodeNum(-262143, 262142, this.symbolWidthDiffCtx);\n                        heightdiff = this.decodeNum(-262143, 262142, this.symbolHeightDiffCtx);\n                        var mbm = this.dict[symbolIndex];\n                        var cbm = this.decodeBitmapRef(mbm.width + widthdiff, heightdiff + mbm.height, mbm);\n                        this.dict.push(cbm.removeEmptyEdges());\n                        break;\n                    case 9:\n                        console.log(\"RESET DICT\");\n                        this.resetNumContexts();\n                        break;\n                    case 10:\n                        this.decodeComment();\n                        break;\n                    default:\n                        throw new Error(\"Unsupported type in JB2Dict: \" + type);\n                }\n                type = this.decodeNum(0, 11, this.recordTypeCtx);\n                if (type > 11) {\n                    console.error(\"TYPE ERROR \" + type);\n                    break;\n                }\n            }\n            this.isDecoded = true;\n        }\n    }\n\n    class DjVuAnno extends IFFChunk { }\n\n    class DjViChunk extends CompositeChunk {\n        constructor(bs) {\n            super(bs);\n            this.innerChunk = null;\n            this.init();\n        }\n        init() {\n            while (!this.bs.isEmpty()) {\n                var id = this.bs.readStr4();\n                var length = this.bs.getInt32();\n                this.bs.jump(-8);\n                var chunkBs = this.bs.fork(length + 8);\n                this.bs.jump(8 + length + (length & 1 ? 1 : 0));\n                switch (id) {\n                    case 'Djbz':\n                        this.innerChunk = new JB2Dict(chunkBs);\n                        break;\n                    case 'ANTa':\n                    case 'ANTz':\n                        this.innerChunk = new DjVuAnno(chunkBs);\n                        break;\n                    default:\n                        this.innerChunk = new IFFChunk(chunkBs);\n                        console.error(\"Unsupported chunk inside the DJVI chunk: \", id);\n                        break;\n                }\n            }\n        }\n        toString() {\n            return super.toString(this.innerChunk.toString());\n        }\n    }\n\n    class JB2Image extends JB2Codec {\n        constructor(bs) {\n            super(bs);\n            this.dict = [];\n            this.initialDictLength = 0;\n            this.blitList = [];\n            this.init();\n        }\n        addBlit(bitmap, x, y) {\n            this.blitList.push({ bitmap, x, y });\n        }\n        init() {\n            var type = this.decodeNum(0, 11, this.recordTypeCtx);\n            if (type == 9) {\n                this.initialDictLength = this.decodeNum(0, 262142, this.inheritDictSizeCtx);\n                type = this.decodeNum(0, 11, this.recordTypeCtx);\n            }\n            this.width = this.decodeNum(0, 262142, this.imageSizeCtx) || 200;\n            this.height = this.decodeNum(0, 262142, this.imageSizeCtx) || 200;\n            this.bitmap = false;\n            this.lastLeft = 0;\n            this.lastBottom = this.height - 1;\n            this.firstLeft = -1;\n            this.firstBottom = this.height - 1;\n            var flag = this.zp.decode([0], 0);\n            if (flag) {\n                throw new Error(\"Bad flag!!!\");\n            }\n            this.baseline = new Baseline();\n        }\n        toString() {\n            var str = super.toString();\n            str += \"{width: \" + this.width + \", height: \" + this.height + '}\\n';\n            return str;\n        }\n        decode(djbz) {\n            if (this.initialDictLength) {\n                djbz.decode();\n                this.dict = djbz.dict.slice(0, this.initialDictLength);\n            }\n            var type = this.decodeNum(0, 11, this.recordTypeCtx);\n            var width;\n            var height, index;\n            var bm;\n            while (type !== 11 ) {\n                switch (type) {\n                    case 1:\n                        width = this.decodeNum(0, 262142, this.symbolWidthCtx);\n                        height = this.decodeNum(0, 262142, this.symbolHeightCtx);\n                        bm = this.decodeBitmap(width, height);\n                        var coords = this.decodeSymbolCoords(bm.width, bm.height);\n                        this.addBlit(bm, coords.x, coords.y);\n                        this.dict.push(bm.removeEmptyEdges());\n                        break;\n                    case 2:\n                        width = this.decodeNum(0, 262142, this.symbolWidthCtx);\n                        height = this.decodeNum(0, 262142, this.symbolHeightCtx);\n                        bm = this.decodeBitmap(width, height);\n                        this.dict.push(bm.removeEmptyEdges());\n                        break;\n                    case 3:\n                        width = this.decodeNum(0, 262142, this.symbolWidthCtx);\n                        height = this.decodeNum(0, 262142, this.symbolHeightCtx);\n                        bm = this.decodeBitmap(width, height);\n                        var coords = this.decodeSymbolCoords(bm.width, bm.height);\n                        this.addBlit(bm, coords.x, coords.y);\n                        break;\n                    case 4:\n                        index = this.decodeNum(0, this.dict.length - 1, this.symbolIndexCtx);\n                        var widthdiff = this.decodeNum(-262143, 262142, this.symbolWidthDiffCtx);\n                        var heightdiff = this.decodeNum(-262143, 262142, this.symbolHeightDiffCtx);\n                        var mbm = this.dict[index];\n                        var cbm = this.decodeBitmapRef(mbm.width + widthdiff, heightdiff + mbm.height, mbm);\n                        var coords = this.decodeSymbolCoords(cbm.width, cbm.height);\n                        this.addBlit(cbm, coords.x, coords.y);\n                        this.dict.push(cbm.removeEmptyEdges());\n                        break;\n                    case 5:\n                        index = this.decodeNum(0, this.dict.length - 1, this.symbolIndexCtx);\n                        widthdiff = this.decodeNum(-262143, 262142, this.symbolWidthDiffCtx);\n                        heightdiff = this.decodeNum(-262143, 262142, this.symbolHeightDiffCtx);\n                        var mbm = this.dict[index];\n                        var cbm = this.decodeBitmapRef(mbm.width + widthdiff, heightdiff + mbm.height, mbm);\n                        this.dict.push(cbm.removeEmptyEdges());\n                        break;\n                    case 6:\n                        index = this.decodeNum(0, this.dict.length - 1, this.symbolIndexCtx);\n                        var widthdiff = this.decodeNum(-262143, 262142, this.symbolWidthDiffCtx);\n                        var heightdiff = this.decodeNum(-262143, 262142, this.symbolHeightDiffCtx);\n                        var mbm = this.dict[index];\n                        var cbm = this.decodeBitmapRef(mbm.width + widthdiff, heightdiff + mbm.height, mbm);\n                        var coords = this.decodeSymbolCoords(cbm.width, cbm.height);\n                        this.addBlit(cbm, coords.x, coords.y);\n                        break;\n                    case 7:\n                        index = this.decodeNum(0, this.dict.length - 1, this.symbolIndexCtx);\n                        bm = this.dict[index];\n                        var coords = this.decodeSymbolCoords(bm.width, bm.height);\n                        this.addBlit(bm, coords.x, coords.y);\n                        break;\n                    case 8:\n                        width = this.decodeNum(0, 262142, this.symbolWidthCtx);\n                        height = this.decodeNum(0, 262142, this.symbolHeightCtx);\n                        bm = this.decodeBitmap(width, height);\n                        var coords = this.decodeAbsoluteLocationCoords(bm.width, bm.height);\n                        this.addBlit(bm, coords.x, coords.y);\n                        break;\n                    case 9:\n                        console.log(\"RESET NUM CONTEXTS\");\n                        this.resetNumContexts();\n                        break;\n                    case 10:\n                        this.decodeComment();\n                        break;\n                    default:\n                        throw new Error(\"Unsupported type in JB2Image: \" + type);\n                }\n                type = this.decodeNum(0, 11, this.recordTypeCtx);\n                if (type > 11) {\n                    console.error(\"TYPE ERROR \" + type);\n                    break;\n                }\n            }\n        }\n        decodeAbsoluteLocationCoords(width, height) {\n            var left = this.decodeNum(1, this.width, this.horizontalAbsLocationCtx);\n            var top = this.decodeNum(1, this.height, this.verticalAbsLocationCtx);\n            return {\n                x: left,\n                y: top - height\n            }\n        }\n        decodeSymbolCoords(width, height) {\n            var flag = this.zp.decode(this.offsetTypeCtx, 0);\n            var horizontalOffsetCtx = flag ? this.hoffCtx : this.shoffCtx;\n            var verticalOffsetCtx = flag ? this.voffCtx : this.svoffCtx;\n            var horizontalOffset = this.decodeNum(-262143, 262142, horizontalOffsetCtx);\n            var verticalOffset = this.decodeNum(-262143, 262142, verticalOffsetCtx);\n            var x, y;\n            if (flag) {\n                x = this.firstLeft + horizontalOffset;\n                y = this.firstBottom + verticalOffset - height + 1;\n                this.firstLeft = x;\n                this.firstBottom = y;\n                this.baseline.fill(y);\n            }\n            else {\n                x = this.lastRight + horizontalOffset;\n                y = this.baseline.getVal() + verticalOffset;\n            }\n            this.baseline.add(y);\n            this.lastRight = x + width - 1;\n            return {\n                'x': x,\n                'y': y\n            };\n        }\n        copyToBitmap(bm, x, y) {\n            if (!this.bitmap) {\n                this.bitmap = new Bitmap(this.width, this.height);\n            }\n            for (var i = y, k = 0; k < bm.height; k++ , i++) {\n                for (var j = x, t = 0; t < bm.width; t++ , j++) {\n                    if (bm.get(k, t)) {\n                        this.bitmap.set(i, j);\n                    }\n                }\n            }\n        }\n        getBitmap() {\n            if (!this.bitmap) {\n                this.blitList.forEach(blit => this.copyToBitmap(blit.bitmap, blit.x, blit.y));\n            }\n            return this.bitmap;\n        }\n        getMaskImage() {\n            var imageData = new ImageData(this.width, this.height);\n            var pixelArray = imageData.data;\n            var time = performance.now();\n            pixelArray.fill(255);\n            for (var blitIndex = 0; blitIndex < this.blitList.length; blitIndex++) {\n                var blit = this.blitList[blitIndex];\n                var bm = blit.bitmap;\n                for (var i = blit.y, k = 0; k < bm.height; k++ , i++) {\n                    for (var j = blit.x, t = 0; t < bm.width; t++ , j++) {\n                        if (bm.get(k, t)) {\n                            var pixelIndex = ((this.height - i - 1) * this.width + j) * 4;\n                            pixelArray[pixelIndex] = 0;\n                        }\n                    }\n                }\n            }\n            DjVu.IS_DEBUG && console.log(\"JB2Image mask image creating time = \", performance.now() - time);\n            return imageData;\n        }\n        getImage(palette = null, isMarkMaskPixels = false) {\n            if (palette && palette.getDataSize() !== this.blitList.length) {\n                palette = null;\n            }\n            var pixelArray = new Uint8ClampedArray(this.width * this.height * 4);\n            var time = performance.now();\n            pixelArray.fill(255);\n            var blackPixel = { r: 0, g: 0, b: 0 };\n            var alpha = isMarkMaskPixels ? 0 : 255;\n            for (var blitIndex = 0; blitIndex < this.blitList.length; blitIndex++) {\n                var blit = this.blitList[blitIndex];\n                var pixel = palette ? palette.getPixelByBlitIndex(blitIndex) : blackPixel;\n                var bm = blit.bitmap;\n                for (var i = blit.y, k = 0; k < bm.height; k++ , i++) {\n                    for (var j = blit.x, t = 0; t < bm.width; t++ , j++) {\n                        if (bm.get(k, t)) {\n                            var pixelIndex = ((this.height - i - 1) * this.width + j) << 2;\n                            pixelArray[pixelIndex] = pixel.r;\n                            pixelArray[pixelIndex | 1] = pixel.g;\n                            pixelArray[pixelIndex | 2] = pixel.b;\n                            pixelArray[pixelIndex | 3] = alpha;\n                        }\n                    }\n                }\n            }\n            DjVu.IS_DEBUG && console.log(\"JB2Image creating time = \", performance.now() - time);\n            return new ImageData(pixelArray, this.width, this.height);\n        }\n        getImageFromBitmap() {\n            this.getBitmap();\n            var time = performance.now();\n            var image = new ImageData(this.width, this.height);\n            for (var i = 0; i < this.height; i++) {\n                for (var j = 0; j < this.width; j++) {\n                    var v = this.bitmap.get(i, j) ? 0 : 255;\n                    var index = ((this.height - i - 1) * this.width + j) * 4;\n                    image.data[index] = v;\n                    image.data[index + 1] = v;\n                    image.data[index + 2] = v;\n                    image.data[index + 3] = 255;\n                }\n            }\n            DjVu.IS_DEBUG && console.log(\"JB2Image creating time = \", performance.now() - time);\n            return image;\n        }\n    }\n\n    class ByteStream {\n        constructor(buffer, offsetx, length) {\n            this._buffer = buffer;\n            this.offsetx = offsetx || 0;\n            this.offset = 0;\n            this._length = length || buffer.byteLength;\n            if (this._length + offsetx > buffer.byteLength) {\n                this._length = buffer.byteLength - offsetx;\n                console.error(\"Incorrect length in ByteStream!\");\n            }\n            this.viewer = new DataView(this._buffer, this.offsetx, this._length);\n        }\n        get length() { return this._length; }\n        get buffer() { return this._buffer; }\n        getUint8Array(length = this.remainingLength()) {\n            var off = this.offset;\n            this.offset += length;\n            return new Uint8Array(this._buffer, this.offsetx + off, length);\n        }\n        toUint8Array() {\n            return new Uint8Array(this._buffer, this.offsetx, this._length);\n        }\n        remainingLength() {\n            return this._length - this.offset;\n        }\n        reset() {\n            this.offset = 0;\n        }\n        byte() {\n            if (this.offset >= this._length) {\n                this.offset++;\n                return 0xff;\n            }\n            return this.viewer.getUint8(this.offset++);\n        }\n        getInt8() {\n            return this.viewer.getInt8(this.offset++);\n        }\n        getInt16() {\n            var tmp = this.viewer.getInt16(this.offset);\n            this.offset += 2;\n            return tmp;\n        }\n        getUint16() {\n            var tmp = this.viewer.getUint16(this.offset);\n            this.offset += 2;\n            return tmp;\n        }\n        getInt32() {\n            var tmp = this.viewer.getInt32(this.offset);\n            this.offset += 4;\n            return tmp;\n        }\n        getUint8() {\n            return this.viewer.getUint8(this.offset++);\n        }\n        getInt24() {\n            var uint = this.getUint24();\n            return (uint & 0x800000) ? (0xffffff - val + 1) * -1 : uint\n        }\n        getUint24() {\n            return (this.byte() << 16) | (this.byte() << 8) | this.byte();\n        }\n        jump(length) {\n            this.offset += length;\n            return this;\n        }\n        setOffset(offset) {\n            this.offset = offset;\n        }\n        readStr4() {\n            return String.fromCharCode(...this.getUint8Array(4));\n        }\n        readStrNT() {\n            var array = [];\n            var byte = this.getUint8();\n            while (byte) {\n                array.push(byte);\n                byte = this.getUint8();\n            }\n            return createStringFromUtf8Array(new Uint8Array(array));\n        }\n        readStrUTF(byteLength) {\n            return createStringFromUtf8Array(this.getUint8Array(byteLength));\n        }\n        fork(length = this.remainingLength()) {\n            return new ByteStream(this._buffer, this.offsetx + this.offset, length);\n        }\n        clone() {\n            return new ByteStream(this._buffer, this.offsetx, this._length);\n        }\n        isEmpty() {\n            return this.offset >= this._length;\n        }\n    }\n\n    class BZZDecoder {\n        constructor(zp) {\n            this.zp = zp;\n            this.maxblock = 4096;\n            this.FREQMAX = 4;\n            this.CTXIDS = 3;\n            this.ctx = new Uint8Array(300);\n            this.size = 0;\n            this.blocksize = 0;\n            this.data = null;\n        }\n        decode_raw(bits) {\n            var n = 1;\n            var m = (1 << bits);\n            while (n < m) {\n                var b = this.zp.decode();\n                n = (n << 1) | b;\n            }\n            return n - m;\n        }\n        decode_binary(ctxoff, bits) {\n            var n = 1;\n            var m = (1 << bits);\n            ctxoff--;\n            while (n < m) {\n                var b = this.zp.decode(this.ctx, ctxoff + n);\n                n = (n << 1) | b;\n            }\n            return n - m;\n        }\n        _decode() {\n            this.size = this.decode_raw(24);\n            if (!this.size) {\n                return 0;\n            }\n            if (this.size > this.maxblock * 1024) {\n                throw new Error(\"Too big block. Error\");\n            }\n            if (this.blocksize < this.size) {\n                this.blocksize = this.size;\n                this.data = new Uint8Array(this.blocksize);\n            } else if (this.data == null) {\n                this.data = new Uint8Array(this.blocksize);\n            }\n            var fshift = 0;\n            if (this.zp.decode()) {\n                fshift++;\n                if (this.zp.decode()) {\n                    fshift++;\n                }\n            }\n            var mtf = new Uint8Array(256);\n            for (var i = 0; i < 256; i++) {\n                mtf[i] = i;\n            }\n            var freq = new Array(this.FREQMAX);\n            for (var i = 0; i < this.FREQMAX; freq[i++] = 0);\n            var fadd = 4;\n            var mtfno = 3;\n            var markerpos = -1;\n            for (var i = 0; i < this.size; i++) {\n                var ctxid = this.CTXIDS - 1;\n                if (ctxid > mtfno) {\n                    ctxid = mtfno;\n                }\n                var ctxoff = 0;\n                switch (0)\n                {\n                    default:\n                        if (this.zp.decode(this.ctx, ctxoff + ctxid) != 0) {\n                            mtfno = 0;\n                            this.data[i] = mtf[mtfno];\n                            break;\n                        }\n                        ctxoff += this.CTXIDS;\n                        if (this.zp.decode(this.ctx, ctxoff + ctxid) != 0) {\n                            mtfno = 1;\n                            this.data[i] = mtf[mtfno];\n                            break;\n                        }\n                        ctxoff += this.CTXIDS;\n                        if (this.zp.decode(this.ctx, ctxoff + 0) != 0) {\n                            mtfno = 2 + this.decode_binary(ctxoff + 1, 1);\n                            this.data[i] = mtf[mtfno];\n                            break;\n                        }\n                        ctxoff += (1 + 1);\n                        if (this.zp.decode(this.ctx, ctxoff + 0) != 0) {\n                            mtfno = 4 + this.decode_binary(ctxoff + 1, 2);\n                            this.data[i] = mtf[mtfno];\n                            break;\n                        }\n                        ctxoff += (1 + 3);\n                        if (this.zp.decode(this.ctx, ctxoff + 0) != 0) {\n                            mtfno = 8 + this.decode_binary(ctxoff + 1, 3);\n                            this.data[i] = mtf[mtfno];\n                            break;\n                        }\n                        ctxoff += (1 + 7);\n                        if (this.zp.decode(this.ctx, ctxoff + 0) != 0) {\n                            mtfno = 16 + this.decode_binary(ctxoff + 1, 4);\n                            this.data[i] = mtf[mtfno];\n                            break;\n                        }\n                        ctxoff += (1 + 15);\n                        if (this.zp.decode(this.ctx, ctxoff + 0) != 0) {\n                            mtfno = 32 + this.decode_binary(ctxoff + 1, 5);\n                            this.data[i] = mtf[mtfno];\n                            break;\n                        }\n                        ctxoff += (1 + 31);\n                        if (this.zp.decode(this.ctx, ctxoff + 0) != 0) {\n                            mtfno = 64 + this.decode_binary(ctxoff + 1, 6);\n                            this.data[i] = mtf[mtfno];\n                            break;\n                        }\n                        ctxoff += (1 + 63);\n                        if (this.zp.decode(this.ctx, ctxoff + 0) != 0) {\n                            mtfno = 128 + this.decode_binary(ctxoff + 1, 7);\n                            this.data[i] = mtf[mtfno];\n                            break;\n                        }\n                        mtfno = 256;\n                        this.data[i] = 0;\n                        markerpos = i;\n                        continue;\n                }\n                var k;\n                fadd = fadd + (fadd >> fshift);\n                if (fadd > 0x10000000) {\n                    fadd >>= 24;\n                    freq[0] >>= 24;\n                    freq[1] >>= 24;\n                    freq[2] >>= 24;\n                    freq[3] >>= 24;\n                    for (k = 4; k < this.FREQMAX; k++) {\n                        freq[k] >>= 24;\n                    }\n                }\n                var fc = fadd;\n                if (mtfno < this.FREQMAX) {\n                    fc += freq[mtfno];\n                }\n                for (k = mtfno; k >= this.FREQMAX; k--) {\n                    mtf[k] = mtf[k - 1];\n                }\n                for (; (k > 0) && ((0xffffffff & fc) >= (0xffffffff & freq[k - 1])); k--) {\n                    mtf[k] = mtf[k - 1];\n                    freq[k] = freq[k - 1];\n                }\n                mtf[k] = this.data[i];\n                freq[k] = fc;\n            }\n            if ((markerpos < 1) || (markerpos >= this.size)) {\n                throw new Error(\"BZZ byte stream is corrupted\");\n            }\n            var pos = new Uint32Array(this.size);\n            for (var j = 0; j < this.size; pos[j++] = 0);\n            var count = new Array(256);\n            for (var i = 0; i < 256; count[i++] = 0);\n            for (var i = 0; i < markerpos; i++) {\n                var c = this.data[i];\n                pos[i] = (c << 24) | (count[0xff & c] & 0xffffff);\n                count[0xff & c]++;\n            }\n            for (var i = markerpos + 1; i < this.size; i++) {\n                var c = this.data[i];\n                pos[i] = (c << 24) | (count[0xff & c] & 0xffffff);\n                count[0xff & c]++;\n            }\n            var last = 1;\n            for (var i = 0; i < 256; i++) {\n                var tmp = count[i];\n                count[i] = last;\n                last += tmp;\n            }\n            var j = 0;\n            last = this.size - 1;\n            while (last > 0) {\n                var n = pos[j];\n                var c = pos[j] >> 24;\n                this.data[--last] = 0xff & c;\n                j = count[0xff & c] + (n & 0xffffff);\n            }\n            if (j != markerpos) {\n                throw new Error(\"BZZ byte stream is corrupted\");\n            }\n            return this.size;\n        }\n        getByteStream() {\n            var bsw, size;\n            while (size = this._decode()) {\n                if (!bsw) {\n                    bsw = new ByteStreamWriter(size - 1);\n                }\n                var arr = new Uint8Array(this.data.buffer, 0, size - 1);\n                bsw.writeArray(arr);\n            }\n            this.data = null;\n            return new ByteStream(bsw.getBuffer());\n        }\n        static decodeByteStream(bs) {\n            return new BZZDecoder(new ZPDecoder(bs)).getByteStream();\n        }\n    }\n\n    class DjVuPalette extends IFFChunk {\n        constructor(bs) {\n            var time = performance.now();\n            super(bs);\n            this.pixel = { r: 0, g: 0, b: 0 };\n            this.version = bs.getUint8();\n            if (this.version & 0x7f) {\n                throw \"Bad Djvu Pallete version!\";\n            }\n            this.palleteSize = bs.getInt16();\n            if (this.palleteSize < 0 || this.palleteSize > 65535) {\n                throw \"Bad Djvu Pallete size!\";\n            }\n            this.colorArray = bs.getUint8Array(this.palleteSize * 3);\n            if (this.version & 0x80) {\n                this.dataSize = bs.getInt24();\n                if (this.dataSize < 0) {\n                    throw \"Bad Djvu Pallete data size!\";\n                }\n                var bsz = BZZDecoder.decodeByteStream(bs.fork());\n                this.colorIndices = new Int16Array(this.dataSize);\n                for (var i = 0; i < this.dataSize; i++) {\n                    var index = bsz.getInt16();\n                    if (index < 0 || index >= this.palleteSize) {\n                        throw \"Bad Djvu Pallete index! \" + index;\n                    }\n                    this.colorIndices[i] = index;\n                }\n            }\n            DjVu.IS_DEBUG && console.log('DjvuPalette time ', performance.now() - time);\n        }\n        getDataSize() {\n            return this.dataSize;\n        }\n        getPixelByBlitIndex(index) {\n            var colorIndex = this.colorIndices[index] * 3;\n            this.pixel.r = this.colorArray[colorIndex + 2];\n            this.pixel.g = this.colorArray[colorIndex + 1];\n            this.pixel.b = this.colorArray[colorIndex];\n            return this.pixel;\n        }\n        toString() {\n            var str = super.toString();\n            str += \"Pallete size: \" + this.palleteSize + \"\\n\";\n            str += \"Data size: \" + this.dataSize + \"\\n\";\n            return str;\n        }\n    }\n\n    class IWCodecBaseClass {\n        constructor() {\n            this.quant_lo = Uint32Array.of(\n                0x004000, 0x008000, 0x008000, 0x010000, 0x010000,\n                0x010000, 0x010000, 0x010000, 0x010000, 0x010000,\n                0x010000, 0x010000, 0x020000, 0x020000, 0x020000, 0x020000\n            );\n            this.quant_hi = Uint32Array.of(\n                0, 0x020000, 0x020000, 0x040000, 0x040000,\n                0x040000, 0x080000, 0x040000, 0x040000, 0x080000\n            );\n            this.bucketstate = new Uint8Array(16);\n            this.coeffstate = new Array(16);\n            var buffer = new ArrayBuffer(256);\n            for (var i = 0; i < 16; i++) {\n                this.coeffstate[i] = new Uint8Array(buffer, i << 4, 16);\n            }\n            this.bbstate = 0;\n            this.decodeBucketCtx = new Uint8Array(1);\n            this.decodeCoefCtx = new Uint8Array(80);\n            this.activateCoefCtx = new Uint8Array(16);\n            this.inreaseCoefCtx = new Uint8Array(1);\n            this.curband = 0;\n        }\n        getBandBuckets(band) {\n            return this.bandBuckets[band];\n        }\n        is_null_slice() {\n            if (this.curband == 0)\n            {\n                var is_null = 1;\n                for (var i = 0; i < 16; i++) {\n                    var threshold = this.quant_lo[i];\n                    this.coeffstate[0][i] = 1;\n                    if (threshold > 0 && threshold < 0x8000) {\n                        this.coeffstate[0][i] = 8;\n                        is_null = 0;\n                    }\n                }\n                return is_null;\n            } else\n            {\n                var threshold = this.quant_hi[this.curband];\n                return (!(threshold > 0 && threshold < 0x8000));\n            }\n        }\n        finish_code_slice() {\n            this.quant_hi[this.curband] = this.quant_hi[this.curband] >> 1;\n            if (this.curband === 0) {\n                for (var i = 0; i < 16; i++)\n                    this.quant_lo[i] = this.quant_lo[i] >> 1;\n            }\n            this.curband++;\n            if (this.curband === 10) {\n                this.curband = 0;\n            }\n        }\n    }\n    IWCodecBaseClass.prototype.ZERO = 1;\n    IWCodecBaseClass.prototype.ACTIVE = 2;\n    IWCodecBaseClass.prototype.NEW = 4;\n    IWCodecBaseClass.prototype.UNK = 8;\n    IWCodecBaseClass.prototype.zigzagRow = Uint8Array.of(0, 0, 16, 16, 0, 0, 16, 16, 8, 8, 24, 24, 8, 8, 24, 24, 0, 0, 16, 16, 0, 0, 16, 16, 8, 8, 24, 24, 8, 8, 24, 24, 4, 4, 20, 20, 4, 4, 20, 20, 12, 12, 28, 28, 12, 12, 28, 28, 4, 4, 20, 20, 4, 4, 20, 20, 12, 12, 28, 28, 12, 12, 28, 28, 0, 0, 16, 16, 0, 0, 16, 16, 8, 8, 24, 24, 8, 8, 24, 24, 0, 0, 16, 16, 0, 0, 16, 16, 8, 8, 24, 24, 8, 8, 24, 24, 4, 4, 20, 20, 4, 4, 20, 20, 12, 12, 28, 28, 12, 12, 28, 28, 4, 4, 20, 20, 4, 4, 20, 20, 12, 12, 28, 28, 12, 12, 28, 28, 2, 2, 18, 18, 2, 2, 18, 18, 10, 10, 26, 26, 10, 10, 26, 26, 2, 2, 18, 18, 2, 2, 18, 18, 10, 10, 26, 26, 10, 10, 26, 26, 6, 6, 22, 22, 6, 6, 22, 22, 14, 14, 30, 30, 14, 14, 30, 30, 6, 6, 22, 22, 6, 6, 22, 22, 14, 14, 30, 30, 14, 14, 30, 30, 2, 2, 18, 18, 2, 2, 18, 18, 10, 10, 26, 26, 10, 10, 26, 26, 2, 2, 18, 18, 2, 2, 18, 18, 10, 10, 26, 26, 10, 10, 26, 26, 6, 6, 22, 22, 6, 6, 22, 22, 14, 14, 30, 30, 14, 14, 30, 30, 6, 6, 22, 22, 6, 6, 22, 22, 14, 14, 30, 30, 14, 14, 30, 30, 0, 0, 16, 16, 0, 0, 16, 16, 8, 8, 24, 24, 8, 8, 24, 24, 0, 0, 16, 16, 0, 0, 16, 16, 8, 8, 24, 24, 8, 8, 24, 24, 4, 4, 20, 20, 4, 4, 20, 20, 12, 12, 28, 28, 12, 12, 28, 28, 4, 4, 20, 20, 4, 4, 20, 20, 12, 12, 28, 28, 12, 12, 28, 28, 0, 0, 16, 16, 0, 0, 16, 16, 8, 8, 24, 24, 8, 8, 24, 24, 0, 0, 16, 16, 0, 0, 16, 16, 8, 8, 24, 24, 8, 8, 24, 24, 4, 4, 20, 20, 4, 4, 20, 20, 12, 12, 28, 28, 12, 12, 28, 28, 4, 4, 20, 20, 4, 4, 20, 20, 12, 12, 28, 28, 12, 12, 28, 28, 2, 2, 18, 18, 2, 2, 18, 18, 10, 10, 26, 26, 10, 10, 26, 26, 2, 2, 18, 18, 2, 2, 18, 18, 10, 10, 26, 26, 10, 10, 26, 26, 6, 6, 22, 22, 6, 6, 22, 22, 14, 14, 30, 30, 14, 14, 30, 30, 6, 6, 22, 22, 6, 6, 22, 22, 14, 14, 30, 30, 14, 14, 30, 30, 2, 2, 18, 18, 2, 2, 18, 18, 10, 10, 26, 26, 10, 10, 26, 26, 2, 2, 18, 18, 2, 2, 18, 18, 10, 10, 26, 26, 10, 10, 26, 26, 6, 6, 22, 22, 6, 6, 22, 22, 14, 14, 30, 30, 14, 14, 30, 30, 6, 6, 22, 22, 6, 6, 22, 22, 14, 14, 30, 30, 14, 14, 30, 30, 1, 1, 17, 17, 1, 1, 17, 17, 9, 9, 25, 25, 9, 9, 25, 25, 1, 1, 17, 17, 1, 1, 17, 17, 9, 9, 25, 25, 9, 9, 25, 25, 5, 5, 21, 21, 5, 5, 21, 21, 13, 13, 29, 29, 13, 13, 29, 29, 5, 5, 21, 21, 5, 5, 21, 21, 13, 13, 29, 29, 13, 13, 29, 29, 1, 1, 17, 17, 1, 1, 17, 17, 9, 9, 25, 25, 9, 9, 25, 25, 1, 1, 17, 17, 1, 1, 17, 17, 9, 9, 25, 25, 9, 9, 25, 25, 5, 5, 21, 21, 5, 5, 21, 21, 13, 13, 29, 29, 13, 13, 29, 29, 5, 5, 21, 21, 5, 5, 21, 21, 13, 13, 29, 29, 13, 13, 29, 29, 3, 3, 19, 19, 3, 3, 19, 19, 11, 11, 27, 27, 11, 11, 27, 27, 3, 3, 19, 19, 3, 3, 19, 19, 11, 11, 27, 27, 11, 11, 27, 27, 7, 7, 23, 23, 7, 7, 23, 23, 15, 15, 31, 31, 15, 15, 31, 31, 7, 7, 23, 23, 7, 7, 23, 23, 15, 15, 31, 31, 15, 15, 31, 31, 3, 3, 19, 19, 3, 3, 19, 19, 11, 11, 27, 27, 11, 11, 27, 27, 3, 3, 19, 19, 3, 3, 19, 19, 11, 11, 27, 27, 11, 11, 27, 27, 7, 7, 23, 23, 7, 7, 23, 23, 15, 15, 31, 31, 15, 15, 31, 31, 7, 7, 23, 23, 7, 7, 23, 23, 15, 15, 31, 31, 15, 15, 31, 31, 1, 1, 17, 17, 1, 1, 17, 17, 9, 9, 25, 25, 9, 9, 25, 25, 1, 1, 17, 17, 1, 1, 17, 17, 9, 9, 25, 25, 9, 9, 25, 25, 5, 5, 21, 21, 5, 5, 21, 21, 13, 13, 29, 29, 13, 13, 29, 29, 5, 5, 21, 21, 5, 5, 21, 21, 13, 13, 29, 29, 13, 13, 29, 29, 1, 1, 17, 17, 1, 1, 17, 17, 9, 9, 25, 25, 9, 9, 25, 25, 1, 1, 17, 17, 1, 1, 17, 17, 9, 9, 25, 25, 9, 9, 25, 25, 5, 5, 21, 21, 5, 5, 21, 21, 13, 13, 29, 29, 13, 13, 29, 29, 5, 5, 21, 21, 5, 5, 21, 21, 13, 13, 29, 29, 13, 13, 29, 29, 3, 3, 19, 19, 3, 3, 19, 19, 11, 11, 27, 27, 11, 11, 27, 27, 3, 3, 19, 19, 3, 3, 19, 19, 11, 11, 27, 27, 11, 11, 27, 27, 7, 7, 23, 23, 7, 7, 23, 23, 15, 15, 31, 31, 15, 15, 31, 31, 7, 7, 23, 23, 7, 7, 23, 23, 15, 15, 31, 31, 15, 15, 31, 31, 3, 3, 19, 19, 3, 3, 19, 19, 11, 11, 27, 27, 11, 11, 27, 27, 3, 3, 19, 19, 3, 3, 19, 19, 11, 11, 27, 27, 11, 11, 27, 27, 7, 7, 23, 23, 7, 7, 23, 23, 15, 15, 31, 31, 15, 15, 31, 31, 7, 7, 23, 23, 7, 7, 23, 23, 15, 15, 31, 31, 15, 15, 31, 31);\n    IWCodecBaseClass.prototype.zigzagCol = Uint8Array.of(0, 16, 0, 16, 8, 24, 8, 24, 0, 16, 0, 16, 8, 24, 8, 24, 4, 20, 4, 20, 12, 28, 12, 28, 4, 20, 4, 20, 12, 28, 12, 28, 0, 16, 0, 16, 8, 24, 8, 24, 0, 16, 0, 16, 8, 24, 8, 24, 4, 20, 4, 20, 12, 28, 12, 28, 4, 20, 4, 20, 12, 28, 12, 28, 2, 18, 2, 18, 10, 26, 10, 26, 2, 18, 2, 18, 10, 26, 10, 26, 6, 22, 6, 22, 14, 30, 14, 30, 6, 22, 6, 22, 14, 30, 14, 30, 2, 18, 2, 18, 10, 26, 10, 26, 2, 18, 2, 18, 10, 26, 10, 26, 6, 22, 6, 22, 14, 30, 14, 30, 6, 22, 6, 22, 14, 30, 14, 30, 0, 16, 0, 16, 8, 24, 8, 24, 0, 16, 0, 16, 8, 24, 8, 24, 4, 20, 4, 20, 12, 28, 12, 28, 4, 20, 4, 20, 12, 28, 12, 28, 0, 16, 0, 16, 8, 24, 8, 24, 0, 16, 0, 16, 8, 24, 8, 24, 4, 20, 4, 20, 12, 28, 12, 28, 4, 20, 4, 20, 12, 28, 12, 28, 2, 18, 2, 18, 10, 26, 10, 26, 2, 18, 2, 18, 10, 26, 10, 26, 6, 22, 6, 22, 14, 30, 14, 30, 6, 22, 6, 22, 14, 30, 14, 30, 2, 18, 2, 18, 10, 26, 10, 26, 2, 18, 2, 18, 10, 26, 10, 26, 6, 22, 6, 22, 14, 30, 14, 30, 6, 22, 6, 22, 14, 30, 14, 30, 1, 17, 1, 17, 9, 25, 9, 25, 1, 17, 1, 17, 9, 25, 9, 25, 5, 21, 5, 21, 13, 29, 13, 29, 5, 21, 5, 21, 13, 29, 13, 29, 1, 17, 1, 17, 9, 25, 9, 25, 1, 17, 1, 17, 9, 25, 9, 25, 5, 21, 5, 21, 13, 29, 13, 29, 5, 21, 5, 21, 13, 29, 13, 29, 3, 19, 3, 19, 11, 27, 11, 27, 3, 19, 3, 19, 11, 27, 11, 27, 7, 23, 7, 23, 15, 31, 15, 31, 7, 23, 7, 23, 15, 31, 15, 31, 3, 19, 3, 19, 11, 27, 11, 27, 3, 19, 3, 19, 11, 27, 11, 27, 7, 23, 7, 23, 15, 31, 15, 31, 7, 23, 7, 23, 15, 31, 15, 31, 1, 17, 1, 17, 9, 25, 9, 25, 1, 17, 1, 17, 9, 25, 9, 25, 5, 21, 5, 21, 13, 29, 13, 29, 5, 21, 5, 21, 13, 29, 13, 29, 1, 17, 1, 17, 9, 25, 9, 25, 1, 17, 1, 17, 9, 25, 9, 25, 5, 21, 5, 21, 13, 29, 13, 29, 5, 21, 5, 21, 13, 29, 13, 29, 3, 19, 3, 19, 11, 27, 11, 27, 3, 19, 3, 19, 11, 27, 11, 27, 7, 23, 7, 23, 15, 31, 15, 31, 7, 23, 7, 23, 15, 31, 15, 31, 3, 19, 3, 19, 11, 27, 11, 27, 3, 19, 3, 19, 11, 27, 11, 27, 7, 23, 7, 23, 15, 31, 15, 31, 7, 23, 7, 23, 15, 31, 15, 31, 0, 16, 0, 16, 8, 24, 8, 24, 0, 16, 0, 16, 8, 24, 8, 24, 4, 20, 4, 20, 12, 28, 12, 28, 4, 20, 4, 20, 12, 28, 12, 28, 0, 16, 0, 16, 8, 24, 8, 24, 0, 16, 0, 16, 8, 24, 8, 24, 4, 20, 4, 20, 12, 28, 12, 28, 4, 20, 4, 20, 12, 28, 12, 28, 2, 18, 2, 18, 10, 26, 10, 26, 2, 18, 2, 18, 10, 26, 10, 26, 6, 22, 6, 22, 14, 30, 14, 30, 6, 22, 6, 22, 14, 30, 14, 30, 2, 18, 2, 18, 10, 26, 10, 26, 2, 18, 2, 18, 10, 26, 10, 26, 6, 22, 6, 22, 14, 30, 14, 30, 6, 22, 6, 22, 14, 30, 14, 30, 0, 16, 0, 16, 8, 24, 8, 24, 0, 16, 0, 16, 8, 24, 8, 24, 4, 20, 4, 20, 12, 28, 12, 28, 4, 20, 4, 20, 12, 28, 12, 28, 0, 16, 0, 16, 8, 24, 8, 24, 0, 16, 0, 16, 8, 24, 8, 24, 4, 20, 4, 20, 12, 28, 12, 28, 4, 20, 4, 20, 12, 28, 12, 28, 2, 18, 2, 18, 10, 26, 10, 26, 2, 18, 2, 18, 10, 26, 10, 26, 6, 22, 6, 22, 14, 30, 14, 30, 6, 22, 6, 22, 14, 30, 14, 30, 2, 18, 2, 18, 10, 26, 10, 26, 2, 18, 2, 18, 10, 26, 10, 26, 6, 22, 6, 22, 14, 30, 14, 30, 6, 22, 6, 22, 14, 30, 14, 30, 1, 17, 1, 17, 9, 25, 9, 25, 1, 17, 1, 17, 9, 25, 9, 25, 5, 21, 5, 21, 13, 29, 13, 29, 5, 21, 5, 21, 13, 29, 13, 29, 1, 17, 1, 17, 9, 25, 9, 25, 1, 17, 1, 17, 9, 25, 9, 25, 5, 21, 5, 21, 13, 29, 13, 29, 5, 21, 5, 21, 13, 29, 13, 29, 3, 19, 3, 19, 11, 27, 11, 27, 3, 19, 3, 19, 11, 27, 11, 27, 7, 23, 7, 23, 15, 31, 15, 31, 7, 23, 7, 23, 15, 31, 15, 31, 3, 19, 3, 19, 11, 27, 11, 27, 3, 19, 3, 19, 11, 27, 11, 27, 7, 23, 7, 23, 15, 31, 15, 31, 7, 23, 7, 23, 15, 31, 15, 31, 1, 17, 1, 17, 9, 25, 9, 25, 1, 17, 1, 17, 9, 25, 9, 25, 5, 21, 5, 21, 13, 29, 13, 29, 5, 21, 5, 21, 13, 29, 13, 29, 1, 17, 1, 17, 9, 25, 9, 25, 1, 17, 1, 17, 9, 25, 9, 25, 5, 21, 5, 21, 13, 29, 13, 29, 5, 21, 5, 21, 13, 29, 13, 29, 3, 19, 3, 19, 11, 27, 11, 27, 3, 19, 3, 19, 11, 27, 11, 27, 7, 23, 7, 23, 15, 31, 15, 31, 7, 23, 7, 23, 15, 31, 15, 31, 3, 19, 3, 19, 11, 27, 11, 27, 3, 19, 3, 19, 11, 27, 11, 27, 7, 23, 7, 23, 15, 31, 15, 31, 7, 23, 7, 23, 15, 31, 15, 31);\n    IWCodecBaseClass.prototype.bandBuckets = [\n        { from: 0, to: 0 },\n        { from: 1, to: 1 },\n        { from: 2, to: 2 },\n        { from: 3, to: 3 },\n        { from: 4, to: 7 },\n        { from: 8, to: 11 },\n        { from: 12, to: 15 },\n        { from: 16, to: 31 },\n        { from: 32, to: 47 },\n        { from: 48, to: 63 }\n    ];\n\n    function _normalize(val) {\n        val = (val + 32) >> 6;\n        if (val < -128) {\n            return -128;\n        } else if (val >= 128) {\n            return 127;\n        }\n        return val;\n    }\n    class LazyPixelmap {\n        constructor(ybytemap, cbbytemap, crbytemap) {\n            this.width = ybytemap.width;\n            this.yArray = ybytemap.array;\n            this.cbArray = cbbytemap ? cbbytemap.array : null;\n            this.crArray = crbytemap ? crbytemap.array : null;\n            this.writePixel = cbbytemap ? this.writeColoredPixel : this.writeGrayScalePixel;\n        }\n        writeGrayScalePixel(index, pixelArray, pixelIndex) {\n            const value = 127 - _normalize(this.yArray[index]);\n            pixelArray[pixelIndex] = value;\n            pixelArray[pixelIndex | 1] = value;\n            pixelArray[pixelIndex | 2] = value;\n        }\n        writeColoredPixel(index, pixelArray, pixelIndex) {\n            const y = _normalize(this.yArray[index]);\n            const b = _normalize(this.cbArray[index]);\n            const r = _normalize(this.crArray[index]);\n            const t2 = r + (r >> 1);\n            const t3 = y + 128 - (b >> 2);\n            pixelArray[pixelIndex] = y + 128 + t2;\n            pixelArray[pixelIndex | 1] = t3 - (t2 >> 1);\n            pixelArray[pixelIndex | 2] = t3 + (b << 1);\n        }\n    }\n    class LinearBytemap {\n        constructor(width, height) {\n            this.width = width;\n            this.array = new Int16Array(width * height);\n        }\n        get(i, j) {\n            return this.array[i * this.width + j];\n        }\n        set(i, j, val) {\n            this.array[i * this.width + j] = val;\n        }\n        sub(i, j, val) {\n            this.array[i * this.width + j] -= val;\n        }\n        add(i, j, val) {\n            this.array[i * this.width + j] += val;\n        }\n    }\n    class Bytemap extends Array {\n        constructor(width, height) {\n            super(height);\n            this.height = height;\n            this.width = width;\n            for (var i = 0; i < height; i++) {\n                this[i] = new Int16Array(width);\n            }\n        }\n    }\n    class Block {\n        constructor(buffer, offset, withBuckets = false) {\n            this.array = new Int16Array(buffer, offset, 1024);\n            if (withBuckets) {\n                this.buckets = new Array(64);\n                for (var i = 0; i < 64; i++) {\n                    this.buckets[i] = new Int16Array(buffer, offset, 16);\n                    offset += 32;\n                }\n            }\n        }\n        setBucketCoef(bucketNumber, index, value) {\n            this.array[(bucketNumber << 4) | index] = value;\n        }\n        getBucketCoef(bucketNumber, index) {\n            return this.array[(bucketNumber << 4) | index];\n        }\n        getCoef(n) {\n            return this.array[n];\n        }\n        setCoef(n, val) {\n            this.array[n] = val;\n        }\n        static createBlockArray(length) {\n            var blocks = new Array(length);\n            var buffer = new ArrayBuffer(length << 11);\n            for (var i = 0; i < length; i++) {\n                blocks[i] = new Block(buffer, i << 11);\n            }\n            return blocks;\n        }\n    }\n    class BlockMemoryManager {\n        constructor() {\n            this.buffer = null;\n            this.offset = 0;\n            this.retainedMemory = 0;\n            this.usedMemory = 0;\n        }\n        ensureBuffer() {\n            if (!this.buffer || this.offset >= this.buffer.byteLength) {\n                this.buffer = new ArrayBuffer(10 << 20);\n                this.offset = 0;\n                this.retainedMemory += this.buffer.byteLength;\n            }\n            return this.buffer;\n        }\n        allocateBucket() {\n            this.ensureBuffer();\n            const array = new Int16Array(this.buffer, this.offset, 16);\n            this.offset += 32;\n            this.usedMemory += 32;\n            return array;\n        }\n    }\n    class LazyBlock {\n        constructor(memoryManager) {\n            this.buckets = new Array(64);\n            this.mm = memoryManager;\n        }\n        setBucketCoef(bucketNumber, index, value) {\n            if (!this.buckets[bucketNumber]) {\n                this.buckets[bucketNumber] = this.mm.allocateBucket();\n            }\n            this.buckets[bucketNumber][index] = value;\n        }\n        getBucketCoef(bucketNumber, index) {\n            return this.buckets[bucketNumber] ? this.buckets[bucketNumber][index] : 0;\n        }\n        getCoef(n) {\n            return this.getBucketCoef(n >> 4, n & 15);\n        }\n        setCoef(n, val) {\n            return this.setBucketCoef(n >> 4, n & 15, val);\n        }\n        static createBlockArray(length) {\n            const mm = new BlockMemoryManager();\n            const blocks = new Array(length);\n            for (var i = 0; i < length; i++) {\n                blocks[i] = new LazyBlock(mm);\n            }\n            return blocks;\n        }\n    }\n\n    class IWDecoder extends IWCodecBaseClass {\n        constructor() {\n            super();\n        }\n        init(imageinfo) {\n            this.info = imageinfo;\n            var blockCount = Math.ceil(this.info.width / 32) * Math.ceil(this.info.height / 32);\n            this.blocks = LazyBlock.createBlockArray(blockCount);\n        }\n        decodeSlice(zp, imageinfo) {\n            if (!this.info) {\n                this.init(imageinfo);\n            }\n            this.zp = zp;\n            if (!this.is_null_slice()) {\n                this.blocks.forEach(block => {\n                    this.preliminaryFlagComputation(block);\n                    if (this.blockBandDecodingPass()) {\n                        this.bucketDecodingPass(block, this.curband);\n                        this.newlyActiveCoefficientDecodingPass(block, this.curband);\n                    }\n                    this.previouslyActiveCoefficientDecodingPass(block);\n                });\n            }\n            this.finish_code_slice();\n        }\n        previouslyActiveCoefficientDecodingPass(block) {\n            var boff = 0;\n            var step = this.quant_hi[this.curband];\n            var indices = this.getBandBuckets(this.curband);\n            for (var i = indices.from; i <= indices.to; i++, boff++) {\n                for (var j = 0; j < 16; j++) {\n                    if (this.coeffstate[boff][j] & 2 ) {\n                        if (!this.curband) {\n                            step = this.quant_lo[j];\n                        }\n                        var des = 0;\n                        var coef = block.getBucketCoef(i, j);\n                        var absCoef = Math.abs(coef);\n                        if (absCoef <= 3 * step) {\n                            des = this.zp.decode(this.inreaseCoefCtx, 0);\n                            absCoef += step >> 2;\n                        } else {\n                            des = this.zp.IWdecode();\n                        }\n                        if (des) {\n                            absCoef += step >> 1;\n                        } else {\n                            absCoef += -step + (step >> 1);\n                        }\n                        block.setBucketCoef(i, j, coef < 0 ? -absCoef : absCoef);\n                    }\n                }\n            }\n        }\n        newlyActiveCoefficientDecodingPass(block, band) {\n            var boff = 0;\n            var indices = this.getBandBuckets(band);\n            var step = this.quant_hi[this.curband];\n            for (var i = indices.from; i <= indices.to; i++, boff++) {\n                if (this.bucketstate[boff] & 4) {\n                    var shift = 0;\n                    if (this.bucketstate[boff] & 2) {\n                        shift = 8;\n                    }\n                    var np = 0;\n                    for (var j = 0; j < 16; j++) {\n                        if (this.coeffstate[boff][j] & 8) {\n                            np++;\n                        }\n                    }\n                    for (var j = 0; j < 16; j++) {\n                        if (this.coeffstate[boff][j] & 8) {\n                            var ip = Math.min(7, np);\n                            var des = this.zp.decode(this.activateCoefCtx, shift + ip);\n                            if (des) {\n                                var sign = this.zp.IWdecode() ? -1 : 1;\n                                np = 0;\n                                if (!this.curband) {\n                                    step = this.quant_lo[j];\n                                }\n                                block.setBucketCoef(i, j, sign * (step + (step >> 1) - (step >> 3)));\n                            }\n                            if (np) {\n                                np--;\n                            }\n                        }\n                    }\n                }\n            }\n        }\n        bucketDecodingPass(block, band) {\n            var indices = this.getBandBuckets(band);\n            var boff = 0;\n            for (var i = indices.from; i <= indices.to; i++, boff++) {\n                if (!(this.bucketstate[boff] & 8)) {\n                    continue;\n                }\n                var n = 0;\n                if (band) {\n                    var t = 4 * i;\n                    for (var j = t; j < t + 4; j++) {\n                        if (block.getCoef(j)) {\n                            n++;\n                        }\n                    }\n                    if (n === 4) {\n                        n--;\n                    }\n                }\n                if (this.bbstate & 2) {\n                    n |= 4;\n                }\n                if (this.zp.decode(this.decodeCoefCtx, n + band * 8)) {\n                    this.bucketstate[boff] |= 4;\n                }\n            }\n        }\n        blockBandDecodingPass() {\n            var indices = this.getBandBuckets(this.curband);\n            var bcount = indices.to - indices.from + 1;\n            if (bcount < 16 || (this.bbstate & 2)) {\n                this.bbstate |= 4 ;\n            } else if (this.bbstate & 8) {\n                if (this.zp.decode(this.decodeBucketCtx, 0)) {\n                    this.bbstate |= 4;\n                }\n            }\n            return this.bbstate & 4;\n        }\n        preliminaryFlagComputation(block) {\n            this.bbstate = 0;\n            var bstatetmp = 0;\n            var indices = this.getBandBuckets(this.curband);\n            if (this.curband) {\n                var boff = 0;\n                for (var j = indices.from; j <= indices.to; j++, boff++) {\n                    bstatetmp = 0;\n                    for (var k = 0; k < 16; k++) {\n                        if (block.getBucketCoef(j, k) === 0) {\n                            this.coeffstate[boff][k] = 8;\n                        } else {\n                            this.coeffstate[boff][k] = 2;\n                        }\n                        bstatetmp |= this.coeffstate[boff][k];\n                    }\n                    this.bucketstate[boff] = bstatetmp;\n                    this.bbstate |= bstatetmp;\n                }\n            } else {\n                for (var k = 0; k < 16; k++) {\n                    if (this.coeffstate[0][k] !== 1) {\n                        if (block.getBucketCoef(0, k) === 0) {\n                            this.coeffstate[0][k] = 8;\n                        } else {\n                            this.coeffstate[0][k] = 2;\n                        }\n                    }\n                    bstatetmp |= this.coeffstate[0][k];\n                }\n                this.bucketstate[0] = bstatetmp;\n                this.bbstate |= bstatetmp;\n            }\n        }\n        getBytemap() {\n            var time = performance.now();\n            var fullWidth = Math.ceil(this.info.width / 32) * 32;\n            var fullHeight = Math.ceil(this.info.height / 32) * 32;\n            var blockRows = Math.ceil(this.info.height / 32);\n            var blockCols = Math.ceil(this.info.width / 32);\n            var bm = new LinearBytemap(fullWidth, fullHeight);\n            for (var r = 0; r < blockRows; r++) {\n                for (var c = 0; c < blockCols; c++) {\n                    var block = this.blocks[r * blockCols + c];\n                    for (var i = 0; i < 1024; i++) {\n                        bm.set(this.zigzagRow[i] + (r << 5), this.zigzagCol[i] + (c << 5), block.getCoef(i));\n                    }\n                }\n            }\n            DjVu.IS_DEBUG && console.time(\"inverseTime\");\n            this.inverseWaveletTransform(bm);\n            DjVu.IS_DEBUG && console.timeEnd(\"inverseTime\");\n            DjVu.IS_DEBUG && console.log(\"getBytemap time = \", performance.now() - time);\n            return bm;\n        }\n        inverseWaveletTransform(bitmap) {\n            var height = this.info.height;\n            var width = this.info.width;\n            var a, c, kmax, k, i, border;\n            var prev3, prev1, next1, next3;\n            for (var s = 16, sDegree = 4; s !== 0; s >>= 1, sDegree--) {\n                kmax = (height - 1) >> sDegree;\n                border = kmax - 3;\n                for (i = 0; i < width; i += s) {\n                    k = 0;\n                    prev1 = 0; next1 = 0;\n                    next3 = 1 > kmax ? 0 : bitmap.get(1 << sDegree, i);\n                    for (k = 0; k <= kmax; k += 2) {\n                        prev3 = prev1; prev1 = next1; next1 = next3;\n                        next3 = (k + 3) > kmax ? 0 : bitmap.get((k + 3) << sDegree, i);\n                        a = prev1 + next1;\n                        c = prev3 + next3;\n                        bitmap.sub(k << sDegree, i, ((a << 3) + a - c + 16) >> 5);\n                    }\n                    k = 1;\n                    prev1 = bitmap.get((k - 1) << sDegree, i);\n                    if (k + 1 <= kmax) {\n                        next1 = bitmap.get((k + 1) << sDegree, i);\n                        bitmap.add(k << sDegree, i, (prev1 + next1 + 1) >> 1);\n                    } else {\n                        bitmap.add(k << sDegree, i, prev1);\n                    }\n                    if (border >= 3) {\n                        next3 = bitmap.get((k + 3) << sDegree, i);\n                    }\n                    for (k = 3; k <= border; k += 2) {\n                        prev3 = prev1; prev1 = next1; next1 = next3;\n                        next3 = bitmap.get((k + 3) << sDegree, i);\n                        a = prev1 + next1;\n                        bitmap.add(k << sDegree, i,\n                            ((a << 3) + a - (prev3 + next3) + 8) >> 4\n                        );\n                    }\n                    for (; k <= kmax; k += 2) {\n                        prev1 = next1; next1 = next3; next3 = 0;\n                        if (k + 1 <= kmax) {\n                            bitmap.add(k << sDegree, i, (prev1 + next1 + 1) >> 1);\n                        } else {\n                            bitmap.add(k << sDegree, i, prev1);\n                        }\n                    }\n                }\n                kmax = (width - 1) >> sDegree;\n                border = kmax - 3;\n                for (i = 0; i < height; i += s) {\n                    k = 0;\n                    prev1 = 0;\n                    next1 = 0;\n                    next3 = 1 > kmax ? 0 : bitmap.get(i, 1 << sDegree);\n                    for (k = 0; k <= kmax; k += 2) {\n                        prev3 = prev1; prev1 = next1; next1 = next3;\n                        next3 = k + 3 > kmax ? 0 : bitmap.get(i, (k + 3) << sDegree);\n                        a = prev1 + next1;\n                        c = prev3 + next3;\n                        bitmap.sub(i, k << sDegree, ((a << 3) + a - c + 16) >> 5);\n                    }\n                    k = 1;\n                    prev1 = bitmap.get(i, (k - 1) << sDegree);\n                    if (k + 1 <= kmax) {\n                        next1 = bitmap.get(i, (k + 1) << sDegree);\n                        bitmap.add(i, k << sDegree, (prev1 + next1 + 1) >> 1);\n                    } else {\n                        bitmap.add(i, k << sDegree, prev1);\n                    }\n                    if (border >= 3) {\n                        next3 = bitmap.get(i, (k + 3) << sDegree);\n                    }\n                    for (k = 3; k <= border; k += 2) {\n                        prev3 = prev1; prev1 = next1; next1 = next3;\n                        next3 = bitmap.get(i, (k + 3) << sDegree);\n                        a = prev1 + next1;\n                        bitmap.add(i, k << sDegree,\n                            ((a << 3) + a - (prev3 + next3) + 8) >> 4\n                        );\n                    }\n                    for (; k <= kmax; k += 2) {\n                        prev1 = next1; next1 = next3; next3 = 0;\n                        if (k + 1 <= kmax) {\n                            bitmap.add(i, k << sDegree, (prev1 + next1 + 1) >> 1);\n                        } else {\n                            bitmap.add(i, k << sDegree, prev1);\n                        }\n                    }\n                }\n            }\n        }\n    }\n\n    class IWImage {\n        constructor() {\n            this.info = null;\n            this.pixelmap = null;\n            this.resetCodecs();\n        }\n        resetCodecs() {\n            this.ycodec = new IWDecoder();\n            this.crcodec = this.crcodec ? new IWDecoder() : null;\n            this.cbcodec = this.cbcodec ? new IWDecoder() : null;\n            this.cslice = 0;\n        }\n        decodeChunk(zp, header) {\n            if (!this.info) {\n                this.info = header;\n                if (!header.grayscale) {\n                    this.crcodec = new IWDecoder();\n                    this.cbcodec = new IWDecoder();\n                }\n            } else {\n                this.info.slices = header.slices;\n            }\n            for (var i = 0; i < this.info.slices; i++) {\n                this.cslice++;\n                this.ycodec.decodeSlice(zp, header);\n                if (this.crcodec && this.cbcodec && this.cslice > this.info.delayInit) {\n                    this.cbcodec.decodeSlice(zp, header);\n                    this.crcodec.decodeSlice(zp, header);\n                }\n            }\n        }\n        createPixelmap() {\n            var time = performance.now();\n            var ybitmap = this.ycodec.getBytemap();\n            var cbbitmap = this.cbcodec ? this.cbcodec.getBytemap() : null;\n            var crbitmap = this.crcodec ? this.crcodec.getBytemap() : null;\n            var pixelMapTime = performance.now();\n            this.pixelmap = new LazyPixelmap(ybitmap, cbbitmap, crbitmap);\n            DjVu.IS_DEBUG && console.log('Pixelmap constructor time = ', performance.now() - pixelMapTime);\n            DjVu.IS_DEBUG && console.log('IWImage.createPixelmap time = ', performance.now() - time);\n            this.resetCodecs();\n        }\n        getImage() {\n            const time = performance.now();\n            if (!this.pixelmap) this.createPixelmap();\n            const width = this.info.width;\n            const height = this.info.height;\n            const image = new ImageData(width, height);\n            const processRow = (i) => {\n                const rowOffset = i * this.pixelmap.width;\n                let pixelIndex = ((height - i - 1) * width) << 2;\n                for (let j = 0; j < width; j++) {\n                    this.pixelmap.writePixel(rowOffset + j, image.data, pixelIndex);\n                    image.data[pixelIndex | 3] = 255;\n                    pixelIndex += 4;\n                }\n            };\n            for (let i = 0; i < height; i++) {\n                processRow(i);\n            }\n            DjVu.IS_DEBUG && console.log('IWImage.getImage time = ', performance.now() - time);\n            return image;\n        }\n    }\n\n    class DjVuText extends IFFChunk {\n        constructor(bs) {\n            super(bs);\n            this.isDecoded = false;\n            this.dbs = this.id === 'TXTz' ? null : this.bs;\n        }\n        decode() {\n            if (this.isDecoded) {\n                return;\n            }\n            if (!this.dbs) {\n                this.dbs = BZZDecoder.decodeByteStream(this.bs);\n            }\n            this.textLength = this.dbs.getInt24();\n            this.utf8array = this.dbs.getUint8Array(this.textLength);\n            this.version = this.dbs.getUint8();\n            if (this.version !== 1) {\n                console.warn(\"The version in \" + this.id + \" isn't equal to 1!\");\n            }\n            this.pageZone = this.dbs.isEmpty() ? null : this.decodeZone();\n            this.isDecoded = true;\n        }\n        decodeZone(parent = null, prev = null) {\n            var type = this.dbs.getUint8();\n            var x = this.dbs.getUint16() - 0x8000;\n            var y = this.dbs.getUint16() - 0x8000;\n            var width = this.dbs.getUint16() - 0x8000;\n            var height = this.dbs.getUint16() - 0x8000;\n            var textStart = this.dbs.getUint16() - 0x8000;\n            var textLength = this.dbs.getInt24();\n            if (prev) {\n                if (type === 1  || type === 4  || type === 5 ) {\n                    x = x + prev.x;\n                    y = prev.y - (y + height);\n                } else\n                {\n                    x = x + prev.x + prev.width;\n                    y = y + prev.y;\n                }\n                textStart += prev.textStart + prev.textLength;\n            } else if (parent) {\n                x = x + parent.x;\n                y = parent.y + parent.height - (y + height);\n                textStart += parent.textStart;\n            }\n            var zone = { type, x, y, width, height, textStart, textLength };\n            var childrenCount = this.dbs.getInt24();\n            if (childrenCount) {\n                var children = new Array(childrenCount);\n                var childZone = null;\n                for (var i = 0; i < childrenCount; i++) {\n                    childZone = this.decodeZone(zone, childZone);\n                    children[i] = childZone;\n                }\n                zone.children = children;\n            }\n            return zone;\n        }\n        getText() {\n            this.decode();\n            this.text = this.text || createStringFromUtf8Array(this.utf8array);\n            return this.text;\n        }\n        getPageZone() {\n            this.decode();\n            return this.pageZone;\n        }\n        getNormalizedZones() {\n            this.decode();\n            if (!this.pageZone) {\n                return null;\n            }\n            if (this.normalizedZones) {\n                return this.normalizedZones;\n            }\n            this.normalizedZones = [];\n            var registry = {};\n            const process = (zone) => {\n                if (zone.children) {\n                    zone.children.forEach(zone => process(zone));\n                } else {\n                    var key = zone.x.toString() + zone.y + zone.width + zone.height;\n                    var zoneText = createStringFromUtf8Array(this.utf8array.slice(zone.textStart, zone.textStart + zone.textLength));\n                    if (registry[key]) {\n                        registry[key].text += zoneText;\n                    } else {\n                        registry[key] = {\n                            x: zone.x,\n                            y: zone.y,\n                            width: zone.width,\n                            height: zone.height,\n                            text: zoneText\n                        };\n                        this.normalizedZones.push(registry[key]);\n                    }\n                }\n            };\n            process(this.pageZone);\n            return this.normalizedZones;\n        }\n        toString() {\n            this.decode();\n            var st = \"Text length = \" + this.textLength + \"\\n\";\n            return super.toString() + st;\n        }\n    }\n\n    var commonjsGlobal = typeof globalThis !== 'undefined' ? globalThis : typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {};\n\n    function commonjsRequire () {\n    \tthrow new Error('Dynamic requires are not currently supported by rollup-plugin-commonjs');\n    }\n\n    function createCommonjsModule(fn, module) {\n    \treturn module = { exports: {} }, fn(module, module.exports), module.exports;\n    }\n\n    var browser = createCommonjsModule(function (module, exports) {\n    (function(f){{module.exports=f();}})(function(){return (function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof commonjsRequire==\"function\"&&commonjsRequire;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error(\"Cannot find module '\"+o+\"'\");throw f.code=\"MODULE_NOT_FOUND\",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r);}return n[o].exports}var i=typeof commonjsRequire==\"function\"&&commonjsRequire;for(var o=0;o<r.length;o++)s(r[o]);return s})({1:[function(require,module,exports){\n    (function (Buffer){\n    let interlaceUtils = require(\"./interlace\");\n    let pixelBppMapper = [\n      function () {},\n      function (pxData, data, pxPos, rawPos) {\n        if (rawPos === data.length) {\n          throw new Error(\"Ran out of data\");\n        }\n        let pixel = data[rawPos];\n        pxData[pxPos] = pixel;\n        pxData[pxPos + 1] = pixel;\n        pxData[pxPos + 2] = pixel;\n        pxData[pxPos + 3] = 0xff;\n      },\n      function (pxData, data, pxPos, rawPos) {\n        if (rawPos + 1 >= data.length) {\n          throw new Error(\"Ran out of data\");\n        }\n        let pixel = data[rawPos];\n        pxData[pxPos] = pixel;\n        pxData[pxPos + 1] = pixel;\n        pxData[pxPos + 2] = pixel;\n        pxData[pxPos + 3] = data[rawPos + 1];\n      },\n      function (pxData, data, pxPos, rawPos) {\n        if (rawPos + 2 >= data.length) {\n          throw new Error(\"Ran out of data\");\n        }\n        pxData[pxPos] = data[rawPos];\n        pxData[pxPos + 1] = data[rawPos + 1];\n        pxData[pxPos + 2] = data[rawPos + 2];\n        pxData[pxPos + 3] = 0xff;\n      },\n      function (pxData, data, pxPos, rawPos) {\n        if (rawPos + 3 >= data.length) {\n          throw new Error(\"Ran out of data\");\n        }\n        pxData[pxPos] = data[rawPos];\n        pxData[pxPos + 1] = data[rawPos + 1];\n        pxData[pxPos + 2] = data[rawPos + 2];\n        pxData[pxPos + 3] = data[rawPos + 3];\n      },\n    ];\n    let pixelBppCustomMapper = [\n      function () {},\n      function (pxData, pixelData, pxPos, maxBit) {\n        let pixel = pixelData[0];\n        pxData[pxPos] = pixel;\n        pxData[pxPos + 1] = pixel;\n        pxData[pxPos + 2] = pixel;\n        pxData[pxPos + 3] = maxBit;\n      },\n      function (pxData, pixelData, pxPos) {\n        let pixel = pixelData[0];\n        pxData[pxPos] = pixel;\n        pxData[pxPos + 1] = pixel;\n        pxData[pxPos + 2] = pixel;\n        pxData[pxPos + 3] = pixelData[1];\n      },\n      function (pxData, pixelData, pxPos, maxBit) {\n        pxData[pxPos] = pixelData[0];\n        pxData[pxPos + 1] = pixelData[1];\n        pxData[pxPos + 2] = pixelData[2];\n        pxData[pxPos + 3] = maxBit;\n      },\n      function (pxData, pixelData, pxPos) {\n        pxData[pxPos] = pixelData[0];\n        pxData[pxPos + 1] = pixelData[1];\n        pxData[pxPos + 2] = pixelData[2];\n        pxData[pxPos + 3] = pixelData[3];\n      },\n    ];\n    function bitRetriever(data, depth) {\n      let leftOver = [];\n      let i = 0;\n      function split() {\n        if (i === data.length) {\n          throw new Error(\"Ran out of data\");\n        }\n        let byte = data[i];\n        i++;\n        let byte8, byte7, byte6, byte5, byte4, byte3, byte2, byte1;\n        switch (depth) {\n          default:\n            throw new Error(\"unrecognised depth\");\n          case 16:\n            byte2 = data[i];\n            i++;\n            leftOver.push((byte << 8) + byte2);\n            break;\n          case 4:\n            byte2 = byte & 0x0f;\n            byte1 = byte >> 4;\n            leftOver.push(byte1, byte2);\n            break;\n          case 2:\n            byte4 = byte & 3;\n            byte3 = (byte >> 2) & 3;\n            byte2 = (byte >> 4) & 3;\n            byte1 = (byte >> 6) & 3;\n            leftOver.push(byte1, byte2, byte3, byte4);\n            break;\n          case 1:\n            byte8 = byte & 1;\n            byte7 = (byte >> 1) & 1;\n            byte6 = (byte >> 2) & 1;\n            byte5 = (byte >> 3) & 1;\n            byte4 = (byte >> 4) & 1;\n            byte3 = (byte >> 5) & 1;\n            byte2 = (byte >> 6) & 1;\n            byte1 = (byte >> 7) & 1;\n            leftOver.push(byte1, byte2, byte3, byte4, byte5, byte6, byte7, byte8);\n            break;\n        }\n      }\n      return {\n        get: function (count) {\n          while (leftOver.length < count) {\n            split();\n          }\n          let returner = leftOver.slice(0, count);\n          leftOver = leftOver.slice(count);\n          return returner;\n        },\n        resetAfterLine: function () {\n          leftOver.length = 0;\n        },\n        end: function () {\n          if (i !== data.length) {\n            throw new Error(\"extra data found\");\n          }\n        },\n      };\n    }\n    function mapImage8Bit(image, pxData, getPxPos, bpp, data, rawPos) {\n      let imageWidth = image.width;\n      let imageHeight = image.height;\n      let imagePass = image.index;\n      for (let y = 0; y < imageHeight; y++) {\n        for (let x = 0; x < imageWidth; x++) {\n          let pxPos = getPxPos(x, y, imagePass);\n          pixelBppMapper[bpp](pxData, data, pxPos, rawPos);\n          rawPos += bpp;\n        }\n      }\n      return rawPos;\n    }\n    function mapImageCustomBit(image, pxData, getPxPos, bpp, bits, maxBit) {\n      let imageWidth = image.width;\n      let imageHeight = image.height;\n      let imagePass = image.index;\n      for (let y = 0; y < imageHeight; y++) {\n        for (let x = 0; x < imageWidth; x++) {\n          let pixelData = bits.get(bpp);\n          let pxPos = getPxPos(x, y, imagePass);\n          pixelBppCustomMapper[bpp](pxData, pixelData, pxPos, maxBit);\n        }\n        bits.resetAfterLine();\n      }\n    }\n    exports.dataToBitMap = function (data, bitmapInfo) {\n      let width = bitmapInfo.width;\n      let height = bitmapInfo.height;\n      let depth = bitmapInfo.depth;\n      let bpp = bitmapInfo.bpp;\n      let interlace = bitmapInfo.interlace;\n      let bits;\n      if (depth !== 8) {\n        bits = bitRetriever(data, depth);\n      }\n      let pxData;\n      if (depth <= 8) {\n        pxData = Buffer.alloc(width * height * 4);\n      } else {\n        pxData = new Uint16Array(width * height * 4);\n      }\n      let maxBit = Math.pow(2, depth) - 1;\n      let rawPos = 0;\n      let images;\n      let getPxPos;\n      if (interlace) {\n        images = interlaceUtils.getImagePasses(width, height);\n        getPxPos = interlaceUtils.getInterlaceIterator(width, height);\n      } else {\n        let nonInterlacedPxPos = 0;\n        getPxPos = function () {\n          let returner = nonInterlacedPxPos;\n          nonInterlacedPxPos += 4;\n          return returner;\n        };\n        images = [{ width: width, height: height }];\n      }\n      for (let imageIndex = 0; imageIndex < images.length; imageIndex++) {\n        if (depth === 8) {\n          rawPos = mapImage8Bit(\n            images[imageIndex],\n            pxData,\n            getPxPos,\n            bpp,\n            data,\n            rawPos\n          );\n        } else {\n          mapImageCustomBit(\n            images[imageIndex],\n            pxData,\n            getPxPos,\n            bpp,\n            bits,\n            maxBit\n          );\n        }\n      }\n      if (depth === 8) {\n        if (rawPos !== data.length) {\n          throw new Error(\"extra data found\");\n        }\n      } else {\n        bits.end();\n      }\n      return pxData;\n    };\n    }).call(this,require(\"buffer\").Buffer);\n    },{\"./interlace\":11,\"buffer\":28}],2:[function(require,module,exports){\n    (function (Buffer){\n    let constants = require(\"./constants\");\n    module.exports = function (dataIn, width, height, options) {\n      let outHasAlpha =\n        [constants.COLORTYPE_COLOR_ALPHA, constants.COLORTYPE_ALPHA].indexOf(\n          options.colorType\n        ) !== -1;\n      if (options.colorType === options.inputColorType) {\n        let bigEndian = (function () {\n          let buffer = new ArrayBuffer(2);\n          new DataView(buffer).setInt16(0, 256, true );\n          return new Int16Array(buffer)[0] !== 256;\n        })();\n        if (options.bitDepth === 8 || (options.bitDepth === 16 && bigEndian)) {\n          return dataIn;\n        }\n      }\n      let data = options.bitDepth !== 16 ? dataIn : new Uint16Array(dataIn.buffer);\n      let maxValue = 255;\n      let inBpp = constants.COLORTYPE_TO_BPP_MAP[options.inputColorType];\n      if (inBpp === 4 && !options.inputHasAlpha) {\n        inBpp = 3;\n      }\n      let outBpp = constants.COLORTYPE_TO_BPP_MAP[options.colorType];\n      if (options.bitDepth === 16) {\n        maxValue = 65535;\n        outBpp *= 2;\n      }\n      let outData = Buffer.alloc(width * height * outBpp);\n      let inIndex = 0;\n      let outIndex = 0;\n      let bgColor = options.bgColor || {};\n      if (bgColor.red === undefined) {\n        bgColor.red = maxValue;\n      }\n      if (bgColor.green === undefined) {\n        bgColor.green = maxValue;\n      }\n      if (bgColor.blue === undefined) {\n        bgColor.blue = maxValue;\n      }\n      function getRGBA() {\n        let red;\n        let green;\n        let blue;\n        let alpha = maxValue;\n        switch (options.inputColorType) {\n          case constants.COLORTYPE_COLOR_ALPHA:\n            alpha = data[inIndex + 3];\n            red = data[inIndex];\n            green = data[inIndex + 1];\n            blue = data[inIndex + 2];\n            break;\n          case constants.COLORTYPE_COLOR:\n            red = data[inIndex];\n            green = data[inIndex + 1];\n            blue = data[inIndex + 2];\n            break;\n          case constants.COLORTYPE_ALPHA:\n            alpha = data[inIndex + 1];\n            red = data[inIndex];\n            green = red;\n            blue = red;\n            break;\n          case constants.COLORTYPE_GRAYSCALE:\n            red = data[inIndex];\n            green = red;\n            blue = red;\n            break;\n          default:\n            throw new Error(\n              \"input color type:\" +\n                options.inputColorType +\n                \" is not supported at present\"\n            );\n        }\n        if (options.inputHasAlpha) {\n          if (!outHasAlpha) {\n            alpha /= maxValue;\n            red = Math.min(\n              Math.max(Math.round((1 - alpha) * bgColor.red + alpha * red), 0),\n              maxValue\n            );\n            green = Math.min(\n              Math.max(Math.round((1 - alpha) * bgColor.green + alpha * green), 0),\n              maxValue\n            );\n            blue = Math.min(\n              Math.max(Math.round((1 - alpha) * bgColor.blue + alpha * blue), 0),\n              maxValue\n            );\n          }\n        }\n        return { red: red, green: green, blue: blue, alpha: alpha };\n      }\n      for (let y = 0; y < height; y++) {\n        for (let x = 0; x < width; x++) {\n          let rgba = getRGBA();\n          switch (options.colorType) {\n            case constants.COLORTYPE_COLOR_ALPHA:\n            case constants.COLORTYPE_COLOR:\n              if (options.bitDepth === 8) {\n                outData[outIndex] = rgba.red;\n                outData[outIndex + 1] = rgba.green;\n                outData[outIndex + 2] = rgba.blue;\n                if (outHasAlpha) {\n                  outData[outIndex + 3] = rgba.alpha;\n                }\n              } else {\n                outData.writeUInt16BE(rgba.red, outIndex);\n                outData.writeUInt16BE(rgba.green, outIndex + 2);\n                outData.writeUInt16BE(rgba.blue, outIndex + 4);\n                if (outHasAlpha) {\n                  outData.writeUInt16BE(rgba.alpha, outIndex + 6);\n                }\n              }\n              break;\n            case constants.COLORTYPE_ALPHA:\n            case constants.COLORTYPE_GRAYSCALE: {\n              let grayscale = (rgba.red + rgba.green + rgba.blue) / 3;\n              if (options.bitDepth === 8) {\n                outData[outIndex] = grayscale;\n                if (outHasAlpha) {\n                  outData[outIndex + 1] = rgba.alpha;\n                }\n              } else {\n                outData.writeUInt16BE(grayscale, outIndex);\n                if (outHasAlpha) {\n                  outData.writeUInt16BE(rgba.alpha, outIndex + 2);\n                }\n              }\n              break;\n            }\n            default:\n              throw new Error(\"unrecognised color Type \" + options.colorType);\n          }\n          inIndex += inBpp;\n          outIndex += outBpp;\n        }\n      }\n      return outData;\n    };\n    }).call(this,require(\"buffer\").Buffer);\n    },{\"./constants\":4,\"buffer\":28}],3:[function(require,module,exports){\n    (function (process,Buffer){\n    let util = require(\"util\");\n    let Stream = require(\"stream\");\n    let ChunkStream = (module.exports = function () {\n      Stream.call(this);\n      this._buffers = [];\n      this._buffered = 0;\n      this._reads = [];\n      this._paused = false;\n      this._encoding = \"utf8\";\n      this.writable = true;\n    });\n    util.inherits(ChunkStream, Stream);\n    ChunkStream.prototype.read = function (length, callback) {\n      this._reads.push({\n        length: Math.abs(length),\n        allowLess: length < 0,\n        func: callback,\n      });\n      process.nextTick(\n        function () {\n          this._process();\n          if (this._paused && this._reads && this._reads.length > 0) {\n            this._paused = false;\n            this.emit(\"drain\");\n          }\n        }.bind(this)\n      );\n    };\n    ChunkStream.prototype.write = function (data, encoding) {\n      if (!this.writable) {\n        this.emit(\"error\", new Error(\"Stream not writable\"));\n        return false;\n      }\n      let dataBuffer;\n      if (Buffer.isBuffer(data)) {\n        dataBuffer = data;\n      } else {\n        dataBuffer = Buffer.from(data, encoding || this._encoding);\n      }\n      this._buffers.push(dataBuffer);\n      this._buffered += dataBuffer.length;\n      this._process();\n      if (this._reads && this._reads.length === 0) {\n        this._paused = true;\n      }\n      return this.writable && !this._paused;\n    };\n    ChunkStream.prototype.end = function (data, encoding) {\n      if (data) {\n        this.write(data, encoding);\n      }\n      this.writable = false;\n      if (!this._buffers) {\n        return;\n      }\n      if (this._buffers.length === 0) {\n        this._end();\n      } else {\n        this._buffers.push(null);\n        this._process();\n      }\n    };\n    ChunkStream.prototype.destroySoon = ChunkStream.prototype.end;\n    ChunkStream.prototype._end = function () {\n      if (this._reads.length > 0) {\n        this.emit(\"error\", new Error(\"Unexpected end of input\"));\n      }\n      this.destroy();\n    };\n    ChunkStream.prototype.destroy = function () {\n      if (!this._buffers) {\n        return;\n      }\n      this.writable = false;\n      this._reads = null;\n      this._buffers = null;\n      this.emit(\"close\");\n    };\n    ChunkStream.prototype._processReadAllowingLess = function (read) {\n      this._reads.shift();\n      let smallerBuf = this._buffers[0];\n      if (smallerBuf.length > read.length) {\n        this._buffered -= read.length;\n        this._buffers[0] = smallerBuf.slice(read.length);\n        read.func.call(this, smallerBuf.slice(0, read.length));\n      } else {\n        this._buffered -= smallerBuf.length;\n        this._buffers.shift();\n        read.func.call(this, smallerBuf);\n      }\n    };\n    ChunkStream.prototype._processRead = function (read) {\n      this._reads.shift();\n      let pos = 0;\n      let count = 0;\n      let data = Buffer.alloc(read.length);\n      while (pos < read.length) {\n        let buf = this._buffers[count++];\n        let len = Math.min(buf.length, read.length - pos);\n        buf.copy(data, pos, 0, len);\n        pos += len;\n        if (len !== buf.length) {\n          this._buffers[--count] = buf.slice(len);\n        }\n      }\n      if (count > 0) {\n        this._buffers.splice(0, count);\n      }\n      this._buffered -= read.length;\n      read.func.call(this, data);\n    };\n    ChunkStream.prototype._process = function () {\n      try {\n        while (this._buffered > 0 && this._reads && this._reads.length > 0) {\n          let read = this._reads[0];\n          if (read.allowLess) {\n            this._processReadAllowingLess(read);\n          } else if (this._buffered >= read.length) {\n            this._processRead(read);\n          } else {\n            break;\n          }\n        }\n        if (this._buffers && !this.writable) {\n          this._end();\n        }\n      } catch (ex) {\n        this.emit(\"error\", ex);\n      }\n    };\n    }).call(this,require('_process'),require(\"buffer\").Buffer);\n    },{\"_process\":47,\"buffer\":28,\"stream\":63,\"util\":67}],4:[function(require,module,exports){\n    module.exports = {\n      PNG_SIGNATURE: [0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a],\n      TYPE_IHDR: 0x49484452,\n      TYPE_IEND: 0x49454e44,\n      TYPE_IDAT: 0x49444154,\n      TYPE_PLTE: 0x504c5445,\n      TYPE_tRNS: 0x74524e53,\n      TYPE_gAMA: 0x67414d41,\n      COLORTYPE_GRAYSCALE: 0,\n      COLORTYPE_PALETTE: 1,\n      COLORTYPE_COLOR: 2,\n      COLORTYPE_ALPHA: 4,\n      COLORTYPE_PALETTE_COLOR: 3,\n      COLORTYPE_COLOR_ALPHA: 6,\n      COLORTYPE_TO_BPP_MAP: {\n        0: 1,\n        2: 3,\n        3: 1,\n        4: 2,\n        6: 4,\n      },\n      GAMMA_DIVISION: 100000,\n    };\n    },{}],5:[function(require,module,exports){\n    let crcTable = [];\n    (function () {\n      for (let i = 0; i < 256; i++) {\n        let currentCrc = i;\n        for (let j = 0; j < 8; j++) {\n          if (currentCrc & 1) {\n            currentCrc = 0xedb88320 ^ (currentCrc >>> 1);\n          } else {\n            currentCrc = currentCrc >>> 1;\n          }\n        }\n        crcTable[i] = currentCrc;\n      }\n    })();\n    let CrcCalculator = (module.exports = function () {\n      this._crc = -1;\n    });\n    CrcCalculator.prototype.write = function (data) {\n      for (let i = 0; i < data.length; i++) {\n        this._crc = crcTable[(this._crc ^ data[i]) & 0xff] ^ (this._crc >>> 8);\n      }\n      return true;\n    };\n    CrcCalculator.prototype.crc32 = function () {\n      return this._crc ^ -1;\n    };\n    CrcCalculator.crc32 = function (buf) {\n      let crc = -1;\n      for (let i = 0; i < buf.length; i++) {\n        crc = crcTable[(crc ^ buf[i]) & 0xff] ^ (crc >>> 8);\n      }\n      return crc ^ -1;\n    };\n    },{}],6:[function(require,module,exports){\n    (function (Buffer){\n    let paethPredictor = require(\"./paeth-predictor\");\n    function filterNone(pxData, pxPos, byteWidth, rawData, rawPos) {\n      for (let x = 0; x < byteWidth; x++) {\n        rawData[rawPos + x] = pxData[pxPos + x];\n      }\n    }\n    function filterSumNone(pxData, pxPos, byteWidth) {\n      let sum = 0;\n      let length = pxPos + byteWidth;\n      for (let i = pxPos; i < length; i++) {\n        sum += Math.abs(pxData[i]);\n      }\n      return sum;\n    }\n    function filterSub(pxData, pxPos, byteWidth, rawData, rawPos, bpp) {\n      for (let x = 0; x < byteWidth; x++) {\n        let left = x >= bpp ? pxData[pxPos + x - bpp] : 0;\n        let val = pxData[pxPos + x] - left;\n        rawData[rawPos + x] = val;\n      }\n    }\n    function filterSumSub(pxData, pxPos, byteWidth, bpp) {\n      let sum = 0;\n      for (let x = 0; x < byteWidth; x++) {\n        let left = x >= bpp ? pxData[pxPos + x - bpp] : 0;\n        let val = pxData[pxPos + x] - left;\n        sum += Math.abs(val);\n      }\n      return sum;\n    }\n    function filterUp(pxData, pxPos, byteWidth, rawData, rawPos) {\n      for (let x = 0; x < byteWidth; x++) {\n        let up = pxPos > 0 ? pxData[pxPos + x - byteWidth] : 0;\n        let val = pxData[pxPos + x] - up;\n        rawData[rawPos + x] = val;\n      }\n    }\n    function filterSumUp(pxData, pxPos, byteWidth) {\n      let sum = 0;\n      let length = pxPos + byteWidth;\n      for (let x = pxPos; x < length; x++) {\n        let up = pxPos > 0 ? pxData[x - byteWidth] : 0;\n        let val = pxData[x] - up;\n        sum += Math.abs(val);\n      }\n      return sum;\n    }\n    function filterAvg(pxData, pxPos, byteWidth, rawData, rawPos, bpp) {\n      for (let x = 0; x < byteWidth; x++) {\n        let left = x >= bpp ? pxData[pxPos + x - bpp] : 0;\n        let up = pxPos > 0 ? pxData[pxPos + x - byteWidth] : 0;\n        let val = pxData[pxPos + x] - ((left + up) >> 1);\n        rawData[rawPos + x] = val;\n      }\n    }\n    function filterSumAvg(pxData, pxPos, byteWidth, bpp) {\n      let sum = 0;\n      for (let x = 0; x < byteWidth; x++) {\n        let left = x >= bpp ? pxData[pxPos + x - bpp] : 0;\n        let up = pxPos > 0 ? pxData[pxPos + x - byteWidth] : 0;\n        let val = pxData[pxPos + x] - ((left + up) >> 1);\n        sum += Math.abs(val);\n      }\n      return sum;\n    }\n    function filterPaeth(pxData, pxPos, byteWidth, rawData, rawPos, bpp) {\n      for (let x = 0; x < byteWidth; x++) {\n        let left = x >= bpp ? pxData[pxPos + x - bpp] : 0;\n        let up = pxPos > 0 ? pxData[pxPos + x - byteWidth] : 0;\n        let upleft =\n          pxPos > 0 && x >= bpp ? pxData[pxPos + x - (byteWidth + bpp)] : 0;\n        let val = pxData[pxPos + x] - paethPredictor(left, up, upleft);\n        rawData[rawPos + x] = val;\n      }\n    }\n    function filterSumPaeth(pxData, pxPos, byteWidth, bpp) {\n      let sum = 0;\n      for (let x = 0; x < byteWidth; x++) {\n        let left = x >= bpp ? pxData[pxPos + x - bpp] : 0;\n        let up = pxPos > 0 ? pxData[pxPos + x - byteWidth] : 0;\n        let upleft =\n          pxPos > 0 && x >= bpp ? pxData[pxPos + x - (byteWidth + bpp)] : 0;\n        let val = pxData[pxPos + x] - paethPredictor(left, up, upleft);\n        sum += Math.abs(val);\n      }\n      return sum;\n    }\n    let filters = {\n      0: filterNone,\n      1: filterSub,\n      2: filterUp,\n      3: filterAvg,\n      4: filterPaeth,\n    };\n    let filterSums = {\n      0: filterSumNone,\n      1: filterSumSub,\n      2: filterSumUp,\n      3: filterSumAvg,\n      4: filterSumPaeth,\n    };\n    module.exports = function (pxData, width, height, options, bpp) {\n      let filterTypes;\n      if (!(\"filterType\" in options) || options.filterType === -1) {\n        filterTypes = [0, 1, 2, 3, 4];\n      } else if (typeof options.filterType === \"number\") {\n        filterTypes = [options.filterType];\n      } else {\n        throw new Error(\"unrecognised filter types\");\n      }\n      if (options.bitDepth === 16) {\n        bpp *= 2;\n      }\n      let byteWidth = width * bpp;\n      let rawPos = 0;\n      let pxPos = 0;\n      let rawData = Buffer.alloc((byteWidth + 1) * height);\n      let sel = filterTypes[0];\n      for (let y = 0; y < height; y++) {\n        if (filterTypes.length > 1) {\n          let min = Infinity;\n          for (let i = 0; i < filterTypes.length; i++) {\n            let sum = filterSums[filterTypes[i]](pxData, pxPos, byteWidth, bpp);\n            if (sum < min) {\n              sel = filterTypes[i];\n              min = sum;\n            }\n          }\n        }\n        rawData[rawPos] = sel;\n        rawPos++;\n        filters[sel](pxData, pxPos, byteWidth, rawData, rawPos, bpp);\n        rawPos += byteWidth;\n        pxPos += byteWidth;\n      }\n      return rawData;\n    };\n    }).call(this,require(\"buffer\").Buffer);\n    },{\"./paeth-predictor\":15,\"buffer\":28}],7:[function(require,module,exports){\n    (function (Buffer){\n    let util = require(\"util\");\n    let ChunkStream = require(\"./chunkstream\");\n    let Filter = require(\"./filter-parse\");\n    let FilterAsync = (module.exports = function (bitmapInfo) {\n      ChunkStream.call(this);\n      let buffers = [];\n      let that = this;\n      this._filter = new Filter(bitmapInfo, {\n        read: this.read.bind(this),\n        write: function (buffer) {\n          buffers.push(buffer);\n        },\n        complete: function () {\n          that.emit(\"complete\", Buffer.concat(buffers));\n        },\n      });\n      this._filter.start();\n    });\n    util.inherits(FilterAsync, ChunkStream);\n    }).call(this,require(\"buffer\").Buffer);\n    },{\"./chunkstream\":3,\"./filter-parse\":9,\"buffer\":28,\"util\":67}],8:[function(require,module,exports){\n    (function (Buffer){\n    let SyncReader = require(\"./sync-reader\");\n    let Filter = require(\"./filter-parse\");\n    exports.process = function (inBuffer, bitmapInfo) {\n      let outBuffers = [];\n      let reader = new SyncReader(inBuffer);\n      let filter = new Filter(bitmapInfo, {\n        read: reader.read.bind(reader),\n        write: function (bufferPart) {\n          outBuffers.push(bufferPart);\n        },\n        complete: function () {},\n      });\n      filter.start();\n      reader.process();\n      return Buffer.concat(outBuffers);\n    };\n    }).call(this,require(\"buffer\").Buffer);\n    },{\"./filter-parse\":9,\"./sync-reader\":22,\"buffer\":28}],9:[function(require,module,exports){\n    (function (Buffer){\n    let interlaceUtils = require(\"./interlace\");\n    let paethPredictor = require(\"./paeth-predictor\");\n    function getByteWidth(width, bpp, depth) {\n      let byteWidth = width * bpp;\n      if (depth !== 8) {\n        byteWidth = Math.ceil(byteWidth / (8 / depth));\n      }\n      return byteWidth;\n    }\n    let Filter = (module.exports = function (bitmapInfo, dependencies) {\n      let width = bitmapInfo.width;\n      let height = bitmapInfo.height;\n      let interlace = bitmapInfo.interlace;\n      let bpp = bitmapInfo.bpp;\n      let depth = bitmapInfo.depth;\n      this.read = dependencies.read;\n      this.write = dependencies.write;\n      this.complete = dependencies.complete;\n      this._imageIndex = 0;\n      this._images = [];\n      if (interlace) {\n        let passes = interlaceUtils.getImagePasses(width, height);\n        for (let i = 0; i < passes.length; i++) {\n          this._images.push({\n            byteWidth: getByteWidth(passes[i].width, bpp, depth),\n            height: passes[i].height,\n            lineIndex: 0,\n          });\n        }\n      } else {\n        this._images.push({\n          byteWidth: getByteWidth(width, bpp, depth),\n          height: height,\n          lineIndex: 0,\n        });\n      }\n      if (depth === 8) {\n        this._xComparison = bpp;\n      } else if (depth === 16) {\n        this._xComparison = bpp * 2;\n      } else {\n        this._xComparison = 1;\n      }\n    });\n    Filter.prototype.start = function () {\n      this.read(\n        this._images[this._imageIndex].byteWidth + 1,\n        this._reverseFilterLine.bind(this)\n      );\n    };\n    Filter.prototype._unFilterType1 = function (\n      rawData,\n      unfilteredLine,\n      byteWidth\n    ) {\n      let xComparison = this._xComparison;\n      let xBiggerThan = xComparison - 1;\n      for (let x = 0; x < byteWidth; x++) {\n        let rawByte = rawData[1 + x];\n        let f1Left = x > xBiggerThan ? unfilteredLine[x - xComparison] : 0;\n        unfilteredLine[x] = rawByte + f1Left;\n      }\n    };\n    Filter.prototype._unFilterType2 = function (\n      rawData,\n      unfilteredLine,\n      byteWidth\n    ) {\n      let lastLine = this._lastLine;\n      for (let x = 0; x < byteWidth; x++) {\n        let rawByte = rawData[1 + x];\n        let f2Up = lastLine ? lastLine[x] : 0;\n        unfilteredLine[x] = rawByte + f2Up;\n      }\n    };\n    Filter.prototype._unFilterType3 = function (\n      rawData,\n      unfilteredLine,\n      byteWidth\n    ) {\n      let xComparison = this._xComparison;\n      let xBiggerThan = xComparison - 1;\n      let lastLine = this._lastLine;\n      for (let x = 0; x < byteWidth; x++) {\n        let rawByte = rawData[1 + x];\n        let f3Up = lastLine ? lastLine[x] : 0;\n        let f3Left = x > xBiggerThan ? unfilteredLine[x - xComparison] : 0;\n        let f3Add = Math.floor((f3Left + f3Up) / 2);\n        unfilteredLine[x] = rawByte + f3Add;\n      }\n    };\n    Filter.prototype._unFilterType4 = function (\n      rawData,\n      unfilteredLine,\n      byteWidth\n    ) {\n      let xComparison = this._xComparison;\n      let xBiggerThan = xComparison - 1;\n      let lastLine = this._lastLine;\n      for (let x = 0; x < byteWidth; x++) {\n        let rawByte = rawData[1 + x];\n        let f4Up = lastLine ? lastLine[x] : 0;\n        let f4Left = x > xBiggerThan ? unfilteredLine[x - xComparison] : 0;\n        let f4UpLeft = x > xBiggerThan && lastLine ? lastLine[x - xComparison] : 0;\n        let f4Add = paethPredictor(f4Left, f4Up, f4UpLeft);\n        unfilteredLine[x] = rawByte + f4Add;\n      }\n    };\n    Filter.prototype._reverseFilterLine = function (rawData) {\n      let filter = rawData[0];\n      let unfilteredLine;\n      let currentImage = this._images[this._imageIndex];\n      let byteWidth = currentImage.byteWidth;\n      if (filter === 0) {\n        unfilteredLine = rawData.slice(1, byteWidth + 1);\n      } else {\n        unfilteredLine = Buffer.alloc(byteWidth);\n        switch (filter) {\n          case 1:\n            this._unFilterType1(rawData, unfilteredLine, byteWidth);\n            break;\n          case 2:\n            this._unFilterType2(rawData, unfilteredLine, byteWidth);\n            break;\n          case 3:\n            this._unFilterType3(rawData, unfilteredLine, byteWidth);\n            break;\n          case 4:\n            this._unFilterType4(rawData, unfilteredLine, byteWidth);\n            break;\n          default:\n            throw new Error(\"Unrecognised filter type - \" + filter);\n        }\n      }\n      this.write(unfilteredLine);\n      currentImage.lineIndex++;\n      if (currentImage.lineIndex >= currentImage.height) {\n        this._lastLine = null;\n        this._imageIndex++;\n        currentImage = this._images[this._imageIndex];\n      } else {\n        this._lastLine = unfilteredLine;\n      }\n      if (currentImage) {\n        this.read(currentImage.byteWidth + 1, this._reverseFilterLine.bind(this));\n      } else {\n        this._lastLine = null;\n        this.complete();\n      }\n    };\n    }).call(this,require(\"buffer\").Buffer);\n    },{\"./interlace\":11,\"./paeth-predictor\":15,\"buffer\":28}],10:[function(require,module,exports){\n    (function (Buffer){\n    function dePalette(indata, outdata, width, height, palette) {\n      let pxPos = 0;\n      for (let y = 0; y < height; y++) {\n        for (let x = 0; x < width; x++) {\n          let color = palette[indata[pxPos]];\n          if (!color) {\n            throw new Error(\"index \" + indata[pxPos] + \" not in palette\");\n          }\n          for (let i = 0; i < 4; i++) {\n            outdata[pxPos + i] = color[i];\n          }\n          pxPos += 4;\n        }\n      }\n    }\n    function replaceTransparentColor(indata, outdata, width, height, transColor) {\n      let pxPos = 0;\n      for (let y = 0; y < height; y++) {\n        for (let x = 0; x < width; x++) {\n          let makeTrans = false;\n          if (transColor.length === 1) {\n            if (transColor[0] === indata[pxPos]) {\n              makeTrans = true;\n            }\n          } else if (\n            transColor[0] === indata[pxPos] &&\n            transColor[1] === indata[pxPos + 1] &&\n            transColor[2] === indata[pxPos + 2]\n          ) {\n            makeTrans = true;\n          }\n          if (makeTrans) {\n            for (let i = 0; i < 4; i++) {\n              outdata[pxPos + i] = 0;\n            }\n          }\n          pxPos += 4;\n        }\n      }\n    }\n    function scaleDepth(indata, outdata, width, height, depth) {\n      let maxOutSample = 255;\n      let maxInSample = Math.pow(2, depth) - 1;\n      let pxPos = 0;\n      for (let y = 0; y < height; y++) {\n        for (let x = 0; x < width; x++) {\n          for (let i = 0; i < 4; i++) {\n            outdata[pxPos + i] = Math.floor(\n              (indata[pxPos + i] * maxOutSample) / maxInSample + 0.5\n            );\n          }\n          pxPos += 4;\n        }\n      }\n    }\n    module.exports = function (indata, imageData) {\n      let depth = imageData.depth;\n      let width = imageData.width;\n      let height = imageData.height;\n      let colorType = imageData.colorType;\n      let transColor = imageData.transColor;\n      let palette = imageData.palette;\n      let outdata = indata;\n      if (colorType === 3) {\n        dePalette(indata, outdata, width, height, palette);\n      } else {\n        if (transColor) {\n          replaceTransparentColor(indata, outdata, width, height, transColor);\n        }\n        if (depth !== 8) {\n          if (depth === 16) {\n            outdata = Buffer.alloc(width * height * 4);\n          }\n          scaleDepth(indata, outdata, width, height, depth);\n        }\n      }\n      return outdata;\n    };\n    }).call(this,require(\"buffer\").Buffer);\n    },{\"buffer\":28}],11:[function(require,module,exports){\n    let imagePasses = [\n      {\n        x: [0],\n        y: [0],\n      },\n      {\n        x: [4],\n        y: [0],\n      },\n      {\n        x: [0, 4],\n        y: [4],\n      },\n      {\n        x: [2, 6],\n        y: [0, 4],\n      },\n      {\n        x: [0, 2, 4, 6],\n        y: [2, 6],\n      },\n      {\n        x: [1, 3, 5, 7],\n        y: [0, 2, 4, 6],\n      },\n      {\n        x: [0, 1, 2, 3, 4, 5, 6, 7],\n        y: [1, 3, 5, 7],\n      },\n    ];\n    exports.getImagePasses = function (width, height) {\n      let images = [];\n      let xLeftOver = width % 8;\n      let yLeftOver = height % 8;\n      let xRepeats = (width - xLeftOver) / 8;\n      let yRepeats = (height - yLeftOver) / 8;\n      for (let i = 0; i < imagePasses.length; i++) {\n        let pass = imagePasses[i];\n        let passWidth = xRepeats * pass.x.length;\n        let passHeight = yRepeats * pass.y.length;\n        for (let j = 0; j < pass.x.length; j++) {\n          if (pass.x[j] < xLeftOver) {\n            passWidth++;\n          } else {\n            break;\n          }\n        }\n        for (let j = 0; j < pass.y.length; j++) {\n          if (pass.y[j] < yLeftOver) {\n            passHeight++;\n          } else {\n            break;\n          }\n        }\n        if (passWidth > 0 && passHeight > 0) {\n          images.push({ width: passWidth, height: passHeight, index: i });\n        }\n      }\n      return images;\n    };\n    exports.getInterlaceIterator = function (width) {\n      return function (x, y, pass) {\n        let outerXLeftOver = x % imagePasses[pass].x.length;\n        let outerX =\n          ((x - outerXLeftOver) / imagePasses[pass].x.length) * 8 +\n          imagePasses[pass].x[outerXLeftOver];\n        let outerYLeftOver = y % imagePasses[pass].y.length;\n        let outerY =\n          ((y - outerYLeftOver) / imagePasses[pass].y.length) * 8 +\n          imagePasses[pass].y[outerYLeftOver];\n        return outerX * 4 + outerY * width * 4;\n      };\n    };\n    },{}],12:[function(require,module,exports){\n    (function (Buffer){\n    let util = require(\"util\");\n    let Stream = require(\"stream\");\n    let constants = require(\"./constants\");\n    let Packer = require(\"./packer\");\n    let PackerAsync = (module.exports = function (opt) {\n      Stream.call(this);\n      let options = opt || {};\n      this._packer = new Packer(options);\n      this._deflate = this._packer.createDeflate();\n      this.readable = true;\n    });\n    util.inherits(PackerAsync, Stream);\n    PackerAsync.prototype.pack = function (data, width, height, gamma) {\n      this.emit(\"data\", Buffer.from(constants.PNG_SIGNATURE));\n      this.emit(\"data\", this._packer.packIHDR(width, height));\n      if (gamma) {\n        this.emit(\"data\", this._packer.packGAMA(gamma));\n      }\n      let filteredData = this._packer.filterData(data, width, height);\n      this._deflate.on(\"error\", this.emit.bind(this, \"error\"));\n      this._deflate.on(\n        \"data\",\n        function (compressedData) {\n          this.emit(\"data\", this._packer.packIDAT(compressedData));\n        }.bind(this)\n      );\n      this._deflate.on(\n        \"end\",\n        function () {\n          this.emit(\"data\", this._packer.packIEND());\n          this.emit(\"end\");\n        }.bind(this)\n      );\n      this._deflate.end(filteredData);\n    };\n    }).call(this,require(\"buffer\").Buffer);\n    },{\"./constants\":4,\"./packer\":14,\"buffer\":28,\"stream\":63,\"util\":67}],13:[function(require,module,exports){\n    (function (Buffer){\n    let hasSyncZlib = true;\n    let zlib = require(\"zlib\");\n    if (!zlib.deflateSync) {\n      hasSyncZlib = false;\n    }\n    let constants = require(\"./constants\");\n    let Packer = require(\"./packer\");\n    module.exports = function (metaData, opt) {\n      if (!hasSyncZlib) {\n        throw new Error(\n          \"To use the sync capability of this library in old node versions, please pin pngjs to v2.3.0\"\n        );\n      }\n      let options = opt || {};\n      let packer = new Packer(options);\n      let chunks = [];\n      chunks.push(Buffer.from(constants.PNG_SIGNATURE));\n      chunks.push(packer.packIHDR(metaData.width, metaData.height));\n      if (metaData.gamma) {\n        chunks.push(packer.packGAMA(metaData.gamma));\n      }\n      let filteredData = packer.filterData(\n        metaData.data,\n        metaData.width,\n        metaData.height\n      );\n      let compressedData = zlib.deflateSync(\n        filteredData,\n        packer.getDeflateOptions()\n      );\n      filteredData = null;\n      if (!compressedData || !compressedData.length) {\n        throw new Error(\"bad png - invalid compressed data response\");\n      }\n      chunks.push(packer.packIDAT(compressedData));\n      chunks.push(packer.packIEND());\n      return Buffer.concat(chunks);\n    };\n    }).call(this,require(\"buffer\").Buffer);\n    },{\"./constants\":4,\"./packer\":14,\"buffer\":28,\"zlib\":27}],14:[function(require,module,exports){\n    (function (Buffer){\n    let constants = require(\"./constants\");\n    let CrcStream = require(\"./crc\");\n    let bitPacker = require(\"./bitpacker\");\n    let filter = require(\"./filter-pack\");\n    let zlib = require(\"zlib\");\n    let Packer = (module.exports = function (options) {\n      this._options = options;\n      options.deflateChunkSize = options.deflateChunkSize || 32 * 1024;\n      options.deflateLevel =\n        options.deflateLevel != null ? options.deflateLevel : 9;\n      options.deflateStrategy =\n        options.deflateStrategy != null ? options.deflateStrategy : 3;\n      options.inputHasAlpha =\n        options.inputHasAlpha != null ? options.inputHasAlpha : true;\n      options.deflateFactory = options.deflateFactory || zlib.createDeflate;\n      options.bitDepth = options.bitDepth || 8;\n      options.colorType =\n        typeof options.colorType === \"number\"\n          ? options.colorType\n          : constants.COLORTYPE_COLOR_ALPHA;\n      options.inputColorType =\n        typeof options.inputColorType === \"number\"\n          ? options.inputColorType\n          : constants.COLORTYPE_COLOR_ALPHA;\n      if (\n        [\n          constants.COLORTYPE_GRAYSCALE,\n          constants.COLORTYPE_COLOR,\n          constants.COLORTYPE_COLOR_ALPHA,\n          constants.COLORTYPE_ALPHA,\n        ].indexOf(options.colorType) === -1\n      ) {\n        throw new Error(\n          \"option color type:\" + options.colorType + \" is not supported at present\"\n        );\n      }\n      if (\n        [\n          constants.COLORTYPE_GRAYSCALE,\n          constants.COLORTYPE_COLOR,\n          constants.COLORTYPE_COLOR_ALPHA,\n          constants.COLORTYPE_ALPHA,\n        ].indexOf(options.inputColorType) === -1\n      ) {\n        throw new Error(\n          \"option input color type:\" +\n            options.inputColorType +\n            \" is not supported at present\"\n        );\n      }\n      if (options.bitDepth !== 8 && options.bitDepth !== 16) {\n        throw new Error(\n          \"option bit depth:\" + options.bitDepth + \" is not supported at present\"\n        );\n      }\n    });\n    Packer.prototype.getDeflateOptions = function () {\n      return {\n        chunkSize: this._options.deflateChunkSize,\n        level: this._options.deflateLevel,\n        strategy: this._options.deflateStrategy,\n      };\n    };\n    Packer.prototype.createDeflate = function () {\n      return this._options.deflateFactory(this.getDeflateOptions());\n    };\n    Packer.prototype.filterData = function (data, width, height) {\n      let packedData = bitPacker(data, width, height, this._options);\n      let bpp = constants.COLORTYPE_TO_BPP_MAP[this._options.colorType];\n      let filteredData = filter(packedData, width, height, this._options, bpp);\n      return filteredData;\n    };\n    Packer.prototype._packChunk = function (type, data) {\n      let len = data ? data.length : 0;\n      let buf = Buffer.alloc(len + 12);\n      buf.writeUInt32BE(len, 0);\n      buf.writeUInt32BE(type, 4);\n      if (data) {\n        data.copy(buf, 8);\n      }\n      buf.writeInt32BE(\n        CrcStream.crc32(buf.slice(4, buf.length - 4)),\n        buf.length - 4\n      );\n      return buf;\n    };\n    Packer.prototype.packGAMA = function (gamma) {\n      let buf = Buffer.alloc(4);\n      buf.writeUInt32BE(Math.floor(gamma * constants.GAMMA_DIVISION), 0);\n      return this._packChunk(constants.TYPE_gAMA, buf);\n    };\n    Packer.prototype.packIHDR = function (width, height) {\n      let buf = Buffer.alloc(13);\n      buf.writeUInt32BE(width, 0);\n      buf.writeUInt32BE(height, 4);\n      buf[8] = this._options.bitDepth;\n      buf[9] = this._options.colorType;\n      buf[10] = 0;\n      buf[11] = 0;\n      buf[12] = 0;\n      return this._packChunk(constants.TYPE_IHDR, buf);\n    };\n    Packer.prototype.packIDAT = function (data) {\n      return this._packChunk(constants.TYPE_IDAT, data);\n    };\n    Packer.prototype.packIEND = function () {\n      return this._packChunk(constants.TYPE_IEND, null);\n    };\n    }).call(this,require(\"buffer\").Buffer);\n    },{\"./bitpacker\":2,\"./constants\":4,\"./crc\":5,\"./filter-pack\":6,\"buffer\":28,\"zlib\":27}],15:[function(require,module,exports){\n    module.exports = function paethPredictor(left, above, upLeft) {\n      let paeth = left + above - upLeft;\n      let pLeft = Math.abs(paeth - left);\n      let pAbove = Math.abs(paeth - above);\n      let pUpLeft = Math.abs(paeth - upLeft);\n      if (pLeft <= pAbove && pLeft <= pUpLeft) {\n        return left;\n      }\n      if (pAbove <= pUpLeft) {\n        return above;\n      }\n      return upLeft;\n    };\n    },{}],16:[function(require,module,exports){\n    let util = require(\"util\");\n    let zlib = require(\"zlib\");\n    let ChunkStream = require(\"./chunkstream\");\n    let FilterAsync = require(\"./filter-parse-async\");\n    let Parser = require(\"./parser\");\n    let bitmapper = require(\"./bitmapper\");\n    let formatNormaliser = require(\"./format-normaliser\");\n    let ParserAsync = (module.exports = function (options) {\n      ChunkStream.call(this);\n      this._parser = new Parser(options, {\n        read: this.read.bind(this),\n        error: this._handleError.bind(this),\n        metadata: this._handleMetaData.bind(this),\n        gamma: this.emit.bind(this, \"gamma\"),\n        palette: this._handlePalette.bind(this),\n        transColor: this._handleTransColor.bind(this),\n        finished: this._finished.bind(this),\n        inflateData: this._inflateData.bind(this),\n        simpleTransparency: this._simpleTransparency.bind(this),\n        headersFinished: this._headersFinished.bind(this),\n      });\n      this._options = options;\n      this.writable = true;\n      this._parser.start();\n    });\n    util.inherits(ParserAsync, ChunkStream);\n    ParserAsync.prototype._handleError = function (err) {\n      this.emit(\"error\", err);\n      this.writable = false;\n      this.destroy();\n      if (this._inflate && this._inflate.destroy) {\n        this._inflate.destroy();\n      }\n      if (this._filter) {\n        this._filter.destroy();\n        this._filter.on(\"error\", function () {});\n      }\n      this.errord = true;\n    };\n    ParserAsync.prototype._inflateData = function (data) {\n      if (!this._inflate) {\n        if (this._bitmapInfo.interlace) {\n          this._inflate = zlib.createInflate();\n          this._inflate.on(\"error\", this.emit.bind(this, \"error\"));\n          this._filter.on(\"complete\", this._complete.bind(this));\n          this._inflate.pipe(this._filter);\n        } else {\n          let rowSize =\n            ((this._bitmapInfo.width *\n              this._bitmapInfo.bpp *\n              this._bitmapInfo.depth +\n              7) >>\n              3) +\n            1;\n          let imageSize = rowSize * this._bitmapInfo.height;\n          let chunkSize = Math.max(imageSize, zlib.Z_MIN_CHUNK);\n          this._inflate = zlib.createInflate({ chunkSize: chunkSize });\n          let leftToInflate = imageSize;\n          let emitError = this.emit.bind(this, \"error\");\n          this._inflate.on(\"error\", function (err) {\n            if (!leftToInflate) {\n              return;\n            }\n            emitError(err);\n          });\n          this._filter.on(\"complete\", this._complete.bind(this));\n          let filterWrite = this._filter.write.bind(this._filter);\n          this._inflate.on(\"data\", function (chunk) {\n            if (!leftToInflate) {\n              return;\n            }\n            if (chunk.length > leftToInflate) {\n              chunk = chunk.slice(0, leftToInflate);\n            }\n            leftToInflate -= chunk.length;\n            filterWrite(chunk);\n          });\n          this._inflate.on(\"end\", this._filter.end.bind(this._filter));\n        }\n      }\n      this._inflate.write(data);\n    };\n    ParserAsync.prototype._handleMetaData = function (metaData) {\n      this._metaData = metaData;\n      this._bitmapInfo = Object.create(metaData);\n      this._filter = new FilterAsync(this._bitmapInfo);\n    };\n    ParserAsync.prototype._handleTransColor = function (transColor) {\n      this._bitmapInfo.transColor = transColor;\n    };\n    ParserAsync.prototype._handlePalette = function (palette) {\n      this._bitmapInfo.palette = palette;\n    };\n    ParserAsync.prototype._simpleTransparency = function () {\n      this._metaData.alpha = true;\n    };\n    ParserAsync.prototype._headersFinished = function () {\n      this.emit(\"metadata\", this._metaData);\n    };\n    ParserAsync.prototype._finished = function () {\n      if (this.errord) {\n        return;\n      }\n      if (!this._inflate) {\n        this.emit(\"error\", \"No Inflate block\");\n      } else {\n        this._inflate.end();\n      }\n    };\n    ParserAsync.prototype._complete = function (filteredData) {\n      if (this.errord) {\n        return;\n      }\n      let normalisedBitmapData;\n      try {\n        let bitmapData = bitmapper.dataToBitMap(filteredData, this._bitmapInfo);\n        normalisedBitmapData = formatNormaliser(bitmapData, this._bitmapInfo);\n        bitmapData = null;\n      } catch (ex) {\n        this._handleError(ex);\n        return;\n      }\n      this.emit(\"parsed\", normalisedBitmapData);\n    };\n    },{\"./bitmapper\":1,\"./chunkstream\":3,\"./filter-parse-async\":7,\"./format-normaliser\":10,\"./parser\":18,\"util\":67,\"zlib\":27}],17:[function(require,module,exports){\n    (function (Buffer){\n    let hasSyncZlib = true;\n    let zlib = require(\"zlib\");\n    let inflateSync = require(\"./sync-inflate\");\n    if (!zlib.deflateSync) {\n      hasSyncZlib = false;\n    }\n    let SyncReader = require(\"./sync-reader\");\n    let FilterSync = require(\"./filter-parse-sync\");\n    let Parser = require(\"./parser\");\n    let bitmapper = require(\"./bitmapper\");\n    let formatNormaliser = require(\"./format-normaliser\");\n    module.exports = function (buffer, options) {\n      if (!hasSyncZlib) {\n        throw new Error(\n          \"To use the sync capability of this library in old node versions, please pin pngjs to v2.3.0\"\n        );\n      }\n      let err;\n      function handleError(_err_) {\n        err = _err_;\n      }\n      let metaData;\n      function handleMetaData(_metaData_) {\n        metaData = _metaData_;\n      }\n      function handleTransColor(transColor) {\n        metaData.transColor = transColor;\n      }\n      function handlePalette(palette) {\n        metaData.palette = palette;\n      }\n      function handleSimpleTransparency() {\n        metaData.alpha = true;\n      }\n      let gamma;\n      function handleGamma(_gamma_) {\n        gamma = _gamma_;\n      }\n      let inflateDataList = [];\n      function handleInflateData(inflatedData) {\n        inflateDataList.push(inflatedData);\n      }\n      let reader = new SyncReader(buffer);\n      let parser = new Parser(options, {\n        read: reader.read.bind(reader),\n        error: handleError,\n        metadata: handleMetaData,\n        gamma: handleGamma,\n        palette: handlePalette,\n        transColor: handleTransColor,\n        inflateData: handleInflateData,\n        simpleTransparency: handleSimpleTransparency,\n      });\n      parser.start();\n      reader.process();\n      if (err) {\n        throw err;\n      }\n      let inflateData = Buffer.concat(inflateDataList);\n      inflateDataList.length = 0;\n      let inflatedData;\n      if (metaData.interlace) {\n        inflatedData = zlib.inflateSync(inflateData);\n      } else {\n        let rowSize =\n          ((metaData.width * metaData.bpp * metaData.depth + 7) >> 3) + 1;\n        let imageSize = rowSize * metaData.height;\n        inflatedData = inflateSync(inflateData, {\n          chunkSize: imageSize,\n          maxLength: imageSize,\n        });\n      }\n      inflateData = null;\n      if (!inflatedData || !inflatedData.length) {\n        throw new Error(\"bad png - invalid inflate data response\");\n      }\n      let unfilteredData = FilterSync.process(inflatedData, metaData);\n      inflateData = null;\n      let bitmapData = bitmapper.dataToBitMap(unfilteredData, metaData);\n      unfilteredData = null;\n      let normalisedBitmapData = formatNormaliser(bitmapData, metaData);\n      metaData.data = normalisedBitmapData;\n      metaData.gamma = gamma || 0;\n      return metaData;\n    };\n    }).call(this,require(\"buffer\").Buffer);\n    },{\"./bitmapper\":1,\"./filter-parse-sync\":8,\"./format-normaliser\":10,\"./parser\":18,\"./sync-inflate\":21,\"./sync-reader\":22,\"buffer\":28,\"zlib\":27}],18:[function(require,module,exports){\n    (function (Buffer){\n    let constants = require(\"./constants\");\n    let CrcCalculator = require(\"./crc\");\n    let Parser = (module.exports = function (options, dependencies) {\n      this._options = options;\n      options.checkCRC = options.checkCRC !== false;\n      this._hasIHDR = false;\n      this._hasIEND = false;\n      this._emittedHeadersFinished = false;\n      this._palette = [];\n      this._colorType = 0;\n      this._chunks = {};\n      this._chunks[constants.TYPE_IHDR] = this._handleIHDR.bind(this);\n      this._chunks[constants.TYPE_IEND] = this._handleIEND.bind(this);\n      this._chunks[constants.TYPE_IDAT] = this._handleIDAT.bind(this);\n      this._chunks[constants.TYPE_PLTE] = this._handlePLTE.bind(this);\n      this._chunks[constants.TYPE_tRNS] = this._handleTRNS.bind(this);\n      this._chunks[constants.TYPE_gAMA] = this._handleGAMA.bind(this);\n      this.read = dependencies.read;\n      this.error = dependencies.error;\n      this.metadata = dependencies.metadata;\n      this.gamma = dependencies.gamma;\n      this.transColor = dependencies.transColor;\n      this.palette = dependencies.palette;\n      this.parsed = dependencies.parsed;\n      this.inflateData = dependencies.inflateData;\n      this.finished = dependencies.finished;\n      this.simpleTransparency = dependencies.simpleTransparency;\n      this.headersFinished = dependencies.headersFinished || function () {};\n    });\n    Parser.prototype.start = function () {\n      this.read(constants.PNG_SIGNATURE.length, this._parseSignature.bind(this));\n    };\n    Parser.prototype._parseSignature = function (data) {\n      let signature = constants.PNG_SIGNATURE;\n      for (let i = 0; i < signature.length; i++) {\n        if (data[i] !== signature[i]) {\n          this.error(new Error(\"Invalid file signature\"));\n          return;\n        }\n      }\n      this.read(8, this._parseChunkBegin.bind(this));\n    };\n    Parser.prototype._parseChunkBegin = function (data) {\n      let length = data.readUInt32BE(0);\n      let type = data.readUInt32BE(4);\n      let name = \"\";\n      for (let i = 4; i < 8; i++) {\n        name += String.fromCharCode(data[i]);\n      }\n      let ancillary = Boolean(data[4] & 0x20);\n      if (!this._hasIHDR && type !== constants.TYPE_IHDR) {\n        this.error(new Error(\"Expected IHDR on beggining\"));\n        return;\n      }\n      this._crc = new CrcCalculator();\n      this._crc.write(Buffer.from(name));\n      if (this._chunks[type]) {\n        return this._chunks[type](length);\n      }\n      if (!ancillary) {\n        this.error(new Error(\"Unsupported critical chunk type \" + name));\n        return;\n      }\n      this.read(length + 4, this._skipChunk.bind(this));\n    };\n    Parser.prototype._skipChunk = function () {\n      this.read(8, this._parseChunkBegin.bind(this));\n    };\n    Parser.prototype._handleChunkEnd = function () {\n      this.read(4, this._parseChunkEnd.bind(this));\n    };\n    Parser.prototype._parseChunkEnd = function (data) {\n      let fileCrc = data.readInt32BE(0);\n      let calcCrc = this._crc.crc32();\n      if (this._options.checkCRC && calcCrc !== fileCrc) {\n        this.error(new Error(\"Crc error - \" + fileCrc + \" - \" + calcCrc));\n        return;\n      }\n      if (!this._hasIEND) {\n        this.read(8, this._parseChunkBegin.bind(this));\n      }\n    };\n    Parser.prototype._handleIHDR = function (length) {\n      this.read(length, this._parseIHDR.bind(this));\n    };\n    Parser.prototype._parseIHDR = function (data) {\n      this._crc.write(data);\n      let width = data.readUInt32BE(0);\n      let height = data.readUInt32BE(4);\n      let depth = data[8];\n      let colorType = data[9];\n      let compr = data[10];\n      let filter = data[11];\n      let interlace = data[12];\n      if (\n        depth !== 8 &&\n        depth !== 4 &&\n        depth !== 2 &&\n        depth !== 1 &&\n        depth !== 16\n      ) {\n        this.error(new Error(\"Unsupported bit depth \" + depth));\n        return;\n      }\n      if (!(colorType in constants.COLORTYPE_TO_BPP_MAP)) {\n        this.error(new Error(\"Unsupported color type\"));\n        return;\n      }\n      if (compr !== 0) {\n        this.error(new Error(\"Unsupported compression method\"));\n        return;\n      }\n      if (filter !== 0) {\n        this.error(new Error(\"Unsupported filter method\"));\n        return;\n      }\n      if (interlace !== 0 && interlace !== 1) {\n        this.error(new Error(\"Unsupported interlace method\"));\n        return;\n      }\n      this._colorType = colorType;\n      let bpp = constants.COLORTYPE_TO_BPP_MAP[this._colorType];\n      this._hasIHDR = true;\n      this.metadata({\n        width: width,\n        height: height,\n        depth: depth,\n        interlace: Boolean(interlace),\n        palette: Boolean(colorType & constants.COLORTYPE_PALETTE),\n        color: Boolean(colorType & constants.COLORTYPE_COLOR),\n        alpha: Boolean(colorType & constants.COLORTYPE_ALPHA),\n        bpp: bpp,\n        colorType: colorType,\n      });\n      this._handleChunkEnd();\n    };\n    Parser.prototype._handlePLTE = function (length) {\n      this.read(length, this._parsePLTE.bind(this));\n    };\n    Parser.prototype._parsePLTE = function (data) {\n      this._crc.write(data);\n      let entries = Math.floor(data.length / 3);\n      for (let i = 0; i < entries; i++) {\n        this._palette.push([data[i * 3], data[i * 3 + 1], data[i * 3 + 2], 0xff]);\n      }\n      this.palette(this._palette);\n      this._handleChunkEnd();\n    };\n    Parser.prototype._handleTRNS = function (length) {\n      this.simpleTransparency();\n      this.read(length, this._parseTRNS.bind(this));\n    };\n    Parser.prototype._parseTRNS = function (data) {\n      this._crc.write(data);\n      if (this._colorType === constants.COLORTYPE_PALETTE_COLOR) {\n        if (this._palette.length === 0) {\n          this.error(new Error(\"Transparency chunk must be after palette\"));\n          return;\n        }\n        if (data.length > this._palette.length) {\n          this.error(new Error(\"More transparent colors than palette size\"));\n          return;\n        }\n        for (let i = 0; i < data.length; i++) {\n          this._palette[i][3] = data[i];\n        }\n        this.palette(this._palette);\n      }\n      if (this._colorType === constants.COLORTYPE_GRAYSCALE) {\n        this.transColor([data.readUInt16BE(0)]);\n      }\n      if (this._colorType === constants.COLORTYPE_COLOR) {\n        this.transColor([\n          data.readUInt16BE(0),\n          data.readUInt16BE(2),\n          data.readUInt16BE(4),\n        ]);\n      }\n      this._handleChunkEnd();\n    };\n    Parser.prototype._handleGAMA = function (length) {\n      this.read(length, this._parseGAMA.bind(this));\n    };\n    Parser.prototype._parseGAMA = function (data) {\n      this._crc.write(data);\n      this.gamma(data.readUInt32BE(0) / constants.GAMMA_DIVISION);\n      this._handleChunkEnd();\n    };\n    Parser.prototype._handleIDAT = function (length) {\n      if (!this._emittedHeadersFinished) {\n        this._emittedHeadersFinished = true;\n        this.headersFinished();\n      }\n      this.read(-length, this._parseIDAT.bind(this, length));\n    };\n    Parser.prototype._parseIDAT = function (length, data) {\n      this._crc.write(data);\n      if (\n        this._colorType === constants.COLORTYPE_PALETTE_COLOR &&\n        this._palette.length === 0\n      ) {\n        throw new Error(\"Expected palette not found\");\n      }\n      this.inflateData(data);\n      let leftOverLength = length - data.length;\n      if (leftOverLength > 0) {\n        this._handleIDAT(leftOverLength);\n      } else {\n        this._handleChunkEnd();\n      }\n    };\n    Parser.prototype._handleIEND = function (length) {\n      this.read(length, this._parseIEND.bind(this));\n    };\n    Parser.prototype._parseIEND = function (data) {\n      this._crc.write(data);\n      this._hasIEND = true;\n      this._handleChunkEnd();\n      if (this.finished) {\n        this.finished();\n      }\n    };\n    }).call(this,require(\"buffer\").Buffer);\n    },{\"./constants\":4,\"./crc\":5,\"buffer\":28}],19:[function(require,module,exports){\n    let parse = require(\"./parser-sync\");\n    let pack = require(\"./packer-sync\");\n    exports.read = function (buffer, options) {\n      return parse(buffer, options || {});\n    };\n    exports.write = function (png, options) {\n      return pack(png, options);\n    };\n    },{\"./packer-sync\":13,\"./parser-sync\":17}],20:[function(require,module,exports){\n    (function (process,Buffer){\n    let util = require(\"util\");\n    let Stream = require(\"stream\");\n    let Parser = require(\"./parser-async\");\n    let Packer = require(\"./packer-async\");\n    let PNGSync = require(\"./png-sync\");\n    let PNG = (exports.PNG = function (options) {\n      Stream.call(this);\n      options = options || {};\n      this.width = options.width | 0;\n      this.height = options.height | 0;\n      this.data =\n        this.width > 0 && this.height > 0\n          ? Buffer.alloc(4 * this.width * this.height)\n          : null;\n      if (options.fill && this.data) {\n        this.data.fill(0);\n      }\n      this.gamma = 0;\n      this.readable = this.writable = true;\n      this._parser = new Parser(options);\n      this._parser.on(\"error\", this.emit.bind(this, \"error\"));\n      this._parser.on(\"close\", this._handleClose.bind(this));\n      this._parser.on(\"metadata\", this._metadata.bind(this));\n      this._parser.on(\"gamma\", this._gamma.bind(this));\n      this._parser.on(\n        \"parsed\",\n        function (data) {\n          this.data = data;\n          this.emit(\"parsed\", data);\n        }.bind(this)\n      );\n      this._packer = new Packer(options);\n      this._packer.on(\"data\", this.emit.bind(this, \"data\"));\n      this._packer.on(\"end\", this.emit.bind(this, \"end\"));\n      this._parser.on(\"close\", this._handleClose.bind(this));\n      this._packer.on(\"error\", this.emit.bind(this, \"error\"));\n    });\n    util.inherits(PNG, Stream);\n    PNG.sync = PNGSync;\n    PNG.prototype.pack = function () {\n      if (!this.data || !this.data.length) {\n        this.emit(\"error\", \"No data provided\");\n        return this;\n      }\n      process.nextTick(\n        function () {\n          this._packer.pack(this.data, this.width, this.height, this.gamma);\n        }.bind(this)\n      );\n      return this;\n    };\n    PNG.prototype.parse = function (data, callback) {\n      if (callback) {\n        let onParsed, onError;\n        onParsed = function (parsedData) {\n          this.removeListener(\"error\", onError);\n          this.data = parsedData;\n          callback(null, this);\n        }.bind(this);\n        onError = function (err) {\n          this.removeListener(\"parsed\", onParsed);\n          callback(err, null);\n        }.bind(this);\n        this.once(\"parsed\", onParsed);\n        this.once(\"error\", onError);\n      }\n      this.end(data);\n      return this;\n    };\n    PNG.prototype.write = function (data) {\n      this._parser.write(data);\n      return true;\n    };\n    PNG.prototype.end = function (data) {\n      this._parser.end(data);\n    };\n    PNG.prototype._metadata = function (metadata) {\n      this.width = metadata.width;\n      this.height = metadata.height;\n      this.emit(\"metadata\", metadata);\n    };\n    PNG.prototype._gamma = function (gamma) {\n      this.gamma = gamma;\n    };\n    PNG.prototype._handleClose = function () {\n      if (!this._parser.writable && !this._packer.readable) {\n        this.emit(\"close\");\n      }\n    };\n    PNG.bitblt = function (src, dst, srcX, srcY, width, height, deltaX, deltaY) {\n      srcX |= 0;\n      srcY |= 0;\n      width |= 0;\n      height |= 0;\n      deltaX |= 0;\n      deltaY |= 0;\n      if (\n        srcX > src.width ||\n        srcY > src.height ||\n        srcX + width > src.width ||\n        srcY + height > src.height\n      ) {\n        throw new Error(\"bitblt reading outside image\");\n      }\n      if (\n        deltaX > dst.width ||\n        deltaY > dst.height ||\n        deltaX + width > dst.width ||\n        deltaY + height > dst.height\n      ) {\n        throw new Error(\"bitblt writing outside image\");\n      }\n      for (let y = 0; y < height; y++) {\n        src.data.copy(\n          dst.data,\n          ((deltaY + y) * dst.width + deltaX) << 2,\n          ((srcY + y) * src.width + srcX) << 2,\n          ((srcY + y) * src.width + srcX + width) << 2\n        );\n      }\n    };\n    PNG.prototype.bitblt = function (\n      dst,\n      srcX,\n      srcY,\n      width,\n      height,\n      deltaX,\n      deltaY\n    ) {\n      PNG.bitblt(this, dst, srcX, srcY, width, height, deltaX, deltaY);\n      return this;\n    };\n    PNG.adjustGamma = function (src) {\n      if (src.gamma) {\n        for (let y = 0; y < src.height; y++) {\n          for (let x = 0; x < src.width; x++) {\n            let idx = (src.width * y + x) << 2;\n            for (let i = 0; i < 3; i++) {\n              let sample = src.data[idx + i] / 255;\n              sample = Math.pow(sample, 1 / 2.2 / src.gamma);\n              src.data[idx + i] = Math.round(sample * 255);\n            }\n          }\n        }\n        src.gamma = 0;\n      }\n    };\n    PNG.prototype.adjustGamma = function () {\n      PNG.adjustGamma(this);\n    };\n    }).call(this,require('_process'),require(\"buffer\").Buffer);\n    },{\"./packer-async\":12,\"./parser-async\":16,\"./png-sync\":19,\"_process\":47,\"buffer\":28,\"stream\":63,\"util\":67}],21:[function(require,module,exports){\n    (function (process,Buffer){\n    let assert = require(\"assert\").ok;\n    let zlib = require(\"zlib\");\n    let util = require(\"util\");\n    let kMaxLength = require(\"buffer\").kMaxLength;\n    function Inflate(opts) {\n      if (!(this instanceof Inflate)) {\n        return new Inflate(opts);\n      }\n      if (opts && opts.chunkSize < zlib.Z_MIN_CHUNK) {\n        opts.chunkSize = zlib.Z_MIN_CHUNK;\n      }\n      zlib.Inflate.call(this, opts);\n      this._offset = this._offset === undefined ? this._outOffset : this._offset;\n      this._buffer = this._buffer || this._outBuffer;\n      if (opts && opts.maxLength != null) {\n        this._maxLength = opts.maxLength;\n      }\n    }\n    function createInflate(opts) {\n      return new Inflate(opts);\n    }\n    function _close(engine, callback) {\n      if (callback) {\n        process.nextTick(callback);\n      }\n      if (!engine._handle) {\n        return;\n      }\n      engine._handle.close();\n      engine._handle = null;\n    }\n    Inflate.prototype._processChunk = function (chunk, flushFlag, asyncCb) {\n      if (typeof asyncCb === \"function\") {\n        return zlib.Inflate._processChunk.call(this, chunk, flushFlag, asyncCb);\n      }\n      let self = this;\n      let availInBefore = chunk && chunk.length;\n      let availOutBefore = this._chunkSize - this._offset;\n      let leftToInflate = this._maxLength;\n      let inOff = 0;\n      let buffers = [];\n      let nread = 0;\n      let error;\n      this.on(\"error\", function (err) {\n        error = err;\n      });\n      function handleChunk(availInAfter, availOutAfter) {\n        if (self._hadError) {\n          return;\n        }\n        let have = availOutBefore - availOutAfter;\n        assert(have >= 0, \"have should not go down\");\n        if (have > 0) {\n          let out = self._buffer.slice(self._offset, self._offset + have);\n          self._offset += have;\n          if (out.length > leftToInflate) {\n            out = out.slice(0, leftToInflate);\n          }\n          buffers.push(out);\n          nread += out.length;\n          leftToInflate -= out.length;\n          if (leftToInflate === 0) {\n            return false;\n          }\n        }\n        if (availOutAfter === 0 || self._offset >= self._chunkSize) {\n          availOutBefore = self._chunkSize;\n          self._offset = 0;\n          self._buffer = Buffer.allocUnsafe(self._chunkSize);\n        }\n        if (availOutAfter === 0) {\n          inOff += availInBefore - availInAfter;\n          availInBefore = availInAfter;\n          return true;\n        }\n        return false;\n      }\n      assert(this._handle, \"zlib binding closed\");\n      let res;\n      do {\n        res = this._handle.writeSync(\n          flushFlag,\n          chunk,\n          inOff,\n          availInBefore,\n          this._buffer,\n          this._offset,\n          availOutBefore\n        );\n        res = res || this._writeState;\n      } while (!this._hadError && handleChunk(res[0], res[1]));\n      if (this._hadError) {\n        throw error;\n      }\n      if (nread >= kMaxLength) {\n        _close(this);\n        throw new RangeError(\n          \"Cannot create final Buffer. It would be larger than 0x\" +\n            kMaxLength.toString(16) +\n            \" bytes\"\n        );\n      }\n      let buf = Buffer.concat(buffers, nread);\n      _close(this);\n      return buf;\n    };\n    util.inherits(Inflate, zlib.Inflate);\n    function zlibBufferSync(engine, buffer) {\n      if (typeof buffer === \"string\") {\n        buffer = Buffer.from(buffer);\n      }\n      if (!(buffer instanceof Buffer)) {\n        throw new TypeError(\"Not a string or buffer\");\n      }\n      let flushFlag = engine._finishFlushFlag;\n      if (flushFlag == null) {\n        flushFlag = zlib.Z_FINISH;\n      }\n      return engine._processChunk(buffer, flushFlag);\n    }\n    function inflateSync(buffer, opts) {\n      return zlibBufferSync(new Inflate(opts), buffer);\n    }\n    module.exports = exports = inflateSync;\n    exports.Inflate = Inflate;\n    exports.createInflate = createInflate;\n    exports.inflateSync = inflateSync;\n    }).call(this,require('_process'),require(\"buffer\").Buffer);\n    },{\"_process\":47,\"assert\":23,\"buffer\":28,\"util\":67,\"zlib\":27}],22:[function(require,module,exports){\n    let SyncReader = (module.exports = function (buffer) {\n      this._buffer = buffer;\n      this._reads = [];\n    });\n    SyncReader.prototype.read = function (length, callback) {\n      this._reads.push({\n        length: Math.abs(length),\n        allowLess: length < 0,\n        func: callback,\n      });\n    };\n    SyncReader.prototype.process = function () {\n      while (this._reads.length > 0 && this._buffer.length) {\n        let read = this._reads[0];\n        if (\n          this._buffer.length &&\n          (this._buffer.length >= read.length || read.allowLess)\n        ) {\n          this._reads.shift();\n          let buf = this._buffer;\n          this._buffer = buf.slice(read.length);\n          read.func.call(this, buf.slice(0, read.length));\n        } else {\n          break;\n        }\n      }\n      if (this._reads.length > 0) {\n        return new Error(\"There are some read requests waitng on finished stream\");\n      }\n      if (this._buffer.length > 0) {\n        return new Error(\"unrecognised content at end of stream\");\n      }\n    };\n    },{}],23:[function(require,module,exports){\n    (function (global){\n    /*!\n     * The buffer module from node.js, for the browser.\n     *\n     * @author   Feross Aboukhadijeh <feross@feross.org> <http://feross.org>\n     * @license  MIT\n     */\n    function compare(a, b) {\n      if (a === b) {\n        return 0;\n      }\n      var x = a.length;\n      var y = b.length;\n      for (var i = 0, len = Math.min(x, y); i < len; ++i) {\n        if (a[i] !== b[i]) {\n          x = a[i];\n          y = b[i];\n          break;\n        }\n      }\n      if (x < y) {\n        return -1;\n      }\n      if (y < x) {\n        return 1;\n      }\n      return 0;\n    }\n    function isBuffer(b) {\n      if (global.Buffer && typeof global.Buffer.isBuffer === 'function') {\n        return global.Buffer.isBuffer(b);\n      }\n      return !!(b != null && b._isBuffer);\n    }\n    var util = require('util/');\n    var hasOwn = Object.prototype.hasOwnProperty;\n    var pSlice = Array.prototype.slice;\n    var functionsHaveNames = (function () {\n      return function foo() {}.name === 'foo';\n    }());\n    function pToString (obj) {\n      return Object.prototype.toString.call(obj);\n    }\n    function isView(arrbuf) {\n      if (isBuffer(arrbuf)) {\n        return false;\n      }\n      if (typeof global.ArrayBuffer !== 'function') {\n        return false;\n      }\n      if (typeof ArrayBuffer.isView === 'function') {\n        return ArrayBuffer.isView(arrbuf);\n      }\n      if (!arrbuf) {\n        return false;\n      }\n      if (arrbuf instanceof DataView) {\n        return true;\n      }\n      if (arrbuf.buffer && arrbuf.buffer instanceof ArrayBuffer) {\n        return true;\n      }\n      return false;\n    }\n    var assert = module.exports = ok;\n    var regex = /\\s*function\\s+([^\\(\\s]*)\\s*/;\n    function getName(func) {\n      if (!util.isFunction(func)) {\n        return;\n      }\n      if (functionsHaveNames) {\n        return func.name;\n      }\n      var str = func.toString();\n      var match = str.match(regex);\n      return match && match[1];\n    }\n    assert.AssertionError = function AssertionError(options) {\n      this.name = 'AssertionError';\n      this.actual = options.actual;\n      this.expected = options.expected;\n      this.operator = options.operator;\n      if (options.message) {\n        this.message = options.message;\n        this.generatedMessage = false;\n      } else {\n        this.message = getMessage(this);\n        this.generatedMessage = true;\n      }\n      var stackStartFunction = options.stackStartFunction || fail;\n      if (Error.captureStackTrace) {\n        Error.captureStackTrace(this, stackStartFunction);\n      } else {\n        var err = new Error();\n        if (err.stack) {\n          var out = err.stack;\n          var fn_name = getName(stackStartFunction);\n          var idx = out.indexOf('\\n' + fn_name);\n          if (idx >= 0) {\n            var next_line = out.indexOf('\\n', idx + 1);\n            out = out.substring(next_line + 1);\n          }\n          this.stack = out;\n        }\n      }\n    };\n    util.inherits(assert.AssertionError, Error);\n    function truncate(s, n) {\n      if (typeof s === 'string') {\n        return s.length < n ? s : s.slice(0, n);\n      } else {\n        return s;\n      }\n    }\n    function inspect(something) {\n      if (functionsHaveNames || !util.isFunction(something)) {\n        return util.inspect(something);\n      }\n      var rawname = getName(something);\n      var name = rawname ? ': ' + rawname : '';\n      return '[Function' +  name + ']';\n    }\n    function getMessage(self) {\n      return truncate(inspect(self.actual), 128) + ' ' +\n             self.operator + ' ' +\n             truncate(inspect(self.expected), 128);\n    }\n    function fail(actual, expected, message, operator, stackStartFunction) {\n      throw new assert.AssertionError({\n        message: message,\n        actual: actual,\n        expected: expected,\n        operator: operator,\n        stackStartFunction: stackStartFunction\n      });\n    }\n    assert.fail = fail;\n    function ok(value, message) {\n      if (!value) fail(value, true, message, '==', assert.ok);\n    }\n    assert.ok = ok;\n    assert.equal = function equal(actual, expected, message) {\n      if (actual != expected) fail(actual, expected, message, '==', assert.equal);\n    };\n    assert.notEqual = function notEqual(actual, expected, message) {\n      if (actual == expected) {\n        fail(actual, expected, message, '!=', assert.notEqual);\n      }\n    };\n    assert.deepEqual = function deepEqual(actual, expected, message) {\n      if (!_deepEqual(actual, expected, false)) {\n        fail(actual, expected, message, 'deepEqual', assert.deepEqual);\n      }\n    };\n    assert.deepStrictEqual = function deepStrictEqual(actual, expected, message) {\n      if (!_deepEqual(actual, expected, true)) {\n        fail(actual, expected, message, 'deepStrictEqual', assert.deepStrictEqual);\n      }\n    };\n    function _deepEqual(actual, expected, strict, memos) {\n      if (actual === expected) {\n        return true;\n      } else if (isBuffer(actual) && isBuffer(expected)) {\n        return compare(actual, expected) === 0;\n      } else if (util.isDate(actual) && util.isDate(expected)) {\n        return actual.getTime() === expected.getTime();\n      } else if (util.isRegExp(actual) && util.isRegExp(expected)) {\n        return actual.source === expected.source &&\n               actual.global === expected.global &&\n               actual.multiline === expected.multiline &&\n               actual.lastIndex === expected.lastIndex &&\n               actual.ignoreCase === expected.ignoreCase;\n      } else if ((actual === null || typeof actual !== 'object') &&\n                 (expected === null || typeof expected !== 'object')) {\n        return strict ? actual === expected : actual == expected;\n      } else if (isView(actual) && isView(expected) &&\n                 pToString(actual) === pToString(expected) &&\n                 !(actual instanceof Float32Array ||\n                   actual instanceof Float64Array)) {\n        return compare(new Uint8Array(actual.buffer),\n                       new Uint8Array(expected.buffer)) === 0;\n      } else if (isBuffer(actual) !== isBuffer(expected)) {\n        return false;\n      } else {\n        memos = memos || {actual: [], expected: []};\n        var actualIndex = memos.actual.indexOf(actual);\n        if (actualIndex !== -1) {\n          if (actualIndex === memos.expected.indexOf(expected)) {\n            return true;\n          }\n        }\n        memos.actual.push(actual);\n        memos.expected.push(expected);\n        return objEquiv(actual, expected, strict, memos);\n      }\n    }\n    function isArguments(object) {\n      return Object.prototype.toString.call(object) == '[object Arguments]';\n    }\n    function objEquiv(a, b, strict, actualVisitedObjects) {\n      if (a === null || a === undefined || b === null || b === undefined)\n        return false;\n      if (util.isPrimitive(a) || util.isPrimitive(b))\n        return a === b;\n      if (strict && Object.getPrototypeOf(a) !== Object.getPrototypeOf(b))\n        return false;\n      var aIsArgs = isArguments(a);\n      var bIsArgs = isArguments(b);\n      if ((aIsArgs && !bIsArgs) || (!aIsArgs && bIsArgs))\n        return false;\n      if (aIsArgs) {\n        a = pSlice.call(a);\n        b = pSlice.call(b);\n        return _deepEqual(a, b, strict);\n      }\n      var ka = objectKeys(a);\n      var kb = objectKeys(b);\n      var key, i;\n      if (ka.length !== kb.length)\n        return false;\n      ka.sort();\n      kb.sort();\n      for (i = ka.length - 1; i >= 0; i--) {\n        if (ka[i] !== kb[i])\n          return false;\n      }\n      for (i = ka.length - 1; i >= 0; i--) {\n        key = ka[i];\n        if (!_deepEqual(a[key], b[key], strict, actualVisitedObjects))\n          return false;\n      }\n      return true;\n    }\n    assert.notDeepEqual = function notDeepEqual(actual, expected, message) {\n      if (_deepEqual(actual, expected, false)) {\n        fail(actual, expected, message, 'notDeepEqual', assert.notDeepEqual);\n      }\n    };\n    assert.notDeepStrictEqual = notDeepStrictEqual;\n    function notDeepStrictEqual(actual, expected, message) {\n      if (_deepEqual(actual, expected, true)) {\n        fail(actual, expected, message, 'notDeepStrictEqual', notDeepStrictEqual);\n      }\n    }\n    assert.strictEqual = function strictEqual(actual, expected, message) {\n      if (actual !== expected) {\n        fail(actual, expected, message, '===', assert.strictEqual);\n      }\n    };\n    assert.notStrictEqual = function notStrictEqual(actual, expected, message) {\n      if (actual === expected) {\n        fail(actual, expected, message, '!==', assert.notStrictEqual);\n      }\n    };\n    function expectedException(actual, expected) {\n      if (!actual || !expected) {\n        return false;\n      }\n      if (Object.prototype.toString.call(expected) == '[object RegExp]') {\n        return expected.test(actual);\n      }\n      try {\n        if (actual instanceof expected) {\n          return true;\n        }\n      } catch (e) {\n      }\n      if (Error.isPrototypeOf(expected)) {\n        return false;\n      }\n      return expected.call({}, actual) === true;\n    }\n    function _tryBlock(block) {\n      var error;\n      try {\n        block();\n      } catch (e) {\n        error = e;\n      }\n      return error;\n    }\n    function _throws(shouldThrow, block, expected, message) {\n      var actual;\n      if (typeof block !== 'function') {\n        throw new TypeError('\"block\" argument must be a function');\n      }\n      if (typeof expected === 'string') {\n        message = expected;\n        expected = null;\n      }\n      actual = _tryBlock(block);\n      message = (expected && expected.name ? ' (' + expected.name + ').' : '.') +\n                (message ? ' ' + message : '.');\n      if (shouldThrow && !actual) {\n        fail(actual, expected, 'Missing expected exception' + message);\n      }\n      var userProvidedMessage = typeof message === 'string';\n      var isUnwantedException = !shouldThrow && util.isError(actual);\n      var isUnexpectedException = !shouldThrow && actual && !expected;\n      if ((isUnwantedException &&\n          userProvidedMessage &&\n          expectedException(actual, expected)) ||\n          isUnexpectedException) {\n        fail(actual, expected, 'Got unwanted exception' + message);\n      }\n      if ((shouldThrow && actual && expected &&\n          !expectedException(actual, expected)) || (!shouldThrow && actual)) {\n        throw actual;\n      }\n    }\n    assert.throws = function(block, error, message) {\n      _throws(true, block, error, message);\n    };\n    assert.doesNotThrow = function(block, error, message) {\n      _throws(false, block, error, message);\n    };\n    assert.ifError = function(err) { if (err) throw err; };\n    var objectKeys = Object.keys || function (obj) {\n      var keys = [];\n      for (var key in obj) {\n        if (hasOwn.call(obj, key)) keys.push(key);\n      }\n      return keys;\n    };\n    }).call(this,typeof commonjsGlobal !== \"undefined\" ? commonjsGlobal : typeof self !== \"undefined\" ? self : typeof window !== \"undefined\" ? window : {});\n    },{\"util/\":67}],24:[function(require,module,exports){\n    exports.byteLength = byteLength;\n    exports.toByteArray = toByteArray;\n    exports.fromByteArray = fromByteArray;\n    var lookup = [];\n    var revLookup = [];\n    var Arr = typeof Uint8Array !== 'undefined' ? Uint8Array : Array;\n    var code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';\n    for (var i = 0, len = code.length; i < len; ++i) {\n      lookup[i] = code[i];\n      revLookup[code.charCodeAt(i)] = i;\n    }\n    revLookup['-'.charCodeAt(0)] = 62;\n    revLookup['_'.charCodeAt(0)] = 63;\n    function placeHoldersCount (b64) {\n      var len = b64.length;\n      if (len % 4 > 0) {\n        throw new Error('Invalid string. Length must be a multiple of 4')\n      }\n      return b64[len - 2] === '=' ? 2 : b64[len - 1] === '=' ? 1 : 0\n    }\n    function byteLength (b64) {\n      return (b64.length * 3 / 4) - placeHoldersCount(b64)\n    }\n    function toByteArray (b64) {\n      var i, l, tmp, placeHolders, arr;\n      var len = b64.length;\n      placeHolders = placeHoldersCount(b64);\n      arr = new Arr((len * 3 / 4) - placeHolders);\n      l = placeHolders > 0 ? len - 4 : len;\n      var L = 0;\n      for (i = 0; i < l; i += 4) {\n        tmp = (revLookup[b64.charCodeAt(i)] << 18) | (revLookup[b64.charCodeAt(i + 1)] << 12) | (revLookup[b64.charCodeAt(i + 2)] << 6) | revLookup[b64.charCodeAt(i + 3)];\n        arr[L++] = (tmp >> 16) & 0xFF;\n        arr[L++] = (tmp >> 8) & 0xFF;\n        arr[L++] = tmp & 0xFF;\n      }\n      if (placeHolders === 2) {\n        tmp = (revLookup[b64.charCodeAt(i)] << 2) | (revLookup[b64.charCodeAt(i + 1)] >> 4);\n        arr[L++] = tmp & 0xFF;\n      } else if (placeHolders === 1) {\n        tmp = (revLookup[b64.charCodeAt(i)] << 10) | (revLookup[b64.charCodeAt(i + 1)] << 4) | (revLookup[b64.charCodeAt(i + 2)] >> 2);\n        arr[L++] = (tmp >> 8) & 0xFF;\n        arr[L++] = tmp & 0xFF;\n      }\n      return arr\n    }\n    function tripletToBase64 (num) {\n      return lookup[num >> 18 & 0x3F] + lookup[num >> 12 & 0x3F] + lookup[num >> 6 & 0x3F] + lookup[num & 0x3F]\n    }\n    function encodeChunk (uint8, start, end) {\n      var tmp;\n      var output = [];\n      for (var i = start; i < end; i += 3) {\n        tmp = (uint8[i] << 16) + (uint8[i + 1] << 8) + (uint8[i + 2]);\n        output.push(tripletToBase64(tmp));\n      }\n      return output.join('')\n    }\n    function fromByteArray (uint8) {\n      var tmp;\n      var len = uint8.length;\n      var extraBytes = len % 3;\n      var output = '';\n      var parts = [];\n      var maxChunkLength = 16383;\n      for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) {\n        parts.push(encodeChunk(uint8, i, (i + maxChunkLength) > len2 ? len2 : (i + maxChunkLength)));\n      }\n      if (extraBytes === 1) {\n        tmp = uint8[len - 1];\n        output += lookup[tmp >> 2];\n        output += lookup[(tmp << 4) & 0x3F];\n        output += '==';\n      } else if (extraBytes === 2) {\n        tmp = (uint8[len - 2] << 8) + (uint8[len - 1]);\n        output += lookup[tmp >> 10];\n        output += lookup[(tmp >> 4) & 0x3F];\n        output += lookup[(tmp << 2) & 0x3F];\n        output += '=';\n      }\n      parts.push(output);\n      return parts.join('')\n    }\n    },{}],25:[function(require,module,exports){\n    },{}],26:[function(require,module,exports){\n    (function (process,Buffer){\n    var assert = require('assert');\n    var Zstream = require('pako/lib/zlib/zstream');\n    var zlib_deflate = require('pako/lib/zlib/deflate.js');\n    var zlib_inflate = require('pako/lib/zlib/inflate.js');\n    var constants = require('pako/lib/zlib/constants');\n    for (var key in constants) {\n      exports[key] = constants[key];\n    }\n    exports.NONE = 0;\n    exports.DEFLATE = 1;\n    exports.INFLATE = 2;\n    exports.GZIP = 3;\n    exports.GUNZIP = 4;\n    exports.DEFLATERAW = 5;\n    exports.INFLATERAW = 6;\n    exports.UNZIP = 7;\n    var GZIP_HEADER_ID1 = 0x1f;\n    var GZIP_HEADER_ID2 = 0x8b;\n    function Zlib(mode) {\n      if (typeof mode !== 'number' || mode < exports.DEFLATE || mode > exports.UNZIP) {\n        throw new TypeError('Bad argument');\n      }\n      this.dictionary = null;\n      this.err = 0;\n      this.flush = 0;\n      this.init_done = false;\n      this.level = 0;\n      this.memLevel = 0;\n      this.mode = mode;\n      this.strategy = 0;\n      this.windowBits = 0;\n      this.write_in_progress = false;\n      this.pending_close = false;\n      this.gzip_id_bytes_read = 0;\n    }\n    Zlib.prototype.close = function () {\n      if (this.write_in_progress) {\n        this.pending_close = true;\n        return;\n      }\n      this.pending_close = false;\n      assert(this.init_done, 'close before init');\n      assert(this.mode <= exports.UNZIP);\n      if (this.mode === exports.DEFLATE || this.mode === exports.GZIP || this.mode === exports.DEFLATERAW) {\n        zlib_deflate.deflateEnd(this.strm);\n      } else if (this.mode === exports.INFLATE || this.mode === exports.GUNZIP || this.mode === exports.INFLATERAW || this.mode === exports.UNZIP) {\n        zlib_inflate.inflateEnd(this.strm);\n      }\n      this.mode = exports.NONE;\n      this.dictionary = null;\n    };\n    Zlib.prototype.write = function (flush, input, in_off, in_len, out, out_off, out_len) {\n      return this._write(true, flush, input, in_off, in_len, out, out_off, out_len);\n    };\n    Zlib.prototype.writeSync = function (flush, input, in_off, in_len, out, out_off, out_len) {\n      return this._write(false, flush, input, in_off, in_len, out, out_off, out_len);\n    };\n    Zlib.prototype._write = function (async, flush, input, in_off, in_len, out, out_off, out_len) {\n      assert.equal(arguments.length, 8);\n      assert(this.init_done, 'write before init');\n      assert(this.mode !== exports.NONE, 'already finalized');\n      assert.equal(false, this.write_in_progress, 'write already in progress');\n      assert.equal(false, this.pending_close, 'close is pending');\n      this.write_in_progress = true;\n      assert.equal(false, flush === undefined, 'must provide flush value');\n      this.write_in_progress = true;\n      if (flush !== exports.Z_NO_FLUSH && flush !== exports.Z_PARTIAL_FLUSH && flush !== exports.Z_SYNC_FLUSH && flush !== exports.Z_FULL_FLUSH && flush !== exports.Z_FINISH && flush !== exports.Z_BLOCK) {\n        throw new Error('Invalid flush value');\n      }\n      if (input == null) {\n        input = Buffer.alloc(0);\n        in_len = 0;\n        in_off = 0;\n      }\n      this.strm.avail_in = in_len;\n      this.strm.input = input;\n      this.strm.next_in = in_off;\n      this.strm.avail_out = out_len;\n      this.strm.output = out;\n      this.strm.next_out = out_off;\n      this.flush = flush;\n      if (!async) {\n        this._process();\n        if (this._checkError()) {\n          return this._afterSync();\n        }\n        return;\n      }\n      var self = this;\n      process.nextTick(function () {\n        self._process();\n        self._after();\n      });\n      return this;\n    };\n    Zlib.prototype._afterSync = function () {\n      var avail_out = this.strm.avail_out;\n      var avail_in = this.strm.avail_in;\n      this.write_in_progress = false;\n      return [avail_in, avail_out];\n    };\n    Zlib.prototype._process = function () {\n      var next_expected_header_byte = null;\n      switch (this.mode) {\n        case exports.DEFLATE:\n        case exports.GZIP:\n        case exports.DEFLATERAW:\n          this.err = zlib_deflate.deflate(this.strm, this.flush);\n          break;\n        case exports.UNZIP:\n          if (this.strm.avail_in > 0) {\n            next_expected_header_byte = this.strm.next_in;\n          }\n          switch (this.gzip_id_bytes_read) {\n            case 0:\n              if (next_expected_header_byte === null) {\n                break;\n              }\n              if (this.strm.input[next_expected_header_byte] === GZIP_HEADER_ID1) {\n                this.gzip_id_bytes_read = 1;\n                next_expected_header_byte++;\n                if (this.strm.avail_in === 1) {\n                  break;\n                }\n              } else {\n                this.mode = exports.INFLATE;\n                break;\n              }\n            case 1:\n              if (next_expected_header_byte === null) {\n                break;\n              }\n              if (this.strm.input[next_expected_header_byte] === GZIP_HEADER_ID2) {\n                this.gzip_id_bytes_read = 2;\n                this.mode = exports.GUNZIP;\n              } else {\n                this.mode = exports.INFLATE;\n              }\n              break;\n            default:\n              throw new Error('invalid number of gzip magic number bytes read');\n          }\n        case exports.INFLATE:\n        case exports.GUNZIP:\n        case exports.INFLATERAW:\n          this.err = zlib_inflate.inflate(this.strm, this.flush\n          );if (this.err === exports.Z_NEED_DICT && this.dictionary) {\n            this.err = zlib_inflate.inflateSetDictionary(this.strm, this.dictionary);\n            if (this.err === exports.Z_OK) {\n              this.err = zlib_inflate.inflate(this.strm, this.flush);\n            } else if (this.err === exports.Z_DATA_ERROR) {\n              this.err = exports.Z_NEED_DICT;\n            }\n          }\n          while (this.strm.avail_in > 0 && this.mode === exports.GUNZIP && this.err === exports.Z_STREAM_END && this.strm.next_in[0] !== 0x00) {\n            this.reset();\n            this.err = zlib_inflate.inflate(this.strm, this.flush);\n          }\n          break;\n        default:\n          throw new Error('Unknown mode ' + this.mode);\n      }\n    };\n    Zlib.prototype._checkError = function () {\n      switch (this.err) {\n        case exports.Z_OK:\n        case exports.Z_BUF_ERROR:\n          if (this.strm.avail_out !== 0 && this.flush === exports.Z_FINISH) {\n            this._error('unexpected end of file');\n            return false;\n          }\n          break;\n        case exports.Z_STREAM_END:\n          break;\n        case exports.Z_NEED_DICT:\n          if (this.dictionary == null) {\n            this._error('Missing dictionary');\n          } else {\n            this._error('Bad dictionary');\n          }\n          return false;\n        default:\n          this._error('Zlib error');\n          return false;\n      }\n      return true;\n    };\n    Zlib.prototype._after = function () {\n      if (!this._checkError()) {\n        return;\n      }\n      var avail_out = this.strm.avail_out;\n      var avail_in = this.strm.avail_in;\n      this.write_in_progress = false;\n      this.callback(avail_in, avail_out);\n      if (this.pending_close) {\n        this.close();\n      }\n    };\n    Zlib.prototype._error = function (message) {\n      if (this.strm.msg) {\n        message = this.strm.msg;\n      }\n      this.onerror(message, this.err\n      );this.write_in_progress = false;\n      if (this.pending_close) {\n        this.close();\n      }\n    };\n    Zlib.prototype.init = function (windowBits, level, memLevel, strategy, dictionary) {\n      assert(arguments.length === 4 || arguments.length === 5, 'init(windowBits, level, memLevel, strategy, [dictionary])');\n      assert(windowBits >= 8 && windowBits <= 15, 'invalid windowBits');\n      assert(level >= -1 && level <= 9, 'invalid compression level');\n      assert(memLevel >= 1 && memLevel <= 9, 'invalid memlevel');\n      assert(strategy === exports.Z_FILTERED || strategy === exports.Z_HUFFMAN_ONLY || strategy === exports.Z_RLE || strategy === exports.Z_FIXED || strategy === exports.Z_DEFAULT_STRATEGY, 'invalid strategy');\n      this._init(level, windowBits, memLevel, strategy, dictionary);\n      this._setDictionary();\n    };\n    Zlib.prototype.params = function () {\n      throw new Error('deflateParams Not supported');\n    };\n    Zlib.prototype.reset = function () {\n      this._reset();\n      this._setDictionary();\n    };\n    Zlib.prototype._init = function (level, windowBits, memLevel, strategy, dictionary) {\n      this.level = level;\n      this.windowBits = windowBits;\n      this.memLevel = memLevel;\n      this.strategy = strategy;\n      this.flush = exports.Z_NO_FLUSH;\n      this.err = exports.Z_OK;\n      if (this.mode === exports.GZIP || this.mode === exports.GUNZIP) {\n        this.windowBits += 16;\n      }\n      if (this.mode === exports.UNZIP) {\n        this.windowBits += 32;\n      }\n      if (this.mode === exports.DEFLATERAW || this.mode === exports.INFLATERAW) {\n        this.windowBits = -1 * this.windowBits;\n      }\n      this.strm = new Zstream();\n      switch (this.mode) {\n        case exports.DEFLATE:\n        case exports.GZIP:\n        case exports.DEFLATERAW:\n          this.err = zlib_deflate.deflateInit2(this.strm, this.level, exports.Z_DEFLATED, this.windowBits, this.memLevel, this.strategy);\n          break;\n        case exports.INFLATE:\n        case exports.GUNZIP:\n        case exports.INFLATERAW:\n        case exports.UNZIP:\n          this.err = zlib_inflate.inflateInit2(this.strm, this.windowBits);\n          break;\n        default:\n          throw new Error('Unknown mode ' + this.mode);\n      }\n      if (this.err !== exports.Z_OK) {\n        this._error('Init error');\n      }\n      this.dictionary = dictionary;\n      this.write_in_progress = false;\n      this.init_done = true;\n    };\n    Zlib.prototype._setDictionary = function () {\n      if (this.dictionary == null) {\n        return;\n      }\n      this.err = exports.Z_OK;\n      switch (this.mode) {\n        case exports.DEFLATE:\n        case exports.DEFLATERAW:\n          this.err = zlib_deflate.deflateSetDictionary(this.strm, this.dictionary);\n          break;\n      }\n      if (this.err !== exports.Z_OK) {\n        this._error('Failed to set dictionary');\n      }\n    };\n    Zlib.prototype._reset = function () {\n      this.err = exports.Z_OK;\n      switch (this.mode) {\n        case exports.DEFLATE:\n        case exports.DEFLATERAW:\n        case exports.GZIP:\n          this.err = zlib_deflate.deflateReset(this.strm);\n          break;\n        case exports.INFLATE:\n        case exports.INFLATERAW:\n        case exports.GUNZIP:\n          this.err = zlib_inflate.inflateReset(this.strm);\n          break;\n      }\n      if (this.err !== exports.Z_OK) {\n        this._error('Failed to reset stream');\n      }\n    };\n    exports.Zlib = Zlib;\n    }).call(this,require('_process'),require(\"buffer\").Buffer);\n    },{\"_process\":47,\"assert\":23,\"buffer\":28,\"pako/lib/zlib/constants\":37,\"pako/lib/zlib/deflate.js\":39,\"pako/lib/zlib/inflate.js\":41,\"pako/lib/zlib/zstream\":45}],27:[function(require,module,exports){\n    (function (process){\n    var Buffer = require('buffer').Buffer;\n    var Transform = require('stream').Transform;\n    var binding = require('./binding');\n    var util = require('util');\n    var assert = require('assert').ok;\n    var kMaxLength = require('buffer').kMaxLength;\n    var kRangeErrorMessage = 'Cannot create final Buffer. It would be larger ' + 'than 0x' + kMaxLength.toString(16) + ' bytes';\n    binding.Z_MIN_WINDOWBITS = 8;\n    binding.Z_MAX_WINDOWBITS = 15;\n    binding.Z_DEFAULT_WINDOWBITS = 15;\n    binding.Z_MIN_CHUNK = 64;\n    binding.Z_MAX_CHUNK = Infinity;\n    binding.Z_DEFAULT_CHUNK = 16 * 1024;\n    binding.Z_MIN_MEMLEVEL = 1;\n    binding.Z_MAX_MEMLEVEL = 9;\n    binding.Z_DEFAULT_MEMLEVEL = 8;\n    binding.Z_MIN_LEVEL = -1;\n    binding.Z_MAX_LEVEL = 9;\n    binding.Z_DEFAULT_LEVEL = binding.Z_DEFAULT_COMPRESSION;\n    var bkeys = Object.keys(binding);\n    for (var bk = 0; bk < bkeys.length; bk++) {\n      var bkey = bkeys[bk];\n      if (bkey.match(/^Z/)) {\n        Object.defineProperty(exports, bkey, {\n          enumerable: true, value: binding[bkey], writable: false\n        });\n      }\n    }\n    var codes = {\n      Z_OK: binding.Z_OK,\n      Z_STREAM_END: binding.Z_STREAM_END,\n      Z_NEED_DICT: binding.Z_NEED_DICT,\n      Z_ERRNO: binding.Z_ERRNO,\n      Z_STREAM_ERROR: binding.Z_STREAM_ERROR,\n      Z_DATA_ERROR: binding.Z_DATA_ERROR,\n      Z_MEM_ERROR: binding.Z_MEM_ERROR,\n      Z_BUF_ERROR: binding.Z_BUF_ERROR,\n      Z_VERSION_ERROR: binding.Z_VERSION_ERROR\n    };\n    var ckeys = Object.keys(codes);\n    for (var ck = 0; ck < ckeys.length; ck++) {\n      var ckey = ckeys[ck];\n      codes[codes[ckey]] = ckey;\n    }\n    Object.defineProperty(exports, 'codes', {\n      enumerable: true, value: Object.freeze(codes), writable: false\n    });\n    exports.Deflate = Deflate;\n    exports.Inflate = Inflate;\n    exports.Gzip = Gzip;\n    exports.Gunzip = Gunzip;\n    exports.DeflateRaw = DeflateRaw;\n    exports.InflateRaw = InflateRaw;\n    exports.Unzip = Unzip;\n    exports.createDeflate = function (o) {\n      return new Deflate(o);\n    };\n    exports.createInflate = function (o) {\n      return new Inflate(o);\n    };\n    exports.createDeflateRaw = function (o) {\n      return new DeflateRaw(o);\n    };\n    exports.createInflateRaw = function (o) {\n      return new InflateRaw(o);\n    };\n    exports.createGzip = function (o) {\n      return new Gzip(o);\n    };\n    exports.createGunzip = function (o) {\n      return new Gunzip(o);\n    };\n    exports.createUnzip = function (o) {\n      return new Unzip(o);\n    };\n    exports.deflate = function (buffer, opts, callback) {\n      if (typeof opts === 'function') {\n        callback = opts;\n        opts = {};\n      }\n      return zlibBuffer(new Deflate(opts), buffer, callback);\n    };\n    exports.deflateSync = function (buffer, opts) {\n      return zlibBufferSync(new Deflate(opts), buffer);\n    };\n    exports.gzip = function (buffer, opts, callback) {\n      if (typeof opts === 'function') {\n        callback = opts;\n        opts = {};\n      }\n      return zlibBuffer(new Gzip(opts), buffer, callback);\n    };\n    exports.gzipSync = function (buffer, opts) {\n      return zlibBufferSync(new Gzip(opts), buffer);\n    };\n    exports.deflateRaw = function (buffer, opts, callback) {\n      if (typeof opts === 'function') {\n        callback = opts;\n        opts = {};\n      }\n      return zlibBuffer(new DeflateRaw(opts), buffer, callback);\n    };\n    exports.deflateRawSync = function (buffer, opts) {\n      return zlibBufferSync(new DeflateRaw(opts), buffer);\n    };\n    exports.unzip = function (buffer, opts, callback) {\n      if (typeof opts === 'function') {\n        callback = opts;\n        opts = {};\n      }\n      return zlibBuffer(new Unzip(opts), buffer, callback);\n    };\n    exports.unzipSync = function (buffer, opts) {\n      return zlibBufferSync(new Unzip(opts), buffer);\n    };\n    exports.inflate = function (buffer, opts, callback) {\n      if (typeof opts === 'function') {\n        callback = opts;\n        opts = {};\n      }\n      return zlibBuffer(new Inflate(opts), buffer, callback);\n    };\n    exports.inflateSync = function (buffer, opts) {\n      return zlibBufferSync(new Inflate(opts), buffer);\n    };\n    exports.gunzip = function (buffer, opts, callback) {\n      if (typeof opts === 'function') {\n        callback = opts;\n        opts = {};\n      }\n      return zlibBuffer(new Gunzip(opts), buffer, callback);\n    };\n    exports.gunzipSync = function (buffer, opts) {\n      return zlibBufferSync(new Gunzip(opts), buffer);\n    };\n    exports.inflateRaw = function (buffer, opts, callback) {\n      if (typeof opts === 'function') {\n        callback = opts;\n        opts = {};\n      }\n      return zlibBuffer(new InflateRaw(opts), buffer, callback);\n    };\n    exports.inflateRawSync = function (buffer, opts) {\n      return zlibBufferSync(new InflateRaw(opts), buffer);\n    };\n    function zlibBuffer(engine, buffer, callback) {\n      var buffers = [];\n      var nread = 0;\n      engine.on('error', onError);\n      engine.on('end', onEnd);\n      engine.end(buffer);\n      flow();\n      function flow() {\n        var chunk;\n        while (null !== (chunk = engine.read())) {\n          buffers.push(chunk);\n          nread += chunk.length;\n        }\n        engine.once('readable', flow);\n      }\n      function onError(err) {\n        engine.removeListener('end', onEnd);\n        engine.removeListener('readable', flow);\n        callback(err);\n      }\n      function onEnd() {\n        var buf;\n        var err = null;\n        if (nread >= kMaxLength) {\n          err = new RangeError(kRangeErrorMessage);\n        } else {\n          buf = Buffer.concat(buffers, nread);\n        }\n        buffers = [];\n        engine.close();\n        callback(err, buf);\n      }\n    }\n    function zlibBufferSync(engine, buffer) {\n      if (typeof buffer === 'string') buffer = Buffer.from(buffer);\n      if (!Buffer.isBuffer(buffer)) throw new TypeError('Not a string or buffer');\n      var flushFlag = engine._finishFlushFlag;\n      return engine._processChunk(buffer, flushFlag);\n    }\n    function Deflate(opts) {\n      if (!(this instanceof Deflate)) return new Deflate(opts);\n      Zlib.call(this, opts, binding.DEFLATE);\n    }\n    function Inflate(opts) {\n      if (!(this instanceof Inflate)) return new Inflate(opts);\n      Zlib.call(this, opts, binding.INFLATE);\n    }\n    function Gzip(opts) {\n      if (!(this instanceof Gzip)) return new Gzip(opts);\n      Zlib.call(this, opts, binding.GZIP);\n    }\n    function Gunzip(opts) {\n      if (!(this instanceof Gunzip)) return new Gunzip(opts);\n      Zlib.call(this, opts, binding.GUNZIP);\n    }\n    function DeflateRaw(opts) {\n      if (!(this instanceof DeflateRaw)) return new DeflateRaw(opts);\n      Zlib.call(this, opts, binding.DEFLATERAW);\n    }\n    function InflateRaw(opts) {\n      if (!(this instanceof InflateRaw)) return new InflateRaw(opts);\n      Zlib.call(this, opts, binding.INFLATERAW);\n    }\n    function Unzip(opts) {\n      if (!(this instanceof Unzip)) return new Unzip(opts);\n      Zlib.call(this, opts, binding.UNZIP);\n    }\n    function isValidFlushFlag(flag) {\n      return flag === binding.Z_NO_FLUSH || flag === binding.Z_PARTIAL_FLUSH || flag === binding.Z_SYNC_FLUSH || flag === binding.Z_FULL_FLUSH || flag === binding.Z_FINISH || flag === binding.Z_BLOCK;\n    }\n    function Zlib(opts, mode) {\n      var _this = this;\n      this._opts = opts = opts || {};\n      this._chunkSize = opts.chunkSize || exports.Z_DEFAULT_CHUNK;\n      Transform.call(this, opts);\n      if (opts.flush && !isValidFlushFlag(opts.flush)) {\n        throw new Error('Invalid flush flag: ' + opts.flush);\n      }\n      if (opts.finishFlush && !isValidFlushFlag(opts.finishFlush)) {\n        throw new Error('Invalid flush flag: ' + opts.finishFlush);\n      }\n      this._flushFlag = opts.flush || binding.Z_NO_FLUSH;\n      this._finishFlushFlag = typeof opts.finishFlush !== 'undefined' ? opts.finishFlush : binding.Z_FINISH;\n      if (opts.chunkSize) {\n        if (opts.chunkSize < exports.Z_MIN_CHUNK || opts.chunkSize > exports.Z_MAX_CHUNK) {\n          throw new Error('Invalid chunk size: ' + opts.chunkSize);\n        }\n      }\n      if (opts.windowBits) {\n        if (opts.windowBits < exports.Z_MIN_WINDOWBITS || opts.windowBits > exports.Z_MAX_WINDOWBITS) {\n          throw new Error('Invalid windowBits: ' + opts.windowBits);\n        }\n      }\n      if (opts.level) {\n        if (opts.level < exports.Z_MIN_LEVEL || opts.level > exports.Z_MAX_LEVEL) {\n          throw new Error('Invalid compression level: ' + opts.level);\n        }\n      }\n      if (opts.memLevel) {\n        if (opts.memLevel < exports.Z_MIN_MEMLEVEL || opts.memLevel > exports.Z_MAX_MEMLEVEL) {\n          throw new Error('Invalid memLevel: ' + opts.memLevel);\n        }\n      }\n      if (opts.strategy) {\n        if (opts.strategy != exports.Z_FILTERED && opts.strategy != exports.Z_HUFFMAN_ONLY && opts.strategy != exports.Z_RLE && opts.strategy != exports.Z_FIXED && opts.strategy != exports.Z_DEFAULT_STRATEGY) {\n          throw new Error('Invalid strategy: ' + opts.strategy);\n        }\n      }\n      if (opts.dictionary) {\n        if (!Buffer.isBuffer(opts.dictionary)) {\n          throw new Error('Invalid dictionary: it should be a Buffer instance');\n        }\n      }\n      this._handle = new binding.Zlib(mode);\n      var self = this;\n      this._hadError = false;\n      this._handle.onerror = function (message, errno) {\n        _close(self);\n        self._hadError = true;\n        var error = new Error(message);\n        error.errno = errno;\n        error.code = exports.codes[errno];\n        self.emit('error', error);\n      };\n      var level = exports.Z_DEFAULT_COMPRESSION;\n      if (typeof opts.level === 'number') level = opts.level;\n      var strategy = exports.Z_DEFAULT_STRATEGY;\n      if (typeof opts.strategy === 'number') strategy = opts.strategy;\n      this._handle.init(opts.windowBits || exports.Z_DEFAULT_WINDOWBITS, level, opts.memLevel || exports.Z_DEFAULT_MEMLEVEL, strategy, opts.dictionary);\n      this._buffer = Buffer.allocUnsafe(this._chunkSize);\n      this._offset = 0;\n      this._level = level;\n      this._strategy = strategy;\n      this.once('end', this.close);\n      Object.defineProperty(this, '_closed', {\n        get: function () {\n          return !_this._handle;\n        },\n        configurable: true,\n        enumerable: true\n      });\n    }\n    util.inherits(Zlib, Transform);\n    Zlib.prototype.params = function (level, strategy, callback) {\n      if (level < exports.Z_MIN_LEVEL || level > exports.Z_MAX_LEVEL) {\n        throw new RangeError('Invalid compression level: ' + level);\n      }\n      if (strategy != exports.Z_FILTERED && strategy != exports.Z_HUFFMAN_ONLY && strategy != exports.Z_RLE && strategy != exports.Z_FIXED && strategy != exports.Z_DEFAULT_STRATEGY) {\n        throw new TypeError('Invalid strategy: ' + strategy);\n      }\n      if (this._level !== level || this._strategy !== strategy) {\n        var self = this;\n        this.flush(binding.Z_SYNC_FLUSH, function () {\n          assert(self._handle, 'zlib binding closed');\n          self._handle.params(level, strategy);\n          if (!self._hadError) {\n            self._level = level;\n            self._strategy = strategy;\n            if (callback) callback();\n          }\n        });\n      } else {\n        process.nextTick(callback);\n      }\n    };\n    Zlib.prototype.reset = function () {\n      assert(this._handle, 'zlib binding closed');\n      return this._handle.reset();\n    };\n    Zlib.prototype._flush = function (callback) {\n      this._transform(Buffer.alloc(0), '', callback);\n    };\n    Zlib.prototype.flush = function (kind, callback) {\n      var _this2 = this;\n      var ws = this._writableState;\n      if (typeof kind === 'function' || kind === undefined && !callback) {\n        callback = kind;\n        kind = binding.Z_FULL_FLUSH;\n      }\n      if (ws.ended) {\n        if (callback) process.nextTick(callback);\n      } else if (ws.ending) {\n        if (callback) this.once('end', callback);\n      } else if (ws.needDrain) {\n        if (callback) {\n          this.once('drain', function () {\n            return _this2.flush(kind, callback);\n          });\n        }\n      } else {\n        this._flushFlag = kind;\n        this.write(Buffer.alloc(0), '', callback);\n      }\n    };\n    Zlib.prototype.close = function (callback) {\n      _close(this, callback);\n      process.nextTick(emitCloseNT, this);\n    };\n    function _close(engine, callback) {\n      if (callback) process.nextTick(callback);\n      if (!engine._handle) return;\n      engine._handle.close();\n      engine._handle = null;\n    }\n    function emitCloseNT(self) {\n      self.emit('close');\n    }\n    Zlib.prototype._transform = function (chunk, encoding, cb) {\n      var flushFlag;\n      var ws = this._writableState;\n      var ending = ws.ending || ws.ended;\n      var last = ending && (!chunk || ws.length === chunk.length);\n      if (chunk !== null && !Buffer.isBuffer(chunk)) return cb(new Error('invalid input'));\n      if (!this._handle) return cb(new Error('zlib binding closed'));\n      if (last) flushFlag = this._finishFlushFlag;else {\n        flushFlag = this._flushFlag;\n        if (chunk.length >= ws.length) {\n          this._flushFlag = this._opts.flush || binding.Z_NO_FLUSH;\n        }\n      }\n      this._processChunk(chunk, flushFlag, cb);\n    };\n    Zlib.prototype._processChunk = function (chunk, flushFlag, cb) {\n      var availInBefore = chunk && chunk.length;\n      var availOutBefore = this._chunkSize - this._offset;\n      var inOff = 0;\n      var self = this;\n      var async = typeof cb === 'function';\n      if (!async) {\n        var buffers = [];\n        var nread = 0;\n        var error;\n        this.on('error', function (er) {\n          error = er;\n        });\n        assert(this._handle, 'zlib binding closed');\n        do {\n          var res = this._handle.writeSync(flushFlag, chunk,\n          inOff,\n          availInBefore,\n          this._buffer,\n          this._offset,\n          availOutBefore);\n        } while (!this._hadError && callback(res[0], res[1]));\n        if (this._hadError) {\n          throw error;\n        }\n        if (nread >= kMaxLength) {\n          _close(this);\n          throw new RangeError(kRangeErrorMessage);\n        }\n        var buf = Buffer.concat(buffers, nread);\n        _close(this);\n        return buf;\n      }\n      assert(this._handle, 'zlib binding closed');\n      var req = this._handle.write(flushFlag, chunk,\n      inOff,\n      availInBefore,\n      this._buffer,\n      this._offset,\n      availOutBefore);\n      req.buffer = chunk;\n      req.callback = callback;\n      function callback(availInAfter, availOutAfter) {\n        if (this) {\n          this.buffer = null;\n          this.callback = null;\n        }\n        if (self._hadError) return;\n        var have = availOutBefore - availOutAfter;\n        assert(have >= 0, 'have should not go down');\n        if (have > 0) {\n          var out = self._buffer.slice(self._offset, self._offset + have);\n          self._offset += have;\n          if (async) {\n            self.push(out);\n          } else {\n            buffers.push(out);\n            nread += out.length;\n          }\n        }\n        if (availOutAfter === 0 || self._offset >= self._chunkSize) {\n          availOutBefore = self._chunkSize;\n          self._offset = 0;\n          self._buffer = Buffer.allocUnsafe(self._chunkSize);\n        }\n        if (availOutAfter === 0) {\n          inOff += availInBefore - availInAfter;\n          availInBefore = availInAfter;\n          if (!async) return true;\n          var newReq = self._handle.write(flushFlag, chunk, inOff, availInBefore, self._buffer, self._offset, self._chunkSize);\n          newReq.callback = callback;\n          newReq.buffer = chunk;\n          return;\n        }\n        if (!async) return false;\n        cb();\n      }\n    };\n    util.inherits(Deflate, Zlib);\n    util.inherits(Inflate, Zlib);\n    util.inherits(Gzip, Zlib);\n    util.inherits(Gunzip, Zlib);\n    util.inherits(DeflateRaw, Zlib);\n    util.inherits(InflateRaw, Zlib);\n    util.inherits(Unzip, Zlib);\n    }).call(this,require('_process'));\n    },{\"./binding\":26,\"_process\":47,\"assert\":23,\"buffer\":28,\"stream\":63,\"util\":67}],28:[function(require,module,exports){\n    var base64 = require('base64-js');\n    var ieee754 = require('ieee754');\n    exports.Buffer = Buffer;\n    exports.SlowBuffer = SlowBuffer;\n    exports.INSPECT_MAX_BYTES = 50;\n    var K_MAX_LENGTH = 0x7fffffff;\n    exports.kMaxLength = K_MAX_LENGTH;\n    Buffer.TYPED_ARRAY_SUPPORT = typedArraySupport();\n    if (!Buffer.TYPED_ARRAY_SUPPORT && typeof console !== 'undefined' &&\n        typeof console.error === 'function') {\n      console.error(\n        'This browser lacks typed array (Uint8Array) support which is required by ' +\n        '`buffer` v5.x. Use `buffer` v4.x if you require old browser support.'\n      );\n    }\n    function typedArraySupport () {\n      try {\n        var arr = new Uint8Array(1);\n        arr.__proto__ = { __proto__: Uint8Array.prototype, foo: function () { return 42 } };\n        return arr.foo() === 42\n      } catch (e) {\n        return false\n      }\n    }\n    Object.defineProperty(Buffer.prototype, 'parent', {\n      enumerable: true,\n      get: function () {\n        if (!Buffer.isBuffer(this)) return undefined\n        return this.buffer\n      }\n    });\n    Object.defineProperty(Buffer.prototype, 'offset', {\n      enumerable: true,\n      get: function () {\n        if (!Buffer.isBuffer(this)) return undefined\n        return this.byteOffset\n      }\n    });\n    function createBuffer (length) {\n      if (length > K_MAX_LENGTH) {\n        throw new RangeError('The value \"' + length + '\" is invalid for option \"size\"')\n      }\n      var buf = new Uint8Array(length);\n      buf.__proto__ = Buffer.prototype;\n      return buf\n    }\n    function Buffer (arg, encodingOrOffset, length) {\n      if (typeof arg === 'number') {\n        if (typeof encodingOrOffset === 'string') {\n          throw new TypeError(\n            'The \"string\" argument must be of type string. Received type number'\n          )\n        }\n        return allocUnsafe(arg)\n      }\n      return from(arg, encodingOrOffset, length)\n    }\n    if (typeof Symbol !== 'undefined' && Symbol.species != null &&\n        Buffer[Symbol.species] === Buffer) {\n      Object.defineProperty(Buffer, Symbol.species, {\n        value: null,\n        configurable: true,\n        enumerable: false,\n        writable: false\n      });\n    }\n    Buffer.poolSize = 8192;\n    function from (value, encodingOrOffset, length) {\n      if (typeof value === 'string') {\n        return fromString(value, encodingOrOffset)\n      }\n      if (ArrayBuffer.isView(value)) {\n        return fromArrayLike(value)\n      }\n      if (value == null) {\n        throw TypeError(\n          'The first argument must be one of type string, Buffer, ArrayBuffer, Array, ' +\n          'or Array-like Object. Received type ' + (typeof value)\n        )\n      }\n      if (isInstance(value, ArrayBuffer) ||\n          (value && isInstance(value.buffer, ArrayBuffer))) {\n        return fromArrayBuffer(value, encodingOrOffset, length)\n      }\n      if (typeof value === 'number') {\n        throw new TypeError(\n          'The \"value\" argument must not be of type number. Received type number'\n        )\n      }\n      var valueOf = value.valueOf && value.valueOf();\n      if (valueOf != null && valueOf !== value) {\n        return Buffer.from(valueOf, encodingOrOffset, length)\n      }\n      var b = fromObject(value);\n      if (b) return b\n      if (typeof Symbol !== 'undefined' && Symbol.toPrimitive != null &&\n          typeof value[Symbol.toPrimitive] === 'function') {\n        return Buffer.from(\n          value[Symbol.toPrimitive]('string'), encodingOrOffset, length\n        )\n      }\n      throw new TypeError(\n        'The first argument must be one of type string, Buffer, ArrayBuffer, Array, ' +\n        'or Array-like Object. Received type ' + (typeof value)\n      )\n    }\n    Buffer.from = function (value, encodingOrOffset, length) {\n      return from(value, encodingOrOffset, length)\n    };\n    Buffer.prototype.__proto__ = Uint8Array.prototype;\n    Buffer.__proto__ = Uint8Array;\n    function assertSize (size) {\n      if (typeof size !== 'number') {\n        throw new TypeError('\"size\" argument must be of type number')\n      } else if (size < 0) {\n        throw new RangeError('The value \"' + size + '\" is invalid for option \"size\"')\n      }\n    }\n    function alloc (size, fill, encoding) {\n      assertSize(size);\n      if (size <= 0) {\n        return createBuffer(size)\n      }\n      if (fill !== undefined) {\n        return typeof encoding === 'string'\n          ? createBuffer(size).fill(fill, encoding)\n          : createBuffer(size).fill(fill)\n      }\n      return createBuffer(size)\n    }\n    Buffer.alloc = function (size, fill, encoding) {\n      return alloc(size, fill, encoding)\n    };\n    function allocUnsafe (size) {\n      assertSize(size);\n      return createBuffer(size < 0 ? 0 : checked(size) | 0)\n    }\n    Buffer.allocUnsafe = function (size) {\n      return allocUnsafe(size)\n    };\n    Buffer.allocUnsafeSlow = function (size) {\n      return allocUnsafe(size)\n    };\n    function fromString (string, encoding) {\n      if (typeof encoding !== 'string' || encoding === '') {\n        encoding = 'utf8';\n      }\n      if (!Buffer.isEncoding(encoding)) {\n        throw new TypeError('Unknown encoding: ' + encoding)\n      }\n      var length = byteLength(string, encoding) | 0;\n      var buf = createBuffer(length);\n      var actual = buf.write(string, encoding);\n      if (actual !== length) {\n        buf = buf.slice(0, actual);\n      }\n      return buf\n    }\n    function fromArrayLike (array) {\n      var length = array.length < 0 ? 0 : checked(array.length) | 0;\n      var buf = createBuffer(length);\n      for (var i = 0; i < length; i += 1) {\n        buf[i] = array[i] & 255;\n      }\n      return buf\n    }\n    function fromArrayBuffer (array, byteOffset, length) {\n      if (byteOffset < 0 || array.byteLength < byteOffset) {\n        throw new RangeError('\"offset\" is outside of buffer bounds')\n      }\n      if (array.byteLength < byteOffset + (length || 0)) {\n        throw new RangeError('\"length\" is outside of buffer bounds')\n      }\n      var buf;\n      if (byteOffset === undefined && length === undefined) {\n        buf = new Uint8Array(array);\n      } else if (length === undefined) {\n        buf = new Uint8Array(array, byteOffset);\n      } else {\n        buf = new Uint8Array(array, byteOffset, length);\n      }\n      buf.__proto__ = Buffer.prototype;\n      return buf\n    }\n    function fromObject (obj) {\n      if (Buffer.isBuffer(obj)) {\n        var len = checked(obj.length) | 0;\n        var buf = createBuffer(len);\n        if (buf.length === 0) {\n          return buf\n        }\n        obj.copy(buf, 0, 0, len);\n        return buf\n      }\n      if (obj.length !== undefined) {\n        if (typeof obj.length !== 'number' || numberIsNaN(obj.length)) {\n          return createBuffer(0)\n        }\n        return fromArrayLike(obj)\n      }\n      if (obj.type === 'Buffer' && Array.isArray(obj.data)) {\n        return fromArrayLike(obj.data)\n      }\n    }\n    function checked (length) {\n      if (length >= K_MAX_LENGTH) {\n        throw new RangeError('Attempt to allocate Buffer larger than maximum ' +\n                             'size: 0x' + K_MAX_LENGTH.toString(16) + ' bytes')\n      }\n      return length | 0\n    }\n    function SlowBuffer (length) {\n      if (+length != length) {\n        length = 0;\n      }\n      return Buffer.alloc(+length)\n    }\n    Buffer.isBuffer = function isBuffer (b) {\n      return b != null && b._isBuffer === true &&\n        b !== Buffer.prototype\n    };\n    Buffer.compare = function compare (a, b) {\n      if (isInstance(a, Uint8Array)) a = Buffer.from(a, a.offset, a.byteLength);\n      if (isInstance(b, Uint8Array)) b = Buffer.from(b, b.offset, b.byteLength);\n      if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) {\n        throw new TypeError(\n          'The \"buf1\", \"buf2\" arguments must be one of type Buffer or Uint8Array'\n        )\n      }\n      if (a === b) return 0\n      var x = a.length;\n      var y = b.length;\n      for (var i = 0, len = Math.min(x, y); i < len; ++i) {\n        if (a[i] !== b[i]) {\n          x = a[i];\n          y = b[i];\n          break\n        }\n      }\n      if (x < y) return -1\n      if (y < x) return 1\n      return 0\n    };\n    Buffer.isEncoding = function isEncoding (encoding) {\n      switch (String(encoding).toLowerCase()) {\n        case 'hex':\n        case 'utf8':\n        case 'utf-8':\n        case 'ascii':\n        case 'latin1':\n        case 'binary':\n        case 'base64':\n        case 'ucs2':\n        case 'ucs-2':\n        case 'utf16le':\n        case 'utf-16le':\n          return true\n        default:\n          return false\n      }\n    };\n    Buffer.concat = function concat (list, length) {\n      if (!Array.isArray(list)) {\n        throw new TypeError('\"list\" argument must be an Array of Buffers')\n      }\n      if (list.length === 0) {\n        return Buffer.alloc(0)\n      }\n      var i;\n      if (length === undefined) {\n        length = 0;\n        for (i = 0; i < list.length; ++i) {\n          length += list[i].length;\n        }\n      }\n      var buffer = Buffer.allocUnsafe(length);\n      var pos = 0;\n      for (i = 0; i < list.length; ++i) {\n        var buf = list[i];\n        if (isInstance(buf, Uint8Array)) {\n          buf = Buffer.from(buf);\n        }\n        if (!Buffer.isBuffer(buf)) {\n          throw new TypeError('\"list\" argument must be an Array of Buffers')\n        }\n        buf.copy(buffer, pos);\n        pos += buf.length;\n      }\n      return buffer\n    };\n    function byteLength (string, encoding) {\n      if (Buffer.isBuffer(string)) {\n        return string.length\n      }\n      if (ArrayBuffer.isView(string) || isInstance(string, ArrayBuffer)) {\n        return string.byteLength\n      }\n      if (typeof string !== 'string') {\n        throw new TypeError(\n          'The \"string\" argument must be one of type string, Buffer, or ArrayBuffer. ' +\n          'Received type ' + typeof string\n        )\n      }\n      var len = string.length;\n      var mustMatch = (arguments.length > 2 && arguments[2] === true);\n      if (!mustMatch && len === 0) return 0\n      var loweredCase = false;\n      for (;;) {\n        switch (encoding) {\n          case 'ascii':\n          case 'latin1':\n          case 'binary':\n            return len\n          case 'utf8':\n          case 'utf-8':\n            return utf8ToBytes(string).length\n          case 'ucs2':\n          case 'ucs-2':\n          case 'utf16le':\n          case 'utf-16le':\n            return len * 2\n          case 'hex':\n            return len >>> 1\n          case 'base64':\n            return base64ToBytes(string).length\n          default:\n            if (loweredCase) {\n              return mustMatch ? -1 : utf8ToBytes(string).length\n            }\n            encoding = ('' + encoding).toLowerCase();\n            loweredCase = true;\n        }\n      }\n    }\n    Buffer.byteLength = byteLength;\n    function slowToString (encoding, start, end) {\n      var loweredCase = false;\n      if (start === undefined || start < 0) {\n        start = 0;\n      }\n      if (start > this.length) {\n        return ''\n      }\n      if (end === undefined || end > this.length) {\n        end = this.length;\n      }\n      if (end <= 0) {\n        return ''\n      }\n      end >>>= 0;\n      start >>>= 0;\n      if (end <= start) {\n        return ''\n      }\n      if (!encoding) encoding = 'utf8';\n      while (true) {\n        switch (encoding) {\n          case 'hex':\n            return hexSlice(this, start, end)\n          case 'utf8':\n          case 'utf-8':\n            return utf8Slice(this, start, end)\n          case 'ascii':\n            return asciiSlice(this, start, end)\n          case 'latin1':\n          case 'binary':\n            return latin1Slice(this, start, end)\n          case 'base64':\n            return base64Slice(this, start, end)\n          case 'ucs2':\n          case 'ucs-2':\n          case 'utf16le':\n          case 'utf-16le':\n            return utf16leSlice(this, start, end)\n          default:\n            if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n            encoding = (encoding + '').toLowerCase();\n            loweredCase = true;\n        }\n      }\n    }\n    Buffer.prototype._isBuffer = true;\n    function swap (b, n, m) {\n      var i = b[n];\n      b[n] = b[m];\n      b[m] = i;\n    }\n    Buffer.prototype.swap16 = function swap16 () {\n      var len = this.length;\n      if (len % 2 !== 0) {\n        throw new RangeError('Buffer size must be a multiple of 16-bits')\n      }\n      for (var i = 0; i < len; i += 2) {\n        swap(this, i, i + 1);\n      }\n      return this\n    };\n    Buffer.prototype.swap32 = function swap32 () {\n      var len = this.length;\n      if (len % 4 !== 0) {\n        throw new RangeError('Buffer size must be a multiple of 32-bits')\n      }\n      for (var i = 0; i < len; i += 4) {\n        swap(this, i, i + 3);\n        swap(this, i + 1, i + 2);\n      }\n      return this\n    };\n    Buffer.prototype.swap64 = function swap64 () {\n      var len = this.length;\n      if (len % 8 !== 0) {\n        throw new RangeError('Buffer size must be a multiple of 64-bits')\n      }\n      for (var i = 0; i < len; i += 8) {\n        swap(this, i, i + 7);\n        swap(this, i + 1, i + 6);\n        swap(this, i + 2, i + 5);\n        swap(this, i + 3, i + 4);\n      }\n      return this\n    };\n    Buffer.prototype.toString = function toString () {\n      var length = this.length;\n      if (length === 0) return ''\n      if (arguments.length === 0) return utf8Slice(this, 0, length)\n      return slowToString.apply(this, arguments)\n    };\n    Buffer.prototype.toLocaleString = Buffer.prototype.toString;\n    Buffer.prototype.equals = function equals (b) {\n      if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer')\n      if (this === b) return true\n      return Buffer.compare(this, b) === 0\n    };\n    Buffer.prototype.inspect = function inspect () {\n      var str = '';\n      var max = exports.INSPECT_MAX_BYTES;\n      str = this.toString('hex', 0, max).replace(/(.{2})/g, '$1 ').trim();\n      if (this.length > max) str += ' ... ';\n      return '<Buffer ' + str + '>'\n    };\n    Buffer.prototype.compare = function compare (target, start, end, thisStart, thisEnd) {\n      if (isInstance(target, Uint8Array)) {\n        target = Buffer.from(target, target.offset, target.byteLength);\n      }\n      if (!Buffer.isBuffer(target)) {\n        throw new TypeError(\n          'The \"target\" argument must be one of type Buffer or Uint8Array. ' +\n          'Received type ' + (typeof target)\n        )\n      }\n      if (start === undefined) {\n        start = 0;\n      }\n      if (end === undefined) {\n        end = target ? target.length : 0;\n      }\n      if (thisStart === undefined) {\n        thisStart = 0;\n      }\n      if (thisEnd === undefined) {\n        thisEnd = this.length;\n      }\n      if (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) {\n        throw new RangeError('out of range index')\n      }\n      if (thisStart >= thisEnd && start >= end) {\n        return 0\n      }\n      if (thisStart >= thisEnd) {\n        return -1\n      }\n      if (start >= end) {\n        return 1\n      }\n      start >>>= 0;\n      end >>>= 0;\n      thisStart >>>= 0;\n      thisEnd >>>= 0;\n      if (this === target) return 0\n      var x = thisEnd - thisStart;\n      var y = end - start;\n      var len = Math.min(x, y);\n      var thisCopy = this.slice(thisStart, thisEnd);\n      var targetCopy = target.slice(start, end);\n      for (var i = 0; i < len; ++i) {\n        if (thisCopy[i] !== targetCopy[i]) {\n          x = thisCopy[i];\n          y = targetCopy[i];\n          break\n        }\n      }\n      if (x < y) return -1\n      if (y < x) return 1\n      return 0\n    };\n    function bidirectionalIndexOf (buffer, val, byteOffset, encoding, dir) {\n      if (buffer.length === 0) return -1\n      if (typeof byteOffset === 'string') {\n        encoding = byteOffset;\n        byteOffset = 0;\n      } else if (byteOffset > 0x7fffffff) {\n        byteOffset = 0x7fffffff;\n      } else if (byteOffset < -0x80000000) {\n        byteOffset = -0x80000000;\n      }\n      byteOffset = +byteOffset;\n      if (numberIsNaN(byteOffset)) {\n        byteOffset = dir ? 0 : (buffer.length - 1);\n      }\n      if (byteOffset < 0) byteOffset = buffer.length + byteOffset;\n      if (byteOffset >= buffer.length) {\n        if (dir) return -1\n        else byteOffset = buffer.length - 1;\n      } else if (byteOffset < 0) {\n        if (dir) byteOffset = 0;\n        else return -1\n      }\n      if (typeof val === 'string') {\n        val = Buffer.from(val, encoding);\n      }\n      if (Buffer.isBuffer(val)) {\n        if (val.length === 0) {\n          return -1\n        }\n        return arrayIndexOf(buffer, val, byteOffset, encoding, dir)\n      } else if (typeof val === 'number') {\n        val = val & 0xFF;\n        if (typeof Uint8Array.prototype.indexOf === 'function') {\n          if (dir) {\n            return Uint8Array.prototype.indexOf.call(buffer, val, byteOffset)\n          } else {\n            return Uint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset)\n          }\n        }\n        return arrayIndexOf(buffer, [ val ], byteOffset, encoding, dir)\n      }\n      throw new TypeError('val must be string, number or Buffer')\n    }\n    function arrayIndexOf (arr, val, byteOffset, encoding, dir) {\n      var indexSize = 1;\n      var arrLength = arr.length;\n      var valLength = val.length;\n      if (encoding !== undefined) {\n        encoding = String(encoding).toLowerCase();\n        if (encoding === 'ucs2' || encoding === 'ucs-2' ||\n            encoding === 'utf16le' || encoding === 'utf-16le') {\n          if (arr.length < 2 || val.length < 2) {\n            return -1\n          }\n          indexSize = 2;\n          arrLength /= 2;\n          valLength /= 2;\n          byteOffset /= 2;\n        }\n      }\n      function read (buf, i) {\n        if (indexSize === 1) {\n          return buf[i]\n        } else {\n          return buf.readUInt16BE(i * indexSize)\n        }\n      }\n      var i;\n      if (dir) {\n        var foundIndex = -1;\n        for (i = byteOffset; i < arrLength; i++) {\n          if (read(arr, i) === read(val, foundIndex === -1 ? 0 : i - foundIndex)) {\n            if (foundIndex === -1) foundIndex = i;\n            if (i - foundIndex + 1 === valLength) return foundIndex * indexSize\n          } else {\n            if (foundIndex !== -1) i -= i - foundIndex;\n            foundIndex = -1;\n          }\n        }\n      } else {\n        if (byteOffset + valLength > arrLength) byteOffset = arrLength - valLength;\n        for (i = byteOffset; i >= 0; i--) {\n          var found = true;\n          for (var j = 0; j < valLength; j++) {\n            if (read(arr, i + j) !== read(val, j)) {\n              found = false;\n              break\n            }\n          }\n          if (found) return i\n        }\n      }\n      return -1\n    }\n    Buffer.prototype.includes = function includes (val, byteOffset, encoding) {\n      return this.indexOf(val, byteOffset, encoding) !== -1\n    };\n    Buffer.prototype.indexOf = function indexOf (val, byteOffset, encoding) {\n      return bidirectionalIndexOf(this, val, byteOffset, encoding, true)\n    };\n    Buffer.prototype.lastIndexOf = function lastIndexOf (val, byteOffset, encoding) {\n      return bidirectionalIndexOf(this, val, byteOffset, encoding, false)\n    };\n    function hexWrite (buf, string, offset, length) {\n      offset = Number(offset) || 0;\n      var remaining = buf.length - offset;\n      if (!length) {\n        length = remaining;\n      } else {\n        length = Number(length);\n        if (length > remaining) {\n          length = remaining;\n        }\n      }\n      var strLen = string.length;\n      if (length > strLen / 2) {\n        length = strLen / 2;\n      }\n      for (var i = 0; i < length; ++i) {\n        var parsed = parseInt(string.substr(i * 2, 2), 16);\n        if (numberIsNaN(parsed)) return i\n        buf[offset + i] = parsed;\n      }\n      return i\n    }\n    function utf8Write (buf, string, offset, length) {\n      return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length)\n    }\n    function asciiWrite (buf, string, offset, length) {\n      return blitBuffer(asciiToBytes(string), buf, offset, length)\n    }\n    function latin1Write (buf, string, offset, length) {\n      return asciiWrite(buf, string, offset, length)\n    }\n    function base64Write (buf, string, offset, length) {\n      return blitBuffer(base64ToBytes(string), buf, offset, length)\n    }\n    function ucs2Write (buf, string, offset, length) {\n      return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length)\n    }\n    Buffer.prototype.write = function write (string, offset, length, encoding) {\n      if (offset === undefined) {\n        encoding = 'utf8';\n        length = this.length;\n        offset = 0;\n      } else if (length === undefined && typeof offset === 'string') {\n        encoding = offset;\n        length = this.length;\n        offset = 0;\n      } else if (isFinite(offset)) {\n        offset = offset >>> 0;\n        if (isFinite(length)) {\n          length = length >>> 0;\n          if (encoding === undefined) encoding = 'utf8';\n        } else {\n          encoding = length;\n          length = undefined;\n        }\n      } else {\n        throw new Error(\n          'Buffer.write(string, encoding, offset[, length]) is no longer supported'\n        )\n      }\n      var remaining = this.length - offset;\n      if (length === undefined || length > remaining) length = remaining;\n      if ((string.length > 0 && (length < 0 || offset < 0)) || offset > this.length) {\n        throw new RangeError('Attempt to write outside buffer bounds')\n      }\n      if (!encoding) encoding = 'utf8';\n      var loweredCase = false;\n      for (;;) {\n        switch (encoding) {\n          case 'hex':\n            return hexWrite(this, string, offset, length)\n          case 'utf8':\n          case 'utf-8':\n            return utf8Write(this, string, offset, length)\n          case 'ascii':\n            return asciiWrite(this, string, offset, length)\n          case 'latin1':\n          case 'binary':\n            return latin1Write(this, string, offset, length)\n          case 'base64':\n            return base64Write(this, string, offset, length)\n          case 'ucs2':\n          case 'ucs-2':\n          case 'utf16le':\n          case 'utf-16le':\n            return ucs2Write(this, string, offset, length)\n          default:\n            if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n            encoding = ('' + encoding).toLowerCase();\n            loweredCase = true;\n        }\n      }\n    };\n    Buffer.prototype.toJSON = function toJSON () {\n      return {\n        type: 'Buffer',\n        data: Array.prototype.slice.call(this._arr || this, 0)\n      }\n    };\n    function base64Slice (buf, start, end) {\n      if (start === 0 && end === buf.length) {\n        return base64.fromByteArray(buf)\n      } else {\n        return base64.fromByteArray(buf.slice(start, end))\n      }\n    }\n    function utf8Slice (buf, start, end) {\n      end = Math.min(buf.length, end);\n      var res = [];\n      var i = start;\n      while (i < end) {\n        var firstByte = buf[i];\n        var codePoint = null;\n        var bytesPerSequence = (firstByte > 0xEF) ? 4\n          : (firstByte > 0xDF) ? 3\n            : (firstByte > 0xBF) ? 2\n              : 1;\n        if (i + bytesPerSequence <= end) {\n          var secondByte, thirdByte, fourthByte, tempCodePoint;\n          switch (bytesPerSequence) {\n            case 1:\n              if (firstByte < 0x80) {\n                codePoint = firstByte;\n              }\n              break\n            case 2:\n              secondByte = buf[i + 1];\n              if ((secondByte & 0xC0) === 0x80) {\n                tempCodePoint = (firstByte & 0x1F) << 0x6 | (secondByte & 0x3F);\n                if (tempCodePoint > 0x7F) {\n                  codePoint = tempCodePoint;\n                }\n              }\n              break\n            case 3:\n              secondByte = buf[i + 1];\n              thirdByte = buf[i + 2];\n              if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) {\n                tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | (thirdByte & 0x3F);\n                if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) {\n                  codePoint = tempCodePoint;\n                }\n              }\n              break\n            case 4:\n              secondByte = buf[i + 1];\n              thirdByte = buf[i + 2];\n              fourthByte = buf[i + 3];\n              if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) {\n                tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | (fourthByte & 0x3F);\n                if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) {\n                  codePoint = tempCodePoint;\n                }\n              }\n          }\n        }\n        if (codePoint === null) {\n          codePoint = 0xFFFD;\n          bytesPerSequence = 1;\n        } else if (codePoint > 0xFFFF) {\n          codePoint -= 0x10000;\n          res.push(codePoint >>> 10 & 0x3FF | 0xD800);\n          codePoint = 0xDC00 | codePoint & 0x3FF;\n        }\n        res.push(codePoint);\n        i += bytesPerSequence;\n      }\n      return decodeCodePointsArray(res)\n    }\n    var MAX_ARGUMENTS_LENGTH = 0x1000;\n    function decodeCodePointsArray (codePoints) {\n      var len = codePoints.length;\n      if (len <= MAX_ARGUMENTS_LENGTH) {\n        return String.fromCharCode.apply(String, codePoints)\n      }\n      var res = '';\n      var i = 0;\n      while (i < len) {\n        res += String.fromCharCode.apply(\n          String,\n          codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH)\n        );\n      }\n      return res\n    }\n    function asciiSlice (buf, start, end) {\n      var ret = '';\n      end = Math.min(buf.length, end);\n      for (var i = start; i < end; ++i) {\n        ret += String.fromCharCode(buf[i] & 0x7F);\n      }\n      return ret\n    }\n    function latin1Slice (buf, start, end) {\n      var ret = '';\n      end = Math.min(buf.length, end);\n      for (var i = start; i < end; ++i) {\n        ret += String.fromCharCode(buf[i]);\n      }\n      return ret\n    }\n    function hexSlice (buf, start, end) {\n      var len = buf.length;\n      if (!start || start < 0) start = 0;\n      if (!end || end < 0 || end > len) end = len;\n      var out = '';\n      for (var i = start; i < end; ++i) {\n        out += toHex(buf[i]);\n      }\n      return out\n    }\n    function utf16leSlice (buf, start, end) {\n      var bytes = buf.slice(start, end);\n      var res = '';\n      for (var i = 0; i < bytes.length; i += 2) {\n        res += String.fromCharCode(bytes[i] + (bytes[i + 1] * 256));\n      }\n      return res\n    }\n    Buffer.prototype.slice = function slice (start, end) {\n      var len = this.length;\n      start = ~~start;\n      end = end === undefined ? len : ~~end;\n      if (start < 0) {\n        start += len;\n        if (start < 0) start = 0;\n      } else if (start > len) {\n        start = len;\n      }\n      if (end < 0) {\n        end += len;\n        if (end < 0) end = 0;\n      } else if (end > len) {\n        end = len;\n      }\n      if (end < start) end = start;\n      var newBuf = this.subarray(start, end);\n      newBuf.__proto__ = Buffer.prototype;\n      return newBuf\n    };\n    function checkOffset (offset, ext, length) {\n      if ((offset % 1) !== 0 || offset < 0) throw new RangeError('offset is not uint')\n      if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length')\n    }\n    Buffer.prototype.readUIntLE = function readUIntLE (offset, byteLength, noAssert) {\n      offset = offset >>> 0;\n      byteLength = byteLength >>> 0;\n      if (!noAssert) checkOffset(offset, byteLength, this.length);\n      var val = this[offset];\n      var mul = 1;\n      var i = 0;\n      while (++i < byteLength && (mul *= 0x100)) {\n        val += this[offset + i] * mul;\n      }\n      return val\n    };\n    Buffer.prototype.readUIntBE = function readUIntBE (offset, byteLength, noAssert) {\n      offset = offset >>> 0;\n      byteLength = byteLength >>> 0;\n      if (!noAssert) {\n        checkOffset(offset, byteLength, this.length);\n      }\n      var val = this[offset + --byteLength];\n      var mul = 1;\n      while (byteLength > 0 && (mul *= 0x100)) {\n        val += this[offset + --byteLength] * mul;\n      }\n      return val\n    };\n    Buffer.prototype.readUInt8 = function readUInt8 (offset, noAssert) {\n      offset = offset >>> 0;\n      if (!noAssert) checkOffset(offset, 1, this.length);\n      return this[offset]\n    };\n    Buffer.prototype.readUInt16LE = function readUInt16LE (offset, noAssert) {\n      offset = offset >>> 0;\n      if (!noAssert) checkOffset(offset, 2, this.length);\n      return this[offset] | (this[offset + 1] << 8)\n    };\n    Buffer.prototype.readUInt16BE = function readUInt16BE (offset, noAssert) {\n      offset = offset >>> 0;\n      if (!noAssert) checkOffset(offset, 2, this.length);\n      return (this[offset] << 8) | this[offset + 1]\n    };\n    Buffer.prototype.readUInt32LE = function readUInt32LE (offset, noAssert) {\n      offset = offset >>> 0;\n      if (!noAssert) checkOffset(offset, 4, this.length);\n      return ((this[offset]) |\n          (this[offset + 1] << 8) |\n          (this[offset + 2] << 16)) +\n          (this[offset + 3] * 0x1000000)\n    };\n    Buffer.prototype.readUInt32BE = function readUInt32BE (offset, noAssert) {\n      offset = offset >>> 0;\n      if (!noAssert) checkOffset(offset, 4, this.length);\n      return (this[offset] * 0x1000000) +\n        ((this[offset + 1] << 16) |\n        (this[offset + 2] << 8) |\n        this[offset + 3])\n    };\n    Buffer.prototype.readIntLE = function readIntLE (offset, byteLength, noAssert) {\n      offset = offset >>> 0;\n      byteLength = byteLength >>> 0;\n      if (!noAssert) checkOffset(offset, byteLength, this.length);\n      var val = this[offset];\n      var mul = 1;\n      var i = 0;\n      while (++i < byteLength && (mul *= 0x100)) {\n        val += this[offset + i] * mul;\n      }\n      mul *= 0x80;\n      if (val >= mul) val -= Math.pow(2, 8 * byteLength);\n      return val\n    };\n    Buffer.prototype.readIntBE = function readIntBE (offset, byteLength, noAssert) {\n      offset = offset >>> 0;\n      byteLength = byteLength >>> 0;\n      if (!noAssert) checkOffset(offset, byteLength, this.length);\n      var i = byteLength;\n      var mul = 1;\n      var val = this[offset + --i];\n      while (i > 0 && (mul *= 0x100)) {\n        val += this[offset + --i] * mul;\n      }\n      mul *= 0x80;\n      if (val >= mul) val -= Math.pow(2, 8 * byteLength);\n      return val\n    };\n    Buffer.prototype.readInt8 = function readInt8 (offset, noAssert) {\n      offset = offset >>> 0;\n      if (!noAssert) checkOffset(offset, 1, this.length);\n      if (!(this[offset] & 0x80)) return (this[offset])\n      return ((0xff - this[offset] + 1) * -1)\n    };\n    Buffer.prototype.readInt16LE = function readInt16LE (offset, noAssert) {\n      offset = offset >>> 0;\n      if (!noAssert) checkOffset(offset, 2, this.length);\n      var val = this[offset] | (this[offset + 1] << 8);\n      return (val & 0x8000) ? val | 0xFFFF0000 : val\n    };\n    Buffer.prototype.readInt16BE = function readInt16BE (offset, noAssert) {\n      offset = offset >>> 0;\n      if (!noAssert) checkOffset(offset, 2, this.length);\n      var val = this[offset + 1] | (this[offset] << 8);\n      return (val & 0x8000) ? val | 0xFFFF0000 : val\n    };\n    Buffer.prototype.readInt32LE = function readInt32LE (offset, noAssert) {\n      offset = offset >>> 0;\n      if (!noAssert) checkOffset(offset, 4, this.length);\n      return (this[offset]) |\n        (this[offset + 1] << 8) |\n        (this[offset + 2] << 16) |\n        (this[offset + 3] << 24)\n    };\n    Buffer.prototype.readInt32BE = function readInt32BE (offset, noAssert) {\n      offset = offset >>> 0;\n      if (!noAssert) checkOffset(offset, 4, this.length);\n      return (this[offset] << 24) |\n        (this[offset + 1] << 16) |\n        (this[offset + 2] << 8) |\n        (this[offset + 3])\n    };\n    Buffer.prototype.readFloatLE = function readFloatLE (offset, noAssert) {\n      offset = offset >>> 0;\n      if (!noAssert) checkOffset(offset, 4, this.length);\n      return ieee754.read(this, offset, true, 23, 4)\n    };\n    Buffer.prototype.readFloatBE = function readFloatBE (offset, noAssert) {\n      offset = offset >>> 0;\n      if (!noAssert) checkOffset(offset, 4, this.length);\n      return ieee754.read(this, offset, false, 23, 4)\n    };\n    Buffer.prototype.readDoubleLE = function readDoubleLE (offset, noAssert) {\n      offset = offset >>> 0;\n      if (!noAssert) checkOffset(offset, 8, this.length);\n      return ieee754.read(this, offset, true, 52, 8)\n    };\n    Buffer.prototype.readDoubleBE = function readDoubleBE (offset, noAssert) {\n      offset = offset >>> 0;\n      if (!noAssert) checkOffset(offset, 8, this.length);\n      return ieee754.read(this, offset, false, 52, 8)\n    };\n    function checkInt (buf, value, offset, ext, max, min) {\n      if (!Buffer.isBuffer(buf)) throw new TypeError('\"buffer\" argument must be a Buffer instance')\n      if (value > max || value < min) throw new RangeError('\"value\" argument is out of bounds')\n      if (offset + ext > buf.length) throw new RangeError('Index out of range')\n    }\n    Buffer.prototype.writeUIntLE = function writeUIntLE (value, offset, byteLength, noAssert) {\n      value = +value;\n      offset = offset >>> 0;\n      byteLength = byteLength >>> 0;\n      if (!noAssert) {\n        var maxBytes = Math.pow(2, 8 * byteLength) - 1;\n        checkInt(this, value, offset, byteLength, maxBytes, 0);\n      }\n      var mul = 1;\n      var i = 0;\n      this[offset] = value & 0xFF;\n      while (++i < byteLength && (mul *= 0x100)) {\n        this[offset + i] = (value / mul) & 0xFF;\n      }\n      return offset + byteLength\n    };\n    Buffer.prototype.writeUIntBE = function writeUIntBE (value, offset, byteLength, noAssert) {\n      value = +value;\n      offset = offset >>> 0;\n      byteLength = byteLength >>> 0;\n      if (!noAssert) {\n        var maxBytes = Math.pow(2, 8 * byteLength) - 1;\n        checkInt(this, value, offset, byteLength, maxBytes, 0);\n      }\n      var i = byteLength - 1;\n      var mul = 1;\n      this[offset + i] = value & 0xFF;\n      while (--i >= 0 && (mul *= 0x100)) {\n        this[offset + i] = (value / mul) & 0xFF;\n      }\n      return offset + byteLength\n    };\n    Buffer.prototype.writeUInt8 = function writeUInt8 (value, offset, noAssert) {\n      value = +value;\n      offset = offset >>> 0;\n      if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0);\n      this[offset] = (value & 0xff);\n      return offset + 1\n    };\n    Buffer.prototype.writeUInt16LE = function writeUInt16LE (value, offset, noAssert) {\n      value = +value;\n      offset = offset >>> 0;\n      if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0);\n      this[offset] = (value & 0xff);\n      this[offset + 1] = (value >>> 8);\n      return offset + 2\n    };\n    Buffer.prototype.writeUInt16BE = function writeUInt16BE (value, offset, noAssert) {\n      value = +value;\n      offset = offset >>> 0;\n      if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0);\n      this[offset] = (value >>> 8);\n      this[offset + 1] = (value & 0xff);\n      return offset + 2\n    };\n    Buffer.prototype.writeUInt32LE = function writeUInt32LE (value, offset, noAssert) {\n      value = +value;\n      offset = offset >>> 0;\n      if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0);\n      this[offset + 3] = (value >>> 24);\n      this[offset + 2] = (value >>> 16);\n      this[offset + 1] = (value >>> 8);\n      this[offset] = (value & 0xff);\n      return offset + 4\n    };\n    Buffer.prototype.writeUInt32BE = function writeUInt32BE (value, offset, noAssert) {\n      value = +value;\n      offset = offset >>> 0;\n      if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0);\n      this[offset] = (value >>> 24);\n      this[offset + 1] = (value >>> 16);\n      this[offset + 2] = (value >>> 8);\n      this[offset + 3] = (value & 0xff);\n      return offset + 4\n    };\n    Buffer.prototype.writeIntLE = function writeIntLE (value, offset, byteLength, noAssert) {\n      value = +value;\n      offset = offset >>> 0;\n      if (!noAssert) {\n        var limit = Math.pow(2, (8 * byteLength) - 1);\n        checkInt(this, value, offset, byteLength, limit - 1, -limit);\n      }\n      var i = 0;\n      var mul = 1;\n      var sub = 0;\n      this[offset] = value & 0xFF;\n      while (++i < byteLength && (mul *= 0x100)) {\n        if (value < 0 && sub === 0 && this[offset + i - 1] !== 0) {\n          sub = 1;\n        }\n        this[offset + i] = ((value / mul) >> 0) - sub & 0xFF;\n      }\n      return offset + byteLength\n    };\n    Buffer.prototype.writeIntBE = function writeIntBE (value, offset, byteLength, noAssert) {\n      value = +value;\n      offset = offset >>> 0;\n      if (!noAssert) {\n        var limit = Math.pow(2, (8 * byteLength) - 1);\n        checkInt(this, value, offset, byteLength, limit - 1, -limit);\n      }\n      var i = byteLength - 1;\n      var mul = 1;\n      var sub = 0;\n      this[offset + i] = value & 0xFF;\n      while (--i >= 0 && (mul *= 0x100)) {\n        if (value < 0 && sub === 0 && this[offset + i + 1] !== 0) {\n          sub = 1;\n        }\n        this[offset + i] = ((value / mul) >> 0) - sub & 0xFF;\n      }\n      return offset + byteLength\n    };\n    Buffer.prototype.writeInt8 = function writeInt8 (value, offset, noAssert) {\n      value = +value;\n      offset = offset >>> 0;\n      if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -0x80);\n      if (value < 0) value = 0xff + value + 1;\n      this[offset] = (value & 0xff);\n      return offset + 1\n    };\n    Buffer.prototype.writeInt16LE = function writeInt16LE (value, offset, noAssert) {\n      value = +value;\n      offset = offset >>> 0;\n      if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000);\n      this[offset] = (value & 0xff);\n      this[offset + 1] = (value >>> 8);\n      return offset + 2\n    };\n    Buffer.prototype.writeInt16BE = function writeInt16BE (value, offset, noAssert) {\n      value = +value;\n      offset = offset >>> 0;\n      if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000);\n      this[offset] = (value >>> 8);\n      this[offset + 1] = (value & 0xff);\n      return offset + 2\n    };\n    Buffer.prototype.writeInt32LE = function writeInt32LE (value, offset, noAssert) {\n      value = +value;\n      offset = offset >>> 0;\n      if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000);\n      this[offset] = (value & 0xff);\n      this[offset + 1] = (value >>> 8);\n      this[offset + 2] = (value >>> 16);\n      this[offset + 3] = (value >>> 24);\n      return offset + 4\n    };\n    Buffer.prototype.writeInt32BE = function writeInt32BE (value, offset, noAssert) {\n      value = +value;\n      offset = offset >>> 0;\n      if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000);\n      if (value < 0) value = 0xffffffff + value + 1;\n      this[offset] = (value >>> 24);\n      this[offset + 1] = (value >>> 16);\n      this[offset + 2] = (value >>> 8);\n      this[offset + 3] = (value & 0xff);\n      return offset + 4\n    };\n    function checkIEEE754 (buf, value, offset, ext, max, min) {\n      if (offset + ext > buf.length) throw new RangeError('Index out of range')\n      if (offset < 0) throw new RangeError('Index out of range')\n    }\n    function writeFloat (buf, value, offset, littleEndian, noAssert) {\n      value = +value;\n      offset = offset >>> 0;\n      if (!noAssert) {\n        checkIEEE754(buf, value, offset, 4);\n      }\n      ieee754.write(buf, value, offset, littleEndian, 23, 4);\n      return offset + 4\n    }\n    Buffer.prototype.writeFloatLE = function writeFloatLE (value, offset, noAssert) {\n      return writeFloat(this, value, offset, true, noAssert)\n    };\n    Buffer.prototype.writeFloatBE = function writeFloatBE (value, offset, noAssert) {\n      return writeFloat(this, value, offset, false, noAssert)\n    };\n    function writeDouble (buf, value, offset, littleEndian, noAssert) {\n      value = +value;\n      offset = offset >>> 0;\n      if (!noAssert) {\n        checkIEEE754(buf, value, offset, 8);\n      }\n      ieee754.write(buf, value, offset, littleEndian, 52, 8);\n      return offset + 8\n    }\n    Buffer.prototype.writeDoubleLE = function writeDoubleLE (value, offset, noAssert) {\n      return writeDouble(this, value, offset, true, noAssert)\n    };\n    Buffer.prototype.writeDoubleBE = function writeDoubleBE (value, offset, noAssert) {\n      return writeDouble(this, value, offset, false, noAssert)\n    };\n    Buffer.prototype.copy = function copy (target, targetStart, start, end) {\n      if (!Buffer.isBuffer(target)) throw new TypeError('argument should be a Buffer')\n      if (!start) start = 0;\n      if (!end && end !== 0) end = this.length;\n      if (targetStart >= target.length) targetStart = target.length;\n      if (!targetStart) targetStart = 0;\n      if (end > 0 && end < start) end = start;\n      if (end === start) return 0\n      if (target.length === 0 || this.length === 0) return 0\n      if (targetStart < 0) {\n        throw new RangeError('targetStart out of bounds')\n      }\n      if (start < 0 || start >= this.length) throw new RangeError('Index out of range')\n      if (end < 0) throw new RangeError('sourceEnd out of bounds')\n      if (end > this.length) end = this.length;\n      if (target.length - targetStart < end - start) {\n        end = target.length - targetStart + start;\n      }\n      var len = end - start;\n      if (this === target && typeof Uint8Array.prototype.copyWithin === 'function') {\n        this.copyWithin(targetStart, start, end);\n      } else if (this === target && start < targetStart && targetStart < end) {\n        for (var i = len - 1; i >= 0; --i) {\n          target[i + targetStart] = this[i + start];\n        }\n      } else {\n        Uint8Array.prototype.set.call(\n          target,\n          this.subarray(start, end),\n          targetStart\n        );\n      }\n      return len\n    };\n    Buffer.prototype.fill = function fill (val, start, end, encoding) {\n      if (typeof val === 'string') {\n        if (typeof start === 'string') {\n          encoding = start;\n          start = 0;\n          end = this.length;\n        } else if (typeof end === 'string') {\n          encoding = end;\n          end = this.length;\n        }\n        if (encoding !== undefined && typeof encoding !== 'string') {\n          throw new TypeError('encoding must be a string')\n        }\n        if (typeof encoding === 'string' && !Buffer.isEncoding(encoding)) {\n          throw new TypeError('Unknown encoding: ' + encoding)\n        }\n        if (val.length === 1) {\n          var code = val.charCodeAt(0);\n          if ((encoding === 'utf8' && code < 128) ||\n              encoding === 'latin1') {\n            val = code;\n          }\n        }\n      } else if (typeof val === 'number') {\n        val = val & 255;\n      }\n      if (start < 0 || this.length < start || this.length < end) {\n        throw new RangeError('Out of range index')\n      }\n      if (end <= start) {\n        return this\n      }\n      start = start >>> 0;\n      end = end === undefined ? this.length : end >>> 0;\n      if (!val) val = 0;\n      var i;\n      if (typeof val === 'number') {\n        for (i = start; i < end; ++i) {\n          this[i] = val;\n        }\n      } else {\n        var bytes = Buffer.isBuffer(val)\n          ? val\n          : Buffer.from(val, encoding);\n        var len = bytes.length;\n        if (len === 0) {\n          throw new TypeError('The value \"' + val +\n            '\" is invalid for argument \"value\"')\n        }\n        for (i = 0; i < end - start; ++i) {\n          this[i + start] = bytes[i % len];\n        }\n      }\n      return this\n    };\n    var INVALID_BASE64_RE = /[^+/0-9A-Za-z-_]/g;\n    function base64clean (str) {\n      str = str.split('=')[0];\n      str = str.trim().replace(INVALID_BASE64_RE, '');\n      if (str.length < 2) return ''\n      while (str.length % 4 !== 0) {\n        str = str + '=';\n      }\n      return str\n    }\n    function toHex (n) {\n      if (n < 16) return '0' + n.toString(16)\n      return n.toString(16)\n    }\n    function utf8ToBytes (string, units) {\n      units = units || Infinity;\n      var codePoint;\n      var length = string.length;\n      var leadSurrogate = null;\n      var bytes = [];\n      for (var i = 0; i < length; ++i) {\n        codePoint = string.charCodeAt(i);\n        if (codePoint > 0xD7FF && codePoint < 0xE000) {\n          if (!leadSurrogate) {\n            if (codePoint > 0xDBFF) {\n              if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD);\n              continue\n            } else if (i + 1 === length) {\n              if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD);\n              continue\n            }\n            leadSurrogate = codePoint;\n            continue\n          }\n          if (codePoint < 0xDC00) {\n            if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD);\n            leadSurrogate = codePoint;\n            continue\n          }\n          codePoint = (leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00) + 0x10000;\n        } else if (leadSurrogate) {\n          if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD);\n        }\n        leadSurrogate = null;\n        if (codePoint < 0x80) {\n          if ((units -= 1) < 0) break\n          bytes.push(codePoint);\n        } else if (codePoint < 0x800) {\n          if ((units -= 2) < 0) break\n          bytes.push(\n            codePoint >> 0x6 | 0xC0,\n            codePoint & 0x3F | 0x80\n          );\n        } else if (codePoint < 0x10000) {\n          if ((units -= 3) < 0) break\n          bytes.push(\n            codePoint >> 0xC | 0xE0,\n            codePoint >> 0x6 & 0x3F | 0x80,\n            codePoint & 0x3F | 0x80\n          );\n        } else if (codePoint < 0x110000) {\n          if ((units -= 4) < 0) break\n          bytes.push(\n            codePoint >> 0x12 | 0xF0,\n            codePoint >> 0xC & 0x3F | 0x80,\n            codePoint >> 0x6 & 0x3F | 0x80,\n            codePoint & 0x3F | 0x80\n          );\n        } else {\n          throw new Error('Invalid code point')\n        }\n      }\n      return bytes\n    }\n    function asciiToBytes (str) {\n      var byteArray = [];\n      for (var i = 0; i < str.length; ++i) {\n        byteArray.push(str.charCodeAt(i) & 0xFF);\n      }\n      return byteArray\n    }\n    function utf16leToBytes (str, units) {\n      var c, hi, lo;\n      var byteArray = [];\n      for (var i = 0; i < str.length; ++i) {\n        if ((units -= 2) < 0) break\n        c = str.charCodeAt(i);\n        hi = c >> 8;\n        lo = c % 256;\n        byteArray.push(lo);\n        byteArray.push(hi);\n      }\n      return byteArray\n    }\n    function base64ToBytes (str) {\n      return base64.toByteArray(base64clean(str))\n    }\n    function blitBuffer (src, dst, offset, length) {\n      for (var i = 0; i < length; ++i) {\n        if ((i + offset >= dst.length) || (i >= src.length)) break\n        dst[i + offset] = src[i];\n      }\n      return i\n    }\n    function isInstance (obj, type) {\n      return obj instanceof type ||\n        (obj != null && obj.constructor != null && obj.constructor.name != null &&\n          obj.constructor.name === type.name)\n    }\n    function numberIsNaN (obj) {\n      return obj !== obj\n    }\n    },{\"base64-js\":24,\"ieee754\":31}],29:[function(require,module,exports){\n    (function (Buffer){\n    function isArray(arg) {\n      if (Array.isArray) {\n        return Array.isArray(arg);\n      }\n      return objectToString(arg) === '[object Array]';\n    }\n    exports.isArray = isArray;\n    function isBoolean(arg) {\n      return typeof arg === 'boolean';\n    }\n    exports.isBoolean = isBoolean;\n    function isNull(arg) {\n      return arg === null;\n    }\n    exports.isNull = isNull;\n    function isNullOrUndefined(arg) {\n      return arg == null;\n    }\n    exports.isNullOrUndefined = isNullOrUndefined;\n    function isNumber(arg) {\n      return typeof arg === 'number';\n    }\n    exports.isNumber = isNumber;\n    function isString(arg) {\n      return typeof arg === 'string';\n    }\n    exports.isString = isString;\n    function isSymbol(arg) {\n      return typeof arg === 'symbol';\n    }\n    exports.isSymbol = isSymbol;\n    function isUndefined(arg) {\n      return arg === void 0;\n    }\n    exports.isUndefined = isUndefined;\n    function isRegExp(re) {\n      return objectToString(re) === '[object RegExp]';\n    }\n    exports.isRegExp = isRegExp;\n    function isObject(arg) {\n      return typeof arg === 'object' && arg !== null;\n    }\n    exports.isObject = isObject;\n    function isDate(d) {\n      return objectToString(d) === '[object Date]';\n    }\n    exports.isDate = isDate;\n    function isError(e) {\n      return (objectToString(e) === '[object Error]' || e instanceof Error);\n    }\n    exports.isError = isError;\n    function isFunction(arg) {\n      return typeof arg === 'function';\n    }\n    exports.isFunction = isFunction;\n    function isPrimitive(arg) {\n      return arg === null ||\n             typeof arg === 'boolean' ||\n             typeof arg === 'number' ||\n             typeof arg === 'string' ||\n             typeof arg === 'symbol' ||\n             typeof arg === 'undefined';\n    }\n    exports.isPrimitive = isPrimitive;\n    exports.isBuffer = Buffer.isBuffer;\n    function objectToString(o) {\n      return Object.prototype.toString.call(o);\n    }\n    }).call(this,{\"isBuffer\":require(\"../../is-buffer/index.js\")});\n    },{\"../../is-buffer/index.js\":33}],30:[function(require,module,exports){\n    var objectCreate = Object.create || objectCreatePolyfill;\n    var objectKeys = Object.keys || objectKeysPolyfill;\n    var bind = Function.prototype.bind || functionBindPolyfill;\n    function EventEmitter() {\n      if (!this._events || !Object.prototype.hasOwnProperty.call(this, '_events')) {\n        this._events = objectCreate(null);\n        this._eventsCount = 0;\n      }\n      this._maxListeners = this._maxListeners || undefined;\n    }\n    module.exports = EventEmitter;\n    EventEmitter.EventEmitter = EventEmitter;\n    EventEmitter.prototype._events = undefined;\n    EventEmitter.prototype._maxListeners = undefined;\n    var defaultMaxListeners = 10;\n    var hasDefineProperty;\n    try {\n      var o = {};\n      if (Object.defineProperty) Object.defineProperty(o, 'x', { value: 0 });\n      hasDefineProperty = o.x === 0;\n    } catch (err) { hasDefineProperty = false; }\n    if (hasDefineProperty) {\n      Object.defineProperty(EventEmitter, 'defaultMaxListeners', {\n        enumerable: true,\n        get: function() {\n          return defaultMaxListeners;\n        },\n        set: function(arg) {\n          if (typeof arg !== 'number' || arg < 0 || arg !== arg)\n            throw new TypeError('\"defaultMaxListeners\" must be a positive number');\n          defaultMaxListeners = arg;\n        }\n      });\n    } else {\n      EventEmitter.defaultMaxListeners = defaultMaxListeners;\n    }\n    EventEmitter.prototype.setMaxListeners = function setMaxListeners(n) {\n      if (typeof n !== 'number' || n < 0 || isNaN(n))\n        throw new TypeError('\"n\" argument must be a positive number');\n      this._maxListeners = n;\n      return this;\n    };\n    function $getMaxListeners(that) {\n      if (that._maxListeners === undefined)\n        return EventEmitter.defaultMaxListeners;\n      return that._maxListeners;\n    }\n    EventEmitter.prototype.getMaxListeners = function getMaxListeners() {\n      return $getMaxListeners(this);\n    };\n    function emitNone(handler, isFn, self) {\n      if (isFn)\n        handler.call(self);\n      else {\n        var len = handler.length;\n        var listeners = arrayClone(handler, len);\n        for (var i = 0; i < len; ++i)\n          listeners[i].call(self);\n      }\n    }\n    function emitOne(handler, isFn, self, arg1) {\n      if (isFn)\n        handler.call(self, arg1);\n      else {\n        var len = handler.length;\n        var listeners = arrayClone(handler, len);\n        for (var i = 0; i < len; ++i)\n          listeners[i].call(self, arg1);\n      }\n    }\n    function emitTwo(handler, isFn, self, arg1, arg2) {\n      if (isFn)\n        handler.call(self, arg1, arg2);\n      else {\n        var len = handler.length;\n        var listeners = arrayClone(handler, len);\n        for (var i = 0; i < len; ++i)\n          listeners[i].call(self, arg1, arg2);\n      }\n    }\n    function emitThree(handler, isFn, self, arg1, arg2, arg3) {\n      if (isFn)\n        handler.call(self, arg1, arg2, arg3);\n      else {\n        var len = handler.length;\n        var listeners = arrayClone(handler, len);\n        for (var i = 0; i < len; ++i)\n          listeners[i].call(self, arg1, arg2, arg3);\n      }\n    }\n    function emitMany(handler, isFn, self, args) {\n      if (isFn)\n        handler.apply(self, args);\n      else {\n        var len = handler.length;\n        var listeners = arrayClone(handler, len);\n        for (var i = 0; i < len; ++i)\n          listeners[i].apply(self, args);\n      }\n    }\n    EventEmitter.prototype.emit = function emit(type) {\n      var er, handler, len, args, i, events;\n      var doError = (type === 'error');\n      events = this._events;\n      if (events)\n        doError = (doError && events.error == null);\n      else if (!doError)\n        return false;\n      if (doError) {\n        if (arguments.length > 1)\n          er = arguments[1];\n        if (er instanceof Error) {\n          throw er;\n        } else {\n          var err = new Error('Unhandled \"error\" event. (' + er + ')');\n          err.context = er;\n          throw err;\n        }\n      }\n      handler = events[type];\n      if (!handler)\n        return false;\n      var isFn = typeof handler === 'function';\n      len = arguments.length;\n      switch (len) {\n        case 1:\n          emitNone(handler, isFn, this);\n          break;\n        case 2:\n          emitOne(handler, isFn, this, arguments[1]);\n          break;\n        case 3:\n          emitTwo(handler, isFn, this, arguments[1], arguments[2]);\n          break;\n        case 4:\n          emitThree(handler, isFn, this, arguments[1], arguments[2], arguments[3]);\n          break;\n        default:\n          args = new Array(len - 1);\n          for (i = 1; i < len; i++)\n            args[i - 1] = arguments[i];\n          emitMany(handler, isFn, this, args);\n      }\n      return true;\n    };\n    function _addListener(target, type, listener, prepend) {\n      var m;\n      var events;\n      var existing;\n      if (typeof listener !== 'function')\n        throw new TypeError('\"listener\" argument must be a function');\n      events = target._events;\n      if (!events) {\n        events = target._events = objectCreate(null);\n        target._eventsCount = 0;\n      } else {\n        if (events.newListener) {\n          target.emit('newListener', type,\n              listener.listener ? listener.listener : listener);\n          events = target._events;\n        }\n        existing = events[type];\n      }\n      if (!existing) {\n        existing = events[type] = listener;\n        ++target._eventsCount;\n      } else {\n        if (typeof existing === 'function') {\n          existing = events[type] =\n              prepend ? [listener, existing] : [existing, listener];\n        } else {\n          if (prepend) {\n            existing.unshift(listener);\n          } else {\n            existing.push(listener);\n          }\n        }\n        if (!existing.warned) {\n          m = $getMaxListeners(target);\n          if (m && m > 0 && existing.length > m) {\n            existing.warned = true;\n            var w = new Error('Possible EventEmitter memory leak detected. ' +\n                existing.length + ' \"' + String(type) + '\" listeners ' +\n                'added. Use emitter.setMaxListeners() to ' +\n                'increase limit.');\n            w.name = 'MaxListenersExceededWarning';\n            w.emitter = target;\n            w.type = type;\n            w.count = existing.length;\n            if (typeof console === 'object' && console.warn) {\n              console.warn('%s: %s', w.name, w.message);\n            }\n          }\n        }\n      }\n      return target;\n    }\n    EventEmitter.prototype.addListener = function addListener(type, listener) {\n      return _addListener(this, type, listener, false);\n    };\n    EventEmitter.prototype.on = EventEmitter.prototype.addListener;\n    EventEmitter.prototype.prependListener =\n        function prependListener(type, listener) {\n          return _addListener(this, type, listener, true);\n        };\n    function onceWrapper() {\n      if (!this.fired) {\n        this.target.removeListener(this.type, this.wrapFn);\n        this.fired = true;\n        switch (arguments.length) {\n          case 0:\n            return this.listener.call(this.target);\n          case 1:\n            return this.listener.call(this.target, arguments[0]);\n          case 2:\n            return this.listener.call(this.target, arguments[0], arguments[1]);\n          case 3:\n            return this.listener.call(this.target, arguments[0], arguments[1],\n                arguments[2]);\n          default:\n            var args = new Array(arguments.length);\n            for (var i = 0; i < args.length; ++i)\n              args[i] = arguments[i];\n            this.listener.apply(this.target, args);\n        }\n      }\n    }\n    function _onceWrap(target, type, listener) {\n      var state = { fired: false, wrapFn: undefined, target: target, type: type, listener: listener };\n      var wrapped = bind.call(onceWrapper, state);\n      wrapped.listener = listener;\n      state.wrapFn = wrapped;\n      return wrapped;\n    }\n    EventEmitter.prototype.once = function once(type, listener) {\n      if (typeof listener !== 'function')\n        throw new TypeError('\"listener\" argument must be a function');\n      this.on(type, _onceWrap(this, type, listener));\n      return this;\n    };\n    EventEmitter.prototype.prependOnceListener =\n        function prependOnceListener(type, listener) {\n          if (typeof listener !== 'function')\n            throw new TypeError('\"listener\" argument must be a function');\n          this.prependListener(type, _onceWrap(this, type, listener));\n          return this;\n        };\n    EventEmitter.prototype.removeListener =\n        function removeListener(type, listener) {\n          var list, events, position, i, originalListener;\n          if (typeof listener !== 'function')\n            throw new TypeError('\"listener\" argument must be a function');\n          events = this._events;\n          if (!events)\n            return this;\n          list = events[type];\n          if (!list)\n            return this;\n          if (list === listener || list.listener === listener) {\n            if (--this._eventsCount === 0)\n              this._events = objectCreate(null);\n            else {\n              delete events[type];\n              if (events.removeListener)\n                this.emit('removeListener', type, list.listener || listener);\n            }\n          } else if (typeof list !== 'function') {\n            position = -1;\n            for (i = list.length - 1; i >= 0; i--) {\n              if (list[i] === listener || list[i].listener === listener) {\n                originalListener = list[i].listener;\n                position = i;\n                break;\n              }\n            }\n            if (position < 0)\n              return this;\n            if (position === 0)\n              list.shift();\n            else\n              spliceOne(list, position);\n            if (list.length === 1)\n              events[type] = list[0];\n            if (events.removeListener)\n              this.emit('removeListener', type, originalListener || listener);\n          }\n          return this;\n        };\n    EventEmitter.prototype.removeAllListeners =\n        function removeAllListeners(type) {\n          var listeners, events, i;\n          events = this._events;\n          if (!events)\n            return this;\n          if (!events.removeListener) {\n            if (arguments.length === 0) {\n              this._events = objectCreate(null);\n              this._eventsCount = 0;\n            } else if (events[type]) {\n              if (--this._eventsCount === 0)\n                this._events = objectCreate(null);\n              else\n                delete events[type];\n            }\n            return this;\n          }\n          if (arguments.length === 0) {\n            var keys = objectKeys(events);\n            var key;\n            for (i = 0; i < keys.length; ++i) {\n              key = keys[i];\n              if (key === 'removeListener') continue;\n              this.removeAllListeners(key);\n            }\n            this.removeAllListeners('removeListener');\n            this._events = objectCreate(null);\n            this._eventsCount = 0;\n            return this;\n          }\n          listeners = events[type];\n          if (typeof listeners === 'function') {\n            this.removeListener(type, listeners);\n          } else if (listeners) {\n            for (i = listeners.length - 1; i >= 0; i--) {\n              this.removeListener(type, listeners[i]);\n            }\n          }\n          return this;\n        };\n    function _listeners(target, type, unwrap) {\n      var events = target._events;\n      if (!events)\n        return [];\n      var evlistener = events[type];\n      if (!evlistener)\n        return [];\n      if (typeof evlistener === 'function')\n        return unwrap ? [evlistener.listener || evlistener] : [evlistener];\n      return unwrap ? unwrapListeners(evlistener) : arrayClone(evlistener, evlistener.length);\n    }\n    EventEmitter.prototype.listeners = function listeners(type) {\n      return _listeners(this, type, true);\n    };\n    EventEmitter.prototype.rawListeners = function rawListeners(type) {\n      return _listeners(this, type, false);\n    };\n    EventEmitter.listenerCount = function(emitter, type) {\n      if (typeof emitter.listenerCount === 'function') {\n        return emitter.listenerCount(type);\n      } else {\n        return listenerCount.call(emitter, type);\n      }\n    };\n    EventEmitter.prototype.listenerCount = listenerCount;\n    function listenerCount(type) {\n      var events = this._events;\n      if (events) {\n        var evlistener = events[type];\n        if (typeof evlistener === 'function') {\n          return 1;\n        } else if (evlistener) {\n          return evlistener.length;\n        }\n      }\n      return 0;\n    }\n    EventEmitter.prototype.eventNames = function eventNames() {\n      return this._eventsCount > 0 ? Reflect.ownKeys(this._events) : [];\n    };\n    function spliceOne(list, index) {\n      for (var i = index, k = i + 1, n = list.length; k < n; i += 1, k += 1)\n        list[i] = list[k];\n      list.pop();\n    }\n    function arrayClone(arr, n) {\n      var copy = new Array(n);\n      for (var i = 0; i < n; ++i)\n        copy[i] = arr[i];\n      return copy;\n    }\n    function unwrapListeners(arr) {\n      var ret = new Array(arr.length);\n      for (var i = 0; i < ret.length; ++i) {\n        ret[i] = arr[i].listener || arr[i];\n      }\n      return ret;\n    }\n    function objectCreatePolyfill(proto) {\n      var F = function() {};\n      F.prototype = proto;\n      return new F;\n    }\n    function objectKeysPolyfill(obj) {\n      for (var k in obj) if (Object.prototype.hasOwnProperty.call(obj, k)) ;\n      return k;\n    }\n    function functionBindPolyfill(context) {\n      var fn = this;\n      return function () {\n        return fn.apply(context, arguments);\n      };\n    }\n    },{}],31:[function(require,module,exports){\n    exports.read = function (buffer, offset, isLE, mLen, nBytes) {\n      var e, m;\n      var eLen = nBytes * 8 - mLen - 1;\n      var eMax = (1 << eLen) - 1;\n      var eBias = eMax >> 1;\n      var nBits = -7;\n      var i = isLE ? (nBytes - 1) : 0;\n      var d = isLE ? -1 : 1;\n      var s = buffer[offset + i];\n      i += d;\n      e = s & ((1 << (-nBits)) - 1);\n      s >>= (-nBits);\n      nBits += eLen;\n      for (; nBits > 0; e = e * 256 + buffer[offset + i], i += d, nBits -= 8) {}\n      m = e & ((1 << (-nBits)) - 1);\n      e >>= (-nBits);\n      nBits += mLen;\n      for (; nBits > 0; m = m * 256 + buffer[offset + i], i += d, nBits -= 8) {}\n      if (e === 0) {\n        e = 1 - eBias;\n      } else if (e === eMax) {\n        return m ? NaN : ((s ? -1 : 1) * Infinity)\n      } else {\n        m = m + Math.pow(2, mLen);\n        e = e - eBias;\n      }\n      return (s ? -1 : 1) * m * Math.pow(2, e - mLen)\n    };\n    exports.write = function (buffer, value, offset, isLE, mLen, nBytes) {\n      var e, m, c;\n      var eLen = nBytes * 8 - mLen - 1;\n      var eMax = (1 << eLen) - 1;\n      var eBias = eMax >> 1;\n      var rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0);\n      var i = isLE ? 0 : (nBytes - 1);\n      var d = isLE ? 1 : -1;\n      var s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0;\n      value = Math.abs(value);\n      if (isNaN(value) || value === Infinity) {\n        m = isNaN(value) ? 1 : 0;\n        e = eMax;\n      } else {\n        e = Math.floor(Math.log(value) / Math.LN2);\n        if (value * (c = Math.pow(2, -e)) < 1) {\n          e--;\n          c *= 2;\n        }\n        if (e + eBias >= 1) {\n          value += rt / c;\n        } else {\n          value += rt * Math.pow(2, 1 - eBias);\n        }\n        if (value * c >= 2) {\n          e++;\n          c /= 2;\n        }\n        if (e + eBias >= eMax) {\n          m = 0;\n          e = eMax;\n        } else if (e + eBias >= 1) {\n          m = (value * c - 1) * Math.pow(2, mLen);\n          e = e + eBias;\n        } else {\n          m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen);\n          e = 0;\n        }\n      }\n      for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {}\n      e = (e << mLen) | m;\n      eLen += mLen;\n      for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {}\n      buffer[offset + i - d] |= s * 128;\n    };\n    },{}],32:[function(require,module,exports){\n    if (typeof Object.create === 'function') {\n      module.exports = function inherits(ctor, superCtor) {\n        ctor.super_ = superCtor;\n        ctor.prototype = Object.create(superCtor.prototype, {\n          constructor: {\n            value: ctor,\n            enumerable: false,\n            writable: true,\n            configurable: true\n          }\n        });\n      };\n    } else {\n      module.exports = function inherits(ctor, superCtor) {\n        ctor.super_ = superCtor;\n        var TempCtor = function () {};\n        TempCtor.prototype = superCtor.prototype;\n        ctor.prototype = new TempCtor();\n        ctor.prototype.constructor = ctor;\n      };\n    }\n    },{}],33:[function(require,module,exports){\n    /*!\n     * Determine if an object is a Buffer\n     *\n     * @author   Feross Aboukhadijeh <https://feross.org>\n     * @license  MIT\n     */\n    module.exports = function (obj) {\n      return obj != null && (isBuffer(obj) || isSlowBuffer(obj) || !!obj._isBuffer)\n    };\n    function isBuffer (obj) {\n      return !!obj.constructor && typeof obj.constructor.isBuffer === 'function' && obj.constructor.isBuffer(obj)\n    }\n    function isSlowBuffer (obj) {\n      return typeof obj.readFloatLE === 'function' && typeof obj.slice === 'function' && isBuffer(obj.slice(0, 0))\n    }\n    },{}],34:[function(require,module,exports){\n    var toString = {}.toString;\n    module.exports = Array.isArray || function (arr) {\n      return toString.call(arr) == '[object Array]';\n    };\n    },{}],35:[function(require,module,exports){\n    var TYPED_OK =  (typeof Uint8Array !== 'undefined') &&\n                    (typeof Uint16Array !== 'undefined') &&\n                    (typeof Int32Array !== 'undefined');\n    function _has(obj, key) {\n      return Object.prototype.hasOwnProperty.call(obj, key);\n    }\n    exports.assign = function (obj ) {\n      var sources = Array.prototype.slice.call(arguments, 1);\n      while (sources.length) {\n        var source = sources.shift();\n        if (!source) { continue; }\n        if (typeof source !== 'object') {\n          throw new TypeError(source + 'must be non-object');\n        }\n        for (var p in source) {\n          if (_has(source, p)) {\n            obj[p] = source[p];\n          }\n        }\n      }\n      return obj;\n    };\n    exports.shrinkBuf = function (buf, size) {\n      if (buf.length === size) { return buf; }\n      if (buf.subarray) { return buf.subarray(0, size); }\n      buf.length = size;\n      return buf;\n    };\n    var fnTyped = {\n      arraySet: function (dest, src, src_offs, len, dest_offs) {\n        if (src.subarray && dest.subarray) {\n          dest.set(src.subarray(src_offs, src_offs + len), dest_offs);\n          return;\n        }\n        for (var i = 0; i < len; i++) {\n          dest[dest_offs + i] = src[src_offs + i];\n        }\n      },\n      flattenChunks: function (chunks) {\n        var i, l, len, pos, chunk, result;\n        len = 0;\n        for (i = 0, l = chunks.length; i < l; i++) {\n          len += chunks[i].length;\n        }\n        result = new Uint8Array(len);\n        pos = 0;\n        for (i = 0, l = chunks.length; i < l; i++) {\n          chunk = chunks[i];\n          result.set(chunk, pos);\n          pos += chunk.length;\n        }\n        return result;\n      }\n    };\n    var fnUntyped = {\n      arraySet: function (dest, src, src_offs, len, dest_offs) {\n        for (var i = 0; i < len; i++) {\n          dest[dest_offs + i] = src[src_offs + i];\n        }\n      },\n      flattenChunks: function (chunks) {\n        return [].concat.apply([], chunks);\n      }\n    };\n    exports.setTyped = function (on) {\n      if (on) {\n        exports.Buf8  = Uint8Array;\n        exports.Buf16 = Uint16Array;\n        exports.Buf32 = Int32Array;\n        exports.assign(exports, fnTyped);\n      } else {\n        exports.Buf8  = Array;\n        exports.Buf16 = Array;\n        exports.Buf32 = Array;\n        exports.assign(exports, fnUntyped);\n      }\n    };\n    exports.setTyped(TYPED_OK);\n    },{}],36:[function(require,module,exports){\n    function adler32(adler, buf, len, pos) {\n      var s1 = (adler & 0xffff) |0,\n          s2 = ((adler >>> 16) & 0xffff) |0,\n          n = 0;\n      while (len !== 0) {\n        n = len > 2000 ? 2000 : len;\n        len -= n;\n        do {\n          s1 = (s1 + buf[pos++]) |0;\n          s2 = (s2 + s1) |0;\n        } while (--n);\n        s1 %= 65521;\n        s2 %= 65521;\n      }\n      return (s1 | (s2 << 16)) |0;\n    }\n    module.exports = adler32;\n    },{}],37:[function(require,module,exports){\n    module.exports = {\n      Z_NO_FLUSH:         0,\n      Z_PARTIAL_FLUSH:    1,\n      Z_SYNC_FLUSH:       2,\n      Z_FULL_FLUSH:       3,\n      Z_FINISH:           4,\n      Z_BLOCK:            5,\n      Z_TREES:            6,\n      Z_OK:               0,\n      Z_STREAM_END:       1,\n      Z_NEED_DICT:        2,\n      Z_ERRNO:           -1,\n      Z_STREAM_ERROR:    -2,\n      Z_DATA_ERROR:      -3,\n      Z_BUF_ERROR:       -5,\n      Z_NO_COMPRESSION:         0,\n      Z_BEST_SPEED:             1,\n      Z_BEST_COMPRESSION:       9,\n      Z_DEFAULT_COMPRESSION:   -1,\n      Z_FILTERED:               1,\n      Z_HUFFMAN_ONLY:           2,\n      Z_RLE:                    3,\n      Z_FIXED:                  4,\n      Z_DEFAULT_STRATEGY:       0,\n      Z_BINARY:                 0,\n      Z_TEXT:                   1,\n      Z_UNKNOWN:                2,\n      Z_DEFLATED:               8\n    };\n    },{}],38:[function(require,module,exports){\n    function makeTable() {\n      var c, table = [];\n      for (var n = 0; n < 256; n++) {\n        c = n;\n        for (var k = 0; k < 8; k++) {\n          c = ((c & 1) ? (0xEDB88320 ^ (c >>> 1)) : (c >>> 1));\n        }\n        table[n] = c;\n      }\n      return table;\n    }\n    var crcTable = makeTable();\n    function crc32(crc, buf, len, pos) {\n      var t = crcTable,\n          end = pos + len;\n      crc ^= -1;\n      for (var i = pos; i < end; i++) {\n        crc = (crc >>> 8) ^ t[(crc ^ buf[i]) & 0xFF];\n      }\n      return (crc ^ (-1));\n    }\n    module.exports = crc32;\n    },{}],39:[function(require,module,exports){\n    var utils   = require('../utils/common');\n    var trees   = require('./trees');\n    var adler32 = require('./adler32');\n    var crc32   = require('./crc32');\n    var msg     = require('./messages');\n    var Z_NO_FLUSH      = 0;\n    var Z_PARTIAL_FLUSH = 1;\n    var Z_FULL_FLUSH    = 3;\n    var Z_FINISH        = 4;\n    var Z_BLOCK         = 5;\n    var Z_OK            = 0;\n    var Z_STREAM_END    = 1;\n    var Z_STREAM_ERROR  = -2;\n    var Z_DATA_ERROR    = -3;\n    var Z_BUF_ERROR     = -5;\n    var Z_DEFAULT_COMPRESSION = -1;\n    var Z_FILTERED            = 1;\n    var Z_HUFFMAN_ONLY        = 2;\n    var Z_RLE                 = 3;\n    var Z_FIXED               = 4;\n    var Z_DEFAULT_STRATEGY    = 0;\n    var Z_UNKNOWN             = 2;\n    var Z_DEFLATED  = 8;\n    var MAX_MEM_LEVEL = 9;\n    var MAX_WBITS = 15;\n    var DEF_MEM_LEVEL = 8;\n    var LENGTH_CODES  = 29;\n    var LITERALS      = 256;\n    var L_CODES       = LITERALS + 1 + LENGTH_CODES;\n    var D_CODES       = 30;\n    var BL_CODES      = 19;\n    var HEAP_SIZE     = 2 * L_CODES + 1;\n    var MAX_BITS  = 15;\n    var MIN_MATCH = 3;\n    var MAX_MATCH = 258;\n    var MIN_LOOKAHEAD = (MAX_MATCH + MIN_MATCH + 1);\n    var PRESET_DICT = 0x20;\n    var INIT_STATE = 42;\n    var EXTRA_STATE = 69;\n    var NAME_STATE = 73;\n    var COMMENT_STATE = 91;\n    var HCRC_STATE = 103;\n    var BUSY_STATE = 113;\n    var FINISH_STATE = 666;\n    var BS_NEED_MORE      = 1;\n    var BS_BLOCK_DONE     = 2;\n    var BS_FINISH_STARTED = 3;\n    var BS_FINISH_DONE    = 4;\n    var OS_CODE = 0x03;\n    function err(strm, errorCode) {\n      strm.msg = msg[errorCode];\n      return errorCode;\n    }\n    function rank(f) {\n      return ((f) << 1) - ((f) > 4 ? 9 : 0);\n    }\n    function zero(buf) { var len = buf.length; while (--len >= 0) { buf[len] = 0; } }\n    function flush_pending(strm) {\n      var s = strm.state;\n      var len = s.pending;\n      if (len > strm.avail_out) {\n        len = strm.avail_out;\n      }\n      if (len === 0) { return; }\n      utils.arraySet(strm.output, s.pending_buf, s.pending_out, len, strm.next_out);\n      strm.next_out += len;\n      s.pending_out += len;\n      strm.total_out += len;\n      strm.avail_out -= len;\n      s.pending -= len;\n      if (s.pending === 0) {\n        s.pending_out = 0;\n      }\n    }\n    function flush_block_only(s, last) {\n      trees._tr_flush_block(s, (s.block_start >= 0 ? s.block_start : -1), s.strstart - s.block_start, last);\n      s.block_start = s.strstart;\n      flush_pending(s.strm);\n    }\n    function put_byte(s, b) {\n      s.pending_buf[s.pending++] = b;\n    }\n    function putShortMSB(s, b) {\n      s.pending_buf[s.pending++] = (b >>> 8) & 0xff;\n      s.pending_buf[s.pending++] = b & 0xff;\n    }\n    function read_buf(strm, buf, start, size) {\n      var len = strm.avail_in;\n      if (len > size) { len = size; }\n      if (len === 0) { return 0; }\n      strm.avail_in -= len;\n      utils.arraySet(buf, strm.input, strm.next_in, len, start);\n      if (strm.state.wrap === 1) {\n        strm.adler = adler32(strm.adler, buf, len, start);\n      }\n      else if (strm.state.wrap === 2) {\n        strm.adler = crc32(strm.adler, buf, len, start);\n      }\n      strm.next_in += len;\n      strm.total_in += len;\n      return len;\n    }\n    function longest_match(s, cur_match) {\n      var chain_length = s.max_chain_length;\n      var scan = s.strstart;\n      var match;\n      var len;\n      var best_len = s.prev_length;\n      var nice_match = s.nice_match;\n      var limit = (s.strstart > (s.w_size - MIN_LOOKAHEAD)) ?\n          s.strstart - (s.w_size - MIN_LOOKAHEAD) : 0;\n      var _win = s.window;\n      var wmask = s.w_mask;\n      var prev  = s.prev;\n      var strend = s.strstart + MAX_MATCH;\n      var scan_end1  = _win[scan + best_len - 1];\n      var scan_end   = _win[scan + best_len];\n      if (s.prev_length >= s.good_match) {\n        chain_length >>= 2;\n      }\n      if (nice_match > s.lookahead) { nice_match = s.lookahead; }\n      do {\n        match = cur_match;\n        if (_win[match + best_len]     !== scan_end  ||\n            _win[match + best_len - 1] !== scan_end1 ||\n            _win[match]                !== _win[scan] ||\n            _win[++match]              !== _win[scan + 1]) {\n          continue;\n        }\n        scan += 2;\n        match++;\n        do {\n        } while (_win[++scan] === _win[++match] && _win[++scan] === _win[++match] &&\n                 _win[++scan] === _win[++match] && _win[++scan] === _win[++match] &&\n                 _win[++scan] === _win[++match] && _win[++scan] === _win[++match] &&\n                 _win[++scan] === _win[++match] && _win[++scan] === _win[++match] &&\n                 scan < strend);\n        len = MAX_MATCH - (strend - scan);\n        scan = strend - MAX_MATCH;\n        if (len > best_len) {\n          s.match_start = cur_match;\n          best_len = len;\n          if (len >= nice_match) {\n            break;\n          }\n          scan_end1  = _win[scan + best_len - 1];\n          scan_end   = _win[scan + best_len];\n        }\n      } while ((cur_match = prev[cur_match & wmask]) > limit && --chain_length !== 0);\n      if (best_len <= s.lookahead) {\n        return best_len;\n      }\n      return s.lookahead;\n    }\n    function fill_window(s) {\n      var _w_size = s.w_size;\n      var p, n, m, more, str;\n      do {\n        more = s.window_size - s.lookahead - s.strstart;\n        if (s.strstart >= _w_size + (_w_size - MIN_LOOKAHEAD)) {\n          utils.arraySet(s.window, s.window, _w_size, _w_size, 0);\n          s.match_start -= _w_size;\n          s.strstart -= _w_size;\n          s.block_start -= _w_size;\n          n = s.hash_size;\n          p = n;\n          do {\n            m = s.head[--p];\n            s.head[p] = (m >= _w_size ? m - _w_size : 0);\n          } while (--n);\n          n = _w_size;\n          p = n;\n          do {\n            m = s.prev[--p];\n            s.prev[p] = (m >= _w_size ? m - _w_size : 0);\n          } while (--n);\n          more += _w_size;\n        }\n        if (s.strm.avail_in === 0) {\n          break;\n        }\n        n = read_buf(s.strm, s.window, s.strstart + s.lookahead, more);\n        s.lookahead += n;\n        if (s.lookahead + s.insert >= MIN_MATCH) {\n          str = s.strstart - s.insert;\n          s.ins_h = s.window[str];\n          s.ins_h = ((s.ins_h << s.hash_shift) ^ s.window[str + 1]) & s.hash_mask;\n          while (s.insert) {\n            s.ins_h = ((s.ins_h << s.hash_shift) ^ s.window[str + MIN_MATCH - 1]) & s.hash_mask;\n            s.prev[str & s.w_mask] = s.head[s.ins_h];\n            s.head[s.ins_h] = str;\n            str++;\n            s.insert--;\n            if (s.lookahead + s.insert < MIN_MATCH) {\n              break;\n            }\n          }\n        }\n      } while (s.lookahead < MIN_LOOKAHEAD && s.strm.avail_in !== 0);\n    }\n    function deflate_stored(s, flush) {\n      var max_block_size = 0xffff;\n      if (max_block_size > s.pending_buf_size - 5) {\n        max_block_size = s.pending_buf_size - 5;\n      }\n      for (;;) {\n        if (s.lookahead <= 1) {\n          fill_window(s);\n          if (s.lookahead === 0 && flush === Z_NO_FLUSH) {\n            return BS_NEED_MORE;\n          }\n          if (s.lookahead === 0) {\n            break;\n          }\n        }\n        s.strstart += s.lookahead;\n        s.lookahead = 0;\n        var max_start = s.block_start + max_block_size;\n        if (s.strstart === 0 || s.strstart >= max_start) {\n          s.lookahead = s.strstart - max_start;\n          s.strstart = max_start;\n          flush_block_only(s, false);\n          if (s.strm.avail_out === 0) {\n            return BS_NEED_MORE;\n          }\n        }\n        if (s.strstart - s.block_start >= (s.w_size - MIN_LOOKAHEAD)) {\n          flush_block_only(s, false);\n          if (s.strm.avail_out === 0) {\n            return BS_NEED_MORE;\n          }\n        }\n      }\n      s.insert = 0;\n      if (flush === Z_FINISH) {\n        flush_block_only(s, true);\n        if (s.strm.avail_out === 0) {\n          return BS_FINISH_STARTED;\n        }\n        return BS_FINISH_DONE;\n      }\n      if (s.strstart > s.block_start) {\n        flush_block_only(s, false);\n        if (s.strm.avail_out === 0) {\n          return BS_NEED_MORE;\n        }\n      }\n      return BS_NEED_MORE;\n    }\n    function deflate_fast(s, flush) {\n      var hash_head;\n      var bflush;\n      for (;;) {\n        if (s.lookahead < MIN_LOOKAHEAD) {\n          fill_window(s);\n          if (s.lookahead < MIN_LOOKAHEAD && flush === Z_NO_FLUSH) {\n            return BS_NEED_MORE;\n          }\n          if (s.lookahead === 0) {\n            break;\n          }\n        }\n        hash_head = 0;\n        if (s.lookahead >= MIN_MATCH) {\n          s.ins_h = ((s.ins_h << s.hash_shift) ^ s.window[s.strstart + MIN_MATCH - 1]) & s.hash_mask;\n          hash_head = s.prev[s.strstart & s.w_mask] = s.head[s.ins_h];\n          s.head[s.ins_h] = s.strstart;\n        }\n        if (hash_head !== 0 && ((s.strstart - hash_head) <= (s.w_size - MIN_LOOKAHEAD))) {\n          s.match_length = longest_match(s, hash_head);\n        }\n        if (s.match_length >= MIN_MATCH) {\n          bflush = trees._tr_tally(s, s.strstart - s.match_start, s.match_length - MIN_MATCH);\n          s.lookahead -= s.match_length;\n          if (s.match_length <= s.max_lazy_match && s.lookahead >= MIN_MATCH) {\n            s.match_length--;\n            do {\n              s.strstart++;\n              s.ins_h = ((s.ins_h << s.hash_shift) ^ s.window[s.strstart + MIN_MATCH - 1]) & s.hash_mask;\n              hash_head = s.prev[s.strstart & s.w_mask] = s.head[s.ins_h];\n              s.head[s.ins_h] = s.strstart;\n            } while (--s.match_length !== 0);\n            s.strstart++;\n          } else\n          {\n            s.strstart += s.match_length;\n            s.match_length = 0;\n            s.ins_h = s.window[s.strstart];\n            s.ins_h = ((s.ins_h << s.hash_shift) ^ s.window[s.strstart + 1]) & s.hash_mask;\n          }\n        } else {\n          bflush = trees._tr_tally(s, 0, s.window[s.strstart]);\n          s.lookahead--;\n          s.strstart++;\n        }\n        if (bflush) {\n          flush_block_only(s, false);\n          if (s.strm.avail_out === 0) {\n            return BS_NEED_MORE;\n          }\n        }\n      }\n      s.insert = ((s.strstart < (MIN_MATCH - 1)) ? s.strstart : MIN_MATCH - 1);\n      if (flush === Z_FINISH) {\n        flush_block_only(s, true);\n        if (s.strm.avail_out === 0) {\n          return BS_FINISH_STARTED;\n        }\n        return BS_FINISH_DONE;\n      }\n      if (s.last_lit) {\n        flush_block_only(s, false);\n        if (s.strm.avail_out === 0) {\n          return BS_NEED_MORE;\n        }\n      }\n      return BS_BLOCK_DONE;\n    }\n    function deflate_slow(s, flush) {\n      var hash_head;\n      var bflush;\n      var max_insert;\n      for (;;) {\n        if (s.lookahead < MIN_LOOKAHEAD) {\n          fill_window(s);\n          if (s.lookahead < MIN_LOOKAHEAD && flush === Z_NO_FLUSH) {\n            return BS_NEED_MORE;\n          }\n          if (s.lookahead === 0) { break; }\n        }\n        hash_head = 0;\n        if (s.lookahead >= MIN_MATCH) {\n          s.ins_h = ((s.ins_h << s.hash_shift) ^ s.window[s.strstart + MIN_MATCH - 1]) & s.hash_mask;\n          hash_head = s.prev[s.strstart & s.w_mask] = s.head[s.ins_h];\n          s.head[s.ins_h] = s.strstart;\n        }\n        s.prev_length = s.match_length;\n        s.prev_match = s.match_start;\n        s.match_length = MIN_MATCH - 1;\n        if (hash_head !== 0 && s.prev_length < s.max_lazy_match &&\n            s.strstart - hash_head <= (s.w_size - MIN_LOOKAHEAD)) {\n          s.match_length = longest_match(s, hash_head);\n          if (s.match_length <= 5 &&\n             (s.strategy === Z_FILTERED || (s.match_length === MIN_MATCH && s.strstart - s.match_start > 4096))) {\n            s.match_length = MIN_MATCH - 1;\n          }\n        }\n        if (s.prev_length >= MIN_MATCH && s.match_length <= s.prev_length) {\n          max_insert = s.strstart + s.lookahead - MIN_MATCH;\n          bflush = trees._tr_tally(s, s.strstart - 1 - s.prev_match, s.prev_length - MIN_MATCH);\n          s.lookahead -= s.prev_length - 1;\n          s.prev_length -= 2;\n          do {\n            if (++s.strstart <= max_insert) {\n              s.ins_h = ((s.ins_h << s.hash_shift) ^ s.window[s.strstart + MIN_MATCH - 1]) & s.hash_mask;\n              hash_head = s.prev[s.strstart & s.w_mask] = s.head[s.ins_h];\n              s.head[s.ins_h] = s.strstart;\n            }\n          } while (--s.prev_length !== 0);\n          s.match_available = 0;\n          s.match_length = MIN_MATCH - 1;\n          s.strstart++;\n          if (bflush) {\n            flush_block_only(s, false);\n            if (s.strm.avail_out === 0) {\n              return BS_NEED_MORE;\n            }\n          }\n        } else if (s.match_available) {\n          bflush = trees._tr_tally(s, 0, s.window[s.strstart - 1]);\n          if (bflush) {\n            flush_block_only(s, false);\n          }\n          s.strstart++;\n          s.lookahead--;\n          if (s.strm.avail_out === 0) {\n            return BS_NEED_MORE;\n          }\n        } else {\n          s.match_available = 1;\n          s.strstart++;\n          s.lookahead--;\n        }\n      }\n      if (s.match_available) {\n        bflush = trees._tr_tally(s, 0, s.window[s.strstart - 1]);\n        s.match_available = 0;\n      }\n      s.insert = s.strstart < MIN_MATCH - 1 ? s.strstart : MIN_MATCH - 1;\n      if (flush === Z_FINISH) {\n        flush_block_only(s, true);\n        if (s.strm.avail_out === 0) {\n          return BS_FINISH_STARTED;\n        }\n        return BS_FINISH_DONE;\n      }\n      if (s.last_lit) {\n        flush_block_only(s, false);\n        if (s.strm.avail_out === 0) {\n          return BS_NEED_MORE;\n        }\n      }\n      return BS_BLOCK_DONE;\n    }\n    function deflate_rle(s, flush) {\n      var bflush;\n      var prev;\n      var scan, strend;\n      var _win = s.window;\n      for (;;) {\n        if (s.lookahead <= MAX_MATCH) {\n          fill_window(s);\n          if (s.lookahead <= MAX_MATCH && flush === Z_NO_FLUSH) {\n            return BS_NEED_MORE;\n          }\n          if (s.lookahead === 0) { break; }\n        }\n        s.match_length = 0;\n        if (s.lookahead >= MIN_MATCH && s.strstart > 0) {\n          scan = s.strstart - 1;\n          prev = _win[scan];\n          if (prev === _win[++scan] && prev === _win[++scan] && prev === _win[++scan]) {\n            strend = s.strstart + MAX_MATCH;\n            do {\n            } while (prev === _win[++scan] && prev === _win[++scan] &&\n                     prev === _win[++scan] && prev === _win[++scan] &&\n                     prev === _win[++scan] && prev === _win[++scan] &&\n                     prev === _win[++scan] && prev === _win[++scan] &&\n                     scan < strend);\n            s.match_length = MAX_MATCH - (strend - scan);\n            if (s.match_length > s.lookahead) {\n              s.match_length = s.lookahead;\n            }\n          }\n        }\n        if (s.match_length >= MIN_MATCH) {\n          bflush = trees._tr_tally(s, 1, s.match_length - MIN_MATCH);\n          s.lookahead -= s.match_length;\n          s.strstart += s.match_length;\n          s.match_length = 0;\n        } else {\n          bflush = trees._tr_tally(s, 0, s.window[s.strstart]);\n          s.lookahead--;\n          s.strstart++;\n        }\n        if (bflush) {\n          flush_block_only(s, false);\n          if (s.strm.avail_out === 0) {\n            return BS_NEED_MORE;\n          }\n        }\n      }\n      s.insert = 0;\n      if (flush === Z_FINISH) {\n        flush_block_only(s, true);\n        if (s.strm.avail_out === 0) {\n          return BS_FINISH_STARTED;\n        }\n        return BS_FINISH_DONE;\n      }\n      if (s.last_lit) {\n        flush_block_only(s, false);\n        if (s.strm.avail_out === 0) {\n          return BS_NEED_MORE;\n        }\n      }\n      return BS_BLOCK_DONE;\n    }\n    function deflate_huff(s, flush) {\n      var bflush;\n      for (;;) {\n        if (s.lookahead === 0) {\n          fill_window(s);\n          if (s.lookahead === 0) {\n            if (flush === Z_NO_FLUSH) {\n              return BS_NEED_MORE;\n            }\n            break;\n          }\n        }\n        s.match_length = 0;\n        bflush = trees._tr_tally(s, 0, s.window[s.strstart]);\n        s.lookahead--;\n        s.strstart++;\n        if (bflush) {\n          flush_block_only(s, false);\n          if (s.strm.avail_out === 0) {\n            return BS_NEED_MORE;\n          }\n        }\n      }\n      s.insert = 0;\n      if (flush === Z_FINISH) {\n        flush_block_only(s, true);\n        if (s.strm.avail_out === 0) {\n          return BS_FINISH_STARTED;\n        }\n        return BS_FINISH_DONE;\n      }\n      if (s.last_lit) {\n        flush_block_only(s, false);\n        if (s.strm.avail_out === 0) {\n          return BS_NEED_MORE;\n        }\n      }\n      return BS_BLOCK_DONE;\n    }\n    function Config(good_length, max_lazy, nice_length, max_chain, func) {\n      this.good_length = good_length;\n      this.max_lazy = max_lazy;\n      this.nice_length = nice_length;\n      this.max_chain = max_chain;\n      this.func = func;\n    }\n    var configuration_table;\n    configuration_table = [\n      new Config(0, 0, 0, 0, deflate_stored),\n      new Config(4, 4, 8, 4, deflate_fast),\n      new Config(4, 5, 16, 8, deflate_fast),\n      new Config(4, 6, 32, 32, deflate_fast),\n      new Config(4, 4, 16, 16, deflate_slow),\n      new Config(8, 16, 32, 32, deflate_slow),\n      new Config(8, 16, 128, 128, deflate_slow),\n      new Config(8, 32, 128, 256, deflate_slow),\n      new Config(32, 128, 258, 1024, deflate_slow),\n      new Config(32, 258, 258, 4096, deflate_slow)\n    ];\n    function lm_init(s) {\n      s.window_size = 2 * s.w_size;\n      zero(s.head);\n      s.max_lazy_match = configuration_table[s.level].max_lazy;\n      s.good_match = configuration_table[s.level].good_length;\n      s.nice_match = configuration_table[s.level].nice_length;\n      s.max_chain_length = configuration_table[s.level].max_chain;\n      s.strstart = 0;\n      s.block_start = 0;\n      s.lookahead = 0;\n      s.insert = 0;\n      s.match_length = s.prev_length = MIN_MATCH - 1;\n      s.match_available = 0;\n      s.ins_h = 0;\n    }\n    function DeflateState() {\n      this.strm = null;\n      this.status = 0;\n      this.pending_buf = null;\n      this.pending_buf_size = 0;\n      this.pending_out = 0;\n      this.pending = 0;\n      this.wrap = 0;\n      this.gzhead = null;\n      this.gzindex = 0;\n      this.method = Z_DEFLATED;\n      this.last_flush = -1;\n      this.w_size = 0;\n      this.w_bits = 0;\n      this.w_mask = 0;\n      this.window = null;\n      this.window_size = 0;\n      this.prev = null;\n      this.head = null;\n      this.ins_h = 0;\n      this.hash_size = 0;\n      this.hash_bits = 0;\n      this.hash_mask = 0;\n      this.hash_shift = 0;\n      this.block_start = 0;\n      this.match_length = 0;\n      this.prev_match = 0;\n      this.match_available = 0;\n      this.strstart = 0;\n      this.match_start = 0;\n      this.lookahead = 0;\n      this.prev_length = 0;\n      this.max_chain_length = 0;\n      this.max_lazy_match = 0;\n      this.level = 0;\n      this.strategy = 0;\n      this.good_match = 0;\n      this.nice_match = 0;\n      this.dyn_ltree  = new utils.Buf16(HEAP_SIZE * 2);\n      this.dyn_dtree  = new utils.Buf16((2 * D_CODES + 1) * 2);\n      this.bl_tree    = new utils.Buf16((2 * BL_CODES + 1) * 2);\n      zero(this.dyn_ltree);\n      zero(this.dyn_dtree);\n      zero(this.bl_tree);\n      this.l_desc   = null;\n      this.d_desc   = null;\n      this.bl_desc  = null;\n      this.bl_count = new utils.Buf16(MAX_BITS + 1);\n      this.heap = new utils.Buf16(2 * L_CODES + 1);\n      zero(this.heap);\n      this.heap_len = 0;\n      this.heap_max = 0;\n      this.depth = new utils.Buf16(2 * L_CODES + 1);\n      zero(this.depth);\n      this.l_buf = 0;\n      this.lit_bufsize = 0;\n      this.last_lit = 0;\n      this.d_buf = 0;\n      this.opt_len = 0;\n      this.static_len = 0;\n      this.matches = 0;\n      this.insert = 0;\n      this.bi_buf = 0;\n      this.bi_valid = 0;\n    }\n    function deflateResetKeep(strm) {\n      var s;\n      if (!strm || !strm.state) {\n        return err(strm, Z_STREAM_ERROR);\n      }\n      strm.total_in = strm.total_out = 0;\n      strm.data_type = Z_UNKNOWN;\n      s = strm.state;\n      s.pending = 0;\n      s.pending_out = 0;\n      if (s.wrap < 0) {\n        s.wrap = -s.wrap;\n      }\n      s.status = (s.wrap ? INIT_STATE : BUSY_STATE);\n      strm.adler = (s.wrap === 2) ?\n        0\n      :\n        1;\n      s.last_flush = Z_NO_FLUSH;\n      trees._tr_init(s);\n      return Z_OK;\n    }\n    function deflateReset(strm) {\n      var ret = deflateResetKeep(strm);\n      if (ret === Z_OK) {\n        lm_init(strm.state);\n      }\n      return ret;\n    }\n    function deflateSetHeader(strm, head) {\n      if (!strm || !strm.state) { return Z_STREAM_ERROR; }\n      if (strm.state.wrap !== 2) { return Z_STREAM_ERROR; }\n      strm.state.gzhead = head;\n      return Z_OK;\n    }\n    function deflateInit2(strm, level, method, windowBits, memLevel, strategy) {\n      if (!strm) {\n        return Z_STREAM_ERROR;\n      }\n      var wrap = 1;\n      if (level === Z_DEFAULT_COMPRESSION) {\n        level = 6;\n      }\n      if (windowBits < 0) {\n        wrap = 0;\n        windowBits = -windowBits;\n      }\n      else if (windowBits > 15) {\n        wrap = 2;\n        windowBits -= 16;\n      }\n      if (memLevel < 1 || memLevel > MAX_MEM_LEVEL || method !== Z_DEFLATED ||\n        windowBits < 8 || windowBits > 15 || level < 0 || level > 9 ||\n        strategy < 0 || strategy > Z_FIXED) {\n        return err(strm, Z_STREAM_ERROR);\n      }\n      if (windowBits === 8) {\n        windowBits = 9;\n      }\n      var s = new DeflateState();\n      strm.state = s;\n      s.strm = strm;\n      s.wrap = wrap;\n      s.gzhead = null;\n      s.w_bits = windowBits;\n      s.w_size = 1 << s.w_bits;\n      s.w_mask = s.w_size - 1;\n      s.hash_bits = memLevel + 7;\n      s.hash_size = 1 << s.hash_bits;\n      s.hash_mask = s.hash_size - 1;\n      s.hash_shift = ~~((s.hash_bits + MIN_MATCH - 1) / MIN_MATCH);\n      s.window = new utils.Buf8(s.w_size * 2);\n      s.head = new utils.Buf16(s.hash_size);\n      s.prev = new utils.Buf16(s.w_size);\n      s.lit_bufsize = 1 << (memLevel + 6);\n      s.pending_buf_size = s.lit_bufsize * 4;\n      s.pending_buf = new utils.Buf8(s.pending_buf_size);\n      s.d_buf = 1 * s.lit_bufsize;\n      s.l_buf = (1 + 2) * s.lit_bufsize;\n      s.level = level;\n      s.strategy = strategy;\n      s.method = method;\n      return deflateReset(strm);\n    }\n    function deflateInit(strm, level) {\n      return deflateInit2(strm, level, Z_DEFLATED, MAX_WBITS, DEF_MEM_LEVEL, Z_DEFAULT_STRATEGY);\n    }\n    function deflate(strm, flush) {\n      var old_flush, s;\n      var beg, val;\n      if (!strm || !strm.state ||\n        flush > Z_BLOCK || flush < 0) {\n        return strm ? err(strm, Z_STREAM_ERROR) : Z_STREAM_ERROR;\n      }\n      s = strm.state;\n      if (!strm.output ||\n          (!strm.input && strm.avail_in !== 0) ||\n          (s.status === FINISH_STATE && flush !== Z_FINISH)) {\n        return err(strm, (strm.avail_out === 0) ? Z_BUF_ERROR : Z_STREAM_ERROR);\n      }\n      s.strm = strm;\n      old_flush = s.last_flush;\n      s.last_flush = flush;\n      if (s.status === INIT_STATE) {\n        if (s.wrap === 2) {\n          strm.adler = 0;\n          put_byte(s, 31);\n          put_byte(s, 139);\n          put_byte(s, 8);\n          if (!s.gzhead) {\n            put_byte(s, 0);\n            put_byte(s, 0);\n            put_byte(s, 0);\n            put_byte(s, 0);\n            put_byte(s, 0);\n            put_byte(s, s.level === 9 ? 2 :\n                        (s.strategy >= Z_HUFFMAN_ONLY || s.level < 2 ?\n                         4 : 0));\n            put_byte(s, OS_CODE);\n            s.status = BUSY_STATE;\n          }\n          else {\n            put_byte(s, (s.gzhead.text ? 1 : 0) +\n                        (s.gzhead.hcrc ? 2 : 0) +\n                        (!s.gzhead.extra ? 0 : 4) +\n                        (!s.gzhead.name ? 0 : 8) +\n                        (!s.gzhead.comment ? 0 : 16)\n                    );\n            put_byte(s, s.gzhead.time & 0xff);\n            put_byte(s, (s.gzhead.time >> 8) & 0xff);\n            put_byte(s, (s.gzhead.time >> 16) & 0xff);\n            put_byte(s, (s.gzhead.time >> 24) & 0xff);\n            put_byte(s, s.level === 9 ? 2 :\n                        (s.strategy >= Z_HUFFMAN_ONLY || s.level < 2 ?\n                         4 : 0));\n            put_byte(s, s.gzhead.os & 0xff);\n            if (s.gzhead.extra && s.gzhead.extra.length) {\n              put_byte(s, s.gzhead.extra.length & 0xff);\n              put_byte(s, (s.gzhead.extra.length >> 8) & 0xff);\n            }\n            if (s.gzhead.hcrc) {\n              strm.adler = crc32(strm.adler, s.pending_buf, s.pending, 0);\n            }\n            s.gzindex = 0;\n            s.status = EXTRA_STATE;\n          }\n        }\n        else\n        {\n          var header = (Z_DEFLATED + ((s.w_bits - 8) << 4)) << 8;\n          var level_flags = -1;\n          if (s.strategy >= Z_HUFFMAN_ONLY || s.level < 2) {\n            level_flags = 0;\n          } else if (s.level < 6) {\n            level_flags = 1;\n          } else if (s.level === 6) {\n            level_flags = 2;\n          } else {\n            level_flags = 3;\n          }\n          header |= (level_flags << 6);\n          if (s.strstart !== 0) { header |= PRESET_DICT; }\n          header += 31 - (header % 31);\n          s.status = BUSY_STATE;\n          putShortMSB(s, header);\n          if (s.strstart !== 0) {\n            putShortMSB(s, strm.adler >>> 16);\n            putShortMSB(s, strm.adler & 0xffff);\n          }\n          strm.adler = 1;\n        }\n      }\n      if (s.status === EXTRA_STATE) {\n        if (s.gzhead.extra) {\n          beg = s.pending;\n          while (s.gzindex < (s.gzhead.extra.length & 0xffff)) {\n            if (s.pending === s.pending_buf_size) {\n              if (s.gzhead.hcrc && s.pending > beg) {\n                strm.adler = crc32(strm.adler, s.pending_buf, s.pending - beg, beg);\n              }\n              flush_pending(strm);\n              beg = s.pending;\n              if (s.pending === s.pending_buf_size) {\n                break;\n              }\n            }\n            put_byte(s, s.gzhead.extra[s.gzindex] & 0xff);\n            s.gzindex++;\n          }\n          if (s.gzhead.hcrc && s.pending > beg) {\n            strm.adler = crc32(strm.adler, s.pending_buf, s.pending - beg, beg);\n          }\n          if (s.gzindex === s.gzhead.extra.length) {\n            s.gzindex = 0;\n            s.status = NAME_STATE;\n          }\n        }\n        else {\n          s.status = NAME_STATE;\n        }\n      }\n      if (s.status === NAME_STATE) {\n        if (s.gzhead.name) {\n          beg = s.pending;\n          do {\n            if (s.pending === s.pending_buf_size) {\n              if (s.gzhead.hcrc && s.pending > beg) {\n                strm.adler = crc32(strm.adler, s.pending_buf, s.pending - beg, beg);\n              }\n              flush_pending(strm);\n              beg = s.pending;\n              if (s.pending === s.pending_buf_size) {\n                val = 1;\n                break;\n              }\n            }\n            if (s.gzindex < s.gzhead.name.length) {\n              val = s.gzhead.name.charCodeAt(s.gzindex++) & 0xff;\n            } else {\n              val = 0;\n            }\n            put_byte(s, val);\n          } while (val !== 0);\n          if (s.gzhead.hcrc && s.pending > beg) {\n            strm.adler = crc32(strm.adler, s.pending_buf, s.pending - beg, beg);\n          }\n          if (val === 0) {\n            s.gzindex = 0;\n            s.status = COMMENT_STATE;\n          }\n        }\n        else {\n          s.status = COMMENT_STATE;\n        }\n      }\n      if (s.status === COMMENT_STATE) {\n        if (s.gzhead.comment) {\n          beg = s.pending;\n          do {\n            if (s.pending === s.pending_buf_size) {\n              if (s.gzhead.hcrc && s.pending > beg) {\n                strm.adler = crc32(strm.adler, s.pending_buf, s.pending - beg, beg);\n              }\n              flush_pending(strm);\n              beg = s.pending;\n              if (s.pending === s.pending_buf_size) {\n                val = 1;\n                break;\n              }\n            }\n            if (s.gzindex < s.gzhead.comment.length) {\n              val = s.gzhead.comment.charCodeAt(s.gzindex++) & 0xff;\n            } else {\n              val = 0;\n            }\n            put_byte(s, val);\n          } while (val !== 0);\n          if (s.gzhead.hcrc && s.pending > beg) {\n            strm.adler = crc32(strm.adler, s.pending_buf, s.pending - beg, beg);\n          }\n          if (val === 0) {\n            s.status = HCRC_STATE;\n          }\n        }\n        else {\n          s.status = HCRC_STATE;\n        }\n      }\n      if (s.status === HCRC_STATE) {\n        if (s.gzhead.hcrc) {\n          if (s.pending + 2 > s.pending_buf_size) {\n            flush_pending(strm);\n          }\n          if (s.pending + 2 <= s.pending_buf_size) {\n            put_byte(s, strm.adler & 0xff);\n            put_byte(s, (strm.adler >> 8) & 0xff);\n            strm.adler = 0;\n            s.status = BUSY_STATE;\n          }\n        }\n        else {\n          s.status = BUSY_STATE;\n        }\n      }\n      if (s.pending !== 0) {\n        flush_pending(strm);\n        if (strm.avail_out === 0) {\n          s.last_flush = -1;\n          return Z_OK;\n        }\n      } else if (strm.avail_in === 0 && rank(flush) <= rank(old_flush) &&\n        flush !== Z_FINISH) {\n        return err(strm, Z_BUF_ERROR);\n      }\n      if (s.status === FINISH_STATE && strm.avail_in !== 0) {\n        return err(strm, Z_BUF_ERROR);\n      }\n      if (strm.avail_in !== 0 || s.lookahead !== 0 ||\n        (flush !== Z_NO_FLUSH && s.status !== FINISH_STATE)) {\n        var bstate = (s.strategy === Z_HUFFMAN_ONLY) ? deflate_huff(s, flush) :\n          (s.strategy === Z_RLE ? deflate_rle(s, flush) :\n            configuration_table[s.level].func(s, flush));\n        if (bstate === BS_FINISH_STARTED || bstate === BS_FINISH_DONE) {\n          s.status = FINISH_STATE;\n        }\n        if (bstate === BS_NEED_MORE || bstate === BS_FINISH_STARTED) {\n          if (strm.avail_out === 0) {\n            s.last_flush = -1;\n          }\n          return Z_OK;\n        }\n        if (bstate === BS_BLOCK_DONE) {\n          if (flush === Z_PARTIAL_FLUSH) {\n            trees._tr_align(s);\n          }\n          else if (flush !== Z_BLOCK) {\n            trees._tr_stored_block(s, 0, 0, false);\n            if (flush === Z_FULL_FLUSH) {\n              zero(s.head);\n              if (s.lookahead === 0) {\n                s.strstart = 0;\n                s.block_start = 0;\n                s.insert = 0;\n              }\n            }\n          }\n          flush_pending(strm);\n          if (strm.avail_out === 0) {\n            s.last_flush = -1;\n            return Z_OK;\n          }\n        }\n      }\n      if (flush !== Z_FINISH) { return Z_OK; }\n      if (s.wrap <= 0) { return Z_STREAM_END; }\n      if (s.wrap === 2) {\n        put_byte(s, strm.adler & 0xff);\n        put_byte(s, (strm.adler >> 8) & 0xff);\n        put_byte(s, (strm.adler >> 16) & 0xff);\n        put_byte(s, (strm.adler >> 24) & 0xff);\n        put_byte(s, strm.total_in & 0xff);\n        put_byte(s, (strm.total_in >> 8) & 0xff);\n        put_byte(s, (strm.total_in >> 16) & 0xff);\n        put_byte(s, (strm.total_in >> 24) & 0xff);\n      }\n      else\n      {\n        putShortMSB(s, strm.adler >>> 16);\n        putShortMSB(s, strm.adler & 0xffff);\n      }\n      flush_pending(strm);\n      if (s.wrap > 0) { s.wrap = -s.wrap; }\n      return s.pending !== 0 ? Z_OK : Z_STREAM_END;\n    }\n    function deflateEnd(strm) {\n      var status;\n      if (!strm || !strm.state) {\n        return Z_STREAM_ERROR;\n      }\n      status = strm.state.status;\n      if (status !== INIT_STATE &&\n        status !== EXTRA_STATE &&\n        status !== NAME_STATE &&\n        status !== COMMENT_STATE &&\n        status !== HCRC_STATE &&\n        status !== BUSY_STATE &&\n        status !== FINISH_STATE\n      ) {\n        return err(strm, Z_STREAM_ERROR);\n      }\n      strm.state = null;\n      return status === BUSY_STATE ? err(strm, Z_DATA_ERROR) : Z_OK;\n    }\n    function deflateSetDictionary(strm, dictionary) {\n      var dictLength = dictionary.length;\n      var s;\n      var str, n;\n      var wrap;\n      var avail;\n      var next;\n      var input;\n      var tmpDict;\n      if (!strm || !strm.state) {\n        return Z_STREAM_ERROR;\n      }\n      s = strm.state;\n      wrap = s.wrap;\n      if (wrap === 2 || (wrap === 1 && s.status !== INIT_STATE) || s.lookahead) {\n        return Z_STREAM_ERROR;\n      }\n      if (wrap === 1) {\n        strm.adler = adler32(strm.adler, dictionary, dictLength, 0);\n      }\n      s.wrap = 0;\n      if (dictLength >= s.w_size) {\n        if (wrap === 0) {\n          zero(s.head);\n          s.strstart = 0;\n          s.block_start = 0;\n          s.insert = 0;\n        }\n        tmpDict = new utils.Buf8(s.w_size);\n        utils.arraySet(tmpDict, dictionary, dictLength - s.w_size, s.w_size, 0);\n        dictionary = tmpDict;\n        dictLength = s.w_size;\n      }\n      avail = strm.avail_in;\n      next = strm.next_in;\n      input = strm.input;\n      strm.avail_in = dictLength;\n      strm.next_in = 0;\n      strm.input = dictionary;\n      fill_window(s);\n      while (s.lookahead >= MIN_MATCH) {\n        str = s.strstart;\n        n = s.lookahead - (MIN_MATCH - 1);\n        do {\n          s.ins_h = ((s.ins_h << s.hash_shift) ^ s.window[str + MIN_MATCH - 1]) & s.hash_mask;\n          s.prev[str & s.w_mask] = s.head[s.ins_h];\n          s.head[s.ins_h] = str;\n          str++;\n        } while (--n);\n        s.strstart = str;\n        s.lookahead = MIN_MATCH - 1;\n        fill_window(s);\n      }\n      s.strstart += s.lookahead;\n      s.block_start = s.strstart;\n      s.insert = s.lookahead;\n      s.lookahead = 0;\n      s.match_length = s.prev_length = MIN_MATCH - 1;\n      s.match_available = 0;\n      strm.next_in = next;\n      strm.input = input;\n      strm.avail_in = avail;\n      s.wrap = wrap;\n      return Z_OK;\n    }\n    exports.deflateInit = deflateInit;\n    exports.deflateInit2 = deflateInit2;\n    exports.deflateReset = deflateReset;\n    exports.deflateResetKeep = deflateResetKeep;\n    exports.deflateSetHeader = deflateSetHeader;\n    exports.deflate = deflate;\n    exports.deflateEnd = deflateEnd;\n    exports.deflateSetDictionary = deflateSetDictionary;\n    exports.deflateInfo = 'pako deflate (from Nodeca project)';\n    },{\"../utils/common\":35,\"./adler32\":36,\"./crc32\":38,\"./messages\":43,\"./trees\":44}],40:[function(require,module,exports){\n    var BAD = 30;\n    var TYPE = 12;\n    module.exports = function inflate_fast(strm, start) {\n      var state;\n      var _in;\n      var last;\n      var _out;\n      var beg;\n      var end;\n      var dmax;\n      var wsize;\n      var whave;\n      var wnext;\n      var s_window;\n      var hold;\n      var bits;\n      var lcode;\n      var dcode;\n      var lmask;\n      var dmask;\n      var here;\n      var op;\n      var len;\n      var dist;\n      var from;\n      var from_source;\n      var input, output;\n      state = strm.state;\n      _in = strm.next_in;\n      input = strm.input;\n      last = _in + (strm.avail_in - 5);\n      _out = strm.next_out;\n      output = strm.output;\n      beg = _out - (start - strm.avail_out);\n      end = _out + (strm.avail_out - 257);\n      dmax = state.dmax;\n      wsize = state.wsize;\n      whave = state.whave;\n      wnext = state.wnext;\n      s_window = state.window;\n      hold = state.hold;\n      bits = state.bits;\n      lcode = state.lencode;\n      dcode = state.distcode;\n      lmask = (1 << state.lenbits) - 1;\n      dmask = (1 << state.distbits) - 1;\n      top:\n      do {\n        if (bits < 15) {\n          hold += input[_in++] << bits;\n          bits += 8;\n          hold += input[_in++] << bits;\n          bits += 8;\n        }\n        here = lcode[hold & lmask];\n        dolen:\n        for (;;) {\n          op = here >>> 24;\n          hold >>>= op;\n          bits -= op;\n          op = (here >>> 16) & 0xff;\n          if (op === 0) {\n            output[_out++] = here & 0xffff;\n          }\n          else if (op & 16) {\n            len = here & 0xffff;\n            op &= 15;\n            if (op) {\n              if (bits < op) {\n                hold += input[_in++] << bits;\n                bits += 8;\n              }\n              len += hold & ((1 << op) - 1);\n              hold >>>= op;\n              bits -= op;\n            }\n            if (bits < 15) {\n              hold += input[_in++] << bits;\n              bits += 8;\n              hold += input[_in++] << bits;\n              bits += 8;\n            }\n            here = dcode[hold & dmask];\n            dodist:\n            for (;;) {\n              op = here >>> 24;\n              hold >>>= op;\n              bits -= op;\n              op = (here >>> 16) & 0xff;\n              if (op & 16) {\n                dist = here & 0xffff;\n                op &= 15;\n                if (bits < op) {\n                  hold += input[_in++] << bits;\n                  bits += 8;\n                  if (bits < op) {\n                    hold += input[_in++] << bits;\n                    bits += 8;\n                  }\n                }\n                dist += hold & ((1 << op) - 1);\n                if (dist > dmax) {\n                  strm.msg = 'invalid distance too far back';\n                  state.mode = BAD;\n                  break top;\n                }\n                hold >>>= op;\n                bits -= op;\n                op = _out - beg;\n                if (dist > op) {\n                  op = dist - op;\n                  if (op > whave) {\n                    if (state.sane) {\n                      strm.msg = 'invalid distance too far back';\n                      state.mode = BAD;\n                      break top;\n                    }\n                  }\n                  from = 0;\n                  from_source = s_window;\n                  if (wnext === 0) {\n                    from += wsize - op;\n                    if (op < len) {\n                      len -= op;\n                      do {\n                        output[_out++] = s_window[from++];\n                      } while (--op);\n                      from = _out - dist;\n                      from_source = output;\n                    }\n                  }\n                  else if (wnext < op) {\n                    from += wsize + wnext - op;\n                    op -= wnext;\n                    if (op < len) {\n                      len -= op;\n                      do {\n                        output[_out++] = s_window[from++];\n                      } while (--op);\n                      from = 0;\n                      if (wnext < len) {\n                        op = wnext;\n                        len -= op;\n                        do {\n                          output[_out++] = s_window[from++];\n                        } while (--op);\n                        from = _out - dist;\n                        from_source = output;\n                      }\n                    }\n                  }\n                  else {\n                    from += wnext - op;\n                    if (op < len) {\n                      len -= op;\n                      do {\n                        output[_out++] = s_window[from++];\n                      } while (--op);\n                      from = _out - dist;\n                      from_source = output;\n                    }\n                  }\n                  while (len > 2) {\n                    output[_out++] = from_source[from++];\n                    output[_out++] = from_source[from++];\n                    output[_out++] = from_source[from++];\n                    len -= 3;\n                  }\n                  if (len) {\n                    output[_out++] = from_source[from++];\n                    if (len > 1) {\n                      output[_out++] = from_source[from++];\n                    }\n                  }\n                }\n                else {\n                  from = _out - dist;\n                  do {\n                    output[_out++] = output[from++];\n                    output[_out++] = output[from++];\n                    output[_out++] = output[from++];\n                    len -= 3;\n                  } while (len > 2);\n                  if (len) {\n                    output[_out++] = output[from++];\n                    if (len > 1) {\n                      output[_out++] = output[from++];\n                    }\n                  }\n                }\n              }\n              else if ((op & 64) === 0) {\n                here = dcode[(here & 0xffff) + (hold & ((1 << op) - 1))];\n                continue dodist;\n              }\n              else {\n                strm.msg = 'invalid distance code';\n                state.mode = BAD;\n                break top;\n              }\n              break;\n            }\n          }\n          else if ((op & 64) === 0) {\n            here = lcode[(here & 0xffff) + (hold & ((1 << op) - 1))];\n            continue dolen;\n          }\n          else if (op & 32) {\n            state.mode = TYPE;\n            break top;\n          }\n          else {\n            strm.msg = 'invalid literal/length code';\n            state.mode = BAD;\n            break top;\n          }\n          break;\n        }\n      } while (_in < last && _out < end);\n      len = bits >> 3;\n      _in -= len;\n      bits -= len << 3;\n      hold &= (1 << bits) - 1;\n      strm.next_in = _in;\n      strm.next_out = _out;\n      strm.avail_in = (_in < last ? 5 + (last - _in) : 5 - (_in - last));\n      strm.avail_out = (_out < end ? 257 + (end - _out) : 257 - (_out - end));\n      state.hold = hold;\n      state.bits = bits;\n      return;\n    };\n    },{}],41:[function(require,module,exports){\n    var utils         = require('../utils/common');\n    var adler32       = require('./adler32');\n    var crc32         = require('./crc32');\n    var inflate_fast  = require('./inffast');\n    var inflate_table = require('./inftrees');\n    var CODES = 0;\n    var LENS = 1;\n    var DISTS = 2;\n    var Z_FINISH        = 4;\n    var Z_BLOCK         = 5;\n    var Z_TREES         = 6;\n    var Z_OK            = 0;\n    var Z_STREAM_END    = 1;\n    var Z_NEED_DICT     = 2;\n    var Z_STREAM_ERROR  = -2;\n    var Z_DATA_ERROR    = -3;\n    var Z_MEM_ERROR     = -4;\n    var Z_BUF_ERROR     = -5;\n    var Z_DEFLATED  = 8;\n    var    HEAD = 1;\n    var    FLAGS = 2;\n    var    TIME = 3;\n    var    OS = 4;\n    var    EXLEN = 5;\n    var    EXTRA = 6;\n    var    NAME = 7;\n    var    COMMENT = 8;\n    var    HCRC = 9;\n    var    DICTID = 10;\n    var    DICT = 11;\n    var        TYPE = 12;\n    var        TYPEDO = 13;\n    var        STORED = 14;\n    var        COPY_ = 15;\n    var        COPY = 16;\n    var        TABLE = 17;\n    var        LENLENS = 18;\n    var        CODELENS = 19;\n    var            LEN_ = 20;\n    var            LEN = 21;\n    var            LENEXT = 22;\n    var            DIST = 23;\n    var            DISTEXT = 24;\n    var            MATCH = 25;\n    var            LIT = 26;\n    var    CHECK = 27;\n    var    LENGTH = 28;\n    var    DONE = 29;\n    var    BAD = 30;\n    var    MEM = 31;\n    var    SYNC = 32;\n    var ENOUGH_LENS = 852;\n    var ENOUGH_DISTS = 592;\n    var MAX_WBITS = 15;\n    var DEF_WBITS = MAX_WBITS;\n    function zswap32(q) {\n      return  (((q >>> 24) & 0xff) +\n              ((q >>> 8) & 0xff00) +\n              ((q & 0xff00) << 8) +\n              ((q & 0xff) << 24));\n    }\n    function InflateState() {\n      this.mode = 0;\n      this.last = false;\n      this.wrap = 0;\n      this.havedict = false;\n      this.flags = 0;\n      this.dmax = 0;\n      this.check = 0;\n      this.total = 0;\n      this.head = null;\n      this.wbits = 0;\n      this.wsize = 0;\n      this.whave = 0;\n      this.wnext = 0;\n      this.window = null;\n      this.hold = 0;\n      this.bits = 0;\n      this.length = 0;\n      this.offset = 0;\n      this.extra = 0;\n      this.lencode = null;\n      this.distcode = null;\n      this.lenbits = 0;\n      this.distbits = 0;\n      this.ncode = 0;\n      this.nlen = 0;\n      this.ndist = 0;\n      this.have = 0;\n      this.next = null;\n      this.lens = new utils.Buf16(320);\n      this.work = new utils.Buf16(288);\n      this.lendyn = null;\n      this.distdyn = null;\n      this.sane = 0;\n      this.back = 0;\n      this.was = 0;\n    }\n    function inflateResetKeep(strm) {\n      var state;\n      if (!strm || !strm.state) { return Z_STREAM_ERROR; }\n      state = strm.state;\n      strm.total_in = strm.total_out = state.total = 0;\n      strm.msg = '';\n      if (state.wrap) {\n        strm.adler = state.wrap & 1;\n      }\n      state.mode = HEAD;\n      state.last = 0;\n      state.havedict = 0;\n      state.dmax = 32768;\n      state.head = null;\n      state.hold = 0;\n      state.bits = 0;\n      state.lencode = state.lendyn = new utils.Buf32(ENOUGH_LENS);\n      state.distcode = state.distdyn = new utils.Buf32(ENOUGH_DISTS);\n      state.sane = 1;\n      state.back = -1;\n      return Z_OK;\n    }\n    function inflateReset(strm) {\n      var state;\n      if (!strm || !strm.state) { return Z_STREAM_ERROR; }\n      state = strm.state;\n      state.wsize = 0;\n      state.whave = 0;\n      state.wnext = 0;\n      return inflateResetKeep(strm);\n    }\n    function inflateReset2(strm, windowBits) {\n      var wrap;\n      var state;\n      if (!strm || !strm.state) { return Z_STREAM_ERROR; }\n      state = strm.state;\n      if (windowBits < 0) {\n        wrap = 0;\n        windowBits = -windowBits;\n      }\n      else {\n        wrap = (windowBits >> 4) + 1;\n        if (windowBits < 48) {\n          windowBits &= 15;\n        }\n      }\n      if (windowBits && (windowBits < 8 || windowBits > 15)) {\n        return Z_STREAM_ERROR;\n      }\n      if (state.window !== null && state.wbits !== windowBits) {\n        state.window = null;\n      }\n      state.wrap = wrap;\n      state.wbits = windowBits;\n      return inflateReset(strm);\n    }\n    function inflateInit2(strm, windowBits) {\n      var ret;\n      var state;\n      if (!strm) { return Z_STREAM_ERROR; }\n      state = new InflateState();\n      strm.state = state;\n      state.window = null;\n      ret = inflateReset2(strm, windowBits);\n      if (ret !== Z_OK) {\n        strm.state = null;\n      }\n      return ret;\n    }\n    function inflateInit(strm) {\n      return inflateInit2(strm, DEF_WBITS);\n    }\n    var virgin = true;\n    var lenfix, distfix;\n    function fixedtables(state) {\n      if (virgin) {\n        var sym;\n        lenfix = new utils.Buf32(512);\n        distfix = new utils.Buf32(32);\n        sym = 0;\n        while (sym < 144) { state.lens[sym++] = 8; }\n        while (sym < 256) { state.lens[sym++] = 9; }\n        while (sym < 280) { state.lens[sym++] = 7; }\n        while (sym < 288) { state.lens[sym++] = 8; }\n        inflate_table(LENS,  state.lens, 0, 288, lenfix,   0, state.work, { bits: 9 });\n        sym = 0;\n        while (sym < 32) { state.lens[sym++] = 5; }\n        inflate_table(DISTS, state.lens, 0, 32,   distfix, 0, state.work, { bits: 5 });\n        virgin = false;\n      }\n      state.lencode = lenfix;\n      state.lenbits = 9;\n      state.distcode = distfix;\n      state.distbits = 5;\n    }\n    function updatewindow(strm, src, end, copy) {\n      var dist;\n      var state = strm.state;\n      if (state.window === null) {\n        state.wsize = 1 << state.wbits;\n        state.wnext = 0;\n        state.whave = 0;\n        state.window = new utils.Buf8(state.wsize);\n      }\n      if (copy >= state.wsize) {\n        utils.arraySet(state.window, src, end - state.wsize, state.wsize, 0);\n        state.wnext = 0;\n        state.whave = state.wsize;\n      }\n      else {\n        dist = state.wsize - state.wnext;\n        if (dist > copy) {\n          dist = copy;\n        }\n        utils.arraySet(state.window, src, end - copy, dist, state.wnext);\n        copy -= dist;\n        if (copy) {\n          utils.arraySet(state.window, src, end - copy, copy, 0);\n          state.wnext = copy;\n          state.whave = state.wsize;\n        }\n        else {\n          state.wnext += dist;\n          if (state.wnext === state.wsize) { state.wnext = 0; }\n          if (state.whave < state.wsize) { state.whave += dist; }\n        }\n      }\n      return 0;\n    }\n    function inflate(strm, flush) {\n      var state;\n      var input, output;\n      var next;\n      var put;\n      var have, left;\n      var hold;\n      var bits;\n      var _in, _out;\n      var copy;\n      var from;\n      var from_source;\n      var here = 0;\n      var here_bits, here_op, here_val;\n      var last_bits, last_op, last_val;\n      var len;\n      var ret;\n      var hbuf = new utils.Buf8(4);\n      var opts;\n      var n;\n      var order =\n        [ 16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15 ];\n      if (!strm || !strm.state || !strm.output ||\n          (!strm.input && strm.avail_in !== 0)) {\n        return Z_STREAM_ERROR;\n      }\n      state = strm.state;\n      if (state.mode === TYPE) { state.mode = TYPEDO; }\n      put = strm.next_out;\n      output = strm.output;\n      left = strm.avail_out;\n      next = strm.next_in;\n      input = strm.input;\n      have = strm.avail_in;\n      hold = state.hold;\n      bits = state.bits;\n      _in = have;\n      _out = left;\n      ret = Z_OK;\n      inf_leave:\n      for (;;) {\n        switch (state.mode) {\n          case HEAD:\n            if (state.wrap === 0) {\n              state.mode = TYPEDO;\n              break;\n            }\n            while (bits < 16) {\n              if (have === 0) { break inf_leave; }\n              have--;\n              hold += input[next++] << bits;\n              bits += 8;\n            }\n            if ((state.wrap & 2) && hold === 0x8b1f) {\n              state.check = 0;\n              hbuf[0] = hold & 0xff;\n              hbuf[1] = (hold >>> 8) & 0xff;\n              state.check = crc32(state.check, hbuf, 2, 0);\n              hold = 0;\n              bits = 0;\n              state.mode = FLAGS;\n              break;\n            }\n            state.flags = 0;\n            if (state.head) {\n              state.head.done = false;\n            }\n            if (!(state.wrap & 1) ||\n              (((hold & 0xff) << 8) + (hold >> 8)) % 31) {\n              strm.msg = 'incorrect header check';\n              state.mode = BAD;\n              break;\n            }\n            if ((hold & 0x0f) !== Z_DEFLATED) {\n              strm.msg = 'unknown compression method';\n              state.mode = BAD;\n              break;\n            }\n            hold >>>= 4;\n            bits -= 4;\n            len = (hold & 0x0f) + 8;\n            if (state.wbits === 0) {\n              state.wbits = len;\n            }\n            else if (len > state.wbits) {\n              strm.msg = 'invalid window size';\n              state.mode = BAD;\n              break;\n            }\n            state.dmax = 1 << len;\n            strm.adler = state.check = 1;\n            state.mode = hold & 0x200 ? DICTID : TYPE;\n            hold = 0;\n            bits = 0;\n            break;\n          case FLAGS:\n            while (bits < 16) {\n              if (have === 0) { break inf_leave; }\n              have--;\n              hold += input[next++] << bits;\n              bits += 8;\n            }\n            state.flags = hold;\n            if ((state.flags & 0xff) !== Z_DEFLATED) {\n              strm.msg = 'unknown compression method';\n              state.mode = BAD;\n              break;\n            }\n            if (state.flags & 0xe000) {\n              strm.msg = 'unknown header flags set';\n              state.mode = BAD;\n              break;\n            }\n            if (state.head) {\n              state.head.text = ((hold >> 8) & 1);\n            }\n            if (state.flags & 0x0200) {\n              hbuf[0] = hold & 0xff;\n              hbuf[1] = (hold >>> 8) & 0xff;\n              state.check = crc32(state.check, hbuf, 2, 0);\n            }\n            hold = 0;\n            bits = 0;\n            state.mode = TIME;\n          case TIME:\n            while (bits < 32) {\n              if (have === 0) { break inf_leave; }\n              have--;\n              hold += input[next++] << bits;\n              bits += 8;\n            }\n            if (state.head) {\n              state.head.time = hold;\n            }\n            if (state.flags & 0x0200) {\n              hbuf[0] = hold & 0xff;\n              hbuf[1] = (hold >>> 8) & 0xff;\n              hbuf[2] = (hold >>> 16) & 0xff;\n              hbuf[3] = (hold >>> 24) & 0xff;\n              state.check = crc32(state.check, hbuf, 4, 0);\n            }\n            hold = 0;\n            bits = 0;\n            state.mode = OS;\n          case OS:\n            while (bits < 16) {\n              if (have === 0) { break inf_leave; }\n              have--;\n              hold += input[next++] << bits;\n              bits += 8;\n            }\n            if (state.head) {\n              state.head.xflags = (hold & 0xff);\n              state.head.os = (hold >> 8);\n            }\n            if (state.flags & 0x0200) {\n              hbuf[0] = hold & 0xff;\n              hbuf[1] = (hold >>> 8) & 0xff;\n              state.check = crc32(state.check, hbuf, 2, 0);\n            }\n            hold = 0;\n            bits = 0;\n            state.mode = EXLEN;\n          case EXLEN:\n            if (state.flags & 0x0400) {\n              while (bits < 16) {\n                if (have === 0) { break inf_leave; }\n                have--;\n                hold += input[next++] << bits;\n                bits += 8;\n              }\n              state.length = hold;\n              if (state.head) {\n                state.head.extra_len = hold;\n              }\n              if (state.flags & 0x0200) {\n                hbuf[0] = hold & 0xff;\n                hbuf[1] = (hold >>> 8) & 0xff;\n                state.check = crc32(state.check, hbuf, 2, 0);\n              }\n              hold = 0;\n              bits = 0;\n            }\n            else if (state.head) {\n              state.head.extra = null;\n            }\n            state.mode = EXTRA;\n          case EXTRA:\n            if (state.flags & 0x0400) {\n              copy = state.length;\n              if (copy > have) { copy = have; }\n              if (copy) {\n                if (state.head) {\n                  len = state.head.extra_len - state.length;\n                  if (!state.head.extra) {\n                    state.head.extra = new Array(state.head.extra_len);\n                  }\n                  utils.arraySet(\n                    state.head.extra,\n                    input,\n                    next,\n                    copy,\n                    len\n                  );\n                }\n                if (state.flags & 0x0200) {\n                  state.check = crc32(state.check, input, copy, next);\n                }\n                have -= copy;\n                next += copy;\n                state.length -= copy;\n              }\n              if (state.length) { break inf_leave; }\n            }\n            state.length = 0;\n            state.mode = NAME;\n          case NAME:\n            if (state.flags & 0x0800) {\n              if (have === 0) { break inf_leave; }\n              copy = 0;\n              do {\n                len = input[next + copy++];\n                if (state.head && len &&\n                    (state.length < 65536 )) {\n                  state.head.name += String.fromCharCode(len);\n                }\n              } while (len && copy < have);\n              if (state.flags & 0x0200) {\n                state.check = crc32(state.check, input, copy, next);\n              }\n              have -= copy;\n              next += copy;\n              if (len) { break inf_leave; }\n            }\n            else if (state.head) {\n              state.head.name = null;\n            }\n            state.length = 0;\n            state.mode = COMMENT;\n          case COMMENT:\n            if (state.flags & 0x1000) {\n              if (have === 0) { break inf_leave; }\n              copy = 0;\n              do {\n                len = input[next + copy++];\n                if (state.head && len &&\n                    (state.length < 65536 )) {\n                  state.head.comment += String.fromCharCode(len);\n                }\n              } while (len && copy < have);\n              if (state.flags & 0x0200) {\n                state.check = crc32(state.check, input, copy, next);\n              }\n              have -= copy;\n              next += copy;\n              if (len) { break inf_leave; }\n            }\n            else if (state.head) {\n              state.head.comment = null;\n            }\n            state.mode = HCRC;\n          case HCRC:\n            if (state.flags & 0x0200) {\n              while (bits < 16) {\n                if (have === 0) { break inf_leave; }\n                have--;\n                hold += input[next++] << bits;\n                bits += 8;\n              }\n              if (hold !== (state.check & 0xffff)) {\n                strm.msg = 'header crc mismatch';\n                state.mode = BAD;\n                break;\n              }\n              hold = 0;\n              bits = 0;\n            }\n            if (state.head) {\n              state.head.hcrc = ((state.flags >> 9) & 1);\n              state.head.done = true;\n            }\n            strm.adler = state.check = 0;\n            state.mode = TYPE;\n            break;\n          case DICTID:\n            while (bits < 32) {\n              if (have === 0) { break inf_leave; }\n              have--;\n              hold += input[next++] << bits;\n              bits += 8;\n            }\n            strm.adler = state.check = zswap32(hold);\n            hold = 0;\n            bits = 0;\n            state.mode = DICT;\n          case DICT:\n            if (state.havedict === 0) {\n              strm.next_out = put;\n              strm.avail_out = left;\n              strm.next_in = next;\n              strm.avail_in = have;\n              state.hold = hold;\n              state.bits = bits;\n              return Z_NEED_DICT;\n            }\n            strm.adler = state.check = 1;\n            state.mode = TYPE;\n          case TYPE:\n            if (flush === Z_BLOCK || flush === Z_TREES) { break inf_leave; }\n          case TYPEDO:\n            if (state.last) {\n              hold >>>= bits & 7;\n              bits -= bits & 7;\n              state.mode = CHECK;\n              break;\n            }\n            while (bits < 3) {\n              if (have === 0) { break inf_leave; }\n              have--;\n              hold += input[next++] << bits;\n              bits += 8;\n            }\n            state.last = (hold & 0x01);\n            hold >>>= 1;\n            bits -= 1;\n            switch ((hold & 0x03)) {\n              case 0:\n                state.mode = STORED;\n                break;\n              case 1:\n                fixedtables(state);\n                state.mode = LEN_;\n                if (flush === Z_TREES) {\n                  hold >>>= 2;\n                  bits -= 2;\n                  break inf_leave;\n                }\n                break;\n              case 2:\n                state.mode = TABLE;\n                break;\n              case 3:\n                strm.msg = 'invalid block type';\n                state.mode = BAD;\n            }\n            hold >>>= 2;\n            bits -= 2;\n            break;\n          case STORED:\n            hold >>>= bits & 7;\n            bits -= bits & 7;\n            while (bits < 32) {\n              if (have === 0) { break inf_leave; }\n              have--;\n              hold += input[next++] << bits;\n              bits += 8;\n            }\n            if ((hold & 0xffff) !== ((hold >>> 16) ^ 0xffff)) {\n              strm.msg = 'invalid stored block lengths';\n              state.mode = BAD;\n              break;\n            }\n            state.length = hold & 0xffff;\n            hold = 0;\n            bits = 0;\n            state.mode = COPY_;\n            if (flush === Z_TREES) { break inf_leave; }\n          case COPY_:\n            state.mode = COPY;\n          case COPY:\n            copy = state.length;\n            if (copy) {\n              if (copy > have) { copy = have; }\n              if (copy > left) { copy = left; }\n              if (copy === 0) { break inf_leave; }\n              utils.arraySet(output, input, next, copy, put);\n              have -= copy;\n              next += copy;\n              left -= copy;\n              put += copy;\n              state.length -= copy;\n              break;\n            }\n            state.mode = TYPE;\n            break;\n          case TABLE:\n            while (bits < 14) {\n              if (have === 0) { break inf_leave; }\n              have--;\n              hold += input[next++] << bits;\n              bits += 8;\n            }\n            state.nlen = (hold & 0x1f) + 257;\n            hold >>>= 5;\n            bits -= 5;\n            state.ndist = (hold & 0x1f) + 1;\n            hold >>>= 5;\n            bits -= 5;\n            state.ncode = (hold & 0x0f) + 4;\n            hold >>>= 4;\n            bits -= 4;\n            if (state.nlen > 286 || state.ndist > 30) {\n              strm.msg = 'too many length or distance symbols';\n              state.mode = BAD;\n              break;\n            }\n            state.have = 0;\n            state.mode = LENLENS;\n          case LENLENS:\n            while (state.have < state.ncode) {\n              while (bits < 3) {\n                if (have === 0) { break inf_leave; }\n                have--;\n                hold += input[next++] << bits;\n                bits += 8;\n              }\n              state.lens[order[state.have++]] = (hold & 0x07);\n              hold >>>= 3;\n              bits -= 3;\n            }\n            while (state.have < 19) {\n              state.lens[order[state.have++]] = 0;\n            }\n            state.lencode = state.lendyn;\n            state.lenbits = 7;\n            opts = { bits: state.lenbits };\n            ret = inflate_table(CODES, state.lens, 0, 19, state.lencode, 0, state.work, opts);\n            state.lenbits = opts.bits;\n            if (ret) {\n              strm.msg = 'invalid code lengths set';\n              state.mode = BAD;\n              break;\n            }\n            state.have = 0;\n            state.mode = CODELENS;\n          case CODELENS:\n            while (state.have < state.nlen + state.ndist) {\n              for (;;) {\n                here = state.lencode[hold & ((1 << state.lenbits) - 1)];\n                here_bits = here >>> 24;\n                here_op = (here >>> 16) & 0xff;\n                here_val = here & 0xffff;\n                if ((here_bits) <= bits) { break; }\n                if (have === 0) { break inf_leave; }\n                have--;\n                hold += input[next++] << bits;\n                bits += 8;\n              }\n              if (here_val < 16) {\n                hold >>>= here_bits;\n                bits -= here_bits;\n                state.lens[state.have++] = here_val;\n              }\n              else {\n                if (here_val === 16) {\n                  n = here_bits + 2;\n                  while (bits < n) {\n                    if (have === 0) { break inf_leave; }\n                    have--;\n                    hold += input[next++] << bits;\n                    bits += 8;\n                  }\n                  hold >>>= here_bits;\n                  bits -= here_bits;\n                  if (state.have === 0) {\n                    strm.msg = 'invalid bit length repeat';\n                    state.mode = BAD;\n                    break;\n                  }\n                  len = state.lens[state.have - 1];\n                  copy = 3 + (hold & 0x03);\n                  hold >>>= 2;\n                  bits -= 2;\n                }\n                else if (here_val === 17) {\n                  n = here_bits + 3;\n                  while (bits < n) {\n                    if (have === 0) { break inf_leave; }\n                    have--;\n                    hold += input[next++] << bits;\n                    bits += 8;\n                  }\n                  hold >>>= here_bits;\n                  bits -= here_bits;\n                  len = 0;\n                  copy = 3 + (hold & 0x07);\n                  hold >>>= 3;\n                  bits -= 3;\n                }\n                else {\n                  n = here_bits + 7;\n                  while (bits < n) {\n                    if (have === 0) { break inf_leave; }\n                    have--;\n                    hold += input[next++] << bits;\n                    bits += 8;\n                  }\n                  hold >>>= here_bits;\n                  bits -= here_bits;\n                  len = 0;\n                  copy = 11 + (hold & 0x7f);\n                  hold >>>= 7;\n                  bits -= 7;\n                }\n                if (state.have + copy > state.nlen + state.ndist) {\n                  strm.msg = 'invalid bit length repeat';\n                  state.mode = BAD;\n                  break;\n                }\n                while (copy--) {\n                  state.lens[state.have++] = len;\n                }\n              }\n            }\n            if (state.mode === BAD) { break; }\n            if (state.lens[256] === 0) {\n              strm.msg = 'invalid code -- missing end-of-block';\n              state.mode = BAD;\n              break;\n            }\n            state.lenbits = 9;\n            opts = { bits: state.lenbits };\n            ret = inflate_table(LENS, state.lens, 0, state.nlen, state.lencode, 0, state.work, opts);\n            state.lenbits = opts.bits;\n            if (ret) {\n              strm.msg = 'invalid literal/lengths set';\n              state.mode = BAD;\n              break;\n            }\n            state.distbits = 6;\n            state.distcode = state.distdyn;\n            opts = { bits: state.distbits };\n            ret = inflate_table(DISTS, state.lens, state.nlen, state.ndist, state.distcode, 0, state.work, opts);\n            state.distbits = opts.bits;\n            if (ret) {\n              strm.msg = 'invalid distances set';\n              state.mode = BAD;\n              break;\n            }\n            state.mode = LEN_;\n            if (flush === Z_TREES) { break inf_leave; }\n          case LEN_:\n            state.mode = LEN;\n          case LEN:\n            if (have >= 6 && left >= 258) {\n              strm.next_out = put;\n              strm.avail_out = left;\n              strm.next_in = next;\n              strm.avail_in = have;\n              state.hold = hold;\n              state.bits = bits;\n              inflate_fast(strm, _out);\n              put = strm.next_out;\n              output = strm.output;\n              left = strm.avail_out;\n              next = strm.next_in;\n              input = strm.input;\n              have = strm.avail_in;\n              hold = state.hold;\n              bits = state.bits;\n              if (state.mode === TYPE) {\n                state.back = -1;\n              }\n              break;\n            }\n            state.back = 0;\n            for (;;) {\n              here = state.lencode[hold & ((1 << state.lenbits) - 1)];\n              here_bits = here >>> 24;\n              here_op = (here >>> 16) & 0xff;\n              here_val = here & 0xffff;\n              if (here_bits <= bits) { break; }\n              if (have === 0) { break inf_leave; }\n              have--;\n              hold += input[next++] << bits;\n              bits += 8;\n            }\n            if (here_op && (here_op & 0xf0) === 0) {\n              last_bits = here_bits;\n              last_op = here_op;\n              last_val = here_val;\n              for (;;) {\n                here = state.lencode[last_val +\n                        ((hold & ((1 << (last_bits + last_op)) - 1)) >> last_bits)];\n                here_bits = here >>> 24;\n                here_op = (here >>> 16) & 0xff;\n                here_val = here & 0xffff;\n                if ((last_bits + here_bits) <= bits) { break; }\n                if (have === 0) { break inf_leave; }\n                have--;\n                hold += input[next++] << bits;\n                bits += 8;\n              }\n              hold >>>= last_bits;\n              bits -= last_bits;\n              state.back += last_bits;\n            }\n            hold >>>= here_bits;\n            bits -= here_bits;\n            state.back += here_bits;\n            state.length = here_val;\n            if (here_op === 0) {\n              state.mode = LIT;\n              break;\n            }\n            if (here_op & 32) {\n              state.back = -1;\n              state.mode = TYPE;\n              break;\n            }\n            if (here_op & 64) {\n              strm.msg = 'invalid literal/length code';\n              state.mode = BAD;\n              break;\n            }\n            state.extra = here_op & 15;\n            state.mode = LENEXT;\n          case LENEXT:\n            if (state.extra) {\n              n = state.extra;\n              while (bits < n) {\n                if (have === 0) { break inf_leave; }\n                have--;\n                hold += input[next++] << bits;\n                bits += 8;\n              }\n              state.length += hold & ((1 << state.extra) - 1);\n              hold >>>= state.extra;\n              bits -= state.extra;\n              state.back += state.extra;\n            }\n            state.was = state.length;\n            state.mode = DIST;\n          case DIST:\n            for (;;) {\n              here = state.distcode[hold & ((1 << state.distbits) - 1)];\n              here_bits = here >>> 24;\n              here_op = (here >>> 16) & 0xff;\n              here_val = here & 0xffff;\n              if ((here_bits) <= bits) { break; }\n              if (have === 0) { break inf_leave; }\n              have--;\n              hold += input[next++] << bits;\n              bits += 8;\n            }\n            if ((here_op & 0xf0) === 0) {\n              last_bits = here_bits;\n              last_op = here_op;\n              last_val = here_val;\n              for (;;) {\n                here = state.distcode[last_val +\n                        ((hold & ((1 << (last_bits + last_op)) - 1)) >> last_bits)];\n                here_bits = here >>> 24;\n                here_op = (here >>> 16) & 0xff;\n                here_val = here & 0xffff;\n                if ((last_bits + here_bits) <= bits) { break; }\n                if (have === 0) { break inf_leave; }\n                have--;\n                hold += input[next++] << bits;\n                bits += 8;\n              }\n              hold >>>= last_bits;\n              bits -= last_bits;\n              state.back += last_bits;\n            }\n            hold >>>= here_bits;\n            bits -= here_bits;\n            state.back += here_bits;\n            if (here_op & 64) {\n              strm.msg = 'invalid distance code';\n              state.mode = BAD;\n              break;\n            }\n            state.offset = here_val;\n            state.extra = (here_op) & 15;\n            state.mode = DISTEXT;\n          case DISTEXT:\n            if (state.extra) {\n              n = state.extra;\n              while (bits < n) {\n                if (have === 0) { break inf_leave; }\n                have--;\n                hold += input[next++] << bits;\n                bits += 8;\n              }\n              state.offset += hold & ((1 << state.extra) - 1);\n              hold >>>= state.extra;\n              bits -= state.extra;\n              state.back += state.extra;\n            }\n            if (state.offset > state.dmax) {\n              strm.msg = 'invalid distance too far back';\n              state.mode = BAD;\n              break;\n            }\n            state.mode = MATCH;\n          case MATCH:\n            if (left === 0) { break inf_leave; }\n            copy = _out - left;\n            if (state.offset > copy) {\n              copy = state.offset - copy;\n              if (copy > state.whave) {\n                if (state.sane) {\n                  strm.msg = 'invalid distance too far back';\n                  state.mode = BAD;\n                  break;\n                }\n              }\n              if (copy > state.wnext) {\n                copy -= state.wnext;\n                from = state.wsize - copy;\n              }\n              else {\n                from = state.wnext - copy;\n              }\n              if (copy > state.length) { copy = state.length; }\n              from_source = state.window;\n            }\n            else {\n              from_source = output;\n              from = put - state.offset;\n              copy = state.length;\n            }\n            if (copy > left) { copy = left; }\n            left -= copy;\n            state.length -= copy;\n            do {\n              output[put++] = from_source[from++];\n            } while (--copy);\n            if (state.length === 0) { state.mode = LEN; }\n            break;\n          case LIT:\n            if (left === 0) { break inf_leave; }\n            output[put++] = state.length;\n            left--;\n            state.mode = LEN;\n            break;\n          case CHECK:\n            if (state.wrap) {\n              while (bits < 32) {\n                if (have === 0) { break inf_leave; }\n                have--;\n                hold |= input[next++] << bits;\n                bits += 8;\n              }\n              _out -= left;\n              strm.total_out += _out;\n              state.total += _out;\n              if (_out) {\n                strm.adler = state.check =\n                    (state.flags ? crc32(state.check, output, _out, put - _out) : adler32(state.check, output, _out, put - _out));\n              }\n              _out = left;\n              if ((state.flags ? hold : zswap32(hold)) !== state.check) {\n                strm.msg = 'incorrect data check';\n                state.mode = BAD;\n                break;\n              }\n              hold = 0;\n              bits = 0;\n            }\n            state.mode = LENGTH;\n          case LENGTH:\n            if (state.wrap && state.flags) {\n              while (bits < 32) {\n                if (have === 0) { break inf_leave; }\n                have--;\n                hold += input[next++] << bits;\n                bits += 8;\n              }\n              if (hold !== (state.total & 0xffffffff)) {\n                strm.msg = 'incorrect length check';\n                state.mode = BAD;\n                break;\n              }\n              hold = 0;\n              bits = 0;\n            }\n            state.mode = DONE;\n          case DONE:\n            ret = Z_STREAM_END;\n            break inf_leave;\n          case BAD:\n            ret = Z_DATA_ERROR;\n            break inf_leave;\n          case MEM:\n            return Z_MEM_ERROR;\n          case SYNC:\n          default:\n            return Z_STREAM_ERROR;\n        }\n      }\n      strm.next_out = put;\n      strm.avail_out = left;\n      strm.next_in = next;\n      strm.avail_in = have;\n      state.hold = hold;\n      state.bits = bits;\n      if (state.wsize || (_out !== strm.avail_out && state.mode < BAD &&\n                          (state.mode < CHECK || flush !== Z_FINISH))) {\n        if (updatewindow(strm, strm.output, strm.next_out, _out - strm.avail_out)) ;\n      }\n      _in -= strm.avail_in;\n      _out -= strm.avail_out;\n      strm.total_in += _in;\n      strm.total_out += _out;\n      state.total += _out;\n      if (state.wrap && _out) {\n        strm.adler = state.check =\n          (state.flags ? crc32(state.check, output, _out, strm.next_out - _out) : adler32(state.check, output, _out, strm.next_out - _out));\n      }\n      strm.data_type = state.bits + (state.last ? 64 : 0) +\n                        (state.mode === TYPE ? 128 : 0) +\n                        (state.mode === LEN_ || state.mode === COPY_ ? 256 : 0);\n      if (((_in === 0 && _out === 0) || flush === Z_FINISH) && ret === Z_OK) {\n        ret = Z_BUF_ERROR;\n      }\n      return ret;\n    }\n    function inflateEnd(strm) {\n      if (!strm || !strm.state ) {\n        return Z_STREAM_ERROR;\n      }\n      var state = strm.state;\n      if (state.window) {\n        state.window = null;\n      }\n      strm.state = null;\n      return Z_OK;\n    }\n    function inflateGetHeader(strm, head) {\n      var state;\n      if (!strm || !strm.state) { return Z_STREAM_ERROR; }\n      state = strm.state;\n      if ((state.wrap & 2) === 0) { return Z_STREAM_ERROR; }\n      state.head = head;\n      head.done = false;\n      return Z_OK;\n    }\n    function inflateSetDictionary(strm, dictionary) {\n      var dictLength = dictionary.length;\n      var state;\n      var dictid;\n      var ret;\n      if (!strm  || !strm.state ) { return Z_STREAM_ERROR; }\n      state = strm.state;\n      if (state.wrap !== 0 && state.mode !== DICT) {\n        return Z_STREAM_ERROR;\n      }\n      if (state.mode === DICT) {\n        dictid = 1;\n        dictid = adler32(dictid, dictionary, dictLength, 0);\n        if (dictid !== state.check) {\n          return Z_DATA_ERROR;\n        }\n      }\n      ret = updatewindow(strm, dictionary, dictLength, dictLength);\n      if (ret) {\n        state.mode = MEM;\n        return Z_MEM_ERROR;\n      }\n      state.havedict = 1;\n      return Z_OK;\n    }\n    exports.inflateReset = inflateReset;\n    exports.inflateReset2 = inflateReset2;\n    exports.inflateResetKeep = inflateResetKeep;\n    exports.inflateInit = inflateInit;\n    exports.inflateInit2 = inflateInit2;\n    exports.inflate = inflate;\n    exports.inflateEnd = inflateEnd;\n    exports.inflateGetHeader = inflateGetHeader;\n    exports.inflateSetDictionary = inflateSetDictionary;\n    exports.inflateInfo = 'pako inflate (from Nodeca project)';\n    },{\"../utils/common\":35,\"./adler32\":36,\"./crc32\":38,\"./inffast\":40,\"./inftrees\":42}],42:[function(require,module,exports){\n    var utils = require('../utils/common');\n    var MAXBITS = 15;\n    var ENOUGH_LENS = 852;\n    var ENOUGH_DISTS = 592;\n    var CODES = 0;\n    var LENS = 1;\n    var DISTS = 2;\n    var lbase = [\n      3, 4, 5, 6, 7, 8, 9, 10, 11, 13, 15, 17, 19, 23, 27, 31,\n      35, 43, 51, 59, 67, 83, 99, 115, 131, 163, 195, 227, 258, 0, 0\n    ];\n    var lext = [\n      16, 16, 16, 16, 16, 16, 16, 16, 17, 17, 17, 17, 18, 18, 18, 18,\n      19, 19, 19, 19, 20, 20, 20, 20, 21, 21, 21, 21, 16, 72, 78\n    ];\n    var dbase = [\n      1, 2, 3, 4, 5, 7, 9, 13, 17, 25, 33, 49, 65, 97, 129, 193,\n      257, 385, 513, 769, 1025, 1537, 2049, 3073, 4097, 6145,\n      8193, 12289, 16385, 24577, 0, 0\n    ];\n    var dext = [\n      16, 16, 16, 16, 17, 17, 18, 18, 19, 19, 20, 20, 21, 21, 22, 22,\n      23, 23, 24, 24, 25, 25, 26, 26, 27, 27,\n      28, 28, 29, 29, 64, 64\n    ];\n    module.exports = function inflate_table(type, lens, lens_index, codes, table, table_index, work, opts)\n    {\n      var bits = opts.bits;\n      var len = 0;\n      var sym = 0;\n      var min = 0, max = 0;\n      var root = 0;\n      var curr = 0;\n      var drop = 0;\n      var left = 0;\n      var used = 0;\n      var huff = 0;\n      var incr;\n      var fill;\n      var low;\n      var mask;\n      var next;\n      var base = null;\n      var base_index = 0;\n      var end;\n      var count = new utils.Buf16(MAXBITS + 1);\n      var offs = new utils.Buf16(MAXBITS + 1);\n      var extra = null;\n      var extra_index = 0;\n      var here_bits, here_op, here_val;\n      for (len = 0; len <= MAXBITS; len++) {\n        count[len] = 0;\n      }\n      for (sym = 0; sym < codes; sym++) {\n        count[lens[lens_index + sym]]++;\n      }\n      root = bits;\n      for (max = MAXBITS; max >= 1; max--) {\n        if (count[max] !== 0) { break; }\n      }\n      if (root > max) {\n        root = max;\n      }\n      if (max === 0) {\n        table[table_index++] = (1 << 24) | (64 << 16) | 0;\n        table[table_index++] = (1 << 24) | (64 << 16) | 0;\n        opts.bits = 1;\n        return 0;\n      }\n      for (min = 1; min < max; min++) {\n        if (count[min] !== 0) { break; }\n      }\n      if (root < min) {\n        root = min;\n      }\n      left = 1;\n      for (len = 1; len <= MAXBITS; len++) {\n        left <<= 1;\n        left -= count[len];\n        if (left < 0) {\n          return -1;\n        }\n      }\n      if (left > 0 && (type === CODES || max !== 1)) {\n        return -1;\n      }\n      offs[1] = 0;\n      for (len = 1; len < MAXBITS; len++) {\n        offs[len + 1] = offs[len] + count[len];\n      }\n      for (sym = 0; sym < codes; sym++) {\n        if (lens[lens_index + sym] !== 0) {\n          work[offs[lens[lens_index + sym]]++] = sym;\n        }\n      }\n      if (type === CODES) {\n        base = extra = work;\n        end = 19;\n      } else if (type === LENS) {\n        base = lbase;\n        base_index -= 257;\n        extra = lext;\n        extra_index -= 257;\n        end = 256;\n      } else {\n        base = dbase;\n        extra = dext;\n        end = -1;\n      }\n      huff = 0;\n      sym = 0;\n      len = min;\n      next = table_index;\n      curr = root;\n      drop = 0;\n      low = -1;\n      used = 1 << root;\n      mask = used - 1;\n      if ((type === LENS && used > ENOUGH_LENS) ||\n        (type === DISTS && used > ENOUGH_DISTS)) {\n        return 1;\n      }\n      for (;;) {\n        here_bits = len - drop;\n        if (work[sym] < end) {\n          here_op = 0;\n          here_val = work[sym];\n        }\n        else if (work[sym] > end) {\n          here_op = extra[extra_index + work[sym]];\n          here_val = base[base_index + work[sym]];\n        }\n        else {\n          here_op = 32 + 64;\n          here_val = 0;\n        }\n        incr = 1 << (len - drop);\n        fill = 1 << curr;\n        min = fill;\n        do {\n          fill -= incr;\n          table[next + (huff >> drop) + fill] = (here_bits << 24) | (here_op << 16) | here_val |0;\n        } while (fill !== 0);\n        incr = 1 << (len - 1);\n        while (huff & incr) {\n          incr >>= 1;\n        }\n        if (incr !== 0) {\n          huff &= incr - 1;\n          huff += incr;\n        } else {\n          huff = 0;\n        }\n        sym++;\n        if (--count[len] === 0) {\n          if (len === max) { break; }\n          len = lens[lens_index + work[sym]];\n        }\n        if (len > root && (huff & mask) !== low) {\n          if (drop === 0) {\n            drop = root;\n          }\n          next += min;\n          curr = len - drop;\n          left = 1 << curr;\n          while (curr + drop < max) {\n            left -= count[curr + drop];\n            if (left <= 0) { break; }\n            curr++;\n            left <<= 1;\n          }\n          used += 1 << curr;\n          if ((type === LENS && used > ENOUGH_LENS) ||\n            (type === DISTS && used > ENOUGH_DISTS)) {\n            return 1;\n          }\n          low = huff & mask;\n          table[low] = (root << 24) | (curr << 16) | (next - table_index) |0;\n        }\n      }\n      if (huff !== 0) {\n        table[next + huff] = ((len - drop) << 24) | (64 << 16) |0;\n      }\n      opts.bits = root;\n      return 0;\n    };\n    },{\"../utils/common\":35}],43:[function(require,module,exports){\n    module.exports = {\n      2:      'need dictionary',\n      1:      'stream end',\n      0:      '',\n      '-1':   'file error',\n      '-2':   'stream error',\n      '-3':   'data error',\n      '-4':   'insufficient memory',\n      '-5':   'buffer error',\n      '-6':   'incompatible version'\n    };\n    },{}],44:[function(require,module,exports){\n    var utils = require('../utils/common');\n    var Z_FIXED               = 4;\n    var Z_BINARY              = 0;\n    var Z_TEXT                = 1;\n    var Z_UNKNOWN             = 2;\n    function zero(buf) { var len = buf.length; while (--len >= 0) { buf[len] = 0; } }\n    var STORED_BLOCK = 0;\n    var STATIC_TREES = 1;\n    var DYN_TREES    = 2;\n    var MIN_MATCH    = 3;\n    var MAX_MATCH    = 258;\n    var LENGTH_CODES  = 29;\n    var LITERALS      = 256;\n    var L_CODES       = LITERALS + 1 + LENGTH_CODES;\n    var D_CODES       = 30;\n    var BL_CODES      = 19;\n    var HEAP_SIZE     = 2 * L_CODES + 1;\n    var MAX_BITS      = 15;\n    var Buf_size      = 16;\n    var MAX_BL_BITS = 7;\n    var END_BLOCK   = 256;\n    var REP_3_6     = 16;\n    var REPZ_3_10   = 17;\n    var REPZ_11_138 = 18;\n    var extra_lbits =\n      [0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0];\n    var extra_dbits =\n      [0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13];\n    var extra_blbits =\n      [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,7];\n    var bl_order =\n      [16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15];\n    var DIST_CODE_LEN = 512;\n    var static_ltree  = new Array((L_CODES + 2) * 2);\n    zero(static_ltree);\n    var static_dtree  = new Array(D_CODES * 2);\n    zero(static_dtree);\n    var _dist_code    = new Array(DIST_CODE_LEN);\n    zero(_dist_code);\n    var _length_code  = new Array(MAX_MATCH - MIN_MATCH + 1);\n    zero(_length_code);\n    var base_length   = new Array(LENGTH_CODES);\n    zero(base_length);\n    var base_dist     = new Array(D_CODES);\n    zero(base_dist);\n    function StaticTreeDesc(static_tree, extra_bits, extra_base, elems, max_length) {\n      this.static_tree  = static_tree;\n      this.extra_bits   = extra_bits;\n      this.extra_base   = extra_base;\n      this.elems        = elems;\n      this.max_length   = max_length;\n      this.has_stree    = static_tree && static_tree.length;\n    }\n    var static_l_desc;\n    var static_d_desc;\n    var static_bl_desc;\n    function TreeDesc(dyn_tree, stat_desc) {\n      this.dyn_tree = dyn_tree;\n      this.max_code = 0;\n      this.stat_desc = stat_desc;\n    }\n    function d_code(dist) {\n      return dist < 256 ? _dist_code[dist] : _dist_code[256 + (dist >>> 7)];\n    }\n    function put_short(s, w) {\n      s.pending_buf[s.pending++] = (w) & 0xff;\n      s.pending_buf[s.pending++] = (w >>> 8) & 0xff;\n    }\n    function send_bits(s, value, length) {\n      if (s.bi_valid > (Buf_size - length)) {\n        s.bi_buf |= (value << s.bi_valid) & 0xffff;\n        put_short(s, s.bi_buf);\n        s.bi_buf = value >> (Buf_size - s.bi_valid);\n        s.bi_valid += length - Buf_size;\n      } else {\n        s.bi_buf |= (value << s.bi_valid) & 0xffff;\n        s.bi_valid += length;\n      }\n    }\n    function send_code(s, c, tree) {\n      send_bits(s, tree[c * 2], tree[c * 2 + 1]);\n    }\n    function bi_reverse(code, len) {\n      var res = 0;\n      do {\n        res |= code & 1;\n        code >>>= 1;\n        res <<= 1;\n      } while (--len > 0);\n      return res >>> 1;\n    }\n    function bi_flush(s) {\n      if (s.bi_valid === 16) {\n        put_short(s, s.bi_buf);\n        s.bi_buf = 0;\n        s.bi_valid = 0;\n      } else if (s.bi_valid >= 8) {\n        s.pending_buf[s.pending++] = s.bi_buf & 0xff;\n        s.bi_buf >>= 8;\n        s.bi_valid -= 8;\n      }\n    }\n    function gen_bitlen(s, desc)\n    {\n      var tree            = desc.dyn_tree;\n      var max_code        = desc.max_code;\n      var stree           = desc.stat_desc.static_tree;\n      var has_stree       = desc.stat_desc.has_stree;\n      var extra           = desc.stat_desc.extra_bits;\n      var base            = desc.stat_desc.extra_base;\n      var max_length      = desc.stat_desc.max_length;\n      var h;\n      var n, m;\n      var bits;\n      var xbits;\n      var f;\n      var overflow = 0;\n      for (bits = 0; bits <= MAX_BITS; bits++) {\n        s.bl_count[bits] = 0;\n      }\n      tree[s.heap[s.heap_max] * 2 + 1] = 0;\n      for (h = s.heap_max + 1; h < HEAP_SIZE; h++) {\n        n = s.heap[h];\n        bits = tree[tree[n * 2 + 1] * 2 + 1] + 1;\n        if (bits > max_length) {\n          bits = max_length;\n          overflow++;\n        }\n        tree[n * 2 + 1] = bits;\n        if (n > max_code) { continue; }\n        s.bl_count[bits]++;\n        xbits = 0;\n        if (n >= base) {\n          xbits = extra[n - base];\n        }\n        f = tree[n * 2];\n        s.opt_len += f * (bits + xbits);\n        if (has_stree) {\n          s.static_len += f * (stree[n * 2 + 1] + xbits);\n        }\n      }\n      if (overflow === 0) { return; }\n      do {\n        bits = max_length - 1;\n        while (s.bl_count[bits] === 0) { bits--; }\n        s.bl_count[bits]--;\n        s.bl_count[bits + 1] += 2;\n        s.bl_count[max_length]--;\n        overflow -= 2;\n      } while (overflow > 0);\n      for (bits = max_length; bits !== 0; bits--) {\n        n = s.bl_count[bits];\n        while (n !== 0) {\n          m = s.heap[--h];\n          if (m > max_code) { continue; }\n          if (tree[m * 2 + 1] !== bits) {\n            s.opt_len += (bits - tree[m * 2 + 1]) * tree[m * 2];\n            tree[m * 2 + 1] = bits;\n          }\n          n--;\n        }\n      }\n    }\n    function gen_codes(tree, max_code, bl_count)\n    {\n      var next_code = new Array(MAX_BITS + 1);\n      var code = 0;\n      var bits;\n      var n;\n      for (bits = 1; bits <= MAX_BITS; bits++) {\n        next_code[bits] = code = (code + bl_count[bits - 1]) << 1;\n      }\n      for (n = 0;  n <= max_code; n++) {\n        var len = tree[n * 2 + 1];\n        if (len === 0) { continue; }\n        tree[n * 2] = bi_reverse(next_code[len]++, len);\n      }\n    }\n    function tr_static_init() {\n      var n;\n      var bits;\n      var length;\n      var code;\n      var dist;\n      var bl_count = new Array(MAX_BITS + 1);\n      length = 0;\n      for (code = 0; code < LENGTH_CODES - 1; code++) {\n        base_length[code] = length;\n        for (n = 0; n < (1 << extra_lbits[code]); n++) {\n          _length_code[length++] = code;\n        }\n      }\n      _length_code[length - 1] = code;\n      dist = 0;\n      for (code = 0; code < 16; code++) {\n        base_dist[code] = dist;\n        for (n = 0; n < (1 << extra_dbits[code]); n++) {\n          _dist_code[dist++] = code;\n        }\n      }\n      dist >>= 7;\n      for (; code < D_CODES; code++) {\n        base_dist[code] = dist << 7;\n        for (n = 0; n < (1 << (extra_dbits[code] - 7)); n++) {\n          _dist_code[256 + dist++] = code;\n        }\n      }\n      for (bits = 0; bits <= MAX_BITS; bits++) {\n        bl_count[bits] = 0;\n      }\n      n = 0;\n      while (n <= 143) {\n        static_ltree[n * 2 + 1] = 8;\n        n++;\n        bl_count[8]++;\n      }\n      while (n <= 255) {\n        static_ltree[n * 2 + 1] = 9;\n        n++;\n        bl_count[9]++;\n      }\n      while (n <= 279) {\n        static_ltree[n * 2 + 1] = 7;\n        n++;\n        bl_count[7]++;\n      }\n      while (n <= 287) {\n        static_ltree[n * 2 + 1] = 8;\n        n++;\n        bl_count[8]++;\n      }\n      gen_codes(static_ltree, L_CODES + 1, bl_count);\n      for (n = 0; n < D_CODES; n++) {\n        static_dtree[n * 2 + 1] = 5;\n        static_dtree[n * 2] = bi_reverse(n, 5);\n      }\n      static_l_desc = new StaticTreeDesc(static_ltree, extra_lbits, LITERALS + 1, L_CODES, MAX_BITS);\n      static_d_desc = new StaticTreeDesc(static_dtree, extra_dbits, 0,          D_CODES, MAX_BITS);\n      static_bl_desc = new StaticTreeDesc(new Array(0), extra_blbits, 0,         BL_CODES, MAX_BL_BITS);\n    }\n    function init_block(s) {\n      var n;\n      for (n = 0; n < L_CODES;  n++) { s.dyn_ltree[n * 2] = 0; }\n      for (n = 0; n < D_CODES;  n++) { s.dyn_dtree[n * 2] = 0; }\n      for (n = 0; n < BL_CODES; n++) { s.bl_tree[n * 2] = 0; }\n      s.dyn_ltree[END_BLOCK * 2] = 1;\n      s.opt_len = s.static_len = 0;\n      s.last_lit = s.matches = 0;\n    }\n    function bi_windup(s)\n    {\n      if (s.bi_valid > 8) {\n        put_short(s, s.bi_buf);\n      } else if (s.bi_valid > 0) {\n        s.pending_buf[s.pending++] = s.bi_buf;\n      }\n      s.bi_buf = 0;\n      s.bi_valid = 0;\n    }\n    function copy_block(s, buf, len, header)\n    {\n      bi_windup(s);\n      if (header) {\n        put_short(s, len);\n        put_short(s, ~len);\n      }\n      utils.arraySet(s.pending_buf, s.window, buf, len, s.pending);\n      s.pending += len;\n    }\n    function smaller(tree, n, m, depth) {\n      var _n2 = n * 2;\n      var _m2 = m * 2;\n      return (tree[_n2] < tree[_m2] ||\n             (tree[_n2] === tree[_m2] && depth[n] <= depth[m]));\n    }\n    function pqdownheap(s, tree, k)\n    {\n      var v = s.heap[k];\n      var j = k << 1;\n      while (j <= s.heap_len) {\n        if (j < s.heap_len &&\n          smaller(tree, s.heap[j + 1], s.heap[j], s.depth)) {\n          j++;\n        }\n        if (smaller(tree, v, s.heap[j], s.depth)) { break; }\n        s.heap[k] = s.heap[j];\n        k = j;\n        j <<= 1;\n      }\n      s.heap[k] = v;\n    }\n    function compress_block(s, ltree, dtree)\n    {\n      var dist;\n      var lc;\n      var lx = 0;\n      var code;\n      var extra;\n      if (s.last_lit !== 0) {\n        do {\n          dist = (s.pending_buf[s.d_buf + lx * 2] << 8) | (s.pending_buf[s.d_buf + lx * 2 + 1]);\n          lc = s.pending_buf[s.l_buf + lx];\n          lx++;\n          if (dist === 0) {\n            send_code(s, lc, ltree);\n          } else {\n            code = _length_code[lc];\n            send_code(s, code + LITERALS + 1, ltree);\n            extra = extra_lbits[code];\n            if (extra !== 0) {\n              lc -= base_length[code];\n              send_bits(s, lc, extra);\n            }\n            dist--;\n            code = d_code(dist);\n            send_code(s, code, dtree);\n            extra = extra_dbits[code];\n            if (extra !== 0) {\n              dist -= base_dist[code];\n              send_bits(s, dist, extra);\n            }\n          }\n        } while (lx < s.last_lit);\n      }\n      send_code(s, END_BLOCK, ltree);\n    }\n    function build_tree(s, desc)\n    {\n      var tree     = desc.dyn_tree;\n      var stree    = desc.stat_desc.static_tree;\n      var has_stree = desc.stat_desc.has_stree;\n      var elems    = desc.stat_desc.elems;\n      var n, m;\n      var max_code = -1;\n      var node;\n      s.heap_len = 0;\n      s.heap_max = HEAP_SIZE;\n      for (n = 0; n < elems; n++) {\n        if (tree[n * 2] !== 0) {\n          s.heap[++s.heap_len] = max_code = n;\n          s.depth[n] = 0;\n        } else {\n          tree[n * 2 + 1] = 0;\n        }\n      }\n      while (s.heap_len < 2) {\n        node = s.heap[++s.heap_len] = (max_code < 2 ? ++max_code : 0);\n        tree[node * 2] = 1;\n        s.depth[node] = 0;\n        s.opt_len--;\n        if (has_stree) {\n          s.static_len -= stree[node * 2 + 1];\n        }\n      }\n      desc.max_code = max_code;\n      for (n = (s.heap_len >> 1); n >= 1; n--) { pqdownheap(s, tree, n); }\n      node = elems;\n      do {\n        n = s.heap[1];\n        s.heap[1] = s.heap[s.heap_len--];\n        pqdownheap(s, tree, 1);\n        m = s.heap[1];\n        s.heap[--s.heap_max] = n;\n        s.heap[--s.heap_max] = m;\n        tree[node * 2] = tree[n * 2] + tree[m * 2];\n        s.depth[node] = (s.depth[n] >= s.depth[m] ? s.depth[n] : s.depth[m]) + 1;\n        tree[n * 2 + 1] = tree[m * 2 + 1] = node;\n        s.heap[1] = node++;\n        pqdownheap(s, tree, 1);\n      } while (s.heap_len >= 2);\n      s.heap[--s.heap_max] = s.heap[1];\n      gen_bitlen(s, desc);\n      gen_codes(tree, max_code, s.bl_count);\n    }\n    function scan_tree(s, tree, max_code)\n    {\n      var n;\n      var prevlen = -1;\n      var curlen;\n      var nextlen = tree[0 * 2 + 1];\n      var count = 0;\n      var max_count = 7;\n      var min_count = 4;\n      if (nextlen === 0) {\n        max_count = 138;\n        min_count = 3;\n      }\n      tree[(max_code + 1) * 2 + 1] = 0xffff;\n      for (n = 0; n <= max_code; n++) {\n        curlen = nextlen;\n        nextlen = tree[(n + 1) * 2 + 1];\n        if (++count < max_count && curlen === nextlen) {\n          continue;\n        } else if (count < min_count) {\n          s.bl_tree[curlen * 2] += count;\n        } else if (curlen !== 0) {\n          if (curlen !== prevlen) { s.bl_tree[curlen * 2]++; }\n          s.bl_tree[REP_3_6 * 2]++;\n        } else if (count <= 10) {\n          s.bl_tree[REPZ_3_10 * 2]++;\n        } else {\n          s.bl_tree[REPZ_11_138 * 2]++;\n        }\n        count = 0;\n        prevlen = curlen;\n        if (nextlen === 0) {\n          max_count = 138;\n          min_count = 3;\n        } else if (curlen === nextlen) {\n          max_count = 6;\n          min_count = 3;\n        } else {\n          max_count = 7;\n          min_count = 4;\n        }\n      }\n    }\n    function send_tree(s, tree, max_code)\n    {\n      var n;\n      var prevlen = -1;\n      var curlen;\n      var nextlen = tree[0 * 2 + 1];\n      var count = 0;\n      var max_count = 7;\n      var min_count = 4;\n      if (nextlen === 0) {\n        max_count = 138;\n        min_count = 3;\n      }\n      for (n = 0; n <= max_code; n++) {\n        curlen = nextlen;\n        nextlen = tree[(n + 1) * 2 + 1];\n        if (++count < max_count && curlen === nextlen) {\n          continue;\n        } else if (count < min_count) {\n          do { send_code(s, curlen, s.bl_tree); } while (--count !== 0);\n        } else if (curlen !== 0) {\n          if (curlen !== prevlen) {\n            send_code(s, curlen, s.bl_tree);\n            count--;\n          }\n          send_code(s, REP_3_6, s.bl_tree);\n          send_bits(s, count - 3, 2);\n        } else if (count <= 10) {\n          send_code(s, REPZ_3_10, s.bl_tree);\n          send_bits(s, count - 3, 3);\n        } else {\n          send_code(s, REPZ_11_138, s.bl_tree);\n          send_bits(s, count - 11, 7);\n        }\n        count = 0;\n        prevlen = curlen;\n        if (nextlen === 0) {\n          max_count = 138;\n          min_count = 3;\n        } else if (curlen === nextlen) {\n          max_count = 6;\n          min_count = 3;\n        } else {\n          max_count = 7;\n          min_count = 4;\n        }\n      }\n    }\n    function build_bl_tree(s) {\n      var max_blindex;\n      scan_tree(s, s.dyn_ltree, s.l_desc.max_code);\n      scan_tree(s, s.dyn_dtree, s.d_desc.max_code);\n      build_tree(s, s.bl_desc);\n      for (max_blindex = BL_CODES - 1; max_blindex >= 3; max_blindex--) {\n        if (s.bl_tree[bl_order[max_blindex] * 2 + 1] !== 0) {\n          break;\n        }\n      }\n      s.opt_len += 3 * (max_blindex + 1) + 5 + 5 + 4;\n      return max_blindex;\n    }\n    function send_all_trees(s, lcodes, dcodes, blcodes)\n    {\n      var rank;\n      send_bits(s, lcodes - 257, 5);\n      send_bits(s, dcodes - 1,   5);\n      send_bits(s, blcodes - 4,  4);\n      for (rank = 0; rank < blcodes; rank++) {\n        send_bits(s, s.bl_tree[bl_order[rank] * 2 + 1], 3);\n      }\n      send_tree(s, s.dyn_ltree, lcodes - 1);\n      send_tree(s, s.dyn_dtree, dcodes - 1);\n    }\n    function detect_data_type(s) {\n      var black_mask = 0xf3ffc07f;\n      var n;\n      for (n = 0; n <= 31; n++, black_mask >>>= 1) {\n        if ((black_mask & 1) && (s.dyn_ltree[n * 2] !== 0)) {\n          return Z_BINARY;\n        }\n      }\n      if (s.dyn_ltree[9 * 2] !== 0 || s.dyn_ltree[10 * 2] !== 0 ||\n          s.dyn_ltree[13 * 2] !== 0) {\n        return Z_TEXT;\n      }\n      for (n = 32; n < LITERALS; n++) {\n        if (s.dyn_ltree[n * 2] !== 0) {\n          return Z_TEXT;\n        }\n      }\n      return Z_BINARY;\n    }\n    var static_init_done = false;\n    function _tr_init(s)\n    {\n      if (!static_init_done) {\n        tr_static_init();\n        static_init_done = true;\n      }\n      s.l_desc  = new TreeDesc(s.dyn_ltree, static_l_desc);\n      s.d_desc  = new TreeDesc(s.dyn_dtree, static_d_desc);\n      s.bl_desc = new TreeDesc(s.bl_tree, static_bl_desc);\n      s.bi_buf = 0;\n      s.bi_valid = 0;\n      init_block(s);\n    }\n    function _tr_stored_block(s, buf, stored_len, last)\n    {\n      send_bits(s, (STORED_BLOCK << 1) + (last ? 1 : 0), 3);\n      copy_block(s, buf, stored_len, true);\n    }\n    function _tr_align(s) {\n      send_bits(s, STATIC_TREES << 1, 3);\n      send_code(s, END_BLOCK, static_ltree);\n      bi_flush(s);\n    }\n    function _tr_flush_block(s, buf, stored_len, last)\n    {\n      var opt_lenb, static_lenb;\n      var max_blindex = 0;\n      if (s.level > 0) {\n        if (s.strm.data_type === Z_UNKNOWN) {\n          s.strm.data_type = detect_data_type(s);\n        }\n        build_tree(s, s.l_desc);\n        build_tree(s, s.d_desc);\n        max_blindex = build_bl_tree(s);\n        opt_lenb = (s.opt_len + 3 + 7) >>> 3;\n        static_lenb = (s.static_len + 3 + 7) >>> 3;\n        if (static_lenb <= opt_lenb) { opt_lenb = static_lenb; }\n      } else {\n        opt_lenb = static_lenb = stored_len + 5;\n      }\n      if ((stored_len + 4 <= opt_lenb) && (buf !== -1)) {\n        _tr_stored_block(s, buf, stored_len, last);\n      } else if (s.strategy === Z_FIXED || static_lenb === opt_lenb) {\n        send_bits(s, (STATIC_TREES << 1) + (last ? 1 : 0), 3);\n        compress_block(s, static_ltree, static_dtree);\n      } else {\n        send_bits(s, (DYN_TREES << 1) + (last ? 1 : 0), 3);\n        send_all_trees(s, s.l_desc.max_code + 1, s.d_desc.max_code + 1, max_blindex + 1);\n        compress_block(s, s.dyn_ltree, s.dyn_dtree);\n      }\n      init_block(s);\n      if (last) {\n        bi_windup(s);\n      }\n    }\n    function _tr_tally(s, dist, lc)\n    {\n      s.pending_buf[s.d_buf + s.last_lit * 2]     = (dist >>> 8) & 0xff;\n      s.pending_buf[s.d_buf + s.last_lit * 2 + 1] = dist & 0xff;\n      s.pending_buf[s.l_buf + s.last_lit] = lc & 0xff;\n      s.last_lit++;\n      if (dist === 0) {\n        s.dyn_ltree[lc * 2]++;\n      } else {\n        s.matches++;\n        dist--;\n        s.dyn_ltree[(_length_code[lc] + LITERALS + 1) * 2]++;\n        s.dyn_dtree[d_code(dist) * 2]++;\n      }\n      return (s.last_lit === s.lit_bufsize - 1);\n    }\n    exports._tr_init  = _tr_init;\n    exports._tr_stored_block = _tr_stored_block;\n    exports._tr_flush_block  = _tr_flush_block;\n    exports._tr_tally = _tr_tally;\n    exports._tr_align = _tr_align;\n    },{\"../utils/common\":35}],45:[function(require,module,exports){\n    function ZStream() {\n      this.input = null;\n      this.next_in = 0;\n      this.avail_in = 0;\n      this.total_in = 0;\n      this.output = null;\n      this.next_out = 0;\n      this.avail_out = 0;\n      this.total_out = 0;\n      this.msg = '';\n      this.state = null;\n      this.data_type = 2;\n      this.adler = 0;\n    }\n    module.exports = ZStream;\n    },{}],46:[function(require,module,exports){\n    (function (process){\n    if (!process.version ||\n        process.version.indexOf('v0.') === 0 ||\n        process.version.indexOf('v1.') === 0 && process.version.indexOf('v1.8.') !== 0) {\n      module.exports = nextTick;\n    } else {\n      module.exports = process.nextTick;\n    }\n    function nextTick(fn, arg1, arg2, arg3) {\n      if (typeof fn !== 'function') {\n        throw new TypeError('\"callback\" argument must be a function');\n      }\n      var len = arguments.length;\n      var args, i;\n      switch (len) {\n      case 0:\n      case 1:\n        return process.nextTick(fn);\n      case 2:\n        return process.nextTick(function afterTickOne() {\n          fn.call(null, arg1);\n        });\n      case 3:\n        return process.nextTick(function afterTickTwo() {\n          fn.call(null, arg1, arg2);\n        });\n      case 4:\n        return process.nextTick(function afterTickThree() {\n          fn.call(null, arg1, arg2, arg3);\n        });\n      default:\n        args = new Array(len - 1);\n        i = 0;\n        while (i < args.length) {\n          args[i++] = arguments[i];\n        }\n        return process.nextTick(function afterTick() {\n          fn.apply(null, args);\n        });\n      }\n    }\n    }).call(this,require('_process'));\n    },{\"_process\":47}],47:[function(require,module,exports){\n    var process = module.exports = {};\n    var cachedSetTimeout;\n    var cachedClearTimeout;\n    function defaultSetTimout() {\n        throw new Error('setTimeout has not been defined');\n    }\n    function defaultClearTimeout () {\n        throw new Error('clearTimeout has not been defined');\n    }\n    (function () {\n        try {\n            if (typeof setTimeout === 'function') {\n                cachedSetTimeout = setTimeout;\n            } else {\n                cachedSetTimeout = defaultSetTimout;\n            }\n        } catch (e) {\n            cachedSetTimeout = defaultSetTimout;\n        }\n        try {\n            if (typeof clearTimeout === 'function') {\n                cachedClearTimeout = clearTimeout;\n            } else {\n                cachedClearTimeout = defaultClearTimeout;\n            }\n        } catch (e) {\n            cachedClearTimeout = defaultClearTimeout;\n        }\n    } ());\n    function runTimeout(fun) {\n        if (cachedSetTimeout === setTimeout) {\n            return setTimeout(fun, 0);\n        }\n        if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {\n            cachedSetTimeout = setTimeout;\n            return setTimeout(fun, 0);\n        }\n        try {\n            return cachedSetTimeout(fun, 0);\n        } catch(e){\n            try {\n                return cachedSetTimeout.call(null, fun, 0);\n            } catch(e){\n                return cachedSetTimeout.call(this, fun, 0);\n            }\n        }\n    }\n    function runClearTimeout(marker) {\n        if (cachedClearTimeout === clearTimeout) {\n            return clearTimeout(marker);\n        }\n        if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {\n            cachedClearTimeout = clearTimeout;\n            return clearTimeout(marker);\n        }\n        try {\n            return cachedClearTimeout(marker);\n        } catch (e){\n            try {\n                return cachedClearTimeout.call(null, marker);\n            } catch (e){\n                return cachedClearTimeout.call(this, marker);\n            }\n        }\n    }\n    var queue = [];\n    var draining = false;\n    var currentQueue;\n    var queueIndex = -1;\n    function cleanUpNextTick() {\n        if (!draining || !currentQueue) {\n            return;\n        }\n        draining = false;\n        if (currentQueue.length) {\n            queue = currentQueue.concat(queue);\n        } else {\n            queueIndex = -1;\n        }\n        if (queue.length) {\n            drainQueue();\n        }\n    }\n    function drainQueue() {\n        if (draining) {\n            return;\n        }\n        var timeout = runTimeout(cleanUpNextTick);\n        draining = true;\n        var len = queue.length;\n        while(len) {\n            currentQueue = queue;\n            queue = [];\n            while (++queueIndex < len) {\n                if (currentQueue) {\n                    currentQueue[queueIndex].run();\n                }\n            }\n            queueIndex = -1;\n            len = queue.length;\n        }\n        currentQueue = null;\n        draining = false;\n        runClearTimeout(timeout);\n    }\n    process.nextTick = function (fun) {\n        var args = new Array(arguments.length - 1);\n        if (arguments.length > 1) {\n            for (var i = 1; i < arguments.length; i++) {\n                args[i - 1] = arguments[i];\n            }\n        }\n        queue.push(new Item(fun, args));\n        if (queue.length === 1 && !draining) {\n            runTimeout(drainQueue);\n        }\n    };\n    function Item(fun, array) {\n        this.fun = fun;\n        this.array = array;\n    }\n    Item.prototype.run = function () {\n        this.fun.apply(null, this.array);\n    };\n    process.title = 'browser';\n    process.browser = true;\n    process.env = {};\n    process.argv = [];\n    process.version = '';\n    process.versions = {};\n    function noop() {}\n    process.on = noop;\n    process.addListener = noop;\n    process.once = noop;\n    process.off = noop;\n    process.removeListener = noop;\n    process.removeAllListeners = noop;\n    process.emit = noop;\n    process.prependListener = noop;\n    process.prependOnceListener = noop;\n    process.listeners = function (name) { return [] };\n    process.binding = function (name) {\n        throw new Error('process.binding is not supported');\n    };\n    process.cwd = function () { return '/' };\n    process.chdir = function (dir) {\n        throw new Error('process.chdir is not supported');\n    };\n    process.umask = function() { return 0; };\n    },{}],48:[function(require,module,exports){\n    module.exports = require('./lib/_stream_duplex.js');\n    },{\"./lib/_stream_duplex.js\":49}],49:[function(require,module,exports){\n    var processNextTick = require('process-nextick-args');\n    var objectKeys = Object.keys || function (obj) {\n      var keys = [];\n      for (var key in obj) {\n        keys.push(key);\n      }return keys;\n    };\n    module.exports = Duplex;\n    var util = require('core-util-is');\n    util.inherits = require('inherits');\n    var Readable = require('./_stream_readable');\n    var Writable = require('./_stream_writable');\n    util.inherits(Duplex, Readable);\n    var keys = objectKeys(Writable.prototype);\n    for (var v = 0; v < keys.length; v++) {\n      var method = keys[v];\n      if (!Duplex.prototype[method]) Duplex.prototype[method] = Writable.prototype[method];\n    }\n    function Duplex(options) {\n      if (!(this instanceof Duplex)) return new Duplex(options);\n      Readable.call(this, options);\n      Writable.call(this, options);\n      if (options && options.readable === false) this.readable = false;\n      if (options && options.writable === false) this.writable = false;\n      this.allowHalfOpen = true;\n      if (options && options.allowHalfOpen === false) this.allowHalfOpen = false;\n      this.once('end', onend);\n    }\n    function onend() {\n      if (this.allowHalfOpen || this._writableState.ended) return;\n      processNextTick(onEndNT, this);\n    }\n    function onEndNT(self) {\n      self.end();\n    }\n    Object.defineProperty(Duplex.prototype, 'destroyed', {\n      get: function () {\n        if (this._readableState === undefined || this._writableState === undefined) {\n          return false;\n        }\n        return this._readableState.destroyed && this._writableState.destroyed;\n      },\n      set: function (value) {\n        if (this._readableState === undefined || this._writableState === undefined) {\n          return;\n        }\n        this._readableState.destroyed = value;\n        this._writableState.destroyed = value;\n      }\n    });\n    Duplex.prototype._destroy = function (err, cb) {\n      this.push(null);\n      this.end();\n      processNextTick(cb, err);\n    };\n    },{\"./_stream_readable\":51,\"./_stream_writable\":53,\"core-util-is\":29,\"inherits\":32,\"process-nextick-args\":46}],50:[function(require,module,exports){\n    module.exports = PassThrough;\n    var Transform = require('./_stream_transform');\n    var util = require('core-util-is');\n    util.inherits = require('inherits');\n    util.inherits(PassThrough, Transform);\n    function PassThrough(options) {\n      if (!(this instanceof PassThrough)) return new PassThrough(options);\n      Transform.call(this, options);\n    }\n    PassThrough.prototype._transform = function (chunk, encoding, cb) {\n      cb(null, chunk);\n    };\n    },{\"./_stream_transform\":52,\"core-util-is\":29,\"inherits\":32}],51:[function(require,module,exports){\n    (function (process,global){\n    var processNextTick = require('process-nextick-args');\n    module.exports = Readable;\n    var isArray = require('isarray');\n    var Duplex;\n    Readable.ReadableState = ReadableState;\n    require('events').EventEmitter;\n    var EElistenerCount = function (emitter, type) {\n      return emitter.listeners(type).length;\n    };\n    var Stream = require('./internal/streams/stream');\n    var Buffer = require('safe-buffer').Buffer;\n    var OurUint8Array = global.Uint8Array || function () {};\n    function _uint8ArrayToBuffer(chunk) {\n      return Buffer.from(chunk);\n    }\n    function _isUint8Array(obj) {\n      return Buffer.isBuffer(obj) || obj instanceof OurUint8Array;\n    }\n    var util = require('core-util-is');\n    util.inherits = require('inherits');\n    var debugUtil = require('util');\n    var debug = void 0;\n    if (debugUtil && debugUtil.debuglog) {\n      debug = debugUtil.debuglog('stream');\n    } else {\n      debug = function () {};\n    }\n    var BufferList = require('./internal/streams/BufferList');\n    var destroyImpl = require('./internal/streams/destroy');\n    var StringDecoder;\n    util.inherits(Readable, Stream);\n    var kProxyEvents = ['error', 'close', 'destroy', 'pause', 'resume'];\n    function prependListener(emitter, event, fn) {\n      if (typeof emitter.prependListener === 'function') {\n        return emitter.prependListener(event, fn);\n      } else {\n        if (!emitter._events || !emitter._events[event]) emitter.on(event, fn);else if (isArray(emitter._events[event])) emitter._events[event].unshift(fn);else emitter._events[event] = [fn, emitter._events[event]];\n      }\n    }\n    function ReadableState(options, stream) {\n      Duplex = Duplex || require('./_stream_duplex');\n      options = options || {};\n      this.objectMode = !!options.objectMode;\n      if (stream instanceof Duplex) this.objectMode = this.objectMode || !!options.readableObjectMode;\n      var hwm = options.highWaterMark;\n      var defaultHwm = this.objectMode ? 16 : 16 * 1024;\n      this.highWaterMark = hwm || hwm === 0 ? hwm : defaultHwm;\n      this.highWaterMark = Math.floor(this.highWaterMark);\n      this.buffer = new BufferList();\n      this.length = 0;\n      this.pipes = null;\n      this.pipesCount = 0;\n      this.flowing = null;\n      this.ended = false;\n      this.endEmitted = false;\n      this.reading = false;\n      this.sync = true;\n      this.needReadable = false;\n      this.emittedReadable = false;\n      this.readableListening = false;\n      this.resumeScheduled = false;\n      this.destroyed = false;\n      this.defaultEncoding = options.defaultEncoding || 'utf8';\n      this.awaitDrain = 0;\n      this.readingMore = false;\n      this.decoder = null;\n      this.encoding = null;\n      if (options.encoding) {\n        if (!StringDecoder) StringDecoder = require('string_decoder/').StringDecoder;\n        this.decoder = new StringDecoder(options.encoding);\n        this.encoding = options.encoding;\n      }\n    }\n    function Readable(options) {\n      Duplex = Duplex || require('./_stream_duplex');\n      if (!(this instanceof Readable)) return new Readable(options);\n      this._readableState = new ReadableState(options, this);\n      this.readable = true;\n      if (options) {\n        if (typeof options.read === 'function') this._read = options.read;\n        if (typeof options.destroy === 'function') this._destroy = options.destroy;\n      }\n      Stream.call(this);\n    }\n    Object.defineProperty(Readable.prototype, 'destroyed', {\n      get: function () {\n        if (this._readableState === undefined) {\n          return false;\n        }\n        return this._readableState.destroyed;\n      },\n      set: function (value) {\n        if (!this._readableState) {\n          return;\n        }\n        this._readableState.destroyed = value;\n      }\n    });\n    Readable.prototype.destroy = destroyImpl.destroy;\n    Readable.prototype._undestroy = destroyImpl.undestroy;\n    Readable.prototype._destroy = function (err, cb) {\n      this.push(null);\n      cb(err);\n    };\n    Readable.prototype.push = function (chunk, encoding) {\n      var state = this._readableState;\n      var skipChunkCheck;\n      if (!state.objectMode) {\n        if (typeof chunk === 'string') {\n          encoding = encoding || state.defaultEncoding;\n          if (encoding !== state.encoding) {\n            chunk = Buffer.from(chunk, encoding);\n            encoding = '';\n          }\n          skipChunkCheck = true;\n        }\n      } else {\n        skipChunkCheck = true;\n      }\n      return readableAddChunk(this, chunk, encoding, false, skipChunkCheck);\n    };\n    Readable.prototype.unshift = function (chunk) {\n      return readableAddChunk(this, chunk, null, true, false);\n    };\n    function readableAddChunk(stream, chunk, encoding, addToFront, skipChunkCheck) {\n      var state = stream._readableState;\n      if (chunk === null) {\n        state.reading = false;\n        onEofChunk(stream, state);\n      } else {\n        var er;\n        if (!skipChunkCheck) er = chunkInvalid(state, chunk);\n        if (er) {\n          stream.emit('error', er);\n        } else if (state.objectMode || chunk && chunk.length > 0) {\n          if (typeof chunk !== 'string' && !state.objectMode && Object.getPrototypeOf(chunk) !== Buffer.prototype) {\n            chunk = _uint8ArrayToBuffer(chunk);\n          }\n          if (addToFront) {\n            if (state.endEmitted) stream.emit('error', new Error('stream.unshift() after end event'));else addChunk(stream, state, chunk, true);\n          } else if (state.ended) {\n            stream.emit('error', new Error('stream.push() after EOF'));\n          } else {\n            state.reading = false;\n            if (state.decoder && !encoding) {\n              chunk = state.decoder.write(chunk);\n              if (state.objectMode || chunk.length !== 0) addChunk(stream, state, chunk, false);else maybeReadMore(stream, state);\n            } else {\n              addChunk(stream, state, chunk, false);\n            }\n          }\n        } else if (!addToFront) {\n          state.reading = false;\n        }\n      }\n      return needMoreData(state);\n    }\n    function addChunk(stream, state, chunk, addToFront) {\n      if (state.flowing && state.length === 0 && !state.sync) {\n        stream.emit('data', chunk);\n        stream.read(0);\n      } else {\n        state.length += state.objectMode ? 1 : chunk.length;\n        if (addToFront) state.buffer.unshift(chunk);else state.buffer.push(chunk);\n        if (state.needReadable) emitReadable(stream);\n      }\n      maybeReadMore(stream, state);\n    }\n    function chunkInvalid(state, chunk) {\n      var er;\n      if (!_isUint8Array(chunk) && typeof chunk !== 'string' && chunk !== undefined && !state.objectMode) {\n        er = new TypeError('Invalid non-string/buffer chunk');\n      }\n      return er;\n    }\n    function needMoreData(state) {\n      return !state.ended && (state.needReadable || state.length < state.highWaterMark || state.length === 0);\n    }\n    Readable.prototype.isPaused = function () {\n      return this._readableState.flowing === false;\n    };\n    Readable.prototype.setEncoding = function (enc) {\n      if (!StringDecoder) StringDecoder = require('string_decoder/').StringDecoder;\n      this._readableState.decoder = new StringDecoder(enc);\n      this._readableState.encoding = enc;\n      return this;\n    };\n    var MAX_HWM = 0x800000;\n    function computeNewHighWaterMark(n) {\n      if (n >= MAX_HWM) {\n        n = MAX_HWM;\n      } else {\n        n--;\n        n |= n >>> 1;\n        n |= n >>> 2;\n        n |= n >>> 4;\n        n |= n >>> 8;\n        n |= n >>> 16;\n        n++;\n      }\n      return n;\n    }\n    function howMuchToRead(n, state) {\n      if (n <= 0 || state.length === 0 && state.ended) return 0;\n      if (state.objectMode) return 1;\n      if (n !== n) {\n        if (state.flowing && state.length) return state.buffer.head.data.length;else return state.length;\n      }\n      if (n > state.highWaterMark) state.highWaterMark = computeNewHighWaterMark(n);\n      if (n <= state.length) return n;\n      if (!state.ended) {\n        state.needReadable = true;\n        return 0;\n      }\n      return state.length;\n    }\n    Readable.prototype.read = function (n) {\n      debug('read', n);\n      n = parseInt(n, 10);\n      var state = this._readableState;\n      var nOrig = n;\n      if (n !== 0) state.emittedReadable = false;\n      if (n === 0 && state.needReadable && (state.length >= state.highWaterMark || state.ended)) {\n        debug('read: emitReadable', state.length, state.ended);\n        if (state.length === 0 && state.ended) endReadable(this);else emitReadable(this);\n        return null;\n      }\n      n = howMuchToRead(n, state);\n      if (n === 0 && state.ended) {\n        if (state.length === 0) endReadable(this);\n        return null;\n      }\n      var doRead = state.needReadable;\n      debug('need readable', doRead);\n      if (state.length === 0 || state.length - n < state.highWaterMark) {\n        doRead = true;\n        debug('length less than watermark', doRead);\n      }\n      if (state.ended || state.reading) {\n        doRead = false;\n        debug('reading or ended', doRead);\n      } else if (doRead) {\n        debug('do read');\n        state.reading = true;\n        state.sync = true;\n        if (state.length === 0) state.needReadable = true;\n        this._read(state.highWaterMark);\n        state.sync = false;\n        if (!state.reading) n = howMuchToRead(nOrig, state);\n      }\n      var ret;\n      if (n > 0) ret = fromList(n, state);else ret = null;\n      if (ret === null) {\n        state.needReadable = true;\n        n = 0;\n      } else {\n        state.length -= n;\n      }\n      if (state.length === 0) {\n        if (!state.ended) state.needReadable = true;\n        if (nOrig !== n && state.ended) endReadable(this);\n      }\n      if (ret !== null) this.emit('data', ret);\n      return ret;\n    };\n    function onEofChunk(stream, state) {\n      if (state.ended) return;\n      if (state.decoder) {\n        var chunk = state.decoder.end();\n        if (chunk && chunk.length) {\n          state.buffer.push(chunk);\n          state.length += state.objectMode ? 1 : chunk.length;\n        }\n      }\n      state.ended = true;\n      emitReadable(stream);\n    }\n    function emitReadable(stream) {\n      var state = stream._readableState;\n      state.needReadable = false;\n      if (!state.emittedReadable) {\n        debug('emitReadable', state.flowing);\n        state.emittedReadable = true;\n        if (state.sync) processNextTick(emitReadable_, stream);else emitReadable_(stream);\n      }\n    }\n    function emitReadable_(stream) {\n      debug('emit readable');\n      stream.emit('readable');\n      flow(stream);\n    }\n    function maybeReadMore(stream, state) {\n      if (!state.readingMore) {\n        state.readingMore = true;\n        processNextTick(maybeReadMore_, stream, state);\n      }\n    }\n    function maybeReadMore_(stream, state) {\n      var len = state.length;\n      while (!state.reading && !state.flowing && !state.ended && state.length < state.highWaterMark) {\n        debug('maybeReadMore read 0');\n        stream.read(0);\n        if (len === state.length)\n          break;else len = state.length;\n      }\n      state.readingMore = false;\n    }\n    Readable.prototype._read = function (n) {\n      this.emit('error', new Error('_read() is not implemented'));\n    };\n    Readable.prototype.pipe = function (dest, pipeOpts) {\n      var src = this;\n      var state = this._readableState;\n      switch (state.pipesCount) {\n        case 0:\n          state.pipes = dest;\n          break;\n        case 1:\n          state.pipes = [state.pipes, dest];\n          break;\n        default:\n          state.pipes.push(dest);\n          break;\n      }\n      state.pipesCount += 1;\n      debug('pipe count=%d opts=%j', state.pipesCount, pipeOpts);\n      var doEnd = (!pipeOpts || pipeOpts.end !== false) && dest !== process.stdout && dest !== process.stderr;\n      var endFn = doEnd ? onend : unpipe;\n      if (state.endEmitted) processNextTick(endFn);else src.once('end', endFn);\n      dest.on('unpipe', onunpipe);\n      function onunpipe(readable, unpipeInfo) {\n        debug('onunpipe');\n        if (readable === src) {\n          if (unpipeInfo && unpipeInfo.hasUnpiped === false) {\n            unpipeInfo.hasUnpiped = true;\n            cleanup();\n          }\n        }\n      }\n      function onend() {\n        debug('onend');\n        dest.end();\n      }\n      var ondrain = pipeOnDrain(src);\n      dest.on('drain', ondrain);\n      var cleanedUp = false;\n      function cleanup() {\n        debug('cleanup');\n        dest.removeListener('close', onclose);\n        dest.removeListener('finish', onfinish);\n        dest.removeListener('drain', ondrain);\n        dest.removeListener('error', onerror);\n        dest.removeListener('unpipe', onunpipe);\n        src.removeListener('end', onend);\n        src.removeListener('end', unpipe);\n        src.removeListener('data', ondata);\n        cleanedUp = true;\n        if (state.awaitDrain && (!dest._writableState || dest._writableState.needDrain)) ondrain();\n      }\n      var increasedAwaitDrain = false;\n      src.on('data', ondata);\n      function ondata(chunk) {\n        debug('ondata');\n        increasedAwaitDrain = false;\n        var ret = dest.write(chunk);\n        if (false === ret && !increasedAwaitDrain) {\n          if ((state.pipesCount === 1 && state.pipes === dest || state.pipesCount > 1 && indexOf(state.pipes, dest) !== -1) && !cleanedUp) {\n            debug('false write response, pause', src._readableState.awaitDrain);\n            src._readableState.awaitDrain++;\n            increasedAwaitDrain = true;\n          }\n          src.pause();\n        }\n      }\n      function onerror(er) {\n        debug('onerror', er);\n        unpipe();\n        dest.removeListener('error', onerror);\n        if (EElistenerCount(dest, 'error') === 0) dest.emit('error', er);\n      }\n      prependListener(dest, 'error', onerror);\n      function onclose() {\n        dest.removeListener('finish', onfinish);\n        unpipe();\n      }\n      dest.once('close', onclose);\n      function onfinish() {\n        debug('onfinish');\n        dest.removeListener('close', onclose);\n        unpipe();\n      }\n      dest.once('finish', onfinish);\n      function unpipe() {\n        debug('unpipe');\n        src.unpipe(dest);\n      }\n      dest.emit('pipe', src);\n      if (!state.flowing) {\n        debug('pipe resume');\n        src.resume();\n      }\n      return dest;\n    };\n    function pipeOnDrain(src) {\n      return function () {\n        var state = src._readableState;\n        debug('pipeOnDrain', state.awaitDrain);\n        if (state.awaitDrain) state.awaitDrain--;\n        if (state.awaitDrain === 0 && EElistenerCount(src, 'data')) {\n          state.flowing = true;\n          flow(src);\n        }\n      };\n    }\n    Readable.prototype.unpipe = function (dest) {\n      var state = this._readableState;\n      var unpipeInfo = { hasUnpiped: false };\n      if (state.pipesCount === 0) return this;\n      if (state.pipesCount === 1) {\n        if (dest && dest !== state.pipes) return this;\n        if (!dest) dest = state.pipes;\n        state.pipes = null;\n        state.pipesCount = 0;\n        state.flowing = false;\n        if (dest) dest.emit('unpipe', this, unpipeInfo);\n        return this;\n      }\n      if (!dest) {\n        var dests = state.pipes;\n        var len = state.pipesCount;\n        state.pipes = null;\n        state.pipesCount = 0;\n        state.flowing = false;\n        for (var i = 0; i < len; i++) {\n          dests[i].emit('unpipe', this, unpipeInfo);\n        }return this;\n      }\n      var index = indexOf(state.pipes, dest);\n      if (index === -1) return this;\n      state.pipes.splice(index, 1);\n      state.pipesCount -= 1;\n      if (state.pipesCount === 1) state.pipes = state.pipes[0];\n      dest.emit('unpipe', this, unpipeInfo);\n      return this;\n    };\n    Readable.prototype.on = function (ev, fn) {\n      var res = Stream.prototype.on.call(this, ev, fn);\n      if (ev === 'data') {\n        if (this._readableState.flowing !== false) this.resume();\n      } else if (ev === 'readable') {\n        var state = this._readableState;\n        if (!state.endEmitted && !state.readableListening) {\n          state.readableListening = state.needReadable = true;\n          state.emittedReadable = false;\n          if (!state.reading) {\n            processNextTick(nReadingNextTick, this);\n          } else if (state.length) {\n            emitReadable(this);\n          }\n        }\n      }\n      return res;\n    };\n    Readable.prototype.addListener = Readable.prototype.on;\n    function nReadingNextTick(self) {\n      debug('readable nexttick read 0');\n      self.read(0);\n    }\n    Readable.prototype.resume = function () {\n      var state = this._readableState;\n      if (!state.flowing) {\n        debug('resume');\n        state.flowing = true;\n        resume(this, state);\n      }\n      return this;\n    };\n    function resume(stream, state) {\n      if (!state.resumeScheduled) {\n        state.resumeScheduled = true;\n        processNextTick(resume_, stream, state);\n      }\n    }\n    function resume_(stream, state) {\n      if (!state.reading) {\n        debug('resume read 0');\n        stream.read(0);\n      }\n      state.resumeScheduled = false;\n      state.awaitDrain = 0;\n      stream.emit('resume');\n      flow(stream);\n      if (state.flowing && !state.reading) stream.read(0);\n    }\n    Readable.prototype.pause = function () {\n      debug('call pause flowing=%j', this._readableState.flowing);\n      if (false !== this._readableState.flowing) {\n        debug('pause');\n        this._readableState.flowing = false;\n        this.emit('pause');\n      }\n      return this;\n    };\n    function flow(stream) {\n      var state = stream._readableState;\n      debug('flow', state.flowing);\n      while (state.flowing && stream.read() !== null) {}\n    }\n    Readable.prototype.wrap = function (stream) {\n      var state = this._readableState;\n      var paused = false;\n      var self = this;\n      stream.on('end', function () {\n        debug('wrapped end');\n        if (state.decoder && !state.ended) {\n          var chunk = state.decoder.end();\n          if (chunk && chunk.length) self.push(chunk);\n        }\n        self.push(null);\n      });\n      stream.on('data', function (chunk) {\n        debug('wrapped data');\n        if (state.decoder) chunk = state.decoder.write(chunk);\n        if (state.objectMode && (chunk === null || chunk === undefined)) return;else if (!state.objectMode && (!chunk || !chunk.length)) return;\n        var ret = self.push(chunk);\n        if (!ret) {\n          paused = true;\n          stream.pause();\n        }\n      });\n      for (var i in stream) {\n        if (this[i] === undefined && typeof stream[i] === 'function') {\n          this[i] = function (method) {\n            return function () {\n              return stream[method].apply(stream, arguments);\n            };\n          }(i);\n        }\n      }\n      for (var n = 0; n < kProxyEvents.length; n++) {\n        stream.on(kProxyEvents[n], self.emit.bind(self, kProxyEvents[n]));\n      }\n      self._read = function (n) {\n        debug('wrapped _read', n);\n        if (paused) {\n          paused = false;\n          stream.resume();\n        }\n      };\n      return self;\n    };\n    Readable._fromList = fromList;\n    function fromList(n, state) {\n      if (state.length === 0) return null;\n      var ret;\n      if (state.objectMode) ret = state.buffer.shift();else if (!n || n >= state.length) {\n        if (state.decoder) ret = state.buffer.join('');else if (state.buffer.length === 1) ret = state.buffer.head.data;else ret = state.buffer.concat(state.length);\n        state.buffer.clear();\n      } else {\n        ret = fromListPartial(n, state.buffer, state.decoder);\n      }\n      return ret;\n    }\n    function fromListPartial(n, list, hasStrings) {\n      var ret;\n      if (n < list.head.data.length) {\n        ret = list.head.data.slice(0, n);\n        list.head.data = list.head.data.slice(n);\n      } else if (n === list.head.data.length) {\n        ret = list.shift();\n      } else {\n        ret = hasStrings ? copyFromBufferString(n, list) : copyFromBuffer(n, list);\n      }\n      return ret;\n    }\n    function copyFromBufferString(n, list) {\n      var p = list.head;\n      var c = 1;\n      var ret = p.data;\n      n -= ret.length;\n      while (p = p.next) {\n        var str = p.data;\n        var nb = n > str.length ? str.length : n;\n        if (nb === str.length) ret += str;else ret += str.slice(0, n);\n        n -= nb;\n        if (n === 0) {\n          if (nb === str.length) {\n            ++c;\n            if (p.next) list.head = p.next;else list.head = list.tail = null;\n          } else {\n            list.head = p;\n            p.data = str.slice(nb);\n          }\n          break;\n        }\n        ++c;\n      }\n      list.length -= c;\n      return ret;\n    }\n    function copyFromBuffer(n, list) {\n      var ret = Buffer.allocUnsafe(n);\n      var p = list.head;\n      var c = 1;\n      p.data.copy(ret);\n      n -= p.data.length;\n      while (p = p.next) {\n        var buf = p.data;\n        var nb = n > buf.length ? buf.length : n;\n        buf.copy(ret, ret.length - n, 0, nb);\n        n -= nb;\n        if (n === 0) {\n          if (nb === buf.length) {\n            ++c;\n            if (p.next) list.head = p.next;else list.head = list.tail = null;\n          } else {\n            list.head = p;\n            p.data = buf.slice(nb);\n          }\n          break;\n        }\n        ++c;\n      }\n      list.length -= c;\n      return ret;\n    }\n    function endReadable(stream) {\n      var state = stream._readableState;\n      if (state.length > 0) throw new Error('\"endReadable()\" called on non-empty stream');\n      if (!state.endEmitted) {\n        state.ended = true;\n        processNextTick(endReadableNT, state, stream);\n      }\n    }\n    function endReadableNT(state, stream) {\n      if (!state.endEmitted && state.length === 0) {\n        state.endEmitted = true;\n        stream.readable = false;\n        stream.emit('end');\n      }\n    }\n    function indexOf(xs, x) {\n      for (var i = 0, l = xs.length; i < l; i++) {\n        if (xs[i] === x) return i;\n      }\n      return -1;\n    }\n    }).call(this,require('_process'),typeof commonjsGlobal !== \"undefined\" ? commonjsGlobal : typeof self !== \"undefined\" ? self : typeof window !== \"undefined\" ? window : {});\n    },{\"./_stream_duplex\":49,\"./internal/streams/BufferList\":54,\"./internal/streams/destroy\":55,\"./internal/streams/stream\":56,\"_process\":47,\"core-util-is\":29,\"events\":30,\"inherits\":32,\"isarray\":34,\"process-nextick-args\":46,\"safe-buffer\":62,\"string_decoder/\":57,\"util\":25}],52:[function(require,module,exports){\n    module.exports = Transform;\n    var Duplex = require('./_stream_duplex');\n    var util = require('core-util-is');\n    util.inherits = require('inherits');\n    util.inherits(Transform, Duplex);\n    function TransformState(stream) {\n      this.afterTransform = function (er, data) {\n        return afterTransform(stream, er, data);\n      };\n      this.needTransform = false;\n      this.transforming = false;\n      this.writecb = null;\n      this.writechunk = null;\n      this.writeencoding = null;\n    }\n    function afterTransform(stream, er, data) {\n      var ts = stream._transformState;\n      ts.transforming = false;\n      var cb = ts.writecb;\n      if (!cb) {\n        return stream.emit('error', new Error('write callback called multiple times'));\n      }\n      ts.writechunk = null;\n      ts.writecb = null;\n      if (data !== null && data !== undefined) stream.push(data);\n      cb(er);\n      var rs = stream._readableState;\n      rs.reading = false;\n      if (rs.needReadable || rs.length < rs.highWaterMark) {\n        stream._read(rs.highWaterMark);\n      }\n    }\n    function Transform(options) {\n      if (!(this instanceof Transform)) return new Transform(options);\n      Duplex.call(this, options);\n      this._transformState = new TransformState(this);\n      var stream = this;\n      this._readableState.needReadable = true;\n      this._readableState.sync = false;\n      if (options) {\n        if (typeof options.transform === 'function') this._transform = options.transform;\n        if (typeof options.flush === 'function') this._flush = options.flush;\n      }\n      this.once('prefinish', function () {\n        if (typeof this._flush === 'function') this._flush(function (er, data) {\n          done(stream, er, data);\n        });else done(stream);\n      });\n    }\n    Transform.prototype.push = function (chunk, encoding) {\n      this._transformState.needTransform = false;\n      return Duplex.prototype.push.call(this, chunk, encoding);\n    };\n    Transform.prototype._transform = function (chunk, encoding, cb) {\n      throw new Error('_transform() is not implemented');\n    };\n    Transform.prototype._write = function (chunk, encoding, cb) {\n      var ts = this._transformState;\n      ts.writecb = cb;\n      ts.writechunk = chunk;\n      ts.writeencoding = encoding;\n      if (!ts.transforming) {\n        var rs = this._readableState;\n        if (ts.needTransform || rs.needReadable || rs.length < rs.highWaterMark) this._read(rs.highWaterMark);\n      }\n    };\n    Transform.prototype._read = function (n) {\n      var ts = this._transformState;\n      if (ts.writechunk !== null && ts.writecb && !ts.transforming) {\n        ts.transforming = true;\n        this._transform(ts.writechunk, ts.writeencoding, ts.afterTransform);\n      } else {\n        ts.needTransform = true;\n      }\n    };\n    Transform.prototype._destroy = function (err, cb) {\n      var _this = this;\n      Duplex.prototype._destroy.call(this, err, function (err2) {\n        cb(err2);\n        _this.emit('close');\n      });\n    };\n    function done(stream, er, data) {\n      if (er) return stream.emit('error', er);\n      if (data !== null && data !== undefined) stream.push(data);\n      var ws = stream._writableState;\n      var ts = stream._transformState;\n      if (ws.length) throw new Error('Calling transform done when ws.length != 0');\n      if (ts.transforming) throw new Error('Calling transform done when still transforming');\n      return stream.push(null);\n    }\n    },{\"./_stream_duplex\":49,\"core-util-is\":29,\"inherits\":32}],53:[function(require,module,exports){\n    (function (process,global){\n    var processNextTick = require('process-nextick-args');\n    module.exports = Writable;\n    function CorkedRequest(state) {\n      var _this = this;\n      this.next = null;\n      this.entry = null;\n      this.finish = function () {\n        onCorkedFinish(_this, state);\n      };\n    }\n    var asyncWrite = !process.browser && ['v0.10', 'v0.9.'].indexOf(process.version.slice(0, 5)) > -1 ? setImmediate : processNextTick;\n    var Duplex;\n    Writable.WritableState = WritableState;\n    var util = require('core-util-is');\n    util.inherits = require('inherits');\n    var internalUtil = {\n      deprecate: require('util-deprecate')\n    };\n    var Stream = require('./internal/streams/stream');\n    var Buffer = require('safe-buffer').Buffer;\n    var OurUint8Array = global.Uint8Array || function () {};\n    function _uint8ArrayToBuffer(chunk) {\n      return Buffer.from(chunk);\n    }\n    function _isUint8Array(obj) {\n      return Buffer.isBuffer(obj) || obj instanceof OurUint8Array;\n    }\n    var destroyImpl = require('./internal/streams/destroy');\n    util.inherits(Writable, Stream);\n    function nop() {}\n    function WritableState(options, stream) {\n      Duplex = Duplex || require('./_stream_duplex');\n      options = options || {};\n      this.objectMode = !!options.objectMode;\n      if (stream instanceof Duplex) this.objectMode = this.objectMode || !!options.writableObjectMode;\n      var hwm = options.highWaterMark;\n      var defaultHwm = this.objectMode ? 16 : 16 * 1024;\n      this.highWaterMark = hwm || hwm === 0 ? hwm : defaultHwm;\n      this.highWaterMark = Math.floor(this.highWaterMark);\n      this.finalCalled = false;\n      this.needDrain = false;\n      this.ending = false;\n      this.ended = false;\n      this.finished = false;\n      this.destroyed = false;\n      var noDecode = options.decodeStrings === false;\n      this.decodeStrings = !noDecode;\n      this.defaultEncoding = options.defaultEncoding || 'utf8';\n      this.length = 0;\n      this.writing = false;\n      this.corked = 0;\n      this.sync = true;\n      this.bufferProcessing = false;\n      this.onwrite = function (er) {\n        onwrite(stream, er);\n      };\n      this.writecb = null;\n      this.writelen = 0;\n      this.bufferedRequest = null;\n      this.lastBufferedRequest = null;\n      this.pendingcb = 0;\n      this.prefinished = false;\n      this.errorEmitted = false;\n      this.bufferedRequestCount = 0;\n      this.corkedRequestsFree = new CorkedRequest(this);\n    }\n    WritableState.prototype.getBuffer = function getBuffer() {\n      var current = this.bufferedRequest;\n      var out = [];\n      while (current) {\n        out.push(current);\n        current = current.next;\n      }\n      return out;\n    };\n    (function () {\n      try {\n        Object.defineProperty(WritableState.prototype, 'buffer', {\n          get: internalUtil.deprecate(function () {\n            return this.getBuffer();\n          }, '_writableState.buffer is deprecated. Use _writableState.getBuffer ' + 'instead.', 'DEP0003')\n        });\n      } catch (_) {}\n    })();\n    var realHasInstance;\n    if (typeof Symbol === 'function' && Symbol.hasInstance && typeof Function.prototype[Symbol.hasInstance] === 'function') {\n      realHasInstance = Function.prototype[Symbol.hasInstance];\n      Object.defineProperty(Writable, Symbol.hasInstance, {\n        value: function (object) {\n          if (realHasInstance.call(this, object)) return true;\n          return object && object._writableState instanceof WritableState;\n        }\n      });\n    } else {\n      realHasInstance = function (object) {\n        return object instanceof this;\n      };\n    }\n    function Writable(options) {\n      Duplex = Duplex || require('./_stream_duplex');\n      if (!realHasInstance.call(Writable, this) && !(this instanceof Duplex)) {\n        return new Writable(options);\n      }\n      this._writableState = new WritableState(options, this);\n      this.writable = true;\n      if (options) {\n        if (typeof options.write === 'function') this._write = options.write;\n        if (typeof options.writev === 'function') this._writev = options.writev;\n        if (typeof options.destroy === 'function') this._destroy = options.destroy;\n        if (typeof options.final === 'function') this._final = options.final;\n      }\n      Stream.call(this);\n    }\n    Writable.prototype.pipe = function () {\n      this.emit('error', new Error('Cannot pipe, not readable'));\n    };\n    function writeAfterEnd(stream, cb) {\n      var er = new Error('write after end');\n      stream.emit('error', er);\n      processNextTick(cb, er);\n    }\n    function validChunk(stream, state, chunk, cb) {\n      var valid = true;\n      var er = false;\n      if (chunk === null) {\n        er = new TypeError('May not write null values to stream');\n      } else if (typeof chunk !== 'string' && chunk !== undefined && !state.objectMode) {\n        er = new TypeError('Invalid non-string/buffer chunk');\n      }\n      if (er) {\n        stream.emit('error', er);\n        processNextTick(cb, er);\n        valid = false;\n      }\n      return valid;\n    }\n    Writable.prototype.write = function (chunk, encoding, cb) {\n      var state = this._writableState;\n      var ret = false;\n      var isBuf = _isUint8Array(chunk) && !state.objectMode;\n      if (isBuf && !Buffer.isBuffer(chunk)) {\n        chunk = _uint8ArrayToBuffer(chunk);\n      }\n      if (typeof encoding === 'function') {\n        cb = encoding;\n        encoding = null;\n      }\n      if (isBuf) encoding = 'buffer';else if (!encoding) encoding = state.defaultEncoding;\n      if (typeof cb !== 'function') cb = nop;\n      if (state.ended) writeAfterEnd(this, cb);else if (isBuf || validChunk(this, state, chunk, cb)) {\n        state.pendingcb++;\n        ret = writeOrBuffer(this, state, isBuf, chunk, encoding, cb);\n      }\n      return ret;\n    };\n    Writable.prototype.cork = function () {\n      var state = this._writableState;\n      state.corked++;\n    };\n    Writable.prototype.uncork = function () {\n      var state = this._writableState;\n      if (state.corked) {\n        state.corked--;\n        if (!state.writing && !state.corked && !state.finished && !state.bufferProcessing && state.bufferedRequest) clearBuffer(this, state);\n      }\n    };\n    Writable.prototype.setDefaultEncoding = function setDefaultEncoding(encoding) {\n      if (typeof encoding === 'string') encoding = encoding.toLowerCase();\n      if (!(['hex', 'utf8', 'utf-8', 'ascii', 'binary', 'base64', 'ucs2', 'ucs-2', 'utf16le', 'utf-16le', 'raw'].indexOf((encoding + '').toLowerCase()) > -1)) throw new TypeError('Unknown encoding: ' + encoding);\n      this._writableState.defaultEncoding = encoding;\n      return this;\n    };\n    function decodeChunk(state, chunk, encoding) {\n      if (!state.objectMode && state.decodeStrings !== false && typeof chunk === 'string') {\n        chunk = Buffer.from(chunk, encoding);\n      }\n      return chunk;\n    }\n    function writeOrBuffer(stream, state, isBuf, chunk, encoding, cb) {\n      if (!isBuf) {\n        var newChunk = decodeChunk(state, chunk, encoding);\n        if (chunk !== newChunk) {\n          isBuf = true;\n          encoding = 'buffer';\n          chunk = newChunk;\n        }\n      }\n      var len = state.objectMode ? 1 : chunk.length;\n      state.length += len;\n      var ret = state.length < state.highWaterMark;\n      if (!ret) state.needDrain = true;\n      if (state.writing || state.corked) {\n        var last = state.lastBufferedRequest;\n        state.lastBufferedRequest = {\n          chunk: chunk,\n          encoding: encoding,\n          isBuf: isBuf,\n          callback: cb,\n          next: null\n        };\n        if (last) {\n          last.next = state.lastBufferedRequest;\n        } else {\n          state.bufferedRequest = state.lastBufferedRequest;\n        }\n        state.bufferedRequestCount += 1;\n      } else {\n        doWrite(stream, state, false, len, chunk, encoding, cb);\n      }\n      return ret;\n    }\n    function doWrite(stream, state, writev, len, chunk, encoding, cb) {\n      state.writelen = len;\n      state.writecb = cb;\n      state.writing = true;\n      state.sync = true;\n      if (writev) stream._writev(chunk, state.onwrite);else stream._write(chunk, encoding, state.onwrite);\n      state.sync = false;\n    }\n    function onwriteError(stream, state, sync, er, cb) {\n      --state.pendingcb;\n      if (sync) {\n        processNextTick(cb, er);\n        processNextTick(finishMaybe, stream, state);\n        stream._writableState.errorEmitted = true;\n        stream.emit('error', er);\n      } else {\n        cb(er);\n        stream._writableState.errorEmitted = true;\n        stream.emit('error', er);\n        finishMaybe(stream, state);\n      }\n    }\n    function onwriteStateUpdate(state) {\n      state.writing = false;\n      state.writecb = null;\n      state.length -= state.writelen;\n      state.writelen = 0;\n    }\n    function onwrite(stream, er) {\n      var state = stream._writableState;\n      var sync = state.sync;\n      var cb = state.writecb;\n      onwriteStateUpdate(state);\n      if (er) onwriteError(stream, state, sync, er, cb);else {\n        var finished = needFinish(state);\n        if (!finished && !state.corked && !state.bufferProcessing && state.bufferedRequest) {\n          clearBuffer(stream, state);\n        }\n        if (sync) {\n          asyncWrite(afterWrite, stream, state, finished, cb);\n        } else {\n          afterWrite(stream, state, finished, cb);\n        }\n      }\n    }\n    function afterWrite(stream, state, finished, cb) {\n      if (!finished) onwriteDrain(stream, state);\n      state.pendingcb--;\n      cb();\n      finishMaybe(stream, state);\n    }\n    function onwriteDrain(stream, state) {\n      if (state.length === 0 && state.needDrain) {\n        state.needDrain = false;\n        stream.emit('drain');\n      }\n    }\n    function clearBuffer(stream, state) {\n      state.bufferProcessing = true;\n      var entry = state.bufferedRequest;\n      if (stream._writev && entry && entry.next) {\n        var l = state.bufferedRequestCount;\n        var buffer = new Array(l);\n        var holder = state.corkedRequestsFree;\n        holder.entry = entry;\n        var count = 0;\n        var allBuffers = true;\n        while (entry) {\n          buffer[count] = entry;\n          if (!entry.isBuf) allBuffers = false;\n          entry = entry.next;\n          count += 1;\n        }\n        buffer.allBuffers = allBuffers;\n        doWrite(stream, state, true, state.length, buffer, '', holder.finish);\n        state.pendingcb++;\n        state.lastBufferedRequest = null;\n        if (holder.next) {\n          state.corkedRequestsFree = holder.next;\n          holder.next = null;\n        } else {\n          state.corkedRequestsFree = new CorkedRequest(state);\n        }\n      } else {\n        while (entry) {\n          var chunk = entry.chunk;\n          var encoding = entry.encoding;\n          var cb = entry.callback;\n          var len = state.objectMode ? 1 : chunk.length;\n          doWrite(stream, state, false, len, chunk, encoding, cb);\n          entry = entry.next;\n          if (state.writing) {\n            break;\n          }\n        }\n        if (entry === null) state.lastBufferedRequest = null;\n      }\n      state.bufferedRequestCount = 0;\n      state.bufferedRequest = entry;\n      state.bufferProcessing = false;\n    }\n    Writable.prototype._write = function (chunk, encoding, cb) {\n      cb(new Error('_write() is not implemented'));\n    };\n    Writable.prototype._writev = null;\n    Writable.prototype.end = function (chunk, encoding, cb) {\n      var state = this._writableState;\n      if (typeof chunk === 'function') {\n        cb = chunk;\n        chunk = null;\n        encoding = null;\n      } else if (typeof encoding === 'function') {\n        cb = encoding;\n        encoding = null;\n      }\n      if (chunk !== null && chunk !== undefined) this.write(chunk, encoding);\n      if (state.corked) {\n        state.corked = 1;\n        this.uncork();\n      }\n      if (!state.ending && !state.finished) endWritable(this, state, cb);\n    };\n    function needFinish(state) {\n      return state.ending && state.length === 0 && state.bufferedRequest === null && !state.finished && !state.writing;\n    }\n    function callFinal(stream, state) {\n      stream._final(function (err) {\n        state.pendingcb--;\n        if (err) {\n          stream.emit('error', err);\n        }\n        state.prefinished = true;\n        stream.emit('prefinish');\n        finishMaybe(stream, state);\n      });\n    }\n    function prefinish(stream, state) {\n      if (!state.prefinished && !state.finalCalled) {\n        if (typeof stream._final === 'function') {\n          state.pendingcb++;\n          state.finalCalled = true;\n          processNextTick(callFinal, stream, state);\n        } else {\n          state.prefinished = true;\n          stream.emit('prefinish');\n        }\n      }\n    }\n    function finishMaybe(stream, state) {\n      var need = needFinish(state);\n      if (need) {\n        prefinish(stream, state);\n        if (state.pendingcb === 0) {\n          state.finished = true;\n          stream.emit('finish');\n        }\n      }\n      return need;\n    }\n    function endWritable(stream, state, cb) {\n      state.ending = true;\n      finishMaybe(stream, state);\n      if (cb) {\n        if (state.finished) processNextTick(cb);else stream.once('finish', cb);\n      }\n      state.ended = true;\n      stream.writable = false;\n    }\n    function onCorkedFinish(corkReq, state, err) {\n      var entry = corkReq.entry;\n      corkReq.entry = null;\n      while (entry) {\n        var cb = entry.callback;\n        state.pendingcb--;\n        cb(err);\n        entry = entry.next;\n      }\n      if (state.corkedRequestsFree) {\n        state.corkedRequestsFree.next = corkReq;\n      } else {\n        state.corkedRequestsFree = corkReq;\n      }\n    }\n    Object.defineProperty(Writable.prototype, 'destroyed', {\n      get: function () {\n        if (this._writableState === undefined) {\n          return false;\n        }\n        return this._writableState.destroyed;\n      },\n      set: function (value) {\n        if (!this._writableState) {\n          return;\n        }\n        this._writableState.destroyed = value;\n      }\n    });\n    Writable.prototype.destroy = destroyImpl.destroy;\n    Writable.prototype._undestroy = destroyImpl.undestroy;\n    Writable.prototype._destroy = function (err, cb) {\n      this.end();\n      cb(err);\n    };\n    }).call(this,require('_process'),typeof commonjsGlobal !== \"undefined\" ? commonjsGlobal : typeof self !== \"undefined\" ? self : typeof window !== \"undefined\" ? window : {});\n    },{\"./_stream_duplex\":49,\"./internal/streams/destroy\":55,\"./internal/streams/stream\":56,\"_process\":47,\"core-util-is\":29,\"inherits\":32,\"process-nextick-args\":46,\"safe-buffer\":62,\"util-deprecate\":64}],54:[function(require,module,exports){\n    function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n    var Buffer = require('safe-buffer').Buffer;\n    function copyBuffer(src, target, offset) {\n      src.copy(target, offset);\n    }\n    module.exports = function () {\n      function BufferList() {\n        _classCallCheck(this, BufferList);\n        this.head = null;\n        this.tail = null;\n        this.length = 0;\n      }\n      BufferList.prototype.push = function push(v) {\n        var entry = { data: v, next: null };\n        if (this.length > 0) this.tail.next = entry;else this.head = entry;\n        this.tail = entry;\n        ++this.length;\n      };\n      BufferList.prototype.unshift = function unshift(v) {\n        var entry = { data: v, next: this.head };\n        if (this.length === 0) this.tail = entry;\n        this.head = entry;\n        ++this.length;\n      };\n      BufferList.prototype.shift = function shift() {\n        if (this.length === 0) return;\n        var ret = this.head.data;\n        if (this.length === 1) this.head = this.tail = null;else this.head = this.head.next;\n        --this.length;\n        return ret;\n      };\n      BufferList.prototype.clear = function clear() {\n        this.head = this.tail = null;\n        this.length = 0;\n      };\n      BufferList.prototype.join = function join(s) {\n        if (this.length === 0) return '';\n        var p = this.head;\n        var ret = '' + p.data;\n        while (p = p.next) {\n          ret += s + p.data;\n        }return ret;\n      };\n      BufferList.prototype.concat = function concat(n) {\n        if (this.length === 0) return Buffer.alloc(0);\n        if (this.length === 1) return this.head.data;\n        var ret = Buffer.allocUnsafe(n >>> 0);\n        var p = this.head;\n        var i = 0;\n        while (p) {\n          copyBuffer(p.data, ret, i);\n          i += p.data.length;\n          p = p.next;\n        }\n        return ret;\n      };\n      return BufferList;\n    }();\n    },{\"safe-buffer\":62}],55:[function(require,module,exports){\n    var processNextTick = require('process-nextick-args');\n    function destroy(err, cb) {\n      var _this = this;\n      var readableDestroyed = this._readableState && this._readableState.destroyed;\n      var writableDestroyed = this._writableState && this._writableState.destroyed;\n      if (readableDestroyed || writableDestroyed) {\n        if (cb) {\n          cb(err);\n        } else if (err && (!this._writableState || !this._writableState.errorEmitted)) {\n          processNextTick(emitErrorNT, this, err);\n        }\n        return;\n      }\n      if (this._readableState) {\n        this._readableState.destroyed = true;\n      }\n      if (this._writableState) {\n        this._writableState.destroyed = true;\n      }\n      this._destroy(err || null, function (err) {\n        if (!cb && err) {\n          processNextTick(emitErrorNT, _this, err);\n          if (_this._writableState) {\n            _this._writableState.errorEmitted = true;\n          }\n        } else if (cb) {\n          cb(err);\n        }\n      });\n    }\n    function undestroy() {\n      if (this._readableState) {\n        this._readableState.destroyed = false;\n        this._readableState.reading = false;\n        this._readableState.ended = false;\n        this._readableState.endEmitted = false;\n      }\n      if (this._writableState) {\n        this._writableState.destroyed = false;\n        this._writableState.ended = false;\n        this._writableState.ending = false;\n        this._writableState.finished = false;\n        this._writableState.errorEmitted = false;\n      }\n    }\n    function emitErrorNT(self, err) {\n      self.emit('error', err);\n    }\n    module.exports = {\n      destroy: destroy,\n      undestroy: undestroy\n    };\n    },{\"process-nextick-args\":46}],56:[function(require,module,exports){\n    module.exports = require('events').EventEmitter;\n    },{\"events\":30}],57:[function(require,module,exports){\n    var Buffer = require('safe-buffer').Buffer;\n    var isEncoding = Buffer.isEncoding || function (encoding) {\n      encoding = '' + encoding;\n      switch (encoding && encoding.toLowerCase()) {\n        case 'hex':case 'utf8':case 'utf-8':case 'ascii':case 'binary':case 'base64':case 'ucs2':case 'ucs-2':case 'utf16le':case 'utf-16le':case 'raw':\n          return true;\n        default:\n          return false;\n      }\n    };\n    function _normalizeEncoding(enc) {\n      if (!enc) return 'utf8';\n      var retried;\n      while (true) {\n        switch (enc) {\n          case 'utf8':\n          case 'utf-8':\n            return 'utf8';\n          case 'ucs2':\n          case 'ucs-2':\n          case 'utf16le':\n          case 'utf-16le':\n            return 'utf16le';\n          case 'latin1':\n          case 'binary':\n            return 'latin1';\n          case 'base64':\n          case 'ascii':\n          case 'hex':\n            return enc;\n          default:\n            if (retried) return;\n            enc = ('' + enc).toLowerCase();\n            retried = true;\n        }\n      }\n    }function normalizeEncoding(enc) {\n      var nenc = _normalizeEncoding(enc);\n      if (typeof nenc !== 'string' && (Buffer.isEncoding === isEncoding || !isEncoding(enc))) throw new Error('Unknown encoding: ' + enc);\n      return nenc || enc;\n    }\n    exports.StringDecoder = StringDecoder;\n    function StringDecoder(encoding) {\n      this.encoding = normalizeEncoding(encoding);\n      var nb;\n      switch (this.encoding) {\n        case 'utf16le':\n          this.text = utf16Text;\n          this.end = utf16End;\n          nb = 4;\n          break;\n        case 'utf8':\n          this.fillLast = utf8FillLast;\n          nb = 4;\n          break;\n        case 'base64':\n          this.text = base64Text;\n          this.end = base64End;\n          nb = 3;\n          break;\n        default:\n          this.write = simpleWrite;\n          this.end = simpleEnd;\n          return;\n      }\n      this.lastNeed = 0;\n      this.lastTotal = 0;\n      this.lastChar = Buffer.allocUnsafe(nb);\n    }\n    StringDecoder.prototype.write = function (buf) {\n      if (buf.length === 0) return '';\n      var r;\n      var i;\n      if (this.lastNeed) {\n        r = this.fillLast(buf);\n        if (r === undefined) return '';\n        i = this.lastNeed;\n        this.lastNeed = 0;\n      } else {\n        i = 0;\n      }\n      if (i < buf.length) return r ? r + this.text(buf, i) : this.text(buf, i);\n      return r || '';\n    };\n    StringDecoder.prototype.end = utf8End;\n    StringDecoder.prototype.text = utf8Text;\n    StringDecoder.prototype.fillLast = function (buf) {\n      if (this.lastNeed <= buf.length) {\n        buf.copy(this.lastChar, this.lastTotal - this.lastNeed, 0, this.lastNeed);\n        return this.lastChar.toString(this.encoding, 0, this.lastTotal);\n      }\n      buf.copy(this.lastChar, this.lastTotal - this.lastNeed, 0, buf.length);\n      this.lastNeed -= buf.length;\n    };\n    function utf8CheckByte(byte) {\n      if (byte <= 0x7F) return 0;else if (byte >> 5 === 0x06) return 2;else if (byte >> 4 === 0x0E) return 3;else if (byte >> 3 === 0x1E) return 4;\n      return -1;\n    }\n    function utf8CheckIncomplete(self, buf, i) {\n      var j = buf.length - 1;\n      if (j < i) return 0;\n      var nb = utf8CheckByte(buf[j]);\n      if (nb >= 0) {\n        if (nb > 0) self.lastNeed = nb - 1;\n        return nb;\n      }\n      if (--j < i) return 0;\n      nb = utf8CheckByte(buf[j]);\n      if (nb >= 0) {\n        if (nb > 0) self.lastNeed = nb - 2;\n        return nb;\n      }\n      if (--j < i) return 0;\n      nb = utf8CheckByte(buf[j]);\n      if (nb >= 0) {\n        if (nb > 0) {\n          if (nb === 2) nb = 0;else self.lastNeed = nb - 3;\n        }\n        return nb;\n      }\n      return 0;\n    }\n    function utf8CheckExtraBytes(self, buf, p) {\n      if ((buf[0] & 0xC0) !== 0x80) {\n        self.lastNeed = 0;\n        return '\\ufffd'.repeat(p);\n      }\n      if (self.lastNeed > 1 && buf.length > 1) {\n        if ((buf[1] & 0xC0) !== 0x80) {\n          self.lastNeed = 1;\n          return '\\ufffd'.repeat(p + 1);\n        }\n        if (self.lastNeed > 2 && buf.length > 2) {\n          if ((buf[2] & 0xC0) !== 0x80) {\n            self.lastNeed = 2;\n            return '\\ufffd'.repeat(p + 2);\n          }\n        }\n      }\n    }\n    function utf8FillLast(buf) {\n      var p = this.lastTotal - this.lastNeed;\n      var r = utf8CheckExtraBytes(this, buf, p);\n      if (r !== undefined) return r;\n      if (this.lastNeed <= buf.length) {\n        buf.copy(this.lastChar, p, 0, this.lastNeed);\n        return this.lastChar.toString(this.encoding, 0, this.lastTotal);\n      }\n      buf.copy(this.lastChar, p, 0, buf.length);\n      this.lastNeed -= buf.length;\n    }\n    function utf8Text(buf, i) {\n      var total = utf8CheckIncomplete(this, buf, i);\n      if (!this.lastNeed) return buf.toString('utf8', i);\n      this.lastTotal = total;\n      var end = buf.length - (total - this.lastNeed);\n      buf.copy(this.lastChar, 0, end);\n      return buf.toString('utf8', i, end);\n    }\n    function utf8End(buf) {\n      var r = buf && buf.length ? this.write(buf) : '';\n      if (this.lastNeed) return r + '\\ufffd'.repeat(this.lastTotal - this.lastNeed);\n      return r;\n    }\n    function utf16Text(buf, i) {\n      if ((buf.length - i) % 2 === 0) {\n        var r = buf.toString('utf16le', i);\n        if (r) {\n          var c = r.charCodeAt(r.length - 1);\n          if (c >= 0xD800 && c <= 0xDBFF) {\n            this.lastNeed = 2;\n            this.lastTotal = 4;\n            this.lastChar[0] = buf[buf.length - 2];\n            this.lastChar[1] = buf[buf.length - 1];\n            return r.slice(0, -1);\n          }\n        }\n        return r;\n      }\n      this.lastNeed = 1;\n      this.lastTotal = 2;\n      this.lastChar[0] = buf[buf.length - 1];\n      return buf.toString('utf16le', i, buf.length - 1);\n    }\n    function utf16End(buf) {\n      var r = buf && buf.length ? this.write(buf) : '';\n      if (this.lastNeed) {\n        var end = this.lastTotal - this.lastNeed;\n        return r + this.lastChar.toString('utf16le', 0, end);\n      }\n      return r;\n    }\n    function base64Text(buf, i) {\n      var n = (buf.length - i) % 3;\n      if (n === 0) return buf.toString('base64', i);\n      this.lastNeed = 3 - n;\n      this.lastTotal = 3;\n      if (n === 1) {\n        this.lastChar[0] = buf[buf.length - 1];\n      } else {\n        this.lastChar[0] = buf[buf.length - 2];\n        this.lastChar[1] = buf[buf.length - 1];\n      }\n      return buf.toString('base64', i, buf.length - n);\n    }\n    function base64End(buf) {\n      var r = buf && buf.length ? this.write(buf) : '';\n      if (this.lastNeed) return r + this.lastChar.toString('base64', 0, 3 - this.lastNeed);\n      return r;\n    }\n    function simpleWrite(buf) {\n      return buf.toString(this.encoding);\n    }\n    function simpleEnd(buf) {\n      return buf && buf.length ? this.write(buf) : '';\n    }\n    },{\"safe-buffer\":62}],58:[function(require,module,exports){\n    module.exports = require('./readable').PassThrough;\n    },{\"./readable\":59}],59:[function(require,module,exports){\n    exports = module.exports = require('./lib/_stream_readable.js');\n    exports.Stream = exports;\n    exports.Readable = exports;\n    exports.Writable = require('./lib/_stream_writable.js');\n    exports.Duplex = require('./lib/_stream_duplex.js');\n    exports.Transform = require('./lib/_stream_transform.js');\n    exports.PassThrough = require('./lib/_stream_passthrough.js');\n    },{\"./lib/_stream_duplex.js\":49,\"./lib/_stream_passthrough.js\":50,\"./lib/_stream_readable.js\":51,\"./lib/_stream_transform.js\":52,\"./lib/_stream_writable.js\":53}],60:[function(require,module,exports){\n    module.exports = require('./readable').Transform;\n    },{\"./readable\":59}],61:[function(require,module,exports){\n    module.exports = require('./lib/_stream_writable.js');\n    },{\"./lib/_stream_writable.js\":53}],62:[function(require,module,exports){\n    var buffer = require('buffer');\n    var Buffer = buffer.Buffer;\n    function copyProps (src, dst) {\n      for (var key in src) {\n        dst[key] = src[key];\n      }\n    }\n    if (Buffer.from && Buffer.alloc && Buffer.allocUnsafe && Buffer.allocUnsafeSlow) {\n      module.exports = buffer;\n    } else {\n      copyProps(buffer, exports);\n      exports.Buffer = SafeBuffer;\n    }\n    function SafeBuffer (arg, encodingOrOffset, length) {\n      return Buffer(arg, encodingOrOffset, length)\n    }\n    copyProps(Buffer, SafeBuffer);\n    SafeBuffer.from = function (arg, encodingOrOffset, length) {\n      if (typeof arg === 'number') {\n        throw new TypeError('Argument must not be a number')\n      }\n      return Buffer(arg, encodingOrOffset, length)\n    };\n    SafeBuffer.alloc = function (size, fill, encoding) {\n      if (typeof size !== 'number') {\n        throw new TypeError('Argument must be a number')\n      }\n      var buf = Buffer(size);\n      if (fill !== undefined) {\n        if (typeof encoding === 'string') {\n          buf.fill(fill, encoding);\n        } else {\n          buf.fill(fill);\n        }\n      } else {\n        buf.fill(0);\n      }\n      return buf\n    };\n    SafeBuffer.allocUnsafe = function (size) {\n      if (typeof size !== 'number') {\n        throw new TypeError('Argument must be a number')\n      }\n      return Buffer(size)\n    };\n    SafeBuffer.allocUnsafeSlow = function (size) {\n      if (typeof size !== 'number') {\n        throw new TypeError('Argument must be a number')\n      }\n      return buffer.SlowBuffer(size)\n    };\n    },{\"buffer\":28}],63:[function(require,module,exports){\n    module.exports = Stream;\n    var EE = require('events').EventEmitter;\n    var inherits = require('inherits');\n    inherits(Stream, EE);\n    Stream.Readable = require('readable-stream/readable.js');\n    Stream.Writable = require('readable-stream/writable.js');\n    Stream.Duplex = require('readable-stream/duplex.js');\n    Stream.Transform = require('readable-stream/transform.js');\n    Stream.PassThrough = require('readable-stream/passthrough.js');\n    Stream.Stream = Stream;\n    function Stream() {\n      EE.call(this);\n    }\n    Stream.prototype.pipe = function(dest, options) {\n      var source = this;\n      function ondata(chunk) {\n        if (dest.writable) {\n          if (false === dest.write(chunk) && source.pause) {\n            source.pause();\n          }\n        }\n      }\n      source.on('data', ondata);\n      function ondrain() {\n        if (source.readable && source.resume) {\n          source.resume();\n        }\n      }\n      dest.on('drain', ondrain);\n      if (!dest._isStdio && (!options || options.end !== false)) {\n        source.on('end', onend);\n        source.on('close', onclose);\n      }\n      var didOnEnd = false;\n      function onend() {\n        if (didOnEnd) return;\n        didOnEnd = true;\n        dest.end();\n      }\n      function onclose() {\n        if (didOnEnd) return;\n        didOnEnd = true;\n        if (typeof dest.destroy === 'function') dest.destroy();\n      }\n      function onerror(er) {\n        cleanup();\n        if (EE.listenerCount(this, 'error') === 0) {\n          throw er;\n        }\n      }\n      source.on('error', onerror);\n      dest.on('error', onerror);\n      function cleanup() {\n        source.removeListener('data', ondata);\n        dest.removeListener('drain', ondrain);\n        source.removeListener('end', onend);\n        source.removeListener('close', onclose);\n        source.removeListener('error', onerror);\n        dest.removeListener('error', onerror);\n        source.removeListener('end', cleanup);\n        source.removeListener('close', cleanup);\n        dest.removeListener('close', cleanup);\n      }\n      source.on('end', cleanup);\n      source.on('close', cleanup);\n      dest.on('close', cleanup);\n      dest.emit('pipe', source);\n      return dest;\n    };\n    },{\"events\":30,\"inherits\":32,\"readable-stream/duplex.js\":48,\"readable-stream/passthrough.js\":58,\"readable-stream/readable.js\":59,\"readable-stream/transform.js\":60,\"readable-stream/writable.js\":61}],64:[function(require,module,exports){\n    (function (global){\n    module.exports = deprecate;\n    function deprecate (fn, msg) {\n      if (config('noDeprecation')) {\n        return fn;\n      }\n      var warned = false;\n      function deprecated() {\n        if (!warned) {\n          if (config('throwDeprecation')) {\n            throw new Error(msg);\n          } else if (config('traceDeprecation')) {\n            console.trace(msg);\n          } else {\n            console.warn(msg);\n          }\n          warned = true;\n        }\n        return fn.apply(this, arguments);\n      }\n      return deprecated;\n    }\n    function config (name) {\n      try {\n        if (!global.localStorage) return false;\n      } catch (_) {\n        return false;\n      }\n      var val = global.localStorage[name];\n      if (null == val) return false;\n      return String(val).toLowerCase() === 'true';\n    }\n    }).call(this,typeof commonjsGlobal !== \"undefined\" ? commonjsGlobal : typeof self !== \"undefined\" ? self : typeof window !== \"undefined\" ? window : {});\n    },{}],65:[function(require,module,exports){\n    arguments[4][32][0].apply(exports,arguments);\n    },{\"dup\":32}],66:[function(require,module,exports){\n    module.exports = function isBuffer(arg) {\n      return arg && typeof arg === 'object'\n        && typeof arg.copy === 'function'\n        && typeof arg.fill === 'function'\n        && typeof arg.readUInt8 === 'function';\n    };\n    },{}],67:[function(require,module,exports){\n    (function (process,global){\n    var formatRegExp = /%[sdj%]/g;\n    exports.format = function(f) {\n      if (!isString(f)) {\n        var objects = [];\n        for (var i = 0; i < arguments.length; i++) {\n          objects.push(inspect(arguments[i]));\n        }\n        return objects.join(' ');\n      }\n      var i = 1;\n      var args = arguments;\n      var len = args.length;\n      var str = String(f).replace(formatRegExp, function(x) {\n        if (x === '%%') return '%';\n        if (i >= len) return x;\n        switch (x) {\n          case '%s': return String(args[i++]);\n          case '%d': return Number(args[i++]);\n          case '%j':\n            try {\n              return JSON.stringify(args[i++]);\n            } catch (_) {\n              return '[Circular]';\n            }\n          default:\n            return x;\n        }\n      });\n      for (var x = args[i]; i < len; x = args[++i]) {\n        if (isNull(x) || !isObject(x)) {\n          str += ' ' + x;\n        } else {\n          str += ' ' + inspect(x);\n        }\n      }\n      return str;\n    };\n    exports.deprecate = function(fn, msg) {\n      if (isUndefined(global.process)) {\n        return function() {\n          return exports.deprecate(fn, msg).apply(this, arguments);\n        };\n      }\n      if (process.noDeprecation === true) {\n        return fn;\n      }\n      var warned = false;\n      function deprecated() {\n        if (!warned) {\n          if (process.throwDeprecation) {\n            throw new Error(msg);\n          } else if (process.traceDeprecation) {\n            console.trace(msg);\n          } else {\n            console.error(msg);\n          }\n          warned = true;\n        }\n        return fn.apply(this, arguments);\n      }\n      return deprecated;\n    };\n    var debugs = {};\n    var debugEnviron;\n    exports.debuglog = function(set) {\n      if (isUndefined(debugEnviron))\n        debugEnviron = process.env.NODE_DEBUG || '';\n      set = set.toUpperCase();\n      if (!debugs[set]) {\n        if (new RegExp('\\\\b' + set + '\\\\b', 'i').test(debugEnviron)) {\n          var pid = process.pid;\n          debugs[set] = function() {\n            var msg = exports.format.apply(exports, arguments);\n            console.error('%s %d: %s', set, pid, msg);\n          };\n        } else {\n          debugs[set] = function() {};\n        }\n      }\n      return debugs[set];\n    };\n    function inspect(obj, opts) {\n      var ctx = {\n        seen: [],\n        stylize: stylizeNoColor\n      };\n      if (arguments.length >= 3) ctx.depth = arguments[2];\n      if (arguments.length >= 4) ctx.colors = arguments[3];\n      if (isBoolean(opts)) {\n        ctx.showHidden = opts;\n      } else if (opts) {\n        exports._extend(ctx, opts);\n      }\n      if (isUndefined(ctx.showHidden)) ctx.showHidden = false;\n      if (isUndefined(ctx.depth)) ctx.depth = 2;\n      if (isUndefined(ctx.colors)) ctx.colors = false;\n      if (isUndefined(ctx.customInspect)) ctx.customInspect = true;\n      if (ctx.colors) ctx.stylize = stylizeWithColor;\n      return formatValue(ctx, obj, ctx.depth);\n    }\n    exports.inspect = inspect;\n    inspect.colors = {\n      'bold' : [1, 22],\n      'italic' : [3, 23],\n      'underline' : [4, 24],\n      'inverse' : [7, 27],\n      'white' : [37, 39],\n      'grey' : [90, 39],\n      'black' : [30, 39],\n      'blue' : [34, 39],\n      'cyan' : [36, 39],\n      'green' : [32, 39],\n      'magenta' : [35, 39],\n      'red' : [31, 39],\n      'yellow' : [33, 39]\n    };\n    inspect.styles = {\n      'special': 'cyan',\n      'number': 'yellow',\n      'boolean': 'yellow',\n      'undefined': 'grey',\n      'null': 'bold',\n      'string': 'green',\n      'date': 'magenta',\n      'regexp': 'red'\n    };\n    function stylizeWithColor(str, styleType) {\n      var style = inspect.styles[styleType];\n      if (style) {\n        return '\\u001b[' + inspect.colors[style][0] + 'm' + str +\n               '\\u001b[' + inspect.colors[style][1] + 'm';\n      } else {\n        return str;\n      }\n    }\n    function stylizeNoColor(str, styleType) {\n      return str;\n    }\n    function arrayToHash(array) {\n      var hash = {};\n      array.forEach(function(val, idx) {\n        hash[val] = true;\n      });\n      return hash;\n    }\n    function formatValue(ctx, value, recurseTimes) {\n      if (ctx.customInspect &&\n          value &&\n          isFunction(value.inspect) &&\n          value.inspect !== exports.inspect &&\n          !(value.constructor && value.constructor.prototype === value)) {\n        var ret = value.inspect(recurseTimes, ctx);\n        if (!isString(ret)) {\n          ret = formatValue(ctx, ret, recurseTimes);\n        }\n        return ret;\n      }\n      var primitive = formatPrimitive(ctx, value);\n      if (primitive) {\n        return primitive;\n      }\n      var keys = Object.keys(value);\n      var visibleKeys = arrayToHash(keys);\n      if (ctx.showHidden) {\n        keys = Object.getOwnPropertyNames(value);\n      }\n      if (isError(value)\n          && (keys.indexOf('message') >= 0 || keys.indexOf('description') >= 0)) {\n        return formatError(value);\n      }\n      if (keys.length === 0) {\n        if (isFunction(value)) {\n          var name = value.name ? ': ' + value.name : '';\n          return ctx.stylize('[Function' + name + ']', 'special');\n        }\n        if (isRegExp(value)) {\n          return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp');\n        }\n        if (isDate(value)) {\n          return ctx.stylize(Date.prototype.toString.call(value), 'date');\n        }\n        if (isError(value)) {\n          return formatError(value);\n        }\n      }\n      var base = '', array = false, braces = ['{', '}'];\n      if (isArray(value)) {\n        array = true;\n        braces = ['[', ']'];\n      }\n      if (isFunction(value)) {\n        var n = value.name ? ': ' + value.name : '';\n        base = ' [Function' + n + ']';\n      }\n      if (isRegExp(value)) {\n        base = ' ' + RegExp.prototype.toString.call(value);\n      }\n      if (isDate(value)) {\n        base = ' ' + Date.prototype.toUTCString.call(value);\n      }\n      if (isError(value)) {\n        base = ' ' + formatError(value);\n      }\n      if (keys.length === 0 && (!array || value.length == 0)) {\n        return braces[0] + base + braces[1];\n      }\n      if (recurseTimes < 0) {\n        if (isRegExp(value)) {\n          return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp');\n        } else {\n          return ctx.stylize('[Object]', 'special');\n        }\n      }\n      ctx.seen.push(value);\n      var output;\n      if (array) {\n        output = formatArray(ctx, value, recurseTimes, visibleKeys, keys);\n      } else {\n        output = keys.map(function(key) {\n          return formatProperty(ctx, value, recurseTimes, visibleKeys, key, array);\n        });\n      }\n      ctx.seen.pop();\n      return reduceToSingleString(output, base, braces);\n    }\n    function formatPrimitive(ctx, value) {\n      if (isUndefined(value))\n        return ctx.stylize('undefined', 'undefined');\n      if (isString(value)) {\n        var simple = '\\'' + JSON.stringify(value).replace(/^\"|\"$/g, '')\n                                                 .replace(/'/g, \"\\\\'\")\n                                                 .replace(/\\\\\"/g, '\"') + '\\'';\n        return ctx.stylize(simple, 'string');\n      }\n      if (isNumber(value))\n        return ctx.stylize('' + value, 'number');\n      if (isBoolean(value))\n        return ctx.stylize('' + value, 'boolean');\n      if (isNull(value))\n        return ctx.stylize('null', 'null');\n    }\n    function formatError(value) {\n      return '[' + Error.prototype.toString.call(value) + ']';\n    }\n    function formatArray(ctx, value, recurseTimes, visibleKeys, keys) {\n      var output = [];\n      for (var i = 0, l = value.length; i < l; ++i) {\n        if (hasOwnProperty(value, String(i))) {\n          output.push(formatProperty(ctx, value, recurseTimes, visibleKeys,\n              String(i), true));\n        } else {\n          output.push('');\n        }\n      }\n      keys.forEach(function(key) {\n        if (!key.match(/^\\d+$/)) {\n          output.push(formatProperty(ctx, value, recurseTimes, visibleKeys,\n              key, true));\n        }\n      });\n      return output;\n    }\n    function formatProperty(ctx, value, recurseTimes, visibleKeys, key, array) {\n      var name, str, desc;\n      desc = Object.getOwnPropertyDescriptor(value, key) || { value: value[key] };\n      if (desc.get) {\n        if (desc.set) {\n          str = ctx.stylize('[Getter/Setter]', 'special');\n        } else {\n          str = ctx.stylize('[Getter]', 'special');\n        }\n      } else {\n        if (desc.set) {\n          str = ctx.stylize('[Setter]', 'special');\n        }\n      }\n      if (!hasOwnProperty(visibleKeys, key)) {\n        name = '[' + key + ']';\n      }\n      if (!str) {\n        if (ctx.seen.indexOf(desc.value) < 0) {\n          if (isNull(recurseTimes)) {\n            str = formatValue(ctx, desc.value, null);\n          } else {\n            str = formatValue(ctx, desc.value, recurseTimes - 1);\n          }\n          if (str.indexOf('\\n') > -1) {\n            if (array) {\n              str = str.split('\\n').map(function(line) {\n                return '  ' + line;\n              }).join('\\n').substr(2);\n            } else {\n              str = '\\n' + str.split('\\n').map(function(line) {\n                return '   ' + line;\n              }).join('\\n');\n            }\n          }\n        } else {\n          str = ctx.stylize('[Circular]', 'special');\n        }\n      }\n      if (isUndefined(name)) {\n        if (array && key.match(/^\\d+$/)) {\n          return str;\n        }\n        name = JSON.stringify('' + key);\n        if (name.match(/^\"([a-zA-Z_][a-zA-Z_0-9]*)\"$/)) {\n          name = name.substr(1, name.length - 2);\n          name = ctx.stylize(name, 'name');\n        } else {\n          name = name.replace(/'/g, \"\\\\'\")\n                     .replace(/\\\\\"/g, '\"')\n                     .replace(/(^\"|\"$)/g, \"'\");\n          name = ctx.stylize(name, 'string');\n        }\n      }\n      return name + ': ' + str;\n    }\n    function reduceToSingleString(output, base, braces) {\n      var length = output.reduce(function(prev, cur) {\n        if (cur.indexOf('\\n') >= 0) ;\n        return prev + cur.replace(/\\u001b\\[\\d\\d?m/g, '').length + 1;\n      }, 0);\n      if (length > 60) {\n        return braces[0] +\n               (base === '' ? '' : base + '\\n ') +\n               ' ' +\n               output.join(',\\n  ') +\n               ' ' +\n               braces[1];\n      }\n      return braces[0] + base + ' ' + output.join(', ') + ' ' + braces[1];\n    }\n    function isArray(ar) {\n      return Array.isArray(ar);\n    }\n    exports.isArray = isArray;\n    function isBoolean(arg) {\n      return typeof arg === 'boolean';\n    }\n    exports.isBoolean = isBoolean;\n    function isNull(arg) {\n      return arg === null;\n    }\n    exports.isNull = isNull;\n    function isNullOrUndefined(arg) {\n      return arg == null;\n    }\n    exports.isNullOrUndefined = isNullOrUndefined;\n    function isNumber(arg) {\n      return typeof arg === 'number';\n    }\n    exports.isNumber = isNumber;\n    function isString(arg) {\n      return typeof arg === 'string';\n    }\n    exports.isString = isString;\n    function isSymbol(arg) {\n      return typeof arg === 'symbol';\n    }\n    exports.isSymbol = isSymbol;\n    function isUndefined(arg) {\n      return arg === void 0;\n    }\n    exports.isUndefined = isUndefined;\n    function isRegExp(re) {\n      return isObject(re) && objectToString(re) === '[object RegExp]';\n    }\n    exports.isRegExp = isRegExp;\n    function isObject(arg) {\n      return typeof arg === 'object' && arg !== null;\n    }\n    exports.isObject = isObject;\n    function isDate(d) {\n      return isObject(d) && objectToString(d) === '[object Date]';\n    }\n    exports.isDate = isDate;\n    function isError(e) {\n      return isObject(e) &&\n          (objectToString(e) === '[object Error]' || e instanceof Error);\n    }\n    exports.isError = isError;\n    function isFunction(arg) {\n      return typeof arg === 'function';\n    }\n    exports.isFunction = isFunction;\n    function isPrimitive(arg) {\n      return arg === null ||\n             typeof arg === 'boolean' ||\n             typeof arg === 'number' ||\n             typeof arg === 'string' ||\n             typeof arg === 'symbol' ||\n             typeof arg === 'undefined';\n    }\n    exports.isPrimitive = isPrimitive;\n    exports.isBuffer = require('./support/isBuffer');\n    function objectToString(o) {\n      return Object.prototype.toString.call(o);\n    }\n    function pad(n) {\n      return n < 10 ? '0' + n.toString(10) : n.toString(10);\n    }\n    var months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep',\n                  'Oct', 'Nov', 'Dec'];\n    function timestamp() {\n      var d = new Date();\n      var time = [pad(d.getHours()),\n                  pad(d.getMinutes()),\n                  pad(d.getSeconds())].join(':');\n      return [d.getDate(), months[d.getMonth()], time].join(' ');\n    }\n    exports.log = function() {\n      console.log('%s - %s', timestamp(), exports.format.apply(exports, arguments));\n    };\n    exports.inherits = require('inherits');\n    exports._extend = function(origin, add) {\n      if (!add || !isObject(add)) return origin;\n      var keys = Object.keys(add);\n      var i = keys.length;\n      while (i--) {\n        origin[keys[i]] = add[keys[i]];\n      }\n      return origin;\n    };\n    function hasOwnProperty(obj, prop) {\n      return Object.prototype.hasOwnProperty.call(obj, prop);\n    }\n    }).call(this,require('_process'),typeof commonjsGlobal !== \"undefined\" ? commonjsGlobal : typeof self !== \"undefined\" ? self : typeof window !== \"undefined\" ? window : {});\n    },{\"./support/isBuffer\":66,\"_process\":47,\"inherits\":65}]},{},[20])(20)\n    });\n    });\n\n    const offscreenCanvas = self.OffscreenCanvas ? new OffscreenCanvas(0, 0) : null;\n    const ctx = offscreenCanvas ? offscreenCanvas.getContext('2d') : null;\n    async function createBlobFromImageData(imageData) {\n        if (!offscreenCanvas) {\n            return null;\n        }\n        offscreenCanvas.width = imageData.width;\n        offscreenCanvas.height = imageData.height;\n        ctx.putImageData(imageData, 0, 0);\n        const blob = await offscreenCanvas.convertToBlob();\n        offscreenCanvas.width = 0;\n        offscreenCanvas.height = 0;\n        return blob;\n    }\n    class DjVuPage extends CompositeChunk {\n        constructor(bs, getINCLChunkCallback) {\n            super(bs);\n            this.getINCLChunkCallback = getINCLChunkCallback;\n            this.reset();\n        }\n        reset() {\n            this.bs.setOffset(12);\n            this.djbz = null;\n            this.bg44arr = new Array();\n            this.fg44 = null;\n            this.bgimage = null;\n            this.fgimage = null;\n            this.sjbz = null;\n            this.fgbz = null;\n            this.text = null;\n            this.decoded = false;\n            this.isBackgroundCompletelyDecoded = false;\n            this.isFirstBgChunkDecoded = false;\n            this.info = null;\n            this.iffchunks = [];\n            this.dependencies = null;\n        }\n        getDpi() {\n            if (this.info) {\n                return this.info.dpi;\n            } else {\n                return this.init().info.dpi;\n            }\n        }\n        getHeight() {\n            return this.info ? this.info.height : this.init().info.height;\n        }\n        getWidth() {\n            return this.info ? this.info.width : this.init().info.width;\n        }\n        async createPngObjectUrl() {\n            var time = performance.now();\n            var imageData = this.getImageData();\n            var imageBlob = await createBlobFromImageData(imageData);\n            if (!imageBlob) {\n                const pngImage = browser.PNG.sync.write(this.getImageData());\n                imageBlob = new Blob([pngImage.buffer]);\n            }\n            DjVu.IS_DEBUG && console.log(\"Png creation time = \", performance.now() - time);\n            var url = URL.createObjectURL(imageBlob);\n            return {\n                url: url,\n                byteLength: imageBlob.size,\n                width: this.getWidth(),\n                height: this.getHeight(),\n                dpi: this.getDpi(),\n            };\n        }\n        getDependencies() {\n            if (this.info || this.dependencies) {\n                return this.dependencies;\n            }\n            this.dependencies = [];\n            var bs = this.bs.fork();\n            while (!bs.isEmpty()) {\n                var chunk;\n                var id = bs.readStr4();\n                var length = bs.getInt32();\n                bs.jump(-8);\n                var chunkBs = bs.fork(length + 8);\n                bs.jump(8 + length + (length & 1 ? 1 : 0));\n                if (id === \"INCL\") {\n                    chunk = new INCLChunk(chunkBs);\n                    this.dependencies.push(chunk.ref);\n                }\n            }\n            return this.dependencies;\n        }\n        init() {\n            if (this.info) {\n                return this;\n            }\n            this.dependencies = [];\n            var id = this.bs.readStr4();\n            if (id !== 'INFO') {\n                throw new CorruptedFileDjVuError(\"The very first chunk must be INFO chunk, but we got \" + id + '!')\n            }\n            var length = this.bs.getInt32();\n            this.bs.jump(-8);\n            this.info = new INFOChunk(this.bs.fork(length + 8));\n            this.bs.jump(8 + length + (this.info.length & 1));\n            this.iffchunks.push(this.info);\n            while (!this.bs.isEmpty()) {\n                var chunk;\n                var id = this.bs.readStr4();\n                var length = this.bs.getInt32();\n                this.bs.jump(-8);\n                var chunkBs = this.bs.fork(length + 8);\n                this.bs.jump(8 + length + (length & 1));\n                if (!length) {\n                    chunk = new IFFChunk(chunkBs);\n                } else if (id == \"FG44\") {\n                    chunk = this.fg44 = new ColorChunk(chunkBs);\n                } else if (id == \"BG44\") {\n                    this.bg44arr.push(chunk = new ColorChunk(chunkBs));\n                } else if (id == 'Sjbz') {\n                    chunk = this.sjbz = new JB2Image(chunkBs);\n                } else if (id === \"INCL\") {\n                    chunk = this.incl = new INCLChunk(chunkBs);\n                    var inclChunk = this.getINCLChunkCallback(this.incl.ref);\n                    if (inclChunk) {\n                        inclChunk.id === \"Djbz\" ? this.djbz = inclChunk : this.iffchunks.push(inclChunk);\n                    }\n                    this.dependencies.push(chunk.ref);\n                } else if (id === \"CIDa\") {\n                    try {\n                        chunk = new CIDaChunk(chunkBs);\n                    } catch (e) {\n                        chunk = new ErrorChunk('CIDa', e);\n                    }\n                } else if (id === 'Djbz') {\n                    chunk = this.djbz = new JB2Dict(chunkBs);\n                } else if (id === 'FGbz') {\n                    chunk = this.fgbz = new DjVuPalette(chunkBs);\n                } else if (id === 'TXTa' || id === 'TXTz') {\n                    chunk = this.text = new DjVuText(chunkBs);\n                } else {\n                    chunk = new IFFChunk(chunkBs);\n                }\n                this.iffchunks.push(chunk);\n            }\n            return this;\n        }\n        getRotation() {\n            switch (this.info.flags) {\n                case 5: return 90;\n                case 2: return 180;\n                case 6: return 270;\n                default: return 0;\n            }\n        }\n        rotateIfRequired(imageData) {\n            if (this.info.flags === 5 || this.info.flags === 6) {\n                var newImageData = new ImageData(this.info.height, this.info.width);\n                var newPixelArray = new Uint32Array(newImageData.data.buffer);\n                var oldPixelArray = new Uint32Array(imageData.data.buffer);\n                var height = this.info.height;\n                var width = this.info.width;\n                if (this.info.flags === 6) {\n                    for (var i = 0; i < width; i++) {\n                        var rowOffset = (width - i - 1) * height;\n                        var to = height + rowOffset;\n                        for (var newIndex = rowOffset, oldIndex = i; newIndex < to; newIndex++, oldIndex += width) {\n                            newPixelArray[newIndex] = oldPixelArray[oldIndex];\n                        }\n                    }\n                } else {\n                    for (var i = 0; i < width; i++) {\n                        var rowOffset = i * height;\n                        var from = height + rowOffset - 1;\n                        for (var newIndex = from, oldIndex = i; newIndex >= rowOffset; newIndex--, oldIndex += width) {\n                            newPixelArray[newIndex] = oldPixelArray[oldIndex];\n                        }\n                    }\n                }\n                return newImageData;\n            }\n            if (this.info.flags === 2) {\n                new Uint32Array(imageData.data.buffer).reverse();\n                return imageData;\n            }\n            return imageData;\n        }\n        getImageData(rotate = true) {\n            const image = this._getImageData();\n            const rotatedImage = rotate ? this.rotateIfRequired(image) : image;\n            if (image.width * image.height > 10000000) {\n                this.reset();\n            }\n            return rotatedImage;\n        }\n        _getImageData() {\n            this.decode();\n            var time = performance.now();\n            if (!this.sjbz) {\n                if (this.bgimage) {\n                    return this.bgimage.getImage();\n                }\n                else if (this.fgimage) {\n                    return this.fgimage.getImage();\n                } else {\n                    var emptyImage = new ImageData(this.info.width, this.info.height);\n                    emptyImage.data.fill(255);\n                    return emptyImage;\n                }\n            }\n            if (!this.bgimage && !this.fgimage) {\n                return this.sjbz.getImage(this.fgbz);\n            }\n            var fgscale, bgscale, fgpixelmap, bgpixelmap;\n            function fakePixelMap(r, g, b) {\n                return {\n                    writePixel(index, pixelArray, pixelIndex) {\n                        pixelArray[pixelIndex] = r;\n                        pixelArray[pixelIndex | 1] = g;\n                        pixelArray[pixelIndex | 2] = b;\n                    }\n                }\n            }\n            if (this.bgimage) {\n                bgscale = Math.round(this.info.width / this.bgimage.info.width);\n                bgpixelmap = this.bgimage.pixelmap;\n            } else {\n                bgscale = 1;\n                bgpixelmap = fakePixelMap(255, 255, 255);\n            }\n            if (this.fgimage) {\n                fgscale = Math.round(this.info.width / this.fgimage.info.width);\n                fgpixelmap = this.fgimage.pixelmap;\n            } else {\n                fgscale = 1;\n                fgpixelmap = fakePixelMap(0, 0, 0);\n            }\n            var image;\n            if (!this.fgbz) {\n                image = this.createImageFromMaskImageAndPixelMaps(\n                    this.sjbz.getMaskImage(),\n                    fgpixelmap,\n                    bgpixelmap,\n                    fgscale,\n                    bgscale\n                );\n            } else {\n                image = this.createImageFromMaskImageAndBackgroundPixelMap(\n                    this.sjbz.getImage(this.fgbz, true),\n                    bgpixelmap,\n                    bgscale\n                );\n            }\n            DjVu.IS_DEBUG && console.log(\"DataImage creating time = \", performance.now() - time);\n            return image;\n        }\n        createImageFromMaskImageAndPixelMaps(maskImage, fgpixelmap, bgpixelmap, fgscale, bgscale) {\n            var image = maskImage;\n            var pixelArray = image.data;\n            var rowIndexOffset = ((this.info.height - 1) * this.info.width) << 2;\n            var width4 = this.info.width << 2;\n            for (var i = 0; i < this.info.height; i++) {\n                var bis = i / bgscale >> 0;\n                var fis = i / fgscale >> 0;\n                var bgIndexOffset = bgpixelmap.width * bis;\n                var fgIndexOffset = fgpixelmap.width * fis;\n                var index = rowIndexOffset;\n                for (var j = 0; j < this.info.width; j++) {\n                    if (pixelArray[index]) {\n                        bgpixelmap.writePixel(bgIndexOffset + (j / bgscale >> 0), pixelArray, index);\n                    } else {\n                        fgpixelmap.writePixel(fgIndexOffset + (j / fgscale >> 0), pixelArray, index);\n                    }\n                    index += 4;\n                }\n                rowIndexOffset -= width4;\n            }\n            return image;\n        }\n        createImageFromMaskImageAndBackgroundPixelMap(coloredMaskImage, bgpixelmap, bgscale) {\n            var pixelArray = coloredMaskImage.data;\n            var rowOffset = (this.info.height - 1) * this.info.width << 2;\n            var width4 = this.info.width << 2;\n            for (var i = 0; i < this.info.height; i++) {\n                var bgRowOffset = (i / bgscale >> 0) * bgpixelmap.width;\n                var index = rowOffset;\n                for (var j = 0; j < this.info.width; j++) {\n                    if (pixelArray[index | 3]) {\n                        bgpixelmap.writePixel(bgRowOffset + (j / bgscale >> 0), pixelArray, index);\n                    } else {\n                        pixelArray[index | 3] = 255;\n                    }\n                    index += 4;\n                }\n                rowOffset -= width4;\n            }\n            return coloredMaskImage;\n        }\n        decodeForeground() {\n            if (this.fg44) {\n                this.fgimage = new IWImage();\n                var zp = new ZPDecoder(this.fg44.bs);\n                this.fgimage.decodeChunk(zp, this.fg44.header);\n                var pixelMapTime = performance.now();\n                this.fgimage.createPixelmap();\n                DjVu.IS_DEBUG && console.log(\"Foreground pixelmap creating time = \", performance.now() - pixelMapTime);\n            }\n        }\n        decodeBackground(isOnlyFirstChunk = false) {\n            if (this.isBackgroundCompletelyDecoded || this.isFirstBgChunkDecoded && isOnlyFirstChunk) {\n                return;\n            }\n            if (this.bg44arr.length) {\n                this.bgimage = this.bgimage || new IWImage();\n                var to = isOnlyFirstChunk ? 1 : this.bg44arr.length;\n                var from = this.isFirstBgChunkDecoded ? 1 : 0;\n                for (var i = from; i < to; i++) {\n                    var chunk = this.bg44arr[i];\n                    var zp = new ZPDecoder(chunk.bs);\n                    var time = performance.now();\n                    this.bgimage.decodeChunk(zp, chunk.header);\n                    DjVu.IS_DEBUG && console.log(\"Background chunk decoding time = \", performance.now() - time);\n                }\n                var pixelMapTime = performance.now();\n                this.bgimage.createPixelmap();\n                DjVu.IS_DEBUG && console.log(\"Background pixelmap creating time = \", performance.now() - pixelMapTime);\n                if (isOnlyFirstChunk) {\n                    this.isFirstBgChunkDecoded = true;\n                } else {\n                    this.isBackgroundCompletelyDecoded = true;\n                }\n            }\n        }\n        decode() {\n            if (this.decoded) {\n                this.decodeBackground();\n                return this;\n            }\n            this.init();\n            var time = performance.now();\n            this.sjbz ? this.sjbz.decode(this.djbz) : 0;\n            DjVu.IS_DEBUG && console.log(\"Mask decoding time = \", performance.now() - time);\n            time = performance.now();\n            this.decodeForeground();\n            DjVu.IS_DEBUG && console.log(\"Foreground decoding time = \", performance.now() - time);\n            time = performance.now();\n            this.decodeBackground();\n            DjVu.IS_DEBUG && console.log(\"Background decoding time = \", performance.now() - time);\n            this.decoded = true;\n            return this;\n        }\n        getBackgroundImageData() {\n            this.decode();\n            if (this.bg44arr.length) {\n                this.bg44arr.forEach((chunk) => {\n                    var zp = new ZPDecoder(chunk.bs);\n                    this.bgimage.decodeChunk(zp, chunk.header);\n                }\n                );\n                return this.bgimage.getImage();\n            } else {\n                return null;\n            }\n        }\n        getForegroundImageData() {\n            this.decode();\n            if (this.fg44) {\n                this.fgimage = new IWImage();\n                var zp = new ZPDecoder(this.fg44.bs);\n                this.fgimage.decodeChunk(zp, this.fg44.header);\n                return this.fgimage.getImage();\n            } else {\n                return null;\n            }\n        }\n        getMaskImageData() {\n            this.decode();\n            return this.sjbz && this.sjbz.getImage(this.fgbz);\n        }\n        getText() {\n            this.init();\n            return this.text ? this.text.getText() : \"\";\n        }\n        getPageTextZone() {\n            this.init();\n            return this.text ? this.text.getPageZone() : null;\n        }\n        getNormalizedTextZones() {\n            this.init();\n            return this.text ? this.text.getNormalizedZones() : null;\n        }\n        toString() {\n            this.init();\n            var str = this.iffchunks.reduce((str, chunk) => str + chunk.toString(), '');\n            return super.toString(str);\n        }\n    }\n\n    class DIRMChunk extends IFFChunk {\n        constructor(bs) {\n            super(bs);\n            this.dflags = bs.byte();\n            this.isBundled = this.dflags >> 7;\n            this.nfiles = bs.getInt16();\n            if (this.isBundled) {\n                this.offsets = new Int32Array(this.nfiles);\n                for (var i = 0; i < this.nfiles; i++) {\n                    this.offsets[i] = bs.getInt32();\n                }\n            }\n            this.sizes = new Uint32Array(this.nfiles);\n            this.flags = new Uint8Array(this.nfiles);\n            this.ids = new Array(this.nfiles);\n            this.names = new Array(this.nfiles);\n            this.titles = new Array(this.nfiles);\n            var bsz = BZZDecoder.decodeByteStream(bs.fork());\n            for (var i = 0; i < this.nfiles; i++) {\n                this.sizes[i] = bsz.getUint24();\n            }\n            for (var i = 0; i < this.nfiles; i++) {\n                this.flags[i] = bsz.byte();\n            }\n            this.pagesIds = [];\n            this.idToNameRegistry = {};\n            for (var i = 0; i < this.nfiles && !bsz.isEmpty(); i++) {\n                this.ids[i] = bsz.readStrNT();\n                this.names[i] = this.flags[i] & 128 ? bsz.readStrNT() : this.ids[i];\n                this.titles[i] = this.flags[i] & 64 ? bsz.readStrNT() : this.ids[i];\n                if (this.isPageIndex(i)) {\n                    this.pagesIds.push(this.ids[i]);\n                }\n                this.idToNameRegistry[this.ids[i]] = this.names[i];\n            }\n        }\n        isPageIndex(i) {\n            return (this.flags[i] & 63) === 1;\n        }\n        isThumbnailIndex(i) {\n            return (this.flags[i] & 63) === 2;\n        }\n        getPageNameByItsNumber(number) {\n            return this.getComponentNameByItsId(this.pagesIds[number - 1]);\n        }\n        getPageNumberByItsId(id) {\n            const index = this.pagesIds.indexOf(id);\n            return index === -1 ? null : (index + 1);\n        }\n        getComponentNameByItsId(id) {\n            return this.idToNameRegistry[id];\n        }\n        getPagesQuantity() {\n            return this.pagesIds.length;\n        }\n        getFilesQuantity() {\n            return this.nfiles;\n        }\n        getMetadataStringByIndex(i) {\n            return (\n                `[id: \"${this.ids[i]}\", flag: ${this.flags[i]}, ` +\n                `offset: ${this.offsets ? this.offsets[i] : 'indirect'}, size: ${this.sizes[i]}]\\n`\n            );\n        }\n        toString() {\n            var str = super.toString();\n            str += (this.isBundled ? 'Bundled' : 'Indirect') + '\\n';\n            str += \"FilesCount: \" + this.nfiles + '\\n';\n            return str + '\\n';\n        }\n    }\n\n    class NAVMChunk extends IFFChunk {\n        constructor(bs) {\n            super(bs);\n            this.isDecoded = false;\n            this.contents = [];\n            this.decodedBookmarkCounter = 0;\n        }\n        getContents() {\n            this.decode();\n            return this.contents;\n        }\n        decode() {\n            if (this.isDecoded) {\n                return;\n            }\n            var dbs = BZZDecoder.decodeByteStream(this.bs);\n            var bookmarksCount = dbs.getUint16();\n            while (this.decodedBookmarkCounter < bookmarksCount) {\n                this.contents.push(this.decodeBookmark(dbs));\n            }\n            this.isDecoded = true;\n        }\n        decodeBookmark(bs) {\n            var childrenCount = bs.getUint8();\n            var descriptionLength = bs.getInt24();\n            var description = descriptionLength ? bs.readStrUTF(descriptionLength) : '';\n            var urlLength = bs.getInt24();\n            var url = urlLength ? bs.readStrUTF(urlLength) : '';\n            this.decodedBookmarkCounter++;\n            var bookmark = { description, url };\n            if (childrenCount) {\n                var children = new Array(childrenCount);\n                for (var i = 0; i < childrenCount; i++) {\n                    children[i] = this.decodeBookmark(bs);\n                }\n                bookmark.children = children;\n            }\n            return bookmark;\n        }\n        toString() {\n            this.decode();\n            var indent = '    ';\n            function stringifyBookmark(bookmark, indentSize = 0) {\n                var str = indent.repeat(indentSize) + `${bookmark.description} (${bookmark.url})\\n`;\n                if (bookmark.children) {\n                    str = bookmark.children.reduce((str, bookmark) => str + stringifyBookmark(bookmark, indentSize + 1), str);\n                }\n                return str;\n            }\n            var str = this.contents.reduce((str, bookmark) => str + stringifyBookmark(bookmark), super.toString());\n            return str + '\\n';\n        }\n    }\n\n    class BZZEncoder {\n        constructor(zp) {\n            this.zp = zp || new ZPEncoder();\n            this.FREQMAX = 4;\n            this.CTXIDS = 3;\n            this.ctx = new Uint8Array(300);\n            this.size = 0;\n            this.blocksize = 0;\n            this.FREQS0 = 100000;\n            this.FREQS1 = 1000000;\n        }\n        blocksort(arr) {\n            var length = arr.length;\n            var offs = new Array(arr.length);\n            for (var i = 0; i < length; offs[i] = i++) { }\n            offs.sort((a, b) => {\n                for (var i = 0; i < length; i++) {\n                    if (a === this.markerpos) {\n                        return -1;\n                    }\n                    else if (b === this.markerpos) {\n                        return 1;\n                    }\n                    var res = arr[a % length] - arr[b % length];\n                    if (res) {\n                        return res;\n                    }\n                    a++;\n                    b++;\n                }\n                return 0;\n            });\n            var narr = new Uint8Array(length);\n            for (var i = 0; i < length; i++) {\n                var pos = offs[i] - 1;\n                if (pos >= 0) {\n                    narr[i] = arr[pos];\n                }\n                else {\n                    narr[i] = 0;\n                    this.markerpos = i;\n                }\n            }\n            return narr;\n        }\n        encode_raw(bits, x) {\n            var n = 1;\n            var m = (1 << bits);\n            while (n < m) {\n                x = (x & (m - 1)) << 1;\n                var b = (x >> bits);\n                this.zp.encode(b);\n                n = (n << 1) | b;\n            }\n        }\n        encode_binary(cxtoff, bits, x) {\n            var n = 1;\n            var m = (1 << bits);\n            cxtoff--;\n            while (n < m) {\n                x = (x & (m - 1)) << 1;\n                var b = (x >> bits);\n                this.zp.encode(b, this.ctx, cxtoff + n);\n                n = (n << 1) | b;\n            }\n        }\n        encode(buffer) {\n            var data = new Uint8Array(buffer);\n            var size = data.length;\n            var markerpos = size - 1;\n            this.markerpos = markerpos;\n            data = this.blocksort(data);\n            markerpos = this.markerpos;\n            this.encode_raw(24, size);\n            var fshift = 0;\n            if (size < this.FREQS0) {\n                fshift = 0;\n                this.zp.encode(0);\n            }\n            else if (size < this.FREQS1) {\n                fshift = 1;\n                this.zp.encode(1);\n                this.zp.encode(0);\n            }\n            else {\n                fshift = 2;\n                this.zp.encode(1);\n                this.zp.encode(1);\n            }\n            var mtf = new Uint8Array(256);\n            var rmtf = new Uint8Array(256);\n            var freq = new Uint32Array(this.FREQMAX);\n            var m = 0;\n            for (m = 0; m < 256; m++)\n                mtf[m] = m;\n            for (m = 0; m < 256; m++)\n                rmtf[mtf[m]] = m;\n            var fadd = 4;\n            for (m = 0; m < this.FREQMAX; m++)\n                freq[m] = 0;\n            var i;\n            var mtfno = 3;\n            for (i = 0; i < size; i++) {\n                var c = data[i];\n                var ctxid = this.CTXIDS - 1;\n                if (ctxid > mtfno)\n                    ctxid = mtfno;\n                mtfno = rmtf[c];\n                if (i == markerpos)\n                    mtfno = 256;\n                var b;\n                var ctxoff = 0;\n                switch (0)\n                {\n                    default:\n                        b = (mtfno == 0);\n                        this.zp.encode(b, this.ctx, ctxoff + ctxid);\n                        if (b)\n                            break;\n                        ctxoff += this.CTXIDS;\n                        b = (mtfno == 1);\n                        this.zp.encode(b, this.ctx, ctxoff + ctxid);\n                        if (b)\n                            break;\n                        ctxoff += this.CTXIDS;\n                        b = (mtfno < 4);\n                        this.zp.encode(b, this.ctx, ctxoff);\n                        if (b) {\n                            this.encode_binary(ctxoff + 1, 1, mtfno - 2);\n                            break;\n                        }\n                        ctxoff += 1 + 1;\n                        b = (mtfno < 8);\n                        this.zp.encode(b, this.ctx, ctxoff);\n                        if (b) {\n                            this.encode_binary(ctxoff + 1, 2, mtfno - 4);\n                            break;\n                        }\n                        ctxoff += 1 + 3;\n                        b = (mtfno < 16);\n                        this.zp.encode(b, this.ctx, ctxoff);\n                        if (b) {\n                            this.encode_binary(ctxoff + 1, 3, mtfno - 8);\n                            break;\n                        }\n                        ctxoff += 1 + 7;\n                        b = (mtfno < 32);\n                        this.zp.encode(b, this.ctx, ctxoff);\n                        if (b) {\n                            this.encode_binary(ctxoff + 1, 4, mtfno - 16);\n                            break;\n                        }\n                        ctxoff += 1 + 15;\n                        b = (mtfno < 64);\n                        this.zp.encode(b, this.ctx, ctxoff);\n                        if (b) {\n                            this.encode_binary(ctxoff + 1, 5, mtfno - 32);\n                            break;\n                        }\n                        ctxoff += 1 + 31;\n                        b = (mtfno < 128);\n                        this.zp.encode(b, this.ctx, ctxoff);\n                        if (b) {\n                            this.encode_binary(ctxoff + 1, 6, mtfno - 64);\n                            break;\n                        }\n                        ctxoff += 1 + 63;\n                        b = (mtfno < 256);\n                        this.zp.encode(b, this.ctx, ctxoff);\n                        if (b) {\n                            this.encode_binary(ctxoff + 1, 7, mtfno - 128);\n                            break;\n                        }\n                        continue;\n                }\n                fadd = fadd + (fadd >> fshift);\n                if (fadd > 0x10000000) {\n                    fadd = fadd >> 24;\n                    freq[0] >>= 24;\n                    freq[1] >>= 24;\n                    freq[2] >>= 24;\n                    freq[3] >>= 24;\n                    for (var k = 4; k < this.FREQMAX; k++)\n                        freq[k] = freq[k] >> 24;\n                }\n                var fc = fadd;\n                if (mtfno < this.FREQMAX)\n                    fc += freq[mtfno];\n                var k;\n                for (k = mtfno; k >= this.FREQMAX; k--) {\n                    mtf[k] = mtf[k - 1];\n                    rmtf[mtf[k]] = k;\n                }\n                for (; k > 0 && fc >= freq[k - 1]; k--) {\n                    mtf[k] = mtf[k - 1];\n                    freq[k] = freq[k - 1];\n                    rmtf[mtf[k]] = k;\n                }\n                mtf[k] = c;\n                freq[k] = fc;\n                rmtf[mtf[k]] = k;\n            }\n            this.encode_raw(24, 0);\n            this.zp.eflush();\n            return 0;\n        }\n    }\n\n    class DjVuWriter {\n        constructor(length) {\n            this.bsw = new ByteStreamWriter(length || 1024 * 1024);\n        }\n        startDJVM() {\n            this.bsw.writeStr('AT&T').writeStr('FORM').saveOffsetMark('fileSize')\n                .jump(4).writeStr('DJVM');\n        }\n        writeDirmChunk(dirm) {\n            this.dirm = dirm;\n            this.bsw.writeStr('DIRM').saveOffsetMark('DIRMsize').jump(4);\n            this.dirm.offsets = [];\n            this.bsw.writeByte(dirm.dflags)\n                .writeInt16(dirm.flags.length)\n                .saveOffsetMark('DIRMoffsets')\n                .jump(4 * dirm.flags.length);\n            var tmpBS = new ByteStreamWriter();\n            for (var i = 0; i < dirm.sizes.length; i++) {\n                tmpBS.writeInt24(dirm.sizes[i]);\n            }\n            for (var i = 0; i < dirm.flags.length; i++) {\n                tmpBS.writeByte(dirm.flags[i]);\n            }\n            for (var i = 0; i < dirm.ids.length; i++) {\n                tmpBS.writeStrNT(dirm.ids[i]);\n                if (dirm.flags[i] & 128) {\n                    tmpBS.writeStrNT(dirm.names[i]);\n                }\n                if (dirm.flags[i] & 64) {\n                    tmpBS.writeStrNT(dirm.titles[i]);\n                }\n            }\n            tmpBS.writeByte(0);\n            var tmpBuffer = tmpBS.getBuffer();\n            var bzzBS = new ByteStreamWriter();\n            var zp = new ZPEncoder(bzzBS);\n            var bzz = new BZZEncoder(zp);\n            bzz.encode(tmpBuffer);\n            var encodedBuffer = bzzBS.getBuffer();\n            this.bsw.writeBuffer(encodedBuffer);\n            this.bsw.rewriteSize('DIRMsize');\n        }\n        get offset() {\n            return this.bsw.offset;\n        }\n        writeByte(byte) {\n            this.bsw.writeByte(byte);\n            return this;\n        }\n        writeStr(str) {\n            this.bsw.writeStr(str);\n            return this;\n        }\n        writeInt32(val) {\n            this.bsw.writeInt32(val);\n            return this;\n        }\n        writeFormChunkBS(bs) {\n            if (this.bsw.offset & 1) {\n                this.bsw.writeByte(0);\n            }\n            var off = this.bsw.offset;\n            this.dirm.offsets.push(off);\n            this.bsw.writeByteStream(bs);\n        }\n        writeFormChunkBuffer(buffer) {\n            if (this.bsw.offset & 1) {\n                this.bsw.writeByte(0);\n            }\n            var off = this.bsw.offset;\n            this.dirm.offsets.push(off);\n            this.bsw.writeBuffer(buffer);\n        }\n        writeChunk(chunk) {\n            if (this.bsw.offset & 1) {\n                this.bsw.writeByte(0);\n            }\n            this.bsw.writeByteStream(chunk.bs);\n        }\n        getBuffer() {\n            this.bsw.rewriteSize('fileSize');\n            if (this.dirm.offsets.length !== (this.dirm.flags.length)) {\n                throw new Error(\"Записаны не все страницы и словари !!!\");\n            }\n            for (var i = 0; i < this.dirm.offsets.length; i++) {\n                this.bsw.rewriteInt32('DIRMoffsets', this.dirm.offsets[i]);\n            }\n            return this.bsw.getBuffer();\n        }\n    }\n\n    class ThumChunk extends CompositeChunk { }\n\n    async function loadByteStream(url, errorData = {}) {\n        let xhr;\n        try {\n            xhr = await loadFileViaXHR(url);\n        } catch (e) {\n            throw new NetworkDjVuError({ url: url, ...errorData });\n        }\n        if (xhr.status && xhr.status !== 200) {\n            throw new UnsuccessfulRequestDjVuError(xhr, { ...errorData });\n        }\n        return new ByteStream(xhr.response);\n    }\n    function checkAndCropByteStream(bs, compositeChunkId = null, errorData = null) {\n        if (bs.readStr4() !== 'AT&T') {\n            throw new CorruptedFileDjVuError(`The byte stream isn't a djvu file.`, errorData);\n        }\n        if (!compositeChunkId) {\n            return bs.fork();\n        }\n        let chunkId = bs.readStr4();\n        const length = bs.getInt32();\n        chunkId += bs.readStr4();\n        if (chunkId !== compositeChunkId) {\n            throw new CorruptedFileDjVuError(\n                `Unexpected chunk id. Expected \"${compositeChunkId}\", but got \"${chunkId}\"`,\n                errorData\n            );\n        }\n        return bs.jump(-12).fork(length + 8);\n    }\n    async function loadPage(number, url) {\n        const errorData = { pageNumber: number };\n        return checkAndCropByteStream(await loadByteStream(url, errorData), null, errorData);\n    }\n    async function loadPageDependency(id, name, baseUrl, pageNumber = null) {\n        const errorData = { pageNumber: pageNumber, dependencyId: id };\n        return checkAndCropByteStream(await loadByteStream(baseUrl + name, errorData), 'FORMDJVI', errorData);\n    }\n    async function loadThumbnail(url, id = null) {\n        const errorData = { thumbnailId: id };\n        return checkAndCropByteStream(await loadByteStream(url, errorData), 'FORMTHUM', errorData);\n    }\n\n    async function bundle(progressCallback = () => { }) {\n        const djvuWriter = new DjVuWriter();\n        djvuWriter.startDJVM();\n        const dirm = {\n            dflags: this.dirm.dflags | 128,\n            flags: [],\n            names: [],\n            titles: [],\n            sizes: [],\n            ids: [],\n        };\n        const chunkByteStreams = [];\n        const filesQuantity = this.dirm.getFilesQuantity();\n        const totalOperations = filesQuantity + 3;\n        let pageNumber = 0;\n        const limit = pLimit(4);\n        let downloadedNumber = 0;\n        const promises = [];\n        for (let i = 0; i < filesQuantity; i++) {\n            promises.push(limit(async () => {\n                let bs;\n                if (this.dirm.isPageIndex(i)) {\n                    pageNumber++;\n                    bs = await loadPage(pageNumber, this._getUrlByPageNumber(pageNumber));\n                } else if (this.dirm.isThumbnailIndex(i)) {\n                    bs = await loadThumbnail(\n                        this.baseUrl + this.dirm.getComponentNameByItsId(this.dirm.ids[i]),\n                        this.dirm.ids[i]\n                    );\n                } else {\n                    bs = await loadPageDependency(\n                        this.dirm.ids[i],\n                        this.dirm.getComponentNameByItsId(this.dirm.ids[i]),\n                        this.baseUrl,\n                    );\n                }\n                downloadedNumber++;\n                progressCallback(downloadedNumber / totalOperations);\n                return {\n                    flags: this.dirm.flags[i],\n                    id: this.dirm.ids[i],\n                    name: this.dirm.names[i],\n                    title: this.dirm.titles[i],\n                    bs: bs,\n                };\n            }));\n        }\n        for (const data of await Promise.all(promises)) {\n            dirm.flags.push(data.flags);\n            dirm.ids.push(data.id);\n            dirm.names.push(data.names);\n            dirm.titles.push(data.title);\n            dirm.sizes.push(data.bs.length);\n            chunkByteStreams.push(data.bs);\n        }\n        djvuWriter.writeDirmChunk(dirm);\n        if (this.navm) {\n            djvuWriter.writeChunk(this.navm);\n        }\n        progressCallback((totalOperations - 2) / totalOperations);\n        for (let i = 0; i < chunkByteStreams.length; i++) {\n            djvuWriter.writeFormChunkBS(chunkByteStreams[i]);\n            chunkByteStreams[i] = null;\n        }\n        progressCallback((totalOperations - 1) / totalOperations);\n        const newBuffer = djvuWriter.getBuffer();\n        progressCallback(1);\n        return new this.constructor(newBuffer);\n    }\n\n    const MEMORY_LIMIT = 50 * 1024 * 1024;\n    class DjVuDocument {\n        constructor(arraybuffer, { baseUrl = null, memoryLimit = MEMORY_LIMIT } = {}) {\n            this.buffer = arraybuffer;\n            this.baseUrl = baseUrl && baseUrl.trim();\n            if (typeof this.baseUrl === 'string') {\n                if (this.baseUrl[this.baseUrl.length - 1] !== '/') {\n                    this.baseUrl += '/';\n                }\n                if (!/^[A-Za-z]+:\\/\\//.test(this.baseUrl)) {\n                    this.baseUrl = location.origin && (new URL(this.baseUrl, location.origin).href);\n                }\n            }\n            this.memoryLimit = memoryLimit;\n            this.djvi = {};\n            this.getINCLChunkCallback = id => this.djvi[id].innerChunk;\n            this.bs = new ByteStream(arraybuffer);\n            this.formatID = this.bs.readStr4();\n            if (this.formatID !== 'AT&T') {\n                throw new IncorrectFileFormatDjVuError();\n            }\n            this.id = this.bs.readStr4();\n            this.length = this.bs.getInt32();\n            this.id += this.bs.readStr4();\n            if (this.id === 'FORMDJVM') {\n                this._initMultiPageDocument();\n            } else if (this.id === 'FORMDJVU') {\n                this.bs.jump(-12);\n                this.pages = [new DjVuPage(this.bs.fork(this.length + 8), this.getINCLChunkCallback)];\n            } else {\n                throw new CorruptedFileDjVuError(\n                    `The id of the first chunk of the document should be either FORMDJVM or FORMDJVU, but there is ${this.id}`\n                );\n            }\n        }\n        _initMultiPageDocument() {\n            this._readMetaDataChunk();\n            this._readContentsChunkIfExists();\n            this.pages = [];\n            this.thumbs = [];\n            if (this.dirm.isBundled) {\n                this._parseComponents();\n            } else {\n                this.pages = new Array(this.dirm.getPagesQuantity());\n                this.memoryUsage = this.bs.buffer.byteLength;\n                this.loadedPageNumbers = [];\n            }\n        }\n        _readMetaDataChunk() {\n            var id = this.bs.readStr4();\n            if (id !== 'DIRM') {\n                throw new CorruptedFileDjVuError(\"The DIRM chunk must be the first but there is \" + id + \" instead!\");\n            }\n            var length = this.bs.getInt32();\n            this.bs.jump(-8);\n            this.dirm = new DIRMChunk(this.bs.fork(length + 8));\n            this.bs.jump(8 + length + (length & 1 ? 1 : 0));\n        }\n        _readContentsChunkIfExists() {\n            this.navm = null;\n            if (this.bs.remainingLength() > 8) {\n                var id = this.bs.readStr4();\n                var length = this.bs.getInt32();\n                this.bs.jump(-8);\n                if (id === 'NAVM') {\n                    this.navm = new NAVMChunk(this.bs.fork(length + 8));\n                }\n            }\n        }\n        _parseComponents() {\n            this.dirmOrderedChunks = new Array(this.dirm.getFilesQuantity());\n            for (var i = 0; i < this.dirm.offsets.length; i++) {\n                this.bs.setOffset(this.dirm.offsets[i]);\n                var id = this.bs.readStr4();\n                var length = this.bs.getInt32();\n                id += this.bs.readStr4();\n                this.bs.jump(-12);\n                switch (id) {\n                    case \"FORMDJVU\":\n                        this.pages.push(this.dirmOrderedChunks[i] = new DjVuPage(\n                            this.bs.fork(length + 8),\n                            this.getINCLChunkCallback\n                        ));\n                        break;\n                    case \"FORMDJVI\":\n                        this.dirmOrderedChunks[i] = this.djvi[this.dirm.ids[i]] = new DjViChunk(this.bs.fork(length + 8));\n                        break;\n                    case \"FORMTHUM\":\n                        this.thumbs.push(this.dirmOrderedChunks[i] = new ThumChunk(this.bs.fork(length + 8)));\n                        break;\n                    default:\n                        console.error(\"Incorrect chunk ID: \", id);\n                }\n            }\n        }\n        getPagesSizes() {\n            var sizes = this.pages.map(page => {\n                return {\n                    width: page.getWidth(),\n                    height: page.getHeight(),\n                    dpi: page.getDpi(),\n                };\n            });\n            this.pages.forEach(page => page.reset());\n            return sizes;\n        }\n        isBundled() {\n            return this.dirm ? this.dirm.isBundled : true;\n        }\n        getPagesQuantity() {\n            return this.dirm ? this.dirm.getPagesQuantity() : 1;\n        }\n        getContents() {\n            return this.navm ? this.navm.getContents() : null;\n        }\n        getMemoryUsage() {\n            return this.memoryUsage;\n        }\n        getMemoryLimit() {\n            return this.memoryLimit;\n        }\n        setMemoryLimit(limit = MEMORY_LIMIT) {\n            this.memoryLimit = limit;\n        }\n        getPageNumberByUrl(url) {\n            if (url[0] !== '#') {\n                return null;\n            }\n            const ref = url.slice(1);\n            let pageNumber = this.dirm.getPageNumberByItsId(ref);\n            if (!pageNumber) {\n                const num = Math.round(Number(ref));\n                if (num >= 1 && num <= this.pages.length) {\n                    pageNumber = num;\n                }\n            }\n            return pageNumber || null;\n        }\n        releaseMemoryIfRequired(preservedDependencies = null) {\n            if (this.memoryUsage <= this.memoryLimit) {\n                return;\n            }\n            while (this.memoryUsage > this.memoryLimit && this.loadedPageNumbers.length) {\n                var number = this.loadedPageNumbers.shift();\n                this.memoryUsage -= this.pages[number].bs.buffer.byteLength;\n                this.pages[number] = null;\n            }\n            if (this.memoryUsage > this.memoryLimit && !this.loadedPageNumbers.length) {\n                this.resetLastRequestedPage();\n                var newDjVi = {};\n                if (preservedDependencies) {\n                    preservedDependencies.forEach(id => {\n                        newDjVi[id] = this.djvi[id];\n                        this.memoryUsage += newDjVi[id].bs.buffer.byteLength;\n                    });\n                }\n                Object.keys(this.djvi).forEach(key => {\n                    this.memoryUsage -= this.djvi[key].bs.buffer.byteLength;\n                });\n                this.djvi = newDjVi;\n            }\n        }\n        _getUrlByPageNumber(number) {\n            return this.baseUrl + this.dirm.getPageNameByItsNumber(number);\n        }\n        async getPage(number) {\n            var page = this.pages[number - 1];\n            if (this.lastRequestedPage && this.lastRequestedPage !== page) {\n                this.lastRequestedPage.reset();\n            }\n            this.lastRequestedPage = page;\n            if (!page) {\n                if (number < 1 || number > this.pages.length || this.isBundled()) {\n                    throw new NoSuchPageDjVuError(number);\n                } else {\n                    if (this.baseUrl === null) {\n                        throw new NoBaseUrlDjVuError();\n                    }\n                    const bs = await loadPage(\n                        number,\n                        this._getUrlByPageNumber(number)\n                    );\n                    const page = new DjVuPage(bs, this.getINCLChunkCallback);\n                    this.memoryUsage += bs.buffer.byteLength;\n                    await this._loadDependencies(page.getDependencies(), number);\n                    this.releaseMemoryIfRequired(page.getDependencies());\n                    this.pages[number - 1] = page;\n                    this.loadedPageNumbers.push(number - 1);\n                    this.lastRequestedPage = page;\n                }\n            } else if (!this.isOnePageDependenciesLoaded && this.id === \"FORMDJVU\") {\n                var dependencies = page.getDependencies();\n                if (dependencies.length) {\n                    await this._loadDependencies(dependencies, 1);\n                }\n                this.isOnePageDependenciesLoaded = true;\n            }\n            return this.lastRequestedPage;\n        }\n        async _loadDependencies(dependencies, pageNumber = null) {\n            var unloadedDependencies = dependencies.filter(id => !this.djvi[id]);\n            if (!unloadedDependencies.length) {\n                return;\n            }\n            await Promise.all(unloadedDependencies.map(async id => {\n                const bs = await loadPageDependency(\n                    id,\n                    this.dirm ? this.dirm.getComponentNameByItsId(id) : id,\n                    this.baseUrl,\n                    pageNumber\n                );\n                this.djvi[id] = new DjViChunk(bs);\n                this.memoryUsage += bs.buffer.byteLength;\n            }));\n        }\n        getPageUnsafe(number) {\n            return this.pages[number - 1];\n        }\n        resetLastRequestedPage() {\n            this.lastRequestedPage && this.lastRequestedPage.reset();\n            this.lastRequestedPage = null;\n        }\n        countFiles() {\n            var count = 0;\n            var bs = this.bs.clone();\n            bs.jump(16);\n            while (!bs.isEmpty()) {\n                var id = bs.readStr4();\n                var length = bs.getInt32();\n                bs.jump(length + (length & 1 ? 1 : 0));\n                if (id === 'FORM') {\n                    count++;\n                }\n            }\n            return count;\n        }\n        toString(html) {\n            var str = this.formatID + '\\n';\n            if (this.dirm) {\n                str += this.id + \" \" + this.length + '\\n\\n';\n                str += this.dirm.toString();\n                str += this.navm ? this.navm.toString() : '';\n                if (this.isBundled()) {\n                    this.dirmOrderedChunks.forEach((chunk, i) => {\n                        str += this.dirm.getMetadataStringByIndex(i) + chunk.toString();\n                    });\n                } else {\n                    for (let i = 0; i < this.dirm.getFilesQuantity(); i++) {\n                        str += this.dirm.getMetadataStringByIndex(i);\n                    }\n                }\n            } else {\n                str += this.pages[0].toString();\n            }\n            return html ? str.replace(/\\n/g, '<br>').replace(/\\s/g, '&nbsp;') : str;\n        }\n        createObjectURL() {\n            var blob = new Blob([this.bs.buffer]);\n            var url = URL.createObjectURL(blob);\n            return url;\n        }\n        slice(from = 1, to = this.pages.length) {\n            const djvuWriter = new DjVuWriter();\n            djvuWriter.startDJVM();\n            const dirm = {\n                dflags: this.dirm.dflags,\n                flags: [],\n                names: [],\n                titles: [],\n                sizes: [],\n                ids: [],\n            };\n            const chunkByteStreams = [];\n            const totalPageCount = to - from + 1;\n            const dependencies = {};\n            const filesQuantity = this.dirm.getFilesQuantity();\n            for (\n                let i = 0, pageIndex = 0, addedPageCount = 0;\n                i < filesQuantity && addedPageCount < totalPageCount;\n                i++\n            ) {\n                const isPage = (this.dirm.flags[i] & 63) === 1;\n                if (!isPage) continue;\n                pageIndex++;\n                if (pageIndex < from) continue;\n                addedPageCount++;\n                const pageByteStream = new ByteStream(this.buffer, this.dirm.offsets[i], this.dirm.sizes[i]);\n                const deps = new DjVuPage(pageByteStream).getDependencies();\n                for (const dependencyId of deps) {\n                    dependencies[dependencyId] = 1;\n                }\n            }\n            for (\n                let i = 0, pageIndex = 0, addedPageCount = 0;\n                i < filesQuantity && addedPageCount < totalPageCount;\n                i++\n            ) {\n                const isPage = (this.dirm.flags[i] & 63) === 1;\n                if (isPage) {\n                    pageIndex++;\n                    if (pageIndex < from) continue;\n                    addedPageCount++;\n                }\n                if ((this.dirm.ids[i] in dependencies) || isPage) {\n                    dirm.flags.push(this.dirm.flags[i]);\n                    dirm.sizes.push(this.dirm.sizes[i]);\n                    dirm.ids.push(this.dirm.ids[i]);\n                    dirm.names.push(this.dirm.names[i]);\n                    dirm.titles.push(this.dirm.titles[i]);\n                    chunkByteStreams.push(\n                        new ByteStream(this.buffer, this.dirm.offsets[i], this.dirm.sizes[i])\n                    );\n                }\n            }\n            djvuWriter.writeDirmChunk(dirm);\n            if (this.navm) {\n                djvuWriter.writeChunk(this.navm);\n            }\n            for (const chunkByteStream of chunkByteStreams) {\n                djvuWriter.writeFormChunkBS(chunkByteStream);\n            }\n            const newBuffer = djvuWriter.getBuffer();\n            DjVu.IS_DEBUG && console.log(\"New Buffer size = \", newBuffer.byteLength);\n            return new DjVuDocument(newBuffer);\n        }\n        static concat(doc1, doc2) {\n            var dirm = {};\n            var length = doc1.pages.length + doc2.pages.length;\n            dirm.dflags = 129;\n            dirm.flags = [];\n            dirm.sizes = [];\n            dirm.ids = [];\n            var pages = [];\n            var idset = new Set();\n            if (!doc1.dirm) {\n                dirm.flags.push(1);\n                dirm.sizes.push(doc1.pages[0].bs.length);\n                dirm.ids.push('single');\n                idset.add('single');\n                pages.push(doc1.pages[0]);\n            }\n            else {\n                for (var i = 0; i < doc1.pages.length; i++) {\n                    dirm.flags.push(doc1.dirm.flags[i]);\n                    dirm.sizes.push(doc1.dirm.sizes[i]);\n                    dirm.ids.push(doc1.dirm.ids[i]);\n                    idset.add(doc1.dirm.ids[i]);\n                    pages.push(doc1.pages[i]);\n                }\n            }\n            if (!doc2.dirm) {\n                dirm.flags.push(1);\n                dirm.sizes.push(doc2.pages[0].bs.length);\n                var newid = 'single2';\n                var tmp = 0;\n                while (idset.has(newid)) {\n                    newid = 'single2' + tmp.toString();\n                    tmp++;\n                }\n                dirm.ids.push(newid);\n                pages.push(doc2.pages[0]);\n            }\n            else {\n                for (var i = 0; i < doc2.pages.length; i++) {\n                    dirm.flags.push(doc2.dirm.flags[i]);\n                    dirm.sizes.push(doc2.dirm.sizes[i]);\n                    var newid = doc2.dirm.ids[i];\n                    var tmp = 0;\n                    while (idset.has(newid)) {\n                        newid = doc2.dirm.ids[i] + tmp.toString();\n                        tmp++;\n                    }\n                    dirm.ids.push(newid);\n                    idset.add(newid);\n                    pages.push(doc2.pages[i]);\n                }\n            }\n            var dw = new DjVuWriter();\n            dw.startDJVM();\n            dw.writeDirmChunk(dirm);\n            for (var i = 0; i < length; i++) {\n                dw.writeFormChunkBS(pages[i].bs);\n            }\n            return new DjVuDocument(dw.getBuffer());\n        }\n    }\n    Object.assign(DjVuDocument.prototype, {\n        bundle,\n    });\n\n    function getLinkToTheWholeLibrary() {\n        if (!getLinkToTheWholeLibrary.url) {\n            getLinkToTheWholeLibrary.url = URL.createObjectURL(new Blob(\n                [\"(\" + DjVuScript.toString() + \")();\"],\n                { type: 'application/javascript' }\n            ));\n        }\n        return getLinkToTheWholeLibrary.url;\n    }\n    class DjVuWorker {\n        constructor(path = getLinkToTheWholeLibrary()) {\n            this.path = path;\n            this.reset();\n        }\n        reset() {\n            this.terminate();\n            this.worker = new Worker(this.path);\n            this.worker.onmessage = (e) => this.messageHandler(e);\n            this.worker.onerror = (e) => this.errorHandler(e);\n            this.promiseCallbacks = null;\n            this.currentPromise = null;\n            this.promiseMap = new Map();\n            this.isWorking = false;\n            this.commandCounter = 0;\n            this.currentCommandId = null;\n            this.hyperCallbacks = {};\n            this.hyperCallbackCounter = 0;\n        }\n        registerHyperCallback(func) {\n            const id = this.hyperCallbackCounter++;\n            this.hyperCallbacks[id] = func;\n            return { hyperCallback: true, id: id };\n        }\n        unregisterHyperCallback(id) {\n            delete this.hyperCallbacks[id];\n        }\n        terminate() {\n            this.worker && this.worker.terminate();\n        }\n        get doc() {\n            return DjVuWorkerTask.instance(this);\n        }\n        errorHandler(event) {\n            console.error(\"DjVu.js Worker error!\", event);\n        }\n        cancelTask(promise) {\n            if (!this.promiseMap.delete(promise)) {\n                if (this.currentPromise === promise) {\n                    this.dropCurrentTask();\n                }\n            }\n        }\n        dropCurrentTask() {\n            this.currentPromise = null;\n            this.promiseCallbacks = null;\n            this.currentCommandId = null;\n        }\n        emptyTaskQueue() {\n            this.promiseMap.clear();\n        }\n        cancelAllTasks() {\n            this.emptyTaskQueue();\n            this.dropCurrentTask();\n        }\n        createNewPromise(commandObj, transferList = undefined) {\n            var callbacks;\n            var promise = new Promise((resolve, reject) => {\n                callbacks = { resolve, reject };\n            });\n            this.promiseMap.set(promise, { callbacks, commandObj, transferList });\n            this.runNextTask();\n            return promise;\n        }\n        prepareCommandObject(commandObj) {\n            if (!(commandObj.data instanceof Array)) return commandObj;\n            const hyperCallbackIds = [];\n            for (const { args: argsList } of commandObj.data) {\n                for (const args of argsList) {\n                    for (let i = 0; i < args.length; i++) {\n                        if (typeof args[i] === 'function') {\n                            const hyperCallback = this.registerHyperCallback(args[i]);\n                            args[i] = hyperCallback;\n                            hyperCallbackIds.push(hyperCallback.id);\n                        }\n                    }\n                }\n            }\n            if (hyperCallbackIds.length) {\n                commandObj.sendBackData = {\n                    ...commandObj.sendBackData,\n                    hyperCallbackIds\n                };\n            }\n            return commandObj;\n        }\n        runNextTask() {\n            if (this.isWorking) {\n                return;\n            }\n            var next = this.promiseMap.entries().next().value;\n            if (next) {\n                const [promise, { callbacks, commandObj, transferList }] = next;\n                this.promiseCallbacks = callbacks;\n                this.currentPromise = promise;\n                this.currentCommandId = this.commandCounter++;\n                commandObj.sendBackData = {\n                    commandId: this.currentCommandId,\n                };\n                this.worker.postMessage(this.prepareCommandObject(commandObj), transferList);\n                this.isWorking = true;\n                this.promiseMap.delete(promise);\n            } else {\n                this.dropCurrentTask();\n            }\n        }\n        isTaskInProcess(promise) {\n            return this.currentPromise === promise;\n        }\n        isTaskInQueue(promise) {\n            return this.promiseMap.has(promise) || this.isTaskInProcess(promise);\n        }\n        processAction(obj) {\n            switch (obj.action) {\n                case 'Process':\n                    this.onprocess ? this.onprocess(obj.percent) : 0;\n                    break;\n                case 'hyperCallback':\n                    if (this.hyperCallbacks[obj.id]) this.hyperCallbacks[obj.id](...obj.args);\n                    break;\n            }\n        }\n        messageHandler({ data: obj }) {\n            if (obj.action) return this.processAction(obj);\n            this.isWorking = false;\n            const callbacks = this.promiseCallbacks;\n            const commandId = obj.sendBackData && obj.sendBackData.commandId;\n            if (commandId === this.currentCommandId || this.currentCommandId === null) {\n                this.runNextTask();\n            } else {\n                if (obj === \"unhandledrejection\" || obj === \"error\") {\n                    console.warn(\"DjVu.js: \" + obj + \" occurred in the worker!\");\n                    this.runNextTask();\n                } else {\n                    console.warn('DjVu.js: Something strange came from the worker.', obj);\n                }\n                return;\n            }\n            if (!callbacks) return;\n            const { resolve, reject } = callbacks;\n            switch (obj.command) {\n                case 'Error':\n                    reject(obj.error);\n                    break;\n                case 'createDocument':\n                case 'startMultiPageDocument':\n                case 'addPageToDocument':\n                    resolve();\n                    break;\n                case 'createDocumentFromPictures':\n                case 'endMultiPageDocument':\n                    resolve(obj.buffer);\n                    break;\n                case 'run':\n                    var restoredResult = !obj.result ? obj.result :\n                        obj.result.length && obj.result.map ? obj.result.map(result => this.restoreValueAfterTransfer(result)) :\n                            this.restoreValueAfterTransfer(obj.result);\n                    resolve(restoredResult);\n                    break;\n                default:\n                    console.error(\"Unexpected message from DjVuWorker: \", obj);\n            }\n            if (obj.sendBackData && obj.sendBackData.hyperCallbackIds) {\n                obj.sendBackData.hyperCallbackIds.forEach(id => this.unregisterHyperCallback(id));\n            }\n        }\n        restoreValueAfterTransfer(value) {\n            if (value) {\n                if (value.width && value.height && value.buffer) {\n                    return new ImageData(new Uint8ClampedArray(value.buffer), value.width, value.height);\n                }\n            }\n            return value;\n        }\n        run(...tasks) {\n            const data = tasks.map(task => task._);\n            return this.createNewPromise({\n                command: 'run',\n                data: data,\n            });\n        }\n        revokeObjectURL(url) {\n            this.worker.postMessage({\n                action: this.revokeObjectURL.name,\n                url: url,\n            });\n        }\n        startMultiPageDocument(slicenumber, delayInit, grayscale) {\n            return this.createNewPromise({\n                command: 'startMultiPageDocument',\n                slicenumber: slicenumber,\n                delayInit: delayInit,\n                grayscale: grayscale\n            });\n        }\n        addPageToDocument(imageData) {\n            var simpleImage = {\n                buffer: imageData.data.buffer,\n                width: imageData.width,\n                height: imageData.height\n            };\n            return this.createNewPromise({\n                command: 'addPageToDocument',\n                simpleImage: simpleImage\n            }, [simpleImage.buffer]);\n        }\n        endMultiPageDocument() {\n            return this.createNewPromise({ command: 'endMultiPageDocument' });\n        }\n        createDocument(buffer, options) {\n            return this.createNewPromise({ command: 'createDocument', buffer: buffer, options: options }, [buffer]);\n        }\n        createDocumentFromPictures(imageArray, slicenumber, delayInit, grayscale) {\n            var simpleImages = new Array(imageArray.length);\n            var buffers = new Array(imageArray.length);\n            for (var i = 0; i < imageArray.length; i++) {\n                simpleImages[i] = {\n                    buffer: imageArray[i].data.buffer,\n                    width: imageArray[i].width,\n                    height: imageArray[i].height\n                };\n                buffers[i] = imageArray[i].data.buffer;\n            }\n            return this.createNewPromise({\n                command: 'createDocumentFromPictures',\n                images: simpleImages,\n                slicenumber: slicenumber,\n                delayInit: delayInit,\n                grayscale: grayscale\n            }, buffers);\n        }\n    }\n    class DjVuWorkerTask {\n        static instance(worker, funcs = [], args = []) {\n            var proxy = new Proxy(DjVuWorkerTask.emptyFunc, {\n                get: (target, key) => {\n                    switch (key) {\n                        case '_':\n                            return { funcs, args };\n                        case 'run':\n                            return () => worker.run(proxy);\n                        default:\n                            return DjVuWorkerTask.instance(worker, [...funcs, key], args);\n                    }\n                },\n                apply: (target, that, _args) => {\n                    return DjVuWorkerTask.instance(worker, funcs, [...args, _args]);\n                }\n            });\n            return proxy;\n        }\n        static emptyFunc() { }\n    }\n\n    class IWEncoder extends IWCodecBaseClass {\n        constructor(bytemap) {\n            super();\n            this.width = bytemap.width;\n            this.height = bytemap.height;\n            this.inverseWaveletTransform(bytemap);\n            this.createBlocks(bytemap);\n        }\n        inverseWaveletTransform(bytemap) {\n            for (var scale = 1; scale < 32; scale <<= 1) {\n                this.filter_fh(scale, bytemap);\n                this.filter_fv(scale, bytemap);\n            }\n            return bytemap;\n        }\n        filter_fv(s, bitmap) {\n            var kmax = Math.floor((bitmap.height - 1) / s);\n            for (var i = 0; i < bitmap.width; i += s) {\n                for (var k = 1; k <= kmax; k += 2) {\n                    if ((k - 3 >= 0) && (k + 3 <= kmax)) {\n                        bitmap[k * s][i] -= (9 * (bitmap[(k - 1) * s][i] + bitmap[(k + 1) * s][i]) - (bitmap[(k - 3) * s][i] + bitmap[(k + 3) * s][i]) + 8) >> 4;\n                    } else if (k + 1 <= kmax) {\n                        bitmap[k * s][i] -= (bitmap[(k - 1) * s][i] + bitmap[(k + 1) * s][i] + 1) >> 1;\n                    } else {\n                        bitmap[k * s][i] -= bitmap[(k - 1) * s][i];\n                    }\n                }\n                for (var k = 0; k <= kmax; k += 2) {\n                    var a, b, c, d;\n                    if (k - 1 < 0) {\n                        a = 0;\n                    } else {\n                        a = bitmap[(k - 1) * s][i];\n                    }\n                    if (k - 3 < 0) {\n                        c = 0;\n                    } else {\n                        c = bitmap[(k - 3) * s][i];\n                    }\n                    if (k + 1 > kmax) {\n                        b = 0;\n                    } else {\n                        b = bitmap[(k + 1) * s][i];\n                    }\n                    if (k + 3 > kmax) {\n                        d = 0;\n                    } else {\n                        d = bitmap[(k + 3) * s][i];\n                    }\n                    bitmap[k * s][i] += (9 * (a + b) - (c + d) + 16) >> 5;\n                }\n            }\n        }\n        filter_fh(s, bitmap) {\n            var kmax = Math.floor((bitmap.width - 1) / s);\n            for (var i = 0; i < bitmap.height; i += s) {\n                for (var k = 1; k <= kmax; k += 2) {\n                    if ((k - 3 >= 0) && (k + 3 <= kmax)) {\n                        bitmap[i][k * s] -= (9 * (bitmap[i][(k - 1) * s] + bitmap[i][(k + 1) * s]) - (bitmap[i][(k - 3) * s] + bitmap[i][(k + 3) * s]) + 8) >> 4;\n                    } else if (k + 1 <= kmax) {\n                        bitmap[i][k * s] -= (bitmap[i][(k - 1) * s] + bitmap[i][(k + 1) * s] + 1) >> 1;\n                    } else {\n                        bitmap[i][k * s] -= bitmap[i][(k - 1) * s];\n                    }\n                }\n                for (var k = 0; k <= kmax; k += 2) {\n                    var a, b, c, d;\n                    if (k - 1 < 0) {\n                        a = 0;\n                    } else {\n                        a = bitmap[i][(k - 1) * s];\n                    }\n                    if (k - 3 < 0) {\n                        c = 0;\n                    } else {\n                        c = bitmap[i][(k - 3) * s];\n                    }\n                    if (k + 1 > kmax) {\n                        b = 0;\n                    } else {\n                        b = bitmap[i][(k + 1) * s];\n                    }\n                    if (k + 3 > kmax) {\n                        d = 0;\n                    } else {\n                        d = bitmap[i][(k + 3) * s];\n                    }\n                    bitmap[i][k * s] += (9 * (a + b) - (c + d) + 16) >> 5;\n                }\n            }\n        }\n        createBlocks(bitmap) {\n            var blockRows = Math.ceil(this.height / 32);\n            var blockCols = Math.ceil(this.width / 32);\n            var length = blockRows * blockCols;\n            var buffer = new ArrayBuffer(length << 11);\n            this.blocks = [];\n            for (var r = 0; r < blockRows; r++) {\n                for (var c = 0; c < blockCols; c++) {\n                    var block = new Block(buffer, (r * blockCols + c) << 11, true);\n                    for (var i = 0; i < 1024; i++) {\n                        var val = 0;\n                        if (bitmap[this.zigzagRow[i] + 32 * r]) {\n                            val = bitmap[this.zigzagRow[i] + 32 * r][this.zigzagCol[i] + 32 * c];\n                            val = val || 0;\n                        }\n                        block.setCoef(i, val);\n                    }\n                    this.blocks.push(block);\n                }\n            }\n            buffer = new ArrayBuffer(length << 11);\n            this.eblocks = new Array(length);\n            for (var i = 0; i < length; i++) {\n                this.eblocks[i] = new Block(buffer, i << 11, true);\n            }\n        }\n        encodeSlice(zp) {\n            this.zp = zp;\n            if (!this.is_null_slice()) {\n                for (var i = 0; i < this.blocks.length; i++) {\n                    var block = this.blocks[i];\n                    var eblock = this.eblocks[i];\n                    this.preliminaryFlagComputation(block, eblock);\n                    if (this.blockBandEncodingPass()) {\n                        this.bucketEncodingPass(eblock);\n                        this.newlyActiveCoefficientEncodingPass(block, eblock);\n                    }\n                    this.previouslyActiveCoefficientEncodingPass(block, eblock);\n                }\n            }\n            return this.finish_code_slice();\n        }\n        previouslyActiveCoefficientEncodingPass(block, eblock) {\n            var boff = 0;\n            var step = this.quant_hi[this.curband];\n            var indices = this.getBandBuckets(this.curband);\n            for (var i = indices.from; i <= indices.to; i++ ,\n                boff++) {\n                for (var j = 0; j < 16; j++) {\n                    if (this.coeffstate[boff][j] & this.ACTIVE) {\n                        if (!this.curband) {\n                            step = this.quant_lo[j];\n                        }\n                        var coef = Math.abs(block.buckets[i][j]);\n                        var ecoef = eblock.buckets[i][j];\n                        var pix = coef >= ecoef ? 1 : 0;\n                        if (ecoef <= 3 * step) {\n                            this.zp.encode(pix, this.inreaseCoefCtx, 0);\n                        } else {\n                            this.zp.IWencode(pix);\n                        }\n                        eblock.buckets[i][j] = ecoef - (pix ? 0 : step) + (step >> 1);\n                    }\n                }\n            }\n        }\n        newlyActiveCoefficientEncodingPass(block, eblock) {\n            var boff = 0;\n            var indices = this.getBandBuckets(this.curband);\n            var step = this.quant_hi[this.curband];\n            for (var i = indices.from; i <= indices.to; i++ ,\n                boff++) {\n                if (this.bucketstate[boff] & this.NEW) {\n                    var shift = 0;\n                    if (this.bucketstate[boff] & this.ACTIVE) {\n                        shift = 8;\n                    }\n                    var bucket = block.buckets[i];\n                    var ebucket = eblock.buckets[i];\n                    var np = 0;\n                    for (var j = 0; j < 16; j++) {\n                        if (this.coeffstate[boff][j] & this.UNK) {\n                            np++;\n                        }\n                    }\n                    for (var j = 0; j < 16; j++) {\n                        if (this.coeffstate[boff][j] & this.UNK) {\n                            var ip = Math.min(7, np);\n                            this.zp.encode((this.coeffstate[boff][j] & this.NEW) ? 1 : 0, this.activateCoefCtx, shift + ip);\n                            if (this.coeffstate[boff][j] & this.NEW) {\n                                this.zp.IWencode((bucket[j] < 0) ? 1 : 0);\n                                np = 0;\n                                if (!this.curband) {\n                                    step = this.quant_lo[j];\n                                }\n                                ebucket[j] = (step + (step >> 1) - (step >> 3));\n                                ebucket[j] = (step + (step >> 1));\n                            }\n                            if (np) {\n                                np--;\n                            }\n                        }\n                    }\n                }\n            }\n        }\n        bucketEncodingPass(eblock) {\n            var indices = this.getBandBuckets(this.curband);\n            var boff = 0;\n            for (var i = indices.from; i <= indices.to; i++ ,\n                boff++) {\n                if (!(this.bucketstate[boff] & this.UNK)) {\n                    continue;\n                }\n                var n = 0;\n                if (this.curband) {\n                    var t = 4 * i;\n                    for (var j = t; j < t + 4; j++) {\n                        if (eblock.getCoef(j)) {\n                            n++;\n                        }\n                    }\n                    if (n === 4) {\n                        n--;\n                    }\n                }\n                if (this.bbstate & this.ACTIVE) {\n                    n |= 4;\n                }\n                this.zp.encode((this.bucketstate[boff] & this.NEW) ? 1 : 0, this.decodeCoefCtx, n + this.curband * 8);\n            }\n        }\n        blockBandEncodingPass() {\n            var indices = this.getBandBuckets(this.curband);\n            var bcount = indices.to - indices.from + 1;\n            if (bcount < 16 || (this.bbstate & this.ACTIVE)) {\n                this.bbstate |= this.NEW;\n            } else if (this.bbstate & this.UNK) {\n                this.zp.encode(this.bbstate & this.NEW ? 1 : 0, this.decodeBucketCtx, 0);\n            }\n            return this.bbstate & this.NEW;\n        }\n        preliminaryFlagComputation(block, eblock) {\n            this.bbstate = 0;\n            var bstatetmp = 0;\n            var indices = this.getBandBuckets(this.curband);\n            var step = this.quant_hi[this.curband];\n            if (this.curband) {\n                var boff = 0;\n                for (var j = indices.from; j <= indices.to; j++ , boff++) {\n                    bstatetmp = 0;\n                    var bucket = block.buckets[j];\n                    var ebucket = eblock.buckets[j];\n                    for (var k = 0; k < bucket.length; k++) {\n                        if (ebucket[k]) {\n                            this.coeffstate[boff][k] = this.ACTIVE;\n                        } else if (bucket[k] >= step || bucket[k] <= -step) {\n                            this.coeffstate[boff][k] = this.UNK | this.NEW;\n                        } else {\n                            this.coeffstate[boff][k] = this.UNK;\n                        }\n                        bstatetmp |= this.coeffstate[boff][k];\n                    }\n                    this.bucketstate[boff] = bstatetmp;\n                    this.bbstate |= bstatetmp;\n                }\n            } else {\n                var bucket = block.buckets[0];\n                var ebucket = eblock.buckets[0];\n                for (var k = 0; k < bucket.length; k++) {\n                    step = this.quant_lo[k];\n                    if (this.coeffstate[0][k] !== this.ZERO) {\n                        if (ebucket[k]) {\n                            this.coeffstate[0][k] = this.ACTIVE;\n                        } else if (bucket[k] >= step || bucket[k] <= -step) {\n                            this.coeffstate[0][k] = this.UNK | this.NEW;\n                        } else {\n                            this.coeffstate[0][k] = this.UNK;\n                        }\n                    }\n                    bstatetmp |= this.coeffstate[0][k];\n                }\n                this.bucketstate[0] = bstatetmp;\n                this.bbstate |= bstatetmp;\n            }\n        }\n    }\n\n    class IWImageWriter {\n        constructor(slicenumber, delayInit, grayscale) {\n            this.slicenumber = slicenumber || 100;\n            this.grayscale = grayscale || 0;\n            this.delayInit = (delayInit & 127) || 0;\n            this.onprocess = undefined;\n        }\n        get width() {\n            return this.imageData.width;\n        }\n        get height() {\n            return this.imageData.height;\n        }\n        startMultiPageDocument() {\n            this.dw = new DjVuWriter();\n            this.dw.startDJVM();\n            this.pageBuffers = [];\n            var dirm = {};\n            this.dirm = dirm;\n            dirm.offsets = [];\n            dirm.dflags = 129;\n            dirm.flags = [];\n            dirm.ids = [];\n            dirm.sizes = [];\n        }\n        addPageToDocument(imageData) {\n            var tbsw = new ByteStreamWriter();\n            this.writeImagePage(tbsw, imageData);\n            var buffer = tbsw.getBuffer();\n            this.pageBuffers.push(buffer);\n            this.dirm.flags.push(1);\n            this.dirm.ids.push('p' + this.dirm.ids.length);\n            this.dirm.sizes.push(buffer.byteLength);\n        }\n        endMultiPageDocument() {\n            this.dw.writeDirmChunk(this.dirm);\n            var len = this.pageBuffers.length;\n            for (var i = 0; i < len; i++) {\n                this.dw.writeFormChunkBuffer(this.pageBuffers.shift());\n            }\n            var buffer = this.dw.getBuffer();\n            delete this.dw;\n            delete this.pageBuffers;\n            delete this.dirm;\n            return buffer;\n        }\n        createMultiPageDocument(imageArray) {\n            var dw = new DjVuWriter();\n            dw.startDJVM();\n            var length = imageArray.length;\n            var pageBuffers = new Array(imageArray.length);\n            var dirm = {};\n            this.dirm = dirm;\n            dirm.offsets = [];\n            dirm.dflags = 129;\n            dirm.flags = new Array(imageArray.length);\n            dirm.ids = new Array(imageArray.length);\n            dirm.sizes = new Array(imageArray.length);\n            var tbsw = new ByteStreamWriter();\n            for (var i = 0; i < imageArray.length; i++) {\n                this.writeImagePage(tbsw, imageArray[i]);\n                var buffer = tbsw.getBuffer();\n                pageBuffers[i] = buffer;\n                tbsw.reset();\n                dirm.flags[i] = 1;\n                dirm.ids[i] = 'p' + i;\n                dirm.sizes[i] = buffer.byteLength;\n                this.onprocess ? this.onprocess((i + 1) / length) : 0;\n            }\n            dw.writeDirmChunk(dirm);\n            for (var i = 0; i < imageArray.length; i++) {\n                dw.writeFormChunkBuffer(pageBuffers[i]);\n            }\n            return new DjVuDocument(dw.getBuffer());\n        }\n        writeImagePage(bsw, imageData) {\n            bsw.writeStr('FORM').saveOffsetMark('formSize').jump(4).writeStr('DJVU');\n            bsw.writeStr('INFO')\n                .writeInt32(10)\n                .writeInt16(imageData.width)\n                .writeInt16(imageData.height)\n                .writeByte(24).writeByte(0)\n                .writeByte(100 & 0xff)\n                .writeByte(100 >> 8)\n                .writeByte(22).writeByte(1);\n            bsw.writeStr('BG44').saveOffsetMark('BG44Size').jump(4);\n            bsw.writeByte(0)\n                .writeByte(this.slicenumber)\n                .writeByte((this.grayscale << 7) | 1)\n                .writeByte(2)\n                .writeUint16(imageData.width)\n                .writeUint16(imageData.height)\n                .writeByte(this.delayInit);\n            var ycodec = new IWEncoder(this.RGBtoY(imageData));\n            var crcodec, cbcodec;\n            if (!this.grayscale) {\n                cbcodec = new IWEncoder(this.RGBtoCb(imageData));\n                crcodec = new IWEncoder(this.RGBtoCr(imageData));\n            }\n            var zp = new ZPEncoder(bsw);\n            for (var i = 0; i < this.slicenumber; i++) {\n                ycodec.encodeSlice(zp);\n                if (cbcodec && crcodec && i >= this.delayInit) {\n                    cbcodec.encodeSlice(zp);\n                    crcodec.encodeSlice(zp);\n                }\n            }\n            zp.eflush();\n            bsw.rewriteSize('formSize');\n            bsw.rewriteSize('BG44Size');\n        }\n        createOnePageDocument(imageData) {\n            var bsw = new ByteStreamWriter(10 * 1024);\n            bsw.writeStr('AT&T');\n            this.writeImagePage(bsw, imageData);\n            return new DjVuDocument(bsw.getBuffer());\n        }\n        RGBtoY(imageData) {\n            var rmul = new Int32Array(256);\n            var gmul = new Int32Array(256);\n            var bmul = new Int32Array(256);\n            var data = imageData.data;\n            var width = imageData.width;\n            var height = imageData.height;\n            var bytemap = new Bytemap(width, height);\n            if (this.grayscale) {\n                for (var i = 0; i < data.length; i++) {\n                    data[i] = 255 - data[i];\n                }\n            }\n            for (var k = 0; k < 256; k++) {\n                rmul[k] = (k * 0x10000 * this.rgb_to_ycc[0][0]);\n                gmul[k] = (k * 0x10000 * this.rgb_to_ycc[0][1]);\n                bmul[k] = (k * 0x10000 * this.rgb_to_ycc[0][2]);\n            }\n            for (var i = 0; i < height; i++) {\n                for (var j = 0; j < width; j++) {\n                    var index = ((height - i - 1) * width + j) << 2;\n                    var y = rmul[data[index]] + gmul[data[index + 1]] + bmul[data[index + 2]] + 32768;\n                    bytemap[i][j] = ((y >> 16) - 128) << this.iw_shift;\n                }\n            }\n            return bytemap;\n        }\n        RGBtoCb(imageData) {\n            var rmul = new Int32Array(256);\n            var gmul = new Int32Array(256);\n            var bmul = new Int32Array(256);\n            var data = imageData.data;\n            var width = imageData.width;\n            var height = imageData.height;\n            var bytemap = new Bytemap(width, height);\n            for (var k = 0; k < 256; k++) {\n                rmul[k] = (k * 0x10000 * this.rgb_to_ycc[2][0]);\n                gmul[k] = (k * 0x10000 * this.rgb_to_ycc[2][1]);\n                bmul[k] = (k * 0x10000 * this.rgb_to_ycc[2][2]);\n            }\n            for (var i = 0; i < height; i++) {\n                for (var j = 0; j < width; j++) {\n                    var index = ((height - i - 1) * width + j) << 2;\n                    var y = rmul[data[index]] + gmul[data[index + 1]] + bmul[data[index + 2]] + 32768;\n                    bytemap[i][j] = Math.max(-128, Math.min(127, y >> 16)) << this.iw_shift;\n                }\n            }\n            return bytemap;\n        }\n        RGBtoCr(imageData) {\n            var rmul = new Int32Array(256);\n            var gmul = new Int32Array(256);\n            var bmul = new Int32Array(256);\n            var data = imageData.data;\n            var width = imageData.width;\n            var height = imageData.height;\n            var bytemap = new Bytemap(width, height);\n            for (var k = 0; k < 256; k++) {\n                rmul[k] = (k * 0x10000 * this.rgb_to_ycc[1][0]);\n                gmul[k] = (k * 0x10000 * this.rgb_to_ycc[1][1]);\n                bmul[k] = (k * 0x10000 * this.rgb_to_ycc[1][2]);\n            }\n            for (var i = 0; i < height; i++) {\n                for (var j = 0; j < width; j++) {\n                    var index = ((height - i - 1) * width + j) << 2;\n                    var y = rmul[data[index]] + gmul[data[index + 1]] + bmul[data[index + 2]] + 32768;\n                    bytemap[i][j] = Math.max(-128, Math.min(127, y >> 16)) << this.iw_shift;\n                }\n            }\n            return bytemap;\n        }\n    }\n    IWImageWriter.prototype.iw_shift = 6;\n    IWImageWriter.prototype.rgb_to_ycc = [\n        [0.304348, 0.608696, 0.086956],\n        [0.463768, -0.405797, -0.057971],\n        [-0.173913, -0.347826, 0.521739]];\n\n    function initWorker() {\n        var djvuDocument;\n        var iwiw;\n        addEventListener(\"error\", e => {\n            console.error(e);\n            postMessage(\"error\");\n        });\n        addEventListener(\"unhandledrejection\", e => {\n            console.error(e);\n            postMessage(\"unhandledrejection\");\n        });\n        onmessage = async function ({ data: obj }) {\n            if (obj.action) return handlers[obj.action](obj);\n            try {\n                const { data, transferList } = await handlers[obj.command](obj) || {};\n                try {\n                    postMessage({\n                        command: obj.command,\n                        ...data,\n                        ...(obj.sendBackData ? { sendBackData: obj.sendBackData } : null),\n                    }, transferList && transferList.length ? transferList : undefined);\n                } catch (e) {\n                    throw new UnableToTransferDataDjVuError(obj.data);\n                }\n            } catch (error) {\n                console.error(error);\n                var errorObj = error instanceof DjVuError ? error : {\n                    code: DjVuErrorCodes.UNEXPECTED_ERROR,\n                    name: error.name,\n                    message: error.message\n                };\n                errorObj.commandObject = obj;\n                postMessage({\n                    command: 'Error',\n                    error: errorObj,\n                    a: () => {},\n                    ...(obj.sendBackData ? { sendBackData: obj.sendBackData } : null),\n                });\n            }\n        };\n        function processValueBeforeTransfer(value, transferList) {\n            if (value instanceof ArrayBuffer) {\n                transferList.push(value);\n                return value;\n            }\n            if (value instanceof ImageData) {\n                transferList.push(value.data.buffer);\n                return {\n                    width: value.width,\n                    height: value.height,\n                    buffer: value.data.buffer\n                };\n            }\n            if (value instanceof DjVuDocument) {\n                transferList.push(value.buffer);\n                return value.buffer;\n            }\n            return value;\n        }\n        function restoreHyperCallbacks(args) {\n            return args.map(arg => {\n                if (arg && (typeof arg === 'object') && arg.hyperCallback) {\n                    return (...params) => postMessage({\n                        action: 'hyperCallback',\n                        id: arg.id,\n                        args: params\n                    });\n                }\n                return arg;\n            });\n        }\n        var handlers = {\n            async run(obj) {\n                const results = await Promise.all(obj.data.map(async task => {\n                    var res = djvuDocument;\n                    for (var i = 0; i < task.funcs.length; i++) {\n                        if (typeof res[task.funcs[i]] !== 'function') {\n                            throw new IncorrectTaskDjVuError(task);\n                        }\n                        res = await res[task.funcs[i]](...restoreHyperCallbacks(task.args[i]));\n                    }\n                    return res;\n                }));\n                var transferList = [];\n                var processedResults = results.map(result => processValueBeforeTransfer(result, transferList));\n                return {\n                    data: {\n                        result: processedResults.length === 1 ? processedResults[0] : processedResults\n                    },\n                    transferList\n                };\n            },\n            revokeObjectURL(obj) {\n                URL.revokeObjectURL(obj.url);\n            },\n            startMultiPageDocument(obj) {\n                iwiw = new IWImageWriter(obj.slicenumber, obj.delayInit, obj.grayscale);\n                iwiw.startMultiPageDocument();\n            },\n            addPageToDocument(obj) {\n                var imageData = new ImageData(new Uint8ClampedArray(obj.simpleImage.buffer), obj.simpleImage.width, obj.simpleImage.height);\n                iwiw.addPageToDocument(imageData);\n            },\n            endMultiPageDocument(obj) {\n                var buffer = iwiw.endMultiPageDocument();\n                return {\n                    data: { buffer: buffer },\n                    transferList: [buffer]\n                };\n            },\n            createDocumentFromPictures(obj) {\n                var sims = obj.images;\n                var imageArray = new Array(sims.length);\n                for (var i = 0; i < sims.length; i++) {\n                    imageArray[i] = new ImageData(new Uint8ClampedArray(sims[i].buffer), sims[i].width, sims[i].height);\n                }\n                var iw = new IWImageWriter(obj.slicenumber, obj.delayInit, obj.grayscale);\n                iw.onprocess = (percent) => {\n                    postMessage({ action: 'Process', percent: percent });\n                };\n                var ndoc = iw.createMultyPageDocument(imageArray);\n                return {\n                    data: { buffer: ndoc.buffer },\n                    transferList: [ndoc.buffer]\n                };\n            },\n            createDocument(obj) {\n                djvuDocument = new DjVuDocument(obj.buffer, obj.options);\n            },\n        };\n    }\n\n    if (!self.document) {\n        initWorker();\n    }\n    var index = Object.assign({}, DjVu, {\n        Worker: DjVuWorker,\n        Document: DjVuDocument,\n        ErrorCodes: DjVuErrorCodes\n    });\n\n    return index;\n\n    }\n    return Object.assign(DjVuScript(), {DjVuScript});\n\n}());\n"
  },
  {
    "path": "application/public/js/djvu_viewer.js",
    "content": "/*! For license information please see djvu_viewer.js.LICENSE.txt */\n!function(e){var t={};function n(r){if(t[r])return t[r].exports;var o=t[r]={i:r,l:!1,exports:{}};return e[r].call(o.exports,o,o.exports,n),o.l=!0,o.exports}n.m=e,n.c=t,n.d=function(e,t,r){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:r})},n.r=function(e){\"undefined\"!==typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:\"Module\"}),Object.defineProperty(e,\"__esModule\",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t)return e;if(4&t&&\"object\"===typeof e&&e&&e.__esModule)return e;var r=Object.create(null);if(n.r(r),Object.defineProperty(r,\"default\",{enumerable:!0,value:e}),2&t&&\"string\"!=typeof e)for(var o in e)n.d(r,o,function(t){return e[t]}.bind(null,o));return r},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,\"a\",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p=\"/\",n(n.s=35)}([function(e,t,n){\"use strict\";e.exports=n(27)},function(e,t,n){\"use strict\";(function(e){n.d(t,\"a\",(function(){return Te})),n.d(t,\"b\",(function(){return Pe})),n.d(t,\"c\",(function(){return De})),n.d(t,\"d\",(function(){return be})),n.d(t,\"f\",(function(){return Le}));var r=n(7),o=n(2),i=n.n(o),a=n(11),l=n.n(a),s=n(12),u=n(13),c=n(8),d=n(5),f=n.n(d);function p(){return(p=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e}).apply(this,arguments)}var h=function(e,t){for(var n=[e[0]],r=0,o=t.length;r<o;r+=1)n.push(t[r],e[r+1]);return n},m=function(e){return null!==e&&\"object\"==typeof e&&\"[object Object]\"===(e.toString?e.toString():Object.prototype.toString.call(e))&&!Object(r.typeOf)(e)},g=Object.freeze([]),v=Object.freeze({});function b(e){return\"function\"==typeof e}function y(e){return e.displayName||e.name||\"Component\"}function w(e){return e&&\"string\"==typeof e.styledComponentId}var S=\"undefined\"!=typeof e&&(Object({NODE_ENV:\"production\",PUBLIC_URL:\"\",WDS_SOCKET_HOST:void 0,WDS_SOCKET_PATH:void 0,WDS_SOCKET_PORT:void 0,FAST_REFRESH:!1}).REACT_APP_SC_ATTR||Object({NODE_ENV:\"production\",PUBLIC_URL:\"\",WDS_SOCKET_HOST:void 0,WDS_SOCKET_PATH:void 0,WDS_SOCKET_PORT:void 0,FAST_REFRESH:!1}).SC_ATTR)||\"data-styled\",O=\"undefined\"!=typeof window&&\"HTMLElement\"in window,x=Boolean(\"boolean\"==typeof SC_DISABLE_SPEEDY?SC_DISABLE_SPEEDY:\"undefined\"!=typeof e&&void 0!==Object({NODE_ENV:\"production\",PUBLIC_URL:\"\",WDS_SOCKET_HOST:void 0,WDS_SOCKET_PATH:void 0,WDS_SOCKET_PORT:void 0,FAST_REFRESH:!1}).REACT_APP_SC_DISABLE_SPEEDY&&\"\"!==Object({NODE_ENV:\"production\",PUBLIC_URL:\"\",WDS_SOCKET_HOST:void 0,WDS_SOCKET_PATH:void 0,WDS_SOCKET_PORT:void 0,FAST_REFRESH:!1}).REACT_APP_SC_DISABLE_SPEEDY?\"false\"!==Object({NODE_ENV:\"production\",PUBLIC_URL:\"\",WDS_SOCKET_HOST:void 0,WDS_SOCKET_PATH:void 0,WDS_SOCKET_PORT:void 0,FAST_REFRESH:!1}).REACT_APP_SC_DISABLE_SPEEDY&&Object({NODE_ENV:\"production\",PUBLIC_URL:\"\",WDS_SOCKET_HOST:void 0,WDS_SOCKET_PATH:void 0,WDS_SOCKET_PORT:void 0,FAST_REFRESH:!1}).REACT_APP_SC_DISABLE_SPEEDY:\"undefined\"!=typeof e&&void 0!==Object({NODE_ENV:\"production\",PUBLIC_URL:\"\",WDS_SOCKET_HOST:void 0,WDS_SOCKET_PATH:void 0,WDS_SOCKET_PORT:void 0,FAST_REFRESH:!1}).SC_DISABLE_SPEEDY&&\"\"!==Object({NODE_ENV:\"production\",PUBLIC_URL:\"\",WDS_SOCKET_HOST:void 0,WDS_SOCKET_PATH:void 0,WDS_SOCKET_PORT:void 0,FAST_REFRESH:!1}).SC_DISABLE_SPEEDY&&(\"false\"!==Object({NODE_ENV:\"production\",PUBLIC_URL:\"\",WDS_SOCKET_HOST:void 0,WDS_SOCKET_PATH:void 0,WDS_SOCKET_PORT:void 0,FAST_REFRESH:!1}).SC_DISABLE_SPEEDY&&Object({NODE_ENV:\"production\",PUBLIC_URL:\"\",WDS_SOCKET_HOST:void 0,WDS_SOCKET_PATH:void 0,WDS_SOCKET_PORT:void 0,FAST_REFRESH:!1}).SC_DISABLE_SPEEDY)),_={};function j(e){for(var t=arguments.length,n=new Array(t>1?t-1:0),r=1;r<t;r++)n[r-1]=arguments[r];throw new Error(\"An error occurred. See https://git.io/JUIaE#\"+e+\" for more information.\"+(n.length>0?\" Args: \"+n.join(\", \"):\"\"))}var E=function(){function e(e){this.groupSizes=new Uint32Array(512),this.length=512,this.tag=e}var t=e.prototype;return t.indexOfGroup=function(e){for(var t=0,n=0;n<e;n++)t+=this.groupSizes[n];return t},t.insertRules=function(e,t){if(e>=this.groupSizes.length){for(var n=this.groupSizes,r=n.length,o=r;e>=o;)(o<<=1)<0&&j(16,\"\"+e);this.groupSizes=new Uint32Array(o),this.groupSizes.set(n),this.length=o;for(var i=r;i<o;i++)this.groupSizes[i]=0}for(var a=this.indexOfGroup(e+1),l=0,s=t.length;l<s;l++)this.tag.insertRule(a,t[l])&&(this.groupSizes[e]++,a++)},t.clearGroup=function(e){if(e<this.length){var t=this.groupSizes[e],n=this.indexOfGroup(e),r=n+t;this.groupSizes[e]=0;for(var o=n;o<r;o++)this.tag.deleteRule(n)}},t.getGroup=function(e){var t=\"\";if(e>=this.length||0===this.groupSizes[e])return t;for(var n=this.groupSizes[e],r=this.indexOfGroup(e),o=r+n,i=r;i<o;i++)t+=this.tag.getRule(i)+\"/*!sc*/\\n\";return t},e}(),C=new Map,k=new Map,T=1,P=function(e){if(C.has(e))return C.get(e);for(;k.has(T);)T++;var t=T++;return C.set(e,t),k.set(t,e),t},N=function(e){return k.get(e)},I=function(e,t){t>=T&&(T=t+1),C.set(e,t),k.set(t,e)},R=\"style[\"+S+'][data-styled-version=\"5.3.1\"]',A=new RegExp(\"^\"+S+'\\\\.g(\\\\d+)\\\\[id=\"([\\\\w\\\\d-]+)\"\\\\].*?\"([^\"]*)'),D=function(e,t,n){for(var r,o=n.split(\",\"),i=0,a=o.length;i<a;i++)(r=o[i])&&e.registerName(t,r)},L=function(e,t){for(var n=(t.innerHTML||\"\").split(\"/*!sc*/\\n\"),r=[],o=0,i=n.length;o<i;o++){var a=n[o].trim();if(a){var l=a.match(A);if(l){var s=0|parseInt(l[1],10),u=l[2];0!==s&&(I(u,s),D(e,u,l[3]),e.getTag().insertRules(s,r)),r.length=0}else r.push(a)}}},M=function(){return\"undefined\"!=typeof window&&void 0!==window.__webpack_nonce__?window.__webpack_nonce__:null},z=function(e){var t=document.head,n=e||t,r=document.createElement(\"style\"),o=function(e){for(var t=e.childNodes,n=t.length;n>=0;n--){var r=t[n];if(r&&1===r.nodeType&&r.hasAttribute(S))return r}}(n),i=void 0!==o?o.nextSibling:null;r.setAttribute(S,\"active\"),r.setAttribute(\"data-styled-version\",\"5.3.1\");var a=M();return a&&r.setAttribute(\"nonce\",a),n.insertBefore(r,i),r},U=function(){function e(e){var t=this.element=z(e);t.appendChild(document.createTextNode(\"\")),this.sheet=function(e){if(e.sheet)return e.sheet;for(var t=document.styleSheets,n=0,r=t.length;n<r;n++){var o=t[n];if(o.ownerNode===e)return o}j(17)}(t),this.length=0}var t=e.prototype;return t.insertRule=function(e,t){try{return this.sheet.insertRule(t,e),this.length++,!0}catch(e){return!1}},t.deleteRule=function(e){this.sheet.deleteRule(e),this.length--},t.getRule=function(e){var t=this.sheet.cssRules[e];return void 0!==t&&\"string\"==typeof t.cssText?t.cssText:\"\"},e}(),F=function(){function e(e){var t=this.element=z(e);this.nodes=t.childNodes,this.length=0}var t=e.prototype;return t.insertRule=function(e,t){if(e<=this.length&&e>=0){var n=document.createTextNode(t),r=this.nodes[e];return this.element.insertBefore(n,r||null),this.length++,!0}return!1},t.deleteRule=function(e){this.element.removeChild(this.nodes[e]),this.length--},t.getRule=function(e){return e<this.length?this.nodes[e].textContent:\"\"},e}(),B=function(){function e(e){this.rules=[],this.length=0}var t=e.prototype;return t.insertRule=function(e,t){return e<=this.length&&(this.rules.splice(e,0,t),this.length++,!0)},t.deleteRule=function(e){this.rules.splice(e,1),this.length--},t.getRule=function(e){return e<this.length?this.rules[e]:\"\"},e}(),V=O,W={isServer:!O,useCSSOMInjection:!x},H=function(){function e(e,t,n){void 0===e&&(e=v),void 0===t&&(t={}),this.options=p({},W,{},e),this.gs=t,this.names=new Map(n),this.server=!!e.isServer,!this.server&&O&&V&&(V=!1,function(e){for(var t=document.querySelectorAll(R),n=0,r=t.length;n<r;n++){var o=t[n];o&&\"active\"!==o.getAttribute(S)&&(L(e,o),o.parentNode&&o.parentNode.removeChild(o))}}(this))}e.registerId=function(e){return P(e)};var t=e.prototype;return t.reconstructWithOptions=function(t,n){return void 0===n&&(n=!0),new e(p({},this.options,{},t),this.gs,n&&this.names||void 0)},t.allocateGSInstance=function(e){return this.gs[e]=(this.gs[e]||0)+1},t.getTag=function(){return this.tag||(this.tag=(n=(t=this.options).isServer,r=t.useCSSOMInjection,o=t.target,e=n?new B(o):r?new U(o):new F(o),new E(e)));var e,t,n,r,o},t.hasNameForId=function(e,t){return this.names.has(e)&&this.names.get(e).has(t)},t.registerName=function(e,t){if(P(e),this.names.has(e))this.names.get(e).add(t);else{var n=new Set;n.add(t),this.names.set(e,n)}},t.insertRules=function(e,t,n){this.registerName(e,t),this.getTag().insertRules(P(e),n)},t.clearNames=function(e){this.names.has(e)&&this.names.get(e).clear()},t.clearRules=function(e){this.getTag().clearGroup(P(e)),this.clearNames(e)},t.clearTag=function(){this.tag=void 0},t.toString=function(){return function(e){for(var t=e.getTag(),n=t.length,r=\"\",o=0;o<n;o++){var i=N(o);if(void 0!==i){var a=e.names.get(i),l=t.getGroup(o);if(a&&l&&a.size){var s=S+\".g\"+o+'[id=\"'+i+'\"]',u=\"\";void 0!==a&&a.forEach((function(e){e.length>0&&(u+=e+\",\")})),r+=\"\"+l+s+'{content:\"'+u+'\"}/*!sc*/\\n'}}}return r}(this)},e}(),$=/(a)(d)/gi,G=function(e){return String.fromCharCode(e+(e>25?39:97))};function q(e){var t,n=\"\";for(t=Math.abs(e);t>52;t=t/52|0)n=G(t%52)+n;return(G(t%52)+n).replace($,\"$1-$2\")}var Y=function(e,t){for(var n=t.length;n;)e=33*e^t.charCodeAt(--n);return e},K=function(e){return Y(5381,e)};function Q(e){for(var t=0;t<e.length;t+=1){var n=e[t];if(b(n)&&!w(n))return!1}return!0}var X=K(\"5.3.1\"),Z=function(){function e(e,t,n){this.rules=e,this.staticRulesId=\"\",this.isStatic=(void 0===n||n.isStatic)&&Q(e),this.componentId=t,this.baseHash=Y(X,t),this.baseStyle=n,H.registerId(t)}return e.prototype.generateAndInjectStyles=function(e,t,n){var r=this.componentId,o=[];if(this.baseStyle&&o.push(this.baseStyle.generateAndInjectStyles(e,t,n)),this.isStatic&&!n.hash)if(this.staticRulesId&&t.hasNameForId(r,this.staticRulesId))o.push(this.staticRulesId);else{var i=ge(this.rules,e,t,n).join(\"\"),a=q(Y(this.baseHash,i)>>>0);if(!t.hasNameForId(r,a)){var l=n(i,\".\"+a,void 0,r);t.insertRules(r,a,l)}o.push(a),this.staticRulesId=a}else{for(var s=this.rules.length,u=Y(this.baseHash,n.hash),c=\"\",d=0;d<s;d++){var f=this.rules[d];if(\"string\"==typeof f)c+=f;else if(f){var p=ge(f,e,t,n),h=Array.isArray(p)?p.join(\"\"):p;u=Y(u,h+d),c+=h}}if(c){var m=q(u>>>0);if(!t.hasNameForId(r,m)){var g=n(c,\".\"+m,void 0,r);t.insertRules(r,m,g)}o.push(m)}}return o.join(\" \")},e}(),J=/^\\s*\\/\\/.*$/gm,ee=[\":\",\"[\",\".\",\"#\"];function te(e){var t,n,r,o,i=void 0===e?v:e,a=i.options,l=void 0===a?v:a,u=i.plugins,c=void 0===u?g:u,d=new s.a(l),f=[],p=function(e){function t(t){if(t)try{e(t+\"}\")}catch(e){}}return function(n,r,o,i,a,l,s,u,c,d){switch(n){case 1:if(0===c&&64===r.charCodeAt(0))return e(r+\";\"),\"\";break;case 2:if(0===u)return r+\"/*|*/\";break;case 3:switch(u){case 102:case 112:return e(o[0]+r),\"\";default:return r+(0===d?\"/*|*/\":\"\")}case-2:r.split(\"/*|*/}\").forEach(t)}}}((function(e){f.push(e)})),h=function(e,r,i){return 0===r&&-1!==ee.indexOf(i[n.length])||i.match(o)?e:\".\"+t};function m(e,i,a,l){void 0===l&&(l=\"&\");var s=e.replace(J,\"\"),u=i&&a?a+\" \"+i+\" { \"+s+\" }\":s;return t=l,n=i,r=new RegExp(\"\\\\\"+n+\"\\\\b\",\"g\"),o=new RegExp(\"(\\\\\"+n+\"\\\\b){2,}\"),d(a||!i?\"\":i,u)}return d.use([].concat(c,[function(e,t,o){2===e&&o.length&&o[0].lastIndexOf(n)>0&&(o[0]=o[0].replace(r,h))},p,function(e){if(-2===e){var t=f;return f=[],t}}])),m.hash=c.length?c.reduce((function(e,t){return t.name||j(15),Y(e,t.name)}),5381).toString():\"\",m}var ne=i.a.createContext(),re=(ne.Consumer,i.a.createContext()),oe=(re.Consumer,new H),ie=te();function ae(){return Object(o.useContext)(ne)||oe}function le(){return Object(o.useContext)(re)||ie}function se(e){var t=Object(o.useState)(e.stylisPlugins),n=t[0],r=t[1],a=ae(),s=Object(o.useMemo)((function(){var t=a;return e.sheet?t=e.sheet:e.target&&(t=t.reconstructWithOptions({target:e.target},!1)),e.disableCSSOMInjection&&(t=t.reconstructWithOptions({useCSSOMInjection:!1})),t}),[e.disableCSSOMInjection,e.sheet,e.target]),u=Object(o.useMemo)((function(){return te({options:{prefix:!e.disableVendorPrefixes},plugins:n})}),[e.disableVendorPrefixes,n]);return Object(o.useEffect)((function(){l()(n,e.stylisPlugins)||r(e.stylisPlugins)}),[e.stylisPlugins]),i.a.createElement(ne.Provider,{value:s},i.a.createElement(re.Provider,{value:u},e.children))}var ue=function(){function e(e,t){var n=this;this.inject=function(e,t){void 0===t&&(t=ie);var r=n.name+t.hash;e.hasNameForId(n.id,r)||e.insertRules(n.id,r,t(n.rules,r,\"@keyframes\"))},this.toString=function(){return j(12,String(n.name))},this.name=e,this.id=\"sc-keyframes-\"+e,this.rules=t}return e.prototype.getName=function(e){return void 0===e&&(e=ie),this.name+e.hash},e}(),ce=/([A-Z])/,de=/([A-Z])/g,fe=/^ms-/,pe=function(e){return\"-\"+e.toLowerCase()};function he(e){return ce.test(e)?e.replace(de,pe).replace(fe,\"-ms-\"):e}var me=function(e){return null==e||!1===e||\"\"===e};function ge(e,t,n,r){if(Array.isArray(e)){for(var o,i=[],a=0,l=e.length;a<l;a+=1)\"\"!==(o=ge(e[a],t,n,r))&&(Array.isArray(o)?i.push.apply(i,o):i.push(o));return i}return me(e)?\"\":w(e)?\".\"+e.styledComponentId:b(e)?\"function\"!=typeof(s=e)||s.prototype&&s.prototype.isReactComponent||!t?e:ge(e(t),t,n,r):e instanceof ue?n?(e.inject(n,r),e.getName(r)):e:m(e)?function e(t,n){var r,o,i=[];for(var a in t)t.hasOwnProperty(a)&&!me(t[a])&&(Array.isArray(t[a])&&t[a].isCss||b(t[a])?i.push(he(a)+\":\",t[a],\";\"):m(t[a])?i.push.apply(i,e(t[a],a)):i.push(he(a)+\": \"+(r=a,(null==(o=t[a])||\"boolean\"==typeof o||\"\"===o?\"\":\"number\"!=typeof o||0===o||r in u.a?String(o).trim():o+\"px\")+\";\")));return n?[n+\" {\"].concat(i,[\"}\"]):i}(e):e.toString();var s}var ve=function(e){return Array.isArray(e)&&(e.isCss=!0),e};function be(e){for(var t=arguments.length,n=new Array(t>1?t-1:0),r=1;r<t;r++)n[r-1]=arguments[r];return b(e)||m(e)?ve(ge(h(g,[e].concat(n)))):0===n.length&&1===e.length&&\"string\"==typeof e[0]?e:ve(ge(h(e,n)))}new Set;var ye=function(e,t,n){return void 0===n&&(n=v),e.theme!==n.theme&&e.theme||t||n.theme},we=/[!\"#$%&'()*+,./:;<=>?@[\\\\\\]^`{|}~-]+/g,Se=/(^-|-$)/g;function Oe(e){return e.replace(we,\"-\").replace(Se,\"\")}var xe=function(e){return q(K(e)>>>0)};function _e(e){return\"string\"==typeof e&&!0}var je=function(e){return\"function\"==typeof e||\"object\"==typeof e&&null!==e&&!Array.isArray(e)},Ee=function(e){return\"__proto__\"!==e&&\"constructor\"!==e&&\"prototype\"!==e};function Ce(e,t,n){var r=e[n];je(t)&&je(r)?ke(r,t):e[n]=t}function ke(e){for(var t=arguments.length,n=new Array(t>1?t-1:0),r=1;r<t;r++)n[r-1]=arguments[r];for(var o=0,i=n;o<i.length;o++){var a=i[o];if(je(a))for(var l in a)Ee(l)&&Ce(e,a[l],l)}return e}var Te=i.a.createContext();Te.Consumer;function Pe(e){var t=Object(o.useContext)(Te),n=Object(o.useMemo)((function(){return function(e,t){return e?b(e)?e(t):Array.isArray(e)||\"object\"!=typeof e?j(8):t?p({},t,{},e):e:j(14)}(e.theme,t)}),[e.theme,t]);return e.children?i.a.createElement(Te.Provider,{value:n},e.children):null}var Ne={};function Ie(e,t,n){var r=w(e),a=!_e(e),l=t.attrs,s=void 0===l?g:l,u=t.componentId,d=void 0===u?function(e,t){var n=\"string\"!=typeof e?\"sc\":Oe(e);Ne[n]=(Ne[n]||0)+1;var r=n+\"-\"+xe(\"5.3.1\"+n+Ne[n]);return t?t+\"-\"+r:r}(t.displayName,t.parentComponentId):u,h=t.displayName,m=void 0===h?function(e){return _e(e)?\"styled.\"+e:\"Styled(\"+y(e)+\")\"}(e):h,S=t.displayName&&t.componentId?Oe(t.displayName)+\"-\"+t.componentId:t.componentId||d,O=r&&e.attrs?Array.prototype.concat(e.attrs,s).filter(Boolean):s,x=t.shouldForwardProp;r&&e.shouldForwardProp&&(x=t.shouldForwardProp?function(n,r,o){return e.shouldForwardProp(n,r,o)&&t.shouldForwardProp(n,r,o)}:e.shouldForwardProp);var _,j=new Z(n,S,r?e.componentStyle:void 0),E=j.isStatic&&0===s.length,C=function(e,t){return function(e,t,n,r){var i=e.attrs,a=e.componentStyle,l=e.defaultProps,s=e.foldedComponentIds,u=e.shouldForwardProp,d=e.styledComponentId,f=e.target,h=function(e,t,n){void 0===e&&(e=v);var r=p({},t,{theme:e}),o={};return n.forEach((function(e){var t,n,i,a=e;for(t in b(a)&&(a=a(r)),a)r[t]=o[t]=\"className\"===t?(n=o[t],i=a[t],n&&i?n+\" \"+i:n||i):a[t]})),[r,o]}(ye(t,Object(o.useContext)(Te),l)||v,t,i),m=h[0],g=h[1],y=function(e,t,n,r){var o=ae(),i=le();return t?e.generateAndInjectStyles(v,o,i):e.generateAndInjectStyles(n,o,i)}(a,r,m),w=n,S=g.$as||t.$as||g.as||t.as||f,O=_e(S),x=g!==t?p({},t,{},g):t,_={};for(var j in x)\"$\"!==j[0]&&\"as\"!==j&&(\"forwardedAs\"===j?_.as=x[j]:(u?u(j,c.a,S):!O||Object(c.a)(j))&&(_[j]=x[j]));return t.style&&g.style!==t.style&&(_.style=p({},t.style,{},g.style)),_.className=Array.prototype.concat(s,d,y!==d?y:null,t.className,g.className).filter(Boolean).join(\" \"),_.ref=w,Object(o.createElement)(S,_)}(_,e,t,E)};return C.displayName=m,(_=i.a.forwardRef(C)).attrs=O,_.componentStyle=j,_.displayName=m,_.shouldForwardProp=x,_.foldedComponentIds=r?Array.prototype.concat(e.foldedComponentIds,e.styledComponentId):g,_.styledComponentId=S,_.target=r?e.target:e,_.withComponent=function(e){var r=t.componentId,o=function(e,t){if(null==e)return{};var n,r,o={},i=Object.keys(e);for(r=0;r<i.length;r++)n=i[r],t.indexOf(n)>=0||(o[n]=e[n]);return o}(t,[\"componentId\"]),i=r&&r+\"-\"+(_e(e)?e:Oe(y(e)));return Ie(e,p({},o,{attrs:O,componentId:i}),n)},Object.defineProperty(_,\"defaultProps\",{get:function(){return this._foldedDefaultProps},set:function(t){this._foldedDefaultProps=r?ke({},e.defaultProps,t):t}}),_.toString=function(){return\".\"+_.styledComponentId},a&&f()(_,e,{attrs:!0,componentStyle:!0,displayName:!0,foldedComponentIds:!0,shouldForwardProp:!0,styledComponentId:!0,target:!0,withComponent:!0}),_}var Re=function(e){return function e(t,n,o){if(void 0===o&&(o=v),!Object(r.isValidElementType)(n))return j(1,String(n));var i=function(){return t(n,o,be.apply(void 0,arguments))};return i.withConfig=function(r){return e(t,n,p({},o,{},r))},i.attrs=function(r){return e(t,n,p({},o,{attrs:Array.prototype.concat(o.attrs,r).filter(Boolean)}))},i}(Ie,e)};[\"a\",\"abbr\",\"address\",\"area\",\"article\",\"aside\",\"audio\",\"b\",\"base\",\"bdi\",\"bdo\",\"big\",\"blockquote\",\"body\",\"br\",\"button\",\"canvas\",\"caption\",\"cite\",\"code\",\"col\",\"colgroup\",\"data\",\"datalist\",\"dd\",\"del\",\"details\",\"dfn\",\"dialog\",\"div\",\"dl\",\"dt\",\"em\",\"embed\",\"fieldset\",\"figcaption\",\"figure\",\"footer\",\"form\",\"h1\",\"h2\",\"h3\",\"h4\",\"h5\",\"h6\",\"head\",\"header\",\"hgroup\",\"hr\",\"html\",\"i\",\"iframe\",\"img\",\"input\",\"ins\",\"kbd\",\"keygen\",\"label\",\"legend\",\"li\",\"link\",\"main\",\"map\",\"mark\",\"marquee\",\"menu\",\"menuitem\",\"meta\",\"meter\",\"nav\",\"noscript\",\"object\",\"ol\",\"optgroup\",\"option\",\"output\",\"p\",\"param\",\"picture\",\"pre\",\"progress\",\"q\",\"rp\",\"rt\",\"ruby\",\"s\",\"samp\",\"script\",\"section\",\"select\",\"small\",\"source\",\"span\",\"strong\",\"style\",\"sub\",\"summary\",\"sup\",\"table\",\"tbody\",\"td\",\"textarea\",\"tfoot\",\"th\",\"thead\",\"time\",\"title\",\"tr\",\"track\",\"u\",\"ul\",\"var\",\"video\",\"wbr\",\"circle\",\"clipPath\",\"defs\",\"ellipse\",\"foreignObject\",\"g\",\"image\",\"line\",\"linearGradient\",\"marker\",\"mask\",\"path\",\"pattern\",\"polygon\",\"polyline\",\"radialGradient\",\"rect\",\"stop\",\"svg\",\"text\",\"textPath\",\"tspan\"].forEach((function(e){Re[e]=Re(e)}));var Ae=function(){function e(e,t){this.rules=e,this.componentId=t,this.isStatic=Q(e),H.registerId(this.componentId+1)}var t=e.prototype;return t.createStyles=function(e,t,n,r){var o=r(ge(this.rules,t,n,r).join(\"\"),\"\"),i=this.componentId+e;n.insertRules(i,i,o)},t.removeStyles=function(e,t){t.clearRules(this.componentId+e)},t.renderStyles=function(e,t,n,r){e>2&&H.registerId(this.componentId+e),this.removeStyles(e,n),this.createStyles(e,t,n,r)},e}();function De(e){for(var t=arguments.length,n=new Array(t>1?t-1:0),r=1;r<t;r++)n[r-1]=arguments[r];var a=be.apply(void 0,[e].concat(n)),l=\"sc-global-\"+xe(JSON.stringify(a)),s=new Ae(a,l);function u(e){var t=ae(),n=le(),r=Object(o.useContext)(Te),i=Object(o.useRef)(t.allocateGSInstance(l)).current;return t.server&&c(i,e,t,r,n),Object(o.useLayoutEffect)((function(){if(!t.server)return c(i,e,t,r,n),function(){return s.removeStyles(i,t)}}),[i,e,t,r,n]),null}function c(e,t,n,r,o){if(s.isStatic)s.renderStyles(e,_,n,o);else{var i=p({},t,{theme:ye(t,r,u.defaultProps)});s.renderStyles(e,i,n,o)}}return i.a.memo(u)}function Le(e){for(var t=arguments.length,n=new Array(t>1?t-1:0),r=1;r<t;r++)n[r-1]=arguments[r];var o=be.apply(void 0,[e].concat(n)).join(\"\"),i=xe(o);return new ue(i,o)}!function(){function e(){var e=this;this._emitSheetCSS=function(){var t=e.instance.toString();if(!t)return\"\";var n=M();return\"<style \"+[n&&'nonce=\"'+n+'\"',S+'=\"true\"','data-styled-version=\"5.3.1\"'].filter(Boolean).join(\" \")+\">\"+t+\"</style>\"},this.getStyleTags=function(){return e.sealed?j(2):e._emitSheetCSS()},this.getStyleElement=function(){var t;if(e.sealed)return j(2);var n=((t={})[S]=\"\",t[\"data-styled-version\"]=\"5.3.1\",t.dangerouslySetInnerHTML={__html:e.instance.toString()},t),r=M();return r&&(n.nonce=r),[i.a.createElement(\"style\",p({},n,{key:\"sc-0-0\"}))]},this.seal=function(){e.sealed=!0},this.instance=new H({isServer:!0}),this.sealed=!1}var t=e.prototype;t.collectStyles=function(e){return this.sealed?j(2):i.a.createElement(se,{sheet:this.instance},e)},t.interleaveWithNodeStream=function(e){return j(3)}}();t.e=Re}).call(this,n(9))},function(e,t,n){\"use strict\";e.exports=n(16)},,function(e,t,n){\"use strict\";!function e(){if(\"undefined\"!==typeof __REACT_DEVTOOLS_GLOBAL_HOOK__&&\"function\"===typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE)try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(e)}catch(t){console.error(t)}}(),e.exports=n(17)},function(e,t,n){\"use strict\";var r=n(23),o={childContextTypes:!0,contextType:!0,contextTypes:!0,defaultProps:!0,displayName:!0,getDefaultProps:!0,getDerivedStateFromError:!0,getDerivedStateFromProps:!0,mixins:!0,propTypes:!0,type:!0},i={name:!0,length:!0,prototype:!0,caller:!0,callee:!0,arguments:!0,arity:!0},a={$$typeof:!0,compare:!0,defaultProps:!0,displayName:!0,propTypes:!0,type:!0},l={};function s(e){return r.isMemo(e)?a:l[e.$$typeof]||o}l[r.ForwardRef]={$$typeof:!0,render:!0,defaultProps:!0,displayName:!0,propTypes:!0},l[r.Memo]=a;var u=Object.defineProperty,c=Object.getOwnPropertyNames,d=Object.getOwnPropertySymbols,f=Object.getOwnPropertyDescriptor,p=Object.getPrototypeOf,h=Object.prototype;e.exports=function e(t,n,r){if(\"string\"!==typeof n){if(h){var o=p(n);o&&o!==h&&e(t,o,r)}var a=c(n);d&&(a=a.concat(d(n)));for(var l=s(t),m=s(n),g=0;g<a.length;++g){var v=a[g];if(!i[v]&&(!r||!r[v])&&(!m||!m[v])&&(!l||!l[v])){var b=f(n,v);try{u(t,v,b)}catch(y){}}}}return t}},function(e,t,n){\"use strict\";var r=Object.getOwnPropertySymbols,o=Object.prototype.hasOwnProperty,i=Object.prototype.propertyIsEnumerable;function a(e){if(null===e||void 0===e)throw new TypeError(\"Object.assign cannot be called with null or undefined\");return Object(e)}e.exports=function(){try{if(!Object.assign)return!1;var e=new String(\"abc\");if(e[5]=\"de\",\"5\"===Object.getOwnPropertyNames(e)[0])return!1;for(var t={},n=0;n<10;n++)t[\"_\"+String.fromCharCode(n)]=n;if(\"0123456789\"!==Object.getOwnPropertyNames(t).map((function(e){return t[e]})).join(\"\"))return!1;var r={};return\"abcdefghijklmnopqrst\".split(\"\").forEach((function(e){r[e]=e})),\"abcdefghijklmnopqrst\"===Object.keys(Object.assign({},r)).join(\"\")}catch(o){return!1}}()?Object.assign:function(e,t){for(var n,l,s=a(e),u=1;u<arguments.length;u++){for(var c in n=Object(arguments[u]))o.call(n,c)&&(s[c]=n[c]);if(r){l=r(n);for(var d=0;d<l.length;d++)i.call(n,l[d])&&(s[l[d]]=n[l[d]])}}return s}},function(e,t,n){\"use strict\";e.exports=n(26)},function(e,t,n){\"use strict\";var r=/^((children|dangerouslySetInnerHTML|key|ref|autoFocus|defaultValue|defaultChecked|innerHTML|suppressContentEditableWarning|suppressHydrationWarning|valueLink|accept|acceptCharset|accessKey|action|allow|allowUserMedia|allowPaymentRequest|allowFullScreen|allowTransparency|alt|async|autoComplete|autoPlay|capture|cellPadding|cellSpacing|challenge|charSet|checked|cite|classID|className|cols|colSpan|content|contentEditable|contextMenu|controls|controlsList|coords|crossOrigin|data|dateTime|decoding|default|defer|dir|disabled|disablePictureInPicture|download|draggable|encType|form|formAction|formEncType|formMethod|formNoValidate|formTarget|frameBorder|headers|height|hidden|high|href|hrefLang|htmlFor|httpEquiv|id|inputMode|integrity|is|keyParams|keyType|kind|label|lang|list|loading|loop|low|marginHeight|marginWidth|max|maxLength|media|mediaGroup|method|min|minLength|multiple|muted|name|nonce|noValidate|open|optimum|pattern|placeholder|playsInline|poster|preload|profile|radioGroup|readOnly|referrerPolicy|rel|required|reversed|role|rows|rowSpan|sandbox|scope|scoped|scrolling|seamless|selected|shape|size|sizes|slot|span|spellCheck|src|srcDoc|srcLang|srcSet|start|step|style|summary|tabIndex|target|title|type|useMap|value|width|wmode|wrap|about|datatype|inlist|prefix|property|resource|typeof|vocab|autoCapitalize|autoCorrect|autoSave|color|inert|itemProp|itemScope|itemType|itemID|itemRef|on|results|security|unselectable|accentHeight|accumulate|additive|alignmentBaseline|allowReorder|alphabetic|amplitude|arabicForm|ascent|attributeName|attributeType|autoReverse|azimuth|baseFrequency|baselineShift|baseProfile|bbox|begin|bias|by|calcMode|capHeight|clip|clipPathUnits|clipPath|clipRule|colorInterpolation|colorInterpolationFilters|colorProfile|colorRendering|contentScriptType|contentStyleType|cursor|cx|cy|d|decelerate|descent|diffuseConstant|direction|display|divisor|dominantBaseline|dur|dx|dy|edgeMode|elevation|enableBackground|end|exponent|externalResourcesRequired|fill|fillOpacity|fillRule|filter|filterRes|filterUnits|floodColor|floodOpacity|focusable|fontFamily|fontSize|fontSizeAdjust|fontStretch|fontStyle|fontVariant|fontWeight|format|from|fr|fx|fy|g1|g2|glyphName|glyphOrientationHorizontal|glyphOrientationVertical|glyphRef|gradientTransform|gradientUnits|hanging|horizAdvX|horizOriginX|ideographic|imageRendering|in|in2|intercept|k|k1|k2|k3|k4|kernelMatrix|kernelUnitLength|kerning|keyPoints|keySplines|keyTimes|lengthAdjust|letterSpacing|lightingColor|limitingConeAngle|local|markerEnd|markerMid|markerStart|markerHeight|markerUnits|markerWidth|mask|maskContentUnits|maskUnits|mathematical|mode|numOctaves|offset|opacity|operator|order|orient|orientation|origin|overflow|overlinePosition|overlineThickness|panose1|paintOrder|pathLength|patternContentUnits|patternTransform|patternUnits|pointerEvents|points|pointsAtX|pointsAtY|pointsAtZ|preserveAlpha|preserveAspectRatio|primitiveUnits|r|radius|refX|refY|renderingIntent|repeatCount|repeatDur|requiredExtensions|requiredFeatures|restart|result|rotate|rx|ry|scale|seed|shapeRendering|slope|spacing|specularConstant|specularExponent|speed|spreadMethod|startOffset|stdDeviation|stemh|stemv|stitchTiles|stopColor|stopOpacity|strikethroughPosition|strikethroughThickness|string|stroke|strokeDasharray|strokeDashoffset|strokeLinecap|strokeLinejoin|strokeMiterlimit|strokeOpacity|strokeWidth|surfaceScale|systemLanguage|tableValues|targetX|targetY|textAnchor|textDecoration|textRendering|textLength|to|transform|u1|u2|underlinePosition|underlineThickness|unicode|unicodeBidi|unicodeRange|unitsPerEm|vAlphabetic|vHanging|vIdeographic|vMathematical|values|vectorEffect|version|vertAdvY|vertOriginX|vertOriginY|viewBox|viewTarget|visibility|widths|wordSpacing|writingMode|x|xHeight|x1|x2|xChannelSelector|xlinkActuate|xlinkArcrole|xlinkHref|xlinkRole|xlinkShow|xlinkTitle|xlinkType|xmlBase|xmlns|xmlnsXlink|xmlLang|xmlSpace|y|y1|y2|yChannelSelector|z|zoomAndPan|for|class|autofocus)|(([Dd][Aa][Tt][Aa]|[Aa][Rr][Ii][Aa]|x)-.*))$/,o=function(e){var t={};return function(n){return void 0===t[n]&&(t[n]=e(n)),t[n]}}((function(e){return r.test(e)||111===e.charCodeAt(0)&&110===e.charCodeAt(1)&&e.charCodeAt(2)<91}));t.a=o},function(e,t){var n,r,o=e.exports={};function i(){throw new Error(\"setTimeout has not been defined\")}function a(){throw new Error(\"clearTimeout has not been defined\")}function l(e){if(n===setTimeout)return setTimeout(e,0);if((n===i||!n)&&setTimeout)return n=setTimeout,setTimeout(e,0);try{return n(e,0)}catch(t){try{return n.call(null,e,0)}catch(t){return n.call(this,e,0)}}}!function(){try{n=\"function\"===typeof setTimeout?setTimeout:i}catch(e){n=i}try{r=\"function\"===typeof clearTimeout?clearTimeout:a}catch(e){r=a}}();var s,u=[],c=!1,d=-1;function f(){c&&s&&(c=!1,s.length?u=s.concat(u):d=-1,u.length&&p())}function p(){if(!c){var e=l(f);c=!0;for(var t=u.length;t;){for(s=u,u=[];++d<t;)s&&s[d].run();d=-1,t=u.length}s=null,c=!1,function(e){if(r===clearTimeout)return clearTimeout(e);if((r===a||!r)&&clearTimeout)return r=clearTimeout,clearTimeout(e);try{r(e)}catch(t){try{return r.call(null,e)}catch(t){return r.call(this,e)}}}(e)}}function h(e,t){this.fun=e,this.array=t}function m(){}o.nextTick=function(e){var t=new Array(arguments.length-1);if(arguments.length>1)for(var n=1;n<arguments.length;n++)t[n-1]=arguments[n];u.push(new h(e,t)),1!==u.length||c||l(p)},h.prototype.run=function(){this.fun.apply(null,this.array)},o.title=\"browser\",o.browser=!0,o.env={},o.argv=[],o.version=\"\",o.versions={},o.on=m,o.addListener=m,o.once=m,o.off=m,o.removeListener=m,o.removeAllListeners=m,o.emit=m,o.prependListener=m,o.prependOnceListener=m,o.listeners=function(e){return[]},o.binding=function(e){throw new Error(\"process.binding is not supported\")},o.cwd=function(){return\"/\"},o.chdir=function(e){throw new Error(\"process.chdir is not supported\")},o.umask=function(){return 0}},function(e,t,n){\"use strict\";e.exports=n(25)},function(e,t){e.exports=function(e,t,n,r){var o=n?n.call(r,e,t):void 0;if(void 0!==o)return!!o;if(e===t)return!0;if(\"object\"!==typeof e||!e||\"object\"!==typeof t||!t)return!1;var i=Object.keys(e),a=Object.keys(t);if(i.length!==a.length)return!1;for(var l=Object.prototype.hasOwnProperty.bind(t),s=0;s<i.length;s++){var u=i[s];if(!l(u))return!1;var c=e[u],d=t[u];if(!1===(o=n?n.call(r,c,d,u):void 0)||void 0===o&&c!==d)return!1}return!0}},function(e,t,n){\"use strict\";t.a=function(e){function t(e,r,s,u,f){for(var p,h,m,g,w,O=0,x=0,_=0,j=0,E=0,I=0,A=m=p=0,L=0,M=0,z=0,U=0,F=s.length,B=F-1,V=\"\",W=\"\",H=\"\",$=\"\";L<F;){if(h=s.charCodeAt(L),L===B&&0!==x+j+_+O&&(0!==x&&(h=47===x?10:47),j=_=O=0,F++,B++),0===x+j+_+O){if(L===B&&(0<M&&(V=V.replace(d,\"\")),0<V.trim().length)){switch(h){case 32:case 9:case 59:case 13:case 10:break;default:V+=s.charAt(L)}h=59}switch(h){case 123:for(p=(V=V.trim()).charCodeAt(0),m=1,U=++L;L<F;){switch(h=s.charCodeAt(L)){case 123:m++;break;case 125:m--;break;case 47:switch(h=s.charCodeAt(L+1)){case 42:case 47:e:{for(A=L+1;A<B;++A)switch(s.charCodeAt(A)){case 47:if(42===h&&42===s.charCodeAt(A-1)&&L+2!==A){L=A+1;break e}break;case 10:if(47===h){L=A+1;break e}}L=A}}break;case 91:h++;case 40:h++;case 34:case 39:for(;L++<B&&s.charCodeAt(L)!==h;);}if(0===m)break;L++}switch(m=s.substring(U,L),0===p&&(p=(V=V.replace(c,\"\").trim()).charCodeAt(0)),p){case 64:switch(0<M&&(V=V.replace(d,\"\")),h=V.charCodeAt(1)){case 100:case 109:case 115:case 45:M=r;break;default:M=N}if(U=(m=t(r,M,m,h,f+1)).length,0<R&&(w=l(3,m,M=n(N,V,z),r,k,C,U,h,f,u),V=M.join(\"\"),void 0!==w&&0===(U=(m=w.trim()).length)&&(h=0,m=\"\")),0<U)switch(h){case 115:V=V.replace(S,a);case 100:case 109:case 45:m=V+\"{\"+m+\"}\";break;case 107:m=(V=V.replace(v,\"$1 $2\"))+\"{\"+m+\"}\",m=1===P||2===P&&i(\"@\"+m,3)?\"@-webkit-\"+m+\"@\"+m:\"@\"+m;break;default:m=V+m,112===u&&(W+=m,m=\"\")}else m=\"\";break;default:m=t(r,n(r,V,z),m,u,f+1)}H+=m,m=z=M=A=p=0,V=\"\",h=s.charCodeAt(++L);break;case 125:case 59:if(1<(U=(V=(0<M?V.replace(d,\"\"):V).trim()).length))switch(0===A&&(p=V.charCodeAt(0),45===p||96<p&&123>p)&&(U=(V=V.replace(\" \",\":\")).length),0<R&&void 0!==(w=l(1,V,r,e,k,C,W.length,u,f,u))&&0===(U=(V=w.trim()).length)&&(V=\"\\0\\0\"),p=V.charCodeAt(0),h=V.charCodeAt(1),p){case 0:break;case 64:if(105===h||99===h){$+=V+s.charAt(L);break}default:58!==V.charCodeAt(U-1)&&(W+=o(V,p,h,V.charCodeAt(2)))}z=M=A=p=0,V=\"\",h=s.charCodeAt(++L)}}switch(h){case 13:case 10:47===x?x=0:0===1+p&&107!==u&&0<V.length&&(M=1,V+=\"\\0\"),0<R*D&&l(0,V,r,e,k,C,W.length,u,f,u),C=1,k++;break;case 59:case 125:if(0===x+j+_+O){C++;break}default:switch(C++,g=s.charAt(L),h){case 9:case 32:if(0===j+O+x)switch(E){case 44:case 58:case 9:case 32:g=\"\";break;default:32!==h&&(g=\" \")}break;case 0:g=\"\\\\0\";break;case 12:g=\"\\\\f\";break;case 11:g=\"\\\\v\";break;case 38:0===j+x+O&&(M=z=1,g=\"\\f\"+g);break;case 108:if(0===j+x+O+T&&0<A)switch(L-A){case 2:112===E&&58===s.charCodeAt(L-3)&&(T=E);case 8:111===I&&(T=I)}break;case 58:0===j+x+O&&(A=L);break;case 44:0===x+_+j+O&&(M=1,g+=\"\\r\");break;case 34:case 39:0===x&&(j=j===h?0:0===j?h:j);break;case 91:0===j+x+_&&O++;break;case 93:0===j+x+_&&O--;break;case 41:0===j+x+O&&_--;break;case 40:if(0===j+x+O){if(0===p)switch(2*E+3*I){case 533:break;default:p=1}_++}break;case 64:0===x+_+j+O+A+m&&(m=1);break;case 42:case 47:if(!(0<j+O+_))switch(x){case 0:switch(2*h+3*s.charCodeAt(L+1)){case 235:x=47;break;case 220:U=L,x=42}break;case 42:47===h&&42===E&&U+2!==L&&(33===s.charCodeAt(U+2)&&(W+=s.substring(U,L+1)),g=\"\",x=0)}}0===x&&(V+=g)}I=E,E=h,L++}if(0<(U=W.length)){if(M=r,0<R&&(void 0!==(w=l(2,W,M,e,k,C,U,u,f,u))&&0===(W=w).length))return $+W+H;if(W=M.join(\",\")+\"{\"+W+\"}\",0!==P*T){switch(2!==P||i(W,2)||(T=0),T){case 111:W=W.replace(y,\":-moz-$1\")+W;break;case 112:W=W.replace(b,\"::-webkit-input-$1\")+W.replace(b,\"::-moz-$1\")+W.replace(b,\":-ms-input-$1\")+W}T=0}}return $+W+H}function n(e,t,n){var o=t.trim().split(m);t=o;var i=o.length,a=e.length;switch(a){case 0:case 1:var l=0;for(e=0===a?\"\":e[0]+\" \";l<i;++l)t[l]=r(e,t[l],n).trim();break;default:var s=l=0;for(t=[];l<i;++l)for(var u=0;u<a;++u)t[s++]=r(e[u]+\" \",o[l],n).trim()}return t}function r(e,t,n){var r=t.charCodeAt(0);switch(33>r&&(r=(t=t.trim()).charCodeAt(0)),r){case 38:return t.replace(g,\"$1\"+e.trim());case 58:return e.trim()+t.replace(g,\"$1\"+e.trim());default:if(0<1*n&&0<t.indexOf(\"\\f\"))return t.replace(g,(58===e.charCodeAt(0)?\"\":\"$1\")+e.trim())}return e+t}function o(e,t,n,r){var a=e+\";\",l=2*t+3*n+4*r;if(944===l){e=a.indexOf(\":\",9)+1;var s=a.substring(e,a.length-1).trim();return s=a.substring(0,e).trim()+s+\";\",1===P||2===P&&i(s,1)?\"-webkit-\"+s+s:s}if(0===P||2===P&&!i(a,1))return a;switch(l){case 1015:return 97===a.charCodeAt(10)?\"-webkit-\"+a+a:a;case 951:return 116===a.charCodeAt(3)?\"-webkit-\"+a+a:a;case 963:return 110===a.charCodeAt(5)?\"-webkit-\"+a+a:a;case 1009:if(100!==a.charCodeAt(4))break;case 969:case 942:return\"-webkit-\"+a+a;case 978:return\"-webkit-\"+a+\"-moz-\"+a+a;case 1019:case 983:return\"-webkit-\"+a+\"-moz-\"+a+\"-ms-\"+a+a;case 883:if(45===a.charCodeAt(8))return\"-webkit-\"+a+a;if(0<a.indexOf(\"image-set(\",11))return a.replace(E,\"$1-webkit-$2\")+a;break;case 932:if(45===a.charCodeAt(4))switch(a.charCodeAt(5)){case 103:return\"-webkit-box-\"+a.replace(\"-grow\",\"\")+\"-webkit-\"+a+\"-ms-\"+a.replace(\"grow\",\"positive\")+a;case 115:return\"-webkit-\"+a+\"-ms-\"+a.replace(\"shrink\",\"negative\")+a;case 98:return\"-webkit-\"+a+\"-ms-\"+a.replace(\"basis\",\"preferred-size\")+a}return\"-webkit-\"+a+\"-ms-\"+a+a;case 964:return\"-webkit-\"+a+\"-ms-flex-\"+a+a;case 1023:if(99!==a.charCodeAt(8))break;return\"-webkit-box-pack\"+(s=a.substring(a.indexOf(\":\",15)).replace(\"flex-\",\"\").replace(\"space-between\",\"justify\"))+\"-webkit-\"+a+\"-ms-flex-pack\"+s+a;case 1005:return p.test(a)?a.replace(f,\":-webkit-\")+a.replace(f,\":-moz-\")+a:a;case 1e3:switch(t=(s=a.substring(13).trim()).indexOf(\"-\")+1,s.charCodeAt(0)+s.charCodeAt(t)){case 226:s=a.replace(w,\"tb\");break;case 232:s=a.replace(w,\"tb-rl\");break;case 220:s=a.replace(w,\"lr\");break;default:return a}return\"-webkit-\"+a+\"-ms-\"+s+a;case 1017:if(-1===a.indexOf(\"sticky\",9))break;case 975:switch(t=(a=e).length-10,l=(s=(33===a.charCodeAt(t)?a.substring(0,t):a).substring(e.indexOf(\":\",7)+1).trim()).charCodeAt(0)+(0|s.charCodeAt(7))){case 203:if(111>s.charCodeAt(8))break;case 115:a=a.replace(s,\"-webkit-\"+s)+\";\"+a;break;case 207:case 102:a=a.replace(s,\"-webkit-\"+(102<l?\"inline-\":\"\")+\"box\")+\";\"+a.replace(s,\"-webkit-\"+s)+\";\"+a.replace(s,\"-ms-\"+s+\"box\")+\";\"+a}return a+\";\";case 938:if(45===a.charCodeAt(5))switch(a.charCodeAt(6)){case 105:return s=a.replace(\"-items\",\"\"),\"-webkit-\"+a+\"-webkit-box-\"+s+\"-ms-flex-\"+s+a;case 115:return\"-webkit-\"+a+\"-ms-flex-item-\"+a.replace(x,\"\")+a;default:return\"-webkit-\"+a+\"-ms-flex-line-pack\"+a.replace(\"align-content\",\"\").replace(x,\"\")+a}break;case 973:case 989:if(45!==a.charCodeAt(3)||122===a.charCodeAt(4))break;case 931:case 953:if(!0===j.test(e))return 115===(s=e.substring(e.indexOf(\":\")+1)).charCodeAt(0)?o(e.replace(\"stretch\",\"fill-available\"),t,n,r).replace(\":fill-available\",\":stretch\"):a.replace(s,\"-webkit-\"+s)+a.replace(s,\"-moz-\"+s.replace(\"fill-\",\"\"))+a;break;case 962:if(a=\"-webkit-\"+a+(102===a.charCodeAt(5)?\"-ms-\"+a:\"\")+a,211===n+r&&105===a.charCodeAt(13)&&0<a.indexOf(\"transform\",10))return a.substring(0,a.indexOf(\";\",27)+1).replace(h,\"$1-webkit-$2\")+a}return a}function i(e,t){var n=e.indexOf(1===t?\":\":\"{\"),r=e.substring(0,3!==t?n:10);return n=e.substring(n+1,e.length-1),A(2!==t?r:r.replace(_,\"$1\"),n,t)}function a(e,t){var n=o(t,t.charCodeAt(0),t.charCodeAt(1),t.charCodeAt(2));return n!==t+\";\"?n.replace(O,\" or ($1)\").substring(4):\"(\"+t+\")\"}function l(e,t,n,r,o,i,a,l,s,c){for(var d,f=0,p=t;f<R;++f)switch(d=I[f].call(u,e,p,n,r,o,i,a,l,s,c)){case void 0:case!1:case!0:case null:break;default:p=d}if(p!==t)return p}function s(e){return void 0!==(e=e.prefix)&&(A=null,e?\"function\"!==typeof e?P=1:(P=2,A=e):P=0),s}function u(e,n){var r=e;if(33>r.charCodeAt(0)&&(r=r.trim()),r=[r],0<R){var o=l(-1,n,r,r,k,C,0,0,0,0);void 0!==o&&\"string\"===typeof o&&(n=o)}var i=t(N,r,n,0,0);return 0<R&&(void 0!==(o=l(-2,i,r,r,k,C,i.length,0,0,0))&&(i=o)),\"\",T=0,C=k=1,i}var c=/^\\0+/g,d=/[\\0\\r\\f]/g,f=/: */g,p=/zoo|gra/,h=/([,: ])(transform)/g,m=/,\\r+?/g,g=/([\\t\\r\\n ])*\\f?&/g,v=/@(k\\w+)\\s*(\\S*)\\s*/,b=/::(place)/g,y=/:(read-only)/g,w=/[svh]\\w+-[tblr]{2}/,S=/\\(\\s*(.*)\\s*\\)/g,O=/([\\s\\S]*?);/g,x=/-self|flex-/g,_=/[^]*?(:[rp][el]a[\\w-]+)[^]*/,j=/stretch|:\\s*\\w+\\-(?:conte|avail)/,E=/([^-])(image-set\\()/,C=1,k=1,T=0,P=1,N=[],I=[],R=0,A=null,D=0;return u.use=function e(t){switch(t){case void 0:case null:R=I.length=0;break;default:if(\"function\"===typeof t)I[R++]=t;else if(\"object\"===typeof t)for(var n=0,r=t.length;n<r;++n)e(t[n]);else D=0|!!t}return e},u.set=s,void 0!==e&&s(e),u}},function(e,t,n){\"use strict\";t.a={animationIterationCount:1,borderImageOutset:1,borderImageSlice:1,borderImageWidth:1,boxFlex:1,boxFlexGroup:1,boxOrdinalGroup:1,columnCount:1,columns:1,flex:1,flexGrow:1,flexPositive:1,flexShrink:1,flexNegative:1,flexOrder:1,gridRow:1,gridRowEnd:1,gridRowSpan:1,gridRowStart:1,gridColumn:1,gridColumnEnd:1,gridColumnSpan:1,gridColumnStart:1,msGridRow:1,msGridRowSpan:1,msGridColumn:1,msGridColumnSpan:1,fontWeight:1,lineHeight:1,opacity:1,order:1,orphans:1,tabSize:1,widows:1,zIndex:1,zoom:1,WebkitLineClamp:1,fillOpacity:1,floodOpacity:1,stopOpacity:1,strokeDasharray:1,strokeDashoffset:1,strokeMiterlimit:1,strokeOpacity:1,strokeWidth:1}},function(e,t,n){\"use strict\";e.exports=function(e,t){var n=t||{},o=n.type||\"attachment\",i=function(e,t){if(void 0===e)return;var n={};if(\"string\"!==typeof e)throw new TypeError(\"filename must be a string\");void 0===t&&(t=!0);if(\"string\"!==typeof t&&\"boolean\"!==typeof t)throw new TypeError(\"fallback must be a string or boolean\");if(\"string\"===typeof t&&s.test(t))throw new TypeError(\"fallback must be ISO-8859-1 string\");var o=r(e),i=f.test(o),l=\"string\"!==typeof t?t&&v(o):r(t),u=\"string\"===typeof l&&l!==o;(u||!i||a.test(o))&&(n[\"filename*\"]=o);(i||u)&&(n.filename=u?l:o);return n}(e,n.fallback);return function(e){var t=e.parameters,n=e.type;if(!n||\"string\"!==typeof n||!p.test(n))throw new TypeError(\"invalid type\");var r=String(n).toLowerCase();if(t&&\"object\"===typeof t)for(var o,i=Object.keys(t).sort(),a=0;a<i.length;a++){var l=\"*\"===(o=i[a]).substr(-1)?S(t[o]):w(t[o]);r+=\"; \"+o+\"=\"+l}return r}(new O(o,i))},e.exports.parse=function(e){if(!e||\"string\"!==typeof e)throw new TypeError(\"argument string is required\");var t=m.exec(e);if(!t)throw new TypeError(\"invalid type format\");var n,r,o=t[0].length,i=t[1].toLowerCase(),a=[],l={};o=d.lastIndex=\";\"===t[0].substr(-1)?o-1:o;for(;t=d.exec(e);){if(t.index!==o)throw new TypeError(\"invalid parameter format\");if(o+=t[0].length,n=t[1].toLowerCase(),r=t[2],-1!==a.indexOf(n))throw new TypeError(\"invalid duplicate parameter\");a.push(n),n.indexOf(\"*\")+1!==n.length?\"string\"!==typeof l[n]&&('\"'===r[0]&&(r=r.substr(1,r.length-2).replace(u,\"$1\")),l[n]=r):(n=n.slice(0,-1),r=g(r),l[n]=r)}if(-1!==o&&o!==e.length)throw new TypeError(\"invalid parameter format\");return new O(i,l)};var r=n(28).basename,o=n(29).Buffer,i=/[\\x00-\\x20\"'()*,/:;<=>?@[\\\\\\]{}\\x7f]/g,a=/%[0-9A-Fa-f]{2}/,l=/%([0-9A-Fa-f]{2})/g,s=/[^\\x20-\\x7e\\xa0-\\xff]/g,u=/\\\\([\\u0000-\\u007f])/g,c=/([\\\\\"])/g,d=/;[\\x09\\x20]*([!#$%&'*+.0-9A-Z^_`a-z|~-]+)[\\x09\\x20]*=[\\x09\\x20]*(\"(?:[\\x20!\\x23-\\x5b\\x5d-\\x7e\\x80-\\xff]|\\\\[\\x20-\\x7e])*\"|[!#$%&'*+.0-9A-Z^_`a-z|~-]+)[\\x09\\x20]*/g,f=/^[\\x20-\\x7e\\x80-\\xff]+$/,p=/^[!#$%&'*+.0-9A-Z^_`a-z|~-]+$/,h=/^([A-Za-z0-9!#$%&+\\-^_`{}~]+)'(?:[A-Za-z]{2,3}(?:-[A-Za-z]{3}){0,3}|[A-Za-z]{4,8}|)'((?:%[0-9A-Fa-f]{2}|[A-Za-z0-9!#$&+.^_`|~-])+)$/,m=/^([!#$%&'*+.0-9A-Z^_`a-z|~-]+)[\\x09\\x20]*(?:$|;)/;function g(e){var t=h.exec(e);if(!t)throw new TypeError(\"invalid extended field value\");var n,r=t[1].toLowerCase(),i=t[2].replace(l,b);switch(r){case\"iso-8859-1\":n=v(i);break;case\"utf-8\":n=o.from(i,\"binary\").toString(\"utf8\");break;default:throw new TypeError(\"unsupported charset in extended field\")}return n}function v(e){return String(e).replace(s,\"?\")}function b(e,t){return String.fromCharCode(parseInt(t,16))}function y(e){return\"%\"+String(e).charCodeAt(0).toString(16).toUpperCase()}function w(e){return'\"'+String(e).replace(c,\"\\\\$1\")+'\"'}function S(e){var t=String(e);return\"UTF-8''\"+encodeURIComponent(t).replace(i,y)}function O(e,t){this.type=e,this.parameters=t}},function(e,t,n){\"use strict\";var r=Object.prototype.hasOwnProperty,o=\"~\";function i(){}function a(e,t,n){this.fn=e,this.context=t,this.once=n||!1}function l(e,t,n,r,i){if(\"function\"!==typeof n)throw new TypeError(\"The listener must be a function\");var l=new a(n,r||e,i),s=o?o+t:t;return e._events[s]?e._events[s].fn?e._events[s]=[e._events[s],l]:e._events[s].push(l):(e._events[s]=l,e._eventsCount++),e}function s(e,t){0===--e._eventsCount?e._events=new i:delete e._events[t]}function u(){this._events=new i,this._eventsCount=0}Object.create&&(i.prototype=Object.create(null),(new i).__proto__||(o=!1)),u.prototype.eventNames=function(){var e,t,n=[];if(0===this._eventsCount)return n;for(t in e=this._events)r.call(e,t)&&n.push(o?t.slice(1):t);return Object.getOwnPropertySymbols?n.concat(Object.getOwnPropertySymbols(e)):n},u.prototype.listeners=function(e){var t=o?o+e:e,n=this._events[t];if(!n)return[];if(n.fn)return[n.fn];for(var r=0,i=n.length,a=new Array(i);r<i;r++)a[r]=n[r].fn;return a},u.prototype.listenerCount=function(e){var t=o?o+e:e,n=this._events[t];return n?n.fn?1:n.length:0},u.prototype.emit=function(e,t,n,r,i,a){var l=o?o+e:e;if(!this._events[l])return!1;var s,u,c=this._events[l],d=arguments.length;if(c.fn){switch(c.once&&this.removeListener(e,c.fn,void 0,!0),d){case 1:return c.fn.call(c.context),!0;case 2:return c.fn.call(c.context,t),!0;case 3:return c.fn.call(c.context,t,n),!0;case 4:return c.fn.call(c.context,t,n,r),!0;case 5:return c.fn.call(c.context,t,n,r,i),!0;case 6:return c.fn.call(c.context,t,n,r,i,a),!0}for(u=1,s=new Array(d-1);u<d;u++)s[u-1]=arguments[u];c.fn.apply(c.context,s)}else{var f,p=c.length;for(u=0;u<p;u++)switch(c[u].once&&this.removeListener(e,c[u].fn,void 0,!0),d){case 1:c[u].fn.call(c[u].context);break;case 2:c[u].fn.call(c[u].context,t);break;case 3:c[u].fn.call(c[u].context,t,n);break;case 4:c[u].fn.call(c[u].context,t,n,r);break;default:if(!s)for(f=1,s=new Array(d-1);f<d;f++)s[f-1]=arguments[f];c[u].fn.apply(c[u].context,s)}}return!0},u.prototype.on=function(e,t,n){return l(this,e,t,n,!1)},u.prototype.once=function(e,t,n){return l(this,e,t,n,!0)},u.prototype.removeListener=function(e,t,n,r){var i=o?o+e:e;if(!this._events[i])return this;if(!t)return s(this,i),this;var a=this._events[i];if(a.fn)a.fn!==t||r&&!a.once||n&&a.context!==n||s(this,i);else{for(var l=0,u=[],c=a.length;l<c;l++)(a[l].fn!==t||r&&!a[l].once||n&&a[l].context!==n)&&u.push(a[l]);u.length?this._events[i]=1===u.length?u[0]:u:s(this,i)}return this},u.prototype.removeAllListeners=function(e){var t;return e?(t=o?o+e:e,this._events[t]&&s(this,t)):(this._events=new i,this._eventsCount=0),this},u.prototype.off=u.prototype.removeListener,u.prototype.addListener=u.prototype.on,u.prefixed=o,u.EventEmitter=u,e.exports=u},function(e,t,n){\"use strict\";var r=n(6),o=60103,i=60106;t.Fragment=60107,t.StrictMode=60108,t.Profiler=60114;var a=60109,l=60110,s=60112;t.Suspense=60113;var u=60115,c=60116;if(\"function\"===typeof Symbol&&Symbol.for){var d=Symbol.for;o=d(\"react.element\"),i=d(\"react.portal\"),t.Fragment=d(\"react.fragment\"),t.StrictMode=d(\"react.strict_mode\"),t.Profiler=d(\"react.profiler\"),a=d(\"react.provider\"),l=d(\"react.context\"),s=d(\"react.forward_ref\"),t.Suspense=d(\"react.suspense\"),u=d(\"react.memo\"),c=d(\"react.lazy\")}var f=\"function\"===typeof Symbol&&Symbol.iterator;function p(e){for(var t=\"https://reactjs.org/docs/error-decoder.html?invariant=\"+e,n=1;n<arguments.length;n++)t+=\"&args[]=\"+encodeURIComponent(arguments[n]);return\"Minified React error #\"+e+\"; visit \"+t+\" for the full message or use the non-minified dev environment for full errors and additional helpful warnings.\"}var h={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},m={};function g(e,t,n){this.props=e,this.context=t,this.refs=m,this.updater=n||h}function v(){}function b(e,t,n){this.props=e,this.context=t,this.refs=m,this.updater=n||h}g.prototype.isReactComponent={},g.prototype.setState=function(e,t){if(\"object\"!==typeof e&&\"function\"!==typeof e&&null!=e)throw Error(p(85));this.updater.enqueueSetState(this,e,t,\"setState\")},g.prototype.forceUpdate=function(e){this.updater.enqueueForceUpdate(this,e,\"forceUpdate\")},v.prototype=g.prototype;var y=b.prototype=new v;y.constructor=b,r(y,g.prototype),y.isPureReactComponent=!0;var w={current:null},S=Object.prototype.hasOwnProperty,O={key:!0,ref:!0,__self:!0,__source:!0};function x(e,t,n){var r,i={},a=null,l=null;if(null!=t)for(r in void 0!==t.ref&&(l=t.ref),void 0!==t.key&&(a=\"\"+t.key),t)S.call(t,r)&&!O.hasOwnProperty(r)&&(i[r]=t[r]);var s=arguments.length-2;if(1===s)i.children=n;else if(1<s){for(var u=Array(s),c=0;c<s;c++)u[c]=arguments[c+2];i.children=u}if(e&&e.defaultProps)for(r in s=e.defaultProps)void 0===i[r]&&(i[r]=s[r]);return{$$typeof:o,type:e,key:a,ref:l,props:i,_owner:w.current}}function _(e){return\"object\"===typeof e&&null!==e&&e.$$typeof===o}var j=/\\/+/g;function E(e,t){return\"object\"===typeof e&&null!==e&&null!=e.key?function(e){var t={\"=\":\"=0\",\":\":\"=2\"};return\"$\"+e.replace(/[=:]/g,(function(e){return t[e]}))}(\"\"+e.key):t.toString(36)}function C(e,t,n,r,a){var l=typeof e;\"undefined\"!==l&&\"boolean\"!==l||(e=null);var s=!1;if(null===e)s=!0;else switch(l){case\"string\":case\"number\":s=!0;break;case\"object\":switch(e.$$typeof){case o:case i:s=!0}}if(s)return a=a(s=e),e=\"\"===r?\".\"+E(s,0):r,Array.isArray(a)?(n=\"\",null!=e&&(n=e.replace(j,\"$&/\")+\"/\"),C(a,t,n,\"\",(function(e){return e}))):null!=a&&(_(a)&&(a=function(e,t){return{$$typeof:o,type:e.type,key:t,ref:e.ref,props:e.props,_owner:e._owner}}(a,n+(!a.key||s&&s.key===a.key?\"\":(\"\"+a.key).replace(j,\"$&/\")+\"/\")+e)),t.push(a)),1;if(s=0,r=\"\"===r?\".\":r+\":\",Array.isArray(e))for(var u=0;u<e.length;u++){var c=r+E(l=e[u],u);s+=C(l,t,n,c,a)}else if(\"function\"===typeof(c=function(e){return null===e||\"object\"!==typeof e?null:\"function\"===typeof(e=f&&e[f]||e[\"@@iterator\"])?e:null}(e)))for(e=c.call(e),u=0;!(l=e.next()).done;)s+=C(l=l.value,t,n,c=r+E(l,u++),a);else if(\"object\"===l)throw t=\"\"+e,Error(p(31,\"[object Object]\"===t?\"object with keys {\"+Object.keys(e).join(\", \")+\"}\":t));return s}function k(e,t,n){if(null==e)return e;var r=[],o=0;return C(e,r,\"\",\"\",(function(e){return t.call(n,e,o++)})),r}function T(e){if(-1===e._status){var t=e._result;t=t(),e._status=0,e._result=t,t.then((function(t){0===e._status&&(t=t.default,e._status=1,e._result=t)}),(function(t){0===e._status&&(e._status=2,e._result=t)}))}if(1===e._status)return e._result;throw e._result}var P={current:null};function N(){var e=P.current;if(null===e)throw Error(p(321));return e}var I={ReactCurrentDispatcher:P,ReactCurrentBatchConfig:{transition:0},ReactCurrentOwner:w,IsSomeRendererActing:{current:!1},assign:r};t.Children={map:k,forEach:function(e,t,n){k(e,(function(){t.apply(this,arguments)}),n)},count:function(e){var t=0;return k(e,(function(){t++})),t},toArray:function(e){return k(e,(function(e){return e}))||[]},only:function(e){if(!_(e))throw Error(p(143));return e}},t.Component=g,t.PureComponent=b,t.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED=I,t.cloneElement=function(e,t,n){if(null===e||void 0===e)throw Error(p(267,e));var i=r({},e.props),a=e.key,l=e.ref,s=e._owner;if(null!=t){if(void 0!==t.ref&&(l=t.ref,s=w.current),void 0!==t.key&&(a=\"\"+t.key),e.type&&e.type.defaultProps)var u=e.type.defaultProps;for(c in t)S.call(t,c)&&!O.hasOwnProperty(c)&&(i[c]=void 0===t[c]&&void 0!==u?u[c]:t[c])}var c=arguments.length-2;if(1===c)i.children=n;else if(1<c){u=Array(c);for(var d=0;d<c;d++)u[d]=arguments[d+2];i.children=u}return{$$typeof:o,type:e.type,key:a,ref:l,props:i,_owner:s}},t.createContext=function(e,t){return void 0===t&&(t=null),(e={$$typeof:l,_calculateChangedBits:t,_currentValue:e,_currentValue2:e,_threadCount:0,Provider:null,Consumer:null}).Provider={$$typeof:a,_context:e},e.Consumer=e},t.createElement=x,t.createFactory=function(e){var t=x.bind(null,e);return t.type=e,t},t.createRef=function(){return{current:null}},t.forwardRef=function(e){return{$$typeof:s,render:e}},t.isValidElement=_,t.lazy=function(e){return{$$typeof:c,_payload:{_status:-1,_result:e},_init:T}},t.memo=function(e,t){return{$$typeof:u,type:e,compare:void 0===t?null:t}},t.useCallback=function(e,t){return N().useCallback(e,t)},t.useContext=function(e,t){return N().useContext(e,t)},t.useDebugValue=function(){},t.useEffect=function(e,t){return N().useEffect(e,t)},t.useImperativeHandle=function(e,t,n){return N().useImperativeHandle(e,t,n)},t.useLayoutEffect=function(e,t){return N().useLayoutEffect(e,t)},t.useMemo=function(e,t){return N().useMemo(e,t)},t.useReducer=function(e,t,n){return N().useReducer(e,t,n)},t.useRef=function(e){return N().useRef(e)},t.useState=function(e){return N().useState(e)},t.version=\"17.0.2\"},function(e,t,n){\"use strict\";var r=n(2),o=n(6),i=n(18);function a(e){for(var t=\"https://reactjs.org/docs/error-decoder.html?invariant=\"+e,n=1;n<arguments.length;n++)t+=\"&args[]=\"+encodeURIComponent(arguments[n]);return\"Minified React error #\"+e+\"; visit \"+t+\" for the full message or use the non-minified dev environment for full errors and additional helpful warnings.\"}if(!r)throw Error(a(227));var l=new Set,s={};function u(e,t){c(e,t),c(e+\"Capture\",t)}function c(e,t){for(s[e]=t,e=0;e<t.length;e++)l.add(t[e])}var d=!(\"undefined\"===typeof window||\"undefined\"===typeof window.document||\"undefined\"===typeof window.document.createElement),f=/^[:A-Z_a-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD][:A-Z_a-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD\\-.0-9\\u00B7\\u0300-\\u036F\\u203F-\\u2040]*$/,p=Object.prototype.hasOwnProperty,h={},m={};function g(e,t,n,r,o,i,a){this.acceptsBooleans=2===t||3===t||4===t,this.attributeName=r,this.attributeNamespace=o,this.mustUseProperty=n,this.propertyName=e,this.type=t,this.sanitizeURL=i,this.removeEmptyString=a}var v={};\"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style\".split(\" \").forEach((function(e){v[e]=new g(e,0,!1,e,null,!1,!1)})),[[\"acceptCharset\",\"accept-charset\"],[\"className\",\"class\"],[\"htmlFor\",\"for\"],[\"httpEquiv\",\"http-equiv\"]].forEach((function(e){var t=e[0];v[t]=new g(t,1,!1,e[1],null,!1,!1)})),[\"contentEditable\",\"draggable\",\"spellCheck\",\"value\"].forEach((function(e){v[e]=new g(e,2,!1,e.toLowerCase(),null,!1,!1)})),[\"autoReverse\",\"externalResourcesRequired\",\"focusable\",\"preserveAlpha\"].forEach((function(e){v[e]=new g(e,2,!1,e,null,!1,!1)})),\"allowFullScreen async autoFocus autoPlay controls default defer disabled disablePictureInPicture disableRemotePlayback formNoValidate hidden loop noModule noValidate open playsInline readOnly required reversed scoped seamless itemScope\".split(\" \").forEach((function(e){v[e]=new g(e,3,!1,e.toLowerCase(),null,!1,!1)})),[\"checked\",\"multiple\",\"muted\",\"selected\"].forEach((function(e){v[e]=new g(e,3,!0,e,null,!1,!1)})),[\"capture\",\"download\"].forEach((function(e){v[e]=new g(e,4,!1,e,null,!1,!1)})),[\"cols\",\"rows\",\"size\",\"span\"].forEach((function(e){v[e]=new g(e,6,!1,e,null,!1,!1)})),[\"rowSpan\",\"start\"].forEach((function(e){v[e]=new g(e,5,!1,e.toLowerCase(),null,!1,!1)}));var b=/[\\-:]([a-z])/g;function y(e){return e[1].toUpperCase()}function w(e,t,n,r){var o=v.hasOwnProperty(t)?v[t]:null;(null!==o?0===o.type:!r&&(2<t.length&&(\"o\"===t[0]||\"O\"===t[0])&&(\"n\"===t[1]||\"N\"===t[1])))||(function(e,t,n,r){if(null===t||\"undefined\"===typeof t||function(e,t,n,r){if(null!==n&&0===n.type)return!1;switch(typeof t){case\"function\":case\"symbol\":return!0;case\"boolean\":return!r&&(null!==n?!n.acceptsBooleans:\"data-\"!==(e=e.toLowerCase().slice(0,5))&&\"aria-\"!==e);default:return!1}}(e,t,n,r))return!0;if(r)return!1;if(null!==n)switch(n.type){case 3:return!t;case 4:return!1===t;case 5:return isNaN(t);case 6:return isNaN(t)||1>t}return!1}(t,n,o,r)&&(n=null),r||null===o?function(e){return!!p.call(m,e)||!p.call(h,e)&&(f.test(e)?m[e]=!0:(h[e]=!0,!1))}(t)&&(null===n?e.removeAttribute(t):e.setAttribute(t,\"\"+n)):o.mustUseProperty?e[o.propertyName]=null===n?3!==o.type&&\"\":n:(t=o.attributeName,r=o.attributeNamespace,null===n?e.removeAttribute(t):(n=3===(o=o.type)||4===o&&!0===n?\"\":\"\"+n,r?e.setAttributeNS(r,t,n):e.setAttribute(t,n))))}\"accent-height alignment-baseline arabic-form baseline-shift cap-height clip-path clip-rule color-interpolation color-interpolation-filters color-profile color-rendering dominant-baseline enable-background fill-opacity fill-rule flood-color flood-opacity font-family font-size font-size-adjust font-stretch font-style font-variant font-weight glyph-name glyph-orientation-horizontal glyph-orientation-vertical horiz-adv-x horiz-origin-x image-rendering letter-spacing lighting-color marker-end marker-mid marker-start overline-position overline-thickness paint-order panose-1 pointer-events rendering-intent shape-rendering stop-color stop-opacity strikethrough-position strikethrough-thickness stroke-dasharray stroke-dashoffset stroke-linecap stroke-linejoin stroke-miterlimit stroke-opacity stroke-width text-anchor text-decoration text-rendering underline-position underline-thickness unicode-bidi unicode-range units-per-em v-alphabetic v-hanging v-ideographic v-mathematical vector-effect vert-adv-y vert-origin-x vert-origin-y word-spacing writing-mode xmlns:xlink x-height\".split(\" \").forEach((function(e){var t=e.replace(b,y);v[t]=new g(t,1,!1,e,null,!1,!1)})),\"xlink:actuate xlink:arcrole xlink:role xlink:show xlink:title xlink:type\".split(\" \").forEach((function(e){var t=e.replace(b,y);v[t]=new g(t,1,!1,e,\"http://www.w3.org/1999/xlink\",!1,!1)})),[\"xml:base\",\"xml:lang\",\"xml:space\"].forEach((function(e){var t=e.replace(b,y);v[t]=new g(t,1,!1,e,\"http://www.w3.org/XML/1998/namespace\",!1,!1)})),[\"tabIndex\",\"crossOrigin\"].forEach((function(e){v[e]=new g(e,1,!1,e.toLowerCase(),null,!1,!1)})),v.xlinkHref=new g(\"xlinkHref\",1,!1,\"xlink:href\",\"http://www.w3.org/1999/xlink\",!0,!1),[\"src\",\"href\",\"action\",\"formAction\"].forEach((function(e){v[e]=new g(e,1,!1,e.toLowerCase(),null,!0,!0)}));var S=r.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED,O=60103,x=60106,_=60107,j=60108,E=60114,C=60109,k=60110,T=60112,P=60113,N=60120,I=60115,R=60116,A=60121,D=60128,L=60129,M=60130,z=60131;if(\"function\"===typeof Symbol&&Symbol.for){var U=Symbol.for;O=U(\"react.element\"),x=U(\"react.portal\"),_=U(\"react.fragment\"),j=U(\"react.strict_mode\"),E=U(\"react.profiler\"),C=U(\"react.provider\"),k=U(\"react.context\"),T=U(\"react.forward_ref\"),P=U(\"react.suspense\"),N=U(\"react.suspense_list\"),I=U(\"react.memo\"),R=U(\"react.lazy\"),A=U(\"react.block\"),U(\"react.scope\"),D=U(\"react.opaque.id\"),L=U(\"react.debug_trace_mode\"),M=U(\"react.offscreen\"),z=U(\"react.legacy_hidden\")}var F,B=\"function\"===typeof Symbol&&Symbol.iterator;function V(e){return null===e||\"object\"!==typeof e?null:\"function\"===typeof(e=B&&e[B]||e[\"@@iterator\"])?e:null}function W(e){if(void 0===F)try{throw Error()}catch(n){var t=n.stack.trim().match(/\\n( *(at )?)/);F=t&&t[1]||\"\"}return\"\\n\"+F+e}var H=!1;function $(e,t){if(!e||H)return\"\";H=!0;var n=Error.prepareStackTrace;Error.prepareStackTrace=void 0;try{if(t)if(t=function(){throw Error()},Object.defineProperty(t.prototype,\"props\",{set:function(){throw Error()}}),\"object\"===typeof Reflect&&Reflect.construct){try{Reflect.construct(t,[])}catch(s){var r=s}Reflect.construct(e,[],t)}else{try{t.call()}catch(s){r=s}e.call(t.prototype)}else{try{throw Error()}catch(s){r=s}e()}}catch(s){if(s&&r&&\"string\"===typeof s.stack){for(var o=s.stack.split(\"\\n\"),i=r.stack.split(\"\\n\"),a=o.length-1,l=i.length-1;1<=a&&0<=l&&o[a]!==i[l];)l--;for(;1<=a&&0<=l;a--,l--)if(o[a]!==i[l]){if(1!==a||1!==l)do{if(a--,0>--l||o[a]!==i[l])return\"\\n\"+o[a].replace(\" at new \",\" at \")}while(1<=a&&0<=l);break}}}finally{H=!1,Error.prepareStackTrace=n}return(e=e?e.displayName||e.name:\"\")?W(e):\"\"}function G(e){switch(e.tag){case 5:return W(e.type);case 16:return W(\"Lazy\");case 13:return W(\"Suspense\");case 19:return W(\"SuspenseList\");case 0:case 2:case 15:return e=$(e.type,!1);case 11:return e=$(e.type.render,!1);case 22:return e=$(e.type._render,!1);case 1:return e=$(e.type,!0);default:return\"\"}}function q(e){if(null==e)return null;if(\"function\"===typeof e)return e.displayName||e.name||null;if(\"string\"===typeof e)return e;switch(e){case _:return\"Fragment\";case x:return\"Portal\";case E:return\"Profiler\";case j:return\"StrictMode\";case P:return\"Suspense\";case N:return\"SuspenseList\"}if(\"object\"===typeof e)switch(e.$$typeof){case k:return(e.displayName||\"Context\")+\".Consumer\";case C:return(e._context.displayName||\"Context\")+\".Provider\";case T:var t=e.render;return t=t.displayName||t.name||\"\",e.displayName||(\"\"!==t?\"ForwardRef(\"+t+\")\":\"ForwardRef\");case I:return q(e.type);case A:return q(e._render);case R:t=e._payload,e=e._init;try{return q(e(t))}catch(n){}}return null}function Y(e){switch(typeof e){case\"boolean\":case\"number\":case\"object\":case\"string\":case\"undefined\":return e;default:return\"\"}}function K(e){var t=e.type;return(e=e.nodeName)&&\"input\"===e.toLowerCase()&&(\"checkbox\"===t||\"radio\"===t)}function Q(e){e._valueTracker||(e._valueTracker=function(e){var t=K(e)?\"checked\":\"value\",n=Object.getOwnPropertyDescriptor(e.constructor.prototype,t),r=\"\"+e[t];if(!e.hasOwnProperty(t)&&\"undefined\"!==typeof n&&\"function\"===typeof n.get&&\"function\"===typeof n.set){var o=n.get,i=n.set;return Object.defineProperty(e,t,{configurable:!0,get:function(){return o.call(this)},set:function(e){r=\"\"+e,i.call(this,e)}}),Object.defineProperty(e,t,{enumerable:n.enumerable}),{getValue:function(){return r},setValue:function(e){r=\"\"+e},stopTracking:function(){e._valueTracker=null,delete e[t]}}}}(e))}function X(e){if(!e)return!1;var t=e._valueTracker;if(!t)return!0;var n=t.getValue(),r=\"\";return e&&(r=K(e)?e.checked?\"true\":\"false\":e.value),(e=r)!==n&&(t.setValue(e),!0)}function Z(e){if(\"undefined\"===typeof(e=e||(\"undefined\"!==typeof document?document:void 0)))return null;try{return e.activeElement||e.body}catch(t){return e.body}}function J(e,t){var n=t.checked;return o({},t,{defaultChecked:void 0,defaultValue:void 0,value:void 0,checked:null!=n?n:e._wrapperState.initialChecked})}function ee(e,t){var n=null==t.defaultValue?\"\":t.defaultValue,r=null!=t.checked?t.checked:t.defaultChecked;n=Y(null!=t.value?t.value:n),e._wrapperState={initialChecked:r,initialValue:n,controlled:\"checkbox\"===t.type||\"radio\"===t.type?null!=t.checked:null!=t.value}}function te(e,t){null!=(t=t.checked)&&w(e,\"checked\",t,!1)}function ne(e,t){te(e,t);var n=Y(t.value),r=t.type;if(null!=n)\"number\"===r?(0===n&&\"\"===e.value||e.value!=n)&&(e.value=\"\"+n):e.value!==\"\"+n&&(e.value=\"\"+n);else if(\"submit\"===r||\"reset\"===r)return void e.removeAttribute(\"value\");t.hasOwnProperty(\"value\")?oe(e,t.type,n):t.hasOwnProperty(\"defaultValue\")&&oe(e,t.type,Y(t.defaultValue)),null==t.checked&&null!=t.defaultChecked&&(e.defaultChecked=!!t.defaultChecked)}function re(e,t,n){if(t.hasOwnProperty(\"value\")||t.hasOwnProperty(\"defaultValue\")){var r=t.type;if(!(\"submit\"!==r&&\"reset\"!==r||void 0!==t.value&&null!==t.value))return;t=\"\"+e._wrapperState.initialValue,n||t===e.value||(e.value=t),e.defaultValue=t}\"\"!==(n=e.name)&&(e.name=\"\"),e.defaultChecked=!!e._wrapperState.initialChecked,\"\"!==n&&(e.name=n)}function oe(e,t,n){\"number\"===t&&Z(e.ownerDocument)===e||(null==n?e.defaultValue=\"\"+e._wrapperState.initialValue:e.defaultValue!==\"\"+n&&(e.defaultValue=\"\"+n))}function ie(e,t){return e=o({children:void 0},t),(t=function(e){var t=\"\";return r.Children.forEach(e,(function(e){null!=e&&(t+=e)})),t}(t.children))&&(e.children=t),e}function ae(e,t,n,r){if(e=e.options,t){t={};for(var o=0;o<n.length;o++)t[\"$\"+n[o]]=!0;for(n=0;n<e.length;n++)o=t.hasOwnProperty(\"$\"+e[n].value),e[n].selected!==o&&(e[n].selected=o),o&&r&&(e[n].defaultSelected=!0)}else{for(n=\"\"+Y(n),t=null,o=0;o<e.length;o++){if(e[o].value===n)return e[o].selected=!0,void(r&&(e[o].defaultSelected=!0));null!==t||e[o].disabled||(t=e[o])}null!==t&&(t.selected=!0)}}function le(e,t){if(null!=t.dangerouslySetInnerHTML)throw Error(a(91));return o({},t,{value:void 0,defaultValue:void 0,children:\"\"+e._wrapperState.initialValue})}function se(e,t){var n=t.value;if(null==n){if(n=t.children,t=t.defaultValue,null!=n){if(null!=t)throw Error(a(92));if(Array.isArray(n)){if(!(1>=n.length))throw Error(a(93));n=n[0]}t=n}null==t&&(t=\"\"),n=t}e._wrapperState={initialValue:Y(n)}}function ue(e,t){var n=Y(t.value),r=Y(t.defaultValue);null!=n&&((n=\"\"+n)!==e.value&&(e.value=n),null==t.defaultValue&&e.defaultValue!==n&&(e.defaultValue=n)),null!=r&&(e.defaultValue=\"\"+r)}function ce(e){var t=e.textContent;t===e._wrapperState.initialValue&&\"\"!==t&&null!==t&&(e.value=t)}var de=\"http://www.w3.org/1999/xhtml\",fe=\"http://www.w3.org/2000/svg\";function pe(e){switch(e){case\"svg\":return\"http://www.w3.org/2000/svg\";case\"math\":return\"http://www.w3.org/1998/Math/MathML\";default:return\"http://www.w3.org/1999/xhtml\"}}function he(e,t){return null==e||\"http://www.w3.org/1999/xhtml\"===e?pe(t):\"http://www.w3.org/2000/svg\"===e&&\"foreignObject\"===t?\"http://www.w3.org/1999/xhtml\":e}var me,ge,ve=(ge=function(e,t){if(e.namespaceURI!==fe||\"innerHTML\"in e)e.innerHTML=t;else{for((me=me||document.createElement(\"div\")).innerHTML=\"<svg>\"+t.valueOf().toString()+\"</svg>\",t=me.firstChild;e.firstChild;)e.removeChild(e.firstChild);for(;t.firstChild;)e.appendChild(t.firstChild)}},\"undefined\"!==typeof MSApp&&MSApp.execUnsafeLocalFunction?function(e,t,n,r){MSApp.execUnsafeLocalFunction((function(){return ge(e,t)}))}:ge);function be(e,t){if(t){var n=e.firstChild;if(n&&n===e.lastChild&&3===n.nodeType)return void(n.nodeValue=t)}e.textContent=t}var ye={animationIterationCount:!0,borderImageOutset:!0,borderImageSlice:!0,borderImageWidth:!0,boxFlex:!0,boxFlexGroup:!0,boxOrdinalGroup:!0,columnCount:!0,columns:!0,flex:!0,flexGrow:!0,flexPositive:!0,flexShrink:!0,flexNegative:!0,flexOrder:!0,gridArea:!0,gridRow:!0,gridRowEnd:!0,gridRowSpan:!0,gridRowStart:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnSpan:!0,gridColumnStart:!0,fontWeight:!0,lineClamp:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,tabSize:!0,widows:!0,zIndex:!0,zoom:!0,fillOpacity:!0,floodOpacity:!0,stopOpacity:!0,strokeDasharray:!0,strokeDashoffset:!0,strokeMiterlimit:!0,strokeOpacity:!0,strokeWidth:!0},we=[\"Webkit\",\"ms\",\"Moz\",\"O\"];function Se(e,t,n){return null==t||\"boolean\"===typeof t||\"\"===t?\"\":n||\"number\"!==typeof t||0===t||ye.hasOwnProperty(e)&&ye[e]?(\"\"+t).trim():t+\"px\"}function Oe(e,t){for(var n in e=e.style,t)if(t.hasOwnProperty(n)){var r=0===n.indexOf(\"--\"),o=Se(n,t[n],r);\"float\"===n&&(n=\"cssFloat\"),r?e.setProperty(n,o):e[n]=o}}Object.keys(ye).forEach((function(e){we.forEach((function(t){t=t+e.charAt(0).toUpperCase()+e.substring(1),ye[t]=ye[e]}))}));var xe=o({menuitem:!0},{area:!0,base:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0});function _e(e,t){if(t){if(xe[e]&&(null!=t.children||null!=t.dangerouslySetInnerHTML))throw Error(a(137,e));if(null!=t.dangerouslySetInnerHTML){if(null!=t.children)throw Error(a(60));if(\"object\"!==typeof t.dangerouslySetInnerHTML||!(\"__html\"in t.dangerouslySetInnerHTML))throw Error(a(61))}if(null!=t.style&&\"object\"!==typeof t.style)throw Error(a(62))}}function je(e,t){if(-1===e.indexOf(\"-\"))return\"string\"===typeof t.is;switch(e){case\"annotation-xml\":case\"color-profile\":case\"font-face\":case\"font-face-src\":case\"font-face-uri\":case\"font-face-format\":case\"font-face-name\":case\"missing-glyph\":return!1;default:return!0}}function Ee(e){return(e=e.target||e.srcElement||window).correspondingUseElement&&(e=e.correspondingUseElement),3===e.nodeType?e.parentNode:e}var Ce=null,ke=null,Te=null;function Pe(e){if(e=eo(e)){if(\"function\"!==typeof Ce)throw Error(a(280));var t=e.stateNode;t&&(t=no(t),Ce(e.stateNode,e.type,t))}}function Ne(e){ke?Te?Te.push(e):Te=[e]:ke=e}function Ie(){if(ke){var e=ke,t=Te;if(Te=ke=null,Pe(e),t)for(e=0;e<t.length;e++)Pe(t[e])}}function Re(e,t){return e(t)}function Ae(e,t,n,r,o){return e(t,n,r,o)}function De(){}var Le=Re,Me=!1,ze=!1;function Ue(){null===ke&&null===Te||(De(),Ie())}function Fe(e,t){var n=e.stateNode;if(null===n)return null;var r=no(n);if(null===r)return null;n=r[t];e:switch(t){case\"onClick\":case\"onClickCapture\":case\"onDoubleClick\":case\"onDoubleClickCapture\":case\"onMouseDown\":case\"onMouseDownCapture\":case\"onMouseMove\":case\"onMouseMoveCapture\":case\"onMouseUp\":case\"onMouseUpCapture\":case\"onMouseEnter\":(r=!r.disabled)||(r=!(\"button\"===(e=e.type)||\"input\"===e||\"select\"===e||\"textarea\"===e)),e=!r;break e;default:e=!1}if(e)return null;if(n&&\"function\"!==typeof n)throw Error(a(231,t,typeof n));return n}var Be=!1;if(d)try{var Ve={};Object.defineProperty(Ve,\"passive\",{get:function(){Be=!0}}),window.addEventListener(\"test\",Ve,Ve),window.removeEventListener(\"test\",Ve,Ve)}catch(ge){Be=!1}function We(e,t,n,r,o,i,a,l,s){var u=Array.prototype.slice.call(arguments,3);try{t.apply(n,u)}catch(c){this.onError(c)}}var He=!1,$e=null,Ge=!1,qe=null,Ye={onError:function(e){He=!0,$e=e}};function Ke(e,t,n,r,o,i,a,l,s){He=!1,$e=null,We.apply(Ye,arguments)}function Qe(e){var t=e,n=e;if(e.alternate)for(;t.return;)t=t.return;else{e=t;do{0!==(1026&(t=e).flags)&&(n=t.return),e=t.return}while(e)}return 3===t.tag?n:null}function Xe(e){if(13===e.tag){var t=e.memoizedState;if(null===t&&(null!==(e=e.alternate)&&(t=e.memoizedState)),null!==t)return t.dehydrated}return null}function Ze(e){if(Qe(e)!==e)throw Error(a(188))}function Je(e){if(!(e=function(e){var t=e.alternate;if(!t){if(null===(t=Qe(e)))throw Error(a(188));return t!==e?null:e}for(var n=e,r=t;;){var o=n.return;if(null===o)break;var i=o.alternate;if(null===i){if(null!==(r=o.return)){n=r;continue}break}if(o.child===i.child){for(i=o.child;i;){if(i===n)return Ze(o),e;if(i===r)return Ze(o),t;i=i.sibling}throw Error(a(188))}if(n.return!==r.return)n=o,r=i;else{for(var l=!1,s=o.child;s;){if(s===n){l=!0,n=o,r=i;break}if(s===r){l=!0,r=o,n=i;break}s=s.sibling}if(!l){for(s=i.child;s;){if(s===n){l=!0,n=i,r=o;break}if(s===r){l=!0,r=i,n=o;break}s=s.sibling}if(!l)throw Error(a(189))}}if(n.alternate!==r)throw Error(a(190))}if(3!==n.tag)throw Error(a(188));return n.stateNode.current===n?e:t}(e)))return null;for(var t=e;;){if(5===t.tag||6===t.tag)return t;if(t.child)t.child.return=t,t=t.child;else{if(t===e)break;for(;!t.sibling;){if(!t.return||t.return===e)return null;t=t.return}t.sibling.return=t.return,t=t.sibling}}return null}function et(e,t){for(var n=e.alternate;null!==t;){if(t===e||t===n)return!0;t=t.return}return!1}var tt,nt,rt,ot,it=!1,at=[],lt=null,st=null,ut=null,ct=new Map,dt=new Map,ft=[],pt=\"mousedown mouseup touchcancel touchend touchstart auxclick dblclick pointercancel pointerdown pointerup dragend dragstart drop compositionend compositionstart keydown keypress keyup input textInput copy cut paste click change contextmenu reset submit\".split(\" \");function ht(e,t,n,r,o){return{blockedOn:e,domEventName:t,eventSystemFlags:16|n,nativeEvent:o,targetContainers:[r]}}function mt(e,t){switch(e){case\"focusin\":case\"focusout\":lt=null;break;case\"dragenter\":case\"dragleave\":st=null;break;case\"mouseover\":case\"mouseout\":ut=null;break;case\"pointerover\":case\"pointerout\":ct.delete(t.pointerId);break;case\"gotpointercapture\":case\"lostpointercapture\":dt.delete(t.pointerId)}}function gt(e,t,n,r,o,i){return null===e||e.nativeEvent!==i?(e=ht(t,n,r,o,i),null!==t&&(null!==(t=eo(t))&&nt(t)),e):(e.eventSystemFlags|=r,t=e.targetContainers,null!==o&&-1===t.indexOf(o)&&t.push(o),e)}function vt(e){var t=Jr(e.target);if(null!==t){var n=Qe(t);if(null!==n)if(13===(t=n.tag)){if(null!==(t=Xe(n)))return e.blockedOn=t,void ot(e.lanePriority,(function(){i.unstable_runWithPriority(e.priority,(function(){rt(n)}))}))}else if(3===t&&n.stateNode.hydrate)return void(e.blockedOn=3===n.tag?n.stateNode.containerInfo:null)}e.blockedOn=null}function bt(e){if(null!==e.blockedOn)return!1;for(var t=e.targetContainers;0<t.length;){var n=Jt(e.domEventName,e.eventSystemFlags,t[0],e.nativeEvent);if(null!==n)return null!==(t=eo(n))&&nt(t),e.blockedOn=n,!1;t.shift()}return!0}function yt(e,t,n){bt(e)&&n.delete(t)}function wt(){for(it=!1;0<at.length;){var e=at[0];if(null!==e.blockedOn){null!==(e=eo(e.blockedOn))&&tt(e);break}for(var t=e.targetContainers;0<t.length;){var n=Jt(e.domEventName,e.eventSystemFlags,t[0],e.nativeEvent);if(null!==n){e.blockedOn=n;break}t.shift()}null===e.blockedOn&&at.shift()}null!==lt&&bt(lt)&&(lt=null),null!==st&&bt(st)&&(st=null),null!==ut&&bt(ut)&&(ut=null),ct.forEach(yt),dt.forEach(yt)}function St(e,t){e.blockedOn===t&&(e.blockedOn=null,it||(it=!0,i.unstable_scheduleCallback(i.unstable_NormalPriority,wt)))}function Ot(e){function t(t){return St(t,e)}if(0<at.length){St(at[0],e);for(var n=1;n<at.length;n++){var r=at[n];r.blockedOn===e&&(r.blockedOn=null)}}for(null!==lt&&St(lt,e),null!==st&&St(st,e),null!==ut&&St(ut,e),ct.forEach(t),dt.forEach(t),n=0;n<ft.length;n++)(r=ft[n]).blockedOn===e&&(r.blockedOn=null);for(;0<ft.length&&null===(n=ft[0]).blockedOn;)vt(n),null===n.blockedOn&&ft.shift()}function xt(e,t){var n={};return n[e.toLowerCase()]=t.toLowerCase(),n[\"Webkit\"+e]=\"webkit\"+t,n[\"Moz\"+e]=\"moz\"+t,n}var _t={animationend:xt(\"Animation\",\"AnimationEnd\"),animationiteration:xt(\"Animation\",\"AnimationIteration\"),animationstart:xt(\"Animation\",\"AnimationStart\"),transitionend:xt(\"Transition\",\"TransitionEnd\")},jt={},Et={};function Ct(e){if(jt[e])return jt[e];if(!_t[e])return e;var t,n=_t[e];for(t in n)if(n.hasOwnProperty(t)&&t in Et)return jt[e]=n[t];return e}d&&(Et=document.createElement(\"div\").style,\"AnimationEvent\"in window||(delete _t.animationend.animation,delete _t.animationiteration.animation,delete _t.animationstart.animation),\"TransitionEvent\"in window||delete _t.transitionend.transition);var kt=Ct(\"animationend\"),Tt=Ct(\"animationiteration\"),Pt=Ct(\"animationstart\"),Nt=Ct(\"transitionend\"),It=new Map,Rt=new Map,At=[\"abort\",\"abort\",kt,\"animationEnd\",Tt,\"animationIteration\",Pt,\"animationStart\",\"canplay\",\"canPlay\",\"canplaythrough\",\"canPlayThrough\",\"durationchange\",\"durationChange\",\"emptied\",\"emptied\",\"encrypted\",\"encrypted\",\"ended\",\"ended\",\"error\",\"error\",\"gotpointercapture\",\"gotPointerCapture\",\"load\",\"load\",\"loadeddata\",\"loadedData\",\"loadedmetadata\",\"loadedMetadata\",\"loadstart\",\"loadStart\",\"lostpointercapture\",\"lostPointerCapture\",\"playing\",\"playing\",\"progress\",\"progress\",\"seeking\",\"seeking\",\"stalled\",\"stalled\",\"suspend\",\"suspend\",\"timeupdate\",\"timeUpdate\",Nt,\"transitionEnd\",\"waiting\",\"waiting\"];function Dt(e,t){for(var n=0;n<e.length;n+=2){var r=e[n],o=e[n+1];o=\"on\"+(o[0].toUpperCase()+o.slice(1)),Rt.set(r,t),It.set(r,o),u(o,[r])}}(0,i.unstable_now)();var Lt=8;function Mt(e){if(0!==(1&e))return Lt=15,1;if(0!==(2&e))return Lt=14,2;if(0!==(4&e))return Lt=13,4;var t=24&e;return 0!==t?(Lt=12,t):0!==(32&e)?(Lt=11,32):0!==(t=192&e)?(Lt=10,t):0!==(256&e)?(Lt=9,256):0!==(t=3584&e)?(Lt=8,t):0!==(4096&e)?(Lt=7,4096):0!==(t=4186112&e)?(Lt=6,t):0!==(t=62914560&e)?(Lt=5,t):67108864&e?(Lt=4,67108864):0!==(134217728&e)?(Lt=3,134217728):0!==(t=805306368&e)?(Lt=2,t):0!==(1073741824&e)?(Lt=1,1073741824):(Lt=8,e)}function zt(e,t){var n=e.pendingLanes;if(0===n)return Lt=0;var r=0,o=0,i=e.expiredLanes,a=e.suspendedLanes,l=e.pingedLanes;if(0!==i)r=i,o=Lt=15;else if(0!==(i=134217727&n)){var s=i&~a;0!==s?(r=Mt(s),o=Lt):0!==(l&=i)&&(r=Mt(l),o=Lt)}else 0!==(i=n&~a)?(r=Mt(i),o=Lt):0!==l&&(r=Mt(l),o=Lt);if(0===r)return 0;if(r=n&((0>(r=31-Ht(r))?0:1<<r)<<1)-1,0!==t&&t!==r&&0===(t&a)){if(Mt(t),o<=Lt)return t;Lt=o}if(0!==(t=e.entangledLanes))for(e=e.entanglements,t&=r;0<t;)o=1<<(n=31-Ht(t)),r|=e[n],t&=~o;return r}function Ut(e){return 0!==(e=-1073741825&e.pendingLanes)?e:1073741824&e?1073741824:0}function Ft(e,t){switch(e){case 15:return 1;case 14:return 2;case 12:return 0===(e=Bt(24&~t))?Ft(10,t):e;case 10:return 0===(e=Bt(192&~t))?Ft(8,t):e;case 8:return 0===(e=Bt(3584&~t))&&(0===(e=Bt(4186112&~t))&&(e=512)),e;case 2:return 0===(t=Bt(805306368&~t))&&(t=268435456),t}throw Error(a(358,e))}function Bt(e){return e&-e}function Vt(e){for(var t=[],n=0;31>n;n++)t.push(e);return t}function Wt(e,t,n){e.pendingLanes|=t;var r=t-1;e.suspendedLanes&=r,e.pingedLanes&=r,(e=e.eventTimes)[t=31-Ht(t)]=n}var Ht=Math.clz32?Math.clz32:function(e){return 0===e?32:31-($t(e)/Gt|0)|0},$t=Math.log,Gt=Math.LN2;var qt=i.unstable_UserBlockingPriority,Yt=i.unstable_runWithPriority,Kt=!0;function Qt(e,t,n,r){Me||De();var o=Zt,i=Me;Me=!0;try{Ae(o,e,t,n,r)}finally{(Me=i)||Ue()}}function Xt(e,t,n,r){Yt(qt,Zt.bind(null,e,t,n,r))}function Zt(e,t,n,r){var o;if(Kt)if((o=0===(4&t))&&0<at.length&&-1<pt.indexOf(e))e=ht(null,e,t,n,r),at.push(e);else{var i=Jt(e,t,n,r);if(null===i)o&&mt(e,r);else{if(o){if(-1<pt.indexOf(e))return e=ht(i,e,t,n,r),void at.push(e);if(function(e,t,n,r,o){switch(t){case\"focusin\":return lt=gt(lt,e,t,n,r,o),!0;case\"dragenter\":return st=gt(st,e,t,n,r,o),!0;case\"mouseover\":return ut=gt(ut,e,t,n,r,o),!0;case\"pointerover\":var i=o.pointerId;return ct.set(i,gt(ct.get(i)||null,e,t,n,r,o)),!0;case\"gotpointercapture\":return i=o.pointerId,dt.set(i,gt(dt.get(i)||null,e,t,n,r,o)),!0}return!1}(i,e,t,n,r))return;mt(e,r)}Ir(e,t,r,null,n)}}}function Jt(e,t,n,r){var o=Ee(r);if(null!==(o=Jr(o))){var i=Qe(o);if(null===i)o=null;else{var a=i.tag;if(13===a){if(null!==(o=Xe(i)))return o;o=null}else if(3===a){if(i.stateNode.hydrate)return 3===i.tag?i.stateNode.containerInfo:null;o=null}else i!==o&&(o=null)}}return Ir(e,t,r,o,n),null}var en=null,tn=null,nn=null;function rn(){if(nn)return nn;var e,t,n=tn,r=n.length,o=\"value\"in en?en.value:en.textContent,i=o.length;for(e=0;e<r&&n[e]===o[e];e++);var a=r-e;for(t=1;t<=a&&n[r-t]===o[i-t];t++);return nn=o.slice(e,1<t?1-t:void 0)}function on(e){var t=e.keyCode;return\"charCode\"in e?0===(e=e.charCode)&&13===t&&(e=13):e=t,10===e&&(e=13),32<=e||13===e?e:0}function an(){return!0}function ln(){return!1}function sn(e){function t(t,n,r,o,i){for(var a in this._reactName=t,this._targetInst=r,this.type=n,this.nativeEvent=o,this.target=i,this.currentTarget=null,e)e.hasOwnProperty(a)&&(t=e[a],this[a]=t?t(o):o[a]);return this.isDefaultPrevented=(null!=o.defaultPrevented?o.defaultPrevented:!1===o.returnValue)?an:ln,this.isPropagationStopped=ln,this}return o(t.prototype,{preventDefault:function(){this.defaultPrevented=!0;var e=this.nativeEvent;e&&(e.preventDefault?e.preventDefault():\"unknown\"!==typeof e.returnValue&&(e.returnValue=!1),this.isDefaultPrevented=an)},stopPropagation:function(){var e=this.nativeEvent;e&&(e.stopPropagation?e.stopPropagation():\"unknown\"!==typeof e.cancelBubble&&(e.cancelBubble=!0),this.isPropagationStopped=an)},persist:function(){},isPersistent:an}),t}var un,cn,dn,fn={eventPhase:0,bubbles:0,cancelable:0,timeStamp:function(e){return e.timeStamp||Date.now()},defaultPrevented:0,isTrusted:0},pn=sn(fn),hn=o({},fn,{view:0,detail:0}),mn=sn(hn),gn=o({},hn,{screenX:0,screenY:0,clientX:0,clientY:0,pageX:0,pageY:0,ctrlKey:0,shiftKey:0,altKey:0,metaKey:0,getModifierState:Cn,button:0,buttons:0,relatedTarget:function(e){return void 0===e.relatedTarget?e.fromElement===e.srcElement?e.toElement:e.fromElement:e.relatedTarget},movementX:function(e){return\"movementX\"in e?e.movementX:(e!==dn&&(dn&&\"mousemove\"===e.type?(un=e.screenX-dn.screenX,cn=e.screenY-dn.screenY):cn=un=0,dn=e),un)},movementY:function(e){return\"movementY\"in e?e.movementY:cn}}),vn=sn(gn),bn=sn(o({},gn,{dataTransfer:0})),yn=sn(o({},hn,{relatedTarget:0})),wn=sn(o({},fn,{animationName:0,elapsedTime:0,pseudoElement:0})),Sn=sn(o({},fn,{clipboardData:function(e){return\"clipboardData\"in e?e.clipboardData:window.clipboardData}})),On=sn(o({},fn,{data:0})),xn={Esc:\"Escape\",Spacebar:\" \",Left:\"ArrowLeft\",Up:\"ArrowUp\",Right:\"ArrowRight\",Down:\"ArrowDown\",Del:\"Delete\",Win:\"OS\",Menu:\"ContextMenu\",Apps:\"ContextMenu\",Scroll:\"ScrollLock\",MozPrintableKey:\"Unidentified\"},_n={8:\"Backspace\",9:\"Tab\",12:\"Clear\",13:\"Enter\",16:\"Shift\",17:\"Control\",18:\"Alt\",19:\"Pause\",20:\"CapsLock\",27:\"Escape\",32:\" \",33:\"PageUp\",34:\"PageDown\",35:\"End\",36:\"Home\",37:\"ArrowLeft\",38:\"ArrowUp\",39:\"ArrowRight\",40:\"ArrowDown\",45:\"Insert\",46:\"Delete\",112:\"F1\",113:\"F2\",114:\"F3\",115:\"F4\",116:\"F5\",117:\"F6\",118:\"F7\",119:\"F8\",120:\"F9\",121:\"F10\",122:\"F11\",123:\"F12\",144:\"NumLock\",145:\"ScrollLock\",224:\"Meta\"},jn={Alt:\"altKey\",Control:\"ctrlKey\",Meta:\"metaKey\",Shift:\"shiftKey\"};function En(e){var t=this.nativeEvent;return t.getModifierState?t.getModifierState(e):!!(e=jn[e])&&!!t[e]}function Cn(){return En}var kn=sn(o({},hn,{key:function(e){if(e.key){var t=xn[e.key]||e.key;if(\"Unidentified\"!==t)return t}return\"keypress\"===e.type?13===(e=on(e))?\"Enter\":String.fromCharCode(e):\"keydown\"===e.type||\"keyup\"===e.type?_n[e.keyCode]||\"Unidentified\":\"\"},code:0,location:0,ctrlKey:0,shiftKey:0,altKey:0,metaKey:0,repeat:0,locale:0,getModifierState:Cn,charCode:function(e){return\"keypress\"===e.type?on(e):0},keyCode:function(e){return\"keydown\"===e.type||\"keyup\"===e.type?e.keyCode:0},which:function(e){return\"keypress\"===e.type?on(e):\"keydown\"===e.type||\"keyup\"===e.type?e.keyCode:0}})),Tn=sn(o({},gn,{pointerId:0,width:0,height:0,pressure:0,tangentialPressure:0,tiltX:0,tiltY:0,twist:0,pointerType:0,isPrimary:0})),Pn=sn(o({},hn,{touches:0,targetTouches:0,changedTouches:0,altKey:0,metaKey:0,ctrlKey:0,shiftKey:0,getModifierState:Cn})),Nn=sn(o({},fn,{propertyName:0,elapsedTime:0,pseudoElement:0})),In=sn(o({},gn,{deltaX:function(e){return\"deltaX\"in e?e.deltaX:\"wheelDeltaX\"in e?-e.wheelDeltaX:0},deltaY:function(e){return\"deltaY\"in e?e.deltaY:\"wheelDeltaY\"in e?-e.wheelDeltaY:\"wheelDelta\"in e?-e.wheelDelta:0},deltaZ:0,deltaMode:0})),Rn=[9,13,27,32],An=d&&\"CompositionEvent\"in window,Dn=null;d&&\"documentMode\"in document&&(Dn=document.documentMode);var Ln=d&&\"TextEvent\"in window&&!Dn,Mn=d&&(!An||Dn&&8<Dn&&11>=Dn),zn=String.fromCharCode(32),Un=!1;function Fn(e,t){switch(e){case\"keyup\":return-1!==Rn.indexOf(t.keyCode);case\"keydown\":return 229!==t.keyCode;case\"keypress\":case\"mousedown\":case\"focusout\":return!0;default:return!1}}function Bn(e){return\"object\"===typeof(e=e.detail)&&\"data\"in e?e.data:null}var Vn=!1;var Wn={color:!0,date:!0,datetime:!0,\"datetime-local\":!0,email:!0,month:!0,number:!0,password:!0,range:!0,search:!0,tel:!0,text:!0,time:!0,url:!0,week:!0};function Hn(e){var t=e&&e.nodeName&&e.nodeName.toLowerCase();return\"input\"===t?!!Wn[e.type]:\"textarea\"===t}function $n(e,t,n,r){Ne(r),0<(t=Ar(t,\"onChange\")).length&&(n=new pn(\"onChange\",\"change\",null,n,r),e.push({event:n,listeners:t}))}var Gn=null,qn=null;function Yn(e){Er(e,0)}function Kn(e){if(X(to(e)))return e}function Qn(e,t){if(\"change\"===e)return t}var Xn=!1;if(d){var Zn;if(d){var Jn=\"oninput\"in document;if(!Jn){var er=document.createElement(\"div\");er.setAttribute(\"oninput\",\"return;\"),Jn=\"function\"===typeof er.oninput}Zn=Jn}else Zn=!1;Xn=Zn&&(!document.documentMode||9<document.documentMode)}function tr(){Gn&&(Gn.detachEvent(\"onpropertychange\",nr),qn=Gn=null)}function nr(e){if(\"value\"===e.propertyName&&Kn(qn)){var t=[];if($n(t,qn,e,Ee(e)),e=Yn,Me)e(t);else{Me=!0;try{Re(e,t)}finally{Me=!1,Ue()}}}}function rr(e,t,n){\"focusin\"===e?(tr(),qn=n,(Gn=t).attachEvent(\"onpropertychange\",nr)):\"focusout\"===e&&tr()}function or(e){if(\"selectionchange\"===e||\"keyup\"===e||\"keydown\"===e)return Kn(qn)}function ir(e,t){if(\"click\"===e)return Kn(t)}function ar(e,t){if(\"input\"===e||\"change\"===e)return Kn(t)}var lr=\"function\"===typeof Object.is?Object.is:function(e,t){return e===t&&(0!==e||1/e===1/t)||e!==e&&t!==t},sr=Object.prototype.hasOwnProperty;function ur(e,t){if(lr(e,t))return!0;if(\"object\"!==typeof e||null===e||\"object\"!==typeof t||null===t)return!1;var n=Object.keys(e),r=Object.keys(t);if(n.length!==r.length)return!1;for(r=0;r<n.length;r++)if(!sr.call(t,n[r])||!lr(e[n[r]],t[n[r]]))return!1;return!0}function cr(e){for(;e&&e.firstChild;)e=e.firstChild;return e}function dr(e,t){var n,r=cr(e);for(e=0;r;){if(3===r.nodeType){if(n=e+r.textContent.length,e<=t&&n>=t)return{node:r,offset:t-e};e=n}e:{for(;r;){if(r.nextSibling){r=r.nextSibling;break e}r=r.parentNode}r=void 0}r=cr(r)}}function fr(e,t){return!(!e||!t)&&(e===t||(!e||3!==e.nodeType)&&(t&&3===t.nodeType?fr(e,t.parentNode):\"contains\"in e?e.contains(t):!!e.compareDocumentPosition&&!!(16&e.compareDocumentPosition(t))))}function pr(){for(var e=window,t=Z();t instanceof e.HTMLIFrameElement;){try{var n=\"string\"===typeof t.contentWindow.location.href}catch(r){n=!1}if(!n)break;t=Z((e=t.contentWindow).document)}return t}function hr(e){var t=e&&e.nodeName&&e.nodeName.toLowerCase();return t&&(\"input\"===t&&(\"text\"===e.type||\"search\"===e.type||\"tel\"===e.type||\"url\"===e.type||\"password\"===e.type)||\"textarea\"===t||\"true\"===e.contentEditable)}var mr=d&&\"documentMode\"in document&&11>=document.documentMode,gr=null,vr=null,br=null,yr=!1;function wr(e,t,n){var r=n.window===n?n.document:9===n.nodeType?n:n.ownerDocument;yr||null==gr||gr!==Z(r)||(\"selectionStart\"in(r=gr)&&hr(r)?r={start:r.selectionStart,end:r.selectionEnd}:r={anchorNode:(r=(r.ownerDocument&&r.ownerDocument.defaultView||window).getSelection()).anchorNode,anchorOffset:r.anchorOffset,focusNode:r.focusNode,focusOffset:r.focusOffset},br&&ur(br,r)||(br=r,0<(r=Ar(vr,\"onSelect\")).length&&(t=new pn(\"onSelect\",\"select\",null,t,n),e.push({event:t,listeners:r}),t.target=gr)))}Dt(\"cancel cancel click click close close contextmenu contextMenu copy copy cut cut auxclick auxClick dblclick doubleClick dragend dragEnd dragstart dragStart drop drop focusin focus focusout blur input input invalid invalid keydown keyDown keypress keyPress keyup keyUp mousedown mouseDown mouseup mouseUp paste paste pause pause play play pointercancel pointerCancel pointerdown pointerDown pointerup pointerUp ratechange rateChange reset reset seeked seeked submit submit touchcancel touchCancel touchend touchEnd touchstart touchStart volumechange volumeChange\".split(\" \"),0),Dt(\"drag drag dragenter dragEnter dragexit dragExit dragleave dragLeave dragover dragOver mousemove mouseMove mouseout mouseOut mouseover mouseOver pointermove pointerMove pointerout pointerOut pointerover pointerOver scroll scroll toggle toggle touchmove touchMove wheel wheel\".split(\" \"),1),Dt(At,2);for(var Sr=\"change selectionchange textInput compositionstart compositionend compositionupdate\".split(\" \"),Or=0;Or<Sr.length;Or++)Rt.set(Sr[Or],0);c(\"onMouseEnter\",[\"mouseout\",\"mouseover\"]),c(\"onMouseLeave\",[\"mouseout\",\"mouseover\"]),c(\"onPointerEnter\",[\"pointerout\",\"pointerover\"]),c(\"onPointerLeave\",[\"pointerout\",\"pointerover\"]),u(\"onChange\",\"change click focusin focusout input keydown keyup selectionchange\".split(\" \")),u(\"onSelect\",\"focusout contextmenu dragend focusin keydown keyup mousedown mouseup selectionchange\".split(\" \")),u(\"onBeforeInput\",[\"compositionend\",\"keypress\",\"textInput\",\"paste\"]),u(\"onCompositionEnd\",\"compositionend focusout keydown keypress keyup mousedown\".split(\" \")),u(\"onCompositionStart\",\"compositionstart focusout keydown keypress keyup mousedown\".split(\" \")),u(\"onCompositionUpdate\",\"compositionupdate focusout keydown keypress keyup mousedown\".split(\" \"));var xr=\"abort canplay canplaythrough durationchange emptied encrypted ended error loadeddata loadedmetadata loadstart pause play playing progress ratechange seeked seeking stalled suspend timeupdate volumechange waiting\".split(\" \"),_r=new Set(\"cancel close invalid load scroll toggle\".split(\" \").concat(xr));function jr(e,t,n){var r=e.type||\"unknown-event\";e.currentTarget=n,function(e,t,n,r,o,i,l,s,u){if(Ke.apply(this,arguments),He){if(!He)throw Error(a(198));var c=$e;He=!1,$e=null,Ge||(Ge=!0,qe=c)}}(r,t,void 0,e),e.currentTarget=null}function Er(e,t){t=0!==(4&t);for(var n=0;n<e.length;n++){var r=e[n],o=r.event;r=r.listeners;e:{var i=void 0;if(t)for(var a=r.length-1;0<=a;a--){var l=r[a],s=l.instance,u=l.currentTarget;if(l=l.listener,s!==i&&o.isPropagationStopped())break e;jr(o,l,u),i=s}else for(a=0;a<r.length;a++){if(s=(l=r[a]).instance,u=l.currentTarget,l=l.listener,s!==i&&o.isPropagationStopped())break e;jr(o,l,u),i=s}}}if(Ge)throw e=qe,Ge=!1,qe=null,e}function Cr(e,t){var n=ro(t),r=e+\"__bubble\";n.has(r)||(Nr(t,e,2,!1),n.add(r))}var kr=\"_reactListening\"+Math.random().toString(36).slice(2);function Tr(e){e[kr]||(e[kr]=!0,l.forEach((function(t){_r.has(t)||Pr(t,!1,e,null),Pr(t,!0,e,null)})))}function Pr(e,t,n,r){var o=4<arguments.length&&void 0!==arguments[4]?arguments[4]:0,i=n;if(\"selectionchange\"===e&&9!==n.nodeType&&(i=n.ownerDocument),null!==r&&!t&&_r.has(e)){if(\"scroll\"!==e)return;o|=2,i=r}var a=ro(i),l=e+\"__\"+(t?\"capture\":\"bubble\");a.has(l)||(t&&(o|=4),Nr(i,e,o,t),a.add(l))}function Nr(e,t,n,r){var o=Rt.get(t);switch(void 0===o?2:o){case 0:o=Qt;break;case 1:o=Xt;break;default:o=Zt}n=o.bind(null,t,n,e),o=void 0,!Be||\"touchstart\"!==t&&\"touchmove\"!==t&&\"wheel\"!==t||(o=!0),r?void 0!==o?e.addEventListener(t,n,{capture:!0,passive:o}):e.addEventListener(t,n,!0):void 0!==o?e.addEventListener(t,n,{passive:o}):e.addEventListener(t,n,!1)}function Ir(e,t,n,r,o){var i=r;if(0===(1&t)&&0===(2&t)&&null!==r)e:for(;;){if(null===r)return;var a=r.tag;if(3===a||4===a){var l=r.stateNode.containerInfo;if(l===o||8===l.nodeType&&l.parentNode===o)break;if(4===a)for(a=r.return;null!==a;){var s=a.tag;if((3===s||4===s)&&((s=a.stateNode.containerInfo)===o||8===s.nodeType&&s.parentNode===o))return;a=a.return}for(;null!==l;){if(null===(a=Jr(l)))return;if(5===(s=a.tag)||6===s){r=i=a;continue e}l=l.parentNode}}r=r.return}!function(e,t,n){if(ze)return e(t,n);ze=!0;try{Le(e,t,n)}finally{ze=!1,Ue()}}((function(){var r=i,o=Ee(n),a=[];e:{var l=It.get(e);if(void 0!==l){var s=pn,u=e;switch(e){case\"keypress\":if(0===on(n))break e;case\"keydown\":case\"keyup\":s=kn;break;case\"focusin\":u=\"focus\",s=yn;break;case\"focusout\":u=\"blur\",s=yn;break;case\"beforeblur\":case\"afterblur\":s=yn;break;case\"click\":if(2===n.button)break e;case\"auxclick\":case\"dblclick\":case\"mousedown\":case\"mousemove\":case\"mouseup\":case\"mouseout\":case\"mouseover\":case\"contextmenu\":s=vn;break;case\"drag\":case\"dragend\":case\"dragenter\":case\"dragexit\":case\"dragleave\":case\"dragover\":case\"dragstart\":case\"drop\":s=bn;break;case\"touchcancel\":case\"touchend\":case\"touchmove\":case\"touchstart\":s=Pn;break;case kt:case Tt:case Pt:s=wn;break;case Nt:s=Nn;break;case\"scroll\":s=mn;break;case\"wheel\":s=In;break;case\"copy\":case\"cut\":case\"paste\":s=Sn;break;case\"gotpointercapture\":case\"lostpointercapture\":case\"pointercancel\":case\"pointerdown\":case\"pointermove\":case\"pointerout\":case\"pointerover\":case\"pointerup\":s=Tn}var c=0!==(4&t),d=!c&&\"scroll\"===e,f=c?null!==l?l+\"Capture\":null:l;c=[];for(var p,h=r;null!==h;){var m=(p=h).stateNode;if(5===p.tag&&null!==m&&(p=m,null!==f&&(null!=(m=Fe(h,f))&&c.push(Rr(h,m,p)))),d)break;h=h.return}0<c.length&&(l=new s(l,u,null,n,o),a.push({event:l,listeners:c}))}}if(0===(7&t)){if(s=\"mouseout\"===e||\"pointerout\"===e,(!(l=\"mouseover\"===e||\"pointerover\"===e)||0!==(16&t)||!(u=n.relatedTarget||n.fromElement)||!Jr(u)&&!u[Xr])&&(s||l)&&(l=o.window===o?o:(l=o.ownerDocument)?l.defaultView||l.parentWindow:window,s?(s=r,null!==(u=(u=n.relatedTarget||n.toElement)?Jr(u):null)&&(u!==(d=Qe(u))||5!==u.tag&&6!==u.tag)&&(u=null)):(s=null,u=r),s!==u)){if(c=vn,m=\"onMouseLeave\",f=\"onMouseEnter\",h=\"mouse\",\"pointerout\"!==e&&\"pointerover\"!==e||(c=Tn,m=\"onPointerLeave\",f=\"onPointerEnter\",h=\"pointer\"),d=null==s?l:to(s),p=null==u?l:to(u),(l=new c(m,h+\"leave\",s,n,o)).target=d,l.relatedTarget=p,m=null,Jr(o)===r&&((c=new c(f,h+\"enter\",u,n,o)).target=p,c.relatedTarget=d,m=c),d=m,s&&u)e:{for(f=u,h=0,p=c=s;p;p=Dr(p))h++;for(p=0,m=f;m;m=Dr(m))p++;for(;0<h-p;)c=Dr(c),h--;for(;0<p-h;)f=Dr(f),p--;for(;h--;){if(c===f||null!==f&&c===f.alternate)break e;c=Dr(c),f=Dr(f)}c=null}else c=null;null!==s&&Lr(a,l,s,c,!1),null!==u&&null!==d&&Lr(a,d,u,c,!0)}if(\"select\"===(s=(l=r?to(r):window).nodeName&&l.nodeName.toLowerCase())||\"input\"===s&&\"file\"===l.type)var g=Qn;else if(Hn(l))if(Xn)g=ar;else{g=or;var v=rr}else(s=l.nodeName)&&\"input\"===s.toLowerCase()&&(\"checkbox\"===l.type||\"radio\"===l.type)&&(g=ir);switch(g&&(g=g(e,r))?$n(a,g,n,o):(v&&v(e,l,r),\"focusout\"===e&&(v=l._wrapperState)&&v.controlled&&\"number\"===l.type&&oe(l,\"number\",l.value)),v=r?to(r):window,e){case\"focusin\":(Hn(v)||\"true\"===v.contentEditable)&&(gr=v,vr=r,br=null);break;case\"focusout\":br=vr=gr=null;break;case\"mousedown\":yr=!0;break;case\"contextmenu\":case\"mouseup\":case\"dragend\":yr=!1,wr(a,n,o);break;case\"selectionchange\":if(mr)break;case\"keydown\":case\"keyup\":wr(a,n,o)}var b;if(An)e:{switch(e){case\"compositionstart\":var y=\"onCompositionStart\";break e;case\"compositionend\":y=\"onCompositionEnd\";break e;case\"compositionupdate\":y=\"onCompositionUpdate\";break e}y=void 0}else Vn?Fn(e,n)&&(y=\"onCompositionEnd\"):\"keydown\"===e&&229===n.keyCode&&(y=\"onCompositionStart\");y&&(Mn&&\"ko\"!==n.locale&&(Vn||\"onCompositionStart\"!==y?\"onCompositionEnd\"===y&&Vn&&(b=rn()):(tn=\"value\"in(en=o)?en.value:en.textContent,Vn=!0)),0<(v=Ar(r,y)).length&&(y=new On(y,e,null,n,o),a.push({event:y,listeners:v}),b?y.data=b:null!==(b=Bn(n))&&(y.data=b))),(b=Ln?function(e,t){switch(e){case\"compositionend\":return Bn(t);case\"keypress\":return 32!==t.which?null:(Un=!0,zn);case\"textInput\":return(e=t.data)===zn&&Un?null:e;default:return null}}(e,n):function(e,t){if(Vn)return\"compositionend\"===e||!An&&Fn(e,t)?(e=rn(),nn=tn=en=null,Vn=!1,e):null;switch(e){case\"paste\":return null;case\"keypress\":if(!(t.ctrlKey||t.altKey||t.metaKey)||t.ctrlKey&&t.altKey){if(t.char&&1<t.char.length)return t.char;if(t.which)return String.fromCharCode(t.which)}return null;case\"compositionend\":return Mn&&\"ko\"!==t.locale?null:t.data;default:return null}}(e,n))&&(0<(r=Ar(r,\"onBeforeInput\")).length&&(o=new On(\"onBeforeInput\",\"beforeinput\",null,n,o),a.push({event:o,listeners:r}),o.data=b))}Er(a,t)}))}function Rr(e,t,n){return{instance:e,listener:t,currentTarget:n}}function Ar(e,t){for(var n=t+\"Capture\",r=[];null!==e;){var o=e,i=o.stateNode;5===o.tag&&null!==i&&(o=i,null!=(i=Fe(e,n))&&r.unshift(Rr(e,i,o)),null!=(i=Fe(e,t))&&r.push(Rr(e,i,o))),e=e.return}return r}function Dr(e){if(null===e)return null;do{e=e.return}while(e&&5!==e.tag);return e||null}function Lr(e,t,n,r,o){for(var i=t._reactName,a=[];null!==n&&n!==r;){var l=n,s=l.alternate,u=l.stateNode;if(null!==s&&s===r)break;5===l.tag&&null!==u&&(l=u,o?null!=(s=Fe(n,i))&&a.unshift(Rr(n,s,l)):o||null!=(s=Fe(n,i))&&a.push(Rr(n,s,l))),n=n.return}0!==a.length&&e.push({event:t,listeners:a})}function Mr(){}var zr=null,Ur=null;function Fr(e,t){switch(e){case\"button\":case\"input\":case\"select\":case\"textarea\":return!!t.autoFocus}return!1}function Br(e,t){return\"textarea\"===e||\"option\"===e||\"noscript\"===e||\"string\"===typeof t.children||\"number\"===typeof t.children||\"object\"===typeof t.dangerouslySetInnerHTML&&null!==t.dangerouslySetInnerHTML&&null!=t.dangerouslySetInnerHTML.__html}var Vr=\"function\"===typeof setTimeout?setTimeout:void 0,Wr=\"function\"===typeof clearTimeout?clearTimeout:void 0;function Hr(e){1===e.nodeType?e.textContent=\"\":9===e.nodeType&&(null!=(e=e.body)&&(e.textContent=\"\"))}function $r(e){for(;null!=e;e=e.nextSibling){var t=e.nodeType;if(1===t||3===t)break}return e}function Gr(e){e=e.previousSibling;for(var t=0;e;){if(8===e.nodeType){var n=e.data;if(\"$\"===n||\"$!\"===n||\"$?\"===n){if(0===t)return e;t--}else\"/$\"===n&&t++}e=e.previousSibling}return null}var qr=0;var Yr=Math.random().toString(36).slice(2),Kr=\"__reactFiber$\"+Yr,Qr=\"__reactProps$\"+Yr,Xr=\"__reactContainer$\"+Yr,Zr=\"__reactEvents$\"+Yr;function Jr(e){var t=e[Kr];if(t)return t;for(var n=e.parentNode;n;){if(t=n[Xr]||n[Kr]){if(n=t.alternate,null!==t.child||null!==n&&null!==n.child)for(e=Gr(e);null!==e;){if(n=e[Kr])return n;e=Gr(e)}return t}n=(e=n).parentNode}return null}function eo(e){return!(e=e[Kr]||e[Xr])||5!==e.tag&&6!==e.tag&&13!==e.tag&&3!==e.tag?null:e}function to(e){if(5===e.tag||6===e.tag)return e.stateNode;throw Error(a(33))}function no(e){return e[Qr]||null}function ro(e){var t=e[Zr];return void 0===t&&(t=e[Zr]=new Set),t}var oo=[],io=-1;function ao(e){return{current:e}}function lo(e){0>io||(e.current=oo[io],oo[io]=null,io--)}function so(e,t){io++,oo[io]=e.current,e.current=t}var uo={},co=ao(uo),fo=ao(!1),po=uo;function ho(e,t){var n=e.type.contextTypes;if(!n)return uo;var r=e.stateNode;if(r&&r.__reactInternalMemoizedUnmaskedChildContext===t)return r.__reactInternalMemoizedMaskedChildContext;var o,i={};for(o in n)i[o]=t[o];return r&&((e=e.stateNode).__reactInternalMemoizedUnmaskedChildContext=t,e.__reactInternalMemoizedMaskedChildContext=i),i}function mo(e){return null!==(e=e.childContextTypes)&&void 0!==e}function go(){lo(fo),lo(co)}function vo(e,t,n){if(co.current!==uo)throw Error(a(168));so(co,t),so(fo,n)}function bo(e,t,n){var r=e.stateNode;if(e=t.childContextTypes,\"function\"!==typeof r.getChildContext)return n;for(var i in r=r.getChildContext())if(!(i in e))throw Error(a(108,q(t)||\"Unknown\",i));return o({},n,r)}function yo(e){return e=(e=e.stateNode)&&e.__reactInternalMemoizedMergedChildContext||uo,po=co.current,so(co,e),so(fo,fo.current),!0}function wo(e,t,n){var r=e.stateNode;if(!r)throw Error(a(169));n?(e=bo(e,t,po),r.__reactInternalMemoizedMergedChildContext=e,lo(fo),lo(co),so(co,e)):lo(fo),so(fo,n)}var So=null,Oo=null,xo=i.unstable_runWithPriority,_o=i.unstable_scheduleCallback,jo=i.unstable_cancelCallback,Eo=i.unstable_shouldYield,Co=i.unstable_requestPaint,ko=i.unstable_now,To=i.unstable_getCurrentPriorityLevel,Po=i.unstable_ImmediatePriority,No=i.unstable_UserBlockingPriority,Io=i.unstable_NormalPriority,Ro=i.unstable_LowPriority,Ao=i.unstable_IdlePriority,Do={},Lo=void 0!==Co?Co:function(){},Mo=null,zo=null,Uo=!1,Fo=ko(),Bo=1e4>Fo?ko:function(){return ko()-Fo};function Vo(){switch(To()){case Po:return 99;case No:return 98;case Io:return 97;case Ro:return 96;case Ao:return 95;default:throw Error(a(332))}}function Wo(e){switch(e){case 99:return Po;case 98:return No;case 97:return Io;case 96:return Ro;case 95:return Ao;default:throw Error(a(332))}}function Ho(e,t){return e=Wo(e),xo(e,t)}function $o(e,t,n){return e=Wo(e),_o(e,t,n)}function Go(){if(null!==zo){var e=zo;zo=null,jo(e)}qo()}function qo(){if(!Uo&&null!==Mo){Uo=!0;var e=0;try{var t=Mo;Ho(99,(function(){for(;e<t.length;e++){var n=t[e];do{n=n(!0)}while(null!==n)}})),Mo=null}catch(n){throw null!==Mo&&(Mo=Mo.slice(e+1)),_o(Po,Go),n}finally{Uo=!1}}}var Yo=S.ReactCurrentBatchConfig;function Ko(e,t){if(e&&e.defaultProps){for(var n in t=o({},t),e=e.defaultProps)void 0===t[n]&&(t[n]=e[n]);return t}return t}var Qo=ao(null),Xo=null,Zo=null,Jo=null;function ei(){Jo=Zo=Xo=null}function ti(e){var t=Qo.current;lo(Qo),e.type._context._currentValue=t}function ni(e,t){for(;null!==e;){var n=e.alternate;if((e.childLanes&t)===t){if(null===n||(n.childLanes&t)===t)break;n.childLanes|=t}else e.childLanes|=t,null!==n&&(n.childLanes|=t);e=e.return}}function ri(e,t){Xo=e,Jo=Zo=null,null!==(e=e.dependencies)&&null!==e.firstContext&&(0!==(e.lanes&t)&&(Aa=!0),e.firstContext=null)}function oi(e,t){if(Jo!==e&&!1!==t&&0!==t)if(\"number\"===typeof t&&1073741823!==t||(Jo=e,t=1073741823),t={context:e,observedBits:t,next:null},null===Zo){if(null===Xo)throw Error(a(308));Zo=t,Xo.dependencies={lanes:0,firstContext:t,responders:null}}else Zo=Zo.next=t;return e._currentValue}var ii=!1;function ai(e){e.updateQueue={baseState:e.memoizedState,firstBaseUpdate:null,lastBaseUpdate:null,shared:{pending:null},effects:null}}function li(e,t){e=e.updateQueue,t.updateQueue===e&&(t.updateQueue={baseState:e.baseState,firstBaseUpdate:e.firstBaseUpdate,lastBaseUpdate:e.lastBaseUpdate,shared:e.shared,effects:e.effects})}function si(e,t){return{eventTime:e,lane:t,tag:0,payload:null,callback:null,next:null}}function ui(e,t){if(null!==(e=e.updateQueue)){var n=(e=e.shared).pending;null===n?t.next=t:(t.next=n.next,n.next=t),e.pending=t}}function ci(e,t){var n=e.updateQueue,r=e.alternate;if(null!==r&&n===(r=r.updateQueue)){var o=null,i=null;if(null!==(n=n.firstBaseUpdate)){do{var a={eventTime:n.eventTime,lane:n.lane,tag:n.tag,payload:n.payload,callback:n.callback,next:null};null===i?o=i=a:i=i.next=a,n=n.next}while(null!==n);null===i?o=i=t:i=i.next=t}else o=i=t;return n={baseState:r.baseState,firstBaseUpdate:o,lastBaseUpdate:i,shared:r.shared,effects:r.effects},void(e.updateQueue=n)}null===(e=n.lastBaseUpdate)?n.firstBaseUpdate=t:e.next=t,n.lastBaseUpdate=t}function di(e,t,n,r){var i=e.updateQueue;ii=!1;var a=i.firstBaseUpdate,l=i.lastBaseUpdate,s=i.shared.pending;if(null!==s){i.shared.pending=null;var u=s,c=u.next;u.next=null,null===l?a=c:l.next=c,l=u;var d=e.alternate;if(null!==d){var f=(d=d.updateQueue).lastBaseUpdate;f!==l&&(null===f?d.firstBaseUpdate=c:f.next=c,d.lastBaseUpdate=u)}}if(null!==a){for(f=i.baseState,l=0,d=c=u=null;;){s=a.lane;var p=a.eventTime;if((r&s)===s){null!==d&&(d=d.next={eventTime:p,lane:0,tag:a.tag,payload:a.payload,callback:a.callback,next:null});e:{var h=e,m=a;switch(s=t,p=n,m.tag){case 1:if(\"function\"===typeof(h=m.payload)){f=h.call(p,f,s);break e}f=h;break e;case 3:h.flags=-4097&h.flags|64;case 0:if(null===(s=\"function\"===typeof(h=m.payload)?h.call(p,f,s):h)||void 0===s)break e;f=o({},f,s);break e;case 2:ii=!0}}null!==a.callback&&(e.flags|=32,null===(s=i.effects)?i.effects=[a]:s.push(a))}else p={eventTime:p,lane:s,tag:a.tag,payload:a.payload,callback:a.callback,next:null},null===d?(c=d=p,u=f):d=d.next=p,l|=s;if(null===(a=a.next)){if(null===(s=i.shared.pending))break;a=s.next,s.next=null,i.lastBaseUpdate=s,i.shared.pending=null}}null===d&&(u=f),i.baseState=u,i.firstBaseUpdate=c,i.lastBaseUpdate=d,zl|=l,e.lanes=l,e.memoizedState=f}}function fi(e,t,n){if(e=t.effects,t.effects=null,null!==e)for(t=0;t<e.length;t++){var r=e[t],o=r.callback;if(null!==o){if(r.callback=null,r=n,\"function\"!==typeof o)throw Error(a(191,o));o.call(r)}}}var pi=(new r.Component).refs;function hi(e,t,n,r){n=null===(n=n(r,t=e.memoizedState))||void 0===n?t:o({},t,n),e.memoizedState=n,0===e.lanes&&(e.updateQueue.baseState=n)}var mi={isMounted:function(e){return!!(e=e._reactInternals)&&Qe(e)===e},enqueueSetState:function(e,t,n){e=e._reactInternals;var r=us(),o=cs(e),i=si(r,o);i.payload=t,void 0!==n&&null!==n&&(i.callback=n),ui(e,i),ds(e,o,r)},enqueueReplaceState:function(e,t,n){e=e._reactInternals;var r=us(),o=cs(e),i=si(r,o);i.tag=1,i.payload=t,void 0!==n&&null!==n&&(i.callback=n),ui(e,i),ds(e,o,r)},enqueueForceUpdate:function(e,t){e=e._reactInternals;var n=us(),r=cs(e),o=si(n,r);o.tag=2,void 0!==t&&null!==t&&(o.callback=t),ui(e,o),ds(e,r,n)}};function gi(e,t,n,r,o,i,a){return\"function\"===typeof(e=e.stateNode).shouldComponentUpdate?e.shouldComponentUpdate(r,i,a):!t.prototype||!t.prototype.isPureReactComponent||(!ur(n,r)||!ur(o,i))}function vi(e,t,n){var r=!1,o=uo,i=t.contextType;return\"object\"===typeof i&&null!==i?i=oi(i):(o=mo(t)?po:co.current,i=(r=null!==(r=t.contextTypes)&&void 0!==r)?ho(e,o):uo),t=new t(n,i),e.memoizedState=null!==t.state&&void 0!==t.state?t.state:null,t.updater=mi,e.stateNode=t,t._reactInternals=e,r&&((e=e.stateNode).__reactInternalMemoizedUnmaskedChildContext=o,e.__reactInternalMemoizedMaskedChildContext=i),t}function bi(e,t,n,r){e=t.state,\"function\"===typeof t.componentWillReceiveProps&&t.componentWillReceiveProps(n,r),\"function\"===typeof t.UNSAFE_componentWillReceiveProps&&t.UNSAFE_componentWillReceiveProps(n,r),t.state!==e&&mi.enqueueReplaceState(t,t.state,null)}function yi(e,t,n,r){var o=e.stateNode;o.props=n,o.state=e.memoizedState,o.refs=pi,ai(e);var i=t.contextType;\"object\"===typeof i&&null!==i?o.context=oi(i):(i=mo(t)?po:co.current,o.context=ho(e,i)),di(e,n,o,r),o.state=e.memoizedState,\"function\"===typeof(i=t.getDerivedStateFromProps)&&(hi(e,t,i,n),o.state=e.memoizedState),\"function\"===typeof t.getDerivedStateFromProps||\"function\"===typeof o.getSnapshotBeforeUpdate||\"function\"!==typeof o.UNSAFE_componentWillMount&&\"function\"!==typeof o.componentWillMount||(t=o.state,\"function\"===typeof o.componentWillMount&&o.componentWillMount(),\"function\"===typeof o.UNSAFE_componentWillMount&&o.UNSAFE_componentWillMount(),t!==o.state&&mi.enqueueReplaceState(o,o.state,null),di(e,n,o,r),o.state=e.memoizedState),\"function\"===typeof o.componentDidMount&&(e.flags|=4)}var wi=Array.isArray;function Si(e,t,n){if(null!==(e=n.ref)&&\"function\"!==typeof e&&\"object\"!==typeof e){if(n._owner){if(n=n._owner){if(1!==n.tag)throw Error(a(309));var r=n.stateNode}if(!r)throw Error(a(147,e));var o=\"\"+e;return null!==t&&null!==t.ref&&\"function\"===typeof t.ref&&t.ref._stringRef===o?t.ref:((t=function(e){var t=r.refs;t===pi&&(t=r.refs={}),null===e?delete t[o]:t[o]=e})._stringRef=o,t)}if(\"string\"!==typeof e)throw Error(a(284));if(!n._owner)throw Error(a(290,e))}return e}function Oi(e,t){if(\"textarea\"!==e.type)throw Error(a(31,\"[object Object]\"===Object.prototype.toString.call(t)?\"object with keys {\"+Object.keys(t).join(\", \")+\"}\":t))}function xi(e){function t(t,n){if(e){var r=t.lastEffect;null!==r?(r.nextEffect=n,t.lastEffect=n):t.firstEffect=t.lastEffect=n,n.nextEffect=null,n.flags=8}}function n(n,r){if(!e)return null;for(;null!==r;)t(n,r),r=r.sibling;return null}function r(e,t){for(e=new Map;null!==t;)null!==t.key?e.set(t.key,t):e.set(t.index,t),t=t.sibling;return e}function o(e,t){return(e=Ws(e,t)).index=0,e.sibling=null,e}function i(t,n,r){return t.index=r,e?null!==(r=t.alternate)?(r=r.index)<n?(t.flags=2,n):r:(t.flags=2,n):n}function l(t){return e&&null===t.alternate&&(t.flags=2),t}function s(e,t,n,r){return null===t||6!==t.tag?((t=qs(n,e.mode,r)).return=e,t):((t=o(t,n)).return=e,t)}function u(e,t,n,r){return null!==t&&t.elementType===n.type?((r=o(t,n.props)).ref=Si(e,t,n),r.return=e,r):((r=Hs(n.type,n.key,n.props,null,e.mode,r)).ref=Si(e,t,n),r.return=e,r)}function c(e,t,n,r){return null===t||4!==t.tag||t.stateNode.containerInfo!==n.containerInfo||t.stateNode.implementation!==n.implementation?((t=Ys(n,e.mode,r)).return=e,t):((t=o(t,n.children||[])).return=e,t)}function d(e,t,n,r,i){return null===t||7!==t.tag?((t=$s(n,e.mode,r,i)).return=e,t):((t=o(t,n)).return=e,t)}function f(e,t,n){if(\"string\"===typeof t||\"number\"===typeof t)return(t=qs(\"\"+t,e.mode,n)).return=e,t;if(\"object\"===typeof t&&null!==t){switch(t.$$typeof){case O:return(n=Hs(t.type,t.key,t.props,null,e.mode,n)).ref=Si(e,null,t),n.return=e,n;case x:return(t=Ys(t,e.mode,n)).return=e,t}if(wi(t)||V(t))return(t=$s(t,e.mode,n,null)).return=e,t;Oi(e,t)}return null}function p(e,t,n,r){var o=null!==t?t.key:null;if(\"string\"===typeof n||\"number\"===typeof n)return null!==o?null:s(e,t,\"\"+n,r);if(\"object\"===typeof n&&null!==n){switch(n.$$typeof){case O:return n.key===o?n.type===_?d(e,t,n.props.children,r,o):u(e,t,n,r):null;case x:return n.key===o?c(e,t,n,r):null}if(wi(n)||V(n))return null!==o?null:d(e,t,n,r,null);Oi(e,n)}return null}function h(e,t,n,r,o){if(\"string\"===typeof r||\"number\"===typeof r)return s(t,e=e.get(n)||null,\"\"+r,o);if(\"object\"===typeof r&&null!==r){switch(r.$$typeof){case O:return e=e.get(null===r.key?n:r.key)||null,r.type===_?d(t,e,r.props.children,o,r.key):u(t,e,r,o);case x:return c(t,e=e.get(null===r.key?n:r.key)||null,r,o)}if(wi(r)||V(r))return d(t,e=e.get(n)||null,r,o,null);Oi(t,r)}return null}function m(o,a,l,s){for(var u=null,c=null,d=a,m=a=0,g=null;null!==d&&m<l.length;m++){d.index>m?(g=d,d=null):g=d.sibling;var v=p(o,d,l[m],s);if(null===v){null===d&&(d=g);break}e&&d&&null===v.alternate&&t(o,d),a=i(v,a,m),null===c?u=v:c.sibling=v,c=v,d=g}if(m===l.length)return n(o,d),u;if(null===d){for(;m<l.length;m++)null!==(d=f(o,l[m],s))&&(a=i(d,a,m),null===c?u=d:c.sibling=d,c=d);return u}for(d=r(o,d);m<l.length;m++)null!==(g=h(d,o,m,l[m],s))&&(e&&null!==g.alternate&&d.delete(null===g.key?m:g.key),a=i(g,a,m),null===c?u=g:c.sibling=g,c=g);return e&&d.forEach((function(e){return t(o,e)})),u}function g(o,l,s,u){var c=V(s);if(\"function\"!==typeof c)throw Error(a(150));if(null==(s=c.call(s)))throw Error(a(151));for(var d=c=null,m=l,g=l=0,v=null,b=s.next();null!==m&&!b.done;g++,b=s.next()){m.index>g?(v=m,m=null):v=m.sibling;var y=p(o,m,b.value,u);if(null===y){null===m&&(m=v);break}e&&m&&null===y.alternate&&t(o,m),l=i(y,l,g),null===d?c=y:d.sibling=y,d=y,m=v}if(b.done)return n(o,m),c;if(null===m){for(;!b.done;g++,b=s.next())null!==(b=f(o,b.value,u))&&(l=i(b,l,g),null===d?c=b:d.sibling=b,d=b);return c}for(m=r(o,m);!b.done;g++,b=s.next())null!==(b=h(m,o,g,b.value,u))&&(e&&null!==b.alternate&&m.delete(null===b.key?g:b.key),l=i(b,l,g),null===d?c=b:d.sibling=b,d=b);return e&&m.forEach((function(e){return t(o,e)})),c}return function(e,r,i,s){var u=\"object\"===typeof i&&null!==i&&i.type===_&&null===i.key;u&&(i=i.props.children);var c=\"object\"===typeof i&&null!==i;if(c)switch(i.$$typeof){case O:e:{for(c=i.key,u=r;null!==u;){if(u.key===c){switch(u.tag){case 7:if(i.type===_){n(e,u.sibling),(r=o(u,i.props.children)).return=e,e=r;break e}break;default:if(u.elementType===i.type){n(e,u.sibling),(r=o(u,i.props)).ref=Si(e,u,i),r.return=e,e=r;break e}}n(e,u);break}t(e,u),u=u.sibling}i.type===_?((r=$s(i.props.children,e.mode,s,i.key)).return=e,e=r):((s=Hs(i.type,i.key,i.props,null,e.mode,s)).ref=Si(e,r,i),s.return=e,e=s)}return l(e);case x:e:{for(u=i.key;null!==r;){if(r.key===u){if(4===r.tag&&r.stateNode.containerInfo===i.containerInfo&&r.stateNode.implementation===i.implementation){n(e,r.sibling),(r=o(r,i.children||[])).return=e,e=r;break e}n(e,r);break}t(e,r),r=r.sibling}(r=Ys(i,e.mode,s)).return=e,e=r}return l(e)}if(\"string\"===typeof i||\"number\"===typeof i)return i=\"\"+i,null!==r&&6===r.tag?(n(e,r.sibling),(r=o(r,i)).return=e,e=r):(n(e,r),(r=qs(i,e.mode,s)).return=e,e=r),l(e);if(wi(i))return m(e,r,i,s);if(V(i))return g(e,r,i,s);if(c&&Oi(e,i),\"undefined\"===typeof i&&!u)switch(e.tag){case 1:case 22:case 0:case 11:case 15:throw Error(a(152,q(e.type)||\"Component\"))}return n(e,r)}}var _i=xi(!0),ji=xi(!1),Ei={},Ci=ao(Ei),ki=ao(Ei),Ti=ao(Ei);function Pi(e){if(e===Ei)throw Error(a(174));return e}function Ni(e,t){switch(so(Ti,t),so(ki,e),so(Ci,Ei),e=t.nodeType){case 9:case 11:t=(t=t.documentElement)?t.namespaceURI:he(null,\"\");break;default:t=he(t=(e=8===e?t.parentNode:t).namespaceURI||null,e=e.tagName)}lo(Ci),so(Ci,t)}function Ii(){lo(Ci),lo(ki),lo(Ti)}function Ri(e){Pi(Ti.current);var t=Pi(Ci.current),n=he(t,e.type);t!==n&&(so(ki,e),so(Ci,n))}function Ai(e){ki.current===e&&(lo(Ci),lo(ki))}var Di=ao(0);function Li(e){for(var t=e;null!==t;){if(13===t.tag){var n=t.memoizedState;if(null!==n&&(null===(n=n.dehydrated)||\"$?\"===n.data||\"$!\"===n.data))return t}else if(19===t.tag&&void 0!==t.memoizedProps.revealOrder){if(0!==(64&t.flags))return t}else if(null!==t.child){t.child.return=t,t=t.child;continue}if(t===e)break;for(;null===t.sibling;){if(null===t.return||t.return===e)return null;t=t.return}t.sibling.return=t.return,t=t.sibling}return null}var Mi=null,zi=null,Ui=!1;function Fi(e,t){var n=Bs(5,null,null,0);n.elementType=\"DELETED\",n.type=\"DELETED\",n.stateNode=t,n.return=e,n.flags=8,null!==e.lastEffect?(e.lastEffect.nextEffect=n,e.lastEffect=n):e.firstEffect=e.lastEffect=n}function Bi(e,t){switch(e.tag){case 5:var n=e.type;return null!==(t=1!==t.nodeType||n.toLowerCase()!==t.nodeName.toLowerCase()?null:t)&&(e.stateNode=t,!0);case 6:return null!==(t=\"\"===e.pendingProps||3!==t.nodeType?null:t)&&(e.stateNode=t,!0);case 13:default:return!1}}function Vi(e){if(Ui){var t=zi;if(t){var n=t;if(!Bi(e,t)){if(!(t=$r(n.nextSibling))||!Bi(e,t))return e.flags=-1025&e.flags|2,Ui=!1,void(Mi=e);Fi(Mi,n)}Mi=e,zi=$r(t.firstChild)}else e.flags=-1025&e.flags|2,Ui=!1,Mi=e}}function Wi(e){for(e=e.return;null!==e&&5!==e.tag&&3!==e.tag&&13!==e.tag;)e=e.return;Mi=e}function Hi(e){if(e!==Mi)return!1;if(!Ui)return Wi(e),Ui=!0,!1;var t=e.type;if(5!==e.tag||\"head\"!==t&&\"body\"!==t&&!Br(t,e.memoizedProps))for(t=zi;t;)Fi(e,t),t=$r(t.nextSibling);if(Wi(e),13===e.tag){if(!(e=null!==(e=e.memoizedState)?e.dehydrated:null))throw Error(a(317));e:{for(e=e.nextSibling,t=0;e;){if(8===e.nodeType){var n=e.data;if(\"/$\"===n){if(0===t){zi=$r(e.nextSibling);break e}t--}else\"$\"!==n&&\"$!\"!==n&&\"$?\"!==n||t++}e=e.nextSibling}zi=null}}else zi=Mi?$r(e.stateNode.nextSibling):null;return!0}function $i(){zi=Mi=null,Ui=!1}var Gi=[];function qi(){for(var e=0;e<Gi.length;e++)Gi[e]._workInProgressVersionPrimary=null;Gi.length=0}var Yi=S.ReactCurrentDispatcher,Ki=S.ReactCurrentBatchConfig,Qi=0,Xi=null,Zi=null,Ji=null,ea=!1,ta=!1;function na(){throw Error(a(321))}function ra(e,t){if(null===t)return!1;for(var n=0;n<t.length&&n<e.length;n++)if(!lr(e[n],t[n]))return!1;return!0}function oa(e,t,n,r,o,i){if(Qi=i,Xi=t,t.memoizedState=null,t.updateQueue=null,t.lanes=0,Yi.current=null===e||null===e.memoizedState?Pa:Na,e=n(r,o),ta){i=0;do{if(ta=!1,!(25>i))throw Error(a(301));i+=1,Ji=Zi=null,t.updateQueue=null,Yi.current=Ia,e=n(r,o)}while(ta)}if(Yi.current=Ta,t=null!==Zi&&null!==Zi.next,Qi=0,Ji=Zi=Xi=null,ea=!1,t)throw Error(a(300));return e}function ia(){var e={memoizedState:null,baseState:null,baseQueue:null,queue:null,next:null};return null===Ji?Xi.memoizedState=Ji=e:Ji=Ji.next=e,Ji}function aa(){if(null===Zi){var e=Xi.alternate;e=null!==e?e.memoizedState:null}else e=Zi.next;var t=null===Ji?Xi.memoizedState:Ji.next;if(null!==t)Ji=t,Zi=e;else{if(null===e)throw Error(a(310));e={memoizedState:(Zi=e).memoizedState,baseState:Zi.baseState,baseQueue:Zi.baseQueue,queue:Zi.queue,next:null},null===Ji?Xi.memoizedState=Ji=e:Ji=Ji.next=e}return Ji}function la(e,t){return\"function\"===typeof t?t(e):t}function sa(e){var t=aa(),n=t.queue;if(null===n)throw Error(a(311));n.lastRenderedReducer=e;var r=Zi,o=r.baseQueue,i=n.pending;if(null!==i){if(null!==o){var l=o.next;o.next=i.next,i.next=l}r.baseQueue=o=i,n.pending=null}if(null!==o){o=o.next,r=r.baseState;var s=l=i=null,u=o;do{var c=u.lane;if((Qi&c)===c)null!==s&&(s=s.next={lane:0,action:u.action,eagerReducer:u.eagerReducer,eagerState:u.eagerState,next:null}),r=u.eagerReducer===e?u.eagerState:e(r,u.action);else{var d={lane:c,action:u.action,eagerReducer:u.eagerReducer,eagerState:u.eagerState,next:null};null===s?(l=s=d,i=r):s=s.next=d,Xi.lanes|=c,zl|=c}u=u.next}while(null!==u&&u!==o);null===s?i=r:s.next=l,lr(r,t.memoizedState)||(Aa=!0),t.memoizedState=r,t.baseState=i,t.baseQueue=s,n.lastRenderedState=r}return[t.memoizedState,n.dispatch]}function ua(e){var t=aa(),n=t.queue;if(null===n)throw Error(a(311));n.lastRenderedReducer=e;var r=n.dispatch,o=n.pending,i=t.memoizedState;if(null!==o){n.pending=null;var l=o=o.next;do{i=e(i,l.action),l=l.next}while(l!==o);lr(i,t.memoizedState)||(Aa=!0),t.memoizedState=i,null===t.baseQueue&&(t.baseState=i),n.lastRenderedState=i}return[i,r]}function ca(e,t,n){var r=t._getVersion;r=r(t._source);var o=t._workInProgressVersionPrimary;if(null!==o?e=o===r:(e=e.mutableReadLanes,(e=(Qi&e)===e)&&(t._workInProgressVersionPrimary=r,Gi.push(t))),e)return n(t._source);throw Gi.push(t),Error(a(350))}function da(e,t,n,r){var o=Pl;if(null===o)throw Error(a(349));var i=t._getVersion,l=i(t._source),s=Yi.current,u=s.useState((function(){return ca(o,t,n)})),c=u[1],d=u[0];u=Ji;var f=e.memoizedState,p=f.refs,h=p.getSnapshot,m=f.source;f=f.subscribe;var g=Xi;return e.memoizedState={refs:p,source:t,subscribe:r},s.useEffect((function(){p.getSnapshot=n,p.setSnapshot=c;var e=i(t._source);if(!lr(l,e)){e=n(t._source),lr(d,e)||(c(e),e=cs(g),o.mutableReadLanes|=e&o.pendingLanes),e=o.mutableReadLanes,o.entangledLanes|=e;for(var r=o.entanglements,a=e;0<a;){var s=31-Ht(a),u=1<<s;r[s]|=e,a&=~u}}}),[n,t,r]),s.useEffect((function(){return r(t._source,(function(){var e=p.getSnapshot,n=p.setSnapshot;try{n(e(t._source));var r=cs(g);o.mutableReadLanes|=r&o.pendingLanes}catch(i){n((function(){throw i}))}}))}),[t,r]),lr(h,n)&&lr(m,t)&&lr(f,r)||((e={pending:null,dispatch:null,lastRenderedReducer:la,lastRenderedState:d}).dispatch=c=ka.bind(null,Xi,e),u.queue=e,u.baseQueue=null,d=ca(o,t,n),u.memoizedState=u.baseState=d),d}function fa(e,t,n){return da(aa(),e,t,n)}function pa(e){var t=ia();return\"function\"===typeof e&&(e=e()),t.memoizedState=t.baseState=e,e=(e=t.queue={pending:null,dispatch:null,lastRenderedReducer:la,lastRenderedState:e}).dispatch=ka.bind(null,Xi,e),[t.memoizedState,e]}function ha(e,t,n,r){return e={tag:e,create:t,destroy:n,deps:r,next:null},null===(t=Xi.updateQueue)?(t={lastEffect:null},Xi.updateQueue=t,t.lastEffect=e.next=e):null===(n=t.lastEffect)?t.lastEffect=e.next=e:(r=n.next,n.next=e,e.next=r,t.lastEffect=e),e}function ma(e){return e={current:e},ia().memoizedState=e}function ga(){return aa().memoizedState}function va(e,t,n,r){var o=ia();Xi.flags|=e,o.memoizedState=ha(1|t,n,void 0,void 0===r?null:r)}function ba(e,t,n,r){var o=aa();r=void 0===r?null:r;var i=void 0;if(null!==Zi){var a=Zi.memoizedState;if(i=a.destroy,null!==r&&ra(r,a.deps))return void ha(t,n,i,r)}Xi.flags|=e,o.memoizedState=ha(1|t,n,i,r)}function ya(e,t){return va(516,4,e,t)}function wa(e,t){return ba(516,4,e,t)}function Sa(e,t){return ba(4,2,e,t)}function Oa(e,t){return\"function\"===typeof t?(e=e(),t(e),function(){t(null)}):null!==t&&void 0!==t?(e=e(),t.current=e,function(){t.current=null}):void 0}function xa(e,t,n){return n=null!==n&&void 0!==n?n.concat([e]):null,ba(4,2,Oa.bind(null,t,e),n)}function _a(){}function ja(e,t){var n=aa();t=void 0===t?null:t;var r=n.memoizedState;return null!==r&&null!==t&&ra(t,r[1])?r[0]:(n.memoizedState=[e,t],e)}function Ea(e,t){var n=aa();t=void 0===t?null:t;var r=n.memoizedState;return null!==r&&null!==t&&ra(t,r[1])?r[0]:(e=e(),n.memoizedState=[e,t],e)}function Ca(e,t){var n=Vo();Ho(98>n?98:n,(function(){e(!0)})),Ho(97<n?97:n,(function(){var n=Ki.transition;Ki.transition=1;try{e(!1),t()}finally{Ki.transition=n}}))}function ka(e,t,n){var r=us(),o=cs(e),i={lane:o,action:n,eagerReducer:null,eagerState:null,next:null},a=t.pending;if(null===a?i.next=i:(i.next=a.next,a.next=i),t.pending=i,a=e.alternate,e===Xi||null!==a&&a===Xi)ta=ea=!0;else{if(0===e.lanes&&(null===a||0===a.lanes)&&null!==(a=t.lastRenderedReducer))try{var l=t.lastRenderedState,s=a(l,n);if(i.eagerReducer=a,i.eagerState=s,lr(s,l))return}catch(u){}ds(e,o,r)}}var Ta={readContext:oi,useCallback:na,useContext:na,useEffect:na,useImperativeHandle:na,useLayoutEffect:na,useMemo:na,useReducer:na,useRef:na,useState:na,useDebugValue:na,useDeferredValue:na,useTransition:na,useMutableSource:na,useOpaqueIdentifier:na,unstable_isNewReconciler:!1},Pa={readContext:oi,useCallback:function(e,t){return ia().memoizedState=[e,void 0===t?null:t],e},useContext:oi,useEffect:ya,useImperativeHandle:function(e,t,n){return n=null!==n&&void 0!==n?n.concat([e]):null,va(4,2,Oa.bind(null,t,e),n)},useLayoutEffect:function(e,t){return va(4,2,e,t)},useMemo:function(e,t){var n=ia();return t=void 0===t?null:t,e=e(),n.memoizedState=[e,t],e},useReducer:function(e,t,n){var r=ia();return t=void 0!==n?n(t):t,r.memoizedState=r.baseState=t,e=(e=r.queue={pending:null,dispatch:null,lastRenderedReducer:e,lastRenderedState:t}).dispatch=ka.bind(null,Xi,e),[r.memoizedState,e]},useRef:ma,useState:pa,useDebugValue:_a,useDeferredValue:function(e){var t=pa(e),n=t[0],r=t[1];return ya((function(){var t=Ki.transition;Ki.transition=1;try{r(e)}finally{Ki.transition=t}}),[e]),n},useTransition:function(){var e=pa(!1),t=e[0];return ma(e=Ca.bind(null,e[1])),[e,t]},useMutableSource:function(e,t,n){var r=ia();return r.memoizedState={refs:{getSnapshot:t,setSnapshot:null},source:e,subscribe:n},da(r,e,t,n)},useOpaqueIdentifier:function(){if(Ui){var e=!1,t=function(e){return{$$typeof:D,toString:e,valueOf:e}}((function(){throw e||(e=!0,n(\"r:\"+(qr++).toString(36))),Error(a(355))})),n=pa(t)[1];return 0===(2&Xi.mode)&&(Xi.flags|=516,ha(5,(function(){n(\"r:\"+(qr++).toString(36))}),void 0,null)),t}return pa(t=\"r:\"+(qr++).toString(36)),t},unstable_isNewReconciler:!1},Na={readContext:oi,useCallback:ja,useContext:oi,useEffect:wa,useImperativeHandle:xa,useLayoutEffect:Sa,useMemo:Ea,useReducer:sa,useRef:ga,useState:function(){return sa(la)},useDebugValue:_a,useDeferredValue:function(e){var t=sa(la),n=t[0],r=t[1];return wa((function(){var t=Ki.transition;Ki.transition=1;try{r(e)}finally{Ki.transition=t}}),[e]),n},useTransition:function(){var e=sa(la)[0];return[ga().current,e]},useMutableSource:fa,useOpaqueIdentifier:function(){return sa(la)[0]},unstable_isNewReconciler:!1},Ia={readContext:oi,useCallback:ja,useContext:oi,useEffect:wa,useImperativeHandle:xa,useLayoutEffect:Sa,useMemo:Ea,useReducer:ua,useRef:ga,useState:function(){return ua(la)},useDebugValue:_a,useDeferredValue:function(e){var t=ua(la),n=t[0],r=t[1];return wa((function(){var t=Ki.transition;Ki.transition=1;try{r(e)}finally{Ki.transition=t}}),[e]),n},useTransition:function(){var e=ua(la)[0];return[ga().current,e]},useMutableSource:fa,useOpaqueIdentifier:function(){return ua(la)[0]},unstable_isNewReconciler:!1},Ra=S.ReactCurrentOwner,Aa=!1;function Da(e,t,n,r){t.child=null===e?ji(t,null,n,r):_i(t,e.child,n,r)}function La(e,t,n,r,o){n=n.render;var i=t.ref;return ri(t,o),r=oa(e,t,n,r,i,o),null===e||Aa?(t.flags|=1,Da(e,t,r,o),t.child):(t.updateQueue=e.updateQueue,t.flags&=-517,e.lanes&=~o,nl(e,t,o))}function Ma(e,t,n,r,o,i){if(null===e){var a=n.type;return\"function\"!==typeof a||Vs(a)||void 0!==a.defaultProps||null!==n.compare||void 0!==n.defaultProps?((e=Hs(n.type,null,r,t,t.mode,i)).ref=t.ref,e.return=t,t.child=e):(t.tag=15,t.type=a,za(e,t,a,r,o,i))}return a=e.child,0===(o&i)&&(o=a.memoizedProps,(n=null!==(n=n.compare)?n:ur)(o,r)&&e.ref===t.ref)?nl(e,t,i):(t.flags|=1,(e=Ws(a,r)).ref=t.ref,e.return=t,t.child=e)}function za(e,t,n,r,o,i){if(null!==e&&ur(e.memoizedProps,r)&&e.ref===t.ref){if(Aa=!1,0===(i&o))return t.lanes=e.lanes,nl(e,t,i);0!==(16384&e.flags)&&(Aa=!0)}return Ba(e,t,n,r,i)}function Ua(e,t,n){var r=t.pendingProps,o=r.children,i=null!==e?e.memoizedState:null;if(\"hidden\"===r.mode||\"unstable-defer-without-hiding\"===r.mode)if(0===(4&t.mode))t.memoizedState={baseLanes:0},ys(t,n);else{if(0===(1073741824&n))return e=null!==i?i.baseLanes|n:n,t.lanes=t.childLanes=1073741824,t.memoizedState={baseLanes:e},ys(t,e),null;t.memoizedState={baseLanes:0},ys(t,null!==i?i.baseLanes:n)}else null!==i?(r=i.baseLanes|n,t.memoizedState=null):r=n,ys(t,r);return Da(e,t,o,n),t.child}function Fa(e,t){var n=t.ref;(null===e&&null!==n||null!==e&&e.ref!==n)&&(t.flags|=128)}function Ba(e,t,n,r,o){var i=mo(n)?po:co.current;return i=ho(t,i),ri(t,o),n=oa(e,t,n,r,i,o),null===e||Aa?(t.flags|=1,Da(e,t,n,o),t.child):(t.updateQueue=e.updateQueue,t.flags&=-517,e.lanes&=~o,nl(e,t,o))}function Va(e,t,n,r,o){if(mo(n)){var i=!0;yo(t)}else i=!1;if(ri(t,o),null===t.stateNode)null!==e&&(e.alternate=null,t.alternate=null,t.flags|=2),vi(t,n,r),yi(t,n,r,o),r=!0;else if(null===e){var a=t.stateNode,l=t.memoizedProps;a.props=l;var s=a.context,u=n.contextType;\"object\"===typeof u&&null!==u?u=oi(u):u=ho(t,u=mo(n)?po:co.current);var c=n.getDerivedStateFromProps,d=\"function\"===typeof c||\"function\"===typeof a.getSnapshotBeforeUpdate;d||\"function\"!==typeof a.UNSAFE_componentWillReceiveProps&&\"function\"!==typeof a.componentWillReceiveProps||(l!==r||s!==u)&&bi(t,a,r,u),ii=!1;var f=t.memoizedState;a.state=f,di(t,r,a,o),s=t.memoizedState,l!==r||f!==s||fo.current||ii?(\"function\"===typeof c&&(hi(t,n,c,r),s=t.memoizedState),(l=ii||gi(t,n,l,r,f,s,u))?(d||\"function\"!==typeof a.UNSAFE_componentWillMount&&\"function\"!==typeof a.componentWillMount||(\"function\"===typeof a.componentWillMount&&a.componentWillMount(),\"function\"===typeof a.UNSAFE_componentWillMount&&a.UNSAFE_componentWillMount()),\"function\"===typeof a.componentDidMount&&(t.flags|=4)):(\"function\"===typeof a.componentDidMount&&(t.flags|=4),t.memoizedProps=r,t.memoizedState=s),a.props=r,a.state=s,a.context=u,r=l):(\"function\"===typeof a.componentDidMount&&(t.flags|=4),r=!1)}else{a=t.stateNode,li(e,t),l=t.memoizedProps,u=t.type===t.elementType?l:Ko(t.type,l),a.props=u,d=t.pendingProps,f=a.context,\"object\"===typeof(s=n.contextType)&&null!==s?s=oi(s):s=ho(t,s=mo(n)?po:co.current);var p=n.getDerivedStateFromProps;(c=\"function\"===typeof p||\"function\"===typeof a.getSnapshotBeforeUpdate)||\"function\"!==typeof a.UNSAFE_componentWillReceiveProps&&\"function\"!==typeof a.componentWillReceiveProps||(l!==d||f!==s)&&bi(t,a,r,s),ii=!1,f=t.memoizedState,a.state=f,di(t,r,a,o);var h=t.memoizedState;l!==d||f!==h||fo.current||ii?(\"function\"===typeof p&&(hi(t,n,p,r),h=t.memoizedState),(u=ii||gi(t,n,u,r,f,h,s))?(c||\"function\"!==typeof a.UNSAFE_componentWillUpdate&&\"function\"!==typeof a.componentWillUpdate||(\"function\"===typeof a.componentWillUpdate&&a.componentWillUpdate(r,h,s),\"function\"===typeof a.UNSAFE_componentWillUpdate&&a.UNSAFE_componentWillUpdate(r,h,s)),\"function\"===typeof a.componentDidUpdate&&(t.flags|=4),\"function\"===typeof a.getSnapshotBeforeUpdate&&(t.flags|=256)):(\"function\"!==typeof a.componentDidUpdate||l===e.memoizedProps&&f===e.memoizedState||(t.flags|=4),\"function\"!==typeof a.getSnapshotBeforeUpdate||l===e.memoizedProps&&f===e.memoizedState||(t.flags|=256),t.memoizedProps=r,t.memoizedState=h),a.props=r,a.state=h,a.context=s,r=u):(\"function\"!==typeof a.componentDidUpdate||l===e.memoizedProps&&f===e.memoizedState||(t.flags|=4),\"function\"!==typeof a.getSnapshotBeforeUpdate||l===e.memoizedProps&&f===e.memoizedState||(t.flags|=256),r=!1)}return Wa(e,t,n,r,i,o)}function Wa(e,t,n,r,o,i){Fa(e,t);var a=0!==(64&t.flags);if(!r&&!a)return o&&wo(t,n,!1),nl(e,t,i);r=t.stateNode,Ra.current=t;var l=a&&\"function\"!==typeof n.getDerivedStateFromError?null:r.render();return t.flags|=1,null!==e&&a?(t.child=_i(t,e.child,null,i),t.child=_i(t,null,l,i)):Da(e,t,l,i),t.memoizedState=r.state,o&&wo(t,n,!0),t.child}function Ha(e){var t=e.stateNode;t.pendingContext?vo(0,t.pendingContext,t.pendingContext!==t.context):t.context&&vo(0,t.context,!1),Ni(e,t.containerInfo)}var $a,Ga,qa,Ya={dehydrated:null,retryLane:0};function Ka(e,t,n){var r,o=t.pendingProps,i=Di.current,a=!1;return(r=0!==(64&t.flags))||(r=(null===e||null!==e.memoizedState)&&0!==(2&i)),r?(a=!0,t.flags&=-65):null!==e&&null===e.memoizedState||void 0===o.fallback||!0===o.unstable_avoidThisFallback||(i|=1),so(Di,1&i),null===e?(void 0!==o.fallback&&Vi(t),e=o.children,i=o.fallback,a?(e=Qa(t,e,i,n),t.child.memoizedState={baseLanes:n},t.memoizedState=Ya,e):\"number\"===typeof o.unstable_expectedLoadTime?(e=Qa(t,e,i,n),t.child.memoizedState={baseLanes:n},t.memoizedState=Ya,t.lanes=33554432,e):((n=Gs({mode:\"visible\",children:e},t.mode,n,null)).return=t,t.child=n)):(e.memoizedState,a?(o=Za(e,t,o.children,o.fallback,n),a=t.child,i=e.child.memoizedState,a.memoizedState=null===i?{baseLanes:n}:{baseLanes:i.baseLanes|n},a.childLanes=e.childLanes&~n,t.memoizedState=Ya,o):(n=Xa(e,t,o.children,n),t.memoizedState=null,n))}function Qa(e,t,n,r){var o=e.mode,i=e.child;return t={mode:\"hidden\",children:t},0===(2&o)&&null!==i?(i.childLanes=0,i.pendingProps=t):i=Gs(t,o,0,null),n=$s(n,o,r,null),i.return=e,n.return=e,i.sibling=n,e.child=i,n}function Xa(e,t,n,r){var o=e.child;return e=o.sibling,n=Ws(o,{mode:\"visible\",children:n}),0===(2&t.mode)&&(n.lanes=r),n.return=t,n.sibling=null,null!==e&&(e.nextEffect=null,e.flags=8,t.firstEffect=t.lastEffect=e),t.child=n}function Za(e,t,n,r,o){var i=t.mode,a=e.child;e=a.sibling;var l={mode:\"hidden\",children:n};return 0===(2&i)&&t.child!==a?((n=t.child).childLanes=0,n.pendingProps=l,null!==(a=n.lastEffect)?(t.firstEffect=n.firstEffect,t.lastEffect=a,a.nextEffect=null):t.firstEffect=t.lastEffect=null):n=Ws(a,l),null!==e?r=Ws(e,r):(r=$s(r,i,o,null)).flags|=2,r.return=t,n.return=t,n.sibling=r,t.child=n,r}function Ja(e,t){e.lanes|=t;var n=e.alternate;null!==n&&(n.lanes|=t),ni(e.return,t)}function el(e,t,n,r,o,i){var a=e.memoizedState;null===a?e.memoizedState={isBackwards:t,rendering:null,renderingStartTime:0,last:r,tail:n,tailMode:o,lastEffect:i}:(a.isBackwards=t,a.rendering=null,a.renderingStartTime=0,a.last=r,a.tail=n,a.tailMode=o,a.lastEffect=i)}function tl(e,t,n){var r=t.pendingProps,o=r.revealOrder,i=r.tail;if(Da(e,t,r.children,n),0!==(2&(r=Di.current)))r=1&r|2,t.flags|=64;else{if(null!==e&&0!==(64&e.flags))e:for(e=t.child;null!==e;){if(13===e.tag)null!==e.memoizedState&&Ja(e,n);else if(19===e.tag)Ja(e,n);else if(null!==e.child){e.child.return=e,e=e.child;continue}if(e===t)break e;for(;null===e.sibling;){if(null===e.return||e.return===t)break e;e=e.return}e.sibling.return=e.return,e=e.sibling}r&=1}if(so(Di,r),0===(2&t.mode))t.memoizedState=null;else switch(o){case\"forwards\":for(n=t.child,o=null;null!==n;)null!==(e=n.alternate)&&null===Li(e)&&(o=n),n=n.sibling;null===(n=o)?(o=t.child,t.child=null):(o=n.sibling,n.sibling=null),el(t,!1,o,n,i,t.lastEffect);break;case\"backwards\":for(n=null,o=t.child,t.child=null;null!==o;){if(null!==(e=o.alternate)&&null===Li(e)){t.child=o;break}e=o.sibling,o.sibling=n,n=o,o=e}el(t,!0,n,null,i,t.lastEffect);break;case\"together\":el(t,!1,null,null,void 0,t.lastEffect);break;default:t.memoizedState=null}return t.child}function nl(e,t,n){if(null!==e&&(t.dependencies=e.dependencies),zl|=t.lanes,0!==(n&t.childLanes)){if(null!==e&&t.child!==e.child)throw Error(a(153));if(null!==t.child){for(n=Ws(e=t.child,e.pendingProps),t.child=n,n.return=t;null!==e.sibling;)e=e.sibling,(n=n.sibling=Ws(e,e.pendingProps)).return=t;n.sibling=null}return t.child}return null}function rl(e,t){if(!Ui)switch(e.tailMode){case\"hidden\":t=e.tail;for(var n=null;null!==t;)null!==t.alternate&&(n=t),t=t.sibling;null===n?e.tail=null:n.sibling=null;break;case\"collapsed\":n=e.tail;for(var r=null;null!==n;)null!==n.alternate&&(r=n),n=n.sibling;null===r?t||null===e.tail?e.tail=null:e.tail.sibling=null:r.sibling=null}}function ol(e,t,n){var r=t.pendingProps;switch(t.tag){case 2:case 16:case 15:case 0:case 11:case 7:case 8:case 12:case 9:case 14:return null;case 1:return mo(t.type)&&go(),null;case 3:return Ii(),lo(fo),lo(co),qi(),(r=t.stateNode).pendingContext&&(r.context=r.pendingContext,r.pendingContext=null),null!==e&&null!==e.child||(Hi(t)?t.flags|=4:r.hydrate||(t.flags|=256)),null;case 5:Ai(t);var i=Pi(Ti.current);if(n=t.type,null!==e&&null!=t.stateNode)Ga(e,t,n,r),e.ref!==t.ref&&(t.flags|=128);else{if(!r){if(null===t.stateNode)throw Error(a(166));return null}if(e=Pi(Ci.current),Hi(t)){r=t.stateNode,n=t.type;var l=t.memoizedProps;switch(r[Kr]=t,r[Qr]=l,n){case\"dialog\":Cr(\"cancel\",r),Cr(\"close\",r);break;case\"iframe\":case\"object\":case\"embed\":Cr(\"load\",r);break;case\"video\":case\"audio\":for(e=0;e<xr.length;e++)Cr(xr[e],r);break;case\"source\":Cr(\"error\",r);break;case\"img\":case\"image\":case\"link\":Cr(\"error\",r),Cr(\"load\",r);break;case\"details\":Cr(\"toggle\",r);break;case\"input\":ee(r,l),Cr(\"invalid\",r);break;case\"select\":r._wrapperState={wasMultiple:!!l.multiple},Cr(\"invalid\",r);break;case\"textarea\":se(r,l),Cr(\"invalid\",r)}for(var u in _e(n,l),e=null,l)l.hasOwnProperty(u)&&(i=l[u],\"children\"===u?\"string\"===typeof i?r.textContent!==i&&(e=[\"children\",i]):\"number\"===typeof i&&r.textContent!==\"\"+i&&(e=[\"children\",\"\"+i]):s.hasOwnProperty(u)&&null!=i&&\"onScroll\"===u&&Cr(\"scroll\",r));switch(n){case\"input\":Q(r),re(r,l,!0);break;case\"textarea\":Q(r),ce(r);break;case\"select\":case\"option\":break;default:\"function\"===typeof l.onClick&&(r.onclick=Mr)}r=e,t.updateQueue=r,null!==r&&(t.flags|=4)}else{switch(u=9===i.nodeType?i:i.ownerDocument,e===de&&(e=pe(n)),e===de?\"script\"===n?((e=u.createElement(\"div\")).innerHTML=\"<script><\\/script>\",e=e.removeChild(e.firstChild)):\"string\"===typeof r.is?e=u.createElement(n,{is:r.is}):(e=u.createElement(n),\"select\"===n&&(u=e,r.multiple?u.multiple=!0:r.size&&(u.size=r.size))):e=u.createElementNS(e,n),e[Kr]=t,e[Qr]=r,$a(e,t),t.stateNode=e,u=je(n,r),n){case\"dialog\":Cr(\"cancel\",e),Cr(\"close\",e),i=r;break;case\"iframe\":case\"object\":case\"embed\":Cr(\"load\",e),i=r;break;case\"video\":case\"audio\":for(i=0;i<xr.length;i++)Cr(xr[i],e);i=r;break;case\"source\":Cr(\"error\",e),i=r;break;case\"img\":case\"image\":case\"link\":Cr(\"error\",e),Cr(\"load\",e),i=r;break;case\"details\":Cr(\"toggle\",e),i=r;break;case\"input\":ee(e,r),i=J(e,r),Cr(\"invalid\",e);break;case\"option\":i=ie(e,r);break;case\"select\":e._wrapperState={wasMultiple:!!r.multiple},i=o({},r,{value:void 0}),Cr(\"invalid\",e);break;case\"textarea\":se(e,r),i=le(e,r),Cr(\"invalid\",e);break;default:i=r}_e(n,i);var c=i;for(l in c)if(c.hasOwnProperty(l)){var d=c[l];\"style\"===l?Oe(e,d):\"dangerouslySetInnerHTML\"===l?null!=(d=d?d.__html:void 0)&&ve(e,d):\"children\"===l?\"string\"===typeof d?(\"textarea\"!==n||\"\"!==d)&&be(e,d):\"number\"===typeof d&&be(e,\"\"+d):\"suppressContentEditableWarning\"!==l&&\"suppressHydrationWarning\"!==l&&\"autoFocus\"!==l&&(s.hasOwnProperty(l)?null!=d&&\"onScroll\"===l&&Cr(\"scroll\",e):null!=d&&w(e,l,d,u))}switch(n){case\"input\":Q(e),re(e,r,!1);break;case\"textarea\":Q(e),ce(e);break;case\"option\":null!=r.value&&e.setAttribute(\"value\",\"\"+Y(r.value));break;case\"select\":e.multiple=!!r.multiple,null!=(l=r.value)?ae(e,!!r.multiple,l,!1):null!=r.defaultValue&&ae(e,!!r.multiple,r.defaultValue,!0);break;default:\"function\"===typeof i.onClick&&(e.onclick=Mr)}Fr(n,r)&&(t.flags|=4)}null!==t.ref&&(t.flags|=128)}return null;case 6:if(e&&null!=t.stateNode)qa(0,t,e.memoizedProps,r);else{if(\"string\"!==typeof r&&null===t.stateNode)throw Error(a(166));n=Pi(Ti.current),Pi(Ci.current),Hi(t)?(r=t.stateNode,n=t.memoizedProps,r[Kr]=t,r.nodeValue!==n&&(t.flags|=4)):((r=(9===n.nodeType?n:n.ownerDocument).createTextNode(r))[Kr]=t,t.stateNode=r)}return null;case 13:return lo(Di),r=t.memoizedState,0!==(64&t.flags)?(t.lanes=n,t):(r=null!==r,n=!1,null===e?void 0!==t.memoizedProps.fallback&&Hi(t):n=null!==e.memoizedState,r&&!n&&0!==(2&t.mode)&&(null===e&&!0!==t.memoizedProps.unstable_avoidThisFallback||0!==(1&Di.current)?0===Dl&&(Dl=3):(0!==Dl&&3!==Dl||(Dl=4),null===Pl||0===(134217727&zl)&&0===(134217727&Ul)||ms(Pl,Il))),(r||n)&&(t.flags|=4),null);case 4:return Ii(),null===e&&Tr(t.stateNode.containerInfo),null;case 10:return ti(t),null;case 17:return mo(t.type)&&go(),null;case 19:if(lo(Di),null===(r=t.memoizedState))return null;if(l=0!==(64&t.flags),null===(u=r.rendering))if(l)rl(r,!1);else{if(0!==Dl||null!==e&&0!==(64&e.flags))for(e=t.child;null!==e;){if(null!==(u=Li(e))){for(t.flags|=64,rl(r,!1),null!==(l=u.updateQueue)&&(t.updateQueue=l,t.flags|=4),null===r.lastEffect&&(t.firstEffect=null),t.lastEffect=r.lastEffect,r=n,n=t.child;null!==n;)e=r,(l=n).flags&=2,l.nextEffect=null,l.firstEffect=null,l.lastEffect=null,null===(u=l.alternate)?(l.childLanes=0,l.lanes=e,l.child=null,l.memoizedProps=null,l.memoizedState=null,l.updateQueue=null,l.dependencies=null,l.stateNode=null):(l.childLanes=u.childLanes,l.lanes=u.lanes,l.child=u.child,l.memoizedProps=u.memoizedProps,l.memoizedState=u.memoizedState,l.updateQueue=u.updateQueue,l.type=u.type,e=u.dependencies,l.dependencies=null===e?null:{lanes:e.lanes,firstContext:e.firstContext}),n=n.sibling;return so(Di,1&Di.current|2),t.child}e=e.sibling}null!==r.tail&&Bo()>Wl&&(t.flags|=64,l=!0,rl(r,!1),t.lanes=33554432)}else{if(!l)if(null!==(e=Li(u))){if(t.flags|=64,l=!0,null!==(n=e.updateQueue)&&(t.updateQueue=n,t.flags|=4),rl(r,!0),null===r.tail&&\"hidden\"===r.tailMode&&!u.alternate&&!Ui)return null!==(t=t.lastEffect=r.lastEffect)&&(t.nextEffect=null),null}else 2*Bo()-r.renderingStartTime>Wl&&1073741824!==n&&(t.flags|=64,l=!0,rl(r,!1),t.lanes=33554432);r.isBackwards?(u.sibling=t.child,t.child=u):(null!==(n=r.last)?n.sibling=u:t.child=u,r.last=u)}return null!==r.tail?(n=r.tail,r.rendering=n,r.tail=n.sibling,r.lastEffect=t.lastEffect,r.renderingStartTime=Bo(),n.sibling=null,t=Di.current,so(Di,l?1&t|2:1&t),n):null;case 23:case 24:return ws(),null!==e&&null!==e.memoizedState!==(null!==t.memoizedState)&&\"unstable-defer-without-hiding\"!==r.mode&&(t.flags|=4),null}throw Error(a(156,t.tag))}function il(e){switch(e.tag){case 1:mo(e.type)&&go();var t=e.flags;return 4096&t?(e.flags=-4097&t|64,e):null;case 3:if(Ii(),lo(fo),lo(co),qi(),0!==(64&(t=e.flags)))throw Error(a(285));return e.flags=-4097&t|64,e;case 5:return Ai(e),null;case 13:return lo(Di),4096&(t=e.flags)?(e.flags=-4097&t|64,e):null;case 19:return lo(Di),null;case 4:return Ii(),null;case 10:return ti(e),null;case 23:case 24:return ws(),null;default:return null}}function al(e,t){try{var n=\"\",r=t;do{n+=G(r),r=r.return}while(r);var o=n}catch(i){o=\"\\nError generating stack: \"+i.message+\"\\n\"+i.stack}return{value:e,source:t,stack:o}}function ll(e,t){try{console.error(t.value)}catch(n){setTimeout((function(){throw n}))}}$a=function(e,t){for(var n=t.child;null!==n;){if(5===n.tag||6===n.tag)e.appendChild(n.stateNode);else if(4!==n.tag&&null!==n.child){n.child.return=n,n=n.child;continue}if(n===t)break;for(;null===n.sibling;){if(null===n.return||n.return===t)return;n=n.return}n.sibling.return=n.return,n=n.sibling}},Ga=function(e,t,n,r){var i=e.memoizedProps;if(i!==r){e=t.stateNode,Pi(Ci.current);var a,l=null;switch(n){case\"input\":i=J(e,i),r=J(e,r),l=[];break;case\"option\":i=ie(e,i),r=ie(e,r),l=[];break;case\"select\":i=o({},i,{value:void 0}),r=o({},r,{value:void 0}),l=[];break;case\"textarea\":i=le(e,i),r=le(e,r),l=[];break;default:\"function\"!==typeof i.onClick&&\"function\"===typeof r.onClick&&(e.onclick=Mr)}for(d in _e(n,r),n=null,i)if(!r.hasOwnProperty(d)&&i.hasOwnProperty(d)&&null!=i[d])if(\"style\"===d){var u=i[d];for(a in u)u.hasOwnProperty(a)&&(n||(n={}),n[a]=\"\")}else\"dangerouslySetInnerHTML\"!==d&&\"children\"!==d&&\"suppressContentEditableWarning\"!==d&&\"suppressHydrationWarning\"!==d&&\"autoFocus\"!==d&&(s.hasOwnProperty(d)?l||(l=[]):(l=l||[]).push(d,null));for(d in r){var c=r[d];if(u=null!=i?i[d]:void 0,r.hasOwnProperty(d)&&c!==u&&(null!=c||null!=u))if(\"style\"===d)if(u){for(a in u)!u.hasOwnProperty(a)||c&&c.hasOwnProperty(a)||(n||(n={}),n[a]=\"\");for(a in c)c.hasOwnProperty(a)&&u[a]!==c[a]&&(n||(n={}),n[a]=c[a])}else n||(l||(l=[]),l.push(d,n)),n=c;else\"dangerouslySetInnerHTML\"===d?(c=c?c.__html:void 0,u=u?u.__html:void 0,null!=c&&u!==c&&(l=l||[]).push(d,c)):\"children\"===d?\"string\"!==typeof c&&\"number\"!==typeof c||(l=l||[]).push(d,\"\"+c):\"suppressContentEditableWarning\"!==d&&\"suppressHydrationWarning\"!==d&&(s.hasOwnProperty(d)?(null!=c&&\"onScroll\"===d&&Cr(\"scroll\",e),l||u===c||(l=[])):\"object\"===typeof c&&null!==c&&c.$$typeof===D?c.toString():(l=l||[]).push(d,c))}n&&(l=l||[]).push(\"style\",n);var d=l;(t.updateQueue=d)&&(t.flags|=4)}},qa=function(e,t,n,r){n!==r&&(t.flags|=4)};var sl=\"function\"===typeof WeakMap?WeakMap:Map;function ul(e,t,n){(n=si(-1,n)).tag=3,n.payload={element:null};var r=t.value;return n.callback=function(){ql||(ql=!0,Yl=r),ll(0,t)},n}function cl(e,t,n){(n=si(-1,n)).tag=3;var r=e.type.getDerivedStateFromError;if(\"function\"===typeof r){var o=t.value;n.payload=function(){return ll(0,t),r(o)}}var i=e.stateNode;return null!==i&&\"function\"===typeof i.componentDidCatch&&(n.callback=function(){\"function\"!==typeof r&&(null===Kl?Kl=new Set([this]):Kl.add(this),ll(0,t));var e=t.stack;this.componentDidCatch(t.value,{componentStack:null!==e?e:\"\"})}),n}var dl=\"function\"===typeof WeakSet?WeakSet:Set;function fl(e){var t=e.ref;if(null!==t)if(\"function\"===typeof t)try{t(null)}catch(n){Ms(e,n)}else t.current=null}function pl(e,t){switch(t.tag){case 0:case 11:case 15:case 22:return;case 1:if(256&t.flags&&null!==e){var n=e.memoizedProps,r=e.memoizedState;t=(e=t.stateNode).getSnapshotBeforeUpdate(t.elementType===t.type?n:Ko(t.type,n),r),e.__reactInternalSnapshotBeforeUpdate=t}return;case 3:return void(256&t.flags&&Hr(t.stateNode.containerInfo));case 5:case 6:case 4:case 17:return}throw Error(a(163))}function hl(e,t,n){switch(n.tag){case 0:case 11:case 15:case 22:if(null!==(t=null!==(t=n.updateQueue)?t.lastEffect:null)){e=t=t.next;do{if(3===(3&e.tag)){var r=e.create;e.destroy=r()}e=e.next}while(e!==t)}if(null!==(t=null!==(t=n.updateQueue)?t.lastEffect:null)){e=t=t.next;do{var o=e;r=o.next,0!==(4&(o=o.tag))&&0!==(1&o)&&(As(n,e),Rs(n,e)),e=r}while(e!==t)}return;case 1:return e=n.stateNode,4&n.flags&&(null===t?e.componentDidMount():(r=n.elementType===n.type?t.memoizedProps:Ko(n.type,t.memoizedProps),e.componentDidUpdate(r,t.memoizedState,e.__reactInternalSnapshotBeforeUpdate))),void(null!==(t=n.updateQueue)&&fi(n,t,e));case 3:if(null!==(t=n.updateQueue)){if(e=null,null!==n.child)switch(n.child.tag){case 5:e=n.child.stateNode;break;case 1:e=n.child.stateNode}fi(n,t,e)}return;case 5:return e=n.stateNode,void(null===t&&4&n.flags&&Fr(n.type,n.memoizedProps)&&e.focus());case 6:case 4:case 12:return;case 13:return void(null===n.memoizedState&&(n=n.alternate,null!==n&&(n=n.memoizedState,null!==n&&(n=n.dehydrated,null!==n&&Ot(n)))));case 19:case 17:case 20:case 21:case 23:case 24:return}throw Error(a(163))}function ml(e,t){for(var n=e;;){if(5===n.tag){var r=n.stateNode;if(t)\"function\"===typeof(r=r.style).setProperty?r.setProperty(\"display\",\"none\",\"important\"):r.display=\"none\";else{r=n.stateNode;var o=n.memoizedProps.style;o=void 0!==o&&null!==o&&o.hasOwnProperty(\"display\")?o.display:null,r.style.display=Se(\"display\",o)}}else if(6===n.tag)n.stateNode.nodeValue=t?\"\":n.memoizedProps;else if((23!==n.tag&&24!==n.tag||null===n.memoizedState||n===e)&&null!==n.child){n.child.return=n,n=n.child;continue}if(n===e)break;for(;null===n.sibling;){if(null===n.return||n.return===e)return;n=n.return}n.sibling.return=n.return,n=n.sibling}}function gl(e,t){if(Oo&&\"function\"===typeof Oo.onCommitFiberUnmount)try{Oo.onCommitFiberUnmount(So,t)}catch(i){}switch(t.tag){case 0:case 11:case 14:case 15:case 22:if(null!==(e=t.updateQueue)&&null!==(e=e.lastEffect)){var n=e=e.next;do{var r=n,o=r.destroy;if(r=r.tag,void 0!==o)if(0!==(4&r))As(t,n);else{r=t;try{o()}catch(i){Ms(r,i)}}n=n.next}while(n!==e)}break;case 1:if(fl(t),\"function\"===typeof(e=t.stateNode).componentWillUnmount)try{e.props=t.memoizedProps,e.state=t.memoizedState,e.componentWillUnmount()}catch(i){Ms(t,i)}break;case 5:fl(t);break;case 4:Ol(e,t)}}function vl(e){e.alternate=null,e.child=null,e.dependencies=null,e.firstEffect=null,e.lastEffect=null,e.memoizedProps=null,e.memoizedState=null,e.pendingProps=null,e.return=null,e.updateQueue=null}function bl(e){return 5===e.tag||3===e.tag||4===e.tag}function yl(e){e:{for(var t=e.return;null!==t;){if(bl(t))break e;t=t.return}throw Error(a(160))}var n=t;switch(t=n.stateNode,n.tag){case 5:var r=!1;break;case 3:case 4:t=t.containerInfo,r=!0;break;default:throw Error(a(161))}16&n.flags&&(be(t,\"\"),n.flags&=-17);e:t:for(n=e;;){for(;null===n.sibling;){if(null===n.return||bl(n.return)){n=null;break e}n=n.return}for(n.sibling.return=n.return,n=n.sibling;5!==n.tag&&6!==n.tag&&18!==n.tag;){if(2&n.flags)continue t;if(null===n.child||4===n.tag)continue t;n.child.return=n,n=n.child}if(!(2&n.flags)){n=n.stateNode;break e}}r?wl(e,n,t):Sl(e,n,t)}function wl(e,t,n){var r=e.tag,o=5===r||6===r;if(o)e=o?e.stateNode:e.stateNode.instance,t?8===n.nodeType?n.parentNode.insertBefore(e,t):n.insertBefore(e,t):(8===n.nodeType?(t=n.parentNode).insertBefore(e,n):(t=n).appendChild(e),null!==(n=n._reactRootContainer)&&void 0!==n||null!==t.onclick||(t.onclick=Mr));else if(4!==r&&null!==(e=e.child))for(wl(e,t,n),e=e.sibling;null!==e;)wl(e,t,n),e=e.sibling}function Sl(e,t,n){var r=e.tag,o=5===r||6===r;if(o)e=o?e.stateNode:e.stateNode.instance,t?n.insertBefore(e,t):n.appendChild(e);else if(4!==r&&null!==(e=e.child))for(Sl(e,t,n),e=e.sibling;null!==e;)Sl(e,t,n),e=e.sibling}function Ol(e,t){for(var n,r,o=t,i=!1;;){if(!i){i=o.return;e:for(;;){if(null===i)throw Error(a(160));switch(n=i.stateNode,i.tag){case 5:r=!1;break e;case 3:case 4:n=n.containerInfo,r=!0;break e}i=i.return}i=!0}if(5===o.tag||6===o.tag){e:for(var l=e,s=o,u=s;;)if(gl(l,u),null!==u.child&&4!==u.tag)u.child.return=u,u=u.child;else{if(u===s)break e;for(;null===u.sibling;){if(null===u.return||u.return===s)break e;u=u.return}u.sibling.return=u.return,u=u.sibling}r?(l=n,s=o.stateNode,8===l.nodeType?l.parentNode.removeChild(s):l.removeChild(s)):n.removeChild(o.stateNode)}else if(4===o.tag){if(null!==o.child){n=o.stateNode.containerInfo,r=!0,o.child.return=o,o=o.child;continue}}else if(gl(e,o),null!==o.child){o.child.return=o,o=o.child;continue}if(o===t)break;for(;null===o.sibling;){if(null===o.return||o.return===t)return;4===(o=o.return).tag&&(i=!1)}o.sibling.return=o.return,o=o.sibling}}function xl(e,t){switch(t.tag){case 0:case 11:case 14:case 15:case 22:var n=t.updateQueue;if(null!==(n=null!==n?n.lastEffect:null)){var r=n=n.next;do{3===(3&r.tag)&&(e=r.destroy,r.destroy=void 0,void 0!==e&&e()),r=r.next}while(r!==n)}return;case 1:return;case 5:if(null!=(n=t.stateNode)){r=t.memoizedProps;var o=null!==e?e.memoizedProps:r;e=t.type;var i=t.updateQueue;if(t.updateQueue=null,null!==i){for(n[Qr]=r,\"input\"===e&&\"radio\"===r.type&&null!=r.name&&te(n,r),je(e,o),t=je(e,r),o=0;o<i.length;o+=2){var l=i[o],s=i[o+1];\"style\"===l?Oe(n,s):\"dangerouslySetInnerHTML\"===l?ve(n,s):\"children\"===l?be(n,s):w(n,l,s,t)}switch(e){case\"input\":ne(n,r);break;case\"textarea\":ue(n,r);break;case\"select\":e=n._wrapperState.wasMultiple,n._wrapperState.wasMultiple=!!r.multiple,null!=(i=r.value)?ae(n,!!r.multiple,i,!1):e!==!!r.multiple&&(null!=r.defaultValue?ae(n,!!r.multiple,r.defaultValue,!0):ae(n,!!r.multiple,r.multiple?[]:\"\",!1))}}}return;case 6:if(null===t.stateNode)throw Error(a(162));return void(t.stateNode.nodeValue=t.memoizedProps);case 3:return void((n=t.stateNode).hydrate&&(n.hydrate=!1,Ot(n.containerInfo)));case 12:return;case 13:return null!==t.memoizedState&&(Vl=Bo(),ml(t.child,!0)),void _l(t);case 19:return void _l(t);case 17:return;case 23:case 24:return void ml(t,null!==t.memoizedState)}throw Error(a(163))}function _l(e){var t=e.updateQueue;if(null!==t){e.updateQueue=null;var n=e.stateNode;null===n&&(n=e.stateNode=new dl),t.forEach((function(t){var r=Us.bind(null,e,t);n.has(t)||(n.add(t),t.then(r,r))}))}}function jl(e,t){return null!==e&&(null===(e=e.memoizedState)||null!==e.dehydrated)&&(null!==(t=t.memoizedState)&&null===t.dehydrated)}var El=Math.ceil,Cl=S.ReactCurrentDispatcher,kl=S.ReactCurrentOwner,Tl=0,Pl=null,Nl=null,Il=0,Rl=0,Al=ao(0),Dl=0,Ll=null,Ml=0,zl=0,Ul=0,Fl=0,Bl=null,Vl=0,Wl=1/0;function Hl(){Wl=Bo()+500}var $l,Gl=null,ql=!1,Yl=null,Kl=null,Ql=!1,Xl=null,Zl=90,Jl=[],es=[],ts=null,ns=0,rs=null,os=-1,is=0,as=0,ls=null,ss=!1;function us(){return 0!==(48&Tl)?Bo():-1!==os?os:os=Bo()}function cs(e){if(0===(2&(e=e.mode)))return 1;if(0===(4&e))return 99===Vo()?1:2;if(0===is&&(is=Ml),0!==Yo.transition){0!==as&&(as=null!==Bl?Bl.pendingLanes:0),e=is;var t=4186112&~as;return 0===(t&=-t)&&(0===(t=(e=4186112&~e)&-e)&&(t=8192)),t}return e=Vo(),0!==(4&Tl)&&98===e?e=Ft(12,is):e=Ft(e=function(e){switch(e){case 99:return 15;case 98:return 10;case 97:case 96:return 8;case 95:return 2;default:return 0}}(e),is),e}function ds(e,t,n){if(50<ns)throw ns=0,rs=null,Error(a(185));if(null===(e=fs(e,t)))return null;Wt(e,t,n),e===Pl&&(Ul|=t,4===Dl&&ms(e,Il));var r=Vo();1===t?0!==(8&Tl)&&0===(48&Tl)?gs(e):(ps(e,n),0===Tl&&(Hl(),Go())):(0===(4&Tl)||98!==r&&99!==r||(null===ts?ts=new Set([e]):ts.add(e)),ps(e,n)),Bl=e}function fs(e,t){e.lanes|=t;var n=e.alternate;for(null!==n&&(n.lanes|=t),n=e,e=e.return;null!==e;)e.childLanes|=t,null!==(n=e.alternate)&&(n.childLanes|=t),n=e,e=e.return;return 3===n.tag?n.stateNode:null}function ps(e,t){for(var n=e.callbackNode,r=e.suspendedLanes,o=e.pingedLanes,i=e.expirationTimes,l=e.pendingLanes;0<l;){var s=31-Ht(l),u=1<<s,c=i[s];if(-1===c){if(0===(u&r)||0!==(u&o)){c=t,Mt(u);var d=Lt;i[s]=10<=d?c+250:6<=d?c+5e3:-1}}else c<=t&&(e.expiredLanes|=u);l&=~u}if(r=zt(e,e===Pl?Il:0),t=Lt,0===r)null!==n&&(n!==Do&&jo(n),e.callbackNode=null,e.callbackPriority=0);else{if(null!==n){if(e.callbackPriority===t)return;n!==Do&&jo(n)}15===t?(n=gs.bind(null,e),null===Mo?(Mo=[n],zo=_o(Po,qo)):Mo.push(n),n=Do):14===t?n=$o(99,gs.bind(null,e)):n=$o(n=function(e){switch(e){case 15:case 14:return 99;case 13:case 12:case 11:case 10:return 98;case 9:case 8:case 7:case 6:case 4:case 5:return 97;case 3:case 2:case 1:return 95;case 0:return 90;default:throw Error(a(358,e))}}(t),hs.bind(null,e)),e.callbackPriority=t,e.callbackNode=n}}function hs(e){if(os=-1,as=is=0,0!==(48&Tl))throw Error(a(327));var t=e.callbackNode;if(Is()&&e.callbackNode!==t)return null;var n=zt(e,e===Pl?Il:0);if(0===n)return null;var r=n,o=Tl;Tl|=16;var i=xs();for(Pl===e&&Il===r||(Hl(),Ss(e,r));;)try{Es();break}catch(s){Os(e,s)}if(ei(),Cl.current=i,Tl=o,null!==Nl?r=0:(Pl=null,Il=0,r=Dl),0!==(Ml&Ul))Ss(e,0);else if(0!==r){if(2===r&&(Tl|=64,e.hydrate&&(e.hydrate=!1,Hr(e.containerInfo)),0!==(n=Ut(e))&&(r=_s(e,n))),1===r)throw t=Ll,Ss(e,0),ms(e,n),ps(e,Bo()),t;switch(e.finishedWork=e.current.alternate,e.finishedLanes=n,r){case 0:case 1:throw Error(a(345));case 2:Ts(e);break;case 3:if(ms(e,n),(62914560&n)===n&&10<(r=Vl+500-Bo())){if(0!==zt(e,0))break;if(((o=e.suspendedLanes)&n)!==n){us(),e.pingedLanes|=e.suspendedLanes&o;break}e.timeoutHandle=Vr(Ts.bind(null,e),r);break}Ts(e);break;case 4:if(ms(e,n),(4186112&n)===n)break;for(r=e.eventTimes,o=-1;0<n;){var l=31-Ht(n);i=1<<l,(l=r[l])>o&&(o=l),n&=~i}if(n=o,10<(n=(120>(n=Bo()-n)?120:480>n?480:1080>n?1080:1920>n?1920:3e3>n?3e3:4320>n?4320:1960*El(n/1960))-n)){e.timeoutHandle=Vr(Ts.bind(null,e),n);break}Ts(e);break;case 5:Ts(e);break;default:throw Error(a(329))}}return ps(e,Bo()),e.callbackNode===t?hs.bind(null,e):null}function ms(e,t){for(t&=~Fl,t&=~Ul,e.suspendedLanes|=t,e.pingedLanes&=~t,e=e.expirationTimes;0<t;){var n=31-Ht(t),r=1<<n;e[n]=-1,t&=~r}}function gs(e){if(0!==(48&Tl))throw Error(a(327));if(Is(),e===Pl&&0!==(e.expiredLanes&Il)){var t=Il,n=_s(e,t);0!==(Ml&Ul)&&(n=_s(e,t=zt(e,t)))}else n=_s(e,t=zt(e,0));if(0!==e.tag&&2===n&&(Tl|=64,e.hydrate&&(e.hydrate=!1,Hr(e.containerInfo)),0!==(t=Ut(e))&&(n=_s(e,t))),1===n)throw n=Ll,Ss(e,0),ms(e,t),ps(e,Bo()),n;return e.finishedWork=e.current.alternate,e.finishedLanes=t,Ts(e),ps(e,Bo()),null}function vs(e,t){var n=Tl;Tl|=1;try{return e(t)}finally{0===(Tl=n)&&(Hl(),Go())}}function bs(e,t){var n=Tl;Tl&=-2,Tl|=8;try{return e(t)}finally{0===(Tl=n)&&(Hl(),Go())}}function ys(e,t){so(Al,Rl),Rl|=t,Ml|=t}function ws(){Rl=Al.current,lo(Al)}function Ss(e,t){e.finishedWork=null,e.finishedLanes=0;var n=e.timeoutHandle;if(-1!==n&&(e.timeoutHandle=-1,Wr(n)),null!==Nl)for(n=Nl.return;null!==n;){var r=n;switch(r.tag){case 1:null!==(r=r.type.childContextTypes)&&void 0!==r&&go();break;case 3:Ii(),lo(fo),lo(co),qi();break;case 5:Ai(r);break;case 4:Ii();break;case 13:case 19:lo(Di);break;case 10:ti(r);break;case 23:case 24:ws()}n=n.return}Pl=e,Nl=Ws(e.current,null),Il=Rl=Ml=t,Dl=0,Ll=null,Fl=Ul=zl=0}function Os(e,t){for(;;){var n=Nl;try{if(ei(),Yi.current=Ta,ea){for(var r=Xi.memoizedState;null!==r;){var o=r.queue;null!==o&&(o.pending=null),r=r.next}ea=!1}if(Qi=0,Ji=Zi=Xi=null,ta=!1,kl.current=null,null===n||null===n.return){Dl=1,Ll=t,Nl=null;break}e:{var i=e,a=n.return,l=n,s=t;if(t=Il,l.flags|=2048,l.firstEffect=l.lastEffect=null,null!==s&&\"object\"===typeof s&&\"function\"===typeof s.then){var u=s;if(0===(2&l.mode)){var c=l.alternate;c?(l.updateQueue=c.updateQueue,l.memoizedState=c.memoizedState,l.lanes=c.lanes):(l.updateQueue=null,l.memoizedState=null)}var d=0!==(1&Di.current),f=a;do{var p;if(p=13===f.tag){var h=f.memoizedState;if(null!==h)p=null!==h.dehydrated;else{var m=f.memoizedProps;p=void 0!==m.fallback&&(!0!==m.unstable_avoidThisFallback||!d)}}if(p){var g=f.updateQueue;if(null===g){var v=new Set;v.add(u),f.updateQueue=v}else g.add(u);if(0===(2&f.mode)){if(f.flags|=64,l.flags|=16384,l.flags&=-2981,1===l.tag)if(null===l.alternate)l.tag=17;else{var b=si(-1,1);b.tag=2,ui(l,b)}l.lanes|=1;break e}s=void 0,l=t;var y=i.pingCache;if(null===y?(y=i.pingCache=new sl,s=new Set,y.set(u,s)):void 0===(s=y.get(u))&&(s=new Set,y.set(u,s)),!s.has(l)){s.add(l);var w=zs.bind(null,i,u,l);u.then(w,w)}f.flags|=4096,f.lanes=t;break e}f=f.return}while(null!==f);s=Error((q(l.type)||\"A React component\")+\" suspended while rendering, but no fallback UI was specified.\\n\\nAdd a <Suspense fallback=...> component higher in the tree to provide a loading indicator or placeholder to display.\")}5!==Dl&&(Dl=2),s=al(s,l),f=a;do{switch(f.tag){case 3:i=s,f.flags|=4096,t&=-t,f.lanes|=t,ci(f,ul(0,i,t));break e;case 1:i=s;var S=f.type,O=f.stateNode;if(0===(64&f.flags)&&(\"function\"===typeof S.getDerivedStateFromError||null!==O&&\"function\"===typeof O.componentDidCatch&&(null===Kl||!Kl.has(O)))){f.flags|=4096,t&=-t,f.lanes|=t,ci(f,cl(f,i,t));break e}}f=f.return}while(null!==f)}ks(n)}catch(x){t=x,Nl===n&&null!==n&&(Nl=n=n.return);continue}break}}function xs(){var e=Cl.current;return Cl.current=Ta,null===e?Ta:e}function _s(e,t){var n=Tl;Tl|=16;var r=xs();for(Pl===e&&Il===t||Ss(e,t);;)try{js();break}catch(o){Os(e,o)}if(ei(),Tl=n,Cl.current=r,null!==Nl)throw Error(a(261));return Pl=null,Il=0,Dl}function js(){for(;null!==Nl;)Cs(Nl)}function Es(){for(;null!==Nl&&!Eo();)Cs(Nl)}function Cs(e){var t=$l(e.alternate,e,Rl);e.memoizedProps=e.pendingProps,null===t?ks(e):Nl=t,kl.current=null}function ks(e){var t=e;do{var n=t.alternate;if(e=t.return,0===(2048&t.flags)){if(null!==(n=ol(n,t,Rl)))return void(Nl=n);if(24!==(n=t).tag&&23!==n.tag||null===n.memoizedState||0!==(1073741824&Rl)||0===(4&n.mode)){for(var r=0,o=n.child;null!==o;)r|=o.lanes|o.childLanes,o=o.sibling;n.childLanes=r}null!==e&&0===(2048&e.flags)&&(null===e.firstEffect&&(e.firstEffect=t.firstEffect),null!==t.lastEffect&&(null!==e.lastEffect&&(e.lastEffect.nextEffect=t.firstEffect),e.lastEffect=t.lastEffect),1<t.flags&&(null!==e.lastEffect?e.lastEffect.nextEffect=t:e.firstEffect=t,e.lastEffect=t))}else{if(null!==(n=il(t)))return n.flags&=2047,void(Nl=n);null!==e&&(e.firstEffect=e.lastEffect=null,e.flags|=2048)}if(null!==(t=t.sibling))return void(Nl=t);Nl=t=e}while(null!==t);0===Dl&&(Dl=5)}function Ts(e){var t=Vo();return Ho(99,Ps.bind(null,e,t)),null}function Ps(e,t){do{Is()}while(null!==Xl);if(0!==(48&Tl))throw Error(a(327));var n=e.finishedWork;if(null===n)return null;if(e.finishedWork=null,e.finishedLanes=0,n===e.current)throw Error(a(177));e.callbackNode=null;var r=n.lanes|n.childLanes,o=r,i=e.pendingLanes&~o;e.pendingLanes=o,e.suspendedLanes=0,e.pingedLanes=0,e.expiredLanes&=o,e.mutableReadLanes&=o,e.entangledLanes&=o,o=e.entanglements;for(var l=e.eventTimes,s=e.expirationTimes;0<i;){var u=31-Ht(i),c=1<<u;o[u]=0,l[u]=-1,s[u]=-1,i&=~c}if(null!==ts&&0===(24&r)&&ts.has(e)&&ts.delete(e),e===Pl&&(Nl=Pl=null,Il=0),1<n.flags?null!==n.lastEffect?(n.lastEffect.nextEffect=n,r=n.firstEffect):r=n:r=n.firstEffect,null!==r){if(o=Tl,Tl|=32,kl.current=null,zr=Kt,hr(l=pr())){if(\"selectionStart\"in l)s={start:l.selectionStart,end:l.selectionEnd};else e:if(s=(s=l.ownerDocument)&&s.defaultView||window,(c=s.getSelection&&s.getSelection())&&0!==c.rangeCount){s=c.anchorNode,i=c.anchorOffset,u=c.focusNode,c=c.focusOffset;try{s.nodeType,u.nodeType}catch(E){s=null;break e}var d=0,f=-1,p=-1,h=0,m=0,g=l,v=null;t:for(;;){for(var b;g!==s||0!==i&&3!==g.nodeType||(f=d+i),g!==u||0!==c&&3!==g.nodeType||(p=d+c),3===g.nodeType&&(d+=g.nodeValue.length),null!==(b=g.firstChild);)v=g,g=b;for(;;){if(g===l)break t;if(v===s&&++h===i&&(f=d),v===u&&++m===c&&(p=d),null!==(b=g.nextSibling))break;v=(g=v).parentNode}g=b}s=-1===f||-1===p?null:{start:f,end:p}}else s=null;s=s||{start:0,end:0}}else s=null;Ur={focusedElem:l,selectionRange:s},Kt=!1,ls=null,ss=!1,Gl=r;do{try{Ns()}catch(E){if(null===Gl)throw Error(a(330));Ms(Gl,E),Gl=Gl.nextEffect}}while(null!==Gl);ls=null,Gl=r;do{try{for(l=e;null!==Gl;){var y=Gl.flags;if(16&y&&be(Gl.stateNode,\"\"),128&y){var w=Gl.alternate;if(null!==w){var S=w.ref;null!==S&&(\"function\"===typeof S?S(null):S.current=null)}}switch(1038&y){case 2:yl(Gl),Gl.flags&=-3;break;case 6:yl(Gl),Gl.flags&=-3,xl(Gl.alternate,Gl);break;case 1024:Gl.flags&=-1025;break;case 1028:Gl.flags&=-1025,xl(Gl.alternate,Gl);break;case 4:xl(Gl.alternate,Gl);break;case 8:Ol(l,s=Gl);var O=s.alternate;vl(s),null!==O&&vl(O)}Gl=Gl.nextEffect}}catch(E){if(null===Gl)throw Error(a(330));Ms(Gl,E),Gl=Gl.nextEffect}}while(null!==Gl);if(S=Ur,w=pr(),y=S.focusedElem,l=S.selectionRange,w!==y&&y&&y.ownerDocument&&fr(y.ownerDocument.documentElement,y)){null!==l&&hr(y)&&(w=l.start,void 0===(S=l.end)&&(S=w),\"selectionStart\"in y?(y.selectionStart=w,y.selectionEnd=Math.min(S,y.value.length)):(S=(w=y.ownerDocument||document)&&w.defaultView||window).getSelection&&(S=S.getSelection(),s=y.textContent.length,O=Math.min(l.start,s),l=void 0===l.end?O:Math.min(l.end,s),!S.extend&&O>l&&(s=l,l=O,O=s),s=dr(y,O),i=dr(y,l),s&&i&&(1!==S.rangeCount||S.anchorNode!==s.node||S.anchorOffset!==s.offset||S.focusNode!==i.node||S.focusOffset!==i.offset)&&((w=w.createRange()).setStart(s.node,s.offset),S.removeAllRanges(),O>l?(S.addRange(w),S.extend(i.node,i.offset)):(w.setEnd(i.node,i.offset),S.addRange(w))))),w=[];for(S=y;S=S.parentNode;)1===S.nodeType&&w.push({element:S,left:S.scrollLeft,top:S.scrollTop});for(\"function\"===typeof y.focus&&y.focus(),y=0;y<w.length;y++)(S=w[y]).element.scrollLeft=S.left,S.element.scrollTop=S.top}Kt=!!zr,Ur=zr=null,e.current=n,Gl=r;do{try{for(y=e;null!==Gl;){var x=Gl.flags;if(36&x&&hl(y,Gl.alternate,Gl),128&x){w=void 0;var _=Gl.ref;if(null!==_){var j=Gl.stateNode;switch(Gl.tag){case 5:w=j;break;default:w=j}\"function\"===typeof _?_(w):_.current=w}}Gl=Gl.nextEffect}}catch(E){if(null===Gl)throw Error(a(330));Ms(Gl,E),Gl=Gl.nextEffect}}while(null!==Gl);Gl=null,Lo(),Tl=o}else e.current=n;if(Ql)Ql=!1,Xl=e,Zl=t;else for(Gl=r;null!==Gl;)t=Gl.nextEffect,Gl.nextEffect=null,8&Gl.flags&&((x=Gl).sibling=null,x.stateNode=null),Gl=t;if(0===(r=e.pendingLanes)&&(Kl=null),1===r?e===rs?ns++:(ns=0,rs=e):ns=0,n=n.stateNode,Oo&&\"function\"===typeof Oo.onCommitFiberRoot)try{Oo.onCommitFiberRoot(So,n,void 0,64===(64&n.current.flags))}catch(E){}if(ps(e,Bo()),ql)throw ql=!1,e=Yl,Yl=null,e;return 0!==(8&Tl)||Go(),null}function Ns(){for(;null!==Gl;){var e=Gl.alternate;ss||null===ls||(0!==(8&Gl.flags)?et(Gl,ls)&&(ss=!0):13===Gl.tag&&jl(e,Gl)&&et(Gl,ls)&&(ss=!0));var t=Gl.flags;0!==(256&t)&&pl(e,Gl),0===(512&t)||Ql||(Ql=!0,$o(97,(function(){return Is(),null}))),Gl=Gl.nextEffect}}function Is(){if(90!==Zl){var e=97<Zl?97:Zl;return Zl=90,Ho(e,Ds)}return!1}function Rs(e,t){Jl.push(t,e),Ql||(Ql=!0,$o(97,(function(){return Is(),null})))}function As(e,t){es.push(t,e),Ql||(Ql=!0,$o(97,(function(){return Is(),null})))}function Ds(){if(null===Xl)return!1;var e=Xl;if(Xl=null,0!==(48&Tl))throw Error(a(331));var t=Tl;Tl|=32;var n=es;es=[];for(var r=0;r<n.length;r+=2){var o=n[r],i=n[r+1],l=o.destroy;if(o.destroy=void 0,\"function\"===typeof l)try{l()}catch(u){if(null===i)throw Error(a(330));Ms(i,u)}}for(n=Jl,Jl=[],r=0;r<n.length;r+=2){o=n[r],i=n[r+1];try{var s=o.create;o.destroy=s()}catch(u){if(null===i)throw Error(a(330));Ms(i,u)}}for(s=e.current.firstEffect;null!==s;)e=s.nextEffect,s.nextEffect=null,8&s.flags&&(s.sibling=null,s.stateNode=null),s=e;return Tl=t,Go(),!0}function Ls(e,t,n){ui(e,t=ul(0,t=al(n,t),1)),t=us(),null!==(e=fs(e,1))&&(Wt(e,1,t),ps(e,t))}function Ms(e,t){if(3===e.tag)Ls(e,e,t);else for(var n=e.return;null!==n;){if(3===n.tag){Ls(n,e,t);break}if(1===n.tag){var r=n.stateNode;if(\"function\"===typeof n.type.getDerivedStateFromError||\"function\"===typeof r.componentDidCatch&&(null===Kl||!Kl.has(r))){var o=cl(n,e=al(t,e),1);if(ui(n,o),o=us(),null!==(n=fs(n,1)))Wt(n,1,o),ps(n,o);else if(\"function\"===typeof r.componentDidCatch&&(null===Kl||!Kl.has(r)))try{r.componentDidCatch(t,e)}catch(i){}break}}n=n.return}}function zs(e,t,n){var r=e.pingCache;null!==r&&r.delete(t),t=us(),e.pingedLanes|=e.suspendedLanes&n,Pl===e&&(Il&n)===n&&(4===Dl||3===Dl&&(62914560&Il)===Il&&500>Bo()-Vl?Ss(e,0):Fl|=n),ps(e,t)}function Us(e,t){var n=e.stateNode;null!==n&&n.delete(t),0===(t=0)&&(0===(2&(t=e.mode))?t=1:0===(4&t)?t=99===Vo()?1:2:(0===is&&(is=Ml),0===(t=Bt(62914560&~is))&&(t=4194304))),n=us(),null!==(e=fs(e,t))&&(Wt(e,t,n),ps(e,n))}function Fs(e,t,n,r){this.tag=e,this.key=n,this.sibling=this.child=this.return=this.stateNode=this.type=this.elementType=null,this.index=0,this.ref=null,this.pendingProps=t,this.dependencies=this.memoizedState=this.updateQueue=this.memoizedProps=null,this.mode=r,this.flags=0,this.lastEffect=this.firstEffect=this.nextEffect=null,this.childLanes=this.lanes=0,this.alternate=null}function Bs(e,t,n,r){return new Fs(e,t,n,r)}function Vs(e){return!(!(e=e.prototype)||!e.isReactComponent)}function Ws(e,t){var n=e.alternate;return null===n?((n=Bs(e.tag,t,e.key,e.mode)).elementType=e.elementType,n.type=e.type,n.stateNode=e.stateNode,n.alternate=e,e.alternate=n):(n.pendingProps=t,n.type=e.type,n.flags=0,n.nextEffect=null,n.firstEffect=null,n.lastEffect=null),n.childLanes=e.childLanes,n.lanes=e.lanes,n.child=e.child,n.memoizedProps=e.memoizedProps,n.memoizedState=e.memoizedState,n.updateQueue=e.updateQueue,t=e.dependencies,n.dependencies=null===t?null:{lanes:t.lanes,firstContext:t.firstContext},n.sibling=e.sibling,n.index=e.index,n.ref=e.ref,n}function Hs(e,t,n,r,o,i){var l=2;if(r=e,\"function\"===typeof e)Vs(e)&&(l=1);else if(\"string\"===typeof e)l=5;else e:switch(e){case _:return $s(n.children,o,i,t);case L:l=8,o|=16;break;case j:l=8,o|=1;break;case E:return(e=Bs(12,n,t,8|o)).elementType=E,e.type=E,e.lanes=i,e;case P:return(e=Bs(13,n,t,o)).type=P,e.elementType=P,e.lanes=i,e;case N:return(e=Bs(19,n,t,o)).elementType=N,e.lanes=i,e;case M:return Gs(n,o,i,t);case z:return(e=Bs(24,n,t,o)).elementType=z,e.lanes=i,e;default:if(\"object\"===typeof e&&null!==e)switch(e.$$typeof){case C:l=10;break e;case k:l=9;break e;case T:l=11;break e;case I:l=14;break e;case R:l=16,r=null;break e;case A:l=22;break e}throw Error(a(130,null==e?e:typeof e,\"\"))}return(t=Bs(l,n,t,o)).elementType=e,t.type=r,t.lanes=i,t}function $s(e,t,n,r){return(e=Bs(7,e,r,t)).lanes=n,e}function Gs(e,t,n,r){return(e=Bs(23,e,r,t)).elementType=M,e.lanes=n,e}function qs(e,t,n){return(e=Bs(6,e,null,t)).lanes=n,e}function Ys(e,t,n){return(t=Bs(4,null!==e.children?e.children:[],e.key,t)).lanes=n,t.stateNode={containerInfo:e.containerInfo,pendingChildren:null,implementation:e.implementation},t}function Ks(e,t,n){this.tag=t,this.containerInfo=e,this.finishedWork=this.pingCache=this.current=this.pendingChildren=null,this.timeoutHandle=-1,this.pendingContext=this.context=null,this.hydrate=n,this.callbackNode=null,this.callbackPriority=0,this.eventTimes=Vt(0),this.expirationTimes=Vt(-1),this.entangledLanes=this.finishedLanes=this.mutableReadLanes=this.expiredLanes=this.pingedLanes=this.suspendedLanes=this.pendingLanes=0,this.entanglements=Vt(0),this.mutableSourceEagerHydrationData=null}function Qs(e,t,n){var r=3<arguments.length&&void 0!==arguments[3]?arguments[3]:null;return{$$typeof:x,key:null==r?null:\"\"+r,children:e,containerInfo:t,implementation:n}}function Xs(e,t,n,r){var o=t.current,i=us(),l=cs(o);e:if(n){t:{if(Qe(n=n._reactInternals)!==n||1!==n.tag)throw Error(a(170));var s=n;do{switch(s.tag){case 3:s=s.stateNode.context;break t;case 1:if(mo(s.type)){s=s.stateNode.__reactInternalMemoizedMergedChildContext;break t}}s=s.return}while(null!==s);throw Error(a(171))}if(1===n.tag){var u=n.type;if(mo(u)){n=bo(n,u,s);break e}}n=s}else n=uo;return null===t.context?t.context=n:t.pendingContext=n,(t=si(i,l)).payload={element:e},null!==(r=void 0===r?null:r)&&(t.callback=r),ui(o,t),ds(o,l,i),l}function Zs(e){if(!(e=e.current).child)return null;switch(e.child.tag){case 5:default:return e.child.stateNode}}function Js(e,t){if(null!==(e=e.memoizedState)&&null!==e.dehydrated){var n=e.retryLane;e.retryLane=0!==n&&n<t?n:t}}function eu(e,t){Js(e,t),(e=e.alternate)&&Js(e,t)}function tu(e,t,n){var r=null!=n&&null!=n.hydrationOptions&&n.hydrationOptions.mutableSources||null;if(n=new Ks(e,t,null!=n&&!0===n.hydrate),t=Bs(3,null,null,2===t?7:1===t?3:0),n.current=t,t.stateNode=n,ai(t),e[Xr]=n.current,Tr(8===e.nodeType?e.parentNode:e),r)for(e=0;e<r.length;e++){var o=(t=r[e])._getVersion;o=o(t._source),null==n.mutableSourceEagerHydrationData?n.mutableSourceEagerHydrationData=[t,o]:n.mutableSourceEagerHydrationData.push(t,o)}this._internalRoot=n}function nu(e){return!(!e||1!==e.nodeType&&9!==e.nodeType&&11!==e.nodeType&&(8!==e.nodeType||\" react-mount-point-unstable \"!==e.nodeValue))}function ru(e,t,n,r,o){var i=n._reactRootContainer;if(i){var a=i._internalRoot;if(\"function\"===typeof o){var l=o;o=function(){var e=Zs(a);l.call(e)}}Xs(t,a,e,o)}else{if(i=n._reactRootContainer=function(e,t){if(t||(t=!(!(t=e?9===e.nodeType?e.documentElement:e.firstChild:null)||1!==t.nodeType||!t.hasAttribute(\"data-reactroot\"))),!t)for(var n;n=e.lastChild;)e.removeChild(n);return new tu(e,0,t?{hydrate:!0}:void 0)}(n,r),a=i._internalRoot,\"function\"===typeof o){var s=o;o=function(){var e=Zs(a);s.call(e)}}bs((function(){Xs(t,a,e,o)}))}return Zs(a)}function ou(e,t){var n=2<arguments.length&&void 0!==arguments[2]?arguments[2]:null;if(!nu(t))throw Error(a(200));return Qs(e,t,null,n)}$l=function(e,t,n){var r=t.lanes;if(null!==e)if(e.memoizedProps!==t.pendingProps||fo.current)Aa=!0;else{if(0===(n&r)){switch(Aa=!1,t.tag){case 3:Ha(t),$i();break;case 5:Ri(t);break;case 1:mo(t.type)&&yo(t);break;case 4:Ni(t,t.stateNode.containerInfo);break;case 10:r=t.memoizedProps.value;var o=t.type._context;so(Qo,o._currentValue),o._currentValue=r;break;case 13:if(null!==t.memoizedState)return 0!==(n&t.child.childLanes)?Ka(e,t,n):(so(Di,1&Di.current),null!==(t=nl(e,t,n))?t.sibling:null);so(Di,1&Di.current);break;case 19:if(r=0!==(n&t.childLanes),0!==(64&e.flags)){if(r)return tl(e,t,n);t.flags|=64}if(null!==(o=t.memoizedState)&&(o.rendering=null,o.tail=null,o.lastEffect=null),so(Di,Di.current),r)break;return null;case 23:case 24:return t.lanes=0,Ua(e,t,n)}return nl(e,t,n)}Aa=0!==(16384&e.flags)}else Aa=!1;switch(t.lanes=0,t.tag){case 2:if(r=t.type,null!==e&&(e.alternate=null,t.alternate=null,t.flags|=2),e=t.pendingProps,o=ho(t,co.current),ri(t,n),o=oa(null,t,r,e,o,n),t.flags|=1,\"object\"===typeof o&&null!==o&&\"function\"===typeof o.render&&void 0===o.$$typeof){if(t.tag=1,t.memoizedState=null,t.updateQueue=null,mo(r)){var i=!0;yo(t)}else i=!1;t.memoizedState=null!==o.state&&void 0!==o.state?o.state:null,ai(t);var l=r.getDerivedStateFromProps;\"function\"===typeof l&&hi(t,r,l,e),o.updater=mi,t.stateNode=o,o._reactInternals=t,yi(t,r,e,n),t=Wa(null,t,r,!0,i,n)}else t.tag=0,Da(null,t,o,n),t=t.child;return t;case 16:o=t.elementType;e:{switch(null!==e&&(e.alternate=null,t.alternate=null,t.flags|=2),e=t.pendingProps,o=(i=o._init)(o._payload),t.type=o,i=t.tag=function(e){if(\"function\"===typeof e)return Vs(e)?1:0;if(void 0!==e&&null!==e){if((e=e.$$typeof)===T)return 11;if(e===I)return 14}return 2}(o),e=Ko(o,e),i){case 0:t=Ba(null,t,o,e,n);break e;case 1:t=Va(null,t,o,e,n);break e;case 11:t=La(null,t,o,e,n);break e;case 14:t=Ma(null,t,o,Ko(o.type,e),r,n);break e}throw Error(a(306,o,\"\"))}return t;case 0:return r=t.type,o=t.pendingProps,Ba(e,t,r,o=t.elementType===r?o:Ko(r,o),n);case 1:return r=t.type,o=t.pendingProps,Va(e,t,r,o=t.elementType===r?o:Ko(r,o),n);case 3:if(Ha(t),r=t.updateQueue,null===e||null===r)throw Error(a(282));if(r=t.pendingProps,o=null!==(o=t.memoizedState)?o.element:null,li(e,t),di(t,r,null,n),(r=t.memoizedState.element)===o)$i(),t=nl(e,t,n);else{if((i=(o=t.stateNode).hydrate)&&(zi=$r(t.stateNode.containerInfo.firstChild),Mi=t,i=Ui=!0),i){if(null!=(e=o.mutableSourceEagerHydrationData))for(o=0;o<e.length;o+=2)(i=e[o])._workInProgressVersionPrimary=e[o+1],Gi.push(i);for(n=ji(t,null,r,n),t.child=n;n;)n.flags=-3&n.flags|1024,n=n.sibling}else Da(e,t,r,n),$i();t=t.child}return t;case 5:return Ri(t),null===e&&Vi(t),r=t.type,o=t.pendingProps,i=null!==e?e.memoizedProps:null,l=o.children,Br(r,o)?l=null:null!==i&&Br(r,i)&&(t.flags|=16),Fa(e,t),Da(e,t,l,n),t.child;case 6:return null===e&&Vi(t),null;case 13:return Ka(e,t,n);case 4:return Ni(t,t.stateNode.containerInfo),r=t.pendingProps,null===e?t.child=_i(t,null,r,n):Da(e,t,r,n),t.child;case 11:return r=t.type,o=t.pendingProps,La(e,t,r,o=t.elementType===r?o:Ko(r,o),n);case 7:return Da(e,t,t.pendingProps,n),t.child;case 8:case 12:return Da(e,t,t.pendingProps.children,n),t.child;case 10:e:{r=t.type._context,o=t.pendingProps,l=t.memoizedProps,i=o.value;var s=t.type._context;if(so(Qo,s._currentValue),s._currentValue=i,null!==l)if(s=l.value,0===(i=lr(s,i)?0:0|(\"function\"===typeof r._calculateChangedBits?r._calculateChangedBits(s,i):1073741823))){if(l.children===o.children&&!fo.current){t=nl(e,t,n);break e}}else for(null!==(s=t.child)&&(s.return=t);null!==s;){var u=s.dependencies;if(null!==u){l=s.child;for(var c=u.firstContext;null!==c;){if(c.context===r&&0!==(c.observedBits&i)){1===s.tag&&((c=si(-1,n&-n)).tag=2,ui(s,c)),s.lanes|=n,null!==(c=s.alternate)&&(c.lanes|=n),ni(s.return,n),u.lanes|=n;break}c=c.next}}else l=10===s.tag&&s.type===t.type?null:s.child;if(null!==l)l.return=s;else for(l=s;null!==l;){if(l===t){l=null;break}if(null!==(s=l.sibling)){s.return=l.return,l=s;break}l=l.return}s=l}Da(e,t,o.children,n),t=t.child}return t;case 9:return o=t.type,r=(i=t.pendingProps).children,ri(t,n),r=r(o=oi(o,i.unstable_observedBits)),t.flags|=1,Da(e,t,r,n),t.child;case 14:return i=Ko(o=t.type,t.pendingProps),Ma(e,t,o,i=Ko(o.type,i),r,n);case 15:return za(e,t,t.type,t.pendingProps,r,n);case 17:return r=t.type,o=t.pendingProps,o=t.elementType===r?o:Ko(r,o),null!==e&&(e.alternate=null,t.alternate=null,t.flags|=2),t.tag=1,mo(r)?(e=!0,yo(t)):e=!1,ri(t,n),vi(t,r,o),yi(t,r,o,n),Wa(null,t,r,!0,e,n);case 19:return tl(e,t,n);case 23:case 24:return Ua(e,t,n)}throw Error(a(156,t.tag))},tu.prototype.render=function(e){Xs(e,this._internalRoot,null,null)},tu.prototype.unmount=function(){var e=this._internalRoot,t=e.containerInfo;Xs(null,e,null,(function(){t[Xr]=null}))},tt=function(e){13===e.tag&&(ds(e,4,us()),eu(e,4))},nt=function(e){13===e.tag&&(ds(e,67108864,us()),eu(e,67108864))},rt=function(e){if(13===e.tag){var t=us(),n=cs(e);ds(e,n,t),eu(e,n)}},ot=function(e,t){return t()},Ce=function(e,t,n){switch(t){case\"input\":if(ne(e,n),t=n.name,\"radio\"===n.type&&null!=t){for(n=e;n.parentNode;)n=n.parentNode;for(n=n.querySelectorAll(\"input[name=\"+JSON.stringify(\"\"+t)+'][type=\"radio\"]'),t=0;t<n.length;t++){var r=n[t];if(r!==e&&r.form===e.form){var o=no(r);if(!o)throw Error(a(90));X(r),ne(r,o)}}}break;case\"textarea\":ue(e,n);break;case\"select\":null!=(t=n.value)&&ae(e,!!n.multiple,t,!1)}},Re=vs,Ae=function(e,t,n,r,o){var i=Tl;Tl|=4;try{return Ho(98,e.bind(null,t,n,r,o))}finally{0===(Tl=i)&&(Hl(),Go())}},De=function(){0===(49&Tl)&&(function(){if(null!==ts){var e=ts;ts=null,e.forEach((function(e){e.expiredLanes|=24&e.pendingLanes,ps(e,Bo())}))}Go()}(),Is())},Le=function(e,t){var n=Tl;Tl|=2;try{return e(t)}finally{0===(Tl=n)&&(Hl(),Go())}};var iu={Events:[eo,to,no,Ne,Ie,Is,{current:!1}]},au={findFiberByHostInstance:Jr,bundleType:0,version:\"17.0.2\",rendererPackageName:\"react-dom\"},lu={bundleType:au.bundleType,version:au.version,rendererPackageName:au.rendererPackageName,rendererConfig:au.rendererConfig,overrideHookState:null,overrideHookStateDeletePath:null,overrideHookStateRenamePath:null,overrideProps:null,overridePropsDeletePath:null,overridePropsRenamePath:null,setSuspenseHandler:null,scheduleUpdate:null,currentDispatcherRef:S.ReactCurrentDispatcher,findHostInstanceByFiber:function(e){return null===(e=Je(e))?null:e.stateNode},findFiberByHostInstance:au.findFiberByHostInstance||function(){return null},findHostInstancesForRefresh:null,scheduleRefresh:null,scheduleRoot:null,setRefreshHandler:null,getCurrentFiber:null};if(\"undefined\"!==typeof __REACT_DEVTOOLS_GLOBAL_HOOK__){var su=__REACT_DEVTOOLS_GLOBAL_HOOK__;if(!su.isDisabled&&su.supportsFiber)try{So=su.inject(lu),Oo=su}catch(ge){}}t.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED=iu,t.createPortal=ou,t.findDOMNode=function(e){if(null==e)return null;if(1===e.nodeType)return e;var t=e._reactInternals;if(void 0===t){if(\"function\"===typeof e.render)throw Error(a(188));throw Error(a(268,Object.keys(e)))}return e=null===(e=Je(t))?null:e.stateNode},t.flushSync=function(e,t){var n=Tl;if(0!==(48&n))return e(t);Tl|=1;try{if(e)return Ho(99,e.bind(null,t))}finally{Tl=n,Go()}},t.hydrate=function(e,t,n){if(!nu(t))throw Error(a(200));return ru(null,e,t,!0,n)},t.render=function(e,t,n){if(!nu(t))throw Error(a(200));return ru(null,e,t,!1,n)},t.unmountComponentAtNode=function(e){if(!nu(e))throw Error(a(40));return!!e._reactRootContainer&&(bs((function(){ru(null,null,e,!1,(function(){e._reactRootContainer=null,e[Xr]=null}))})),!0)},t.unstable_batchedUpdates=vs,t.unstable_createPortal=function(e,t){return ou(e,t,2<arguments.length&&void 0!==arguments[2]?arguments[2]:null)},t.unstable_renderSubtreeIntoContainer=function(e,t,n,r){if(!nu(n))throw Error(a(200));if(null==e||void 0===e._reactInternals)throw Error(a(38));return ru(e,t,n,!1,r)},t.version=\"17.0.2\"},function(e,t,n){\"use strict\";e.exports=n(19)},function(e,t,n){\"use strict\";var r,o,i,a;if(\"object\"===typeof performance&&\"function\"===typeof performance.now){var l=performance;t.unstable_now=function(){return l.now()}}else{var s=Date,u=s.now();t.unstable_now=function(){return s.now()-u}}if(\"undefined\"===typeof window||\"function\"!==typeof MessageChannel){var c=null,d=null,f=function(){if(null!==c)try{var e=t.unstable_now();c(!0,e),c=null}catch(n){throw setTimeout(f,0),n}};r=function(e){null!==c?setTimeout(r,0,e):(c=e,setTimeout(f,0))},o=function(e,t){d=setTimeout(e,t)},i=function(){clearTimeout(d)},t.unstable_shouldYield=function(){return!1},a=t.unstable_forceFrameRate=function(){}}else{var p=window.setTimeout,h=window.clearTimeout;if(\"undefined\"!==typeof console){var m=window.cancelAnimationFrame;\"function\"!==typeof window.requestAnimationFrame&&console.error(\"This browser doesn't support requestAnimationFrame. Make sure that you load a polyfill in older browsers. https://reactjs.org/link/react-polyfills\"),\"function\"!==typeof m&&console.error(\"This browser doesn't support cancelAnimationFrame. Make sure that you load a polyfill in older browsers. https://reactjs.org/link/react-polyfills\")}var g=!1,v=null,b=-1,y=5,w=0;t.unstable_shouldYield=function(){return t.unstable_now()>=w},a=function(){},t.unstable_forceFrameRate=function(e){0>e||125<e?console.error(\"forceFrameRate takes a positive int between 0 and 125, forcing frame rates higher than 125 fps is not supported\"):y=0<e?Math.floor(1e3/e):5};var S=new MessageChannel,O=S.port2;S.port1.onmessage=function(){if(null!==v){var e=t.unstable_now();w=e+y;try{v(!0,e)?O.postMessage(null):(g=!1,v=null)}catch(n){throw O.postMessage(null),n}}else g=!1},r=function(e){v=e,g||(g=!0,O.postMessage(null))},o=function(e,n){b=p((function(){e(t.unstable_now())}),n)},i=function(){h(b),b=-1}}function x(e,t){var n=e.length;e.push(t);e:for(;;){var r=n-1>>>1,o=e[r];if(!(void 0!==o&&0<E(o,t)))break e;e[r]=t,e[n]=o,n=r}}function _(e){return void 0===(e=e[0])?null:e}function j(e){var t=e[0];if(void 0!==t){var n=e.pop();if(n!==t){e[0]=n;e:for(var r=0,o=e.length;r<o;){var i=2*(r+1)-1,a=e[i],l=i+1,s=e[l];if(void 0!==a&&0>E(a,n))void 0!==s&&0>E(s,a)?(e[r]=s,e[l]=n,r=l):(e[r]=a,e[i]=n,r=i);else{if(!(void 0!==s&&0>E(s,n)))break e;e[r]=s,e[l]=n,r=l}}}return t}return null}function E(e,t){var n=e.sortIndex-t.sortIndex;return 0!==n?n:e.id-t.id}var C=[],k=[],T=1,P=null,N=3,I=!1,R=!1,A=!1;function D(e){for(var t=_(k);null!==t;){if(null===t.callback)j(k);else{if(!(t.startTime<=e))break;j(k),t.sortIndex=t.expirationTime,x(C,t)}t=_(k)}}function L(e){if(A=!1,D(e),!R)if(null!==_(C))R=!0,r(M);else{var t=_(k);null!==t&&o(L,t.startTime-e)}}function M(e,n){R=!1,A&&(A=!1,i()),I=!0;var r=N;try{for(D(n),P=_(C);null!==P&&(!(P.expirationTime>n)||e&&!t.unstable_shouldYield());){var a=P.callback;if(\"function\"===typeof a){P.callback=null,N=P.priorityLevel;var l=a(P.expirationTime<=n);n=t.unstable_now(),\"function\"===typeof l?P.callback=l:P===_(C)&&j(C),D(n)}else j(C);P=_(C)}if(null!==P)var s=!0;else{var u=_(k);null!==u&&o(L,u.startTime-n),s=!1}return s}finally{P=null,N=r,I=!1}}var z=a;t.unstable_IdlePriority=5,t.unstable_ImmediatePriority=1,t.unstable_LowPriority=4,t.unstable_NormalPriority=3,t.unstable_Profiling=null,t.unstable_UserBlockingPriority=2,t.unstable_cancelCallback=function(e){e.callback=null},t.unstable_continueExecution=function(){R||I||(R=!0,r(M))},t.unstable_getCurrentPriorityLevel=function(){return N},t.unstable_getFirstCallbackNode=function(){return _(C)},t.unstable_next=function(e){switch(N){case 1:case 2:case 3:var t=3;break;default:t=N}var n=N;N=t;try{return e()}finally{N=n}},t.unstable_pauseExecution=function(){},t.unstable_requestPaint=z,t.unstable_runWithPriority=function(e,t){switch(e){case 1:case 2:case 3:case 4:case 5:break;default:e=3}var n=N;N=e;try{return t()}finally{N=n}},t.unstable_scheduleCallback=function(e,n,a){var l=t.unstable_now();switch(\"object\"===typeof a&&null!==a?a=\"number\"===typeof(a=a.delay)&&0<a?l+a:l:a=l,e){case 1:var s=-1;break;case 2:s=250;break;case 5:s=1073741823;break;case 4:s=1e4;break;default:s=5e3}return e={id:T++,callback:n,priorityLevel:e,startTime:a,expirationTime:s=a+s,sortIndex:-1},a>l?(e.sortIndex=a,x(k,e),null===_(C)&&e===_(k)&&(A?i():A=!0,o(L,a-l))):(e.sortIndex=s,x(C,e),R||I||(R=!0,r(M))),e},t.unstable_wrapCallback=function(e){var t=N;return function(){var n=N;N=t;try{return e.apply(this,arguments)}finally{N=n}}}},function(e,t,n){e.exports=n(21)()},function(e,t,n){\"use strict\";var r=n(22);function o(){}function i(){}i.resetWarningCache=o,e.exports=function(){function e(e,t,n,o,i,a){if(a!==r){var l=new Error(\"Calling PropTypes validators directly is not supported by the `prop-types` package. Use PropTypes.checkPropTypes() to call them. Read more at http://fb.me/use-check-prop-types\");throw l.name=\"Invariant Violation\",l}}function t(){return e}e.isRequired=e;var n={array:e,bool:e,func:e,number:e,object:e,string:e,symbol:e,any:e,arrayOf:t,element:e,elementType:e,instanceOf:t,node:e,objectOf:t,oneOf:t,oneOfType:t,shape:t,exact:t,checkPropTypes:i,resetWarningCache:o};return n.PropTypes=n,n}},function(e,t,n){\"use strict\";e.exports=\"SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED\"},function(e,t,n){\"use strict\";e.exports=n(24)},function(e,t,n){\"use strict\";var r=\"function\"===typeof Symbol&&Symbol.for,o=r?Symbol.for(\"react.element\"):60103,i=r?Symbol.for(\"react.portal\"):60106,a=r?Symbol.for(\"react.fragment\"):60107,l=r?Symbol.for(\"react.strict_mode\"):60108,s=r?Symbol.for(\"react.profiler\"):60114,u=r?Symbol.for(\"react.provider\"):60109,c=r?Symbol.for(\"react.context\"):60110,d=r?Symbol.for(\"react.async_mode\"):60111,f=r?Symbol.for(\"react.concurrent_mode\"):60111,p=r?Symbol.for(\"react.forward_ref\"):60112,h=r?Symbol.for(\"react.suspense\"):60113,m=r?Symbol.for(\"react.suspense_list\"):60120,g=r?Symbol.for(\"react.memo\"):60115,v=r?Symbol.for(\"react.lazy\"):60116,b=r?Symbol.for(\"react.block\"):60121,y=r?Symbol.for(\"react.fundamental\"):60117,w=r?Symbol.for(\"react.responder\"):60118,S=r?Symbol.for(\"react.scope\"):60119;function O(e){if(\"object\"===typeof e&&null!==e){var t=e.$$typeof;switch(t){case o:switch(e=e.type){case d:case f:case a:case s:case l:case h:return e;default:switch(e=e&&e.$$typeof){case c:case p:case v:case g:case u:return e;default:return t}}case i:return t}}}function x(e){return O(e)===f}t.AsyncMode=d,t.ConcurrentMode=f,t.ContextConsumer=c,t.ContextProvider=u,t.Element=o,t.ForwardRef=p,t.Fragment=a,t.Lazy=v,t.Memo=g,t.Portal=i,t.Profiler=s,t.StrictMode=l,t.Suspense=h,t.isAsyncMode=function(e){return x(e)||O(e)===d},t.isConcurrentMode=x,t.isContextConsumer=function(e){return O(e)===c},t.isContextProvider=function(e){return O(e)===u},t.isElement=function(e){return\"object\"===typeof e&&null!==e&&e.$$typeof===o},t.isForwardRef=function(e){return O(e)===p},t.isFragment=function(e){return O(e)===a},t.isLazy=function(e){return O(e)===v},t.isMemo=function(e){return O(e)===g},t.isPortal=function(e){return O(e)===i},t.isProfiler=function(e){return O(e)===s},t.isStrictMode=function(e){return O(e)===l},t.isSuspense=function(e){return O(e)===h},t.isValidElementType=function(e){return\"string\"===typeof e||\"function\"===typeof e||e===a||e===f||e===s||e===l||e===h||e===m||\"object\"===typeof e&&null!==e&&(e.$$typeof===v||e.$$typeof===g||e.$$typeof===u||e.$$typeof===c||e.$$typeof===p||e.$$typeof===y||e.$$typeof===w||e.$$typeof===S||e.$$typeof===b)},t.typeOf=O},function(e,t,n){\"use strict\";var r=\"function\"===typeof Symbol&&Symbol.for,o=r?Symbol.for(\"react.element\"):60103,i=r?Symbol.for(\"react.portal\"):60106,a=r?Symbol.for(\"react.fragment\"):60107,l=r?Symbol.for(\"react.strict_mode\"):60108,s=r?Symbol.for(\"react.profiler\"):60114,u=r?Symbol.for(\"react.provider\"):60109,c=r?Symbol.for(\"react.context\"):60110,d=r?Symbol.for(\"react.async_mode\"):60111,f=r?Symbol.for(\"react.concurrent_mode\"):60111,p=r?Symbol.for(\"react.forward_ref\"):60112,h=r?Symbol.for(\"react.suspense\"):60113,m=r?Symbol.for(\"react.suspense_list\"):60120,g=r?Symbol.for(\"react.memo\"):60115,v=r?Symbol.for(\"react.lazy\"):60116,b=r?Symbol.for(\"react.block\"):60121,y=r?Symbol.for(\"react.fundamental\"):60117,w=r?Symbol.for(\"react.responder\"):60118,S=r?Symbol.for(\"react.scope\"):60119;function O(e){if(\"object\"===typeof e&&null!==e){var t=e.$$typeof;switch(t){case o:switch(e=e.type){case d:case f:case a:case s:case l:case h:return e;default:switch(e=e&&e.$$typeof){case c:case p:case v:case g:case u:return e;default:return t}}case i:return t}}}function x(e){return O(e)===f}t.AsyncMode=d,t.ConcurrentMode=f,t.ContextConsumer=c,t.ContextProvider=u,t.Element=o,t.ForwardRef=p,t.Fragment=a,t.Lazy=v,t.Memo=g,t.Portal=i,t.Profiler=s,t.StrictMode=l,t.Suspense=h,t.isAsyncMode=function(e){return x(e)||O(e)===d},t.isConcurrentMode=x,t.isContextConsumer=function(e){return O(e)===c},t.isContextProvider=function(e){return O(e)===u},t.isElement=function(e){return\"object\"===typeof e&&null!==e&&e.$$typeof===o},t.isForwardRef=function(e){return O(e)===p},t.isFragment=function(e){return O(e)===a},t.isLazy=function(e){return O(e)===v},t.isMemo=function(e){return O(e)===g},t.isPortal=function(e){return O(e)===i},t.isProfiler=function(e){return O(e)===s},t.isStrictMode=function(e){return O(e)===l},t.isSuspense=function(e){return O(e)===h},t.isValidElementType=function(e){return\"string\"===typeof e||\"function\"===typeof e||e===a||e===f||e===s||e===l||e===h||e===m||\"object\"===typeof e&&null!==e&&(e.$$typeof===v||e.$$typeof===g||e.$$typeof===u||e.$$typeof===c||e.$$typeof===p||e.$$typeof===y||e.$$typeof===w||e.$$typeof===S||e.$$typeof===b)},t.typeOf=O},function(e,t,n){\"use strict\";var r=60103,o=60106,i=60107,a=60108,l=60114,s=60109,u=60110,c=60112,d=60113,f=60120,p=60115,h=60116,m=60121,g=60122,v=60117,b=60129,y=60131;if(\"function\"===typeof Symbol&&Symbol.for){var w=Symbol.for;r=w(\"react.element\"),o=w(\"react.portal\"),i=w(\"react.fragment\"),a=w(\"react.strict_mode\"),l=w(\"react.profiler\"),s=w(\"react.provider\"),u=w(\"react.context\"),c=w(\"react.forward_ref\"),d=w(\"react.suspense\"),f=w(\"react.suspense_list\"),p=w(\"react.memo\"),h=w(\"react.lazy\"),m=w(\"react.block\"),g=w(\"react.server.block\"),v=w(\"react.fundamental\"),b=w(\"react.debug_trace_mode\"),y=w(\"react.legacy_hidden\")}function S(e){if(\"object\"===typeof e&&null!==e){var t=e.$$typeof;switch(t){case r:switch(e=e.type){case i:case l:case a:case d:case f:return e;default:switch(e=e&&e.$$typeof){case u:case c:case h:case p:case s:return e;default:return t}}case o:return t}}}var O=s,x=r,_=c,j=i,E=h,C=p,k=o,T=l,P=a,N=d;t.ContextConsumer=u,t.ContextProvider=O,t.Element=x,t.ForwardRef=_,t.Fragment=j,t.Lazy=E,t.Memo=C,t.Portal=k,t.Profiler=T,t.StrictMode=P,t.Suspense=N,t.isAsyncMode=function(){return!1},t.isConcurrentMode=function(){return!1},t.isContextConsumer=function(e){return S(e)===u},t.isContextProvider=function(e){return S(e)===s},t.isElement=function(e){return\"object\"===typeof e&&null!==e&&e.$$typeof===r},t.isForwardRef=function(e){return S(e)===c},t.isFragment=function(e){return S(e)===i},t.isLazy=function(e){return S(e)===h},t.isMemo=function(e){return S(e)===p},t.isPortal=function(e){return S(e)===o},t.isProfiler=function(e){return S(e)===l},t.isStrictMode=function(e){return S(e)===a},t.isSuspense=function(e){return S(e)===d},t.isValidElementType=function(e){return\"string\"===typeof e||\"function\"===typeof e||e===i||e===l||e===b||e===a||e===d||e===f||e===y||\"object\"===typeof e&&null!==e&&(e.$$typeof===h||e.$$typeof===p||e.$$typeof===s||e.$$typeof===u||e.$$typeof===c||e.$$typeof===v||e.$$typeof===m||e[0]===g)},t.typeOf=S},function(e,t,n){\"use strict\";n(6);var r=n(2),o=60103;if(t.Fragment=60107,\"function\"===typeof Symbol&&Symbol.for){var i=Symbol.for;o=i(\"react.element\"),t.Fragment=i(\"react.fragment\")}var a=r.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner,l=Object.prototype.hasOwnProperty,s={key:!0,ref:!0,__self:!0,__source:!0};function u(e,t,n){var r,i={},u=null,c=null;for(r in void 0!==n&&(u=\"\"+n),void 0!==t.key&&(u=\"\"+t.key),void 0!==t.ref&&(c=t.ref),t)l.call(t,r)&&!s.hasOwnProperty(r)&&(i[r]=t[r]);if(e&&e.defaultProps)for(r in t=e.defaultProps)void 0===i[r]&&(i[r]=t[r]);return{$$typeof:o,type:e,key:u,ref:c,props:i,_owner:a.current}}t.jsx=u,t.jsxs=u},function(e,t,n){(function(e){function n(e,t){for(var n=0,r=e.length-1;r>=0;r--){var o=e[r];\".\"===o?e.splice(r,1):\"..\"===o?(e.splice(r,1),n++):n&&(e.splice(r,1),n--)}if(t)for(;n--;n)e.unshift(\"..\");return e}function r(e,t){if(e.filter)return e.filter(t);for(var n=[],r=0;r<e.length;r++)t(e[r],r,e)&&n.push(e[r]);return n}t.resolve=function(){for(var t=\"\",o=!1,i=arguments.length-1;i>=-1&&!o;i--){var a=i>=0?arguments[i]:e.cwd();if(\"string\"!==typeof a)throw new TypeError(\"Arguments to path.resolve must be strings\");a&&(t=a+\"/\"+t,o=\"/\"===a.charAt(0))}return(o?\"/\":\"\")+(t=n(r(t.split(\"/\"),(function(e){return!!e})),!o).join(\"/\"))||\".\"},t.normalize=function(e){var i=t.isAbsolute(e),a=\"/\"===o(e,-1);return(e=n(r(e.split(\"/\"),(function(e){return!!e})),!i).join(\"/\"))||i||(e=\".\"),e&&a&&(e+=\"/\"),(i?\"/\":\"\")+e},t.isAbsolute=function(e){return\"/\"===e.charAt(0)},t.join=function(){var e=Array.prototype.slice.call(arguments,0);return t.normalize(r(e,(function(e,t){if(\"string\"!==typeof e)throw new TypeError(\"Arguments to path.join must be strings\");return e})).join(\"/\"))},t.relative=function(e,n){function r(e){for(var t=0;t<e.length&&\"\"===e[t];t++);for(var n=e.length-1;n>=0&&\"\"===e[n];n--);return t>n?[]:e.slice(t,n-t+1)}e=t.resolve(e).substr(1),n=t.resolve(n).substr(1);for(var o=r(e.split(\"/\")),i=r(n.split(\"/\")),a=Math.min(o.length,i.length),l=a,s=0;s<a;s++)if(o[s]!==i[s]){l=s;break}var u=[];for(s=l;s<o.length;s++)u.push(\"..\");return(u=u.concat(i.slice(l))).join(\"/\")},t.sep=\"/\",t.delimiter=\":\",t.dirname=function(e){if(\"string\"!==typeof e&&(e+=\"\"),0===e.length)return\".\";for(var t=e.charCodeAt(0),n=47===t,r=-1,o=!0,i=e.length-1;i>=1;--i)if(47===(t=e.charCodeAt(i))){if(!o){r=i;break}}else o=!1;return-1===r?n?\"/\":\".\":n&&1===r?\"/\":e.slice(0,r)},t.basename=function(e,t){var n=function(e){\"string\"!==typeof e&&(e+=\"\");var t,n=0,r=-1,o=!0;for(t=e.length-1;t>=0;--t)if(47===e.charCodeAt(t)){if(!o){n=t+1;break}}else-1===r&&(o=!1,r=t+1);return-1===r?\"\":e.slice(n,r)}(e);return t&&n.substr(-1*t.length)===t&&(n=n.substr(0,n.length-t.length)),n},t.extname=function(e){\"string\"!==typeof e&&(e+=\"\");for(var t=-1,n=0,r=-1,o=!0,i=0,a=e.length-1;a>=0;--a){var l=e.charCodeAt(a);if(47!==l)-1===r&&(o=!1,r=a+1),46===l?-1===t?t=a:1!==i&&(i=1):-1!==t&&(i=-1);else if(!o){n=a+1;break}}return-1===t||-1===r||0===i||1===i&&t===r-1&&t===n+1?\"\":e.slice(t,r)};var o=\"b\"===\"ab\".substr(-1)?function(e,t,n){return e.substr(t,n)}:function(e,t,n){return t<0&&(t=e.length+t),e.substr(t,n)}}).call(this,n(9))},function(e,t,n){var r=n(30),o=r.Buffer;function i(e,t){for(var n in e)t[n]=e[n]}function a(e,t,n){return o(e,t,n)}o.from&&o.alloc&&o.allocUnsafe&&o.allocUnsafeSlow?e.exports=r:(i(r,t),t.Buffer=a),i(o,a),a.from=function(e,t,n){if(\"number\"===typeof e)throw new TypeError(\"Argument must not be a number\");return o(e,t,n)},a.alloc=function(e,t,n){if(\"number\"!==typeof e)throw new TypeError(\"Argument must be a number\");var r=o(e);return void 0!==t?\"string\"===typeof n?r.fill(t,n):r.fill(t):r.fill(0),r},a.allocUnsafe=function(e){if(\"number\"!==typeof e)throw new TypeError(\"Argument must be a number\");return o(e)},a.allocUnsafeSlow=function(e){if(\"number\"!==typeof e)throw new TypeError(\"Argument must be a number\");return r.SlowBuffer(e)}},function(e,t,n){\"use strict\";(function(e){var r=n(32),o=n(33),i=n(34);function a(){return s.TYPED_ARRAY_SUPPORT?2147483647:1073741823}function l(e,t){if(a()<t)throw new RangeError(\"Invalid typed array length\");return s.TYPED_ARRAY_SUPPORT?(e=new Uint8Array(t)).__proto__=s.prototype:(null===e&&(e=new s(t)),e.length=t),e}function s(e,t,n){if(!s.TYPED_ARRAY_SUPPORT&&!(this instanceof s))return new s(e,t,n);if(\"number\"===typeof e){if(\"string\"===typeof t)throw new Error(\"If encoding is specified then the first argument must be a string\");return d(this,e)}return u(this,e,t,n)}function u(e,t,n,r){if(\"number\"===typeof t)throw new TypeError('\"value\" argument must not be a number');return\"undefined\"!==typeof ArrayBuffer&&t instanceof ArrayBuffer?function(e,t,n,r){if(t.byteLength,n<0||t.byteLength<n)throw new RangeError(\"'offset' is out of bounds\");if(t.byteLength<n+(r||0))throw new RangeError(\"'length' is out of bounds\");t=void 0===n&&void 0===r?new Uint8Array(t):void 0===r?new Uint8Array(t,n):new Uint8Array(t,n,r);s.TYPED_ARRAY_SUPPORT?(e=t).__proto__=s.prototype:e=f(e,t);return e}(e,t,n,r):\"string\"===typeof t?function(e,t,n){\"string\"===typeof n&&\"\"!==n||(n=\"utf8\");if(!s.isEncoding(n))throw new TypeError('\"encoding\" must be a valid string encoding');var r=0|h(t,n),o=(e=l(e,r)).write(t,n);o!==r&&(e=e.slice(0,o));return e}(e,t,n):function(e,t){if(s.isBuffer(t)){var n=0|p(t.length);return 0===(e=l(e,n)).length||t.copy(e,0,0,n),e}if(t){if(\"undefined\"!==typeof ArrayBuffer&&t.buffer instanceof ArrayBuffer||\"length\"in t)return\"number\"!==typeof t.length||(r=t.length)!==r?l(e,0):f(e,t);if(\"Buffer\"===t.type&&i(t.data))return f(e,t.data)}var r;throw new TypeError(\"First argument must be a string, Buffer, ArrayBuffer, Array, or array-like object.\")}(e,t)}function c(e){if(\"number\"!==typeof e)throw new TypeError('\"size\" argument must be a number');if(e<0)throw new RangeError('\"size\" argument must not be negative')}function d(e,t){if(c(t),e=l(e,t<0?0:0|p(t)),!s.TYPED_ARRAY_SUPPORT)for(var n=0;n<t;++n)e[n]=0;return e}function f(e,t){var n=t.length<0?0:0|p(t.length);e=l(e,n);for(var r=0;r<n;r+=1)e[r]=255&t[r];return e}function p(e){if(e>=a())throw new RangeError(\"Attempt to allocate Buffer larger than maximum size: 0x\"+a().toString(16)+\" bytes\");return 0|e}function h(e,t){if(s.isBuffer(e))return e.length;if(\"undefined\"!==typeof ArrayBuffer&&\"function\"===typeof ArrayBuffer.isView&&(ArrayBuffer.isView(e)||e instanceof ArrayBuffer))return e.byteLength;\"string\"!==typeof e&&(e=\"\"+e);var n=e.length;if(0===n)return 0;for(var r=!1;;)switch(t){case\"ascii\":case\"latin1\":case\"binary\":return n;case\"utf8\":case\"utf-8\":case void 0:return B(e).length;case\"ucs2\":case\"ucs-2\":case\"utf16le\":case\"utf-16le\":return 2*n;case\"hex\":return n>>>1;case\"base64\":return V(e).length;default:if(r)return B(e).length;t=(\"\"+t).toLowerCase(),r=!0}}function m(e,t,n){var r=!1;if((void 0===t||t<0)&&(t=0),t>this.length)return\"\";if((void 0===n||n>this.length)&&(n=this.length),n<=0)return\"\";if((n>>>=0)<=(t>>>=0))return\"\";for(e||(e=\"utf8\");;)switch(e){case\"hex\":return P(this,t,n);case\"utf8\":case\"utf-8\":return E(this,t,n);case\"ascii\":return k(this,t,n);case\"latin1\":case\"binary\":return T(this,t,n);case\"base64\":return j(this,t,n);case\"ucs2\":case\"ucs-2\":case\"utf16le\":case\"utf-16le\":return N(this,t,n);default:if(r)throw new TypeError(\"Unknown encoding: \"+e);e=(e+\"\").toLowerCase(),r=!0}}function g(e,t,n){var r=e[t];e[t]=e[n],e[n]=r}function v(e,t,n,r,o){if(0===e.length)return-1;if(\"string\"===typeof n?(r=n,n=0):n>2147483647?n=2147483647:n<-2147483648&&(n=-2147483648),n=+n,isNaN(n)&&(n=o?0:e.length-1),n<0&&(n=e.length+n),n>=e.length){if(o)return-1;n=e.length-1}else if(n<0){if(!o)return-1;n=0}if(\"string\"===typeof t&&(t=s.from(t,r)),s.isBuffer(t))return 0===t.length?-1:b(e,t,n,r,o);if(\"number\"===typeof t)return t&=255,s.TYPED_ARRAY_SUPPORT&&\"function\"===typeof Uint8Array.prototype.indexOf?o?Uint8Array.prototype.indexOf.call(e,t,n):Uint8Array.prototype.lastIndexOf.call(e,t,n):b(e,[t],n,r,o);throw new TypeError(\"val must be string, number or Buffer\")}function b(e,t,n,r,o){var i,a=1,l=e.length,s=t.length;if(void 0!==r&&(\"ucs2\"===(r=String(r).toLowerCase())||\"ucs-2\"===r||\"utf16le\"===r||\"utf-16le\"===r)){if(e.length<2||t.length<2)return-1;a=2,l/=2,s/=2,n/=2}function u(e,t){return 1===a?e[t]:e.readUInt16BE(t*a)}if(o){var c=-1;for(i=n;i<l;i++)if(u(e,i)===u(t,-1===c?0:i-c)){if(-1===c&&(c=i),i-c+1===s)return c*a}else-1!==c&&(i-=i-c),c=-1}else for(n+s>l&&(n=l-s),i=n;i>=0;i--){for(var d=!0,f=0;f<s;f++)if(u(e,i+f)!==u(t,f)){d=!1;break}if(d)return i}return-1}function y(e,t,n,r){n=Number(n)||0;var o=e.length-n;r?(r=Number(r))>o&&(r=o):r=o;var i=t.length;if(i%2!==0)throw new TypeError(\"Invalid hex string\");r>i/2&&(r=i/2);for(var a=0;a<r;++a){var l=parseInt(t.substr(2*a,2),16);if(isNaN(l))return a;e[n+a]=l}return a}function w(e,t,n,r){return W(B(t,e.length-n),e,n,r)}function S(e,t,n,r){return W(function(e){for(var t=[],n=0;n<e.length;++n)t.push(255&e.charCodeAt(n));return t}(t),e,n,r)}function O(e,t,n,r){return S(e,t,n,r)}function x(e,t,n,r){return W(V(t),e,n,r)}function _(e,t,n,r){return W(function(e,t){for(var n,r,o,i=[],a=0;a<e.length&&!((t-=2)<0);++a)r=(n=e.charCodeAt(a))>>8,o=n%256,i.push(o),i.push(r);return i}(t,e.length-n),e,n,r)}function j(e,t,n){return 0===t&&n===e.length?r.fromByteArray(e):r.fromByteArray(e.slice(t,n))}function E(e,t,n){n=Math.min(e.length,n);for(var r=[],o=t;o<n;){var i,a,l,s,u=e[o],c=null,d=u>239?4:u>223?3:u>191?2:1;if(o+d<=n)switch(d){case 1:u<128&&(c=u);break;case 2:128===(192&(i=e[o+1]))&&(s=(31&u)<<6|63&i)>127&&(c=s);break;case 3:i=e[o+1],a=e[o+2],128===(192&i)&&128===(192&a)&&(s=(15&u)<<12|(63&i)<<6|63&a)>2047&&(s<55296||s>57343)&&(c=s);break;case 4:i=e[o+1],a=e[o+2],l=e[o+3],128===(192&i)&&128===(192&a)&&128===(192&l)&&(s=(15&u)<<18|(63&i)<<12|(63&a)<<6|63&l)>65535&&s<1114112&&(c=s)}null===c?(c=65533,d=1):c>65535&&(c-=65536,r.push(c>>>10&1023|55296),c=56320|1023&c),r.push(c),o+=d}return function(e){var t=e.length;if(t<=C)return String.fromCharCode.apply(String,e);var n=\"\",r=0;for(;r<t;)n+=String.fromCharCode.apply(String,e.slice(r,r+=C));return n}(r)}t.Buffer=s,t.SlowBuffer=function(e){+e!=e&&(e=0);return s.alloc(+e)},t.INSPECT_MAX_BYTES=50,s.TYPED_ARRAY_SUPPORT=void 0!==e.TYPED_ARRAY_SUPPORT?e.TYPED_ARRAY_SUPPORT:function(){try{var e=new Uint8Array(1);return e.__proto__={__proto__:Uint8Array.prototype,foo:function(){return 42}},42===e.foo()&&\"function\"===typeof e.subarray&&0===e.subarray(1,1).byteLength}catch(t){return!1}}(),t.kMaxLength=a(),s.poolSize=8192,s._augment=function(e){return e.__proto__=s.prototype,e},s.from=function(e,t,n){return u(null,e,t,n)},s.TYPED_ARRAY_SUPPORT&&(s.prototype.__proto__=Uint8Array.prototype,s.__proto__=Uint8Array,\"undefined\"!==typeof Symbol&&Symbol.species&&s[Symbol.species]===s&&Object.defineProperty(s,Symbol.species,{value:null,configurable:!0})),s.alloc=function(e,t,n){return function(e,t,n,r){return c(t),t<=0?l(e,t):void 0!==n?\"string\"===typeof r?l(e,t).fill(n,r):l(e,t).fill(n):l(e,t)}(null,e,t,n)},s.allocUnsafe=function(e){return d(null,e)},s.allocUnsafeSlow=function(e){return d(null,e)},s.isBuffer=function(e){return!(null==e||!e._isBuffer)},s.compare=function(e,t){if(!s.isBuffer(e)||!s.isBuffer(t))throw new TypeError(\"Arguments must be Buffers\");if(e===t)return 0;for(var n=e.length,r=t.length,o=0,i=Math.min(n,r);o<i;++o)if(e[o]!==t[o]){n=e[o],r=t[o];break}return n<r?-1:r<n?1:0},s.isEncoding=function(e){switch(String(e).toLowerCase()){case\"hex\":case\"utf8\":case\"utf-8\":case\"ascii\":case\"latin1\":case\"binary\":case\"base64\":case\"ucs2\":case\"ucs-2\":case\"utf16le\":case\"utf-16le\":return!0;default:return!1}},s.concat=function(e,t){if(!i(e))throw new TypeError('\"list\" argument must be an Array of Buffers');if(0===e.length)return s.alloc(0);var n;if(void 0===t)for(t=0,n=0;n<e.length;++n)t+=e[n].length;var r=s.allocUnsafe(t),o=0;for(n=0;n<e.length;++n){var a=e[n];if(!s.isBuffer(a))throw new TypeError('\"list\" argument must be an Array of Buffers');a.copy(r,o),o+=a.length}return r},s.byteLength=h,s.prototype._isBuffer=!0,s.prototype.swap16=function(){var e=this.length;if(e%2!==0)throw new RangeError(\"Buffer size must be a multiple of 16-bits\");for(var t=0;t<e;t+=2)g(this,t,t+1);return this},s.prototype.swap32=function(){var e=this.length;if(e%4!==0)throw new RangeError(\"Buffer size must be a multiple of 32-bits\");for(var t=0;t<e;t+=4)g(this,t,t+3),g(this,t+1,t+2);return this},s.prototype.swap64=function(){var e=this.length;if(e%8!==0)throw new RangeError(\"Buffer size must be a multiple of 64-bits\");for(var t=0;t<e;t+=8)g(this,t,t+7),g(this,t+1,t+6),g(this,t+2,t+5),g(this,t+3,t+4);return this},s.prototype.toString=function(){var e=0|this.length;return 0===e?\"\":0===arguments.length?E(this,0,e):m.apply(this,arguments)},s.prototype.equals=function(e){if(!s.isBuffer(e))throw new TypeError(\"Argument must be a Buffer\");return this===e||0===s.compare(this,e)},s.prototype.inspect=function(){var e=\"\",n=t.INSPECT_MAX_BYTES;return this.length>0&&(e=this.toString(\"hex\",0,n).match(/.{2}/g).join(\" \"),this.length>n&&(e+=\" ... \")),\"<Buffer \"+e+\">\"},s.prototype.compare=function(e,t,n,r,o){if(!s.isBuffer(e))throw new TypeError(\"Argument must be a Buffer\");if(void 0===t&&(t=0),void 0===n&&(n=e?e.length:0),void 0===r&&(r=0),void 0===o&&(o=this.length),t<0||n>e.length||r<0||o>this.length)throw new RangeError(\"out of range index\");if(r>=o&&t>=n)return 0;if(r>=o)return-1;if(t>=n)return 1;if(this===e)return 0;for(var i=(o>>>=0)-(r>>>=0),a=(n>>>=0)-(t>>>=0),l=Math.min(i,a),u=this.slice(r,o),c=e.slice(t,n),d=0;d<l;++d)if(u[d]!==c[d]){i=u[d],a=c[d];break}return i<a?-1:a<i?1:0},s.prototype.includes=function(e,t,n){return-1!==this.indexOf(e,t,n)},s.prototype.indexOf=function(e,t,n){return v(this,e,t,n,!0)},s.prototype.lastIndexOf=function(e,t,n){return v(this,e,t,n,!1)},s.prototype.write=function(e,t,n,r){if(void 0===t)r=\"utf8\",n=this.length,t=0;else if(void 0===n&&\"string\"===typeof t)r=t,n=this.length,t=0;else{if(!isFinite(t))throw new Error(\"Buffer.write(string, encoding, offset[, length]) is no longer supported\");t|=0,isFinite(n)?(n|=0,void 0===r&&(r=\"utf8\")):(r=n,n=void 0)}var o=this.length-t;if((void 0===n||n>o)&&(n=o),e.length>0&&(n<0||t<0)||t>this.length)throw new RangeError(\"Attempt to write outside buffer bounds\");r||(r=\"utf8\");for(var i=!1;;)switch(r){case\"hex\":return y(this,e,t,n);case\"utf8\":case\"utf-8\":return w(this,e,t,n);case\"ascii\":return S(this,e,t,n);case\"latin1\":case\"binary\":return O(this,e,t,n);case\"base64\":return x(this,e,t,n);case\"ucs2\":case\"ucs-2\":case\"utf16le\":case\"utf-16le\":return _(this,e,t,n);default:if(i)throw new TypeError(\"Unknown encoding: \"+r);r=(\"\"+r).toLowerCase(),i=!0}},s.prototype.toJSON=function(){return{type:\"Buffer\",data:Array.prototype.slice.call(this._arr||this,0)}};var C=4096;function k(e,t,n){var r=\"\";n=Math.min(e.length,n);for(var o=t;o<n;++o)r+=String.fromCharCode(127&e[o]);return r}function T(e,t,n){var r=\"\";n=Math.min(e.length,n);for(var o=t;o<n;++o)r+=String.fromCharCode(e[o]);return r}function P(e,t,n){var r=e.length;(!t||t<0)&&(t=0),(!n||n<0||n>r)&&(n=r);for(var o=\"\",i=t;i<n;++i)o+=F(e[i]);return o}function N(e,t,n){for(var r=e.slice(t,n),o=\"\",i=0;i<r.length;i+=2)o+=String.fromCharCode(r[i]+256*r[i+1]);return o}function I(e,t,n){if(e%1!==0||e<0)throw new RangeError(\"offset is not uint\");if(e+t>n)throw new RangeError(\"Trying to access beyond buffer length\")}function R(e,t,n,r,o,i){if(!s.isBuffer(e))throw new TypeError('\"buffer\" argument must be a Buffer instance');if(t>o||t<i)throw new RangeError('\"value\" argument is out of bounds');if(n+r>e.length)throw new RangeError(\"Index out of range\")}function A(e,t,n,r){t<0&&(t=65535+t+1);for(var o=0,i=Math.min(e.length-n,2);o<i;++o)e[n+o]=(t&255<<8*(r?o:1-o))>>>8*(r?o:1-o)}function D(e,t,n,r){t<0&&(t=4294967295+t+1);for(var o=0,i=Math.min(e.length-n,4);o<i;++o)e[n+o]=t>>>8*(r?o:3-o)&255}function L(e,t,n,r,o,i){if(n+r>e.length)throw new RangeError(\"Index out of range\");if(n<0)throw new RangeError(\"Index out of range\")}function M(e,t,n,r,i){return i||L(e,0,n,4),o.write(e,t,n,r,23,4),n+4}function z(e,t,n,r,i){return i||L(e,0,n,8),o.write(e,t,n,r,52,8),n+8}s.prototype.slice=function(e,t){var n,r=this.length;if((e=~~e)<0?(e+=r)<0&&(e=0):e>r&&(e=r),(t=void 0===t?r:~~t)<0?(t+=r)<0&&(t=0):t>r&&(t=r),t<e&&(t=e),s.TYPED_ARRAY_SUPPORT)(n=this.subarray(e,t)).__proto__=s.prototype;else{var o=t-e;n=new s(o,void 0);for(var i=0;i<o;++i)n[i]=this[i+e]}return n},s.prototype.readUIntLE=function(e,t,n){e|=0,t|=0,n||I(e,t,this.length);for(var r=this[e],o=1,i=0;++i<t&&(o*=256);)r+=this[e+i]*o;return r},s.prototype.readUIntBE=function(e,t,n){e|=0,t|=0,n||I(e,t,this.length);for(var r=this[e+--t],o=1;t>0&&(o*=256);)r+=this[e+--t]*o;return r},s.prototype.readUInt8=function(e,t){return t||I(e,1,this.length),this[e]},s.prototype.readUInt16LE=function(e,t){return t||I(e,2,this.length),this[e]|this[e+1]<<8},s.prototype.readUInt16BE=function(e,t){return t||I(e,2,this.length),this[e]<<8|this[e+1]},s.prototype.readUInt32LE=function(e,t){return t||I(e,4,this.length),(this[e]|this[e+1]<<8|this[e+2]<<16)+16777216*this[e+3]},s.prototype.readUInt32BE=function(e,t){return t||I(e,4,this.length),16777216*this[e]+(this[e+1]<<16|this[e+2]<<8|this[e+3])},s.prototype.readIntLE=function(e,t,n){e|=0,t|=0,n||I(e,t,this.length);for(var r=this[e],o=1,i=0;++i<t&&(o*=256);)r+=this[e+i]*o;return r>=(o*=128)&&(r-=Math.pow(2,8*t)),r},s.prototype.readIntBE=function(e,t,n){e|=0,t|=0,n||I(e,t,this.length);for(var r=t,o=1,i=this[e+--r];r>0&&(o*=256);)i+=this[e+--r]*o;return i>=(o*=128)&&(i-=Math.pow(2,8*t)),i},s.prototype.readInt8=function(e,t){return t||I(e,1,this.length),128&this[e]?-1*(255-this[e]+1):this[e]},s.prototype.readInt16LE=function(e,t){t||I(e,2,this.length);var n=this[e]|this[e+1]<<8;return 32768&n?4294901760|n:n},s.prototype.readInt16BE=function(e,t){t||I(e,2,this.length);var n=this[e+1]|this[e]<<8;return 32768&n?4294901760|n:n},s.prototype.readInt32LE=function(e,t){return t||I(e,4,this.length),this[e]|this[e+1]<<8|this[e+2]<<16|this[e+3]<<24},s.prototype.readInt32BE=function(e,t){return t||I(e,4,this.length),this[e]<<24|this[e+1]<<16|this[e+2]<<8|this[e+3]},s.prototype.readFloatLE=function(e,t){return t||I(e,4,this.length),o.read(this,e,!0,23,4)},s.prototype.readFloatBE=function(e,t){return t||I(e,4,this.length),o.read(this,e,!1,23,4)},s.prototype.readDoubleLE=function(e,t){return t||I(e,8,this.length),o.read(this,e,!0,52,8)},s.prototype.readDoubleBE=function(e,t){return t||I(e,8,this.length),o.read(this,e,!1,52,8)},s.prototype.writeUIntLE=function(e,t,n,r){(e=+e,t|=0,n|=0,r)||R(this,e,t,n,Math.pow(2,8*n)-1,0);var o=1,i=0;for(this[t]=255&e;++i<n&&(o*=256);)this[t+i]=e/o&255;return t+n},s.prototype.writeUIntBE=function(e,t,n,r){(e=+e,t|=0,n|=0,r)||R(this,e,t,n,Math.pow(2,8*n)-1,0);var o=n-1,i=1;for(this[t+o]=255&e;--o>=0&&(i*=256);)this[t+o]=e/i&255;return t+n},s.prototype.writeUInt8=function(e,t,n){return e=+e,t|=0,n||R(this,e,t,1,255,0),s.TYPED_ARRAY_SUPPORT||(e=Math.floor(e)),this[t]=255&e,t+1},s.prototype.writeUInt16LE=function(e,t,n){return e=+e,t|=0,n||R(this,e,t,2,65535,0),s.TYPED_ARRAY_SUPPORT?(this[t]=255&e,this[t+1]=e>>>8):A(this,e,t,!0),t+2},s.prototype.writeUInt16BE=function(e,t,n){return e=+e,t|=0,n||R(this,e,t,2,65535,0),s.TYPED_ARRAY_SUPPORT?(this[t]=e>>>8,this[t+1]=255&e):A(this,e,t,!1),t+2},s.prototype.writeUInt32LE=function(e,t,n){return e=+e,t|=0,n||R(this,e,t,4,4294967295,0),s.TYPED_ARRAY_SUPPORT?(this[t+3]=e>>>24,this[t+2]=e>>>16,this[t+1]=e>>>8,this[t]=255&e):D(this,e,t,!0),t+4},s.prototype.writeUInt32BE=function(e,t,n){return e=+e,t|=0,n||R(this,e,t,4,4294967295,0),s.TYPED_ARRAY_SUPPORT?(this[t]=e>>>24,this[t+1]=e>>>16,this[t+2]=e>>>8,this[t+3]=255&e):D(this,e,t,!1),t+4},s.prototype.writeIntLE=function(e,t,n,r){if(e=+e,t|=0,!r){var o=Math.pow(2,8*n-1);R(this,e,t,n,o-1,-o)}var i=0,a=1,l=0;for(this[t]=255&e;++i<n&&(a*=256);)e<0&&0===l&&0!==this[t+i-1]&&(l=1),this[t+i]=(e/a>>0)-l&255;return t+n},s.prototype.writeIntBE=function(e,t,n,r){if(e=+e,t|=0,!r){var o=Math.pow(2,8*n-1);R(this,e,t,n,o-1,-o)}var i=n-1,a=1,l=0;for(this[t+i]=255&e;--i>=0&&(a*=256);)e<0&&0===l&&0!==this[t+i+1]&&(l=1),this[t+i]=(e/a>>0)-l&255;return t+n},s.prototype.writeInt8=function(e,t,n){return e=+e,t|=0,n||R(this,e,t,1,127,-128),s.TYPED_ARRAY_SUPPORT||(e=Math.floor(e)),e<0&&(e=255+e+1),this[t]=255&e,t+1},s.prototype.writeInt16LE=function(e,t,n){return e=+e,t|=0,n||R(this,e,t,2,32767,-32768),s.TYPED_ARRAY_SUPPORT?(this[t]=255&e,this[t+1]=e>>>8):A(this,e,t,!0),t+2},s.prototype.writeInt16BE=function(e,t,n){return e=+e,t|=0,n||R(this,e,t,2,32767,-32768),s.TYPED_ARRAY_SUPPORT?(this[t]=e>>>8,this[t+1]=255&e):A(this,e,t,!1),t+2},s.prototype.writeInt32LE=function(e,t,n){return e=+e,t|=0,n||R(this,e,t,4,2147483647,-2147483648),s.TYPED_ARRAY_SUPPORT?(this[t]=255&e,this[t+1]=e>>>8,this[t+2]=e>>>16,this[t+3]=e>>>24):D(this,e,t,!0),t+4},s.prototype.writeInt32BE=function(e,t,n){return e=+e,t|=0,n||R(this,e,t,4,2147483647,-2147483648),e<0&&(e=4294967295+e+1),s.TYPED_ARRAY_SUPPORT?(this[t]=e>>>24,this[t+1]=e>>>16,this[t+2]=e>>>8,this[t+3]=255&e):D(this,e,t,!1),t+4},s.prototype.writeFloatLE=function(e,t,n){return M(this,e,t,!0,n)},s.prototype.writeFloatBE=function(e,t,n){return M(this,e,t,!1,n)},s.prototype.writeDoubleLE=function(e,t,n){return z(this,e,t,!0,n)},s.prototype.writeDoubleBE=function(e,t,n){return z(this,e,t,!1,n)},s.prototype.copy=function(e,t,n,r){if(n||(n=0),r||0===r||(r=this.length),t>=e.length&&(t=e.length),t||(t=0),r>0&&r<n&&(r=n),r===n)return 0;if(0===e.length||0===this.length)return 0;if(t<0)throw new RangeError(\"targetStart out of bounds\");if(n<0||n>=this.length)throw new RangeError(\"sourceStart out of bounds\");if(r<0)throw new RangeError(\"sourceEnd out of bounds\");r>this.length&&(r=this.length),e.length-t<r-n&&(r=e.length-t+n);var o,i=r-n;if(this===e&&n<t&&t<r)for(o=i-1;o>=0;--o)e[o+t]=this[o+n];else if(i<1e3||!s.TYPED_ARRAY_SUPPORT)for(o=0;o<i;++o)e[o+t]=this[o+n];else Uint8Array.prototype.set.call(e,this.subarray(n,n+i),t);return i},s.prototype.fill=function(e,t,n,r){if(\"string\"===typeof e){if(\"string\"===typeof t?(r=t,t=0,n=this.length):\"string\"===typeof n&&(r=n,n=this.length),1===e.length){var o=e.charCodeAt(0);o<256&&(e=o)}if(void 0!==r&&\"string\"!==typeof r)throw new TypeError(\"encoding must be a string\");if(\"string\"===typeof r&&!s.isEncoding(r))throw new TypeError(\"Unknown encoding: \"+r)}else\"number\"===typeof e&&(e&=255);if(t<0||this.length<t||this.length<n)throw new RangeError(\"Out of range index\");if(n<=t)return this;var i;if(t>>>=0,n=void 0===n?this.length:n>>>0,e||(e=0),\"number\"===typeof e)for(i=t;i<n;++i)this[i]=e;else{var a=s.isBuffer(e)?e:B(new s(e,r).toString()),l=a.length;for(i=0;i<n-t;++i)this[i+t]=a[i%l]}return this};var U=/[^+\\/0-9A-Za-z-_]/g;function F(e){return e<16?\"0\"+e.toString(16):e.toString(16)}function B(e,t){var n;t=t||1/0;for(var r=e.length,o=null,i=[],a=0;a<r;++a){if((n=e.charCodeAt(a))>55295&&n<57344){if(!o){if(n>56319){(t-=3)>-1&&i.push(239,191,189);continue}if(a+1===r){(t-=3)>-1&&i.push(239,191,189);continue}o=n;continue}if(n<56320){(t-=3)>-1&&i.push(239,191,189),o=n;continue}n=65536+(o-55296<<10|n-56320)}else o&&(t-=3)>-1&&i.push(239,191,189);if(o=null,n<128){if((t-=1)<0)break;i.push(n)}else if(n<2048){if((t-=2)<0)break;i.push(n>>6|192,63&n|128)}else if(n<65536){if((t-=3)<0)break;i.push(n>>12|224,n>>6&63|128,63&n|128)}else{if(!(n<1114112))throw new Error(\"Invalid code point\");if((t-=4)<0)break;i.push(n>>18|240,n>>12&63|128,n>>6&63|128,63&n|128)}}return i}function V(e){return r.toByteArray(function(e){if((e=function(e){return e.trim?e.trim():e.replace(/^\\s+|\\s+$/g,\"\")}(e).replace(U,\"\")).length<2)return\"\";for(;e.length%4!==0;)e+=\"=\";return e}(e))}function W(e,t,n,r){for(var o=0;o<r&&!(o+n>=t.length||o>=e.length);++o)t[o+n]=e[o];return o}}).call(this,n(31))},function(e,t){var n;n=function(){return this}();try{n=n||new Function(\"return this\")()}catch(r){\"object\"===typeof window&&(n=window)}e.exports=n},function(e,t,n){\"use strict\";t.byteLength=function(e){var t=u(e),n=t[0],r=t[1];return 3*(n+r)/4-r},t.toByteArray=function(e){var t,n,r=u(e),a=r[0],l=r[1],s=new i(function(e,t,n){return 3*(t+n)/4-n}(0,a,l)),c=0,d=l>0?a-4:a;for(n=0;n<d;n+=4)t=o[e.charCodeAt(n)]<<18|o[e.charCodeAt(n+1)]<<12|o[e.charCodeAt(n+2)]<<6|o[e.charCodeAt(n+3)],s[c++]=t>>16&255,s[c++]=t>>8&255,s[c++]=255&t;2===l&&(t=o[e.charCodeAt(n)]<<2|o[e.charCodeAt(n+1)]>>4,s[c++]=255&t);1===l&&(t=o[e.charCodeAt(n)]<<10|o[e.charCodeAt(n+1)]<<4|o[e.charCodeAt(n+2)]>>2,s[c++]=t>>8&255,s[c++]=255&t);return s},t.fromByteArray=function(e){for(var t,n=e.length,o=n%3,i=[],a=16383,l=0,s=n-o;l<s;l+=a)i.push(c(e,l,l+a>s?s:l+a));1===o?(t=e[n-1],i.push(r[t>>2]+r[t<<4&63]+\"==\")):2===o&&(t=(e[n-2]<<8)+e[n-1],i.push(r[t>>10]+r[t>>4&63]+r[t<<2&63]+\"=\"));return i.join(\"\")};for(var r=[],o=[],i=\"undefined\"!==typeof Uint8Array?Uint8Array:Array,a=\"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/\",l=0,s=a.length;l<s;++l)r[l]=a[l],o[a.charCodeAt(l)]=l;function u(e){var t=e.length;if(t%4>0)throw new Error(\"Invalid string. Length must be a multiple of 4\");var n=e.indexOf(\"=\");return-1===n&&(n=t),[n,n===t?0:4-n%4]}function c(e,t,n){for(var o,i,a=[],l=t;l<n;l+=3)o=(e[l]<<16&16711680)+(e[l+1]<<8&65280)+(255&e[l+2]),a.push(r[(i=o)>>18&63]+r[i>>12&63]+r[i>>6&63]+r[63&i]);return a.join(\"\")}o[\"-\".charCodeAt(0)]=62,o[\"_\".charCodeAt(0)]=63},function(e,t){t.read=function(e,t,n,r,o){var i,a,l=8*o-r-1,s=(1<<l)-1,u=s>>1,c=-7,d=n?o-1:0,f=n?-1:1,p=e[t+d];for(d+=f,i=p&(1<<-c)-1,p>>=-c,c+=l;c>0;i=256*i+e[t+d],d+=f,c-=8);for(a=i&(1<<-c)-1,i>>=-c,c+=r;c>0;a=256*a+e[t+d],d+=f,c-=8);if(0===i)i=1-u;else{if(i===s)return a?NaN:1/0*(p?-1:1);a+=Math.pow(2,r),i-=u}return(p?-1:1)*a*Math.pow(2,i-r)},t.write=function(e,t,n,r,o,i){var a,l,s,u=8*i-o-1,c=(1<<u)-1,d=c>>1,f=23===o?Math.pow(2,-24)-Math.pow(2,-77):0,p=r?0:i-1,h=r?1:-1,m=t<0||0===t&&1/t<0?1:0;for(t=Math.abs(t),isNaN(t)||t===1/0?(l=isNaN(t)?1:0,a=c):(a=Math.floor(Math.log(t)/Math.LN2),t*(s=Math.pow(2,-a))<1&&(a--,s*=2),(t+=a+d>=1?f/s:f*Math.pow(2,1-d))*s>=2&&(a++,s/=2),a+d>=c?(l=0,a=c):a+d>=1?(l=(t*s-1)*Math.pow(2,o),a+=d):(l=t*Math.pow(2,d-1)*Math.pow(2,o),a=0));o>=8;e[n+p]=255&l,p+=h,l/=256,o-=8);for(a=a<<o|l,u+=o;u>0;e[n+p]=255&a,p+=h,a/=256,u-=8);e[n+p-h]|=128*m}},function(e,t){var n={}.toString;e.exports=Array.isArray||function(e){return\"[object Array]\"==n.call(e)}},function(e,t,n){\"use strict\";if(n.r(t),\"object\"!==typeof DjVu)throw new Error(\"There is no DjVu object! You have to include the DjVu.js library first!\");var r=DjVu,o=n(2),i=n.n(o),a=n(4),l=n.n(a),s=(n(20),i.a.createContext(null));var u=function(e){e()};function c(){var e=u,t=null,n=null;return{clear:function(){t=null,n=null},notify:function(){e((function(){for(var e=t;e;)e.callback(),e=e.next}))},get:function(){for(var e=[],n=t;n;)e.push(n),n=n.next;return e},subscribe:function(e){var r=!0,o=n={callback:e,next:null,prev:n};return o.prev?o.prev.next=o:t=o,function(){r&&null!==t&&(r=!1,o.next?o.next.prev=o.prev:n=o.prev,o.prev?o.prev.next=o.next:t=o.next)}}}}var d={notify:function(){},get:function(){return[]}};function f(e,t){var n,r=d;function o(){a.onStateChange&&a.onStateChange()}function i(){n||(n=t?t.addNestedSub(o):e.subscribe(o),r=c())}var a={addNestedSub:function(e){return i(),r.subscribe(e)},notifyNestedSubs:function(){r.notify()},handleChangeWrapper:o,isSubscribed:function(){return Boolean(n)},trySubscribe:i,tryUnsubscribe:function(){n&&(n(),n=void 0,r.clear(),r=d)},getListeners:function(){return r}};return a}var p=\"undefined\"!==typeof window&&\"undefined\"!==typeof window.document&&\"undefined\"!==typeof window.document.createElement?o.useLayoutEffect:o.useEffect;var h=function(e){var t=e.store,n=e.context,r=e.children,a=Object(o.useMemo)((function(){var e=f(t);return e.onStateChange=e.notifyNestedSubs,{store:t,subscription:e}}),[t]),l=Object(o.useMemo)((function(){return t.getState()}),[t]);p((function(){var e=a.subscription;return e.trySubscribe(),l!==t.getState()&&e.notifyNestedSubs(),function(){e.tryUnsubscribe(),e.onStateChange=null}}),[a,l]);var u=n||s;return i.a.createElement(u.Provider,{value:a},r)};function m(){return(m=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e}).apply(this,arguments)}function g(e,t){if(null==e)return{};var n,r,o={},i=Object.keys(e);for(r=0;r<i.length;r++)n=i[r],t.indexOf(n)>=0||(o[n]=e[n]);return o}var v=n(5),b=n.n(v),y=n(10),w=[\"getDisplayName\",\"methodName\",\"renderCountProp\",\"shouldHandleStateChanges\",\"storeKey\",\"withRef\",\"forwardRef\",\"context\"],S=[\"reactReduxForwardedRef\"],O=[],x=[null,null];function _(e,t){var n=e[1];return[t.payload,n+1]}function j(e,t,n){p((function(){return e.apply(void 0,t)}),n)}function E(e,t,n,r,o,i,a){e.current=r,t.current=o,n.current=!1,i.current&&(i.current=null,a())}function C(e,t,n,r,o,i,a,l,s,u){if(e){var c=!1,d=null,f=function(){if(!c){var e,n,f=t.getState();try{e=r(f,o.current)}catch(p){n=p,d=p}n||(d=null),e===i.current?a.current||s():(i.current=e,l.current=e,a.current=!0,u({type:\"STORE_UPDATED\",payload:{error:n}}))}};n.onStateChange=f,n.trySubscribe(),f();return function(){if(c=!0,n.tryUnsubscribe(),n.onStateChange=null,d)throw d}}}var k=function(){return[null,0]};function T(e,t){void 0===t&&(t={});var n=t,r=n.getDisplayName,a=void 0===r?function(e){return\"ConnectAdvanced(\"+e+\")\"}:r,l=n.methodName,u=void 0===l?\"connectAdvanced\":l,c=n.renderCountProp,d=void 0===c?void 0:c,p=n.shouldHandleStateChanges,h=void 0===p||p,v=n.storeKey,T=void 0===v?\"store\":v,P=(n.withRef,n.forwardRef),N=void 0!==P&&P,I=n.context,R=void 0===I?s:I,A=g(n,w),D=R;return function(t){var n=t.displayName||t.name||\"Component\",r=a(n),l=m({},A,{getDisplayName:a,methodName:u,renderCountProp:d,shouldHandleStateChanges:h,storeKey:T,displayName:r,wrappedComponentName:n,WrappedComponent:t}),s=A.pure;var c=s?o.useMemo:function(e){return e()};function p(n){var r=Object(o.useMemo)((function(){var e=n.reactReduxForwardedRef,t=g(n,S);return[n.context,e,t]}),[n]),a=r[0],s=r[1],u=r[2],d=Object(o.useMemo)((function(){return a&&a.Consumer&&Object(y.isContextConsumer)(i.a.createElement(a.Consumer,null))?a:D}),[a,D]),p=Object(o.useContext)(d),v=Boolean(n.store)&&Boolean(n.store.getState)&&Boolean(n.store.dispatch);Boolean(p)&&Boolean(p.store);var b=v?n.store:p.store,w=Object(o.useMemo)((function(){return function(t){return e(t.dispatch,l)}(b)}),[b]),T=Object(o.useMemo)((function(){if(!h)return x;var e=f(b,v?null:p.subscription),t=e.notifyNestedSubs.bind(e);return[e,t]}),[b,v,p]),P=T[0],N=T[1],I=Object(o.useMemo)((function(){return v?p:m({},p,{subscription:P})}),[v,p,P]),R=Object(o.useReducer)(_,O,k),A=R[0][0],L=R[1];if(A&&A.error)throw A.error;var M=Object(o.useRef)(),z=Object(o.useRef)(u),U=Object(o.useRef)(),F=Object(o.useRef)(!1),B=c((function(){return U.current&&u===z.current?U.current:w(b.getState(),u)}),[b,A,u]);j(E,[z,M,F,u,B,U,N]),j(C,[h,b,P,w,z,M,F,U,N,L],[b,P,w]);var V=Object(o.useMemo)((function(){return i.a.createElement(t,m({},B,{ref:s}))}),[s,t,B]);return Object(o.useMemo)((function(){return h?i.a.createElement(d.Provider,{value:I},V):V}),[d,V,I])}var v=s?i.a.memo(p):p;if(v.WrappedComponent=t,v.displayName=p.displayName=r,N){var w=i.a.forwardRef((function(e,t){return i.a.createElement(v,m({},e,{reactReduxForwardedRef:t}))}));return w.displayName=r,w.WrappedComponent=t,b()(w,t)}return b()(v,t)}}function P(e,t){return e===t?0!==e||0!==t||1/e===1/t:e!==e&&t!==t}function N(e,t){if(P(e,t))return!0;if(\"object\"!==typeof e||null===e||\"object\"!==typeof t||null===t)return!1;var n=Object.keys(e),r=Object.keys(t);if(n.length!==r.length)return!1;for(var o=0;o<n.length;o++)if(!Object.prototype.hasOwnProperty.call(t,n[o])||!P(e[n[o]],t[n[o]]))return!1;return!0}function I(e){return function(t,n){var r=e(t,n);function o(){return r}return o.dependsOnOwnProps=!1,o}}function R(e){return null!==e.dependsOnOwnProps&&void 0!==e.dependsOnOwnProps?Boolean(e.dependsOnOwnProps):1!==e.length}function A(e,t){return function(t,n){n.displayName;var r=function(e,t){return r.dependsOnOwnProps?r.mapToProps(e,t):r.mapToProps(e)};return r.dependsOnOwnProps=!0,r.mapToProps=function(t,n){r.mapToProps=e,r.dependsOnOwnProps=R(e);var o=r(t,n);return\"function\"===typeof o&&(r.mapToProps=o,r.dependsOnOwnProps=R(o),o=r(t,n)),o},r}}var D=[function(e){return\"function\"===typeof e?A(e):void 0},function(e){return e?void 0:I((function(e){return{dispatch:e}}))},function(e){return e&&\"object\"===typeof e?I((function(t){return function(e,t){var n={},r=function(r){var o=e[r];\"function\"===typeof o&&(n[r]=function(){return t(o.apply(void 0,arguments))})};for(var o in e)r(o);return n}(e,t)})):void 0}];var L=[function(e){return\"function\"===typeof e?A(e):void 0},function(e){return e?void 0:I((function(){return{}}))}];function M(e,t,n){return m({},n,e,t)}var z=[function(e){return\"function\"===typeof e?function(e){return function(t,n){n.displayName;var r,o=n.pure,i=n.areMergedPropsEqual,a=!1;return function(t,n,l){var s=e(t,n,l);return a?o&&i(s,r)||(r=s):(a=!0,r=s),r}}}(e):void 0},function(e){return e?void 0:function(){return M}}];var U=[\"initMapStateToProps\",\"initMapDispatchToProps\",\"initMergeProps\"];function F(e,t,n,r){return function(o,i){return n(e(o,i),t(r,i),i)}}function B(e,t,n,r,o){var i,a,l,s,u,c=o.areStatesEqual,d=o.areOwnPropsEqual,f=o.areStatePropsEqual,p=!1;function h(o,p){var h=!d(p,a),m=!c(o,i);return i=o,a=p,h&&m?(l=e(i,a),t.dependsOnOwnProps&&(s=t(r,a)),u=n(l,s,a)):h?(e.dependsOnOwnProps&&(l=e(i,a)),t.dependsOnOwnProps&&(s=t(r,a)),u=n(l,s,a)):m?function(){var t=e(i,a),r=!f(t,l);return l=t,r&&(u=n(l,s,a)),u}():u}return function(o,c){return p?h(o,c):(l=e(i=o,a=c),s=t(r,a),u=n(l,s,a),p=!0,u)}}function V(e,t){var n=t.initMapStateToProps,r=t.initMapDispatchToProps,o=t.initMergeProps,i=g(t,U),a=n(e,i),l=r(e,i),s=o(e,i);return(i.pure?B:F)(a,l,s,e,i)}var W=[\"pure\",\"areStatesEqual\",\"areOwnPropsEqual\",\"areStatePropsEqual\",\"areMergedPropsEqual\"];function H(e,t,n){for(var r=t.length-1;r>=0;r--){var o=t[r](e);if(o)return o}return function(t,r){throw new Error(\"Invalid value of type \"+typeof e+\" for \"+n+\" argument when connecting component \"+r.wrappedComponentName+\".\")}}function $(e,t){return e===t}function G(e){var t=void 0===e?{}:e,n=t.connectHOC,r=void 0===n?T:n,o=t.mapStateToPropsFactories,i=void 0===o?L:o,a=t.mapDispatchToPropsFactories,l=void 0===a?D:a,s=t.mergePropsFactories,u=void 0===s?z:s,c=t.selectorFactory,d=void 0===c?V:c;return function(e,t,n,o){void 0===o&&(o={});var a=o,s=a.pure,c=void 0===s||s,f=a.areStatesEqual,p=void 0===f?$:f,h=a.areOwnPropsEqual,v=void 0===h?N:h,b=a.areStatePropsEqual,y=void 0===b?N:b,w=a.areMergedPropsEqual,S=void 0===w?N:w,O=g(a,W),x=H(e,i,\"mapStateToProps\"),_=H(t,l,\"mapDispatchToProps\"),j=H(n,u,\"mergeProps\");return r(d,m({methodName:\"connect\",getDisplayName:function(e){return\"Connect(\"+e+\")\"},shouldHandleStateChanges:Boolean(e),initMapStateToProps:x,initMapDispatchToProps:_,initMergeProps:j,pure:c,areStatesEqual:p,areOwnPropsEqual:v,areStatePropsEqual:y,areMergedPropsEqual:S},O))}}var q=G();function Y(){return Object(o.useContext)(s)}function K(e){void 0===e&&(e=s);var t=e===s?Y:function(){return Object(o.useContext)(e)};return function(){return t().store}}var Q=K();function X(e){void 0===e&&(e=s);var t=e===s?Q:K(e);return function(){return t().dispatch}}var Z=X(),J=function(e,t){return e===t};function ee(e){void 0===e&&(e=s);var t=e===s?Y:function(){return Object(o.useContext)(e)};return function(e,n){void 0===n&&(n=J);var r=t(),i=function(e,t,n,r){var i,a=Object(o.useReducer)((function(e){return e+1}),0)[1],l=Object(o.useMemo)((function(){return f(n,r)}),[n,r]),s=Object(o.useRef)(),u=Object(o.useRef)(),c=Object(o.useRef)(),d=Object(o.useRef)(),h=n.getState();try{if(e!==u.current||h!==c.current||s.current){var m=e(h);i=void 0!==d.current&&t(m,d.current)?d.current:m}else i=d.current}catch(g){throw s.current&&(g.message+=\"\\nThe error may be correlated with this previous error:\\n\"+s.current.stack+\"\\n\\n\"),g}return p((function(){u.current=e,c.current=h,d.current=i,s.current=void 0})),p((function(){function e(){try{var e=n.getState();if(e===c.current)return;var r=u.current(e);if(t(r,d.current))return;d.current=r,c.current=e}catch(g){s.current=g}a()}return l.onStateChange=e,l.trySubscribe(),e(),function(){return l.tryUnsubscribe()}}),[n,l]),i}(e,n,r.store,r.subscription);return Object(o.useDebugValue)(i),i}}var te,ne=ee();te=a.unstable_batchedUpdates,u=te;var re=n(1);function oe(e,t){return e===t}function ie(e,t,n){if(null===t||null===n||t.length!==n.length)return!1;for(var r=t.length,o=0;o<r;o++)if(!e(t[o],n[o]))return!1;return!0}function ae(e){var t=Array.isArray(e[0])?e[0]:e;if(!t.every((function(e){return\"function\"===typeof e}))){var n=t.map((function(e){return typeof e})).join(\", \");throw new Error(\"Selector creators expect all input-selectors to be functions, instead received the following types: [\"+n+\"]\")}return t}var le=function(e){for(var t=arguments.length,n=Array(t>1?t-1:0),r=1;r<t;r++)n[r-1]=arguments[r];return function(){for(var t=arguments.length,r=Array(t),o=0;o<t;o++)r[o]=arguments[o];var i=0,a=r.pop(),l=ae(r),s=e.apply(void 0,[function(){return i++,a.apply(null,arguments)}].concat(n)),u=e((function(){for(var e=[],t=l.length,n=0;n<t;n++)e.push(l[n].apply(null,arguments));return s.apply(null,e)}));return u.resultFunc=a,u.dependencies=l,u.recomputations=function(){return i},u.resetRecomputations=function(){return i=0},u}}((function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:oe,n=null,r=null;return function(){return ie(t,n,arguments)||(r=e.apply(null,arguments)),n=arguments,r}}));function se(e){for(const t in e)null===e[t]&&(e[t]=t);return Object.freeze(e)}var ue=se({TRANSLATION_PAGE_URL:\"https://github.com/RussCoder/djvujs/blob/master/TRANSLATION.md\",DEFAULT_DPI:100,TEXT_CURSOR_MODE:null,GRAB_CURSOR_MODE:null,TEXT_MODE:\"text\",CONTINUOUS_SCROLL_MODE:\"continuous\",SINGLE_PAGE_MODE:\"single\",SET_CURSOR_MODE_ACTION:null,ERROR_ACTION:null,CREATE_DOCUMENT_FROM_ARRAY_BUFFER_ACTION:null,CONTENTS_IS_GOTTEN_ACTION:null,ARRAY_BUFFER_LOADED_ACTION:null,IMAGE_DATA_RECEIVED_ACTION:null,DOCUMENT_CREATED_ACTION:null,SET_NEW_PAGE_NUMBER_ACTION:null,SET_PAGE_BY_URL_ACTION:null,TOGGLE_FULL_PAGE_VIEW_ACTION:null,PAGE_TEXT_FETCHED_ACTION:null,SET_USER_SCALE_ACTION:null,START_FILE_LOADING_ACTION:null,END_FILE_LOADING_ACTION:null,FILE_LOADING_PROGRESS_ACTION:null,SHOW_HELP_WINDOW_ACTION:null,CLOSE_HELP_WINDOW_ACTION:null,CLOSE_DOCUMENT_ACTION:null,SET_PAGE_ROTATION_ACTION:null,PAGE_ERROR_ACTION:null,PAGE_IS_LOADED_ACTION:null,PAGES_SIZES_ARE_GOTTEN:null,DROP_PAGE_ACTION:null,DROP_ALL_PAGES_ACTION:null,SET_API_CALLBACK_ACTION:null});const ce=se({LOAD_DOCUMENT_BY_URL:null,CONFIGURE:null,LOAD_DOCUMENT:null,UPDATE_OPTIONS:null,SET_IMAGE_PAGE_ERROR:null,SET_TEXT_PAGE_ERROR:null,START_TO_BUNDLE:null,FINISH_TO_BUNDLE:null,CLOSE_SAVE_DIALOG:null,OPEN_SAVE_DIALOG:null,UPDATE_FILE_PROCESSING_PROGRESS:null,ERROR:null,SAVE_DOCUMENT:null,SET_UI_OPTIONS:null,TOGGLE_OPTIONS_WINDOW:null,CLOSE_ERROR_WINDOW:null,DESTROY:null,OPEN_PRINT_DIALOG:null,CLOSE_PRINT_DIALOG:null,PREPARE_PAGES_FOR_PRINTING:null,START_PRINTING:null,UPDATE_PRINT_PROGRESS:null,CLOSE_CONTENTS:null,TOGGLE_CONTENTS:null,PIN_TOOLBAR:null,UNPIN_TOOLBAR:null,UPDATE_APP_CONTEXT:null,SET_VIEW_MODE:null}),de=Object.freeze({isFileLoading:!1,loadedBytes:0,totalBytes:0});function fe(e=de,t){switch(t.type){case ue.START_FILE_LOADING_ACTION:return{...e,isFileLoading:!0};case ue.FILE_LOADING_PROGRESS_ACTION:return{...e,loadedBytes:t.loaded,totalBytes:t.total};case ue.END_FILE_LOADING_ACTION:case ce.ERROR:return de;default:return e}}const pe=e=>le((e=>e.fileLoadingState),e),he={isFileLoading:pe((e=>e.isFileLoading)),loadedBytes:pe((e=>e.loadedBytes)),totalBytes:pe((e=>e.totalBytes))},me=Object.freeze({imageData:null,imageDpi:null,pageText:null,textZones:null,imagePageError:null,textPageError:null}),ge=Object.freeze({...me,cursorMode:ue.GRAB_CURSOR_MODE,currentPageNumber:1,shouldScrollToPage:!1,pageList:[],pageSizeList:[]});function ve(e=ge,t){const n=t.payload;switch(t.type){case ue.DROP_PAGE_ACTION:{const n=[...e.pageList],r=t.pageNumber-1;return n[r]&&(n[r]={width:n[r].width,height:n[r].height,dpi:n[r].dpi}),{...e,pageList:n}}case ue.DROP_ALL_PAGES_ACTION:return{...e,pageList:[...e.pageSizeList]};case ue.PAGES_SIZES_ARE_GOTTEN:return{...e,isLoading:!1,pageSizeList:t.sizes,pageList:t.sizes};case ue.PAGE_IS_LOADED_ACTION:const r=e.pageList[t.pageNumber-1];if(r&&r.url)return e;const o=[...e.pageList];return o[t.pageNumber-1]=t.pageData,{...e,pageList:o};case ue.SET_CURSOR_MODE_ACTION:return{...e,cursorMode:t.cursorMode};case ue.IMAGE_DATA_RECEIVED_ACTION:return{...e,imageData:t.imageData,imageDpi:t.imageDpi};case ue.SET_NEW_PAGE_NUMBER_ACTION:return{...e,...e.textPageError||e.imagePageError?me:null,shouldScrollToPage:t.shouldScrollToPage,currentPageNumber:t.pageNumber};case ce.SET_VIEW_MODE:if(n===ue.CONTINUOUS_SCROLL_MODE)return{...e,...me};break;case ue.PAGE_TEXT_FETCHED_ACTION:return{...e,pageText:t.pageText,textZones:t.textZones};case ce.SET_IMAGE_PAGE_ERROR:return{...e,imagePageError:n};case ce.SET_TEXT_PAGE_ERROR:return{...e,textPageError:n}}return e}const be=e=>le((e=>e.pageState),e),ye={cursorMode:be((e=>e.cursorMode)),pageText:be((e=>e.pageText)),imageData:be((e=>e.imageData)),imageDpi:be((e=>e.imageDpi)),textZones:be((e=>e.textZones)),currentPageNumber:be((e=>e.currentPageNumber)),shouldScrollToPage:be((e=>e.shouldScrollToPage)),imagePageError:be((e=>e.imagePageError)),textPageError:be((e=>e.textPageError)),pageList:be((e=>e.pageList)),pageSizeList:be((e=>e.pageSizeList))};var we={en:{englishName:\"English\",nativeName:\"English\",Language:\"Language\",\"Add more\":\"Add more\",\"The translation isn't complete.\":\"The translation isn't complete.\",\"The following phrases are not translated:\":\"The following phrases are not translated:\",\"You can improve the translation here\":\"You can improve the translation here\",\"#helpButton - learn more about the app\":\"#helpButton - learn more about the app\",\"#optionsButton - see the available options\":\"#optionsButton - see the available options\",\"powered with\":\"powered with\",\"Drag & Drop a file here or click to choose manually\":\"Drag & Drop a file here or click to choose manually\",\"Paste a URL to a djvu file here\":\"Paste a URL to a djvu file here\",\"Open URL\":\"Open URL\",'Enter a valid URL (it should start with \"http(s)://\")':'Enter a valid URL (it should start with \"http(s)://\")',Error:\"Error\",\"Error on page\":\"Error on page\",\"Network error\":\"Network error\",\"Check your network connection\":\"Check your network connection\",\"Web request error\":\"Web request error\",\"404 Document not found\":\"404 Document not found\",\"403 Access forbidden\":\"403 Access forbidden\",\"500 Internal server error\":\"500 Internal server error\",\"The request failed with HTTP status #status\":\"The request failed with HTTP status #status\",\"DjVu file is corrupted\":\"DjVu file is corrupted\",\"The file doesn't comply with the DjVu format specification or it's not a whole DjVu document\":\"The file doesn't comply with the DjVu format specification or it's not a whole DjVu document\",\"Incorrect file format\":\"Incorrect file format\",\"The provided file is not a DjVu document\":\"The provided file is not a DjVu document\",\"Incorrect page number\":\"Incorrect page number\",\"There is no page with the number #pageNumber\":\"There is no page with the number #pageNumber\",\"No base URL for an indirect DjVu document\":\"No base URL for an indirect DjVu document\",\"You probably opened an indirect (multi-file) DjVu document manually.\":\"You probably opened an indirect (multi-file) DjVu document manually.\",\"But such multi-file documents can be only loaded by URL.\":\"But such multi-file documents can be only loaded by URL.\",\"Unexpected error\":\"Unexpected error\",\"Cannot print the error, look in the console\":\"Cannot print the error, look in the console\",Options:\"Options\",\"Show options window\":\"Show options window\",\"Color theme\":\"Color theme\",\"Extension options\":\"Extension options\",\"Open all links with .djvu at the end via the viewer\":\"Open all links with .djvu at the end via the viewer\",\"All links to .djvu files will be opened by the viewer via a simple click on a link\":\"All links to .djvu files will be opened by the viewer via a simple click on a link\",\"Detect .djvu files by means of http headers\":\"Detect .djvu files by means of http headers\",\"Analyze headers of every new tab in order to process even links which do not end with the .djvu extension\":\"Analyze headers of every new tab in order to process even links which do not end with the .djvu extension\",Ready:\"Ready\",Loading:\"Loading\",\"Show help window\":\"Show help window\",\"Switch full page mode\":\"Switch full page mode\",\"Choose a file\":\"Choose a file\",\"Close document\":\"Close document\",\"Save document\":\"Save document\",Save:\"Save\",\"Open another .djvu file\":\"Open another .djvu file\",\"The application for viewing .djvu files in the browser.\":\"The application for viewing .djvu files in the browser.\",\"If something doesn't work properly, feel free to write about the problem at #email.\":\"If something doesn't work properly, feel free to write about the problem at #email.\",\"The official website is #website.\":\"The official website is #website.\",\"The source code is available on #link.\":\"The source code is available on #link.\",Hotkeys:\"Hotkeys\",\"save the document\":\"save the document\",\"go to the previous page\":\"go to the previous page\",\"go to the next page\":\"go to the next page\",Controls:\"Controls\",\"#expandIcon and #collapseIcon are to switch the viewer to the full page mode and back.\":\"#expandIcon and #collapseIcon are to switch the viewer to the full page mode and back.\",\"If you work with the browser extension, these buttons will cause no effect, since the viewer takes the whole page by default.\":\"If you work with the browser extension, these buttons will cause no effect, since the viewer takes the whole page by default.\",\"Continuous scroll view mode\":\"Continuous scroll view mode\",\"Single page view mode\":\"Single page view mode\",\"Text view mode\":\"Text view mode\",\"Click on the number to enter it manually\":\"Click on the number to enter it manually\",\"Rotate the page\":\"Rotate the page\",\"You also can scale the page via Ctrl+MouseWheel\":\"You also can scale the page via Ctrl+MouseWheel\",\"Text cursor mode\":\"Text cursor mode\",\"Grab cursor mode\":\"Grab cursor mode\",\"Table of contents\":\"Table of contents\",\"Toolbar is always shown\":\"Toolbar is always shown\",\"Toolbar automatically hides\":\"Toolbar automatically hides\",Contents:\"Contents\",\"No contents provided\":\"No contents provided\",\"The link points to another document. Do you want to proceed?\":\"The link points to another document. Do you want to proceed?\",\"No text on this page\":\"No text on this page\",\"You are trying to save an indirect (multi-file) document.\":\"You are trying to save an indirect (multi-file) document.\",\"What exactly do you want to do?\":\"What exactly do you want to do?\",\"Save only index file\":\"Save only index file\",\"Download, bundle and save the whole document as one file\":\"Download, bundle and save the whole document as one file\",\"Downloading and bundling the document\":\"Downloading and bundling the document\",\"The document has been downloaded and bundled into one file successfully\":\"The document has been downloaded and bundled into one file successfully\",\"Print document\":\"Print document\",\"Pages must be rendered before printing.\":\"Pages must be rendered before printing.\",\"It may take a while.\":\"It may take a while.\",\"Select the pages you want to print.\":\"Select the pages you want to print.\",From:\"From\",to:\"to\",\"Prepare pages for printing\":\"Prepare pages for printing\",\"Preparing pages for printing\":\"Preparing pages for printing\",Menu:\"Menu\",Document:\"Document\",About:\"About\",Print:\"Print\",Close:\"Close\",\"View mode\":\"View mode\",Scale:\"Scale\",Rotation:\"Rotation\",\"Cursor mode\":\"Cursor mode\",\"Full page mode\":\"Full page mode\",\"Fullscreen mode\":\"Fullscreen mode\"},ru:{englishName:\"Russian\",nativeName:\"\\u0420\\u0443\\u0441\\u0441\\u043a\\u0438\\u0439\",Language:\"\\u042f\\u0437\\u044b\\u043a\",\"Add more\":\"\\u0414\\u043e\\u0431\\u0430\\u0432\\u0438\\u0442\\u044c \\u0435\\u0449\\u0435\",\"The translation isn't complete.\":\"\\u041f\\u0435\\u0440\\u0435\\u0432\\u043e\\u0434 \\u043d\\u0435\\u043f\\u043e\\u043b\\u043d\\u044b\\u0439.\",\"The following phrases are not translated:\":\"\\u0421\\u043b\\u0435\\u0434\\u0443\\u044e\\u0449\\u0438\\u0435 \\u0444\\u0440\\u0430\\u0437\\u044b \\u043d\\u0435 \\u043f\\u0435\\u0440\\u0435\\u0432\\u0435\\u0434\\u0435\\u043d\\u044b:\",\"You can improve the translation here\":\"\\u0412\\u044b \\u043c\\u043e\\u0436\\u0435\\u0442\\u0435 \\u0443\\u043b\\u0443\\u0447\\u0448\\u0438\\u0442\\u044c \\u043f\\u0435\\u0440\\u0435\\u0432\\u043e\\u0434 \\u0442\\u0443\\u0442\",\"#helpButton - learn more about the app\":\"#helpButton - \\u0443\\u0437\\u043d\\u0430\\u0442\\u044c \\u0431\\u043e\\u043b\\u044c\\u0448\\u0435 \\u043e \\u043f\\u0440\\u043e\\u0433\\u0440\\u0430\\u043c\\u043c\\u0435\",\"#optionsButton - see the available options\":\"#optionsButton - \\u0438\\u0437\\u043c\\u0435\\u043d\\u0435\\u043d\\u0438\\u0435 \\u043d\\u0430\\u0441\\u0442\\u0440\\u043e\\u0435\\u043a\",\"powered with\":\"\\u043e\\u0441\\u043d\\u043e\\u0432\\u0430\\u043d\\u043e \\u043d\\u0430\",\"Drag & Drop a file here or click to choose manually\":\"\\u041f\\u0435\\u0440\\u0435\\u0442\\u0430\\u0449\\u0438\\u0442\\u0435 \\u0441\\u044e\\u0434\\u0430 \\u0444\\u0430\\u0439\\u043b \\u0438\\u043b\\u0438 \\u043a\\u043b\\u0438\\u043a\\u043d\\u0438\\u0442\\u0435, \\u0447\\u0442\\u043e\\u0431\\u044b \\u0432\\u044b\\u0431\\u0440\\u0430\\u0442\\u044c \\u0435\\u0433\\u043e \\u0432\\u0440\\u0443\\u0447\\u043d\\u0443\\u044e\",\"Paste a URL to a djvu file here\":\"\\u0412\\u0441\\u0442\\u0430\\u0432\\u044c\\u0442\\u0435 \\u0441\\u0441\\u044b\\u043b\\u043a\\u0443 \\u043d\\u0430 .djvu \\u0444\\u0430\\u0439\\u043b\",\"Open URL\":\"\\u041e\\u0442\\u043a\\u0440\\u044b\\u0442\\u044c \\u0441\\u0441\\u044b\\u043b\\u043a\\u0443\",'Enter a valid URL (it should start with \"http(s)://\")':'\\u0412\\u0432\\u0435\\u0434\\u0438\\u0442\\u0435 \\u043a\\u043e\\u0440\\u0440\\u0435\\u043a\\u0442\\u043d\\u0443\\u044e \\u0441\\u0441\\u044b\\u043b\\u043a\\u0443 (\\u043e\\u043d\\u0430 \\u0434\\u043e\\u043b\\u0436\\u043d\\u0430 \\u043d\\u0430\\u0447\\u0438\\u043d\\u0430\\u0442\\u044c\\u0441\\u044f \\u0441 \"http(s)://\")',Error:\"\\u041e\\u0448\\u0438\\u0431\\u043a\\u0430\",\"Error on page\":\"\\u041e\\u0448\\u0438\\u0431\\u043a\\u0430 \\u043d\\u0430 \\u0441\\u0442\\u0440\\u0430\\u043d\\u0438\\u0446\\u0435\",\"Network error\":\"\\u041e\\u0448\\u0438\\u0431\\u043a\\u0430 \\u0441\\u0435\\u0442\\u0438\",\"Check your network connection\":\"\\u041f\\u0440\\u043e\\u0432\\u0435\\u0440\\u044c\\u0442\\u0435 \\u0441\\u0432\\u043e\\u0435 \\u0438\\u043d\\u0442\\u0435\\u0440\\u043d\\u0435\\u0442-\\u0441\\u043e\\u0435\\u0434\\u0438\\u043d\\u0435\\u043d\\u0438\\u0435\",\"Web request error\":\"\\u041e\\u0448\\u0438\\u0431\\u043a\\u0430 \\u0432\\u0435\\u0431-\\u0437\\u0430\\u043f\\u0440\\u043e\\u0441\\u0430\",\"404 Document not found\":\"404 \\u0414\\u043e\\u043a\\u0443\\u043c\\u0435\\u043d\\u0442 \\u043d\\u0435 \\u043d\\u0430\\u0439\\u0434\\u0435\\u043d\",\"403 Access forbidden\":\"403 \\u0414\\u043e\\u0441\\u0442\\u0443\\u043f \\u0437\\u0430\\u043f\\u0440\\u0435\\u0449\\u0435\\u043d\",\"500 Internal server error\":\"500 \\u0412\\u043d\\u0443\\u0442\\u0440\\u0435\\u043d\\u043d\\u044f\\u044f \\u043e\\u0448\\u0438\\u0431\\u043a\\u0430 \\u0441\\u0435\\u0440\\u0432\\u0435\\u0440\\u0430\",\"The request failed with HTTP status #status\":\"\\u0417\\u0430\\u043f\\u0440\\u043e\\u0441 \\u0437\\u0430\\u0432\\u0435\\u0440\\u0448\\u0438\\u043b\\u0441\\u044f \\u0441 HTTP-\\u0441\\u0442\\u0430\\u0442\\u0443\\u0441\\u043e\\u043c #status\",\"DjVu file is corrupted\":\"DjVu-\\u0444\\u0430\\u0439\\u043b \\u043f\\u043e\\u0432\\u0440\\u0435\\u0436\\u0434\\u0435\\u043d\",\"The file doesn't comply with the DjVu format specification or it's not a whole DjVu document\":\"\\u0424\\u0430\\u0439\\u043b \\u043d\\u0435 \\u0441\\u043e\\u043e\\u0442\\u0432\\u0435\\u0442\\u0441\\u0442\\u0432\\u0443\\u0435\\u0442 \\u0441\\u043f\\u0435\\u0446\\u0438\\u0444\\u0438\\u043a\\u0430\\u0446\\u0438\\u0438 \\u0444\\u043e\\u0440\\u043c\\u0430\\u0442\\u0430 DjVu, \\u0438\\u043b\\u0438 \\u0436\\u0435 \\u044d\\u0442\\u043e \\u043d\\u0435 \\u0432\\u0435\\u0441\\u044c DjVu-\\u0434\\u043e\\u043a\\u0443\\u043c\\u0435\\u043d\\u0442\",\"Incorrect file format\":\"\\u041d\\u0435\\u0432\\u0435\\u0440\\u043d\\u044b\\u0439 \\u0444\\u043e\\u0440\\u043c\\u0430\\u0442 \\u0444\\u0430\\u0439\\u043b\\u0430\",\"The provided file is not a DjVu document\":\"\\u0417\\u0430\\u0433\\u0440\\u0443\\u0436\\u0435\\u043d\\u043d\\u044b\\u0439 \\u0444\\u0430\\u0439\\u043b \\u043d\\u0435 \\u044f\\u0432\\u043b\\u044f\\u0435\\u0442\\u0441\\u044f DjVu-\\u0434\\u043e\\u043a\\u0443\\u043c\\u0435\\u043d\\u0442\\u043e\\u043c\",\"Incorrect page number\":\"\\u041d\\u0435\\u043a\\u043e\\u0440\\u0440\\u0435\\u043a\\u0442\\u043d\\u044b\\u0439 \\u043d\\u043e\\u043c\\u0435\\u0440 \\u0441\\u0442\\u0440\\u0430\\u043d\\u0438\\u0446\\u044b\",\"There is no page with the number #pageNumber\":\"\\u0421\\u0442\\u0440\\u0430\\u043d\\u0438\\u0446\\u044b \\u0441 \\u043d\\u043e\\u043c\\u0435\\u0440\\u043e\\u043c #pageNumber \\u043d\\u0435 \\u0441\\u0443\\u0449\\u0435\\u0441\\u0442\\u0432\\u0443\\u0435\\u0442\",\"No base URL for an indirect DjVu document\":\"\\u041d\\u0435\\u0442 \\u0441\\u0441\\u044b\\u043b\\u043a\\u0438 \\u043d\\u0430 \\u0434\\u0438\\u0440\\u0435\\u043a\\u0442\\u043e\\u0440\\u0438\\u044e \\u0434\\u043e\\u043a\\u0443\\u043c\\u0435\\u043d\\u0442\\u0430\",\"You probably opened an indirect (multi-file) DjVu document manually.\":\"\\u0412\\u0435\\u0440\\u043e\\u044f\\u0442\\u043d\\u043e, \\u0432\\u044b \\u043e\\u0442\\u043a\\u0440\\u044b\\u043b\\u0438 \\u043c\\u043d\\u043e\\u0433\\u043e\\u0444\\u0430\\u0439\\u043b\\u043e\\u0432\\u044b\\u0439 (indirect) DjVu-\\u0434\\u043e\\u043a\\u0443\\u043c\\u0435\\u043d\\u0442 \\u0432\\u0440\\u0443\\u0447\\u043d\\u0443\\u044e.\",\"But such multi-file documents can be only loaded by URL.\":\"\\u041e\\u0434\\u043d\\u0430\\u043a\\u043e, \\u0442\\u0430\\u043a\\u0438\\u0435 \\u0434\\u043e\\u043a\\u0443\\u043c\\u0435\\u043d\\u0442\\u044b \\u043c\\u043e\\u0433\\u0443\\u0442 \\u0431\\u044b\\u0442\\u044c \\u0437\\u0430\\u0433\\u0440\\u0443\\u0436\\u0435\\u043d\\u044b \\u0442\\u043e\\u043b\\u044c\\u043a\\u043e \\u043f\\u043e \\u0441\\u0441\\u044b\\u043b\\u043a\\u0435.\",\"Unexpected error\":\"\\u041d\\u0435\\u043f\\u0440\\u0435\\u0434\\u0432\\u0438\\u0434\\u0435\\u043d\\u043d\\u0430\\u044f \\u043e\\u0448\\u0438\\u0431\\u043a\\u0430\",\"Cannot print the error, look in the console\":\"\\u041d\\u0435\\u0432\\u043e\\u0437\\u043c\\u043e\\u0436\\u043d\\u043e \\u0432\\u044b\\u0432\\u0435\\u0441\\u0442\\u0438 \\u043e\\u0448\\u0438\\u0431\\u043a\\u0443 \\u0432 \\u0442\\u0435\\u043a\\u0441\\u0442\\u043e\\u0432\\u043e\\u043c \\u0432\\u0438\\u0434\\u0435, \\u043f\\u043e\\u0441\\u043c\\u043e\\u0442\\u0440\\u0438\\u0442\\u0435 \\u0432 \\u043a\\u043e\\u043d\\u0441\\u043e\\u043b\\u044c\",Options:\"\\u041d\\u0430\\u0441\\u0442\\u0440\\u043e\\u0439\\u043a\\u0438\",\"Show options window\":\"\\u041e\\u0442\\u043a\\u0440\\u044b\\u0442\\u044c \\u043e\\u043a\\u043d\\u043e \\u043d\\u0430\\u0441\\u0442\\u0440\\u043e\\u0435\\u043a\",\"Color theme\":\"\\u0426\\u0432\\u0435\\u0442\\u043e\\u0432\\u0430\\u044f \\u0441\\u0445\\u0435\\u043c\\u0430\",\"Extension options\":\"\\u041d\\u0430\\u0441\\u0442\\u0440\\u043e\\u0439\\u043a\\u0438 \\u0440\\u0430\\u0441\\u0448\\u0438\\u0440\\u0435\\u043d\\u0438\\u044f\",\"Open all links with .djvu at the end via the viewer\":\"\\u041e\\u0442\\u043a\\u0440\\u044b\\u0432\\u0430\\u0442\\u044c \\u0432\\u0441\\u0435 \\u0441\\u0441\\u044b\\u043b\\u043a\\u0438 \\u0441 .djvu \\u043d\\u0430 \\u043a\\u043e\\u043d\\u0446\\u0435 \\u0447\\u0435\\u0440\\u0435\\u0437 \\u0440\\u0430\\u0441\\u0448\\u0438\\u0440\\u0435\\u043d\\u0438\\u0435\",\"All links to .djvu files will be opened by the viewer via a simple click on a link\":\"\\u0412\\u0441\\u0435 \\u0441\\u0441\\u044b\\u043b\\u043a\\u0438 \\u043d\\u0430 .djvu \\u0444\\u0430\\u0439\\u043b\\u044b \\u0431\\u0443\\u0434\\u0443\\u0442 \\u043e\\u0442\\u043a\\u0440\\u044b\\u0432\\u0430\\u0442\\u044c\\u0441\\u044f \\u0440\\u0430\\u0441\\u0448\\u0438\\u0440\\u0435\\u043d\\u0438\\u0435\\u043c \\u043f\\u043e \\u043a\\u043b\\u0438\\u043a\\u0443 \\u043d\\u0430 \\u0441\\u0441\\u044b\\u043b\\u043a\\u0435\",\"Detect .djvu files by means of http headers\":\"\\u041e\\u043f\\u0440\\u0435\\u0434\\u0435\\u043b\\u044f\\u0442\\u044c .djvu \\u0444\\u0430\\u0439\\u043b\\u044b \\u043f\\u043e http \\u0437\\u0430\\u0433\\u043e\\u043b\\u043e\\u0432\\u043a\\u0430\\u043c\",\"Analyze headers of every new tab in order to process even links which do not end with the .djvu extension\":'\\u0410\\u043d\\u0430\\u043b\\u0438\\u0437\\u0438\\u0440\\u043e\\u0432\\u0430\\u0442\\u044c \\u0437\\u0430\\u0433\\u043e\\u043b\\u043e\\u0432\\u043a\\u0438 \\u043a\\u0430\\u0436\\u0434\\u043e\\u0439 \\u043d\\u043e\\u0432\\u043e\\u0439 \\u0432\\u043a\\u043b\\u0430\\u0434\\u043a\\u0438, \\u0447\\u0442\\u043e\\u0431\\u044b \\u043e\\u043f\\u0440\\u0435\\u0434\\u0435\\u043b\\u044f\\u0442\\u044c \\u0444\\u0430\\u0439\\u043b\\u044b \\u0434\\u0430\\u0436\\u0435 \\u0431\\u0435\\u0437 \\u0440\\u0430\\u0441\\u0448\\u0438\\u0440\\u0435\\u043d\\u0438\\u044f \".djvu\" \\u0432 \\u0441\\u0441\\u044b\\u043b\\u043a\\u0435',Ready:\"\\u0413\\u043e\\u0442\\u043e\\u0432\\u043e\",Loading:\"\\u0417\\u0430\\u0433\\u0440\\u0443\\u0437\\u043a\\u0430\",\"Show help window\":\"\\u041f\\u043e\\u043a\\u0430\\u0437\\u0430\\u0442\\u044c \\u043e\\u043a\\u043d\\u043e \\u0441\\u043f\\u0440\\u0430\\u0432\\u043a\\u0438\",\"Switch full page mode\":\"\\u041f\\u0435\\u0440\\u0435\\u043a\\u043b\\u044e\\u0447\\u0438\\u0442\\u044c \\u043f\\u043e\\u043b\\u043d\\u043e\\u0441\\u0442\\u0440\\u0430\\u043d\\u0438\\u0447\\u043d\\u044b\\u0439 \\u0440\\u0435\\u0436\\u0438\\u043c\",\"Choose a file\":\"\\u0412\\u044b\\u0431\\u0435\\u0440\\u0438\\u0442\\u0435 \\u0444\\u0430\\u0439\\u043b\",\"Close document\":\"\\u0417\\u0430\\u043a\\u0440\\u044b\\u0442\\u044c \\u0434\\u043e\\u043a\\u0443\\u043c\\u0435\\u043d\\u0442\",\"Save document\":\"\\u0421\\u043e\\u0445\\u0440\\u0430\\u043d\\u0438\\u0442\\u044c \\u0434\\u043e\\u043a\\u0443\\u043c\\u0435\\u043d\\u0442\",Save:\"\\u0421\\u043e\\u0445\\u0440\\u0430\\u043d\\u0438\\u0442\\u044c\",\"Open another .djvu file\":\"\\u041e\\u0442\\u043a\\u0440\\u044b\\u0442\\u044c \\u0434\\u0440\\u0443\\u0433\\u043e\\u0439 .djvu \\u0444\\u0430\\u0439\\u043b\",\"The application for viewing .djvu files in the browser.\":\"\\u041f\\u0440\\u0438\\u043b\\u043e\\u0436\\u0435\\u043d\\u0438\\u0435 \\u0434\\u043b\\u044f \\u043f\\u0440\\u043e\\u0441\\u043c\\u043e\\u0442\\u0440\\u0430 .djvu \\u0444\\u0430\\u0439\\u043b\\u043e\\u0432 \\u0432 \\u0431\\u0440\\u0430\\u0443\\u0437\\u0435\\u0440\\u0435.\",\"If something doesn't work properly, feel free to write about the problem at #email.\":\"\\u0415\\u0441\\u043b\\u0438 \\u0447\\u0442\\u043e-\\u0442\\u043e \\u043d\\u0435 \\u0440\\u0430\\u0431\\u043e\\u0442\\u0430\\u0435\\u0442, \\u043f\\u0438\\u0448\\u0438\\u0442\\u0435 \\u043d\\u0430 #email.\",\"The official website is #website.\":\"\\u041e\\u0444\\u0438\\u0446\\u0438\\u0430\\u043b\\u044c\\u043d\\u044b\\u0439 \\u0432\\u0435\\u0431-\\u0441\\u0430\\u0439\\u0442 #website.\",\"The source code is available on #link.\":\"\\u0418\\u0441\\u0445\\u043e\\u0434\\u043d\\u044b\\u0439 \\u043a\\u043e\\u0434 \\u043d\\u0430\\u0445\\u043e\\u0434\\u0438\\u0442\\u0441\\u044f \\u043d\\u0430 #link.\",Hotkeys:\"\\u0413\\u043e\\u0440\\u044f\\u0447\\u0438\\u0435 \\u043a\\u043b\\u0430\\u0432\\u0438\\u0448\\u0438\",\"save the document\":\"\\u0441\\u043e\\u0445\\u0440\\u0430\\u043d\\u0438\\u0442\\u044c \\u0434\\u043e\\u043a\\u0443\\u043c\\u0435\\u043d\\u0442\",\"go to the previous page\":\"\\u043f\\u0440\\u0435\\u0439\\u0442\\u0438 \\u043a \\u043f\\u0440\\u0435\\u0434\\u044b\\u0434\\u0443\\u0449\\u0435\\u0439 \\u0441\\u0442\\u0440\\u0430\\u043d\\u0438\\u0446\\u0435\",\"go to the next page\":\"\\u043f\\u0435\\u0440\\u0435\\u0439\\u0442\\u0438 \\u043a \\u0441\\u043b\\u0435\\u0434\\u0443\\u044e\\u0449\\u0435\\u0439 \\u0441\\u0442\\u0440\\u0430\\u043d\\u0438\\u0446\\u0435\",Controls:\"\\u041a\\u043d\\u043e\\u043f\\u043a\\u0438\",\"#expandIcon and #collapseIcon are to switch the viewer to the full page mode and back.\":\"#expandIcon \\u0438 #collapseIcon \\u043d\\u0443\\u0436\\u043d\\u044b, \\u0447\\u0442\\u043e\\u0431\\u044b \\u043f\\u0435\\u0440\\u0435\\u043a\\u043b\\u044e\\u0447\\u0430\\u0442\\u044c \\u043f\\u0440\\u043e\\u0433\\u0440\\u0430\\u043c\\u043c\\u0443 \\u0432 \\u043f\\u043e\\u043b\\u043d\\u043e\\u0441\\u0442\\u0440\\u0430\\u043d\\u0438\\u0447\\u043d\\u044b\\u0439 \\u0440\\u0435\\u0436\\u0438\\u043c \\u0438 \\u043e\\u0431\\u0440\\u0430\\u0442\\u043d\\u043e.\",\"If you work with the browser extension, these buttons will cause no effect, since the viewer takes the whole page by default.\":\"\\u0415\\u0441\\u043b\\u0438 \\u0432\\u044b \\u0438\\u0441\\u043f\\u043e\\u043b\\u044c\\u0437\\u0443\\u0435\\u0442\\u0435 \\u0440\\u0430\\u0441\\u0448\\u0438\\u0440\\u0435\\u043d\\u0438\\u0435 \\u0434\\u043b\\u044f \\u0431\\u0440\\u0430\\u0443\\u0437\\u0435\\u0440\\u0430, \\u0442\\u043e \\u044d\\u0442\\u0438 \\u043a\\u043d\\u043e\\u043f\\u043a\\u0438 \\u043d\\u0435 \\u0440\\u0430\\u0431\\u043e\\u0442\\u0430\\u044e\\u0442, \\u0442\\u0430\\u043a \\u043a\\u0430\\u043a \\u043f\\u0440\\u0438\\u043b\\u043e\\u0436\\u0435\\u043d\\u0438\\u0435 \\u043f\\u043e \\u0443\\u043c\\u043e\\u043b\\u0447\\u0430\\u043d\\u0438\\u044e \\u0437\\u0430\\u043d\\u0438\\u043c\\u0430\\u0435\\u0442 \\u0432\\u0441\\u044e \\u0441\\u0442\\u0440\\u0430\\u043d\\u0438\\u0446\\u0443.\",\"Continuous scroll view mode\":\"\\u0420\\u0435\\u0436\\u0438\\u043c \\u043d\\u0435\\u043f\\u0440\\u0435\\u0440\\u044b\\u0432\\u043d\\u043e\\u0439 \\u043f\\u0440\\u043e\\u043a\\u0440\\u0443\\u0442\\u043a\\u0438\",\"Single page view mode\":\"\\u041e\\u0434\\u043d\\u043e\\u0441\\u0442\\u0440\\u0430\\u043d\\u0438\\u0447\\u043d\\u044b\\u0439 \\u0440\\u0435\\u0436\\u0438\\u043c\",\"Text view mode\":\"\\u0422\\u0435\\u043a\\u0441\\u0442\\u043e\\u0432\\u044b\\u0439 \\u0440\\u0435\\u0436\\u0438\\u043c\",\"Click on the number to enter it manually\":\"\\u041a\\u043b\\u0438\\u043a\\u043d\\u0438\\u0442\\u0435 \\u043f\\u043e \\u043d\\u043e\\u043c\\u0435\\u0440\\u0443, \\u0447\\u0442\\u043e\\u0431\\u044b \\u0432\\u0432\\u0435\\u0441\\u0442\\u0438 \\u0435\\u0433\\u043e \\u0432\\u0440\\u0443\\u0447\\u043d\\u0443\\u044e\",\"Rotate the page\":\"\\u041f\\u043e\\u0432\\u0435\\u0440\\u043d\\u0443\\u0442\\u044c \\u0441\\u0442\\u0440\\u0430\\u043d\\u0438\\u0446\\u0443\",\"You also can scale the page via Ctrl+MouseWheel\":\"\\u0412\\u044b \\u0442\\u0430\\u043a\\u0436\\u0435 \\u043c\\u043e\\u0436\\u0435\\u0442\\u0435 \\u043c\\u0430\\u0441\\u0448\\u0442\\u0430\\u0431\\u0438\\u0440\\u043e\\u0432\\u0430\\u0442\\u044c \\u0441\\u0442\\u0440\\u0430\\u043d\\u0438\\u0446\\u0443 \\u0447\\u0435\\u0440\\u0435\\u0437 Ctrl+\\u041a\\u043e\\u043b\\u0435\\u0441\\u043e \\u043c\\u044b\\u0448\\u0438\",\"Text cursor mode\":\"\\u041a\\u0443\\u0440\\u0441\\u043e\\u0440 \\u0434\\u043b\\u044f \\u0432\\u044b\\u0434\\u0435\\u043b\\u0435\\u043d\\u0438\\u044f \\u0442\\u0435\\u043a\\u0441\\u0442\\u0430\",\"Grab cursor mode\":\"\\u0420\\u0435\\u0436\\u0438\\u043c \\u043f\\u0435\\u0440\\u0435\\u0442\\u0430\\u0441\\u043a\\u0438\\u0432\\u0430\\u043d\\u0438\\u044f\",\"Table of contents\":\"\\u041e\\u0433\\u043b\\u0430\\u0432\\u043b\\u0435\\u043d\\u0438\\u0435\",\"Toolbar is always shown\":\"\\u041f\\u0430\\u043d\\u0435\\u043b\\u044c \\u0438\\u043d\\u0441\\u0442\\u0440\\u0443\\u043c\\u0435\\u043d\\u0442\\u043e\\u0432 \\u0432\\u0441\\u0435\\u0433\\u0434\\u0430 \\u043e\\u0442\\u043e\\u0431\\u0440\\u0430\\u0436\\u0430\\u0435\\u0442\\u0441\\u044f\",\"Toolbar automatically hides\":\"\\u041f\\u0430\\u043d\\u0435\\u043b\\u044c \\u0438\\u043d\\u0441\\u0442\\u0440\\u0443\\u043c\\u0435\\u043d\\u0442\\u043e\\u0432 \\u0430\\u0432\\u0442\\u043e\\u043c\\u0430\\u0442\\u0438\\u0447\\u0435\\u0441\\u043a\\u0438 \\u0441\\u043a\\u0440\\u044b\\u0432\\u0430\\u0435\\u0442\\u0441\\u044f\",Contents:\"\\u0421\\u043e\\u0434\\u0435\\u0440\\u0436\\u0430\\u043d\\u0438\\u0435\",\"No contents provided\":\"\\u041d\\u0435\\u0442 \\u0441\\u043e\\u0434\\u0435\\u0440\\u0436\\u0430\\u043d\\u0438\\u044f\",\"The link points to another document. Do you want to proceed?\":\"\\u0421\\u0441\\u044b\\u043b\\u043a\\u0430 \\u0432\\u0435\\u0434\\u0435\\u0442 \\u043d\\u0430 \\u0434\\u0440\\u0443\\u0433\\u043e\\u0439 \\u0434\\u043e\\u043a\\u0443\\u043c\\u0435\\u043d\\u0442. \\u0412\\u044b \\u0445\\u043e\\u0442\\u0438\\u0442\\u0435 \\u043f\\u0440\\u043e\\u0434\\u043e\\u043b\\u0436\\u0438\\u0442\\u044c?\",\"No text on this page\":\"\\u041d\\u0435\\u0442 \\u0442\\u0435\\u043a\\u0441\\u0442\\u0430 \\u043d\\u0430 \\u044d\\u0442\\u043e\\u0439 \\u0441\\u0442\\u0440\\u0430\\u043d\\u0438\\u0446\\u0435\",\"You are trying to save an indirect (multi-file) document.\":\"\\u0412\\u044b \\u043f\\u044b\\u0442\\u0430\\u0435\\u0442\\u0435\\u0441\\u044c \\u0441\\u043e\\u0445\\u0440\\u0430\\u043d\\u0438\\u0442\\u044c \\u043c\\u043d\\u043e\\u0433\\u043e\\u0444\\u0430\\u0439\\u043b\\u043e\\u0432\\u044b\\u0439 \\u0434\\u043e\\u043a\\u0443\\u043c\\u0435\\u043d\\u0442.\",\"What exactly do you want to do?\":\"\\u0427\\u0442\\u043e \\u0438\\u043c\\u0435\\u043d\\u043d\\u043e \\u0432\\u044b \\u0445\\u043e\\u0442\\u0438\\u0442\\u0435 \\u0441\\u0434\\u0435\\u043b\\u0430\\u0442\\u044c?\",\"Save only index file\":\"\\u0421\\u043e\\u0445\\u0440\\u0430\\u043d\\u0438\\u0442\\u044c \\u0442\\u043e\\u043b\\u044c\\u043a\\u043e \\u043a\\u043e\\u0440\\u043d\\u0435\\u0432\\u043e\\u0439 \\u0444\\u0430\\u0439\\u043b\",\"Download, bundle and save the whole document as one file\":\"\\u0421\\u043a\\u0430\\u0447\\u0430\\u0442\\u044c, \\u0441\\u043e\\u0431\\u0440\\u0430\\u0442\\u044c \\u0438 \\u0441\\u043e\\u0445\\u0440\\u0430\\u043d\\u0438\\u0442\\u044c \\u0432\\u0435\\u0441\\u044c \\u0434\\u043e\\u043a\\u0443\\u043c\\u0435\\u043d\\u0442 \\u043e\\u0434\\u043d\\u0438\\u043c \\u0444\\u0430\\u0439\\u043b\\u043e\\u043c\",\"Downloading and bundling the document\":\"\\u0421\\u043a\\u0430\\u0447\\u0438\\u0432\\u0430\\u0435\\u043c \\u0438 \\u0441\\u043e\\u0431\\u0438\\u0440\\u0430\\u0435\\u043c \\u0434\\u043e\\u043a\\u0443\\u043c\\u0435\\u043d\\u0442\",\"The document has been downloaded and bundled into one file successfully\":\"\\u0414\\u043e\\u043a\\u0443\\u043c\\u0435\\u043d\\u0442 \\u0431\\u044b\\u043b \\u0443\\u0441\\u043f\\u0435\\u0448\\u043d\\u043e \\u0441\\u043a\\u0430\\u0447\\u0430\\u043d \\u0438 \\u0441\\u043e\\u0431\\u0440\\u0430\\u043d \\u0432 \\u0435\\u0434\\u0438\\u043d\\u044b\\u0439 \\u0444\\u0430\\u0439\\u043b\",\"Print document\":\"\\u0420\\u0430\\u0441\\u043f\\u0435\\u0447\\u0430\\u0442\\u0430\\u0442\\u044c \\u0434\\u043e\\u043a\\u0443\\u043c\\u0435\\u043d\\u0442\",\"Pages must be rendered before printing.\":\"\\u0421\\u0442\\u0440\\u0430\\u043d\\u0438\\u0446\\u044b \\u0434\\u043e\\u043b\\u0436\\u043d\\u044b \\u0431\\u044b\\u0442\\u044c \\u043e\\u0442\\u0440\\u0438\\u0441\\u043e\\u0432\\u0430\\u043d\\u044b \\u043f\\u0435\\u0440\\u0435\\u0434 \\u043f\\u0435\\u0447\\u0430\\u0442\\u044c\\u044e.\",\"It may take a while.\":\"\\u042d\\u0442\\u043e \\u043c\\u043e\\u0436\\u0435\\u0442 \\u0437\\u0430\\u043d\\u044f\\u0442\\u044c \\u043d\\u0435\\u043a\\u043e\\u0442\\u043e\\u0440\\u043e\\u0435 \\u0432\\u0440\\u0435\\u043c\\u044f.\",\"Select the pages you want to print.\":\"\\u0412\\u044b\\u0431\\u0435\\u0440\\u0438\\u0442\\u0435 \\u0442\\u0435 \\u0441\\u0442\\u0440\\u0430\\u043d\\u0438\\u0446\\u044b, \\u043a\\u043e\\u0442\\u043e\\u0440\\u044b\\u0435 \\u0432\\u044b \\u0445\\u043e\\u0442\\u0438\\u0442\\u0435 \\u0440\\u0430\\u0441\\u043f\\u0435\\u0447\\u0430\\u0442\\u0430\\u0442\\u044c.\",From:\"\\u041d\\u0430\\u0447\\u0438\\u043d\\u0430\\u044f \\u0441\",to:\"\\u043f\\u043e\",\"Prepare pages for printing\":\"\\u041f\\u043e\\u0434\\u0433\\u043e\\u0442\\u043e\\u0432\\u0438\\u0442\\u044c \\u0441\\u0442\\u0440\\u0430\\u043d\\u0438\\u0446\\u044b \\u043a \\u043f\\u0435\\u0447\\u0430\\u0442\\u0438\",\"Preparing pages for printing\":\"\\u041f\\u043e\\u0434\\u0433\\u043e\\u0442\\u0430\\u0432\\u043b\\u0438\\u0432\\u0430\\u0435\\u043c \\u0441\\u0442\\u0440\\u0430\\u043d\\u0438\\u0446\\u044b \\u043a \\u043f\\u0435\\u0447\\u0430\\u0442\\u0438\",Menu:\"\\u041c\\u0435\\u043d\\u044e\",Document:\"\\u0414\\u043e\\u043a\\u0443\\u043c\\u0435\\u043d\\u0442\",About:\"\\u041e \\u043f\\u0440\\u0438\\u043b\\u043e\\u0436\\u0435\\u043d\\u0438\\u0438\",Print:\"\\u041f\\u0435\\u0447\\u0430\\u0442\\u044c\",Close:\"\\u0417\\u0430\\u043a\\u0440\\u044b\\u0442\\u044c\",\"View mode\":\"\\u0420\\u0435\\u0436\\u0438\\u043c \\u043f\\u0440\\u043e\\u0441\\u043c\\u043e\\u0442\\u0440\\u0430\",Scale:\"\\u041c\\u0430\\u0441\\u0448\\u0442\\u0430\\u0431\",Rotation:\"\\u041f\\u043e\\u0432\\u043e\\u0440\\u043e\\u0442\",\"Cursor mode\":\"\\u041a\\u0443\\u0440\\u0441\\u043e\\u0440\",\"Full page mode\":\"\\u041f\\u043e\\u043b\\u043d\\u043e\\u0441\\u0442\\u0440\\u0430\\u043d\\u0438\\u0447\\u043d\\u044b\\u0439 \\u0440\\u0435\\u0436\\u0438\\u043c\",\"Fullscreen mode\":\"\\u041f\\u043e\\u043b\\u043d\\u043e\\u044d\\u043a\\u0440\\u0430\\u043d\\u043d\\u044b\\u0439 \\u0440\\u0435\\u0436\\u0438\\u043c\"},sv:{englishName:\"Swedish\",nativeName:\"Svenska\",Language:\"Spr\\xe5k\",\"Add more\":\"L\\xe4gg till mer\",\"The translation isn't complete.\":\"\\xd6vers\\xe4ttningen \\xe4r inte klar.\",\"The following phrases are not translated:\":\"F\\xf6ljande meningar \\xe4r inte \\xf6versatta:\",\"You can improve the translation here\":\"Du kan f\\xf6rtydliga \\xf6vers\\xe4ttningen h\\xe4r\",\"#helpButton - learn more about the app\":\"#helpButton - l\\xe4r dig mer om applikationen\",\"#optionsButton - see the available options\":\"#optionsButton - Se tillg\\xe4ngliga alternativ\",\"powered with\":\"baserat p\\xe5\",\"Drag & Drop a file here or click to choose manually\":\"Dra och sl\\xe4pp en fil h\\xe4r eller klicka f\\xf6r att v\\xe4lja en manuellt\",\"Paste a URL to a djvu file here\":\"Klistra in en URL till en .djvu-fil h\\xe4r\",\"Open URL\":\"\\xd6ppna URL\",'Enter a valid URL (it should start with \"http(s)://\")':'Ange en giltig URL (den ska b\\xf6rja med \"http (s): //\")',Error:\"Fel\",\"Error on page\":\"Felaktigheter p\\xe5 sidan\",\"Network error\":\"N\\xe4tverksfel\",\"Check your network connection\":\"Kontrollera n\\xe4tverksanslutningen\",\"Web request error\":\"Fel vid webbeg\\xe4rning\",\"404 Document not found\":\"404 Dokument hittas inte\",\"403 Access forbidden\":\"403 \\xc5tkomst f\\xf6rbjuden\",\"500 Internal server error\":\"500 Internt serverfel\",\"The request failed with HTTP status #status\":\"TBeg\\xe4ran misslyckades med http-status #status\",\"DjVu file is corrupted\":\"DjVu-filen \\xe4r korrupt:\",\"The file doesn't comply with the DjVu format specification or it's not a whole DjVu document\":\"Filen \\xf6verensst\\xe4mmer inte med specificerat DjVu-format eller s\\xe5 \\xe4r dokumentet inte komplett\",\"Incorrect file format\":\"Felaktigt filformat\",\"The provided file is not a DjVu document\":\"Den angivna filen \\xe4r inte ett DjVu-dokument\",\"Incorrect page number\":\"Felaktigt sidnummer\",\"There is no page with the number #pageNumber\":\"Felaktigt sidnummer #pageNumber\",\"No base URL for an indirect DjVu document\":\"Ingen bas-URL f\\xf6r ett indirekt DjVu-dokument\",\"You probably opened an indirect (multi-file) DjVu document manually.\":\"Du \\xf6ppnade troligen ett indirekt DjVu-dokument (med flera filer) manuellt.\",\"But such multi-file documents can be only loaded by URL.\":\"Dokument med flera filer kan endast laddas med URL.\",\"Unexpected error\":\"Ett ov\\xe4ntat fel uppstod\",\"Cannot print the error, look in the console\":\"Kunde inte skriva ut felet, titta i konsolen\",Options:\"Alternativ\",\"Show options window\":\"Visa f\\xf6nster med alternativ\",\"Color theme\":\"F\\xe4rgtema\",\"Extension options\":\"F\\xf6rl\\xe4ngningsalternativ\",\"Open all links with .djvu at the end via the viewer\":\"\\xd6ppna alla l\\xe4nkar med .djvu via webbl\\xe4saren\",\"All links to .djvu files will be opened by the viewer via a simple click on a link\":\"Alla l\\xe4nkar till .djvu-filer kommer \\xf6ppnas i l\\xe4saren\",\"Detect .djvu files by means of http headers\":\"Uppt\\xe4ck .djvu-filer med hj\\xe4lp av HTTP-rubriker\",\"Analyze headers of every new tab in order to process even links which do not end with the .djvu extension\":'Analysera rubriker p\\xe5 alla nya flikar f\\xf6r att k\\xe4nna av om l\\xe4nkar \\xe4r av .djvu-format (\\xe4ven l\\xe4nkar som inte slutar med \".djvu\"',Ready:\"Klar\",Loading:\"Laddar\",\"Show help window\":\"Visa hj\\xe4lpsida\",\"Switch full page mode\":\"\\xc4ndra visningsl\\xe4ge till helsida\",\"Choose a file\":\"V\\xe4lj en fil\",\"Close document\":\"St\\xe4ng dokument\",\"Save document\":\"Spara dokument\",Save:\"Spara\",\"Open another .djvu file\":\"\\xd6ppna ytterligare en .djvu-fil\",\"The application for viewing .djvu files in the browser.\":\"Applikation f\\xf6r att se .djvu-filer i browsern.\",\"If something doesn't work properly, feel free to write about the problem at #email.\":\"Om n\\xe5got inte fungerar korrekt, v\\xe4nligen kontakta #email.\",\"The official website is #website.\":\"Den officiella webbsidan \\xe4r #website.\",\"The source code is available on #link.\":\"K\\xe4llkoden \\xe4r tillg\\xe4nglig p\\xe5 #link.\",Hotkeys:\"Tangebords-genv\\xe4gar\",\"save the document\":\"spara dokument\",\"go to the previous page\":\"g\\xe5 till f\\xf6reg\\xe5ende sida\",\"go to the next page\":\"g\\xe5 till n\\xe4sta sida\",Controls:\"Kontroller\",\"#expandIcon and #collapseIcon are to switch the viewer to the full page mode and back.\":\"Knapparna #expandIcon och #collapseIcon anv\\xe4nds f\\xf6r att v\\xe4cla visningsl\\xe4ge till helsida och tillbaka.\",\"If you work with the browser extension, these buttons will cause no effect, since the viewer takes the whole page by default.\":\"Om du anv\\xe4nder till\\xe4gget i browsern kommer dessa knappar inte att fungera d\\xe5 visningsprogrammet hanterar hela sidan som standard.\",\"Continuous scroll view mode\":\"Visningsl\\xe4ge med kontinuerlig scrolling\",\"Single page view mode\":\"Visningsl\\xe4ge med en sida\",\"Text view mode\":\"Visningsl\\xe4ge med text\",\"Click on the number to enter it manually\":\"Du kan klicka p\\xe5 sidnumret f\\xf6r att ange det manuellt\",\"Rotate the page\":\"Rotera sidan\",\"You also can scale the page via Ctrl+MouseWheel\":\"Du kan ocks\\xe5 skala sidan genom att anv\\xe4nda Ctrl + Skrollknappen p\\xe5 musen\",\"Text cursor mode\":\"Visningsl\\xe4ge med textmark\\xf6r\",\"Grab cursor mode\":\"Visningsl\\xe4ge med greppbart mark\\xf6rl\\xe4ge\",\"Table of contents\":null,\"Toolbar is always shown\":null,\"Toolbar automatically hides\":null,Contents:\"Inneh\\xe5ll\",\"No contents provided\":\"Inget inneh\\xe5ll har givits\",\"The link points to another document. Do you want to proceed?\":\"L\\xe4nken vidarebefodrar till ett annat dokument. Vill du forts\\xe4tta?\",\"No text on this page\":\"Ingen text finns p\\xe5 denna sida\",\"You are trying to save an indirect (multi-file) document.\":\"Du f\\xf6rs\\xf6ker spara ett indirekt dokument (flera filer).\",\"What exactly do you want to do?\":\"Vad vill du g\\xf6ra?\",\"Save only index file\":\"Spara endast index-fil\",\"Download, bundle and save the whole document as one file\":\"Ladda ner, packa ihop och spara hela dokumentet som en fil\",\"Downloading and bundling the document\":\"Laddar ner och packer ihop dokumentet\",\"The document has been downloaded and bundled into one file successfully\":\"Dokumentet har laddats ner och packats ihop till en fil\",\"Print document\":\"Skriv ut\",\"Pages must be rendered before printing.\":\"Sidorna m\\xe5ste renderas f\\xf6re utskrift.\",\"It may take a while.\":\"Det kan ta en stund.\",\"Select the pages you want to print.\":\"V\\xe4lj de sidor du vill skriva ut.\",From:\"Fr\\xe5n\",to:\"till\",\"Prepare pages for printing\":\"F\\xf6rbered sidor f\\xf6r utskrift\",\"Preparing pages for printing\":\"F\\xf6rbereder sidor f\\xf6r utskrift\",Menu:null,Document:null,About:null,Print:null,Close:null,\"View mode\":null,Scale:null,Rotation:null,\"Cursor mode\":null,\"Full page mode\":null,\"Fullscreen mode\":null},fr:{englishName:\"French\",nativeName:\"Fran\\xe7ais\",Language:\"Langue\",\"Add more\":\"Ajouter une traduction\",\"The translation isn't complete.\":\"La traduction n'est pas termin\\xe9e.\",\"The following phrases are not translated:\":\"Les assertions suivantes n'ont pas \\xe9t\\xe9 traduites:\",\"You can improve the translation here\":\"Vous pouvez am\\xe9liorer la traduction ici\",\"#helpButton - learn more about the app\":\"#helpButton - \\xe0 propos\",\"#optionsButton - see the available options\":\"#optionsButton - options disponibles\",\"powered with\":\"bas\\xe9 sur\",\"Drag & Drop a file here or click to choose manually\":\"Glisser-D\\xe9poser ici un fichier, ou cliquer pour le slectionner manuellement\",\"Paste a URL to a djvu file here\":\"Copier un lien vers un fichier .djvu\",\"Open URL\":\"Ouvrir le lien\",'Enter a valid URL (it should start with \"http(s)://\")':'Ins\\xe9rer une URL valide (doit commencer par \"http(s)://\")',Error:\"Erreur\",\"Error on page\":\"Erreur dans la page\",\"Network error\":\"Erreur de r\\xe9seau\",\"Check your network connection\":\"V\\xe9rifier votre connexion internet\",\"Web request error\":\"Erreur de requ\\xeate web\",\"404 Document not found\":\"404 Document non trouv\\xe9\",\"403 Access forbidden\":\"403 Acc\\xe8s interdit\",\"500 Internal server error\":\"500 Erreur interne du serveur\",\"The request failed with HTTP status #status\":\"La requ\\xeate a \\xe9chou\\xe9e avec le statut HTTP #status\",\"DjVu file is corrupted\":\"Le fichier DjVu est corrompu\",\"The file doesn't comply with the DjVu format specification or it's not a whole DjVu document\":\"Le fichier ne respecte pas la sp\\xe9cification du format DjVu ou il s'agit d'un document DjVu incomplet\",\"Incorrect file format\":\"Format de fichier incorrect\",\"The provided file is not a DjVu document\":\"Le fichier fourni n'est pas un document DjVu\",\"Incorrect page number\":\"Num\\xe9ro de page incorrect\",\"There is no page with the number #pageNumber\":\"Il n'existe pas de page avec le num\\xe9ro #pageNumber\",\"No base URL for an indirect DjVu document\":\"URL de base manquante du document DjVu indirect (multi-fichier)\",\"You probably opened an indirect (multi-file) DjVu document manually.\":\"Vous avez probablement ouvert manuellement un document DjVu indirect (multi-fichier).\",\"But such multi-file documents can be only loaded by URL.\":\"Mais de tels documents multi-fichier ne peuvent \\xeatre ouvert que par URL\",\"Unexpected error\":\"Erreur inconnue\",\"Cannot print the error, look in the console\":\"Impossible de rapporter l'erreur, regarder dans la console.\",Options:\"Options\",\"Show options window\":\"Afficher la fen\\xeatre d'option\",\"Color theme\":\"Changer de th\\xe8me\",\"Extension options\":\"Options de l'extension\",\"Open all links with .djvu at the end via the viewer\":\"Ouvrir tous les li\\u0435ns .djvu avec l'extension\",\"All links to .djvu files will be opened by the viewer via a simple click on a link\":\"Tous les liens .djvu seront ouverts avec l'extension en cliquant simplement sur le lien\",\"Detect .djvu files by means of http headers\":\"Identifier les fichiers .djvu par leur en-t\\xeate http\",\"Analyze headers of every new tab in order to process even links which do not end with the .djvu extension\":\"Analyser les en-t\\xeates de chaque nouvel onglet pour identifier les fichiers m\\xeame sans l'extension .djvu en fin de lien\",Ready:\"Pr\\xeat\",Loading:\"Chargement\",\"Show help window\":\"Afficher la fen\\xeatre d'aide\",\"Switch full page mode\":\"Passer en mode pleine page\",\"Choose a file\":\"Choisir un fichier\",\"Close document\":\"Fermer le document\",\"Save document\":\"Enregistrer le document\",Save:\"Enregistrer\",\"Open another .djvu file\":\"Ouvrir un autre fichier .djvu\",\"The application for viewing .djvu files in the browser.\":\"Une application pour afficher des fichiers .djvu dans le naviguateur.\",\"If something doesn't work properly, feel free to write about the problem at #email.\":\"Si quelque chose ne fonctionne pas correctement, vous pouvez \\xe9crire \\xe0 #email.\",\"The official website is #website.\":\"Le site officiel est #website.\",\"The source code is available on #link.\":\"Le code source est disponible \\xe0 l'adresse: #link.\",Hotkeys:\"Raccourcis Clavier\",\"save the document\":\"enregistrer le document\",\"go to the previous page\":\"page pr\\xe9c\\xe9dente\",\"go to the next page\":\"page suivante\",Controls:\"Boutons\",\"#expandIcon and #collapseIcon are to switch the viewer to the full page mode and back.\":\"#expandIcon & #collapseIcon permettent de passer en mode pleine page et inversement.\",\"If you work with the browser extension, these buttons will cause no effect, since the viewer takes the whole page by default.\":\"Si vous utilisez l'extension pour navigateur, ces boutons n'auront aucun effet, car l'application occupe d\\xe9j\\xe0 toute la page.\",\"Continuous scroll view mode\":\"Mode d\\xe9filement continu\",\"Single page view mode\":\"Mode page unique\",\"Text view mode\":\"Mode texte\",\"Click on the number to enter it manually\":\"Cliquer sur le nombre pour en saisir un manuellement\",\"Rotate the page\":\"Faire pivoter la page\",\"You also can scale the page via Ctrl+MouseWheel\":\"Vous pouvez \\xe9galement ajuster la page avec Ctrl+Molette\",\"Text cursor mode\":\"Curseur pour mettre le texte en surbrillance\",\"Grab cursor mode\":\"D\\xe9filement glisser-d\\xe9poser\",\"Table of contents\":\"Table des mati\\xe8res\",\"Toolbar is always shown\":\"Les contr\\xf4les sont toujours affich\\xe9s\",\"Toolbar automatically hides\":\"Les contr\\xf4les se masquent automatiquement\",Contents:\"Table des mati\\xe8res\",\"No contents provided\":\"Pas de sommaire\",\"The link points to another document. Do you want to proceed?\":\"Le lien redirige vers un autre document. Voulez-vous continuer ?\",\"No text on this page\":\"Pas de texte dans cette page\",\"You are trying to save an indirect (multi-file) document.\":\"Vous essayez d'enregistrer un document multi-fichier \",\"What exactly do you want to do?\":\"Que voulez-vous faire ?\",\"Save only index file\":\"Enregistrer uniquement le fichier racine\",\"Download, bundle and save the whole document as one file\":\"T\\xe9l\\xe9charger, rassembler & sauveguarder l'ensemble du document dans un seul fichier\",\"Downloading and bundling the document\":\"T\\xe9l\\xe9chargement & assemblage du document\",\"The document has been downloaded and bundled into one file successfully\":\"Le document a \\xe9t\\xe9 t\\xe9l\\xe9charg\\xe9, rassembl\\xe9 & sauveguard\\xe9 dans un seul fichier avec succ\\xe8s\",\"Print document\":\"Imprimer le document\",\"Pages must be rendered before printing.\":\"Les pages doivent \\xeatre rendues avant impression\",\"It may take a while.\":\"Cela peut prendre un moment\",\"Select the pages you want to print.\":\"S\\xe9lectionner la page \\xe0 imprimer\",From:\"De\",to:\"\\xe0\",\"Prepare pages for printing\":\"Pr\\xe9parer les pages pour l'impression\",\"Preparing pages for printing\":\"Pr\\xe9paration des pages pour l'impression\",Menu:\"Menu\",Document:\"Document\",About:\"\\xc0 propos\",Print:\"Imprimer\",Close:\"Fermer\",\"View mode\":\"Mode de vue\",Scale:\"Taille\",Rotation:\"Rotation\",\"Cursor mode\":\"Mode de curseur\",\"Full page mode\":\"Page entier\",\"Fullscreen mode\":\"Plein \\xe9cran\"},it:{englishName:\"Italian\",nativeName:\"Italiano\",Language:\"Lingua\",\"Add more\":\"Aggiungi traduzione\",\"The translation isn't complete.\":\"La traduzione non \\xe8 completa\",\"The following phrases are not translated:\":\"Le seguenti frasi non sono tradotte:\",\"You can improve the translation here\":\"Migliora la traduzione qui\",\"#helpButton - learn more about the app\":\"#helpButton - Istruzioni all'uso dell'app\",\"#optionsButton - see the available options\":\"#optionsButton - Opzioni disponibili\",\"powered with\":\"Powered with\",\"Drag & Drop a file here or click to choose manually\":\"Trascina e rilascia qui il file DjVu o fai clic per selezionarlo manualmente\",\"Paste a URL to a djvu file here\":\"Incolla qui l'URL al file DjVu\",\"Open URL\":\"Apri URL\",'Enter a valid URL (it should start with \"http(s)://\")':'Inserire un URL valido (deve iniziare con \"http(s)://\")',Error:\"Errore\",\"Error on page\":\"Errore nella pagina\",\"Network error\":\"Errore di rete\",\"Check your network connection\":\"Controlla la connessione di rete\",\"Web request error\":\"Errore richiesta web\",\"404 Document not found\":\"404 Documento non trovato\",\"403 Access forbidden\":\"403 Accesso negato\",\"500 Internal server error\":\"500 Errore interno del server\",\"The request failed with HTTP status #status\":\"La richiesta web \\xe8 fallita con stato HTTP #status\",\"DjVu file is corrupted\":\"Il file DjVu \\xe8 corrotto\",\"The file doesn't comply with the DjVu format specification or it's not a whole DjVu document\":\"Il file non \\xe8 conforme alle specifiche del formato DjVu oppure \\xe8 incompleto\",\"Incorrect file format\":\"Formato file non corretto\",\"The provided file is not a DjVu document\":\"Il file non \\xe8 in formato DjVu\",\"Incorrect page number\":\"Numero pagina non corretto\",\"There is no page with the number #pageNumber\":\"Non esiste una pagina con il numero #pageNumber\",\"No base URL for an indirect DjVu document\":\"Manca l'URL di base del documento DjVu multi-file (formato indirect)\",\"You probably opened an indirect (multi-file) DjVu document manually.\":\"Si \\xe8 cercato di aprire manualmente un documento DjVu multi-file (formato indirect).\",\"But such multi-file documents can be only loaded by URL.\":\"Un documento DjVu multi-file (formato indirect) pu\\xf2 essere aperto solo tramite URL.\",\"Unexpected error\":\"Errore sconosciuto\",\"Cannot print the error, look in the console\":\"Non \\xe8 possibile riportare l'errore, cercare nella console\",Options:\"Opzioni\",\"Show options window\":\"Mostra opzioni\",\"Color theme\":\"Colore tema\",\"Extension options\":\"Opzioni estensioni\",\"Open all links with .djvu at the end via the viewer\":\"Aprire tutti i link con estensione .djvu tramite viewer\",\"All links to .djvu files will be opened by the viewer via a simple click on a link\":\"Tutti i link con estensione .djvu saranno aperti nel viewer con un solo clic\",\"Detect .djvu files by means of http headers\":\"Identifica un file .djvu tramite gli header http\",\"Analyze headers of every new tab in order to process even links which do not end with the .djvu extension\":\"\\u0410nalizza gli header http di ogni nuovo tab del browser al fine di processare i link che non terminano con estensione .djvu\",Ready:\"Pronto\",Loading:\"In caricamento\",\"Show help window\":\"Mostra guida\",\"Switch full page mode\":\"Attiva/disattiva modalit\\xe0 a piena pagina\",\"Choose a file\":\"Scegli un file\",\"Close document\":\"Chiudi documento\",\"Save document\":\"Salva documento\",Save:\"Salva\",\"Open another .djvu file\":\"Apri un altro file .djvu\",\"The application for viewing .djvu files in the browser.\":\"Applicazione per visualizzare i file .djvu nel browser.\",\"If something doesn't work properly, feel free to write about the problem at #email.\":\"In caso di malfunzionamento scrivere a #email.\",\"The official website is #website.\":\"Sito web ufficiale #website.\",\"The source code is available on #link.\":\"Il codice sorgente \\xe8 disponibile all'indirizzo #link.\",Hotkeys:\"Scorciatoie da tastiera\",\"save the document\":\"Salva il documento\",\"go to the previous page\":\"Vai alla pagina precedente\",\"go to the next page\":\"Vai alla pagina successiva\",Controls:\"Controlli\",\"#expandIcon and #collapseIcon are to switch the viewer to the full page mode and back.\":\"#expandIcon e #collapseIcon servono per attivare/disattivare la modalit\\xe0 a piena pagina.\",\"If you work with the browser extension, these buttons will cause no effect, since the viewer takes the whole page by default.\":\"Se si usa l'estensione per il browser questi pulsanti non hanno effetto perch\\xe9 la modalit\\xe0 di default \\xe8 a piena pagina.\",\"Continuous scroll view mode\":\"Vista a pagina continua\",\"Single page view mode\":\"Vista a pagina singola\",\"Text view mode\":\"Vista testo\",\"Click on the number to enter it manually\":\"Fai clic sul numero per andare alla pagina\",\"Rotate the page\":\"Ruota pagina\",\"You also can scale the page via Ctrl+MouseWheel\":\"Puoi ingrandire la pagina tramite ctrl + rotella mouse\",\"Text cursor mode\":\"Modalit\\xe0 selezione testo\",\"Grab cursor mode\":\"Modalit\\xe0 trascinamento pagina\",\"Table of contents\":\"Indice dei contenuti\",\"Toolbar is always shown\":\"Toolbar sempre visibile\",\"Toolbar automatically hides\":\"Toolbar nascosta automaticamente\",Contents:\"Contenuti\",\"No contents provided\":\"Nessun contenuto disponibile\",\"The link points to another document. Do you want to proceed?\":\"Il link punta ad un altro documento. Vuoi procedere?\",\"No text on this page\":\"Nessun contenuto testuale nel documento\",\"You are trying to save an indirect (multi-file) document.\":\"Stai per salvare un documento DjVu multi-file (formato indirect).\",\"What exactly do you want to do?\":\"Cosa vuoi fare?\",\"Save only index file\":\"Salva solo indice\",\"Download, bundle and save the whole document as one file\":\"Scarica, impacchetta e salva documento completo in un unico file\",\"Downloading and bundling the document\":\"Scaricamento e impacchettamento in corso\",\"The document has been downloaded and bundled into one file successfully\":\"Il documento \\xe8 stato scaricato e impacchettato correttamente\",\"Print document\":\"Stampa documento\",\"Pages must be rendered before printing.\":\"Le pagine devono essere processate prima della stampa.\",\"It may take a while.\":\"Potrebbe richiedere tempo\",\"Select the pages you want to print.\":\"Seleziona le pagine da stampare\",From:\"Da\",to:\"a\",\"Prepare pages for printing\":\"Avvia processo di stampa\",\"Preparing pages for printing\":\"Sto preparando le pagine per la stampa\",Menu:\"Menu\",Document:\"Documento\",About:\"Info\",Print:\"Stampa\",Close:\"Chiudi\",\"View mode\":\"Modalit\\xe0 vista\",Scale:\"Scala\",Rotation:\"Ruota\",\"Cursor mode\":\"Moldalit\\xe0 cursore\",\"Full page mode\":\"Modalit\\xe0 a piena pagina\",\"Fullscreen mode\":\"Modalit\\xe0 a pieno schermo\"},zh:{englishName:\"Simplified Chinese\",nativeName:\"\\u7b80\\u4f53\\u4e2d\\u6587\",Language:\"\\u8bed\\u8a00\",\"Add more\":\"\\u6dfb\\u52a0\\u66f4\\u591a\",\"The translation isn't complete.\":\"\\u7ffb\\u8bd1\\u5c1a\\u672a\\u5b8c\\u6210\\u3002\",\"The following phrases are not translated:\":\"\\u4ee5\\u4e0b\\u77ed\\u8bed\\u5c1a\\u672a\\u88ab\\u7ffb\\u8bd1\",\"You can improve the translation here\":\"\\u4f60\\u53ef\\u4ee5\\u5728\\u8fd9\\u91cc\\u5b8c\\u5584\\u7ffb\\u8bd1\",\"#helpButton - learn more about the app\":\"#helpButton - \\u4e86\\u89e3\\u66f4\\u591a\",\"#optionsButton - see the available options\":\"#optionsButton - \\u67e5\\u770b\\u6240\\u6709\\u9009\\u9879\",\"powered with\":\"\\u57fa\\u4e8e\",\"Drag & Drop a file here or click to choose manually\":\"\\u5c06\\u6587\\u4ef6\\u62d6\\u62fd\\u81f3\\u6b64\\u5904\\u6216\\u8005\\u5355\\u51fb\\u624b\\u52a8\\u9009\\u62e9\",\"Paste a URL to a djvu file here\":\"\\u5728\\u6b64\\u5904\\u7c98\\u8d34djvu\\u6587\\u4ef6\\u7684\\u5730\\u5740\",\"Open URL\":\"\\u6253\\u5f00\\u5730\\u5740\",'Enter a valid URL (it should start with \"http(s)://\")':'\\u8f93\\u5165\\u4e00\\u4e2a\\u6709\\u6548\\u7684\\u5730\\u5740 (\\u5e94\\u5f53\\u4ee5 \"http(s)://\" \\u5f00\\u5934)',Error:\"\\u9519\\u8bef\",\"Error on page\":\"\\u9875\\u9762\\u9519\\u8bef\",\"Network error\":\"\\u7f51\\u7edc\\u9519\\u8bef\",\"Check your network connection\":\"\\u68c0\\u67e5\\u4f60\\u7684\\u7f51\\u7edc\\u8fde\\u63a5\",\"Web request error\":\"\\u7f51\\u7edc\\u8bf7\\u6c42\\u9519\\u8bef\",\"404 Document not found\":\"404 \\u6587\\u4ef6\\u672a\\u627e\\u5230\",\"403 Access forbidden\":\"403 \\u7981\\u6b62\\u8bbf\\u95ee\",\"500 Internal server error\":\"500 \\u670d\\u52a1\\u5668\\u5185\\u90e8\\u9519\\u8bef\",\"The request failed with HTTP status #status\":\"\\u8bf7\\u6c42\\u5931\\u8d25\\uff0cHTTP\\u72b6\\u6001 #status\",\"DjVu file is corrupted\":\"DjVu\\u6587\\u4ef6\\u635f\\u574f\",\"The file doesn't comply with the DjVu format specification or it's not a whole DjVu document\":\"\\u6587\\u4ef6\\u4e0d\\u6ee1\\u8db3DjVu\\u683c\\u5f0f\\u8981\\u6c42\\u6216\\u4e0d\\u5b8c\\u6574\",\"Incorrect file format\":\"\\u6587\\u4ef6\\u683c\\u5f0f\\u9519\\u8bef\",\"The provided file is not a DjVu document\":\"\\u63d0\\u4f9b\\u7684\\u6587\\u4ef6\\u4e0d\\u662f\\u4e00\\u4e2aDjVu\\u6587\\u4ef6\",\"Incorrect page number\":\"\\u9875\\u7801\\u9519\\u8bef\",\"There is no page with the number #pageNumber\":\"\\u6ca1\\u6709\\u9875\\u9762\\u4e3a#pageNumber\\u7684\\u9875\\u9762\",\"No base URL for an indirect DjVu document\":\"\\u76f8\\u5bf9\\u8def\\u5f84\\u7684DjVu\\u6587\\u6863\\u7f3a\\u5c11\\u6839\\u8def\\u5f84\",\"You probably opened an indirect (multi-file) DjVu document manually.\":\"\\u4f60\\u5f88\\u6709\\u53ef\\u80fd\\u624b\\u52a8\\u6253\\u5f00\\u4e86\\u4e00\\u4e2a\\uff08\\u591a\\u6587\\u4ef6\\uff09\\u76f8\\u5bf9\\u8def\\u5f84DjVu\\u6587\\u6863\\u3002\",\"But such multi-file documents can be only loaded by URL.\":\"\\u4f46\\u662f\\u8fd9\\u79cd\\u591a\\u6587\\u4ef6\\u6587\\u6863\\u53ea\\u80fd\\u901a\\u8fc7\\u5b8c\\u6574\\u8def\\u5f84\\u6253\\u5f00\\u3002\",\"Unexpected error\":\"\\u672a\\u77e5\\u9519\\u8bef\",\"Cannot print the error, look in the console\":\"\\u65e0\\u6cd5\\u6253\\u5370\\u9519\\u8bef\\uff0c\\u8bf7\\u67e5\\u770b\\u63a7\\u5236\\u53f0\",Options:\"\\u9009\\u9879\",\"Show options window\":\"\\u663e\\u793a\\u9009\\u9879\\u7a97\\u53e3\",\"Color theme\":\"\\u989c\\u8272\\u4e3b\\u9898\",\"Extension options\":\"\\u6269\\u5c55\\u9009\\u9879\",\"Open all links with .djvu at the end via the viewer\":\"\\u901a\\u8fc7\\u9605\\u8bfb\\u5668\\u6253\\u5f00\\u6240\\u6709\\u4ee5.djvu\\u7ed3\\u5c3e\\u7684\\u94fe\\u63a5\",\"All links to .djvu files will be opened by the viewer via a simple click on a link\":\"\\u6240\\u6709.djvu\\u6587\\u4ef6\\u94fe\\u63a5\\u5c06\\u4f1a\\u88ab\\u9605\\u8bfb\\u5668\\u6253\\u5f00\",\"Detect .djvu files by means of http headers\":\"\\u901a\\u8fc7http\\u5934\\u4fe1\\u606f\\u68c0\\u6d4b.djvu\\u6587\\u4ef6\",\"Analyze headers of every new tab in order to process even links which do not end with the .djvu extension\":\"\\u5206\\u6790\\u6bcf\\u4e00\\u4e2a\\u65b0\\u9009\\u9879\\u5361\\u4ee5\\u5904\\u7406\\u4e0d\\u662f\\u4ee5.djvu\\u7ed3\\u5c3e\\u7684\\u94fe\\u63a5\",Ready:\"\\u5c31\\u7eea\",Loading:\"\\u52a0\\u8f7d\\u4e2d\",\"Show help window\":\"\\u663e\\u793a\\u5e2e\\u52a9\\u7a97\\u53e3\",\"Switch full page mode\":\"\\u5207\\u6362\\u5168\\u5c4f\\u6a21\\u5f0f\",\"Choose a file\":\"\\u9009\\u62e9\\u6587\\u4ef6\",\"Close document\":\"\\u5173\\u95ed\\u6587\\u6863\",\"Save document\":\"\\u4fdd\\u5b58\\u6587\\u6863\",Save:\"\\u4fdd\\u5b58\",\"Open another .djvu file\":\"\\u6253\\u5f00\\u53e6\\u4e00\\u4e2a.djvu\\u6587\\u4ef6\",\"The application for viewing .djvu files in the browser.\":\"\\u8fd9\\u662f\\u4e00\\u4e2a\\u5728\\u6d4f\\u89c8\\u5668\\u4e2d\\u6d4f\\u89c8.djvu\\u6587\\u4ef6\\u7684\\u5e94\\u7528\\u3002\",\"If something doesn't work properly, feel free to write about the problem at #email.\":\"\\u5982\\u679c\\u8fd0\\u884c\\u6709\\u95ee\\u9898\\uff0c\\u8bf7\\u5411#email\\u53cd\\u9988\\u3002\",\"The official website is #website.\":\"\\u5b98\\u65b9\\u7f51\\u7ad9\\u662f#website\\u3002\",\"The source code is available on #link.\":\"\\u6e90\\u4ee3\\u7801\\u4f4d\\u4e8e#link\\u3002\",Hotkeys:\"\\u70ed\\u952e\",\"save the document\":\"\\u4fdd\\u5b58\\u6587\\u6863\",\"go to the previous page\":\"\\u4e0a\\u4e00\\u9875\",\"go to the next page\":\"\\u4e0b\\u4e00\\u9875\",Controls:\"\\u63a7\\u4ef6\",\"#expandIcon and #collapseIcon are to switch the viewer to the full page mode and back.\":\"#expandIcon \\u548c #collapseIcon \\u7528\\u4e8e\\u5c06\\u9605\\u8bfb\\u5668\\u5728\\u5168\\u5c4f\\u6a21\\u5f0f\\u548c\\u6b63\\u5e38\\u6a21\\u5f0f\\u95f4\\u5207\\u6362\\u3002\",\"If you work with the browser extension, these buttons will cause no effect, since the viewer takes the whole page by default.\":\"\\u5982\\u679c\\u4f60\\u662f\\u5728\\u4f7f\\u7528\\u6d4f\\u89c8\\u5668\\u63d2\\u4ef6\\uff0c\\u5219\\u8fd9\\u4e9b\\u6309\\u94ae\\u5c06\\u4e0d\\u8d77\\u4f5c\\u7528\\uff0c\\u56e0\\u4e3a\\u9605\\u8bfb\\u5668\\u4f1a\\u9ed8\\u8ba4\\u4f7f\\u7528\\u6574\\u4e2a\\u9875\\u9762\\u3002\",\"Continuous scroll view mode\":\"\\u8fde\\u7eed\\u6eda\\u52a8\\u6a21\\u5f0f\",\"Single page view mode\":\"\\u5355\\u9875\\u6a21\\u5f0f\",\"Text view mode\":\"\\u6587\\u672c\\u6a21\\u5f0f\",\"Click on the number to enter it manually\":\"\\u70b9\\u51fb\\u6570\\u5b57\\u4ee5\\u624b\\u52a8\\u8f93\\u5165\",\"Rotate the page\":\"\\u65cb\\u8f6c\\u9875\\u9762\",\"You also can scale the page via Ctrl+MouseWheel\":\"\\u4f60\\u4e5f\\u53ef\\u4ee5\\u901a\\u8fc7Ctrl+\\u9f20\\u6807\\u6eda\\u8f6e\\u6765\\u7f29\\u653e\\u9875\\u9762\",\"Text cursor mode\":\"\\u6587\\u672c\\u9009\\u62e9\\u6a21\\u5f0f\",\"Grab cursor mode\":\"\\u62d6\\u62fd\\u6a21\\u5f0f\",\"Table of contents\":\"\\u76ee\\u5f55\",\"Toolbar is always shown\":\"\\u5de5\\u5177\\u680f\\u5e38\\u663e\\u793a\",\"Toolbar automatically hides\":\"\\u5de5\\u5177\\u680f\\u81ea\\u52a8\\u9690\\u85cf\",Contents:\"\\u76ee\\u5f55\",\"No contents provided\":\"\\u6ca1\\u6709\\u76ee\\u5f55\",\"The link points to another document. Do you want to proceed?\":\"\\u8fd9\\u4e2a\\u94fe\\u63a5\\u6307\\u5411\\u53e6\\u4e00\\u4e2a\\u6587\\u6863\\uff0c\\u4f60\\u786e\\u5b9a\\u8981\\u7ee7\\u7eed\\u5417\\uff1f\",\"No text on this page\":\"\\u8be5\\u9875\\u6ca1\\u6709\\u6587\\u672c\",\"You are trying to save an indirect (multi-file) document.\":\"\\u4f60\\u5728\\u8bd5\\u56fe\\u4fdd\\u5b58\\u76f8\\u5bf9\\u8def\\u5f84\\u7684\\u591a\\u6587\\u4ef6\\u6587\\u6863\\u3002\",\"What exactly do you want to do?\":\"\\u4f60\\u5177\\u4f53\\u662f\\u60f3\\u505a\\u4ec0\\u4e48\\uff1f\",\"Save only index file\":\"\\u53ea\\u4fdd\\u5b58\\u7d22\\u5f15\\u6587\\u4ef6\",\"Download, bundle and save the whole document as one file\":\"\\u4e0b\\u8f7d\\u6253\\u5305\\u5e76\\u4fdd\\u5b58\\u6210\\u4e00\\u4e2a\\u6587\\u4ef6\",\"Downloading and bundling the document\":\"\\u6b63\\u5728\\u4e0b\\u8f7d\\u5e76\\u6253\\u5305\\u6587\\u4ef6\",\"The document has been downloaded and bundled into one file successfully\":\"\\u6587\\u4ef6\\u5df2\\u6210\\u529f\\u4e0b\\u8f7d\\u6253\\u5305\\u5230\\u4e00\\u4e2a\\u6587\\u4ef6\",\"Print document\":\"\\u6253\\u5370\\u6587\\u6863\",\"Pages must be rendered before printing.\":\"\\u6253\\u5370\\u524d\\u9700\\u6e32\\u67d3\\u9875\\u9762\\uff0c\",\"It may take a while.\":\"\\u53ef\\u80fd\\u9700\\u8981\\u4e00\\u4f1a\\u513f\\u3002\",\"Select the pages you want to print.\":\"\\u9009\\u62e9\\u4f60\\u60f3\\u6253\\u5370\\u7684\\u9875\\u9762\\u3002\",From:\"\\u4ece\",to:\"\\u5230\",\"Prepare pages for printing\":\"\\u51c6\\u5907\\u9875\\u9762\\u4ee5\\u6253\\u5370\",\"Preparing pages for printing\":\"\\u51c6\\u5907\\u9875\\u9762\\u4e2d\",Menu:\"\\u83dc\\u5355\",Document:\"\\u6587\\u6863\",About:\"\\u5173\\u4e8e\",Print:\"\\u6253\\u5370\",Close:\"\\u5173\\u95ed\",\"View mode\":\"\\u663e\\u793a\\u6a21\\u5f0f\",Scale:\"\\u7f29\\u653e\",Rotation:\"\\u65cb\\u8f6c\",\"Cursor mode\":\"\\u5149\\u6807\\u6a21\\u5f0f\",\"Full page mode\":\"\\u6574\\u9875\\u6a21\\u5f0f\",\"Fullscreen mode\":\"\\u5168\\u5c4f\\u6a21\\u5f0f\"},pt:{englishName:\"Portuguese\",nativeName:\"Portugu\\xeas\",Language:\"Idioma\",\"Add more\":\"Adicionar mais\",\"The translation isn't complete.\":\"A tradu\\xe7\\xe3o n\\xe3o est\\xe1 completa.\",\"The following phrases are not translated:\":\"As seguintes frases n\\xe3o s\\xe3o traduzidas:\",\"You can improve the translation here\":\"Pode melhorar a tradu\\xe7\\xe3o aqui\",\"#helpButton - learn more about the app\":\"#helpButton - saber mais sobre a aplica\\xe7\\xe3o\",\"#optionsButton - see the available options\":\"#optionsButton - ver as op\\xe7\\xf5es dispon\\xedveis\",\"powered with\":\"powered by\",\"Drag & Drop a file here or click to choose manually\":\"Arrastar e largar um ficheiro aqui ou clicar para escolher manualmente\",\"Paste a URL to a djvu file here\":\"Colar aqui um URL a um ficheiro djvu\",\"Open URL\":\"Abrir URL\",'Enter a valid URL (it should start with \"http(s)://\")':'Introduza um URL v\\xe1lido (deve come\\xe7ar com \"http(s)://\")',Error:\"Erro\",\"Error on page\":\"Erro na p\\xe1gina\",\"Network error\":\"Erro de rede\",\"Check your network connection\":\"Verifique a sua liga\\xe7\\xe3o \\xe0 rede\",\"Web request error\":\"Pedido de erro na Web\",\"404 Document not found\":\"404 Documento n\\xe3o encontrado\",\"403 Access forbidden\":\"403 Acesso proibido\",\"500 Internal server error\":\"500 Erro interno do servidor\",\"The request failed with HTTP status #status\":\"O pedido falhou com o status HTTP #status\",\"DjVu file is corrupted\":\"O ficheiro DjVu est\\xe1 corrompido\",\"The file doesn't comply with the DjVu format specification or it's not a whole DjVu document\":\"O ficheiro n\\xe3o cumpre as especifica\\xe7\\xf5es do formato DjVu ou n\\xe3o \\xe9 um documento DjVu completo\",\"Incorrect file format\":\"Formato de ficheiro incorrecto\",\"The provided file is not a DjVu document\":\"O ficheiro fornecido n\\xe3o \\xe9 um documento DjVu\",\"Incorrect page number\":\"N\\xfamero de p\\xe1gina incorrecto\",\"There is no page with the number #pageNumber\":\"N\\xe3o h\\xe1 p\\xe1gina com o n\\xfamero #pageNumber\",\"No base URL for an indirect DjVu document\":\"Sem URL base para um documento indirecto DjVu\",\"You probably opened an indirect (multi-file) DjVu document manually.\":\"Provavelmente abriu manualmente um documento DjVu indirecto (multi-arquivos).\",\"But such multi-file documents can be only loaded by URL.\":\"Mas tais documentos multi-arquivos s\\xf3 podem ser carregados por URL.\",\"Unexpected error\":\"Erro inesperado\",\"Cannot print the error, look in the console\":\"N\\xe3o \\xe9 poss\\xedvel imprimir o erro, procurar na consola\",Options:\"Op\\xe7\\xf5es\",\"Show options window\":\"Mostrar janela de op\\xe7\\xf5es\",\"Color theme\":\"Tema de cor\",\"Extension options\":\"Op\\xe7\\xf5es de extens\\xe3o\",\"Open all links with .djvu at the end via the viewer\":\"Abrir todas as liga\\xe7\\xf5es com .djvu no final atrav\\xe9s do visualizador\",\"All links to .djvu files will be opened by the viewer via a simple click on a link\":\"Todos os links para ficheiros .djvu ser\\xe3o abertos pelo espectador atrav\\xe9s de um simples clique num link\",\"Detect .djvu files by means of http headers\":\"Detectar ficheiros .djvu por meio de cabe\\xe7alhos http\",\"Analyze headers of every new tab in order to process even links which do not end with the .djvu extension\":\"Analisar os cabe\\xe7alhos de cada novo separador a fim de processar at\\xe9 liga\\xe7\\xf5es que n\\xe3o terminam com a extens\\xe3o .djvu\",Ready:\"Preparado\",Loading:\"Carregando\",\"Show help window\":\"Mostrar janela de ajuda\",\"Switch full page mode\":\"Mudar o modo de p\\xe1gina inteira\",\"Choose a file\":\"Escolha um ficheiro\",\"Close document\":\"Fechar documento\",\"Save document\":\"Guardar documenta\\xe7\\xe3o\",Save:\"Guardar\",\"Open another .djvu file\":\"Abrir outro ficheiro .djvu\",\"The application for viewing .djvu files in the browser.\":\"A aplica\\xe7\\xe3o para visualizar ficheiros .djvu no browser.\",\"If something doesn't work properly, feel free to write about the problem at #email.\":\"Se algo n\\xe3o funcionar correctamente, sinta-se \\xe0 vontade para escrever sobre o problema em #email.\",\"The official website is #website.\":\"O site oficial \\xe9 #website.\",\"The source code is available on #link.\":\"O c\\xf3digo fonte est\\xe1 dispon\\xedvel em #link.\",Hotkeys:\"Teclas de atalho\",\"save the document\":\"guardar o documento\",\"go to the previous page\":\"ir para a p\\xe1gina anterior\",\"go to the next page\":\"ir para a p\\xe1gina seguinte\",Controls:\"Controles\",\"#expandIcon and #collapseIcon are to switch the viewer to the full page mode and back.\":\"#expandIcon e #collapseIcon devem mudar o visualizador para o modo p\\xe1gina inteira e voltar.\",\"If you work with the browser extension, these buttons will cause no effect, since the viewer takes the whole page by default.\":\"Se trabalhar com a extens\\xe3o do navegador, estes bot\\xf5es n\\xe3o causar\\xe3o qualquer efeito, uma vez que o visualizador leva a p\\xe1gina inteira por defeito.\",\"Continuous scroll view mode\":\"Modo de visualiza\\xe7\\xe3o scroll cont\\xednuo\",\"Single page view mode\":\"Modo de visualiza\\xe7\\xe3o de uma p\\xe1gina\",\"Text view mode\":\"Modo de visualiza\\xe7\\xe3o de texto\",\"Click on the number to enter it manually\":\"Clique no n\\xfamero para o introduzir manualmente\",\"Rotate the page\":\"Rodar a p\\xe1gina\",\"You also can scale the page via Ctrl+MouseWheel\":\"Tamb\\xe9m pode escalar a p\\xe1gina atrav\\xe9s de Ctrl+MouseWheel\",\"Text cursor mode\":\"Modo cursor de texto\",\"Grab cursor mode\":\"Modo de agarrar o cursor\",\"Table of contents\":null,\"Toolbar is always shown\":null,\"Toolbar automatically hides\":null,Contents:\"Conte\\xfados\",\"No contents provided\":\"Nenhum conte\\xfado fornecido\",\"The link points to another document. Do you want to proceed?\":\"A liga\\xe7\\xe3o aponta para outro documento. Quer prosseguir?\",\"No text on this page\":\"Nenhum texto nesta p\\xe1gina\",\"You are trying to save an indirect (multi-file) document.\":\"Est\\xe1 a tentar salvar um documento indirecto (multi-arquivo).\",\"What exactly do you want to do?\":\"Que queres fazer exactamente?\",\"Save only index file\":\"Guardar s\\xf3 ficheiro de \\xedndice\",\"Download, bundle and save the whole document as one file\":\"Descarregar, agrupar e guardar o documento inteiro como um s\\xf3 ficheiro\",\"Downloading and bundling the document\":\"Descarregar e empacotar o documento\",\"The document has been downloaded and bundled into one file successfully\":\"O documento foi descarregado e agrupado num \\xfanico ficheiro com sucesso\",\"Print document\":\"Imprimir documento\",\"Pages must be rendered before printing.\":\"As p\\xe1ginas devem ser entregues antes da impress\\xe3o.\",\"It may take a while.\":\"Pode demorar algum tempo.\",\"Select the pages you want to print.\":\"Seleccione as p\\xe1ginas que pretende imprimir.\",From:\"De\",to:\"a\",\"Prepare pages for printing\":\"Preparar p\\xe1ginas para impress\\xe3o\",\"Preparing pages for printing\":\"Preparar p\\xe1ginas para impress\\xe3o\",Menu:null,Document:null,About:null,Print:null,Close:null,\"View mode\":null,Scale:null,Rotation:null,\"Cursor mode\":null,\"Full page mode\":null,\"Fullscreen mode\":null},es:{englishName:\"Spanish\",nativeName:\"Castellano\",Language:\"Idioma\",\"Add more\":\"A\\xf1adir mas\",\"The translation isn't complete.\":\"La traducci\\xf3n est\\xe1 incompleta.\",\"The following phrases are not translated:\":\"Las siguientes frases no estan traduccidas:\",\"You can improve the translation here\":\"Puedes mejorar la traducci\\xf3n aqu\\xed\",\"#helpButton - learn more about the app\":\"#helpButton - saber m\\xe1s sobre la aplicaci\\xf3n\",\"#optionsButton - see the available options\":\"#optionsButton - ver las opciones disponibles\",\"powered with\":\"Powered  with\",\"Drag & Drop a file here or click to choose manually\":\"Arrastrar y soltar un archivo o click para elegirlo manualmente\",\"Paste a URL to a djvu file here\":\"Pegar una URL al archivo djvu aqu\\xed\",\"Open URL\":\"Abrir URL\",'Enter a valid URL (it should start with \"http(s)://\")':'Introducir una URL v\\xe1lida (debe comenzar con \"http(s)://\")',Error:\"Error\",\"Error on page\":\"Error en la p\\xe1gina\",\"Network error\":\"Error de red\",\"Check your network connection\":\"Compruebe su conexi\\xf3n a la red\",\"Web request error\":\"Error en la solicitud de la web\",\"404 Document not found\":\"404 Documento no encontrado\",\"403 Access forbidden\":\"403 Acceso prohibido\",\"500 Internal server error\":\"500 Error interno del servidor\",\"The request failed with HTTP status #status\":\"La solicitud ha fallado con el estado HTTP #status\",\"DjVu file is corrupted\":\"El archivo DjVu esta corrupto\",\"The file doesn't comply with the DjVu format specification or it's not a whole DjVu document\":\"El archivo no cumple con la especificaci\\xf3n del formato DjVu o no es un documento DjVu completo\",\"Incorrect file format\":\"Formato de archivo incorrecto\",\"The provided file is not a DjVu document\":\"El archivo proporcionado no es un documento DjVu\",\"Incorrect page number\":\"N\\xfamero de p\\xe1gina incorrecto\",\"There is no page with the number #pageNumber\":\"No hay ninguna p\\xe1gina con el n\\xfamero #pageNumber\",\"No base URL for an indirect DjVu document\":\"No hay URL base para un documento DjVu indirecto\",\"You probably opened an indirect (multi-file) DjVu document manually.\":\"Probablemente haya abierto manualmente un documento DjVu indirecto (de varios archivos).\",\"But such multi-file documents can be only loaded by URL.\":\"Pero estos documentos de varios archivos s\\xf3lo pueden cargarse por URL.\",\"Unexpected error\":\"Error inesperado\",\"Cannot print the error, look in the console\":\"No se puede imprimir el error, mira en la consola\",Options:\"Opciones\",\"Show options window\":\"Mostrar ventana de opciones\",\"Color theme\":\"Tema de color\",\"Extension options\":\"Opciones de extensi\\xf3n\",\"Open all links with .djvu at the end via the viewer\":\"Abrir todos los enlaces con .djvu al final a trav\\xe9s del visor\",\"All links to .djvu files will be opened by the viewer via a simple click on a link\":\"Todos los enlaces a archivos .djvu ser\\xe1n abiertos por el visor mediante un clic simple en un enlace\",\"Detect .djvu files by means of http headers\":\"Detectar archivos .djvu mediante cabeceras http\",\"Analyze headers of every new tab in order to process even links which do not end with the .djvu extension\":\"Analizar las cabeceras de cada nueva pesta\\xf1a para procesar incluso los enlaces que no terminan con la extensi\\xf3n .djvu\",Ready:\"Listo\",Loading:\"Cargando\",\"Show help window\":\"Mostrar ventana de ayuda\",\"Switch full page mode\":\"Cambiar el modo de p\\xe1gina completa\",\"Choose a file\":\"Seleccionar archivo\",\"Close document\":\"Cerrar documento\",\"Save document\":\"Guardar documento\",Save:\"Guardar\",\"Open another .djvu file\":\"Abrir otro archivo .djvu\",\"The application for viewing .djvu files in the browser.\":\"La aplicaci\\xf3n para ver archivos .djvu en el navegador.\",\"If something doesn't work properly, feel free to write about the problem at #email.\":\"Si algo no funciona correctamente, no dudes en escribir sobre el problema en #email.\",\"The official website is #website.\":\"El sitio web oficial es #website.\",\"The source code is available on #link.\":\"El c\\xf3digo fuente est\\xe1 disponible en #link.\",Hotkeys:\"Atajos de teclado\",\"save the document\":\"Guardar el documento\",\"go to the previous page\":\"ir a la p\\xe1gina anterior\",\"go to the next page\":\"ir a la p\\xe1gina siguiente\",Controls:\"Controles\",\"#expandIcon and #collapseIcon are to switch the viewer to the full page mode and back.\":\"#expandIcon y #collapseIcon son para cambiar el visor al modo de p\\xe1gina completa y viceversa.\",\"If you work with the browser extension, these buttons will cause no effect, since the viewer takes the whole page by default.\":\"Si trabaja con la extensi\\xf3n del navegador, estos botones no causar\\xe1n ning\\xfan efecto, ya que el visor toma toda la p\\xe1gina por defecto.\",\"Continuous scroll view mode\":\"Modo de scroll continuo\",\"Single page view mode\":\"Modo de vista de una sola p\\xe1gina\",\"Text view mode\":\"Modo de vista de texto\",\"Click on the number to enter it manually\":\"Haga clic en el n\\xfamero para introducirlo manualmente\",\"Rotate the page\":\"Rotar p\\xe1gina\",\"You also can scale the page via Ctrl+MouseWheel\":\"Tambi\\xe9n puede escalar la p\\xe1gina mediante Ctrl+Rueda del rat\\xf3n\",\"Text cursor mode\":\"Modo cursor de texto\",\"Grab cursor mode\":\"Modo cursor de agarre\",\"Table of contents\":null,\"Toolbar is always shown\":null,\"Toolbar automatically hides\":null,Contents:\"Contenido\",\"No contents provided\":\"No se proporciona ning\\xfan contenido\",\"The link points to another document. Do you want to proceed?\":\"El enlace apunta a otro documento. \\xbfDesea continuar?\",\"No text on this page\":\"No hay texto en esta p\\xe1gina\",\"You are trying to save an indirect (multi-file) document.\":\"Est\\xe1 intentando guardar un documento indirecto (de varios archivos)\",\"What exactly do you want to do?\":\"\\xbfQu\\xe9 quiere hacer exactamente?\",\"Save only index file\":\"Guardar s\\xf3lo el archivo de \\xedndice\",\"Download, bundle and save the whole document as one file\":\"Descargue, agrupe y guarde todo el documento como un solo archivo\",\"Downloading and bundling the document\":\"Descargando y agrupando el documento\",\"The document has been downloaded and bundled into one file successfully\":\"El documento ha sido descargado y agrupado en un archivo con \\xe9xito\",\"Print document\":\"Imprimir documento\",\"Pages must be rendered before printing.\":\"Las p\\xe1ginas deben ser renderizadas antes de la impresi\\xf3n.\",\"It may take a while.\":\"Puede llevar un tiempo.\",\"Select the pages you want to print.\":\"Seleccione las p\\xe1ginas que desea imprimir.\",From:\"Desde\",to:\"hasta\",\"Prepare pages for printing\":\"Preparar las p\\xe1ginas para la impresi\\xf3n\",\"Preparing pages for printing\":\"Preparando p\\xe1ginas para imprimir\",Menu:null,Document:null,About:null,Print:null,Close:null,\"View mode\":null,Scale:null,Rotation:null,\"Cursor mode\":null,\"Full page mode\":null,\"Fullscreen mode\":null}};const Se=Object.freeze({documentId:0,fileName:null,userScale:1,pageRotation:0,isLoading:!1,viewMode:ue.SINGLE_PAGE_MODE,pagesQuantity:null,isFullPageView:!1,error:null,contents:null,isHelpWindowShown:!1,isOptionsWindowOpened:!1,isIndirect:!1,isContentsOpened:!1,options:{interceptHttpRequests:!0,analyzeHeaders:!1,locale:\"en\",theme:window.matchMedia(\"(prefers-color-scheme: dark)\").matches?\"dark\":\"light\",preferContinuousScroll:!1},uiOptions:{hideFullPageSwitch:!1,changePageOnScroll:!0,showContentsAutomatically:!0,hideOpenAndCloseButtons:!1,hidePrintButton:!1,hideSaveButton:!1},appContext:{}});function Oe(e){return{...Se,appContext:e.appContext,isFullPageView:e.isFullPageView,options:e.options,uiOptions:e.uiOptions}}const xe={isContentsOpened:e=>e.isContentsOpened,dictionary:e=>we[xe.options(e).locale]||we.en,isOptionsWindowOpened:e=>e.isOptionsWindowOpened,uiOptions:e=>e.uiOptions,documentId:e=>e.documentId,userScale:e=>e.userScale,pageRotation:e=>e.pageRotation,pagesQuantity:e=>e.pagesQuantity,contents:e=>e.contents,isIndirect:e=>e.isIndirect,isHelpWindowShown:e=>e.isHelpWindowShown,fileName:e=>e.fileName,error:e=>e.error,options:e=>e.options,isFullPageView:e=>e.isFullPageView,isLoading:e=>e.isLoading,isDocumentLoaded:e=>!!e.pagesQuantity,viewMode:e=>e.isIndirect&&e.viewMode===ue.CONTINUOUS_SCROLL_MODE?ue.SINGLE_PAGE_MODE:e.viewMode},_e=Object.freeze({progress:0,buffer:null,isBundling:!1,isSaveDialogShown:!1});function je(e=_e,t){const{type:n,payload:r}=t;switch(n){case ce.OPEN_SAVE_DIALOG:return{...e,isSaveDialogShown:!0};case ce.START_TO_BUNDLE:return{...e,isBundling:!0};case ce.UPDATE_FILE_PROCESSING_PROGRESS:return{...e,progress:r};case ce.FINISH_TO_BUNDLE:return{...e,buffer:r};case ce.ERROR:case ce.CLOSE_SAVE_DIALOG:return _e;default:return e}}const Ee=e=>le((e=>e.fileProcessingState),e),Ce={isSaveDialogShown:Ee((e=>e.isSaveDialogShown)),isBundling:Ee((e=>e.isBundling)),resultBuffer:Ee((e=>e.buffer)),fileProcessingProgress:Ee((e=>e.progress))},ke=Object.freeze({isPrintDialogOpened:!1,isPreparingForPrinting:!1,printProgress:0,pagesForPrinting:null});function Te(e=ke,t){const{type:n,payload:r}=t;switch(n){case ce.OPEN_PRINT_DIALOG:return{...ke,isPrintDialogOpened:!0};case ce.PREPARE_PAGES_FOR_PRINTING:return{...e,isPreparingForPrinting:!0};case ce.UPDATE_PRINT_PROGRESS:return{...e,printProgress:r};case ce.START_PRINTING:return{...e,pagesForPrinting:r};case ce.ERROR:case ce.CLOSE_PRINT_DIALOG:return ke;default:return e}}const Pe=e=>le((e=>e.printState),e),Ne={isPrintDialogOpened:Pe((e=>e.isPrintDialogOpened)),isPreparingForPrinting:Pe((e=>e.isPreparingForPrinting)),printProgress:Pe((e=>e.printProgress)),pagesForPrinting:Pe((e=>e.pagesForPrinting))},Ie={...xe,...ye,...he,...Ce,...Ne};var Re=(e,t)=>(e=((e=Se,t)=>{const n=t.payload;switch(t.type){case ce.SET_UI_OPTIONS:return{...e,uiOptions:{...e.uiOptions,...n}};case ce.UPDATE_OPTIONS:return{...e,options:{...e.options,...n}};case ce.SET_VIEW_MODE:return{...e,viewMode:n,isLoading:n!==ue.TEXT_MODE&&e.isLoading};case ue.SET_PAGE_ROTATION_ACTION:return{...e,pageRotation:t.pageRotation};case ce.TOGGLE_OPTIONS_WINDOW:return{...e,isOptionsWindowOpened:n};case ue.SHOW_HELP_WINDOW_ACTION:return{...e,isHelpWindowShown:!0};case ue.CLOSE_HELP_WINDOW_ACTION:return{...e,isHelpWindowShown:!1};case ue.SET_NEW_PAGE_NUMBER_ACTION:case ue.CREATE_DOCUMENT_FROM_ARRAY_BUFFER_ACTION:return{...e,isLoading:!0};case ue.IMAGE_DATA_RECEIVED_ACTION:case ue.PAGE_TEXT_FETCHED_ACTION:case ue.PAGE_ERROR_ACTION:case ue.PAGES_SIZES_ARE_GOTTEN:case ce.SET_IMAGE_PAGE_ERROR:return{...e,isLoading:!1};case ue.DOCUMENT_CREATED_ACTION:return{...Oe(e),documentId:e.documentId+1,isLoading:!0,viewMode:e.options.preferContinuousScroll?ue.CONTINUOUS_SCROLL_MODE:Se.viewMode,pagesQuantity:t.pagesQuantity,fileName:t.fileName,isIndirect:t.isIndirect};case ue.CLOSE_DOCUMENT_ACTION:return Oe(e);case ue.CONTENTS_IS_GOTTEN_ACTION:return{...e,contents:t.contents,isContentsOpened:e.uiOptions.showContentsAutomatically&&!e.appContext.isMobile&&!!t.contents};case ue.SET_USER_SCALE_ACTION:return{...e,userScale:t.scale};case ue.TOGGLE_FULL_PAGE_VIEW_ACTION:return{...e,isFullPageView:t.isFullPageView};case ce.CLOSE_CONTENTS:return{...e,isContentsOpened:!1};case ce.TOGGLE_CONTENTS:return{...e,isContentsOpened:!e.isContentsOpened};case ce.ERROR:return{...e,isLoading:!1,error:n};case ce.CLOSE_ERROR_WINDOW:return{...e,error:null};case ce.UPDATE_APP_CONTEXT:return{...e,appContext:n};default:return e}})(e,t),{...e,fileLoadingState:fe(e.fileLoadingState,t),pageState:ve(e.pageState,t),fileProcessingState:je(e.fileProcessingState,t),printState:Te(e.printState,t)}),Ae={color:void 0,size:void 0,className:void 0,style:void 0,attr:void 0},De=i.a.createContext&&i.a.createContext(Ae),Le=function(){return(Le=Object.assign||function(e){for(var t,n=1,r=arguments.length;n<r;n++)for(var o in t=arguments[n])Object.prototype.hasOwnProperty.call(t,o)&&(e[o]=t[o]);return e}).apply(this,arguments)},Me=function(e,t){var n={};for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(null!=e&&\"function\"===typeof Object.getOwnPropertySymbols){var o=0;for(r=Object.getOwnPropertySymbols(e);o<r.length;o++)t.indexOf(r[o])<0&&Object.prototype.propertyIsEnumerable.call(e,r[o])&&(n[r[o]]=e[r[o]])}return n};function ze(e){return e&&e.map((function(e,t){return i.a.createElement(e.tag,Le({key:t},e.attr),ze(e.child))}))}function Ue(e){return function(t){return i.a.createElement(Fe,Le({attr:Le({},e.attr)},t),ze(e.child))}}function Fe(e){var t=function(t){var n,r=e.attr,o=e.size,a=e.title,l=Me(e,[\"attr\",\"size\",\"title\"]),s=o||t.size||\"1em\";return t.className&&(n=t.className),e.className&&(n=(n?n+\" \":\"\")+e.className),i.a.createElement(\"svg\",Le({stroke:\"currentColor\",fill:\"currentColor\",strokeWidth:\"0\"},t.attr,r,l,{className:n,style:Le(Le({color:e.color||t.color},t.style),e.style),height:s,width:s,xmlns:\"http://www.w3.org/2000/svg\"}),a&&i.a.createElement(\"title\",null,a),e.children)};return void 0!==De?i.a.createElement(De.Consumer,null,(function(e){return t(e)})):t(Ae)}function Be(e){return Ue({tag:\"svg\",attr:{viewBox:\"0 0 512 512\"},child:[{tag:\"path\",attr:{d:\"M487.4 315.7l-42.6-24.6c4.3-23.2 4.3-47 0-70.2l42.6-24.6c4.9-2.8 7.1-8.6 5.5-14-11.1-35.6-30-67.8-54.7-94.6-3.8-4.1-10-5.1-14.8-2.3L380.8 110c-17.9-15.4-38.5-27.3-60.8-35.1V25.8c0-5.6-3.9-10.5-9.4-11.7-36.7-8.2-74.3-7.8-109.2 0-5.5 1.2-9.4 6.1-9.4 11.7V75c-22.2 7.9-42.8 19.8-60.8 35.1L88.7 85.5c-4.9-2.8-11-1.9-14.8 2.3-24.7 26.7-43.6 58.9-54.7 94.6-1.7 5.4.6 11.2 5.5 14L67.3 221c-4.3 23.2-4.3 47 0 70.2l-42.6 24.6c-4.9 2.8-7.1 8.6-5.5 14 11.1 35.6 30 67.8 54.7 94.6 3.8 4.1 10 5.1 14.8 2.3l42.6-24.6c17.9 15.4 38.5 27.3 60.8 35.1v49.2c0 5.6 3.9 10.5 9.4 11.7 36.7 8.2 74.3 7.8 109.2 0 5.5-1.2 9.4-6.1 9.4-11.7v-49.2c22.2-7.9 42.8-19.8 60.8-35.1l42.6 24.6c4.9 2.8 11 1.9 14.8-2.3 24.7-26.7 43.6-58.9 54.7-94.6 1.5-5.5-.7-11.3-5.6-14.1zM256 336c-44.1 0-80-35.9-80-80s35.9-80 80-80 80 35.9 80 80-35.9 80-80 80z\"}}]})(e)}function Ve(e){return Ue({tag:\"svg\",attr:{viewBox:\"0 0 448 512\"},child:[{tag:\"path\",attr:{d:\"M436 192H312c-13.3 0-24-10.7-24-24V44c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v84h84c6.6 0 12 5.4 12 12v40c0 6.6-5.4 12-12 12zm-276-24V44c0-6.6-5.4-12-12-12h-40c-6.6 0-12 5.4-12 12v84H12c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12h124c13.3 0 24-10.7 24-24zm0 300V344c0-13.3-10.7-24-24-24H12c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12h84v84c0 6.6 5.4 12 12 12h40c6.6 0 12-5.4 12-12zm192 0v-84h84c6.6 0 12-5.4 12-12v-40c0-6.6-5.4-12-12-12H312c-13.3 0-24 10.7-24 24v124c0 6.6 5.4 12 12 12h40c6.6 0 12-5.4 12-12z\"}}]})(e)}function We(e){return Ue({tag:\"svg\",attr:{viewBox:\"0 0 512 512\"},child:[{tag:\"path\",attr:{d:\"M216 0h80c13.3 0 24 10.7 24 24v168h87.7c17.8 0 26.7 21.5 14.1 34.1L269.7 378.3c-7.5 7.5-19.8 7.5-27.3 0L90.1 226.1c-12.6-12.6-3.7-34.1 14.1-34.1H192V24c0-13.3 10.7-24 24-24zm296 376v112c0 13.3-10.7 24-24 24H24c-13.3 0-24-10.7-24-24V376c0-13.3 10.7-24 24-24h146.7l49 49c20.1 20.1 52.5 20.1 72.6 0l49-49H488c13.3 0 24 10.7 24 24zm-124 88c0-11-9-20-20-20s-20 9-20 20 9 20 20 20 20-9 20-20zm64 0c0-11-9-20-20-20s-20 9-20 20 9 20 20 20 20-9 20-20z\"}}]})(e)}function He(e){return Ue({tag:\"svg\",attr:{viewBox:\"0 0 576 512\"},child:[{tag:\"path\",attr:{d:\"M569.517 440.013C587.975 472.007 564.806 512 527.94 512H48.054c-36.937 0-59.999-40.055-41.577-71.987L246.423 23.985c18.467-32.009 64.72-31.951 83.154 0l239.94 416.028zM288 354c-25.405 0-46 20.595-46 46s20.595 46 46 46 46-20.595 46-46-20.595-46-46-46zm-43.673-165.346l7.418 136c.347 6.364 5.609 11.346 11.982 11.346h48.546c6.373 0 11.635-4.982 11.982-11.346l7.418-136c.375-6.874-5.098-12.654-11.982-12.654h-63.383c-6.884 0-12.356 5.78-11.981 12.654z\"}}]})(e)}function $e(e){return Ue({tag:\"svg\",attr:{viewBox:\"0 0 448 512\"},child:[{tag:\"path\",attr:{d:\"M0 180V56c0-13.3 10.7-24 24-24h124c6.6 0 12 5.4 12 12v40c0 6.6-5.4 12-12 12H64v84c0 6.6-5.4 12-12 12H12c-6.6 0-12-5.4-12-12zM288 44v40c0 6.6 5.4 12 12 12h84v84c0 6.6 5.4 12 12 12h40c6.6 0 12-5.4 12-12V56c0-13.3-10.7-24-24-24H300c-6.6 0-12 5.4-12 12zm148 276h-40c-6.6 0-12 5.4-12 12v84h-84c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12h124c13.3 0 24-10.7 24-24V332c0-6.6-5.4-12-12-12zM160 468v-40c0-6.6-5.4-12-12-12H64v-84c0-6.6-5.4-12-12-12H12c-6.6 0-12 5.4-12 12v124c0 13.3 10.7 24 24 24h124c6.6 0 12-5.4 12-12z\"}}]})(e)}function Ge(e){return Ue({tag:\"svg\",attr:{viewBox:\"0 0 448 512\"},child:[{tag:\"path\",attr:{d:\"M416 208H32c-17.67 0-32 14.33-32 32v32c0 17.67 14.33 32 32 32h384c17.67 0 32-14.33 32-32v-32c0-17.67-14.33-32-32-32z\"}}]})(e)}function qe(e){return Ue({tag:\"svg\",attr:{viewBox:\"0 0 448 512\"},child:[{tag:\"path\",attr:{d:\"M416 208H272V64c0-17.67-14.33-32-32-32h-32c-17.67 0-32 14.33-32 32v144H32c-17.67 0-32 14.33-32 32v32c0 17.67 14.33 32 32 32h144v144c0 17.67 14.33 32 32 32h32c17.67 0 32-14.33 32-32V304h144c17.67 0 32-14.33 32-32v-32c0-17.67-14.33-32-32-32z\"}}]})(e)}function Ye(e){return Ue({tag:\"svg\",attr:{viewBox:\"0 0 512 512\"},child:[{tag:\"path\",attr:{d:\"M212.333 224.333H12c-6.627 0-12-5.373-12-12V12C0 5.373 5.373 0 12 0h48c6.627 0 12 5.373 12 12v78.112C117.773 39.279 184.26 7.47 258.175 8.007c136.906.994 246.448 111.623 246.157 248.532C504.041 393.258 393.12 504 256.333 504c-64.089 0-122.496-24.313-166.51-64.215-5.099-4.622-5.334-12.554-.467-17.42l33.967-33.967c4.474-4.474 11.662-4.717 16.401-.525C170.76 415.336 211.58 432 256.333 432c97.268 0 176-78.716 176-176 0-97.267-78.716-176-176-176-58.496 0-110.28 28.476-142.274 72.333h98.274c6.627 0 12 5.373 12 12v48c0 6.627-5.373 12-12 12z\"}}]})(e)}function Ke(e){return Ue({tag:\"svg\",attr:{viewBox:\"0 0 512 512\"},child:[{tag:\"path\",attr:{d:\"M296 384h-80c-13.3 0-24-10.7-24-24V192h-87.7c-17.8 0-26.7-21.5-14.1-34.1L242.3 5.7c7.5-7.5 19.8-7.5 27.3 0l152.2 152.2c12.6 12.6 3.7 34.1-14.1 34.1H320v168c0 13.3-10.7 24-24 24zm216-8v112c0 13.3-10.7 24-24 24H24c-13.3 0-24-10.7-24-24V376c0-13.3 10.7-24 24-24h136v8c0 30.9 25.1 56 56 56h80c30.9 0 56-25.1 56-56v-8h136c13.3 0 24 10.7 24 24zm-124 88c0-11-9-20-20-20s-20 9-20 20 9 20 20 20 20-9 20-20zm64 0c0-11-9-20-20-20s-20 9-20 20 9 20 20 20 20-9 20-20z\"}}]})(e)}function Qe(e){return Ue({tag:\"svg\",attr:{viewBox:\"0 0 384 512\"},child:[{tag:\"path\",attr:{d:\"M288 248v28c0 6.6-5.4 12-12 12H108c-6.6 0-12-5.4-12-12v-28c0-6.6 5.4-12 12-12h168c6.6 0 12 5.4 12 12zm-12 72H108c-6.6 0-12 5.4-12 12v28c0 6.6 5.4 12 12 12h168c6.6 0 12-5.4 12-12v-28c0-6.6-5.4-12-12-12zm108-188.1V464c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V48C0 21.5 21.5 0 48 0h204.1C264.8 0 277 5.1 286 14.1L369.9 98c9 8.9 14.1 21.2 14.1 33.9zm-128-80V128h76.1L256 51.9zM336 464V176H232c-13.3 0-24-10.7-24-24V48H48v416h288z\"}}]})(e)}function Xe(e){return Ue({tag:\"svg\",attr:{viewBox:\"0 0 384 512\"},child:[{tag:\"path\",attr:{d:\"M369.9 97.9L286 14C277 5 264.8-.1 252.1-.1H48C21.5 0 0 21.5 0 48v416c0 26.5 21.5 48 48 48h288c26.5 0 48-21.5 48-48V131.9c0-12.7-5.1-25-14.1-34zM332.1 128H256V51.9l76.1 76.1zM48 464V48h160v104c0 13.3 10.7 24 24 24h104v288H48zm32-48h224V288l-23.5-23.5c-4.7-4.7-12.3-4.7-17 0L176 352l-39.5-39.5c-4.7-4.7-12.3-4.7-17 0L80 352v64zm48-240c-26.5 0-48 21.5-48 48s21.5 48 48 48 48-21.5 48-48-21.5-48-48-48z\"}}]})(e)}function Ze(e){return Ue({tag:\"svg\",attr:{viewBox:\"0 0 448 512\"},child:[{tag:\"path\",attr:{d:\"M108 284c-6.6 0-12-5.4-12-12v-32c0-6.6 5.4-12 12-12h232c6.6 0 12 5.4 12 12v32c0 6.6-5.4 12-12 12H108zM448 80v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V80c0-26.5 21.5-48 48-48h352c26.5 0 48 21.5 48 48zm-48 346V86c0-3.3-2.7-6-6-6H54c-3.3 0-6 2.7-6 6v340c0 3.3 2.7 6 6 6h340c3.3 0 6-2.7 6-6z\"}}]})(e)}function Je(e){return Ue({tag:\"svg\",attr:{viewBox:\"0 0 448 512\"},child:[{tag:\"path\",attr:{d:\"M352 240v32c0 6.6-5.4 12-12 12h-88v88c0 6.6-5.4 12-12 12h-32c-6.6 0-12-5.4-12-12v-88h-88c-6.6 0-12-5.4-12-12v-32c0-6.6 5.4-12 12-12h88v-88c0-6.6 5.4-12 12-12h32c6.6 0 12 5.4 12 12v88h88c6.6 0 12 5.4 12 12zm96-160v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V80c0-26.5 21.5-48 48-48h352c26.5 0 48 21.5 48 48zm-48 346V86c0-3.3-2.7-6-6-6H54c-3.3 0-6 2.7-6 6v340c0 3.3 2.7 6 6 6h340c3.3 0 6-2.7 6-6z\"}}]})(e)}const et={dropPageAction:e=>({type:ue.DROP_PAGE_ACTION,pageNumber:e}),pagesSizesAreGottenAction:e=>({type:ue.PAGES_SIZES_ARE_GOTTEN,sizes:e}),pageIsLoadedAction:(e,t)=>({type:ue.PAGE_IS_LOADED_ACTION,pageNumber:t,pageData:e}),setPageRotationAction:e=>t=>{0!==e&&90!==e&&180!==e&&270!==e||t({type:ue.SET_PAGE_ROTATION_ACTION,pageRotation:e})},closeDocumentAction:()=>({type:ue.CLOSE_DOCUMENT_ACTION}),setCursorModeAction:e=>({type:ue.SET_CURSOR_MODE_ACTION,cursorMode:e}),closeHelpWindowAction:()=>({type:ue.CLOSE_HELP_WINDOW_ACTION}),showHelpWindowAction:()=>({type:ue.SHOW_HELP_WINDOW_ACTION}),tryToSaveDocument:()=>(e,t)=>{Ie.isIndirect(t())?e({type:ce.OPEN_SAVE_DIALOG}):e({type:ce.SAVE_DOCUMENT})},startFileLoadingAction:()=>({type:ue.START_FILE_LOADING_ACTION}),endFileLoadingAction:()=>({type:ue.END_FILE_LOADING_ACTION}),goToNextPageAction:()=>(e,t)=>{const n=t();Ie.currentPageNumber(n)<Ie.pagesQuantity(n)&&e(et.setNewPageNumberAction(Ie.currentPageNumber(n)+1,!0))},goToPreviousPageAction:()=>(e,t)=>{const n=t();Ie.currentPageNumber(n)>1&&e(et.setNewPageNumberAction(Ie.currentPageNumber(n)-1,!0))},fileLoadingProgressAction:(e,t)=>({type:ue.FILE_LOADING_PROGRESS_ACTION,loaded:e,total:t}),errorAction:e=>(console.error(e),{type:ce.ERROR,payload:e}),createDocumentFromArrayBufferAction:(e,t=\"***\",n={})=>({type:ue.CREATE_DOCUMENT_FROM_ARRAY_BUFFER_ACTION,arrayBuffer:e,fileName:t,config:n}),setNewPageNumberAction:(e,t=!1)=>({type:ue.SET_NEW_PAGE_NUMBER_ACTION,pageNumber:e,shouldScrollToPage:t}),setPageByUrlAction:(e,t=!1)=>({type:ue.SET_PAGE_BY_URL_ACTION,url:e,closeContentsOnSuccess:t}),setUserScaleAction:e=>({type:ue.SET_USER_SCALE_ACTION,scale:e<.1?.1:e>6?6:e}),toggleFullPageViewAction:e=>t=>{const n=\"disable_scroll_djvujs\";e?(document.querySelector(\"html\").classList.add(n),document.body.classList.add(n)):(document.querySelector(\"html\").classList.remove(n),document.body.classList.remove(n)),t({type:ue.TOGGLE_FULL_PAGE_VIEW_ACTION,isFullPageView:e})}};var tt=et;const nt=Object(re.d)([\"cursor:pointer;flex:0 0 auto;&:hover{transform:scale(1.1);}\"]),rt=Object(re.d)([\"\",\";font-size:var(--button-basic-size);margin:0 0.5em;\"],nt),ot=Object(re.d)([\"background:var(--background-color);border:1px solid var(--border-color);border-radius:2px;color:var(--color);\"]);var it=n(0);const at=Object(re.d)([\"flex:1 1 auto;min-width:1em;max-width:8em;white-space:nowrap;\"]),lt=re.e.input.withConfig({displayName:\"PageNumber__Input\",componentId:\"sc-wjuw6j-0\"})([\"\",\";\",\";max-width:4em;\"],at,ot);class st extends i.a.Component{constructor(e){super(e),this.startPageNumberEditing=()=>{this.setState({isEditing:!0})},this.finishPageNumberEditing=e=>{this.setState({isEditing:!1,tempValue:null});var t=+e.target.value;this.setNewPageNumber(t)},this.onKeyPress=e=>{\"Enter\"===e.key&&this.finishPageNumberEditing(e)},this.onChange=e=>{this.setState({tempValue:e.target.value})},this.inputRef=e=>{this.input=e},this.state={isEditing:!1,tempValue:null}}componentDidUpdate(){this.input&&setTimeout((()=>{try{this.input&&(this.input.focus(),this.input.select(),this.input=null)}catch(e){}}),10)}setNewPageNumber(e){this.props.pagesQuantity&&(e<1?e=1:e>this.props.pagesQuantity&&(e=this.props.pagesQuantity),e!==this.props.pageNumber&&this.props.setNewPageNumber(e,!0))}render(){if(this.state.isEditing)return Object(it.jsx)(lt,{onKeyPress:this.onKeyPress,onBlur:this.finishPageNumberEditing,type:\"number\",onChange:this.onChange,value:null===this.state.tempValue?this.props.pageNumber:this.state.tempValue,ref:this.inputRef});var e=this.props.pagesQuantity?\" / \"+this.props.pagesQuantity:\"\";return Object(it.jsx)(ut,{onClick:this.startPageNumberEditing,children:this.props.pageNumber+e})}}var ut=Object(re.e)(\"span\").withConfig({displayName:\"PageNumber___StyledSpan\",componentId:\"sc-wjuw6j-1\"})([\"\",\"\"],at);const ct=i.a.createContext(((e,t=null)=>e)),dt=({children:e})=>{const t=ne(Ie.dictionary);return Object(it.jsx)(ct.Provider,{value:vt(t),children:e})},ft=()=>i.a.useContext(ct),pt=/[.*+\\-?^${}()|[\\]\\\\]/g,ht=e=>e.replace(pt,\"\\\\$&\"),mt={};let gt=0;function vt(e){return(t,n=null)=>{const r=e[t]||we.en[t]||t;if(we.en[t]||(mt[t]=\"\",clearTimeout(gt),gt=setTimeout((()=>{console.warn(\"\\nThere are untranslated phrases (missing from the English dictionary):\"),console.warn(\"\\n\"+JSON.stringify(mt,null,2).replaceAll('\"\"','\\n      \"\"'))}),1e3)),!n)return r;const o=Object.keys(n).map(ht).join(\"|\"),a=new RegExp(`(${o})`,\"g\");return r.split(a).map((e=>e in n?Object(it.jsx)(i.a.Fragment,{children:n[e]},e):e))}}const bt=re.e.div.withConfig({displayName:\"PageNumberBlock__Root\",componentId:\"sc-ct5egc-0\"})([\"margin:0 0.5em;flex:0 0 auto;display:flex;flex-wrap:nowrap;justify-content:center;align-items:center;\"]),yt=Object(re.d)([\"\",\";margin:0 0.1em;border-radius:100%;cursor:pointer;&:hover{transform:scale(1.1);box-shadow:0 0 1px gray;}&:active{background:#555;color:white;}\"],rt);class wt extends i.a.Component{constructor(...e){super(...e),this.onInputChange=e=>{this.setNewPageNumber(+e.target.value)},this.goToNextPage=()=>{this.setNewPageNumber(this.props.pageNumber+1,!0)},this.goToPrevPage=()=>{this.setNewPageNumber(this.props.pageNumber-1,!1)}}setNewPageNumber(e,t=!0){e>=1&&e<=this.props.pagesQuantity?this.props.setNewPageNumber(e,!0):this.props.setNewPageNumber(t?1:this.props.pagesQuantity,!0)}render(){const e=this.context;return Object(it.jsxs)(bt,{title:e(\"Click on the number to enter it manually\"),\"data-djvujs-id\":\"page_number_block\",children:[Object(it.jsx)(Ot,{onClick:this.goToPrevPage}),Object(it.jsx)(st,{...this.props}),Object(it.jsx)(xt,{onClick:this.goToNextPage})]})}}wt.contextType=ct;var St=q((e=>({pageNumber:Ie.currentPageNumber(e),pagesQuantity:Ie.pagesQuantity(e)})),{setNewPageNumber:tt.setNewPageNumberAction})(wt),Ot=Object(re.e)((function(e){return Ue({tag:\"svg\",attr:{viewBox:\"0 0 512 512\"},child:[{tag:\"path\",attr:{d:\"M8 256c0 137 111 248 248 248s248-111 248-248S393 8 256 8 8 119 8 256zm448 0c0 110.5-89.5 200-200 200S56 366.5 56 256 145.5 56 256 56s200 89.5 200 200zm-72-20v40c0 6.6-5.4 12-12 12H256v67c0 10.7-12.9 16-20.5 8.5l-99-99c-4.7-4.7-4.7-12.3 0-17l99-99c7.6-7.6 20.5-2.2 20.5 8.5v67h116c6.6 0 12 5.4 12 12z\"}}]})(e)})).withConfig({displayName:\"PageNumberBlock___StyledFaRegArrowAltCircleLeft\",componentId:\"sc-ct5egc-1\"})([\"\",\"\"],yt),xt=Object(re.e)((function(e){return Ue({tag:\"svg\",attr:{viewBox:\"0 0 512 512\"},child:[{tag:\"path\",attr:{d:\"M504 256C504 119 393 8 256 8S8 119 8 256s111 248 248 248 248-111 248-248zm-448 0c0-110.5 89.5-200 200-200s200 89.5 200 200-89.5 200-200 200S56 366.5 56 256zm72 20v-40c0-6.6 5.4-12 12-12h116v-67c0-10.7 12.9-16 20.5-8.5l99 99c4.7 4.7 4.7 12.3 0 17l-99 99c-7.6 7.6-20.5 2.2-20.5-8.5v-67H140c-6.6 0-12-5.4-12-12z\"}}]})(e)})).withConfig({displayName:\"PageNumberBlock___StyledFaRegArrowAltCircleRight\",componentId:\"sc-ct5egc-2\"})([\"\",\"\"],yt);const _t=re.e.span.withConfig({displayName:\"ScaleGizmo__Root\",componentId:\"sc-i6aj1t-0\"})([\"display:inline-flex;flex-wrap:nowrap;align-items:center;justify-content:center;svg{\",\";font-size:calc(var(--button-basic-size) * 0.8);}input{\",\";display:inline-block;width:3em;margin:0 0.5em;}\"],nt,ot);class jt extends i.a.Component{constructor(e){super(e),this.increaseScale=e=>{e.preventDefault();var t=Math.floor((Math.round(100*this.props.scale)+10)/10)/10;this.props.setUserScale(t)},this.decreaseScale=e=>{e.preventDefault();var t=Math.floor((Math.round(100*this.props.scale)-10)/10)/10;this.props.setUserScale(t)},this.startEditing=e=>{e.target.select()},this.finishEditing=e=>{var t=/\\d+/.exec(e.target.value),n=t?+t[0]:1,r=Math.round(n)/100;this.props.setUserScale(r),e.target.blur(),this.setState({tempValue:null})},this.onKeyPress=e=>{\"Enter\"===e.key&&this.finishEditing(e)},this.onChange=e=>{this.setState({tempValue:e.target.value})},this.state={tempValue:null}}render(){const e=Math.round(100*this.props.scale),t=this.context;return Object(it.jsxs)(_t,{title:t(\"You also can scale the page via Ctrl+MouseWheel\"),\"data-djvujs-id\":\"scale_gizmo\",children:[Object(it.jsx)(Ge,{onClick:this.decreaseScale}),Object(it.jsx)(\"input\",{onFocus:this.startEditing,onKeyPress:this.onKeyPress,onBlur:this.finishEditing,type:\"text\",value:null===this.state.tempValue?e+\"%\":this.state.tempValue,onChange:this.onChange}),Object(it.jsx)(qe,{onClick:this.increaseScale})]})}}jt.contextType=ct;var Et=q((e=>({scale:Ie.userScale(e)})),{setUserScale:tt.setUserScaleAction})(jt);const Ct=re.e.span.withConfig({displayName:\"StyledPrimitives__ControlButton\",componentId:\"sc-100dtlk-0\"})([\"\",\";\"],rt),kt=re.e.span.withConfig({displayName:\"StyledPrimitives__ControlButtonWrapper\",componentId:\"sc-100dtlk-1\"})([\"cursor:pointer;:hover{\",\"{transform:scale(1.1);}}\"],Ct),Tt=re.e.button.withConfig({displayName:\"StyledPrimitives__TextButton\",componentId:\"sc-100dtlk-2\"})([\"background:inherit;color:var(--color);border:1px solid var(--color);border-radius:3px;padding:0.2em;cursor:pointer;&:hover{background:var(--alternative-background-color);}&:focus{outline:none;}\"]),Pt=Object(re.f)([\"0%{transform:rotate(0turn);}100%{transform:rotate(1turn);}\"]),Nt=Object(re.e)((function(e){return Ue({tag:\"svg\",attr:{viewBox:\"0 0 512 512\"},child:[{tag:\"path\",attr:{d:\"M304 48c0 26.51-21.49 48-48 48s-48-21.49-48-48 21.49-48 48-48 48 21.49 48 48zm-48 368c-26.51 0-48 21.49-48 48s21.49 48 48 48 48-21.49 48-48-21.49-48-48-48zm208-208c-26.51 0-48 21.49-48 48s21.49 48 48 48 48-21.49 48-48-21.49-48-48-48zM96 256c0-26.51-21.49-48-48-48S0 229.49 0 256s21.49 48 48 48 48-21.49 48-48zm12.922 99.078c-26.51 0-48 21.49-48 48s21.49 48 48 48 48-21.49 48-48c0-26.509-21.491-48-48-48zm294.156 0c-26.51 0-48 21.49-48 48s21.49 48 48 48 48-21.49 48-48c0-26.509-21.49-48-48-48zM108.922 60.922c-26.51 0-48 21.49-48 48s21.49 48 48 48 48-21.49 48-48-21.491-48-48-48z\"}}]})(e)})).withConfig({displayName:\"StyledPrimitives__Spinner\",componentId:\"sc-100dtlk-3\"})([\"animation:\",\" 1s infinite steps(9,end);\"],Pt),It=re.e.span.withConfig({displayName:\"ViewModeButtons__ContinuousScrollButton\",componentId:\"sc-rdmqfy-0\"})([\"\",\";display:inline-flex;flex-direction:column;flex-wrap:nowrap;justify-content:center;overflow:hidden;max-height:100%;svg{flex:0 0 auto;}\"],rt),Rt=re.e.span.withConfig({displayName:\"ViewModeButtons__Root\",componentId:\"sc-rdmqfy-1\"})([\"display:inline-flex;align-items:center;height:calc(var(--button-basic-size) * 1.2);span{opacity:0.5;}\"]);class At extends i.a.Component{constructor(...e){super(...e),this.enableContinuousScrollMode=()=>{this.props.dispatch({type:ce.SET_VIEW_MODE,payload:ue.CONTINUOUS_SCROLL_MODE})},this.enableSinglePageMode=()=>{this.props.dispatch({type:ce.SET_VIEW_MODE,payload:ue.SINGLE_PAGE_MODE})},this.enableTextMode=()=>{this.props.dispatch({type:ce.SET_VIEW_MODE,payload:ue.TEXT_MODE})}}render(){const{viewMode:e,isIndirect:t}=this.props,n=this.context;return Object(it.jsxs)(Rt,{\"data-djvujs-id\":\"view_mode_buttons\",children:[t?null:Object(it.jsxs)(It,{style:e===ue.CONTINUOUS_SCROLL_MODE?{opacity:1}:null,title:n(\"Continuous scroll view mode\"),onClick:this.enableContinuousScrollMode,children:[Object(it.jsx)(Xe,{}),Object(it.jsx)(Xe,{})]}),Object(it.jsx)(\"span\",{title:n(\"Single page view mode\"),style:e===ue.SINGLE_PAGE_MODE?{opacity:1}:null,children:Object(it.jsx)(Ct,{as:Xe,onClick:this.enableSinglePageMode})}),Object(it.jsx)(\"span\",{title:n(\"Text view mode\"),style:e===ue.TEXT_MODE?{opacity:1}:null,children:Object(it.jsx)(Ct,{as:Qe,onClick:this.enableTextMode})})]})}}At.contextType=ct;var Dt=q((e=>({viewMode:Ie.viewMode(e),isIndirect:Ie.isIndirect(e)})))(At);const Lt=re.e.div.withConfig({displayName:\"CursorModeButtonGroup__Root\",componentId:\"sc-1lsg007-0\"})([\"white-space:nowrap;padding:0 0.1em;span{opacity:0.5;display:inline-block;&.active{opacity:1;}}\"]);var Mt=()=>{const e=ne(Ie.cursorMode),t=Z(),n=ft();return Object(it.jsxs)(Lt,{\"data-djvujs-id\":\"cursor_mode_buttons\",children:[Object(it.jsx)(\"span\",{title:n(\"Text cursor mode\"),className:e===ue.TEXT_CURSOR_MODE?\"active\":null,children:Object(it.jsx)(zt,{onClick:()=>t(tt.setCursorModeAction(ue.TEXT_CURSOR_MODE))})}),Object(it.jsx)(\"span\",{title:n(\"Grab cursor mode\"),className:e===ue.GRAB_CURSOR_MODE?\"active\":null,children:Object(it.jsx)(Ut,{onClick:()=>t(tt.setCursorModeAction(ue.GRAB_CURSOR_MODE))})})]})},zt=Object(re.e)((function(e){return Ue({tag:\"svg\",attr:{viewBox:\"0 0 256 512\"},child:[{tag:\"path\",attr:{d:\"M256 52.048V12.065C256 5.496 250.726.148 244.158.066 211.621-.344 166.469.011 128 37.959 90.266.736 46.979-.114 11.913.114 5.318.157 0 5.519 0 12.114v39.645c0 6.687 5.458 12.078 12.145 11.998C38.111 63.447 96 67.243 96 112.182V224H60c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h36v112c0 44.932-56.075 48.031-83.95 47.959C5.404 447.942 0 453.306 0 459.952v39.983c0 6.569 5.274 11.917 11.842 11.999 32.537.409 77.689.054 116.158-37.894 37.734 37.223 81.021 38.073 116.087 37.845 6.595-.043 11.913-5.405 11.913-12V460.24c0-6.687-5.458-12.078-12.145-11.998C217.889 448.553 160 444.939 160 400V288h36c6.627 0 12-5.373 12-12v-40c0-6.627-5.373-12-12-12h-36V112.182c0-44.932 56.075-48.213 83.95-48.142 6.646.018 12.05-5.346 12.05-11.992z\"}}]})(e)})).withConfig({displayName:\"CursorModeButtonGroup___StyledFaICursor\",componentId:\"sc-1lsg007-1\"})([\"\",\"\"],rt),Ut=Object(re.e)((function(e){return Ue({tag:\"svg\",attr:{viewBox:\"0 0 448 512\"},child:[{tag:\"path\",attr:{d:\"M372.57 112.641v-10.825c0-43.612-40.52-76.691-83.039-65.546-25.629-49.5-94.09-47.45-117.982.747C130.269 26.456 89.144 57.945 89.144 102v126.13c-19.953-7.427-43.308-5.068-62.083 8.871-29.355 21.796-35.794 63.333-14.55 93.153L132.48 498.569a32 32 0 0 0 26.062 13.432h222.897c14.904 0 27.835-10.289 31.182-24.813l30.184-130.958A203.637 203.637 0 0 0 448 310.564V179c0-40.62-35.523-71.992-75.43-66.359zm27.427 197.922c0 11.731-1.334 23.469-3.965 34.886L368.707 464h-201.92L51.591 302.303c-14.439-20.27 15.023-42.776 29.394-22.605l27.128 38.079c8.995 12.626 29.031 6.287 29.031-9.283V102c0-25.645 36.571-24.81 36.571.691V256c0 8.837 7.163 16 16 16h6.856c8.837 0 16-7.163 16-16V67c0-25.663 36.571-24.81 36.571.691V256c0 8.837 7.163 16 16 16h6.856c8.837 0 16-7.163 16-16V101.125c0-25.672 36.57-24.81 36.57.691V256c0 8.837 7.163 16 16 16h6.857c8.837 0 16-7.163 16-16v-76.309c0-26.242 36.57-25.64 36.57-.691v131.563z\"}}]})(e)})).withConfig({displayName:\"CursorModeButtonGroup___StyledFaRegHandPaper\",componentId:\"sc-1lsg007-2\"})([\"\",\"\"],rt);const Ft=re.e.span.withConfig({displayName:\"RotationControl__Root\",componentId:\"sc-1e5b0xb-0\"})([\"display:inline-flex;align-items:center;cursor:pointer;margin:0 0.5em;text-align:center;svg{font-size:calc(var(--button-basic-size) * 0.7);}svg:first-child{&:hover{transform:scale(1.1);}}svg:last-child{transform:scale(-1,1);&:hover{transform:scale(-1.1,1.1);}}\"]);var Bt=()=>{const e=Z(),t=ne(Ie.pageRotation),n=ft();return Object(it.jsxs)(Ft,{\"data-djvujs-id\":\"rotation_control\",title:n(\"Rotate the page\"),children:[Object(it.jsx)(Ye,{onClick:()=>{e(tt.setPageRotationAction(t?t-90:270))}}),Object(it.jsxs)(Vt,{children:[t,\"\\xb0\"]}),Object(it.jsx)(Ye,{onClick:()=>{e(tt.setPageRotationAction(270===t?0:t+90))}})]})},Vt=Object(re.e)(\"span\").withConfig({displayName:\"RotationControl___StyledSpan\",componentId:\"sc-1e5b0xb-1\"})([\"width:2.5em;\"]);function Wt(e){return Ue({tag:\"svg\",attr:{viewBox:\"0 0 512 512\"},child:[{tag:\"path\",attr:{fill:\"none\",strokeMiterlimit:\"10\",strokeWidth:\"32\",d:\"M448 256c0-106-86-192-192-192S64 150 64 256s86 192 192 192 192-86 192-192z\"}},{tag:\"path\",attr:{fill:\"none\",strokeLinecap:\"round\",strokeLinejoin:\"round\",strokeWidth:\"32\",d:\"M256 176v160m80-80H176\"}}]})(e)}function Ht(e){return Ue({tag:\"svg\",attr:{viewBox:\"0 0 512 512\"},child:[{tag:\"path\",attr:{fill:\"none\",strokeLinecap:\"round\",strokeLinejoin:\"round\",strokeWidth:\"32\",d:\"M224 184h128m-128 72h128m-128 71h128\"}},{tag:\"path\",attr:{fill:\"none\",strokeMiterlimit:\"10\",strokeWidth:\"32\",d:\"M448 258c0-106-86-192-192-192S64 152 64 258s86 192 192 192 192-86 192-192z\"}},{tag:\"circle\",attr:{cx:\"168\",cy:\"184\",r:\"8\",fill:\"none\",strokeLinecap:\"round\",strokeLinejoin:\"round\",strokeWidth:\"32\"}},{tag:\"circle\",attr:{cx:\"168\",cy:\"257\",r:\"8\",fill:\"none\",strokeLinecap:\"round\",strokeLinejoin:\"round\",strokeWidth:\"32\"}},{tag:\"circle\",attr:{cx:\"168\",cy:\"328\",r:\"8\",fill:\"none\",strokeLinecap:\"round\",strokeLinejoin:\"round\",strokeWidth:\"32\"}}]})(e)}function $t(e){return Ue({tag:\"svg\",attr:{viewBox:\"0 0 512 512\"},child:[{tag:\"path\",attr:{d:\"M256 48C141.31 48 48 141.31 48 256s93.31 208 208 208 208-93.31 208-208S370.69 48 256 48zm-64 287.5a16 16 0 01-16 16h-16a16 16 0 01-16-16v-16a16 16 0 0116-16h16a16 16 0 0116 16zm0-71a16 16 0 01-16 16h-16a16 16 0 01-16-16v-16a16 16 0 0116-16h16a16 16 0 0116 16zm0-72a16 16 0 01-16 16h-16a16 16 0 01-16-16v-16a16 16 0 0116-16h16a16 16 0 0116 16zm176 151H212.67v-32H368zm0-71H212.67v-32H368zm0-72H212.67v-32H368z\"}}]})(e)}const Gt=re.e.svg.withConfig({displayName:\"ContentsButton__Root\",componentId:\"sc-ghsm65-0\"})([\"\",\";font-size:2em;flex:0 0 auto;\"],nt);var qt=()=>{const e=Z(),t=ne(Ie.isContentsOpened),n=ft();return Object(it.jsx)(Gt,{as:t?$t:Ht,onClick:()=>e({type:ce.TOGGLE_CONTENTS}),\"data-djvujs-id\":\"contents_button\",title:n(\"Table of contents\")})};var Yt=()=>{const{hideFullPageSwitch:e}=ne(Ie.uiOptions),t=ne(Ie.isFullPageView),n=Z(),r=ft();return e?null:Object(it.jsx)(\"div\",{title:r(\"Switch full page mode\"),\"data-djvujs-class\":\"full_page_button\",children:Object(it.jsx)(Ct,{as:t?Ve:$e,onClick:()=>console.log(\"toggle Fullscreen clicked\")||n(tt.toggleFullPageViewAction(!t))})})};function Kt(e){return Ue({tag:\"svg\",attr:{viewBox:\"0 0 24 24\",fill:\"none\",stroke:\"currentColor\",strokeWidth:\"2\",strokeLinecap:\"round\",strokeLinejoin:\"round\"},child:[{tag:\"polyline\",attr:{points:\"7 13 12 18 17 13\"}},{tag:\"polyline\",attr:{points:\"7 6 12 11 17 6\"}}]})(e)}const Qt=Object(re.e)((function(e){return Ue({tag:\"svg\",attr:{viewBox:\"0 0 24 24\",fill:\"none\",stroke:\"currentColor\",strokeWidth:\"2\",strokeLinecap:\"round\",strokeLinejoin:\"round\"},child:[{tag:\"path\",attr:{d:\"M18 3a3 3 0 0 0-3 3v12a3 3 0 0 0 3 3 3 3 0 0 0 3-3 3 3 0 0 0-3-3H6a3 3 0 0 0-3 3 3 3 0 0 0 3 3 3 3 0 0 0 3-3V6a3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3h12a3 3 0 0 0 3-3 3 3 0 0 0-3-3z\"}}]})(e)})).withConfig({displayName:\"MenuButton__Root\",componentId:\"sc-ip1cpf-0\"})([\"\",\";font-size:2em;color:var(--highlight-color);margin-left:\",\";\"],nt,(e=>e.theme.isMobile?0:\"1em\"));var Xt=({onClick:e})=>Object(it.jsx)(Qt,{onClick:e,\"data-djvujs-id\":\"menu_button\"});const Zt=Object(re.e)((function(e){return Ue({tag:\"svg\",attr:{version:\"1.2\",baseProfile:\"tiny\",viewBox:\"0 0 24 24\"},child:[{tag:\"path\",attr:{d:\"M16.729 4.271c-.389-.391-1.021-.393-1.414-.004-.104.104-.176.227-.225.355-.832 1.736-1.748 2.715-2.904 3.293-1.297.64-2.786 1.085-5.186 1.085-.13 0-.26.025-.382.076-.245.102-.439.297-.541.541-.101.244-.101.52 0 .764.051.123.124.234.217.326l3.243 3.243-4.537 6.05 6.05-4.537 3.242 3.242c.092.094.203.166.326.217.122.051.252.078.382.078s.26-.027.382-.078c.245-.102.44-.295.541-.541.051-.121.077-.252.077-.381 0-2.4.444-3.889 1.083-5.166.577-1.156 1.556-2.072 3.293-2.904.129-.049.251-.121.354-.225.389-.393.387-1.025-.004-1.414l-3.997-4.02z\"}}]})(e)})).withConfig({displayName:\"PinButton__Root\",componentId:\"sc-wfvhy2-0\"})([\"font-size:calc(var(--button-basic-size) * 1.2);margin-right:1em;cursor:pointer;\",\";:hover{transform:scale(1.1) \",\";}\"],(e=>e.$pinned?\"\":\"transform: rotate(45deg)\"),(e=>e.$pinned?\"\":\"rotate(45deg)\"));var Jt=({isPinned:e,onClick:t})=>{const n=ft();return Object(it.jsx)(Zt,{$pinned:e,onClick:t,\"data-djvujs-id\":\"pin_button\",title:n(e?\"Toolbar is always shown\":\"Toolbar automatically hides\")})},en=({onClick:e,className:t=null})=>Object(it.jsx)(tn,{className:t,onClick:e,\"data-djvujs-class\":\"close_button\"}),tn=Object(re.e)((function(e){return Ue({tag:\"svg\",attr:{viewBox:\"0 0 512 512\"},child:[{tag:\"path\",attr:{d:\"M256 8C119 8 8 119 8 256s111 248 248 248 248-111 248-248S393 8 256 8zm0 448c-110.5 0-200-89.5-200-200S145.5 56 256 56s200 89.5 200 200-89.5 200-200 200zm101.8-262.2L295.6 256l62.2 62.2c4.7 4.7 4.7 12.3 0 17l-22.6 22.6c-4.7 4.7-12.3 4.7-17 0L256 295.6l-62.2 62.2c-4.7 4.7-12.3 4.7-17 0l-22.6-22.6c-4.7-4.7-4.7-12.3 0-17l62.2-62.2-62.2-62.2c-4.7-4.7-4.7-12.3 0-17l22.6-22.6c4.7-4.7 12.3-4.7 17 0l62.2 62.2 62.2-62.2c4.7-4.7 12.3-4.7 17 0l22.6 22.6c4.7 4.7 4.7 12.3 0 17z\"}}]})(e)})).withConfig({displayName:\"CloseButton___StyledFaRegTimesCircle\",componentId:\"sc-6thp0n-0\"})([\"\",\"\"],nt);const nn=Object(re.e)(Ke).withConfig({displayName:\"FileBlock__FileIcon\",componentId:\"sc-15tzw9c-0\"})([\"flex:0 0 auto;\"]),rn=re.e.span.withConfig({displayName:\"FileBlock__FileName\",componentId:\"sc-15tzw9c-1\"})([\"overflow:hidden;flex:0 1 auto;max-width:20em;text-align:left;text-overflow:ellipsis;margin:0 0.5em;\"]),on=re.e.div.withConfig({displayName:\"FileBlock__Root\",componentId:\"sc-15tzw9c-2\"})([\"flex:0 1 auto;cursor:pointer;display:flex;flex-wrap:nowrap;align-items:center;justify-content:flex-start;white-space:nowrap;overflow:hidden;&:hover{\",\"{transform:scale(1.1)}}\"],nn);class an extends i.a.Component{constructor(...e){super(...e),this.onChange=e=>{if(!e.target.files.length)return;const t=e.target.files[0];var n=new FileReader;n.readAsArrayBuffer(t),n.onload=()=>{this.props.createNewDocument(n.result,t.name)}},this.onClick=e=>{this.input&&this.input.click()}}render(){const e=this.context;return Object(it.jsxs)(on,{className:\"file_block\",onClick:this.onClick,title:e(\"Open another .djvu file\"),children:[Object(it.jsx)(nn,{}),Object(it.jsx)(rn,{children:null==this.props.fileName?e(\"Choose a file\"):this.props.fileName||\"\"}),Object(it.jsx)(\"input\",{style:{display:\"none\"},type:\"file\",onChange:this.onChange,accept:\".djvu, .djv\",ref:e=>this.input=e})]})}}an.contextType=ct;var ln=q(null,{createNewDocument:tt.createDocumentFromArrayBufferAction})(an);var sn=({withLabel:e=!1,onClick:t=(()=>{})})=>{const n=Z(),r=ft();return Object(it.jsxs)(kt,{title:r(\"Show options window\"),\"data-djvujs-class\":\"options_button\",onClick:()=>{n({type:ce.TOGGLE_OPTIONS_WINDOW,payload:!0}),t()},children:[Object(it.jsx)(Ct,{as:Be}),e?Object(it.jsx)(\"span\",{children:r(\"Options\")}):null]})};var un=({withLabel:e=null,onClick:t=(()=>{})})=>{const n=Z(),r=ft();return Object(it.jsxs)(kt,{title:r(\"Show help window\"),\"data-djvujs-class\":\"help_button\",onClick:()=>{n(tt.showHelpWindowAction()),t()},children:[Object(it.jsx)(cn,{}),e?Object(it.jsx)(\"span\",{children:r(\"About\")}):null]})},cn=Object(re.e)((function(e){return Ue({tag:\"svg\",attr:{viewBox:\"0 0 512 512\"},child:[{tag:\"path\",attr:{d:\"M256 8C119.043 8 8 119.083 8 256c0 136.997 111.043 248 248 248s248-111.003 248-248C504 119.083 392.957 8 256 8zm0 448c-110.532 0-200-89.431-200-200 0-110.495 89.472-200 200-200 110.491 0 200 89.471 200 200 0 110.53-89.431 200-200 200zm107.244-255.2c0 67.052-72.421 68.084-72.421 92.863V300c0 6.627-5.373 12-12 12h-45.647c-6.627 0-12-5.373-12-12v-8.659c0-35.745 27.1-50.034 47.579-61.516 17.561-9.845 28.324-16.541 28.324-29.579 0-17.246-21.999-28.693-39.784-28.693-23.189 0-33.894 10.977-48.942 29.969-4.057 5.12-11.46 6.071-16.666 2.124l-27.824-21.098c-5.107-3.872-6.251-11.066-2.644-16.363C184.846 131.491 214.94 112 261.794 112c49.071 0 101.45 38.304 101.45 88.8zM298 368c0 23.159-18.841 42-42 42s-42-18.841-42-42 18.841-42 42-42 42 18.841 42 42z\"}}]})(e)})).withConfig({displayName:\"HelpButton___StyledFaRegQuestionCircle\",componentId:\"sc-xkbnif-0\"})([\"\",\"\"],rt);const dn=Object(re.d)([\"z-index:4;position:absolute;top:0;left:0;width:100%;height:100%;\"]),fn=re.e.div.withConfig({displayName:\"ModalWindow__ModalWindowRoot\",componentId:\"sc-1qa1mzi-0\"})([\"color:var(--color);box-shadow:0 0 2px var(--color);background:var(--modal-window-background-color);border-radius:0.5em;font-size:1.5em;position:absolute;top:50%;left:50%;transform:translateX(-50%) translateY(-50%);max-width:90%;max-height:90%;width:max-content;height:max-content;z-index:2;padding:0;overflow:hidden;display:flex;flex-direction:column;--closeButtonBlockHeight:28px;\",\";\",\";\"],(e=>e.$fixedSize?`\\n        height: ${e.theme.isMobile?90:80}%;\\n        width: ${e.theme.isMobile?90:80}%;\\n    `:\"\"),(e=>e.$error?\"\\n       background: rgb(255, 209, 212);\\n       color: black;\\n    \":\"\")),pn=re.e.div.withConfig({displayName:\"ModalWindow__ContentWrapper\",componentId:\"sc-1qa1mzi-1\"})([\"overflow:auto;padding-bottom:var(--closeButtonBlockHeight);\"]),hn=re.e.div.withConfig({displayName:\"ModalWindow__DarkLayer\",componentId:\"sc-1qa1mzi-2\"})([\"position:absolute;top:0;left:0;width:100%;height:100%;background:var(--alternative-background-color);backdrop-filter:blur(2px);opacity:0.8;z-index:1;\"]);class mn extends i.a.Component{render(){const{onClose:e,isError:t,isFixedSize:n,className:r=\"\",usePortal:o=!1}=this.props,i=Object(it.jsxs)(gn,{\"data-djvujs-class\":\"modal_window\",children:[Object(it.jsx)(hn,{onClick:e,\"data-djvujs-class\":\"dark_layer\"}),Object(it.jsxs)(fn,{className:r,$error:t,$fixedSize:n,children:[Object(it.jsx)(vn,{onClick:e}),Object(it.jsx)(pn,{children:this.props.children})]})]});if(o){const e=document.getElementById(\"djvujs-modal-windows-container\");return e?l.a.createPortal(i,e):i}return i}}var gn=Object(re.e)(\"div\").withConfig({displayName:\"ModalWindow___StyledDiv\",componentId:\"sc-1qa1mzi-3\"})([\"\",\"\"],dn),vn=Object(re.e)(en).withConfig({displayName:\"ModalWindow___StyledCloseButton\",componentId:\"sc-1qa1mzi-4\"})([\"height:var(--closeButtonBlockHeight);margin-left:auto;margin-right:0.25em;\"]);const bn=re.e.div.withConfig({displayName:\"SaveNotification\",componentId:\"sc-4dsxol-0\"})([\"padding:1em;\"]),yn=re.e.div.withConfig({displayName:\"SaveNotification__ButtonBlock\",componentId:\"sc-4dsxol-1\"})([\"margin-top:1em;display:flex;justify-content:space-around;\",\"{font-size:0.8em;}\"],Tt);var wn=({onSave:e=(()=>{}),onClose:t=(()=>{})})=>{const{onSaveNotification:n}=ne(Ie.uiOptions);return Object(it.jsx)(mn,{onClose:()=>{n.yesButton||n.noButton||e(),t()},usePortal:!0,children:Object(it.jsxs)(bn,{children:[Object(it.jsx)(\"div\",{children:n.text}),Object(it.jsxs)(yn,{children:[n.yesButton?Object(it.jsx)(Tt,{onClick:()=>{t(),e()},children:n.yesButton}):null,n.noButton?Object(it.jsx)(Tt,{onClick:t,children:n.noButton}):null]})]})})},Sn=({withLabel:e=!1,onClick:t=(()=>{})})=>{const n=ft(),r=Z(),[o,a]=i.a.useState(!1),{onSaveNotification:l}=ne(Ie.uiOptions),s=()=>r(tt.tryToSaveDocument());return Object(it.jsxs)(it.Fragment,{children:[Object(it.jsxs)(kt,{title:n(\"Save document\"),onClick:()=>{l&&l.text?a(!0):s(),t()},children:[Object(it.jsx)(Ct,{as:We}),e?Object(it.jsx)(\"span\",{children:n(\"Save\")}):null]}),o?Object(it.jsx)(wn,{onSave:s,onClose:()=>a(!1)}):null]})};const On={appWidth:769,appHeight:569,isMobile:!1},xn=re.a,_n=()=>i.a.useContext(xn);var jn=({AppRoot:e})=>{const t=Object(o.useRef)(null),n=function(e){const[t,n]=Object(o.useState)(On);return Object(o.useEffect)((()=>{if(!e.current)return;const t=new ResizeObserver((([e])=>{const t=e.contentBoxSize?e.contentBoxSize[0]||e.contentBoxSize:{inlineSize:e.contentRect.width,blockSize:e.contentRect.height};n({appWidth:t.inlineSize,appHeight:t.blockSize,isMobile:t.blockSize<569||t.inlineSize<769})}));return t.observe(e.current),()=>t.disconnect()}),[e.current,n]),t}(t),r=function(e){const[t,n]=Object(o.useState)(!1);return Object(o.useEffect)((()=>{if(!e.current)return;const t=()=>{n(document.fullscreenElement===e.current||document.webkitFullscreenElement===e.current)};e.current.addEventListener(\"fullscreenchange\",t),e.current.addEventListener(\"webkitfullscreenchange\",t)}),[e.current]),{isFullscreen:t,toggleFullscreen:async()=>{if(!e.current||!document.fullscreenEnabled&&!document.webkitFullscreenEnabled)return;let n=null;t?(document.fullscreenElement||document.webkitFullscreenElement)&&(document.exitFullscreen?n=document.exitFullscreen():document.webkitExitFullscreen&&(n=e.current.webkitExitFullscreen())):e.current.requestFullscreen?n=e.current.requestFullscreen():e.current.webkitRequestFullScreen&&(n=e.current.webkitRequestFullScreen());try{await n}catch(r){console.warn(\"Cannot change fullscreen mode. Error: \\n\",r)}}}}(t),i=Z(),a={...n,...r};Object(o.useEffect)((()=>{i({type:ce.UPDATE_APP_CONTEXT,payload:a})}),[i,a]);const l=Object(o.useMemo)((()=>Object(it.jsx)(e,{ref:t})),[t]);return Object(it.jsx)(re.b,{theme:a,children:l})};const En=Object(re.e)((function(e){return Ue({tag:\"svg\",attr:{viewBox:\"0 0 512 512\"},child:[{tag:\"rect\",attr:{width:\"448\",height:\"320\",x:\"32\",y:\"64\",fill:\"none\",strokeLinejoin:\"round\",strokeWidth:\"32\",rx:\"32\",ry:\"32\"}},{tag:\"path\",attr:{strokeLinecap:\"round\",strokeLinejoin:\"round\",strokeWidth:\"32\",d:\"M304 448l-8-64h-80l-8 64h96z\"}},{tag:\"path\",attr:{fill:\"none\",strokeLinecap:\"round\",strokeLinejoin:\"round\",strokeWidth:\"32\",d:\"M368 448H144\"}},{tag:\"path\",attr:{d:\"M32 304v48a32.09 32.09 0 0032 32h384a32.09 32.09 0 0032-32v-48zm224 64a16 16 0 1116-16 16 16 0 01-16 16z\"}}]})(e)})).withConfig({displayName:\"FullscreenButton\",componentId:\"sc-13s7s3c-0\"})([\"\",\";font-size:1.1em;color:\",\";\"],nt,(e=>e.$active?\"var(--highlight-color)\":\"inherit\"));var Cn=({className:e=null})=>{const{isFullscreen:t,toggleFullscreen:n}=_n(),r=ft();return Object(it.jsx)(En,{className:e,\"data-djvujs-class\":\"fullscreen_button\",title:r(\"Fullscreen mode\"),$active:t,onClick:n})};const kn=re.e.div.withConfig({displayName:\"Menu__Root\",componentId:\"sc-rs4ngp-0\"})([\"font-size:16px;--button-basic-size:1em;position:absolute;bottom:calc(100% + var(--app-padding));right:0;z-index:1;min-height:min(15em,\",\"px);max-height:\",\"px;width:fit-content;max-width:90%;background:var(--background-color);border:1px solid var(--border-color);border-radius:5px 0 5px 0;padding:0.5em;overflow:hidden;display:flex;flex-direction:column;\",\";transition:transform 0.5s;\"],(e=>.7*e.theme.appHeight),(e=>.7*e.theme.appHeight),(e=>e.$opened?\"transform: translateX(0);\":\"transform: translateX(calc(100% + var(--app-padding) * 2));\")),Tn=re.e.div.withConfig({displayName:\"Menu__MenuWrapper\",componentId:\"sc-rs4ngp-1\"})([\"display:flex;flex-direction:column;& > *{margin-bottom:1em;}\"]),Pn=re.e.div.withConfig({displayName:\"Menu__Header\",componentId:\"sc-rs4ngp-2\"})([\"display:flex;align-items:center;border-bottom:1px solid var(--border-color);padding-bottom:0.5em;margin-bottom:0.5em;font-size:1.5em;svg{margin-left:auto;}span{margin-right:1em;}\"]),Nn=re.e.div.withConfig({displayName:\"Menu__DocumentWrapper\",componentId:\"sc-rs4ngp-3\"})([\"border-bottom:1px solid var(--border-color);margin-bottom:1em;padding-bottom:0.5em;padding-left:0.5em;& > div:first-child{margin-bottom:1em;}\"]),In=Object(re.d)([\"flex-direction:column;padding-left:1em;align-items:flex-start;border-bottom:1px dashed var(--border-color);margin-bottom:1em;& > *{margin-bottom:0.5em;}\"]),Rn=re.e.div.withConfig({displayName:\"Menu__DocumentControls\",componentId:\"sc-rs4ngp-4\"})([\"display:flex;flex-wrap:wrap;align-items:center;margin-top:1em;\",\";\"],(e=>e.theme.isMobile?In:\"\")),An=Object(re.d)([\"cursor:pointer;:hover{& svg{transform:scale(1.1);}}\"]),Dn=re.e.div.withConfig({displayName:\"Menu__DocumentControl\",componentId:\"sc-rs4ngp-5\"})([\"\",\";margin-right:1.5em;white-space:nowrap;display:flex;align-items:center;\",\"{margin-left:0;}\"],An,Ct),Ln=re.e.div.withConfig({displayName:\"Menu__MobileControl\",componentId:\"sc-rs4ngp-6\"})([\"display:flex;align-items:center;margin-bottom:1em;span:first-child{margin-right:1em;}\"]),Mn=re.e.div.withConfig({displayName:\"Menu__Content\",componentId:\"sc-rs4ngp-7\"})([\"overflow:auto;\"]);var zn=({isOpened:e,onClose:t})=>{const n=Z(),r=ft(),o=ne(Ie.fileName),{hideOpenAndCloseButtons:i,hidePrintButton:a,hideSaveButton:l}=ne(Ie.uiOptions),{isMobile:s}=_n(),u=t;return Object(it.jsxs)(kn,{$opened:e,\"data-djvujs-id\":\"menu\",children:[Object(it.jsxs)(Pn,{children:[Object(it.jsx)(\"span\",{children:r(\"Menu\")}),Object(it.jsx)(en,{onClick:u})]}),Object(it.jsxs)(Mn,{children:[Object(it.jsxs)(Nn,{children:[Object(it.jsxs)(\"div\",{children:[r(\"Document\"),\":\"]}),i?o?Object(it.jsx)(\"span\",{children:o}):null:Object(it.jsx)(ln,{fileName:o||\"\"}),Object(it.jsxs)(Rn,{children:[a?null:Object(it.jsxs)(Dn,{onClick:()=>{n({type:ce.OPEN_PRINT_DIALOG}),u()},title:r(\"Print document\"),children:[Object(it.jsx)(Un,{}),Object(it.jsx)(\"span\",{children:r(\"Print\")})]}),l?null:Object(it.jsx)(Dn,{onClick:u,children:Object(it.jsx)(Sn,{onClick:u,withLabel:!0})}),i?null:Object(it.jsxs)(Dn,{onClick:()=>n(tt.closeDocumentAction()),children:[Object(it.jsx)(Fn,{as:en}),Object(it.jsx)(\"span\",{children:r(\"Close\")})]})]}),s?Object(it.jsxs)(it.Fragment,{children:[Object(it.jsxs)(Ln,{children:[Object(it.jsxs)(\"span\",{children:[r(\"View mode\"),\":\"]}),Object(it.jsx)(Dt,{})]}),Object(it.jsxs)(Ln,{children:[Object(it.jsxs)(\"span\",{children:[r(\"Scale\"),\":\"]}),Object(it.jsx)(Et,{})]}),Object(it.jsxs)(Ln,{children:[Object(it.jsxs)(\"span\",{children:[r(\"Rotation\"),\":\"]}),Object(it.jsx)(Bt,{})]}),Object(it.jsxs)(Ln,{children:[Object(it.jsxs)(\"span\",{children:[r(\"Cursor mode\"),\":\"]}),Object(it.jsx)(Mt,{})]})]}):null]}),Object(it.jsxs)(Tn,{children:[Object(it.jsxs)(Ln,{children:[Object(it.jsxs)(\"span\",{children:[r(\"Full page mode\"),\":\"]}),Object(it.jsx)(Yt,{})]}),document.fullscreenEnabled||document.webkitFullscreenEnabled?Object(it.jsxs)(Ln,{children:[Object(it.jsxs)(\"span\",{children:[r(\"Fullscreen mode\"),\":\"]}),Object(it.jsx)(Cn,{})]}):null,Object(it.jsx)(sn,{onClick:u,withLabel:!0}),Object(it.jsx)(un,{onClick:u,withLabel:!0})]})]})]})},Un=Object(re.e)((function(e){return Ue({tag:\"svg\",attr:{viewBox:\"0 0 512 512\"},child:[{tag:\"path\",attr:{d:\"M448 192V77.25c0-8.49-3.37-16.62-9.37-22.63L393.37 9.37c-6-6-14.14-9.37-22.63-9.37H96C78.33 0 64 14.33 64 32v160c-35.35 0-64 28.65-64 64v112c0 8.84 7.16 16 16 16h48v96c0 17.67 14.33 32 32 32h320c17.67 0 32-14.33 32-32v-96h48c8.84 0 16-7.16 16-16V256c0-35.35-28.65-64-64-64zm-64 256H128v-96h256v96zm0-224H128V64h192v48c0 8.84 7.16 16 16 16h48v96zm48 72c-13.25 0-24-10.75-24-24 0-13.26 10.75-24 24-24s24 10.74 24 24c0 13.25-10.75 24-24 24z\"}}]})(e)})).withConfig({displayName:\"Menu___StyledFaPrint\",componentId:\"sc-rs4ngp-8\"})([\"\",\"\"],rt),Fn=Object(re.e)(Ct).withConfig({displayName:\"Menu___StyledControlButton\",componentId:\"sc-rs4ngp-9\"})([\"font-size:1em;\"]);const Bn=Object(re.d)([\"bottom:calc(100% + var(--app-padding));right:0;transform:rotate(180deg);transition:transform 1s,bottom 0.5s,right 0.5s 0.5s;\"]),Vn=re.e.div.withConfig({displayName:\"HideButton__Root\",componentId:\"sc-16k0k0x-0\"})([\"--size:28px;width:var(--size);height:var(--size);font-size:calc(var(--size) * 0.7);position:absolute;z-index:1;background:var(--background-color);border-radius:100px;border:1px solid var(--color);cursor:pointer;display:flex;justify-content:center;align-items:center;transition:transform 1s,bottom 0.5s 0.5s,right 0.5s;right:0;bottom:calc(100% + var(--app-padding));\",\";\",\";\"],(e=>e.theme.appWidth>400?\"\\n        right: 25%;\\n        bottom: 50%;\\n        transform: translateX(50%) translateY(50%);\\n    \":\"\"),(e=>e.$hidden?Bn:\"\"));var Wn=({isToolbarHidden:e,onClick:t})=>Object(it.jsx)(Vn,{$hidden:e,onClick:t,\"data-djvujs-id\":\"hide_button\",children:Object(it.jsx)(Kt,{})});const Hn=\"42px\",$n=Object(re.d)([\"font-size:16px;& > *{margin-right:0;margin-left:0;}\"]),Gn=re.e.div.withConfig({displayName:\"Toolbar__Root\",componentId:\"sc-xmrcl3-0\"})([\"position:relative;flex:0 0 auto;border:1px solid var(--border-color);border-radius:0 7px 0 7px;padding:7px 4px;display:flex;flex-wrap:nowrap;justify-content:space-between;align-items:center;height:\",\";box-sizing:border-box;align-self:stretch;margin-top:var(--app-padding);z-index:2;font-size:14px;--button-basic-size:1.5em;margin-bottom:0;transition:margin-bottom 0.5s;\",\";\",\";\"],Hn,(e=>e.$hidden?\"margin-bottom: calc(-42px - var(--app-padding) - 1px)\":\"\"),(e=>e.$mobile?$n:\"\")),qn=re.e.div.withConfig({displayName:\"Toolbar__CentralPanel\",componentId:\"sc-xmrcl3-1\"})([\"height:100%;max-width:45em;margin:0 auto;display:flex;align-items:center;justify-content:center;& > *{margin:0 0.8em;}\"]),Yn=re.e.div.withConfig({displayName:\"Toolbar__RightPanel\",componentId:\"sc-xmrcl3-2\"})([\"height:100%;display:flex;align-items:center;\"]),Kn=re.e.div.withConfig({displayName:\"Toolbar__InvisibleLayer\",componentId:\"sc-xmrcl3-3\"})([\"position:absolute;bottom:0;height:calc(\",\" + var(--app-padding) * 2);width:100%;z-index:1;\"],Hn);var Qn=()=>{const[e,t]=i.a.useState(!0),[n,r]=i.a.useState(!1),[o,a]=i.a.useState(!1),[l,s]=i.a.useState(!1),u=i.a.useCallback((()=>r(!1)),[r]),c=i.a.useCallback((()=>r(!0)),[r]),d=i.a.useCallback((()=>{t(!e)}),[e,t]),{isMobile:f}=_n(),p=f||e,h=o&&f||n&&!p;return Object(it.jsxs)(it.Fragment,{children:[p?null:Object(it.jsx)(Kn,{onMouseEnter:u,onMouseLeave:c}),Object(it.jsxs)(Gn,{$hidden:h,onMouseEnter:p?null:u,onMouseLeave:p?null:c,\"data-djvujs-id\":\"toolbar\",$mobile:f,children:[Object(it.jsx)(qt,{}),Object(it.jsxs)(qn,{children:[f?null:Object(it.jsx)(Dt,{}),f?null:Object(it.jsx)(Mt,{}),Object(it.jsx)(St,{}),f?null:Object(it.jsx)(Et,{}),f?null:Object(it.jsx)(Bt,{})]}),Object(it.jsxs)(Yn,{\"data-djvujs-class\":\"right_panel\",children:[f?null:Object(it.jsx)(Jt,{isPinned:e,onClick:d}),f?null:Object(it.jsx)(Yt,{}),f?Object(it.jsx)(Wn,{onClick:()=>a(!o),isToolbarHidden:h}):null,Object(it.jsx)(Xt,{onClick:()=>s(!l)})]}),Object(it.jsx)(zn,{isOpened:l&&!h,onClose:()=>s(!1)})]})]})};const Xn=Object(re.e)(Ke).withConfig({displayName:\"FileZone__FileIcon\",componentId:\"sc-hxwsg2-0\"})([\"font-size:1.5em;\"]),Zn=Object(re.f)([\"from{transform:rotateY(0deg)}25%{transform:rotateY(5deg)}75%{transform:rotateY(-5deg)}to{transform:rotateY(0deg)}\"]),Jn=Object(re.d)([\"animation:\",\" 1s infinite linear;opacity:0.8;border-color:var(--highlight-color);\"],Zn),er=re.e.div.withConfig({displayName:\"FileZone__Root\",componentId:\"sc-hxwsg2-1\"})([\"border:0.1em dashed var(--border-color);background:var(--alternative-background-color);padding:0.5em;max-width:20em;min-height:5em;margin:auto;border-radius:0.5em;cursor:pointer;display:flex;flex-direction:column;align-items:center;justify-content:center;&:hover{\",\"{transform:scale(1.1);}}\",\";\"],Xn,(e=>e.$dragOver?Jn:\"\"));class tr extends i.a.Component{constructor(...e){super(...e),this.state={isDragOver:!1},this.onChange=e=>{e.target.files.length&&this.processFile(e.target.files[0])},this.onClick=e=>{this.input&&this.input.click()},this.checkDrag=e=>{1===e.dataTransfer.items.length&&\"file\"===e.dataTransfer.items[0].kind&&(e.preventDefault(),this.setState({isDragOver:!0}))},this.onDragLeave=e=>{this.setState({isDragOver:!1})},this.onDrop=e=>{this.setState({isDragOver:!1}),\"file\"===e.dataTransfer.items[0].kind&&(e.preventDefault(),this.processFile(e.dataTransfer.items[0].getAsFile()))}}processFile(e){var t=new FileReader;t.readAsArrayBuffer(e),t.onload=()=>{this.props.createNewDocument(t.result,e.name)}}render(){const e=this.context;return Object(it.jsxs)(er,{$dragOver:this.state.isDragOver,onClick:this.onClick,title:e(\"Open another .djvu file\"),onDragEnter:this.checkDrag,onDragOver:this.checkDrag,onDragLeave:this.onDragLeave,onDrop:this.onDrop,children:[Object(it.jsx)(Xn,{}),Object(it.jsx)(\"span\",{children:e(\"Drag & Drop a file here or click to choose manually\")}),Object(it.jsx)(\"input\",{style:{display:\"none\"},type:\"file\",onChange:this.onChange,accept:\".djvu, .djv\",ref:e=>this.input=e})]})}}tr.contextType=ct;var nr=q(null,{createNewDocument:tt.createDocumentFromArrayBufferAction})(tr);const rr=!!(document.querySelector(\"input#djvu_js_extension_main_page\")&&window.chrome&&window.chrome.runtime&&window.chrome.runtime.id),or=/Firefox/.test(navigator.userAgent),ir=e=>/\\.(djv|djvu)$/.test(e)?e:e+\".djvu\",ar=re.e.form.withConfig({displayName:\"LinkBlock__LinkBlockRoot\",componentId:\"sc-1ry5hlr-0\"})([\"max-width:20em;display:flex;justify-content:center;margin:1em auto;input{\",\";flex:1 1 auto;height:2em;font-style:italic;}button{color:var(--color);margin-left:1em;border-radius:0.5em;background:none;border:1px solid var(--border-color);cursor:pointer;&:hover{background:var(--alternative-background-color);}}\"],ot);var lr=()=>{const[e,t]=i.a.useState(\"\"),n=Z(),r=ft();return Object(it.jsxs)(ar,{onSubmit:t=>{t.preventDefault(),/^https?:\\/\\/.+/.test(e.trim())?n({type:ce.LOAD_DOCUMENT_BY_URL,url:e}):alert(r('Enter a valid URL (it should start with \"http(s)://\")'))},children:[Object(it.jsx)(\"input\",{value:e,placeholder:r(\"Paste a URL to a djvu file here\"),onChange:e=>t(e.target.value)}),Object(it.jsx)(\"button\",{type:\"submit\",children:r(\"Open URL\")})]})};const sr=re.e.div.withConfig({displayName:\"IncompleteTranslationWindow__Root\",componentId:\"sc-i21ms0-0\"})([\"font-size:18px;min-width:20em;text-align:left;padding:1em;color:var(--color);\"]),ur=re.e.ul.withConfig({displayName:\"IncompleteTranslationWindow__NotTranslatedList\",componentId:\"sc-i21ms0-1\"})([\"max-height:15em;overflow:auto;padding:1em 2em;font-style:italic;\"]);var cr=({onClose:e,missedPhrases:t})=>{const n=ft();return Object(it.jsx)(mn,{onClose:t=>{t.stopPropagation(),e()},usePortal:!0,children:Object(it.jsxs)(sr,{children:[Object(it.jsxs)(\"div\",{children:[Object(it.jsxs)(\"strong\",{children:[n(\"The translation isn't complete.\"),\" \"]}),n(\"The following phrases are not translated:\")]}),Object(it.jsx)(ur,{children:t.map(((e,t)=>Object(it.jsx)(\"li\",{children:e},t)))}),Object(it.jsx)(\"a\",{target:\"_blank\",rel:\"noopener noreferrer\",href:ue.TRANSLATION_PAGE_URL,children:n(\"You can improve the translation here\")})]})})};const dr=re.e.span.withConfig({displayName:\"LanguageWarningSign__Warning\",componentId:\"sc-xp2qj5-0\"})([\"color:var(--color);cursor:pointer;margin-right:0.5em;display:inline-flex;align-items:center;:hover{color:var(--highlight-color);}svg{margin-left:0.5em;font-size:0.8em;}\"]);var fr=({languageCode:e})=>{const t=we[e],n=Object.keys(we.en).filter((e=>null==t[e]));let[r,o]=i.a.useState(!1);return n.length?Object(it.jsxs)(it.Fragment,{children:[Object(it.jsx)(dr,{onClick:e=>{e.stopPropagation(),o(!0)},children:Object(it.jsx)(He,{})}),r?Object(it.jsx)(cr,{missedPhrases:n,onClose:()=>o(!1)}):null]}):null},pr=({className:e})=>{const t=ft();return Object(it.jsx)(hr,{className:e,href:ue.TRANSLATION_PAGE_URL,target:\"_blank\",rel:\"noopener noreferrer\",title:t(\"Add more\"),children:Object(it.jsx)(Wt,{})})},hr=Object(re.e)(\"a\").withConfig({displayName:\"AddLanguageButton___StyledA\",componentId:\"sc-hje2ri-0\"})([\"color:var(--color) !important;display:inline-block;height:1em;width:1em;:hover{transform:scale(1.2);}\"]);const mr=re.e.div.withConfig({displayName:\"LanguagePanel__LanguagePanelRoot\",componentId:\"sc-ldbzd3-0\"})([\"display:flex;font-size:20px;margin-top:0.5em;align-items:flex-end;justify-content:center;flex-wrap:wrap;padding:0 0.5em;\"]),gr=Object(re.d)([\"border-bottom:3px solid var(--highlight-color);color:var(--highlight-color);cursor:default;padding-top:0;\"]),vr=re.e.div.withConfig({displayName:\"LanguagePanel__LanguageItem\",componentId:\"sc-ldbzd3-1\"})([\"margin-left:0.5em;margin-bottom:0.2em;cursor:pointer;white-space:nowrap;padding-top:2px;border-bottom:1px solid transparent;vertical-align:top;\",\";\"],(e=>e.$selected?gr:\"\\n        :hover {\\n            border-color: var(--color);\\n        }\\n    \")),br=()=>{const{locale:e}=ne(Ie.options),t=Z();return Object(it.jsxs)(mr,{children:[Object.entries(we).map((([n,r])=>Object(it.jsxs)(vr,{$selected:e===n,\"data-djvujs-class\":\"language_name \"+(e===n?\"selected\":\"\"),onClick:()=>t({type:ce.UPDATE_OPTIONS,payload:{locale:n}}),children:[r.nativeName,Object(it.jsx)(fr,{languageCode:n})]},n))),Object(it.jsx)(yr,{})]})};var yr=Object(re.e)(pr).withConfig({displayName:\"LanguagePanel___StyledAddLanguageButton\",componentId:\"sc-ldbzd3-2\"})([\"font-size:1.5em;align-self:center;\"]);const wr=re.e.span.withConfig({displayName:\"ThemeSwitcher__Root\",componentId:\"sc-b41jlv-0\"})([\"margin-top:1.5em;svg{margin:0 0.5em;cursor:pointer;}\"]),Sr=Object(re.d)([\"transform:scale(1.5);color:var(--highlight-color);\"]);var Or=()=>{const{theme:e}=ne(Ie.options),t=Z(),n=e=>()=>t({type:ce.UPDATE_OPTIONS,payload:{theme:e}});return Object(it.jsxs)(wr,{children:[Object(it.jsx)(xr,{onClick:n(\"light\"),\"data-djvujs-id\":\"light_theme_button\",\"data-djvujs-class\":\"light\"===e?\"active\":null,$_css:\"light\"===e?Sr:null}),Object(it.jsx)(_r,{onClick:n(\"dark\"),\"data-djvujs-id\":\"dark_theme_button\",\"data-djvujs-class\":\"dark\"===e?\"active\":null,$_css2:\"dark\"===e?Sr:null})]})},xr=Object(re.e)((function(e){return Ue({tag:\"svg\",attr:{viewBox:\"0 0 512 512\"},child:[{tag:\"path\",attr:{d:\"M494.2 221.9l-59.8-40.5 13.7-71c2.6-13.2-1.6-26.8-11.1-36.4-9.6-9.5-23.2-13.7-36.2-11.1l-70.9 13.7-40.4-59.9c-15.1-22.3-51.9-22.3-67 0l-40.4 59.9-70.8-13.7C98 60.4 84.5 64.5 75 74.1c-9.5 9.6-13.7 23.1-11.1 36.3l13.7 71-59.8 40.5C6.6 229.5 0 242 0 255.5s6.7 26 17.8 33.5l59.8 40.5-13.7 71c-2.6 13.2 1.6 26.8 11.1 36.3 9.5 9.5 22.9 13.7 36.3 11.1l70.8-13.7 40.4 59.9C230 505.3 242.6 512 256 512s26-6.7 33.5-17.8l40.4-59.9 70.9 13.7c13.4 2.7 26.8-1.6 36.3-11.1 9.5-9.5 13.6-23.1 11.1-36.3l-13.7-71 59.8-40.5c11.1-7.5 17.8-20.1 17.8-33.5-.1-13.6-6.7-26.1-17.9-33.7zm-112.9 85.6l17.6 91.2-91-17.6L256 458l-51.9-77-90.9 17.6 17.6-91.2-76.8-52 76.8-52-17.6-91.2 91 17.6L256 53l51.9 76.9 91-17.6-17.6 91.1 76.8 52-76.8 52.1zM256 152c-57.3 0-104 46.7-104 104s46.7 104 104 104 104-46.7 104-104-46.7-104-104-104zm0 160c-30.9 0-56-25.1-56-56s25.1-56 56-56 56 25.1 56 56-25.1 56-56 56z\"}}]})(e)})).withConfig({displayName:\"ThemeSwitcher___StyledFaRegSun\",componentId:\"sc-b41jlv-1\"})([\"\",\"\"],(e=>e.$_css)),_r=Object(re.e)((function(e){return Ue({tag:\"svg\",attr:{viewBox:\"0 0 512 512\"},child:[{tag:\"path\",attr:{d:\"M279.135 512c78.756 0 150.982-35.804 198.844-94.775 28.27-34.831-2.558-85.722-46.249-77.401-82.348 15.683-158.272-47.268-158.272-130.792 0-48.424 26.06-92.292 67.434-115.836 38.745-22.05 28.999-80.788-15.022-88.919A257.936 257.936 0 0 0 279.135 0c-141.36 0-256 114.575-256 256 0 141.36 114.576 256 256 256zm0-464c12.985 0 25.689 1.201 38.016 3.478-54.76 31.163-91.693 90.042-91.693 157.554 0 113.848 103.641 199.2 215.252 177.944C402.574 433.964 344.366 464 279.135 464c-114.875 0-208-93.125-208-208s93.125-208 208-208z\"}}]})(e)})).withConfig({displayName:\"ThemeSwitcher___StyledFaRegMoon\",componentId:\"sc-b41jlv-2\"})([\"\",\"\"],(e=>e.$_css2));const jr=re.e.select.withConfig({displayName:\"LanguageSelector__Select\",componentId:\"sc-1vy9jvp-0\"})([\"font-size:1em;margin-right:0.5em;padding-right:0.5em;\",\";\"],ot),Er=re.e.div.withConfig({displayName:\"LanguageSelector__Root\",componentId:\"sc-1vy9jvp-1\"})([\"display:flex;flex-wrap:wrap;align-items:center;\"]);var Cr=()=>{const{locale:e}=ne(Ie.options),t=Z(),n=ft();return Object(it.jsxs)(Er,{children:[Object(it.jsxs)(\"span\",{style:{marginRight:\"0.5em\"},children:[n(\"Language\"),\":\"]}),Object(it.jsx)(jr,{value:e,onChange:e=>t({type:ce.UPDATE_OPTIONS,payload:{locale:e.target.value}}),children:Object.entries(we).map((([e,t])=>Object(it.jsx)(\"option\",{value:e,children:t.nativeName},e)))}),Object(it.jsx)(fr,{languageCode:e}),Object(it.jsx)(kr,{})]})},kr=Object(re.e)(pr).withConfig({displayName:\"LanguageSelector___StyledAddLanguageButton\",componentId:\"sc-1vy9jvp-2\"})([\"font-size:1.2em\"]);const Tr=re.e.div.withConfig({displayName:\"InitialScreen__Root\",componentId:\"sc-1tb5ujx-0\"})([\"font-size:\",\"em;text-align:center;flex:1 1 auto;width:100%;height:100%;overflow:auto;display:flex;flex-direction:column;align-items:center;\"],(e=>e.theme.isMobile?1.5:2)),Pr=re.e.div.withConfig({displayName:\"InitialScreen__InfoBlock\",componentId:\"sc-1tb5ujx-1\"})([\"width:max-content;margin:0 auto 1em auto;text-align:left;font-size:0.8em;svg{font-size:1.5em;}div{display:flex;align-items:center;margin-bottom:0.25em;}\"]),Nr=re.e.div.withConfig({displayName:\"InitialScreen__Footer\",componentId:\"sc-1tb5ujx-2\"})([\"width:100%;display:flex;justify-content:flex-end;contain:layout;& > *{margin-left:0.5em;}\"]);var Ir=()=>{const e=ft(),{isMobile:t}=_n();return Object(it.jsxs)(Tr,{children:[t?Object(it.jsx)(Cr,{}):Object(it.jsx)(br,{}),Object(it.jsx)(Or,{}),Object(it.jsxs)(Rr,{children:[Object(it.jsx)(Ar,{children:`DjVu.js Viewer v.${r.Viewer.VERSION}`}),Object(it.jsx)(Dr,{children:`(${e(\"powered with\")} DjVu.js v.${r.VERSION})`}),Object(it.jsxs)(Pr,{children:[Object(it.jsx)(\"div\",{children:e(\"#optionsButton - see the available options\",{\"#optionsButton\":Object(it.jsx)(sn,{})})}),Object(it.jsx)(\"div\",{children:e(\"#helpButton - learn more about the app\",{\"#helpButton\":Object(it.jsx)(un,{})})})]}),rr?Object(it.jsx)(lr,{}):null,Object(it.jsx)(nr,{})]}),Object(it.jsxs)(Nr,{children:[document.fullscreenEnabled||document.webkitFullscreenEnabled?Object(it.jsx)(Lr,{}):null,Object(it.jsx)(Yt,{})]})]})},Rr=Object(re.e)(\"div\").withConfig({displayName:\"InitialScreen___StyledDiv\",componentId:\"sc-1tb5ujx-3\"})([\"margin:auto;\"]),Ar=Object(re.e)(\"div\").withConfig({displayName:\"InitialScreen___StyledDiv2\",componentId:\"sc-1tb5ujx-4\"})([\"text-align:center;font-size:2em\"]),Dr=Object(re.e)(\"div\").withConfig({displayName:\"InitialScreen___StyledDiv3\",componentId:\"sc-1tb5ujx-5\"})([\"font-style:italic;margin-top:0.5em;margin-bottom:1em;font-size:0.8em\"]),Lr=Object(re.e)(Cn).withConfig({displayName:\"InitialScreen___StyledFullscreenButton\",componentId:\"sc-1tb5ujx-6\"})([\"margin-right:0.5em;\"]);const Mr=re.e.div.withConfig({displayName:\"ProgressBar\",componentId:\"sc-14hlndr-0\"})([\"border:1px solid var(--color);width:25em;max-width:90%;height:3px;margin-top:0.5em;div:first-child{background:var(--color);height:100%;}\"]);var zr=({percentage:e,className:t})=>Object(it.jsx)(Mr,{className:t,children:Object(it.jsx)(\"div\",{style:{width:e+\"%\"}})});const Ur=re.e.div.withConfig({displayName:\"LoadingPhrase__Root\",componentId:\"sc-1lnzqyy-0\"})([\"display:flex;align-items:center;span{margin-left:0.5em;}\"]);var Fr=({style:e,className:t})=>{const n=ft();return Object(it.jsxs)(Ur,{style:e,className:t,children:[Object(it.jsx)(Nt,{}),Object(it.jsxs)(\"span\",{children:[n(\"Loading\"),\"...\"]})]})};const Br=re.e.div.withConfig({displayName:\"FileLoadingScreen__Root\",componentId:\"sc-3k45rn-0\"})([\"flex-direction:column;width:100%;height:100%;display:flex;align-items:center;justify-content:center;white-space:nowrap;\"]);var Vr=()=>{const e=ne(Ie.loadedBytes),t=ne(Ie.totalBytes),n=e&&t?Math.round(e/t*100):0;return Object(it.jsxs)(Br,{children:[Object(it.jsx)(Wr,{}),Object(it.jsxs)(Hr,{style:e||t?null:{visibility:\"hidden\"},children:[Math.round(e/1024).toLocaleString(\"ru-RU\"),\" KB \",t?`/ ${Math.round(t/1024).toLocaleString(\"ru-RU\")} KB`:\"\"]}),Object(it.jsx)($r,{percentage:n,$_css:t?null:\"visibility: hidden\"})]})},Wr=Object(re.e)(Fr).withConfig({displayName:\"FileLoadingScreen___StyledLoadingPhrase\",componentId:\"sc-3k45rn-1\"})([\"font-size:3em;margin-bottom:0.5em\"]),Hr=Object(re.e)(\"div\").withConfig({displayName:\"FileLoadingScreen___StyledDiv\",componentId:\"sc-3k45rn-2\"})([\"font-size:1.5em\"]),$r=Object(re.e)(zr).withConfig({displayName:\"FileLoadingScreen___StyledProgressBar\",componentId:\"sc-3k45rn-3\"})([\"\",\"\"],(e=>e.$_css));const Gr=(e,t=100,n=500)=>{let r=null,o=null;const i=t=>{r=null,o=null,e(t)};return e=>{r&&e.timeStamp-r>n?(o&&clearTimeout(o),i(e)):(r||(r=e.timeStamp),o&&clearTimeout(o),o=setTimeout(i,t,e))}};function qr(e,t){let n,o,i=!1;switch(t.code){case r.ErrorCodes.NETWORK_ERROR:n=e(\"Network error\"),o=e(\"Check your network connection\");break;case r.ErrorCodes.UNSUCCESSFUL_REQUEST:switch(n=e(\"Web request error\"),t.status){case 404:o=e(\"404 Document not found\");break;case 403:o=e(\"403 Access forbidden\");break;case 500:o=e(\"500 Internal server error\");break;default:o=e(\"The request failed with HTTP status #status\",{\"#status\":t.status})}break;case r.ErrorCodes.FILE_IS_CORRUPTED:n=e(\"DjVu file is corrupted\"),o=e(\"The file doesn't comply with the DjVu format specification or it's not a whole DjVu document\");break;case r.ErrorCodes.INCORRECT_FILE_FORMAT:n=e(\"Incorrect file format\"),o=e(\"The provided file is not a DjVu document\");break;case r.ErrorCodes.NO_SUCH_PAGE:n=e(\"Incorrect page number\"),o=e(\"There is no page with the number #pageNumber\",{\"#pageNumber\":t.pageNumber});break;case r.ErrorCodes.NO_BASE_URL:n=e(\"No base URL for an indirect DjVu document\"),o=e(\"You probably opened an indirect (multi-file) DjVu document manually.\")+\"\\n\"+e(\"But such multi-file documents can be only loaded by URL.\");break;default:n=e(\"Unexpected error\");try{o=JSON.stringify(t,null,2),i=!0}catch{o=e(\"Cannot print the error, look in the console\")}}return{header:n,message:o,isJSON:i}}const Yr=re.e.div.withConfig({displayName:\"ErrorWindow__Header\",componentId:\"sc-ca2eti-0\"})([\"border-bottom:1px solid gray;padding:0 0.5em;\"]),Kr=re.e.div.withConfig({displayName:\"ErrorWindow__Body\",componentId:\"sc-ca2eti-1\"})([\"margin-top:1em;padding:0 0.5em;\",\";\"],(e=>e.$json?\"\\n        white-space: pre;\\n        font-family: Consolas, monospace;\\n    \":\"\"));var Qr=()=>{const e=ft(),t=Z(),n=ne(Ie.error);if(!n)return null;const{header:r,message:o,isJSON:i}=qr(e,n);return Object(it.jsx)(mn,{isError:!0,onClose:()=>t({type:ce.CLOSE_ERROR_WINDOW}),children:Object(it.jsxs)(\"div\",{children:[Object(it.jsx)(Yr,{children:r}),Object(it.jsx)(Kr,{$json:i,children:o})]})})};const Xr=re.e.div.withConfig({displayName:\"HelpWindow__Root\",componentId:\"sc-tiedzi-0\"})([\"padding:0.5em;font-size:\",\"px;\"],(e=>e.theme.isMobile?12:20)),Zr=re.e.div.withConfig({displayName:\"HelpWindow__Header\",componentId:\"sc-tiedzi-1\"})([\"font-size:1.2em;width:100%;font-weight:600;border-bottom:1px solid var(--border-color);margin:0.5em 0;\"]),Jr=re.e.div.withConfig({displayName:\"HelpWindow__HotkeyGrid\",componentId:\"sc-tiedzi-2\"})([\"display:grid;grid-template-columns:auto 1fr;column-gap:0.5em;& >:nth-child(2n+1){text-align:center;}\"]);var eo=()=>{const e=ne(Ie.isHelpWindowShown),t=Z(),n=ft(),{hideFullPageSwitch:o}=ne(Ie.uiOptions);return e?Object(it.jsx)(mn,{onClose:()=>t(tt.closeHelpWindowAction()),isFixedSize:!0,children:Object(it.jsxs)(Xr,{children:[Object(it.jsx)(Zr,{children:`DjVu.js Viewer v.${r.Viewer.VERSION} (DjVu.js v.${r.VERSION})`}),Object(it.jsxs)(\"div\",{children:[n(\"The application for viewing .djvu files in the browser.\"),Object(it.jsx)(\"br\",{}),n(\"If something doesn't work properly, feel free to write about the problem at #email.\",{\"#email\":Object(it.jsx)(\"a\",{target:\"_blank\",rel:\"noopener noreferrer\",href:\"mailto:djvujs@yandex.ru\",children:\"djvujs@yandex.ru\"})}),Object(it.jsx)(\"br\",{}),n(\"The official website is #website.\",{\"#website\":Object(it.jsx)(\"a\",{target:\"_blank\",rel:\"noopener noreferrer\",href:\"https://djvu.js.org/\",children:\"djvu.js.org\"})}),Object(it.jsx)(\"br\",{}),n(\"The source code is available on #link.\",{\"#link\":Object(it.jsx)(\"a\",{target:\"_blank\",rel:\"noopener noreferrer\",href:\"https://github.com/RussCoder/djvujs\",children:\"GitHub\"})}),Object(it.jsx)(\"br\",{})]}),Object(it.jsx)(Zr,{children:n(\"Hotkeys\")}),Object(it.jsxs)(Jr,{children:[Object(it.jsx)(\"em\",{children:\"Ctrl+S\"}),Object(it.jsxs)(\"span\",{children:[\"- \",n(\"save the document\")]}),Object(it.jsx)(\"em\",{children:\"\\u2190\"}),Object(it.jsxs)(\"span\",{children:[\"- \",n(\"go to the previous page\")]}),Object(it.jsx)(\"em\",{children:\"\\u2192\"}),Object(it.jsxs)(\"span\",{children:[\"- \",n(\"go to the next page\")]})]}),o?null:Object(it.jsxs)(it.Fragment,{children:[Object(it.jsx)(Zr,{children:n(\"Controls\")}),Object(it.jsxs)(\"div\",{children:[n(\"#expandIcon and #collapseIcon are to switch the viewer to the full page mode and back.\",{\"#expandIcon\":Object(it.jsx)($e,{}),\"#collapseIcon\":Object(it.jsx)(Ve,{})}),\" \"+n(\"If you work with the browser extension, these buttons will cause no effect, since the viewer takes the whole page by default.\")]})]})]})}):null};const to=re.e.div.withConfig({displayName:\"TreeItem__Name\",componentId:\"sc-19bjz41-0\"})([\"cursor:pointer;margin-left:0.5em;line-height:20px;&:hover{text-decoration:underline;}\"]),no=re.e.div.withConfig({displayName:\"TreeItem__Root\",componentId:\"sc-19bjz41-1\"})([\"display:flex;flex-wrap:nowrap;& > svg{flex:0 0 auto;font-size:20px;}\"]);class ro extends i.a.Component{constructor(e){super(e),this.onClick=()=>{this.props.callback&&this.props.callback(this.props.callbackData)},this.toggleItem=()=>{this.setState({isCollapsed:!this.state.isCollapsed})},this.state={isCollapsed:!0}}renderChildren(){return this.props.children?Object(it.jsx)(oo,{children:this.props.children.map(((e,t)=>Object(it.jsx)(ro,{...e},t)))}):null}render(){const e=this.state.isCollapsed?Je:Ze;return Object(it.jsxs)(no,{children:[this.props.children?Object(it.jsx)(e,{onClick:this.toggleItem}):Object(it.jsx)(io,{}),Object(it.jsxs)(\"div\",{children:[Object(it.jsx)(to,{className:\"name\",onClick:this.onClick,children:this.props.name}),this.state.isCollapsed?null:this.renderChildren()]})]})}}var oo=Object(re.e)(\"div\").withConfig({displayName:\"TreeItem___StyledDiv\",componentId:\"sc-19bjz41-2\"})([\"padding-left:0.5em;\"]),io=Object(re.e)((function(e){return Ue({tag:\"svg\",attr:{viewBox:\"0 0 512 512\"},child:[{tag:\"path\",attr:{d:\"M256 8C119 8 8 119 8 256s111 248 248 248 248-111 248-248S393 8 256 8z\"}}]})(e)})).withConfig({displayName:\"TreeItem___StyledFaCircle\",componentId:\"sc-19bjz41-3\"})([\"transform:scale(0.5)\"]);const ao=re.e.div.withConfig({displayName:\"ContentsPanel__Root\",componentId:\"sc-t6o3i3-0\"})([\"padding:0.5em;box-sizing:border-box;height:100%;overflow:auto;\"]),lo=re.e.div.withConfig({displayName:\"ContentsPanel__Header\",componentId:\"sc-t6o3i3-1\"})([\"font-size:1.5em;border-bottom:1px solid var(--border-color);margin-bottom:0.5em;padding-bottom:0.2em;display:flex;justify-content:space-between;span:first-child{margin-right:0.5em;overflow:hidden;text-overflow:ellipsis;}\"]);class so extends i.a.Component{constructor(...e){super(...e),this.onTreeItemClick=e=>{this.props.dispatch(tt.setPageByUrlAction(e,this.props.appContext.isMobile))}}convertBookmarkArrayToTreeItemDataArray(e){return e&&e.map((e=>this.makeTreeItemDataByBookmark(e)))}makeTreeItemDataByBookmark(e){return{name:e.description,children:this.convertBookmarkArrayToTreeItemDataArray(e.children),callback:this.onTreeItemClick,callbackData:e.url}}render(){const{contents:e,dispatch:t}=this.props,n=this.context;return Object(it.jsxs)(ao,{children:[Object(it.jsxs)(lo,{children:[Object(it.jsx)(\"span\",{children:n(\"Contents\")}),Object(it.jsx)(en,{onClick:()=>t({type:ce.CLOSE_CONTENTS})})]}),e&&e.map(((e,t)=>Object(it.jsx)(ro,{...this.makeTreeItemDataByBookmark(e)},t))),e?null:Object(it.jsx)(fo,{children:n(\"No contents provided\")})]})}}so.contextType=ct;var uo,co=q()((uo=so,e=>Object(it.jsx)(xn.Consumer,{children:t=>Object(it.jsx)(uo,{...e,appContext:t})}))),fo=Object(re.e)(\"div\").withConfig({displayName:\"ContentsPanel___StyledDiv\",componentId:\"sc-t6o3i3-2\"})([\"font-style:italic;\"]);const po=Object(re.d)([\"position:absolute;z-index:1;height:100%;background:var(--background-color);max-width:90%;\"]),ho=re.e.div.withConfig({displayName:\"LeftPanel__Root\",componentId:\"sc-14cqkwh-0\"})([\"flex:0 0 auto;border:1px solid var(--border-color);border-radius:1em 0 1em 0;box-sizing:border-box;max-width:80%;transition:margin-left 0.5s,width 0.5s;font-size:14px;\",\";\"],(e=>e.theme.isMobile?po:\"\")),mo=re.e.div.withConfig({displayName:\"LeftPanel__Border\",componentId:\"sc-14cqkwh-1\"})([\"box-sizing:border-box;float:right;height:100%;position:relative;width:7px;left:4px;display:flex;flex-direction:column;justify-content:center;align-items:center;--point-size:5px;div{width:var(--point-size);height:var(--point-size);transform:scaleX(0.75) scaleY(1.25) rotateZ(45deg);background:var(--border-color);margin-bottom:var(--point-size);}&:hover{cursor:col-resize;}\"]);class go extends i.a.Component{constructor(...e){super(...e),this.prevIsMobile=null,this.lastContents=null,this.contentsWasClosed=null,this.onBeginResizing=e=>{e.preventDefault();const t=this.topNode.getBoundingClientRect().width;this.topNode.style.transition=\"none\",this.initialState={clientX:e.clientX,width:t},window.addEventListener(\"mousemove\",this.onResizing),window.addEventListener(\"mouseup\",this.onEndResizing)},this.onResizing=e=>{if(e.preventDefault(),!this.initialState)return;const t=e.clientX-this.initialState.clientX;this.topNode.style.width=this.initialState.width+t+\"px\"},this.onEndResizing=e=>{e.preventDefault(),window.removeEventListener(\"mousemove\",this.onResizing),window.removeEventListener(\"mouseup\",this.onEndResizing),this.topNode.style.transition=null,this.initialState=null,this.topNode.getBoundingClientRect().width<40&&this.closeContents()},this.closeContents=()=>this.props.dispatch({type:ce.CLOSE_CONTENTS}),this.ref=e=>this.topNode=e}componentDidUpdate(e,t,n){this.prevIsMobile!==this.context.isMobile&&(this.context.isMobile&&this.props.isContentsOpened?(this.closeContents(),this.contentsWasClosed=!0):!this.context.isMobile&&this.contentsWasClosed&&(this.props.isContentsOpened||this.props.dispatch({type:ce.TOGGLE_CONTENTS}),this.contentsWasClosed=!1)),this.prevIsMobile=this.context.isMobile}render(){const{contents:e,isContentsOpened:t}=this.props,n=this.context.isMobile,r=e&&this.lastContents!==e;this.lastContents=e;const o=this.topNode?this.topNode.getBoundingClientRect().width:0,i=n?\"90%\":\"20%\";return Object(it.jsxs)(it.Fragment,{children:[n&&t?Object(it.jsx)(hn,{onClick:this.closeContents}):null,Object(it.jsxs)(ho,{ref:this.ref,style:!t||n&&r?{width:o,marginLeft:(a=o,`calc(-${a}px - var(--app-padding))`)}:{width:i,marginLeft:0,transition:r?\"none\":null},onTransitionEnd:e=>{\"margin-left\"!==e.propertyName||t||(this.topNode.style.width=i,this.topNode.style.marginLeft=`calc(-${i} - var(--app-padding))`,this.topNode.style.transition=\"none\")},children:[Object(it.jsxs)(mo,{onMouseDown:this.onBeginResizing,children:[Object(it.jsx)(\"div\",{}),Object(it.jsx)(\"div\",{}),Object(it.jsx)(\"div\",{})]}),Object(it.jsx)(\"div\",{style:{height:\"100%\",overflow:\"hidden\"},children:Object(it.jsx)(co,{contents:e})})]})]});var a}}go.contextType=xn;var vo=q((e=>({contents:Ie.contents(e),isContentsOpened:Ie.isContentsOpened(e)})))(go);const bo=re.e.div.withConfig({displayName:\"LoadingLayer__DarkLayer\",componentId:\"sc-1xu0nll-0\"})([\"position:absolute;top:0;left:0;width:100%;height:100%;background:var(--alternative-background-color);opacity:0.7;\"]),yo=re.e.div.withConfig({displayName:\"LoadingLayer__MessageWrapper\",componentId:\"sc-1xu0nll-1\"})([\"position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);opacity:0.8;font-size:3em;flex:1 1 auto;display:flex;justify-content:center;align-items:center;white-space:nowrap;\"]);class wo extends i.a.Component{constructor(e){super(e),this.showTimeout=null,this.rootRef=i.a.createRef()}componentDidMount(){this.showTimeout=setTimeout((()=>{this.rootRef.current&&(this.rootRef.current.style.display=null),this.showTimeout=null}),500)}componentWillUnmount(){this.showTimeout&&clearTimeout(this.showTimeout)}render(){return Object(it.jsxs)(\"div\",{style:{display:\"none\"},ref:this.rootRef,children:[Object(it.jsx)(bo,{}),Object(it.jsx)(yo,{children:Object(it.jsx)(Fr,{})})]})}}var So=Number.isNaN||function(e){return\"number\"===typeof e&&e!==e};function Oo(e,t){if(e.length!==t.length)return!1;for(var n=0;n<e.length;n++)if(r=e[n],o=t[n],!(r===o||So(r)&&So(o)))return!1;var r,o;return!0}var xo=function(e,t){var n;void 0===t&&(t=Oo);var r,o=[],i=!1;return function(){for(var a=[],l=0;l<arguments.length;l++)a[l]=arguments[l];return i&&n===this&&t(a,o)||(r=e.apply(this,a),i=!0,n=this,o=a),r}};class _o extends i.a.Component{constructor(e){super(e),this.canvasRef=e=>{this.canvas=e,this.canvas&&(this.canvasCtx=this.canvas.getContext(\"2d\"))},this.tmpCanvas=document.createElement(\"canvas\"),this.tmpCanvasCtx=this.tmpCanvas.getContext(\"2d\"),this.lastUserScale=null,this.redrawImageTimeout=-1}componentWillUnmount(){clearTimeout(this.redrawImageTimeout)}componentDidUpdate(){this.updateImageIfRequired()}componentDidMount(){this.updateImageIfRequired()}getScaleFactor(){return(this.props.imageDpi?this.props.imageDpi/ue.DEFAULT_DPI:1)/this.props.userScale}getScaledImageWidth(){return Math.floor(this.props.imageData.width/this.getScaleFactor())}getScaledImageHeight(){return Math.floor(this.props.imageData.height/this.getScaleFactor())}updateImageIfRequired(){this.canvas&&this.lastUserScale!==this.props.userScale&&(null===this.lastUserScale&&this.drawImageOnCanvas(),clearTimeout(this.redrawImageTimeout),this.redrawImageTimeout=setTimeout((()=>{this.drawImageOnCanvas()}),300))}logarithmicScale(){const e=this.props.imageData;var t,n,r,o;let i=this.getScaleFactor();if(i<=1)return e;for(this.tmpCanvas.width=n=o=e.width,this.tmpCanvas.height=t=r=e.height,this.tmpCanvasCtx.putImageData(e,0,0);Math.abs(i-1)>=.001&&n>1&&t>1;){var a=i>2?2:i;i/=a,r/=a,o/=a,this.tmpCanvasCtx.drawImage(this.tmpCanvas,0,0,n,t,0,0,o,r),t=r,n=o}const l=this.tmpCanvasCtx.getImageData(0,0,Math.max(n,1),Math.max(t,1));return this.tmpCanvas.width=this.tmpCanvas.height=0,l}drawImageOnCanvas(){this.putImageData(this.logarithmicScale()),this.lastUserScale=this.props.userScale}putImageData(e){this.canvas&&(this.canvas.width=e.width,this.canvas.height=e.height,this.canvasCtx.putImageData(e,0,0),this.getScaleFactor()>=1&&(this.canvas.style.width=e.width+\"px\",this.canvas.style.height=e.height+\"px\"))}render(){return Object(it.jsx)(\"canvas\",{style:{width:this.getScaledImageWidth(),height:this.getScaledImageHeight()},ref:this.canvasRef})}}const jo=re.e.div.withConfig({displayName:\"TextLayer__Root\",componentId:\"sc-1u7ef0b-0\"})([\"overflow:hidden;position:absolute;top:0;left:0;& > div:first-child{top:0;left:0;position:absolute;}\"]),Eo=re.e.div.withConfig({displayName:\"TextLayer__TextZone\",componentId:\"sc-1u7ef0b-1\"})([\"line-height:initial;color:rgba(0,0,0,0);text-align-last:justify;text-align:justify;position:absolute;box-sizing:border-box;font-family:'Times New Roman',Garamond,Times,serif;span{white-space:pre;}\"]);var Co=({textZones:e,imageHeight:t,imageWidth:n,userScale:r,imageDpi:i})=>{const a=Object(o.useRef)(null);if(Object(o.useEffect)((()=>{if(a.current)for(const e of a.current.children){const t=e.firstChild;if(t.offsetWidth<e.offsetWidth){const n=(e.offsetWidth-t.offsetWidth)/t.innerText.length;t.style.letterSpacing=n+\"px\"}}}),[e,a.current]),!e)return null;const l=ue.DEFAULT_DPI/i*r,s=Math.floor(n*l),u=Math.floor(t*l);return Object(it.jsx)(jo,{style:{width:s+\"px\",height:u+\"px\"},children:Object(it.jsx)(\"div\",{style:{left:-(n-s)/2+\"px\",top:-(t-u)/2+\"px\",width:n+\"px\",height:t+\"px\",transform:`scale(${l})`},ref:a,children:e.map(((e,t)=>Object(it.jsx)(Eo,{style:{left:e.x+\"px\",bottom:e.y+\"px\",width:e.width+\"px\",height:e.height+\"px\",fontSize:.9*e.height+\"px\"},children:Object(it.jsx)(\"span\",{children:e.text})},t)))})})};const ko=re.e.div.withConfig({displayName:\"ComplexImage__Root\",componentId:\"sc-1q4fb7y-0\"})([\"position:relative;border:1px solid darkgray;overflow:hidden;margin:0 auto;& > div:first-child{position:absolute;left:50%;top:50%;transform:translateX(-50%) translateY(-50%);img{display:block;}& > canvas{display:block;}\",\";}\"],(e=>e.$rotation?`transform: translateX(-50%) translateY(-50%) rotate(${e.$rotation}deg)`:\"\"));class To extends i.a.PureComponent{constructor(...e){super(...e),this.resizeImageIfRequired=xo((e=>{const{width:t,height:n}=e;if(Math.max(t,n)<=1e4)return e;const r=document.createElement(\"canvas\"),o=r.getContext(\"2d\",{alpha:!1}),i=Math.floor(t/2),a=Math.floor(n/2),l=Math.floor(i/2),s=Math.floor((t-i)/2),u=Math.floor(a/2),c=Math.floor((n-a)/2);r.width=l+s,r.height=u+c;const d=(t,n,r,i,a,l,s,u)=>o.drawImage(((e,t,n,r,o)=>{const i=document.createElement(\"canvas\");return i.width=r,i.height=o,i.getContext(\"2d\",{alpha:!1}).putImageData(e,-t,-n,t,n,r,o),i})(e,t,n,r,i),0,0,r,i,a,l,s,u);return d(0,0,i,a,0,0,l,u),d(i,0,t-i,a,l,0,s,u),d(0,a,i,n-a,0,u,l,c),d(i,a,t-i,n-a,l,u,s,c),o.getImageData(0,0,r.width,r.height)}))}render(){const e=this.props.imageData&&this.resizeImageIfRequired(this.props.imageData),t=this.props.imageWidth||e.width,n=this.props.imageHeight||e.height,r=ue.DEFAULT_DPI/this.props.imageDpi*this.props.userScale;let o,i,a=o=Math.floor(t*r),l=i=Math.floor(n*r);return 90!==this.props.rotation&&270!==this.props.rotation||([o,i]=[i,o]),Object(it.jsx)(ko,{style:{width:o+\"px\",height:i+\"px\"},$rotation:this.props.rotation,ref:this.props.outerRef,children:Object(it.jsxs)(\"div\",{children:[e?Object(it.jsx)(_o,{imageData:e,imageDpi:this.props.imageDpi,userScale:this.props.userScale},this.props.currentPageNumber):this.props.imageUrl?Object(it.jsx)(\"img\",{src:this.props.imageUrl,style:{width:a+\"px\",height:l+\"px\"},alt:\"djvu_page\"}):Object(it.jsx)(Fr,{style:{fontSize:Math.min(.1*a,.1*l)+\"px\",whiteSpace:\"nowrap\"}}),this.props.textZones?Object(it.jsx)(Co,{textZones:this.props.textZones,imageHeight:n,imageWidth:t,imageDpi:this.props.imageDpi,userScale:this.props.userScale}):null]})})}}var Po=To;const No=re.e.div.withConfig({displayName:\"VirtualList__Root\",componentId:\"sc-vinffl-0\"})([\"overflow:auto;padding-bottom:30px;width:100%;height:100%;box-sizing:border-box;transform:translateZ(0);& > div{min-width:100%;position:relative;}\"]);class Io extends i.a.PureComponent{constructor(...e){super(...e),this.state={startIndex:0,stopIndex:-1},this._prepareSpacialDataAndStyles=xo((e=>{const t=new Array(e.length),n=new Array(e.length),r=e.reduce(((e,r,o)=>(t[o]=e,n[o]={position:\"absolute\",top:e+\"px\"},e+=r)),0);return{itemTops:t,itemStyles:n,contentHeight:r}})),this.updateRenderedItems=(e=this.viewportHeight)=>{const t=this.topNode.scrollTop,n=this.findItemIndexByScrollTop(t-this.props.renderingRadius*e);let r=n;const o=t+(this.props.renderingRadius+1)*e,i=this.itemTops.length-1;for(;r<i&&!(this.itemTops[r]>=o);r++);this.setState({startIndex:n,stopIndex:r})},this.onScroll=Gr((()=>this.updateRenderedItems()),300,600),this.ref=e=>{this.topNode=e,this.props.outerRef&&this.props.outerRef(e)},this.getHeightStyle=xo((e=>({height:e+\"px\"})))}get viewportHeight(){return this.topNode.getBoundingClientRect().height}componentDidMount(){this.topNode.addEventListener(\"scroll\",this.onScroll,{passive:!0}),this.updateRenderedItems()}componentWillUnmount(){this.topNode.removeEventListener(\"scroll\",this.onScroll,{passive:!0})}get itemTops(){return this._prepareSpacialDataAndStyles(this.props.itemSizes).itemTops}get contentHeight(){return this._prepareSpacialDataAndStyles(this.props.itemSizes).contentHeight}get itemStyles(){return this._prepareSpacialDataAndStyles(this.props.itemSizes).itemStyles}findItemIndexByScrollTop(e){if(e<=0)return 0;let t=0,n=this.itemTops.length-1,r=0;for(;;){if(++r>100)return console.warn(\"Error in binary search\"),t;if(n===t)return n;const o=(n-t>>1)+t;if(this.itemTops[o]<=e&&this.itemTops[o+1]>e)return o;this.itemTops[o]<e?t=o+1:n=o-1}}renderItems(){const{startIndex:e,stopIndex:t}=this.state,n=new Array(t-e+1),r=this.props.itemRenderer;for(let o=e;o<=t;o++)n[o-e]=Object(it.jsx)(r,{index:o,style:this.itemStyles[o]},o);return n}isItemVisible(e){const t=this.topNode.scrollTop,n=this.itemTops[e]+this.props.itemSizes[e],r=this.viewportHeight;return n-t>=.25*this.props.itemSizes[e]&&t>=this.itemTops[e]||t>=this.itemTops[e]&&n-t>=.5*r||t<this.itemTops[e]&&this.itemTops[e]-t<.5*r}getCurrentVisibleItemIndex(){const e=this.findItemIndexByScrollTop(this.topNode.scrollTop);return!this.isItemVisible(e)&&e+1<this.itemTops.length?e+1:e}scrollToItem(e){this.topNode.scrollTop=this.itemTops[e]}render(){const e=this.props.itemSizes;return Object(it.jsx)(No,{ref:this.ref,className:this.props.className,children:e&&e.length?Object(it.jsx)(\"div\",{style:this.getHeightStyle(this.contentHeight),children:this.renderItems()}):null})}}Io.defaultProps={renderingRadius:3,className:\"\"};const Ro=Object(re.d)([\"&.djvujs_grabbing{cursor:grabbing;}\"]),Ao=Object(re.d)([\"flex:1 1 auto;display:flex;flex-direction:column;width:100%;height:100%;overflow:auto;box-sizing:border-box;touch-action:pan-x pan-y;padding-bottom:30px;\",\";\",\";\"],(e=>e.$grab?\"cursor: grab\":\"\"),Ro),Do=re.e.div.withConfig({displayName:\"ImageBlock__ContinuousScrollItem\",componentId:\"sc-18y4vgt-0\"})([\"box-sizing:border-box;min-width:100%;padding:2px 0;transform:translate3d(0,0,0);\"]);function Lo(e,t,n,r){e.removeEventListener(t,n,r),e.addEventListener(t,n,r)}class Mo extends i.a.Component{constructor(...e){super(...e),this.initialGrabbingState=null,this.pointerEventCache={},this.lastPointerDiff=-1,this.enableScaleHandler=e=>{!this.isScaleHandlerEnabled&&\"Control\"===e.key&&this.wrapper&&(this.wrapper.addEventListener(\"wheel\",this.wheelScaleHandler),this.isScaleHandlerEnabled=!0)},this.disableScaleHandler=e=>{this.isScaleHandlerEnabled&&\"Control\"===e.key&&(this.wrapper.removeEventListener(\"wheel\",this.wheelScaleHandler),this.isScaleHandlerEnabled=!1)},this.wheelScaleHandler=e=>{if(!e.ctrlKey)return;e.preventDefault();const t=.05*-Math.sign(e.deltaY),n=this.props.userScale+t;this.props.dispatch(tt.setUserScaleAction(n))},this.singlePageWheelHandler=e=>{if(!e.ctrlKey&&this.props.changePageOnScroll){if(this.scrollTimeStamp){if(e.timeStamp-this.scrollTimeStamp<100)return e.preventDefault(),void(this.scrollTimeStamp=e.timeStamp);this.scrollTimeStamp=null}!e.ctrlKey&&e.cancelable&&(this.wrapper.scrollHeight===this.wrapper.scrollTop+this.wrapper.clientHeight&&e.deltaY>0?(e.preventDefault(),this.scrollTimeStamp=e.timeStamp,this.props.dispatch(tt.goToNextPageAction())):0===this.wrapper.scrollTop&&e.deltaY<0&&(e.preventDefault(),this.scrollTimeStamp=e.timeStamp,this.scrollToBottomOnUpdate=!0,this.props.dispatch(tt.goToPreviousPageAction())))}},this.handleMoving=e=>{if(e.preventDefault(),!this.initialGrabbingState)return;const{clientX:t,clientY:n,scrollLeft:r,scrollTop:o}=this.initialGrabbingState,i=t-e.clientX,a=n-e.clientY;this.wrapper.scrollLeft=r+i,this.wrapper.scrollTop=o+a},this.startMoving=e=>{this.isGrabMode()&&(e.preventDefault(),this.initialGrabbingState={clientX:e.clientX,clientY:e.clientY,scrollLeft:this.wrapper.scrollLeft,scrollTop:this.wrapper.scrollTop},this.wrapper.classList.add(\"djvujs_grabbing\"))},this.finishMoving=e=>{this.isGrabMode()&&(e.preventDefault(),this.initialGrabbingState=null,this.wrapper.classList.remove(\"djvujs_grabbing\"))},this.onPointerDown=e=>{\"mouse\"===e.pointerType?this.isGrabMode()&&(this.wrapper.addEventListener(\"pointermove\",this.onPointerMove),this.startMoving(e)):(this.wrapper.addEventListener(\"pointermove\",this.onPointerMove),this.pointerEventCache[e.pointerId]=e)},this.onPointerMove=e=>{if(\"mouse\"===e.pointerType)return this.handleMoving(e);this.pointerEventCache[e.pointerId]=e;const t=Object.values(this.pointerEventCache);if(2===t.length){e.preventDefault(),e.stopPropagation();const n=Math.hypot(t[0].clientX-t[1].clientX,t[0].clientY-t[1].clientY);if(this.lastPointerDiff>0){const e=Math.hypot(this.wrapper.offsetWidth,this.wrapper.offsetHeight);this.props.dispatch(tt.setUserScaleAction(this.props.userScale+(n-this.lastPointerDiff)/e))}this.lastPointerDiff=n}},this.onPointerUp=e=>{\"mouse\"===e.pointerType&&this.finishMoving(e),delete this.pointerEventCache[e.pointerId];const t=Object.values(this.pointerEventCache);t.length<2&&(this.lastPointerDiff=-1),0===t.length&&this.wrapper.removeEventListener(\"pointermove\",this.onPointerMove)},this.wrapperRef=e=>{this.wrapper=e,e&&(Lo(e,\"pointerdown\",this.onPointerDown),Lo(e,\"pointerup\",this.onPointerUp),Lo(e,\"pointerleave\",this.onPointerUp),Lo(e,\"pointercancel\",this.onPointerUp),this.props.viewMode===ue.CONTINUOUS_SCROLL_MODE?Lo(e,\"scroll\",this.onScroll,{passive:!0}):Lo(e,\"wheel\",this.singlePageWheelHandler))},this.complexImageRef=e=>this.complexImage=e,this.onScroll=Gr((()=>{this.setNewPageNumber(this.virtualList.getCurrentVisibleItemIndex()+1)})),this.getItemSizes=xo(((e,t,n)=>{const r=90===n||270===n;return e.map((e=>{const n=ue.DEFAULT_DPI/e.dpi*t;return Math.floor((r?e.width:e.height)*n)+6}))})),this.virtualListRef=e=>this.virtualList=e,this.itemRenderer=i.a.memo((({index:e,style:t})=>{const n=ne((t=>Ie.pageList(t)[e]));return Object(it.jsx)(Do,{style:t,children:Object(it.jsx)(Po,{imageUrl:n.url,imageDpi:n.dpi,imageWidth:n.width,imageHeight:n.height,userScale:this.props.userScale,rotation:this.props.rotation,textZones:n.textZones})},e)}))}getSnapshotBeforeUpdate(){if(!this.wrapper)return null;let e=null;this.wrapper.scrollWidth>this.wrapper.clientWidth&&(e=(this.wrapper.scrollLeft+this.wrapper.clientWidth/2)/this.wrapper.scrollWidth);let t=null;return this.wrapper.scrollHeight>this.wrapper.clientHeight&&this.wrapper.scrollTop&&(t=(this.wrapper.scrollTop+this.wrapper.clientHeight/2)/this.wrapper.scrollHeight),{horizontalRatio:e,verticalRatio:t}}scrollCurrentPageIntoViewIfRequired(e){this.props.viewMode!==ue.CONTINUOUS_SCROLL_MODE||!this.props.shouldScrollToPage||e.currentPageNumber===this.props.currentPageNumber&&e.viewMode===ue.CONTINUOUS_SCROLL_MODE||!this.virtualList||this.virtualList.isItemVisible(this.props.currentPageNumber-1)||this.virtualList.scrollToItem(this.props.currentPageNumber-1)}componentDidUpdate(e,t,n){if(this.wrapper){var r=this.wrapper.scrollWidth-this.wrapper.clientWidth;if(r>0&&(this.wrapper.scrollLeft=n.horizontalRatio?n.horizontalRatio*this.wrapper.scrollWidth-this.wrapper.clientWidth/2:r/2),e.imageData!==this.props.imageData)this.scrollToBottomOnUpdate?(this.wrapper.scrollTop=this.wrapper.scrollHeight,this.scrollToBottomOnUpdate=!1):this.wrapper.scrollTop=0;else{var o=this.wrapper.scrollHeight-this.wrapper.clientHeight;o>0&&this.wrapper.scrollTop&&(this.wrapper.scrollTop=n.verticalRatio?n.verticalRatio*this.wrapper.scrollHeight-this.wrapper.clientHeight/2:o/2)}this.scrollCurrentPageIntoViewIfRequired(e),this.complexImage&&(this.complexImage.style.opacity=1)}}componentDidMount(){window.addEventListener(\"keydown\",this.enableScaleHandler),window.addEventListener(\"keyup\",this.disableScaleHandler),this.componentDidUpdate({},{},{})}componentWillUnmount(){window.removeEventListener(\"keydown\",this.enableScaleHandler),window.removeEventListener(\"keyup\",this.disableScaleHandler)}isGrabMode(){return this.props.cursorMode===ue.GRAB_CURSOR_MODE}setNewPageNumber(e){e&&e!==this.props.currentPageNumber&&this.props.dispatch(tt.setNewPageNumberAction(e))}render(){const e=this.props.cursorMode===ue.GRAB_CURSOR_MODE,{documentId:t,pageSizeList:n,userScale:r,rotation:o,viewMode:i,imageData:a}=this.props;return i===ue.CONTINUOUS_SCROLL_MODE&&n.length?Object(it.jsx)(Uo,{ref:this.virtualListRef,outerRef:this.wrapperRef,itemSizes:this.getItemSizes(n,r,o),itemRenderer:this.itemRenderer,$_css:e?\"cursor: grab;\":\"\"},t):a?Object(it.jsx)(Fo,{$grab:e,ref:this.wrapperRef,children:Object(it.jsx)(Bo,{ref:this.complexImageRef,style:{opacity:0},children:Object(it.jsx)(Po,{...this.props})})}):null}}var zo=q((e=>({documentId:Ie.documentId(e),currentPageNumber:Ie.currentPageNumber(e),shouldScrollToPage:Ie.shouldScrollToPage(e),viewMode:Ie.viewMode(e),pageSizeList:Ie.pageSizeList(e),imageData:Ie.imageData(e),imageDpi:Ie.imageDpi(e),userScale:Ie.userScale(e),textZones:Ie.textZones(e),cursorMode:Ie.cursorMode(e),rotation:Ie.pageRotation(e),changePageOnScroll:Ie.uiOptions(e).changePageOnScroll})))(Mo),Uo=Object(re.e)(Io).withConfig({displayName:\"ImageBlock___StyledVirtualList\",componentId:\"sc-18y4vgt-1\"})([\"\",\";\",\"\"],Ro,(e=>e.$_css)),Fo=Object(re.e)(\"div\").withConfig({displayName:\"ImageBlock___StyledDiv\",componentId:\"sc-18y4vgt-2\"})([\"\",\"\"],Ao),Bo=Object(re.e)(\"div\").withConfig({displayName:\"ImageBlock___StyledDiv2\",componentId:\"sc-18y4vgt-3\"})([\"padding:1em;margin:auto\"]);const Vo=re.e.div.withConfig({displayName:\"TextBlock__Root\",componentId:\"sc-lei8fk-0\"})([\"overflow:auto;max-height:100%;padding:0.5em;box-sizing:border-box;pre{width:fit-content;margin:auto;background:inherit;border:1px solid var(--border-color);padding:0.5em;white-space:pre-wrap;}\"]);var Wo=({text:e})=>{const t=ft();return Object(it.jsx)(Vo,{children:Object(it.jsx)(\"pre\",{children:null===e?Object(it.jsx)(Fr,{}):e||Object(it.jsx)(\"em\",{children:t(\"No text on this page\")})})})};const Ho=re.e.div.withConfig({displayName:\"ErrorPage__Root\",componentId:\"sc-1i1on4g-0\"})([\"background:pink;color:black;padding:1em;font-family:monospace;border:1px solid gray;overflow:auto;height:100%;box-sizing:border-box;\"]),$o=re.e.div.withConfig({displayName:\"ErrorPage__Header\",componentId:\"sc-1i1on4g-1\"})([\"font-weight:600;font-size:1.5em;margin-bottom:0.5em;\"]);var Go=({pageNumber:e,error:t})=>{const n=ft(),{header:r,message:o}=qr(n,t);return Object(it.jsxs)(Ho,{children:[Object(it.jsx)($o,{children:`${n(\"Error on page\")} \\u2116${e}`}),Object(it.jsxs)(\"div\",{children:[Object(it.jsx)(qo,{children:r}),Object(it.jsx)(Yo,{children:o})]})]})},qo=Object(re.e)(\"div\").withConfig({displayName:\"ErrorPage___StyledDiv\",componentId:\"sc-1i1on4g-2\"})([\"font-size:1.2em;margin-bottom:0.5em;\"]),Yo=Object(re.e)(\"div\").withConfig({displayName:\"ErrorPage___StyledDiv2\",componentId:\"sc-1i1on4g-3\"})([\"white-space:pre;font-size:1.2em;\"]);const Ko=re.e.div.withConfig({displayName:\"Main__Root\",componentId:\"sc-6ieunp-0\"})([\"position:relative;flex:1 1 auto;width:100%;height:100%;display:flex;box-sizing:border-box;overflow:hidden;\"]),Qo=re.e.div.withConfig({displayName:\"Main__PageZone\",componentId:\"sc-6ieunp-1\"})([\"flex:1 1 auto;overflow:hidden;position:relative;padding:0.5em;\"]);var Xo=()=>{const e=ne(Ie.viewMode),t=ne(Ie.currentPageNumber),n=ne(Ie.isLoading),r=ne(Ie.pageText),o=ne(Ie.imageData),i=ne(Ie.imagePageError),a=ne(Ie.textPageError);return Object(it.jsxs)(Ko,{children:[Object(it.jsx)(vo,{}),Object(it.jsxs)(Qo,{children:[i&&e===ue.SINGLE_PAGE_MODE?Object(it.jsx)(Go,{pageNumber:t,error:i}):e===ue.TEXT_MODE?a?Object(it.jsx)(Go,{pageNumber:t,error:a}):Object(it.jsx)(Wo,{text:r}):e===ue.CONTINUOUS_SCROLL_MODE||o?Object(it.jsx)(zo,{}):void 0,n&&e===ue.SINGLE_PAGE_MODE?Object(it.jsx)(wo,{}):null]})]})};const Zo=re.e.div.withConfig({displayName:\"SaveDialog__Root\",componentId:\"sc-lclbue-0\"})([\"padding:1em;\"]),Jo=Object(re.e)(Tt).withConfig({displayName:\"SaveDialog__OptionButton\",componentId:\"sc-lclbue-1\"})([\"width:10em;\"]),ei=re.e.div.withConfig({displayName:\"SaveDialog__OptionsWrapper\",componentId:\"sc-lclbue-2\"})([\"display:flex;justify-content:space-around;margin-top:2em;\"]),ti=re.e.div.withConfig({displayName:\"SaveDialog__ProcessingBlock\",componentId:\"sc-lclbue-3\"})([\"margin-top:2em;display:flex;flex-direction:column;align-items:center;\"]),ni=e=>{const t=ir(e);return/(?:[^a-z]|\\b)index(?:[^a-z]|\\b)/.test(t)?\"bundled_\"+t:t};var ri=()=>{const e=ft(),t=Z(),n=ne(Ie.isSaveDialogShown),r=ne(Ie.resultBuffer),o=ne(Ie.fileProcessingProgress),a=ne(Ie.isBundling),l=ne(Ie.fileName),[s,u]=i.a.useState(null),c=()=>{t({type:ce.CLOSE_SAVE_DIALOG})};if(i.a.useEffect((()=>{if(r){const e=URL.createObjectURL(new Blob([r],{type:\"image/vnd.djvu\"}));return u(e),()=>URL.revokeObjectURL(e)}u(null)}),[r]),!n)return null;const d=Math.round(100*o);return Object(it.jsx)(oi,{onClose:c,isFixedSize:!1,children:Object(it.jsxs)(Zo,{children:[a?null:Object(it.jsxs)(it.Fragment,{children:[Object(it.jsxs)(ii,{$_css:\"margin-bottom: 2em;\",children:[e(\"You are trying to save an indirect (multi-file) document.\")+\" \",e(\"What exactly do you want to do?\")]}),Object(it.jsxs)(ei,{children:[Object(it.jsx)(Jo,{onClick:()=>{c(),t({type:ce.SAVE_DOCUMENT})},children:e(\"Save only index file\")}),Object(it.jsx)(Jo,{onClick:()=>t({type:ce.START_TO_BUNDLE}),children:e(\"Download, bundle and save the whole document as one file\")})]})]}),a?Object(it.jsx)(ti,{children:s?Object(it.jsxs)(it.Fragment,{children:[Object(it.jsx)(li,{children:e(\"The document has been downloaded and bundled into one file successfully\")}),Object(it.jsx)(si,{as:\"a\",href:s,download:ni(l),children:e(\"Save\")})]}):Object(it.jsxs)(it.Fragment,{children:[Object(it.jsxs)(ai,{children:[e(\"Downloading and bundling the document\"),\"... \",d,\"%\"]}),Object(it.jsx)(zr,{percentage:Math.round(100*o)})]})}):null]})})},oi=Object(re.e)(mn).withConfig({displayName:\"SaveDialog___StyledModalWindow\",componentId:\"sc-lclbue-4\"})([\"width:25em\"]),ii=Object(re.e)(\"div\").withConfig({displayName:\"SaveDialog___StyledDiv\",componentId:\"sc-lclbue-5\"})([\"\",\"\"],(e=>e.$_css)),ai=Object(re.e)(\"div\").withConfig({displayName:\"SaveDialog___StyledDiv2\",componentId:\"sc-lclbue-6\"})([\"text-align:center;margin-bottom:1em;\"]),li=Object(re.e)(\"div\").withConfig({displayName:\"SaveDialog___StyledDiv3\",componentId:\"sc-lclbue-7\"})([\"text-align:center;margin-bottom:1em;\"]),si=Object(re.e)(Tt).withConfig({displayName:\"SaveDialog___StyledTextButton\",componentId:\"sc-lclbue-8\"})([\"text-decoration:none;margin:0.5em\"]);const ui=re.e.div.withConfig({displayName:\"OptionsWindow__Root\",componentId:\"sc-z43t3u-0\"})([\"box-sizing:border-box;padding:0 0.5em;\"]),ci=re.e.div.withConfig({displayName:\"OptionsWindow__MainHeader\",componentId:\"sc-z43t3u-1\"})([\"font-size:1.5em;font-weight:bold;margin-bottom:0.5em;text-align:center;\"]),di=re.e.label.withConfig({displayName:\"OptionsWindow__ExtensionOption\",componentId:\"sc-z43t3u-2\"})([\"display:flex;align-items:center;cursor:pointer;input[type=checkbox]{transform:scale(1.5);flex:0 0 auto;cursor:pointer;display:inline-block;margin-right:1em;outline:none;}\"]),fi=re.e.label.withConfig({displayName:\"OptionsWindow__Option\",componentId:\"sc-z43t3u-3\"})([\"display:block;margin-bottom:1em;\"]);var pi=()=>{const e=ne(Ie.options),t=Z(),n=ft();return ne(Ie.isOptionsWindowOpened)?Object(it.jsx)(hi,{onClose:()=>t({type:ce.TOGGLE_OPTIONS_WINDOW,payload:!1}),\"data-djvujs-id\":\"options_window\",children:Object(it.jsxs)(ui,{children:[Object(it.jsx)(ci,{children:n(\"Options\")}),Object(it.jsx)(fi,{as:\"div\",children:Object(it.jsx)(Cr,{})}),Object(it.jsxs)(fi,{children:[Object(it.jsxs)(\"span\",{style:{marginRight:\"0.5em\"},children:[n(\"Color theme\"),\":\"]}),Object(it.jsx)(Or,{})]}),rr?Object(it.jsxs)(\"div\",{children:[Object(it.jsxs)(mi,{children:[n(\"Extension options\"),\":\"]}),Object(it.jsxs)(di,{title:n(\"All links to .djvu files will be opened by the viewer via a simple click on a link\"),children:[Object(it.jsx)(\"input\",{type:\"checkbox\",checked:e.interceptHttpRequests,onChange:e=>t({type:ce.UPDATE_OPTIONS,payload:{interceptHttpRequests:e.target.checked,analyzeHeaders:!1}})}),n(\"Open all links with .djvu at the end via the viewer\")]}),Object(it.jsxs)(di,{title:n(\"Analyze headers of every new tab in order to process even links which do not end with the .djvu extension\"),style:{marginLeft:\"1em\"},children:[Object(it.jsx)(\"input\",{type:\"checkbox\",checked:e.analyzeHeaders,onChange:e=>t({type:ce.UPDATE_OPTIONS,payload:{analyzeHeaders:e.target.checked,interceptHttpRequests:!0}})}),n(\"Detect .djvu files by means of http headers\")]})]}):null]})}):null},hi=Object(re.e)(mn).withConfig({displayName:\"OptionsWindow___StyledModalWindow\",componentId:\"sc-z43t3u-4\"})([\"min-width:15em;\"]),mi=Object(re.e)(\"div\").withConfig({displayName:\"OptionsWindow___StyledDiv\",componentId:\"sc-z43t3u-5\"})([\"margin-bottom:1em;\"]);const gi=re.e.div.withConfig({displayName:\"PrintDialog__Root\",componentId:\"sc-1i416kt-0\"})([\"padding:0.5em;\"]),vi=re.e.select.withConfig({displayName:\"PrintDialog__Select\",componentId:\"sc-1i416kt-1\"})([\"min-width:4em;\",\";\"],ot);function bi(e){const t=new Array(e);for(let n=1;n<=e;n++)t[n-1]=Object(it.jsx)(\"option\",{value:n,children:n},n);return t}var yi=()=>{const e=ne(Ie.isPreparingForPrinting),t=ne(Ie.printProgress),n=ne(Ie.pagesForPrinting),r=Z(),o=ft(),a=ne(Ie.pagesQuantity),[l,s]=i.a.useState(1);let[u,c]=i.a.useState(null);u=u||a;return Object(it.jsx)(mn,{onClose:()=>r({type:ce.CLOSE_PRINT_DIALOG}),children:Object(it.jsx)(gi,{children:e?Object(it.jsxs)(it.Fragment,{children:[Object(it.jsxs)(wi,{children:[o(\"Preparing pages for printing\"),\"...\",Object(it.jsxs)(Si,{children:[t,\"%\"]})]}),Object(it.jsx)(zr,{percentage:t}),n?Object(it.jsx)(Oi,{src:\"about:blank\",ref:e=>e&&(e=>{const t=e.contentWindow;t.onafterprint=()=>{setTimeout((()=>{r({type:ce.CLOSE_PRINT_DIALOG})}),or?100:0)};const o=document.createElement(\"style\");o.innerHTML=`\\n            html, body {\\n                margin: 0;\\n                padding: 0;\\n                height: 100%;\\n                width: 100%;\\n            }\\n\\n            img {\\n                display: block;\\n                margin: 0 auto;\\n                /*\\n                Firefox ignores \"break-inside: avoid\" (while Chrome seems to apply it by default)\\n                so we have to use break-after.\\n                */\\n                break-after: ${or?\"page\":\"auto\"};\\n                break-inside: avoid;\\n                /* \\n                When the print scale is bigger than 100%, there can be a situation when height can be increased, but \\n                width is limited with max-width, so the proportions are distorted. To prevent this we use object-fit.                \\n                */\\n                object-fit: contain;\\n                box-sizing: border-box;\\n                /* \\n                It seems like 100vw and 100vh can be used as width and height of the paper sheet in Chrome and Firefox.\\n                But in Safari they seem to correspond to the size of the iframe, which is 0, so empty pages are printed.\\n                So we use 100% width and height here (and for html and body too) to fit big images to the paper size. \\n                */\\n                max-width: 100%;\\n                max-height: 100%;\\n            }\\n        `,t.document.head.appendChild(o);const i=[];for(const r of n){const e=t.document.createElement(\"img\");i.push(new Promise((t=>e.onload=t))),e.src=r.url,e.width=r.width,e.height=r.height,e.style.width=r.width/r.dpi+\"in\",e.style.height=r.height/r.dpi+\"in\",t.document.body.appendChild(e)}or?t.print():Promise.all(i).then((()=>t.print()))})(e)}):null]}):Object(it.jsxs)(it.Fragment,{children:[Object(it.jsx)(\"div\",{children:o(\"Pages must be rendered before printing.\")+\" \"+o(\"It may take a while.\")}),Object(it.jsx)(\"div\",{children:o(\"Select the pages you want to print.\")}),Object(it.jsxs)(xi,{children:[Object(it.jsx)(_i,{children:o(\"From\")}),Object(it.jsx)(vi,{value:l,onChange:e=>s(e.target.value),children:bi([a])}),Object(it.jsx)(ji,{children:o(\"to\")}),Object(it.jsx)(vi,{value:u,onChange:e=>c(e.target.value),children:bi([a])})]}),Object(it.jsx)(Ei,{onClick:()=>r({type:ce.PREPARE_PAGES_FOR_PRINTING,payload:{from:l,to:u}}),children:o(\"Prepare pages for printing\")})]})})})},wi=Object(re.e)(\"div\").withConfig({displayName:\"PrintDialog___StyledDiv\",componentId:\"sc-1i416kt-2\"})([\"text-align:center;margin-bottom:1em;\"]),Si=Object(re.e)(\"span\").withConfig({displayName:\"PrintDialog___StyledSpan\",componentId:\"sc-1i416kt-3\"})([\"min-width:3em;display:inline-block\"]),Oi=Object(re.e)(\"iframe\").withConfig({displayName:\"PrintDialog___StyledIframe\",componentId:\"sc-1i416kt-4\"})([\"width:0;height:0;position:absolute;left:0;top:0;opacity:0;\"]),xi=Object(re.e)(\"div\").withConfig({displayName:\"PrintDialog___StyledDiv2\",componentId:\"sc-1i416kt-5\"})([\"margin:1em 0;text-align:center\"]),_i=Object(re.e)(\"span\").withConfig({displayName:\"PrintDialog___StyledSpan2\",componentId:\"sc-1i416kt-6\"})([\"margin-right:1em;\"]),ji=Object(re.e)(\"span\").withConfig({displayName:\"PrintDialog___StyledSpan3\",componentId:\"sc-1i416kt-7\"})([\"margin:0 1em\"]),Ei=Object(re.e)(Tt).withConfig({displayName:\"PrintDialog___StyledTextButton\",componentId:\"sc-1i416kt-8\"})([\"font-size:0.8em;margin:0 auto;display:block\"]);const Ci=Object(re.c)([\"html.disable_scroll_djvujs,body.disable_scroll_djvujs{width:100% !important;height:100% !important;overflow:hidden !important;}\"]),ki=Object(re.d)([\"--background-color:#fcfcfc;--alternative-background-color:#eee;--modal-window-background-color:var(--background-color);--color:#000;--border-color:#555;--highlight-color:#084475;--scrollbar-track-color:var(--alternative-background-color);--scrollbar-thumb-color:#cccccc;\"]),Ti=Object(re.d)([\"--background-color:#1e1e1e;--alternative-background-color:#333333;--modal-window-background-color:var(--background-color);--color:#CCCCCC;--border-color:#999999;--highlight-color:#d89416;--scrollbar-track-color:var(--alternative-background-color);--scrollbar-thumb-color:#858585;\"]),Pi=Object(re.d)([\"font-family:Arial,Helvetica,sans-serif;font-size:\",\"px;overflow:hidden;position:relative;box-sizing:border-box;height:100%;display:flex;flex-direction:column;align-items:center;line-height:initial;writing-mode:horizontal-tb;--app-padding:5px;padding:var(--app-padding);background:var(--background-color);color:var(--color);a{color:var(--highlight-color);}*::-webkit-scrollbar{background-color:var(--scrollbar-track-color);}*::-webkit-scrollbar-thumb{background-color:var(--scrollbar-thumb-color);}*::-webkit-scrollbar-corner{background-color:var(--background-color);}\"],(e=>e.theme.isMobile?10:14)),Ni=Object(re.d)([\"top:0;left:0;position:fixed;width:100%;height:100%;z-index:100;\"]),Ii=i.a.forwardRef((({shadowRoot:e},t)=>{const n=ne(Ie.isDocumentLoaded),r=ne(Ie.isFileLoading),o=ne(Ie.isFullPageView),a=ne(Ie.options).theme,l=ne(Ie.isPrintDialogOpened);return Object(it.jsxs)(dt,{children:[Object(it.jsx)(Ci,{}),Object(it.jsxs)(Ai,{\"data-djvujs-id\":\"root\",ref:t,$_css:\"dark\"===a?Ti:ki,$_css2:o?Ni:\"\",children:[r?Object(it.jsx)(Vr,{}):n?Object(it.jsxs)(i.a.Fragment,{children:[Object(it.jsx)(Xo,{}),Object(it.jsx)(Qn,{})]}):Object(it.jsx)(Ir,{}),Object(it.jsx)(Qr,{}),Object(it.jsx)(eo,{}),Object(it.jsx)(ri,{}),Object(it.jsx)(pi,{}),l?Object(it.jsx)(yi,{}):null,Object(it.jsx)(\"div\",{id:\"djvujs-modal-windows-container\"})]})]})}));var Ri=({shadowRoot:e})=>Object(it.jsx)(jn,{AppRoot:Ii,shadowRoot:e}),Ai=Object(re.e)(\"div\").withConfig({displayName:\"App___StyledDiv\",componentId:\"sc-1puqmy-0\"})([\"\",\";\",\";\",\";\"],(e=>e.$_css),Pi,(e=>e.$_css2));function Di(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function Li(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function Mi(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?Li(Object(n),!0).forEach((function(t){Di(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):Li(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function zi(e){return\"Minified Redux error #\"+e+\"; visit https://redux.js.org/Errors?code=\"+e+\" for the full message or use the non-minified dev environment for full errors. \"}var Ui=\"function\"===typeof Symbol&&Symbol.observable||\"@@observable\",Fi=function(){return Math.random().toString(36).substring(7).split(\"\").join(\".\")},Bi={INIT:\"@@redux/INIT\"+Fi(),REPLACE:\"@@redux/REPLACE\"+Fi(),PROBE_UNKNOWN_ACTION:function(){return\"@@redux/PROBE_UNKNOWN_ACTION\"+Fi()}};function Vi(e){if(\"object\"!==typeof e||null===e)return!1;for(var t=e;null!==Object.getPrototypeOf(t);)t=Object.getPrototypeOf(t);return Object.getPrototypeOf(e)===t}function Wi(e,t,n){var r;if(\"function\"===typeof t&&\"function\"===typeof n||\"function\"===typeof n&&\"function\"===typeof arguments[3])throw new Error(zi(0));if(\"function\"===typeof t&&\"undefined\"===typeof n&&(n=t,t=void 0),\"undefined\"!==typeof n){if(\"function\"!==typeof n)throw new Error(zi(1));return n(Wi)(e,t)}if(\"function\"!==typeof e)throw new Error(zi(2));var o=e,i=t,a=[],l=a,s=!1;function u(){l===a&&(l=a.slice())}function c(){if(s)throw new Error(zi(3));return i}function d(e){if(\"function\"!==typeof e)throw new Error(zi(4));if(s)throw new Error(zi(5));var t=!0;return u(),l.push(e),function(){if(t){if(s)throw new Error(zi(6));t=!1,u();var n=l.indexOf(e);l.splice(n,1),a=null}}}function f(e){if(!Vi(e))throw new Error(zi(7));if(\"undefined\"===typeof e.type)throw new Error(zi(8));if(s)throw new Error(zi(9));try{s=!0,i=o(i,e)}finally{s=!1}for(var t=a=l,n=0;n<t.length;n++){(0,t[n])()}return e}function p(e){if(\"function\"!==typeof e)throw new Error(zi(10));o=e,f({type:Bi.REPLACE})}function h(){var e,t=d;return(e={subscribe:function(e){if(\"object\"!==typeof e||null===e)throw new Error(zi(11));function n(){e.next&&e.next(c())}return n(),{unsubscribe:t(n)}}})[Ui]=function(){return this},e}return f({type:Bi.INIT}),(r={dispatch:f,subscribe:d,getState:c,replaceReducer:p})[Ui]=h,r}function Hi(){for(var e=arguments.length,t=new Array(e),n=0;n<e;n++)t[n]=arguments[n];return 0===t.length?function(e){return e}:1===t.length?t[0]:t.reduce((function(e,t){return function(){return e(t.apply(void 0,arguments))}}))}function $i(e){return function(t){var n=t.dispatch,r=t.getState;return function(t){return function(o){return\"function\"===typeof o?o(n,r,e):t(o)}}}}var Gi=$i();Gi.withExtraArgument=$i;var qi=Gi,Yi=function(e){return\"@@redux-saga/\"+e},Ki=Yi(\"CANCEL_PROMISE\"),Qi=Yi(\"CHANNEL_END\"),Xi=Yi(\"IO\"),Zi=Yi(\"MATCH\"),Ji=Yi(\"MULTICAST\"),ea=Yi(\"SAGA_ACTION\"),ta=Yi(\"SELF_CANCELLATION\"),na=Yi(\"TASK\"),ra=Yi(\"TASK_CANCEL\"),oa=Yi(\"TERMINATE\"),ia=Yi(\"LOCATION\"),aa=function(e){return null===e||void 0===e},la=function(e){return null!==e&&void 0!==e},sa=function(e){return\"function\"===typeof e},ua=function(e){return\"string\"===typeof e},ca=Array.isArray,da=function(e){return e&&sa(e.then)},fa=function(e){return e&&sa(e.next)&&sa(e.throw)},pa=function e(t){return t&&(ua(t)||ga(t)||sa(t)||ca(t)&&t.every(e))},ha=function(e){return e&&sa(e.take)&&sa(e.close)},ma=function(e){return sa(e)&&e.hasOwnProperty(\"toString\")},ga=function(e){return Boolean(e)&&\"function\"===typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype};var va=function(e){return function(){return e}}(!0),ba=function(){};var ya=function(e){return e};\"function\"===typeof Symbol&&Symbol.asyncIterator&&Symbol.asyncIterator;var wa=function(e,t){m(e,t),Object.getOwnPropertySymbols&&Object.getOwnPropertySymbols(t).forEach((function(n){e[n]=t[n]}))};function Sa(e,t){var n=e.indexOf(t);n>=0&&e.splice(n,1)}function Oa(e){var t=!1;return function(){t||(t=!0,e())}}var xa=function(e){throw e},_a=function(e){return{value:e,done:!0}};function ja(e,t,n){void 0===t&&(t=xa),void 0===n&&(n=\"iterator\");var r={meta:{name:n},next:e,throw:t,return:_a,isSagaIterator:!0};return\"undefined\"!==typeof Symbol&&(r[Symbol.iterator]=function(){return r}),r}function Ea(e,t){var n=t.sagaStack;console.error(e),console.error(n)}var Ca=function(e){return Array.apply(null,new Array(e))},ka=function(e){return function(t){return e(Object.defineProperty(t,ea,{value:!0}))}},Ta=function(e){return e===oa},Pa=function(e){return e===ra},Na=function(e){return Ta(e)||Pa(e)};function Ia(e,t){var n=Object.keys(e),r=n.length;var o,i=0,a=ca(e)?Ca(r):{},l={};return n.forEach((function(e){var n=function(n,l){o||(l||Na(n)?(t.cancel(),t(n,l)):(a[e]=n,++i===r&&(o=!0,t(a))))};n.cancel=ba,l[e]=n})),t.cancel=function(){o||(o=!0,n.forEach((function(e){return l[e].cancel()})))},l}function Ra(e){return{name:e.name||\"anonymous\",location:Aa(e)}}function Aa(e){return e[ia]}function Da(e,t){void 0===e&&(e=10);var n=new Array(e),r=0,o=0,i=0,a=function(t){n[o]=t,o=(o+1)%e,r++},l=function(){if(0!=r){var t=n[i];return n[i]=null,r--,i=(i+1)%e,t}},s=function(){for(var e=[];r;)e.push(l());return e};return{isEmpty:function(){return 0==r},put:function(l){var u;if(r<e)a(l);else switch(t){case 1:throw new Error(\"Channel's Buffer overflow!\");case 3:n[o]=l,i=o=(o+1)%e;break;case 4:u=2*e,n=s(),r=n.length,o=n.length,i=0,n.length=u,e=u,a(l)}},take:l,flush:s}}var La=function(e){return Da(e,4)},Ma=\"TAKE\",za=\"PUT\",Ua=\"FORK\",Fa=\"CANCEL\",Ba=\"SELECT\",Va=function(e,t){var n;return(n={})[Xi]=!0,n.combinator=!1,n.type=e,n.payload=t,n};function Wa(e,t){return void 0===e&&(e=\"*\"),pa(e)?Va(Ma,{pattern:e}):ha(n=e)&&n[Ji]&&la(t)&&pa(t)?Va(Ma,{channel:e,pattern:t}):ha(e)?Va(Ma,{channel:e}):void 0;var n}function Ha(e,t){return aa(t)&&(t=e,e=void 0),Va(za,{channel:e,action:t})}function $a(e,t){var n,r=null;return sa(e)?n=e:(ca(e)?(r=e[0],n=e[1]):(r=e.context,n=e.fn),r&&ua(n)&&sa(r[n])&&(n=r[n])),{context:r,fn:n,args:t}}function Ga(e){for(var t=arguments.length,n=new Array(t>1?t-1:0),r=1;r<t;r++)n[r-1]=arguments[r];return Va(Ua,$a(e,n))}function qa(e){return void 0===e&&(e=ta),Va(Fa,e)}function Ya(e){void 0===e&&(e=ya);for(var t=arguments.length,n=new Array(t>1?t-1:0),r=1;r<t;r++)n[r-1]=arguments[r];return Va(Ba,{selector:e,args:n})}function Ka(){var e={};return e.promise=new Promise((function(t,n){e.resolve=t,e.reject=n})),e}var Qa=Ka,Xa=[],Za=0;function Ja(e){try{nl(),e()}finally{rl()}}function el(e){Xa.push(e),Za||(nl(),ol())}function tl(e){try{return nl(),e()}finally{ol()}}function nl(){Za++}function rl(){Za--}function ol(){var e;for(rl();!Za&&void 0!==(e=Xa.shift());)Ja(e)}var il=function(e){return function(t){return e.some((function(e){return cl(e)(t)}))}},al=function(e){return function(t){return e(t)}},ll=function(e){return function(t){return t.type===String(e)}},sl=function(e){return function(t){return t.type===e}},ul=function(){return va};function cl(e){var t=\"*\"===e?ul:ua(e)?ll:ca(e)?il:ma(e)?ll:sa(e)?al:ga(e)?sl:null;if(null===t)throw new Error(\"invalid pattern: \"+e);return t(e)}var dl={type:Qi},fl=function(e){return e&&e.type===Qi};function pl(e){void 0===e&&(e=La());var t=!1,n=[];return{take:function(r){t&&e.isEmpty()?r(dl):e.isEmpty()?(n.push(r),r.cancel=function(){Sa(n,r)}):r(e.take())},put:function(r){if(!t){if(0===n.length)return e.put(r);n.shift()(r)}},flush:function(n){t&&e.isEmpty()?n(dl):n(e.flush())},close:function(){if(!t){t=!0;var e=n;n=[];for(var r=0,o=e.length;r<o;r++){(0,e[r])(dl)}}}}}function hl(){var e=function(){var e,t=!1,n=[],r=n,o=function(){r===n&&(r=n.slice())},i=function(){t=!0;var e=n=r;r=[],e.forEach((function(e){e(dl)}))};return(e={})[Ji]=!0,e.put=function(e){if(!t)if(fl(e))i();else for(var o=n=r,a=0,l=o.length;a<l;a++){var s=o[a];s[Zi](e)&&(s.cancel(),s(e))}},e.take=function(e,n){void 0===n&&(n=ul),t?e(dl):(e[Zi]=n,o(),r.push(e),e.cancel=Oa((function(){o(),Sa(r,e)})))},e.close=i,e}(),t=e.put;return e.put=function(e){e[ea]?t(e):el((function(){t(e)}))},e}function ml(e,t){var n=e[Ki];sa(n)&&(t.cancel=n),e.then(t,(function(e){t(e,!0)}))}var gl,vl=0,bl=function(){return++vl};function yl(e){e.isRunning()&&e.cancel()}var wl=((gl={}).TAKE=function(e,t,n){var r=t.channel,o=void 0===r?e.channel:r,i=t.pattern,a=t.maybe,l=function(e){e instanceof Error?n(e,!0):!fl(e)||a?n(e):n(oa)};try{o.take(l,la(i)?cl(i):null)}catch(s){return void n(s,!0)}n.cancel=l.cancel},gl.PUT=function(e,t,n){var r=t.channel,o=t.action,i=t.resolve;el((function(){var t;try{t=(r?r.put:e.dispatch)(o)}catch(a){return void n(a,!0)}i&&da(t)?ml(t,n):n(t)}))},gl.ALL=function(e,t,n,r){var o=r.digestEffect,i=vl,a=Object.keys(t);if(0!==a.length){var l=Ia(t,n);a.forEach((function(e){o(t[e],i,l[e],e)}))}else n(ca(t)?[]:{})},gl.RACE=function(e,t,n,r){var o=r.digestEffect,i=vl,a=Object.keys(t),l=ca(t)?Ca(a.length):{},s={},u=!1;a.forEach((function(e){var t=function(t,r){u||(r||Na(t)?(n.cancel(),n(t,r)):(n.cancel(),u=!0,l[e]=t,n(l)))};t.cancel=ba,s[e]=t})),n.cancel=function(){u||(u=!0,a.forEach((function(e){return s[e].cancel()})))},a.forEach((function(e){u||o(t[e],i,s[e],e)}))},gl.CALL=function(e,t,n,r){var o=t.context,i=t.fn,a=t.args,l=r.task;try{var s=i.apply(o,a);if(da(s))return void ml(s,n);if(fa(s))return void Tl(e,s,l.context,vl,Ra(i),!1,n);n(s)}catch(u){n(u,!0)}},gl.CPS=function(e,t,n){var r=t.context,o=t.fn,i=t.args;try{var a=function(e,t){aa(e)?n(t):n(e,!0)};o.apply(r,i.concat(a)),a.cancel&&(n.cancel=a.cancel)}catch(l){n(l,!0)}},gl.FORK=function(e,t,n,r){var o=t.context,i=t.fn,a=t.args,l=t.detached,s=r.task,u=function(e){var t=e.context,n=e.fn,r=e.args;try{var o=n.apply(t,r);if(fa(o))return o;var i=!1;return ja((function(e){return i?{value:e,done:!0}:(i=!0,{value:o,done:!da(o)})}))}catch(a){return ja((function(){throw a}))}}({context:o,fn:i,args:a}),c=function(e,t){return e.isSagaIterator?{name:e.meta.name}:Ra(t)}(u,i);tl((function(){var t=Tl(e,u,s.context,vl,c,l,void 0);l?n(t):t.isRunning()?(s.queue.addTask(t),n(t)):t.isAborted()?s.queue.abort(t.error()):n(t)}))},gl.JOIN=function(e,t,n,r){var o=r.task,i=function(e,t){if(e.isRunning()){var n={task:o,cb:t};t.cancel=function(){e.isRunning()&&Sa(e.joiners,n)},e.joiners.push(n)}else e.isAborted()?t(e.error(),!0):t(e.result())};if(ca(t)){if(0===t.length)return void n([]);var a=Ia(t,n);t.forEach((function(e,t){i(e,a[t])}))}else i(t,n)},gl.CANCEL=function(e,t,n,r){var o=r.task;t===ta?yl(o):ca(t)?t.forEach(yl):yl(t),n()},gl.SELECT=function(e,t,n){var r=t.selector,o=t.args;try{n(r.apply(void 0,[e.getState()].concat(o)))}catch(i){n(i,!0)}},gl.ACTION_CHANNEL=function(e,t,n){var r=t.pattern,o=pl(t.buffer),i=cl(r),a=function t(n){fl(n)||e.channel.take(t,i),o.put(n)},l=o.close;o.close=function(){a.cancel(),l()},e.channel.take(a,i),n(o)},gl.CANCELLED=function(e,t,n,r){n(r.task.isCancelled())},gl.FLUSH=function(e,t,n){t.flush(n)},gl.GET_CONTEXT=function(e,t,n,r){n(r.task.context[t])},gl.SET_CONTEXT=function(e,t,n,r){var o=r.task;wa(o.context,t),n()},gl);function Sl(e,t){return e+\"?\"+t}function Ol(e){var t=e.name,n=e.location;return n?t+\"  \"+Sl(n.fileName,n.lineNumber):t}function xl(e){var t=function(e,t){var n;return(n=[]).concat.apply(n,t.map(e))}((function(e){return e.cancelledTasks}),e);return t.length?[\"Tasks cancelled due to error:\"].concat(t).join(\"\\n\"):\"\"}var _l=null,jl=[],El=function(){_l=null,jl.length=0},Cl=function(){var e=jl[0],t=jl.slice(1),n=e.crashedEffect?function(e){var t=Aa(e);return t?t.code+\"  \"+Sl(t.fileName,t.lineNumber):\"\"}(e.crashedEffect):null;return[\"The above error occurred in task \"+Ol(e.meta)+(n?\" \\n when executing effect \"+n:\"\")].concat(t.map((function(e){return\"    created by \"+Ol(e.meta)})),[xl(jl)]).join(\"\\n\")};function kl(e,t,n,r,o,i,a){var l;void 0===a&&(a=ba);var s,u,c=0,d=null,f=[],p=Object.create(n),h=function(e,t,n){var r,o=[],i=!1;function a(e){t(),s(),n(e,!0)}function l(t){o.push(t),t.cont=function(l,s){i||(Sa(o,t),t.cont=ba,s?a(l):(t===e&&(r=l),o.length||(i=!0,n(r))))}}function s(){i||(i=!0,o.forEach((function(e){e.cont=ba,e.cancel()})),o=[])}return l(e),{addTask:l,cancelAll:s,abort:a,getTasks:function(){return o}}}(t,(function(){f.push.apply(f,h.getTasks().map((function(e){return e.meta.name})))}),m);function m(t,n){if(n){if(c=2,(i={meta:o,cancelledTasks:f}).crashedEffect=_l,jl.push(i),g.isRoot){var r=Cl();El(),e.onError(t,{sagaStack:r})}u=t,d&&d.reject(t)}else t===ra?c=1:1!==c&&(c=3),s=t,d&&d.resolve(t);var i;g.cont(t,n),g.joiners.forEach((function(e){e.cb(t,n)})),g.joiners=null}var g=((l={})[na]=!0,l.id=r,l.meta=o,l.isRoot=i,l.context=p,l.joiners=[],l.queue=h,l.cancel=function(){0===c&&(c=1,h.cancelAll(),m(ra,!1))},l.cont=a,l.end=m,l.setContext=function(e){wa(p,e)},l.toPromise=function(){return d||(d=Qa(),2===c?d.reject(u):0!==c&&d.resolve(s)),d.promise},l.isRunning=function(){return 0===c},l.isCancelled=function(){return 1===c||0===c&&1===t.status},l.isAborted=function(){return 2===c},l.result=function(){return s},l.error=function(){return u},l);return g}function Tl(e,t,n,r,o,i,a){var l=e.finalizeRunEffect((function(t,n,r){if(da(t))ml(t,r);else if(fa(t))Tl(e,t,u.context,n,o,!1,r);else if(t&&t[Xi]){(0,wl[t.type])(e,t.payload,r,c)}else r(t)}));d.cancel=ba;var s={meta:o,cancel:function(){0===s.status&&(s.status=1,d(ra))},status:0},u=kl(e,s,n,r,o,i,a),c={task:u,digestEffect:f};return a&&(a.cancel=u.cancel),d(),u;function d(e,n){try{var o;n?(o=t.throw(e),El()):Pa(e)?(s.status=1,d.cancel(),o=sa(t.return)?t.return(ra):{done:!0,value:ra}):o=Ta(e)?sa(t.return)?t.return():{done:!0}:t.next(e),o.done?(1!==s.status&&(s.status=3),s.cont(o.value)):f(o.value,r,d)}catch(i){if(1===s.status)throw i;s.status=2,s.cont(i,!0)}}function f(t,n,r,o){void 0===o&&(o=\"\");var i,a=bl();function s(n,o){i||(i=!0,r.cancel=ba,e.sagaMonitor&&(o?e.sagaMonitor.effectRejected(a,n):e.sagaMonitor.effectResolved(a,n)),o&&function(e){_l=e}(t),r(n,o))}e.sagaMonitor&&e.sagaMonitor.effectTriggered({effectId:a,parentEffectId:n,label:o,effect:t}),s.cancel=ba,r.cancel=function(){i||(i=!0,s.cancel(),s.cancel=ba,e.sagaMonitor&&e.sagaMonitor.effectCancelled(a))},l(t,a,s)}}function Pl(e,t){var n=e.channel,r=void 0===n?hl():n,o=e.dispatch,i=e.getState,a=e.context,l=void 0===a?{}:a,s=e.sagaMonitor,u=e.effectMiddlewares,c=e.onError,d=void 0===c?Ea:c;for(var f=arguments.length,p=new Array(f>2?f-2:0),h=2;h<f;h++)p[h-2]=arguments[h];var m=t.apply(void 0,p);var g,v=bl();if(s&&(s.rootSagaStarted=s.rootSagaStarted||ba,s.effectTriggered=s.effectTriggered||ba,s.effectResolved=s.effectResolved||ba,s.effectRejected=s.effectRejected||ba,s.effectCancelled=s.effectCancelled||ba,s.actionDispatched=s.actionDispatched||ba,s.rootSagaStarted({effectId:v,saga:t,args:p})),u){var b=Hi.apply(void 0,u);g=function(e){return function(t,n,r){return b((function(t){return e(t,n,r)}))(t)}}}else g=ya;var y={channel:r,dispatch:ka(o),getState:i,sagaMonitor:s,onError:d,finalizeRunEffect:g};return tl((function(){var e=Tl(y,m,l,v,Ra(t),!0,void 0);return s&&s.effectResolved(v,e),e}))}var Nl=function(e){var t,n=void 0===e?{}:e,r=n.context,o=void 0===r?{}:r,i=n.channel,a=void 0===i?hl():i,l=n.sagaMonitor,s=g(n,[\"context\",\"channel\",\"sagaMonitor\"]);function u(e){var n=e.getState,r=e.dispatch;return t=Pl.bind(null,m({},s,{context:o,channel:a,dispatch:r,getState:n,sagaMonitor:l})),function(e){return function(t){l&&l.actionDispatched&&l.actionDispatched(t);var n=e(t);return a.put(t),n}}}return u.run=function(){return t.apply(void 0,arguments)},u.setContext=function(e){wa(o,e)},u},Il=n(14),Rl=n.n(Il),Al=function(e){return{done:!0,value:e}},Dl={};function Ll(e){return ha(e)?\"channel\":ma(e)?String(e):sa(e)?e.name:String(e)}function Ml(e,t,n){var r,o,i,a=t;function l(t,n){if(a===Dl)return Al(t);if(n&&!o)throw a=Dl,n;r&&r(t);var l=n?e[o](n):e[a]();return a=l.nextState,i=l.effect,r=l.stateUpdater,o=l.errorState,a===Dl?Al(t):i}return ja(l,(function(e){return l(null,e)}),n)}function zl(e,t){for(var n=arguments.length,r=new Array(n>2?n-2:0),o=2;o<n;o++)r[o-2]=arguments[o];var i,a,l={done:!1,value:Wa(e)},s=function(e){return{done:!1,value:Ga.apply(void 0,[t].concat(r,[e]))}},u=function(e){return{done:!1,value:qa(e)}},c=function(e){return i=e},d=function(e){return a=e};return Ml({q1:function(){return{nextState:\"q2\",effect:l,stateUpdater:d}},q2:function(){return i?{nextState:\"q3\",effect:u(i)}:{nextState:\"q1\",effect:s(a),stateUpdater:c}},q3:function(){return{nextState:\"q1\",effect:s(a),stateUpdater:c}}},\"q1\",\"takeLatest(\"+Ll(e)+\", \"+t.name+\")\")}function Ul(e,t){for(var n=arguments.length,r=new Array(n>2?n-2:0),o=2;o<n;o++)r[o-2]=arguments[o];return Ga.apply(void 0,[zl,e,t].concat(r))}class Fl{constructor(e){this.djvuWorker=e,this.pages={},this.imageDataPromise=null,this.imageDataPromisePageNumber=null,this.currentPageNumber=null,this.lastCachingTask=null}cancelCachingTask(){this.lastCachingTask&&this.lastCachingTask.isRunning()&&(console.warn(\"DjVu.js Viewer: Have to cancel the caching task manually!\",this.lastCachingTask),this.lastCachingTask.cancel()),this.lastCachingTask=null}resetPagesCache(){this.cancelCachingTask(),this.pages={},this.imageDataPromise=null,this.imageDataPromisePageNumber=null}*fetchCurrentPageByNumber(e,t){const n={[e]:this.pages[e]};var r=null;if(e>1&&e<t?r=[e+1,e-1]:1===e?r=t>=3?[2,3]:t>=2?[2]:null:e===t&&(r=t>=3?[e-1,e-2]:t>=2?[e-1]:null),r)for(var o of r)n[o]=this.pages[o];return this.pages=n,this.cancelCachingTask(),yield*this.fetchImageDataByPageNumber(e),r&&(this.lastCachingTask=yield Ga([this,this.cachePages],r)),this.pages[e]}*cachePages(e){for(var t of e)yield*this.fetchImageDataByPageNumber(t)}*fetchImageDataByPageNumber(e){if(null!==e&&(!this.pages[e]||this.pages[e].error)){this.imageDataPromisePageNumber!==e&&(this.imageDataPromise&&this.djvuWorker.cancelAllTasks(),this.imageDataPromisePageNumber=e,this.imageDataPromise=this.djvuWorker.run(this.djvuWorker.doc.getPage(e).getImageData(),this.djvuWorker.doc.getPage(e).getDpi()));try{let t=yield this.imageDataPromise;const[n,r]=t;this.pages[e]={imageData:n,dpi:r}}catch(t){this.pages[e]={error:t}}this.imageDataPromise=null,this.imageDataPromisePageNumber=null}}}class Bl{constructor(e,t,n){this._reset(e,t,n)}_reset(e,t,n){this.pagesCount=t,this.pageStorage=n,this.djvuWorker=e,this.obsoletePageNumbers=[],this.lastLoadPagePromise=null,this.lastLoadPageNumber=null}*reset(){yield*this.dropAllPages(),this._reset(this.djvuWorker,this.pagesCount,this.pageStorage)}setPageNumber(e){var t=0;this.pageNumber=e,this.leftNumber=e-15,this.leftNumber<1&&(t+=1-this.leftNumber,this.leftNumber=1),this.rightNumber=e+15,this.rightNumber>this.pagesCount&&(t+=this.rightNumber-this.pagesCount,this.rightNumber=this.pagesCount),t&&(this.leftNumber>1?this.leftNumber=Math.max(1,this.leftNumber-t):this.rightNumber<this.pagesCount&&(this.rightNumber=Math.min(this.pagesCount,this.rightNumber+t)))}updateRegistries(){this.obsoletePageNumbers=[];for(const e of this.pageStorage.getAllPageNumbers())(e<this.leftNumber||e>this.rightNumber)&&this.obsoletePageNumbers.push(e)}*dropAllPages(){yield Ha({type:ue.DROP_ALL_PAGES_ACTION}),this.pageStorage.removeAllPages()}*dropPage(e){yield Ha(tt.dropPageAction(e)),this.pageStorage.removePage(e)}*removeObsoletePagesIfRequired(){const e=this.pageStorage.getAllPageNumbers().length-30-1;if(e>0){for(let t=0;t<e;t++)yield*this.dropPage(this.obsoletePageNumbers[t]);this.obsoletePageNumbers.splice(0,e)}}*loadPageFromLastPromise(){try{const[e,t]=yield this.lastLoadPagePromise;e.textZones=t,this.pageStorage.addPage(this.lastLoadPageNumber,e)}finally{this.lastLoadPagePromise=null,this.lastLoadPageNumber=null}}*loadPage(e){const t=this.pageStorage.getPage(e);t&&t.hasOwnProperty(\"textZones\")||(this.lastLoadPagePromise=t?Promise.all([Promise.resolve(t),this.djvuWorker.doc.getPage(e).getNormalizedTextZones().run()]):this.djvuWorker.run(this.djvuWorker.doc.getPage(e).createPngObjectUrl(),this.djvuWorker.doc.getPage(e).getNormalizedTextZones()),this.lastLoadPageNumber=e,yield*this.loadPageFromLastPromise(),yield*this.removeObsoletePagesIfRequired()),yield Ha(tt.pageIsLoadedAction(this.pageStorage.getPage(e),e))}*startDataFetching(){this.lastLoadPagePromise&&(yield*this.loadPageFromLastPromise());const e=yield Ya(),t=Ie.currentPageNumber(e);this.setPageNumber(t),this.updateRegistries(),this.djvuWorker.emptyTaskQueue();const n=Math.min(this.pageNumber-this.leftNumber,this.rightNumber-this.pageNumber);yield*this.loadPage(this.pageNumber);for(let r=1;r<=n;r++)yield*this.loadPage(this.pageNumber+r),yield*this.loadPage(this.pageNumber-r);if(this.pageNumber-this.leftNumber<this.rightNumber-this.pageNumber)for(let r=this.leftNumber+2*n+1;r<=this.rightNumber;r++)yield*this.loadPage(r);else for(let r=this.rightNumber-2*n-1;r>=this.leftNumber;r--)yield*this.loadPage(r)}}class Vl{constructor(e,t){this.djvuWorker=e,this.pageStorage=t}*preparePagesForPrinting(e,t){this.djvuWorker.cancelAllTasks();let n=0;const r=t-e+1;for(let a=e;a<=t;a++)this.pageStorage.getPage(a)&&n++;function*o(){yield Ha({type:ce.UPDATE_PRINT_PROGRESS,payload:Math.round(n/r*100)})}if(yield*o(),n!==r)for(let a=e;a<=t;a++)if(!this.pageStorage.getPage(a)){const e=yield this.djvuWorker.doc.getPage(a).createPngObjectUrl().run();this.pageStorage.addPage(a,e),n++,yield*o()}const i=[];for(let a=e;a<=t;a++)i.push(this.pageStorage.getPage(a));yield Ha({type:ce.START_PRINTING,payload:i})}}class Wl{constructor(){this.pages={}}reset(){this.removeAllPages()}getAllPageNumbers(){return Object.keys(this.pages)}getPage(e){return this.pages[e]}addPage(e,t){this.pages[e]=t}removePage(e){const t=this.pages[e];t&&(URL.revokeObjectURL(t.url),delete this.pages[e])}removeAllPages(){for(const e of Object.keys(this.pages))URL.revokeObjectURL(this.pages[e].url);this.pages={}}}class Hl{constructor(e){this.dispatch=e,this.callbacks={};const t=rr?document.querySelector(\"script#djvu_js_lib\").src:void 0;this.djvuWorker=new r.Worker(t),this.isBundling=!1,this.documentContructorData=null,this.pageStorage=new Wl,this.pagesCache=new Fl(this.djvuWorker),this.printManager=new Vl(this.djvuWorker,this.pageStorage),this.printTask=null,this.continuousScrollManager=null}*getImageData(){const e=yield Ya(),t=Ie.currentPageNumber(e),n=Ie.pagesQuantity(e),r=yield*this.pagesCache.fetchCurrentPageByNumber(t,n);r.error?yield Ha({type:ce.SET_IMAGE_PAGE_ERROR,payload:r.error}):yield Ha({type:ue.IMAGE_DATA_RECEIVED_ACTION,imageData:r.imageData,imageDpi:r.dpi})}*fetchPageData(){const e=yield Ya(),t=Ie.viewMode(e);if(t===ue.CONTINUOUS_SCROLL_MODE&&this.continuousScrollManager)yield*this.continuousScrollManager.startDataFetching();else{const n=Ie.currentPageNumber(e);t===ue.TEXT_MODE&&(this.pagesCache.cancelCachingTask(),this.djvuWorker.cancelAllTasks(),yield*this.fetchPageText(n)),yield*this.getImageData(),yield*this.fetchPageText(n)}}*fetchPageText(e){try{const[t,n]=yield this.djvuWorker.run(this.djvuWorker.doc.getPage(e).getText(),this.djvuWorker.doc.getPage(e).getNormalizedTextZones());yield Ha({type:ue.PAGE_TEXT_FETCHED_ACTION,pageText:t,textZones:n})}catch(t){yield Ha({type:ce.SET_TEXT_PAGE_ERROR,payload:t})}}*fetchPageTextIfRequired(){const e=yield Ya(),t=Ie.currentPageNumber(e);null===Ie.pageText(e)&&(yield*this.fetchPageText(t))}*prepareForContinuousMode(){const e=yield this.djvuWorker.doc.getPagesSizes().run();this.continuousScrollManager=new Bl(this.djvuWorker,e.length,this.pageStorage),yield Ha(tt.pagesSizesAreGottenAction(e))}*configure({pageNumber:e,pageRotation:t,viewMode:n,pageScale:r,language:o,theme:i,uiOptions:a}){n&&(yield Ha({type:ce.SET_VIEW_MODE,payload:n,notSave:!0})),e&&(yield Ha(tt.setNewPageNumberAction(e,!0))),t&&(yield Ha(tt.setPageRotationAction(t))),r&&(yield Ha(tt.setUserScaleAction(r))),a&&(yield Ha({type:ce.SET_UI_OPTIONS,payload:a}));const l={};o&&(o in we?l.locale=o:console.warn(`DjVu.js Viewer: only ${Object.keys(we)} languages are available! Got ${o}`)),i&&(\"dark\"===i||\"light\"===i?l.theme=i:console.warn('DjVu.js Viewer: only \"dark\" or \"light\" themes are supported! Got '+i)),Object.keys(l).length&&(yield Ha({type:ce.UPDATE_OPTIONS,payload:l,notSave:!0}))}*createDocumentFromArrayBuffer({arrayBuffer:e,fileName:t,config:n}){this.resetWorkerAndStorages(),this.documentContructorData={buffer:e.slice(0),options:n&&n.djvuOptions},yield this.djvuWorker.createDocument(e,n&&n.djvuOptions);const[r,o]=yield this.djvuWorker.run(this.djvuWorker.doc.getPagesQuantity(),this.djvuWorker.doc.isBundled());o&&(this.documentContructorData=null),yield Ha({type:ue.DOCUMENT_CREATED_ACTION,pagesQuantity:r,fileName:t,isIndirect:!o}),yield*this.loadContents();const i=yield Ya();Ie.viewMode(i)===ue.CONTINUOUS_SCROLL_MODE&&(yield*this.prepareForContinuousMode()),n&&(yield*this.configure(n)),yield*this.resetCurrentPageNumber()}*loadContents(){const e=yield this.djvuWorker.doc.getContents().run();yield Ha({type:ue.CONTENTS_IS_GOTTEN_ACTION,contents:e})}*resetCurrentPageNumber(){const e=yield Ya();yield Ha(tt.setNewPageNumberAction(Ie.currentPageNumber(e),!0))}*setPageByUrl(e){const t=e.url;if(t&&\"#\"!==t[0]){const e=this.documentContructorData,n=e&&e.options&&e.options.baseUrl,r=/^https?:\\/\\/.+/.test(t)?t:n?new URL(t,n).href:rr?null:new URL(t,location.href);if(r){if(rr)chrome.runtime.sendMessage({command:\"open_viewer_tab\",url:r});else{const e=vt(yield Ya(Ie.dictionary));confirm(e(\"The link points to another document. Do you want to proceed?\"))&&(yield Ha({type:ce.LOAD_DOCUMENT_BY_URL,url:r}))}return}}const n=yield this.djvuWorker.doc.getPageNumberByUrl(e.url).run();null!==n&&(yield Ha(tt.setNewPageNumberAction(n,!0)),e.closeContentsOnSuccess&&(yield Ha({type:ce.CLOSE_CONTENTS})))}withErrorHandler(e){return e=e.bind(this),function*(t){try{const n=e(t);n&&n.next&&(yield*n)}catch(n){yield Ha(tt.errorAction(n))}}}*saveDocument(){const e=yield Ya(),t=Ie.fileName(e);if(t){const e=yield this.djvuWorker.doc.createObjectURL().run(),n=document.createElement(\"a\");n.href=e,n.download=ir(t),n.dispatchEvent(new MouseEvent(\"click\"))}}resetWorkerAndStorages(){this.pageStorage.reset(),this.pagesCache.resetPagesCache(),this.djvuWorker.reset(),this.continuousScrollManager=null,this.isBundling=!1,this.documentContructorData=null}setCallback(e){this.callbacks[e.callbackName]=e.callback}*switchToContinuousScrollMode(e=!1){this.djvuWorker.cancelAllTasks(),this.continuousScrollManager||(yield*this.prepareForContinuousMode()),this.pagesCache.resetPagesCache(),yield*this.resetCurrentPageNumber(),e||(yield Ha({type:ce.UPDATE_OPTIONS,payload:{preferContinuousScroll:!0}}))}*switchToSinglePageMode(e=!1){this.djvuWorker.cancelAllTasks(),this.continuousScrollManager&&(yield*this.continuousScrollManager.reset()),yield*this.resetCurrentPageNumber(),e||(yield Ha({type:ce.UPDATE_OPTIONS,payload:{preferContinuousScroll:!1}}))}*switchToTextMode(){this.djvuWorker.cancelAllTasks(),this.continuousScrollManager&&(yield*this.continuousScrollManager.reset()),yield*this.fetchPageTextIfRequired()}*handleViewModeSwitch({notSave:e=!1}={}){const t=yield Ya(Ie.isDocumentLoaded),n=yield Ya(Ie.viewMode);if(t)switch(n){case ue.CONTINUOUS_SCROLL_MODE:return yield*this.switchToContinuousScrollMode(e);case ue.SINGLE_PAGE_MODE:return yield*this.switchToSinglePageMode(e);case ue.TEXT_MODE:return yield*this.switchToTextMode();default:throw new Error(\"Invalid view mode: \"+payload)}}*updateOptions(e){if(e.notSave)return;const t=yield Ya(),n=Ie.options(t);rr?yield new Promise((e=>window.chrome.storage.local.set({djvu_js_options:JSON.stringify(n)},e))):localStorage.setItem(\"djvu_js_options\",JSON.stringify(n))}*loadOptions(){try{let t={};rr?(t=yield new Promise((e=>window.chrome.storage.local.get(\"djvu_js_options\",e))),t=t.djvu_js_options):t=localStorage.getItem(\"djvu_js_options\");try{t=t?JSON.parse(t):{}}catch(e){t={}}if(!t.locale)for(const e of navigator.languages){const n=e.slice(0,2);if(n in we){t.locale=n;break}}Object.keys(t).length&&(yield Ha({type:ce.UPDATE_OPTIONS,payload:t,notSave:!0}))}catch(e){}}*loadDocumentByUrl({url:e,config:t}){t=t||{};const n=e=>{try{const t=/[^/#]*(?=#|$)/.exec(e.trim());return t?decodeURIComponent(t[0]):\"***\"}catch(t){return\"***\"}};try{const o=document.createElement(\"a\");o.href=e,e=o.href,yield Ha(tt.startFileLoadingAction());const i=yield function(e,t){return new Promise(((n,o)=>{var i=new XMLHttpRequest;i.open(\"GET\",e),i.responseType=\"arraybuffer\",i.onload=e=>{if(i.status&&200!==i.status)return o({code:r.ErrorCodes.UNSUCCESSFUL_REQUEST,status:i.status,header:`Response status code: ${i.status}`,message:`Response status text: ${i.statusText}`});n(i)},i.onerror=e=>{o({code:r.ErrorCodes.NETWORK_ERROR,header:\"Network error\",message:\"You should check your network connection\"})},i.onprogress=t,i.send()}))}(e,(e=>{this.dispatch(tt.fileLoadingProgressAction(e.loaded,e.total))})),{response:a,responseURL:l}=i,s=i.getResponseHeader(\"Content-Disposition\");if(s){const e=Rl.a.parse(s);e.parameters.filename&&(t.name=e.parameters.filename)}t.djvuOptions={baseUrl:new URL(\"./\",l).href},yield*this.createDocumentFromArrayBuffer({arrayBuffer:a,fileName:void 0===t.name?n(e):t.name,config:t});const u=new URL(e.toLowerCase()),c=+u.searchParams.get(\"page\")||+new URLSearchParams(u.hash).get(\"#page\");c&&(yield Ha(tt.setNewPageNumberAction(c,!0)))}catch(o){yield Ha(tt.errorAction(o))}finally{yield Ha(tt.endFileLoadingAction())}}*bundleDocument(){try{this.djvuWorker.cancelAllTasks(),this.isBundling=!0;const e=yield this.djvuWorker.doc.bundle((e=>{this.dispatch({type:ce.UPDATE_FILE_PROCESSING_PROGRESS,payload:e})})).run();yield Ha({type:ce.FINISH_TO_BUNDLE,payload:e})}finally{this.isBundling=!1}}*hardReloadIfRequired(){this.isBundling&&this.documentContructorData&&(this.djvuWorker.reset(),this.isBundling=!1,yield this.djvuWorker.createDocument(this.documentContructorData.buffer.slice(0),this.documentContructorData.options),yield*this.resetCurrentPageNumber())}*preparePagesForPrinting(e){const{from:t,to:n}=e.payload;this.printTask=yield Ga(this.printManager.preparePagesForPrinting.bind(this.printManager),t,n)}*cancelPrintTaskIfRequired(){if(this.printTask){this.printTask.cancel(),this.printTask=null;(yield Ya(Ie.viewMode))!==ue.CONTINUOUS_SCROLL_MODE&&this.pageStorage.removeAllPages(),yield*this.resetCurrentPageNumber()}}*main(){yield Ul(ue.CREATE_DOCUMENT_FROM_ARRAY_BUFFER_ACTION,this.withErrorHandler(this.createDocumentFromArrayBuffer)),yield Ul(ue.SET_NEW_PAGE_NUMBER_ACTION,this.withErrorHandler(this.fetchPageData)),yield Ul(ue.SET_PAGE_BY_URL_ACTION,this.withErrorHandler(this.setPageByUrl)),yield Ul(ce.SAVE_DOCUMENT,this.withErrorHandler(this.saveDocument)),yield Ul(ue.CLOSE_DOCUMENT_ACTION,this.withErrorHandler(this.resetWorkerAndStorages)),yield Ul(ue.SET_API_CALLBACK_ACTION,this.withErrorHandler(this.setCallback)),yield Ul(ce.SET_VIEW_MODE,this.withErrorHandler(this.handleViewModeSwitch)),yield Ul(ce.UPDATE_OPTIONS,this.withErrorHandler(this.updateOptions)),yield Ul(ce.CONFIGURE,this.withErrorHandler(this.configure)),yield Ul(ce.LOAD_DOCUMENT_BY_URL,this.loadDocumentByUrl.bind(this)),yield Ul(ce.START_TO_BUNDLE,this.withErrorHandler(this.bundleDocument)),yield Ul([ce.ERROR,ce.CLOSE_SAVE_DIALOG],this.withErrorHandler(this.hardReloadIfRequired)),yield Ul([ce.ERROR,ce.CLOSE_PRINT_DIALOG],this.withErrorHandler(this.cancelPrintTaskIfRequired)),yield Ul(ce.PREPARE_PAGES_FOR_PRINTING,this.withErrorHandler(this.preparePagesForPrinting)),yield*this.withErrorHandler(this.loadOptions)(),yield Wa(ce.DESTROY),this.djvuWorker.terminate(),yield qa()}}var $l=e=>{const t=Nl(),n=Wi(Re,function(){for(var e=arguments.length,t=new Array(e),n=0;n<e;n++)t[n]=arguments[n];return function(e){return function(){var n=e.apply(void 0,arguments),r=function(){throw new Error(zi(15))},o={getState:n.getState,dispatch:function(){return r.apply(void 0,arguments)}},i=t.map((function(e){return e(o)}));return r=Hi.apply(void 0,i)(n.dispatch),Mi(Mi({},n),{},{dispatch:r})}}}(qi,t,e));var r;return t.run((r=n.dispatch,Hl.prototype.main.bind(new Hl(r)))),function(e){document.addEventListener(\"keydown\",(t=>{if((\"s\"===t.key||\"KeyS\"===t.code)&&t.ctrlKey)return t.preventDefault(),void e.dispatch(tt.tryToSaveDocument());if(\"ArrowRight\"===t.key)return t.preventDefault(),void e.dispatch(tt.goToNextPageAction());if(\"ArrowLeft\"===t.key)return t.preventDefault(),void e.dispatch(tt.goToPreviousPageAction());if(\"KeyT\"===t.code&&t.altKey){t.preventDefault();const{theme:n}=Ie.options(e.getState());e.dispatch({type:ce.UPDATE_OPTIONS,payload:{theme:\"light\"===n?\"dark\":\"light\"}})}}))}(n),n},Gl=n(15),ql=n.n(Gl);const Yl=se({PAGE_NUMBER_CHANGED:null,DOCUMENT_CHANGED:null,DOCUMENT_CLOSED:null});class Kl extends ql.a{static getAvailableLanguages(){return Object.keys(we)}constructor(e=null){super(),this.eventMiddleware=e=>e=>t=>{let n;switch(t.type){case ue.SET_NEW_PAGE_NUMBER_ACTION:const r=this.getPageNumber();n=e(t);r!==this.getPageNumber()&&this.emit(Yl.PAGE_NUMBER_CHANGED);break;case ue.DOCUMENT_CREATED_ACTION:n=e(t),this.emit(Yl.DOCUMENT_CHANGED);break;case ue.CLOSE_DOCUMENT_ACTION:n=e(t),this.emit(Yl.DOCUMENT_CLOSED);break;case ue.END_FILE_LOADING_ACTION:n=e(t),this.emit(ue.END_FILE_LOADING_ACTION);break;default:n=e(t)}return n},this.store=$l(this.eventMiddleware),e&&this.configure(e)}getPageNumber(){return Ie.currentPageNumber(this.store.getState())}getDocumentName(){return Ie.fileName(this.store.getState())}_render(e){l.a.render(Object(it.jsx)(h,{store:this.store,children:Object(it.jsx)(Ri,{shadowRoot:e})}),e)}render(e){this.unmount(),this.htmlElement=e,this._render(this.htmlElement)}unmount(){this.htmlElement&&l.a.unmountComponentAtNode(this.htmlElement),this.htmlElement=null}destroy(){this.unmount(),this.store.dispatch({type:ce.DESTROY})}configure({pageNumber:e,pageRotation:t,viewMode:n,pageScale:r,language:o,theme:i,uiOptions:a}={}){return this.store.dispatch({type:ce.CONFIGURE,pageNumber:e,pageRotation:t,viewMode:n,pageScale:r,language:o,theme:i,uiOptions:a}),this}loadDocument(e,t=\"***\",n={}){return new Promise((r=>{this.once(Yl.DOCUMENT_CHANGED,(()=>r())),this.store.dispatch(tt.createDocumentFromArrayBufferAction(e.slice(0),t,n))}))}loadDocumentByUrl(e,t=null){return new Promise((n=>{this.once(ue.END_FILE_LOADING_ACTION,(()=>n())),this.store.dispatch({type:ce.LOAD_DOCUMENT_BY_URL,url:e,config:t})}))}}Kl.VERSION=\"0.8.3\",Kl.Events=Yl,Kl.Constants=ue,Kl.ActionTypes=ce,Kl.get=Ie,r.Viewer=Kl}]);"
  },
  {
    "path": "application/public/js/pdf.js",
    "content": "/**\n * @licstart The following is the entire license notice for the\n * Javascript code in this page\n *\n * Copyright 2022 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n * @licend The above is the entire license notice for the\n * Javascript code in this page\n */\n\n(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine(\"pdfjs-dist/build/pdf\", [], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"pdfjs-dist/build/pdf\"] = factory();\n\telse\n\t\troot[\"pdfjs-dist/build/pdf\"] = root.pdfjsLib = factory();\n})(this, function() {\nreturn /******/ (() => { // webpackBootstrap\n/******/ \t\"use strict\";\n/******/ \tvar __webpack_modules__ = ([\n/* 0 */,\n/* 1 */\n/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {\n\n\n\nObject.defineProperty(exports, \"__esModule\", ({\n  value: true\n}));\nexports.VerbosityLevel = exports.Util = exports.UnknownErrorException = exports.UnexpectedResponseException = exports.UNSUPPORTED_FEATURES = exports.TextRenderingMode = exports.StreamType = exports.RenderingIntentFlag = exports.PermissionFlag = exports.PasswordResponses = exports.PasswordException = exports.PageActionEventType = exports.OPS = exports.MissingPDFException = exports.IsLittleEndianCached = exports.IsEvalSupportedCached = exports.InvalidPDFException = exports.ImageKind = exports.IDENTITY_MATRIX = exports.FormatError = exports.FontType = exports.FONT_IDENTITY_MATRIX = exports.DocumentActionEventType = exports.CMapCompressionType = exports.BaseException = exports.AnnotationType = exports.AnnotationStateModelType = exports.AnnotationReviewState = exports.AnnotationReplyType = exports.AnnotationMode = exports.AnnotationMarkedState = exports.AnnotationFlag = exports.AnnotationFieldFlag = exports.AnnotationBorderStyleType = exports.AnnotationActionEventType = exports.AbortException = void 0;\nexports.arrayByteLength = arrayByteLength;\nexports.arraysToBytes = arraysToBytes;\nexports.assert = assert;\nexports.bytesToString = bytesToString;\nexports.createPromiseCapability = createPromiseCapability;\nexports.createValidAbsoluteUrl = createValidAbsoluteUrl;\nexports.escapeString = escapeString;\nexports.getModificationDate = getModificationDate;\nexports.getVerbosityLevel = getVerbosityLevel;\nexports.info = info;\nexports.isArrayBuffer = isArrayBuffer;\nexports.isArrayEqual = isArrayEqual;\nexports.isAscii = isAscii;\nexports.objectFromMap = objectFromMap;\nexports.objectSize = objectSize;\nexports.setVerbosityLevel = setVerbosityLevel;\nexports.shadow = shadow;\nexports.string32 = string32;\nexports.stringToBytes = stringToBytes;\nexports.stringToPDFString = stringToPDFString;\nexports.stringToUTF16BEString = stringToUTF16BEString;\nexports.stringToUTF8String = stringToUTF8String;\nexports.unreachable = unreachable;\nexports.utf8StringToString = utf8StringToString;\nexports.warn = warn;\n\n__w_pdfjs_require__(2);\n\nconst IDENTITY_MATRIX = [1, 0, 0, 1, 0, 0];\nexports.IDENTITY_MATRIX = IDENTITY_MATRIX;\nconst FONT_IDENTITY_MATRIX = [0.001, 0, 0, 0.001, 0, 0];\nexports.FONT_IDENTITY_MATRIX = FONT_IDENTITY_MATRIX;\nconst RenderingIntentFlag = {\n  ANY: 0x01,\n  DISPLAY: 0x02,\n  PRINT: 0x04,\n  ANNOTATIONS_FORMS: 0x10,\n  ANNOTATIONS_STORAGE: 0x20,\n  ANNOTATIONS_DISABLE: 0x40,\n  OPLIST: 0x100\n};\nexports.RenderingIntentFlag = RenderingIntentFlag;\nconst AnnotationMode = {\n  DISABLE: 0,\n  ENABLE: 1,\n  ENABLE_FORMS: 2,\n  ENABLE_STORAGE: 3\n};\nexports.AnnotationMode = AnnotationMode;\nconst PermissionFlag = {\n  PRINT: 0x04,\n  MODIFY_CONTENTS: 0x08,\n  COPY: 0x10,\n  MODIFY_ANNOTATIONS: 0x20,\n  FILL_INTERACTIVE_FORMS: 0x100,\n  COPY_FOR_ACCESSIBILITY: 0x200,\n  ASSEMBLE: 0x400,\n  PRINT_HIGH_QUALITY: 0x800\n};\nexports.PermissionFlag = PermissionFlag;\nconst TextRenderingMode = {\n  FILL: 0,\n  STROKE: 1,\n  FILL_STROKE: 2,\n  INVISIBLE: 3,\n  FILL_ADD_TO_PATH: 4,\n  STROKE_ADD_TO_PATH: 5,\n  FILL_STROKE_ADD_TO_PATH: 6,\n  ADD_TO_PATH: 7,\n  FILL_STROKE_MASK: 3,\n  ADD_TO_PATH_FLAG: 4\n};\nexports.TextRenderingMode = TextRenderingMode;\nconst ImageKind = {\n  GRAYSCALE_1BPP: 1,\n  RGB_24BPP: 2,\n  RGBA_32BPP: 3\n};\nexports.ImageKind = ImageKind;\nconst AnnotationType = {\n  TEXT: 1,\n  LINK: 2,\n  FREETEXT: 3,\n  LINE: 4,\n  SQUARE: 5,\n  CIRCLE: 6,\n  POLYGON: 7,\n  POLYLINE: 8,\n  HIGHLIGHT: 9,\n  UNDERLINE: 10,\n  SQUIGGLY: 11,\n  STRIKEOUT: 12,\n  STAMP: 13,\n  CARET: 14,\n  INK: 15,\n  POPUP: 16,\n  FILEATTACHMENT: 17,\n  SOUND: 18,\n  MOVIE: 19,\n  WIDGET: 20,\n  SCREEN: 21,\n  PRINTERMARK: 22,\n  TRAPNET: 23,\n  WATERMARK: 24,\n  THREED: 25,\n  REDACT: 26\n};\nexports.AnnotationType = AnnotationType;\nconst AnnotationStateModelType = {\n  MARKED: \"Marked\",\n  REVIEW: \"Review\"\n};\nexports.AnnotationStateModelType = AnnotationStateModelType;\nconst AnnotationMarkedState = {\n  MARKED: \"Marked\",\n  UNMARKED: \"Unmarked\"\n};\nexports.AnnotationMarkedState = AnnotationMarkedState;\nconst AnnotationReviewState = {\n  ACCEPTED: \"Accepted\",\n  REJECTED: \"Rejected\",\n  CANCELLED: \"Cancelled\",\n  COMPLETED: \"Completed\",\n  NONE: \"None\"\n};\nexports.AnnotationReviewState = AnnotationReviewState;\nconst AnnotationReplyType = {\n  GROUP: \"Group\",\n  REPLY: \"R\"\n};\nexports.AnnotationReplyType = AnnotationReplyType;\nconst AnnotationFlag = {\n  INVISIBLE: 0x01,\n  HIDDEN: 0x02,\n  PRINT: 0x04,\n  NOZOOM: 0x08,\n  NOROTATE: 0x10,\n  NOVIEW: 0x20,\n  READONLY: 0x40,\n  LOCKED: 0x80,\n  TOGGLENOVIEW: 0x100,\n  LOCKEDCONTENTS: 0x200\n};\nexports.AnnotationFlag = AnnotationFlag;\nconst AnnotationFieldFlag = {\n  READONLY: 0x0000001,\n  REQUIRED: 0x0000002,\n  NOEXPORT: 0x0000004,\n  MULTILINE: 0x0001000,\n  PASSWORD: 0x0002000,\n  NOTOGGLETOOFF: 0x0004000,\n  RADIO: 0x0008000,\n  PUSHBUTTON: 0x0010000,\n  COMBO: 0x0020000,\n  EDIT: 0x0040000,\n  SORT: 0x0080000,\n  FILESELECT: 0x0100000,\n  MULTISELECT: 0x0200000,\n  DONOTSPELLCHECK: 0x0400000,\n  DONOTSCROLL: 0x0800000,\n  COMB: 0x1000000,\n  RICHTEXT: 0x2000000,\n  RADIOSINUNISON: 0x2000000,\n  COMMITONSELCHANGE: 0x4000000\n};\nexports.AnnotationFieldFlag = AnnotationFieldFlag;\nconst AnnotationBorderStyleType = {\n  SOLID: 1,\n  DASHED: 2,\n  BEVELED: 3,\n  INSET: 4,\n  UNDERLINE: 5\n};\nexports.AnnotationBorderStyleType = AnnotationBorderStyleType;\nconst AnnotationActionEventType = {\n  E: \"Mouse Enter\",\n  X: \"Mouse Exit\",\n  D: \"Mouse Down\",\n  U: \"Mouse Up\",\n  Fo: \"Focus\",\n  Bl: \"Blur\",\n  PO: \"PageOpen\",\n  PC: \"PageClose\",\n  PV: \"PageVisible\",\n  PI: \"PageInvisible\",\n  K: \"Keystroke\",\n  F: \"Format\",\n  V: \"Validate\",\n  C: \"Calculate\"\n};\nexports.AnnotationActionEventType = AnnotationActionEventType;\nconst DocumentActionEventType = {\n  WC: \"WillClose\",\n  WS: \"WillSave\",\n  DS: \"DidSave\",\n  WP: \"WillPrint\",\n  DP: \"DidPrint\"\n};\nexports.DocumentActionEventType = DocumentActionEventType;\nconst PageActionEventType = {\n  O: \"PageOpen\",\n  C: \"PageClose\"\n};\nexports.PageActionEventType = PageActionEventType;\nconst StreamType = {\n  UNKNOWN: \"UNKNOWN\",\n  FLATE: \"FLATE\",\n  LZW: \"LZW\",\n  DCT: \"DCT\",\n  JPX: \"JPX\",\n  JBIG: \"JBIG\",\n  A85: \"A85\",\n  AHX: \"AHX\",\n  CCF: \"CCF\",\n  RLX: \"RLX\"\n};\nexports.StreamType = StreamType;\nconst FontType = {\n  UNKNOWN: \"UNKNOWN\",\n  TYPE1: \"TYPE1\",\n  TYPE1STANDARD: \"TYPE1STANDARD\",\n  TYPE1C: \"TYPE1C\",\n  CIDFONTTYPE0: \"CIDFONTTYPE0\",\n  CIDFONTTYPE0C: \"CIDFONTTYPE0C\",\n  TRUETYPE: \"TRUETYPE\",\n  CIDFONTTYPE2: \"CIDFONTTYPE2\",\n  TYPE3: \"TYPE3\",\n  OPENTYPE: \"OPENTYPE\",\n  TYPE0: \"TYPE0\",\n  MMTYPE1: \"MMTYPE1\"\n};\nexports.FontType = FontType;\nconst VerbosityLevel = {\n  ERRORS: 0,\n  WARNINGS: 1,\n  INFOS: 5\n};\nexports.VerbosityLevel = VerbosityLevel;\nconst CMapCompressionType = {\n  NONE: 0,\n  BINARY: 1,\n  STREAM: 2\n};\nexports.CMapCompressionType = CMapCompressionType;\nconst OPS = {\n  dependency: 1,\n  setLineWidth: 2,\n  setLineCap: 3,\n  setLineJoin: 4,\n  setMiterLimit: 5,\n  setDash: 6,\n  setRenderingIntent: 7,\n  setFlatness: 8,\n  setGState: 9,\n  save: 10,\n  restore: 11,\n  transform: 12,\n  moveTo: 13,\n  lineTo: 14,\n  curveTo: 15,\n  curveTo2: 16,\n  curveTo3: 17,\n  closePath: 18,\n  rectangle: 19,\n  stroke: 20,\n  closeStroke: 21,\n  fill: 22,\n  eoFill: 23,\n  fillStroke: 24,\n  eoFillStroke: 25,\n  closeFillStroke: 26,\n  closeEOFillStroke: 27,\n  endPath: 28,\n  clip: 29,\n  eoClip: 30,\n  beginText: 31,\n  endText: 32,\n  setCharSpacing: 33,\n  setWordSpacing: 34,\n  setHScale: 35,\n  setLeading: 36,\n  setFont: 37,\n  setTextRenderingMode: 38,\n  setTextRise: 39,\n  moveText: 40,\n  setLeadingMoveText: 41,\n  setTextMatrix: 42,\n  nextLine: 43,\n  showText: 44,\n  showSpacedText: 45,\n  nextLineShowText: 46,\n  nextLineSetSpacingShowText: 47,\n  setCharWidth: 48,\n  setCharWidthAndBounds: 49,\n  setStrokeColorSpace: 50,\n  setFillColorSpace: 51,\n  setStrokeColor: 52,\n  setStrokeColorN: 53,\n  setFillColor: 54,\n  setFillColorN: 55,\n  setStrokeGray: 56,\n  setFillGray: 57,\n  setStrokeRGBColor: 58,\n  setFillRGBColor: 59,\n  setStrokeCMYKColor: 60,\n  setFillCMYKColor: 61,\n  shadingFill: 62,\n  beginInlineImage: 63,\n  beginImageData: 64,\n  endInlineImage: 65,\n  paintXObject: 66,\n  markPoint: 67,\n  markPointProps: 68,\n  beginMarkedContent: 69,\n  beginMarkedContentProps: 70,\n  endMarkedContent: 71,\n  beginCompat: 72,\n  endCompat: 73,\n  paintFormXObjectBegin: 74,\n  paintFormXObjectEnd: 75,\n  beginGroup: 76,\n  endGroup: 77,\n  beginAnnotations: 78,\n  endAnnotations: 79,\n  beginAnnotation: 80,\n  endAnnotation: 81,\n  paintJpegXObject: 82,\n  paintImageMaskXObject: 83,\n  paintImageMaskXObjectGroup: 84,\n  paintImageXObject: 85,\n  paintInlineImageXObject: 86,\n  paintInlineImageXObjectGroup: 87,\n  paintImageXObjectRepeat: 88,\n  paintImageMaskXObjectRepeat: 89,\n  paintSolidColorImageMask: 90,\n  constructPath: 91\n};\nexports.OPS = OPS;\nconst UNSUPPORTED_FEATURES = {\n  unknown: \"unknown\",\n  forms: \"forms\",\n  javaScript: \"javaScript\",\n  signatures: \"signatures\",\n  smask: \"smask\",\n  shadingPattern: \"shadingPattern\",\n  font: \"font\",\n  errorTilingPattern: \"errorTilingPattern\",\n  errorExtGState: \"errorExtGState\",\n  errorXObject: \"errorXObject\",\n  errorFontLoadType3: \"errorFontLoadType3\",\n  errorFontState: \"errorFontState\",\n  errorFontMissing: \"errorFontMissing\",\n  errorFontTranslate: \"errorFontTranslate\",\n  errorColorSpace: \"errorColorSpace\",\n  errorOperatorList: \"errorOperatorList\",\n  errorFontToUnicode: \"errorFontToUnicode\",\n  errorFontLoadNative: \"errorFontLoadNative\",\n  errorFontBuildPath: \"errorFontBuildPath\",\n  errorFontGetPath: \"errorFontGetPath\",\n  errorMarkedContent: \"errorMarkedContent\",\n  errorContentSubStream: \"errorContentSubStream\"\n};\nexports.UNSUPPORTED_FEATURES = UNSUPPORTED_FEATURES;\nconst PasswordResponses = {\n  NEED_PASSWORD: 1,\n  INCORRECT_PASSWORD: 2\n};\nexports.PasswordResponses = PasswordResponses;\nlet verbosity = VerbosityLevel.WARNINGS;\n\nfunction setVerbosityLevel(level) {\n  if (Number.isInteger(level)) {\n    verbosity = level;\n  }\n}\n\nfunction getVerbosityLevel() {\n  return verbosity;\n}\n\nfunction info(msg) {\n  if (verbosity >= VerbosityLevel.INFOS) {\n    console.log(`Info: ${msg}`);\n  }\n}\n\nfunction warn(msg) {\n  if (verbosity >= VerbosityLevel.WARNINGS) {\n    console.log(`Warning: ${msg}`);\n  }\n}\n\nfunction unreachable(msg) {\n  throw new Error(msg);\n}\n\nfunction assert(cond, msg) {\n  if (!cond) {\n    unreachable(msg);\n  }\n}\n\nfunction _isValidProtocol(url) {\n  if (!url) {\n    return false;\n  }\n\n  switch (url.protocol) {\n    case \"http:\":\n    case \"https:\":\n    case \"ftp:\":\n    case \"mailto:\":\n    case \"tel:\":\n      return true;\n\n    default:\n      return false;\n  }\n}\n\nfunction createValidAbsoluteUrl(url, baseUrl = null, options = null) {\n  if (!url) {\n    return null;\n  }\n\n  try {\n    if (options && typeof url === \"string\") {\n      if (options.addDefaultProtocol && url.startsWith(\"www.\")) {\n        const dots = url.match(/\\./g);\n\n        if (dots && dots.length >= 2) {\n          url = `http://${url}`;\n        }\n      }\n\n      if (options.tryConvertEncoding) {\n        try {\n          url = stringToUTF8String(url);\n        } catch (ex) {}\n      }\n    }\n\n    const absoluteUrl = baseUrl ? new URL(url, baseUrl) : new URL(url);\n\n    if (_isValidProtocol(absoluteUrl)) {\n      return absoluteUrl;\n    }\n  } catch (ex) {}\n\n  return null;\n}\n\nfunction shadow(obj, prop, value) {\n  Object.defineProperty(obj, prop, {\n    value,\n    enumerable: true,\n    configurable: true,\n    writable: false\n  });\n  return value;\n}\n\nconst BaseException = function BaseExceptionClosure() {\n  function BaseException(message, name) {\n    if (this.constructor === BaseException) {\n      unreachable(\"Cannot initialize BaseException.\");\n    }\n\n    this.message = message;\n    this.name = name;\n  }\n\n  BaseException.prototype = new Error();\n  BaseException.constructor = BaseException;\n  return BaseException;\n}();\n\nexports.BaseException = BaseException;\n\nclass PasswordException extends BaseException {\n  constructor(msg, code) {\n    super(msg, \"PasswordException\");\n    this.code = code;\n  }\n\n}\n\nexports.PasswordException = PasswordException;\n\nclass UnknownErrorException extends BaseException {\n  constructor(msg, details) {\n    super(msg, \"UnknownErrorException\");\n    this.details = details;\n  }\n\n}\n\nexports.UnknownErrorException = UnknownErrorException;\n\nclass InvalidPDFException extends BaseException {\n  constructor(msg) {\n    super(msg, \"InvalidPDFException\");\n  }\n\n}\n\nexports.InvalidPDFException = InvalidPDFException;\n\nclass MissingPDFException extends BaseException {\n  constructor(msg) {\n    super(msg, \"MissingPDFException\");\n  }\n\n}\n\nexports.MissingPDFException = MissingPDFException;\n\nclass UnexpectedResponseException extends BaseException {\n  constructor(msg, status) {\n    super(msg, \"UnexpectedResponseException\");\n    this.status = status;\n  }\n\n}\n\nexports.UnexpectedResponseException = UnexpectedResponseException;\n\nclass FormatError extends BaseException {\n  constructor(msg) {\n    super(msg, \"FormatError\");\n  }\n\n}\n\nexports.FormatError = FormatError;\n\nclass AbortException extends BaseException {\n  constructor(msg) {\n    super(msg, \"AbortException\");\n  }\n\n}\n\nexports.AbortException = AbortException;\n\nfunction bytesToString(bytes) {\n  if (typeof bytes !== \"object\" || bytes === null || bytes.length === undefined) {\n    unreachable(\"Invalid argument for bytesToString\");\n  }\n\n  const length = bytes.length;\n  const MAX_ARGUMENT_COUNT = 8192;\n\n  if (length < MAX_ARGUMENT_COUNT) {\n    return String.fromCharCode.apply(null, bytes);\n  }\n\n  const strBuf = [];\n\n  for (let i = 0; i < length; i += MAX_ARGUMENT_COUNT) {\n    const chunkEnd = Math.min(i + MAX_ARGUMENT_COUNT, length);\n    const chunk = bytes.subarray(i, chunkEnd);\n    strBuf.push(String.fromCharCode.apply(null, chunk));\n  }\n\n  return strBuf.join(\"\");\n}\n\nfunction stringToBytes(str) {\n  if (typeof str !== \"string\") {\n    unreachable(\"Invalid argument for stringToBytes\");\n  }\n\n  const length = str.length;\n  const bytes = new Uint8Array(length);\n\n  for (let i = 0; i < length; ++i) {\n    bytes[i] = str.charCodeAt(i) & 0xff;\n  }\n\n  return bytes;\n}\n\nfunction arrayByteLength(arr) {\n  if (arr.length !== undefined) {\n    return arr.length;\n  }\n\n  if (arr.byteLength !== undefined) {\n    return arr.byteLength;\n  }\n\n  unreachable(\"Invalid argument for arrayByteLength\");\n}\n\nfunction arraysToBytes(arr) {\n  const length = arr.length;\n\n  if (length === 1 && arr[0] instanceof Uint8Array) {\n    return arr[0];\n  }\n\n  let resultLength = 0;\n\n  for (let i = 0; i < length; i++) {\n    resultLength += arrayByteLength(arr[i]);\n  }\n\n  let pos = 0;\n  const data = new Uint8Array(resultLength);\n\n  for (let i = 0; i < length; i++) {\n    let item = arr[i];\n\n    if (!(item instanceof Uint8Array)) {\n      if (typeof item === \"string\") {\n        item = stringToBytes(item);\n      } else {\n        item = new Uint8Array(item);\n      }\n    }\n\n    const itemLength = item.byteLength;\n    data.set(item, pos);\n    pos += itemLength;\n  }\n\n  return data;\n}\n\nfunction string32(value) {\n  return String.fromCharCode(value >> 24 & 0xff, value >> 16 & 0xff, value >> 8 & 0xff, value & 0xff);\n}\n\nfunction objectSize(obj) {\n  return Object.keys(obj).length;\n}\n\nfunction objectFromMap(map) {\n  const obj = Object.create(null);\n\n  for (const [key, value] of map) {\n    obj[key] = value;\n  }\n\n  return obj;\n}\n\nfunction isLittleEndian() {\n  const buffer8 = new Uint8Array(4);\n  buffer8[0] = 1;\n  const view32 = new Uint32Array(buffer8.buffer, 0, 1);\n  return view32[0] === 1;\n}\n\nconst IsLittleEndianCached = {\n  get value() {\n    return shadow(this, \"value\", isLittleEndian());\n  }\n\n};\nexports.IsLittleEndianCached = IsLittleEndianCached;\n\nfunction isEvalSupported() {\n  try {\n    new Function(\"\");\n    return true;\n  } catch (e) {\n    return false;\n  }\n}\n\nconst IsEvalSupportedCached = {\n  get value() {\n    return shadow(this, \"value\", isEvalSupported());\n  }\n\n};\nexports.IsEvalSupportedCached = IsEvalSupportedCached;\nconst hexNumbers = [...Array(256).keys()].map(n => n.toString(16).padStart(2, \"0\"));\n\nclass Util {\n  static makeHexColor(r, g, b) {\n    return `#${hexNumbers[r]}${hexNumbers[g]}${hexNumbers[b]}`;\n  }\n\n  static transform(m1, m2) {\n    return [m1[0] * m2[0] + m1[2] * m2[1], m1[1] * m2[0] + m1[3] * m2[1], m1[0] * m2[2] + m1[2] * m2[3], m1[1] * m2[2] + m1[3] * m2[3], m1[0] * m2[4] + m1[2] * m2[5] + m1[4], m1[1] * m2[4] + m1[3] * m2[5] + m1[5]];\n  }\n\n  static applyTransform(p, m) {\n    const xt = p[0] * m[0] + p[1] * m[2] + m[4];\n    const yt = p[0] * m[1] + p[1] * m[3] + m[5];\n    return [xt, yt];\n  }\n\n  static applyInverseTransform(p, m) {\n    const d = m[0] * m[3] - m[1] * m[2];\n    const xt = (p[0] * m[3] - p[1] * m[2] + m[2] * m[5] - m[4] * m[3]) / d;\n    const yt = (-p[0] * m[1] + p[1] * m[0] + m[4] * m[1] - m[5] * m[0]) / d;\n    return [xt, yt];\n  }\n\n  static getAxialAlignedBoundingBox(r, m) {\n    const p1 = Util.applyTransform(r, m);\n    const p2 = Util.applyTransform(r.slice(2, 4), m);\n    const p3 = Util.applyTransform([r[0], r[3]], m);\n    const p4 = Util.applyTransform([r[2], r[1]], m);\n    return [Math.min(p1[0], p2[0], p3[0], p4[0]), Math.min(p1[1], p2[1], p3[1], p4[1]), Math.max(p1[0], p2[0], p3[0], p4[0]), Math.max(p1[1], p2[1], p3[1], p4[1])];\n  }\n\n  static inverseTransform(m) {\n    const d = m[0] * m[3] - m[1] * m[2];\n    return [m[3] / d, -m[1] / d, -m[2] / d, m[0] / d, (m[2] * m[5] - m[4] * m[3]) / d, (m[4] * m[1] - m[5] * m[0]) / d];\n  }\n\n  static apply3dTransform(m, v) {\n    return [m[0] * v[0] + m[1] * v[1] + m[2] * v[2], m[3] * v[0] + m[4] * v[1] + m[5] * v[2], m[6] * v[0] + m[7] * v[1] + m[8] * v[2]];\n  }\n\n  static singularValueDecompose2dScale(m) {\n    const transpose = [m[0], m[2], m[1], m[3]];\n    const a = m[0] * transpose[0] + m[1] * transpose[2];\n    const b = m[0] * transpose[1] + m[1] * transpose[3];\n    const c = m[2] * transpose[0] + m[3] * transpose[2];\n    const d = m[2] * transpose[1] + m[3] * transpose[3];\n    const first = (a + d) / 2;\n    const second = Math.sqrt((a + d) ** 2 - 4 * (a * d - c * b)) / 2;\n    const sx = first + second || 1;\n    const sy = first - second || 1;\n    return [Math.sqrt(sx), Math.sqrt(sy)];\n  }\n\n  static normalizeRect(rect) {\n    const r = rect.slice(0);\n\n    if (rect[0] > rect[2]) {\n      r[0] = rect[2];\n      r[2] = rect[0];\n    }\n\n    if (rect[1] > rect[3]) {\n      r[1] = rect[3];\n      r[3] = rect[1];\n    }\n\n    return r;\n  }\n\n  static intersect(rect1, rect2) {\n    function compare(a, b) {\n      return a - b;\n    }\n\n    const orderedX = [rect1[0], rect1[2], rect2[0], rect2[2]].sort(compare);\n    const orderedY = [rect1[1], rect1[3], rect2[1], rect2[3]].sort(compare);\n    const result = [];\n    rect1 = Util.normalizeRect(rect1);\n    rect2 = Util.normalizeRect(rect2);\n\n    if (orderedX[0] === rect1[0] && orderedX[1] === rect2[0] || orderedX[0] === rect2[0] && orderedX[1] === rect1[0]) {\n      result[0] = orderedX[1];\n      result[2] = orderedX[2];\n    } else {\n      return null;\n    }\n\n    if (orderedY[0] === rect1[1] && orderedY[1] === rect2[1] || orderedY[0] === rect2[1] && orderedY[1] === rect1[1]) {\n      result[1] = orderedY[1];\n      result[3] = orderedY[2];\n    } else {\n      return null;\n    }\n\n    return result;\n  }\n\n  static bezierBoundingBox(x0, y0, x1, y1, x2, y2, x3, y3) {\n    const tvalues = [],\n          bounds = [[], []];\n    let a, b, c, t, t1, t2, b2ac, sqrtb2ac;\n\n    for (let i = 0; i < 2; ++i) {\n      if (i === 0) {\n        b = 6 * x0 - 12 * x1 + 6 * x2;\n        a = -3 * x0 + 9 * x1 - 9 * x2 + 3 * x3;\n        c = 3 * x1 - 3 * x0;\n      } else {\n        b = 6 * y0 - 12 * y1 + 6 * y2;\n        a = -3 * y0 + 9 * y1 - 9 * y2 + 3 * y3;\n        c = 3 * y1 - 3 * y0;\n      }\n\n      if (Math.abs(a) < 1e-12) {\n        if (Math.abs(b) < 1e-12) {\n          continue;\n        }\n\n        t = -c / b;\n\n        if (0 < t && t < 1) {\n          tvalues.push(t);\n        }\n\n        continue;\n      }\n\n      b2ac = b * b - 4 * c * a;\n      sqrtb2ac = Math.sqrt(b2ac);\n\n      if (b2ac < 0) {\n        continue;\n      }\n\n      t1 = (-b + sqrtb2ac) / (2 * a);\n\n      if (0 < t1 && t1 < 1) {\n        tvalues.push(t1);\n      }\n\n      t2 = (-b - sqrtb2ac) / (2 * a);\n\n      if (0 < t2 && t2 < 1) {\n        tvalues.push(t2);\n      }\n    }\n\n    let j = tvalues.length,\n        mt;\n    const jlen = j;\n\n    while (j--) {\n      t = tvalues[j];\n      mt = 1 - t;\n      bounds[0][j] = mt * mt * mt * x0 + 3 * mt * mt * t * x1 + 3 * mt * t * t * x2 + t * t * t * x3;\n      bounds[1][j] = mt * mt * mt * y0 + 3 * mt * mt * t * y1 + 3 * mt * t * t * y2 + t * t * t * y3;\n    }\n\n    bounds[0][jlen] = x0;\n    bounds[1][jlen] = y0;\n    bounds[0][jlen + 1] = x3;\n    bounds[1][jlen + 1] = y3;\n    bounds[0].length = bounds[1].length = jlen + 2;\n    return [Math.min(...bounds[0]), Math.min(...bounds[1]), Math.max(...bounds[0]), Math.max(...bounds[1])];\n  }\n\n}\n\nexports.Util = Util;\nconst PDFStringTranslateTable = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x2d8, 0x2c7, 0x2c6, 0x2d9, 0x2dd, 0x2db, 0x2da, 0x2dc, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x2022, 0x2020, 0x2021, 0x2026, 0x2014, 0x2013, 0x192, 0x2044, 0x2039, 0x203a, 0x2212, 0x2030, 0x201e, 0x201c, 0x201d, 0x2018, 0x2019, 0x201a, 0x2122, 0xfb01, 0xfb02, 0x141, 0x152, 0x160, 0x178, 0x17d, 0x131, 0x142, 0x153, 0x161, 0x17e, 0, 0x20ac];\n\nfunction stringToPDFString(str) {\n  if (str[0] >= \"\\xEF\") {\n    let encoding;\n\n    if (str[0] === \"\\xFE\" && str[1] === \"\\xFF\") {\n      encoding = \"utf-16be\";\n    } else if (str[0] === \"\\xFF\" && str[1] === \"\\xFE\") {\n      encoding = \"utf-16le\";\n    } else if (str[0] === \"\\xEF\" && str[1] === \"\\xBB\" && str[2] === \"\\xBF\") {\n      encoding = \"utf-8\";\n    }\n\n    if (encoding) {\n      try {\n        const decoder = new TextDecoder(encoding, {\n          fatal: true\n        });\n        const buffer = stringToBytes(str);\n        return decoder.decode(buffer);\n      } catch (ex) {\n        warn(`stringToPDFString: \"${ex}\".`);\n      }\n    }\n  }\n\n  const strBuf = [];\n\n  for (let i = 0, ii = str.length; i < ii; i++) {\n    const code = PDFStringTranslateTable[str.charCodeAt(i)];\n    strBuf.push(code ? String.fromCharCode(code) : str.charAt(i));\n  }\n\n  return strBuf.join(\"\");\n}\n\nfunction escapeString(str) {\n  return str.replace(/([()\\\\\\n\\r])/g, match => {\n    if (match === \"\\n\") {\n      return \"\\\\n\";\n    } else if (match === \"\\r\") {\n      return \"\\\\r\";\n    }\n\n    return `\\\\${match}`;\n  });\n}\n\nfunction isAscii(str) {\n  return /^[\\x00-\\x7F]*$/.test(str);\n}\n\nfunction stringToUTF16BEString(str) {\n  const buf = [\"\\xFE\\xFF\"];\n\n  for (let i = 0, ii = str.length; i < ii; i++) {\n    const char = str.charCodeAt(i);\n    buf.push(String.fromCharCode(char >> 8 & 0xff), String.fromCharCode(char & 0xff));\n  }\n\n  return buf.join(\"\");\n}\n\nfunction stringToUTF8String(str) {\n  return decodeURIComponent(escape(str));\n}\n\nfunction utf8StringToString(str) {\n  return unescape(encodeURIComponent(str));\n}\n\nfunction isArrayBuffer(v) {\n  return typeof v === \"object\" && v !== null && v.byteLength !== undefined;\n}\n\nfunction isArrayEqual(arr1, arr2) {\n  if (arr1.length !== arr2.length) {\n    return false;\n  }\n\n  for (let i = 0, ii = arr1.length; i < ii; i++) {\n    if (arr1[i] !== arr2[i]) {\n      return false;\n    }\n  }\n\n  return true;\n}\n\nfunction getModificationDate(date = new Date()) {\n  const buffer = [date.getUTCFullYear().toString(), (date.getUTCMonth() + 1).toString().padStart(2, \"0\"), date.getUTCDate().toString().padStart(2, \"0\"), date.getUTCHours().toString().padStart(2, \"0\"), date.getUTCMinutes().toString().padStart(2, \"0\"), date.getUTCSeconds().toString().padStart(2, \"0\")];\n  return buffer.join(\"\");\n}\n\nfunction createPromiseCapability() {\n  const capability = Object.create(null);\n  let isSettled = false;\n  Object.defineProperty(capability, \"settled\", {\n    get() {\n      return isSettled;\n    }\n\n  });\n  capability.promise = new Promise(function (resolve, reject) {\n    capability.resolve = function (data) {\n      isSettled = true;\n      resolve(data);\n    };\n\n    capability.reject = function (reason) {\n      isSettled = true;\n      reject(reason);\n    };\n  });\n  return capability;\n}\n\n/***/ }),\n/* 2 */\n/***/ ((__unused_webpack_module, __unused_webpack_exports, __w_pdfjs_require__) => {\n\n\n\nvar _is_node = __w_pdfjs_require__(3);\n\n;\n\n/***/ }),\n/* 3 */\n/***/ ((__unused_webpack_module, exports) => {\n\n\n\nObject.defineProperty(exports, \"__esModule\", ({\n  value: true\n}));\nexports.isNodeJS = void 0;\nconst isNodeJS = typeof process === \"object\" && process + \"\" === \"[object process]\" && !process.versions.nw && !(process.versions.electron && process.type && process.type !== \"browser\");\nexports.isNodeJS = isNodeJS;\n\n/***/ }),\n/* 4 */\n/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {\n\n\n\nObject.defineProperty(exports, \"__esModule\", ({\n  value: true\n}));\nexports.build = exports.RenderTask = exports.PDFWorkerUtil = exports.PDFWorker = exports.PDFPageProxy = exports.PDFDocumentProxy = exports.PDFDocumentLoadingTask = exports.PDFDataRangeTransport = exports.LoopbackPort = exports.DefaultStandardFontDataFactory = exports.DefaultCanvasFactory = exports.DefaultCMapReaderFactory = void 0;\nexports.getDocument = getDocument;\nexports.setPDFNetworkStreamFactory = setPDFNetworkStreamFactory;\nexports.version = void 0;\n\nvar _util = __w_pdfjs_require__(1);\n\nvar _display_utils = __w_pdfjs_require__(5);\n\nvar _font_loader = __w_pdfjs_require__(7);\n\nvar _node_utils = __w_pdfjs_require__(8);\n\nvar _annotation_storage = __w_pdfjs_require__(9);\n\nvar _canvas = __w_pdfjs_require__(10);\n\nvar _worker_options = __w_pdfjs_require__(12);\n\nvar _is_node = __w_pdfjs_require__(3);\n\nvar _message_handler = __w_pdfjs_require__(13);\n\nvar _metadata = __w_pdfjs_require__(14);\n\nvar _optional_content_config = __w_pdfjs_require__(15);\n\nvar _transport_stream = __w_pdfjs_require__(16);\n\nvar _xfa_text = __w_pdfjs_require__(17);\n\nconst DEFAULT_RANGE_CHUNK_SIZE = 65536;\nconst RENDERING_CANCELLED_TIMEOUT = 100;\nconst DefaultCanvasFactory = _is_node.isNodeJS ? _node_utils.NodeCanvasFactory : _display_utils.DOMCanvasFactory;\nexports.DefaultCanvasFactory = DefaultCanvasFactory;\nconst DefaultCMapReaderFactory = _is_node.isNodeJS ? _node_utils.NodeCMapReaderFactory : _display_utils.DOMCMapReaderFactory;\nexports.DefaultCMapReaderFactory = DefaultCMapReaderFactory;\nconst DefaultStandardFontDataFactory = _is_node.isNodeJS ? _node_utils.NodeStandardFontDataFactory : _display_utils.DOMStandardFontDataFactory;\nexports.DefaultStandardFontDataFactory = DefaultStandardFontDataFactory;\nlet createPDFNetworkStream;\n\nfunction setPDFNetworkStreamFactory(pdfNetworkStreamFactory) {\n  createPDFNetworkStream = pdfNetworkStreamFactory;\n}\n\nfunction getDocument(src) {\n  const task = new PDFDocumentLoadingTask();\n  let source;\n\n  if (typeof src === \"string\" || src instanceof URL) {\n    source = {\n      url: src\n    };\n  } else if ((0, _util.isArrayBuffer)(src)) {\n    source = {\n      data: src\n    };\n  } else if (src instanceof PDFDataRangeTransport) {\n    source = {\n      range: src\n    };\n  } else {\n    if (typeof src !== \"object\") {\n      throw new Error(\"Invalid parameter in getDocument, \" + \"need either string, URL, Uint8Array, or parameter object.\");\n    }\n\n    if (!src.url && !src.data && !src.range) {\n      throw new Error(\"Invalid parameter object: need either .data, .range or .url\");\n    }\n\n    source = src;\n  }\n\n  const params = Object.create(null);\n  let rangeTransport = null,\n      worker = null;\n\n  for (const key in source) {\n    const value = source[key];\n\n    switch (key) {\n      case \"url\":\n        if (typeof window !== \"undefined\") {\n          try {\n            params[key] = new URL(value, window.location).href;\n            continue;\n          } catch (ex) {\n            (0, _util.warn)(`Cannot create valid URL: \"${ex}\".`);\n          }\n        } else if (typeof value === \"string\" || value instanceof URL) {\n          params[key] = value.toString();\n          continue;\n        }\n\n        throw new Error(\"Invalid PDF url data: \" + \"either string or URL-object is expected in the url property.\");\n\n      case \"range\":\n        rangeTransport = value;\n        continue;\n\n      case \"worker\":\n        worker = value;\n        continue;\n\n      case \"data\":\n        if (_is_node.isNodeJS && typeof Buffer !== \"undefined\" && value instanceof Buffer) {\n          params[key] = new Uint8Array(value);\n        } else if (value instanceof Uint8Array) {\n          break;\n        } else if (typeof value === \"string\") {\n          params[key] = (0, _util.stringToBytes)(value);\n        } else if (typeof value === \"object\" && value !== null && !isNaN(value.length)) {\n          params[key] = new Uint8Array(value);\n        } else if ((0, _util.isArrayBuffer)(value)) {\n          params[key] = new Uint8Array(value);\n        } else {\n          throw new Error(\"Invalid PDF binary data: either typed array, \" + \"string, or array-like object is expected in the data property.\");\n        }\n\n        continue;\n    }\n\n    params[key] = value;\n  }\n\n  params.rangeChunkSize = params.rangeChunkSize || DEFAULT_RANGE_CHUNK_SIZE;\n  params.CMapReaderFactory = params.CMapReaderFactory || DefaultCMapReaderFactory;\n  params.StandardFontDataFactory = params.StandardFontDataFactory || DefaultStandardFontDataFactory;\n  params.ignoreErrors = params.stopAtErrors !== true;\n  params.fontExtraProperties = params.fontExtraProperties === true;\n  params.pdfBug = params.pdfBug === true;\n  params.enableXfa = params.enableXfa === true;\n\n  if (typeof params.docBaseUrl !== \"string\" || (0, _display_utils.isDataScheme)(params.docBaseUrl)) {\n    params.docBaseUrl = null;\n  }\n\n  if (!Number.isInteger(params.maxImageSize)) {\n    params.maxImageSize = -1;\n  }\n\n  if (typeof params.cMapUrl !== \"string\") {\n    params.cMapUrl = null;\n  }\n\n  if (typeof params.standardFontDataUrl !== \"string\") {\n    params.standardFontDataUrl = null;\n  }\n\n  if (typeof params.useWorkerFetch !== \"boolean\") {\n    params.useWorkerFetch = params.CMapReaderFactory === _display_utils.DOMCMapReaderFactory && params.StandardFontDataFactory === _display_utils.DOMStandardFontDataFactory;\n  }\n\n  if (typeof params.isEvalSupported !== \"boolean\") {\n    params.isEvalSupported = true;\n  }\n\n  if (typeof params.disableFontFace !== \"boolean\") {\n    params.disableFontFace = _is_node.isNodeJS;\n  }\n\n  if (typeof params.useSystemFonts !== \"boolean\") {\n    params.useSystemFonts = !_is_node.isNodeJS && !params.disableFontFace;\n  }\n\n  if (typeof params.ownerDocument === \"undefined\") {\n    params.ownerDocument = globalThis.document;\n  }\n\n  if (typeof params.disableRange !== \"boolean\") {\n    params.disableRange = false;\n  }\n\n  if (typeof params.disableStream !== \"boolean\") {\n    params.disableStream = false;\n  }\n\n  if (typeof params.disableAutoFetch !== \"boolean\") {\n    params.disableAutoFetch = false;\n  }\n\n  (0, _util.setVerbosityLevel)(params.verbosity);\n\n  if (!worker) {\n    const workerParams = {\n      verbosity: params.verbosity,\n      port: _worker_options.GlobalWorkerOptions.workerPort\n    };\n    worker = workerParams.port ? PDFWorker.fromPort(workerParams) : new PDFWorker(workerParams);\n    task._worker = worker;\n  }\n\n  const docId = task.docId;\n  worker.promise.then(function () {\n    if (task.destroyed) {\n      throw new Error(\"Loading aborted\");\n    }\n\n    const workerIdPromise = _fetchDocument(worker, params, rangeTransport, docId);\n\n    const networkStreamPromise = new Promise(function (resolve) {\n      let networkStream;\n\n      if (rangeTransport) {\n        networkStream = new _transport_stream.PDFDataTransportStream({\n          length: params.length,\n          initialData: params.initialData,\n          progressiveDone: params.progressiveDone,\n          contentDispositionFilename: params.contentDispositionFilename,\n          disableRange: params.disableRange,\n          disableStream: params.disableStream\n        }, rangeTransport);\n      } else if (!params.data) {\n        networkStream = createPDFNetworkStream({\n          url: params.url,\n          length: params.length,\n          httpHeaders: params.httpHeaders,\n          withCredentials: params.withCredentials,\n          rangeChunkSize: params.rangeChunkSize,\n          disableRange: params.disableRange,\n          disableStream: params.disableStream\n        });\n      }\n\n      resolve(networkStream);\n    });\n    return Promise.all([workerIdPromise, networkStreamPromise]).then(function ([workerId, networkStream]) {\n      if (task.destroyed) {\n        throw new Error(\"Loading aborted\");\n      }\n\n      const messageHandler = new _message_handler.MessageHandler(docId, workerId, worker.port);\n      const transport = new WorkerTransport(messageHandler, task, networkStream, params);\n      task._transport = transport;\n      messageHandler.send(\"Ready\", null);\n    });\n  }).catch(task._capability.reject);\n  return task;\n}\n\nasync function _fetchDocument(worker, source, pdfDataRangeTransport, docId) {\n  if (worker.destroyed) {\n    throw new Error(\"Worker was destroyed\");\n  }\n\n  if (pdfDataRangeTransport) {\n    source.length = pdfDataRangeTransport.length;\n    source.initialData = pdfDataRangeTransport.initialData;\n    source.progressiveDone = pdfDataRangeTransport.progressiveDone;\n    source.contentDispositionFilename = pdfDataRangeTransport.contentDispositionFilename;\n  }\n\n  const workerId = await worker.messageHandler.sendWithPromise(\"GetDocRequest\", {\n    docId,\n    apiVersion: '2.14.73',\n    source: {\n      data: source.data,\n      url: source.url,\n      password: source.password,\n      disableAutoFetch: source.disableAutoFetch,\n      rangeChunkSize: source.rangeChunkSize,\n      length: source.length\n    },\n    maxImageSize: source.maxImageSize,\n    disableFontFace: source.disableFontFace,\n    docBaseUrl: source.docBaseUrl,\n    ignoreErrors: source.ignoreErrors,\n    isEvalSupported: source.isEvalSupported,\n    fontExtraProperties: source.fontExtraProperties,\n    enableXfa: source.enableXfa,\n    useSystemFonts: source.useSystemFonts,\n    cMapUrl: source.useWorkerFetch ? source.cMapUrl : null,\n    standardFontDataUrl: source.useWorkerFetch ? source.standardFontDataUrl : null\n  });\n\n  if (worker.destroyed) {\n    throw new Error(\"Worker was destroyed\");\n  }\n\n  return workerId;\n}\n\nclass PDFDocumentLoadingTask {\n  static get idCounters() {\n    return (0, _util.shadow)(this, \"idCounters\", {\n      doc: 0\n    });\n  }\n\n  constructor() {\n    this._capability = (0, _util.createPromiseCapability)();\n    this._transport = null;\n    this._worker = null;\n    this.docId = `d${PDFDocumentLoadingTask.idCounters.doc++}`;\n    this.destroyed = false;\n    this.onPassword = null;\n    this.onProgress = null;\n    this.onUnsupportedFeature = null;\n  }\n\n  get promise() {\n    return this._capability.promise;\n  }\n\n  async destroy() {\n    this.destroyed = true;\n    await this._transport?.destroy();\n    this._transport = null;\n\n    if (this._worker) {\n      this._worker.destroy();\n\n      this._worker = null;\n    }\n  }\n\n}\n\nexports.PDFDocumentLoadingTask = PDFDocumentLoadingTask;\n\nclass PDFDataRangeTransport {\n  constructor(length, initialData, progressiveDone = false, contentDispositionFilename = null) {\n    this.length = length;\n    this.initialData = initialData;\n    this.progressiveDone = progressiveDone;\n    this.contentDispositionFilename = contentDispositionFilename;\n    this._rangeListeners = [];\n    this._progressListeners = [];\n    this._progressiveReadListeners = [];\n    this._progressiveDoneListeners = [];\n    this._readyCapability = (0, _util.createPromiseCapability)();\n  }\n\n  addRangeListener(listener) {\n    this._rangeListeners.push(listener);\n  }\n\n  addProgressListener(listener) {\n    this._progressListeners.push(listener);\n  }\n\n  addProgressiveReadListener(listener) {\n    this._progressiveReadListeners.push(listener);\n  }\n\n  addProgressiveDoneListener(listener) {\n    this._progressiveDoneListeners.push(listener);\n  }\n\n  onDataRange(begin, chunk) {\n    for (const listener of this._rangeListeners) {\n      listener(begin, chunk);\n    }\n  }\n\n  onDataProgress(loaded, total) {\n    this._readyCapability.promise.then(() => {\n      for (const listener of this._progressListeners) {\n        listener(loaded, total);\n      }\n    });\n  }\n\n  onDataProgressiveRead(chunk) {\n    this._readyCapability.promise.then(() => {\n      for (const listener of this._progressiveReadListeners) {\n        listener(chunk);\n      }\n    });\n  }\n\n  onDataProgressiveDone() {\n    this._readyCapability.promise.then(() => {\n      for (const listener of this._progressiveDoneListeners) {\n        listener();\n      }\n    });\n  }\n\n  transportReady() {\n    this._readyCapability.resolve();\n  }\n\n  requestDataRange(begin, end) {\n    (0, _util.unreachable)(\"Abstract method PDFDataRangeTransport.requestDataRange\");\n  }\n\n  abort() {}\n\n}\n\nexports.PDFDataRangeTransport = PDFDataRangeTransport;\n\nclass PDFDocumentProxy {\n  constructor(pdfInfo, transport) {\n    this._pdfInfo = pdfInfo;\n    this._transport = transport;\n    Object.defineProperty(this, \"fingerprint\", {\n      get() {\n        (0, _display_utils.deprecated)(\"`PDFDocumentProxy.fingerprint`, \" + \"please use `PDFDocumentProxy.fingerprints` instead.\");\n        return this.fingerprints[0];\n      }\n\n    });\n    Object.defineProperty(this, \"getStats\", {\n      value: async () => {\n        (0, _display_utils.deprecated)(\"`PDFDocumentProxy.getStats`, \" + \"please use the `PDFDocumentProxy.stats`-getter instead.\");\n        return this.stats || {\n          streamTypes: {},\n          fontTypes: {}\n        };\n      }\n    });\n  }\n\n  get annotationStorage() {\n    return this._transport.annotationStorage;\n  }\n\n  get numPages() {\n    return this._pdfInfo.numPages;\n  }\n\n  get fingerprints() {\n    return this._pdfInfo.fingerprints;\n  }\n\n  get stats() {\n    return this._transport.stats;\n  }\n\n  get isPureXfa() {\n    return !!this._transport._htmlForXfa;\n  }\n\n  get allXfaHtml() {\n    return this._transport._htmlForXfa;\n  }\n\n  getPage(pageNumber) {\n    return this._transport.getPage(pageNumber);\n  }\n\n  getPageIndex(ref) {\n    return this._transport.getPageIndex(ref);\n  }\n\n  getDestinations() {\n    return this._transport.getDestinations();\n  }\n\n  getDestination(id) {\n    return this._transport.getDestination(id);\n  }\n\n  getPageLabels() {\n    return this._transport.getPageLabels();\n  }\n\n  getPageLayout() {\n    return this._transport.getPageLayout();\n  }\n\n  getPageMode() {\n    return this._transport.getPageMode();\n  }\n\n  getViewerPreferences() {\n    return this._transport.getViewerPreferences();\n  }\n\n  getOpenAction() {\n    return this._transport.getOpenAction();\n  }\n\n  getAttachments() {\n    return this._transport.getAttachments();\n  }\n\n  getJavaScript() {\n    return this._transport.getJavaScript();\n  }\n\n  getJSActions() {\n    return this._transport.getDocJSActions();\n  }\n\n  getOutline() {\n    return this._transport.getOutline();\n  }\n\n  getOptionalContentConfig() {\n    return this._transport.getOptionalContentConfig();\n  }\n\n  getPermissions() {\n    return this._transport.getPermissions();\n  }\n\n  getMetadata() {\n    return this._transport.getMetadata();\n  }\n\n  getMarkInfo() {\n    return this._transport.getMarkInfo();\n  }\n\n  getData() {\n    return this._transport.getData();\n  }\n\n  getDownloadInfo() {\n    return this._transport.downloadInfoCapability.promise;\n  }\n\n  cleanup(keepLoadedFonts = false) {\n    return this._transport.startCleanup(keepLoadedFonts || this.isPureXfa);\n  }\n\n  destroy() {\n    return this.loadingTask.destroy();\n  }\n\n  get loadingParams() {\n    return this._transport.loadingParams;\n  }\n\n  get loadingTask() {\n    return this._transport.loadingTask;\n  }\n\n  saveDocument() {\n    if (this._transport.annotationStorage.size <= 0) {\n      (0, _display_utils.deprecated)(\"saveDocument called while `annotationStorage` is empty, \" + \"please use the getData-method instead.\");\n    }\n\n    return this._transport.saveDocument();\n  }\n\n  getFieldObjects() {\n    return this._transport.getFieldObjects();\n  }\n\n  hasJSActions() {\n    return this._transport.hasJSActions();\n  }\n\n  getCalculationOrderIds() {\n    return this._transport.getCalculationOrderIds();\n  }\n\n}\n\nexports.PDFDocumentProxy = PDFDocumentProxy;\n\nclass PDFPageProxy {\n  constructor(pageIndex, pageInfo, transport, ownerDocument, pdfBug = false) {\n    this._pageIndex = pageIndex;\n    this._pageInfo = pageInfo;\n    this._ownerDocument = ownerDocument;\n    this._transport = transport;\n    this._stats = pdfBug ? new _display_utils.StatTimer() : null;\n    this._pdfBug = pdfBug;\n    this.commonObjs = transport.commonObjs;\n    this.objs = new PDFObjects();\n    this.cleanupAfterRender = false;\n    this.pendingCleanup = false;\n    this._intentStates = new Map();\n    this._annotationPromises = new Map();\n    this.destroyed = false;\n  }\n\n  get pageNumber() {\n    return this._pageIndex + 1;\n  }\n\n  get rotate() {\n    return this._pageInfo.rotate;\n  }\n\n  get ref() {\n    return this._pageInfo.ref;\n  }\n\n  get userUnit() {\n    return this._pageInfo.userUnit;\n  }\n\n  get view() {\n    return this._pageInfo.view;\n  }\n\n  getViewport({\n    scale,\n    rotation = this.rotate,\n    offsetX = 0,\n    offsetY = 0,\n    dontFlip = false\n  } = {}) {\n    return new _display_utils.PageViewport({\n      viewBox: this.view,\n      scale,\n      rotation,\n      offsetX,\n      offsetY,\n      dontFlip\n    });\n  }\n\n  getAnnotations({\n    intent = \"display\"\n  } = {}) {\n    const intentArgs = this._transport.getRenderingIntent(intent);\n\n    let promise = this._annotationPromises.get(intentArgs.cacheKey);\n\n    if (!promise) {\n      promise = this._transport.getAnnotations(this._pageIndex, intentArgs.renderingIntent);\n\n      this._annotationPromises.set(intentArgs.cacheKey, promise);\n\n      promise = promise.then(annotations => {\n        for (const annotation of annotations) {\n          if (annotation.titleObj !== undefined) {\n            Object.defineProperty(annotation, \"title\", {\n              get() {\n                (0, _display_utils.deprecated)(\"`title`-property on annotation, please use `titleObj` instead.\");\n                return annotation.titleObj.str;\n              }\n\n            });\n          }\n\n          if (annotation.contentsObj !== undefined) {\n            Object.defineProperty(annotation, \"contents\", {\n              get() {\n                (0, _display_utils.deprecated)(\"`contents`-property on annotation, please use `contentsObj` instead.\");\n                return annotation.contentsObj.str;\n              }\n\n            });\n          }\n        }\n\n        return annotations;\n      });\n    }\n\n    return promise;\n  }\n\n  getJSActions() {\n    return this._jsActionsPromise ||= this._transport.getPageJSActions(this._pageIndex);\n  }\n\n  async getXfa() {\n    return this._transport._htmlForXfa?.children[this._pageIndex] || null;\n  }\n\n  render({\n    canvasContext,\n    viewport,\n    intent = \"display\",\n    annotationMode = _util.AnnotationMode.ENABLE,\n    transform = null,\n    imageLayer = null,\n    canvasFactory = null,\n    background = null,\n    optionalContentConfigPromise = null,\n    annotationCanvasMap = null\n  }) {\n    if (arguments[0]?.renderInteractiveForms !== undefined) {\n      (0, _display_utils.deprecated)(\"render no longer accepts the `renderInteractiveForms`-option, \" + \"please use the `annotationMode`-option instead.\");\n\n      if (arguments[0].renderInteractiveForms === true && annotationMode === _util.AnnotationMode.ENABLE) {\n        annotationMode = _util.AnnotationMode.ENABLE_FORMS;\n      }\n    }\n\n    if (arguments[0]?.includeAnnotationStorage !== undefined) {\n      (0, _display_utils.deprecated)(\"render no longer accepts the `includeAnnotationStorage`-option, \" + \"please use the `annotationMode`-option instead.\");\n\n      if (arguments[0].includeAnnotationStorage === true && annotationMode === _util.AnnotationMode.ENABLE) {\n        annotationMode = _util.AnnotationMode.ENABLE_STORAGE;\n      }\n    }\n\n    if (this._stats) {\n      this._stats.time(\"Overall\");\n    }\n\n    const intentArgs = this._transport.getRenderingIntent(intent, annotationMode);\n\n    this.pendingCleanup = false;\n\n    if (!optionalContentConfigPromise) {\n      optionalContentConfigPromise = this._transport.getOptionalContentConfig();\n    }\n\n    let intentState = this._intentStates.get(intentArgs.cacheKey);\n\n    if (!intentState) {\n      intentState = Object.create(null);\n\n      this._intentStates.set(intentArgs.cacheKey, intentState);\n    }\n\n    if (intentState.streamReaderCancelTimeout) {\n      clearTimeout(intentState.streamReaderCancelTimeout);\n      intentState.streamReaderCancelTimeout = null;\n    }\n\n    const canvasFactoryInstance = canvasFactory || new DefaultCanvasFactory({\n      ownerDocument: this._ownerDocument\n    });\n    const intentPrint = !!(intentArgs.renderingIntent & _util.RenderingIntentFlag.PRINT);\n\n    if (!intentState.displayReadyCapability) {\n      intentState.displayReadyCapability = (0, _util.createPromiseCapability)();\n      intentState.operatorList = {\n        fnArray: [],\n        argsArray: [],\n        lastChunk: false\n      };\n\n      if (this._stats) {\n        this._stats.time(\"Page Request\");\n      }\n\n      this._pumpOperatorList(intentArgs);\n    }\n\n    const complete = error => {\n      intentState.renderTasks.delete(internalRenderTask);\n\n      if (this.cleanupAfterRender || intentPrint) {\n        this.pendingCleanup = true;\n      }\n\n      this._tryCleanup();\n\n      if (error) {\n        internalRenderTask.capability.reject(error);\n\n        this._abortOperatorList({\n          intentState,\n          reason: error instanceof Error ? error : new Error(error)\n        });\n      } else {\n        internalRenderTask.capability.resolve();\n      }\n\n      if (this._stats) {\n        this._stats.timeEnd(\"Rendering\");\n\n        this._stats.timeEnd(\"Overall\");\n      }\n    };\n\n    const internalRenderTask = new InternalRenderTask({\n      callback: complete,\n      params: {\n        canvasContext,\n        viewport,\n        transform,\n        imageLayer,\n        background\n      },\n      objs: this.objs,\n      commonObjs: this.commonObjs,\n      annotationCanvasMap,\n      operatorList: intentState.operatorList,\n      pageIndex: this._pageIndex,\n      canvasFactory: canvasFactoryInstance,\n      useRequestAnimationFrame: !intentPrint,\n      pdfBug: this._pdfBug\n    });\n    (intentState.renderTasks ||= new Set()).add(internalRenderTask);\n    const renderTask = internalRenderTask.task;\n    Promise.all([intentState.displayReadyCapability.promise, optionalContentConfigPromise]).then(([transparency, optionalContentConfig]) => {\n      if (this.pendingCleanup) {\n        complete();\n        return;\n      }\n\n      if (this._stats) {\n        this._stats.time(\"Rendering\");\n      }\n\n      internalRenderTask.initializeGraphics({\n        transparency,\n        optionalContentConfig\n      });\n      internalRenderTask.operatorListChanged();\n    }).catch(complete);\n    return renderTask;\n  }\n\n  getOperatorList({\n    intent = \"display\",\n    annotationMode = _util.AnnotationMode.ENABLE\n  } = {}) {\n    function operatorListChanged() {\n      if (intentState.operatorList.lastChunk) {\n        intentState.opListReadCapability.resolve(intentState.operatorList);\n        intentState.renderTasks.delete(opListTask);\n      }\n    }\n\n    const intentArgs = this._transport.getRenderingIntent(intent, annotationMode, true);\n\n    let intentState = this._intentStates.get(intentArgs.cacheKey);\n\n    if (!intentState) {\n      intentState = Object.create(null);\n\n      this._intentStates.set(intentArgs.cacheKey, intentState);\n    }\n\n    let opListTask;\n\n    if (!intentState.opListReadCapability) {\n      opListTask = Object.create(null);\n      opListTask.operatorListChanged = operatorListChanged;\n      intentState.opListReadCapability = (0, _util.createPromiseCapability)();\n      (intentState.renderTasks ||= new Set()).add(opListTask);\n      intentState.operatorList = {\n        fnArray: [],\n        argsArray: [],\n        lastChunk: false\n      };\n\n      if (this._stats) {\n        this._stats.time(\"Page Request\");\n      }\n\n      this._pumpOperatorList(intentArgs);\n    }\n\n    return intentState.opListReadCapability.promise;\n  }\n\n  streamTextContent({\n    disableCombineTextItems = false,\n    includeMarkedContent = false\n  } = {}) {\n    const TEXT_CONTENT_CHUNK_SIZE = 100;\n    return this._transport.messageHandler.sendWithStream(\"GetTextContent\", {\n      pageIndex: this._pageIndex,\n      combineTextItems: disableCombineTextItems !== true,\n      includeMarkedContent: includeMarkedContent === true\n    }, {\n      highWaterMark: TEXT_CONTENT_CHUNK_SIZE,\n\n      size(textContent) {\n        return textContent.items.length;\n      }\n\n    });\n  }\n\n  getTextContent(params = {}) {\n    if (this._transport._htmlForXfa) {\n      return this.getXfa().then(xfa => {\n        return _xfa_text.XfaText.textContent(xfa);\n      });\n    }\n\n    const readableStream = this.streamTextContent(params);\n    return new Promise(function (resolve, reject) {\n      function pump() {\n        reader.read().then(function ({\n          value,\n          done\n        }) {\n          if (done) {\n            resolve(textContent);\n            return;\n          }\n\n          Object.assign(textContent.styles, value.styles);\n          textContent.items.push(...value.items);\n          pump();\n        }, reject);\n      }\n\n      const reader = readableStream.getReader();\n      const textContent = {\n        items: [],\n        styles: Object.create(null)\n      };\n      pump();\n    });\n  }\n\n  getStructTree() {\n    return this._structTreePromise ||= this._transport.getStructTree(this._pageIndex);\n  }\n\n  _destroy() {\n    this.destroyed = true;\n    const waitOn = [];\n\n    for (const intentState of this._intentStates.values()) {\n      this._abortOperatorList({\n        intentState,\n        reason: new Error(\"Page was destroyed.\"),\n        force: true\n      });\n\n      if (intentState.opListReadCapability) {\n        continue;\n      }\n\n      for (const internalRenderTask of intentState.renderTasks) {\n        waitOn.push(internalRenderTask.completed);\n        internalRenderTask.cancel();\n      }\n    }\n\n    this.objs.clear();\n\n    this._annotationPromises.clear();\n\n    this._jsActionsPromise = null;\n    this._structTreePromise = null;\n    this.pendingCleanup = false;\n    return Promise.all(waitOn);\n  }\n\n  cleanup(resetStats = false) {\n    this.pendingCleanup = true;\n    return this._tryCleanup(resetStats);\n  }\n\n  _tryCleanup(resetStats = false) {\n    if (!this.pendingCleanup) {\n      return false;\n    }\n\n    for (const {\n      renderTasks,\n      operatorList\n    } of this._intentStates.values()) {\n      if (renderTasks.size > 0 || !operatorList.lastChunk) {\n        return false;\n      }\n    }\n\n    this._intentStates.clear();\n\n    this.objs.clear();\n\n    this._annotationPromises.clear();\n\n    this._jsActionsPromise = null;\n    this._structTreePromise = null;\n\n    if (resetStats && this._stats) {\n      this._stats = new _display_utils.StatTimer();\n    }\n\n    this.pendingCleanup = false;\n    return true;\n  }\n\n  _startRenderPage(transparency, cacheKey) {\n    const intentState = this._intentStates.get(cacheKey);\n\n    if (!intentState) {\n      return;\n    }\n\n    if (this._stats) {\n      this._stats.timeEnd(\"Page Request\");\n    }\n\n    if (intentState.displayReadyCapability) {\n      intentState.displayReadyCapability.resolve(transparency);\n    }\n  }\n\n  _renderPageChunk(operatorListChunk, intentState) {\n    for (let i = 0, ii = operatorListChunk.length; i < ii; i++) {\n      intentState.operatorList.fnArray.push(operatorListChunk.fnArray[i]);\n      intentState.operatorList.argsArray.push(operatorListChunk.argsArray[i]);\n    }\n\n    intentState.operatorList.lastChunk = operatorListChunk.lastChunk;\n\n    for (const internalRenderTask of intentState.renderTasks) {\n      internalRenderTask.operatorListChanged();\n    }\n\n    if (operatorListChunk.lastChunk) {\n      this._tryCleanup();\n    }\n  }\n\n  _pumpOperatorList({\n    renderingIntent,\n    cacheKey\n  }) {\n    const readableStream = this._transport.messageHandler.sendWithStream(\"GetOperatorList\", {\n      pageIndex: this._pageIndex,\n      intent: renderingIntent,\n      cacheKey,\n      annotationStorage: renderingIntent & _util.RenderingIntentFlag.ANNOTATIONS_STORAGE ? this._transport.annotationStorage.serializable : null\n    });\n\n    const reader = readableStream.getReader();\n\n    const intentState = this._intentStates.get(cacheKey);\n\n    intentState.streamReader = reader;\n\n    const pump = () => {\n      reader.read().then(({\n        value,\n        done\n      }) => {\n        if (done) {\n          intentState.streamReader = null;\n          return;\n        }\n\n        if (this._transport.destroyed) {\n          return;\n        }\n\n        this._renderPageChunk(value, intentState);\n\n        pump();\n      }, reason => {\n        intentState.streamReader = null;\n\n        if (this._transport.destroyed) {\n          return;\n        }\n\n        if (intentState.operatorList) {\n          intentState.operatorList.lastChunk = true;\n\n          for (const internalRenderTask of intentState.renderTasks) {\n            internalRenderTask.operatorListChanged();\n          }\n\n          this._tryCleanup();\n        }\n\n        if (intentState.displayReadyCapability) {\n          intentState.displayReadyCapability.reject(reason);\n        } else if (intentState.opListReadCapability) {\n          intentState.opListReadCapability.reject(reason);\n        } else {\n          throw reason;\n        }\n      });\n    };\n\n    pump();\n  }\n\n  _abortOperatorList({\n    intentState,\n    reason,\n    force = false\n  }) {\n    if (!intentState.streamReader) {\n      return;\n    }\n\n    if (!force) {\n      if (intentState.renderTasks.size > 0) {\n        return;\n      }\n\n      if (reason instanceof _display_utils.RenderingCancelledException) {\n        intentState.streamReaderCancelTimeout = setTimeout(() => {\n          this._abortOperatorList({\n            intentState,\n            reason,\n            force: true\n          });\n\n          intentState.streamReaderCancelTimeout = null;\n        }, RENDERING_CANCELLED_TIMEOUT);\n        return;\n      }\n    }\n\n    intentState.streamReader.cancel(new _util.AbortException(reason.message)).catch(() => {});\n    intentState.streamReader = null;\n\n    if (this._transport.destroyed) {\n      return;\n    }\n\n    for (const [curCacheKey, curIntentState] of this._intentStates) {\n      if (curIntentState === intentState) {\n        this._intentStates.delete(curCacheKey);\n\n        break;\n      }\n    }\n\n    this.cleanup();\n  }\n\n  get stats() {\n    return this._stats;\n  }\n\n}\n\nexports.PDFPageProxy = PDFPageProxy;\n\nclass LoopbackPort {\n  constructor() {\n    this._listeners = [];\n    this._deferred = Promise.resolve();\n  }\n\n  postMessage(obj, transfers) {\n    const event = {\n      data: structuredClone(obj, transfers)\n    };\n\n    this._deferred.then(() => {\n      for (const listener of this._listeners) {\n        listener.call(this, event);\n      }\n    });\n  }\n\n  addEventListener(name, listener) {\n    this._listeners.push(listener);\n  }\n\n  removeEventListener(name, listener) {\n    const i = this._listeners.indexOf(listener);\n\n    this._listeners.splice(i, 1);\n  }\n\n  terminate() {\n    this._listeners.length = 0;\n  }\n\n}\n\nexports.LoopbackPort = LoopbackPort;\nconst PDFWorkerUtil = {\n  isWorkerDisabled: false,\n  fallbackWorkerSrc: null,\n  fakeWorkerId: 0\n};\nexports.PDFWorkerUtil = PDFWorkerUtil;\n{\n  if (_is_node.isNodeJS && typeof require === \"function\") {\n    PDFWorkerUtil.isWorkerDisabled = true;\n    PDFWorkerUtil.fallbackWorkerSrc = \"./pdf.worker.js\";\n  } else if (typeof document === \"object\") {\n    const pdfjsFilePath = document?.currentScript?.src;\n\n    if (pdfjsFilePath) {\n      PDFWorkerUtil.fallbackWorkerSrc = pdfjsFilePath.replace(/(\\.(?:min\\.)?js)(\\?.*)?$/i, \".worker$1$2\");\n    }\n  }\n\n  PDFWorkerUtil.isSameOrigin = function (baseUrl, otherUrl) {\n    let base;\n\n    try {\n      base = new URL(baseUrl);\n\n      if (!base.origin || base.origin === \"null\") {\n        return false;\n      }\n    } catch (e) {\n      return false;\n    }\n\n    const other = new URL(otherUrl, base);\n    return base.origin === other.origin;\n  };\n\n  PDFWorkerUtil.createCDNWrapper = function (url) {\n    const wrapper = `importScripts(\"${url}\");`;\n    return URL.createObjectURL(new Blob([wrapper]));\n  };\n}\n\nclass PDFWorker {\n  static get _workerPorts() {\n    return (0, _util.shadow)(this, \"_workerPorts\", new WeakMap());\n  }\n\n  constructor({\n    name = null,\n    port = null,\n    verbosity = (0, _util.getVerbosityLevel)()\n  } = {}) {\n    if (port && PDFWorker._workerPorts.has(port)) {\n      throw new Error(\"Cannot use more than one PDFWorker per port.\");\n    }\n\n    this.name = name;\n    this.destroyed = false;\n    this.verbosity = verbosity;\n    this._readyCapability = (0, _util.createPromiseCapability)();\n    this._port = null;\n    this._webWorker = null;\n    this._messageHandler = null;\n\n    if (port) {\n      PDFWorker._workerPorts.set(port, this);\n\n      this._initializeFromPort(port);\n\n      return;\n    }\n\n    this._initialize();\n  }\n\n  get promise() {\n    return this._readyCapability.promise;\n  }\n\n  get port() {\n    return this._port;\n  }\n\n  get messageHandler() {\n    return this._messageHandler;\n  }\n\n  _initializeFromPort(port) {\n    this._port = port;\n    this._messageHandler = new _message_handler.MessageHandler(\"main\", \"worker\", port);\n\n    this._messageHandler.on(\"ready\", function () {});\n\n    this._readyCapability.resolve();\n  }\n\n  _initialize() {\n    if (typeof Worker !== \"undefined\" && !PDFWorkerUtil.isWorkerDisabled && !PDFWorker._mainThreadWorkerMessageHandler) {\n      let workerSrc = PDFWorker.workerSrc;\n\n      try {\n        if (!PDFWorkerUtil.isSameOrigin(window.location.href, workerSrc)) {\n          workerSrc = PDFWorkerUtil.createCDNWrapper(new URL(workerSrc, window.location).href);\n        }\n\n        const worker = new Worker(workerSrc);\n        const messageHandler = new _message_handler.MessageHandler(\"main\", \"worker\", worker);\n\n        const terminateEarly = () => {\n          worker.removeEventListener(\"error\", onWorkerError);\n          messageHandler.destroy();\n          worker.terminate();\n\n          if (this.destroyed) {\n            this._readyCapability.reject(new Error(\"Worker was destroyed\"));\n          } else {\n            this._setupFakeWorker();\n          }\n        };\n\n        const onWorkerError = () => {\n          if (!this._webWorker) {\n            terminateEarly();\n          }\n        };\n\n        worker.addEventListener(\"error\", onWorkerError);\n        messageHandler.on(\"test\", data => {\n          worker.removeEventListener(\"error\", onWorkerError);\n\n          if (this.destroyed) {\n            terminateEarly();\n            return;\n          }\n\n          if (data) {\n            this._messageHandler = messageHandler;\n            this._port = worker;\n            this._webWorker = worker;\n\n            this._readyCapability.resolve();\n\n            messageHandler.send(\"configure\", {\n              verbosity: this.verbosity\n            });\n          } else {\n            this._setupFakeWorker();\n\n            messageHandler.destroy();\n            worker.terminate();\n          }\n        });\n        messageHandler.on(\"ready\", data => {\n          worker.removeEventListener(\"error\", onWorkerError);\n\n          if (this.destroyed) {\n            terminateEarly();\n            return;\n          }\n\n          try {\n            sendTest();\n          } catch (e) {\n            this._setupFakeWorker();\n          }\n        });\n\n        const sendTest = () => {\n          const testObj = new Uint8Array([255]);\n\n          try {\n            messageHandler.send(\"test\", testObj, [testObj.buffer]);\n          } catch (ex) {\n            (0, _util.warn)(\"Cannot use postMessage transfers.\");\n            testObj[0] = 0;\n            messageHandler.send(\"test\", testObj);\n          }\n        };\n\n        sendTest();\n        return;\n      } catch (e) {\n        (0, _util.info)(\"The worker has been disabled.\");\n      }\n    }\n\n    this._setupFakeWorker();\n  }\n\n  _setupFakeWorker() {\n    if (!PDFWorkerUtil.isWorkerDisabled) {\n      (0, _util.warn)(\"Setting up fake worker.\");\n      PDFWorkerUtil.isWorkerDisabled = true;\n    }\n\n    PDFWorker._setupFakeWorkerGlobal.then(WorkerMessageHandler => {\n      if (this.destroyed) {\n        this._readyCapability.reject(new Error(\"Worker was destroyed\"));\n\n        return;\n      }\n\n      const port = new LoopbackPort();\n      this._port = port;\n      const id = `fake${PDFWorkerUtil.fakeWorkerId++}`;\n      const workerHandler = new _message_handler.MessageHandler(id + \"_worker\", id, port);\n      WorkerMessageHandler.setup(workerHandler, port);\n      const messageHandler = new _message_handler.MessageHandler(id, id + \"_worker\", port);\n      this._messageHandler = messageHandler;\n\n      this._readyCapability.resolve();\n\n      messageHandler.send(\"configure\", {\n        verbosity: this.verbosity\n      });\n    }).catch(reason => {\n      this._readyCapability.reject(new Error(`Setting up fake worker failed: \"${reason.message}\".`));\n    });\n  }\n\n  destroy() {\n    this.destroyed = true;\n\n    if (this._webWorker) {\n      this._webWorker.terminate();\n\n      this._webWorker = null;\n    }\n\n    PDFWorker._workerPorts.delete(this._port);\n\n    this._port = null;\n\n    if (this._messageHandler) {\n      this._messageHandler.destroy();\n\n      this._messageHandler = null;\n    }\n  }\n\n  static fromPort(params) {\n    if (!params?.port) {\n      throw new Error(\"PDFWorker.fromPort - invalid method signature.\");\n    }\n\n    if (this._workerPorts.has(params.port)) {\n      return this._workerPorts.get(params.port);\n    }\n\n    return new PDFWorker(params);\n  }\n\n  static get workerSrc() {\n    if (_worker_options.GlobalWorkerOptions.workerSrc) {\n      return _worker_options.GlobalWorkerOptions.workerSrc;\n    }\n\n    if (PDFWorkerUtil.fallbackWorkerSrc !== null) {\n      if (!_is_node.isNodeJS) {\n        (0, _display_utils.deprecated)('No \"GlobalWorkerOptions.workerSrc\" specified.');\n      }\n\n      return PDFWorkerUtil.fallbackWorkerSrc;\n    }\n\n    throw new Error('No \"GlobalWorkerOptions.workerSrc\" specified.');\n  }\n\n  static get _mainThreadWorkerMessageHandler() {\n    try {\n      return globalThis.pdfjsWorker?.WorkerMessageHandler || null;\n    } catch (ex) {\n      return null;\n    }\n  }\n\n  static get _setupFakeWorkerGlobal() {\n    const loader = async () => {\n      const mainWorkerMessageHandler = this._mainThreadWorkerMessageHandler;\n\n      if (mainWorkerMessageHandler) {\n        return mainWorkerMessageHandler;\n      }\n\n      if (_is_node.isNodeJS && typeof require === \"function\") {\n        const worker = eval(\"require\")(this.workerSrc);\n        return worker.WorkerMessageHandler;\n      }\n\n      await (0, _display_utils.loadScript)(this.workerSrc);\n      return window.pdfjsWorker.WorkerMessageHandler;\n    };\n\n    return (0, _util.shadow)(this, \"_setupFakeWorkerGlobal\", loader());\n  }\n\n}\n\nexports.PDFWorker = PDFWorker;\n{\n  PDFWorker.getWorkerSrc = function () {\n    (0, _display_utils.deprecated)(\"`PDFWorker.getWorkerSrc()`, please use `PDFWorker.workerSrc` instead.\");\n    return this.workerSrc;\n  };\n}\n\nclass WorkerTransport {\n  #docStats = null;\n  #pageCache = new Map();\n  #pagePromises = new Map();\n  #metadataPromise = null;\n\n  constructor(messageHandler, loadingTask, networkStream, params) {\n    this.messageHandler = messageHandler;\n    this.loadingTask = loadingTask;\n    this.commonObjs = new PDFObjects();\n    this.fontLoader = new _font_loader.FontLoader({\n      docId: loadingTask.docId,\n      onUnsupportedFeature: this._onUnsupportedFeature.bind(this),\n      ownerDocument: params.ownerDocument,\n      styleElement: params.styleElement\n    });\n    this._params = params;\n\n    if (!params.useWorkerFetch) {\n      this.CMapReaderFactory = new params.CMapReaderFactory({\n        baseUrl: params.cMapUrl,\n        isCompressed: params.cMapPacked\n      });\n      this.StandardFontDataFactory = new params.StandardFontDataFactory({\n        baseUrl: params.standardFontDataUrl\n      });\n    }\n\n    this.destroyed = false;\n    this.destroyCapability = null;\n    this._passwordCapability = null;\n    this._networkStream = networkStream;\n    this._fullReader = null;\n    this._lastProgress = null;\n    this.downloadInfoCapability = (0, _util.createPromiseCapability)();\n    this.setupMessageHandler();\n  }\n\n  get annotationStorage() {\n    return (0, _util.shadow)(this, \"annotationStorage\", new _annotation_storage.AnnotationStorage());\n  }\n\n  get stats() {\n    return this.#docStats;\n  }\n\n  getRenderingIntent(intent, annotationMode = _util.AnnotationMode.ENABLE, isOpList = false) {\n    let renderingIntent = _util.RenderingIntentFlag.DISPLAY;\n    let lastModified = \"\";\n\n    switch (intent) {\n      case \"any\":\n        renderingIntent = _util.RenderingIntentFlag.ANY;\n        break;\n\n      case \"display\":\n        break;\n\n      case \"print\":\n        renderingIntent = _util.RenderingIntentFlag.PRINT;\n        break;\n\n      default:\n        (0, _util.warn)(`getRenderingIntent - invalid intent: ${intent}`);\n    }\n\n    switch (annotationMode) {\n      case _util.AnnotationMode.DISABLE:\n        renderingIntent += _util.RenderingIntentFlag.ANNOTATIONS_DISABLE;\n        break;\n\n      case _util.AnnotationMode.ENABLE:\n        break;\n\n      case _util.AnnotationMode.ENABLE_FORMS:\n        renderingIntent += _util.RenderingIntentFlag.ANNOTATIONS_FORMS;\n        break;\n\n      case _util.AnnotationMode.ENABLE_STORAGE:\n        renderingIntent += _util.RenderingIntentFlag.ANNOTATIONS_STORAGE;\n        lastModified = this.annotationStorage.lastModified;\n        break;\n\n      default:\n        (0, _util.warn)(`getRenderingIntent - invalid annotationMode: ${annotationMode}`);\n    }\n\n    if (isOpList) {\n      renderingIntent += _util.RenderingIntentFlag.OPLIST;\n    }\n\n    return {\n      renderingIntent,\n      cacheKey: `${renderingIntent}_${lastModified}`\n    };\n  }\n\n  destroy() {\n    if (this.destroyCapability) {\n      return this.destroyCapability.promise;\n    }\n\n    this.destroyed = true;\n    this.destroyCapability = (0, _util.createPromiseCapability)();\n\n    if (this._passwordCapability) {\n      this._passwordCapability.reject(new Error(\"Worker was destroyed during onPassword callback\"));\n    }\n\n    const waitOn = [];\n\n    for (const page of this.#pageCache.values()) {\n      waitOn.push(page._destroy());\n    }\n\n    this.#pageCache.clear();\n    this.#pagePromises.clear();\n\n    if (this.hasOwnProperty(\"annotationStorage\")) {\n      this.annotationStorage.resetModified();\n    }\n\n    const terminated = this.messageHandler.sendWithPromise(\"Terminate\", null);\n    waitOn.push(terminated);\n    Promise.all(waitOn).then(() => {\n      this.commonObjs.clear();\n      this.fontLoader.clear();\n      this.#metadataPromise = null;\n      this._getFieldObjectsPromise = null;\n      this._hasJSActionsPromise = null;\n\n      if (this._networkStream) {\n        this._networkStream.cancelAllRequests(new _util.AbortException(\"Worker was terminated.\"));\n      }\n\n      if (this.messageHandler) {\n        this.messageHandler.destroy();\n        this.messageHandler = null;\n      }\n\n      this.destroyCapability.resolve();\n    }, this.destroyCapability.reject);\n    return this.destroyCapability.promise;\n  }\n\n  setupMessageHandler() {\n    const {\n      messageHandler,\n      loadingTask\n    } = this;\n    messageHandler.on(\"GetReader\", (data, sink) => {\n      (0, _util.assert)(this._networkStream, \"GetReader - no `IPDFStream` instance available.\");\n      this._fullReader = this._networkStream.getFullReader();\n\n      this._fullReader.onProgress = evt => {\n        this._lastProgress = {\n          loaded: evt.loaded,\n          total: evt.total\n        };\n      };\n\n      sink.onPull = () => {\n        this._fullReader.read().then(function ({\n          value,\n          done\n        }) {\n          if (done) {\n            sink.close();\n            return;\n          }\n\n          (0, _util.assert)((0, _util.isArrayBuffer)(value), \"GetReader - expected an ArrayBuffer.\");\n          sink.enqueue(new Uint8Array(value), 1, [value]);\n        }).catch(reason => {\n          sink.error(reason);\n        });\n      };\n\n      sink.onCancel = reason => {\n        this._fullReader.cancel(reason);\n\n        sink.ready.catch(readyReason => {\n          if (this.destroyed) {\n            return;\n          }\n\n          throw readyReason;\n        });\n      };\n    });\n    messageHandler.on(\"ReaderHeadersReady\", data => {\n      const headersCapability = (0, _util.createPromiseCapability)();\n      const fullReader = this._fullReader;\n      fullReader.headersReady.then(() => {\n        if (!fullReader.isStreamingSupported || !fullReader.isRangeSupported) {\n          if (this._lastProgress) {\n            loadingTask.onProgress?.(this._lastProgress);\n          }\n\n          fullReader.onProgress = evt => {\n            loadingTask.onProgress?.({\n              loaded: evt.loaded,\n              total: evt.total\n            });\n          };\n        }\n\n        headersCapability.resolve({\n          isStreamingSupported: fullReader.isStreamingSupported,\n          isRangeSupported: fullReader.isRangeSupported,\n          contentLength: fullReader.contentLength\n        });\n      }, headersCapability.reject);\n      return headersCapability.promise;\n    });\n    messageHandler.on(\"GetRangeReader\", (data, sink) => {\n      (0, _util.assert)(this._networkStream, \"GetRangeReader - no `IPDFStream` instance available.\");\n\n      const rangeReader = this._networkStream.getRangeReader(data.begin, data.end);\n\n      if (!rangeReader) {\n        sink.close();\n        return;\n      }\n\n      sink.onPull = () => {\n        rangeReader.read().then(function ({\n          value,\n          done\n        }) {\n          if (done) {\n            sink.close();\n            return;\n          }\n\n          (0, _util.assert)((0, _util.isArrayBuffer)(value), \"GetRangeReader - expected an ArrayBuffer.\");\n          sink.enqueue(new Uint8Array(value), 1, [value]);\n        }).catch(reason => {\n          sink.error(reason);\n        });\n      };\n\n      sink.onCancel = reason => {\n        rangeReader.cancel(reason);\n        sink.ready.catch(readyReason => {\n          if (this.destroyed) {\n            return;\n          }\n\n          throw readyReason;\n        });\n      };\n    });\n    messageHandler.on(\"GetDoc\", ({\n      pdfInfo\n    }) => {\n      this._numPages = pdfInfo.numPages;\n      this._htmlForXfa = pdfInfo.htmlForXfa;\n      delete pdfInfo.htmlForXfa;\n\n      loadingTask._capability.resolve(new PDFDocumentProxy(pdfInfo, this));\n    });\n    messageHandler.on(\"DocException\", function (ex) {\n      let reason;\n\n      switch (ex.name) {\n        case \"PasswordException\":\n          reason = new _util.PasswordException(ex.message, ex.code);\n          break;\n\n        case \"InvalidPDFException\":\n          reason = new _util.InvalidPDFException(ex.message);\n          break;\n\n        case \"MissingPDFException\":\n          reason = new _util.MissingPDFException(ex.message);\n          break;\n\n        case \"UnexpectedResponseException\":\n          reason = new _util.UnexpectedResponseException(ex.message, ex.status);\n          break;\n\n        case \"UnknownErrorException\":\n          reason = new _util.UnknownErrorException(ex.message, ex.details);\n          break;\n\n        default:\n          (0, _util.unreachable)(\"DocException - expected a valid Error.\");\n      }\n\n      loadingTask._capability.reject(reason);\n    });\n    messageHandler.on(\"PasswordRequest\", exception => {\n      this._passwordCapability = (0, _util.createPromiseCapability)();\n\n      if (loadingTask.onPassword) {\n        const updatePassword = password => {\n          if (password instanceof Error) {\n            this._passwordCapability.reject(password);\n          } else {\n            this._passwordCapability.resolve({\n              password\n            });\n          }\n        };\n\n        try {\n          loadingTask.onPassword(updatePassword, exception.code);\n        } catch (ex) {\n          this._passwordCapability.reject(ex);\n        }\n      } else {\n        this._passwordCapability.reject(new _util.PasswordException(exception.message, exception.code));\n      }\n\n      return this._passwordCapability.promise;\n    });\n    messageHandler.on(\"DataLoaded\", data => {\n      loadingTask.onProgress?.({\n        loaded: data.length,\n        total: data.length\n      });\n      this.downloadInfoCapability.resolve(data);\n    });\n    messageHandler.on(\"StartRenderPage\", data => {\n      if (this.destroyed) {\n        return;\n      }\n\n      const page = this.#pageCache.get(data.pageIndex);\n\n      page._startRenderPage(data.transparency, data.cacheKey);\n    });\n    messageHandler.on(\"commonobj\", ([id, type, exportedData]) => {\n      if (this.destroyed) {\n        return;\n      }\n\n      if (this.commonObjs.has(id)) {\n        return;\n      }\n\n      switch (type) {\n        case \"Font\":\n          const params = this._params;\n\n          if (\"error\" in exportedData) {\n            const exportedError = exportedData.error;\n            (0, _util.warn)(`Error during font loading: ${exportedError}`);\n            this.commonObjs.resolve(id, exportedError);\n            break;\n          }\n\n          let fontRegistry = null;\n\n          if (params.pdfBug && globalThis.FontInspector?.enabled) {\n            fontRegistry = {\n              registerFont(font, url) {\n                globalThis.FontInspector.fontAdded(font, url);\n              }\n\n            };\n          }\n\n          const font = new _font_loader.FontFaceObject(exportedData, {\n            isEvalSupported: params.isEvalSupported,\n            disableFontFace: params.disableFontFace,\n            ignoreErrors: params.ignoreErrors,\n            onUnsupportedFeature: this._onUnsupportedFeature.bind(this),\n            fontRegistry\n          });\n          this.fontLoader.bind(font).catch(reason => {\n            return messageHandler.sendWithPromise(\"FontFallback\", {\n              id\n            });\n          }).finally(() => {\n            if (!params.fontExtraProperties && font.data) {\n              font.data = null;\n            }\n\n            this.commonObjs.resolve(id, font);\n          });\n          break;\n\n        case \"FontPath\":\n        case \"Image\":\n          this.commonObjs.resolve(id, exportedData);\n          break;\n\n        default:\n          throw new Error(`Got unknown common object type ${type}`);\n      }\n    });\n    messageHandler.on(\"obj\", ([id, pageIndex, type, imageData]) => {\n      if (this.destroyed) {\n        return;\n      }\n\n      const pageProxy = this.#pageCache.get(pageIndex);\n\n      if (pageProxy.objs.has(id)) {\n        return;\n      }\n\n      switch (type) {\n        case \"Image\":\n          pageProxy.objs.resolve(id, imageData);\n          const MAX_IMAGE_SIZE_TO_STORE = 8000000;\n\n          if (imageData?.data?.length > MAX_IMAGE_SIZE_TO_STORE) {\n            pageProxy.cleanupAfterRender = true;\n          }\n\n          break;\n\n        case \"Pattern\":\n          pageProxy.objs.resolve(id, imageData);\n          break;\n\n        default:\n          throw new Error(`Got unknown object type ${type}`);\n      }\n    });\n    messageHandler.on(\"DocProgress\", data => {\n      if (this.destroyed) {\n        return;\n      }\n\n      loadingTask.onProgress?.({\n        loaded: data.loaded,\n        total: data.total\n      });\n    });\n    messageHandler.on(\"DocStats\", data => {\n      if (this.destroyed) {\n        return;\n      }\n\n      this.#docStats = Object.freeze({\n        streamTypes: Object.freeze(data.streamTypes),\n        fontTypes: Object.freeze(data.fontTypes)\n      });\n    });\n    messageHandler.on(\"UnsupportedFeature\", this._onUnsupportedFeature.bind(this));\n    messageHandler.on(\"FetchBuiltInCMap\", data => {\n      if (this.destroyed) {\n        return Promise.reject(new Error(\"Worker was destroyed.\"));\n      }\n\n      if (!this.CMapReaderFactory) {\n        return Promise.reject(new Error(\"CMapReaderFactory not initialized, see the `useWorkerFetch` parameter.\"));\n      }\n\n      return this.CMapReaderFactory.fetch(data);\n    });\n    messageHandler.on(\"FetchStandardFontData\", data => {\n      if (this.destroyed) {\n        return Promise.reject(new Error(\"Worker was destroyed.\"));\n      }\n\n      if (!this.StandardFontDataFactory) {\n        return Promise.reject(new Error(\"StandardFontDataFactory not initialized, see the `useWorkerFetch` parameter.\"));\n      }\n\n      return this.StandardFontDataFactory.fetch(data);\n    });\n  }\n\n  _onUnsupportedFeature({\n    featureId\n  }) {\n    if (this.destroyed) {\n      return;\n    }\n\n    this.loadingTask.onUnsupportedFeature?.(featureId);\n  }\n\n  getData() {\n    return this.messageHandler.sendWithPromise(\"GetData\", null);\n  }\n\n  getPage(pageNumber) {\n    if (!Number.isInteger(pageNumber) || pageNumber <= 0 || pageNumber > this._numPages) {\n      return Promise.reject(new Error(\"Invalid page request.\"));\n    }\n\n    const pageIndex = pageNumber - 1,\n          cachedPromise = this.#pagePromises.get(pageIndex);\n\n    if (cachedPromise) {\n      return cachedPromise;\n    }\n\n    const promise = this.messageHandler.sendWithPromise(\"GetPage\", {\n      pageIndex\n    }).then(pageInfo => {\n      if (this.destroyed) {\n        throw new Error(\"Transport destroyed\");\n      }\n\n      const page = new PDFPageProxy(pageIndex, pageInfo, this, this._params.ownerDocument, this._params.pdfBug);\n      this.#pageCache.set(pageIndex, page);\n      return page;\n    });\n    this.#pagePromises.set(pageIndex, promise);\n    return promise;\n  }\n\n  getPageIndex(ref) {\n    if (typeof ref !== \"object\" || ref === null || !Number.isInteger(ref.num) || ref.num < 0 || !Number.isInteger(ref.gen) || ref.gen < 0) {\n      return Promise.reject(new Error(\"Invalid pageIndex request.\"));\n    }\n\n    return this.messageHandler.sendWithPromise(\"GetPageIndex\", {\n      num: ref.num,\n      gen: ref.gen\n    });\n  }\n\n  getAnnotations(pageIndex, intent) {\n    return this.messageHandler.sendWithPromise(\"GetAnnotations\", {\n      pageIndex,\n      intent\n    });\n  }\n\n  saveDocument() {\n    return this.messageHandler.sendWithPromise(\"SaveDocument\", {\n      isPureXfa: !!this._htmlForXfa,\n      numPages: this._numPages,\n      annotationStorage: this.annotationStorage.serializable,\n      filename: this._fullReader?.filename ?? null\n    }).finally(() => {\n      this.annotationStorage.resetModified();\n    });\n  }\n\n  getFieldObjects() {\n    return this._getFieldObjectsPromise ||= this.messageHandler.sendWithPromise(\"GetFieldObjects\", null);\n  }\n\n  hasJSActions() {\n    return this._hasJSActionsPromise ||= this.messageHandler.sendWithPromise(\"HasJSActions\", null);\n  }\n\n  getCalculationOrderIds() {\n    return this.messageHandler.sendWithPromise(\"GetCalculationOrderIds\", null);\n  }\n\n  getDestinations() {\n    return this.messageHandler.sendWithPromise(\"GetDestinations\", null);\n  }\n\n  getDestination(id) {\n    if (typeof id !== \"string\") {\n      return Promise.reject(new Error(\"Invalid destination request.\"));\n    }\n\n    return this.messageHandler.sendWithPromise(\"GetDestination\", {\n      id\n    });\n  }\n\n  getPageLabels() {\n    return this.messageHandler.sendWithPromise(\"GetPageLabels\", null);\n  }\n\n  getPageLayout() {\n    return this.messageHandler.sendWithPromise(\"GetPageLayout\", null);\n  }\n\n  getPageMode() {\n    return this.messageHandler.sendWithPromise(\"GetPageMode\", null);\n  }\n\n  getViewerPreferences() {\n    return this.messageHandler.sendWithPromise(\"GetViewerPreferences\", null);\n  }\n\n  getOpenAction() {\n    return this.messageHandler.sendWithPromise(\"GetOpenAction\", null);\n  }\n\n  getAttachments() {\n    return this.messageHandler.sendWithPromise(\"GetAttachments\", null);\n  }\n\n  getJavaScript() {\n    return this.messageHandler.sendWithPromise(\"GetJavaScript\", null);\n  }\n\n  getDocJSActions() {\n    return this.messageHandler.sendWithPromise(\"GetDocJSActions\", null);\n  }\n\n  getPageJSActions(pageIndex) {\n    return this.messageHandler.sendWithPromise(\"GetPageJSActions\", {\n      pageIndex\n    });\n  }\n\n  getStructTree(pageIndex) {\n    return this.messageHandler.sendWithPromise(\"GetStructTree\", {\n      pageIndex\n    });\n  }\n\n  getOutline() {\n    return this.messageHandler.sendWithPromise(\"GetOutline\", null);\n  }\n\n  getOptionalContentConfig() {\n    return this.messageHandler.sendWithPromise(\"GetOptionalContentConfig\", null).then(results => {\n      return new _optional_content_config.OptionalContentConfig(results);\n    });\n  }\n\n  getPermissions() {\n    return this.messageHandler.sendWithPromise(\"GetPermissions\", null);\n  }\n\n  getMetadata() {\n    return this.#metadataPromise ||= this.messageHandler.sendWithPromise(\"GetMetadata\", null).then(results => {\n      return {\n        info: results[0],\n        metadata: results[1] ? new _metadata.Metadata(results[1]) : null,\n        contentDispositionFilename: this._fullReader?.filename ?? null,\n        contentLength: this._fullReader?.contentLength ?? null\n      };\n    });\n  }\n\n  getMarkInfo() {\n    return this.messageHandler.sendWithPromise(\"GetMarkInfo\", null);\n  }\n\n  async startCleanup(keepLoadedFonts = false) {\n    await this.messageHandler.sendWithPromise(\"Cleanup\", null);\n\n    if (this.destroyed) {\n      return;\n    }\n\n    for (const page of this.#pageCache.values()) {\n      const cleanupSuccessful = page.cleanup();\n\n      if (!cleanupSuccessful) {\n        throw new Error(`startCleanup: Page ${page.pageNumber} is currently rendering.`);\n      }\n    }\n\n    this.commonObjs.clear();\n\n    if (!keepLoadedFonts) {\n      this.fontLoader.clear();\n    }\n\n    this.#metadataPromise = null;\n    this._getFieldObjectsPromise = null;\n    this._hasJSActionsPromise = null;\n  }\n\n  get loadingParams() {\n    const params = this._params;\n    return (0, _util.shadow)(this, \"loadingParams\", {\n      disableAutoFetch: params.disableAutoFetch,\n      enableXfa: params.enableXfa\n    });\n  }\n\n}\n\nclass PDFObjects {\n  #objs = Object.create(null);\n\n  #ensureObj(objId) {\n    const obj = this.#objs[objId];\n\n    if (obj) {\n      return obj;\n    }\n\n    return this.#objs[objId] = {\n      capability: (0, _util.createPromiseCapability)(),\n      data: null\n    };\n  }\n\n  get(objId, callback = null) {\n    if (callback) {\n      const obj = this.#ensureObj(objId);\n      obj.capability.promise.then(() => callback(obj.data));\n      return null;\n    }\n\n    const obj = this.#objs[objId];\n\n    if (!obj?.capability.settled) {\n      throw new Error(`Requesting object that isn't resolved yet ${objId}.`);\n    }\n\n    return obj.data;\n  }\n\n  has(objId) {\n    const obj = this.#objs[objId];\n    return obj?.capability.settled || false;\n  }\n\n  resolve(objId, data = null) {\n    const obj = this.#ensureObj(objId);\n    obj.data = data;\n    obj.capability.resolve();\n  }\n\n  clear() {\n    this.#objs = Object.create(null);\n  }\n\n}\n\nclass RenderTask {\n  constructor(internalRenderTask) {\n    this._internalRenderTask = internalRenderTask;\n    this.onContinue = null;\n  }\n\n  get promise() {\n    return this._internalRenderTask.capability.promise;\n  }\n\n  cancel() {\n    this._internalRenderTask.cancel();\n  }\n\n}\n\nexports.RenderTask = RenderTask;\n\nclass InternalRenderTask {\n  static get canvasInUse() {\n    return (0, _util.shadow)(this, \"canvasInUse\", new WeakSet());\n  }\n\n  constructor({\n    callback,\n    params,\n    objs,\n    commonObjs,\n    annotationCanvasMap,\n    operatorList,\n    pageIndex,\n    canvasFactory,\n    useRequestAnimationFrame = false,\n    pdfBug = false\n  }) {\n    this.callback = callback;\n    this.params = params;\n    this.objs = objs;\n    this.commonObjs = commonObjs;\n    this.annotationCanvasMap = annotationCanvasMap;\n    this.operatorListIdx = null;\n    this.operatorList = operatorList;\n    this._pageIndex = pageIndex;\n    this.canvasFactory = canvasFactory;\n    this._pdfBug = pdfBug;\n    this.running = false;\n    this.graphicsReadyCallback = null;\n    this.graphicsReady = false;\n    this._useRequestAnimationFrame = useRequestAnimationFrame === true && typeof window !== \"undefined\";\n    this.cancelled = false;\n    this.capability = (0, _util.createPromiseCapability)();\n    this.task = new RenderTask(this);\n    this._cancelBound = this.cancel.bind(this);\n    this._continueBound = this._continue.bind(this);\n    this._scheduleNextBound = this._scheduleNext.bind(this);\n    this._nextBound = this._next.bind(this);\n    this._canvas = params.canvasContext.canvas;\n  }\n\n  get completed() {\n    return this.capability.promise.catch(function () {});\n  }\n\n  initializeGraphics({\n    transparency = false,\n    optionalContentConfig\n  }) {\n    if (this.cancelled) {\n      return;\n    }\n\n    if (this._canvas) {\n      if (InternalRenderTask.canvasInUse.has(this._canvas)) {\n        throw new Error(\"Cannot use the same canvas during multiple render() operations. \" + \"Use different canvas or ensure previous operations were \" + \"cancelled or completed.\");\n      }\n\n      InternalRenderTask.canvasInUse.add(this._canvas);\n    }\n\n    if (this._pdfBug && globalThis.StepperManager?.enabled) {\n      this.stepper = globalThis.StepperManager.create(this._pageIndex);\n      this.stepper.init(this.operatorList);\n      this.stepper.nextBreakPoint = this.stepper.getNextBreakPoint();\n    }\n\n    const {\n      canvasContext,\n      viewport,\n      transform,\n      imageLayer,\n      background\n    } = this.params;\n    this.gfx = new _canvas.CanvasGraphics(canvasContext, this.commonObjs, this.objs, this.canvasFactory, imageLayer, optionalContentConfig, this.annotationCanvasMap);\n    this.gfx.beginDrawing({\n      transform,\n      viewport,\n      transparency,\n      background\n    });\n    this.operatorListIdx = 0;\n    this.graphicsReady = true;\n\n    if (this.graphicsReadyCallback) {\n      this.graphicsReadyCallback();\n    }\n  }\n\n  cancel(error = null) {\n    this.running = false;\n    this.cancelled = true;\n\n    if (this.gfx) {\n      this.gfx.endDrawing();\n    }\n\n    if (this._canvas) {\n      InternalRenderTask.canvasInUse.delete(this._canvas);\n    }\n\n    this.callback(error || new _display_utils.RenderingCancelledException(`Rendering cancelled, page ${this._pageIndex + 1}`, \"canvas\"));\n  }\n\n  operatorListChanged() {\n    if (!this.graphicsReady) {\n      if (!this.graphicsReadyCallback) {\n        this.graphicsReadyCallback = this._continueBound;\n      }\n\n      return;\n    }\n\n    if (this.stepper) {\n      this.stepper.updateOperatorList(this.operatorList);\n    }\n\n    if (this.running) {\n      return;\n    }\n\n    this._continue();\n  }\n\n  _continue() {\n    this.running = true;\n\n    if (this.cancelled) {\n      return;\n    }\n\n    if (this.task.onContinue) {\n      this.task.onContinue(this._scheduleNextBound);\n    } else {\n      this._scheduleNext();\n    }\n  }\n\n  _scheduleNext() {\n    if (this._useRequestAnimationFrame) {\n      window.requestAnimationFrame(() => {\n        this._nextBound().catch(this._cancelBound);\n      });\n    } else {\n      Promise.resolve().then(this._nextBound).catch(this._cancelBound);\n    }\n  }\n\n  async _next() {\n    if (this.cancelled) {\n      return;\n    }\n\n    this.operatorListIdx = this.gfx.executeOperatorList(this.operatorList, this.operatorListIdx, this._continueBound, this.stepper);\n\n    if (this.operatorListIdx === this.operatorList.argsArray.length) {\n      this.running = false;\n\n      if (this.operatorList.lastChunk) {\n        this.gfx.endDrawing();\n\n        if (this._canvas) {\n          InternalRenderTask.canvasInUse.delete(this._canvas);\n        }\n\n        this.callback();\n      }\n    }\n  }\n\n}\n\nconst version = '2.14.73';\nexports.version = version;\nconst build = '489e9ff7d';\nexports.build = build;\n\n/***/ }),\n/* 5 */\n/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {\n\n\n\nObject.defineProperty(exports, \"__esModule\", ({\n  value: true\n}));\nexports.StatTimer = exports.RenderingCancelledException = exports.PixelsPerInch = exports.PageViewport = exports.PDFDateString = exports.DOMStandardFontDataFactory = exports.DOMSVGFactory = exports.DOMCanvasFactory = exports.DOMCMapReaderFactory = void 0;\nexports.deprecated = deprecated;\nexports.getFilenameFromUrl = getFilenameFromUrl;\nexports.getPdfFilenameFromUrl = getPdfFilenameFromUrl;\nexports.getXfaPageViewport = getXfaPageViewport;\nexports.isDataScheme = isDataScheme;\nexports.isPdfFile = isPdfFile;\nexports.isValidFetchUrl = isValidFetchUrl;\nexports.loadScript = loadScript;\n\nvar _base_factory = __w_pdfjs_require__(6);\n\nvar _util = __w_pdfjs_require__(1);\n\nconst SVG_NS = \"http://www.w3.org/2000/svg\";\n\nclass PixelsPerInch {\n  static CSS = 96.0;\n  static PDF = 72.0;\n  static PDF_TO_CSS_UNITS = this.CSS / this.PDF;\n}\n\nexports.PixelsPerInch = PixelsPerInch;\n\nclass DOMCanvasFactory extends _base_factory.BaseCanvasFactory {\n  constructor({\n    ownerDocument = globalThis.document\n  } = {}) {\n    super();\n    this._document = ownerDocument;\n  }\n\n  _createCanvas(width, height) {\n    const canvas = this._document.createElement(\"canvas\");\n\n    canvas.width = width;\n    canvas.height = height;\n    return canvas;\n  }\n\n}\n\nexports.DOMCanvasFactory = DOMCanvasFactory;\n\nasync function fetchData(url, asTypedArray = false) {\n  if (isValidFetchUrl(url, document.baseURI)) {\n    const response = await fetch(url);\n\n    if (!response.ok) {\n      throw new Error(response.statusText);\n    }\n\n    return asTypedArray ? new Uint8Array(await response.arrayBuffer()) : (0, _util.stringToBytes)(await response.text());\n  }\n\n  return new Promise((resolve, reject) => {\n    const request = new XMLHttpRequest();\n    request.open(\"GET\", url, true);\n\n    if (asTypedArray) {\n      request.responseType = \"arraybuffer\";\n    }\n\n    request.onreadystatechange = () => {\n      if (request.readyState !== XMLHttpRequest.DONE) {\n        return;\n      }\n\n      if (request.status === 200 || request.status === 0) {\n        let data;\n\n        if (asTypedArray && request.response) {\n          data = new Uint8Array(request.response);\n        } else if (!asTypedArray && request.responseText) {\n          data = (0, _util.stringToBytes)(request.responseText);\n        }\n\n        if (data) {\n          resolve(data);\n          return;\n        }\n      }\n\n      reject(new Error(request.statusText));\n    };\n\n    request.send(null);\n  });\n}\n\nclass DOMCMapReaderFactory extends _base_factory.BaseCMapReaderFactory {\n  _fetchData(url, compressionType) {\n    return fetchData(url, this.isCompressed).then(data => {\n      return {\n        cMapData: data,\n        compressionType\n      };\n    });\n  }\n\n}\n\nexports.DOMCMapReaderFactory = DOMCMapReaderFactory;\n\nclass DOMStandardFontDataFactory extends _base_factory.BaseStandardFontDataFactory {\n  _fetchData(url) {\n    return fetchData(url, true);\n  }\n\n}\n\nexports.DOMStandardFontDataFactory = DOMStandardFontDataFactory;\n\nclass DOMSVGFactory extends _base_factory.BaseSVGFactory {\n  _createSVG(type) {\n    return document.createElementNS(SVG_NS, type);\n  }\n\n}\n\nexports.DOMSVGFactory = DOMSVGFactory;\n\nclass PageViewport {\n  constructor({\n    viewBox,\n    scale,\n    rotation,\n    offsetX = 0,\n    offsetY = 0,\n    dontFlip = false\n  }) {\n    this.viewBox = viewBox;\n    this.scale = scale;\n    this.rotation = rotation;\n    this.offsetX = offsetX;\n    this.offsetY = offsetY;\n    const centerX = (viewBox[2] + viewBox[0]) / 2;\n    const centerY = (viewBox[3] + viewBox[1]) / 2;\n    let rotateA, rotateB, rotateC, rotateD;\n    rotation %= 360;\n\n    if (rotation < 0) {\n      rotation += 360;\n    }\n\n    switch (rotation) {\n      case 180:\n        rotateA = -1;\n        rotateB = 0;\n        rotateC = 0;\n        rotateD = 1;\n        break;\n\n      case 90:\n        rotateA = 0;\n        rotateB = 1;\n        rotateC = 1;\n        rotateD = 0;\n        break;\n\n      case 270:\n        rotateA = 0;\n        rotateB = -1;\n        rotateC = -1;\n        rotateD = 0;\n        break;\n\n      case 0:\n        rotateA = 1;\n        rotateB = 0;\n        rotateC = 0;\n        rotateD = -1;\n        break;\n\n      default:\n        throw new Error(\"PageViewport: Invalid rotation, must be a multiple of 90 degrees.\");\n    }\n\n    if (dontFlip) {\n      rotateC = -rotateC;\n      rotateD = -rotateD;\n    }\n\n    let offsetCanvasX, offsetCanvasY;\n    let width, height;\n\n    if (rotateA === 0) {\n      offsetCanvasX = Math.abs(centerY - viewBox[1]) * scale + offsetX;\n      offsetCanvasY = Math.abs(centerX - viewBox[0]) * scale + offsetY;\n      width = Math.abs(viewBox[3] - viewBox[1]) * scale;\n      height = Math.abs(viewBox[2] - viewBox[0]) * scale;\n    } else {\n      offsetCanvasX = Math.abs(centerX - viewBox[0]) * scale + offsetX;\n      offsetCanvasY = Math.abs(centerY - viewBox[1]) * scale + offsetY;\n      width = Math.abs(viewBox[2] - viewBox[0]) * scale;\n      height = Math.abs(viewBox[3] - viewBox[1]) * scale;\n    }\n\n    this.transform = [rotateA * scale, rotateB * scale, rotateC * scale, rotateD * scale, offsetCanvasX - rotateA * scale * centerX - rotateC * scale * centerY, offsetCanvasY - rotateB * scale * centerX - rotateD * scale * centerY];\n    this.width = width;\n    this.height = height;\n  }\n\n  clone({\n    scale = this.scale,\n    rotation = this.rotation,\n    offsetX = this.offsetX,\n    offsetY = this.offsetY,\n    dontFlip = false\n  } = {}) {\n    return new PageViewport({\n      viewBox: this.viewBox.slice(),\n      scale,\n      rotation,\n      offsetX,\n      offsetY,\n      dontFlip\n    });\n  }\n\n  convertToViewportPoint(x, y) {\n    return _util.Util.applyTransform([x, y], this.transform);\n  }\n\n  convertToViewportRectangle(rect) {\n    const topLeft = _util.Util.applyTransform([rect[0], rect[1]], this.transform);\n\n    const bottomRight = _util.Util.applyTransform([rect[2], rect[3]], this.transform);\n\n    return [topLeft[0], topLeft[1], bottomRight[0], bottomRight[1]];\n  }\n\n  convertToPdfPoint(x, y) {\n    return _util.Util.applyInverseTransform([x, y], this.transform);\n  }\n\n}\n\nexports.PageViewport = PageViewport;\n\nclass RenderingCancelledException extends _util.BaseException {\n  constructor(msg, type) {\n    super(msg, \"RenderingCancelledException\");\n    this.type = type;\n  }\n\n}\n\nexports.RenderingCancelledException = RenderingCancelledException;\n\nfunction isDataScheme(url) {\n  const ii = url.length;\n  let i = 0;\n\n  while (i < ii && url[i].trim() === \"\") {\n    i++;\n  }\n\n  return url.substring(i, i + 5).toLowerCase() === \"data:\";\n}\n\nfunction isPdfFile(filename) {\n  return typeof filename === \"string\" && /\\.pdf$/i.test(filename);\n}\n\nfunction getFilenameFromUrl(url) {\n  const anchor = url.indexOf(\"#\");\n  const query = url.indexOf(\"?\");\n  const end = Math.min(anchor > 0 ? anchor : url.length, query > 0 ? query : url.length);\n  return url.substring(url.lastIndexOf(\"/\", end) + 1, end);\n}\n\nfunction getPdfFilenameFromUrl(url, defaultFilename = \"document.pdf\") {\n  if (typeof url !== \"string\") {\n    return defaultFilename;\n  }\n\n  if (isDataScheme(url)) {\n    (0, _util.warn)('getPdfFilenameFromUrl: ignore \"data:\"-URL for performance reasons.');\n    return defaultFilename;\n  }\n\n  const reURI = /^(?:(?:[^:]+:)?\\/\\/[^/]+)?([^?#]*)(\\?[^#]*)?(#.*)?$/;\n  const reFilename = /[^/?#=]+\\.pdf\\b(?!.*\\.pdf\\b)/i;\n  const splitURI = reURI.exec(url);\n  let suggestedFilename = reFilename.exec(splitURI[1]) || reFilename.exec(splitURI[2]) || reFilename.exec(splitURI[3]);\n\n  if (suggestedFilename) {\n    suggestedFilename = suggestedFilename[0];\n\n    if (suggestedFilename.includes(\"%\")) {\n      try {\n        suggestedFilename = reFilename.exec(decodeURIComponent(suggestedFilename))[0];\n      } catch (ex) {}\n    }\n  }\n\n  return suggestedFilename || defaultFilename;\n}\n\nclass StatTimer {\n  constructor() {\n    this.started = Object.create(null);\n    this.times = [];\n  }\n\n  time(name) {\n    if (name in this.started) {\n      (0, _util.warn)(`Timer is already running for ${name}`);\n    }\n\n    this.started[name] = Date.now();\n  }\n\n  timeEnd(name) {\n    if (!(name in this.started)) {\n      (0, _util.warn)(`Timer has not been started for ${name}`);\n    }\n\n    this.times.push({\n      name,\n      start: this.started[name],\n      end: Date.now()\n    });\n    delete this.started[name];\n  }\n\n  toString() {\n    const outBuf = [];\n    let longest = 0;\n\n    for (const time of this.times) {\n      const name = time.name;\n\n      if (name.length > longest) {\n        longest = name.length;\n      }\n    }\n\n    for (const time of this.times) {\n      const duration = time.end - time.start;\n      outBuf.push(`${time.name.padEnd(longest)} ${duration}ms\\n`);\n    }\n\n    return outBuf.join(\"\");\n  }\n\n}\n\nexports.StatTimer = StatTimer;\n\nfunction isValidFetchUrl(url, baseUrl) {\n  try {\n    const {\n      protocol\n    } = baseUrl ? new URL(url, baseUrl) : new URL(url);\n    return protocol === \"http:\" || protocol === \"https:\";\n  } catch (ex) {\n    return false;\n  }\n}\n\nfunction loadScript(src, removeScriptElement = false) {\n  return new Promise((resolve, reject) => {\n    const script = document.createElement(\"script\");\n    script.src = src;\n\n    script.onload = function (evt) {\n      if (removeScriptElement) {\n        script.remove();\n      }\n\n      resolve(evt);\n    };\n\n    script.onerror = function () {\n      reject(new Error(`Cannot load script at: ${script.src}`));\n    };\n\n    (document.head || document.documentElement).appendChild(script);\n  });\n}\n\nfunction deprecated(details) {\n  console.log(\"Deprecated API usage: \" + details);\n}\n\nlet pdfDateStringRegex;\n\nclass PDFDateString {\n  static toDateObject(input) {\n    if (!input || typeof input !== \"string\") {\n      return null;\n    }\n\n    if (!pdfDateStringRegex) {\n      pdfDateStringRegex = new RegExp(\"^D:\" + \"(\\\\d{4})\" + \"(\\\\d{2})?\" + \"(\\\\d{2})?\" + \"(\\\\d{2})?\" + \"(\\\\d{2})?\" + \"(\\\\d{2})?\" + \"([Z|+|-])?\" + \"(\\\\d{2})?\" + \"'?\" + \"(\\\\d{2})?\" + \"'?\");\n    }\n\n    const matches = pdfDateStringRegex.exec(input);\n\n    if (!matches) {\n      return null;\n    }\n\n    const year = parseInt(matches[1], 10);\n    let month = parseInt(matches[2], 10);\n    month = month >= 1 && month <= 12 ? month - 1 : 0;\n    let day = parseInt(matches[3], 10);\n    day = day >= 1 && day <= 31 ? day : 1;\n    let hour = parseInt(matches[4], 10);\n    hour = hour >= 0 && hour <= 23 ? hour : 0;\n    let minute = parseInt(matches[5], 10);\n    minute = minute >= 0 && minute <= 59 ? minute : 0;\n    let second = parseInt(matches[6], 10);\n    second = second >= 0 && second <= 59 ? second : 0;\n    const universalTimeRelation = matches[7] || \"Z\";\n    let offsetHour = parseInt(matches[8], 10);\n    offsetHour = offsetHour >= 0 && offsetHour <= 23 ? offsetHour : 0;\n    let offsetMinute = parseInt(matches[9], 10) || 0;\n    offsetMinute = offsetMinute >= 0 && offsetMinute <= 59 ? offsetMinute : 0;\n\n    if (universalTimeRelation === \"-\") {\n      hour += offsetHour;\n      minute += offsetMinute;\n    } else if (universalTimeRelation === \"+\") {\n      hour -= offsetHour;\n      minute -= offsetMinute;\n    }\n\n    return new Date(Date.UTC(year, month, day, hour, minute, second));\n  }\n\n}\n\nexports.PDFDateString = PDFDateString;\n\nfunction getXfaPageViewport(xfaPage, {\n  scale = 1,\n  rotation = 0\n}) {\n  const {\n    width,\n    height\n  } = xfaPage.attributes.style;\n  const viewBox = [0, 0, parseInt(width), parseInt(height)];\n  return new PageViewport({\n    viewBox,\n    scale,\n    rotation\n  });\n}\n\n/***/ }),\n/* 6 */\n/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {\n\n\n\nObject.defineProperty(exports, \"__esModule\", ({\n  value: true\n}));\nexports.BaseStandardFontDataFactory = exports.BaseSVGFactory = exports.BaseCanvasFactory = exports.BaseCMapReaderFactory = void 0;\n\nvar _util = __w_pdfjs_require__(1);\n\nclass BaseCanvasFactory {\n  constructor() {\n    if (this.constructor === BaseCanvasFactory) {\n      (0, _util.unreachable)(\"Cannot initialize BaseCanvasFactory.\");\n    }\n  }\n\n  create(width, height) {\n    if (width <= 0 || height <= 0) {\n      throw new Error(\"Invalid canvas size\");\n    }\n\n    const canvas = this._createCanvas(width, height);\n\n    return {\n      canvas,\n      context: canvas.getContext(\"2d\")\n    };\n  }\n\n  reset(canvasAndContext, width, height) {\n    if (!canvasAndContext.canvas) {\n      throw new Error(\"Canvas is not specified\");\n    }\n\n    if (width <= 0 || height <= 0) {\n      throw new Error(\"Invalid canvas size\");\n    }\n\n    canvasAndContext.canvas.width = width;\n    canvasAndContext.canvas.height = height;\n  }\n\n  destroy(canvasAndContext) {\n    if (!canvasAndContext.canvas) {\n      throw new Error(\"Canvas is not specified\");\n    }\n\n    canvasAndContext.canvas.width = 0;\n    canvasAndContext.canvas.height = 0;\n    canvasAndContext.canvas = null;\n    canvasAndContext.context = null;\n  }\n\n  _createCanvas(width, height) {\n    (0, _util.unreachable)(\"Abstract method `_createCanvas` called.\");\n  }\n\n}\n\nexports.BaseCanvasFactory = BaseCanvasFactory;\n\nclass BaseCMapReaderFactory {\n  constructor({\n    baseUrl = null,\n    isCompressed = false\n  }) {\n    if (this.constructor === BaseCMapReaderFactory) {\n      (0, _util.unreachable)(\"Cannot initialize BaseCMapReaderFactory.\");\n    }\n\n    this.baseUrl = baseUrl;\n    this.isCompressed = isCompressed;\n  }\n\n  async fetch({\n    name\n  }) {\n    if (!this.baseUrl) {\n      throw new Error('The CMap \"baseUrl\" parameter must be specified, ensure that ' + 'the \"cMapUrl\" and \"cMapPacked\" API parameters are provided.');\n    }\n\n    if (!name) {\n      throw new Error(\"CMap name must be specified.\");\n    }\n\n    const url = this.baseUrl + name + (this.isCompressed ? \".bcmap\" : \"\");\n    const compressionType = this.isCompressed ? _util.CMapCompressionType.BINARY : _util.CMapCompressionType.NONE;\n    return this._fetchData(url, compressionType).catch(reason => {\n      throw new Error(`Unable to load ${this.isCompressed ? \"binary \" : \"\"}CMap at: ${url}`);\n    });\n  }\n\n  _fetchData(url, compressionType) {\n    (0, _util.unreachable)(\"Abstract method `_fetchData` called.\");\n  }\n\n}\n\nexports.BaseCMapReaderFactory = BaseCMapReaderFactory;\n\nclass BaseStandardFontDataFactory {\n  constructor({\n    baseUrl = null\n  }) {\n    if (this.constructor === BaseStandardFontDataFactory) {\n      (0, _util.unreachable)(\"Cannot initialize BaseStandardFontDataFactory.\");\n    }\n\n    this.baseUrl = baseUrl;\n  }\n\n  async fetch({\n    filename\n  }) {\n    if (!this.baseUrl) {\n      throw new Error('The standard font \"baseUrl\" parameter must be specified, ensure that ' + 'the \"standardFontDataUrl\" API parameter is provided.');\n    }\n\n    if (!filename) {\n      throw new Error(\"Font filename must be specified.\");\n    }\n\n    const url = `${this.baseUrl}${filename}`;\n    return this._fetchData(url).catch(reason => {\n      throw new Error(`Unable to load font data at: ${url}`);\n    });\n  }\n\n  _fetchData(url) {\n    (0, _util.unreachable)(\"Abstract method `_fetchData` called.\");\n  }\n\n}\n\nexports.BaseStandardFontDataFactory = BaseStandardFontDataFactory;\n\nclass BaseSVGFactory {\n  constructor() {\n    if (this.constructor === BaseSVGFactory) {\n      (0, _util.unreachable)(\"Cannot initialize BaseSVGFactory.\");\n    }\n  }\n\n  create(width, height) {\n    if (width <= 0 || height <= 0) {\n      throw new Error(\"Invalid SVG dimensions\");\n    }\n\n    const svg = this._createSVG(\"svg:svg\");\n\n    svg.setAttribute(\"version\", \"1.1\");\n    svg.setAttribute(\"width\", `${width}px`);\n    svg.setAttribute(\"height\", `${height}px`);\n    svg.setAttribute(\"preserveAspectRatio\", \"none\");\n    svg.setAttribute(\"viewBox\", `0 0 ${width} ${height}`);\n    return svg;\n  }\n\n  createElement(type) {\n    if (typeof type !== \"string\") {\n      throw new Error(\"Invalid SVG element type\");\n    }\n\n    return this._createSVG(type);\n  }\n\n  _createSVG(type) {\n    (0, _util.unreachable)(\"Abstract method `_createSVG` called.\");\n  }\n\n}\n\nexports.BaseSVGFactory = BaseSVGFactory;\n\n/***/ }),\n/* 7 */\n/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {\n\n\n\nObject.defineProperty(exports, \"__esModule\", ({\n  value: true\n}));\nexports.FontLoader = exports.FontFaceObject = void 0;\n\nvar _util = __w_pdfjs_require__(1);\n\nclass BaseFontLoader {\n  constructor({\n    docId,\n    onUnsupportedFeature,\n    ownerDocument = globalThis.document,\n    styleElement = null\n  }) {\n    if (this.constructor === BaseFontLoader) {\n      (0, _util.unreachable)(\"Cannot initialize BaseFontLoader.\");\n    }\n\n    this.docId = docId;\n    this._onUnsupportedFeature = onUnsupportedFeature;\n    this._document = ownerDocument;\n    this.nativeFontFaces = [];\n    this.styleElement = null;\n  }\n\n  addNativeFontFace(nativeFontFace) {\n    this.nativeFontFaces.push(nativeFontFace);\n\n    this._document.fonts.add(nativeFontFace);\n  }\n\n  insertRule(rule) {\n    let styleElement = this.styleElement;\n\n    if (!styleElement) {\n      styleElement = this.styleElement = this._document.createElement(\"style\");\n      styleElement.id = `PDFJS_FONT_STYLE_TAG_${this.docId}`;\n\n      this._document.documentElement.getElementsByTagName(\"head\")[0].appendChild(styleElement);\n    }\n\n    const styleSheet = styleElement.sheet;\n    styleSheet.insertRule(rule, styleSheet.cssRules.length);\n  }\n\n  clear() {\n    for (const nativeFontFace of this.nativeFontFaces) {\n      this._document.fonts.delete(nativeFontFace);\n    }\n\n    this.nativeFontFaces.length = 0;\n\n    if (this.styleElement) {\n      this.styleElement.remove();\n      this.styleElement = null;\n    }\n  }\n\n  async bind(font) {\n    if (font.attached || font.missingFile) {\n      return;\n    }\n\n    font.attached = true;\n\n    if (this.isFontLoadingAPISupported) {\n      const nativeFontFace = font.createNativeFontFace();\n\n      if (nativeFontFace) {\n        this.addNativeFontFace(nativeFontFace);\n\n        try {\n          await nativeFontFace.loaded;\n        } catch (ex) {\n          this._onUnsupportedFeature({\n            featureId: _util.UNSUPPORTED_FEATURES.errorFontLoadNative\n          });\n\n          (0, _util.warn)(`Failed to load font '${nativeFontFace.family}': '${ex}'.`);\n          font.disableFontFace = true;\n          throw ex;\n        }\n      }\n\n      return;\n    }\n\n    const rule = font.createFontFaceRule();\n\n    if (rule) {\n      this.insertRule(rule);\n\n      if (this.isSyncFontLoadingSupported) {\n        return;\n      }\n\n      await new Promise(resolve => {\n        const request = this._queueLoadingCallback(resolve);\n\n        this._prepareFontLoadEvent([rule], [font], request);\n      });\n    }\n  }\n\n  _queueLoadingCallback(callback) {\n    (0, _util.unreachable)(\"Abstract method `_queueLoadingCallback`.\");\n  }\n\n  get isFontLoadingAPISupported() {\n    const hasFonts = !!this._document?.fonts;\n    return (0, _util.shadow)(this, \"isFontLoadingAPISupported\", hasFonts);\n  }\n\n  get isSyncFontLoadingSupported() {\n    (0, _util.unreachable)(\"Abstract method `isSyncFontLoadingSupported`.\");\n  }\n\n  get _loadTestFont() {\n    (0, _util.unreachable)(\"Abstract method `_loadTestFont`.\");\n  }\n\n  _prepareFontLoadEvent(rules, fontsToLoad, request) {\n    (0, _util.unreachable)(\"Abstract method `_prepareFontLoadEvent`.\");\n  }\n\n}\n\nlet FontLoader;\nexports.FontLoader = FontLoader;\n{\n  exports.FontLoader = FontLoader = class GenericFontLoader extends BaseFontLoader {\n    constructor(params) {\n      super(params);\n      this.loadingContext = {\n        requests: [],\n        nextRequestId: 0\n      };\n      this.loadTestFontId = 0;\n    }\n\n    get isSyncFontLoadingSupported() {\n      let supported = false;\n\n      if (typeof navigator === \"undefined\") {\n        supported = true;\n      } else {\n        const m = /Mozilla\\/5.0.*?rv:(\\d+).*? Gecko/.exec(navigator.userAgent);\n\n        if (m?.[1] >= 14) {\n          supported = true;\n        }\n      }\n\n      return (0, _util.shadow)(this, \"isSyncFontLoadingSupported\", supported);\n    }\n\n    _queueLoadingCallback(callback) {\n      function completeRequest() {\n        (0, _util.assert)(!request.done, \"completeRequest() cannot be called twice.\");\n        request.done = true;\n\n        while (context.requests.length > 0 && context.requests[0].done) {\n          const otherRequest = context.requests.shift();\n          setTimeout(otherRequest.callback, 0);\n        }\n      }\n\n      const context = this.loadingContext;\n      const request = {\n        id: `pdfjs-font-loading-${context.nextRequestId++}`,\n        done: false,\n        complete: completeRequest,\n        callback\n      };\n      context.requests.push(request);\n      return request;\n    }\n\n    get _loadTestFont() {\n      const getLoadTestFont = function () {\n        return atob(\"T1RUTwALAIAAAwAwQ0ZGIDHtZg4AAAOYAAAAgUZGVE1lkzZwAAAEHAAAABxHREVGABQA\" + \"FQAABDgAAAAeT1MvMlYNYwkAAAEgAAAAYGNtYXABDQLUAAACNAAAAUJoZWFk/xVFDQAA\" + \"ALwAAAA2aGhlYQdkA+oAAAD0AAAAJGhtdHgD6AAAAAAEWAAAAAZtYXhwAAJQAAAAARgA\" + \"AAAGbmFtZVjmdH4AAAGAAAAAsXBvc3T/hgAzAAADeAAAACAAAQAAAAEAALZRFsRfDzz1\" + \"AAsD6AAAAADOBOTLAAAAAM4KHDwAAAAAA+gDIQAAAAgAAgAAAAAAAAABAAADIQAAAFoD\" + \"6AAAAAAD6AABAAAAAAAAAAAAAAAAAAAAAQAAUAAAAgAAAAQD6AH0AAUAAAKKArwAAACM\" + \"AooCvAAAAeAAMQECAAACAAYJAAAAAAAAAAAAAQAAAAAAAAAAAAAAAFBmRWQAwAAuAC4D\" + \"IP84AFoDIQAAAAAAAQAAAAAAAAAAACAAIAABAAAADgCuAAEAAAAAAAAAAQAAAAEAAAAA\" + \"AAEAAQAAAAEAAAAAAAIAAQAAAAEAAAAAAAMAAQAAAAEAAAAAAAQAAQAAAAEAAAAAAAUA\" + \"AQAAAAEAAAAAAAYAAQAAAAMAAQQJAAAAAgABAAMAAQQJAAEAAgABAAMAAQQJAAIAAgAB\" + \"AAMAAQQJAAMAAgABAAMAAQQJAAQAAgABAAMAAQQJAAUAAgABAAMAAQQJAAYAAgABWABY\" + \"AAAAAAAAAwAAAAMAAAAcAAEAAAAAADwAAwABAAAAHAAEACAAAAAEAAQAAQAAAC7//wAA\" + \"AC7////TAAEAAAAAAAABBgAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\" + \"AAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\" + \"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\" + \"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\" + \"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\" + \"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAAAAD/gwAyAAAAAQAAAAAAAAAAAAAAAAAA\" + \"AAABAAQEAAEBAQJYAAEBASH4DwD4GwHEAvgcA/gXBIwMAYuL+nz5tQXkD5j3CBLnEQAC\" + \"AQEBIVhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYAAABAQAADwACAQEEE/t3\" + \"Dov6fAH6fAT+fPp8+nwHDosMCvm1Cvm1DAz6fBQAAAAAAAABAAAAAMmJbzEAAAAAzgTj\" + \"FQAAAADOBOQpAAEAAAAAAAAADAAUAAQAAAABAAAAAgABAAAAAAAAAAAD6AAAAAAAAA==\");\n      };\n\n      return (0, _util.shadow)(this, \"_loadTestFont\", getLoadTestFont());\n    }\n\n    _prepareFontLoadEvent(rules, fonts, request) {\n      function int32(data, offset) {\n        return data.charCodeAt(offset) << 24 | data.charCodeAt(offset + 1) << 16 | data.charCodeAt(offset + 2) << 8 | data.charCodeAt(offset + 3) & 0xff;\n      }\n\n      function spliceString(s, offset, remove, insert) {\n        const chunk1 = s.substring(0, offset);\n        const chunk2 = s.substring(offset + remove);\n        return chunk1 + insert + chunk2;\n      }\n\n      let i, ii;\n\n      const canvas = this._document.createElement(\"canvas\");\n\n      canvas.width = 1;\n      canvas.height = 1;\n      const ctx = canvas.getContext(\"2d\");\n      let called = 0;\n\n      function isFontReady(name, callback) {\n        called++;\n\n        if (called > 30) {\n          (0, _util.warn)(\"Load test font never loaded.\");\n          callback();\n          return;\n        }\n\n        ctx.font = \"30px \" + name;\n        ctx.fillText(\".\", 0, 20);\n        const imageData = ctx.getImageData(0, 0, 1, 1);\n\n        if (imageData.data[3] > 0) {\n          callback();\n          return;\n        }\n\n        setTimeout(isFontReady.bind(null, name, callback));\n      }\n\n      const loadTestFontId = `lt${Date.now()}${this.loadTestFontId++}`;\n      let data = this._loadTestFont;\n      const COMMENT_OFFSET = 976;\n      data = spliceString(data, COMMENT_OFFSET, loadTestFontId.length, loadTestFontId);\n      const CFF_CHECKSUM_OFFSET = 16;\n      const XXXX_VALUE = 0x58585858;\n      let checksum = int32(data, CFF_CHECKSUM_OFFSET);\n\n      for (i = 0, ii = loadTestFontId.length - 3; i < ii; i += 4) {\n        checksum = checksum - XXXX_VALUE + int32(loadTestFontId, i) | 0;\n      }\n\n      if (i < loadTestFontId.length) {\n        checksum = checksum - XXXX_VALUE + int32(loadTestFontId + \"XXX\", i) | 0;\n      }\n\n      data = spliceString(data, CFF_CHECKSUM_OFFSET, 4, (0, _util.string32)(checksum));\n      const url = `url(data:font/opentype;base64,${btoa(data)});`;\n      const rule = `@font-face {font-family:\"${loadTestFontId}\";src:${url}}`;\n      this.insertRule(rule);\n      const names = [];\n\n      for (const font of fonts) {\n        names.push(font.loadedName);\n      }\n\n      names.push(loadTestFontId);\n\n      const div = this._document.createElement(\"div\");\n\n      div.style.visibility = \"hidden\";\n      div.style.width = div.style.height = \"10px\";\n      div.style.position = \"absolute\";\n      div.style.top = div.style.left = \"0px\";\n\n      for (const name of names) {\n        const span = this._document.createElement(\"span\");\n\n        span.textContent = \"Hi\";\n        span.style.fontFamily = name;\n        div.appendChild(span);\n      }\n\n      this._document.body.appendChild(div);\n\n      isFontReady(loadTestFontId, () => {\n        div.remove();\n        request.complete();\n      });\n    }\n\n  };\n}\n\nclass FontFaceObject {\n  constructor(translatedData, {\n    isEvalSupported = true,\n    disableFontFace = false,\n    ignoreErrors = false,\n    onUnsupportedFeature,\n    fontRegistry = null\n  }) {\n    this.compiledGlyphs = Object.create(null);\n\n    for (const i in translatedData) {\n      this[i] = translatedData[i];\n    }\n\n    this.isEvalSupported = isEvalSupported !== false;\n    this.disableFontFace = disableFontFace === true;\n    this.ignoreErrors = ignoreErrors === true;\n    this._onUnsupportedFeature = onUnsupportedFeature;\n    this.fontRegistry = fontRegistry;\n  }\n\n  createNativeFontFace() {\n    if (!this.data || this.disableFontFace) {\n      return null;\n    }\n\n    let nativeFontFace;\n\n    if (!this.cssFontInfo) {\n      nativeFontFace = new FontFace(this.loadedName, this.data, {});\n    } else {\n      const css = {\n        weight: this.cssFontInfo.fontWeight\n      };\n\n      if (this.cssFontInfo.italicAngle) {\n        css.style = `oblique ${this.cssFontInfo.italicAngle}deg`;\n      }\n\n      nativeFontFace = new FontFace(this.cssFontInfo.fontFamily, this.data, css);\n    }\n\n    if (this.fontRegistry) {\n      this.fontRegistry.registerFont(this);\n    }\n\n    return nativeFontFace;\n  }\n\n  createFontFaceRule() {\n    if (!this.data || this.disableFontFace) {\n      return null;\n    }\n\n    const data = (0, _util.bytesToString)(this.data);\n    const url = `url(data:${this.mimetype};base64,${btoa(data)});`;\n    let rule;\n\n    if (!this.cssFontInfo) {\n      rule = `@font-face {font-family:\"${this.loadedName}\";src:${url}}`;\n    } else {\n      let css = `font-weight: ${this.cssFontInfo.fontWeight};`;\n\n      if (this.cssFontInfo.italicAngle) {\n        css += `font-style: oblique ${this.cssFontInfo.italicAngle}deg;`;\n      }\n\n      rule = `@font-face {font-family:\"${this.cssFontInfo.fontFamily}\";${css}src:${url}}`;\n    }\n\n    if (this.fontRegistry) {\n      this.fontRegistry.registerFont(this, url);\n    }\n\n    return rule;\n  }\n\n  getPathGenerator(objs, character) {\n    if (this.compiledGlyphs[character] !== undefined) {\n      return this.compiledGlyphs[character];\n    }\n\n    let cmds;\n\n    try {\n      cmds = objs.get(this.loadedName + \"_path_\" + character);\n    } catch (ex) {\n      if (!this.ignoreErrors) {\n        throw ex;\n      }\n\n      this._onUnsupportedFeature({\n        featureId: _util.UNSUPPORTED_FEATURES.errorFontGetPath\n      });\n\n      (0, _util.warn)(`getPathGenerator - ignoring character: \"${ex}\".`);\n      return this.compiledGlyphs[character] = function (c, size) {};\n    }\n\n    if (this.isEvalSupported && _util.IsEvalSupportedCached.value) {\n      const jsBuf = [];\n\n      for (const current of cmds) {\n        const args = current.args !== undefined ? current.args.join(\",\") : \"\";\n        jsBuf.push(\"c.\", current.cmd, \"(\", args, \");\\n\");\n      }\n\n      return this.compiledGlyphs[character] = new Function(\"c\", \"size\", jsBuf.join(\"\"));\n    }\n\n    return this.compiledGlyphs[character] = function (c, size) {\n      for (const current of cmds) {\n        if (current.cmd === \"scale\") {\n          current.args = [size, -size];\n        }\n\n        c[current.cmd].apply(c, current.args);\n      }\n    };\n  }\n\n}\n\nexports.FontFaceObject = FontFaceObject;\n\n/***/ }),\n/* 8 */\n/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {\n\n\n\nObject.defineProperty(exports, \"__esModule\", ({\n  value: true\n}));\nexports.NodeStandardFontDataFactory = exports.NodeCanvasFactory = exports.NodeCMapReaderFactory = void 0;\n\nvar _base_factory = __w_pdfjs_require__(6);\n\nvar _is_node = __w_pdfjs_require__(3);\n\nvar _util = __w_pdfjs_require__(1);\n\nlet NodeCanvasFactory = class {\n  constructor() {\n    (0, _util.unreachable)(\"Not implemented: NodeCanvasFactory\");\n  }\n\n};\nexports.NodeCanvasFactory = NodeCanvasFactory;\nlet NodeCMapReaderFactory = class {\n  constructor() {\n    (0, _util.unreachable)(\"Not implemented: NodeCMapReaderFactory\");\n  }\n\n};\nexports.NodeCMapReaderFactory = NodeCMapReaderFactory;\nlet NodeStandardFontDataFactory = class {\n  constructor() {\n    (0, _util.unreachable)(\"Not implemented: NodeStandardFontDataFactory\");\n  }\n\n};\nexports.NodeStandardFontDataFactory = NodeStandardFontDataFactory;\n\nif (_is_node.isNodeJS) {\n  const fetchData = function (url) {\n    return new Promise((resolve, reject) => {\n      const fs = require(\"fs\");\n\n      fs.readFile(url, (error, data) => {\n        if (error || !data) {\n          reject(new Error(error));\n          return;\n        }\n\n        resolve(new Uint8Array(data));\n      });\n    });\n  };\n\n  exports.NodeCanvasFactory = NodeCanvasFactory = class extends _base_factory.BaseCanvasFactory {\n    _createCanvas(width, height) {\n      const Canvas = require(\"canvas\");\n\n      return Canvas.createCanvas(width, height);\n    }\n\n  };\n  exports.NodeCMapReaderFactory = NodeCMapReaderFactory = class extends _base_factory.BaseCMapReaderFactory {\n    _fetchData(url, compressionType) {\n      return fetchData(url).then(data => {\n        return {\n          cMapData: data,\n          compressionType\n        };\n      });\n    }\n\n  };\n  exports.NodeStandardFontDataFactory = NodeStandardFontDataFactory = class extends _base_factory.BaseStandardFontDataFactory {\n    _fetchData(url) {\n      return fetchData(url);\n    }\n\n  };\n}\n\n/***/ }),\n/* 9 */\n/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {\n\n\n\nObject.defineProperty(exports, \"__esModule\", ({\n  value: true\n}));\nexports.AnnotationStorage = void 0;\n\nvar _util = __w_pdfjs_require__(1);\n\nclass AnnotationStorage {\n  constructor() {\n    this._storage = new Map();\n    this._timeStamp = Date.now();\n    this._modified = false;\n    this.onSetModified = null;\n    this.onResetModified = null;\n  }\n\n  getValue(key, defaultValue) {\n    const value = this._storage.get(key);\n\n    if (value === undefined) {\n      return defaultValue;\n    }\n\n    return Object.assign(defaultValue, value);\n  }\n\n  setValue(key, value) {\n    const obj = this._storage.get(key);\n\n    let modified = false;\n\n    if (obj !== undefined) {\n      for (const [entry, val] of Object.entries(value)) {\n        if (obj[entry] !== val) {\n          modified = true;\n          obj[entry] = val;\n        }\n      }\n    } else {\n      modified = true;\n\n      this._storage.set(key, value);\n    }\n\n    if (modified) {\n      this._timeStamp = Date.now();\n\n      this._setModified();\n    }\n  }\n\n  getAll() {\n    return this._storage.size > 0 ? (0, _util.objectFromMap)(this._storage) : null;\n  }\n\n  get size() {\n    return this._storage.size;\n  }\n\n  _setModified() {\n    if (!this._modified) {\n      this._modified = true;\n\n      if (typeof this.onSetModified === \"function\") {\n        this.onSetModified();\n      }\n    }\n  }\n\n  resetModified() {\n    if (this._modified) {\n      this._modified = false;\n\n      if (typeof this.onResetModified === \"function\") {\n        this.onResetModified();\n      }\n    }\n  }\n\n  get serializable() {\n    return this._storage.size > 0 ? this._storage : null;\n  }\n\n  get lastModified() {\n    return this._timeStamp.toString();\n  }\n\n}\n\nexports.AnnotationStorage = AnnotationStorage;\n\n/***/ }),\n/* 10 */\n/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {\n\n\n\nObject.defineProperty(exports, \"__esModule\", ({\n  value: true\n}));\nexports.CanvasGraphics = void 0;\n\nvar _util = __w_pdfjs_require__(1);\n\nvar _pattern_helper = __w_pdfjs_require__(11);\n\nvar _display_utils = __w_pdfjs_require__(5);\n\nconst MIN_FONT_SIZE = 16;\nconst MAX_FONT_SIZE = 100;\nconst MAX_GROUP_SIZE = 4096;\nconst EXECUTION_TIME = 15;\nconst EXECUTION_STEPS = 10;\nconst COMPILE_TYPE3_GLYPHS = true;\nconst MAX_SIZE_TO_COMPILE = 1000;\nconst FULL_CHUNK_HEIGHT = 16;\nconst LINEWIDTH_SCALE_FACTOR = 1.000001;\n\nfunction mirrorContextOperations(ctx, destCtx) {\n  if (ctx._removeMirroring) {\n    throw new Error(\"Context is already forwarding operations.\");\n  }\n\n  ctx.__originalSave = ctx.save;\n  ctx.__originalRestore = ctx.restore;\n  ctx.__originalRotate = ctx.rotate;\n  ctx.__originalScale = ctx.scale;\n  ctx.__originalTranslate = ctx.translate;\n  ctx.__originalTransform = ctx.transform;\n  ctx.__originalSetTransform = ctx.setTransform;\n  ctx.__originalResetTransform = ctx.resetTransform;\n  ctx.__originalClip = ctx.clip;\n  ctx.__originalMoveTo = ctx.moveTo;\n  ctx.__originalLineTo = ctx.lineTo;\n  ctx.__originalBezierCurveTo = ctx.bezierCurveTo;\n  ctx.__originalRect = ctx.rect;\n  ctx.__originalClosePath = ctx.closePath;\n  ctx.__originalBeginPath = ctx.beginPath;\n\n  ctx._removeMirroring = () => {\n    ctx.save = ctx.__originalSave;\n    ctx.restore = ctx.__originalRestore;\n    ctx.rotate = ctx.__originalRotate;\n    ctx.scale = ctx.__originalScale;\n    ctx.translate = ctx.__originalTranslate;\n    ctx.transform = ctx.__originalTransform;\n    ctx.setTransform = ctx.__originalSetTransform;\n    ctx.resetTransform = ctx.__originalResetTransform;\n    ctx.clip = ctx.__originalClip;\n    ctx.moveTo = ctx.__originalMoveTo;\n    ctx.lineTo = ctx.__originalLineTo;\n    ctx.bezierCurveTo = ctx.__originalBezierCurveTo;\n    ctx.rect = ctx.__originalRect;\n    ctx.closePath = ctx.__originalClosePath;\n    ctx.beginPath = ctx.__originalBeginPath;\n    delete ctx._removeMirroring;\n  };\n\n  ctx.save = function ctxSave() {\n    destCtx.save();\n\n    this.__originalSave();\n  };\n\n  ctx.restore = function ctxRestore() {\n    destCtx.restore();\n\n    this.__originalRestore();\n  };\n\n  ctx.translate = function ctxTranslate(x, y) {\n    destCtx.translate(x, y);\n\n    this.__originalTranslate(x, y);\n  };\n\n  ctx.scale = function ctxScale(x, y) {\n    destCtx.scale(x, y);\n\n    this.__originalScale(x, y);\n  };\n\n  ctx.transform = function ctxTransform(a, b, c, d, e, f) {\n    destCtx.transform(a, b, c, d, e, f);\n\n    this.__originalTransform(a, b, c, d, e, f);\n  };\n\n  ctx.setTransform = function ctxSetTransform(a, b, c, d, e, f) {\n    destCtx.setTransform(a, b, c, d, e, f);\n\n    this.__originalSetTransform(a, b, c, d, e, f);\n  };\n\n  ctx.resetTransform = function ctxResetTransform() {\n    destCtx.resetTransform();\n\n    this.__originalResetTransform();\n  };\n\n  ctx.rotate = function ctxRotate(angle) {\n    destCtx.rotate(angle);\n\n    this.__originalRotate(angle);\n  };\n\n  ctx.clip = function ctxRotate(rule) {\n    destCtx.clip(rule);\n\n    this.__originalClip(rule);\n  };\n\n  ctx.moveTo = function (x, y) {\n    destCtx.moveTo(x, y);\n\n    this.__originalMoveTo(x, y);\n  };\n\n  ctx.lineTo = function (x, y) {\n    destCtx.lineTo(x, y);\n\n    this.__originalLineTo(x, y);\n  };\n\n  ctx.bezierCurveTo = function (cp1x, cp1y, cp2x, cp2y, x, y) {\n    destCtx.bezierCurveTo(cp1x, cp1y, cp2x, cp2y, x, y);\n\n    this.__originalBezierCurveTo(cp1x, cp1y, cp2x, cp2y, x, y);\n  };\n\n  ctx.rect = function (x, y, width, height) {\n    destCtx.rect(x, y, width, height);\n\n    this.__originalRect(x, y, width, height);\n  };\n\n  ctx.closePath = function () {\n    destCtx.closePath();\n\n    this.__originalClosePath();\n  };\n\n  ctx.beginPath = function () {\n    destCtx.beginPath();\n\n    this.__originalBeginPath();\n  };\n}\n\nfunction addContextCurrentTransform(ctx) {\n  if (ctx._transformStack) {\n    ctx._transformStack = [];\n  }\n\n  if (ctx.mozCurrentTransform) {\n    return;\n  }\n\n  ctx._originalSave = ctx.save;\n  ctx._originalRestore = ctx.restore;\n  ctx._originalRotate = ctx.rotate;\n  ctx._originalScale = ctx.scale;\n  ctx._originalTranslate = ctx.translate;\n  ctx._originalTransform = ctx.transform;\n  ctx._originalSetTransform = ctx.setTransform;\n  ctx._originalResetTransform = ctx.resetTransform;\n  ctx._transformMatrix = ctx._transformMatrix || [1, 0, 0, 1, 0, 0];\n  ctx._transformStack = [];\n\n  try {\n    const desc = Object.getOwnPropertyDescriptor(Object.getPrototypeOf(ctx), \"lineWidth\");\n    ctx._setLineWidth = desc.set;\n    ctx._getLineWidth = desc.get;\n    Object.defineProperty(ctx, \"lineWidth\", {\n      set: function setLineWidth(width) {\n        this._setLineWidth(width * LINEWIDTH_SCALE_FACTOR);\n      },\n      get: function getLineWidth() {\n        return this._getLineWidth();\n      }\n    });\n  } catch (_) {}\n\n  Object.defineProperty(ctx, \"mozCurrentTransform\", {\n    get: function getCurrentTransform() {\n      return this._transformMatrix;\n    }\n  });\n  Object.defineProperty(ctx, \"mozCurrentTransformInverse\", {\n    get: function getCurrentTransformInverse() {\n      const [a, b, c, d, e, f] = this._transformMatrix;\n      const ad_bc = a * d - b * c;\n      const bc_ad = b * c - a * d;\n      return [d / ad_bc, b / bc_ad, c / bc_ad, a / ad_bc, (d * e - c * f) / bc_ad, (b * e - a * f) / ad_bc];\n    }\n  });\n\n  ctx.save = function ctxSave() {\n    const old = this._transformMatrix;\n\n    this._transformStack.push(old);\n\n    this._transformMatrix = old.slice(0, 6);\n\n    this._originalSave();\n  };\n\n  ctx.restore = function ctxRestore() {\n    if (this._transformStack.length === 0) {\n      (0, _util.warn)(\"Tried to restore a ctx when the stack was already empty.\");\n    }\n\n    const prev = this._transformStack.pop();\n\n    if (prev) {\n      this._transformMatrix = prev;\n\n      this._originalRestore();\n    }\n  };\n\n  ctx.translate = function ctxTranslate(x, y) {\n    const m = this._transformMatrix;\n    m[4] = m[0] * x + m[2] * y + m[4];\n    m[5] = m[1] * x + m[3] * y + m[5];\n\n    this._originalTranslate(x, y);\n  };\n\n  ctx.scale = function ctxScale(x, y) {\n    const m = this._transformMatrix;\n    m[0] *= x;\n    m[1] *= x;\n    m[2] *= y;\n    m[3] *= y;\n\n    this._originalScale(x, y);\n  };\n\n  ctx.transform = function ctxTransform(a, b, c, d, e, f) {\n    const m = this._transformMatrix;\n    this._transformMatrix = [m[0] * a + m[2] * b, m[1] * a + m[3] * b, m[0] * c + m[2] * d, m[1] * c + m[3] * d, m[0] * e + m[2] * f + m[4], m[1] * e + m[3] * f + m[5]];\n\n    ctx._originalTransform(a, b, c, d, e, f);\n  };\n\n  ctx.setTransform = function ctxSetTransform(a, b, c, d, e, f) {\n    this._transformMatrix = [a, b, c, d, e, f];\n\n    ctx._originalSetTransform(a, b, c, d, e, f);\n  };\n\n  ctx.resetTransform = function ctxResetTransform() {\n    this._transformMatrix = [1, 0, 0, 1, 0, 0];\n\n    ctx._originalResetTransform();\n  };\n\n  ctx.rotate = function ctxRotate(angle) {\n    const cosValue = Math.cos(angle);\n    const sinValue = Math.sin(angle);\n    const m = this._transformMatrix;\n    this._transformMatrix = [m[0] * cosValue + m[2] * sinValue, m[1] * cosValue + m[3] * sinValue, m[0] * -sinValue + m[2] * cosValue, m[1] * -sinValue + m[3] * cosValue, m[4], m[5]];\n\n    this._originalRotate(angle);\n  };\n}\n\nclass CachedCanvases {\n  constructor(canvasFactory) {\n    this.canvasFactory = canvasFactory;\n    this.cache = Object.create(null);\n  }\n\n  getCanvas(id, width, height, trackTransform) {\n    let canvasEntry;\n\n    if (this.cache[id] !== undefined) {\n      canvasEntry = this.cache[id];\n      this.canvasFactory.reset(canvasEntry, width, height);\n      canvasEntry.context.setTransform(1, 0, 0, 1, 0, 0);\n    } else {\n      canvasEntry = this.canvasFactory.create(width, height);\n      this.cache[id] = canvasEntry;\n    }\n\n    if (trackTransform) {\n      addContextCurrentTransform(canvasEntry.context);\n    }\n\n    return canvasEntry;\n  }\n\n  clear() {\n    for (const id in this.cache) {\n      const canvasEntry = this.cache[id];\n      this.canvasFactory.destroy(canvasEntry);\n      delete this.cache[id];\n    }\n  }\n\n}\n\nfunction compileType3Glyph(imgData) {\n  const POINT_TO_PROCESS_LIMIT = 1000;\n  const POINT_TYPES = new Uint8Array([0, 2, 4, 0, 1, 0, 5, 4, 8, 10, 0, 8, 0, 2, 1, 0]);\n  const width = imgData.width,\n        height = imgData.height,\n        width1 = width + 1;\n  let i, ii, j, j0;\n  const points = new Uint8Array(width1 * (height + 1));\n  const lineSize = width + 7 & ~7,\n        data0 = imgData.data;\n  const data = new Uint8Array(lineSize * height);\n  let pos = 0;\n\n  for (i = 0, ii = data0.length; i < ii; i++) {\n    const elem = data0[i];\n    let mask = 128;\n\n    while (mask > 0) {\n      data[pos++] = elem & mask ? 0 : 255;\n      mask >>= 1;\n    }\n  }\n\n  let count = 0;\n  pos = 0;\n\n  if (data[pos] !== 0) {\n    points[0] = 1;\n    ++count;\n  }\n\n  for (j = 1; j < width; j++) {\n    if (data[pos] !== data[pos + 1]) {\n      points[j] = data[pos] ? 2 : 1;\n      ++count;\n    }\n\n    pos++;\n  }\n\n  if (data[pos] !== 0) {\n    points[j] = 2;\n    ++count;\n  }\n\n  for (i = 1; i < height; i++) {\n    pos = i * lineSize;\n    j0 = i * width1;\n\n    if (data[pos - lineSize] !== data[pos]) {\n      points[j0] = data[pos] ? 1 : 8;\n      ++count;\n    }\n\n    let sum = (data[pos] ? 4 : 0) + (data[pos - lineSize] ? 8 : 0);\n\n    for (j = 1; j < width; j++) {\n      sum = (sum >> 2) + (data[pos + 1] ? 4 : 0) + (data[pos - lineSize + 1] ? 8 : 0);\n\n      if (POINT_TYPES[sum]) {\n        points[j0 + j] = POINT_TYPES[sum];\n        ++count;\n      }\n\n      pos++;\n    }\n\n    if (data[pos - lineSize] !== data[pos]) {\n      points[j0 + j] = data[pos] ? 2 : 4;\n      ++count;\n    }\n\n    if (count > POINT_TO_PROCESS_LIMIT) {\n      return null;\n    }\n  }\n\n  pos = lineSize * (height - 1);\n  j0 = i * width1;\n\n  if (data[pos] !== 0) {\n    points[j0] = 8;\n    ++count;\n  }\n\n  for (j = 1; j < width; j++) {\n    if (data[pos] !== data[pos + 1]) {\n      points[j0 + j] = data[pos] ? 4 : 8;\n      ++count;\n    }\n\n    pos++;\n  }\n\n  if (data[pos] !== 0) {\n    points[j0 + j] = 4;\n    ++count;\n  }\n\n  if (count > POINT_TO_PROCESS_LIMIT) {\n    return null;\n  }\n\n  const steps = new Int32Array([0, width1, -1, 0, -width1, 0, 0, 0, 1]);\n  const outlines = [];\n\n  for (i = 0; count && i <= height; i++) {\n    let p = i * width1;\n    const end = p + width;\n\n    while (p < end && !points[p]) {\n      p++;\n    }\n\n    if (p === end) {\n      continue;\n    }\n\n    const coords = [p % width1, i];\n    const p0 = p;\n    let type = points[p];\n\n    do {\n      const step = steps[type];\n\n      do {\n        p += step;\n      } while (!points[p]);\n\n      const pp = points[p];\n\n      if (pp !== 5 && pp !== 10) {\n        type = pp;\n        points[p] = 0;\n      } else {\n        type = pp & 0x33 * type >> 4;\n        points[p] &= type >> 2 | type << 2;\n      }\n\n      coords.push(p % width1, p / width1 | 0);\n\n      if (!points[p]) {\n        --count;\n      }\n    } while (p0 !== p);\n\n    outlines.push(coords);\n    --i;\n  }\n\n  const drawOutline = function (c) {\n    c.save();\n    c.scale(1 / width, -1 / height);\n    c.translate(0, -height);\n    c.beginPath();\n\n    for (let k = 0, kk = outlines.length; k < kk; k++) {\n      const o = outlines[k];\n      c.moveTo(o[0], o[1]);\n\n      for (let l = 2, ll = o.length; l < ll; l += 2) {\n        c.lineTo(o[l], o[l + 1]);\n      }\n    }\n\n    c.fill();\n    c.beginPath();\n    c.restore();\n  };\n\n  return drawOutline;\n}\n\nclass CanvasExtraState {\n  constructor(width, height) {\n    this.alphaIsShape = false;\n    this.fontSize = 0;\n    this.fontSizeScale = 1;\n    this.textMatrix = _util.IDENTITY_MATRIX;\n    this.textMatrixScale = 1;\n    this.fontMatrix = _util.FONT_IDENTITY_MATRIX;\n    this.leading = 0;\n    this.x = 0;\n    this.y = 0;\n    this.lineX = 0;\n    this.lineY = 0;\n    this.charSpacing = 0;\n    this.wordSpacing = 0;\n    this.textHScale = 1;\n    this.textRenderingMode = _util.TextRenderingMode.FILL;\n    this.textRise = 0;\n    this.fillColor = \"#000000\";\n    this.strokeColor = \"#000000\";\n    this.patternFill = false;\n    this.fillAlpha = 1;\n    this.strokeAlpha = 1;\n    this.lineWidth = 1;\n    this.activeSMask = null;\n    this.transferMaps = null;\n    this.startNewPathAndClipBox([0, 0, width, height]);\n  }\n\n  clone() {\n    const clone = Object.create(this);\n    clone.clipBox = this.clipBox.slice();\n    return clone;\n  }\n\n  setCurrentPoint(x, y) {\n    this.x = x;\n    this.y = y;\n  }\n\n  updatePathMinMax(transform, x, y) {\n    [x, y] = _util.Util.applyTransform([x, y], transform);\n    this.minX = Math.min(this.minX, x);\n    this.minY = Math.min(this.minY, y);\n    this.maxX = Math.max(this.maxX, x);\n    this.maxY = Math.max(this.maxY, y);\n  }\n\n  updateCurvePathMinMax(transform, x0, y0, x1, y1, x2, y2, x3, y3) {\n    const box = _util.Util.bezierBoundingBox(x0, y0, x1, y1, x2, y2, x3, y3);\n\n    this.updatePathMinMax(transform, box[0], box[1]);\n    this.updatePathMinMax(transform, box[2], box[3]);\n  }\n\n  getPathBoundingBox(pathType = _pattern_helper.PathType.FILL, transform = null) {\n    const box = [this.minX, this.minY, this.maxX, this.maxY];\n\n    if (pathType === _pattern_helper.PathType.STROKE) {\n      if (!transform) {\n        (0, _util.unreachable)(\"Stroke bounding box must include transform.\");\n      }\n\n      const scale = _util.Util.singularValueDecompose2dScale(transform);\n\n      const xStrokePad = scale[0] * this.lineWidth / 2;\n      const yStrokePad = scale[1] * this.lineWidth / 2;\n      box[0] -= xStrokePad;\n      box[1] -= yStrokePad;\n      box[2] += xStrokePad;\n      box[3] += yStrokePad;\n    }\n\n    return box;\n  }\n\n  updateClipFromPath() {\n    const intersect = _util.Util.intersect(this.clipBox, this.getPathBoundingBox());\n\n    this.startNewPathAndClipBox(intersect || [0, 0, 0, 0]);\n  }\n\n  startNewPathAndClipBox(box) {\n    this.clipBox = box;\n    this.minX = Infinity;\n    this.minY = Infinity;\n    this.maxX = 0;\n    this.maxY = 0;\n  }\n\n  getClippedPathBoundingBox(pathType = _pattern_helper.PathType.FILL, transform = null) {\n    return _util.Util.intersect(this.clipBox, this.getPathBoundingBox(pathType, transform));\n  }\n\n}\n\nfunction putBinaryImageData(ctx, imgData, transferMaps = null) {\n  if (typeof ImageData !== \"undefined\" && imgData instanceof ImageData) {\n    ctx.putImageData(imgData, 0, 0);\n    return;\n  }\n\n  const height = imgData.height,\n        width = imgData.width;\n  const partialChunkHeight = height % FULL_CHUNK_HEIGHT;\n  const fullChunks = (height - partialChunkHeight) / FULL_CHUNK_HEIGHT;\n  const totalChunks = partialChunkHeight === 0 ? fullChunks : fullChunks + 1;\n  const chunkImgData = ctx.createImageData(width, FULL_CHUNK_HEIGHT);\n  let srcPos = 0,\n      destPos;\n  const src = imgData.data;\n  const dest = chunkImgData.data;\n  let i, j, thisChunkHeight, elemsInThisChunk;\n  let transferMapRed, transferMapGreen, transferMapBlue, transferMapGray;\n\n  if (transferMaps) {\n    switch (transferMaps.length) {\n      case 1:\n        transferMapRed = transferMaps[0];\n        transferMapGreen = transferMaps[0];\n        transferMapBlue = transferMaps[0];\n        transferMapGray = transferMaps[0];\n        break;\n\n      case 4:\n        transferMapRed = transferMaps[0];\n        transferMapGreen = transferMaps[1];\n        transferMapBlue = transferMaps[2];\n        transferMapGray = transferMaps[3];\n        break;\n    }\n  }\n\n  if (imgData.kind === _util.ImageKind.GRAYSCALE_1BPP) {\n    const srcLength = src.byteLength;\n    const dest32 = new Uint32Array(dest.buffer, 0, dest.byteLength >> 2);\n    const dest32DataLength = dest32.length;\n    const fullSrcDiff = width + 7 >> 3;\n    let white = 0xffffffff;\n    let black = _util.IsLittleEndianCached.value ? 0xff000000 : 0x000000ff;\n\n    if (transferMapGray) {\n      if (transferMapGray[0] === 0xff && transferMapGray[0xff] === 0) {\n        [white, black] = [black, white];\n      }\n    }\n\n    for (i = 0; i < totalChunks; i++) {\n      thisChunkHeight = i < fullChunks ? FULL_CHUNK_HEIGHT : partialChunkHeight;\n      destPos = 0;\n\n      for (j = 0; j < thisChunkHeight; j++) {\n        const srcDiff = srcLength - srcPos;\n        let k = 0;\n        const kEnd = srcDiff > fullSrcDiff ? width : srcDiff * 8 - 7;\n        const kEndUnrolled = kEnd & ~7;\n        let mask = 0;\n        let srcByte = 0;\n\n        for (; k < kEndUnrolled; k += 8) {\n          srcByte = src[srcPos++];\n          dest32[destPos++] = srcByte & 128 ? white : black;\n          dest32[destPos++] = srcByte & 64 ? white : black;\n          dest32[destPos++] = srcByte & 32 ? white : black;\n          dest32[destPos++] = srcByte & 16 ? white : black;\n          dest32[destPos++] = srcByte & 8 ? white : black;\n          dest32[destPos++] = srcByte & 4 ? white : black;\n          dest32[destPos++] = srcByte & 2 ? white : black;\n          dest32[destPos++] = srcByte & 1 ? white : black;\n        }\n\n        for (; k < kEnd; k++) {\n          if (mask === 0) {\n            srcByte = src[srcPos++];\n            mask = 128;\n          }\n\n          dest32[destPos++] = srcByte & mask ? white : black;\n          mask >>= 1;\n        }\n      }\n\n      while (destPos < dest32DataLength) {\n        dest32[destPos++] = 0;\n      }\n\n      ctx.putImageData(chunkImgData, 0, i * FULL_CHUNK_HEIGHT);\n    }\n  } else if (imgData.kind === _util.ImageKind.RGBA_32BPP) {\n    const hasTransferMaps = !!(transferMapRed || transferMapGreen || transferMapBlue);\n    j = 0;\n    elemsInThisChunk = width * FULL_CHUNK_HEIGHT * 4;\n\n    for (i = 0; i < fullChunks; i++) {\n      dest.set(src.subarray(srcPos, srcPos + elemsInThisChunk));\n      srcPos += elemsInThisChunk;\n\n      if (hasTransferMaps) {\n        for (let k = 0; k < elemsInThisChunk; k += 4) {\n          if (transferMapRed) {\n            dest[k + 0] = transferMapRed[dest[k + 0]];\n          }\n\n          if (transferMapGreen) {\n            dest[k + 1] = transferMapGreen[dest[k + 1]];\n          }\n\n          if (transferMapBlue) {\n            dest[k + 2] = transferMapBlue[dest[k + 2]];\n          }\n        }\n      }\n\n      ctx.putImageData(chunkImgData, 0, j);\n      j += FULL_CHUNK_HEIGHT;\n    }\n\n    if (i < totalChunks) {\n      elemsInThisChunk = width * partialChunkHeight * 4;\n      dest.set(src.subarray(srcPos, srcPos + elemsInThisChunk));\n\n      if (hasTransferMaps) {\n        for (let k = 0; k < elemsInThisChunk; k += 4) {\n          if (transferMapRed) {\n            dest[k + 0] = transferMapRed[dest[k + 0]];\n          }\n\n          if (transferMapGreen) {\n            dest[k + 1] = transferMapGreen[dest[k + 1]];\n          }\n\n          if (transferMapBlue) {\n            dest[k + 2] = transferMapBlue[dest[k + 2]];\n          }\n        }\n      }\n\n      ctx.putImageData(chunkImgData, 0, j);\n    }\n  } else if (imgData.kind === _util.ImageKind.RGB_24BPP) {\n    const hasTransferMaps = !!(transferMapRed || transferMapGreen || transferMapBlue);\n    thisChunkHeight = FULL_CHUNK_HEIGHT;\n    elemsInThisChunk = width * thisChunkHeight;\n\n    for (i = 0; i < totalChunks; i++) {\n      if (i >= fullChunks) {\n        thisChunkHeight = partialChunkHeight;\n        elemsInThisChunk = width * thisChunkHeight;\n      }\n\n      destPos = 0;\n\n      for (j = elemsInThisChunk; j--;) {\n        dest[destPos++] = src[srcPos++];\n        dest[destPos++] = src[srcPos++];\n        dest[destPos++] = src[srcPos++];\n        dest[destPos++] = 255;\n      }\n\n      if (hasTransferMaps) {\n        for (let k = 0; k < destPos; k += 4) {\n          if (transferMapRed) {\n            dest[k + 0] = transferMapRed[dest[k + 0]];\n          }\n\n          if (transferMapGreen) {\n            dest[k + 1] = transferMapGreen[dest[k + 1]];\n          }\n\n          if (transferMapBlue) {\n            dest[k + 2] = transferMapBlue[dest[k + 2]];\n          }\n        }\n      }\n\n      ctx.putImageData(chunkImgData, 0, i * FULL_CHUNK_HEIGHT);\n    }\n  } else {\n    throw new Error(`bad image kind: ${imgData.kind}`);\n  }\n}\n\nfunction putBinaryImageMask(ctx, imgData) {\n  const height = imgData.height,\n        width = imgData.width;\n  const partialChunkHeight = height % FULL_CHUNK_HEIGHT;\n  const fullChunks = (height - partialChunkHeight) / FULL_CHUNK_HEIGHT;\n  const totalChunks = partialChunkHeight === 0 ? fullChunks : fullChunks + 1;\n  const chunkImgData = ctx.createImageData(width, FULL_CHUNK_HEIGHT);\n  let srcPos = 0;\n  const src = imgData.data;\n  const dest = chunkImgData.data;\n\n  for (let i = 0; i < totalChunks; i++) {\n    const thisChunkHeight = i < fullChunks ? FULL_CHUNK_HEIGHT : partialChunkHeight;\n    let destPos = 3;\n\n    for (let j = 0; j < thisChunkHeight; j++) {\n      let elem,\n          mask = 0;\n\n      for (let k = 0; k < width; k++) {\n        if (!mask) {\n          elem = src[srcPos++];\n          mask = 128;\n        }\n\n        dest[destPos] = elem & mask ? 0 : 255;\n        destPos += 4;\n        mask >>= 1;\n      }\n    }\n\n    ctx.putImageData(chunkImgData, 0, i * FULL_CHUNK_HEIGHT);\n  }\n}\n\nfunction copyCtxState(sourceCtx, destCtx) {\n  const properties = [\"strokeStyle\", \"fillStyle\", \"fillRule\", \"globalAlpha\", \"lineWidth\", \"lineCap\", \"lineJoin\", \"miterLimit\", \"globalCompositeOperation\", \"font\"];\n\n  for (let i = 0, ii = properties.length; i < ii; i++) {\n    const property = properties[i];\n\n    if (sourceCtx[property] !== undefined) {\n      destCtx[property] = sourceCtx[property];\n    }\n  }\n\n  if (sourceCtx.setLineDash !== undefined) {\n    destCtx.setLineDash(sourceCtx.getLineDash());\n    destCtx.lineDashOffset = sourceCtx.lineDashOffset;\n  }\n}\n\nfunction resetCtxToDefault(ctx) {\n  ctx.strokeStyle = \"#000000\";\n  ctx.fillStyle = \"#000000\";\n  ctx.fillRule = \"nonzero\";\n  ctx.globalAlpha = 1;\n  ctx.lineWidth = 1;\n  ctx.lineCap = \"butt\";\n  ctx.lineJoin = \"miter\";\n  ctx.miterLimit = 10;\n  ctx.globalCompositeOperation = \"source-over\";\n  ctx.font = \"10px sans-serif\";\n\n  if (ctx.setLineDash !== undefined) {\n    ctx.setLineDash([]);\n    ctx.lineDashOffset = 0;\n  }\n}\n\nfunction composeSMaskBackdrop(bytes, r0, g0, b0) {\n  const length = bytes.length;\n\n  for (let i = 3; i < length; i += 4) {\n    const alpha = bytes[i];\n\n    if (alpha === 0) {\n      bytes[i - 3] = r0;\n      bytes[i - 2] = g0;\n      bytes[i - 1] = b0;\n    } else if (alpha < 255) {\n      const alpha_ = 255 - alpha;\n      bytes[i - 3] = bytes[i - 3] * alpha + r0 * alpha_ >> 8;\n      bytes[i - 2] = bytes[i - 2] * alpha + g0 * alpha_ >> 8;\n      bytes[i - 1] = bytes[i - 1] * alpha + b0 * alpha_ >> 8;\n    }\n  }\n}\n\nfunction composeSMaskAlpha(maskData, layerData, transferMap) {\n  const length = maskData.length;\n  const scale = 1 / 255;\n\n  for (let i = 3; i < length; i += 4) {\n    const alpha = transferMap ? transferMap[maskData[i]] : maskData[i];\n    layerData[i] = layerData[i] * alpha * scale | 0;\n  }\n}\n\nfunction composeSMaskLuminosity(maskData, layerData, transferMap) {\n  const length = maskData.length;\n\n  for (let i = 3; i < length; i += 4) {\n    const y = maskData[i - 3] * 77 + maskData[i - 2] * 152 + maskData[i - 1] * 28;\n    layerData[i] = transferMap ? layerData[i] * transferMap[y >> 8] >> 8 : layerData[i] * y >> 16;\n  }\n}\n\nfunction genericComposeSMask(maskCtx, layerCtx, width, height, subtype, backdrop, transferMap, layerOffsetX, layerOffsetY, maskOffsetX, maskOffsetY) {\n  const hasBackdrop = !!backdrop;\n  const r0 = hasBackdrop ? backdrop[0] : 0;\n  const g0 = hasBackdrop ? backdrop[1] : 0;\n  const b0 = hasBackdrop ? backdrop[2] : 0;\n  let composeFn;\n\n  if (subtype === \"Luminosity\") {\n    composeFn = composeSMaskLuminosity;\n  } else {\n    composeFn = composeSMaskAlpha;\n  }\n\n  const PIXELS_TO_PROCESS = 1048576;\n  const chunkSize = Math.min(height, Math.ceil(PIXELS_TO_PROCESS / width));\n\n  for (let row = 0; row < height; row += chunkSize) {\n    const chunkHeight = Math.min(chunkSize, height - row);\n    const maskData = maskCtx.getImageData(layerOffsetX - maskOffsetX, row + (layerOffsetY - maskOffsetY), width, chunkHeight);\n    const layerData = layerCtx.getImageData(layerOffsetX, row + layerOffsetY, width, chunkHeight);\n\n    if (hasBackdrop) {\n      composeSMaskBackdrop(maskData.data, r0, g0, b0);\n    }\n\n    composeFn(maskData.data, layerData.data, transferMap);\n    layerCtx.putImageData(layerData, layerOffsetX, row + layerOffsetY);\n  }\n}\n\nfunction composeSMask(ctx, smask, layerCtx, layerBox) {\n  const layerOffsetX = layerBox[0];\n  const layerOffsetY = layerBox[1];\n  const layerWidth = layerBox[2] - layerOffsetX;\n  const layerHeight = layerBox[3] - layerOffsetY;\n\n  if (layerWidth === 0 || layerHeight === 0) {\n    return;\n  }\n\n  genericComposeSMask(smask.context, layerCtx, layerWidth, layerHeight, smask.subtype, smask.backdrop, smask.transferMap, layerOffsetX, layerOffsetY, smask.offsetX, smask.offsetY);\n  ctx.save();\n  ctx.globalAlpha = 1;\n  ctx.globalCompositeOperation = \"source-over\";\n  ctx.setTransform(1, 0, 0, 1, 0, 0);\n  ctx.drawImage(layerCtx.canvas, 0, 0);\n  ctx.restore();\n}\n\nfunction getImageSmoothingEnabled(transform, interpolate) {\n  const scale = _util.Util.singularValueDecompose2dScale(transform);\n\n  scale[0] = Math.fround(scale[0]);\n  scale[1] = Math.fround(scale[1]);\n  const actualScale = Math.fround((globalThis.devicePixelRatio || 1) * _display_utils.PixelsPerInch.PDF_TO_CSS_UNITS);\n\n  if (interpolate !== undefined) {\n    return interpolate;\n  } else if (scale[0] <= actualScale || scale[1] <= actualScale) {\n    return true;\n  }\n\n  return false;\n}\n\nconst LINE_CAP_STYLES = [\"butt\", \"round\", \"square\"];\nconst LINE_JOIN_STYLES = [\"miter\", \"round\", \"bevel\"];\nconst NORMAL_CLIP = {};\nconst EO_CLIP = {};\n\nclass CanvasGraphics {\n  constructor(canvasCtx, commonObjs, objs, canvasFactory, imageLayer, optionalContentConfig, annotationCanvasMap) {\n    this.ctx = canvasCtx;\n    this.current = new CanvasExtraState(this.ctx.canvas.width, this.ctx.canvas.height);\n    this.stateStack = [];\n    this.pendingClip = null;\n    this.pendingEOFill = false;\n    this.res = null;\n    this.xobjs = null;\n    this.commonObjs = commonObjs;\n    this.objs = objs;\n    this.canvasFactory = canvasFactory;\n    this.imageLayer = imageLayer;\n    this.groupStack = [];\n    this.processingType3 = null;\n    this.baseTransform = null;\n    this.baseTransformStack = [];\n    this.groupLevel = 0;\n    this.smaskStack = [];\n    this.smaskCounter = 0;\n    this.tempSMask = null;\n    this.suspendedCtx = null;\n    this.contentVisible = true;\n    this.markedContentStack = [];\n    this.optionalContentConfig = optionalContentConfig;\n    this.cachedCanvases = new CachedCanvases(this.canvasFactory);\n    this.cachedPatterns = new Map();\n    this.annotationCanvasMap = annotationCanvasMap;\n    this.viewportScale = 1;\n    this.outputScaleX = 1;\n    this.outputScaleY = 1;\n\n    if (canvasCtx) {\n      addContextCurrentTransform(canvasCtx);\n    }\n\n    this._cachedScaleForStroking = null;\n    this._cachedGetSinglePixelWidth = null;\n  }\n\n  beginDrawing({\n    transform,\n    viewport,\n    transparency = false,\n    background = null\n  }) {\n    const width = this.ctx.canvas.width;\n    const height = this.ctx.canvas.height;\n    this.ctx.save();\n    this.ctx.fillStyle = background || \"rgb(255, 255, 255)\";\n    this.ctx.fillRect(0, 0, width, height);\n    this.ctx.restore();\n\n    if (transparency) {\n      const transparentCanvas = this.cachedCanvases.getCanvas(\"transparent\", width, height, true);\n      this.compositeCtx = this.ctx;\n      this.transparentCanvas = transparentCanvas.canvas;\n      this.ctx = transparentCanvas.context;\n      this.ctx.save();\n      this.ctx.transform.apply(this.ctx, this.compositeCtx.mozCurrentTransform);\n    }\n\n    this.ctx.save();\n    resetCtxToDefault(this.ctx);\n\n    if (transform) {\n      this.ctx.transform.apply(this.ctx, transform);\n      this.outputScaleX = transform[0];\n      this.outputScaleY = transform[0];\n    }\n\n    this.ctx.transform.apply(this.ctx, viewport.transform);\n    this.viewportScale = viewport.scale;\n    this.baseTransform = this.ctx.mozCurrentTransform.slice();\n\n    if (this.imageLayer) {\n      this.imageLayer.beginLayout();\n    }\n  }\n\n  executeOperatorList(operatorList, executionStartIdx, continueCallback, stepper) {\n    const argsArray = operatorList.argsArray;\n    const fnArray = operatorList.fnArray;\n    let i = executionStartIdx || 0;\n    const argsArrayLen = argsArray.length;\n\n    if (argsArrayLen === i) {\n      return i;\n    }\n\n    const chunkOperations = argsArrayLen - i > EXECUTION_STEPS && typeof continueCallback === \"function\";\n    const endTime = chunkOperations ? Date.now() + EXECUTION_TIME : 0;\n    let steps = 0;\n    const commonObjs = this.commonObjs;\n    const objs = this.objs;\n    let fnId;\n\n    while (true) {\n      if (stepper !== undefined && i === stepper.nextBreakPoint) {\n        stepper.breakIt(i, continueCallback);\n        return i;\n      }\n\n      fnId = fnArray[i];\n\n      if (fnId !== _util.OPS.dependency) {\n        this[fnId].apply(this, argsArray[i]);\n      } else {\n        for (const depObjId of argsArray[i]) {\n          const objsPool = depObjId.startsWith(\"g_\") ? commonObjs : objs;\n\n          if (!objsPool.has(depObjId)) {\n            objsPool.get(depObjId, continueCallback);\n            return i;\n          }\n        }\n      }\n\n      i++;\n\n      if (i === argsArrayLen) {\n        return i;\n      }\n\n      if (chunkOperations && ++steps > EXECUTION_STEPS) {\n        if (Date.now() > endTime) {\n          continueCallback();\n          return i;\n        }\n\n        steps = 0;\n      }\n    }\n  }\n\n  endDrawing() {\n    while (this.stateStack.length || this.inSMaskMode) {\n      this.restore();\n    }\n\n    this.ctx.restore();\n\n    if (this.transparentCanvas) {\n      this.ctx = this.compositeCtx;\n      this.ctx.save();\n      this.ctx.setTransform(1, 0, 0, 1, 0, 0);\n      this.ctx.drawImage(this.transparentCanvas, 0, 0);\n      this.ctx.restore();\n      this.transparentCanvas = null;\n    }\n\n    this.cachedCanvases.clear();\n    this.cachedPatterns.clear();\n\n    if (this.imageLayer) {\n      this.imageLayer.endLayout();\n    }\n  }\n\n  _scaleImage(img, inverseTransform) {\n    const width = img.width;\n    const height = img.height;\n    let widthScale = Math.max(Math.hypot(inverseTransform[0], inverseTransform[1]), 1);\n    let heightScale = Math.max(Math.hypot(inverseTransform[2], inverseTransform[3]), 1);\n    let paintWidth = width,\n        paintHeight = height;\n    let tmpCanvasId = \"prescale1\";\n    let tmpCanvas, tmpCtx;\n\n    while (widthScale > 2 && paintWidth > 1 || heightScale > 2 && paintHeight > 1) {\n      let newWidth = paintWidth,\n          newHeight = paintHeight;\n\n      if (widthScale > 2 && paintWidth > 1) {\n        newWidth = Math.ceil(paintWidth / 2);\n        widthScale /= paintWidth / newWidth;\n      }\n\n      if (heightScale > 2 && paintHeight > 1) {\n        newHeight = Math.ceil(paintHeight / 2);\n        heightScale /= paintHeight / newHeight;\n      }\n\n      tmpCanvas = this.cachedCanvases.getCanvas(tmpCanvasId, newWidth, newHeight);\n      tmpCtx = tmpCanvas.context;\n      tmpCtx.clearRect(0, 0, newWidth, newHeight);\n      tmpCtx.drawImage(img, 0, 0, paintWidth, paintHeight, 0, 0, newWidth, newHeight);\n      img = tmpCanvas.canvas;\n      paintWidth = newWidth;\n      paintHeight = newHeight;\n      tmpCanvasId = tmpCanvasId === \"prescale1\" ? \"prescale2\" : \"prescale1\";\n    }\n\n    return {\n      img,\n      paintWidth,\n      paintHeight\n    };\n  }\n\n  _createMaskCanvas(img) {\n    const ctx = this.ctx;\n    const width = img.width,\n          height = img.height;\n    const fillColor = this.current.fillColor;\n    const isPatternFill = this.current.patternFill;\n    const maskCanvas = this.cachedCanvases.getCanvas(\"maskCanvas\", width, height);\n    const maskCtx = maskCanvas.context;\n    putBinaryImageMask(maskCtx, img);\n    const objToCanvas = ctx.mozCurrentTransform;\n\n    let maskToCanvas = _util.Util.transform(objToCanvas, [1 / width, 0, 0, -1 / height, 0, 0]);\n\n    maskToCanvas = _util.Util.transform(maskToCanvas, [1, 0, 0, 1, 0, -height]);\n\n    const cord1 = _util.Util.applyTransform([0, 0], maskToCanvas);\n\n    const cord2 = _util.Util.applyTransform([width, height], maskToCanvas);\n\n    const rect = _util.Util.normalizeRect([cord1[0], cord1[1], cord2[0], cord2[1]]);\n\n    const drawnWidth = Math.ceil(rect[2] - rect[0]);\n    const drawnHeight = Math.ceil(rect[3] - rect[1]);\n    const fillCanvas = this.cachedCanvases.getCanvas(\"fillCanvas\", drawnWidth, drawnHeight, true);\n    const fillCtx = fillCanvas.context;\n    const offsetX = Math.min(cord1[0], cord2[0]);\n    const offsetY = Math.min(cord1[1], cord2[1]);\n    fillCtx.translate(-offsetX, -offsetY);\n    fillCtx.transform.apply(fillCtx, maskToCanvas);\n\n    const scaled = this._scaleImage(maskCanvas.canvas, fillCtx.mozCurrentTransformInverse);\n\n    fillCtx.imageSmoothingEnabled = getImageSmoothingEnabled(fillCtx.mozCurrentTransform, img.interpolate);\n    fillCtx.drawImage(scaled.img, 0, 0, scaled.img.width, scaled.img.height, 0, 0, width, height);\n    fillCtx.globalCompositeOperation = \"source-in\";\n\n    const inverse = _util.Util.transform(fillCtx.mozCurrentTransformInverse, [1, 0, 0, 1, -offsetX, -offsetY]);\n\n    fillCtx.fillStyle = isPatternFill ? fillColor.getPattern(ctx, this, inverse, _pattern_helper.PathType.FILL) : fillColor;\n    fillCtx.fillRect(0, 0, width, height);\n    return {\n      canvas: fillCanvas.canvas,\n      offsetX: Math.round(offsetX),\n      offsetY: Math.round(offsetY)\n    };\n  }\n\n  setLineWidth(width) {\n    if (width !== this.current.lineWidth) {\n      this._cachedScaleForStroking = null;\n    }\n\n    this.current.lineWidth = width;\n    this.ctx.lineWidth = width;\n  }\n\n  setLineCap(style) {\n    this.ctx.lineCap = LINE_CAP_STYLES[style];\n  }\n\n  setLineJoin(style) {\n    this.ctx.lineJoin = LINE_JOIN_STYLES[style];\n  }\n\n  setMiterLimit(limit) {\n    this.ctx.miterLimit = limit;\n  }\n\n  setDash(dashArray, dashPhase) {\n    const ctx = this.ctx;\n\n    if (ctx.setLineDash !== undefined) {\n      ctx.setLineDash(dashArray);\n      ctx.lineDashOffset = dashPhase;\n    }\n  }\n\n  setRenderingIntent(intent) {}\n\n  setFlatness(flatness) {}\n\n  setGState(states) {\n    for (let i = 0, ii = states.length; i < ii; i++) {\n      const state = states[i];\n      const key = state[0];\n      const value = state[1];\n\n      switch (key) {\n        case \"LW\":\n          this.setLineWidth(value);\n          break;\n\n        case \"LC\":\n          this.setLineCap(value);\n          break;\n\n        case \"LJ\":\n          this.setLineJoin(value);\n          break;\n\n        case \"ML\":\n          this.setMiterLimit(value);\n          break;\n\n        case \"D\":\n          this.setDash(value[0], value[1]);\n          break;\n\n        case \"RI\":\n          this.setRenderingIntent(value);\n          break;\n\n        case \"FL\":\n          this.setFlatness(value);\n          break;\n\n        case \"Font\":\n          this.setFont(value[0], value[1]);\n          break;\n\n        case \"CA\":\n          this.current.strokeAlpha = state[1];\n          break;\n\n        case \"ca\":\n          this.current.fillAlpha = state[1];\n          this.ctx.globalAlpha = state[1];\n          break;\n\n        case \"BM\":\n          this.ctx.globalCompositeOperation = value;\n          break;\n\n        case \"SMask\":\n          this.current.activeSMask = value ? this.tempSMask : null;\n          this.tempSMask = null;\n          this.checkSMaskState();\n          break;\n\n        case \"TR\":\n          this.current.transferMaps = value;\n      }\n    }\n  }\n\n  get inSMaskMode() {\n    return !!this.suspendedCtx;\n  }\n\n  checkSMaskState() {\n    const inSMaskMode = this.inSMaskMode;\n\n    if (this.current.activeSMask && !inSMaskMode) {\n      this.beginSMaskMode();\n    } else if (!this.current.activeSMask && inSMaskMode) {\n      this.endSMaskMode();\n    }\n  }\n\n  beginSMaskMode() {\n    if (this.inSMaskMode) {\n      throw new Error(\"beginSMaskMode called while already in smask mode\");\n    }\n\n    const drawnWidth = this.ctx.canvas.width;\n    const drawnHeight = this.ctx.canvas.height;\n    const cacheId = \"smaskGroupAt\" + this.groupLevel;\n    const scratchCanvas = this.cachedCanvases.getCanvas(cacheId, drawnWidth, drawnHeight, true);\n    this.suspendedCtx = this.ctx;\n    this.ctx = scratchCanvas.context;\n    const ctx = this.ctx;\n    ctx.setTransform.apply(ctx, this.suspendedCtx.mozCurrentTransform);\n    copyCtxState(this.suspendedCtx, ctx);\n    mirrorContextOperations(ctx, this.suspendedCtx);\n    this.setGState([[\"BM\", \"source-over\"], [\"ca\", 1], [\"CA\", 1]]);\n  }\n\n  endSMaskMode() {\n    if (!this.inSMaskMode) {\n      throw new Error(\"endSMaskMode called while not in smask mode\");\n    }\n\n    this.ctx._removeMirroring();\n\n    copyCtxState(this.ctx, this.suspendedCtx);\n    this.ctx = this.suspendedCtx;\n    this.suspendedCtx = null;\n  }\n\n  compose(dirtyBox) {\n    if (!this.current.activeSMask) {\n      return;\n    }\n\n    if (!dirtyBox) {\n      dirtyBox = [0, 0, this.ctx.canvas.width, this.ctx.canvas.height];\n    } else {\n      dirtyBox[0] = Math.floor(dirtyBox[0]);\n      dirtyBox[1] = Math.floor(dirtyBox[1]);\n      dirtyBox[2] = Math.ceil(dirtyBox[2]);\n      dirtyBox[3] = Math.ceil(dirtyBox[3]);\n    }\n\n    const smask = this.current.activeSMask;\n    const suspendedCtx = this.suspendedCtx;\n    composeSMask(suspendedCtx, smask, this.ctx, dirtyBox);\n    this.ctx.save();\n    this.ctx.setTransform(1, 0, 0, 1, 0, 0);\n    this.ctx.clearRect(0, 0, this.ctx.canvas.width, this.ctx.canvas.height);\n    this.ctx.restore();\n  }\n\n  save() {\n    if (this.inSMaskMode) {\n      copyCtxState(this.ctx, this.suspendedCtx);\n      this.suspendedCtx.save();\n    } else {\n      this.ctx.save();\n    }\n\n    const old = this.current;\n    this.stateStack.push(old);\n    this.current = old.clone();\n  }\n\n  restore() {\n    if (this.stateStack.length === 0 && this.inSMaskMode) {\n      this.endSMaskMode();\n    }\n\n    if (this.stateStack.length !== 0) {\n      this.current = this.stateStack.pop();\n\n      if (this.inSMaskMode) {\n        this.suspendedCtx.restore();\n        copyCtxState(this.suspendedCtx, this.ctx);\n      } else {\n        this.ctx.restore();\n      }\n\n      this.checkSMaskState();\n      this.pendingClip = null;\n      this._cachedScaleForStroking = null;\n      this._cachedGetSinglePixelWidth = null;\n    }\n  }\n\n  transform(a, b, c, d, e, f) {\n    this.ctx.transform(a, b, c, d, e, f);\n    this._cachedScaleForStroking = null;\n    this._cachedGetSinglePixelWidth = null;\n  }\n\n  constructPath(ops, args) {\n    const ctx = this.ctx;\n    const current = this.current;\n    let x = current.x,\n        y = current.y;\n    let startX, startY;\n\n    for (let i = 0, j = 0, ii = ops.length; i < ii; i++) {\n      switch (ops[i] | 0) {\n        case _util.OPS.rectangle:\n          x = args[j++];\n          y = args[j++];\n          const width = args[j++];\n          const height = args[j++];\n          const xw = x + width;\n          const yh = y + height;\n          ctx.moveTo(x, y);\n\n          if (width === 0 || height === 0) {\n            ctx.lineTo(xw, yh);\n          } else {\n            ctx.lineTo(xw, y);\n            ctx.lineTo(xw, yh);\n            ctx.lineTo(x, yh);\n          }\n\n          current.updatePathMinMax(ctx.mozCurrentTransform, x, y);\n          current.updatePathMinMax(ctx.mozCurrentTransform, xw, yh);\n          ctx.closePath();\n          break;\n\n        case _util.OPS.moveTo:\n          x = args[j++];\n          y = args[j++];\n          ctx.moveTo(x, y);\n          current.updatePathMinMax(ctx.mozCurrentTransform, x, y);\n          break;\n\n        case _util.OPS.lineTo:\n          x = args[j++];\n          y = args[j++];\n          ctx.lineTo(x, y);\n          current.updatePathMinMax(ctx.mozCurrentTransform, x, y);\n          break;\n\n        case _util.OPS.curveTo:\n          startX = x;\n          startY = y;\n          x = args[j + 4];\n          y = args[j + 5];\n          ctx.bezierCurveTo(args[j], args[j + 1], args[j + 2], args[j + 3], x, y);\n          current.updateCurvePathMinMax(ctx.mozCurrentTransform, startX, startY, args[j], args[j + 1], args[j + 2], args[j + 3], x, y);\n          j += 6;\n          break;\n\n        case _util.OPS.curveTo2:\n          startX = x;\n          startY = y;\n          ctx.bezierCurveTo(x, y, args[j], args[j + 1], args[j + 2], args[j + 3]);\n          current.updateCurvePathMinMax(ctx.mozCurrentTransform, startX, startY, x, y, args[j], args[j + 1], args[j + 2], args[j + 3]);\n          x = args[j + 2];\n          y = args[j + 3];\n          j += 4;\n          break;\n\n        case _util.OPS.curveTo3:\n          startX = x;\n          startY = y;\n          x = args[j + 2];\n          y = args[j + 3];\n          ctx.bezierCurveTo(args[j], args[j + 1], x, y, x, y);\n          current.updateCurvePathMinMax(ctx.mozCurrentTransform, startX, startY, args[j], args[j + 1], x, y, x, y);\n          j += 4;\n          break;\n\n        case _util.OPS.closePath:\n          ctx.closePath();\n          break;\n      }\n    }\n\n    current.setCurrentPoint(x, y);\n  }\n\n  closePath() {\n    this.ctx.closePath();\n  }\n\n  stroke(consumePath) {\n    consumePath = typeof consumePath !== \"undefined\" ? consumePath : true;\n    const ctx = this.ctx;\n    const strokeColor = this.current.strokeColor;\n    ctx.globalAlpha = this.current.strokeAlpha;\n\n    if (this.contentVisible) {\n      if (typeof strokeColor === \"object\" && strokeColor?.getPattern) {\n        ctx.save();\n        ctx.strokeStyle = strokeColor.getPattern(ctx, this, ctx.mozCurrentTransformInverse, _pattern_helper.PathType.STROKE);\n        this.rescaleAndStroke(false);\n        ctx.restore();\n      } else {\n        this.rescaleAndStroke(true);\n      }\n    }\n\n    if (consumePath) {\n      this.consumePath(this.current.getClippedPathBoundingBox());\n    }\n\n    ctx.globalAlpha = this.current.fillAlpha;\n  }\n\n  closeStroke() {\n    this.closePath();\n    this.stroke();\n  }\n\n  fill(consumePath) {\n    consumePath = typeof consumePath !== \"undefined\" ? consumePath : true;\n    const ctx = this.ctx;\n    const fillColor = this.current.fillColor;\n    const isPatternFill = this.current.patternFill;\n    let needRestore = false;\n\n    if (isPatternFill) {\n      ctx.save();\n      ctx.fillStyle = fillColor.getPattern(ctx, this, ctx.mozCurrentTransformInverse, _pattern_helper.PathType.FILL);\n      needRestore = true;\n    }\n\n    const intersect = this.current.getClippedPathBoundingBox();\n\n    if (this.contentVisible && intersect !== null) {\n      if (this.pendingEOFill) {\n        ctx.fill(\"evenodd\");\n        this.pendingEOFill = false;\n      } else {\n        ctx.fill();\n      }\n    }\n\n    if (needRestore) {\n      ctx.restore();\n    }\n\n    if (consumePath) {\n      this.consumePath(intersect);\n    }\n  }\n\n  eoFill() {\n    this.pendingEOFill = true;\n    this.fill();\n  }\n\n  fillStroke() {\n    this.fill(false);\n    this.stroke(false);\n    this.consumePath();\n  }\n\n  eoFillStroke() {\n    this.pendingEOFill = true;\n    this.fillStroke();\n  }\n\n  closeFillStroke() {\n    this.closePath();\n    this.fillStroke();\n  }\n\n  closeEOFillStroke() {\n    this.pendingEOFill = true;\n    this.closePath();\n    this.fillStroke();\n  }\n\n  endPath() {\n    this.consumePath();\n  }\n\n  clip() {\n    this.pendingClip = NORMAL_CLIP;\n  }\n\n  eoClip() {\n    this.pendingClip = EO_CLIP;\n  }\n\n  beginText() {\n    this.current.textMatrix = _util.IDENTITY_MATRIX;\n    this.current.textMatrixScale = 1;\n    this.current.x = this.current.lineX = 0;\n    this.current.y = this.current.lineY = 0;\n  }\n\n  endText() {\n    const paths = this.pendingTextPaths;\n    const ctx = this.ctx;\n\n    if (paths === undefined) {\n      ctx.beginPath();\n      return;\n    }\n\n    ctx.save();\n    ctx.beginPath();\n\n    for (let i = 0; i < paths.length; i++) {\n      const path = paths[i];\n      ctx.setTransform.apply(ctx, path.transform);\n      ctx.translate(path.x, path.y);\n      path.addToPath(ctx, path.fontSize);\n    }\n\n    ctx.restore();\n    ctx.clip();\n    ctx.beginPath();\n    delete this.pendingTextPaths;\n  }\n\n  setCharSpacing(spacing) {\n    this.current.charSpacing = spacing;\n  }\n\n  setWordSpacing(spacing) {\n    this.current.wordSpacing = spacing;\n  }\n\n  setHScale(scale) {\n    this.current.textHScale = scale / 100;\n  }\n\n  setLeading(leading) {\n    this.current.leading = -leading;\n  }\n\n  setFont(fontRefName, size) {\n    const fontObj = this.commonObjs.get(fontRefName);\n    const current = this.current;\n\n    if (!fontObj) {\n      throw new Error(`Can't find font for ${fontRefName}`);\n    }\n\n    current.fontMatrix = fontObj.fontMatrix || _util.FONT_IDENTITY_MATRIX;\n\n    if (current.fontMatrix[0] === 0 || current.fontMatrix[3] === 0) {\n      (0, _util.warn)(\"Invalid font matrix for font \" + fontRefName);\n    }\n\n    if (size < 0) {\n      size = -size;\n      current.fontDirection = -1;\n    } else {\n      current.fontDirection = 1;\n    }\n\n    this.current.font = fontObj;\n    this.current.fontSize = size;\n\n    if (fontObj.isType3Font) {\n      return;\n    }\n\n    const name = fontObj.loadedName || \"sans-serif\";\n    let bold = \"normal\";\n\n    if (fontObj.black) {\n      bold = \"900\";\n    } else if (fontObj.bold) {\n      bold = \"bold\";\n    }\n\n    const italic = fontObj.italic ? \"italic\" : \"normal\";\n    const typeface = `\"${name}\", ${fontObj.fallbackName}`;\n    let browserFontSize = size;\n\n    if (size < MIN_FONT_SIZE) {\n      browserFontSize = MIN_FONT_SIZE;\n    } else if (size > MAX_FONT_SIZE) {\n      browserFontSize = MAX_FONT_SIZE;\n    }\n\n    this.current.fontSizeScale = size / browserFontSize;\n    this.ctx.font = `${italic} ${bold} ${browserFontSize}px ${typeface}`;\n  }\n\n  setTextRenderingMode(mode) {\n    this.current.textRenderingMode = mode;\n  }\n\n  setTextRise(rise) {\n    this.current.textRise = rise;\n  }\n\n  moveText(x, y) {\n    this.current.x = this.current.lineX += x;\n    this.current.y = this.current.lineY += y;\n  }\n\n  setLeadingMoveText(x, y) {\n    this.setLeading(-y);\n    this.moveText(x, y);\n  }\n\n  setTextMatrix(a, b, c, d, e, f) {\n    this.current.textMatrix = [a, b, c, d, e, f];\n    this.current.textMatrixScale = Math.hypot(a, b);\n    this.current.x = this.current.lineX = 0;\n    this.current.y = this.current.lineY = 0;\n  }\n\n  nextLine() {\n    this.moveText(0, this.current.leading);\n  }\n\n  paintChar(character, x, y, patternTransform) {\n    const ctx = this.ctx;\n    const current = this.current;\n    const font = current.font;\n    const textRenderingMode = current.textRenderingMode;\n    const fontSize = current.fontSize / current.fontSizeScale;\n    const fillStrokeMode = textRenderingMode & _util.TextRenderingMode.FILL_STROKE_MASK;\n    const isAddToPathSet = !!(textRenderingMode & _util.TextRenderingMode.ADD_TO_PATH_FLAG);\n    const patternFill = current.patternFill && !font.missingFile;\n    let addToPath;\n\n    if (font.disableFontFace || isAddToPathSet || patternFill) {\n      addToPath = font.getPathGenerator(this.commonObjs, character);\n    }\n\n    if (font.disableFontFace || patternFill) {\n      ctx.save();\n      ctx.translate(x, y);\n      ctx.beginPath();\n      addToPath(ctx, fontSize);\n\n      if (patternTransform) {\n        ctx.setTransform.apply(ctx, patternTransform);\n      }\n\n      if (fillStrokeMode === _util.TextRenderingMode.FILL || fillStrokeMode === _util.TextRenderingMode.FILL_STROKE) {\n        ctx.fill();\n      }\n\n      if (fillStrokeMode === _util.TextRenderingMode.STROKE || fillStrokeMode === _util.TextRenderingMode.FILL_STROKE) {\n        ctx.stroke();\n      }\n\n      ctx.restore();\n    } else {\n      if (fillStrokeMode === _util.TextRenderingMode.FILL || fillStrokeMode === _util.TextRenderingMode.FILL_STROKE) {\n        ctx.fillText(character, x, y);\n      }\n\n      if (fillStrokeMode === _util.TextRenderingMode.STROKE || fillStrokeMode === _util.TextRenderingMode.FILL_STROKE) {\n        ctx.strokeText(character, x, y);\n      }\n    }\n\n    if (isAddToPathSet) {\n      const paths = this.pendingTextPaths || (this.pendingTextPaths = []);\n      paths.push({\n        transform: ctx.mozCurrentTransform,\n        x,\n        y,\n        fontSize,\n        addToPath\n      });\n    }\n  }\n\n  get isFontSubpixelAAEnabled() {\n    const {\n      context: ctx\n    } = this.cachedCanvases.getCanvas(\"isFontSubpixelAAEnabled\", 10, 10);\n    ctx.scale(1.5, 1);\n    ctx.fillText(\"I\", 0, 10);\n    const data = ctx.getImageData(0, 0, 10, 10).data;\n    let enabled = false;\n\n    for (let i = 3; i < data.length; i += 4) {\n      if (data[i] > 0 && data[i] < 255) {\n        enabled = true;\n        break;\n      }\n    }\n\n    return (0, _util.shadow)(this, \"isFontSubpixelAAEnabled\", enabled);\n  }\n\n  showText(glyphs) {\n    const current = this.current;\n    const font = current.font;\n\n    if (font.isType3Font) {\n      return this.showType3Text(glyphs);\n    }\n\n    const fontSize = current.fontSize;\n\n    if (fontSize === 0) {\n      return undefined;\n    }\n\n    const ctx = this.ctx;\n    const fontSizeScale = current.fontSizeScale;\n    const charSpacing = current.charSpacing;\n    const wordSpacing = current.wordSpacing;\n    const fontDirection = current.fontDirection;\n    const textHScale = current.textHScale * fontDirection;\n    const glyphsLength = glyphs.length;\n    const vertical = font.vertical;\n    const spacingDir = vertical ? 1 : -1;\n    const defaultVMetrics = font.defaultVMetrics;\n    const widthAdvanceScale = fontSize * current.fontMatrix[0];\n    const simpleFillText = current.textRenderingMode === _util.TextRenderingMode.FILL && !font.disableFontFace && !current.patternFill;\n    ctx.save();\n    ctx.transform.apply(ctx, current.textMatrix);\n    ctx.translate(current.x, current.y + current.textRise);\n\n    if (fontDirection > 0) {\n      ctx.scale(textHScale, -1);\n    } else {\n      ctx.scale(textHScale, 1);\n    }\n\n    let patternTransform;\n\n    if (current.patternFill) {\n      ctx.save();\n      const pattern = current.fillColor.getPattern(ctx, this, ctx.mozCurrentTransformInverse, _pattern_helper.PathType.FILL);\n      patternTransform = ctx.mozCurrentTransform;\n      ctx.restore();\n      ctx.fillStyle = pattern;\n    }\n\n    let lineWidth = current.lineWidth;\n    const scale = current.textMatrixScale;\n\n    if (scale === 0 || lineWidth === 0) {\n      const fillStrokeMode = current.textRenderingMode & _util.TextRenderingMode.FILL_STROKE_MASK;\n\n      if (fillStrokeMode === _util.TextRenderingMode.STROKE || fillStrokeMode === _util.TextRenderingMode.FILL_STROKE) {\n        lineWidth = this.getSinglePixelWidth();\n      }\n    } else {\n      lineWidth /= scale;\n    }\n\n    if (fontSizeScale !== 1.0) {\n      ctx.scale(fontSizeScale, fontSizeScale);\n      lineWidth /= fontSizeScale;\n    }\n\n    ctx.lineWidth = lineWidth;\n    let x = 0,\n        i;\n\n    for (i = 0; i < glyphsLength; ++i) {\n      const glyph = glyphs[i];\n\n      if (typeof glyph === \"number\") {\n        x += spacingDir * glyph * fontSize / 1000;\n        continue;\n      }\n\n      let restoreNeeded = false;\n      const spacing = (glyph.isSpace ? wordSpacing : 0) + charSpacing;\n      const character = glyph.fontChar;\n      const accent = glyph.accent;\n      let scaledX, scaledY;\n      let width = glyph.width;\n\n      if (vertical) {\n        const vmetric = glyph.vmetric || defaultVMetrics;\n        const vx = -(glyph.vmetric ? vmetric[1] : width * 0.5) * widthAdvanceScale;\n        const vy = vmetric[2] * widthAdvanceScale;\n        width = vmetric ? -vmetric[0] : width;\n        scaledX = vx / fontSizeScale;\n        scaledY = (x + vy) / fontSizeScale;\n      } else {\n        scaledX = x / fontSizeScale;\n        scaledY = 0;\n      }\n\n      if (font.remeasure && width > 0) {\n        const measuredWidth = ctx.measureText(character).width * 1000 / fontSize * fontSizeScale;\n\n        if (width < measuredWidth && this.isFontSubpixelAAEnabled) {\n          const characterScaleX = width / measuredWidth;\n          restoreNeeded = true;\n          ctx.save();\n          ctx.scale(characterScaleX, 1);\n          scaledX /= characterScaleX;\n        } else if (width !== measuredWidth) {\n          scaledX += (width - measuredWidth) / 2000 * fontSize / fontSizeScale;\n        }\n      }\n\n      if (this.contentVisible && (glyph.isInFont || font.missingFile)) {\n        if (simpleFillText && !accent) {\n          ctx.fillText(character, scaledX, scaledY);\n        } else {\n          this.paintChar(character, scaledX, scaledY, patternTransform);\n\n          if (accent) {\n            const scaledAccentX = scaledX + fontSize * accent.offset.x / fontSizeScale;\n            const scaledAccentY = scaledY - fontSize * accent.offset.y / fontSizeScale;\n            this.paintChar(accent.fontChar, scaledAccentX, scaledAccentY, patternTransform);\n          }\n        }\n      }\n\n      let charWidth;\n\n      if (vertical) {\n        charWidth = width * widthAdvanceScale - spacing * fontDirection;\n      } else {\n        charWidth = width * widthAdvanceScale + spacing * fontDirection;\n      }\n\n      x += charWidth;\n\n      if (restoreNeeded) {\n        ctx.restore();\n      }\n    }\n\n    if (vertical) {\n      current.y -= x;\n    } else {\n      current.x += x * textHScale;\n    }\n\n    ctx.restore();\n    this.compose();\n    return undefined;\n  }\n\n  showType3Text(glyphs) {\n    const ctx = this.ctx;\n    const current = this.current;\n    const font = current.font;\n    const fontSize = current.fontSize;\n    const fontDirection = current.fontDirection;\n    const spacingDir = font.vertical ? 1 : -1;\n    const charSpacing = current.charSpacing;\n    const wordSpacing = current.wordSpacing;\n    const textHScale = current.textHScale * fontDirection;\n    const fontMatrix = current.fontMatrix || _util.FONT_IDENTITY_MATRIX;\n    const glyphsLength = glyphs.length;\n    const isTextInvisible = current.textRenderingMode === _util.TextRenderingMode.INVISIBLE;\n    let i, glyph, width, spacingLength;\n\n    if (isTextInvisible || fontSize === 0) {\n      return;\n    }\n\n    this._cachedScaleForStroking = null;\n    this._cachedGetSinglePixelWidth = null;\n    ctx.save();\n    ctx.transform.apply(ctx, current.textMatrix);\n    ctx.translate(current.x, current.y);\n    ctx.scale(textHScale, fontDirection);\n\n    for (i = 0; i < glyphsLength; ++i) {\n      glyph = glyphs[i];\n\n      if (typeof glyph === \"number\") {\n        spacingLength = spacingDir * glyph * fontSize / 1000;\n        this.ctx.translate(spacingLength, 0);\n        current.x += spacingLength * textHScale;\n        continue;\n      }\n\n      const spacing = (glyph.isSpace ? wordSpacing : 0) + charSpacing;\n      const operatorList = font.charProcOperatorList[glyph.operatorListId];\n\n      if (!operatorList) {\n        (0, _util.warn)(`Type3 character \"${glyph.operatorListId}\" is not available.`);\n        continue;\n      }\n\n      if (this.contentVisible) {\n        this.processingType3 = glyph;\n        this.save();\n        ctx.scale(fontSize, fontSize);\n        ctx.transform.apply(ctx, fontMatrix);\n        this.executeOperatorList(operatorList);\n        this.restore();\n      }\n\n      const transformed = _util.Util.applyTransform([glyph.width, 0], fontMatrix);\n\n      width = transformed[0] * fontSize + spacing;\n      ctx.translate(width, 0);\n      current.x += width * textHScale;\n    }\n\n    ctx.restore();\n    this.processingType3 = null;\n  }\n\n  setCharWidth(xWidth, yWidth) {}\n\n  setCharWidthAndBounds(xWidth, yWidth, llx, lly, urx, ury) {\n    this.ctx.rect(llx, lly, urx - llx, ury - lly);\n    this.clip();\n    this.endPath();\n  }\n\n  getColorN_Pattern(IR) {\n    let pattern;\n\n    if (IR[0] === \"TilingPattern\") {\n      const color = IR[1];\n      const baseTransform = this.baseTransform || this.ctx.mozCurrentTransform.slice();\n      const canvasGraphicsFactory = {\n        createCanvasGraphics: ctx => {\n          return new CanvasGraphics(ctx, this.commonObjs, this.objs, this.canvasFactory);\n        }\n      };\n      pattern = new _pattern_helper.TilingPattern(IR, color, this.ctx, canvasGraphicsFactory, baseTransform);\n    } else {\n      pattern = this._getPattern(IR[1], IR[2]);\n    }\n\n    return pattern;\n  }\n\n  setStrokeColorN() {\n    this.current.strokeColor = this.getColorN_Pattern(arguments);\n  }\n\n  setFillColorN() {\n    this.current.fillColor = this.getColorN_Pattern(arguments);\n    this.current.patternFill = true;\n  }\n\n  setStrokeRGBColor(r, g, b) {\n    const color = _util.Util.makeHexColor(r, g, b);\n\n    this.ctx.strokeStyle = color;\n    this.current.strokeColor = color;\n  }\n\n  setFillRGBColor(r, g, b) {\n    const color = _util.Util.makeHexColor(r, g, b);\n\n    this.ctx.fillStyle = color;\n    this.current.fillColor = color;\n    this.current.patternFill = false;\n  }\n\n  _getPattern(objId, matrix = null) {\n    let pattern;\n\n    if (this.cachedPatterns.has(objId)) {\n      pattern = this.cachedPatterns.get(objId);\n    } else {\n      pattern = (0, _pattern_helper.getShadingPattern)(this.objs.get(objId));\n      this.cachedPatterns.set(objId, pattern);\n    }\n\n    if (matrix) {\n      pattern.matrix = matrix;\n    }\n\n    return pattern;\n  }\n\n  shadingFill(objId) {\n    if (!this.contentVisible) {\n      return;\n    }\n\n    const ctx = this.ctx;\n    this.save();\n\n    const pattern = this._getPattern(objId);\n\n    ctx.fillStyle = pattern.getPattern(ctx, this, ctx.mozCurrentTransformInverse, _pattern_helper.PathType.SHADING);\n    const inv = ctx.mozCurrentTransformInverse;\n\n    if (inv) {\n      const canvas = ctx.canvas;\n      const width = canvas.width;\n      const height = canvas.height;\n\n      const bl = _util.Util.applyTransform([0, 0], inv);\n\n      const br = _util.Util.applyTransform([0, height], inv);\n\n      const ul = _util.Util.applyTransform([width, 0], inv);\n\n      const ur = _util.Util.applyTransform([width, height], inv);\n\n      const x0 = Math.min(bl[0], br[0], ul[0], ur[0]);\n      const y0 = Math.min(bl[1], br[1], ul[1], ur[1]);\n      const x1 = Math.max(bl[0], br[0], ul[0], ur[0]);\n      const y1 = Math.max(bl[1], br[1], ul[1], ur[1]);\n      this.ctx.fillRect(x0, y0, x1 - x0, y1 - y0);\n    } else {\n      this.ctx.fillRect(-1e10, -1e10, 2e10, 2e10);\n    }\n\n    this.compose(this.current.getClippedPathBoundingBox());\n    this.restore();\n  }\n\n  beginInlineImage() {\n    (0, _util.unreachable)(\"Should not call beginInlineImage\");\n  }\n\n  beginImageData() {\n    (0, _util.unreachable)(\"Should not call beginImageData\");\n  }\n\n  paintFormXObjectBegin(matrix, bbox) {\n    if (!this.contentVisible) {\n      return;\n    }\n\n    this.save();\n    this.baseTransformStack.push(this.baseTransform);\n\n    if (Array.isArray(matrix) && matrix.length === 6) {\n      this.transform.apply(this, matrix);\n    }\n\n    this.baseTransform = this.ctx.mozCurrentTransform;\n\n    if (bbox) {\n      const width = bbox[2] - bbox[0];\n      const height = bbox[3] - bbox[1];\n      this.ctx.rect(bbox[0], bbox[1], width, height);\n      this.current.updatePathMinMax(this.ctx.mozCurrentTransform, bbox[0], bbox[1]);\n      this.current.updatePathMinMax(this.ctx.mozCurrentTransform, bbox[2], bbox[3]);\n      this.clip();\n      this.endPath();\n    }\n  }\n\n  paintFormXObjectEnd() {\n    if (!this.contentVisible) {\n      return;\n    }\n\n    this.restore();\n    this.baseTransform = this.baseTransformStack.pop();\n  }\n\n  beginGroup(group) {\n    if (!this.contentVisible) {\n      return;\n    }\n\n    this.save();\n\n    if (this.inSMaskMode) {\n      this.endSMaskMode();\n      this.current.activeSMask = null;\n    }\n\n    const currentCtx = this.ctx;\n\n    if (!group.isolated) {\n      (0, _util.info)(\"TODO: Support non-isolated groups.\");\n    }\n\n    if (group.knockout) {\n      (0, _util.warn)(\"Knockout groups not supported.\");\n    }\n\n    const currentTransform = currentCtx.mozCurrentTransform;\n\n    if (group.matrix) {\n      currentCtx.transform.apply(currentCtx, group.matrix);\n    }\n\n    if (!group.bbox) {\n      throw new Error(\"Bounding box is required.\");\n    }\n\n    let bounds = _util.Util.getAxialAlignedBoundingBox(group.bbox, currentCtx.mozCurrentTransform);\n\n    const canvasBounds = [0, 0, currentCtx.canvas.width, currentCtx.canvas.height];\n    bounds = _util.Util.intersect(bounds, canvasBounds) || [0, 0, 0, 0];\n    const offsetX = Math.floor(bounds[0]);\n    const offsetY = Math.floor(bounds[1]);\n    let drawnWidth = Math.max(Math.ceil(bounds[2]) - offsetX, 1);\n    let drawnHeight = Math.max(Math.ceil(bounds[3]) - offsetY, 1);\n    let scaleX = 1,\n        scaleY = 1;\n\n    if (drawnWidth > MAX_GROUP_SIZE) {\n      scaleX = drawnWidth / MAX_GROUP_SIZE;\n      drawnWidth = MAX_GROUP_SIZE;\n    }\n\n    if (drawnHeight > MAX_GROUP_SIZE) {\n      scaleY = drawnHeight / MAX_GROUP_SIZE;\n      drawnHeight = MAX_GROUP_SIZE;\n    }\n\n    this.current.startNewPathAndClipBox([0, 0, drawnWidth, drawnHeight]);\n    let cacheId = \"groupAt\" + this.groupLevel;\n\n    if (group.smask) {\n      cacheId += \"_smask_\" + this.smaskCounter++ % 2;\n    }\n\n    const scratchCanvas = this.cachedCanvases.getCanvas(cacheId, drawnWidth, drawnHeight, true);\n    const groupCtx = scratchCanvas.context;\n    groupCtx.scale(1 / scaleX, 1 / scaleY);\n    groupCtx.translate(-offsetX, -offsetY);\n    groupCtx.transform.apply(groupCtx, currentTransform);\n\n    if (group.smask) {\n      this.smaskStack.push({\n        canvas: scratchCanvas.canvas,\n        context: groupCtx,\n        offsetX,\n        offsetY,\n        scaleX,\n        scaleY,\n        subtype: group.smask.subtype,\n        backdrop: group.smask.backdrop,\n        transferMap: group.smask.transferMap || null,\n        startTransformInverse: null\n      });\n    } else {\n      currentCtx.setTransform(1, 0, 0, 1, 0, 0);\n      currentCtx.translate(offsetX, offsetY);\n      currentCtx.scale(scaleX, scaleY);\n      currentCtx.save();\n    }\n\n    copyCtxState(currentCtx, groupCtx);\n    this.ctx = groupCtx;\n    this.setGState([[\"BM\", \"source-over\"], [\"ca\", 1], [\"CA\", 1]]);\n    this.groupStack.push(currentCtx);\n    this.groupLevel++;\n  }\n\n  endGroup(group) {\n    if (!this.contentVisible) {\n      return;\n    }\n\n    this.groupLevel--;\n    const groupCtx = this.ctx;\n    const ctx = this.groupStack.pop();\n    this.ctx = ctx;\n    this.ctx.imageSmoothingEnabled = false;\n\n    if (group.smask) {\n      this.tempSMask = this.smaskStack.pop();\n      this.restore();\n    } else {\n      this.ctx.restore();\n      const currentMtx = this.ctx.mozCurrentTransform;\n      this.restore();\n      this.ctx.save();\n      this.ctx.setTransform.apply(this.ctx, currentMtx);\n\n      const dirtyBox = _util.Util.getAxialAlignedBoundingBox([0, 0, groupCtx.canvas.width, groupCtx.canvas.height], currentMtx);\n\n      this.ctx.drawImage(groupCtx.canvas, 0, 0);\n      this.ctx.restore();\n      this.compose(dirtyBox);\n    }\n  }\n\n  beginAnnotations() {\n    this.save();\n\n    if (this.baseTransform) {\n      this.ctx.setTransform.apply(this.ctx, this.baseTransform);\n    }\n  }\n\n  endAnnotations() {\n    this.restore();\n  }\n\n  beginAnnotation(id, rect, transform, matrix, hasOwnCanvas) {\n    this.save();\n\n    if (Array.isArray(rect) && rect.length === 4) {\n      const width = rect[2] - rect[0];\n      const height = rect[3] - rect[1];\n\n      if (hasOwnCanvas && this.annotationCanvasMap) {\n        transform = transform.slice();\n        transform[4] -= rect[0];\n        transform[5] -= rect[1];\n        rect = rect.slice();\n        rect[0] = rect[1] = 0;\n        rect[2] = width;\n        rect[3] = height;\n\n        const [scaleX, scaleY] = _util.Util.singularValueDecompose2dScale(this.ctx.mozCurrentTransform);\n\n        const {\n          viewportScale\n        } = this;\n        const canvasWidth = Math.ceil(width * this.outputScaleX * viewportScale);\n        const canvasHeight = Math.ceil(height * this.outputScaleY * viewportScale);\n        this.annotationCanvas = this.canvasFactory.create(canvasWidth, canvasHeight);\n        const {\n          canvas,\n          context\n        } = this.annotationCanvas;\n        canvas.style.width = `calc(${width}px * var(--viewport-scale-factor))`;\n        canvas.style.height = `calc(${height}px * var(--viewport-scale-factor))`;\n        this.annotationCanvasMap.set(id, canvas);\n        this.annotationCanvas.savedCtx = this.ctx;\n        this.ctx = context;\n        this.ctx.setTransform(scaleX, 0, 0, -scaleY, 0, height * scaleY);\n        addContextCurrentTransform(this.ctx);\n        resetCtxToDefault(this.ctx);\n      } else {\n        resetCtxToDefault(this.ctx);\n        this.ctx.rect(rect[0], rect[1], width, height);\n        this.clip();\n        this.endPath();\n      }\n    }\n\n    this.current = new CanvasExtraState(this.ctx.canvas.width, this.ctx.canvas.height);\n    this.transform.apply(this, transform);\n    this.transform.apply(this, matrix);\n  }\n\n  endAnnotation() {\n    if (this.annotationCanvas) {\n      this.ctx = this.annotationCanvas.savedCtx;\n      delete this.annotationCanvas.savedCtx;\n      delete this.annotationCanvas;\n    }\n\n    this.restore();\n  }\n\n  paintImageMaskXObject(img) {\n    if (!this.contentVisible) {\n      return;\n    }\n\n    const ctx = this.ctx;\n    const width = img.width,\n          height = img.height;\n    const glyph = this.processingType3;\n\n    if (COMPILE_TYPE3_GLYPHS && glyph && glyph.compiled === undefined) {\n      if (width <= MAX_SIZE_TO_COMPILE && height <= MAX_SIZE_TO_COMPILE) {\n        glyph.compiled = compileType3Glyph({\n          data: img.data,\n          width,\n          height\n        });\n      } else {\n        glyph.compiled = null;\n      }\n    }\n\n    if (glyph?.compiled) {\n      glyph.compiled(ctx);\n      return;\n    }\n\n    const mask = this._createMaskCanvas(img);\n\n    const maskCanvas = mask.canvas;\n    ctx.save();\n    ctx.setTransform(1, 0, 0, 1, 0, 0);\n    ctx.drawImage(maskCanvas, mask.offsetX, mask.offsetY);\n    ctx.restore();\n    this.compose();\n  }\n\n  paintImageMaskXObjectRepeat(imgData, scaleX, skewX = 0, skewY = 0, scaleY, positions) {\n    if (!this.contentVisible) {\n      return;\n    }\n\n    const ctx = this.ctx;\n    ctx.save();\n    const currentTransform = ctx.mozCurrentTransform;\n    ctx.transform(scaleX, skewX, skewY, scaleY, 0, 0);\n\n    const mask = this._createMaskCanvas(imgData);\n\n    ctx.setTransform(1, 0, 0, 1, 0, 0);\n\n    for (let i = 0, ii = positions.length; i < ii; i += 2) {\n      const trans = _util.Util.transform(currentTransform, [scaleX, skewX, skewY, scaleY, positions[i], positions[i + 1]]);\n\n      const [x, y] = _util.Util.applyTransform([0, 0], trans);\n\n      ctx.drawImage(mask.canvas, x, y);\n    }\n\n    ctx.restore();\n    this.compose();\n  }\n\n  paintImageMaskXObjectGroup(images) {\n    if (!this.contentVisible) {\n      return;\n    }\n\n    const ctx = this.ctx;\n    const fillColor = this.current.fillColor;\n    const isPatternFill = this.current.patternFill;\n\n    for (let i = 0, ii = images.length; i < ii; i++) {\n      const image = images[i];\n      const width = image.width,\n            height = image.height;\n      const maskCanvas = this.cachedCanvases.getCanvas(\"maskCanvas\", width, height);\n      const maskCtx = maskCanvas.context;\n      maskCtx.save();\n      putBinaryImageMask(maskCtx, image);\n      maskCtx.globalCompositeOperation = \"source-in\";\n      maskCtx.fillStyle = isPatternFill ? fillColor.getPattern(maskCtx, this, ctx.mozCurrentTransformInverse, _pattern_helper.PathType.FILL) : fillColor;\n      maskCtx.fillRect(0, 0, width, height);\n      maskCtx.restore();\n      ctx.save();\n      ctx.transform.apply(ctx, image.transform);\n      ctx.scale(1, -1);\n      ctx.drawImage(maskCanvas.canvas, 0, 0, width, height, 0, -1, 1, 1);\n      ctx.restore();\n    }\n\n    this.compose();\n  }\n\n  paintImageXObject(objId) {\n    if (!this.contentVisible) {\n      return;\n    }\n\n    const imgData = objId.startsWith(\"g_\") ? this.commonObjs.get(objId) : this.objs.get(objId);\n\n    if (!imgData) {\n      (0, _util.warn)(\"Dependent image isn't ready yet\");\n      return;\n    }\n\n    this.paintInlineImageXObject(imgData);\n  }\n\n  paintImageXObjectRepeat(objId, scaleX, scaleY, positions) {\n    if (!this.contentVisible) {\n      return;\n    }\n\n    const imgData = objId.startsWith(\"g_\") ? this.commonObjs.get(objId) : this.objs.get(objId);\n\n    if (!imgData) {\n      (0, _util.warn)(\"Dependent image isn't ready yet\");\n      return;\n    }\n\n    const width = imgData.width;\n    const height = imgData.height;\n    const map = [];\n\n    for (let i = 0, ii = positions.length; i < ii; i += 2) {\n      map.push({\n        transform: [scaleX, 0, 0, scaleY, positions[i], positions[i + 1]],\n        x: 0,\n        y: 0,\n        w: width,\n        h: height\n      });\n    }\n\n    this.paintInlineImageXObjectGroup(imgData, map);\n  }\n\n  paintInlineImageXObject(imgData) {\n    if (!this.contentVisible) {\n      return;\n    }\n\n    const width = imgData.width;\n    const height = imgData.height;\n    const ctx = this.ctx;\n    this.save();\n    ctx.scale(1 / width, -1 / height);\n    let imgToPaint;\n\n    if (typeof HTMLElement === \"function\" && imgData instanceof HTMLElement || !imgData.data) {\n      imgToPaint = imgData;\n    } else {\n      const tmpCanvas = this.cachedCanvases.getCanvas(\"inlineImage\", width, height);\n      const tmpCtx = tmpCanvas.context;\n      putBinaryImageData(tmpCtx, imgData, this.current.transferMaps);\n      imgToPaint = tmpCanvas.canvas;\n    }\n\n    const scaled = this._scaleImage(imgToPaint, ctx.mozCurrentTransformInverse);\n\n    ctx.imageSmoothingEnabled = getImageSmoothingEnabled(ctx.mozCurrentTransform, imgData.interpolate);\n    ctx.drawImage(scaled.img, 0, 0, scaled.paintWidth, scaled.paintHeight, 0, -height, width, height);\n\n    if (this.imageLayer) {\n      const position = this.getCanvasPosition(0, -height);\n      this.imageLayer.appendImage({\n        imgData,\n        left: position[0],\n        top: position[1],\n        width: width / ctx.mozCurrentTransformInverse[0],\n        height: height / ctx.mozCurrentTransformInverse[3]\n      });\n    }\n\n    this.compose();\n    this.restore();\n  }\n\n  paintInlineImageXObjectGroup(imgData, map) {\n    if (!this.contentVisible) {\n      return;\n    }\n\n    const ctx = this.ctx;\n    const w = imgData.width;\n    const h = imgData.height;\n    const tmpCanvas = this.cachedCanvases.getCanvas(\"inlineImage\", w, h);\n    const tmpCtx = tmpCanvas.context;\n    putBinaryImageData(tmpCtx, imgData, this.current.transferMaps);\n\n    for (let i = 0, ii = map.length; i < ii; i++) {\n      const entry = map[i];\n      ctx.save();\n      ctx.transform.apply(ctx, entry.transform);\n      ctx.scale(1, -1);\n      ctx.drawImage(tmpCanvas.canvas, entry.x, entry.y, entry.w, entry.h, 0, -1, 1, 1);\n\n      if (this.imageLayer) {\n        const position = this.getCanvasPosition(entry.x, entry.y);\n        this.imageLayer.appendImage({\n          imgData,\n          left: position[0],\n          top: position[1],\n          width: w,\n          height: h\n        });\n      }\n\n      ctx.restore();\n    }\n\n    this.compose();\n  }\n\n  paintSolidColorImageMask() {\n    if (!this.contentVisible) {\n      return;\n    }\n\n    this.ctx.fillRect(0, 0, 1, 1);\n    this.compose();\n  }\n\n  markPoint(tag) {}\n\n  markPointProps(tag, properties) {}\n\n  beginMarkedContent(tag) {\n    this.markedContentStack.push({\n      visible: true\n    });\n  }\n\n  beginMarkedContentProps(tag, properties) {\n    if (tag === \"OC\") {\n      this.markedContentStack.push({\n        visible: this.optionalContentConfig.isVisible(properties)\n      });\n    } else {\n      this.markedContentStack.push({\n        visible: true\n      });\n    }\n\n    this.contentVisible = this.isContentVisible();\n  }\n\n  endMarkedContent() {\n    this.markedContentStack.pop();\n    this.contentVisible = this.isContentVisible();\n  }\n\n  beginCompat() {}\n\n  endCompat() {}\n\n  consumePath(clipBox) {\n    if (this.pendingClip) {\n      this.current.updateClipFromPath();\n    }\n\n    if (!this.pendingClip) {\n      this.compose(clipBox);\n    }\n\n    const ctx = this.ctx;\n\n    if (this.pendingClip) {\n      if (this.pendingClip === EO_CLIP) {\n        ctx.clip(\"evenodd\");\n      } else {\n        ctx.clip();\n      }\n\n      this.pendingClip = null;\n    }\n\n    this.current.startNewPathAndClipBox(this.current.clipBox);\n    ctx.beginPath();\n  }\n\n  getSinglePixelWidth() {\n    if (!this._cachedGetSinglePixelWidth) {\n      const m = this.ctx.mozCurrentTransform;\n\n      if (m[1] === 0 && m[2] === 0) {\n        this._cachedGetSinglePixelWidth = 1 / Math.min(Math.abs(m[0]), Math.abs(m[3]));\n      } else {\n        const absDet = Math.abs(m[0] * m[3] - m[2] * m[1]);\n        const normX = Math.hypot(m[0], m[2]);\n        const normY = Math.hypot(m[1], m[3]);\n        this._cachedGetSinglePixelWidth = Math.max(normX, normY) / absDet;\n      }\n    }\n\n    return this._cachedGetSinglePixelWidth;\n  }\n\n  getScaleForStroking() {\n    if (!this._cachedScaleForStroking) {\n      const {\n        lineWidth\n      } = this.current;\n      const m = this.ctx.mozCurrentTransform;\n      let scaleX, scaleY;\n\n      if (m[1] === 0 && m[2] === 0) {\n        const normX = Math.abs(m[0]);\n        const normY = Math.abs(m[3]);\n\n        if (lineWidth === 0) {\n          scaleX = 1 / normX;\n          scaleY = 1 / normY;\n        } else {\n          const scaledXLineWidth = normX * lineWidth;\n          const scaledYLineWidth = normY * lineWidth;\n          scaleX = scaledXLineWidth < 1 ? 1 / scaledXLineWidth : 1;\n          scaleY = scaledYLineWidth < 1 ? 1 / scaledYLineWidth : 1;\n        }\n      } else {\n        const absDet = Math.abs(m[0] * m[3] - m[2] * m[1]);\n        const normX = Math.hypot(m[0], m[1]);\n        const normY = Math.hypot(m[2], m[3]);\n\n        if (lineWidth === 0) {\n          scaleX = normY / absDet;\n          scaleY = normX / absDet;\n        } else {\n          const baseArea = lineWidth * absDet;\n          scaleX = normY > baseArea ? normY / baseArea : 1;\n          scaleY = normX > baseArea ? normX / baseArea : 1;\n        }\n      }\n\n      this._cachedScaleForStroking = [scaleX, scaleY];\n    }\n\n    return this._cachedScaleForStroking;\n  }\n\n  rescaleAndStroke(saveRestore) {\n    const {\n      ctx\n    } = this;\n    const {\n      lineWidth\n    } = this.current;\n    const [scaleX, scaleY] = this.getScaleForStroking();\n    ctx.lineWidth = lineWidth || 1;\n\n    if (scaleX === 1 && scaleY === 1) {\n      ctx.stroke();\n      return;\n    }\n\n    let savedMatrix, savedDashes, savedDashOffset;\n\n    if (saveRestore) {\n      savedMatrix = ctx.mozCurrentTransform.slice();\n      savedDashes = ctx.getLineDash().slice();\n      savedDashOffset = ctx.lineDashOffset;\n    }\n\n    ctx.scale(scaleX, scaleY);\n    const scale = Math.max(scaleX, scaleY);\n    ctx.setLineDash(ctx.getLineDash().map(x => x / scale));\n    ctx.lineDashOffset /= scale;\n    ctx.stroke();\n\n    if (saveRestore) {\n      ctx.setTransform(...savedMatrix);\n      ctx.setLineDash(savedDashes);\n      ctx.lineDashOffset = savedDashOffset;\n    }\n  }\n\n  getCanvasPosition(x, y) {\n    const transform = this.ctx.mozCurrentTransform;\n    return [transform[0] * x + transform[2] * y + transform[4], transform[1] * x + transform[3] * y + transform[5]];\n  }\n\n  isContentVisible() {\n    for (let i = this.markedContentStack.length - 1; i >= 0; i--) {\n      if (!this.markedContentStack[i].visible) {\n        return false;\n      }\n    }\n\n    return true;\n  }\n\n}\n\nexports.CanvasGraphics = CanvasGraphics;\n\nfor (const op in _util.OPS) {\n  if (CanvasGraphics.prototype[op] !== undefined) {\n    CanvasGraphics.prototype[_util.OPS[op]] = CanvasGraphics.prototype[op];\n  }\n}\n\n/***/ }),\n/* 11 */\n/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {\n\n\n\nObject.defineProperty(exports, \"__esModule\", ({\n  value: true\n}));\nexports.TilingPattern = exports.PathType = void 0;\nexports.getShadingPattern = getShadingPattern;\n\nvar _util = __w_pdfjs_require__(1);\n\nconst PathType = {\n  FILL: \"Fill\",\n  STROKE: \"Stroke\",\n  SHADING: \"Shading\"\n};\nexports.PathType = PathType;\n\nfunction applyBoundingBox(ctx, bbox) {\n  if (!bbox || typeof Path2D === \"undefined\") {\n    return;\n  }\n\n  const width = bbox[2] - bbox[0];\n  const height = bbox[3] - bbox[1];\n  const region = new Path2D();\n  region.rect(bbox[0], bbox[1], width, height);\n  ctx.clip(region);\n}\n\nclass BaseShadingPattern {\n  constructor() {\n    if (this.constructor === BaseShadingPattern) {\n      (0, _util.unreachable)(\"Cannot initialize BaseShadingPattern.\");\n    }\n  }\n\n  getPattern() {\n    (0, _util.unreachable)(\"Abstract method `getPattern` called.\");\n  }\n\n}\n\nclass RadialAxialShadingPattern extends BaseShadingPattern {\n  constructor(IR) {\n    super();\n    this._type = IR[1];\n    this._bbox = IR[2];\n    this._colorStops = IR[3];\n    this._p0 = IR[4];\n    this._p1 = IR[5];\n    this._r0 = IR[6];\n    this._r1 = IR[7];\n    this.matrix = null;\n  }\n\n  _createGradient(ctx) {\n    let grad;\n\n    if (this._type === \"axial\") {\n      grad = ctx.createLinearGradient(this._p0[0], this._p0[1], this._p1[0], this._p1[1]);\n    } else if (this._type === \"radial\") {\n      grad = ctx.createRadialGradient(this._p0[0], this._p0[1], this._r0, this._p1[0], this._p1[1], this._r1);\n    }\n\n    for (const colorStop of this._colorStops) {\n      grad.addColorStop(colorStop[0], colorStop[1]);\n    }\n\n    return grad;\n  }\n\n  getPattern(ctx, owner, inverse, pathType) {\n    let pattern;\n\n    if (pathType === PathType.STROKE || pathType === PathType.FILL) {\n      const ownerBBox = owner.current.getClippedPathBoundingBox(pathType, ctx.mozCurrentTransform) || [0, 0, 0, 0];\n      const width = Math.ceil(ownerBBox[2] - ownerBBox[0]) || 1;\n      const height = Math.ceil(ownerBBox[3] - ownerBBox[1]) || 1;\n      const tmpCanvas = owner.cachedCanvases.getCanvas(\"pattern\", width, height, true);\n      const tmpCtx = tmpCanvas.context;\n      tmpCtx.clearRect(0, 0, tmpCtx.canvas.width, tmpCtx.canvas.height);\n      tmpCtx.beginPath();\n      tmpCtx.rect(0, 0, tmpCtx.canvas.width, tmpCtx.canvas.height);\n      tmpCtx.translate(-ownerBBox[0], -ownerBBox[1]);\n      inverse = _util.Util.transform(inverse, [1, 0, 0, 1, ownerBBox[0], ownerBBox[1]]);\n      tmpCtx.transform.apply(tmpCtx, owner.baseTransform);\n\n      if (this.matrix) {\n        tmpCtx.transform.apply(tmpCtx, this.matrix);\n      }\n\n      applyBoundingBox(tmpCtx, this._bbox);\n      tmpCtx.fillStyle = this._createGradient(tmpCtx);\n      tmpCtx.fill();\n      pattern = ctx.createPattern(tmpCanvas.canvas, \"no-repeat\");\n      const domMatrix = new DOMMatrix(inverse);\n\n      try {\n        pattern.setTransform(domMatrix);\n      } catch (ex) {\n        (0, _util.warn)(`RadialAxialShadingPattern.getPattern: \"${ex?.message}\".`);\n      }\n    } else {\n      applyBoundingBox(ctx, this._bbox);\n      pattern = this._createGradient(ctx);\n    }\n\n    return pattern;\n  }\n\n}\n\nfunction drawTriangle(data, context, p1, p2, p3, c1, c2, c3) {\n  const coords = context.coords,\n        colors = context.colors;\n  const bytes = data.data,\n        rowSize = data.width * 4;\n  let tmp;\n\n  if (coords[p1 + 1] > coords[p2 + 1]) {\n    tmp = p1;\n    p1 = p2;\n    p2 = tmp;\n    tmp = c1;\n    c1 = c2;\n    c2 = tmp;\n  }\n\n  if (coords[p2 + 1] > coords[p3 + 1]) {\n    tmp = p2;\n    p2 = p3;\n    p3 = tmp;\n    tmp = c2;\n    c2 = c3;\n    c3 = tmp;\n  }\n\n  if (coords[p1 + 1] > coords[p2 + 1]) {\n    tmp = p1;\n    p1 = p2;\n    p2 = tmp;\n    tmp = c1;\n    c1 = c2;\n    c2 = tmp;\n  }\n\n  const x1 = (coords[p1] + context.offsetX) * context.scaleX;\n  const y1 = (coords[p1 + 1] + context.offsetY) * context.scaleY;\n  const x2 = (coords[p2] + context.offsetX) * context.scaleX;\n  const y2 = (coords[p2 + 1] + context.offsetY) * context.scaleY;\n  const x3 = (coords[p3] + context.offsetX) * context.scaleX;\n  const y3 = (coords[p3 + 1] + context.offsetY) * context.scaleY;\n\n  if (y1 >= y3) {\n    return;\n  }\n\n  const c1r = colors[c1],\n        c1g = colors[c1 + 1],\n        c1b = colors[c1 + 2];\n  const c2r = colors[c2],\n        c2g = colors[c2 + 1],\n        c2b = colors[c2 + 2];\n  const c3r = colors[c3],\n        c3g = colors[c3 + 1],\n        c3b = colors[c3 + 2];\n  const minY = Math.round(y1),\n        maxY = Math.round(y3);\n  let xa, car, cag, cab;\n  let xb, cbr, cbg, cbb;\n\n  for (let y = minY; y <= maxY; y++) {\n    if (y < y2) {\n      let k;\n\n      if (y < y1) {\n        k = 0;\n      } else {\n        k = (y1 - y) / (y1 - y2);\n      }\n\n      xa = x1 - (x1 - x2) * k;\n      car = c1r - (c1r - c2r) * k;\n      cag = c1g - (c1g - c2g) * k;\n      cab = c1b - (c1b - c2b) * k;\n    } else {\n      let k;\n\n      if (y > y3) {\n        k = 1;\n      } else if (y2 === y3) {\n        k = 0;\n      } else {\n        k = (y2 - y) / (y2 - y3);\n      }\n\n      xa = x2 - (x2 - x3) * k;\n      car = c2r - (c2r - c3r) * k;\n      cag = c2g - (c2g - c3g) * k;\n      cab = c2b - (c2b - c3b) * k;\n    }\n\n    let k;\n\n    if (y < y1) {\n      k = 0;\n    } else if (y > y3) {\n      k = 1;\n    } else {\n      k = (y1 - y) / (y1 - y3);\n    }\n\n    xb = x1 - (x1 - x3) * k;\n    cbr = c1r - (c1r - c3r) * k;\n    cbg = c1g - (c1g - c3g) * k;\n    cbb = c1b - (c1b - c3b) * k;\n    const x1_ = Math.round(Math.min(xa, xb));\n    const x2_ = Math.round(Math.max(xa, xb));\n    let j = rowSize * y + x1_ * 4;\n\n    for (let x = x1_; x <= x2_; x++) {\n      k = (xa - x) / (xa - xb);\n\n      if (k < 0) {\n        k = 0;\n      } else if (k > 1) {\n        k = 1;\n      }\n\n      bytes[j++] = car - (car - cbr) * k | 0;\n      bytes[j++] = cag - (cag - cbg) * k | 0;\n      bytes[j++] = cab - (cab - cbb) * k | 0;\n      bytes[j++] = 255;\n    }\n  }\n}\n\nfunction drawFigure(data, figure, context) {\n  const ps = figure.coords;\n  const cs = figure.colors;\n  let i, ii;\n\n  switch (figure.type) {\n    case \"lattice\":\n      const verticesPerRow = figure.verticesPerRow;\n      const rows = Math.floor(ps.length / verticesPerRow) - 1;\n      const cols = verticesPerRow - 1;\n\n      for (i = 0; i < rows; i++) {\n        let q = i * verticesPerRow;\n\n        for (let j = 0; j < cols; j++, q++) {\n          drawTriangle(data, context, ps[q], ps[q + 1], ps[q + verticesPerRow], cs[q], cs[q + 1], cs[q + verticesPerRow]);\n          drawTriangle(data, context, ps[q + verticesPerRow + 1], ps[q + 1], ps[q + verticesPerRow], cs[q + verticesPerRow + 1], cs[q + 1], cs[q + verticesPerRow]);\n        }\n      }\n\n      break;\n\n    case \"triangles\":\n      for (i = 0, ii = ps.length; i < ii; i += 3) {\n        drawTriangle(data, context, ps[i], ps[i + 1], ps[i + 2], cs[i], cs[i + 1], cs[i + 2]);\n      }\n\n      break;\n\n    default:\n      throw new Error(\"illegal figure\");\n  }\n}\n\nclass MeshShadingPattern extends BaseShadingPattern {\n  constructor(IR) {\n    super();\n    this._coords = IR[2];\n    this._colors = IR[3];\n    this._figures = IR[4];\n    this._bounds = IR[5];\n    this._bbox = IR[7];\n    this._background = IR[8];\n    this.matrix = null;\n  }\n\n  _createMeshCanvas(combinedScale, backgroundColor, cachedCanvases) {\n    const EXPECTED_SCALE = 1.1;\n    const MAX_PATTERN_SIZE = 3000;\n    const BORDER_SIZE = 2;\n    const offsetX = Math.floor(this._bounds[0]);\n    const offsetY = Math.floor(this._bounds[1]);\n    const boundsWidth = Math.ceil(this._bounds[2]) - offsetX;\n    const boundsHeight = Math.ceil(this._bounds[3]) - offsetY;\n    const width = Math.min(Math.ceil(Math.abs(boundsWidth * combinedScale[0] * EXPECTED_SCALE)), MAX_PATTERN_SIZE);\n    const height = Math.min(Math.ceil(Math.abs(boundsHeight * combinedScale[1] * EXPECTED_SCALE)), MAX_PATTERN_SIZE);\n    const scaleX = boundsWidth / width;\n    const scaleY = boundsHeight / height;\n    const context = {\n      coords: this._coords,\n      colors: this._colors,\n      offsetX: -offsetX,\n      offsetY: -offsetY,\n      scaleX: 1 / scaleX,\n      scaleY: 1 / scaleY\n    };\n    const paddedWidth = width + BORDER_SIZE * 2;\n    const paddedHeight = height + BORDER_SIZE * 2;\n    const tmpCanvas = cachedCanvases.getCanvas(\"mesh\", paddedWidth, paddedHeight, false);\n    const tmpCtx = tmpCanvas.context;\n    const data = tmpCtx.createImageData(width, height);\n\n    if (backgroundColor) {\n      const bytes = data.data;\n\n      for (let i = 0, ii = bytes.length; i < ii; i += 4) {\n        bytes[i] = backgroundColor[0];\n        bytes[i + 1] = backgroundColor[1];\n        bytes[i + 2] = backgroundColor[2];\n        bytes[i + 3] = 255;\n      }\n    }\n\n    for (const figure of this._figures) {\n      drawFigure(data, figure, context);\n    }\n\n    tmpCtx.putImageData(data, BORDER_SIZE, BORDER_SIZE);\n    const canvas = tmpCanvas.canvas;\n    return {\n      canvas,\n      offsetX: offsetX - BORDER_SIZE * scaleX,\n      offsetY: offsetY - BORDER_SIZE * scaleY,\n      scaleX,\n      scaleY\n    };\n  }\n\n  getPattern(ctx, owner, inverse, pathType) {\n    applyBoundingBox(ctx, this._bbox);\n    let scale;\n\n    if (pathType === PathType.SHADING) {\n      scale = _util.Util.singularValueDecompose2dScale(ctx.mozCurrentTransform);\n    } else {\n      scale = _util.Util.singularValueDecompose2dScale(owner.baseTransform);\n\n      if (this.matrix) {\n        const matrixScale = _util.Util.singularValueDecompose2dScale(this.matrix);\n\n        scale = [scale[0] * matrixScale[0], scale[1] * matrixScale[1]];\n      }\n    }\n\n    const temporaryPatternCanvas = this._createMeshCanvas(scale, pathType === PathType.SHADING ? null : this._background, owner.cachedCanvases);\n\n    if (pathType !== PathType.SHADING) {\n      ctx.setTransform.apply(ctx, owner.baseTransform);\n\n      if (this.matrix) {\n        ctx.transform.apply(ctx, this.matrix);\n      }\n    }\n\n    ctx.translate(temporaryPatternCanvas.offsetX, temporaryPatternCanvas.offsetY);\n    ctx.scale(temporaryPatternCanvas.scaleX, temporaryPatternCanvas.scaleY);\n    return ctx.createPattern(temporaryPatternCanvas.canvas, \"no-repeat\");\n  }\n\n}\n\nclass DummyShadingPattern extends BaseShadingPattern {\n  getPattern() {\n    return \"hotpink\";\n  }\n\n}\n\nfunction getShadingPattern(IR) {\n  switch (IR[0]) {\n    case \"RadialAxial\":\n      return new RadialAxialShadingPattern(IR);\n\n    case \"Mesh\":\n      return new MeshShadingPattern(IR);\n\n    case \"Dummy\":\n      return new DummyShadingPattern();\n  }\n\n  throw new Error(`Unknown IR type: ${IR[0]}`);\n}\n\nconst PaintType = {\n  COLORED: 1,\n  UNCOLORED: 2\n};\n\nclass TilingPattern {\n  static get MAX_PATTERN_SIZE() {\n    return (0, _util.shadow)(this, \"MAX_PATTERN_SIZE\", 3000);\n  }\n\n  constructor(IR, color, ctx, canvasGraphicsFactory, baseTransform) {\n    this.operatorList = IR[2];\n    this.matrix = IR[3] || [1, 0, 0, 1, 0, 0];\n    this.bbox = IR[4];\n    this.xstep = IR[5];\n    this.ystep = IR[6];\n    this.paintType = IR[7];\n    this.tilingType = IR[8];\n    this.color = color;\n    this.ctx = ctx;\n    this.canvasGraphicsFactory = canvasGraphicsFactory;\n    this.baseTransform = baseTransform;\n  }\n\n  createPatternCanvas(owner) {\n    const operatorList = this.operatorList;\n    const bbox = this.bbox;\n    const xstep = this.xstep;\n    const ystep = this.ystep;\n    const paintType = this.paintType;\n    const tilingType = this.tilingType;\n    const color = this.color;\n    const canvasGraphicsFactory = this.canvasGraphicsFactory;\n    (0, _util.info)(\"TilingType: \" + tilingType);\n    const x0 = bbox[0],\n          y0 = bbox[1],\n          x1 = bbox[2],\n          y1 = bbox[3];\n\n    const matrixScale = _util.Util.singularValueDecompose2dScale(this.matrix);\n\n    const curMatrixScale = _util.Util.singularValueDecompose2dScale(this.baseTransform);\n\n    const combinedScale = [matrixScale[0] * curMatrixScale[0], matrixScale[1] * curMatrixScale[1]];\n    const dimx = this.getSizeAndScale(xstep, this.ctx.canvas.width, combinedScale[0]);\n    const dimy = this.getSizeAndScale(ystep, this.ctx.canvas.height, combinedScale[1]);\n    const tmpCanvas = owner.cachedCanvases.getCanvas(\"pattern\", dimx.size, dimy.size, true);\n    const tmpCtx = tmpCanvas.context;\n    const graphics = canvasGraphicsFactory.createCanvasGraphics(tmpCtx);\n    graphics.groupLevel = owner.groupLevel;\n    this.setFillAndStrokeStyleToContext(graphics, paintType, color);\n    let adjustedX0 = x0;\n    let adjustedY0 = y0;\n    let adjustedX1 = x1;\n    let adjustedY1 = y1;\n\n    if (x0 < 0) {\n      adjustedX0 = 0;\n      adjustedX1 += Math.abs(x0);\n    }\n\n    if (y0 < 0) {\n      adjustedY0 = 0;\n      adjustedY1 += Math.abs(y0);\n    }\n\n    tmpCtx.translate(-(dimx.scale * adjustedX0), -(dimy.scale * adjustedY0));\n    graphics.transform(dimx.scale, 0, 0, dimy.scale, 0, 0);\n    tmpCtx.save();\n    this.clipBbox(graphics, adjustedX0, adjustedY0, adjustedX1, adjustedY1);\n    graphics.baseTransform = graphics.ctx.mozCurrentTransform.slice();\n    graphics.executeOperatorList(operatorList);\n    graphics.endDrawing();\n    return {\n      canvas: tmpCanvas.canvas,\n      scaleX: dimx.scale,\n      scaleY: dimy.scale,\n      offsetX: adjustedX0,\n      offsetY: adjustedY0\n    };\n  }\n\n  getSizeAndScale(step, realOutputSize, scale) {\n    step = Math.abs(step);\n    const maxSize = Math.max(TilingPattern.MAX_PATTERN_SIZE, realOutputSize);\n    let size = Math.ceil(step * scale);\n\n    if (size >= maxSize) {\n      size = maxSize;\n    } else {\n      scale = size / step;\n    }\n\n    return {\n      scale,\n      size\n    };\n  }\n\n  clipBbox(graphics, x0, y0, x1, y1) {\n    const bboxWidth = x1 - x0;\n    const bboxHeight = y1 - y0;\n    graphics.ctx.rect(x0, y0, bboxWidth, bboxHeight);\n    graphics.clip();\n    graphics.endPath();\n  }\n\n  setFillAndStrokeStyleToContext(graphics, paintType, color) {\n    const context = graphics.ctx,\n          current = graphics.current;\n\n    switch (paintType) {\n      case PaintType.COLORED:\n        const ctx = this.ctx;\n        context.fillStyle = ctx.fillStyle;\n        context.strokeStyle = ctx.strokeStyle;\n        current.fillColor = ctx.fillStyle;\n        current.strokeColor = ctx.strokeStyle;\n        break;\n\n      case PaintType.UNCOLORED:\n        const cssColor = _util.Util.makeHexColor(color[0], color[1], color[2]);\n\n        context.fillStyle = cssColor;\n        context.strokeStyle = cssColor;\n        current.fillColor = cssColor;\n        current.strokeColor = cssColor;\n        break;\n\n      default:\n        throw new _util.FormatError(`Unsupported paint type: ${paintType}`);\n    }\n  }\n\n  getPattern(ctx, owner, inverse, pathType) {\n    let matrix = inverse;\n\n    if (pathType !== PathType.SHADING) {\n      matrix = _util.Util.transform(matrix, owner.baseTransform);\n\n      if (this.matrix) {\n        matrix = _util.Util.transform(matrix, this.matrix);\n      }\n    }\n\n    const temporaryPatternCanvas = this.createPatternCanvas(owner);\n    let domMatrix = new DOMMatrix(matrix);\n    domMatrix = domMatrix.translate(temporaryPatternCanvas.offsetX, temporaryPatternCanvas.offsetY);\n    domMatrix = domMatrix.scale(1 / temporaryPatternCanvas.scaleX, 1 / temporaryPatternCanvas.scaleY);\n    const pattern = ctx.createPattern(temporaryPatternCanvas.canvas, \"repeat\");\n\n    try {\n      pattern.setTransform(domMatrix);\n    } catch (ex) {\n      (0, _util.warn)(`TilingPattern.getPattern: \"${ex?.message}\".`);\n    }\n\n    return pattern;\n  }\n\n}\n\nexports.TilingPattern = TilingPattern;\n\n/***/ }),\n/* 12 */\n/***/ ((__unused_webpack_module, exports) => {\n\n\n\nObject.defineProperty(exports, \"__esModule\", ({\n  value: true\n}));\nexports.GlobalWorkerOptions = void 0;\nconst GlobalWorkerOptions = Object.create(null);\nexports.GlobalWorkerOptions = GlobalWorkerOptions;\nGlobalWorkerOptions.workerPort = GlobalWorkerOptions.workerPort === undefined ? null : GlobalWorkerOptions.workerPort;\nGlobalWorkerOptions.workerSrc = GlobalWorkerOptions.workerSrc === undefined ? \"\" : GlobalWorkerOptions.workerSrc;\n\n/***/ }),\n/* 13 */\n/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {\n\n\n\nObject.defineProperty(exports, \"__esModule\", ({\n  value: true\n}));\nexports.MessageHandler = void 0;\n\nvar _util = __w_pdfjs_require__(1);\n\nconst CallbackKind = {\n  UNKNOWN: 0,\n  DATA: 1,\n  ERROR: 2\n};\nconst StreamKind = {\n  UNKNOWN: 0,\n  CANCEL: 1,\n  CANCEL_COMPLETE: 2,\n  CLOSE: 3,\n  ENQUEUE: 4,\n  ERROR: 5,\n  PULL: 6,\n  PULL_COMPLETE: 7,\n  START_COMPLETE: 8\n};\n\nfunction wrapReason(reason) {\n  if (!(reason instanceof Error || typeof reason === \"object\" && reason !== null)) {\n    (0, _util.unreachable)('wrapReason: Expected \"reason\" to be a (possibly cloned) Error.');\n  }\n\n  switch (reason.name) {\n    case \"AbortException\":\n      return new _util.AbortException(reason.message);\n\n    case \"MissingPDFException\":\n      return new _util.MissingPDFException(reason.message);\n\n    case \"PasswordException\":\n      return new _util.PasswordException(reason.message, reason.code);\n\n    case \"UnexpectedResponseException\":\n      return new _util.UnexpectedResponseException(reason.message, reason.status);\n\n    case \"UnknownErrorException\":\n      return new _util.UnknownErrorException(reason.message, reason.details);\n\n    default:\n      return new _util.UnknownErrorException(reason.message, reason.toString());\n  }\n}\n\nclass MessageHandler {\n  constructor(sourceName, targetName, comObj) {\n    this.sourceName = sourceName;\n    this.targetName = targetName;\n    this.comObj = comObj;\n    this.callbackId = 1;\n    this.streamId = 1;\n    this.streamSinks = Object.create(null);\n    this.streamControllers = Object.create(null);\n    this.callbackCapabilities = Object.create(null);\n    this.actionHandler = Object.create(null);\n\n    this._onComObjOnMessage = event => {\n      const data = event.data;\n\n      if (data.targetName !== this.sourceName) {\n        return;\n      }\n\n      if (data.stream) {\n        this._processStreamMessage(data);\n\n        return;\n      }\n\n      if (data.callback) {\n        const callbackId = data.callbackId;\n        const capability = this.callbackCapabilities[callbackId];\n\n        if (!capability) {\n          throw new Error(`Cannot resolve callback ${callbackId}`);\n        }\n\n        delete this.callbackCapabilities[callbackId];\n\n        if (data.callback === CallbackKind.DATA) {\n          capability.resolve(data.data);\n        } else if (data.callback === CallbackKind.ERROR) {\n          capability.reject(wrapReason(data.reason));\n        } else {\n          throw new Error(\"Unexpected callback case\");\n        }\n\n        return;\n      }\n\n      const action = this.actionHandler[data.action];\n\n      if (!action) {\n        throw new Error(`Unknown action from worker: ${data.action}`);\n      }\n\n      if (data.callbackId) {\n        const cbSourceName = this.sourceName;\n        const cbTargetName = data.sourceName;\n        new Promise(function (resolve) {\n          resolve(action(data.data));\n        }).then(function (result) {\n          comObj.postMessage({\n            sourceName: cbSourceName,\n            targetName: cbTargetName,\n            callback: CallbackKind.DATA,\n            callbackId: data.callbackId,\n            data: result\n          });\n        }, function (reason) {\n          comObj.postMessage({\n            sourceName: cbSourceName,\n            targetName: cbTargetName,\n            callback: CallbackKind.ERROR,\n            callbackId: data.callbackId,\n            reason: wrapReason(reason)\n          });\n        });\n        return;\n      }\n\n      if (data.streamId) {\n        this._createStreamSink(data);\n\n        return;\n      }\n\n      action(data.data);\n    };\n\n    comObj.addEventListener(\"message\", this._onComObjOnMessage);\n  }\n\n  on(actionName, handler) {\n    const ah = this.actionHandler;\n\n    if (ah[actionName]) {\n      throw new Error(`There is already an actionName called \"${actionName}\"`);\n    }\n\n    ah[actionName] = handler;\n  }\n\n  send(actionName, data, transfers) {\n    this.comObj.postMessage({\n      sourceName: this.sourceName,\n      targetName: this.targetName,\n      action: actionName,\n      data\n    }, transfers);\n  }\n\n  sendWithPromise(actionName, data, transfers) {\n    const callbackId = this.callbackId++;\n    const capability = (0, _util.createPromiseCapability)();\n    this.callbackCapabilities[callbackId] = capability;\n\n    try {\n      this.comObj.postMessage({\n        sourceName: this.sourceName,\n        targetName: this.targetName,\n        action: actionName,\n        callbackId,\n        data\n      }, transfers);\n    } catch (ex) {\n      capability.reject(ex);\n    }\n\n    return capability.promise;\n  }\n\n  sendWithStream(actionName, data, queueingStrategy, transfers) {\n    const streamId = this.streamId++,\n          sourceName = this.sourceName,\n          targetName = this.targetName,\n          comObj = this.comObj;\n    return new ReadableStream({\n      start: controller => {\n        const startCapability = (0, _util.createPromiseCapability)();\n        this.streamControllers[streamId] = {\n          controller,\n          startCall: startCapability,\n          pullCall: null,\n          cancelCall: null,\n          isClosed: false\n        };\n        comObj.postMessage({\n          sourceName,\n          targetName,\n          action: actionName,\n          streamId,\n          data,\n          desiredSize: controller.desiredSize\n        }, transfers);\n        return startCapability.promise;\n      },\n      pull: controller => {\n        const pullCapability = (0, _util.createPromiseCapability)();\n        this.streamControllers[streamId].pullCall = pullCapability;\n        comObj.postMessage({\n          sourceName,\n          targetName,\n          stream: StreamKind.PULL,\n          streamId,\n          desiredSize: controller.desiredSize\n        });\n        return pullCapability.promise;\n      },\n      cancel: reason => {\n        (0, _util.assert)(reason instanceof Error, \"cancel must have a valid reason\");\n        const cancelCapability = (0, _util.createPromiseCapability)();\n        this.streamControllers[streamId].cancelCall = cancelCapability;\n        this.streamControllers[streamId].isClosed = true;\n        comObj.postMessage({\n          sourceName,\n          targetName,\n          stream: StreamKind.CANCEL,\n          streamId,\n          reason: wrapReason(reason)\n        });\n        return cancelCapability.promise;\n      }\n    }, queueingStrategy);\n  }\n\n  _createStreamSink(data) {\n    const streamId = data.streamId,\n          sourceName = this.sourceName,\n          targetName = data.sourceName,\n          comObj = this.comObj;\n    const self = this,\n          action = this.actionHandler[data.action];\n    const streamSink = {\n      enqueue(chunk, size = 1, transfers) {\n        if (this.isCancelled) {\n          return;\n        }\n\n        const lastDesiredSize = this.desiredSize;\n        this.desiredSize -= size;\n\n        if (lastDesiredSize > 0 && this.desiredSize <= 0) {\n          this.sinkCapability = (0, _util.createPromiseCapability)();\n          this.ready = this.sinkCapability.promise;\n        }\n\n        comObj.postMessage({\n          sourceName,\n          targetName,\n          stream: StreamKind.ENQUEUE,\n          streamId,\n          chunk\n        }, transfers);\n      },\n\n      close() {\n        if (this.isCancelled) {\n          return;\n        }\n\n        this.isCancelled = true;\n        comObj.postMessage({\n          sourceName,\n          targetName,\n          stream: StreamKind.CLOSE,\n          streamId\n        });\n        delete self.streamSinks[streamId];\n      },\n\n      error(reason) {\n        (0, _util.assert)(reason instanceof Error, \"error must have a valid reason\");\n\n        if (this.isCancelled) {\n          return;\n        }\n\n        this.isCancelled = true;\n        comObj.postMessage({\n          sourceName,\n          targetName,\n          stream: StreamKind.ERROR,\n          streamId,\n          reason: wrapReason(reason)\n        });\n      },\n\n      sinkCapability: (0, _util.createPromiseCapability)(),\n      onPull: null,\n      onCancel: null,\n      isCancelled: false,\n      desiredSize: data.desiredSize,\n      ready: null\n    };\n    streamSink.sinkCapability.resolve();\n    streamSink.ready = streamSink.sinkCapability.promise;\n    this.streamSinks[streamId] = streamSink;\n    new Promise(function (resolve) {\n      resolve(action(data.data, streamSink));\n    }).then(function () {\n      comObj.postMessage({\n        sourceName,\n        targetName,\n        stream: StreamKind.START_COMPLETE,\n        streamId,\n        success: true\n      });\n    }, function (reason) {\n      comObj.postMessage({\n        sourceName,\n        targetName,\n        stream: StreamKind.START_COMPLETE,\n        streamId,\n        reason: wrapReason(reason)\n      });\n    });\n  }\n\n  _processStreamMessage(data) {\n    const streamId = data.streamId,\n          sourceName = this.sourceName,\n          targetName = data.sourceName,\n          comObj = this.comObj;\n    const streamController = this.streamControllers[streamId],\n          streamSink = this.streamSinks[streamId];\n\n    switch (data.stream) {\n      case StreamKind.START_COMPLETE:\n        if (data.success) {\n          streamController.startCall.resolve();\n        } else {\n          streamController.startCall.reject(wrapReason(data.reason));\n        }\n\n        break;\n\n      case StreamKind.PULL_COMPLETE:\n        if (data.success) {\n          streamController.pullCall.resolve();\n        } else {\n          streamController.pullCall.reject(wrapReason(data.reason));\n        }\n\n        break;\n\n      case StreamKind.PULL:\n        if (!streamSink) {\n          comObj.postMessage({\n            sourceName,\n            targetName,\n            stream: StreamKind.PULL_COMPLETE,\n            streamId,\n            success: true\n          });\n          break;\n        }\n\n        if (streamSink.desiredSize <= 0 && data.desiredSize > 0) {\n          streamSink.sinkCapability.resolve();\n        }\n\n        streamSink.desiredSize = data.desiredSize;\n        new Promise(function (resolve) {\n          resolve(streamSink.onPull && streamSink.onPull());\n        }).then(function () {\n          comObj.postMessage({\n            sourceName,\n            targetName,\n            stream: StreamKind.PULL_COMPLETE,\n            streamId,\n            success: true\n          });\n        }, function (reason) {\n          comObj.postMessage({\n            sourceName,\n            targetName,\n            stream: StreamKind.PULL_COMPLETE,\n            streamId,\n            reason: wrapReason(reason)\n          });\n        });\n        break;\n\n      case StreamKind.ENQUEUE:\n        (0, _util.assert)(streamController, \"enqueue should have stream controller\");\n\n        if (streamController.isClosed) {\n          break;\n        }\n\n        streamController.controller.enqueue(data.chunk);\n        break;\n\n      case StreamKind.CLOSE:\n        (0, _util.assert)(streamController, \"close should have stream controller\");\n\n        if (streamController.isClosed) {\n          break;\n        }\n\n        streamController.isClosed = true;\n        streamController.controller.close();\n\n        this._deleteStreamController(streamController, streamId);\n\n        break;\n\n      case StreamKind.ERROR:\n        (0, _util.assert)(streamController, \"error should have stream controller\");\n        streamController.controller.error(wrapReason(data.reason));\n\n        this._deleteStreamController(streamController, streamId);\n\n        break;\n\n      case StreamKind.CANCEL_COMPLETE:\n        if (data.success) {\n          streamController.cancelCall.resolve();\n        } else {\n          streamController.cancelCall.reject(wrapReason(data.reason));\n        }\n\n        this._deleteStreamController(streamController, streamId);\n\n        break;\n\n      case StreamKind.CANCEL:\n        if (!streamSink) {\n          break;\n        }\n\n        new Promise(function (resolve) {\n          resolve(streamSink.onCancel && streamSink.onCancel(wrapReason(data.reason)));\n        }).then(function () {\n          comObj.postMessage({\n            sourceName,\n            targetName,\n            stream: StreamKind.CANCEL_COMPLETE,\n            streamId,\n            success: true\n          });\n        }, function (reason) {\n          comObj.postMessage({\n            sourceName,\n            targetName,\n            stream: StreamKind.CANCEL_COMPLETE,\n            streamId,\n            reason: wrapReason(reason)\n          });\n        });\n        streamSink.sinkCapability.reject(wrapReason(data.reason));\n        streamSink.isCancelled = true;\n        delete this.streamSinks[streamId];\n        break;\n\n      default:\n        throw new Error(\"Unexpected stream case\");\n    }\n  }\n\n  async _deleteStreamController(streamController, streamId) {\n    await Promise.allSettled([streamController.startCall && streamController.startCall.promise, streamController.pullCall && streamController.pullCall.promise, streamController.cancelCall && streamController.cancelCall.promise]);\n    delete this.streamControllers[streamId];\n  }\n\n  destroy() {\n    this.comObj.removeEventListener(\"message\", this._onComObjOnMessage);\n  }\n\n}\n\nexports.MessageHandler = MessageHandler;\n\n/***/ }),\n/* 14 */\n/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {\n\n\n\nObject.defineProperty(exports, \"__esModule\", ({\n  value: true\n}));\nexports.Metadata = void 0;\n\nvar _util = __w_pdfjs_require__(1);\n\nclass Metadata {\n  #metadataMap;\n  #data;\n\n  constructor({\n    parsedData,\n    rawData\n  }) {\n    this.#metadataMap = parsedData;\n    this.#data = rawData;\n  }\n\n  getRaw() {\n    return this.#data;\n  }\n\n  get(name) {\n    return this.#metadataMap.get(name) ?? null;\n  }\n\n  getAll() {\n    return (0, _util.objectFromMap)(this.#metadataMap);\n  }\n\n  has(name) {\n    return this.#metadataMap.has(name);\n  }\n\n}\n\nexports.Metadata = Metadata;\n\n/***/ }),\n/* 15 */\n/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {\n\n\n\nObject.defineProperty(exports, \"__esModule\", ({\n  value: true\n}));\nexports.OptionalContentConfig = void 0;\n\nvar _util = __w_pdfjs_require__(1);\n\nclass OptionalContentGroup {\n  constructor(name, intent) {\n    this.visible = true;\n    this.name = name;\n    this.intent = intent;\n  }\n\n}\n\nclass OptionalContentConfig {\n  constructor(data) {\n    this.name = null;\n    this.creator = null;\n    this._order = null;\n    this._groups = new Map();\n\n    if (data === null) {\n      return;\n    }\n\n    this.name = data.name;\n    this.creator = data.creator;\n    this._order = data.order;\n\n    for (const group of data.groups) {\n      this._groups.set(group.id, new OptionalContentGroup(group.name, group.intent));\n    }\n\n    if (data.baseState === \"OFF\") {\n      for (const group of this._groups) {\n        group.visible = false;\n      }\n    }\n\n    for (const on of data.on) {\n      this._groups.get(on).visible = true;\n    }\n\n    for (const off of data.off) {\n      this._groups.get(off).visible = false;\n    }\n  }\n\n  _evaluateVisibilityExpression(array) {\n    const length = array.length;\n\n    if (length < 2) {\n      return true;\n    }\n\n    const operator = array[0];\n\n    for (let i = 1; i < length; i++) {\n      const element = array[i];\n      let state;\n\n      if (Array.isArray(element)) {\n        state = this._evaluateVisibilityExpression(element);\n      } else if (this._groups.has(element)) {\n        state = this._groups.get(element).visible;\n      } else {\n        (0, _util.warn)(`Optional content group not found: ${element}`);\n        return true;\n      }\n\n      switch (operator) {\n        case \"And\":\n          if (!state) {\n            return false;\n          }\n\n          break;\n\n        case \"Or\":\n          if (state) {\n            return true;\n          }\n\n          break;\n\n        case \"Not\":\n          return !state;\n\n        default:\n          return true;\n      }\n    }\n\n    return operator === \"And\";\n  }\n\n  isVisible(group) {\n    if (this._groups.size === 0) {\n      return true;\n    }\n\n    if (!group) {\n      (0, _util.warn)(\"Optional content group not defined.\");\n      return true;\n    }\n\n    if (group.type === \"OCG\") {\n      if (!this._groups.has(group.id)) {\n        (0, _util.warn)(`Optional content group not found: ${group.id}`);\n        return true;\n      }\n\n      return this._groups.get(group.id).visible;\n    } else if (group.type === \"OCMD\") {\n      if (group.expression) {\n        return this._evaluateVisibilityExpression(group.expression);\n      }\n\n      if (!group.policy || group.policy === \"AnyOn\") {\n        for (const id of group.ids) {\n          if (!this._groups.has(id)) {\n            (0, _util.warn)(`Optional content group not found: ${id}`);\n            return true;\n          }\n\n          if (this._groups.get(id).visible) {\n            return true;\n          }\n        }\n\n        return false;\n      } else if (group.policy === \"AllOn\") {\n        for (const id of group.ids) {\n          if (!this._groups.has(id)) {\n            (0, _util.warn)(`Optional content group not found: ${id}`);\n            return true;\n          }\n\n          if (!this._groups.get(id).visible) {\n            return false;\n          }\n        }\n\n        return true;\n      } else if (group.policy === \"AnyOff\") {\n        for (const id of group.ids) {\n          if (!this._groups.has(id)) {\n            (0, _util.warn)(`Optional content group not found: ${id}`);\n            return true;\n          }\n\n          if (!this._groups.get(id).visible) {\n            return true;\n          }\n        }\n\n        return false;\n      } else if (group.policy === \"AllOff\") {\n        for (const id of group.ids) {\n          if (!this._groups.has(id)) {\n            (0, _util.warn)(`Optional content group not found: ${id}`);\n            return true;\n          }\n\n          if (this._groups.get(id).visible) {\n            return false;\n          }\n        }\n\n        return true;\n      }\n\n      (0, _util.warn)(`Unknown optional content policy ${group.policy}.`);\n      return true;\n    }\n\n    (0, _util.warn)(`Unknown group type ${group.type}.`);\n    return true;\n  }\n\n  setVisibility(id, visible = true) {\n    if (!this._groups.has(id)) {\n      (0, _util.warn)(`Optional content group not found: ${id}`);\n      return;\n    }\n\n    this._groups.get(id).visible = !!visible;\n  }\n\n  getOrder() {\n    if (!this._groups.size) {\n      return null;\n    }\n\n    if (this._order) {\n      return this._order.slice();\n    }\n\n    return Array.from(this._groups.keys());\n  }\n\n  getGroups() {\n    return this._groups.size > 0 ? (0, _util.objectFromMap)(this._groups) : null;\n  }\n\n  getGroup(id) {\n    return this._groups.get(id) || null;\n  }\n\n}\n\nexports.OptionalContentConfig = OptionalContentConfig;\n\n/***/ }),\n/* 16 */\n/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {\n\n\n\nObject.defineProperty(exports, \"__esModule\", ({\n  value: true\n}));\nexports.PDFDataTransportStream = void 0;\n\nvar _util = __w_pdfjs_require__(1);\n\nvar _display_utils = __w_pdfjs_require__(5);\n\nclass PDFDataTransportStream {\n  constructor(params, pdfDataRangeTransport) {\n    (0, _util.assert)(pdfDataRangeTransport, 'PDFDataTransportStream - missing required \"pdfDataRangeTransport\" argument.');\n    this._queuedChunks = [];\n    this._progressiveDone = params.progressiveDone || false;\n    this._contentDispositionFilename = params.contentDispositionFilename || null;\n    const initialData = params.initialData;\n\n    if (initialData?.length > 0) {\n      const buffer = new Uint8Array(initialData).buffer;\n\n      this._queuedChunks.push(buffer);\n    }\n\n    this._pdfDataRangeTransport = pdfDataRangeTransport;\n    this._isStreamingSupported = !params.disableStream;\n    this._isRangeSupported = !params.disableRange;\n    this._contentLength = params.length;\n    this._fullRequestReader = null;\n    this._rangeReaders = [];\n\n    this._pdfDataRangeTransport.addRangeListener((begin, chunk) => {\n      this._onReceiveData({\n        begin,\n        chunk\n      });\n    });\n\n    this._pdfDataRangeTransport.addProgressListener((loaded, total) => {\n      this._onProgress({\n        loaded,\n        total\n      });\n    });\n\n    this._pdfDataRangeTransport.addProgressiveReadListener(chunk => {\n      this._onReceiveData({\n        chunk\n      });\n    });\n\n    this._pdfDataRangeTransport.addProgressiveDoneListener(() => {\n      this._onProgressiveDone();\n    });\n\n    this._pdfDataRangeTransport.transportReady();\n  }\n\n  _onReceiveData(args) {\n    const buffer = new Uint8Array(args.chunk).buffer;\n\n    if (args.begin === undefined) {\n      if (this._fullRequestReader) {\n        this._fullRequestReader._enqueue(buffer);\n      } else {\n        this._queuedChunks.push(buffer);\n      }\n    } else {\n      const found = this._rangeReaders.some(function (rangeReader) {\n        if (rangeReader._begin !== args.begin) {\n          return false;\n        }\n\n        rangeReader._enqueue(buffer);\n\n        return true;\n      });\n\n      (0, _util.assert)(found, \"_onReceiveData - no `PDFDataTransportStreamRangeReader` instance found.\");\n    }\n  }\n\n  get _progressiveDataLength() {\n    return this._fullRequestReader?._loaded ?? 0;\n  }\n\n  _onProgress(evt) {\n    if (evt.total === undefined) {\n      const firstReader = this._rangeReaders[0];\n\n      if (firstReader?.onProgress) {\n        firstReader.onProgress({\n          loaded: evt.loaded\n        });\n      }\n    } else {\n      const fullReader = this._fullRequestReader;\n\n      if (fullReader?.onProgress) {\n        fullReader.onProgress({\n          loaded: evt.loaded,\n          total: evt.total\n        });\n      }\n    }\n  }\n\n  _onProgressiveDone() {\n    if (this._fullRequestReader) {\n      this._fullRequestReader.progressiveDone();\n    }\n\n    this._progressiveDone = true;\n  }\n\n  _removeRangeReader(reader) {\n    const i = this._rangeReaders.indexOf(reader);\n\n    if (i >= 0) {\n      this._rangeReaders.splice(i, 1);\n    }\n  }\n\n  getFullReader() {\n    (0, _util.assert)(!this._fullRequestReader, \"PDFDataTransportStream.getFullReader can only be called once.\");\n    const queuedChunks = this._queuedChunks;\n    this._queuedChunks = null;\n    return new PDFDataTransportStreamReader(this, queuedChunks, this._progressiveDone, this._contentDispositionFilename);\n  }\n\n  getRangeReader(begin, end) {\n    if (end <= this._progressiveDataLength) {\n      return null;\n    }\n\n    const reader = new PDFDataTransportStreamRangeReader(this, begin, end);\n\n    this._pdfDataRangeTransport.requestDataRange(begin, end);\n\n    this._rangeReaders.push(reader);\n\n    return reader;\n  }\n\n  cancelAllRequests(reason) {\n    if (this._fullRequestReader) {\n      this._fullRequestReader.cancel(reason);\n    }\n\n    for (const reader of this._rangeReaders.slice(0)) {\n      reader.cancel(reason);\n    }\n\n    this._pdfDataRangeTransport.abort();\n  }\n\n}\n\nexports.PDFDataTransportStream = PDFDataTransportStream;\n\nclass PDFDataTransportStreamReader {\n  constructor(stream, queuedChunks, progressiveDone = false, contentDispositionFilename = null) {\n    this._stream = stream;\n    this._done = progressiveDone || false;\n    this._filename = (0, _display_utils.isPdfFile)(contentDispositionFilename) ? contentDispositionFilename : null;\n    this._queuedChunks = queuedChunks || [];\n    this._loaded = 0;\n\n    for (const chunk of this._queuedChunks) {\n      this._loaded += chunk.byteLength;\n    }\n\n    this._requests = [];\n    this._headersReady = Promise.resolve();\n    stream._fullRequestReader = this;\n    this.onProgress = null;\n  }\n\n  _enqueue(chunk) {\n    if (this._done) {\n      return;\n    }\n\n    if (this._requests.length > 0) {\n      const requestCapability = this._requests.shift();\n\n      requestCapability.resolve({\n        value: chunk,\n        done: false\n      });\n    } else {\n      this._queuedChunks.push(chunk);\n    }\n\n    this._loaded += chunk.byteLength;\n  }\n\n  get headersReady() {\n    return this._headersReady;\n  }\n\n  get filename() {\n    return this._filename;\n  }\n\n  get isRangeSupported() {\n    return this._stream._isRangeSupported;\n  }\n\n  get isStreamingSupported() {\n    return this._stream._isStreamingSupported;\n  }\n\n  get contentLength() {\n    return this._stream._contentLength;\n  }\n\n  async read() {\n    if (this._queuedChunks.length > 0) {\n      const chunk = this._queuedChunks.shift();\n\n      return {\n        value: chunk,\n        done: false\n      };\n    }\n\n    if (this._done) {\n      return {\n        value: undefined,\n        done: true\n      };\n    }\n\n    const requestCapability = (0, _util.createPromiseCapability)();\n\n    this._requests.push(requestCapability);\n\n    return requestCapability.promise;\n  }\n\n  cancel(reason) {\n    this._done = true;\n\n    for (const requestCapability of this._requests) {\n      requestCapability.resolve({\n        value: undefined,\n        done: true\n      });\n    }\n\n    this._requests.length = 0;\n  }\n\n  progressiveDone() {\n    if (this._done) {\n      return;\n    }\n\n    this._done = true;\n  }\n\n}\n\nclass PDFDataTransportStreamRangeReader {\n  constructor(stream, begin, end) {\n    this._stream = stream;\n    this._begin = begin;\n    this._end = end;\n    this._queuedChunk = null;\n    this._requests = [];\n    this._done = false;\n    this.onProgress = null;\n  }\n\n  _enqueue(chunk) {\n    if (this._done) {\n      return;\n    }\n\n    if (this._requests.length === 0) {\n      this._queuedChunk = chunk;\n    } else {\n      const requestsCapability = this._requests.shift();\n\n      requestsCapability.resolve({\n        value: chunk,\n        done: false\n      });\n\n      for (const requestCapability of this._requests) {\n        requestCapability.resolve({\n          value: undefined,\n          done: true\n        });\n      }\n\n      this._requests.length = 0;\n    }\n\n    this._done = true;\n\n    this._stream._removeRangeReader(this);\n  }\n\n  get isStreamingSupported() {\n    return false;\n  }\n\n  async read() {\n    if (this._queuedChunk) {\n      const chunk = this._queuedChunk;\n      this._queuedChunk = null;\n      return {\n        value: chunk,\n        done: false\n      };\n    }\n\n    if (this._done) {\n      return {\n        value: undefined,\n        done: true\n      };\n    }\n\n    const requestCapability = (0, _util.createPromiseCapability)();\n\n    this._requests.push(requestCapability);\n\n    return requestCapability.promise;\n  }\n\n  cancel(reason) {\n    this._done = true;\n\n    for (const requestCapability of this._requests) {\n      requestCapability.resolve({\n        value: undefined,\n        done: true\n      });\n    }\n\n    this._requests.length = 0;\n\n    this._stream._removeRangeReader(this);\n  }\n\n}\n\n/***/ }),\n/* 17 */\n/***/ ((__unused_webpack_module, exports) => {\n\n\n\nObject.defineProperty(exports, \"__esModule\", ({\n  value: true\n}));\nexports.XfaText = void 0;\n\nclass XfaText {\n  static textContent(xfa) {\n    const items = [];\n    const output = {\n      items,\n      styles: Object.create(null)\n    };\n\n    function walk(node) {\n      if (!node) {\n        return;\n      }\n\n      let str = null;\n      const name = node.name;\n\n      if (name === \"#text\") {\n        str = node.value;\n      } else if (!XfaText.shouldBuildText(name)) {\n        return;\n      } else if (node?.attributes?.textContent) {\n        str = node.attributes.textContent;\n      } else if (node.value) {\n        str = node.value;\n      }\n\n      if (str !== null) {\n        items.push({\n          str\n        });\n      }\n\n      if (!node.children) {\n        return;\n      }\n\n      for (const child of node.children) {\n        walk(child);\n      }\n    }\n\n    walk(xfa);\n    return output;\n  }\n\n  static shouldBuildText(name) {\n    return !(name === \"textarea\" || name === \"input\" || name === \"option\" || name === \"select\");\n  }\n\n}\n\nexports.XfaText = XfaText;\n\n/***/ }),\n/* 18 */\n/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {\n\n\n\nObject.defineProperty(exports, \"__esModule\", ({\n  value: true\n}));\nexports.AnnotationLayer = void 0;\n\nvar _util = __w_pdfjs_require__(1);\n\nvar _display_utils = __w_pdfjs_require__(5);\n\nvar _annotation_storage = __w_pdfjs_require__(9);\n\nvar _scripting_utils = __w_pdfjs_require__(19);\n\nvar _xfa_layer = __w_pdfjs_require__(20);\n\nconst DEFAULT_TAB_INDEX = 1000;\nconst GetElementsByNameSet = new WeakSet();\n\nfunction getRectDims(rect) {\n  return {\n    width: rect[2] - rect[0],\n    height: rect[3] - rect[1]\n  };\n}\n\nclass AnnotationElementFactory {\n  static create(parameters) {\n    const subtype = parameters.data.annotationType;\n\n    switch (subtype) {\n      case _util.AnnotationType.LINK:\n        return new LinkAnnotationElement(parameters);\n\n      case _util.AnnotationType.TEXT:\n        return new TextAnnotationElement(parameters);\n\n      case _util.AnnotationType.WIDGET:\n        const fieldType = parameters.data.fieldType;\n\n        switch (fieldType) {\n          case \"Tx\":\n            return new TextWidgetAnnotationElement(parameters);\n\n          case \"Btn\":\n            if (parameters.data.radioButton) {\n              return new RadioButtonWidgetAnnotationElement(parameters);\n            } else if (parameters.data.checkBox) {\n              return new CheckboxWidgetAnnotationElement(parameters);\n            }\n\n            return new PushButtonWidgetAnnotationElement(parameters);\n\n          case \"Ch\":\n            return new ChoiceWidgetAnnotationElement(parameters);\n        }\n\n        return new WidgetAnnotationElement(parameters);\n\n      case _util.AnnotationType.POPUP:\n        return new PopupAnnotationElement(parameters);\n\n      case _util.AnnotationType.FREETEXT:\n        return new FreeTextAnnotationElement(parameters);\n\n      case _util.AnnotationType.LINE:\n        return new LineAnnotationElement(parameters);\n\n      case _util.AnnotationType.SQUARE:\n        return new SquareAnnotationElement(parameters);\n\n      case _util.AnnotationType.CIRCLE:\n        return new CircleAnnotationElement(parameters);\n\n      case _util.AnnotationType.POLYLINE:\n        return new PolylineAnnotationElement(parameters);\n\n      case _util.AnnotationType.CARET:\n        return new CaretAnnotationElement(parameters);\n\n      case _util.AnnotationType.INK:\n        return new InkAnnotationElement(parameters);\n\n      case _util.AnnotationType.POLYGON:\n        return new PolygonAnnotationElement(parameters);\n\n      case _util.AnnotationType.HIGHLIGHT:\n        return new HighlightAnnotationElement(parameters);\n\n      case _util.AnnotationType.UNDERLINE:\n        return new UnderlineAnnotationElement(parameters);\n\n      case _util.AnnotationType.SQUIGGLY:\n        return new SquigglyAnnotationElement(parameters);\n\n      case _util.AnnotationType.STRIKEOUT:\n        return new StrikeOutAnnotationElement(parameters);\n\n      case _util.AnnotationType.STAMP:\n        return new StampAnnotationElement(parameters);\n\n      case _util.AnnotationType.FILEATTACHMENT:\n        return new FileAttachmentAnnotationElement(parameters);\n\n      default:\n        return new AnnotationElement(parameters);\n    }\n  }\n\n}\n\nclass AnnotationElement {\n  constructor(parameters, {\n    isRenderable = false,\n    ignoreBorder = false,\n    createQuadrilaterals = false\n  } = {}) {\n    this.isRenderable = isRenderable;\n    this.data = parameters.data;\n    this.layer = parameters.layer;\n    this.page = parameters.page;\n    this.viewport = parameters.viewport;\n    this.linkService = parameters.linkService;\n    this.downloadManager = parameters.downloadManager;\n    this.imageResourcesPath = parameters.imageResourcesPath;\n    this.renderForms = parameters.renderForms;\n    this.svgFactory = parameters.svgFactory;\n    this.annotationStorage = parameters.annotationStorage;\n    this.enableScripting = parameters.enableScripting;\n    this.hasJSActions = parameters.hasJSActions;\n    this._fieldObjects = parameters.fieldObjects;\n    this._mouseState = parameters.mouseState;\n\n    if (isRenderable) {\n      this.container = this._createContainer(ignoreBorder);\n    }\n\n    if (createQuadrilaterals) {\n      this.quadrilaterals = this._createQuadrilaterals(ignoreBorder);\n    }\n  }\n\n  _createContainer(ignoreBorder = false) {\n    const data = this.data,\n          page = this.page,\n          viewport = this.viewport;\n    const container = document.createElement(\"section\");\n    let {\n      width,\n      height\n    } = getRectDims(data.rect);\n    container.setAttribute(\"data-annotation-id\", data.id);\n\n    const rect = _util.Util.normalizeRect([data.rect[0], page.view[3] - data.rect[1] + page.view[1], data.rect[2], page.view[3] - data.rect[3] + page.view[1]]);\n\n    if (data.hasOwnCanvas) {\n      const transform = viewport.transform.slice();\n\n      const [scaleX, scaleY] = _util.Util.singularValueDecompose2dScale(transform);\n\n      width = Math.ceil(width * scaleX);\n      height = Math.ceil(height * scaleY);\n      rect[0] *= scaleX;\n      rect[1] *= scaleY;\n\n      for (let i = 0; i < 4; i++) {\n        transform[i] = Math.sign(transform[i]);\n      }\n\n      container.style.transform = `matrix(${transform.join(\",\")})`;\n    } else {\n      container.style.transform = `matrix(${viewport.transform.join(\",\")})`;\n    }\n\n    container.style.transformOrigin = `${-rect[0]}px ${-rect[1]}px`;\n\n    if (!ignoreBorder && data.borderStyle.width > 0) {\n      container.style.borderWidth = `${data.borderStyle.width}px`;\n\n      if (data.borderStyle.style !== _util.AnnotationBorderStyleType.UNDERLINE) {\n        width -= 2 * data.borderStyle.width;\n        height -= 2 * data.borderStyle.width;\n      }\n\n      const horizontalRadius = data.borderStyle.horizontalCornerRadius;\n      const verticalRadius = data.borderStyle.verticalCornerRadius;\n\n      if (horizontalRadius > 0 || verticalRadius > 0) {\n        const radius = `${horizontalRadius}px / ${verticalRadius}px`;\n        container.style.borderRadius = radius;\n      }\n\n      switch (data.borderStyle.style) {\n        case _util.AnnotationBorderStyleType.SOLID:\n          container.style.borderStyle = \"solid\";\n          break;\n\n        case _util.AnnotationBorderStyleType.DASHED:\n          container.style.borderStyle = \"dashed\";\n          break;\n\n        case _util.AnnotationBorderStyleType.BEVELED:\n          (0, _util.warn)(\"Unimplemented border style: beveled\");\n          break;\n\n        case _util.AnnotationBorderStyleType.INSET:\n          (0, _util.warn)(\"Unimplemented border style: inset\");\n          break;\n\n        case _util.AnnotationBorderStyleType.UNDERLINE:\n          container.style.borderBottomStyle = \"solid\";\n          break;\n\n        default:\n          break;\n      }\n\n      const borderColor = data.borderColor || data.color || null;\n\n      if (borderColor) {\n        container.style.borderColor = _util.Util.makeHexColor(data.color[0] | 0, data.color[1] | 0, data.color[2] | 0);\n      } else {\n        container.style.borderWidth = 0;\n      }\n    }\n\n    container.style.left = `${rect[0]}px`;\n    container.style.top = `${rect[1]}px`;\n\n    if (data.hasOwnCanvas) {\n      container.style.width = container.style.height = \"auto\";\n    } else {\n      container.style.width = `${width}px`;\n      container.style.height = `${height}px`;\n    }\n\n    return container;\n  }\n\n  _createQuadrilaterals(ignoreBorder = false) {\n    if (!this.data.quadPoints) {\n      return null;\n    }\n\n    const quadrilaterals = [];\n    const savedRect = this.data.rect;\n\n    for (const quadPoint of this.data.quadPoints) {\n      this.data.rect = [quadPoint[2].x, quadPoint[2].y, quadPoint[1].x, quadPoint[1].y];\n      quadrilaterals.push(this._createContainer(ignoreBorder));\n    }\n\n    this.data.rect = savedRect;\n    return quadrilaterals;\n  }\n\n  _createPopup(trigger, data) {\n    let container = this.container;\n\n    if (this.quadrilaterals) {\n      trigger = trigger || this.quadrilaterals;\n      container = this.quadrilaterals[0];\n    }\n\n    if (!trigger) {\n      trigger = document.createElement(\"div\");\n      trigger.style.height = container.style.height;\n      trigger.style.width = container.style.width;\n      container.appendChild(trigger);\n    }\n\n    const popupElement = new PopupElement({\n      container,\n      trigger,\n      color: data.color,\n      titleObj: data.titleObj,\n      modificationDate: data.modificationDate,\n      contentsObj: data.contentsObj,\n      richText: data.richText,\n      hideWrapper: true\n    });\n    const popup = popupElement.render();\n    popup.style.left = container.style.width;\n    container.appendChild(popup);\n  }\n\n  _renderQuadrilaterals(className) {\n    for (const quadrilateral of this.quadrilaterals) {\n      quadrilateral.className = className;\n    }\n\n    return this.quadrilaterals;\n  }\n\n  render() {\n    (0, _util.unreachable)(\"Abstract method `AnnotationElement.render` called\");\n  }\n\n  _getElementsByName(name, skipId = null) {\n    const fields = [];\n\n    if (this._fieldObjects) {\n      const fieldObj = this._fieldObjects[name];\n\n      if (fieldObj) {\n        for (const {\n          page,\n          id,\n          exportValues\n        } of fieldObj) {\n          if (page === -1) {\n            continue;\n          }\n\n          if (id === skipId) {\n            continue;\n          }\n\n          const exportValue = typeof exportValues === \"string\" ? exportValues : null;\n          const domElement = document.getElementById(id);\n\n          if (domElement && !GetElementsByNameSet.has(domElement)) {\n            (0, _util.warn)(`_getElementsByName - element not allowed: ${id}`);\n            continue;\n          }\n\n          fields.push({\n            id,\n            exportValue,\n            domElement\n          });\n        }\n      }\n\n      return fields;\n    }\n\n    for (const domElement of document.getElementsByName(name)) {\n      const {\n        id,\n        exportValue\n      } = domElement;\n\n      if (id === skipId) {\n        continue;\n      }\n\n      if (!GetElementsByNameSet.has(domElement)) {\n        continue;\n      }\n\n      fields.push({\n        id,\n        exportValue,\n        domElement\n      });\n    }\n\n    return fields;\n  }\n\n  static get platform() {\n    const platform = typeof navigator !== \"undefined\" ? navigator.platform : \"\";\n    return (0, _util.shadow)(this, \"platform\", {\n      isWin: platform.includes(\"Win\"),\n      isMac: platform.includes(\"Mac\")\n    });\n  }\n\n}\n\nclass LinkAnnotationElement extends AnnotationElement {\n  constructor(parameters, options = null) {\n    const isRenderable = !!(parameters.data.url || parameters.data.dest || parameters.data.action || parameters.data.isTooltipOnly || parameters.data.resetForm || parameters.data.actions && (parameters.data.actions.Action || parameters.data.actions[\"Mouse Up\"] || parameters.data.actions[\"Mouse Down\"]));\n    super(parameters, {\n      isRenderable,\n      ignoreBorder: !!options?.ignoreBorder,\n      createQuadrilaterals: true\n    });\n  }\n\n  render() {\n    const {\n      data,\n      linkService\n    } = this;\n    const link = document.createElement(\"a\");\n\n    if (data.url) {\n      linkService.addLinkAttributes(link, data.url, data.newWindow);\n    } else if (data.action) {\n      this._bindNamedAction(link, data.action);\n    } else if (data.dest) {\n      this._bindLink(link, data.dest);\n    } else {\n      let hasClickAction = false;\n\n      if (data.actions && (data.actions.Action || data.actions[\"Mouse Up\"] || data.actions[\"Mouse Down\"]) && this.enableScripting && this.hasJSActions) {\n        hasClickAction = true;\n\n        this._bindJSAction(link, data);\n      }\n\n      if (data.resetForm) {\n        this._bindResetFormAction(link, data.resetForm);\n      } else if (!hasClickAction) {\n        this._bindLink(link, \"\");\n      }\n    }\n\n    if (this.quadrilaterals) {\n      return this._renderQuadrilaterals(\"linkAnnotation\").map((quadrilateral, index) => {\n        const linkElement = index === 0 ? link : link.cloneNode();\n        quadrilateral.appendChild(linkElement);\n        return quadrilateral;\n      });\n    }\n\n    this.container.className = \"linkAnnotation\";\n    this.container.appendChild(link);\n    return this.container;\n  }\n\n  _bindLink(link, destination) {\n    link.href = this.linkService.getDestinationHash(destination);\n\n    link.onclick = () => {\n      if (destination) {\n        this.linkService.goToDestination(destination);\n      }\n\n      return false;\n    };\n\n    if (destination || destination === \"\") {\n      link.className = \"internalLink\";\n    }\n  }\n\n  _bindNamedAction(link, action) {\n    link.href = this.linkService.getAnchorUrl(\"\");\n\n    link.onclick = () => {\n      this.linkService.executeNamedAction(action);\n      return false;\n    };\n\n    link.className = \"internalLink\";\n  }\n\n  _bindJSAction(link, data) {\n    link.href = this.linkService.getAnchorUrl(\"\");\n    const map = new Map([[\"Action\", \"onclick\"], [\"Mouse Up\", \"onmouseup\"], [\"Mouse Down\", \"onmousedown\"]]);\n\n    for (const name of Object.keys(data.actions)) {\n      const jsName = map.get(name);\n\n      if (!jsName) {\n        continue;\n      }\n\n      link[jsName] = () => {\n        this.linkService.eventBus?.dispatch(\"dispatcheventinsandbox\", {\n          source: this,\n          detail: {\n            id: data.id,\n            name\n          }\n        });\n        return false;\n      };\n    }\n\n    if (!link.onclick) {\n      link.onclick = () => false;\n    }\n\n    link.className = \"internalLink\";\n  }\n\n  _bindResetFormAction(link, resetForm) {\n    const otherClickAction = link.onclick;\n\n    if (!otherClickAction) {\n      link.href = this.linkService.getAnchorUrl(\"\");\n    }\n\n    link.className = \"internalLink\";\n\n    if (!this._fieldObjects) {\n      (0, _util.warn)(`_bindResetFormAction - \"resetForm\" action not supported, ` + \"ensure that the `fieldObjects` parameter is provided.\");\n\n      if (!otherClickAction) {\n        link.onclick = () => false;\n      }\n\n      return;\n    }\n\n    link.onclick = () => {\n      if (otherClickAction) {\n        otherClickAction();\n      }\n\n      const {\n        fields: resetFormFields,\n        refs: resetFormRefs,\n        include\n      } = resetForm;\n      const allFields = [];\n\n      if (resetFormFields.length !== 0 || resetFormRefs.length !== 0) {\n        const fieldIds = new Set(resetFormRefs);\n\n        for (const fieldName of resetFormFields) {\n          const fields = this._fieldObjects[fieldName] || [];\n\n          for (const {\n            id\n          } of fields) {\n            fieldIds.add(id);\n          }\n        }\n\n        for (const fields of Object.values(this._fieldObjects)) {\n          for (const field of fields) {\n            if (fieldIds.has(field.id) === include) {\n              allFields.push(field);\n            }\n          }\n        }\n      } else {\n        for (const fields of Object.values(this._fieldObjects)) {\n          allFields.push(...fields);\n        }\n      }\n\n      const storage = this.annotationStorage;\n      const allIds = [];\n\n      for (const field of allFields) {\n        const {\n          id\n        } = field;\n        allIds.push(id);\n\n        switch (field.type) {\n          case \"text\":\n            {\n              const value = field.defaultValue || \"\";\n              storage.setValue(id, {\n                value,\n                valueAsString: value\n              });\n              break;\n            }\n\n          case \"checkbox\":\n          case \"radiobutton\":\n            {\n              const value = field.defaultValue === field.exportValues;\n              storage.setValue(id, {\n                value\n              });\n              break;\n            }\n\n          case \"combobox\":\n          case \"listbox\":\n            {\n              const value = field.defaultValue || \"\";\n              storage.setValue(id, {\n                value\n              });\n              break;\n            }\n\n          default:\n            continue;\n        }\n\n        const domElement = document.getElementById(id);\n\n        if (!domElement || !GetElementsByNameSet.has(domElement)) {\n          continue;\n        }\n\n        domElement.dispatchEvent(new Event(\"resetform\"));\n      }\n\n      if (this.enableScripting) {\n        this.linkService.eventBus?.dispatch(\"dispatcheventinsandbox\", {\n          source: this,\n          detail: {\n            id: \"app\",\n            ids: allIds,\n            name: \"ResetForm\"\n          }\n        });\n      }\n\n      return false;\n    };\n  }\n\n}\n\nclass TextAnnotationElement extends AnnotationElement {\n  constructor(parameters) {\n    const isRenderable = !!(parameters.data.hasPopup || parameters.data.titleObj?.str || parameters.data.contentsObj?.str || parameters.data.richText?.str);\n    super(parameters, {\n      isRenderable\n    });\n  }\n\n  render() {\n    this.container.className = \"textAnnotation\";\n    const image = document.createElement(\"img\");\n    image.style.height = this.container.style.height;\n    image.style.width = this.container.style.width;\n    image.src = this.imageResourcesPath + \"annotation-\" + this.data.name.toLowerCase() + \".svg\";\n    image.alt = \"[{{type}} Annotation]\";\n    image.dataset.l10nId = \"text_annotation_type\";\n    image.dataset.l10nArgs = JSON.stringify({\n      type: this.data.name\n    });\n\n    if (!this.data.hasPopup) {\n      this._createPopup(image, this.data);\n    }\n\n    this.container.appendChild(image);\n    return this.container;\n  }\n\n}\n\nclass WidgetAnnotationElement extends AnnotationElement {\n  render() {\n    if (this.data.alternativeText) {\n      this.container.title = this.data.alternativeText;\n    }\n\n    return this.container;\n  }\n\n  _getKeyModifier(event) {\n    const {\n      isWin,\n      isMac\n    } = AnnotationElement.platform;\n    return isWin && event.ctrlKey || isMac && event.metaKey;\n  }\n\n  _setEventListener(element, baseName, eventName, valueGetter) {\n    if (baseName.includes(\"mouse\")) {\n      element.addEventListener(baseName, event => {\n        this.linkService.eventBus?.dispatch(\"dispatcheventinsandbox\", {\n          source: this,\n          detail: {\n            id: this.data.id,\n            name: eventName,\n            value: valueGetter(event),\n            shift: event.shiftKey,\n            modifier: this._getKeyModifier(event)\n          }\n        });\n      });\n    } else {\n      element.addEventListener(baseName, event => {\n        this.linkService.eventBus?.dispatch(\"dispatcheventinsandbox\", {\n          source: this,\n          detail: {\n            id: this.data.id,\n            name: eventName,\n            value: valueGetter(event)\n          }\n        });\n      });\n    }\n  }\n\n  _setEventListeners(element, names, getter) {\n    for (const [baseName, eventName] of names) {\n      if (eventName === \"Action\" || this.data.actions?.[eventName]) {\n        this._setEventListener(element, baseName, eventName, getter);\n      }\n    }\n  }\n\n  _setBackgroundColor(element) {\n    const color = this.data.backgroundColor || null;\n    element.style.backgroundColor = color === null ? \"transparent\" : _util.Util.makeHexColor(color[0], color[1], color[2]);\n  }\n\n  _dispatchEventFromSandbox(actions, jsEvent) {\n    const setColor = (jsName, styleName, event) => {\n      const color = event.detail[jsName];\n      event.target.style[styleName] = _scripting_utils.ColorConverters[`${color[0]}_HTML`](color.slice(1));\n    };\n\n    const commonActions = {\n      display: event => {\n        const hidden = event.detail.display % 2 === 1;\n        event.target.style.visibility = hidden ? \"hidden\" : \"visible\";\n        this.annotationStorage.setValue(this.data.id, {\n          hidden,\n          print: event.detail.display === 0 || event.detail.display === 3\n        });\n      },\n      print: event => {\n        this.annotationStorage.setValue(this.data.id, {\n          print: event.detail.print\n        });\n      },\n      hidden: event => {\n        event.target.style.visibility = event.detail.hidden ? \"hidden\" : \"visible\";\n        this.annotationStorage.setValue(this.data.id, {\n          hidden: event.detail.hidden\n        });\n      },\n      focus: event => {\n        setTimeout(() => event.target.focus({\n          preventScroll: false\n        }), 0);\n      },\n      userName: event => {\n        event.target.title = event.detail.userName;\n      },\n      readonly: event => {\n        if (event.detail.readonly) {\n          event.target.setAttribute(\"readonly\", \"\");\n        } else {\n          event.target.removeAttribute(\"readonly\");\n        }\n      },\n      required: event => {\n        if (event.detail.required) {\n          event.target.setAttribute(\"required\", \"\");\n        } else {\n          event.target.removeAttribute(\"required\");\n        }\n      },\n      bgColor: event => {\n        setColor(\"bgColor\", \"backgroundColor\", event);\n      },\n      fillColor: event => {\n        setColor(\"fillColor\", \"backgroundColor\", event);\n      },\n      fgColor: event => {\n        setColor(\"fgColor\", \"color\", event);\n      },\n      textColor: event => {\n        setColor(\"textColor\", \"color\", event);\n      },\n      borderColor: event => {\n        setColor(\"borderColor\", \"borderColor\", event);\n      },\n      strokeColor: event => {\n        setColor(\"strokeColor\", \"borderColor\", event);\n      }\n    };\n\n    for (const name of Object.keys(jsEvent.detail)) {\n      const action = actions[name] || commonActions[name];\n\n      if (action) {\n        action(jsEvent);\n      }\n    }\n  }\n\n}\n\nclass TextWidgetAnnotationElement extends WidgetAnnotationElement {\n  constructor(parameters) {\n    const isRenderable = parameters.renderForms || !parameters.data.hasAppearance && !!parameters.data.fieldValue;\n    super(parameters, {\n      isRenderable\n    });\n  }\n\n  setPropertyOnSiblings(base, key, value, keyInStorage) {\n    const storage = this.annotationStorage;\n\n    for (const element of this._getElementsByName(base.name, base.id)) {\n      if (element.domElement) {\n        element.domElement[key] = value;\n      }\n\n      storage.setValue(element.id, {\n        [keyInStorage]: value\n      });\n    }\n  }\n\n  render() {\n    const storage = this.annotationStorage;\n    const id = this.data.id;\n    this.container.className = \"textWidgetAnnotation\";\n    let element = null;\n\n    if (this.renderForms) {\n      const storedData = storage.getValue(id, {\n        value: this.data.fieldValue,\n        valueAsString: this.data.fieldValue\n      });\n      const textContent = storedData.valueAsString || storedData.value || \"\";\n      const elementData = {\n        userValue: null,\n        formattedValue: null\n      };\n\n      if (this.data.multiLine) {\n        element = document.createElement(\"textarea\");\n        element.textContent = textContent;\n      } else {\n        element = document.createElement(\"input\");\n        element.type = \"text\";\n        element.setAttribute(\"value\", textContent);\n      }\n\n      GetElementsByNameSet.add(element);\n      element.disabled = this.data.readOnly;\n      element.name = this.data.fieldName;\n      element.tabIndex = DEFAULT_TAB_INDEX;\n      elementData.userValue = textContent;\n      element.setAttribute(\"id\", id);\n      element.addEventListener(\"input\", event => {\n        storage.setValue(id, {\n          value: event.target.value\n        });\n        this.setPropertyOnSiblings(element, \"value\", event.target.value, \"value\");\n      });\n      element.addEventListener(\"resetform\", event => {\n        const defaultValue = this.data.defaultFieldValue || \"\";\n        element.value = elementData.userValue = defaultValue;\n        delete elementData.formattedValue;\n      });\n\n      let blurListener = event => {\n        if (elementData.formattedValue) {\n          event.target.value = elementData.formattedValue;\n        }\n\n        event.target.scrollLeft = 0;\n      };\n\n      if (this.enableScripting && this.hasJSActions) {\n        element.addEventListener(\"focus\", event => {\n          if (elementData.userValue) {\n            event.target.value = elementData.userValue;\n          }\n        });\n        element.addEventListener(\"updatefromsandbox\", jsEvent => {\n          const actions = {\n            value(event) {\n              elementData.userValue = event.detail.value || \"\";\n              storage.setValue(id, {\n                value: elementData.userValue.toString()\n              });\n\n              if (!elementData.formattedValue) {\n                event.target.value = elementData.userValue;\n              }\n            },\n\n            valueAsString(event) {\n              elementData.formattedValue = event.detail.valueAsString || \"\";\n\n              if (event.target !== document.activeElement) {\n                event.target.value = elementData.formattedValue;\n              }\n\n              storage.setValue(id, {\n                formattedValue: elementData.formattedValue\n              });\n            },\n\n            selRange(event) {\n              const [selStart, selEnd] = event.detail.selRange;\n\n              if (selStart >= 0 && selEnd < event.target.value.length) {\n                event.target.setSelectionRange(selStart, selEnd);\n              }\n            }\n\n          };\n\n          this._dispatchEventFromSandbox(actions, jsEvent);\n        });\n        element.addEventListener(\"keydown\", event => {\n          let commitKey = -1;\n\n          if (event.key === \"Escape\") {\n            commitKey = 0;\n          } else if (event.key === \"Enter\") {\n            commitKey = 2;\n          } else if (event.key === \"Tab\") {\n            commitKey = 3;\n          }\n\n          if (commitKey === -1) {\n            return;\n          }\n\n          elementData.userValue = event.target.value;\n          this.linkService.eventBus?.dispatch(\"dispatcheventinsandbox\", {\n            source: this,\n            detail: {\n              id,\n              name: \"Keystroke\",\n              value: event.target.value,\n              willCommit: true,\n              commitKey,\n              selStart: event.target.selectionStart,\n              selEnd: event.target.selectionEnd\n            }\n          });\n        });\n        const _blurListener = blurListener;\n        blurListener = null;\n        element.addEventListener(\"blur\", event => {\n          elementData.userValue = event.target.value;\n\n          if (this._mouseState.isDown) {\n            this.linkService.eventBus?.dispatch(\"dispatcheventinsandbox\", {\n              source: this,\n              detail: {\n                id,\n                name: \"Keystroke\",\n                value: event.target.value,\n                willCommit: true,\n                commitKey: 1,\n                selStart: event.target.selectionStart,\n                selEnd: event.target.selectionEnd\n              }\n            });\n          }\n\n          _blurListener(event);\n        });\n\n        if (this.data.actions?.Keystroke) {\n          element.addEventListener(\"beforeinput\", event => {\n            elementData.formattedValue = \"\";\n            const {\n              data,\n              target\n            } = event;\n            const {\n              value,\n              selectionStart,\n              selectionEnd\n            } = target;\n            this.linkService.eventBus?.dispatch(\"dispatcheventinsandbox\", {\n              source: this,\n              detail: {\n                id,\n                name: \"Keystroke\",\n                value,\n                change: data,\n                willCommit: false,\n                selStart: selectionStart,\n                selEnd: selectionEnd\n              }\n            });\n          });\n        }\n\n        this._setEventListeners(element, [[\"focus\", \"Focus\"], [\"blur\", \"Blur\"], [\"mousedown\", \"Mouse Down\"], [\"mouseenter\", \"Mouse Enter\"], [\"mouseleave\", \"Mouse Exit\"], [\"mouseup\", \"Mouse Up\"]], event => event.target.value);\n      }\n\n      if (blurListener) {\n        element.addEventListener(\"blur\", blurListener);\n      }\n\n      if (this.data.maxLen !== null) {\n        element.maxLength = this.data.maxLen;\n      }\n\n      if (this.data.comb) {\n        const fieldWidth = this.data.rect[2] - this.data.rect[0];\n        const combWidth = fieldWidth / this.data.maxLen;\n        element.classList.add(\"comb\");\n        element.style.letterSpacing = `calc(${combWidth}px - 1ch)`;\n      }\n    } else {\n      element = document.createElement(\"div\");\n      element.textContent = this.data.fieldValue;\n      element.style.verticalAlign = \"middle\";\n      element.style.display = \"table-cell\";\n    }\n\n    this._setTextStyle(element);\n\n    this._setBackgroundColor(element);\n\n    this.container.appendChild(element);\n    return this.container;\n  }\n\n  _setTextStyle(element) {\n    const TEXT_ALIGNMENT = [\"left\", \"center\", \"right\"];\n    const {\n      fontSize,\n      fontColor\n    } = this.data.defaultAppearanceData;\n    const style = element.style;\n\n    if (fontSize) {\n      style.fontSize = `${fontSize}px`;\n    }\n\n    style.color = _util.Util.makeHexColor(fontColor[0], fontColor[1], fontColor[2]);\n\n    if (this.data.textAlignment !== null) {\n      style.textAlign = TEXT_ALIGNMENT[this.data.textAlignment];\n    }\n  }\n\n}\n\nclass CheckboxWidgetAnnotationElement extends WidgetAnnotationElement {\n  constructor(parameters) {\n    super(parameters, {\n      isRenderable: parameters.renderForms\n    });\n  }\n\n  render() {\n    const storage = this.annotationStorage;\n    const data = this.data;\n    const id = data.id;\n    let value = storage.getValue(id, {\n      value: data.exportValue === data.fieldValue\n    }).value;\n\n    if (typeof value === \"string\") {\n      value = value !== \"Off\";\n      storage.setValue(id, {\n        value\n      });\n    }\n\n    this.container.className = \"buttonWidgetAnnotation checkBox\";\n    const element = document.createElement(\"input\");\n    GetElementsByNameSet.add(element);\n    element.disabled = data.readOnly;\n    element.type = \"checkbox\";\n    element.name = data.fieldName;\n\n    if (value) {\n      element.setAttribute(\"checked\", true);\n    }\n\n    element.setAttribute(\"id\", id);\n    element.setAttribute(\"exportValue\", data.exportValue);\n    element.tabIndex = DEFAULT_TAB_INDEX;\n    element.addEventListener(\"change\", event => {\n      const {\n        name,\n        checked\n      } = event.target;\n\n      for (const checkbox of this._getElementsByName(name, id)) {\n        const curChecked = checked && checkbox.exportValue === data.exportValue;\n\n        if (checkbox.domElement) {\n          checkbox.domElement.checked = curChecked;\n        }\n\n        storage.setValue(checkbox.id, {\n          value: curChecked\n        });\n      }\n\n      storage.setValue(id, {\n        value: checked\n      });\n    });\n    element.addEventListener(\"resetform\", event => {\n      const defaultValue = data.defaultFieldValue || \"Off\";\n      event.target.checked = defaultValue === data.exportValue;\n    });\n\n    if (this.enableScripting && this.hasJSActions) {\n      element.addEventListener(\"updatefromsandbox\", jsEvent => {\n        const actions = {\n          value(event) {\n            event.target.checked = event.detail.value !== \"Off\";\n            storage.setValue(id, {\n              value: event.target.checked\n            });\n          }\n\n        };\n\n        this._dispatchEventFromSandbox(actions, jsEvent);\n      });\n\n      this._setEventListeners(element, [[\"change\", \"Validate\"], [\"change\", \"Action\"], [\"focus\", \"Focus\"], [\"blur\", \"Blur\"], [\"mousedown\", \"Mouse Down\"], [\"mouseenter\", \"Mouse Enter\"], [\"mouseleave\", \"Mouse Exit\"], [\"mouseup\", \"Mouse Up\"]], event => event.target.checked);\n    }\n\n    this._setBackgroundColor(element);\n\n    this.container.appendChild(element);\n    return this.container;\n  }\n\n}\n\nclass RadioButtonWidgetAnnotationElement extends WidgetAnnotationElement {\n  constructor(parameters) {\n    super(parameters, {\n      isRenderable: parameters.renderForms\n    });\n  }\n\n  render() {\n    this.container.className = \"buttonWidgetAnnotation radioButton\";\n    const storage = this.annotationStorage;\n    const data = this.data;\n    const id = data.id;\n    let value = storage.getValue(id, {\n      value: data.fieldValue === data.buttonValue\n    }).value;\n\n    if (typeof value === \"string\") {\n      value = value !== data.buttonValue;\n      storage.setValue(id, {\n        value\n      });\n    }\n\n    const element = document.createElement(\"input\");\n    GetElementsByNameSet.add(element);\n    element.disabled = data.readOnly;\n    element.type = \"radio\";\n    element.name = data.fieldName;\n\n    if (value) {\n      element.setAttribute(\"checked\", true);\n    }\n\n    element.setAttribute(\"id\", id);\n    element.tabIndex = DEFAULT_TAB_INDEX;\n    element.addEventListener(\"change\", event => {\n      const {\n        name,\n        checked\n      } = event.target;\n\n      for (const radio of this._getElementsByName(name, id)) {\n        storage.setValue(radio.id, {\n          value: false\n        });\n      }\n\n      storage.setValue(id, {\n        value: checked\n      });\n    });\n    element.addEventListener(\"resetform\", event => {\n      const defaultValue = data.defaultFieldValue;\n      event.target.checked = defaultValue !== null && defaultValue !== undefined && defaultValue === data.buttonValue;\n    });\n\n    if (this.enableScripting && this.hasJSActions) {\n      const pdfButtonValue = data.buttonValue;\n      element.addEventListener(\"updatefromsandbox\", jsEvent => {\n        const actions = {\n          value: event => {\n            const checked = pdfButtonValue === event.detail.value;\n\n            for (const radio of this._getElementsByName(event.target.name)) {\n              const curChecked = checked && radio.id === id;\n\n              if (radio.domElement) {\n                radio.domElement.checked = curChecked;\n              }\n\n              storage.setValue(radio.id, {\n                value: curChecked\n              });\n            }\n          }\n        };\n\n        this._dispatchEventFromSandbox(actions, jsEvent);\n      });\n\n      this._setEventListeners(element, [[\"change\", \"Validate\"], [\"change\", \"Action\"], [\"focus\", \"Focus\"], [\"blur\", \"Blur\"], [\"mousedown\", \"Mouse Down\"], [\"mouseenter\", \"Mouse Enter\"], [\"mouseleave\", \"Mouse Exit\"], [\"mouseup\", \"Mouse Up\"]], event => event.target.checked);\n    }\n\n    this._setBackgroundColor(element);\n\n    this.container.appendChild(element);\n    return this.container;\n  }\n\n}\n\nclass PushButtonWidgetAnnotationElement extends LinkAnnotationElement {\n  constructor(parameters) {\n    super(parameters, {\n      ignoreBorder: parameters.data.hasAppearance\n    });\n  }\n\n  render() {\n    const container = super.render();\n    container.className = \"buttonWidgetAnnotation pushButton\";\n\n    if (this.data.alternativeText) {\n      container.title = this.data.alternativeText;\n    }\n\n    return container;\n  }\n\n}\n\nclass ChoiceWidgetAnnotationElement extends WidgetAnnotationElement {\n  constructor(parameters) {\n    super(parameters, {\n      isRenderable: parameters.renderForms\n    });\n  }\n\n  render() {\n    this.container.className = \"choiceWidgetAnnotation\";\n    const storage = this.annotationStorage;\n    const id = this.data.id;\n    storage.getValue(id, {\n      value: this.data.fieldValue.length > 0 ? this.data.fieldValue[0] : undefined\n    });\n    let {\n      fontSize\n    } = this.data.defaultAppearanceData;\n\n    if (!fontSize) {\n      fontSize = 9;\n    }\n\n    const fontSizeStyle = `calc(${fontSize}px * var(--zoom-factor))`;\n    const selectElement = document.createElement(\"select\");\n    GetElementsByNameSet.add(selectElement);\n    selectElement.disabled = this.data.readOnly;\n    selectElement.name = this.data.fieldName;\n    selectElement.setAttribute(\"id\", id);\n    selectElement.tabIndex = DEFAULT_TAB_INDEX;\n    selectElement.style.fontSize = `${fontSize}px`;\n\n    if (!this.data.combo) {\n      selectElement.size = this.data.options.length;\n\n      if (this.data.multiSelect) {\n        selectElement.multiple = true;\n      }\n    }\n\n    selectElement.addEventListener(\"resetform\", event => {\n      const defaultValue = this.data.defaultFieldValue;\n\n      for (const option of selectElement.options) {\n        option.selected = option.value === defaultValue;\n      }\n    });\n\n    for (const option of this.data.options) {\n      const optionElement = document.createElement(\"option\");\n      optionElement.textContent = option.displayValue;\n      optionElement.value = option.exportValue;\n\n      if (this.data.combo) {\n        optionElement.style.fontSize = fontSizeStyle;\n      }\n\n      if (this.data.fieldValue.includes(option.exportValue)) {\n        optionElement.setAttribute(\"selected\", true);\n      }\n\n      selectElement.appendChild(optionElement);\n    }\n\n    const getValue = (event, isExport) => {\n      const name = isExport ? \"value\" : \"textContent\";\n      const options = event.target.options;\n\n      if (!event.target.multiple) {\n        return options.selectedIndex === -1 ? null : options[options.selectedIndex][name];\n      }\n\n      return Array.prototype.filter.call(options, option => option.selected).map(option => option[name]);\n    };\n\n    const getItems = event => {\n      const options = event.target.options;\n      return Array.prototype.map.call(options, option => {\n        return {\n          displayValue: option.textContent,\n          exportValue: option.value\n        };\n      });\n    };\n\n    if (this.enableScripting && this.hasJSActions) {\n      selectElement.addEventListener(\"updatefromsandbox\", jsEvent => {\n        const actions = {\n          value(event) {\n            const value = event.detail.value;\n            const values = new Set(Array.isArray(value) ? value : [value]);\n\n            for (const option of selectElement.options) {\n              option.selected = values.has(option.value);\n            }\n\n            storage.setValue(id, {\n              value: getValue(event, true)\n            });\n          },\n\n          multipleSelection(event) {\n            selectElement.multiple = true;\n          },\n\n          remove(event) {\n            const options = selectElement.options;\n            const index = event.detail.remove;\n            options[index].selected = false;\n            selectElement.remove(index);\n\n            if (options.length > 0) {\n              const i = Array.prototype.findIndex.call(options, option => option.selected);\n\n              if (i === -1) {\n                options[0].selected = true;\n              }\n            }\n\n            storage.setValue(id, {\n              value: getValue(event, true),\n              items: getItems(event)\n            });\n          },\n\n          clear(event) {\n            while (selectElement.length !== 0) {\n              selectElement.remove(0);\n            }\n\n            storage.setValue(id, {\n              value: null,\n              items: []\n            });\n          },\n\n          insert(event) {\n            const {\n              index,\n              displayValue,\n              exportValue\n            } = event.detail.insert;\n            const optionElement = document.createElement(\"option\");\n            optionElement.textContent = displayValue;\n            optionElement.value = exportValue;\n            selectElement.insertBefore(optionElement, selectElement.children[index]);\n            storage.setValue(id, {\n              value: getValue(event, true),\n              items: getItems(event)\n            });\n          },\n\n          items(event) {\n            const {\n              items\n            } = event.detail;\n\n            while (selectElement.length !== 0) {\n              selectElement.remove(0);\n            }\n\n            for (const item of items) {\n              const {\n                displayValue,\n                exportValue\n              } = item;\n              const optionElement = document.createElement(\"option\");\n              optionElement.textContent = displayValue;\n              optionElement.value = exportValue;\n              selectElement.appendChild(optionElement);\n            }\n\n            if (selectElement.options.length > 0) {\n              selectElement.options[0].selected = true;\n            }\n\n            storage.setValue(id, {\n              value: getValue(event, true),\n              items: getItems(event)\n            });\n          },\n\n          indices(event) {\n            const indices = new Set(event.detail.indices);\n\n            for (const option of event.target.options) {\n              option.selected = indices.has(option.index);\n            }\n\n            storage.setValue(id, {\n              value: getValue(event, true)\n            });\n          },\n\n          editable(event) {\n            event.target.disabled = !event.detail.editable;\n          }\n\n        };\n\n        this._dispatchEventFromSandbox(actions, jsEvent);\n      });\n      selectElement.addEventListener(\"input\", event => {\n        const exportValue = getValue(event, true);\n        const value = getValue(event, false);\n        storage.setValue(id, {\n          value: exportValue\n        });\n        this.linkService.eventBus?.dispatch(\"dispatcheventinsandbox\", {\n          source: this,\n          detail: {\n            id,\n            name: \"Keystroke\",\n            value,\n            changeEx: exportValue,\n            willCommit: true,\n            commitKey: 1,\n            keyDown: false\n          }\n        });\n      });\n\n      this._setEventListeners(selectElement, [[\"focus\", \"Focus\"], [\"blur\", \"Blur\"], [\"mousedown\", \"Mouse Down\"], [\"mouseenter\", \"Mouse Enter\"], [\"mouseleave\", \"Mouse Exit\"], [\"mouseup\", \"Mouse Up\"], [\"input\", \"Action\"]], event => event.target.checked);\n    } else {\n      selectElement.addEventListener(\"input\", function (event) {\n        storage.setValue(id, {\n          value: getValue(event)\n        });\n      });\n    }\n\n    this._setBackgroundColor(selectElement);\n\n    this.container.appendChild(selectElement);\n    return this.container;\n  }\n\n}\n\nclass PopupAnnotationElement extends AnnotationElement {\n  constructor(parameters) {\n    const isRenderable = !!(parameters.data.titleObj?.str || parameters.data.contentsObj?.str || parameters.data.richText?.str);\n    super(parameters, {\n      isRenderable\n    });\n  }\n\n  render() {\n    const IGNORE_TYPES = [\"Line\", \"Square\", \"Circle\", \"PolyLine\", \"Polygon\", \"Ink\"];\n    this.container.className = \"popupAnnotation\";\n\n    if (IGNORE_TYPES.includes(this.data.parentType)) {\n      return this.container;\n    }\n\n    const selector = `[data-annotation-id=\"${this.data.parentId}\"]`;\n    const parentElements = this.layer.querySelectorAll(selector);\n\n    if (parentElements.length === 0) {\n      return this.container;\n    }\n\n    const popup = new PopupElement({\n      container: this.container,\n      trigger: Array.from(parentElements),\n      color: this.data.color,\n      titleObj: this.data.titleObj,\n      modificationDate: this.data.modificationDate,\n      contentsObj: this.data.contentsObj,\n      richText: this.data.richText\n    });\n    const page = this.page;\n\n    const rect = _util.Util.normalizeRect([this.data.parentRect[0], page.view[3] - this.data.parentRect[1] + page.view[1], this.data.parentRect[2], page.view[3] - this.data.parentRect[3] + page.view[1]]);\n\n    const popupLeft = rect[0] + this.data.parentRect[2] - this.data.parentRect[0];\n    const popupTop = rect[1];\n    this.container.style.transformOrigin = `${-popupLeft}px ${-popupTop}px`;\n    this.container.style.left = `${popupLeft}px`;\n    this.container.style.top = `${popupTop}px`;\n    this.container.appendChild(popup.render());\n    return this.container;\n  }\n\n}\n\nclass PopupElement {\n  constructor(parameters) {\n    this.container = parameters.container;\n    this.trigger = parameters.trigger;\n    this.color = parameters.color;\n    this.titleObj = parameters.titleObj;\n    this.modificationDate = parameters.modificationDate;\n    this.contentsObj = parameters.contentsObj;\n    this.richText = parameters.richText;\n    this.hideWrapper = parameters.hideWrapper || false;\n    this.pinned = false;\n  }\n\n  render() {\n    const BACKGROUND_ENLIGHT = 0.7;\n    const wrapper = document.createElement(\"div\");\n    wrapper.className = \"popupWrapper\";\n    this.hideElement = this.hideWrapper ? wrapper : this.container;\n    this.hideElement.hidden = true;\n    const popup = document.createElement(\"div\");\n    popup.className = \"popup\";\n    const color = this.color;\n\n    if (color) {\n      const r = BACKGROUND_ENLIGHT * (255 - color[0]) + color[0];\n      const g = BACKGROUND_ENLIGHT * (255 - color[1]) + color[1];\n      const b = BACKGROUND_ENLIGHT * (255 - color[2]) + color[2];\n      popup.style.backgroundColor = _util.Util.makeHexColor(r | 0, g | 0, b | 0);\n    }\n\n    const title = document.createElement(\"h1\");\n    title.dir = this.titleObj.dir;\n    title.textContent = this.titleObj.str;\n    popup.appendChild(title);\n\n    const dateObject = _display_utils.PDFDateString.toDateObject(this.modificationDate);\n\n    if (dateObject) {\n      const modificationDate = document.createElement(\"span\");\n      modificationDate.className = \"popupDate\";\n      modificationDate.textContent = \"{{date}}, {{time}}\";\n      modificationDate.dataset.l10nId = \"annotation_date_string\";\n      modificationDate.dataset.l10nArgs = JSON.stringify({\n        date: dateObject.toLocaleDateString(),\n        time: dateObject.toLocaleTimeString()\n      });\n      popup.appendChild(modificationDate);\n    }\n\n    if (this.richText?.str && (!this.contentsObj?.str || this.contentsObj.str === this.richText.str)) {\n      _xfa_layer.XfaLayer.render({\n        xfaHtml: this.richText.html,\n        intent: \"richText\",\n        div: popup\n      });\n\n      popup.lastChild.className = \"richText popupContent\";\n    } else {\n      const contents = this._formatContents(this.contentsObj);\n\n      popup.appendChild(contents);\n    }\n\n    if (!Array.isArray(this.trigger)) {\n      this.trigger = [this.trigger];\n    }\n\n    for (const element of this.trigger) {\n      element.addEventListener(\"click\", this._toggle.bind(this));\n      element.addEventListener(\"mouseover\", this._show.bind(this, false));\n      element.addEventListener(\"mouseout\", this._hide.bind(this, false));\n    }\n\n    popup.addEventListener(\"click\", this._hide.bind(this, true));\n    wrapper.appendChild(popup);\n    return wrapper;\n  }\n\n  _formatContents({\n    str,\n    dir\n  }) {\n    const p = document.createElement(\"p\");\n    p.className = \"popupContent\";\n    p.dir = dir;\n    const lines = str.split(/(?:\\r\\n?|\\n)/);\n\n    for (let i = 0, ii = lines.length; i < ii; ++i) {\n      const line = lines[i];\n      p.appendChild(document.createTextNode(line));\n\n      if (i < ii - 1) {\n        p.appendChild(document.createElement(\"br\"));\n      }\n    }\n\n    return p;\n  }\n\n  _toggle() {\n    if (this.pinned) {\n      this._hide(true);\n    } else {\n      this._show(true);\n    }\n  }\n\n  _show(pin = false) {\n    if (pin) {\n      this.pinned = true;\n    }\n\n    if (this.hideElement.hidden) {\n      this.hideElement.hidden = false;\n      this.container.style.zIndex += 1;\n    }\n  }\n\n  _hide(unpin = true) {\n    if (unpin) {\n      this.pinned = false;\n    }\n\n    if (!this.hideElement.hidden && !this.pinned) {\n      this.hideElement.hidden = true;\n      this.container.style.zIndex -= 1;\n    }\n  }\n\n}\n\nclass FreeTextAnnotationElement extends AnnotationElement {\n  constructor(parameters) {\n    const isRenderable = !!(parameters.data.hasPopup || parameters.data.titleObj?.str || parameters.data.contentsObj?.str || parameters.data.richText?.str);\n    super(parameters, {\n      isRenderable,\n      ignoreBorder: true\n    });\n  }\n\n  render() {\n    this.container.className = \"freeTextAnnotation\";\n\n    if (!this.data.hasPopup) {\n      this._createPopup(null, this.data);\n    }\n\n    return this.container;\n  }\n\n}\n\nclass LineAnnotationElement extends AnnotationElement {\n  constructor(parameters) {\n    const isRenderable = !!(parameters.data.hasPopup || parameters.data.titleObj?.str || parameters.data.contentsObj?.str || parameters.data.richText?.str);\n    super(parameters, {\n      isRenderable,\n      ignoreBorder: true\n    });\n  }\n\n  render() {\n    this.container.className = \"lineAnnotation\";\n    const data = this.data;\n    const {\n      width,\n      height\n    } = getRectDims(data.rect);\n    const svg = this.svgFactory.create(width, height);\n    const line = this.svgFactory.createElement(\"svg:line\");\n    line.setAttribute(\"x1\", data.rect[2] - data.lineCoordinates[0]);\n    line.setAttribute(\"y1\", data.rect[3] - data.lineCoordinates[1]);\n    line.setAttribute(\"x2\", data.rect[2] - data.lineCoordinates[2]);\n    line.setAttribute(\"y2\", data.rect[3] - data.lineCoordinates[3]);\n    line.setAttribute(\"stroke-width\", data.borderStyle.width || 1);\n    line.setAttribute(\"stroke\", \"transparent\");\n    line.setAttribute(\"fill\", \"transparent\");\n    svg.appendChild(line);\n    this.container.append(svg);\n\n    this._createPopup(line, data);\n\n    return this.container;\n  }\n\n}\n\nclass SquareAnnotationElement extends AnnotationElement {\n  constructor(parameters) {\n    const isRenderable = !!(parameters.data.hasPopup || parameters.data.titleObj?.str || parameters.data.contentsObj?.str || parameters.data.richText?.str);\n    super(parameters, {\n      isRenderable,\n      ignoreBorder: true\n    });\n  }\n\n  render() {\n    this.container.className = \"squareAnnotation\";\n    const data = this.data;\n    const {\n      width,\n      height\n    } = getRectDims(data.rect);\n    const svg = this.svgFactory.create(width, height);\n    const borderWidth = data.borderStyle.width;\n    const square = this.svgFactory.createElement(\"svg:rect\");\n    square.setAttribute(\"x\", borderWidth / 2);\n    square.setAttribute(\"y\", borderWidth / 2);\n    square.setAttribute(\"width\", width - borderWidth);\n    square.setAttribute(\"height\", height - borderWidth);\n    square.setAttribute(\"stroke-width\", borderWidth || 1);\n    square.setAttribute(\"stroke\", \"transparent\");\n    square.setAttribute(\"fill\", \"transparent\");\n    svg.appendChild(square);\n    this.container.append(svg);\n\n    this._createPopup(square, data);\n\n    return this.container;\n  }\n\n}\n\nclass CircleAnnotationElement extends AnnotationElement {\n  constructor(parameters) {\n    const isRenderable = !!(parameters.data.hasPopup || parameters.data.titleObj?.str || parameters.data.contentsObj?.str || parameters.data.richText?.str);\n    super(parameters, {\n      isRenderable,\n      ignoreBorder: true\n    });\n  }\n\n  render() {\n    this.container.className = \"circleAnnotation\";\n    const data = this.data;\n    const {\n      width,\n      height\n    } = getRectDims(data.rect);\n    const svg = this.svgFactory.create(width, height);\n    const borderWidth = data.borderStyle.width;\n    const circle = this.svgFactory.createElement(\"svg:ellipse\");\n    circle.setAttribute(\"cx\", width / 2);\n    circle.setAttribute(\"cy\", height / 2);\n    circle.setAttribute(\"rx\", width / 2 - borderWidth / 2);\n    circle.setAttribute(\"ry\", height / 2 - borderWidth / 2);\n    circle.setAttribute(\"stroke-width\", borderWidth || 1);\n    circle.setAttribute(\"stroke\", \"transparent\");\n    circle.setAttribute(\"fill\", \"transparent\");\n    svg.appendChild(circle);\n    this.container.append(svg);\n\n    this._createPopup(circle, data);\n\n    return this.container;\n  }\n\n}\n\nclass PolylineAnnotationElement extends AnnotationElement {\n  constructor(parameters) {\n    const isRenderable = !!(parameters.data.hasPopup || parameters.data.titleObj?.str || parameters.data.contentsObj?.str || parameters.data.richText?.str);\n    super(parameters, {\n      isRenderable,\n      ignoreBorder: true\n    });\n    this.containerClassName = \"polylineAnnotation\";\n    this.svgElementName = \"svg:polyline\";\n  }\n\n  render() {\n    this.container.className = this.containerClassName;\n    const data = this.data;\n    const {\n      width,\n      height\n    } = getRectDims(data.rect);\n    const svg = this.svgFactory.create(width, height);\n    let points = [];\n\n    for (const coordinate of data.vertices) {\n      const x = coordinate.x - data.rect[0];\n      const y = data.rect[3] - coordinate.y;\n      points.push(x + \",\" + y);\n    }\n\n    points = points.join(\" \");\n    const polyline = this.svgFactory.createElement(this.svgElementName);\n    polyline.setAttribute(\"points\", points);\n    polyline.setAttribute(\"stroke-width\", data.borderStyle.width || 1);\n    polyline.setAttribute(\"stroke\", \"transparent\");\n    polyline.setAttribute(\"fill\", \"transparent\");\n    svg.appendChild(polyline);\n    this.container.append(svg);\n\n    this._createPopup(polyline, data);\n\n    return this.container;\n  }\n\n}\n\nclass PolygonAnnotationElement extends PolylineAnnotationElement {\n  constructor(parameters) {\n    super(parameters);\n    this.containerClassName = \"polygonAnnotation\";\n    this.svgElementName = \"svg:polygon\";\n  }\n\n}\n\nclass CaretAnnotationElement extends AnnotationElement {\n  constructor(parameters) {\n    const isRenderable = !!(parameters.data.hasPopup || parameters.data.titleObj?.str || parameters.data.contentsObj?.str || parameters.data.richText?.str);\n    super(parameters, {\n      isRenderable,\n      ignoreBorder: true\n    });\n  }\n\n  render() {\n    this.container.className = \"caretAnnotation\";\n\n    if (!this.data.hasPopup) {\n      this._createPopup(null, this.data);\n    }\n\n    return this.container;\n  }\n\n}\n\nclass InkAnnotationElement extends AnnotationElement {\n  constructor(parameters) {\n    const isRenderable = !!(parameters.data.hasPopup || parameters.data.titleObj?.str || parameters.data.contentsObj?.str || parameters.data.richText?.str);\n    super(parameters, {\n      isRenderable,\n      ignoreBorder: true\n    });\n    this.containerClassName = \"inkAnnotation\";\n    this.svgElementName = \"svg:polyline\";\n  }\n\n  render() {\n    this.container.className = this.containerClassName;\n    const data = this.data;\n    const {\n      width,\n      height\n    } = getRectDims(data.rect);\n    const svg = this.svgFactory.create(width, height);\n\n    for (const inkList of data.inkLists) {\n      let points = [];\n\n      for (const coordinate of inkList) {\n        const x = coordinate.x - data.rect[0];\n        const y = data.rect[3] - coordinate.y;\n        points.push(`${x},${y}`);\n      }\n\n      points = points.join(\" \");\n      const polyline = this.svgFactory.createElement(this.svgElementName);\n      polyline.setAttribute(\"points\", points);\n      polyline.setAttribute(\"stroke-width\", data.borderStyle.width || 1);\n      polyline.setAttribute(\"stroke\", \"transparent\");\n      polyline.setAttribute(\"fill\", \"transparent\");\n\n      this._createPopup(polyline, data);\n\n      svg.appendChild(polyline);\n    }\n\n    this.container.append(svg);\n    return this.container;\n  }\n\n}\n\nclass HighlightAnnotationElement extends AnnotationElement {\n  constructor(parameters) {\n    const isRenderable = !!(parameters.data.hasPopup || parameters.data.titleObj?.str || parameters.data.contentsObj?.str || parameters.data.richText?.str);\n    super(parameters, {\n      isRenderable,\n      ignoreBorder: true,\n      createQuadrilaterals: true\n    });\n  }\n\n  render() {\n    if (!this.data.hasPopup) {\n      this._createPopup(null, this.data);\n    }\n\n    if (this.quadrilaterals) {\n      return this._renderQuadrilaterals(\"highlightAnnotation\");\n    }\n\n    this.container.className = \"highlightAnnotation\";\n    return this.container;\n  }\n\n}\n\nclass UnderlineAnnotationElement extends AnnotationElement {\n  constructor(parameters) {\n    const isRenderable = !!(parameters.data.hasPopup || parameters.data.titleObj?.str || parameters.data.contentsObj?.str || parameters.data.richText?.str);\n    super(parameters, {\n      isRenderable,\n      ignoreBorder: true,\n      createQuadrilaterals: true\n    });\n  }\n\n  render() {\n    if (!this.data.hasPopup) {\n      this._createPopup(null, this.data);\n    }\n\n    if (this.quadrilaterals) {\n      return this._renderQuadrilaterals(\"underlineAnnotation\");\n    }\n\n    this.container.className = \"underlineAnnotation\";\n    return this.container;\n  }\n\n}\n\nclass SquigglyAnnotationElement extends AnnotationElement {\n  constructor(parameters) {\n    const isRenderable = !!(parameters.data.hasPopup || parameters.data.titleObj?.str || parameters.data.contentsObj?.str || parameters.data.richText?.str);\n    super(parameters, {\n      isRenderable,\n      ignoreBorder: true,\n      createQuadrilaterals: true\n    });\n  }\n\n  render() {\n    if (!this.data.hasPopup) {\n      this._createPopup(null, this.data);\n    }\n\n    if (this.quadrilaterals) {\n      return this._renderQuadrilaterals(\"squigglyAnnotation\");\n    }\n\n    this.container.className = \"squigglyAnnotation\";\n    return this.container;\n  }\n\n}\n\nclass StrikeOutAnnotationElement extends AnnotationElement {\n  constructor(parameters) {\n    const isRenderable = !!(parameters.data.hasPopup || parameters.data.titleObj?.str || parameters.data.contentsObj?.str || parameters.data.richText?.str);\n    super(parameters, {\n      isRenderable,\n      ignoreBorder: true,\n      createQuadrilaterals: true\n    });\n  }\n\n  render() {\n    if (!this.data.hasPopup) {\n      this._createPopup(null, this.data);\n    }\n\n    if (this.quadrilaterals) {\n      return this._renderQuadrilaterals(\"strikeoutAnnotation\");\n    }\n\n    this.container.className = \"strikeoutAnnotation\";\n    return this.container;\n  }\n\n}\n\nclass StampAnnotationElement extends AnnotationElement {\n  constructor(parameters) {\n    const isRenderable = !!(parameters.data.hasPopup || parameters.data.titleObj?.str || parameters.data.contentsObj?.str || parameters.data.richText?.str);\n    super(parameters, {\n      isRenderable,\n      ignoreBorder: true\n    });\n  }\n\n  render() {\n    this.container.className = \"stampAnnotation\";\n\n    if (!this.data.hasPopup) {\n      this._createPopup(null, this.data);\n    }\n\n    return this.container;\n  }\n\n}\n\nclass FileAttachmentAnnotationElement extends AnnotationElement {\n  constructor(parameters) {\n    super(parameters, {\n      isRenderable: true\n    });\n    const {\n      filename,\n      content\n    } = this.data.file;\n    this.filename = (0, _display_utils.getFilenameFromUrl)(filename);\n    this.content = content;\n    this.linkService.eventBus?.dispatch(\"fileattachmentannotation\", {\n      source: this,\n      id: (0, _util.stringToPDFString)(filename),\n      filename,\n      content\n    });\n  }\n\n  render() {\n    this.container.className = \"fileAttachmentAnnotation\";\n    const trigger = document.createElement(\"div\");\n    trigger.style.height = this.container.style.height;\n    trigger.style.width = this.container.style.width;\n    trigger.addEventListener(\"dblclick\", this._download.bind(this));\n\n    if (!this.data.hasPopup && (this.data.titleObj?.str || this.data.contentsObj?.str || this.data.richText)) {\n      this._createPopup(trigger, this.data);\n    }\n\n    this.container.appendChild(trigger);\n    return this.container;\n  }\n\n  _download() {\n    this.downloadManager?.openOrDownloadData(this.container, this.content, this.filename);\n  }\n\n}\n\nclass AnnotationLayer {\n  static render(parameters) {\n    const sortedAnnotations = [],\n          popupAnnotations = [];\n\n    for (const data of parameters.annotations) {\n      if (!data) {\n        continue;\n      }\n\n      const {\n        width,\n        height\n      } = getRectDims(data.rect);\n\n      if (width <= 0 || height <= 0) {\n        continue;\n      }\n\n      if (data.annotationType === _util.AnnotationType.POPUP) {\n        popupAnnotations.push(data);\n        continue;\n      }\n\n      sortedAnnotations.push(data);\n    }\n\n    if (popupAnnotations.length) {\n      sortedAnnotations.push(...popupAnnotations);\n    }\n\n    const div = parameters.div;\n\n    for (const data of sortedAnnotations) {\n      const element = AnnotationElementFactory.create({\n        data,\n        layer: div,\n        page: parameters.page,\n        viewport: parameters.viewport,\n        linkService: parameters.linkService,\n        downloadManager: parameters.downloadManager,\n        imageResourcesPath: parameters.imageResourcesPath || \"\",\n        renderForms: parameters.renderForms !== false,\n        svgFactory: new _display_utils.DOMSVGFactory(),\n        annotationStorage: parameters.annotationStorage || new _annotation_storage.AnnotationStorage(),\n        enableScripting: parameters.enableScripting,\n        hasJSActions: parameters.hasJSActions,\n        fieldObjects: parameters.fieldObjects,\n        mouseState: parameters.mouseState || {\n          isDown: false\n        }\n      });\n\n      if (element.isRenderable) {\n        const rendered = element.render();\n\n        if (data.hidden) {\n          rendered.style.visibility = \"hidden\";\n        }\n\n        if (Array.isArray(rendered)) {\n          for (const renderedElement of rendered) {\n            div.appendChild(renderedElement);\n          }\n        } else {\n          if (element instanceof PopupAnnotationElement) {\n            div.prepend(rendered);\n          } else {\n            div.appendChild(rendered);\n          }\n        }\n      }\n    }\n\n    this.#setAnnotationCanvasMap(div, parameters.annotationCanvasMap);\n  }\n\n  static update(parameters) {\n    const {\n      page,\n      viewport,\n      annotations,\n      annotationCanvasMap,\n      div\n    } = parameters;\n    const transform = viewport.transform;\n    const matrix = `matrix(${transform.join(\",\")})`;\n    let scale, ownMatrix;\n\n    for (const data of annotations) {\n      const elements = div.querySelectorAll(`[data-annotation-id=\"${data.id}\"]`);\n\n      if (elements) {\n        for (const element of elements) {\n          if (data.hasOwnCanvas) {\n            const rect = _util.Util.normalizeRect([data.rect[0], page.view[3] - data.rect[1] + page.view[1], data.rect[2], page.view[3] - data.rect[3] + page.view[1]]);\n\n            if (!ownMatrix) {\n              scale = Math.abs(transform[0] || transform[1]);\n              const ownTransform = transform.slice();\n\n              for (let i = 0; i < 4; i++) {\n                ownTransform[i] = Math.sign(ownTransform[i]);\n              }\n\n              ownMatrix = `matrix(${ownTransform.join(\",\")})`;\n            }\n\n            const left = rect[0] * scale;\n            const top = rect[1] * scale;\n            element.style.left = `${left}px`;\n            element.style.top = `${top}px`;\n            element.style.transformOrigin = `${-left}px ${-top}px`;\n            element.style.transform = ownMatrix;\n          } else {\n            element.style.transform = matrix;\n          }\n        }\n      }\n    }\n\n    this.#setAnnotationCanvasMap(div, annotationCanvasMap);\n    div.hidden = false;\n  }\n\n  static #setAnnotationCanvasMap(div, annotationCanvasMap) {\n    if (!annotationCanvasMap) {\n      return;\n    }\n\n    for (const [id, canvas] of annotationCanvasMap) {\n      const element = div.querySelector(`[data-annotation-id=\"${id}\"]`);\n\n      if (!element) {\n        continue;\n      }\n\n      const {\n        firstChild\n      } = element;\n\n      if (firstChild.nodeName === \"CANVAS\") {\n        element.replaceChild(canvas, firstChild);\n      } else {\n        element.insertBefore(canvas, firstChild);\n      }\n    }\n\n    annotationCanvasMap.clear();\n  }\n\n}\n\nexports.AnnotationLayer = AnnotationLayer;\n\n/***/ }),\n/* 19 */\n/***/ ((__unused_webpack_module, exports) => {\n\n\n\nObject.defineProperty(exports, \"__esModule\", ({\n  value: true\n}));\nexports.ColorConverters = void 0;\n\nfunction makeColorComp(n) {\n  return Math.floor(Math.max(0, Math.min(1, n)) * 255).toString(16).padStart(2, \"0\");\n}\n\nclass ColorConverters {\n  static CMYK_G([c, y, m, k]) {\n    return [\"G\", 1 - Math.min(1, 0.3 * c + 0.59 * m + 0.11 * y + k)];\n  }\n\n  static G_CMYK([g]) {\n    return [\"CMYK\", 0, 0, 0, 1 - g];\n  }\n\n  static G_RGB([g]) {\n    return [\"RGB\", g, g, g];\n  }\n\n  static G_HTML([g]) {\n    const G = makeColorComp(g);\n    return `#${G}${G}${G}`;\n  }\n\n  static RGB_G([r, g, b]) {\n    return [\"G\", 0.3 * r + 0.59 * g + 0.11 * b];\n  }\n\n  static RGB_HTML([r, g, b]) {\n    const R = makeColorComp(r);\n    const G = makeColorComp(g);\n    const B = makeColorComp(b);\n    return `#${R}${G}${B}`;\n  }\n\n  static T_HTML() {\n    return \"#00000000\";\n  }\n\n  static CMYK_RGB([c, y, m, k]) {\n    return [\"RGB\", 1 - Math.min(1, c + k), 1 - Math.min(1, m + k), 1 - Math.min(1, y + k)];\n  }\n\n  static CMYK_HTML(components) {\n    return this.RGB_HTML(this.CMYK_RGB(components));\n  }\n\n  static RGB_CMYK([r, g, b]) {\n    const c = 1 - r;\n    const m = 1 - g;\n    const y = 1 - b;\n    const k = Math.min(c, m, y);\n    return [\"CMYK\", c, m, y, k];\n  }\n\n}\n\nexports.ColorConverters = ColorConverters;\n\n/***/ }),\n/* 20 */\n/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {\n\n\n\nObject.defineProperty(exports, \"__esModule\", ({\n  value: true\n}));\nexports.XfaLayer = void 0;\n\nvar _xfa_text = __w_pdfjs_require__(17);\n\nclass XfaLayer {\n  static setupStorage(html, id, element, storage, intent) {\n    const storedData = storage.getValue(id, {\n      value: null\n    });\n\n    switch (element.name) {\n      case \"textarea\":\n        if (storedData.value !== null) {\n          html.textContent = storedData.value;\n        }\n\n        if (intent === \"print\") {\n          break;\n        }\n\n        html.addEventListener(\"input\", event => {\n          storage.setValue(id, {\n            value: event.target.value\n          });\n        });\n        break;\n\n      case \"input\":\n        if (element.attributes.type === \"radio\" || element.attributes.type === \"checkbox\") {\n          if (storedData.value === element.attributes.xfaOn) {\n            html.setAttribute(\"checked\", true);\n          } else if (storedData.value === element.attributes.xfaOff) {\n            html.removeAttribute(\"checked\");\n          }\n\n          if (intent === \"print\") {\n            break;\n          }\n\n          html.addEventListener(\"change\", event => {\n            storage.setValue(id, {\n              value: event.target.checked ? event.target.getAttribute(\"xfaOn\") : event.target.getAttribute(\"xfaOff\")\n            });\n          });\n        } else {\n          if (storedData.value !== null) {\n            html.setAttribute(\"value\", storedData.value);\n          }\n\n          if (intent === \"print\") {\n            break;\n          }\n\n          html.addEventListener(\"input\", event => {\n            storage.setValue(id, {\n              value: event.target.value\n            });\n          });\n        }\n\n        break;\n\n      case \"select\":\n        if (storedData.value !== null) {\n          for (const option of element.children) {\n            if (option.attributes.value === storedData.value) {\n              option.attributes.selected = true;\n            }\n          }\n        }\n\n        html.addEventListener(\"input\", event => {\n          const options = event.target.options;\n          const value = options.selectedIndex === -1 ? \"\" : options[options.selectedIndex].value;\n          storage.setValue(id, {\n            value\n          });\n        });\n        break;\n    }\n  }\n\n  static setAttributes({\n    html,\n    element,\n    storage = null,\n    intent,\n    linkService\n  }) {\n    const {\n      attributes\n    } = element;\n    const isHTMLAnchorElement = html instanceof HTMLAnchorElement;\n\n    if (attributes.type === \"radio\") {\n      attributes.name = `${attributes.name}-${intent}`;\n    }\n\n    for (const [key, value] of Object.entries(attributes)) {\n      if (value === null || value === undefined || key === \"dataId\") {\n        continue;\n      }\n\n      if (key !== \"style\") {\n        if (key === \"textContent\") {\n          html.textContent = value;\n        } else if (key === \"class\") {\n          if (value.length) {\n            html.setAttribute(key, value.join(\" \"));\n          }\n        } else {\n          if (isHTMLAnchorElement && (key === \"href\" || key === \"newWindow\")) {\n            continue;\n          }\n\n          html.setAttribute(key, value);\n        }\n      } else {\n        Object.assign(html.style, value);\n      }\n    }\n\n    if (isHTMLAnchorElement) {\n      linkService.addLinkAttributes(html, attributes.href, attributes.newWindow);\n    }\n\n    if (storage && attributes.dataId) {\n      this.setupStorage(html, attributes.dataId, element, storage);\n    }\n  }\n\n  static render(parameters) {\n    const storage = parameters.annotationStorage;\n    const linkService = parameters.linkService;\n    const root = parameters.xfaHtml;\n    const intent = parameters.intent || \"display\";\n    const rootHtml = document.createElement(root.name);\n\n    if (root.attributes) {\n      this.setAttributes({\n        html: rootHtml,\n        element: root,\n        intent,\n        linkService\n      });\n    }\n\n    const stack = [[root, -1, rootHtml]];\n    const rootDiv = parameters.div;\n    rootDiv.appendChild(rootHtml);\n\n    if (parameters.viewport) {\n      const transform = `matrix(${parameters.viewport.transform.join(\",\")})`;\n      rootDiv.style.transform = transform;\n    }\n\n    if (intent !== \"richText\") {\n      rootDiv.setAttribute(\"class\", \"xfaLayer xfaFont\");\n    }\n\n    const textDivs = [];\n\n    while (stack.length > 0) {\n      const [parent, i, html] = stack[stack.length - 1];\n\n      if (i + 1 === parent.children.length) {\n        stack.pop();\n        continue;\n      }\n\n      const child = parent.children[++stack[stack.length - 1][1]];\n\n      if (child === null) {\n        continue;\n      }\n\n      const {\n        name\n      } = child;\n\n      if (name === \"#text\") {\n        const node = document.createTextNode(child.value);\n        textDivs.push(node);\n        html.appendChild(node);\n        continue;\n      }\n\n      let childHtml;\n\n      if (child?.attributes?.xmlns) {\n        childHtml = document.createElementNS(child.attributes.xmlns, name);\n      } else {\n        childHtml = document.createElement(name);\n      }\n\n      html.appendChild(childHtml);\n\n      if (child.attributes) {\n        this.setAttributes({\n          html: childHtml,\n          element: child,\n          storage,\n          intent,\n          linkService\n        });\n      }\n\n      if (child.children && child.children.length > 0) {\n        stack.push([child, -1, childHtml]);\n      } else if (child.value) {\n        const node = document.createTextNode(child.value);\n\n        if (_xfa_text.XfaText.shouldBuildText(name)) {\n          textDivs.push(node);\n        }\n\n        childHtml.appendChild(node);\n      }\n    }\n\n    for (const el of rootDiv.querySelectorAll(\".xfaNonInteractive input, .xfaNonInteractive textarea\")) {\n      el.setAttribute(\"readOnly\", true);\n    }\n\n    return {\n      textDivs\n    };\n  }\n\n  static update(parameters) {\n    const transform = `matrix(${parameters.viewport.transform.join(\",\")})`;\n    parameters.div.style.transform = transform;\n    parameters.div.hidden = false;\n  }\n\n}\n\nexports.XfaLayer = XfaLayer;\n\n/***/ }),\n/* 21 */\n/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {\n\n\n\nObject.defineProperty(exports, \"__esModule\", ({\n  value: true\n}));\nexports.renderTextLayer = renderTextLayer;\n\nvar _util = __w_pdfjs_require__(1);\n\nconst MAX_TEXT_DIVS_TO_RENDER = 100000;\nconst DEFAULT_FONT_SIZE = 30;\nconst DEFAULT_FONT_ASCENT = 0.8;\nconst ascentCache = new Map();\nconst AllWhitespaceRegexp = /^\\s+$/g;\n\nfunction getAscent(fontFamily, ctx) {\n  const cachedAscent = ascentCache.get(fontFamily);\n\n  if (cachedAscent) {\n    return cachedAscent;\n  }\n\n  ctx.save();\n  ctx.font = `${DEFAULT_FONT_SIZE}px ${fontFamily}`;\n  const metrics = ctx.measureText(\"\");\n  let ascent = metrics.fontBoundingBoxAscent;\n  let descent = Math.abs(metrics.fontBoundingBoxDescent);\n\n  if (ascent) {\n    ctx.restore();\n    const ratio = ascent / (ascent + descent);\n    ascentCache.set(fontFamily, ratio);\n    return ratio;\n  }\n\n  ctx.strokeStyle = \"red\";\n  ctx.clearRect(0, 0, DEFAULT_FONT_SIZE, DEFAULT_FONT_SIZE);\n  ctx.strokeText(\"g\", 0, 0);\n  let pixels = ctx.getImageData(0, 0, DEFAULT_FONT_SIZE, DEFAULT_FONT_SIZE).data;\n  descent = 0;\n\n  for (let i = pixels.length - 1 - 3; i >= 0; i -= 4) {\n    if (pixels[i] > 0) {\n      descent = Math.ceil(i / 4 / DEFAULT_FONT_SIZE);\n      break;\n    }\n  }\n\n  ctx.clearRect(0, 0, DEFAULT_FONT_SIZE, DEFAULT_FONT_SIZE);\n  ctx.strokeText(\"A\", 0, DEFAULT_FONT_SIZE);\n  pixels = ctx.getImageData(0, 0, DEFAULT_FONT_SIZE, DEFAULT_FONT_SIZE).data;\n  ascent = 0;\n\n  for (let i = 0, ii = pixels.length; i < ii; i += 4) {\n    if (pixels[i] > 0) {\n      ascent = DEFAULT_FONT_SIZE - Math.floor(i / 4 / DEFAULT_FONT_SIZE);\n      break;\n    }\n  }\n\n  ctx.restore();\n\n  if (ascent) {\n    const ratio = ascent / (ascent + descent);\n    ascentCache.set(fontFamily, ratio);\n    return ratio;\n  }\n\n  ascentCache.set(fontFamily, DEFAULT_FONT_ASCENT);\n  return DEFAULT_FONT_ASCENT;\n}\n\nfunction appendText(task, geom, styles, ctx) {\n  const textDiv = document.createElement(\"span\");\n  const textDivProperties = task._enhanceTextSelection ? {\n    angle: 0,\n    canvasWidth: 0,\n    hasText: geom.str !== \"\",\n    hasEOL: geom.hasEOL,\n    originalTransform: null,\n    paddingBottom: 0,\n    paddingLeft: 0,\n    paddingRight: 0,\n    paddingTop: 0,\n    scale: 1\n  } : {\n    angle: 0,\n    canvasWidth: 0,\n    hasText: geom.str !== \"\",\n    hasEOL: geom.hasEOL\n  };\n\n  task._textDivs.push(textDiv);\n\n  const tx = _util.Util.transform(task._viewport.transform, geom.transform);\n\n  let angle = Math.atan2(tx[1], tx[0]);\n  const style = styles[geom.fontName];\n\n  if (style.vertical) {\n    angle += Math.PI / 2;\n  }\n\n  const fontHeight = Math.hypot(tx[2], tx[3]);\n  const fontAscent = fontHeight * getAscent(style.fontFamily, ctx);\n  let left, top;\n\n  if (angle === 0) {\n    left = tx[4];\n    top = tx[5] - fontAscent;\n  } else {\n    left = tx[4] + fontAscent * Math.sin(angle);\n    top = tx[5] - fontAscent * Math.cos(angle);\n  }\n\n  textDiv.style.left = `${left}px`;\n  textDiv.style.top = `${top}px`;\n  textDiv.style.fontSize = `${fontHeight}px`;\n  textDiv.style.fontFamily = style.fontFamily;\n  textDiv.setAttribute(\"role\", \"presentation\");\n  textDiv.textContent = geom.str;\n  textDiv.dir = geom.dir;\n\n  if (task._fontInspectorEnabled) {\n    textDiv.dataset.fontName = geom.fontName;\n  }\n\n  if (angle !== 0) {\n    textDivProperties.angle = angle * (180 / Math.PI);\n  }\n\n  let shouldScaleText = false;\n\n  if (geom.str.length > 1 || task._enhanceTextSelection && AllWhitespaceRegexp.test(geom.str)) {\n    shouldScaleText = true;\n  } else if (geom.str !== \" \" && geom.transform[0] !== geom.transform[3]) {\n    const absScaleX = Math.abs(geom.transform[0]),\n          absScaleY = Math.abs(geom.transform[3]);\n\n    if (absScaleX !== absScaleY && Math.max(absScaleX, absScaleY) / Math.min(absScaleX, absScaleY) > 1.5) {\n      shouldScaleText = true;\n    }\n  }\n\n  if (shouldScaleText) {\n    if (style.vertical) {\n      textDivProperties.canvasWidth = geom.height * task._viewport.scale;\n    } else {\n      textDivProperties.canvasWidth = geom.width * task._viewport.scale;\n    }\n  }\n\n  task._textDivProperties.set(textDiv, textDivProperties);\n\n  if (task._textContentStream) {\n    task._layoutText(textDiv);\n  }\n\n  if (task._enhanceTextSelection && textDivProperties.hasText) {\n    let angleCos = 1,\n        angleSin = 0;\n\n    if (angle !== 0) {\n      angleCos = Math.cos(angle);\n      angleSin = Math.sin(angle);\n    }\n\n    const divWidth = (style.vertical ? geom.height : geom.width) * task._viewport.scale;\n    const divHeight = fontHeight;\n    let m, b;\n\n    if (angle !== 0) {\n      m = [angleCos, angleSin, -angleSin, angleCos, left, top];\n      b = _util.Util.getAxialAlignedBoundingBox([0, 0, divWidth, divHeight], m);\n    } else {\n      b = [left, top, left + divWidth, top + divHeight];\n    }\n\n    task._bounds.push({\n      left: b[0],\n      top: b[1],\n      right: b[2],\n      bottom: b[3],\n      div: textDiv,\n      size: [divWidth, divHeight],\n      m\n    });\n  }\n}\n\nfunction render(task) {\n  if (task._canceled) {\n    return;\n  }\n\n  const textDivs = task._textDivs;\n  const capability = task._capability;\n  const textDivsLength = textDivs.length;\n\n  if (textDivsLength > MAX_TEXT_DIVS_TO_RENDER) {\n    task._renderingDone = true;\n    capability.resolve();\n    return;\n  }\n\n  if (!task._textContentStream) {\n    for (let i = 0; i < textDivsLength; i++) {\n      task._layoutText(textDivs[i]);\n    }\n  }\n\n  task._renderingDone = true;\n  capability.resolve();\n}\n\nfunction findPositiveMin(ts, offset, count) {\n  let result = 0;\n\n  for (let i = 0; i < count; i++) {\n    const t = ts[offset++];\n\n    if (t > 0) {\n      result = result ? Math.min(t, result) : t;\n    }\n  }\n\n  return result;\n}\n\nfunction expand(task) {\n  const bounds = task._bounds;\n  const viewport = task._viewport;\n  const expanded = expandBounds(viewport.width, viewport.height, bounds);\n\n  for (let i = 0; i < expanded.length; i++) {\n    const div = bounds[i].div;\n\n    const divProperties = task._textDivProperties.get(div);\n\n    if (divProperties.angle === 0) {\n      divProperties.paddingLeft = bounds[i].left - expanded[i].left;\n      divProperties.paddingTop = bounds[i].top - expanded[i].top;\n      divProperties.paddingRight = expanded[i].right - bounds[i].right;\n      divProperties.paddingBottom = expanded[i].bottom - bounds[i].bottom;\n\n      task._textDivProperties.set(div, divProperties);\n\n      continue;\n    }\n\n    const e = expanded[i],\n          b = bounds[i];\n    const m = b.m,\n          c = m[0],\n          s = m[1];\n    const points = [[0, 0], [0, b.size[1]], [b.size[0], 0], b.size];\n    const ts = new Float64Array(64);\n\n    for (let j = 0, jj = points.length; j < jj; j++) {\n      const t = _util.Util.applyTransform(points[j], m);\n\n      ts[j + 0] = c && (e.left - t[0]) / c;\n      ts[j + 4] = s && (e.top - t[1]) / s;\n      ts[j + 8] = c && (e.right - t[0]) / c;\n      ts[j + 12] = s && (e.bottom - t[1]) / s;\n      ts[j + 16] = s && (e.left - t[0]) / -s;\n      ts[j + 20] = c && (e.top - t[1]) / c;\n      ts[j + 24] = s && (e.right - t[0]) / -s;\n      ts[j + 28] = c && (e.bottom - t[1]) / c;\n      ts[j + 32] = c && (e.left - t[0]) / -c;\n      ts[j + 36] = s && (e.top - t[1]) / -s;\n      ts[j + 40] = c && (e.right - t[0]) / -c;\n      ts[j + 44] = s && (e.bottom - t[1]) / -s;\n      ts[j + 48] = s && (e.left - t[0]) / s;\n      ts[j + 52] = c && (e.top - t[1]) / -c;\n      ts[j + 56] = s && (e.right - t[0]) / s;\n      ts[j + 60] = c && (e.bottom - t[1]) / -c;\n    }\n\n    const boxScale = 1 + Math.min(Math.abs(c), Math.abs(s));\n    divProperties.paddingLeft = findPositiveMin(ts, 32, 16) / boxScale;\n    divProperties.paddingTop = findPositiveMin(ts, 48, 16) / boxScale;\n    divProperties.paddingRight = findPositiveMin(ts, 0, 16) / boxScale;\n    divProperties.paddingBottom = findPositiveMin(ts, 16, 16) / boxScale;\n\n    task._textDivProperties.set(div, divProperties);\n  }\n}\n\nfunction expandBounds(width, height, boxes) {\n  const bounds = boxes.map(function (box, i) {\n    return {\n      x1: box.left,\n      y1: box.top,\n      x2: box.right,\n      y2: box.bottom,\n      index: i,\n      x1New: undefined,\n      x2New: undefined\n    };\n  });\n  expandBoundsLTR(width, bounds);\n  const expanded = new Array(boxes.length);\n\n  for (const b of bounds) {\n    const i = b.index;\n    expanded[i] = {\n      left: b.x1New,\n      top: 0,\n      right: b.x2New,\n      bottom: 0\n    };\n  }\n\n  boxes.map(function (box, i) {\n    const e = expanded[i],\n          b = bounds[i];\n    b.x1 = box.top;\n    b.y1 = width - e.right;\n    b.x2 = box.bottom;\n    b.y2 = width - e.left;\n    b.index = i;\n    b.x1New = undefined;\n    b.x2New = undefined;\n  });\n  expandBoundsLTR(height, bounds);\n\n  for (const b of bounds) {\n    const i = b.index;\n    expanded[i].top = b.x1New;\n    expanded[i].bottom = b.x2New;\n  }\n\n  return expanded;\n}\n\nfunction expandBoundsLTR(width, bounds) {\n  bounds.sort(function (a, b) {\n    return a.x1 - b.x1 || a.index - b.index;\n  });\n  const fakeBoundary = {\n    x1: -Infinity,\n    y1: -Infinity,\n    x2: 0,\n    y2: Infinity,\n    index: -1,\n    x1New: 0,\n    x2New: 0\n  };\n  const horizon = [{\n    start: -Infinity,\n    end: Infinity,\n    boundary: fakeBoundary\n  }];\n\n  for (const boundary of bounds) {\n    let i = 0;\n\n    while (i < horizon.length && horizon[i].end <= boundary.y1) {\n      i++;\n    }\n\n    let j = horizon.length - 1;\n\n    while (j >= 0 && horizon[j].start >= boundary.y2) {\n      j--;\n    }\n\n    let horizonPart, affectedBoundary;\n    let q,\n        k,\n        maxXNew = -Infinity;\n\n    for (q = i; q <= j; q++) {\n      horizonPart = horizon[q];\n      affectedBoundary = horizonPart.boundary;\n      let xNew;\n\n      if (affectedBoundary.x2 > boundary.x1) {\n        xNew = affectedBoundary.index > boundary.index ? affectedBoundary.x1New : boundary.x1;\n      } else if (affectedBoundary.x2New === undefined) {\n        xNew = (affectedBoundary.x2 + boundary.x1) / 2;\n      } else {\n        xNew = affectedBoundary.x2New;\n      }\n\n      if (xNew > maxXNew) {\n        maxXNew = xNew;\n      }\n    }\n\n    boundary.x1New = maxXNew;\n\n    for (q = i; q <= j; q++) {\n      horizonPart = horizon[q];\n      affectedBoundary = horizonPart.boundary;\n\n      if (affectedBoundary.x2New === undefined) {\n        if (affectedBoundary.x2 > boundary.x1) {\n          if (affectedBoundary.index > boundary.index) {\n            affectedBoundary.x2New = affectedBoundary.x2;\n          }\n        } else {\n          affectedBoundary.x2New = maxXNew;\n        }\n      } else if (affectedBoundary.x2New > maxXNew) {\n        affectedBoundary.x2New = Math.max(maxXNew, affectedBoundary.x2);\n      }\n    }\n\n    const changedHorizon = [];\n    let lastBoundary = null;\n\n    for (q = i; q <= j; q++) {\n      horizonPart = horizon[q];\n      affectedBoundary = horizonPart.boundary;\n      const useBoundary = affectedBoundary.x2 > boundary.x2 ? affectedBoundary : boundary;\n\n      if (lastBoundary === useBoundary) {\n        changedHorizon[changedHorizon.length - 1].end = horizonPart.end;\n      } else {\n        changedHorizon.push({\n          start: horizonPart.start,\n          end: horizonPart.end,\n          boundary: useBoundary\n        });\n        lastBoundary = useBoundary;\n      }\n    }\n\n    if (horizon[i].start < boundary.y1) {\n      changedHorizon[0].start = boundary.y1;\n      changedHorizon.unshift({\n        start: horizon[i].start,\n        end: boundary.y1,\n        boundary: horizon[i].boundary\n      });\n    }\n\n    if (boundary.y2 < horizon[j].end) {\n      changedHorizon[changedHorizon.length - 1].end = boundary.y2;\n      changedHorizon.push({\n        start: boundary.y2,\n        end: horizon[j].end,\n        boundary: horizon[j].boundary\n      });\n    }\n\n    for (q = i; q <= j; q++) {\n      horizonPart = horizon[q];\n      affectedBoundary = horizonPart.boundary;\n\n      if (affectedBoundary.x2New !== undefined) {\n        continue;\n      }\n\n      let used = false;\n\n      for (k = i - 1; !used && k >= 0 && horizon[k].start >= affectedBoundary.y1; k--) {\n        used = horizon[k].boundary === affectedBoundary;\n      }\n\n      for (k = j + 1; !used && k < horizon.length && horizon[k].end <= affectedBoundary.y2; k++) {\n        used = horizon[k].boundary === affectedBoundary;\n      }\n\n      for (k = 0; !used && k < changedHorizon.length; k++) {\n        used = changedHorizon[k].boundary === affectedBoundary;\n      }\n\n      if (!used) {\n        affectedBoundary.x2New = maxXNew;\n      }\n    }\n\n    Array.prototype.splice.apply(horizon, [i, j - i + 1].concat(changedHorizon));\n  }\n\n  for (const horizonPart of horizon) {\n    const affectedBoundary = horizonPart.boundary;\n\n    if (affectedBoundary.x2New === undefined) {\n      affectedBoundary.x2New = Math.max(width, affectedBoundary.x2);\n    }\n  }\n}\n\nclass TextLayerRenderTask {\n  constructor({\n    textContent,\n    textContentStream,\n    container,\n    viewport,\n    textDivs,\n    textContentItemsStr,\n    enhanceTextSelection\n  }) {\n    this._textContent = textContent;\n    this._textContentStream = textContentStream;\n    this._container = container;\n    this._document = container.ownerDocument;\n    this._viewport = viewport;\n    this._textDivs = textDivs || [];\n    this._textContentItemsStr = textContentItemsStr || [];\n    this._enhanceTextSelection = !!enhanceTextSelection;\n    this._fontInspectorEnabled = !!globalThis.FontInspector?.enabled;\n    this._reader = null;\n    this._layoutTextLastFontSize = null;\n    this._layoutTextLastFontFamily = null;\n    this._layoutTextCtx = null;\n    this._textDivProperties = new WeakMap();\n    this._renderingDone = false;\n    this._canceled = false;\n    this._capability = (0, _util.createPromiseCapability)();\n    this._renderTimer = null;\n    this._bounds = [];\n\n    this._capability.promise.finally(() => {\n      if (!this._enhanceTextSelection) {\n        this._textDivProperties = null;\n      }\n\n      if (this._layoutTextCtx) {\n        this._layoutTextCtx.canvas.width = 0;\n        this._layoutTextCtx.canvas.height = 0;\n        this._layoutTextCtx = null;\n      }\n    }).catch(() => {});\n  }\n\n  get promise() {\n    return this._capability.promise;\n  }\n\n  cancel() {\n    this._canceled = true;\n\n    if (this._reader) {\n      this._reader.cancel(new _util.AbortException(\"TextLayer task cancelled.\")).catch(() => {});\n\n      this._reader = null;\n    }\n\n    if (this._renderTimer !== null) {\n      clearTimeout(this._renderTimer);\n      this._renderTimer = null;\n    }\n\n    this._capability.reject(new Error(\"TextLayer task cancelled.\"));\n  }\n\n  _processItems(items, styleCache) {\n    for (let i = 0, len = items.length; i < len; i++) {\n      if (items[i].str === undefined) {\n        if (items[i].type === \"beginMarkedContentProps\" || items[i].type === \"beginMarkedContent\") {\n          const parent = this._container;\n          this._container = document.createElement(\"span\");\n\n          this._container.classList.add(\"markedContent\");\n\n          if (items[i].id !== null) {\n            this._container.setAttribute(\"id\", `${items[i].id}`);\n          }\n\n          parent.appendChild(this._container);\n        } else if (items[i].type === \"endMarkedContent\") {\n          this._container = this._container.parentNode;\n        }\n\n        continue;\n      }\n\n      this._textContentItemsStr.push(items[i].str);\n\n      appendText(this, items[i], styleCache, this._layoutTextCtx);\n    }\n  }\n\n  _layoutText(textDiv) {\n    const textDivProperties = this._textDivProperties.get(textDiv);\n\n    let transform = \"\";\n\n    if (textDivProperties.canvasWidth !== 0 && textDivProperties.hasText) {\n      const {\n        fontSize,\n        fontFamily\n      } = textDiv.style;\n\n      if (fontSize !== this._layoutTextLastFontSize || fontFamily !== this._layoutTextLastFontFamily) {\n        this._layoutTextCtx.font = `${fontSize} ${fontFamily}`;\n        this._layoutTextLastFontSize = fontSize;\n        this._layoutTextLastFontFamily = fontFamily;\n      }\n\n      const {\n        width\n      } = this._layoutTextCtx.measureText(textDiv.textContent);\n\n      if (width > 0) {\n        const scale = textDivProperties.canvasWidth / width;\n\n        if (this._enhanceTextSelection) {\n          textDivProperties.scale = scale;\n        }\n\n        transform = `scaleX(${scale})`;\n      }\n    }\n\n    if (textDivProperties.angle !== 0) {\n      transform = `rotate(${textDivProperties.angle}deg) ${transform}`;\n    }\n\n    if (transform.length > 0) {\n      if (this._enhanceTextSelection) {\n        textDivProperties.originalTransform = transform;\n      }\n\n      textDiv.style.transform = transform;\n    }\n\n    if (textDivProperties.hasText) {\n      this._container.appendChild(textDiv);\n    }\n\n    if (textDivProperties.hasEOL) {\n      const br = document.createElement(\"br\");\n      br.setAttribute(\"role\", \"presentation\");\n\n      this._container.appendChild(br);\n    }\n  }\n\n  _render(timeout = 0) {\n    const capability = (0, _util.createPromiseCapability)();\n    let styleCache = Object.create(null);\n\n    const canvas = this._document.createElement(\"canvas\");\n\n    canvas.height = canvas.width = DEFAULT_FONT_SIZE;\n    canvas.mozOpaque = true;\n    this._layoutTextCtx = canvas.getContext(\"2d\", {\n      alpha: false\n    });\n\n    if (this._textContent) {\n      const textItems = this._textContent.items;\n      const textStyles = this._textContent.styles;\n\n      this._processItems(textItems, textStyles);\n\n      capability.resolve();\n    } else if (this._textContentStream) {\n      const pump = () => {\n        this._reader.read().then(({\n          value,\n          done\n        }) => {\n          if (done) {\n            capability.resolve();\n            return;\n          }\n\n          Object.assign(styleCache, value.styles);\n\n          this._processItems(value.items, styleCache);\n\n          pump();\n        }, capability.reject);\n      };\n\n      this._reader = this._textContentStream.getReader();\n      pump();\n    } else {\n      throw new Error('Neither \"textContent\" nor \"textContentStream\" parameters specified.');\n    }\n\n    capability.promise.then(() => {\n      styleCache = null;\n\n      if (!timeout) {\n        render(this);\n      } else {\n        this._renderTimer = setTimeout(() => {\n          render(this);\n          this._renderTimer = null;\n        }, timeout);\n      }\n    }, this._capability.reject);\n  }\n\n  expandTextDivs(expandDivs = false) {\n    if (!this._enhanceTextSelection || !this._renderingDone) {\n      return;\n    }\n\n    if (this._bounds !== null) {\n      expand(this);\n      this._bounds = null;\n    }\n\n    const transformBuf = [],\n          paddingBuf = [];\n\n    for (let i = 0, ii = this._textDivs.length; i < ii; i++) {\n      const div = this._textDivs[i];\n\n      const divProps = this._textDivProperties.get(div);\n\n      if (!divProps.hasText) {\n        continue;\n      }\n\n      if (expandDivs) {\n        transformBuf.length = 0;\n        paddingBuf.length = 0;\n\n        if (divProps.originalTransform) {\n          transformBuf.push(divProps.originalTransform);\n        }\n\n        if (divProps.paddingTop > 0) {\n          paddingBuf.push(`${divProps.paddingTop}px`);\n          transformBuf.push(`translateY(${-divProps.paddingTop}px)`);\n        } else {\n          paddingBuf.push(0);\n        }\n\n        if (divProps.paddingRight > 0) {\n          paddingBuf.push(`${divProps.paddingRight / divProps.scale}px`);\n        } else {\n          paddingBuf.push(0);\n        }\n\n        if (divProps.paddingBottom > 0) {\n          paddingBuf.push(`${divProps.paddingBottom}px`);\n        } else {\n          paddingBuf.push(0);\n        }\n\n        if (divProps.paddingLeft > 0) {\n          paddingBuf.push(`${divProps.paddingLeft / divProps.scale}px`);\n          transformBuf.push(`translateX(${-divProps.paddingLeft / divProps.scale}px)`);\n        } else {\n          paddingBuf.push(0);\n        }\n\n        div.style.padding = paddingBuf.join(\" \");\n\n        if (transformBuf.length) {\n          div.style.transform = transformBuf.join(\" \");\n        }\n      } else {\n        div.style.padding = null;\n        div.style.transform = divProps.originalTransform;\n      }\n    }\n  }\n\n}\n\nfunction renderTextLayer(renderParameters) {\n  const task = new TextLayerRenderTask({\n    textContent: renderParameters.textContent,\n    textContentStream: renderParameters.textContentStream,\n    container: renderParameters.container,\n    viewport: renderParameters.viewport,\n    textDivs: renderParameters.textDivs,\n    textContentItemsStr: renderParameters.textContentItemsStr,\n    enhanceTextSelection: renderParameters.enhanceTextSelection\n  });\n\n  task._render(renderParameters.timeout);\n\n  return task;\n}\n\n/***/ }),\n/* 22 */\n/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {\n\n\n\nObject.defineProperty(exports, \"__esModule\", ({\n  value: true\n}));\nexports.SVGGraphics = void 0;\n\nvar _util = __w_pdfjs_require__(1);\n\nvar _display_utils = __w_pdfjs_require__(5);\n\nvar _is_node = __w_pdfjs_require__(3);\n\nlet SVGGraphics = class {\n  constructor() {\n    (0, _util.unreachable)(\"Not implemented: SVGGraphics\");\n  }\n\n};\nexports.SVGGraphics = SVGGraphics;\n{\n  const SVG_DEFAULTS = {\n    fontStyle: \"normal\",\n    fontWeight: \"normal\",\n    fillColor: \"#000000\"\n  };\n  const XML_NS = \"http://www.w3.org/XML/1998/namespace\";\n  const XLINK_NS = \"http://www.w3.org/1999/xlink\";\n  const LINE_CAP_STYLES = [\"butt\", \"round\", \"square\"];\n  const LINE_JOIN_STYLES = [\"miter\", \"round\", \"bevel\"];\n\n  const createObjectURL = function (data, contentType = \"\", forceDataSchema = false) {\n    if (URL.createObjectURL && typeof Blob !== \"undefined\" && !forceDataSchema) {\n      return URL.createObjectURL(new Blob([data], {\n        type: contentType\n      }));\n    }\n\n    const digits = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\";\n    let buffer = `data:${contentType};base64,`;\n\n    for (let i = 0, ii = data.length; i < ii; i += 3) {\n      const b1 = data[i] & 0xff;\n      const b2 = data[i + 1] & 0xff;\n      const b3 = data[i + 2] & 0xff;\n      const d1 = b1 >> 2,\n            d2 = (b1 & 3) << 4 | b2 >> 4;\n      const d3 = i + 1 < ii ? (b2 & 0xf) << 2 | b3 >> 6 : 64;\n      const d4 = i + 2 < ii ? b3 & 0x3f : 64;\n      buffer += digits[d1] + digits[d2] + digits[d3] + digits[d4];\n    }\n\n    return buffer;\n  };\n\n  const convertImgDataToPng = function () {\n    const PNG_HEADER = new Uint8Array([0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a]);\n    const CHUNK_WRAPPER_SIZE = 12;\n    const crcTable = new Int32Array(256);\n\n    for (let i = 0; i < 256; i++) {\n      let c = i;\n\n      for (let h = 0; h < 8; h++) {\n        if (c & 1) {\n          c = 0xedb88320 ^ c >> 1 & 0x7fffffff;\n        } else {\n          c = c >> 1 & 0x7fffffff;\n        }\n      }\n\n      crcTable[i] = c;\n    }\n\n    function crc32(data, start, end) {\n      let crc = -1;\n\n      for (let i = start; i < end; i++) {\n        const a = (crc ^ data[i]) & 0xff;\n        const b = crcTable[a];\n        crc = crc >>> 8 ^ b;\n      }\n\n      return crc ^ -1;\n    }\n\n    function writePngChunk(type, body, data, offset) {\n      let p = offset;\n      const len = body.length;\n      data[p] = len >> 24 & 0xff;\n      data[p + 1] = len >> 16 & 0xff;\n      data[p + 2] = len >> 8 & 0xff;\n      data[p + 3] = len & 0xff;\n      p += 4;\n      data[p] = type.charCodeAt(0) & 0xff;\n      data[p + 1] = type.charCodeAt(1) & 0xff;\n      data[p + 2] = type.charCodeAt(2) & 0xff;\n      data[p + 3] = type.charCodeAt(3) & 0xff;\n      p += 4;\n      data.set(body, p);\n      p += body.length;\n      const crc = crc32(data, offset + 4, p);\n      data[p] = crc >> 24 & 0xff;\n      data[p + 1] = crc >> 16 & 0xff;\n      data[p + 2] = crc >> 8 & 0xff;\n      data[p + 3] = crc & 0xff;\n    }\n\n    function adler32(data, start, end) {\n      let a = 1;\n      let b = 0;\n\n      for (let i = start; i < end; ++i) {\n        a = (a + (data[i] & 0xff)) % 65521;\n        b = (b + a) % 65521;\n      }\n\n      return b << 16 | a;\n    }\n\n    function deflateSync(literals) {\n      if (!_is_node.isNodeJS) {\n        return deflateSyncUncompressed(literals);\n      }\n\n      try {\n        let input;\n\n        if (parseInt(process.versions.node) >= 8) {\n          input = literals;\n        } else {\n          input = Buffer.from(literals);\n        }\n\n        const output = require(\"zlib\").deflateSync(input, {\n          level: 9\n        });\n\n        return output instanceof Uint8Array ? output : new Uint8Array(output);\n      } catch (e) {\n        (0, _util.warn)(\"Not compressing PNG because zlib.deflateSync is unavailable: \" + e);\n      }\n\n      return deflateSyncUncompressed(literals);\n    }\n\n    function deflateSyncUncompressed(literals) {\n      let len = literals.length;\n      const maxBlockLength = 0xffff;\n      const deflateBlocks = Math.ceil(len / maxBlockLength);\n      const idat = new Uint8Array(2 + len + deflateBlocks * 5 + 4);\n      let pi = 0;\n      idat[pi++] = 0x78;\n      idat[pi++] = 0x9c;\n      let pos = 0;\n\n      while (len > maxBlockLength) {\n        idat[pi++] = 0x00;\n        idat[pi++] = 0xff;\n        idat[pi++] = 0xff;\n        idat[pi++] = 0x00;\n        idat[pi++] = 0x00;\n        idat.set(literals.subarray(pos, pos + maxBlockLength), pi);\n        pi += maxBlockLength;\n        pos += maxBlockLength;\n        len -= maxBlockLength;\n      }\n\n      idat[pi++] = 0x01;\n      idat[pi++] = len & 0xff;\n      idat[pi++] = len >> 8 & 0xff;\n      idat[pi++] = ~len & 0xffff & 0xff;\n      idat[pi++] = (~len & 0xffff) >> 8 & 0xff;\n      idat.set(literals.subarray(pos), pi);\n      pi += literals.length - pos;\n      const adler = adler32(literals, 0, literals.length);\n      idat[pi++] = adler >> 24 & 0xff;\n      idat[pi++] = adler >> 16 & 0xff;\n      idat[pi++] = adler >> 8 & 0xff;\n      idat[pi++] = adler & 0xff;\n      return idat;\n    }\n\n    function encode(imgData, kind, forceDataSchema, isMask) {\n      const width = imgData.width;\n      const height = imgData.height;\n      let bitDepth, colorType, lineSize;\n      const bytes = imgData.data;\n\n      switch (kind) {\n        case _util.ImageKind.GRAYSCALE_1BPP:\n          colorType = 0;\n          bitDepth = 1;\n          lineSize = width + 7 >> 3;\n          break;\n\n        case _util.ImageKind.RGB_24BPP:\n          colorType = 2;\n          bitDepth = 8;\n          lineSize = width * 3;\n          break;\n\n        case _util.ImageKind.RGBA_32BPP:\n          colorType = 6;\n          bitDepth = 8;\n          lineSize = width * 4;\n          break;\n\n        default:\n          throw new Error(\"invalid format\");\n      }\n\n      const literals = new Uint8Array((1 + lineSize) * height);\n      let offsetLiterals = 0,\n          offsetBytes = 0;\n\n      for (let y = 0; y < height; ++y) {\n        literals[offsetLiterals++] = 0;\n        literals.set(bytes.subarray(offsetBytes, offsetBytes + lineSize), offsetLiterals);\n        offsetBytes += lineSize;\n        offsetLiterals += lineSize;\n      }\n\n      if (kind === _util.ImageKind.GRAYSCALE_1BPP && isMask) {\n        offsetLiterals = 0;\n\n        for (let y = 0; y < height; y++) {\n          offsetLiterals++;\n\n          for (let i = 0; i < lineSize; i++) {\n            literals[offsetLiterals++] ^= 0xff;\n          }\n        }\n      }\n\n      const ihdr = new Uint8Array([width >> 24 & 0xff, width >> 16 & 0xff, width >> 8 & 0xff, width & 0xff, height >> 24 & 0xff, height >> 16 & 0xff, height >> 8 & 0xff, height & 0xff, bitDepth, colorType, 0x00, 0x00, 0x00]);\n      const idat = deflateSync(literals);\n      const pngLength = PNG_HEADER.length + CHUNK_WRAPPER_SIZE * 3 + ihdr.length + idat.length;\n      const data = new Uint8Array(pngLength);\n      let offset = 0;\n      data.set(PNG_HEADER, offset);\n      offset += PNG_HEADER.length;\n      writePngChunk(\"IHDR\", ihdr, data, offset);\n      offset += CHUNK_WRAPPER_SIZE + ihdr.length;\n      writePngChunk(\"IDATA\", idat, data, offset);\n      offset += CHUNK_WRAPPER_SIZE + idat.length;\n      writePngChunk(\"IEND\", new Uint8Array(0), data, offset);\n      return createObjectURL(data, \"image/png\", forceDataSchema);\n    }\n\n    return function convertImgDataToPng(imgData, forceDataSchema, isMask) {\n      const kind = imgData.kind === undefined ? _util.ImageKind.GRAYSCALE_1BPP : imgData.kind;\n      return encode(imgData, kind, forceDataSchema, isMask);\n    };\n  }();\n\n  class SVGExtraState {\n    constructor() {\n      this.fontSizeScale = 1;\n      this.fontWeight = SVG_DEFAULTS.fontWeight;\n      this.fontSize = 0;\n      this.textMatrix = _util.IDENTITY_MATRIX;\n      this.fontMatrix = _util.FONT_IDENTITY_MATRIX;\n      this.leading = 0;\n      this.textRenderingMode = _util.TextRenderingMode.FILL;\n      this.textMatrixScale = 1;\n      this.x = 0;\n      this.y = 0;\n      this.lineX = 0;\n      this.lineY = 0;\n      this.charSpacing = 0;\n      this.wordSpacing = 0;\n      this.textHScale = 1;\n      this.textRise = 0;\n      this.fillColor = SVG_DEFAULTS.fillColor;\n      this.strokeColor = \"#000000\";\n      this.fillAlpha = 1;\n      this.strokeAlpha = 1;\n      this.lineWidth = 1;\n      this.lineJoin = \"\";\n      this.lineCap = \"\";\n      this.miterLimit = 0;\n      this.dashArray = [];\n      this.dashPhase = 0;\n      this.dependencies = [];\n      this.activeClipUrl = null;\n      this.clipGroup = null;\n      this.maskId = \"\";\n    }\n\n    clone() {\n      return Object.create(this);\n    }\n\n    setCurrentPoint(x, y) {\n      this.x = x;\n      this.y = y;\n    }\n\n  }\n\n  function opListToTree(opList) {\n    let opTree = [];\n    const tmp = [];\n\n    for (const opListElement of opList) {\n      if (opListElement.fn === \"save\") {\n        opTree.push({\n          fnId: 92,\n          fn: \"group\",\n          items: []\n        });\n        tmp.push(opTree);\n        opTree = opTree[opTree.length - 1].items;\n        continue;\n      }\n\n      if (opListElement.fn === \"restore\") {\n        opTree = tmp.pop();\n      } else {\n        opTree.push(opListElement);\n      }\n    }\n\n    return opTree;\n  }\n\n  function pf(value) {\n    if (Number.isInteger(value)) {\n      return value.toString();\n    }\n\n    const s = value.toFixed(10);\n    let i = s.length - 1;\n\n    if (s[i] !== \"0\") {\n      return s;\n    }\n\n    do {\n      i--;\n    } while (s[i] === \"0\");\n\n    return s.substring(0, s[i] === \".\" ? i : i + 1);\n  }\n\n  function pm(m) {\n    if (m[4] === 0 && m[5] === 0) {\n      if (m[1] === 0 && m[2] === 0) {\n        if (m[0] === 1 && m[3] === 1) {\n          return \"\";\n        }\n\n        return `scale(${pf(m[0])} ${pf(m[3])})`;\n      }\n\n      if (m[0] === m[3] && m[1] === -m[2]) {\n        const a = Math.acos(m[0]) * 180 / Math.PI;\n        return `rotate(${pf(a)})`;\n      }\n    } else {\n      if (m[0] === 1 && m[1] === 0 && m[2] === 0 && m[3] === 1) {\n        return `translate(${pf(m[4])} ${pf(m[5])})`;\n      }\n    }\n\n    return `matrix(${pf(m[0])} ${pf(m[1])} ${pf(m[2])} ${pf(m[3])} ${pf(m[4])} ` + `${pf(m[5])})`;\n  }\n\n  let clipCount = 0;\n  let maskCount = 0;\n  let shadingCount = 0;\n  exports.SVGGraphics = SVGGraphics = class {\n    constructor(commonObjs, objs, forceDataSchema = false) {\n      this.svgFactory = new _display_utils.DOMSVGFactory();\n      this.current = new SVGExtraState();\n      this.transformMatrix = _util.IDENTITY_MATRIX;\n      this.transformStack = [];\n      this.extraStack = [];\n      this.commonObjs = commonObjs;\n      this.objs = objs;\n      this.pendingClip = null;\n      this.pendingEOFill = false;\n      this.embedFonts = false;\n      this.embeddedFonts = Object.create(null);\n      this.cssStyle = null;\n      this.forceDataSchema = !!forceDataSchema;\n      this._operatorIdMapping = [];\n\n      for (const op in _util.OPS) {\n        this._operatorIdMapping[_util.OPS[op]] = op;\n      }\n    }\n\n    save() {\n      this.transformStack.push(this.transformMatrix);\n      const old = this.current;\n      this.extraStack.push(old);\n      this.current = old.clone();\n    }\n\n    restore() {\n      this.transformMatrix = this.transformStack.pop();\n      this.current = this.extraStack.pop();\n      this.pendingClip = null;\n      this.tgrp = null;\n    }\n\n    group(items) {\n      this.save();\n      this.executeOpTree(items);\n      this.restore();\n    }\n\n    loadDependencies(operatorList) {\n      const fnArray = operatorList.fnArray;\n      const argsArray = operatorList.argsArray;\n\n      for (let i = 0, ii = fnArray.length; i < ii; i++) {\n        if (fnArray[i] !== _util.OPS.dependency) {\n          continue;\n        }\n\n        for (const obj of argsArray[i]) {\n          const objsPool = obj.startsWith(\"g_\") ? this.commonObjs : this.objs;\n          const promise = new Promise(resolve => {\n            objsPool.get(obj, resolve);\n          });\n          this.current.dependencies.push(promise);\n        }\n      }\n\n      return Promise.all(this.current.dependencies);\n    }\n\n    transform(a, b, c, d, e, f) {\n      const transformMatrix = [a, b, c, d, e, f];\n      this.transformMatrix = _util.Util.transform(this.transformMatrix, transformMatrix);\n      this.tgrp = null;\n    }\n\n    getSVG(operatorList, viewport) {\n      this.viewport = viewport;\n\n      const svgElement = this._initialize(viewport);\n\n      return this.loadDependencies(operatorList).then(() => {\n        this.transformMatrix = _util.IDENTITY_MATRIX;\n        this.executeOpTree(this.convertOpList(operatorList));\n        return svgElement;\n      });\n    }\n\n    convertOpList(operatorList) {\n      const operatorIdMapping = this._operatorIdMapping;\n      const argsArray = operatorList.argsArray;\n      const fnArray = operatorList.fnArray;\n      const opList = [];\n\n      for (let i = 0, ii = fnArray.length; i < ii; i++) {\n        const fnId = fnArray[i];\n        opList.push({\n          fnId,\n          fn: operatorIdMapping[fnId],\n          args: argsArray[i]\n        });\n      }\n\n      return opListToTree(opList);\n    }\n\n    executeOpTree(opTree) {\n      for (const opTreeElement of opTree) {\n        const fn = opTreeElement.fn;\n        const fnId = opTreeElement.fnId;\n        const args = opTreeElement.args;\n\n        switch (fnId | 0) {\n          case _util.OPS.beginText:\n            this.beginText();\n            break;\n\n          case _util.OPS.dependency:\n            break;\n\n          case _util.OPS.setLeading:\n            this.setLeading(args);\n            break;\n\n          case _util.OPS.setLeadingMoveText:\n            this.setLeadingMoveText(args[0], args[1]);\n            break;\n\n          case _util.OPS.setFont:\n            this.setFont(args);\n            break;\n\n          case _util.OPS.showText:\n            this.showText(args[0]);\n            break;\n\n          case _util.OPS.showSpacedText:\n            this.showText(args[0]);\n            break;\n\n          case _util.OPS.endText:\n            this.endText();\n            break;\n\n          case _util.OPS.moveText:\n            this.moveText(args[0], args[1]);\n            break;\n\n          case _util.OPS.setCharSpacing:\n            this.setCharSpacing(args[0]);\n            break;\n\n          case _util.OPS.setWordSpacing:\n            this.setWordSpacing(args[0]);\n            break;\n\n          case _util.OPS.setHScale:\n            this.setHScale(args[0]);\n            break;\n\n          case _util.OPS.setTextMatrix:\n            this.setTextMatrix(args[0], args[1], args[2], args[3], args[4], args[5]);\n            break;\n\n          case _util.OPS.setTextRise:\n            this.setTextRise(args[0]);\n            break;\n\n          case _util.OPS.setTextRenderingMode:\n            this.setTextRenderingMode(args[0]);\n            break;\n\n          case _util.OPS.setLineWidth:\n            this.setLineWidth(args[0]);\n            break;\n\n          case _util.OPS.setLineJoin:\n            this.setLineJoin(args[0]);\n            break;\n\n          case _util.OPS.setLineCap:\n            this.setLineCap(args[0]);\n            break;\n\n          case _util.OPS.setMiterLimit:\n            this.setMiterLimit(args[0]);\n            break;\n\n          case _util.OPS.setFillRGBColor:\n            this.setFillRGBColor(args[0], args[1], args[2]);\n            break;\n\n          case _util.OPS.setStrokeRGBColor:\n            this.setStrokeRGBColor(args[0], args[1], args[2]);\n            break;\n\n          case _util.OPS.setStrokeColorN:\n            this.setStrokeColorN(args);\n            break;\n\n          case _util.OPS.setFillColorN:\n            this.setFillColorN(args);\n            break;\n\n          case _util.OPS.shadingFill:\n            this.shadingFill(args[0]);\n            break;\n\n          case _util.OPS.setDash:\n            this.setDash(args[0], args[1]);\n            break;\n\n          case _util.OPS.setRenderingIntent:\n            this.setRenderingIntent(args[0]);\n            break;\n\n          case _util.OPS.setFlatness:\n            this.setFlatness(args[0]);\n            break;\n\n          case _util.OPS.setGState:\n            this.setGState(args[0]);\n            break;\n\n          case _util.OPS.fill:\n            this.fill();\n            break;\n\n          case _util.OPS.eoFill:\n            this.eoFill();\n            break;\n\n          case _util.OPS.stroke:\n            this.stroke();\n            break;\n\n          case _util.OPS.fillStroke:\n            this.fillStroke();\n            break;\n\n          case _util.OPS.eoFillStroke:\n            this.eoFillStroke();\n            break;\n\n          case _util.OPS.clip:\n            this.clip(\"nonzero\");\n            break;\n\n          case _util.OPS.eoClip:\n            this.clip(\"evenodd\");\n            break;\n\n          case _util.OPS.paintSolidColorImageMask:\n            this.paintSolidColorImageMask();\n            break;\n\n          case _util.OPS.paintImageXObject:\n            this.paintImageXObject(args[0]);\n            break;\n\n          case _util.OPS.paintInlineImageXObject:\n            this.paintInlineImageXObject(args[0]);\n            break;\n\n          case _util.OPS.paintImageMaskXObject:\n            this.paintImageMaskXObject(args[0]);\n            break;\n\n          case _util.OPS.paintFormXObjectBegin:\n            this.paintFormXObjectBegin(args[0], args[1]);\n            break;\n\n          case _util.OPS.paintFormXObjectEnd:\n            this.paintFormXObjectEnd();\n            break;\n\n          case _util.OPS.closePath:\n            this.closePath();\n            break;\n\n          case _util.OPS.closeStroke:\n            this.closeStroke();\n            break;\n\n          case _util.OPS.closeFillStroke:\n            this.closeFillStroke();\n            break;\n\n          case _util.OPS.closeEOFillStroke:\n            this.closeEOFillStroke();\n            break;\n\n          case _util.OPS.nextLine:\n            this.nextLine();\n            break;\n\n          case _util.OPS.transform:\n            this.transform(args[0], args[1], args[2], args[3], args[4], args[5]);\n            break;\n\n          case _util.OPS.constructPath:\n            this.constructPath(args[0], args[1]);\n            break;\n\n          case _util.OPS.endPath:\n            this.endPath();\n            break;\n\n          case 92:\n            this.group(opTreeElement.items);\n            break;\n\n          default:\n            (0, _util.warn)(`Unimplemented operator ${fn}`);\n            break;\n        }\n      }\n    }\n\n    setWordSpacing(wordSpacing) {\n      this.current.wordSpacing = wordSpacing;\n    }\n\n    setCharSpacing(charSpacing) {\n      this.current.charSpacing = charSpacing;\n    }\n\n    nextLine() {\n      this.moveText(0, this.current.leading);\n    }\n\n    setTextMatrix(a, b, c, d, e, f) {\n      const current = this.current;\n      current.textMatrix = current.lineMatrix = [a, b, c, d, e, f];\n      current.textMatrixScale = Math.hypot(a, b);\n      current.x = current.lineX = 0;\n      current.y = current.lineY = 0;\n      current.xcoords = [];\n      current.ycoords = [];\n      current.tspan = this.svgFactory.createElement(\"svg:tspan\");\n      current.tspan.setAttributeNS(null, \"font-family\", current.fontFamily);\n      current.tspan.setAttributeNS(null, \"font-size\", `${pf(current.fontSize)}px`);\n      current.tspan.setAttributeNS(null, \"y\", pf(-current.y));\n      current.txtElement = this.svgFactory.createElement(\"svg:text\");\n      current.txtElement.appendChild(current.tspan);\n    }\n\n    beginText() {\n      const current = this.current;\n      current.x = current.lineX = 0;\n      current.y = current.lineY = 0;\n      current.textMatrix = _util.IDENTITY_MATRIX;\n      current.lineMatrix = _util.IDENTITY_MATRIX;\n      current.textMatrixScale = 1;\n      current.tspan = this.svgFactory.createElement(\"svg:tspan\");\n      current.txtElement = this.svgFactory.createElement(\"svg:text\");\n      current.txtgrp = this.svgFactory.createElement(\"svg:g\");\n      current.xcoords = [];\n      current.ycoords = [];\n    }\n\n    moveText(x, y) {\n      const current = this.current;\n      current.x = current.lineX += x;\n      current.y = current.lineY += y;\n      current.xcoords = [];\n      current.ycoords = [];\n      current.tspan = this.svgFactory.createElement(\"svg:tspan\");\n      current.tspan.setAttributeNS(null, \"font-family\", current.fontFamily);\n      current.tspan.setAttributeNS(null, \"font-size\", `${pf(current.fontSize)}px`);\n      current.tspan.setAttributeNS(null, \"y\", pf(-current.y));\n    }\n\n    showText(glyphs) {\n      const current = this.current;\n      const font = current.font;\n      const fontSize = current.fontSize;\n\n      if (fontSize === 0) {\n        return;\n      }\n\n      const fontSizeScale = current.fontSizeScale;\n      const charSpacing = current.charSpacing;\n      const wordSpacing = current.wordSpacing;\n      const fontDirection = current.fontDirection;\n      const textHScale = current.textHScale * fontDirection;\n      const vertical = font.vertical;\n      const spacingDir = vertical ? 1 : -1;\n      const defaultVMetrics = font.defaultVMetrics;\n      const widthAdvanceScale = fontSize * current.fontMatrix[0];\n      let x = 0;\n\n      for (const glyph of glyphs) {\n        if (glyph === null) {\n          x += fontDirection * wordSpacing;\n          continue;\n        } else if (typeof glyph === \"number\") {\n          x += spacingDir * glyph * fontSize / 1000;\n          continue;\n        }\n\n        const spacing = (glyph.isSpace ? wordSpacing : 0) + charSpacing;\n        const character = glyph.fontChar;\n        let scaledX, scaledY;\n        let width = glyph.width;\n\n        if (vertical) {\n          let vx;\n          const vmetric = glyph.vmetric || defaultVMetrics;\n          vx = glyph.vmetric ? vmetric[1] : width * 0.5;\n          vx = -vx * widthAdvanceScale;\n          const vy = vmetric[2] * widthAdvanceScale;\n          width = vmetric ? -vmetric[0] : width;\n          scaledX = vx / fontSizeScale;\n          scaledY = (x + vy) / fontSizeScale;\n        } else {\n          scaledX = x / fontSizeScale;\n          scaledY = 0;\n        }\n\n        if (glyph.isInFont || font.missingFile) {\n          current.xcoords.push(current.x + scaledX);\n\n          if (vertical) {\n            current.ycoords.push(-current.y + scaledY);\n          }\n\n          current.tspan.textContent += character;\n        } else {}\n\n        let charWidth;\n\n        if (vertical) {\n          charWidth = width * widthAdvanceScale - spacing * fontDirection;\n        } else {\n          charWidth = width * widthAdvanceScale + spacing * fontDirection;\n        }\n\n        x += charWidth;\n      }\n\n      current.tspan.setAttributeNS(null, \"x\", current.xcoords.map(pf).join(\" \"));\n\n      if (vertical) {\n        current.tspan.setAttributeNS(null, \"y\", current.ycoords.map(pf).join(\" \"));\n      } else {\n        current.tspan.setAttributeNS(null, \"y\", pf(-current.y));\n      }\n\n      if (vertical) {\n        current.y -= x;\n      } else {\n        current.x += x * textHScale;\n      }\n\n      current.tspan.setAttributeNS(null, \"font-family\", current.fontFamily);\n      current.tspan.setAttributeNS(null, \"font-size\", `${pf(current.fontSize)}px`);\n\n      if (current.fontStyle !== SVG_DEFAULTS.fontStyle) {\n        current.tspan.setAttributeNS(null, \"font-style\", current.fontStyle);\n      }\n\n      if (current.fontWeight !== SVG_DEFAULTS.fontWeight) {\n        current.tspan.setAttributeNS(null, \"font-weight\", current.fontWeight);\n      }\n\n      const fillStrokeMode = current.textRenderingMode & _util.TextRenderingMode.FILL_STROKE_MASK;\n\n      if (fillStrokeMode === _util.TextRenderingMode.FILL || fillStrokeMode === _util.TextRenderingMode.FILL_STROKE) {\n        if (current.fillColor !== SVG_DEFAULTS.fillColor) {\n          current.tspan.setAttributeNS(null, \"fill\", current.fillColor);\n        }\n\n        if (current.fillAlpha < 1) {\n          current.tspan.setAttributeNS(null, \"fill-opacity\", current.fillAlpha);\n        }\n      } else if (current.textRenderingMode === _util.TextRenderingMode.ADD_TO_PATH) {\n        current.tspan.setAttributeNS(null, \"fill\", \"transparent\");\n      } else {\n        current.tspan.setAttributeNS(null, \"fill\", \"none\");\n      }\n\n      if (fillStrokeMode === _util.TextRenderingMode.STROKE || fillStrokeMode === _util.TextRenderingMode.FILL_STROKE) {\n        const lineWidthScale = 1 / (current.textMatrixScale || 1);\n\n        this._setStrokeAttributes(current.tspan, lineWidthScale);\n      }\n\n      let textMatrix = current.textMatrix;\n\n      if (current.textRise !== 0) {\n        textMatrix = textMatrix.slice();\n        textMatrix[5] += current.textRise;\n      }\n\n      current.txtElement.setAttributeNS(null, \"transform\", `${pm(textMatrix)} scale(${pf(textHScale)}, -1)`);\n      current.txtElement.setAttributeNS(XML_NS, \"xml:space\", \"preserve\");\n      current.txtElement.appendChild(current.tspan);\n      current.txtgrp.appendChild(current.txtElement);\n\n      this._ensureTransformGroup().appendChild(current.txtElement);\n    }\n\n    setLeadingMoveText(x, y) {\n      this.setLeading(-y);\n      this.moveText(x, y);\n    }\n\n    addFontStyle(fontObj) {\n      if (!fontObj.data) {\n        throw new Error(\"addFontStyle: No font data available, \" + 'ensure that the \"fontExtraProperties\" API parameter is set.');\n      }\n\n      if (!this.cssStyle) {\n        this.cssStyle = this.svgFactory.createElement(\"svg:style\");\n        this.cssStyle.setAttributeNS(null, \"type\", \"text/css\");\n        this.defs.appendChild(this.cssStyle);\n      }\n\n      const url = createObjectURL(fontObj.data, fontObj.mimetype, this.forceDataSchema);\n      this.cssStyle.textContent += `@font-face { font-family: \"${fontObj.loadedName}\";` + ` src: url(${url}); }\\n`;\n    }\n\n    setFont(details) {\n      const current = this.current;\n      const fontObj = this.commonObjs.get(details[0]);\n      let size = details[1];\n      current.font = fontObj;\n\n      if (this.embedFonts && !fontObj.missingFile && !this.embeddedFonts[fontObj.loadedName]) {\n        this.addFontStyle(fontObj);\n        this.embeddedFonts[fontObj.loadedName] = fontObj;\n      }\n\n      current.fontMatrix = fontObj.fontMatrix || _util.FONT_IDENTITY_MATRIX;\n      let bold = \"normal\";\n\n      if (fontObj.black) {\n        bold = \"900\";\n      } else if (fontObj.bold) {\n        bold = \"bold\";\n      }\n\n      const italic = fontObj.italic ? \"italic\" : \"normal\";\n\n      if (size < 0) {\n        size = -size;\n        current.fontDirection = -1;\n      } else {\n        current.fontDirection = 1;\n      }\n\n      current.fontSize = size;\n      current.fontFamily = fontObj.loadedName;\n      current.fontWeight = bold;\n      current.fontStyle = italic;\n      current.tspan = this.svgFactory.createElement(\"svg:tspan\");\n      current.tspan.setAttributeNS(null, \"y\", pf(-current.y));\n      current.xcoords = [];\n      current.ycoords = [];\n    }\n\n    endText() {\n      const current = this.current;\n\n      if (current.textRenderingMode & _util.TextRenderingMode.ADD_TO_PATH_FLAG && current.txtElement?.hasChildNodes()) {\n        current.element = current.txtElement;\n        this.clip(\"nonzero\");\n        this.endPath();\n      }\n    }\n\n    setLineWidth(width) {\n      if (width > 0) {\n        this.current.lineWidth = width;\n      }\n    }\n\n    setLineCap(style) {\n      this.current.lineCap = LINE_CAP_STYLES[style];\n    }\n\n    setLineJoin(style) {\n      this.current.lineJoin = LINE_JOIN_STYLES[style];\n    }\n\n    setMiterLimit(limit) {\n      this.current.miterLimit = limit;\n    }\n\n    setStrokeAlpha(strokeAlpha) {\n      this.current.strokeAlpha = strokeAlpha;\n    }\n\n    setStrokeRGBColor(r, g, b) {\n      this.current.strokeColor = _util.Util.makeHexColor(r, g, b);\n    }\n\n    setFillAlpha(fillAlpha) {\n      this.current.fillAlpha = fillAlpha;\n    }\n\n    setFillRGBColor(r, g, b) {\n      this.current.fillColor = _util.Util.makeHexColor(r, g, b);\n      this.current.tspan = this.svgFactory.createElement(\"svg:tspan\");\n      this.current.xcoords = [];\n      this.current.ycoords = [];\n    }\n\n    setStrokeColorN(args) {\n      this.current.strokeColor = this._makeColorN_Pattern(args);\n    }\n\n    setFillColorN(args) {\n      this.current.fillColor = this._makeColorN_Pattern(args);\n    }\n\n    shadingFill(args) {\n      const width = this.viewport.width;\n      const height = this.viewport.height;\n\n      const inv = _util.Util.inverseTransform(this.transformMatrix);\n\n      const bl = _util.Util.applyTransform([0, 0], inv);\n\n      const br = _util.Util.applyTransform([0, height], inv);\n\n      const ul = _util.Util.applyTransform([width, 0], inv);\n\n      const ur = _util.Util.applyTransform([width, height], inv);\n\n      const x0 = Math.min(bl[0], br[0], ul[0], ur[0]);\n      const y0 = Math.min(bl[1], br[1], ul[1], ur[1]);\n      const x1 = Math.max(bl[0], br[0], ul[0], ur[0]);\n      const y1 = Math.max(bl[1], br[1], ul[1], ur[1]);\n      const rect = this.svgFactory.createElement(\"svg:rect\");\n      rect.setAttributeNS(null, \"x\", x0);\n      rect.setAttributeNS(null, \"y\", y0);\n      rect.setAttributeNS(null, \"width\", x1 - x0);\n      rect.setAttributeNS(null, \"height\", y1 - y0);\n      rect.setAttributeNS(null, \"fill\", this._makeShadingPattern(args));\n\n      if (this.current.fillAlpha < 1) {\n        rect.setAttributeNS(null, \"fill-opacity\", this.current.fillAlpha);\n      }\n\n      this._ensureTransformGroup().appendChild(rect);\n    }\n\n    _makeColorN_Pattern(args) {\n      if (args[0] === \"TilingPattern\") {\n        return this._makeTilingPattern(args);\n      }\n\n      return this._makeShadingPattern(args);\n    }\n\n    _makeTilingPattern(args) {\n      const color = args[1];\n      const operatorList = args[2];\n      const matrix = args[3] || _util.IDENTITY_MATRIX;\n      const [x0, y0, x1, y1] = args[4];\n      const xstep = args[5];\n      const ystep = args[6];\n      const paintType = args[7];\n      const tilingId = `shading${shadingCount++}`;\n\n      const [tx0, ty0, tx1, ty1] = _util.Util.normalizeRect([..._util.Util.applyTransform([x0, y0], matrix), ..._util.Util.applyTransform([x1, y1], matrix)]);\n\n      const [xscale, yscale] = _util.Util.singularValueDecompose2dScale(matrix);\n\n      const txstep = xstep * xscale;\n      const tystep = ystep * yscale;\n      const tiling = this.svgFactory.createElement(\"svg:pattern\");\n      tiling.setAttributeNS(null, \"id\", tilingId);\n      tiling.setAttributeNS(null, \"patternUnits\", \"userSpaceOnUse\");\n      tiling.setAttributeNS(null, \"width\", txstep);\n      tiling.setAttributeNS(null, \"height\", tystep);\n      tiling.setAttributeNS(null, \"x\", `${tx0}`);\n      tiling.setAttributeNS(null, \"y\", `${ty0}`);\n      const svg = this.svg;\n      const transformMatrix = this.transformMatrix;\n      const fillColor = this.current.fillColor;\n      const strokeColor = this.current.strokeColor;\n      const bbox = this.svgFactory.create(tx1 - tx0, ty1 - ty0);\n      this.svg = bbox;\n      this.transformMatrix = matrix;\n\n      if (paintType === 2) {\n        const cssColor = _util.Util.makeHexColor(...color);\n\n        this.current.fillColor = cssColor;\n        this.current.strokeColor = cssColor;\n      }\n\n      this.executeOpTree(this.convertOpList(operatorList));\n      this.svg = svg;\n      this.transformMatrix = transformMatrix;\n      this.current.fillColor = fillColor;\n      this.current.strokeColor = strokeColor;\n      tiling.appendChild(bbox.childNodes[0]);\n      this.defs.appendChild(tiling);\n      return `url(#${tilingId})`;\n    }\n\n    _makeShadingPattern(args) {\n      if (typeof args === \"string\") {\n        args = this.objs.get(args);\n      }\n\n      switch (args[0]) {\n        case \"RadialAxial\":\n          const shadingId = `shading${shadingCount++}`;\n          const colorStops = args[3];\n          let gradient;\n\n          switch (args[1]) {\n            case \"axial\":\n              const point0 = args[4];\n              const point1 = args[5];\n              gradient = this.svgFactory.createElement(\"svg:linearGradient\");\n              gradient.setAttributeNS(null, \"id\", shadingId);\n              gradient.setAttributeNS(null, \"gradientUnits\", \"userSpaceOnUse\");\n              gradient.setAttributeNS(null, \"x1\", point0[0]);\n              gradient.setAttributeNS(null, \"y1\", point0[1]);\n              gradient.setAttributeNS(null, \"x2\", point1[0]);\n              gradient.setAttributeNS(null, \"y2\", point1[1]);\n              break;\n\n            case \"radial\":\n              const focalPoint = args[4];\n              const circlePoint = args[5];\n              const focalRadius = args[6];\n              const circleRadius = args[7];\n              gradient = this.svgFactory.createElement(\"svg:radialGradient\");\n              gradient.setAttributeNS(null, \"id\", shadingId);\n              gradient.setAttributeNS(null, \"gradientUnits\", \"userSpaceOnUse\");\n              gradient.setAttributeNS(null, \"cx\", circlePoint[0]);\n              gradient.setAttributeNS(null, \"cy\", circlePoint[1]);\n              gradient.setAttributeNS(null, \"r\", circleRadius);\n              gradient.setAttributeNS(null, \"fx\", focalPoint[0]);\n              gradient.setAttributeNS(null, \"fy\", focalPoint[1]);\n              gradient.setAttributeNS(null, \"fr\", focalRadius);\n              break;\n\n            default:\n              throw new Error(`Unknown RadialAxial type: ${args[1]}`);\n          }\n\n          for (const colorStop of colorStops) {\n            const stop = this.svgFactory.createElement(\"svg:stop\");\n            stop.setAttributeNS(null, \"offset\", colorStop[0]);\n            stop.setAttributeNS(null, \"stop-color\", colorStop[1]);\n            gradient.appendChild(stop);\n          }\n\n          this.defs.appendChild(gradient);\n          return `url(#${shadingId})`;\n\n        case \"Mesh\":\n          (0, _util.warn)(\"Unimplemented pattern Mesh\");\n          return null;\n\n        case \"Dummy\":\n          return \"hotpink\";\n\n        default:\n          throw new Error(`Unknown IR type: ${args[0]}`);\n      }\n    }\n\n    setDash(dashArray, dashPhase) {\n      this.current.dashArray = dashArray;\n      this.current.dashPhase = dashPhase;\n    }\n\n    constructPath(ops, args) {\n      const current = this.current;\n      let x = current.x,\n          y = current.y;\n      let d = [];\n      let j = 0;\n\n      for (const op of ops) {\n        switch (op | 0) {\n          case _util.OPS.rectangle:\n            x = args[j++];\n            y = args[j++];\n            const width = args[j++];\n            const height = args[j++];\n            const xw = x + width;\n            const yh = y + height;\n            d.push(\"M\", pf(x), pf(y), \"L\", pf(xw), pf(y), \"L\", pf(xw), pf(yh), \"L\", pf(x), pf(yh), \"Z\");\n            break;\n\n          case _util.OPS.moveTo:\n            x = args[j++];\n            y = args[j++];\n            d.push(\"M\", pf(x), pf(y));\n            break;\n\n          case _util.OPS.lineTo:\n            x = args[j++];\n            y = args[j++];\n            d.push(\"L\", pf(x), pf(y));\n            break;\n\n          case _util.OPS.curveTo:\n            x = args[j + 4];\n            y = args[j + 5];\n            d.push(\"C\", pf(args[j]), pf(args[j + 1]), pf(args[j + 2]), pf(args[j + 3]), pf(x), pf(y));\n            j += 6;\n            break;\n\n          case _util.OPS.curveTo2:\n            d.push(\"C\", pf(x), pf(y), pf(args[j]), pf(args[j + 1]), pf(args[j + 2]), pf(args[j + 3]));\n            x = args[j + 2];\n            y = args[j + 3];\n            j += 4;\n            break;\n\n          case _util.OPS.curveTo3:\n            x = args[j + 2];\n            y = args[j + 3];\n            d.push(\"C\", pf(args[j]), pf(args[j + 1]), pf(x), pf(y), pf(x), pf(y));\n            j += 4;\n            break;\n\n          case _util.OPS.closePath:\n            d.push(\"Z\");\n            break;\n        }\n      }\n\n      d = d.join(\" \");\n\n      if (current.path && ops.length > 0 && ops[0] !== _util.OPS.rectangle && ops[0] !== _util.OPS.moveTo) {\n        d = current.path.getAttributeNS(null, \"d\") + d;\n      } else {\n        current.path = this.svgFactory.createElement(\"svg:path\");\n\n        this._ensureTransformGroup().appendChild(current.path);\n      }\n\n      current.path.setAttributeNS(null, \"d\", d);\n      current.path.setAttributeNS(null, \"fill\", \"none\");\n      current.element = current.path;\n      current.setCurrentPoint(x, y);\n    }\n\n    endPath() {\n      const current = this.current;\n      current.path = null;\n\n      if (!this.pendingClip) {\n        return;\n      }\n\n      if (!current.element) {\n        this.pendingClip = null;\n        return;\n      }\n\n      const clipId = `clippath${clipCount++}`;\n      const clipPath = this.svgFactory.createElement(\"svg:clipPath\");\n      clipPath.setAttributeNS(null, \"id\", clipId);\n      clipPath.setAttributeNS(null, \"transform\", pm(this.transformMatrix));\n      const clipElement = current.element.cloneNode(true);\n\n      if (this.pendingClip === \"evenodd\") {\n        clipElement.setAttributeNS(null, \"clip-rule\", \"evenodd\");\n      } else {\n        clipElement.setAttributeNS(null, \"clip-rule\", \"nonzero\");\n      }\n\n      this.pendingClip = null;\n      clipPath.appendChild(clipElement);\n      this.defs.appendChild(clipPath);\n\n      if (current.activeClipUrl) {\n        current.clipGroup = null;\n\n        for (const prev of this.extraStack) {\n          prev.clipGroup = null;\n        }\n\n        clipPath.setAttributeNS(null, \"clip-path\", current.activeClipUrl);\n      }\n\n      current.activeClipUrl = `url(#${clipId})`;\n      this.tgrp = null;\n    }\n\n    clip(type) {\n      this.pendingClip = type;\n    }\n\n    closePath() {\n      const current = this.current;\n\n      if (current.path) {\n        const d = `${current.path.getAttributeNS(null, \"d\")}Z`;\n        current.path.setAttributeNS(null, \"d\", d);\n      }\n    }\n\n    setLeading(leading) {\n      this.current.leading = -leading;\n    }\n\n    setTextRise(textRise) {\n      this.current.textRise = textRise;\n    }\n\n    setTextRenderingMode(textRenderingMode) {\n      this.current.textRenderingMode = textRenderingMode;\n    }\n\n    setHScale(scale) {\n      this.current.textHScale = scale / 100;\n    }\n\n    setRenderingIntent(intent) {}\n\n    setFlatness(flatness) {}\n\n    setGState(states) {\n      for (const [key, value] of states) {\n        switch (key) {\n          case \"LW\":\n            this.setLineWidth(value);\n            break;\n\n          case \"LC\":\n            this.setLineCap(value);\n            break;\n\n          case \"LJ\":\n            this.setLineJoin(value);\n            break;\n\n          case \"ML\":\n            this.setMiterLimit(value);\n            break;\n\n          case \"D\":\n            this.setDash(value[0], value[1]);\n            break;\n\n          case \"RI\":\n            this.setRenderingIntent(value);\n            break;\n\n          case \"FL\":\n            this.setFlatness(value);\n            break;\n\n          case \"Font\":\n            this.setFont(value);\n            break;\n\n          case \"CA\":\n            this.setStrokeAlpha(value);\n            break;\n\n          case \"ca\":\n            this.setFillAlpha(value);\n            break;\n\n          default:\n            (0, _util.warn)(`Unimplemented graphic state operator ${key}`);\n            break;\n        }\n      }\n    }\n\n    fill() {\n      const current = this.current;\n\n      if (current.element) {\n        current.element.setAttributeNS(null, \"fill\", current.fillColor);\n        current.element.setAttributeNS(null, \"fill-opacity\", current.fillAlpha);\n        this.endPath();\n      }\n    }\n\n    stroke() {\n      const current = this.current;\n\n      if (current.element) {\n        this._setStrokeAttributes(current.element);\n\n        current.element.setAttributeNS(null, \"fill\", \"none\");\n        this.endPath();\n      }\n    }\n\n    _setStrokeAttributes(element, lineWidthScale = 1) {\n      const current = this.current;\n      let dashArray = current.dashArray;\n\n      if (lineWidthScale !== 1 && dashArray.length > 0) {\n        dashArray = dashArray.map(function (value) {\n          return lineWidthScale * value;\n        });\n      }\n\n      element.setAttributeNS(null, \"stroke\", current.strokeColor);\n      element.setAttributeNS(null, \"stroke-opacity\", current.strokeAlpha);\n      element.setAttributeNS(null, \"stroke-miterlimit\", pf(current.miterLimit));\n      element.setAttributeNS(null, \"stroke-linecap\", current.lineCap);\n      element.setAttributeNS(null, \"stroke-linejoin\", current.lineJoin);\n      element.setAttributeNS(null, \"stroke-width\", pf(lineWidthScale * current.lineWidth) + \"px\");\n      element.setAttributeNS(null, \"stroke-dasharray\", dashArray.map(pf).join(\" \"));\n      element.setAttributeNS(null, \"stroke-dashoffset\", pf(lineWidthScale * current.dashPhase) + \"px\");\n    }\n\n    eoFill() {\n      if (this.current.element) {\n        this.current.element.setAttributeNS(null, \"fill-rule\", \"evenodd\");\n      }\n\n      this.fill();\n    }\n\n    fillStroke() {\n      this.stroke();\n      this.fill();\n    }\n\n    eoFillStroke() {\n      if (this.current.element) {\n        this.current.element.setAttributeNS(null, \"fill-rule\", \"evenodd\");\n      }\n\n      this.fillStroke();\n    }\n\n    closeStroke() {\n      this.closePath();\n      this.stroke();\n    }\n\n    closeFillStroke() {\n      this.closePath();\n      this.fillStroke();\n    }\n\n    closeEOFillStroke() {\n      this.closePath();\n      this.eoFillStroke();\n    }\n\n    paintSolidColorImageMask() {\n      const rect = this.svgFactory.createElement(\"svg:rect\");\n      rect.setAttributeNS(null, \"x\", \"0\");\n      rect.setAttributeNS(null, \"y\", \"0\");\n      rect.setAttributeNS(null, \"width\", \"1px\");\n      rect.setAttributeNS(null, \"height\", \"1px\");\n      rect.setAttributeNS(null, \"fill\", this.current.fillColor);\n\n      this._ensureTransformGroup().appendChild(rect);\n    }\n\n    paintImageXObject(objId) {\n      const imgData = objId.startsWith(\"g_\") ? this.commonObjs.get(objId) : this.objs.get(objId);\n\n      if (!imgData) {\n        (0, _util.warn)(`Dependent image with object ID ${objId} is not ready yet`);\n        return;\n      }\n\n      this.paintInlineImageXObject(imgData);\n    }\n\n    paintInlineImageXObject(imgData, mask) {\n      const width = imgData.width;\n      const height = imgData.height;\n      const imgSrc = convertImgDataToPng(imgData, this.forceDataSchema, !!mask);\n      const cliprect = this.svgFactory.createElement(\"svg:rect\");\n      cliprect.setAttributeNS(null, \"x\", \"0\");\n      cliprect.setAttributeNS(null, \"y\", \"0\");\n      cliprect.setAttributeNS(null, \"width\", pf(width));\n      cliprect.setAttributeNS(null, \"height\", pf(height));\n      this.current.element = cliprect;\n      this.clip(\"nonzero\");\n      const imgEl = this.svgFactory.createElement(\"svg:image\");\n      imgEl.setAttributeNS(XLINK_NS, \"xlink:href\", imgSrc);\n      imgEl.setAttributeNS(null, \"x\", \"0\");\n      imgEl.setAttributeNS(null, \"y\", pf(-height));\n      imgEl.setAttributeNS(null, \"width\", pf(width) + \"px\");\n      imgEl.setAttributeNS(null, \"height\", pf(height) + \"px\");\n      imgEl.setAttributeNS(null, \"transform\", `scale(${pf(1 / width)} ${pf(-1 / height)})`);\n\n      if (mask) {\n        mask.appendChild(imgEl);\n      } else {\n        this._ensureTransformGroup().appendChild(imgEl);\n      }\n    }\n\n    paintImageMaskXObject(imgData) {\n      const current = this.current;\n      const width = imgData.width;\n      const height = imgData.height;\n      const fillColor = current.fillColor;\n      current.maskId = `mask${maskCount++}`;\n      const mask = this.svgFactory.createElement(\"svg:mask\");\n      mask.setAttributeNS(null, \"id\", current.maskId);\n      const rect = this.svgFactory.createElement(\"svg:rect\");\n      rect.setAttributeNS(null, \"x\", \"0\");\n      rect.setAttributeNS(null, \"y\", \"0\");\n      rect.setAttributeNS(null, \"width\", pf(width));\n      rect.setAttributeNS(null, \"height\", pf(height));\n      rect.setAttributeNS(null, \"fill\", fillColor);\n      rect.setAttributeNS(null, \"mask\", `url(#${current.maskId})`);\n      this.defs.appendChild(mask);\n\n      this._ensureTransformGroup().appendChild(rect);\n\n      this.paintInlineImageXObject(imgData, mask);\n    }\n\n    paintFormXObjectBegin(matrix, bbox) {\n      if (Array.isArray(matrix) && matrix.length === 6) {\n        this.transform(matrix[0], matrix[1], matrix[2], matrix[3], matrix[4], matrix[5]);\n      }\n\n      if (bbox) {\n        const width = bbox[2] - bbox[0];\n        const height = bbox[3] - bbox[1];\n        const cliprect = this.svgFactory.createElement(\"svg:rect\");\n        cliprect.setAttributeNS(null, \"x\", bbox[0]);\n        cliprect.setAttributeNS(null, \"y\", bbox[1]);\n        cliprect.setAttributeNS(null, \"width\", pf(width));\n        cliprect.setAttributeNS(null, \"height\", pf(height));\n        this.current.element = cliprect;\n        this.clip(\"nonzero\");\n        this.endPath();\n      }\n    }\n\n    paintFormXObjectEnd() {}\n\n    _initialize(viewport) {\n      const svg = this.svgFactory.create(viewport.width, viewport.height);\n      const definitions = this.svgFactory.createElement(\"svg:defs\");\n      svg.appendChild(definitions);\n      this.defs = definitions;\n      const rootGroup = this.svgFactory.createElement(\"svg:g\");\n      rootGroup.setAttributeNS(null, \"transform\", pm(viewport.transform));\n      svg.appendChild(rootGroup);\n      this.svg = rootGroup;\n      return svg;\n    }\n\n    _ensureClipGroup() {\n      if (!this.current.clipGroup) {\n        const clipGroup = this.svgFactory.createElement(\"svg:g\");\n        clipGroup.setAttributeNS(null, \"clip-path\", this.current.activeClipUrl);\n        this.svg.appendChild(clipGroup);\n        this.current.clipGroup = clipGroup;\n      }\n\n      return this.current.clipGroup;\n    }\n\n    _ensureTransformGroup() {\n      if (!this.tgrp) {\n        this.tgrp = this.svgFactory.createElement(\"svg:g\");\n        this.tgrp.setAttributeNS(null, \"transform\", pm(this.transformMatrix));\n\n        if (this.current.activeClipUrl) {\n          this._ensureClipGroup().appendChild(this.tgrp);\n        } else {\n          this.svg.appendChild(this.tgrp);\n        }\n      }\n\n      return this.tgrp;\n    }\n\n  };\n}\n\n/***/ }),\n/* 23 */\n/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {\n\n\n\nObject.defineProperty(exports, \"__esModule\", ({\n  value: true\n}));\nexports.PDFNodeStream = void 0;\n\nvar _util = __w_pdfjs_require__(1);\n\nvar _network_utils = __w_pdfjs_require__(24);\n\n;\n\nconst fs = require(\"fs\");\n\nconst http = require(\"http\");\n\nconst https = require(\"https\");\n\nconst url = require(\"url\");\n\nconst fileUriRegex = /^file:\\/\\/\\/[a-zA-Z]:\\//;\n\nfunction parseUrl(sourceUrl) {\n  const parsedUrl = url.parse(sourceUrl);\n\n  if (parsedUrl.protocol === \"file:\" || parsedUrl.host) {\n    return parsedUrl;\n  }\n\n  if (/^[a-z]:[/\\\\]/i.test(sourceUrl)) {\n    return url.parse(`file:///${sourceUrl}`);\n  }\n\n  if (!parsedUrl.host) {\n    parsedUrl.protocol = \"file:\";\n  }\n\n  return parsedUrl;\n}\n\nclass PDFNodeStream {\n  constructor(source) {\n    this.source = source;\n    this.url = parseUrl(source.url);\n    this.isHttp = this.url.protocol === \"http:\" || this.url.protocol === \"https:\";\n    this.isFsUrl = this.url.protocol === \"file:\";\n    this.httpHeaders = this.isHttp && source.httpHeaders || {};\n    this._fullRequestReader = null;\n    this._rangeRequestReaders = [];\n  }\n\n  get _progressiveDataLength() {\n    return this._fullRequestReader?._loaded ?? 0;\n  }\n\n  getFullReader() {\n    (0, _util.assert)(!this._fullRequestReader, \"PDFNodeStream.getFullReader can only be called once.\");\n    this._fullRequestReader = this.isFsUrl ? new PDFNodeStreamFsFullReader(this) : new PDFNodeStreamFullReader(this);\n    return this._fullRequestReader;\n  }\n\n  getRangeReader(start, end) {\n    if (end <= this._progressiveDataLength) {\n      return null;\n    }\n\n    const rangeReader = this.isFsUrl ? new PDFNodeStreamFsRangeReader(this, start, end) : new PDFNodeStreamRangeReader(this, start, end);\n\n    this._rangeRequestReaders.push(rangeReader);\n\n    return rangeReader;\n  }\n\n  cancelAllRequests(reason) {\n    if (this._fullRequestReader) {\n      this._fullRequestReader.cancel(reason);\n    }\n\n    for (const reader of this._rangeRequestReaders.slice(0)) {\n      reader.cancel(reason);\n    }\n  }\n\n}\n\nexports.PDFNodeStream = PDFNodeStream;\n\nclass BaseFullReader {\n  constructor(stream) {\n    this._url = stream.url;\n    this._done = false;\n    this._storedError = null;\n    this.onProgress = null;\n    const source = stream.source;\n    this._contentLength = source.length;\n    this._loaded = 0;\n    this._filename = null;\n    this._disableRange = source.disableRange || false;\n    this._rangeChunkSize = source.rangeChunkSize;\n\n    if (!this._rangeChunkSize && !this._disableRange) {\n      this._disableRange = true;\n    }\n\n    this._isStreamingSupported = !source.disableStream;\n    this._isRangeSupported = !source.disableRange;\n    this._readableStream = null;\n    this._readCapability = (0, _util.createPromiseCapability)();\n    this._headersCapability = (0, _util.createPromiseCapability)();\n  }\n\n  get headersReady() {\n    return this._headersCapability.promise;\n  }\n\n  get filename() {\n    return this._filename;\n  }\n\n  get contentLength() {\n    return this._contentLength;\n  }\n\n  get isRangeSupported() {\n    return this._isRangeSupported;\n  }\n\n  get isStreamingSupported() {\n    return this._isStreamingSupported;\n  }\n\n  async read() {\n    await this._readCapability.promise;\n\n    if (this._done) {\n      return {\n        value: undefined,\n        done: true\n      };\n    }\n\n    if (this._storedError) {\n      throw this._storedError;\n    }\n\n    const chunk = this._readableStream.read();\n\n    if (chunk === null) {\n      this._readCapability = (0, _util.createPromiseCapability)();\n      return this.read();\n    }\n\n    this._loaded += chunk.length;\n\n    if (this.onProgress) {\n      this.onProgress({\n        loaded: this._loaded,\n        total: this._contentLength\n      });\n    }\n\n    const buffer = new Uint8Array(chunk).buffer;\n    return {\n      value: buffer,\n      done: false\n    };\n  }\n\n  cancel(reason) {\n    if (!this._readableStream) {\n      this._error(reason);\n\n      return;\n    }\n\n    this._readableStream.destroy(reason);\n  }\n\n  _error(reason) {\n    this._storedError = reason;\n\n    this._readCapability.resolve();\n  }\n\n  _setReadableStream(readableStream) {\n    this._readableStream = readableStream;\n    readableStream.on(\"readable\", () => {\n      this._readCapability.resolve();\n    });\n    readableStream.on(\"end\", () => {\n      readableStream.destroy();\n      this._done = true;\n\n      this._readCapability.resolve();\n    });\n    readableStream.on(\"error\", reason => {\n      this._error(reason);\n    });\n\n    if (!this._isStreamingSupported && this._isRangeSupported) {\n      this._error(new _util.AbortException(\"streaming is disabled\"));\n    }\n\n    if (this._storedError) {\n      this._readableStream.destroy(this._storedError);\n    }\n  }\n\n}\n\nclass BaseRangeReader {\n  constructor(stream) {\n    this._url = stream.url;\n    this._done = false;\n    this._storedError = null;\n    this.onProgress = null;\n    this._loaded = 0;\n    this._readableStream = null;\n    this._readCapability = (0, _util.createPromiseCapability)();\n    const source = stream.source;\n    this._isStreamingSupported = !source.disableStream;\n  }\n\n  get isStreamingSupported() {\n    return this._isStreamingSupported;\n  }\n\n  async read() {\n    await this._readCapability.promise;\n\n    if (this._done) {\n      return {\n        value: undefined,\n        done: true\n      };\n    }\n\n    if (this._storedError) {\n      throw this._storedError;\n    }\n\n    const chunk = this._readableStream.read();\n\n    if (chunk === null) {\n      this._readCapability = (0, _util.createPromiseCapability)();\n      return this.read();\n    }\n\n    this._loaded += chunk.length;\n\n    if (this.onProgress) {\n      this.onProgress({\n        loaded: this._loaded\n      });\n    }\n\n    const buffer = new Uint8Array(chunk).buffer;\n    return {\n      value: buffer,\n      done: false\n    };\n  }\n\n  cancel(reason) {\n    if (!this._readableStream) {\n      this._error(reason);\n\n      return;\n    }\n\n    this._readableStream.destroy(reason);\n  }\n\n  _error(reason) {\n    this._storedError = reason;\n\n    this._readCapability.resolve();\n  }\n\n  _setReadableStream(readableStream) {\n    this._readableStream = readableStream;\n    readableStream.on(\"readable\", () => {\n      this._readCapability.resolve();\n    });\n    readableStream.on(\"end\", () => {\n      readableStream.destroy();\n      this._done = true;\n\n      this._readCapability.resolve();\n    });\n    readableStream.on(\"error\", reason => {\n      this._error(reason);\n    });\n\n    if (this._storedError) {\n      this._readableStream.destroy(this._storedError);\n    }\n  }\n\n}\n\nfunction createRequestOptions(parsedUrl, headers) {\n  return {\n    protocol: parsedUrl.protocol,\n    auth: parsedUrl.auth,\n    host: parsedUrl.hostname,\n    port: parsedUrl.port,\n    path: parsedUrl.path,\n    method: \"GET\",\n    headers\n  };\n}\n\nclass PDFNodeStreamFullReader extends BaseFullReader {\n  constructor(stream) {\n    super(stream);\n\n    const handleResponse = response => {\n      if (response.statusCode === 404) {\n        const error = new _util.MissingPDFException(`Missing PDF \"${this._url}\".`);\n        this._storedError = error;\n\n        this._headersCapability.reject(error);\n\n        return;\n      }\n\n      this._headersCapability.resolve();\n\n      this._setReadableStream(response);\n\n      const getResponseHeader = name => {\n        return this._readableStream.headers[name.toLowerCase()];\n      };\n\n      const {\n        allowRangeRequests,\n        suggestedLength\n      } = (0, _network_utils.validateRangeRequestCapabilities)({\n        getResponseHeader,\n        isHttp: stream.isHttp,\n        rangeChunkSize: this._rangeChunkSize,\n        disableRange: this._disableRange\n      });\n      this._isRangeSupported = allowRangeRequests;\n      this._contentLength = suggestedLength || this._contentLength;\n      this._filename = (0, _network_utils.extractFilenameFromHeader)(getResponseHeader);\n    };\n\n    this._request = null;\n\n    if (this._url.protocol === \"http:\") {\n      this._request = http.request(createRequestOptions(this._url, stream.httpHeaders), handleResponse);\n    } else {\n      this._request = https.request(createRequestOptions(this._url, stream.httpHeaders), handleResponse);\n    }\n\n    this._request.on(\"error\", reason => {\n      this._storedError = reason;\n\n      this._headersCapability.reject(reason);\n    });\n\n    this._request.end();\n  }\n\n}\n\nclass PDFNodeStreamRangeReader extends BaseRangeReader {\n  constructor(stream, start, end) {\n    super(stream);\n    this._httpHeaders = {};\n\n    for (const property in stream.httpHeaders) {\n      const value = stream.httpHeaders[property];\n\n      if (typeof value === \"undefined\") {\n        continue;\n      }\n\n      this._httpHeaders[property] = value;\n    }\n\n    this._httpHeaders.Range = `bytes=${start}-${end - 1}`;\n\n    const handleResponse = response => {\n      if (response.statusCode === 404) {\n        const error = new _util.MissingPDFException(`Missing PDF \"${this._url}\".`);\n        this._storedError = error;\n        return;\n      }\n\n      this._setReadableStream(response);\n    };\n\n    this._request = null;\n\n    if (this._url.protocol === \"http:\") {\n      this._request = http.request(createRequestOptions(this._url, this._httpHeaders), handleResponse);\n    } else {\n      this._request = https.request(createRequestOptions(this._url, this._httpHeaders), handleResponse);\n    }\n\n    this._request.on(\"error\", reason => {\n      this._storedError = reason;\n    });\n\n    this._request.end();\n  }\n\n}\n\nclass PDFNodeStreamFsFullReader extends BaseFullReader {\n  constructor(stream) {\n    super(stream);\n    let path = decodeURIComponent(this._url.path);\n\n    if (fileUriRegex.test(this._url.href)) {\n      path = path.replace(/^\\//, \"\");\n    }\n\n    fs.lstat(path, (error, stat) => {\n      if (error) {\n        if (error.code === \"ENOENT\") {\n          error = new _util.MissingPDFException(`Missing PDF \"${path}\".`);\n        }\n\n        this._storedError = error;\n\n        this._headersCapability.reject(error);\n\n        return;\n      }\n\n      this._contentLength = stat.size;\n\n      this._setReadableStream(fs.createReadStream(path));\n\n      this._headersCapability.resolve();\n    });\n  }\n\n}\n\nclass PDFNodeStreamFsRangeReader extends BaseRangeReader {\n  constructor(stream, start, end) {\n    super(stream);\n    let path = decodeURIComponent(this._url.path);\n\n    if (fileUriRegex.test(this._url.href)) {\n      path = path.replace(/^\\//, \"\");\n    }\n\n    this._setReadableStream(fs.createReadStream(path, {\n      start,\n      end: end - 1\n    }));\n  }\n\n}\n\n/***/ }),\n/* 24 */\n/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {\n\n\n\nObject.defineProperty(exports, \"__esModule\", ({\n  value: true\n}));\nexports.createResponseStatusError = createResponseStatusError;\nexports.extractFilenameFromHeader = extractFilenameFromHeader;\nexports.validateRangeRequestCapabilities = validateRangeRequestCapabilities;\nexports.validateResponseStatus = validateResponseStatus;\n\nvar _util = __w_pdfjs_require__(1);\n\nvar _content_disposition = __w_pdfjs_require__(25);\n\nvar _display_utils = __w_pdfjs_require__(5);\n\nfunction validateRangeRequestCapabilities({\n  getResponseHeader,\n  isHttp,\n  rangeChunkSize,\n  disableRange\n}) {\n  (0, _util.assert)(rangeChunkSize > 0, \"Range chunk size must be larger than zero\");\n  const returnValues = {\n    allowRangeRequests: false,\n    suggestedLength: undefined\n  };\n  const length = parseInt(getResponseHeader(\"Content-Length\"), 10);\n\n  if (!Number.isInteger(length)) {\n    return returnValues;\n  }\n\n  returnValues.suggestedLength = length;\n\n  if (length <= 2 * rangeChunkSize) {\n    return returnValues;\n  }\n\n  if (disableRange || !isHttp) {\n    return returnValues;\n  }\n\n  if (getResponseHeader(\"Accept-Ranges\") !== \"bytes\") {\n    return returnValues;\n  }\n\n  const contentEncoding = getResponseHeader(\"Content-Encoding\") || \"identity\";\n\n  if (contentEncoding !== \"identity\") {\n    return returnValues;\n  }\n\n  returnValues.allowRangeRequests = true;\n  return returnValues;\n}\n\nfunction extractFilenameFromHeader(getResponseHeader) {\n  const contentDisposition = getResponseHeader(\"Content-Disposition\");\n\n  if (contentDisposition) {\n    let filename = (0, _content_disposition.getFilenameFromContentDispositionHeader)(contentDisposition);\n\n    if (filename.includes(\"%\")) {\n      try {\n        filename = decodeURIComponent(filename);\n      } catch (ex) {}\n    }\n\n    if ((0, _display_utils.isPdfFile)(filename)) {\n      return filename;\n    }\n  }\n\n  return null;\n}\n\nfunction createResponseStatusError(status, url) {\n  if (status === 404 || status === 0 && url.startsWith(\"file:\")) {\n    return new _util.MissingPDFException('Missing PDF \"' + url + '\".');\n  }\n\n  return new _util.UnexpectedResponseException(`Unexpected server response (${status}) while retrieving PDF \"${url}\".`, status);\n}\n\nfunction validateResponseStatus(status) {\n  return status === 200 || status === 206;\n}\n\n/***/ }),\n/* 25 */\n/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {\n\n\n\nObject.defineProperty(exports, \"__esModule\", ({\n  value: true\n}));\nexports.getFilenameFromContentDispositionHeader = getFilenameFromContentDispositionHeader;\n\nvar _util = __w_pdfjs_require__(1);\n\nfunction getFilenameFromContentDispositionHeader(contentDisposition) {\n  let needsEncodingFixup = true;\n  let tmp = toParamRegExp(\"filename\\\\*\", \"i\").exec(contentDisposition);\n\n  if (tmp) {\n    tmp = tmp[1];\n    let filename = rfc2616unquote(tmp);\n    filename = unescape(filename);\n    filename = rfc5987decode(filename);\n    filename = rfc2047decode(filename);\n    return fixupEncoding(filename);\n  }\n\n  tmp = rfc2231getparam(contentDisposition);\n\n  if (tmp) {\n    const filename = rfc2047decode(tmp);\n    return fixupEncoding(filename);\n  }\n\n  tmp = toParamRegExp(\"filename\", \"i\").exec(contentDisposition);\n\n  if (tmp) {\n    tmp = tmp[1];\n    let filename = rfc2616unquote(tmp);\n    filename = rfc2047decode(filename);\n    return fixupEncoding(filename);\n  }\n\n  function toParamRegExp(attributePattern, flags) {\n    return new RegExp(\"(?:^|;)\\\\s*\" + attributePattern + \"\\\\s*=\\\\s*\" + \"(\" + '[^\";\\\\s][^;\\\\s]*' + \"|\" + '\"(?:[^\"\\\\\\\\]|\\\\\\\\\"?)+\"?' + \")\", flags);\n  }\n\n  function textdecode(encoding, value) {\n    if (encoding) {\n      if (!/^[\\x00-\\xFF]+$/.test(value)) {\n        return value;\n      }\n\n      try {\n        const decoder = new TextDecoder(encoding, {\n          fatal: true\n        });\n        const buffer = (0, _util.stringToBytes)(value);\n        value = decoder.decode(buffer);\n        needsEncodingFixup = false;\n      } catch (e) {}\n    }\n\n    return value;\n  }\n\n  function fixupEncoding(value) {\n    if (needsEncodingFixup && /[\\x80-\\xff]/.test(value)) {\n      value = textdecode(\"utf-8\", value);\n\n      if (needsEncodingFixup) {\n        value = textdecode(\"iso-8859-1\", value);\n      }\n    }\n\n    return value;\n  }\n\n  function rfc2231getparam(contentDispositionStr) {\n    const matches = [];\n    let match;\n    const iter = toParamRegExp(\"filename\\\\*((?!0\\\\d)\\\\d+)(\\\\*?)\", \"ig\");\n\n    while ((match = iter.exec(contentDispositionStr)) !== null) {\n      let [, n, quot, part] = match;\n      n = parseInt(n, 10);\n\n      if (n in matches) {\n        if (n === 0) {\n          break;\n        }\n\n        continue;\n      }\n\n      matches[n] = [quot, part];\n    }\n\n    const parts = [];\n\n    for (let n = 0; n < matches.length; ++n) {\n      if (!(n in matches)) {\n        break;\n      }\n\n      let [quot, part] = matches[n];\n      part = rfc2616unquote(part);\n\n      if (quot) {\n        part = unescape(part);\n\n        if (n === 0) {\n          part = rfc5987decode(part);\n        }\n      }\n\n      parts.push(part);\n    }\n\n    return parts.join(\"\");\n  }\n\n  function rfc2616unquote(value) {\n    if (value.startsWith('\"')) {\n      const parts = value.slice(1).split('\\\\\"');\n\n      for (let i = 0; i < parts.length; ++i) {\n        const quotindex = parts[i].indexOf('\"');\n\n        if (quotindex !== -1) {\n          parts[i] = parts[i].slice(0, quotindex);\n          parts.length = i + 1;\n        }\n\n        parts[i] = parts[i].replace(/\\\\(.)/g, \"$1\");\n      }\n\n      value = parts.join('\"');\n    }\n\n    return value;\n  }\n\n  function rfc5987decode(extvalue) {\n    const encodingend = extvalue.indexOf(\"'\");\n\n    if (encodingend === -1) {\n      return extvalue;\n    }\n\n    const encoding = extvalue.slice(0, encodingend);\n    const langvalue = extvalue.slice(encodingend + 1);\n    const value = langvalue.replace(/^[^']*'/, \"\");\n    return textdecode(encoding, value);\n  }\n\n  function rfc2047decode(value) {\n    if (!value.startsWith(\"=?\") || /[\\x00-\\x19\\x80-\\xff]/.test(value)) {\n      return value;\n    }\n\n    return value.replace(/=\\?([\\w-]*)\\?([QqBb])\\?((?:[^?]|\\?(?!=))*)\\?=/g, function (matches, charset, encoding, text) {\n      if (encoding === \"q\" || encoding === \"Q\") {\n        text = text.replace(/_/g, \" \");\n        text = text.replace(/=([0-9a-fA-F]{2})/g, function (match, hex) {\n          return String.fromCharCode(parseInt(hex, 16));\n        });\n        return textdecode(charset, text);\n      }\n\n      try {\n        text = atob(text);\n      } catch (e) {}\n\n      return textdecode(charset, text);\n    });\n  }\n\n  return \"\";\n}\n\n/***/ }),\n/* 26 */\n/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {\n\n\n\nObject.defineProperty(exports, \"__esModule\", ({\n  value: true\n}));\nexports.PDFNetworkStream = void 0;\n\nvar _util = __w_pdfjs_require__(1);\n\nvar _network_utils = __w_pdfjs_require__(24);\n\n;\nconst OK_RESPONSE = 200;\nconst PARTIAL_CONTENT_RESPONSE = 206;\n\nfunction getArrayBuffer(xhr) {\n  const data = xhr.response;\n\n  if (typeof data !== \"string\") {\n    return data;\n  }\n\n  const array = (0, _util.stringToBytes)(data);\n  return array.buffer;\n}\n\nclass NetworkManager {\n  constructor(url, args = {}) {\n    this.url = url;\n    this.isHttp = /^https?:/i.test(url);\n    this.httpHeaders = this.isHttp && args.httpHeaders || Object.create(null);\n    this.withCredentials = args.withCredentials || false;\n\n    this.getXhr = args.getXhr || function NetworkManager_getXhr() {\n      return new XMLHttpRequest();\n    };\n\n    this.currXhrId = 0;\n    this.pendingRequests = Object.create(null);\n  }\n\n  requestRange(begin, end, listeners) {\n    const args = {\n      begin,\n      end\n    };\n\n    for (const prop in listeners) {\n      args[prop] = listeners[prop];\n    }\n\n    return this.request(args);\n  }\n\n  requestFull(listeners) {\n    return this.request(listeners);\n  }\n\n  request(args) {\n    const xhr = this.getXhr();\n    const xhrId = this.currXhrId++;\n    const pendingRequest = this.pendingRequests[xhrId] = {\n      xhr\n    };\n    xhr.open(\"GET\", this.url);\n    xhr.withCredentials = this.withCredentials;\n\n    for (const property in this.httpHeaders) {\n      const value = this.httpHeaders[property];\n\n      if (typeof value === \"undefined\") {\n        continue;\n      }\n\n      xhr.setRequestHeader(property, value);\n    }\n\n    if (this.isHttp && \"begin\" in args && \"end\" in args) {\n      xhr.setRequestHeader(\"Range\", `bytes=${args.begin}-${args.end - 1}`);\n      pendingRequest.expectedStatus = PARTIAL_CONTENT_RESPONSE;\n    } else {\n      pendingRequest.expectedStatus = OK_RESPONSE;\n    }\n\n    xhr.responseType = \"arraybuffer\";\n\n    if (args.onError) {\n      xhr.onerror = function (evt) {\n        args.onError(xhr.status);\n      };\n    }\n\n    xhr.onreadystatechange = this.onStateChange.bind(this, xhrId);\n    xhr.onprogress = this.onProgress.bind(this, xhrId);\n    pendingRequest.onHeadersReceived = args.onHeadersReceived;\n    pendingRequest.onDone = args.onDone;\n    pendingRequest.onError = args.onError;\n    pendingRequest.onProgress = args.onProgress;\n    xhr.send(null);\n    return xhrId;\n  }\n\n  onProgress(xhrId, evt) {\n    const pendingRequest = this.pendingRequests[xhrId];\n\n    if (!pendingRequest) {\n      return;\n    }\n\n    pendingRequest.onProgress?.(evt);\n  }\n\n  onStateChange(xhrId, evt) {\n    const pendingRequest = this.pendingRequests[xhrId];\n\n    if (!pendingRequest) {\n      return;\n    }\n\n    const xhr = pendingRequest.xhr;\n\n    if (xhr.readyState >= 2 && pendingRequest.onHeadersReceived) {\n      pendingRequest.onHeadersReceived();\n      delete pendingRequest.onHeadersReceived;\n    }\n\n    if (xhr.readyState !== 4) {\n      return;\n    }\n\n    if (!(xhrId in this.pendingRequests)) {\n      return;\n    }\n\n    delete this.pendingRequests[xhrId];\n\n    if (xhr.status === 0 && this.isHttp) {\n      pendingRequest.onError?.(xhr.status);\n      return;\n    }\n\n    const xhrStatus = xhr.status || OK_RESPONSE;\n    const ok_response_on_range_request = xhrStatus === OK_RESPONSE && pendingRequest.expectedStatus === PARTIAL_CONTENT_RESPONSE;\n\n    if (!ok_response_on_range_request && xhrStatus !== pendingRequest.expectedStatus) {\n      pendingRequest.onError?.(xhr.status);\n      return;\n    }\n\n    const chunk = getArrayBuffer(xhr);\n\n    if (xhrStatus === PARTIAL_CONTENT_RESPONSE) {\n      const rangeHeader = xhr.getResponseHeader(\"Content-Range\");\n      const matches = /bytes (\\d+)-(\\d+)\\/(\\d+)/.exec(rangeHeader);\n      pendingRequest.onDone({\n        begin: parseInt(matches[1], 10),\n        chunk\n      });\n    } else if (chunk) {\n      pendingRequest.onDone({\n        begin: 0,\n        chunk\n      });\n    } else {\n      pendingRequest.onError?.(xhr.status);\n    }\n  }\n\n  getRequestXhr(xhrId) {\n    return this.pendingRequests[xhrId].xhr;\n  }\n\n  isPendingRequest(xhrId) {\n    return xhrId in this.pendingRequests;\n  }\n\n  abortRequest(xhrId) {\n    const xhr = this.pendingRequests[xhrId].xhr;\n    delete this.pendingRequests[xhrId];\n    xhr.abort();\n  }\n\n}\n\nclass PDFNetworkStream {\n  constructor(source) {\n    this._source = source;\n    this._manager = new NetworkManager(source.url, {\n      httpHeaders: source.httpHeaders,\n      withCredentials: source.withCredentials\n    });\n    this._rangeChunkSize = source.rangeChunkSize;\n    this._fullRequestReader = null;\n    this._rangeRequestReaders = [];\n  }\n\n  _onRangeRequestReaderClosed(reader) {\n    const i = this._rangeRequestReaders.indexOf(reader);\n\n    if (i >= 0) {\n      this._rangeRequestReaders.splice(i, 1);\n    }\n  }\n\n  getFullReader() {\n    (0, _util.assert)(!this._fullRequestReader, \"PDFNetworkStream.getFullReader can only be called once.\");\n    this._fullRequestReader = new PDFNetworkStreamFullRequestReader(this._manager, this._source);\n    return this._fullRequestReader;\n  }\n\n  getRangeReader(begin, end) {\n    const reader = new PDFNetworkStreamRangeRequestReader(this._manager, begin, end);\n    reader.onClosed = this._onRangeRequestReaderClosed.bind(this);\n\n    this._rangeRequestReaders.push(reader);\n\n    return reader;\n  }\n\n  cancelAllRequests(reason) {\n    this._fullRequestReader?.cancel(reason);\n\n    for (const reader of this._rangeRequestReaders.slice(0)) {\n      reader.cancel(reason);\n    }\n  }\n\n}\n\nexports.PDFNetworkStream = PDFNetworkStream;\n\nclass PDFNetworkStreamFullRequestReader {\n  constructor(manager, source) {\n    this._manager = manager;\n    const args = {\n      onHeadersReceived: this._onHeadersReceived.bind(this),\n      onDone: this._onDone.bind(this),\n      onError: this._onError.bind(this),\n      onProgress: this._onProgress.bind(this)\n    };\n    this._url = source.url;\n    this._fullRequestId = manager.requestFull(args);\n    this._headersReceivedCapability = (0, _util.createPromiseCapability)();\n    this._disableRange = source.disableRange || false;\n    this._contentLength = source.length;\n    this._rangeChunkSize = source.rangeChunkSize;\n\n    if (!this._rangeChunkSize && !this._disableRange) {\n      this._disableRange = true;\n    }\n\n    this._isStreamingSupported = false;\n    this._isRangeSupported = false;\n    this._cachedChunks = [];\n    this._requests = [];\n    this._done = false;\n    this._storedError = undefined;\n    this._filename = null;\n    this.onProgress = null;\n  }\n\n  _onHeadersReceived() {\n    const fullRequestXhrId = this._fullRequestId;\n\n    const fullRequestXhr = this._manager.getRequestXhr(fullRequestXhrId);\n\n    const getResponseHeader = name => {\n      return fullRequestXhr.getResponseHeader(name);\n    };\n\n    const {\n      allowRangeRequests,\n      suggestedLength\n    } = (0, _network_utils.validateRangeRequestCapabilities)({\n      getResponseHeader,\n      isHttp: this._manager.isHttp,\n      rangeChunkSize: this._rangeChunkSize,\n      disableRange: this._disableRange\n    });\n\n    if (allowRangeRequests) {\n      this._isRangeSupported = true;\n    }\n\n    this._contentLength = suggestedLength || this._contentLength;\n    this._filename = (0, _network_utils.extractFilenameFromHeader)(getResponseHeader);\n\n    if (this._isRangeSupported) {\n      this._manager.abortRequest(fullRequestXhrId);\n    }\n\n    this._headersReceivedCapability.resolve();\n  }\n\n  _onDone(data) {\n    if (data) {\n      if (this._requests.length > 0) {\n        const requestCapability = this._requests.shift();\n\n        requestCapability.resolve({\n          value: data.chunk,\n          done: false\n        });\n      } else {\n        this._cachedChunks.push(data.chunk);\n      }\n    }\n\n    this._done = true;\n\n    if (this._cachedChunks.length > 0) {\n      return;\n    }\n\n    for (const requestCapability of this._requests) {\n      requestCapability.resolve({\n        value: undefined,\n        done: true\n      });\n    }\n\n    this._requests.length = 0;\n  }\n\n  _onError(status) {\n    this._storedError = (0, _network_utils.createResponseStatusError)(status, this._url);\n\n    this._headersReceivedCapability.reject(this._storedError);\n\n    for (const requestCapability of this._requests) {\n      requestCapability.reject(this._storedError);\n    }\n\n    this._requests.length = 0;\n    this._cachedChunks.length = 0;\n  }\n\n  _onProgress(evt) {\n    this.onProgress?.({\n      loaded: evt.loaded,\n      total: evt.lengthComputable ? evt.total : this._contentLength\n    });\n  }\n\n  get filename() {\n    return this._filename;\n  }\n\n  get isRangeSupported() {\n    return this._isRangeSupported;\n  }\n\n  get isStreamingSupported() {\n    return this._isStreamingSupported;\n  }\n\n  get contentLength() {\n    return this._contentLength;\n  }\n\n  get headersReady() {\n    return this._headersReceivedCapability.promise;\n  }\n\n  async read() {\n    if (this._storedError) {\n      throw this._storedError;\n    }\n\n    if (this._cachedChunks.length > 0) {\n      const chunk = this._cachedChunks.shift();\n\n      return {\n        value: chunk,\n        done: false\n      };\n    }\n\n    if (this._done) {\n      return {\n        value: undefined,\n        done: true\n      };\n    }\n\n    const requestCapability = (0, _util.createPromiseCapability)();\n\n    this._requests.push(requestCapability);\n\n    return requestCapability.promise;\n  }\n\n  cancel(reason) {\n    this._done = true;\n\n    this._headersReceivedCapability.reject(reason);\n\n    for (const requestCapability of this._requests) {\n      requestCapability.resolve({\n        value: undefined,\n        done: true\n      });\n    }\n\n    this._requests.length = 0;\n\n    if (this._manager.isPendingRequest(this._fullRequestId)) {\n      this._manager.abortRequest(this._fullRequestId);\n    }\n\n    this._fullRequestReader = null;\n  }\n\n}\n\nclass PDFNetworkStreamRangeRequestReader {\n  constructor(manager, begin, end) {\n    this._manager = manager;\n    const args = {\n      onDone: this._onDone.bind(this),\n      onError: this._onError.bind(this),\n      onProgress: this._onProgress.bind(this)\n    };\n    this._url = manager.url;\n    this._requestId = manager.requestRange(begin, end, args);\n    this._requests = [];\n    this._queuedChunk = null;\n    this._done = false;\n    this._storedError = undefined;\n    this.onProgress = null;\n    this.onClosed = null;\n  }\n\n  _close() {\n    this.onClosed?.(this);\n  }\n\n  _onDone(data) {\n    const chunk = data.chunk;\n\n    if (this._requests.length > 0) {\n      const requestCapability = this._requests.shift();\n\n      requestCapability.resolve({\n        value: chunk,\n        done: false\n      });\n    } else {\n      this._queuedChunk = chunk;\n    }\n\n    this._done = true;\n\n    for (const requestCapability of this._requests) {\n      requestCapability.resolve({\n        value: undefined,\n        done: true\n      });\n    }\n\n    this._requests.length = 0;\n\n    this._close();\n  }\n\n  _onError(status) {\n    this._storedError = (0, _network_utils.createResponseStatusError)(status, this._url);\n\n    for (const requestCapability of this._requests) {\n      requestCapability.reject(this._storedError);\n    }\n\n    this._requests.length = 0;\n    this._queuedChunk = null;\n  }\n\n  _onProgress(evt) {\n    if (!this.isStreamingSupported) {\n      this.onProgress?.({\n        loaded: evt.loaded\n      });\n    }\n  }\n\n  get isStreamingSupported() {\n    return false;\n  }\n\n  async read() {\n    if (this._storedError) {\n      throw this._storedError;\n    }\n\n    if (this._queuedChunk !== null) {\n      const chunk = this._queuedChunk;\n      this._queuedChunk = null;\n      return {\n        value: chunk,\n        done: false\n      };\n    }\n\n    if (this._done) {\n      return {\n        value: undefined,\n        done: true\n      };\n    }\n\n    const requestCapability = (0, _util.createPromiseCapability)();\n\n    this._requests.push(requestCapability);\n\n    return requestCapability.promise;\n  }\n\n  cancel(reason) {\n    this._done = true;\n\n    for (const requestCapability of this._requests) {\n      requestCapability.resolve({\n        value: undefined,\n        done: true\n      });\n    }\n\n    this._requests.length = 0;\n\n    if (this._manager.isPendingRequest(this._requestId)) {\n      this._manager.abortRequest(this._requestId);\n    }\n\n    this._close();\n  }\n\n}\n\n/***/ }),\n/* 27 */\n/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {\n\n\n\nObject.defineProperty(exports, \"__esModule\", ({\n  value: true\n}));\nexports.PDFFetchStream = void 0;\n\nvar _util = __w_pdfjs_require__(1);\n\nvar _network_utils = __w_pdfjs_require__(24);\n\n;\n\nfunction createFetchOptions(headers, withCredentials, abortController) {\n  return {\n    method: \"GET\",\n    headers,\n    signal: abortController?.signal,\n    mode: \"cors\",\n    credentials: withCredentials ? \"include\" : \"same-origin\",\n    redirect: \"follow\"\n  };\n}\n\nfunction createHeaders(httpHeaders) {\n  const headers = new Headers();\n\n  for (const property in httpHeaders) {\n    const value = httpHeaders[property];\n\n    if (typeof value === \"undefined\") {\n      continue;\n    }\n\n    headers.append(property, value);\n  }\n\n  return headers;\n}\n\nclass PDFFetchStream {\n  constructor(source) {\n    this.source = source;\n    this.isHttp = /^https?:/i.test(source.url);\n    this.httpHeaders = this.isHttp && source.httpHeaders || {};\n    this._fullRequestReader = null;\n    this._rangeRequestReaders = [];\n  }\n\n  get _progressiveDataLength() {\n    return this._fullRequestReader?._loaded ?? 0;\n  }\n\n  getFullReader() {\n    (0, _util.assert)(!this._fullRequestReader, \"PDFFetchStream.getFullReader can only be called once.\");\n    this._fullRequestReader = new PDFFetchStreamReader(this);\n    return this._fullRequestReader;\n  }\n\n  getRangeReader(begin, end) {\n    if (end <= this._progressiveDataLength) {\n      return null;\n    }\n\n    const reader = new PDFFetchStreamRangeReader(this, begin, end);\n\n    this._rangeRequestReaders.push(reader);\n\n    return reader;\n  }\n\n  cancelAllRequests(reason) {\n    if (this._fullRequestReader) {\n      this._fullRequestReader.cancel(reason);\n    }\n\n    for (const reader of this._rangeRequestReaders.slice(0)) {\n      reader.cancel(reason);\n    }\n  }\n\n}\n\nexports.PDFFetchStream = PDFFetchStream;\n\nclass PDFFetchStreamReader {\n  constructor(stream) {\n    this._stream = stream;\n    this._reader = null;\n    this._loaded = 0;\n    this._filename = null;\n    const source = stream.source;\n    this._withCredentials = source.withCredentials || false;\n    this._contentLength = source.length;\n    this._headersCapability = (0, _util.createPromiseCapability)();\n    this._disableRange = source.disableRange || false;\n    this._rangeChunkSize = source.rangeChunkSize;\n\n    if (!this._rangeChunkSize && !this._disableRange) {\n      this._disableRange = true;\n    }\n\n    if (typeof AbortController !== \"undefined\") {\n      this._abortController = new AbortController();\n    }\n\n    this._isStreamingSupported = !source.disableStream;\n    this._isRangeSupported = !source.disableRange;\n    this._headers = createHeaders(this._stream.httpHeaders);\n    const url = source.url;\n    fetch(url, createFetchOptions(this._headers, this._withCredentials, this._abortController)).then(response => {\n      if (!(0, _network_utils.validateResponseStatus)(response.status)) {\n        throw (0, _network_utils.createResponseStatusError)(response.status, url);\n      }\n\n      this._reader = response.body.getReader();\n\n      this._headersCapability.resolve();\n\n      const getResponseHeader = name => {\n        return response.headers.get(name);\n      };\n\n      const {\n        allowRangeRequests,\n        suggestedLength\n      } = (0, _network_utils.validateRangeRequestCapabilities)({\n        getResponseHeader,\n        isHttp: this._stream.isHttp,\n        rangeChunkSize: this._rangeChunkSize,\n        disableRange: this._disableRange\n      });\n      this._isRangeSupported = allowRangeRequests;\n      this._contentLength = suggestedLength || this._contentLength;\n      this._filename = (0, _network_utils.extractFilenameFromHeader)(getResponseHeader);\n\n      if (!this._isStreamingSupported && this._isRangeSupported) {\n        this.cancel(new _util.AbortException(\"Streaming is disabled.\"));\n      }\n    }).catch(this._headersCapability.reject);\n    this.onProgress = null;\n  }\n\n  get headersReady() {\n    return this._headersCapability.promise;\n  }\n\n  get filename() {\n    return this._filename;\n  }\n\n  get contentLength() {\n    return this._contentLength;\n  }\n\n  get isRangeSupported() {\n    return this._isRangeSupported;\n  }\n\n  get isStreamingSupported() {\n    return this._isStreamingSupported;\n  }\n\n  async read() {\n    await this._headersCapability.promise;\n    const {\n      value,\n      done\n    } = await this._reader.read();\n\n    if (done) {\n      return {\n        value,\n        done\n      };\n    }\n\n    this._loaded += value.byteLength;\n\n    if (this.onProgress) {\n      this.onProgress({\n        loaded: this._loaded,\n        total: this._contentLength\n      });\n    }\n\n    const buffer = new Uint8Array(value).buffer;\n    return {\n      value: buffer,\n      done: false\n    };\n  }\n\n  cancel(reason) {\n    if (this._reader) {\n      this._reader.cancel(reason);\n    }\n\n    if (this._abortController) {\n      this._abortController.abort();\n    }\n  }\n\n}\n\nclass PDFFetchStreamRangeReader {\n  constructor(stream, begin, end) {\n    this._stream = stream;\n    this._reader = null;\n    this._loaded = 0;\n    const source = stream.source;\n    this._withCredentials = source.withCredentials || false;\n    this._readCapability = (0, _util.createPromiseCapability)();\n    this._isStreamingSupported = !source.disableStream;\n\n    if (typeof AbortController !== \"undefined\") {\n      this._abortController = new AbortController();\n    }\n\n    this._headers = createHeaders(this._stream.httpHeaders);\n\n    this._headers.append(\"Range\", `bytes=${begin}-${end - 1}`);\n\n    const url = source.url;\n    fetch(url, createFetchOptions(this._headers, this._withCredentials, this._abortController)).then(response => {\n      if (!(0, _network_utils.validateResponseStatus)(response.status)) {\n        throw (0, _network_utils.createResponseStatusError)(response.status, url);\n      }\n\n      this._readCapability.resolve();\n\n      this._reader = response.body.getReader();\n    }).catch(this._readCapability.reject);\n    this.onProgress = null;\n  }\n\n  get isStreamingSupported() {\n    return this._isStreamingSupported;\n  }\n\n  async read() {\n    await this._readCapability.promise;\n    const {\n      value,\n      done\n    } = await this._reader.read();\n\n    if (done) {\n      return {\n        value,\n        done\n      };\n    }\n\n    this._loaded += value.byteLength;\n\n    if (this.onProgress) {\n      this.onProgress({\n        loaded: this._loaded\n      });\n    }\n\n    const buffer = new Uint8Array(value).buffer;\n    return {\n      value: buffer,\n      done: false\n    };\n  }\n\n  cancel(reason) {\n    if (this._reader) {\n      this._reader.cancel(reason);\n    }\n\n    if (this._abortController) {\n      this._abortController.abort();\n    }\n  }\n\n}\n\n/***/ })\n/******/ \t]);\n/************************************************************************/\n/******/ \t// The module cache\n/******/ \tvar __webpack_module_cache__ = {};\n/******/ \t\n/******/ \t// The require function\n/******/ \tfunction __w_pdfjs_require__(moduleId) {\n/******/ \t\t// Check if module is in cache\n/******/ \t\tvar cachedModule = __webpack_module_cache__[moduleId];\n/******/ \t\tif (cachedModule !== undefined) {\n/******/ \t\t\treturn cachedModule.exports;\n/******/ \t\t}\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = __webpack_module_cache__[moduleId] = {\n/******/ \t\t\t// no module.id needed\n/******/ \t\t\t// no module.loaded needed\n/******/ \t\t\texports: {}\n/******/ \t\t};\n/******/ \t\n/******/ \t\t// Execute the module function\n/******/ \t\t__webpack_modules__[moduleId](module, module.exports, __w_pdfjs_require__);\n/******/ \t\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/ \t\n/************************************************************************/\nvar __webpack_exports__ = {};\n// This entry need to be wrapped in an IIFE because it need to be isolated against other modules in the chunk.\n(() => {\nvar exports = __webpack_exports__;\n\n\nObject.defineProperty(exports, \"__esModule\", ({\n  value: true\n}));\nObject.defineProperty(exports, \"AnnotationLayer\", ({\n  enumerable: true,\n  get: function () {\n    return _annotation_layer.AnnotationLayer;\n  }\n}));\nObject.defineProperty(exports, \"AnnotationMode\", ({\n  enumerable: true,\n  get: function () {\n    return _util.AnnotationMode;\n  }\n}));\nObject.defineProperty(exports, \"CMapCompressionType\", ({\n  enumerable: true,\n  get: function () {\n    return _util.CMapCompressionType;\n  }\n}));\nObject.defineProperty(exports, \"GlobalWorkerOptions\", ({\n  enumerable: true,\n  get: function () {\n    return _worker_options.GlobalWorkerOptions;\n  }\n}));\nObject.defineProperty(exports, \"InvalidPDFException\", ({\n  enumerable: true,\n  get: function () {\n    return _util.InvalidPDFException;\n  }\n}));\nObject.defineProperty(exports, \"LoopbackPort\", ({\n  enumerable: true,\n  get: function () {\n    return _api.LoopbackPort;\n  }\n}));\nObject.defineProperty(exports, \"MissingPDFException\", ({\n  enumerable: true,\n  get: function () {\n    return _util.MissingPDFException;\n  }\n}));\nObject.defineProperty(exports, \"OPS\", ({\n  enumerable: true,\n  get: function () {\n    return _util.OPS;\n  }\n}));\nObject.defineProperty(exports, \"PDFDataRangeTransport\", ({\n  enumerable: true,\n  get: function () {\n    return _api.PDFDataRangeTransport;\n  }\n}));\nObject.defineProperty(exports, \"PDFDateString\", ({\n  enumerable: true,\n  get: function () {\n    return _display_utils.PDFDateString;\n  }\n}));\nObject.defineProperty(exports, \"PDFWorker\", ({\n  enumerable: true,\n  get: function () {\n    return _api.PDFWorker;\n  }\n}));\nObject.defineProperty(exports, \"PasswordResponses\", ({\n  enumerable: true,\n  get: function () {\n    return _util.PasswordResponses;\n  }\n}));\nObject.defineProperty(exports, \"PermissionFlag\", ({\n  enumerable: true,\n  get: function () {\n    return _util.PermissionFlag;\n  }\n}));\nObject.defineProperty(exports, \"PixelsPerInch\", ({\n  enumerable: true,\n  get: function () {\n    return _display_utils.PixelsPerInch;\n  }\n}));\nObject.defineProperty(exports, \"RenderingCancelledException\", ({\n  enumerable: true,\n  get: function () {\n    return _display_utils.RenderingCancelledException;\n  }\n}));\nObject.defineProperty(exports, \"SVGGraphics\", ({\n  enumerable: true,\n  get: function () {\n    return _svg.SVGGraphics;\n  }\n}));\nObject.defineProperty(exports, \"UNSUPPORTED_FEATURES\", ({\n  enumerable: true,\n  get: function () {\n    return _util.UNSUPPORTED_FEATURES;\n  }\n}));\nObject.defineProperty(exports, \"UnexpectedResponseException\", ({\n  enumerable: true,\n  get: function () {\n    return _util.UnexpectedResponseException;\n  }\n}));\nObject.defineProperty(exports, \"Util\", ({\n  enumerable: true,\n  get: function () {\n    return _util.Util;\n  }\n}));\nObject.defineProperty(exports, \"VerbosityLevel\", ({\n  enumerable: true,\n  get: function () {\n    return _util.VerbosityLevel;\n  }\n}));\nObject.defineProperty(exports, \"XfaLayer\", ({\n  enumerable: true,\n  get: function () {\n    return _xfa_layer.XfaLayer;\n  }\n}));\nObject.defineProperty(exports, \"build\", ({\n  enumerable: true,\n  get: function () {\n    return _api.build;\n  }\n}));\nObject.defineProperty(exports, \"createPromiseCapability\", ({\n  enumerable: true,\n  get: function () {\n    return _util.createPromiseCapability;\n  }\n}));\nObject.defineProperty(exports, \"createValidAbsoluteUrl\", ({\n  enumerable: true,\n  get: function () {\n    return _util.createValidAbsoluteUrl;\n  }\n}));\nObject.defineProperty(exports, \"getDocument\", ({\n  enumerable: true,\n  get: function () {\n    return _api.getDocument;\n  }\n}));\nObject.defineProperty(exports, \"getFilenameFromUrl\", ({\n  enumerable: true,\n  get: function () {\n    return _display_utils.getFilenameFromUrl;\n  }\n}));\nObject.defineProperty(exports, \"getPdfFilenameFromUrl\", ({\n  enumerable: true,\n  get: function () {\n    return _display_utils.getPdfFilenameFromUrl;\n  }\n}));\nObject.defineProperty(exports, \"getXfaPageViewport\", ({\n  enumerable: true,\n  get: function () {\n    return _display_utils.getXfaPageViewport;\n  }\n}));\nObject.defineProperty(exports, \"isPdfFile\", ({\n  enumerable: true,\n  get: function () {\n    return _display_utils.isPdfFile;\n  }\n}));\nObject.defineProperty(exports, \"loadScript\", ({\n  enumerable: true,\n  get: function () {\n    return _display_utils.loadScript;\n  }\n}));\nObject.defineProperty(exports, \"renderTextLayer\", ({\n  enumerable: true,\n  get: function () {\n    return _text_layer.renderTextLayer;\n  }\n}));\nObject.defineProperty(exports, \"shadow\", ({\n  enumerable: true,\n  get: function () {\n    return _util.shadow;\n  }\n}));\nObject.defineProperty(exports, \"version\", ({\n  enumerable: true,\n  get: function () {\n    return _api.version;\n  }\n}));\n\nvar _util = __w_pdfjs_require__(1);\n\nvar _api = __w_pdfjs_require__(4);\n\nvar _display_utils = __w_pdfjs_require__(5);\n\nvar _annotation_layer = __w_pdfjs_require__(18);\n\nvar _worker_options = __w_pdfjs_require__(12);\n\nvar _is_node = __w_pdfjs_require__(3);\n\nvar _text_layer = __w_pdfjs_require__(21);\n\nvar _svg = __w_pdfjs_require__(22);\n\nvar _xfa_layer = __w_pdfjs_require__(20);\n\nconst pdfjsVersion = '2.14.73';\nconst pdfjsBuild = '489e9ff7d';\n{\n  if (_is_node.isNodeJS) {\n    const {\n      PDFNodeStream\n    } = __w_pdfjs_require__(23);\n\n    (0, _api.setPDFNetworkStreamFactory)(params => {\n      return new PDFNodeStream(params);\n    });\n  } else {\n    const {\n      PDFNetworkStream\n    } = __w_pdfjs_require__(26);\n\n    const {\n      PDFFetchStream\n    } = __w_pdfjs_require__(27);\n\n    (0, _api.setPDFNetworkStreamFactory)(params => {\n      if ((0, _display_utils.isValidFetchUrl)(params.url)) {\n        return new PDFFetchStream(params);\n      }\n\n      return new PDFNetworkStream(params);\n    });\n  }\n}\n})();\n\n/******/ \treturn __webpack_exports__;\n/******/ })()\n;\n});\n//# sourceMappingURL=pdf.js.map"
  },
  {
    "path": "application/public/js/pdf.worker.js",
    "content": "/**\n * @licstart The following is the entire license notice for the\n * Javascript code in this page\n *\n * Copyright 2022 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n * @licend The above is the entire license notice for the\n * Javascript code in this page\n */\n\n(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine(\"pdfjs-dist/build/pdf.worker\", [], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"pdfjs-dist/build/pdf.worker\"] = factory();\n\telse\n\t\troot[\"pdfjs-dist/build/pdf.worker\"] = root.pdfjsWorker = factory();\n})(this, function() {\nreturn /******/ (() => { // webpackBootstrap\n/******/ \t\"use strict\";\n/******/ \tvar __webpack_modules__ = ([\n/* 0 */,\n/* 1 */\n/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {\n\n\n\nObject.defineProperty(exports, \"__esModule\", ({\n  value: true\n}));\nexports.WorkerTask = exports.WorkerMessageHandler = void 0;\n\nvar _util = __w_pdfjs_require__(2);\n\nvar _primitives = __w_pdfjs_require__(5);\n\nvar _pdf_manager = __w_pdfjs_require__(6);\n\nvar _cleanup_helper = __w_pdfjs_require__(66);\n\nvar _writer = __w_pdfjs_require__(72);\n\nvar _is_node = __w_pdfjs_require__(4);\n\nvar _message_handler = __w_pdfjs_require__(100);\n\nvar _worker_stream = __w_pdfjs_require__(101);\n\nvar _core_utils = __w_pdfjs_require__(8);\n\nclass WorkerTask {\n  constructor(name) {\n    this.name = name;\n    this.terminated = false;\n    this._capability = (0, _util.createPromiseCapability)();\n  }\n\n  get finished() {\n    return this._capability.promise;\n  }\n\n  finish() {\n    this._capability.resolve();\n  }\n\n  terminate() {\n    this.terminated = true;\n  }\n\n  ensureNotTerminated() {\n    if (this.terminated) {\n      throw new Error(\"Worker task was terminated\");\n    }\n  }\n\n}\n\nexports.WorkerTask = WorkerTask;\n\nclass WorkerMessageHandler {\n  static setup(handler, port) {\n    let testMessageProcessed = false;\n    handler.on(\"test\", function wphSetupTest(data) {\n      if (testMessageProcessed) {\n        return;\n      }\n\n      testMessageProcessed = true;\n      handler.send(\"test\", data instanceof Uint8Array && data[0] === 255);\n    });\n    handler.on(\"configure\", function wphConfigure(data) {\n      (0, _util.setVerbosityLevel)(data.verbosity);\n    });\n    handler.on(\"GetDocRequest\", function wphSetupDoc(data) {\n      return WorkerMessageHandler.createDocumentHandler(data, port);\n    });\n  }\n\n  static createDocumentHandler(docParams, port) {\n    let pdfManager;\n    let terminated = false;\n    let cancelXHRs = null;\n    const WorkerTasks = [];\n    const verbosity = (0, _util.getVerbosityLevel)();\n    const apiVersion = docParams.apiVersion;\n    const workerVersion = '2.14.73';\n\n    if (apiVersion !== workerVersion) {\n      throw new Error(`The API version \"${apiVersion}\" does not match ` + `the Worker version \"${workerVersion}\".`);\n    }\n\n    const enumerableProperties = [];\n\n    for (const property in []) {\n      enumerableProperties.push(property);\n    }\n\n    if (enumerableProperties.length) {\n      throw new Error(\"The `Array.prototype` contains unexpected enumerable properties: \" + enumerableProperties.join(\", \") + \"; thus breaking e.g. `for...in` iteration of `Array`s.\");\n    }\n\n    if (typeof ReadableStream === \"undefined\") {\n      const partialMsg = \"The browser/environment lacks native support for critical \" + \"functionality used by the PDF.js library (e.g. `ReadableStream`); \";\n\n      if (_is_node.isNodeJS) {\n        throw new Error(partialMsg + \"please use a `legacy`-build instead.\");\n      }\n\n      throw new Error(partialMsg + \"please update to a supported browser.\");\n    }\n\n    const docId = docParams.docId;\n    const docBaseUrl = docParams.docBaseUrl;\n    const workerHandlerName = docParams.docId + \"_worker\";\n    let handler = new _message_handler.MessageHandler(workerHandlerName, docId, port);\n\n    function ensureNotTerminated() {\n      if (terminated) {\n        throw new Error(\"Worker was terminated\");\n      }\n    }\n\n    function startWorkerTask(task) {\n      WorkerTasks.push(task);\n    }\n\n    function finishWorkerTask(task) {\n      task.finish();\n      const i = WorkerTasks.indexOf(task);\n      WorkerTasks.splice(i, 1);\n    }\n\n    async function loadDocument(recoveryMode) {\n      await pdfManager.ensureDoc(\"checkHeader\");\n      await pdfManager.ensureDoc(\"parseStartXRef\");\n      await pdfManager.ensureDoc(\"parse\", [recoveryMode]);\n      await pdfManager.ensureDoc(\"checkFirstPage\", [recoveryMode]);\n      await pdfManager.ensureDoc(\"checkLastPage\", [recoveryMode]);\n      const isPureXfa = await pdfManager.ensureDoc(\"isPureXfa\");\n\n      if (isPureXfa) {\n        const task = new WorkerTask(\"loadXfaFonts\");\n        startWorkerTask(task);\n        await Promise.all([pdfManager.loadXfaFonts(handler, task).catch(reason => {}).then(() => finishWorkerTask(task)), pdfManager.loadXfaImages()]);\n      }\n\n      const [numPages, fingerprints] = await Promise.all([pdfManager.ensureDoc(\"numPages\"), pdfManager.ensureDoc(\"fingerprints\")]);\n      const htmlForXfa = isPureXfa ? await pdfManager.ensureDoc(\"htmlForXfa\") : null;\n      return {\n        numPages,\n        fingerprints,\n        htmlForXfa\n      };\n    }\n\n    function getPdfManager(data, evaluatorOptions, enableXfa) {\n      const pdfManagerCapability = (0, _util.createPromiseCapability)();\n      let newPdfManager;\n      const source = data.source;\n\n      if (source.data) {\n        try {\n          newPdfManager = new _pdf_manager.LocalPdfManager(docId, source.data, source.password, handler, evaluatorOptions, enableXfa, docBaseUrl);\n          pdfManagerCapability.resolve(newPdfManager);\n        } catch (ex) {\n          pdfManagerCapability.reject(ex);\n        }\n\n        return pdfManagerCapability.promise;\n      }\n\n      let pdfStream,\n          cachedChunks = [];\n\n      try {\n        pdfStream = new _worker_stream.PDFWorkerStream(handler);\n      } catch (ex) {\n        pdfManagerCapability.reject(ex);\n        return pdfManagerCapability.promise;\n      }\n\n      const fullRequest = pdfStream.getFullReader();\n      fullRequest.headersReady.then(function () {\n        if (!fullRequest.isRangeSupported) {\n          return;\n        }\n\n        const disableAutoFetch = source.disableAutoFetch || fullRequest.isStreamingSupported;\n        newPdfManager = new _pdf_manager.NetworkPdfManager(docId, pdfStream, {\n          msgHandler: handler,\n          password: source.password,\n          length: fullRequest.contentLength,\n          disableAutoFetch,\n          rangeChunkSize: source.rangeChunkSize\n        }, evaluatorOptions, enableXfa, docBaseUrl);\n\n        for (let i = 0; i < cachedChunks.length; i++) {\n          newPdfManager.sendProgressiveData(cachedChunks[i]);\n        }\n\n        cachedChunks = [];\n        pdfManagerCapability.resolve(newPdfManager);\n        cancelXHRs = null;\n      }).catch(function (reason) {\n        pdfManagerCapability.reject(reason);\n        cancelXHRs = null;\n      });\n      let loaded = 0;\n\n      const flushChunks = function () {\n        const pdfFile = (0, _util.arraysToBytes)(cachedChunks);\n\n        if (source.length && pdfFile.length !== source.length) {\n          (0, _util.warn)(\"reported HTTP length is different from actual\");\n        }\n\n        try {\n          newPdfManager = new _pdf_manager.LocalPdfManager(docId, pdfFile, source.password, handler, evaluatorOptions, enableXfa, docBaseUrl);\n          pdfManagerCapability.resolve(newPdfManager);\n        } catch (ex) {\n          pdfManagerCapability.reject(ex);\n        }\n\n        cachedChunks = [];\n      };\n\n      const readPromise = new Promise(function (resolve, reject) {\n        const readChunk = function ({\n          value,\n          done\n        }) {\n          try {\n            ensureNotTerminated();\n\n            if (done) {\n              if (!newPdfManager) {\n                flushChunks();\n              }\n\n              cancelXHRs = null;\n              return;\n            }\n\n            loaded += (0, _util.arrayByteLength)(value);\n\n            if (!fullRequest.isStreamingSupported) {\n              handler.send(\"DocProgress\", {\n                loaded,\n                total: Math.max(loaded, fullRequest.contentLength || 0)\n              });\n            }\n\n            if (newPdfManager) {\n              newPdfManager.sendProgressiveData(value);\n            } else {\n              cachedChunks.push(value);\n            }\n\n            fullRequest.read().then(readChunk, reject);\n          } catch (e) {\n            reject(e);\n          }\n        };\n\n        fullRequest.read().then(readChunk, reject);\n      });\n      readPromise.catch(function (e) {\n        pdfManagerCapability.reject(e);\n        cancelXHRs = null;\n      });\n\n      cancelXHRs = function (reason) {\n        pdfStream.cancelAllRequests(reason);\n      };\n\n      return pdfManagerCapability.promise;\n    }\n\n    function setupDoc(data) {\n      function onSuccess(doc) {\n        ensureNotTerminated();\n        handler.send(\"GetDoc\", {\n          pdfInfo: doc\n        });\n      }\n\n      function onFailure(ex) {\n        ensureNotTerminated();\n\n        if (ex instanceof _util.PasswordException) {\n          const task = new WorkerTask(`PasswordException: response ${ex.code}`);\n          startWorkerTask(task);\n          handler.sendWithPromise(\"PasswordRequest\", ex).then(function ({\n            password\n          }) {\n            finishWorkerTask(task);\n            pdfManager.updatePassword(password);\n            pdfManagerReady();\n          }).catch(function () {\n            finishWorkerTask(task);\n            handler.send(\"DocException\", ex);\n          });\n        } else if (ex instanceof _util.InvalidPDFException || ex instanceof _util.MissingPDFException || ex instanceof _util.UnexpectedResponseException || ex instanceof _util.UnknownErrorException) {\n          handler.send(\"DocException\", ex);\n        } else {\n          handler.send(\"DocException\", new _util.UnknownErrorException(ex.message, ex.toString()));\n        }\n      }\n\n      function pdfManagerReady() {\n        ensureNotTerminated();\n        loadDocument(false).then(onSuccess, function (reason) {\n          ensureNotTerminated();\n\n          if (!(reason instanceof _core_utils.XRefParseException)) {\n            onFailure(reason);\n            return;\n          }\n\n          pdfManager.requestLoadedStream();\n          pdfManager.onLoadedStream().then(function () {\n            ensureNotTerminated();\n            loadDocument(true).then(onSuccess, onFailure);\n          });\n        });\n      }\n\n      ensureNotTerminated();\n      const evaluatorOptions = {\n        maxImageSize: data.maxImageSize,\n        disableFontFace: data.disableFontFace,\n        ignoreErrors: data.ignoreErrors,\n        isEvalSupported: data.isEvalSupported,\n        fontExtraProperties: data.fontExtraProperties,\n        useSystemFonts: data.useSystemFonts,\n        cMapUrl: data.cMapUrl,\n        standardFontDataUrl: data.standardFontDataUrl\n      };\n      getPdfManager(data, evaluatorOptions, data.enableXfa).then(function (newPdfManager) {\n        if (terminated) {\n          newPdfManager.terminate(new _util.AbortException(\"Worker was terminated.\"));\n          throw new Error(\"Worker was terminated\");\n        }\n\n        pdfManager = newPdfManager;\n        pdfManager.onLoadedStream().then(function (stream) {\n          handler.send(\"DataLoaded\", {\n            length: stream.bytes.byteLength\n          });\n        });\n      }).then(pdfManagerReady, onFailure);\n    }\n\n    handler.on(\"GetPage\", function wphSetupGetPage(data) {\n      return pdfManager.getPage(data.pageIndex).then(function (page) {\n        return Promise.all([pdfManager.ensure(page, \"rotate\"), pdfManager.ensure(page, \"ref\"), pdfManager.ensure(page, \"userUnit\"), pdfManager.ensure(page, \"view\")]).then(function ([rotate, ref, userUnit, view]) {\n          return {\n            rotate,\n            ref,\n            userUnit,\n            view\n          };\n        });\n      });\n    });\n    handler.on(\"GetPageIndex\", function wphSetupGetPageIndex(data) {\n      const pageRef = _primitives.Ref.get(data.num, data.gen);\n\n      return pdfManager.ensureCatalog(\"getPageIndex\", [pageRef]);\n    });\n    handler.on(\"GetDestinations\", function wphSetupGetDestinations(data) {\n      return pdfManager.ensureCatalog(\"destinations\");\n    });\n    handler.on(\"GetDestination\", function wphSetupGetDestination(data) {\n      return pdfManager.ensureCatalog(\"getDestination\", [data.id]);\n    });\n    handler.on(\"GetPageLabels\", function wphSetupGetPageLabels(data) {\n      return pdfManager.ensureCatalog(\"pageLabels\");\n    });\n    handler.on(\"GetPageLayout\", function wphSetupGetPageLayout(data) {\n      return pdfManager.ensureCatalog(\"pageLayout\");\n    });\n    handler.on(\"GetPageMode\", function wphSetupGetPageMode(data) {\n      return pdfManager.ensureCatalog(\"pageMode\");\n    });\n    handler.on(\"GetViewerPreferences\", function (data) {\n      return pdfManager.ensureCatalog(\"viewerPreferences\");\n    });\n    handler.on(\"GetOpenAction\", function (data) {\n      return pdfManager.ensureCatalog(\"openAction\");\n    });\n    handler.on(\"GetAttachments\", function wphSetupGetAttachments(data) {\n      return pdfManager.ensureCatalog(\"attachments\");\n    });\n    handler.on(\"GetJavaScript\", function wphSetupGetJavaScript(data) {\n      return pdfManager.ensureCatalog(\"javaScript\");\n    });\n    handler.on(\"GetDocJSActions\", function wphSetupGetDocJSActions(data) {\n      return pdfManager.ensureCatalog(\"jsActions\");\n    });\n    handler.on(\"GetPageJSActions\", function ({\n      pageIndex\n    }) {\n      return pdfManager.getPage(pageIndex).then(function (page) {\n        return pdfManager.ensure(page, \"jsActions\");\n      });\n    });\n    handler.on(\"GetOutline\", function wphSetupGetOutline(data) {\n      return pdfManager.ensureCatalog(\"documentOutline\");\n    });\n    handler.on(\"GetOptionalContentConfig\", function (data) {\n      return pdfManager.ensureCatalog(\"optionalContentConfig\");\n    });\n    handler.on(\"GetPermissions\", function (data) {\n      return pdfManager.ensureCatalog(\"permissions\");\n    });\n    handler.on(\"GetMetadata\", function wphSetupGetMetadata(data) {\n      return Promise.all([pdfManager.ensureDoc(\"documentInfo\"), pdfManager.ensureCatalog(\"metadata\")]);\n    });\n    handler.on(\"GetMarkInfo\", function wphSetupGetMarkInfo(data) {\n      return pdfManager.ensureCatalog(\"markInfo\");\n    });\n    handler.on(\"GetData\", function wphSetupGetData(data) {\n      pdfManager.requestLoadedStream();\n      return pdfManager.onLoadedStream().then(function (stream) {\n        return stream.bytes;\n      });\n    });\n    handler.on(\"GetAnnotations\", function ({\n      pageIndex,\n      intent\n    }) {\n      return pdfManager.getPage(pageIndex).then(function (page) {\n        return page.getAnnotationsData(intent);\n      });\n    });\n    handler.on(\"GetFieldObjects\", function (data) {\n      return pdfManager.ensureDoc(\"fieldObjects\");\n    });\n    handler.on(\"HasJSActions\", function (data) {\n      return pdfManager.ensureDoc(\"hasJSActions\");\n    });\n    handler.on(\"GetCalculationOrderIds\", function (data) {\n      return pdfManager.ensureDoc(\"calculationOrderIds\");\n    });\n    handler.on(\"SaveDocument\", function ({\n      isPureXfa,\n      numPages,\n      annotationStorage,\n      filename\n    }) {\n      pdfManager.requestLoadedStream();\n      const promises = [pdfManager.onLoadedStream(), pdfManager.ensureCatalog(\"acroForm\"), pdfManager.ensureCatalog(\"acroFormRef\"), pdfManager.ensureDoc(\"xref\"), pdfManager.ensureDoc(\"startXRef\")];\n\n      if (isPureXfa) {\n        promises.push(pdfManager.serializeXfaData(annotationStorage));\n      } else {\n        for (let pageIndex = 0; pageIndex < numPages; pageIndex++) {\n          promises.push(pdfManager.getPage(pageIndex).then(function (page) {\n            const task = new WorkerTask(`Save: page ${pageIndex}`);\n            return page.save(handler, task, annotationStorage).finally(function () {\n              finishWorkerTask(task);\n            });\n          }));\n        }\n      }\n\n      return Promise.all(promises).then(function ([stream, acroForm, acroFormRef, xref, startXRef, ...refs]) {\n        let newRefs = [];\n        let xfaData = null;\n\n        if (isPureXfa) {\n          xfaData = refs[0];\n\n          if (!xfaData) {\n            return stream.bytes;\n          }\n        } else {\n          for (const ref of refs) {\n            newRefs = ref.filter(x => x !== null).reduce((a, b) => a.concat(b), newRefs);\n          }\n\n          if (newRefs.length === 0) {\n            return stream.bytes;\n          }\n        }\n\n        const xfa = acroForm instanceof _primitives.Dict && acroForm.get(\"XFA\") || null;\n        let xfaDatasetsRef = null;\n        let hasXfaDatasetsEntry = false;\n\n        if (Array.isArray(xfa)) {\n          for (let i = 0, ii = xfa.length; i < ii; i += 2) {\n            if (xfa[i] === \"datasets\") {\n              xfaDatasetsRef = xfa[i + 1];\n              acroFormRef = null;\n              hasXfaDatasetsEntry = true;\n            }\n          }\n\n          if (xfaDatasetsRef === null) {\n            xfaDatasetsRef = xref.getNewRef();\n          }\n        } else if (xfa) {\n          acroFormRef = null;\n          (0, _util.warn)(\"Unsupported XFA type.\");\n        }\n\n        let newXrefInfo = Object.create(null);\n\n        if (xref.trailer) {\n          const infoObj = Object.create(null);\n          const xrefInfo = xref.trailer.get(\"Info\") || null;\n\n          if (xrefInfo instanceof _primitives.Dict) {\n            xrefInfo.forEach((key, value) => {\n              if (typeof value === \"string\") {\n                infoObj[key] = (0, _util.stringToPDFString)(value);\n              }\n            });\n          }\n\n          newXrefInfo = {\n            rootRef: xref.trailer.getRaw(\"Root\") || null,\n            encryptRef: xref.trailer.getRaw(\"Encrypt\") || null,\n            newRef: xref.getNewRef(),\n            infoRef: xref.trailer.getRaw(\"Info\") || null,\n            info: infoObj,\n            fileIds: xref.trailer.get(\"ID\") || null,\n            startXRef,\n            filename\n          };\n        }\n\n        xref.resetNewRef();\n        return (0, _writer.incrementalUpdate)({\n          originalData: stream.bytes,\n          xrefInfo: newXrefInfo,\n          newRefs,\n          xref,\n          hasXfa: !!xfa,\n          xfaDatasetsRef,\n          hasXfaDatasetsEntry,\n          acroFormRef,\n          acroForm,\n          xfaData\n        });\n      });\n    });\n    handler.on(\"GetOperatorList\", function wphSetupRenderPage(data, sink) {\n      const pageIndex = data.pageIndex;\n      pdfManager.getPage(pageIndex).then(function (page) {\n        const task = new WorkerTask(`GetOperatorList: page ${pageIndex}`);\n        startWorkerTask(task);\n        const start = verbosity >= _util.VerbosityLevel.INFOS ? Date.now() : 0;\n        page.getOperatorList({\n          handler,\n          sink,\n          task,\n          intent: data.intent,\n          cacheKey: data.cacheKey,\n          annotationStorage: data.annotationStorage\n        }).then(function (operatorListInfo) {\n          finishWorkerTask(task);\n\n          if (start) {\n            (0, _util.info)(`page=${pageIndex + 1} - getOperatorList: time=` + `${Date.now() - start}ms, len=${operatorListInfo.length}`);\n          }\n\n          sink.close();\n        }, function (reason) {\n          finishWorkerTask(task);\n\n          if (task.terminated) {\n            return;\n          }\n\n          handler.send(\"UnsupportedFeature\", {\n            featureId: _util.UNSUPPORTED_FEATURES.errorOperatorList\n          });\n          sink.error(reason);\n        });\n      });\n    });\n    handler.on(\"GetTextContent\", function wphExtractText(data, sink) {\n      const pageIndex = data.pageIndex;\n      pdfManager.getPage(pageIndex).then(function (page) {\n        const task = new WorkerTask(\"GetTextContent: page \" + pageIndex);\n        startWorkerTask(task);\n        const start = verbosity >= _util.VerbosityLevel.INFOS ? Date.now() : 0;\n        page.extractTextContent({\n          handler,\n          task,\n          sink,\n          includeMarkedContent: data.includeMarkedContent,\n          combineTextItems: data.combineTextItems\n        }).then(function () {\n          finishWorkerTask(task);\n\n          if (start) {\n            (0, _util.info)(`page=${pageIndex + 1} - getTextContent: time=` + `${Date.now() - start}ms`);\n          }\n\n          sink.close();\n        }, function (reason) {\n          finishWorkerTask(task);\n\n          if (task.terminated) {\n            return;\n          }\n\n          sink.error(reason);\n        });\n      });\n    });\n    handler.on(\"GetStructTree\", function wphGetStructTree(data) {\n      return pdfManager.getPage(data.pageIndex).then(function (page) {\n        return pdfManager.ensure(page, \"getStructTree\");\n      });\n    });\n    handler.on(\"FontFallback\", function (data) {\n      return pdfManager.fontFallback(data.id, handler);\n    });\n    handler.on(\"Cleanup\", function wphCleanup(data) {\n      return pdfManager.cleanup(true);\n    });\n    handler.on(\"Terminate\", function wphTerminate(data) {\n      terminated = true;\n      const waitOn = [];\n\n      if (pdfManager) {\n        pdfManager.terminate(new _util.AbortException(\"Worker was terminated.\"));\n        const cleanupPromise = pdfManager.cleanup();\n        waitOn.push(cleanupPromise);\n        pdfManager = null;\n      } else {\n        (0, _cleanup_helper.clearGlobalCaches)();\n      }\n\n      if (cancelXHRs) {\n        cancelXHRs(new _util.AbortException(\"Worker was terminated.\"));\n      }\n\n      for (const task of WorkerTasks) {\n        waitOn.push(task.finished);\n        task.terminate();\n      }\n\n      return Promise.all(waitOn).then(function () {\n        handler.destroy();\n        handler = null;\n      });\n    });\n    handler.on(\"Ready\", function wphReady(data) {\n      setupDoc(docParams);\n      docParams = null;\n    });\n    return workerHandlerName;\n  }\n\n  static initializeFromPort(port) {\n    const handler = new _message_handler.MessageHandler(\"worker\", \"main\", port);\n    WorkerMessageHandler.setup(handler, port);\n    handler.send(\"ready\", null);\n  }\n\n}\n\nexports.WorkerMessageHandler = WorkerMessageHandler;\n\nfunction isMessagePort(maybePort) {\n  return typeof maybePort.postMessage === \"function\" && \"onmessage\" in maybePort;\n}\n\nif (typeof window === \"undefined\" && !_is_node.isNodeJS && typeof self !== \"undefined\" && isMessagePort(self)) {\n  WorkerMessageHandler.initializeFromPort(self);\n}\n\n/***/ }),\n/* 2 */\n/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {\n\n\n\nObject.defineProperty(exports, \"__esModule\", ({\n  value: true\n}));\nexports.VerbosityLevel = exports.Util = exports.UnknownErrorException = exports.UnexpectedResponseException = exports.UNSUPPORTED_FEATURES = exports.TextRenderingMode = exports.StreamType = exports.RenderingIntentFlag = exports.PermissionFlag = exports.PasswordResponses = exports.PasswordException = exports.PageActionEventType = exports.OPS = exports.MissingPDFException = exports.IsLittleEndianCached = exports.IsEvalSupportedCached = exports.InvalidPDFException = exports.ImageKind = exports.IDENTITY_MATRIX = exports.FormatError = exports.FontType = exports.FONT_IDENTITY_MATRIX = exports.DocumentActionEventType = exports.CMapCompressionType = exports.BaseException = exports.AnnotationType = exports.AnnotationStateModelType = exports.AnnotationReviewState = exports.AnnotationReplyType = exports.AnnotationMode = exports.AnnotationMarkedState = exports.AnnotationFlag = exports.AnnotationFieldFlag = exports.AnnotationBorderStyleType = exports.AnnotationActionEventType = exports.AbortException = void 0;\nexports.arrayByteLength = arrayByteLength;\nexports.arraysToBytes = arraysToBytes;\nexports.assert = assert;\nexports.bytesToString = bytesToString;\nexports.createPromiseCapability = createPromiseCapability;\nexports.createValidAbsoluteUrl = createValidAbsoluteUrl;\nexports.escapeString = escapeString;\nexports.getModificationDate = getModificationDate;\nexports.getVerbosityLevel = getVerbosityLevel;\nexports.info = info;\nexports.isArrayBuffer = isArrayBuffer;\nexports.isArrayEqual = isArrayEqual;\nexports.isAscii = isAscii;\nexports.objectFromMap = objectFromMap;\nexports.objectSize = objectSize;\nexports.setVerbosityLevel = setVerbosityLevel;\nexports.shadow = shadow;\nexports.string32 = string32;\nexports.stringToBytes = stringToBytes;\nexports.stringToPDFString = stringToPDFString;\nexports.stringToUTF16BEString = stringToUTF16BEString;\nexports.stringToUTF8String = stringToUTF8String;\nexports.unreachable = unreachable;\nexports.utf8StringToString = utf8StringToString;\nexports.warn = warn;\n\n__w_pdfjs_require__(3);\n\nconst IDENTITY_MATRIX = [1, 0, 0, 1, 0, 0];\nexports.IDENTITY_MATRIX = IDENTITY_MATRIX;\nconst FONT_IDENTITY_MATRIX = [0.001, 0, 0, 0.001, 0, 0];\nexports.FONT_IDENTITY_MATRIX = FONT_IDENTITY_MATRIX;\nconst RenderingIntentFlag = {\n  ANY: 0x01,\n  DISPLAY: 0x02,\n  PRINT: 0x04,\n  ANNOTATIONS_FORMS: 0x10,\n  ANNOTATIONS_STORAGE: 0x20,\n  ANNOTATIONS_DISABLE: 0x40,\n  OPLIST: 0x100\n};\nexports.RenderingIntentFlag = RenderingIntentFlag;\nconst AnnotationMode = {\n  DISABLE: 0,\n  ENABLE: 1,\n  ENABLE_FORMS: 2,\n  ENABLE_STORAGE: 3\n};\nexports.AnnotationMode = AnnotationMode;\nconst PermissionFlag = {\n  PRINT: 0x04,\n  MODIFY_CONTENTS: 0x08,\n  COPY: 0x10,\n  MODIFY_ANNOTATIONS: 0x20,\n  FILL_INTERACTIVE_FORMS: 0x100,\n  COPY_FOR_ACCESSIBILITY: 0x200,\n  ASSEMBLE: 0x400,\n  PRINT_HIGH_QUALITY: 0x800\n};\nexports.PermissionFlag = PermissionFlag;\nconst TextRenderingMode = {\n  FILL: 0,\n  STROKE: 1,\n  FILL_STROKE: 2,\n  INVISIBLE: 3,\n  FILL_ADD_TO_PATH: 4,\n  STROKE_ADD_TO_PATH: 5,\n  FILL_STROKE_ADD_TO_PATH: 6,\n  ADD_TO_PATH: 7,\n  FILL_STROKE_MASK: 3,\n  ADD_TO_PATH_FLAG: 4\n};\nexports.TextRenderingMode = TextRenderingMode;\nconst ImageKind = {\n  GRAYSCALE_1BPP: 1,\n  RGB_24BPP: 2,\n  RGBA_32BPP: 3\n};\nexports.ImageKind = ImageKind;\nconst AnnotationType = {\n  TEXT: 1,\n  LINK: 2,\n  FREETEXT: 3,\n  LINE: 4,\n  SQUARE: 5,\n  CIRCLE: 6,\n  POLYGON: 7,\n  POLYLINE: 8,\n  HIGHLIGHT: 9,\n  UNDERLINE: 10,\n  SQUIGGLY: 11,\n  STRIKEOUT: 12,\n  STAMP: 13,\n  CARET: 14,\n  INK: 15,\n  POPUP: 16,\n  FILEATTACHMENT: 17,\n  SOUND: 18,\n  MOVIE: 19,\n  WIDGET: 20,\n  SCREEN: 21,\n  PRINTERMARK: 22,\n  TRAPNET: 23,\n  WATERMARK: 24,\n  THREED: 25,\n  REDACT: 26\n};\nexports.AnnotationType = AnnotationType;\nconst AnnotationStateModelType = {\n  MARKED: \"Marked\",\n  REVIEW: \"Review\"\n};\nexports.AnnotationStateModelType = AnnotationStateModelType;\nconst AnnotationMarkedState = {\n  MARKED: \"Marked\",\n  UNMARKED: \"Unmarked\"\n};\nexports.AnnotationMarkedState = AnnotationMarkedState;\nconst AnnotationReviewState = {\n  ACCEPTED: \"Accepted\",\n  REJECTED: \"Rejected\",\n  CANCELLED: \"Cancelled\",\n  COMPLETED: \"Completed\",\n  NONE: \"None\"\n};\nexports.AnnotationReviewState = AnnotationReviewState;\nconst AnnotationReplyType = {\n  GROUP: \"Group\",\n  REPLY: \"R\"\n};\nexports.AnnotationReplyType = AnnotationReplyType;\nconst AnnotationFlag = {\n  INVISIBLE: 0x01,\n  HIDDEN: 0x02,\n  PRINT: 0x04,\n  NOZOOM: 0x08,\n  NOROTATE: 0x10,\n  NOVIEW: 0x20,\n  READONLY: 0x40,\n  LOCKED: 0x80,\n  TOGGLENOVIEW: 0x100,\n  LOCKEDCONTENTS: 0x200\n};\nexports.AnnotationFlag = AnnotationFlag;\nconst AnnotationFieldFlag = {\n  READONLY: 0x0000001,\n  REQUIRED: 0x0000002,\n  NOEXPORT: 0x0000004,\n  MULTILINE: 0x0001000,\n  PASSWORD: 0x0002000,\n  NOTOGGLETOOFF: 0x0004000,\n  RADIO: 0x0008000,\n  PUSHBUTTON: 0x0010000,\n  COMBO: 0x0020000,\n  EDIT: 0x0040000,\n  SORT: 0x0080000,\n  FILESELECT: 0x0100000,\n  MULTISELECT: 0x0200000,\n  DONOTSPELLCHECK: 0x0400000,\n  DONOTSCROLL: 0x0800000,\n  COMB: 0x1000000,\n  RICHTEXT: 0x2000000,\n  RADIOSINUNISON: 0x2000000,\n  COMMITONSELCHANGE: 0x4000000\n};\nexports.AnnotationFieldFlag = AnnotationFieldFlag;\nconst AnnotationBorderStyleType = {\n  SOLID: 1,\n  DASHED: 2,\n  BEVELED: 3,\n  INSET: 4,\n  UNDERLINE: 5\n};\nexports.AnnotationBorderStyleType = AnnotationBorderStyleType;\nconst AnnotationActionEventType = {\n  E: \"Mouse Enter\",\n  X: \"Mouse Exit\",\n  D: \"Mouse Down\",\n  U: \"Mouse Up\",\n  Fo: \"Focus\",\n  Bl: \"Blur\",\n  PO: \"PageOpen\",\n  PC: \"PageClose\",\n  PV: \"PageVisible\",\n  PI: \"PageInvisible\",\n  K: \"Keystroke\",\n  F: \"Format\",\n  V: \"Validate\",\n  C: \"Calculate\"\n};\nexports.AnnotationActionEventType = AnnotationActionEventType;\nconst DocumentActionEventType = {\n  WC: \"WillClose\",\n  WS: \"WillSave\",\n  DS: \"DidSave\",\n  WP: \"WillPrint\",\n  DP: \"DidPrint\"\n};\nexports.DocumentActionEventType = DocumentActionEventType;\nconst PageActionEventType = {\n  O: \"PageOpen\",\n  C: \"PageClose\"\n};\nexports.PageActionEventType = PageActionEventType;\nconst StreamType = {\n  UNKNOWN: \"UNKNOWN\",\n  FLATE: \"FLATE\",\n  LZW: \"LZW\",\n  DCT: \"DCT\",\n  JPX: \"JPX\",\n  JBIG: \"JBIG\",\n  A85: \"A85\",\n  AHX: \"AHX\",\n  CCF: \"CCF\",\n  RLX: \"RLX\"\n};\nexports.StreamType = StreamType;\nconst FontType = {\n  UNKNOWN: \"UNKNOWN\",\n  TYPE1: \"TYPE1\",\n  TYPE1STANDARD: \"TYPE1STANDARD\",\n  TYPE1C: \"TYPE1C\",\n  CIDFONTTYPE0: \"CIDFONTTYPE0\",\n  CIDFONTTYPE0C: \"CIDFONTTYPE0C\",\n  TRUETYPE: \"TRUETYPE\",\n  CIDFONTTYPE2: \"CIDFONTTYPE2\",\n  TYPE3: \"TYPE3\",\n  OPENTYPE: \"OPENTYPE\",\n  TYPE0: \"TYPE0\",\n  MMTYPE1: \"MMTYPE1\"\n};\nexports.FontType = FontType;\nconst VerbosityLevel = {\n  ERRORS: 0,\n  WARNINGS: 1,\n  INFOS: 5\n};\nexports.VerbosityLevel = VerbosityLevel;\nconst CMapCompressionType = {\n  NONE: 0,\n  BINARY: 1,\n  STREAM: 2\n};\nexports.CMapCompressionType = CMapCompressionType;\nconst OPS = {\n  dependency: 1,\n  setLineWidth: 2,\n  setLineCap: 3,\n  setLineJoin: 4,\n  setMiterLimit: 5,\n  setDash: 6,\n  setRenderingIntent: 7,\n  setFlatness: 8,\n  setGState: 9,\n  save: 10,\n  restore: 11,\n  transform: 12,\n  moveTo: 13,\n  lineTo: 14,\n  curveTo: 15,\n  curveTo2: 16,\n  curveTo3: 17,\n  closePath: 18,\n  rectangle: 19,\n  stroke: 20,\n  closeStroke: 21,\n  fill: 22,\n  eoFill: 23,\n  fillStroke: 24,\n  eoFillStroke: 25,\n  closeFillStroke: 26,\n  closeEOFillStroke: 27,\n  endPath: 28,\n  clip: 29,\n  eoClip: 30,\n  beginText: 31,\n  endText: 32,\n  setCharSpacing: 33,\n  setWordSpacing: 34,\n  setHScale: 35,\n  setLeading: 36,\n  setFont: 37,\n  setTextRenderingMode: 38,\n  setTextRise: 39,\n  moveText: 40,\n  setLeadingMoveText: 41,\n  setTextMatrix: 42,\n  nextLine: 43,\n  showText: 44,\n  showSpacedText: 45,\n  nextLineShowText: 46,\n  nextLineSetSpacingShowText: 47,\n  setCharWidth: 48,\n  setCharWidthAndBounds: 49,\n  setStrokeColorSpace: 50,\n  setFillColorSpace: 51,\n  setStrokeColor: 52,\n  setStrokeColorN: 53,\n  setFillColor: 54,\n  setFillColorN: 55,\n  setStrokeGray: 56,\n  setFillGray: 57,\n  setStrokeRGBColor: 58,\n  setFillRGBColor: 59,\n  setStrokeCMYKColor: 60,\n  setFillCMYKColor: 61,\n  shadingFill: 62,\n  beginInlineImage: 63,\n  beginImageData: 64,\n  endInlineImage: 65,\n  paintXObject: 66,\n  markPoint: 67,\n  markPointProps: 68,\n  beginMarkedContent: 69,\n  beginMarkedContentProps: 70,\n  endMarkedContent: 71,\n  beginCompat: 72,\n  endCompat: 73,\n  paintFormXObjectBegin: 74,\n  paintFormXObjectEnd: 75,\n  beginGroup: 76,\n  endGroup: 77,\n  beginAnnotations: 78,\n  endAnnotations: 79,\n  beginAnnotation: 80,\n  endAnnotation: 81,\n  paintJpegXObject: 82,\n  paintImageMaskXObject: 83,\n  paintImageMaskXObjectGroup: 84,\n  paintImageXObject: 85,\n  paintInlineImageXObject: 86,\n  paintInlineImageXObjectGroup: 87,\n  paintImageXObjectRepeat: 88,\n  paintImageMaskXObjectRepeat: 89,\n  paintSolidColorImageMask: 90,\n  constructPath: 91\n};\nexports.OPS = OPS;\nconst UNSUPPORTED_FEATURES = {\n  unknown: \"unknown\",\n  forms: \"forms\",\n  javaScript: \"javaScript\",\n  signatures: \"signatures\",\n  smask: \"smask\",\n  shadingPattern: \"shadingPattern\",\n  font: \"font\",\n  errorTilingPattern: \"errorTilingPattern\",\n  errorExtGState: \"errorExtGState\",\n  errorXObject: \"errorXObject\",\n  errorFontLoadType3: \"errorFontLoadType3\",\n  errorFontState: \"errorFontState\",\n  errorFontMissing: \"errorFontMissing\",\n  errorFontTranslate: \"errorFontTranslate\",\n  errorColorSpace: \"errorColorSpace\",\n  errorOperatorList: \"errorOperatorList\",\n  errorFontToUnicode: \"errorFontToUnicode\",\n  errorFontLoadNative: \"errorFontLoadNative\",\n  errorFontBuildPath: \"errorFontBuildPath\",\n  errorFontGetPath: \"errorFontGetPath\",\n  errorMarkedContent: \"errorMarkedContent\",\n  errorContentSubStream: \"errorContentSubStream\"\n};\nexports.UNSUPPORTED_FEATURES = UNSUPPORTED_FEATURES;\nconst PasswordResponses = {\n  NEED_PASSWORD: 1,\n  INCORRECT_PASSWORD: 2\n};\nexports.PasswordResponses = PasswordResponses;\nlet verbosity = VerbosityLevel.WARNINGS;\n\nfunction setVerbosityLevel(level) {\n  if (Number.isInteger(level)) {\n    verbosity = level;\n  }\n}\n\nfunction getVerbosityLevel() {\n  return verbosity;\n}\n\nfunction info(msg) {\n  if (verbosity >= VerbosityLevel.INFOS) {\n    console.log(`Info: ${msg}`);\n  }\n}\n\nfunction warn(msg) {\n  if (verbosity >= VerbosityLevel.WARNINGS) {\n    console.log(`Warning: ${msg}`);\n  }\n}\n\nfunction unreachable(msg) {\n  throw new Error(msg);\n}\n\nfunction assert(cond, msg) {\n  if (!cond) {\n    unreachable(msg);\n  }\n}\n\nfunction _isValidProtocol(url) {\n  if (!url) {\n    return false;\n  }\n\n  switch (url.protocol) {\n    case \"http:\":\n    case \"https:\":\n    case \"ftp:\":\n    case \"mailto:\":\n    case \"tel:\":\n      return true;\n\n    default:\n      return false;\n  }\n}\n\nfunction createValidAbsoluteUrl(url, baseUrl = null, options = null) {\n  if (!url) {\n    return null;\n  }\n\n  try {\n    if (options && typeof url === \"string\") {\n      if (options.addDefaultProtocol && url.startsWith(\"www.\")) {\n        const dots = url.match(/\\./g);\n\n        if (dots && dots.length >= 2) {\n          url = `http://${url}`;\n        }\n      }\n\n      if (options.tryConvertEncoding) {\n        try {\n          url = stringToUTF8String(url);\n        } catch (ex) {}\n      }\n    }\n\n    const absoluteUrl = baseUrl ? new URL(url, baseUrl) : new URL(url);\n\n    if (_isValidProtocol(absoluteUrl)) {\n      return absoluteUrl;\n    }\n  } catch (ex) {}\n\n  return null;\n}\n\nfunction shadow(obj, prop, value) {\n  Object.defineProperty(obj, prop, {\n    value,\n    enumerable: true,\n    configurable: true,\n    writable: false\n  });\n  return value;\n}\n\nconst BaseException = function BaseExceptionClosure() {\n  function BaseException(message, name) {\n    if (this.constructor === BaseException) {\n      unreachable(\"Cannot initialize BaseException.\");\n    }\n\n    this.message = message;\n    this.name = name;\n  }\n\n  BaseException.prototype = new Error();\n  BaseException.constructor = BaseException;\n  return BaseException;\n}();\n\nexports.BaseException = BaseException;\n\nclass PasswordException extends BaseException {\n  constructor(msg, code) {\n    super(msg, \"PasswordException\");\n    this.code = code;\n  }\n\n}\n\nexports.PasswordException = PasswordException;\n\nclass UnknownErrorException extends BaseException {\n  constructor(msg, details) {\n    super(msg, \"UnknownErrorException\");\n    this.details = details;\n  }\n\n}\n\nexports.UnknownErrorException = UnknownErrorException;\n\nclass InvalidPDFException extends BaseException {\n  constructor(msg) {\n    super(msg, \"InvalidPDFException\");\n  }\n\n}\n\nexports.InvalidPDFException = InvalidPDFException;\n\nclass MissingPDFException extends BaseException {\n  constructor(msg) {\n    super(msg, \"MissingPDFException\");\n  }\n\n}\n\nexports.MissingPDFException = MissingPDFException;\n\nclass UnexpectedResponseException extends BaseException {\n  constructor(msg, status) {\n    super(msg, \"UnexpectedResponseException\");\n    this.status = status;\n  }\n\n}\n\nexports.UnexpectedResponseException = UnexpectedResponseException;\n\nclass FormatError extends BaseException {\n  constructor(msg) {\n    super(msg, \"FormatError\");\n  }\n\n}\n\nexports.FormatError = FormatError;\n\nclass AbortException extends BaseException {\n  constructor(msg) {\n    super(msg, \"AbortException\");\n  }\n\n}\n\nexports.AbortException = AbortException;\n\nfunction bytesToString(bytes) {\n  if (typeof bytes !== \"object\" || bytes === null || bytes.length === undefined) {\n    unreachable(\"Invalid argument for bytesToString\");\n  }\n\n  const length = bytes.length;\n  const MAX_ARGUMENT_COUNT = 8192;\n\n  if (length < MAX_ARGUMENT_COUNT) {\n    return String.fromCharCode.apply(null, bytes);\n  }\n\n  const strBuf = [];\n\n  for (let i = 0; i < length; i += MAX_ARGUMENT_COUNT) {\n    const chunkEnd = Math.min(i + MAX_ARGUMENT_COUNT, length);\n    const chunk = bytes.subarray(i, chunkEnd);\n    strBuf.push(String.fromCharCode.apply(null, chunk));\n  }\n\n  return strBuf.join(\"\");\n}\n\nfunction stringToBytes(str) {\n  if (typeof str !== \"string\") {\n    unreachable(\"Invalid argument for stringToBytes\");\n  }\n\n  const length = str.length;\n  const bytes = new Uint8Array(length);\n\n  for (let i = 0; i < length; ++i) {\n    bytes[i] = str.charCodeAt(i) & 0xff;\n  }\n\n  return bytes;\n}\n\nfunction arrayByteLength(arr) {\n  if (arr.length !== undefined) {\n    return arr.length;\n  }\n\n  if (arr.byteLength !== undefined) {\n    return arr.byteLength;\n  }\n\n  unreachable(\"Invalid argument for arrayByteLength\");\n}\n\nfunction arraysToBytes(arr) {\n  const length = arr.length;\n\n  if (length === 1 && arr[0] instanceof Uint8Array) {\n    return arr[0];\n  }\n\n  let resultLength = 0;\n\n  for (let i = 0; i < length; i++) {\n    resultLength += arrayByteLength(arr[i]);\n  }\n\n  let pos = 0;\n  const data = new Uint8Array(resultLength);\n\n  for (let i = 0; i < length; i++) {\n    let item = arr[i];\n\n    if (!(item instanceof Uint8Array)) {\n      if (typeof item === \"string\") {\n        item = stringToBytes(item);\n      } else {\n        item = new Uint8Array(item);\n      }\n    }\n\n    const itemLength = item.byteLength;\n    data.set(item, pos);\n    pos += itemLength;\n  }\n\n  return data;\n}\n\nfunction string32(value) {\n  return String.fromCharCode(value >> 24 & 0xff, value >> 16 & 0xff, value >> 8 & 0xff, value & 0xff);\n}\n\nfunction objectSize(obj) {\n  return Object.keys(obj).length;\n}\n\nfunction objectFromMap(map) {\n  const obj = Object.create(null);\n\n  for (const [key, value] of map) {\n    obj[key] = value;\n  }\n\n  return obj;\n}\n\nfunction isLittleEndian() {\n  const buffer8 = new Uint8Array(4);\n  buffer8[0] = 1;\n  const view32 = new Uint32Array(buffer8.buffer, 0, 1);\n  return view32[0] === 1;\n}\n\nconst IsLittleEndianCached = {\n  get value() {\n    return shadow(this, \"value\", isLittleEndian());\n  }\n\n};\nexports.IsLittleEndianCached = IsLittleEndianCached;\n\nfunction isEvalSupported() {\n  try {\n    new Function(\"\");\n    return true;\n  } catch (e) {\n    return false;\n  }\n}\n\nconst IsEvalSupportedCached = {\n  get value() {\n    return shadow(this, \"value\", isEvalSupported());\n  }\n\n};\nexports.IsEvalSupportedCached = IsEvalSupportedCached;\nconst hexNumbers = [...Array(256).keys()].map(n => n.toString(16).padStart(2, \"0\"));\n\nclass Util {\n  static makeHexColor(r, g, b) {\n    return `#${hexNumbers[r]}${hexNumbers[g]}${hexNumbers[b]}`;\n  }\n\n  static transform(m1, m2) {\n    return [m1[0] * m2[0] + m1[2] * m2[1], m1[1] * m2[0] + m1[3] * m2[1], m1[0] * m2[2] + m1[2] * m2[3], m1[1] * m2[2] + m1[3] * m2[3], m1[0] * m2[4] + m1[2] * m2[5] + m1[4], m1[1] * m2[4] + m1[3] * m2[5] + m1[5]];\n  }\n\n  static applyTransform(p, m) {\n    const xt = p[0] * m[0] + p[1] * m[2] + m[4];\n    const yt = p[0] * m[1] + p[1] * m[3] + m[5];\n    return [xt, yt];\n  }\n\n  static applyInverseTransform(p, m) {\n    const d = m[0] * m[3] - m[1] * m[2];\n    const xt = (p[0] * m[3] - p[1] * m[2] + m[2] * m[5] - m[4] * m[3]) / d;\n    const yt = (-p[0] * m[1] + p[1] * m[0] + m[4] * m[1] - m[5] * m[0]) / d;\n    return [xt, yt];\n  }\n\n  static getAxialAlignedBoundingBox(r, m) {\n    const p1 = Util.applyTransform(r, m);\n    const p2 = Util.applyTransform(r.slice(2, 4), m);\n    const p3 = Util.applyTransform([r[0], r[3]], m);\n    const p4 = Util.applyTransform([r[2], r[1]], m);\n    return [Math.min(p1[0], p2[0], p3[0], p4[0]), Math.min(p1[1], p2[1], p3[1], p4[1]), Math.max(p1[0], p2[0], p3[0], p4[0]), Math.max(p1[1], p2[1], p3[1], p4[1])];\n  }\n\n  static inverseTransform(m) {\n    const d = m[0] * m[3] - m[1] * m[2];\n    return [m[3] / d, -m[1] / d, -m[2] / d, m[0] / d, (m[2] * m[5] - m[4] * m[3]) / d, (m[4] * m[1] - m[5] * m[0]) / d];\n  }\n\n  static apply3dTransform(m, v) {\n    return [m[0] * v[0] + m[1] * v[1] + m[2] * v[2], m[3] * v[0] + m[4] * v[1] + m[5] * v[2], m[6] * v[0] + m[7] * v[1] + m[8] * v[2]];\n  }\n\n  static singularValueDecompose2dScale(m) {\n    const transpose = [m[0], m[2], m[1], m[3]];\n    const a = m[0] * transpose[0] + m[1] * transpose[2];\n    const b = m[0] * transpose[1] + m[1] * transpose[3];\n    const c = m[2] * transpose[0] + m[3] * transpose[2];\n    const d = m[2] * transpose[1] + m[3] * transpose[3];\n    const first = (a + d) / 2;\n    const second = Math.sqrt((a + d) ** 2 - 4 * (a * d - c * b)) / 2;\n    const sx = first + second || 1;\n    const sy = first - second || 1;\n    return [Math.sqrt(sx), Math.sqrt(sy)];\n  }\n\n  static normalizeRect(rect) {\n    const r = rect.slice(0);\n\n    if (rect[0] > rect[2]) {\n      r[0] = rect[2];\n      r[2] = rect[0];\n    }\n\n    if (rect[1] > rect[3]) {\n      r[1] = rect[3];\n      r[3] = rect[1];\n    }\n\n    return r;\n  }\n\n  static intersect(rect1, rect2) {\n    function compare(a, b) {\n      return a - b;\n    }\n\n    const orderedX = [rect1[0], rect1[2], rect2[0], rect2[2]].sort(compare);\n    const orderedY = [rect1[1], rect1[3], rect2[1], rect2[3]].sort(compare);\n    const result = [];\n    rect1 = Util.normalizeRect(rect1);\n    rect2 = Util.normalizeRect(rect2);\n\n    if (orderedX[0] === rect1[0] && orderedX[1] === rect2[0] || orderedX[0] === rect2[0] && orderedX[1] === rect1[0]) {\n      result[0] = orderedX[1];\n      result[2] = orderedX[2];\n    } else {\n      return null;\n    }\n\n    if (orderedY[0] === rect1[1] && orderedY[1] === rect2[1] || orderedY[0] === rect2[1] && orderedY[1] === rect1[1]) {\n      result[1] = orderedY[1];\n      result[3] = orderedY[2];\n    } else {\n      return null;\n    }\n\n    return result;\n  }\n\n  static bezierBoundingBox(x0, y0, x1, y1, x2, y2, x3, y3) {\n    const tvalues = [],\n          bounds = [[], []];\n    let a, b, c, t, t1, t2, b2ac, sqrtb2ac;\n\n    for (let i = 0; i < 2; ++i) {\n      if (i === 0) {\n        b = 6 * x0 - 12 * x1 + 6 * x2;\n        a = -3 * x0 + 9 * x1 - 9 * x2 + 3 * x3;\n        c = 3 * x1 - 3 * x0;\n      } else {\n        b = 6 * y0 - 12 * y1 + 6 * y2;\n        a = -3 * y0 + 9 * y1 - 9 * y2 + 3 * y3;\n        c = 3 * y1 - 3 * y0;\n      }\n\n      if (Math.abs(a) < 1e-12) {\n        if (Math.abs(b) < 1e-12) {\n          continue;\n        }\n\n        t = -c / b;\n\n        if (0 < t && t < 1) {\n          tvalues.push(t);\n        }\n\n        continue;\n      }\n\n      b2ac = b * b - 4 * c * a;\n      sqrtb2ac = Math.sqrt(b2ac);\n\n      if (b2ac < 0) {\n        continue;\n      }\n\n      t1 = (-b + sqrtb2ac) / (2 * a);\n\n      if (0 < t1 && t1 < 1) {\n        tvalues.push(t1);\n      }\n\n      t2 = (-b - sqrtb2ac) / (2 * a);\n\n      if (0 < t2 && t2 < 1) {\n        tvalues.push(t2);\n      }\n    }\n\n    let j = tvalues.length,\n        mt;\n    const jlen = j;\n\n    while (j--) {\n      t = tvalues[j];\n      mt = 1 - t;\n      bounds[0][j] = mt * mt * mt * x0 + 3 * mt * mt * t * x1 + 3 * mt * t * t * x2 + t * t * t * x3;\n      bounds[1][j] = mt * mt * mt * y0 + 3 * mt * mt * t * y1 + 3 * mt * t * t * y2 + t * t * t * y3;\n    }\n\n    bounds[0][jlen] = x0;\n    bounds[1][jlen] = y0;\n    bounds[0][jlen + 1] = x3;\n    bounds[1][jlen + 1] = y3;\n    bounds[0].length = bounds[1].length = jlen + 2;\n    return [Math.min(...bounds[0]), Math.min(...bounds[1]), Math.max(...bounds[0]), Math.max(...bounds[1])];\n  }\n\n}\n\nexports.Util = Util;\nconst PDFStringTranslateTable = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x2d8, 0x2c7, 0x2c6, 0x2d9, 0x2dd, 0x2db, 0x2da, 0x2dc, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x2022, 0x2020, 0x2021, 0x2026, 0x2014, 0x2013, 0x192, 0x2044, 0x2039, 0x203a, 0x2212, 0x2030, 0x201e, 0x201c, 0x201d, 0x2018, 0x2019, 0x201a, 0x2122, 0xfb01, 0xfb02, 0x141, 0x152, 0x160, 0x178, 0x17d, 0x131, 0x142, 0x153, 0x161, 0x17e, 0, 0x20ac];\n\nfunction stringToPDFString(str) {\n  if (str[0] >= \"\\xEF\") {\n    let encoding;\n\n    if (str[0] === \"\\xFE\" && str[1] === \"\\xFF\") {\n      encoding = \"utf-16be\";\n    } else if (str[0] === \"\\xFF\" && str[1] === \"\\xFE\") {\n      encoding = \"utf-16le\";\n    } else if (str[0] === \"\\xEF\" && str[1] === \"\\xBB\" && str[2] === \"\\xBF\") {\n      encoding = \"utf-8\";\n    }\n\n    if (encoding) {\n      try {\n        const decoder = new TextDecoder(encoding, {\n          fatal: true\n        });\n        const buffer = stringToBytes(str);\n        return decoder.decode(buffer);\n      } catch (ex) {\n        warn(`stringToPDFString: \"${ex}\".`);\n      }\n    }\n  }\n\n  const strBuf = [];\n\n  for (let i = 0, ii = str.length; i < ii; i++) {\n    const code = PDFStringTranslateTable[str.charCodeAt(i)];\n    strBuf.push(code ? String.fromCharCode(code) : str.charAt(i));\n  }\n\n  return strBuf.join(\"\");\n}\n\nfunction escapeString(str) {\n  return str.replace(/([()\\\\\\n\\r])/g, match => {\n    if (match === \"\\n\") {\n      return \"\\\\n\";\n    } else if (match === \"\\r\") {\n      return \"\\\\r\";\n    }\n\n    return `\\\\${match}`;\n  });\n}\n\nfunction isAscii(str) {\n  return /^[\\x00-\\x7F]*$/.test(str);\n}\n\nfunction stringToUTF16BEString(str) {\n  const buf = [\"\\xFE\\xFF\"];\n\n  for (let i = 0, ii = str.length; i < ii; i++) {\n    const char = str.charCodeAt(i);\n    buf.push(String.fromCharCode(char >> 8 & 0xff), String.fromCharCode(char & 0xff));\n  }\n\n  return buf.join(\"\");\n}\n\nfunction stringToUTF8String(str) {\n  return decodeURIComponent(escape(str));\n}\n\nfunction utf8StringToString(str) {\n  return unescape(encodeURIComponent(str));\n}\n\nfunction isArrayBuffer(v) {\n  return typeof v === \"object\" && v !== null && v.byteLength !== undefined;\n}\n\nfunction isArrayEqual(arr1, arr2) {\n  if (arr1.length !== arr2.length) {\n    return false;\n  }\n\n  for (let i = 0, ii = arr1.length; i < ii; i++) {\n    if (arr1[i] !== arr2[i]) {\n      return false;\n    }\n  }\n\n  return true;\n}\n\nfunction getModificationDate(date = new Date()) {\n  const buffer = [date.getUTCFullYear().toString(), (date.getUTCMonth() + 1).toString().padStart(2, \"0\"), date.getUTCDate().toString().padStart(2, \"0\"), date.getUTCHours().toString().padStart(2, \"0\"), date.getUTCMinutes().toString().padStart(2, \"0\"), date.getUTCSeconds().toString().padStart(2, \"0\")];\n  return buffer.join(\"\");\n}\n\nfunction createPromiseCapability() {\n  const capability = Object.create(null);\n  let isSettled = false;\n  Object.defineProperty(capability, \"settled\", {\n    get() {\n      return isSettled;\n    }\n\n  });\n  capability.promise = new Promise(function (resolve, reject) {\n    capability.resolve = function (data) {\n      isSettled = true;\n      resolve(data);\n    };\n\n    capability.reject = function (reason) {\n      isSettled = true;\n      reject(reason);\n    };\n  });\n  return capability;\n}\n\n/***/ }),\n/* 3 */\n/***/ ((__unused_webpack_module, __unused_webpack_exports, __w_pdfjs_require__) => {\n\n\n\nvar _is_node = __w_pdfjs_require__(4);\n\n;\n\n/***/ }),\n/* 4 */\n/***/ ((__unused_webpack_module, exports) => {\n\n\n\nObject.defineProperty(exports, \"__esModule\", ({\n  value: true\n}));\nexports.isNodeJS = void 0;\nconst isNodeJS = typeof process === \"object\" && process + \"\" === \"[object process]\" && !process.versions.nw && !(process.versions.electron && process.type && process.type !== \"browser\");\nexports.isNodeJS = isNodeJS;\n\n/***/ }),\n/* 5 */\n/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {\n\n\n\nObject.defineProperty(exports, \"__esModule\", ({\n  value: true\n}));\nexports.RefSetCache = exports.RefSet = exports.Ref = exports.Name = exports.EOF = exports.Dict = exports.Cmd = exports.CIRCULAR_REF = void 0;\nexports.clearPrimitiveCaches = clearPrimitiveCaches;\nexports.isCmd = isCmd;\nexports.isDict = isDict;\nexports.isName = isName;\nexports.isRefsEqual = isRefsEqual;\n\nvar _util = __w_pdfjs_require__(2);\n\nconst CIRCULAR_REF = Symbol(\"CIRCULAR_REF\");\nexports.CIRCULAR_REF = CIRCULAR_REF;\nconst EOF = Symbol(\"EOF\");\nexports.EOF = EOF;\n\nconst Name = function NameClosure() {\n  let nameCache = Object.create(null);\n\n  class Name {\n    constructor(name) {\n      this.name = name;\n    }\n\n    static get(name) {\n      const nameValue = nameCache[name];\n      return nameValue ? nameValue : nameCache[name] = new Name(name);\n    }\n\n    static _clearCache() {\n      nameCache = Object.create(null);\n    }\n\n  }\n\n  return Name;\n}();\n\nexports.Name = Name;\n\nconst Cmd = function CmdClosure() {\n  let cmdCache = Object.create(null);\n\n  class Cmd {\n    constructor(cmd) {\n      this.cmd = cmd;\n    }\n\n    static get(cmd) {\n      const cmdValue = cmdCache[cmd];\n      return cmdValue ? cmdValue : cmdCache[cmd] = new Cmd(cmd);\n    }\n\n    static _clearCache() {\n      cmdCache = Object.create(null);\n    }\n\n  }\n\n  return Cmd;\n}();\n\nexports.Cmd = Cmd;\n\nconst nonSerializable = function nonSerializableClosure() {\n  return nonSerializable;\n};\n\nclass Dict {\n  constructor(xref = null) {\n    this._map = Object.create(null);\n    this.xref = xref;\n    this.objId = null;\n    this.suppressEncryption = false;\n    this.__nonSerializable__ = nonSerializable;\n  }\n\n  assignXref(newXref) {\n    this.xref = newXref;\n  }\n\n  get size() {\n    return Object.keys(this._map).length;\n  }\n\n  get(key1, key2, key3) {\n    let value = this._map[key1];\n\n    if (value === undefined && key2 !== undefined) {\n      value = this._map[key2];\n\n      if (value === undefined && key3 !== undefined) {\n        value = this._map[key3];\n      }\n    }\n\n    if (value instanceof Ref && this.xref) {\n      return this.xref.fetch(value, this.suppressEncryption);\n    }\n\n    return value;\n  }\n\n  async getAsync(key1, key2, key3) {\n    let value = this._map[key1];\n\n    if (value === undefined && key2 !== undefined) {\n      value = this._map[key2];\n\n      if (value === undefined && key3 !== undefined) {\n        value = this._map[key3];\n      }\n    }\n\n    if (value instanceof Ref && this.xref) {\n      return this.xref.fetchAsync(value, this.suppressEncryption);\n    }\n\n    return value;\n  }\n\n  getArray(key1, key2, key3) {\n    let value = this._map[key1];\n\n    if (value === undefined && key2 !== undefined) {\n      value = this._map[key2];\n\n      if (value === undefined && key3 !== undefined) {\n        value = this._map[key3];\n      }\n    }\n\n    if (value instanceof Ref && this.xref) {\n      value = this.xref.fetch(value, this.suppressEncryption);\n    }\n\n    if (Array.isArray(value)) {\n      value = value.slice();\n\n      for (let i = 0, ii = value.length; i < ii; i++) {\n        if (value[i] instanceof Ref && this.xref) {\n          value[i] = this.xref.fetch(value[i], this.suppressEncryption);\n        }\n      }\n    }\n\n    return value;\n  }\n\n  getRaw(key) {\n    return this._map[key];\n  }\n\n  getKeys() {\n    return Object.keys(this._map);\n  }\n\n  getRawValues() {\n    return Object.values(this._map);\n  }\n\n  set(key, value) {\n    this._map[key] = value;\n  }\n\n  has(key) {\n    return this._map[key] !== undefined;\n  }\n\n  forEach(callback) {\n    for (const key in this._map) {\n      callback(key, this.get(key));\n    }\n  }\n\n  static get empty() {\n    const emptyDict = new Dict(null);\n\n    emptyDict.set = (key, value) => {\n      (0, _util.unreachable)(\"Should not call `set` on the empty dictionary.\");\n    };\n\n    return (0, _util.shadow)(this, \"empty\", emptyDict);\n  }\n\n  static merge({\n    xref,\n    dictArray,\n    mergeSubDicts = false\n  }) {\n    const mergedDict = new Dict(xref),\n          properties = new Map();\n\n    for (const dict of dictArray) {\n      if (!(dict instanceof Dict)) {\n        continue;\n      }\n\n      for (const [key, value] of Object.entries(dict._map)) {\n        let property = properties.get(key);\n\n        if (property === undefined) {\n          property = [];\n          properties.set(key, property);\n        } else if (!mergeSubDicts || !(value instanceof Dict)) {\n          continue;\n        }\n\n        property.push(value);\n      }\n    }\n\n    for (const [name, values] of properties) {\n      if (values.length === 1 || !(values[0] instanceof Dict)) {\n        mergedDict._map[name] = values[0];\n        continue;\n      }\n\n      const subDict = new Dict(xref);\n\n      for (const dict of values) {\n        for (const [key, value] of Object.entries(dict._map)) {\n          if (subDict._map[key] === undefined) {\n            subDict._map[key] = value;\n          }\n        }\n      }\n\n      if (subDict.size > 0) {\n        mergedDict._map[name] = subDict;\n      }\n    }\n\n    properties.clear();\n    return mergedDict.size > 0 ? mergedDict : Dict.empty;\n  }\n\n}\n\nexports.Dict = Dict;\n\nconst Ref = function RefClosure() {\n  let refCache = Object.create(null);\n\n  class Ref {\n    constructor(num, gen) {\n      this.num = num;\n      this.gen = gen;\n    }\n\n    toString() {\n      if (this.gen === 0) {\n        return `${this.num}R`;\n      }\n\n      return `${this.num}R${this.gen}`;\n    }\n\n    static get(num, gen) {\n      const key = gen === 0 ? `${num}R` : `${num}R${gen}`;\n      const refValue = refCache[key];\n      return refValue ? refValue : refCache[key] = new Ref(num, gen);\n    }\n\n    static _clearCache() {\n      refCache = Object.create(null);\n    }\n\n  }\n\n  return Ref;\n}();\n\nexports.Ref = Ref;\n\nclass RefSet {\n  constructor(parent = null) {\n    this._set = new Set(parent && parent._set);\n  }\n\n  has(ref) {\n    return this._set.has(ref.toString());\n  }\n\n  put(ref) {\n    this._set.add(ref.toString());\n  }\n\n  remove(ref) {\n    this._set.delete(ref.toString());\n  }\n\n  forEach(callback) {\n    for (const ref of this._set.values()) {\n      callback(ref);\n    }\n  }\n\n  clear() {\n    this._set.clear();\n  }\n\n}\n\nexports.RefSet = RefSet;\n\nclass RefSetCache {\n  constructor() {\n    this._map = new Map();\n  }\n\n  get size() {\n    return this._map.size;\n  }\n\n  get(ref) {\n    return this._map.get(ref.toString());\n  }\n\n  has(ref) {\n    return this._map.has(ref.toString());\n  }\n\n  put(ref, obj) {\n    this._map.set(ref.toString(), obj);\n  }\n\n  putAlias(ref, aliasRef) {\n    this._map.set(ref.toString(), this.get(aliasRef));\n  }\n\n  forEach(callback) {\n    for (const value of this._map.values()) {\n      callback(value);\n    }\n  }\n\n  clear() {\n    this._map.clear();\n  }\n\n}\n\nexports.RefSetCache = RefSetCache;\n\nfunction isName(v, name) {\n  return v instanceof Name && (name === undefined || v.name === name);\n}\n\nfunction isCmd(v, cmd) {\n  return v instanceof Cmd && (cmd === undefined || v.cmd === cmd);\n}\n\nfunction isDict(v, type) {\n  return v instanceof Dict && (type === undefined || isName(v.get(\"Type\"), type));\n}\n\nfunction isRefsEqual(v1, v2) {\n  return v1.num === v2.num && v1.gen === v2.gen;\n}\n\nfunction clearPrimitiveCaches() {\n  Cmd._clearCache();\n\n  Name._clearCache();\n\n  Ref._clearCache();\n}\n\n/***/ }),\n/* 6 */\n/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {\n\n\n\nObject.defineProperty(exports, \"__esModule\", ({\n  value: true\n}));\nexports.NetworkPdfManager = exports.LocalPdfManager = void 0;\n\nvar _util = __w_pdfjs_require__(2);\n\nvar _chunked_stream = __w_pdfjs_require__(7);\n\nvar _core_utils = __w_pdfjs_require__(8);\n\nvar _document = __w_pdfjs_require__(11);\n\nvar _stream = __w_pdfjs_require__(10);\n\nfunction parseDocBaseUrl(url) {\n  if (url) {\n    const absoluteUrl = (0, _util.createValidAbsoluteUrl)(url);\n\n    if (absoluteUrl) {\n      return absoluteUrl.href;\n    }\n\n    (0, _util.warn)(`Invalid absolute docBaseUrl: \"${url}\".`);\n  }\n\n  return null;\n}\n\nclass BasePdfManager {\n  constructor() {\n    if (this.constructor === BasePdfManager) {\n      (0, _util.unreachable)(\"Cannot initialize BasePdfManager.\");\n    }\n  }\n\n  get docId() {\n    return this._docId;\n  }\n\n  get password() {\n    return this._password;\n  }\n\n  get docBaseUrl() {\n    return this._docBaseUrl;\n  }\n\n  onLoadedStream() {\n    (0, _util.unreachable)(\"Abstract method `onLoadedStream` called\");\n  }\n\n  ensureDoc(prop, args) {\n    return this.ensure(this.pdfDocument, prop, args);\n  }\n\n  ensureXRef(prop, args) {\n    return this.ensure(this.pdfDocument.xref, prop, args);\n  }\n\n  ensureCatalog(prop, args) {\n    return this.ensure(this.pdfDocument.catalog, prop, args);\n  }\n\n  getPage(pageIndex) {\n    return this.pdfDocument.getPage(pageIndex);\n  }\n\n  fontFallback(id, handler) {\n    return this.pdfDocument.fontFallback(id, handler);\n  }\n\n  loadXfaFonts(handler, task) {\n    return this.pdfDocument.loadXfaFonts(handler, task);\n  }\n\n  loadXfaImages() {\n    return this.pdfDocument.loadXfaImages();\n  }\n\n  serializeXfaData(annotationStorage) {\n    return this.pdfDocument.serializeXfaData(annotationStorage);\n  }\n\n  cleanup(manuallyTriggered = false) {\n    return this.pdfDocument.cleanup(manuallyTriggered);\n  }\n\n  async ensure(obj, prop, args) {\n    (0, _util.unreachable)(\"Abstract method `ensure` called\");\n  }\n\n  requestRange(begin, end) {\n    (0, _util.unreachable)(\"Abstract method `requestRange` called\");\n  }\n\n  requestLoadedStream() {\n    (0, _util.unreachable)(\"Abstract method `requestLoadedStream` called\");\n  }\n\n  sendProgressiveData(chunk) {\n    (0, _util.unreachable)(\"Abstract method `sendProgressiveData` called\");\n  }\n\n  updatePassword(password) {\n    this._password = password;\n  }\n\n  terminate(reason) {\n    (0, _util.unreachable)(\"Abstract method `terminate` called\");\n  }\n\n}\n\nclass LocalPdfManager extends BasePdfManager {\n  constructor(docId, data, password, msgHandler, evaluatorOptions, enableXfa, docBaseUrl) {\n    super();\n    this._docId = docId;\n    this._password = password;\n    this._docBaseUrl = parseDocBaseUrl(docBaseUrl);\n    this.msgHandler = msgHandler;\n    this.evaluatorOptions = evaluatorOptions;\n    this.enableXfa = enableXfa;\n    const stream = new _stream.Stream(data);\n    this.pdfDocument = new _document.PDFDocument(this, stream);\n    this._loadedStreamPromise = Promise.resolve(stream);\n  }\n\n  async ensure(obj, prop, args) {\n    const value = obj[prop];\n\n    if (typeof value === \"function\") {\n      return value.apply(obj, args);\n    }\n\n    return value;\n  }\n\n  requestRange(begin, end) {\n    return Promise.resolve();\n  }\n\n  requestLoadedStream() {}\n\n  onLoadedStream() {\n    return this._loadedStreamPromise;\n  }\n\n  terminate(reason) {}\n\n}\n\nexports.LocalPdfManager = LocalPdfManager;\n\nclass NetworkPdfManager extends BasePdfManager {\n  constructor(docId, pdfNetworkStream, args, evaluatorOptions, enableXfa, docBaseUrl) {\n    super();\n    this._docId = docId;\n    this._password = args.password;\n    this._docBaseUrl = parseDocBaseUrl(docBaseUrl);\n    this.msgHandler = args.msgHandler;\n    this.evaluatorOptions = evaluatorOptions;\n    this.enableXfa = enableXfa;\n    this.streamManager = new _chunked_stream.ChunkedStreamManager(pdfNetworkStream, {\n      msgHandler: args.msgHandler,\n      length: args.length,\n      disableAutoFetch: args.disableAutoFetch,\n      rangeChunkSize: args.rangeChunkSize\n    });\n    this.pdfDocument = new _document.PDFDocument(this, this.streamManager.getStream());\n  }\n\n  async ensure(obj, prop, args) {\n    try {\n      const value = obj[prop];\n\n      if (typeof value === \"function\") {\n        return value.apply(obj, args);\n      }\n\n      return value;\n    } catch (ex) {\n      if (!(ex instanceof _core_utils.MissingDataException)) {\n        throw ex;\n      }\n\n      await this.requestRange(ex.begin, ex.end);\n      return this.ensure(obj, prop, args);\n    }\n  }\n\n  requestRange(begin, end) {\n    return this.streamManager.requestRange(begin, end);\n  }\n\n  requestLoadedStream() {\n    this.streamManager.requestAllChunks();\n  }\n\n  sendProgressiveData(chunk) {\n    this.streamManager.onReceiveData({\n      chunk\n    });\n  }\n\n  onLoadedStream() {\n    return this.streamManager.onLoadedStream();\n  }\n\n  terminate(reason) {\n    this.streamManager.abort(reason);\n  }\n\n}\n\nexports.NetworkPdfManager = NetworkPdfManager;\n\n/***/ }),\n/* 7 */\n/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {\n\n\n\nObject.defineProperty(exports, \"__esModule\", ({\n  value: true\n}));\nexports.ChunkedStreamManager = exports.ChunkedStream = void 0;\n\nvar _util = __w_pdfjs_require__(2);\n\nvar _core_utils = __w_pdfjs_require__(8);\n\nvar _stream = __w_pdfjs_require__(10);\n\nclass ChunkedStream extends _stream.Stream {\n  constructor(length, chunkSize, manager) {\n    super(new Uint8Array(length), 0, length, null);\n    this.chunkSize = chunkSize;\n    this._loadedChunks = new Set();\n    this.numChunks = Math.ceil(length / chunkSize);\n    this.manager = manager;\n    this.progressiveDataLength = 0;\n    this.lastSuccessfulEnsureByteChunk = -1;\n  }\n\n  getMissingChunks() {\n    const chunks = [];\n\n    for (let chunk = 0, n = this.numChunks; chunk < n; ++chunk) {\n      if (!this._loadedChunks.has(chunk)) {\n        chunks.push(chunk);\n      }\n    }\n\n    return chunks;\n  }\n\n  get numChunksLoaded() {\n    return this._loadedChunks.size;\n  }\n\n  get isDataLoaded() {\n    return this.numChunksLoaded === this.numChunks;\n  }\n\n  onReceiveData(begin, chunk) {\n    const chunkSize = this.chunkSize;\n\n    if (begin % chunkSize !== 0) {\n      throw new Error(`Bad begin offset: ${begin}`);\n    }\n\n    const end = begin + chunk.byteLength;\n\n    if (end % chunkSize !== 0 && end !== this.bytes.length) {\n      throw new Error(`Bad end offset: ${end}`);\n    }\n\n    this.bytes.set(new Uint8Array(chunk), begin);\n    const beginChunk = Math.floor(begin / chunkSize);\n    const endChunk = Math.floor((end - 1) / chunkSize) + 1;\n\n    for (let curChunk = beginChunk; curChunk < endChunk; ++curChunk) {\n      this._loadedChunks.add(curChunk);\n    }\n  }\n\n  onReceiveProgressiveData(data) {\n    let position = this.progressiveDataLength;\n    const beginChunk = Math.floor(position / this.chunkSize);\n    this.bytes.set(new Uint8Array(data), position);\n    position += data.byteLength;\n    this.progressiveDataLength = position;\n    const endChunk = position >= this.end ? this.numChunks : Math.floor(position / this.chunkSize);\n\n    for (let curChunk = beginChunk; curChunk < endChunk; ++curChunk) {\n      this._loadedChunks.add(curChunk);\n    }\n  }\n\n  ensureByte(pos) {\n    if (pos < this.progressiveDataLength) {\n      return;\n    }\n\n    const chunk = Math.floor(pos / this.chunkSize);\n\n    if (chunk > this.numChunks) {\n      return;\n    }\n\n    if (chunk === this.lastSuccessfulEnsureByteChunk) {\n      return;\n    }\n\n    if (!this._loadedChunks.has(chunk)) {\n      throw new _core_utils.MissingDataException(pos, pos + 1);\n    }\n\n    this.lastSuccessfulEnsureByteChunk = chunk;\n  }\n\n  ensureRange(begin, end) {\n    if (begin >= end) {\n      return;\n    }\n\n    if (end <= this.progressiveDataLength) {\n      return;\n    }\n\n    const beginChunk = Math.floor(begin / this.chunkSize);\n\n    if (beginChunk > this.numChunks) {\n      return;\n    }\n\n    const endChunk = Math.min(Math.floor((end - 1) / this.chunkSize) + 1, this.numChunks);\n\n    for (let chunk = beginChunk; chunk < endChunk; ++chunk) {\n      if (!this._loadedChunks.has(chunk)) {\n        throw new _core_utils.MissingDataException(begin, end);\n      }\n    }\n  }\n\n  nextEmptyChunk(beginChunk) {\n    const numChunks = this.numChunks;\n\n    for (let i = 0; i < numChunks; ++i) {\n      const chunk = (beginChunk + i) % numChunks;\n\n      if (!this._loadedChunks.has(chunk)) {\n        return chunk;\n      }\n    }\n\n    return null;\n  }\n\n  hasChunk(chunk) {\n    return this._loadedChunks.has(chunk);\n  }\n\n  getByte() {\n    const pos = this.pos;\n\n    if (pos >= this.end) {\n      return -1;\n    }\n\n    if (pos >= this.progressiveDataLength) {\n      this.ensureByte(pos);\n    }\n\n    return this.bytes[this.pos++];\n  }\n\n  getBytes(length, forceClamped = false) {\n    const bytes = this.bytes;\n    const pos = this.pos;\n    const strEnd = this.end;\n\n    if (!length) {\n      if (strEnd > this.progressiveDataLength) {\n        this.ensureRange(pos, strEnd);\n      }\n\n      const subarray = bytes.subarray(pos, strEnd);\n      return forceClamped ? new Uint8ClampedArray(subarray) : subarray;\n    }\n\n    let end = pos + length;\n\n    if (end > strEnd) {\n      end = strEnd;\n    }\n\n    if (end > this.progressiveDataLength) {\n      this.ensureRange(pos, end);\n    }\n\n    this.pos = end;\n    const subarray = bytes.subarray(pos, end);\n    return forceClamped ? new Uint8ClampedArray(subarray) : subarray;\n  }\n\n  getByteRange(begin, end) {\n    if (begin < 0) {\n      begin = 0;\n    }\n\n    if (end > this.end) {\n      end = this.end;\n    }\n\n    if (end > this.progressiveDataLength) {\n      this.ensureRange(begin, end);\n    }\n\n    return this.bytes.subarray(begin, end);\n  }\n\n  makeSubStream(start, length, dict = null) {\n    if (length) {\n      if (start + length > this.progressiveDataLength) {\n        this.ensureRange(start, start + length);\n      }\n    } else {\n      if (start >= this.progressiveDataLength) {\n        this.ensureByte(start);\n      }\n    }\n\n    function ChunkedStreamSubstream() {}\n\n    ChunkedStreamSubstream.prototype = Object.create(this);\n\n    ChunkedStreamSubstream.prototype.getMissingChunks = function () {\n      const chunkSize = this.chunkSize;\n      const beginChunk = Math.floor(this.start / chunkSize);\n      const endChunk = Math.floor((this.end - 1) / chunkSize) + 1;\n      const missingChunks = [];\n\n      for (let chunk = beginChunk; chunk < endChunk; ++chunk) {\n        if (!this._loadedChunks.has(chunk)) {\n          missingChunks.push(chunk);\n        }\n      }\n\n      return missingChunks;\n    };\n\n    Object.defineProperty(ChunkedStreamSubstream.prototype, \"isDataLoaded\", {\n      get() {\n        if (this.numChunksLoaded === this.numChunks) {\n          return true;\n        }\n\n        return this.getMissingChunks().length === 0;\n      },\n\n      configurable: true\n    });\n    const subStream = new ChunkedStreamSubstream();\n    subStream.pos = subStream.start = start;\n    subStream.end = start + length || this.end;\n    subStream.dict = dict;\n    return subStream;\n  }\n\n  getBaseStreams() {\n    return [this];\n  }\n\n}\n\nexports.ChunkedStream = ChunkedStream;\n\nclass ChunkedStreamManager {\n  constructor(pdfNetworkStream, args) {\n    this.length = args.length;\n    this.chunkSize = args.rangeChunkSize;\n    this.stream = new ChunkedStream(this.length, this.chunkSize, this);\n    this.pdfNetworkStream = pdfNetworkStream;\n    this.disableAutoFetch = args.disableAutoFetch;\n    this.msgHandler = args.msgHandler;\n    this.currRequestId = 0;\n    this._chunksNeededByRequest = new Map();\n    this._requestsByChunk = new Map();\n    this._promisesByRequest = new Map();\n    this.progressiveDataLength = 0;\n    this.aborted = false;\n    this._loadedStreamCapability = (0, _util.createPromiseCapability)();\n  }\n\n  onLoadedStream() {\n    return this._loadedStreamCapability.promise;\n  }\n\n  sendRequest(begin, end) {\n    const rangeReader = this.pdfNetworkStream.getRangeReader(begin, end);\n\n    if (!rangeReader.isStreamingSupported) {\n      rangeReader.onProgress = this.onProgress.bind(this);\n    }\n\n    let chunks = [],\n        loaded = 0;\n    return new Promise((resolve, reject) => {\n      const readChunk = chunk => {\n        try {\n          if (!chunk.done) {\n            const data = chunk.value;\n            chunks.push(data);\n            loaded += (0, _util.arrayByteLength)(data);\n\n            if (rangeReader.isStreamingSupported) {\n              this.onProgress({\n                loaded\n              });\n            }\n\n            rangeReader.read().then(readChunk, reject);\n            return;\n          }\n\n          const chunkData = (0, _util.arraysToBytes)(chunks);\n          chunks = null;\n          resolve(chunkData);\n        } catch (e) {\n          reject(e);\n        }\n      };\n\n      rangeReader.read().then(readChunk, reject);\n    }).then(data => {\n      if (this.aborted) {\n        return;\n      }\n\n      this.onReceiveData({\n        chunk: data,\n        begin\n      });\n    });\n  }\n\n  requestAllChunks() {\n    const missingChunks = this.stream.getMissingChunks();\n\n    this._requestChunks(missingChunks);\n\n    return this._loadedStreamCapability.promise;\n  }\n\n  _requestChunks(chunks) {\n    const requestId = this.currRequestId++;\n    const chunksNeeded = new Set();\n\n    this._chunksNeededByRequest.set(requestId, chunksNeeded);\n\n    for (const chunk of chunks) {\n      if (!this.stream.hasChunk(chunk)) {\n        chunksNeeded.add(chunk);\n      }\n    }\n\n    if (chunksNeeded.size === 0) {\n      return Promise.resolve();\n    }\n\n    const capability = (0, _util.createPromiseCapability)();\n\n    this._promisesByRequest.set(requestId, capability);\n\n    const chunksToRequest = [];\n\n    for (const chunk of chunksNeeded) {\n      let requestIds = this._requestsByChunk.get(chunk);\n\n      if (!requestIds) {\n        requestIds = [];\n\n        this._requestsByChunk.set(chunk, requestIds);\n\n        chunksToRequest.push(chunk);\n      }\n\n      requestIds.push(requestId);\n    }\n\n    if (chunksToRequest.length > 0) {\n      const groupedChunksToRequest = this.groupChunks(chunksToRequest);\n\n      for (const groupedChunk of groupedChunksToRequest) {\n        const begin = groupedChunk.beginChunk * this.chunkSize;\n        const end = Math.min(groupedChunk.endChunk * this.chunkSize, this.length);\n        this.sendRequest(begin, end).catch(capability.reject);\n      }\n    }\n\n    return capability.promise.catch(reason => {\n      if (this.aborted) {\n        return;\n      }\n\n      throw reason;\n    });\n  }\n\n  getStream() {\n    return this.stream;\n  }\n\n  requestRange(begin, end) {\n    end = Math.min(end, this.length);\n    const beginChunk = this.getBeginChunk(begin);\n    const endChunk = this.getEndChunk(end);\n    const chunks = [];\n\n    for (let chunk = beginChunk; chunk < endChunk; ++chunk) {\n      chunks.push(chunk);\n    }\n\n    return this._requestChunks(chunks);\n  }\n\n  requestRanges(ranges = []) {\n    const chunksToRequest = [];\n\n    for (const range of ranges) {\n      const beginChunk = this.getBeginChunk(range.begin);\n      const endChunk = this.getEndChunk(range.end);\n\n      for (let chunk = beginChunk; chunk < endChunk; ++chunk) {\n        if (!chunksToRequest.includes(chunk)) {\n          chunksToRequest.push(chunk);\n        }\n      }\n    }\n\n    chunksToRequest.sort(function (a, b) {\n      return a - b;\n    });\n    return this._requestChunks(chunksToRequest);\n  }\n\n  groupChunks(chunks) {\n    const groupedChunks = [];\n    let beginChunk = -1;\n    let prevChunk = -1;\n\n    for (let i = 0, ii = chunks.length; i < ii; ++i) {\n      const chunk = chunks[i];\n\n      if (beginChunk < 0) {\n        beginChunk = chunk;\n      }\n\n      if (prevChunk >= 0 && prevChunk + 1 !== chunk) {\n        groupedChunks.push({\n          beginChunk,\n          endChunk: prevChunk + 1\n        });\n        beginChunk = chunk;\n      }\n\n      if (i + 1 === chunks.length) {\n        groupedChunks.push({\n          beginChunk,\n          endChunk: chunk + 1\n        });\n      }\n\n      prevChunk = chunk;\n    }\n\n    return groupedChunks;\n  }\n\n  onProgress(args) {\n    this.msgHandler.send(\"DocProgress\", {\n      loaded: this.stream.numChunksLoaded * this.chunkSize + args.loaded,\n      total: this.length\n    });\n  }\n\n  onReceiveData(args) {\n    const chunk = args.chunk;\n    const isProgressive = args.begin === undefined;\n    const begin = isProgressive ? this.progressiveDataLength : args.begin;\n    const end = begin + chunk.byteLength;\n    const beginChunk = Math.floor(begin / this.chunkSize);\n    const endChunk = end < this.length ? Math.floor(end / this.chunkSize) : Math.ceil(end / this.chunkSize);\n\n    if (isProgressive) {\n      this.stream.onReceiveProgressiveData(chunk);\n      this.progressiveDataLength = end;\n    } else {\n      this.stream.onReceiveData(begin, chunk);\n    }\n\n    if (this.stream.isDataLoaded) {\n      this._loadedStreamCapability.resolve(this.stream);\n    }\n\n    const loadedRequests = [];\n\n    for (let curChunk = beginChunk; curChunk < endChunk; ++curChunk) {\n      const requestIds = this._requestsByChunk.get(curChunk);\n\n      if (!requestIds) {\n        continue;\n      }\n\n      this._requestsByChunk.delete(curChunk);\n\n      for (const requestId of requestIds) {\n        const chunksNeeded = this._chunksNeededByRequest.get(requestId);\n\n        if (chunksNeeded.has(curChunk)) {\n          chunksNeeded.delete(curChunk);\n        }\n\n        if (chunksNeeded.size > 0) {\n          continue;\n        }\n\n        loadedRequests.push(requestId);\n      }\n    }\n\n    if (!this.disableAutoFetch && this._requestsByChunk.size === 0) {\n      let nextEmptyChunk;\n\n      if (this.stream.numChunksLoaded === 1) {\n        const lastChunk = this.stream.numChunks - 1;\n\n        if (!this.stream.hasChunk(lastChunk)) {\n          nextEmptyChunk = lastChunk;\n        }\n      } else {\n        nextEmptyChunk = this.stream.nextEmptyChunk(endChunk);\n      }\n\n      if (Number.isInteger(nextEmptyChunk)) {\n        this._requestChunks([nextEmptyChunk]);\n      }\n    }\n\n    for (const requestId of loadedRequests) {\n      const capability = this._promisesByRequest.get(requestId);\n\n      this._promisesByRequest.delete(requestId);\n\n      capability.resolve();\n    }\n\n    this.msgHandler.send(\"DocProgress\", {\n      loaded: this.stream.numChunksLoaded * this.chunkSize,\n      total: this.length\n    });\n  }\n\n  onError(err) {\n    this._loadedStreamCapability.reject(err);\n  }\n\n  getBeginChunk(begin) {\n    return Math.floor(begin / this.chunkSize);\n  }\n\n  getEndChunk(end) {\n    return Math.floor((end - 1) / this.chunkSize) + 1;\n  }\n\n  abort(reason) {\n    this.aborted = true;\n\n    if (this.pdfNetworkStream) {\n      this.pdfNetworkStream.cancelAllRequests(reason);\n    }\n\n    for (const capability of this._promisesByRequest.values()) {\n      capability.reject(reason);\n    }\n  }\n\n}\n\nexports.ChunkedStreamManager = ChunkedStreamManager;\n\n/***/ }),\n/* 8 */\n/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {\n\n\n\nObject.defineProperty(exports, \"__esModule\", ({\n  value: true\n}));\nexports.XRefParseException = exports.XRefEntryException = exports.ParserEOFException = exports.MissingDataException = exports.DocStats = void 0;\nexports.collectActions = collectActions;\nexports.encodeToXmlString = encodeToXmlString;\nexports.escapePDFName = escapePDFName;\nexports.getArrayLookupTableFactory = getArrayLookupTableFactory;\nexports.getInheritableProperty = getInheritableProperty;\nexports.getLookupTableFactory = getLookupTableFactory;\nexports.isWhiteSpace = isWhiteSpace;\nexports.log2 = log2;\nexports.parseXFAPath = parseXFAPath;\nexports.readInt8 = readInt8;\nexports.readUint16 = readUint16;\nexports.readUint32 = readUint32;\nexports.recoverJsURL = recoverJsURL;\nexports.toRomanNumerals = toRomanNumerals;\nexports.validateCSSFont = validateCSSFont;\n\nvar _util = __w_pdfjs_require__(2);\n\nvar _primitives = __w_pdfjs_require__(5);\n\nvar _base_stream = __w_pdfjs_require__(9);\n\nfunction getLookupTableFactory(initializer) {\n  let lookup;\n  return function () {\n    if (initializer) {\n      lookup = Object.create(null);\n      initializer(lookup);\n      initializer = null;\n    }\n\n    return lookup;\n  };\n}\n\nfunction getArrayLookupTableFactory(initializer) {\n  let lookup;\n  return function () {\n    if (initializer) {\n      let arr = initializer();\n      initializer = null;\n      lookup = Object.create(null);\n\n      for (let i = 0, ii = arr.length; i < ii; i += 2) {\n        lookup[arr[i]] = arr[i + 1];\n      }\n\n      arr = null;\n    }\n\n    return lookup;\n  };\n}\n\nclass MissingDataException extends _util.BaseException {\n  constructor(begin, end) {\n    super(`Missing data [${begin}, ${end})`, \"MissingDataException\");\n    this.begin = begin;\n    this.end = end;\n  }\n\n}\n\nexports.MissingDataException = MissingDataException;\n\nclass ParserEOFException extends _util.BaseException {\n  constructor(msg) {\n    super(msg, \"ParserEOFException\");\n  }\n\n}\n\nexports.ParserEOFException = ParserEOFException;\n\nclass XRefEntryException extends _util.BaseException {\n  constructor(msg) {\n    super(msg, \"XRefEntryException\");\n  }\n\n}\n\nexports.XRefEntryException = XRefEntryException;\n\nclass XRefParseException extends _util.BaseException {\n  constructor(msg) {\n    super(msg, \"XRefParseException\");\n  }\n\n}\n\nexports.XRefParseException = XRefParseException;\n\nclass DocStats {\n  constructor(handler) {\n    this._handler = handler;\n    this._streamTypes = new Set();\n    this._fontTypes = new Set();\n  }\n\n  _send() {\n    const streamTypes = Object.create(null),\n          fontTypes = Object.create(null);\n\n    for (const type of this._streamTypes) {\n      streamTypes[type] = true;\n    }\n\n    for (const type of this._fontTypes) {\n      fontTypes[type] = true;\n    }\n\n    this._handler.send(\"DocStats\", {\n      streamTypes,\n      fontTypes\n    });\n  }\n\n  addStreamType(type) {\n    if (this._streamTypes.has(type)) {\n      return;\n    }\n\n    this._streamTypes.add(type);\n\n    this._send();\n  }\n\n  addFontType(type) {\n    if (this._fontTypes.has(type)) {\n      return;\n    }\n\n    this._fontTypes.add(type);\n\n    this._send();\n  }\n\n}\n\nexports.DocStats = DocStats;\n\nfunction getInheritableProperty({\n  dict,\n  key,\n  getArray = false,\n  stopWhenFound = true\n}) {\n  let values;\n  const visited = new _primitives.RefSet();\n\n  while (dict instanceof _primitives.Dict && !(dict.objId && visited.has(dict.objId))) {\n    if (dict.objId) {\n      visited.put(dict.objId);\n    }\n\n    const value = getArray ? dict.getArray(key) : dict.get(key);\n\n    if (value !== undefined) {\n      if (stopWhenFound) {\n        return value;\n      }\n\n      if (!values) {\n        values = [];\n      }\n\n      values.push(value);\n    }\n\n    dict = dict.get(\"Parent\");\n  }\n\n  return values;\n}\n\nconst ROMAN_NUMBER_MAP = [\"\", \"C\", \"CC\", \"CCC\", \"CD\", \"D\", \"DC\", \"DCC\", \"DCCC\", \"CM\", \"\", \"X\", \"XX\", \"XXX\", \"XL\", \"L\", \"LX\", \"LXX\", \"LXXX\", \"XC\", \"\", \"I\", \"II\", \"III\", \"IV\", \"V\", \"VI\", \"VII\", \"VIII\", \"IX\"];\n\nfunction toRomanNumerals(number, lowerCase = false) {\n  (0, _util.assert)(Number.isInteger(number) && number > 0, \"The number should be a positive integer.\");\n  const romanBuf = [];\n  let pos;\n\n  while (number >= 1000) {\n    number -= 1000;\n    romanBuf.push(\"M\");\n  }\n\n  pos = number / 100 | 0;\n  number %= 100;\n  romanBuf.push(ROMAN_NUMBER_MAP[pos]);\n  pos = number / 10 | 0;\n  number %= 10;\n  romanBuf.push(ROMAN_NUMBER_MAP[10 + pos]);\n  romanBuf.push(ROMAN_NUMBER_MAP[20 + number]);\n  const romanStr = romanBuf.join(\"\");\n  return lowerCase ? romanStr.toLowerCase() : romanStr;\n}\n\nfunction log2(x) {\n  if (x <= 0) {\n    return 0;\n  }\n\n  return Math.ceil(Math.log2(x));\n}\n\nfunction readInt8(data, offset) {\n  return data[offset] << 24 >> 24;\n}\n\nfunction readUint16(data, offset) {\n  return data[offset] << 8 | data[offset + 1];\n}\n\nfunction readUint32(data, offset) {\n  return (data[offset] << 24 | data[offset + 1] << 16 | data[offset + 2] << 8 | data[offset + 3]) >>> 0;\n}\n\nfunction isWhiteSpace(ch) {\n  return ch === 0x20 || ch === 0x09 || ch === 0x0d || ch === 0x0a;\n}\n\nfunction parseXFAPath(path) {\n  const positionPattern = /(.+)\\[(\\d+)\\]$/;\n  return path.split(\".\").map(component => {\n    const m = component.match(positionPattern);\n\n    if (m) {\n      return {\n        name: m[1],\n        pos: parseInt(m[2], 10)\n      };\n    }\n\n    return {\n      name: component,\n      pos: 0\n    };\n  });\n}\n\nfunction escapePDFName(str) {\n  const buffer = [];\n  let start = 0;\n\n  for (let i = 0, ii = str.length; i < ii; i++) {\n    const char = str.charCodeAt(i);\n\n    if (char < 0x21 || char > 0x7e || char === 0x23 || char === 0x28 || char === 0x29 || char === 0x3c || char === 0x3e || char === 0x5b || char === 0x5d || char === 0x7b || char === 0x7d || char === 0x2f || char === 0x25) {\n      if (start < i) {\n        buffer.push(str.substring(start, i));\n      }\n\n      buffer.push(`#${char.toString(16)}`);\n      start = i + 1;\n    }\n  }\n\n  if (buffer.length === 0) {\n    return str;\n  }\n\n  if (start < str.length) {\n    buffer.push(str.substring(start, str.length));\n  }\n\n  return buffer.join(\"\");\n}\n\nfunction _collectJS(entry, xref, list, parents) {\n  if (!entry) {\n    return;\n  }\n\n  let parent = null;\n\n  if (entry instanceof _primitives.Ref) {\n    if (parents.has(entry)) {\n      return;\n    }\n\n    parent = entry;\n    parents.put(parent);\n    entry = xref.fetch(entry);\n  }\n\n  if (Array.isArray(entry)) {\n    for (const element of entry) {\n      _collectJS(element, xref, list, parents);\n    }\n  } else if (entry instanceof _primitives.Dict) {\n    if ((0, _primitives.isName)(entry.get(\"S\"), \"JavaScript\")) {\n      const js = entry.get(\"JS\");\n      let code;\n\n      if (js instanceof _base_stream.BaseStream) {\n        code = js.getString();\n      } else if (typeof js === \"string\") {\n        code = js;\n      }\n\n      code = code && (0, _util.stringToPDFString)(code);\n\n      if (code) {\n        list.push(code);\n      }\n    }\n\n    _collectJS(entry.getRaw(\"Next\"), xref, list, parents);\n  }\n\n  if (parent) {\n    parents.remove(parent);\n  }\n}\n\nfunction collectActions(xref, dict, eventType) {\n  const actions = Object.create(null);\n  const additionalActionsDicts = getInheritableProperty({\n    dict,\n    key: \"AA\",\n    stopWhenFound: false\n  });\n\n  if (additionalActionsDicts) {\n    for (let i = additionalActionsDicts.length - 1; i >= 0; i--) {\n      const additionalActions = additionalActionsDicts[i];\n\n      if (!(additionalActions instanceof _primitives.Dict)) {\n        continue;\n      }\n\n      for (const key of additionalActions.getKeys()) {\n        const action = eventType[key];\n\n        if (!action) {\n          continue;\n        }\n\n        const actionDict = additionalActions.getRaw(key);\n        const parents = new _primitives.RefSet();\n        const list = [];\n\n        _collectJS(actionDict, xref, list, parents);\n\n        if (list.length > 0) {\n          actions[action] = list;\n        }\n      }\n    }\n  }\n\n  if (dict.has(\"A\")) {\n    const actionDict = dict.get(\"A\");\n    const parents = new _primitives.RefSet();\n    const list = [];\n\n    _collectJS(actionDict, xref, list, parents);\n\n    if (list.length > 0) {\n      actions.Action = list;\n    }\n  }\n\n  return (0, _util.objectSize)(actions) > 0 ? actions : null;\n}\n\nconst XMLEntities = {\n  0x3c: \"&lt;\",\n  0x3e: \"&gt;\",\n  0x26: \"&amp;\",\n  0x22: \"&quot;\",\n  0x27: \"&apos;\"\n};\n\nfunction encodeToXmlString(str) {\n  const buffer = [];\n  let start = 0;\n\n  for (let i = 0, ii = str.length; i < ii; i++) {\n    const char = str.codePointAt(i);\n\n    if (0x20 <= char && char <= 0x7e) {\n      const entity = XMLEntities[char];\n\n      if (entity) {\n        if (start < i) {\n          buffer.push(str.substring(start, i));\n        }\n\n        buffer.push(entity);\n        start = i + 1;\n      }\n    } else {\n      if (start < i) {\n        buffer.push(str.substring(start, i));\n      }\n\n      buffer.push(`&#x${char.toString(16).toUpperCase()};`);\n\n      if (char > 0xd7ff && (char < 0xe000 || char > 0xfffd)) {\n        i++;\n      }\n\n      start = i + 1;\n    }\n  }\n\n  if (buffer.length === 0) {\n    return str;\n  }\n\n  if (start < str.length) {\n    buffer.push(str.substring(start, str.length));\n  }\n\n  return buffer.join(\"\");\n}\n\nfunction validateCSSFont(cssFontInfo) {\n  const DEFAULT_CSS_FONT_OBLIQUE = \"14\";\n  const DEFAULT_CSS_FONT_WEIGHT = \"400\";\n  const CSS_FONT_WEIGHT_VALUES = new Set([\"100\", \"200\", \"300\", \"400\", \"500\", \"600\", \"700\", \"800\", \"900\", \"1000\", \"normal\", \"bold\", \"bolder\", \"lighter\"]);\n  const {\n    fontFamily,\n    fontWeight,\n    italicAngle\n  } = cssFontInfo;\n\n  if (/^\".*\"$/.test(fontFamily)) {\n    if (/[^\\\\]\"/.test(fontFamily.slice(1, fontFamily.length - 1))) {\n      (0, _util.warn)(`XFA - FontFamily contains some unescaped \": ${fontFamily}.`);\n      return false;\n    }\n  } else if (/^'.*'$/.test(fontFamily)) {\n    if (/[^\\\\]'/.test(fontFamily.slice(1, fontFamily.length - 1))) {\n      (0, _util.warn)(`XFA - FontFamily contains some unescaped ': ${fontFamily}.`);\n      return false;\n    }\n  } else {\n    for (const ident of fontFamily.split(/[ \\t]+/)) {\n      if (/^(\\d|(-(\\d|-)))/.test(ident) || !/^[\\w-\\\\]+$/.test(ident)) {\n        (0, _util.warn)(`XFA - FontFamily contains some invalid <custom-ident>: ${fontFamily}.`);\n        return false;\n      }\n    }\n  }\n\n  const weight = fontWeight ? fontWeight.toString() : \"\";\n  cssFontInfo.fontWeight = CSS_FONT_WEIGHT_VALUES.has(weight) ? weight : DEFAULT_CSS_FONT_WEIGHT;\n  const angle = parseFloat(italicAngle);\n  cssFontInfo.italicAngle = isNaN(angle) || angle < -90 || angle > 90 ? DEFAULT_CSS_FONT_OBLIQUE : italicAngle.toString();\n  return true;\n}\n\nfunction recoverJsURL(str) {\n  const URL_OPEN_METHODS = [\"app.launchURL\", \"window.open\", \"xfa.host.gotoURL\"];\n  const regex = new RegExp(\"^\\\\s*(\" + URL_OPEN_METHODS.join(\"|\").split(\".\").join(\"\\\\.\") + \")\\\\((?:'|\\\")([^'\\\"]*)(?:'|\\\")(?:,\\\\s*(\\\\w+)\\\\)|\\\\))\", \"i\");\n  const jsUrl = regex.exec(str);\n\n  if (jsUrl && jsUrl[2]) {\n    const url = jsUrl[2];\n    let newWindow = false;\n\n    if (jsUrl[3] === \"true\" && jsUrl[1] === \"app.launchURL\") {\n      newWindow = true;\n    }\n\n    return {\n      url,\n      newWindow\n    };\n  }\n\n  return null;\n}\n\n/***/ }),\n/* 9 */\n/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {\n\n\n\nObject.defineProperty(exports, \"__esModule\", ({\n  value: true\n}));\nexports.BaseStream = void 0;\n\nvar _util = __w_pdfjs_require__(2);\n\nclass BaseStream {\n  constructor() {\n    if (this.constructor === BaseStream) {\n      (0, _util.unreachable)(\"Cannot initialize BaseStream.\");\n    }\n  }\n\n  get length() {\n    (0, _util.unreachable)(\"Abstract getter `length` accessed\");\n  }\n\n  get isEmpty() {\n    (0, _util.unreachable)(\"Abstract getter `isEmpty` accessed\");\n  }\n\n  get isDataLoaded() {\n    return (0, _util.shadow)(this, \"isDataLoaded\", true);\n  }\n\n  getByte() {\n    (0, _util.unreachable)(\"Abstract method `getByte` called\");\n  }\n\n  getBytes(length, forceClamped = false) {\n    (0, _util.unreachable)(\"Abstract method `getBytes` called\");\n  }\n\n  peekByte() {\n    const peekedByte = this.getByte();\n\n    if (peekedByte !== -1) {\n      this.pos--;\n    }\n\n    return peekedByte;\n  }\n\n  peekBytes(length, forceClamped = false) {\n    const bytes = this.getBytes(length, forceClamped);\n    this.pos -= bytes.length;\n    return bytes;\n  }\n\n  getUint16() {\n    const b0 = this.getByte();\n    const b1 = this.getByte();\n\n    if (b0 === -1 || b1 === -1) {\n      return -1;\n    }\n\n    return (b0 << 8) + b1;\n  }\n\n  getInt32() {\n    const b0 = this.getByte();\n    const b1 = this.getByte();\n    const b2 = this.getByte();\n    const b3 = this.getByte();\n    return (b0 << 24) + (b1 << 16) + (b2 << 8) + b3;\n  }\n\n  getByteRange(begin, end) {\n    (0, _util.unreachable)(\"Abstract method `getByteRange` called\");\n  }\n\n  getString(length) {\n    return (0, _util.bytesToString)(this.getBytes(length, false));\n  }\n\n  skip(n) {\n    this.pos += n || 1;\n  }\n\n  reset() {\n    (0, _util.unreachable)(\"Abstract method `reset` called\");\n  }\n\n  moveStart() {\n    (0, _util.unreachable)(\"Abstract method `moveStart` called\");\n  }\n\n  makeSubStream(start, length, dict = null) {\n    (0, _util.unreachable)(\"Abstract method `makeSubStream` called\");\n  }\n\n  getBaseStreams() {\n    return null;\n  }\n\n}\n\nexports.BaseStream = BaseStream;\n\n/***/ }),\n/* 10 */\n/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {\n\n\n\nObject.defineProperty(exports, \"__esModule\", ({\n  value: true\n}));\nexports.StringStream = exports.Stream = exports.NullStream = void 0;\n\nvar _base_stream = __w_pdfjs_require__(9);\n\nvar _util = __w_pdfjs_require__(2);\n\nclass Stream extends _base_stream.BaseStream {\n  constructor(arrayBuffer, start, length, dict) {\n    super();\n    this.bytes = arrayBuffer instanceof Uint8Array ? arrayBuffer : new Uint8Array(arrayBuffer);\n    this.start = start || 0;\n    this.pos = this.start;\n    this.end = start + length || this.bytes.length;\n    this.dict = dict;\n  }\n\n  get length() {\n    return this.end - this.start;\n  }\n\n  get isEmpty() {\n    return this.length === 0;\n  }\n\n  getByte() {\n    if (this.pos >= this.end) {\n      return -1;\n    }\n\n    return this.bytes[this.pos++];\n  }\n\n  getBytes(length, forceClamped = false) {\n    const bytes = this.bytes;\n    const pos = this.pos;\n    const strEnd = this.end;\n\n    if (!length) {\n      const subarray = bytes.subarray(pos, strEnd);\n      return forceClamped ? new Uint8ClampedArray(subarray) : subarray;\n    }\n\n    let end = pos + length;\n\n    if (end > strEnd) {\n      end = strEnd;\n    }\n\n    this.pos = end;\n    const subarray = bytes.subarray(pos, end);\n    return forceClamped ? new Uint8ClampedArray(subarray) : subarray;\n  }\n\n  getByteRange(begin, end) {\n    if (begin < 0) {\n      begin = 0;\n    }\n\n    if (end > this.end) {\n      end = this.end;\n    }\n\n    return this.bytes.subarray(begin, end);\n  }\n\n  reset() {\n    this.pos = this.start;\n  }\n\n  moveStart() {\n    this.start = this.pos;\n  }\n\n  makeSubStream(start, length, dict = null) {\n    return new Stream(this.bytes.buffer, start, length, dict);\n  }\n\n}\n\nexports.Stream = Stream;\n\nclass StringStream extends Stream {\n  constructor(str) {\n    super((0, _util.stringToBytes)(str));\n  }\n\n}\n\nexports.StringStream = StringStream;\n\nclass NullStream extends Stream {\n  constructor() {\n    super(new Uint8Array(0));\n  }\n\n}\n\nexports.NullStream = NullStream;\n\n/***/ }),\n/* 11 */\n/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {\n\n\n\nObject.defineProperty(exports, \"__esModule\", ({\n  value: true\n}));\nexports.Page = exports.PDFDocument = void 0;\n\nvar _util = __w_pdfjs_require__(2);\n\nvar _core_utils = __w_pdfjs_require__(8);\n\nvar _primitives = __w_pdfjs_require__(5);\n\nvar _xfa_fonts = __w_pdfjs_require__(12);\n\nvar _annotation = __w_pdfjs_require__(22);\n\nvar _base_stream = __w_pdfjs_require__(9);\n\nvar _crypto = __w_pdfjs_require__(73);\n\nvar _catalog = __w_pdfjs_require__(64);\n\nvar _cleanup_helper = __w_pdfjs_require__(66);\n\nvar _parser = __w_pdfjs_require__(27);\n\nvar _stream = __w_pdfjs_require__(10);\n\nvar _object_loader = __w_pdfjs_require__(71);\n\nvar _operator_list = __w_pdfjs_require__(62);\n\nvar _evaluator = __w_pdfjs_require__(25);\n\nvar _decode_stream = __w_pdfjs_require__(29);\n\nvar _struct_tree = __w_pdfjs_require__(70);\n\nvar _factory = __w_pdfjs_require__(75);\n\nvar _xref = __w_pdfjs_require__(99);\n\nconst DEFAULT_USER_UNIT = 1.0;\nconst LETTER_SIZE_MEDIABOX = [0, 0, 612, 792];\n\nclass Page {\n  constructor({\n    pdfManager,\n    xref,\n    pageIndex,\n    pageDict,\n    ref,\n    globalIdFactory,\n    fontCache,\n    builtInCMapCache,\n    standardFontDataCache,\n    globalImageCache,\n    nonBlendModesSet,\n    xfaFactory\n  }) {\n    this.pdfManager = pdfManager;\n    this.pageIndex = pageIndex;\n    this.pageDict = pageDict;\n    this.xref = xref;\n    this.ref = ref;\n    this.fontCache = fontCache;\n    this.builtInCMapCache = builtInCMapCache;\n    this.standardFontDataCache = standardFontDataCache;\n    this.globalImageCache = globalImageCache;\n    this.nonBlendModesSet = nonBlendModesSet;\n    this.evaluatorOptions = pdfManager.evaluatorOptions;\n    this.resourcesPromise = null;\n    this.xfaFactory = xfaFactory;\n    const idCounters = {\n      obj: 0\n    };\n    this._localIdFactory = class extends globalIdFactory {\n      static createObjId() {\n        return `p${pageIndex}_${++idCounters.obj}`;\n      }\n\n      static getPageObjId() {\n        return `page${ref.toString()}`;\n      }\n\n    };\n  }\n\n  _getInheritableProperty(key, getArray = false) {\n    const value = (0, _core_utils.getInheritableProperty)({\n      dict: this.pageDict,\n      key,\n      getArray,\n      stopWhenFound: false\n    });\n\n    if (!Array.isArray(value)) {\n      return value;\n    }\n\n    if (value.length === 1 || !(value[0] instanceof _primitives.Dict)) {\n      return value[0];\n    }\n\n    return _primitives.Dict.merge({\n      xref: this.xref,\n      dictArray: value\n    });\n  }\n\n  get content() {\n    return this.pageDict.getArray(\"Contents\");\n  }\n\n  get resources() {\n    return (0, _util.shadow)(this, \"resources\", this._getInheritableProperty(\"Resources\") || _primitives.Dict.empty);\n  }\n\n  _getBoundingBox(name) {\n    if (this.xfaData) {\n      return this.xfaData.bbox;\n    }\n\n    const box = this._getInheritableProperty(name, true);\n\n    if (Array.isArray(box) && box.length === 4) {\n      if (box[2] - box[0] !== 0 && box[3] - box[1] !== 0) {\n        return box;\n      }\n\n      (0, _util.warn)(`Empty /${name} entry.`);\n    }\n\n    return null;\n  }\n\n  get mediaBox() {\n    return (0, _util.shadow)(this, \"mediaBox\", this._getBoundingBox(\"MediaBox\") || LETTER_SIZE_MEDIABOX);\n  }\n\n  get cropBox() {\n    return (0, _util.shadow)(this, \"cropBox\", this._getBoundingBox(\"CropBox\") || this.mediaBox);\n  }\n\n  get userUnit() {\n    let obj = this.pageDict.get(\"UserUnit\");\n\n    if (typeof obj !== \"number\" || obj <= 0) {\n      obj = DEFAULT_USER_UNIT;\n    }\n\n    return (0, _util.shadow)(this, \"userUnit\", obj);\n  }\n\n  get view() {\n    const {\n      cropBox,\n      mediaBox\n    } = this;\n    let view;\n\n    if (cropBox === mediaBox || (0, _util.isArrayEqual)(cropBox, mediaBox)) {\n      view = mediaBox;\n    } else {\n      const box = _util.Util.intersect(cropBox, mediaBox);\n\n      if (box && box[2] - box[0] !== 0 && box[3] - box[1] !== 0) {\n        view = box;\n      } else {\n        (0, _util.warn)(\"Empty /CropBox and /MediaBox intersection.\");\n      }\n    }\n\n    return (0, _util.shadow)(this, \"view\", view || mediaBox);\n  }\n\n  get rotate() {\n    let rotate = this._getInheritableProperty(\"Rotate\") || 0;\n\n    if (rotate % 90 !== 0) {\n      rotate = 0;\n    } else if (rotate >= 360) {\n      rotate %= 360;\n    } else if (rotate < 0) {\n      rotate = (rotate % 360 + 360) % 360;\n    }\n\n    return (0, _util.shadow)(this, \"rotate\", rotate);\n  }\n\n  _onSubStreamError(handler, reason, objId) {\n    if (this.evaluatorOptions.ignoreErrors) {\n      handler.send(\"UnsupportedFeature\", {\n        featureId: _util.UNSUPPORTED_FEATURES.errorContentSubStream\n      });\n      (0, _util.warn)(`getContentStream - ignoring sub-stream (${objId}): \"${reason}\".`);\n      return;\n    }\n\n    throw reason;\n  }\n\n  getContentStream(handler) {\n    return this.pdfManager.ensure(this, \"content\").then(content => {\n      if (content instanceof _base_stream.BaseStream) {\n        return content;\n      }\n\n      if (Array.isArray(content)) {\n        return new _decode_stream.StreamsSequenceStream(content, this._onSubStreamError.bind(this, handler));\n      }\n\n      return new _stream.NullStream();\n    });\n  }\n\n  get xfaData() {\n    return (0, _util.shadow)(this, \"xfaData\", this.xfaFactory ? {\n      bbox: this.xfaFactory.getBoundingBox(this.pageIndex)\n    } : null);\n  }\n\n  save(handler, task, annotationStorage) {\n    const partialEvaluator = new _evaluator.PartialEvaluator({\n      xref: this.xref,\n      handler,\n      pageIndex: this.pageIndex,\n      idFactory: this._localIdFactory,\n      fontCache: this.fontCache,\n      builtInCMapCache: this.builtInCMapCache,\n      standardFontDataCache: this.standardFontDataCache,\n      globalImageCache: this.globalImageCache,\n      options: this.evaluatorOptions\n    });\n    return this._parsedAnnotations.then(function (annotations) {\n      const newRefsPromises = [];\n\n      for (const annotation of annotations) {\n        if (!annotation.mustBePrinted(annotationStorage)) {\n          continue;\n        }\n\n        newRefsPromises.push(annotation.save(partialEvaluator, task, annotationStorage).catch(function (reason) {\n          (0, _util.warn)(\"save - ignoring annotation data during \" + `\"${task.name}\" task: \"${reason}\".`);\n          return null;\n        }));\n      }\n\n      return Promise.all(newRefsPromises);\n    });\n  }\n\n  loadResources(keys) {\n    if (!this.resourcesPromise) {\n      this.resourcesPromise = this.pdfManager.ensure(this, \"resources\");\n    }\n\n    return this.resourcesPromise.then(() => {\n      const objectLoader = new _object_loader.ObjectLoader(this.resources, keys, this.xref);\n      return objectLoader.load();\n    });\n  }\n\n  getOperatorList({\n    handler,\n    sink,\n    task,\n    intent,\n    cacheKey,\n    annotationStorage = null\n  }) {\n    const contentStreamPromise = this.getContentStream(handler);\n    const resourcesPromise = this.loadResources([\"ColorSpace\", \"ExtGState\", \"Font\", \"Pattern\", \"Properties\", \"Shading\", \"XObject\"]);\n    const partialEvaluator = new _evaluator.PartialEvaluator({\n      xref: this.xref,\n      handler,\n      pageIndex: this.pageIndex,\n      idFactory: this._localIdFactory,\n      fontCache: this.fontCache,\n      builtInCMapCache: this.builtInCMapCache,\n      standardFontDataCache: this.standardFontDataCache,\n      globalImageCache: this.globalImageCache,\n      options: this.evaluatorOptions\n    });\n    const dataPromises = Promise.all([contentStreamPromise, resourcesPromise]);\n    const pageListPromise = dataPromises.then(([contentStream]) => {\n      const opList = new _operator_list.OperatorList(intent, sink);\n      handler.send(\"StartRenderPage\", {\n        transparency: partialEvaluator.hasBlendModes(this.resources, this.nonBlendModesSet),\n        pageIndex: this.pageIndex,\n        cacheKey\n      });\n      return partialEvaluator.getOperatorList({\n        stream: contentStream,\n        task,\n        resources: this.resources,\n        operatorList: opList\n      }).then(function () {\n        return opList;\n      });\n    });\n    return Promise.all([pageListPromise, this._parsedAnnotations]).then(function ([pageOpList, annotations]) {\n      if (annotations.length === 0 || intent & _util.RenderingIntentFlag.ANNOTATIONS_DISABLE) {\n        pageOpList.flush(true);\n        return {\n          length: pageOpList.totalLength\n        };\n      }\n\n      const renderForms = !!(intent & _util.RenderingIntentFlag.ANNOTATIONS_FORMS),\n            intentAny = !!(intent & _util.RenderingIntentFlag.ANY),\n            intentDisplay = !!(intent & _util.RenderingIntentFlag.DISPLAY),\n            intentPrint = !!(intent & _util.RenderingIntentFlag.PRINT);\n      const opListPromises = [];\n\n      for (const annotation of annotations) {\n        if (intentAny || intentDisplay && annotation.mustBeViewed(annotationStorage) || intentPrint && annotation.mustBePrinted(annotationStorage)) {\n          opListPromises.push(annotation.getOperatorList(partialEvaluator, task, intent, renderForms, annotationStorage).catch(function (reason) {\n            (0, _util.warn)(\"getOperatorList - ignoring annotation data during \" + `\"${task.name}\" task: \"${reason}\".`);\n            return null;\n          }));\n        }\n      }\n\n      return Promise.all(opListPromises).then(function (opLists) {\n        pageOpList.addOp(_util.OPS.beginAnnotations, []);\n\n        for (const opList of opLists) {\n          pageOpList.addOpList(opList);\n        }\n\n        pageOpList.addOp(_util.OPS.endAnnotations, []);\n        pageOpList.flush(true);\n        return {\n          length: pageOpList.totalLength\n        };\n      });\n    });\n  }\n\n  extractTextContent({\n    handler,\n    task,\n    includeMarkedContent,\n    sink,\n    combineTextItems\n  }) {\n    const contentStreamPromise = this.getContentStream(handler);\n    const resourcesPromise = this.loadResources([\"ExtGState\", \"Font\", \"Properties\", \"XObject\"]);\n    const dataPromises = Promise.all([contentStreamPromise, resourcesPromise]);\n    return dataPromises.then(([contentStream]) => {\n      const partialEvaluator = new _evaluator.PartialEvaluator({\n        xref: this.xref,\n        handler,\n        pageIndex: this.pageIndex,\n        idFactory: this._localIdFactory,\n        fontCache: this.fontCache,\n        builtInCMapCache: this.builtInCMapCache,\n        standardFontDataCache: this.standardFontDataCache,\n        globalImageCache: this.globalImageCache,\n        options: this.evaluatorOptions\n      });\n      return partialEvaluator.getTextContent({\n        stream: contentStream,\n        task,\n        resources: this.resources,\n        includeMarkedContent,\n        combineTextItems,\n        sink,\n        viewBox: this.view\n      });\n    });\n  }\n\n  async getStructTree() {\n    const structTreeRoot = await this.pdfManager.ensureCatalog(\"structTreeRoot\");\n\n    if (!structTreeRoot) {\n      return null;\n    }\n\n    const structTree = await this.pdfManager.ensure(this, \"_parseStructTree\", [structTreeRoot]);\n    return structTree.serializable;\n  }\n\n  _parseStructTree(structTreeRoot) {\n    const tree = new _struct_tree.StructTreePage(structTreeRoot, this.pageDict);\n    tree.parse();\n    return tree;\n  }\n\n  getAnnotationsData(intent) {\n    return this._parsedAnnotations.then(function (annotations) {\n      const annotationsData = [];\n\n      if (annotations.length === 0) {\n        return annotationsData;\n      }\n\n      const intentAny = !!(intent & _util.RenderingIntentFlag.ANY),\n            intentDisplay = !!(intent & _util.RenderingIntentFlag.DISPLAY),\n            intentPrint = !!(intent & _util.RenderingIntentFlag.PRINT);\n\n      for (const annotation of annotations) {\n        if (intentAny || intentDisplay && annotation.viewable || intentPrint && annotation.printable) {\n          annotationsData.push(annotation.data);\n        }\n      }\n\n      return annotationsData;\n    });\n  }\n\n  get annotations() {\n    const annots = this._getInheritableProperty(\"Annots\");\n\n    return (0, _util.shadow)(this, \"annotations\", Array.isArray(annots) ? annots : []);\n  }\n\n  get _parsedAnnotations() {\n    const parsedAnnotations = this.pdfManager.ensure(this, \"annotations\").then(() => {\n      const annotationPromises = [];\n\n      for (const annotationRef of this.annotations) {\n        annotationPromises.push(_annotation.AnnotationFactory.create(this.xref, annotationRef, this.pdfManager, this._localIdFactory, false).catch(function (reason) {\n          (0, _util.warn)(`_parsedAnnotations: \"${reason}\".`);\n          return null;\n        }));\n      }\n\n      return Promise.all(annotationPromises).then(function (annotations) {\n        return annotations.filter(annotation => !!annotation);\n      });\n    });\n    return (0, _util.shadow)(this, \"_parsedAnnotations\", parsedAnnotations);\n  }\n\n  get jsActions() {\n    const actions = (0, _core_utils.collectActions)(this.xref, this.pageDict, _util.PageActionEventType);\n    return (0, _util.shadow)(this, \"jsActions\", actions);\n  }\n\n}\n\nexports.Page = Page;\nconst PDF_HEADER_SIGNATURE = new Uint8Array([0x25, 0x50, 0x44, 0x46, 0x2d]);\nconst STARTXREF_SIGNATURE = new Uint8Array([0x73, 0x74, 0x61, 0x72, 0x74, 0x78, 0x72, 0x65, 0x66]);\nconst ENDOBJ_SIGNATURE = new Uint8Array([0x65, 0x6e, 0x64, 0x6f, 0x62, 0x6a]);\nconst FINGERPRINT_FIRST_BYTES = 1024;\nconst EMPTY_FINGERPRINT = \"\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\";\nconst PDF_HEADER_VERSION_REGEXP = /^[1-9]\\.\\d$/;\n\nfunction find(stream, signature, limit = 1024, backwards = false) {\n  const signatureLength = signature.length;\n  const scanBytes = stream.peekBytes(limit);\n  const scanLength = scanBytes.length - signatureLength;\n\n  if (scanLength <= 0) {\n    return false;\n  }\n\n  if (backwards) {\n    const signatureEnd = signatureLength - 1;\n    let pos = scanBytes.length - 1;\n\n    while (pos >= signatureEnd) {\n      let j = 0;\n\n      while (j < signatureLength && scanBytes[pos - j] === signature[signatureEnd - j]) {\n        j++;\n      }\n\n      if (j >= signatureLength) {\n        stream.pos += pos - signatureEnd;\n        return true;\n      }\n\n      pos--;\n    }\n  } else {\n    let pos = 0;\n\n    while (pos <= scanLength) {\n      let j = 0;\n\n      while (j < signatureLength && scanBytes[pos + j] === signature[j]) {\n        j++;\n      }\n\n      if (j >= signatureLength) {\n        stream.pos += pos;\n        return true;\n      }\n\n      pos++;\n    }\n  }\n\n  return false;\n}\n\nclass PDFDocument {\n  constructor(pdfManager, stream) {\n    if (stream.length <= 0) {\n      throw new _util.InvalidPDFException(\"The PDF file is empty, i.e. its size is zero bytes.\");\n    }\n\n    this.pdfManager = pdfManager;\n    this.stream = stream;\n    this.xref = new _xref.XRef(stream, pdfManager);\n    this._pagePromises = new Map();\n    this._version = null;\n    const idCounters = {\n      font: 0\n    };\n    this._globalIdFactory = class {\n      static getDocId() {\n        return `g_${pdfManager.docId}`;\n      }\n\n      static createFontId() {\n        return `f${++idCounters.font}`;\n      }\n\n      static createObjId() {\n        (0, _util.unreachable)(\"Abstract method `createObjId` called.\");\n      }\n\n      static getPageObjId() {\n        (0, _util.unreachable)(\"Abstract method `getPageObjId` called.\");\n      }\n\n    };\n  }\n\n  parse(recoveryMode) {\n    this.xref.parse(recoveryMode);\n    this.catalog = new _catalog.Catalog(this.pdfManager, this.xref);\n\n    if (this.catalog.version) {\n      this._version = this.catalog.version;\n    }\n  }\n\n  get linearization() {\n    let linearization = null;\n\n    try {\n      linearization = _parser.Linearization.create(this.stream);\n    } catch (err) {\n      if (err instanceof _core_utils.MissingDataException) {\n        throw err;\n      }\n\n      (0, _util.info)(err);\n    }\n\n    return (0, _util.shadow)(this, \"linearization\", linearization);\n  }\n\n  get startXRef() {\n    const stream = this.stream;\n    let startXRef = 0;\n\n    if (this.linearization) {\n      stream.reset();\n\n      if (find(stream, ENDOBJ_SIGNATURE)) {\n        startXRef = stream.pos + 6 - stream.start;\n      }\n    } else {\n      const step = 1024;\n      const startXRefLength = STARTXREF_SIGNATURE.length;\n      let found = false,\n          pos = stream.end;\n\n      while (!found && pos > 0) {\n        pos -= step - startXRefLength;\n\n        if (pos < 0) {\n          pos = 0;\n        }\n\n        stream.pos = pos;\n        found = find(stream, STARTXREF_SIGNATURE, step, true);\n      }\n\n      if (found) {\n        stream.skip(9);\n        let ch;\n\n        do {\n          ch = stream.getByte();\n        } while ((0, _core_utils.isWhiteSpace)(ch));\n\n        let str = \"\";\n\n        while (ch >= 0x20 && ch <= 0x39) {\n          str += String.fromCharCode(ch);\n          ch = stream.getByte();\n        }\n\n        startXRef = parseInt(str, 10);\n\n        if (isNaN(startXRef)) {\n          startXRef = 0;\n        }\n      }\n    }\n\n    return (0, _util.shadow)(this, \"startXRef\", startXRef);\n  }\n\n  checkHeader() {\n    const stream = this.stream;\n    stream.reset();\n\n    if (!find(stream, PDF_HEADER_SIGNATURE)) {\n      return;\n    }\n\n    stream.moveStart();\n    const MAX_PDF_VERSION_LENGTH = 12;\n    let version = \"\",\n        ch;\n\n    while ((ch = stream.getByte()) > 0x20) {\n      if (version.length >= MAX_PDF_VERSION_LENGTH) {\n        break;\n      }\n\n      version += String.fromCharCode(ch);\n    }\n\n    if (!this._version) {\n      this._version = version.substring(5);\n    }\n  }\n\n  parseStartXRef() {\n    this.xref.setStartXRef(this.startXRef);\n  }\n\n  get numPages() {\n    let num = 0;\n\n    if (this.catalog.hasActualNumPages) {\n      num = this.catalog.numPages;\n    } else if (this.xfaFactory) {\n      num = this.xfaFactory.getNumPages();\n    } else if (this.linearization) {\n      num = this.linearization.numPages;\n    } else {\n      num = this.catalog.numPages;\n    }\n\n    return (0, _util.shadow)(this, \"numPages\", num);\n  }\n\n  _hasOnlyDocumentSignatures(fields, recursionDepth = 0) {\n    const RECURSION_LIMIT = 10;\n\n    if (!Array.isArray(fields)) {\n      return false;\n    }\n\n    return fields.every(field => {\n      field = this.xref.fetchIfRef(field);\n\n      if (!(field instanceof _primitives.Dict)) {\n        return false;\n      }\n\n      if (field.has(\"Kids\")) {\n        if (++recursionDepth > RECURSION_LIMIT) {\n          (0, _util.warn)(\"_hasOnlyDocumentSignatures: maximum recursion depth reached\");\n          return false;\n        }\n\n        return this._hasOnlyDocumentSignatures(field.get(\"Kids\"), recursionDepth);\n      }\n\n      const isSignature = (0, _primitives.isName)(field.get(\"FT\"), \"Sig\");\n      const rectangle = field.get(\"Rect\");\n      const isInvisible = Array.isArray(rectangle) && rectangle.every(value => value === 0);\n      return isSignature && isInvisible;\n    });\n  }\n\n  get xfaData() {\n    const acroForm = this.catalog.acroForm;\n\n    if (!acroForm) {\n      return null;\n    }\n\n    const xfa = acroForm.get(\"XFA\");\n    const entries = {\n      \"xdp:xdp\": \"\",\n      template: \"\",\n      datasets: \"\",\n      config: \"\",\n      connectionSet: \"\",\n      localeSet: \"\",\n      stylesheet: \"\",\n      \"/xdp:xdp\": \"\"\n    };\n\n    if (xfa instanceof _base_stream.BaseStream && !xfa.isEmpty) {\n      try {\n        entries[\"xdp:xdp\"] = (0, _util.stringToUTF8String)(xfa.getString());\n        return entries;\n      } catch (_) {\n        (0, _util.warn)(\"XFA - Invalid utf-8 string.\");\n        return null;\n      }\n    }\n\n    if (!Array.isArray(xfa) || xfa.length === 0) {\n      return null;\n    }\n\n    for (let i = 0, ii = xfa.length; i < ii; i += 2) {\n      let name;\n\n      if (i === 0) {\n        name = \"xdp:xdp\";\n      } else if (i === ii - 2) {\n        name = \"/xdp:xdp\";\n      } else {\n        name = xfa[i];\n      }\n\n      if (!entries.hasOwnProperty(name)) {\n        continue;\n      }\n\n      const data = this.xref.fetchIfRef(xfa[i + 1]);\n\n      if (!(data instanceof _base_stream.BaseStream) || data.isEmpty) {\n        continue;\n      }\n\n      try {\n        entries[name] = (0, _util.stringToUTF8String)(data.getString());\n      } catch (_) {\n        (0, _util.warn)(\"XFA - Invalid utf-8 string.\");\n        return null;\n      }\n    }\n\n    return entries;\n  }\n\n  get xfaFactory() {\n    let data;\n\n    if (this.pdfManager.enableXfa && this.catalog.needsRendering && this.formInfo.hasXfa && !this.formInfo.hasAcroForm) {\n      data = this.xfaData;\n    }\n\n    return (0, _util.shadow)(this, \"xfaFactory\", data ? new _factory.XFAFactory(data) : null);\n  }\n\n  get isPureXfa() {\n    return this.xfaFactory ? this.xfaFactory.isValid() : false;\n  }\n\n  get htmlForXfa() {\n    return this.xfaFactory ? this.xfaFactory.getPages() : null;\n  }\n\n  async loadXfaImages() {\n    const xfaImagesDict = await this.pdfManager.ensureCatalog(\"xfaImages\");\n\n    if (!xfaImagesDict) {\n      return;\n    }\n\n    const keys = xfaImagesDict.getKeys();\n    const objectLoader = new _object_loader.ObjectLoader(xfaImagesDict, keys, this.xref);\n    await objectLoader.load();\n    const xfaImages = new Map();\n\n    for (const key of keys) {\n      const stream = xfaImagesDict.get(key);\n\n      if (stream instanceof _base_stream.BaseStream) {\n        xfaImages.set(key, stream.getBytes());\n      }\n    }\n\n    this.xfaFactory.setImages(xfaImages);\n  }\n\n  async loadXfaFonts(handler, task) {\n    const acroForm = await this.pdfManager.ensureCatalog(\"acroForm\");\n\n    if (!acroForm) {\n      return;\n    }\n\n    const resources = await acroForm.getAsync(\"DR\");\n\n    if (!(resources instanceof _primitives.Dict)) {\n      return;\n    }\n\n    const objectLoader = new _object_loader.ObjectLoader(resources, [\"Font\"], this.xref);\n    await objectLoader.load();\n    const fontRes = resources.get(\"Font\");\n\n    if (!(fontRes instanceof _primitives.Dict)) {\n      return;\n    }\n\n    const options = Object.assign(Object.create(null), this.pdfManager.evaluatorOptions);\n    options.useSystemFonts = false;\n    const partialEvaluator = new _evaluator.PartialEvaluator({\n      xref: this.xref,\n      handler,\n      pageIndex: -1,\n      idFactory: this._globalIdFactory,\n      fontCache: this.catalog.fontCache,\n      builtInCMapCache: this.catalog.builtInCMapCache,\n      standardFontDataCache: this.catalog.standardFontDataCache,\n      options\n    });\n    const operatorList = new _operator_list.OperatorList();\n    const pdfFonts = [];\n    const initialState = {\n      get font() {\n        return pdfFonts[pdfFonts.length - 1];\n      },\n\n      set font(font) {\n        pdfFonts.push(font);\n      },\n\n      clone() {\n        return this;\n      }\n\n    };\n    const fonts = new Map();\n    fontRes.forEach((fontName, font) => {\n      fonts.set(fontName, font);\n    });\n    const promises = [];\n\n    for (const [fontName, font] of fonts) {\n      const descriptor = font.get(\"FontDescriptor\");\n\n      if (!(descriptor instanceof _primitives.Dict)) {\n        continue;\n      }\n\n      let fontFamily = descriptor.get(\"FontFamily\");\n      fontFamily = fontFamily.replace(/[ ]+(\\d)/g, \"$1\");\n      const fontWeight = descriptor.get(\"FontWeight\");\n      const italicAngle = -descriptor.get(\"ItalicAngle\");\n      const cssFontInfo = {\n        fontFamily,\n        fontWeight,\n        italicAngle\n      };\n\n      if (!(0, _core_utils.validateCSSFont)(cssFontInfo)) {\n        continue;\n      }\n\n      promises.push(partialEvaluator.handleSetFont(resources, [_primitives.Name.get(fontName), 1], null, operatorList, task, initialState, null, cssFontInfo).catch(function (reason) {\n        (0, _util.warn)(`loadXfaFonts: \"${reason}\".`);\n        return null;\n      }));\n    }\n\n    await Promise.all(promises);\n    const missingFonts = this.xfaFactory.setFonts(pdfFonts);\n\n    if (!missingFonts) {\n      return;\n    }\n\n    options.ignoreErrors = true;\n    promises.length = 0;\n    pdfFonts.length = 0;\n    const reallyMissingFonts = new Set();\n\n    for (const missing of missingFonts) {\n      if (!(0, _xfa_fonts.getXfaFontName)(`${missing}-Regular`)) {\n        reallyMissingFonts.add(missing);\n      }\n    }\n\n    if (reallyMissingFonts.size) {\n      missingFonts.push(\"PdfJS-Fallback\");\n    }\n\n    for (const missing of missingFonts) {\n      if (reallyMissingFonts.has(missing)) {\n        continue;\n      }\n\n      for (const fontInfo of [{\n        name: \"Regular\",\n        fontWeight: 400,\n        italicAngle: 0\n      }, {\n        name: \"Bold\",\n        fontWeight: 700,\n        italicAngle: 0\n      }, {\n        name: \"Italic\",\n        fontWeight: 400,\n        italicAngle: 12\n      }, {\n        name: \"BoldItalic\",\n        fontWeight: 700,\n        italicAngle: 12\n      }]) {\n        const name = `${missing}-${fontInfo.name}`;\n        const dict = (0, _xfa_fonts.getXfaFontDict)(name);\n        promises.push(partialEvaluator.handleSetFont(resources, [_primitives.Name.get(name), 1], null, operatorList, task, initialState, dict, {\n          fontFamily: missing,\n          fontWeight: fontInfo.fontWeight,\n          italicAngle: fontInfo.italicAngle\n        }).catch(function (reason) {\n          (0, _util.warn)(`loadXfaFonts: \"${reason}\".`);\n          return null;\n        }));\n      }\n    }\n\n    await Promise.all(promises);\n    this.xfaFactory.appendFonts(pdfFonts, reallyMissingFonts);\n  }\n\n  async serializeXfaData(annotationStorage) {\n    return this.xfaFactory ? this.xfaFactory.serializeData(annotationStorage) : null;\n  }\n\n  get formInfo() {\n    const formInfo = {\n      hasFields: false,\n      hasAcroForm: false,\n      hasXfa: false,\n      hasSignatures: false\n    };\n    const acroForm = this.catalog.acroForm;\n\n    if (!acroForm) {\n      return (0, _util.shadow)(this, \"formInfo\", formInfo);\n    }\n\n    try {\n      const fields = acroForm.get(\"Fields\");\n      const hasFields = Array.isArray(fields) && fields.length > 0;\n      formInfo.hasFields = hasFields;\n      const xfa = acroForm.get(\"XFA\");\n      formInfo.hasXfa = Array.isArray(xfa) && xfa.length > 0 || xfa instanceof _base_stream.BaseStream && !xfa.isEmpty;\n      const sigFlags = acroForm.get(\"SigFlags\");\n      const hasSignatures = !!(sigFlags & 0x1);\n\n      const hasOnlyDocumentSignatures = hasSignatures && this._hasOnlyDocumentSignatures(fields);\n\n      formInfo.hasAcroForm = hasFields && !hasOnlyDocumentSignatures;\n      formInfo.hasSignatures = hasSignatures;\n    } catch (ex) {\n      if (ex instanceof _core_utils.MissingDataException) {\n        throw ex;\n      }\n\n      (0, _util.warn)(`Cannot fetch form information: \"${ex}\".`);\n    }\n\n    return (0, _util.shadow)(this, \"formInfo\", formInfo);\n  }\n\n  get documentInfo() {\n    let version = this._version;\n\n    if (typeof version !== \"string\" || !PDF_HEADER_VERSION_REGEXP.test(version)) {\n      (0, _util.warn)(`Invalid PDF header version number: ${version}`);\n      version = null;\n    }\n\n    const docInfo = {\n      PDFFormatVersion: version,\n      Language: this.catalog.lang,\n      EncryptFilterName: this.xref.encrypt ? this.xref.encrypt.filterName : null,\n      IsLinearized: !!this.linearization,\n      IsAcroFormPresent: this.formInfo.hasAcroForm,\n      IsXFAPresent: this.formInfo.hasXfa,\n      IsCollectionPresent: !!this.catalog.collection,\n      IsSignaturesPresent: this.formInfo.hasSignatures\n    };\n    let infoDict;\n\n    try {\n      infoDict = this.xref.trailer.get(\"Info\");\n    } catch (err) {\n      if (err instanceof _core_utils.MissingDataException) {\n        throw err;\n      }\n\n      (0, _util.info)(\"The document information dictionary is invalid.\");\n    }\n\n    if (!(infoDict instanceof _primitives.Dict)) {\n      return (0, _util.shadow)(this, \"documentInfo\", docInfo);\n    }\n\n    for (const key of infoDict.getKeys()) {\n      const value = infoDict.get(key);\n\n      switch (key) {\n        case \"Title\":\n        case \"Author\":\n        case \"Subject\":\n        case \"Keywords\":\n        case \"Creator\":\n        case \"Producer\":\n        case \"CreationDate\":\n        case \"ModDate\":\n          if (typeof value === \"string\") {\n            docInfo[key] = (0, _util.stringToPDFString)(value);\n            continue;\n          }\n\n          break;\n\n        case \"Trapped\":\n          if (value instanceof _primitives.Name) {\n            docInfo[key] = value;\n            continue;\n          }\n\n          break;\n\n        default:\n          let customValue;\n\n          switch (typeof value) {\n            case \"string\":\n              customValue = (0, _util.stringToPDFString)(value);\n              break;\n\n            case \"number\":\n            case \"boolean\":\n              customValue = value;\n              break;\n\n            default:\n              if (value instanceof _primitives.Name) {\n                customValue = value;\n              }\n\n              break;\n          }\n\n          if (customValue === undefined) {\n            (0, _util.warn)(`Bad value, for custom key \"${key}\", in Info: ${value}.`);\n            continue;\n          }\n\n          if (!docInfo.Custom) {\n            docInfo.Custom = Object.create(null);\n          }\n\n          docInfo.Custom[key] = customValue;\n          continue;\n      }\n\n      (0, _util.warn)(`Bad value, for key \"${key}\", in Info: ${value}.`);\n    }\n\n    return (0, _util.shadow)(this, \"documentInfo\", docInfo);\n  }\n\n  get fingerprints() {\n    function validate(data) {\n      return typeof data === \"string\" && data.length > 0 && data !== EMPTY_FINGERPRINT;\n    }\n\n    function hexString(hash) {\n      const buf = [];\n\n      for (let i = 0, ii = hash.length; i < ii; i++) {\n        const hex = hash[i].toString(16);\n        buf.push(hex.padStart(2, \"0\"));\n      }\n\n      return buf.join(\"\");\n    }\n\n    const idArray = this.xref.trailer.get(\"ID\");\n    let hashOriginal, hashModified;\n\n    if (Array.isArray(idArray) && validate(idArray[0])) {\n      hashOriginal = (0, _util.stringToBytes)(idArray[0]);\n\n      if (idArray[1] !== idArray[0] && validate(idArray[1])) {\n        hashModified = (0, _util.stringToBytes)(idArray[1]);\n      }\n    } else {\n      hashOriginal = (0, _crypto.calculateMD5)(this.stream.getByteRange(0, FINGERPRINT_FIRST_BYTES), 0, FINGERPRINT_FIRST_BYTES);\n    }\n\n    return (0, _util.shadow)(this, \"fingerprints\", [hexString(hashOriginal), hashModified ? hexString(hashModified) : null]);\n  }\n\n  async _getLinearizationPage(pageIndex) {\n    const {\n      catalog,\n      linearization,\n      xref\n    } = this;\n\n    const ref = _primitives.Ref.get(linearization.objectNumberFirst, 0);\n\n    try {\n      const obj = await xref.fetchAsync(ref);\n\n      if (obj instanceof _primitives.Dict) {\n        let type = obj.getRaw(\"Type\");\n\n        if (type instanceof _primitives.Ref) {\n          type = await xref.fetchAsync(type);\n        }\n\n        if ((0, _primitives.isName)(type, \"Page\") || !obj.has(\"Type\") && !obj.has(\"Kids\")) {\n          if (!catalog.pageKidsCountCache.has(ref)) {\n            catalog.pageKidsCountCache.put(ref, 1);\n          }\n\n          if (!catalog.pageIndexCache.has(ref)) {\n            catalog.pageIndexCache.put(ref, 0);\n          }\n\n          return [obj, ref];\n        }\n      }\n\n      throw new _util.FormatError(\"The Linearization dictionary doesn't point to a valid Page dictionary.\");\n    } catch (reason) {\n      (0, _util.warn)(`_getLinearizationPage: \"${reason.message}\".`);\n      return catalog.getPageDict(pageIndex);\n    }\n  }\n\n  getPage(pageIndex) {\n    const cachedPromise = this._pagePromises.get(pageIndex);\n\n    if (cachedPromise) {\n      return cachedPromise;\n    }\n\n    const {\n      catalog,\n      linearization,\n      xfaFactory\n    } = this;\n    let promise;\n\n    if (xfaFactory) {\n      promise = Promise.resolve([_primitives.Dict.empty, null]);\n    } else if (linearization && linearization.pageFirst === pageIndex) {\n      promise = this._getLinearizationPage(pageIndex);\n    } else {\n      promise = catalog.getPageDict(pageIndex);\n    }\n\n    promise = promise.then(([pageDict, ref]) => {\n      return new Page({\n        pdfManager: this.pdfManager,\n        xref: this.xref,\n        pageIndex,\n        pageDict,\n        ref,\n        globalIdFactory: this._globalIdFactory,\n        fontCache: catalog.fontCache,\n        builtInCMapCache: catalog.builtInCMapCache,\n        standardFontDataCache: catalog.standardFontDataCache,\n        globalImageCache: catalog.globalImageCache,\n        nonBlendModesSet: catalog.nonBlendModesSet,\n        xfaFactory\n      });\n    });\n\n    this._pagePromises.set(pageIndex, promise);\n\n    return promise;\n  }\n\n  async checkFirstPage(recoveryMode = false) {\n    if (recoveryMode) {\n      return;\n    }\n\n    try {\n      await this.getPage(0);\n    } catch (reason) {\n      if (reason instanceof _core_utils.XRefEntryException) {\n        this._pagePromises.delete(0);\n\n        await this.cleanup();\n        throw new _core_utils.XRefParseException();\n      }\n    }\n  }\n\n  async checkLastPage(recoveryMode = false) {\n    const {\n      catalog,\n      pdfManager\n    } = this;\n    catalog.setActualNumPages();\n    let numPages;\n\n    try {\n      await Promise.all([pdfManager.ensureDoc(\"xfaFactory\"), pdfManager.ensureDoc(\"linearization\"), pdfManager.ensureCatalog(\"numPages\")]);\n\n      if (this.xfaFactory) {\n        return;\n      } else if (this.linearization) {\n        numPages = this.linearization.numPages;\n      } else {\n        numPages = catalog.numPages;\n      }\n\n      if (!Number.isInteger(numPages)) {\n        throw new _util.FormatError(\"Page count is not an integer.\");\n      } else if (numPages <= 1) {\n        return;\n      }\n\n      await this.getPage(numPages - 1);\n    } catch (reason) {\n      this._pagePromises.delete(numPages - 1);\n\n      await this.cleanup();\n\n      if (reason instanceof _core_utils.XRefEntryException && !recoveryMode) {\n        throw new _core_utils.XRefParseException();\n      }\n\n      (0, _util.warn)(`checkLastPage - invalid /Pages tree /Count: ${numPages}.`);\n      let pagesTree;\n\n      try {\n        pagesTree = await catalog.getAllPageDicts(recoveryMode);\n      } catch (reasonAll) {\n        if (reasonAll instanceof _core_utils.XRefEntryException && !recoveryMode) {\n          throw new _core_utils.XRefParseException();\n        }\n\n        catalog.setActualNumPages(1);\n        return;\n      }\n\n      for (const [pageIndex, [pageDict, ref]] of pagesTree) {\n        let promise;\n\n        if (pageDict instanceof Error) {\n          promise = Promise.reject(pageDict);\n          promise.catch(() => {});\n        } else {\n          promise = Promise.resolve(new Page({\n            pdfManager,\n            xref: this.xref,\n            pageIndex,\n            pageDict,\n            ref,\n            globalIdFactory: this._globalIdFactory,\n            fontCache: catalog.fontCache,\n            builtInCMapCache: catalog.builtInCMapCache,\n            standardFontDataCache: catalog.standardFontDataCache,\n            globalImageCache: catalog.globalImageCache,\n            nonBlendModesSet: catalog.nonBlendModesSet,\n            xfaFactory: null\n          }));\n        }\n\n        this._pagePromises.set(pageIndex, promise);\n      }\n\n      catalog.setActualNumPages(pagesTree.size);\n    }\n  }\n\n  fontFallback(id, handler) {\n    return this.catalog.fontFallback(id, handler);\n  }\n\n  async cleanup(manuallyTriggered = false) {\n    return this.catalog ? this.catalog.cleanup(manuallyTriggered) : (0, _cleanup_helper.clearGlobalCaches)();\n  }\n\n  _collectFieldObjects(name, fieldRef, promises) {\n    const field = this.xref.fetchIfRef(fieldRef);\n\n    if (field.has(\"T\")) {\n      const partName = (0, _util.stringToPDFString)(field.get(\"T\"));\n\n      if (name === \"\") {\n        name = partName;\n      } else {\n        name = `${name}.${partName}`;\n      }\n    }\n\n    if (!promises.has(name)) {\n      promises.set(name, []);\n    }\n\n    promises.get(name).push(_annotation.AnnotationFactory.create(this.xref, fieldRef, this.pdfManager, this._localIdFactory, true).then(annotation => annotation && annotation.getFieldObject()).catch(function (reason) {\n      (0, _util.warn)(`_collectFieldObjects: \"${reason}\".`);\n      return null;\n    }));\n\n    if (field.has(\"Kids\")) {\n      const kids = field.get(\"Kids\");\n\n      for (const kid of kids) {\n        this._collectFieldObjects(name, kid, promises);\n      }\n    }\n  }\n\n  get fieldObjects() {\n    if (!this.formInfo.hasFields) {\n      return (0, _util.shadow)(this, \"fieldObjects\", Promise.resolve(null));\n    }\n\n    const allFields = Object.create(null);\n    const fieldPromises = new Map();\n\n    for (const fieldRef of this.catalog.acroForm.get(\"Fields\")) {\n      this._collectFieldObjects(\"\", fieldRef, fieldPromises);\n    }\n\n    const allPromises = [];\n\n    for (const [name, promises] of fieldPromises) {\n      allPromises.push(Promise.all(promises).then(fields => {\n        fields = fields.filter(field => !!field);\n\n        if (fields.length > 0) {\n          allFields[name] = fields;\n        }\n      }));\n    }\n\n    return (0, _util.shadow)(this, \"fieldObjects\", Promise.all(allPromises).then(() => allFields));\n  }\n\n  get hasJSActions() {\n    const promise = this.pdfManager.ensureDoc(\"_parseHasJSActions\");\n    return (0, _util.shadow)(this, \"hasJSActions\", promise);\n  }\n\n  async _parseHasJSActions() {\n    const [catalogJsActions, fieldObjects] = await Promise.all([this.pdfManager.ensureCatalog(\"jsActions\"), this.pdfManager.ensureDoc(\"fieldObjects\")]);\n\n    if (catalogJsActions) {\n      return true;\n    }\n\n    if (fieldObjects) {\n      return Object.values(fieldObjects).some(fieldObject => fieldObject.some(object => object.actions !== null));\n    }\n\n    return false;\n  }\n\n  get calculationOrderIds() {\n    const acroForm = this.catalog.acroForm;\n\n    if (!acroForm || !acroForm.has(\"CO\")) {\n      return (0, _util.shadow)(this, \"calculationOrderIds\", null);\n    }\n\n    const calculationOrder = acroForm.get(\"CO\");\n\n    if (!Array.isArray(calculationOrder) || calculationOrder.length === 0) {\n      return (0, _util.shadow)(this, \"calculationOrderIds\", null);\n    }\n\n    const ids = [];\n\n    for (const id of calculationOrder) {\n      if (id instanceof _primitives.Ref) {\n        ids.push(id.toString());\n      }\n    }\n\n    if (ids.length === 0) {\n      return (0, _util.shadow)(this, \"calculationOrderIds\", null);\n    }\n\n    return (0, _util.shadow)(this, \"calculationOrderIds\", ids);\n  }\n\n}\n\nexports.PDFDocument = PDFDocument;\n\n/***/ }),\n/* 12 */\n/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {\n\n\n\nObject.defineProperty(exports, \"__esModule\", ({\n  value: true\n}));\nexports.getXfaFontDict = getXfaFontDict;\nexports.getXfaFontName = getXfaFontName;\n\nvar _calibri_factors = __w_pdfjs_require__(13);\n\nvar _primitives = __w_pdfjs_require__(5);\n\nvar _helvetica_factors = __w_pdfjs_require__(14);\n\nvar _liberationsans_widths = __w_pdfjs_require__(15);\n\nvar _myriadpro_factors = __w_pdfjs_require__(16);\n\nvar _segoeui_factors = __w_pdfjs_require__(17);\n\nvar _core_utils = __w_pdfjs_require__(8);\n\nvar _fonts_utils = __w_pdfjs_require__(18);\n\nconst getXFAFontMap = (0, _core_utils.getLookupTableFactory)(function (t) {\n  t[\"MyriadPro-Regular\"] = t[\"PdfJS-Fallback-Regular\"] = {\n    name: \"LiberationSans-Regular\",\n    factors: _myriadpro_factors.MyriadProRegularFactors,\n    baseWidths: _liberationsans_widths.LiberationSansRegularWidths,\n    baseMapping: _liberationsans_widths.LiberationSansRegularMapping,\n    metrics: _myriadpro_factors.MyriadProRegularMetrics\n  };\n  t[\"MyriadPro-Bold\"] = t[\"PdfJS-Fallback-Bold\"] = {\n    name: \"LiberationSans-Bold\",\n    factors: _myriadpro_factors.MyriadProBoldFactors,\n    baseWidths: _liberationsans_widths.LiberationSansBoldWidths,\n    baseMapping: _liberationsans_widths.LiberationSansBoldMapping,\n    metrics: _myriadpro_factors.MyriadProBoldMetrics\n  };\n  t[\"MyriadPro-It\"] = t[\"MyriadPro-Italic\"] = t[\"PdfJS-Fallback-Italic\"] = {\n    name: \"LiberationSans-Italic\",\n    factors: _myriadpro_factors.MyriadProItalicFactors,\n    baseWidths: _liberationsans_widths.LiberationSansItalicWidths,\n    baseMapping: _liberationsans_widths.LiberationSansItalicMapping,\n    metrics: _myriadpro_factors.MyriadProItalicMetrics\n  };\n  t[\"MyriadPro-BoldIt\"] = t[\"MyriadPro-BoldItalic\"] = t[\"PdfJS-Fallback-BoldItalic\"] = {\n    name: \"LiberationSans-BoldItalic\",\n    factors: _myriadpro_factors.MyriadProBoldItalicFactors,\n    baseWidths: _liberationsans_widths.LiberationSansBoldItalicWidths,\n    baseMapping: _liberationsans_widths.LiberationSansBoldItalicMapping,\n    metrics: _myriadpro_factors.MyriadProBoldItalicMetrics\n  };\n  t.ArialMT = t.Arial = t[\"Arial-Regular\"] = {\n    name: \"LiberationSans-Regular\",\n    baseWidths: _liberationsans_widths.LiberationSansRegularWidths,\n    baseMapping: _liberationsans_widths.LiberationSansRegularMapping\n  };\n  t[\"Arial-BoldMT\"] = t[\"Arial-Bold\"] = {\n    name: \"LiberationSans-Bold\",\n    baseWidths: _liberationsans_widths.LiberationSansBoldWidths,\n    baseMapping: _liberationsans_widths.LiberationSansBoldMapping\n  };\n  t[\"Arial-ItalicMT\"] = t[\"Arial-Italic\"] = {\n    name: \"LiberationSans-Italic\",\n    baseWidths: _liberationsans_widths.LiberationSansItalicWidths,\n    baseMapping: _liberationsans_widths.LiberationSansItalicMapping\n  };\n  t[\"Arial-BoldItalicMT\"] = t[\"Arial-BoldItalic\"] = {\n    name: \"LiberationSans-BoldItalic\",\n    baseWidths: _liberationsans_widths.LiberationSansBoldItalicWidths,\n    baseMapping: _liberationsans_widths.LiberationSansBoldItalicMapping\n  };\n  t[\"Calibri-Regular\"] = {\n    name: \"LiberationSans-Regular\",\n    factors: _calibri_factors.CalibriRegularFactors,\n    baseWidths: _liberationsans_widths.LiberationSansRegularWidths,\n    baseMapping: _liberationsans_widths.LiberationSansRegularMapping,\n    metrics: _calibri_factors.CalibriRegularMetrics\n  };\n  t[\"Calibri-Bold\"] = {\n    name: \"LiberationSans-Bold\",\n    factors: _calibri_factors.CalibriBoldFactors,\n    baseWidths: _liberationsans_widths.LiberationSansBoldWidths,\n    baseMapping: _liberationsans_widths.LiberationSansBoldMapping,\n    metrics: _calibri_factors.CalibriBoldMetrics\n  };\n  t[\"Calibri-Italic\"] = {\n    name: \"LiberationSans-Italic\",\n    factors: _calibri_factors.CalibriItalicFactors,\n    baseWidths: _liberationsans_widths.LiberationSansItalicWidths,\n    baseMapping: _liberationsans_widths.LiberationSansItalicMapping,\n    metrics: _calibri_factors.CalibriItalicMetrics\n  };\n  t[\"Calibri-BoldItalic\"] = {\n    name: \"LiberationSans-BoldItalic\",\n    factors: _calibri_factors.CalibriBoldItalicFactors,\n    baseWidths: _liberationsans_widths.LiberationSansBoldItalicWidths,\n    baseMapping: _liberationsans_widths.LiberationSansBoldItalicMapping,\n    metrics: _calibri_factors.CalibriBoldItalicMetrics\n  };\n  t[\"Segoeui-Regular\"] = {\n    name: \"LiberationSans-Regular\",\n    factors: _segoeui_factors.SegoeuiRegularFactors,\n    baseWidths: _liberationsans_widths.LiberationSansRegularWidths,\n    baseMapping: _liberationsans_widths.LiberationSansRegularMapping,\n    metrics: _segoeui_factors.SegoeuiRegularMetrics\n  };\n  t[\"Segoeui-Bold\"] = {\n    name: \"LiberationSans-Bold\",\n    factors: _segoeui_factors.SegoeuiBoldFactors,\n    baseWidths: _liberationsans_widths.LiberationSansBoldWidths,\n    baseMapping: _liberationsans_widths.LiberationSansBoldMapping,\n    metrics: _segoeui_factors.SegoeuiBoldMetrics\n  };\n  t[\"Segoeui-Italic\"] = {\n    name: \"LiberationSans-Italic\",\n    factors: _segoeui_factors.SegoeuiItalicFactors,\n    baseWidths: _liberationsans_widths.LiberationSansItalicWidths,\n    baseMapping: _liberationsans_widths.LiberationSansItalicMapping,\n    metrics: _segoeui_factors.SegoeuiItalicMetrics\n  };\n  t[\"Segoeui-BoldItalic\"] = {\n    name: \"LiberationSans-BoldItalic\",\n    factors: _segoeui_factors.SegoeuiBoldItalicFactors,\n    baseWidths: _liberationsans_widths.LiberationSansBoldItalicWidths,\n    baseMapping: _liberationsans_widths.LiberationSansBoldItalicMapping,\n    metrics: _segoeui_factors.SegoeuiBoldItalicMetrics\n  };\n  t[\"Helvetica-Regular\"] = t.Helvetica = {\n    name: \"LiberationSans-Regular\",\n    factors: _helvetica_factors.HelveticaRegularFactors,\n    baseWidths: _liberationsans_widths.LiberationSansRegularWidths,\n    baseMapping: _liberationsans_widths.LiberationSansRegularMapping,\n    metrics: _helvetica_factors.HelveticaRegularMetrics\n  };\n  t[\"Helvetica-Bold\"] = {\n    name: \"LiberationSans-Bold\",\n    factors: _helvetica_factors.HelveticaBoldFactors,\n    baseWidths: _liberationsans_widths.LiberationSansBoldWidths,\n    baseMapping: _liberationsans_widths.LiberationSansBoldMapping,\n    metrics: _helvetica_factors.HelveticaBoldMetrics\n  };\n  t[\"Helvetica-Italic\"] = {\n    name: \"LiberationSans-Italic\",\n    factors: _helvetica_factors.HelveticaItalicFactors,\n    baseWidths: _liberationsans_widths.LiberationSansItalicWidths,\n    baseMapping: _liberationsans_widths.LiberationSansItalicMapping,\n    metrics: _helvetica_factors.HelveticaItalicMetrics\n  };\n  t[\"Helvetica-BoldItalic\"] = {\n    name: \"LiberationSans-BoldItalic\",\n    factors: _helvetica_factors.HelveticaBoldItalicFactors,\n    baseWidths: _liberationsans_widths.LiberationSansBoldItalicWidths,\n    baseMapping: _liberationsans_widths.LiberationSansBoldItalicMapping,\n    metrics: _helvetica_factors.HelveticaBoldItalicMetrics\n  };\n});\n\nfunction getXfaFontName(name) {\n  const fontName = (0, _fonts_utils.normalizeFontName)(name);\n  const fontMap = getXFAFontMap();\n  return fontMap[fontName];\n}\n\nfunction getXfaFontWidths(name) {\n  const info = getXfaFontName(name);\n\n  if (!info) {\n    return null;\n  }\n\n  const {\n    baseWidths,\n    baseMapping,\n    factors\n  } = info;\n  let rescaledBaseWidths;\n\n  if (!factors) {\n    rescaledBaseWidths = baseWidths;\n  } else {\n    rescaledBaseWidths = baseWidths.map((w, i) => w * factors[i]);\n  }\n\n  let currentCode = -2;\n  let currentArray;\n  const newWidths = [];\n\n  for (const [unicode, glyphIndex] of baseMapping.map((charUnicode, index) => [charUnicode, index]).sort(([unicode1], [unicode2]) => unicode1 - unicode2)) {\n    if (unicode === -1) {\n      continue;\n    }\n\n    if (unicode === currentCode + 1) {\n      currentArray.push(rescaledBaseWidths[glyphIndex]);\n      currentCode += 1;\n    } else {\n      currentCode = unicode;\n      currentArray = [rescaledBaseWidths[glyphIndex]];\n      newWidths.push(unicode, currentArray);\n    }\n  }\n\n  return newWidths;\n}\n\nfunction getXfaFontDict(name) {\n  const widths = getXfaFontWidths(name);\n  const dict = new _primitives.Dict(null);\n  dict.set(\"BaseFont\", _primitives.Name.get(name));\n  dict.set(\"Type\", _primitives.Name.get(\"Font\"));\n  dict.set(\"Subtype\", _primitives.Name.get(\"CIDFontType2\"));\n  dict.set(\"Encoding\", _primitives.Name.get(\"Identity-H\"));\n  dict.set(\"CIDToGIDMap\", _primitives.Name.get(\"Identity\"));\n  dict.set(\"W\", widths);\n  dict.set(\"FirstChar\", widths[0]);\n  dict.set(\"LastChar\", widths[widths.length - 2] + widths[widths.length - 1].length - 1);\n  const descriptor = new _primitives.Dict(null);\n  dict.set(\"FontDescriptor\", descriptor);\n  const systemInfo = new _primitives.Dict(null);\n  systemInfo.set(\"Ordering\", \"Identity\");\n  systemInfo.set(\"Registry\", \"Adobe\");\n  systemInfo.set(\"Supplement\", 0);\n  dict.set(\"CIDSystemInfo\", systemInfo);\n  return dict;\n}\n\n/***/ }),\n/* 13 */\n/***/ ((__unused_webpack_module, exports) => {\n\n\n\nObject.defineProperty(exports, \"__esModule\", ({\n  value: true\n}));\nexports.CalibriRegularMetrics = exports.CalibriRegularFactors = exports.CalibriItalicMetrics = exports.CalibriItalicFactors = exports.CalibriBoldMetrics = exports.CalibriBoldItalicMetrics = exports.CalibriBoldItalicFactors = exports.CalibriBoldFactors = void 0;\nconst CalibriBoldFactors = [1.3877, 1, 1, 1, 0.97801, 0.92482, 0.89552, 0.91133, 0.81988, 0.97566, 0.98152, 0.93548, 0.93548, 1.2798, 0.85284, 0.92794, 1, 0.96134, 1.54657, 0.91133, 0.91133, 0.91133, 0.91133, 0.91133, 0.91133, 0.91133, 0.91133, 0.91133, 0.91133, 0.82845, 0.82845, 0.85284, 0.85284, 0.85284, 0.75859, 0.92138, 0.83908, 0.7762, 0.73293, 0.87289, 0.73133, 0.7514, 0.81921, 0.87356, 0.95958, 0.59526, 0.75727, 0.69225, 1.04924, 0.9121, 0.86943, 0.79795, 0.88198, 0.77958, 0.70864, 0.81055, 0.90399, 0.88653, 0.96017, 0.82577, 0.77892, 0.78257, 0.97507, 1.54657, 0.97507, 0.85284, 0.89552, 0.90176, 0.88762, 0.8785, 0.75241, 0.8785, 0.90518, 0.95015, 0.77618, 0.8785, 0.88401, 0.91916, 0.86304, 0.88401, 0.91488, 0.8785, 0.8801, 0.8785, 0.8785, 0.91343, 0.7173, 1.04106, 0.8785, 0.85075, 0.95794, 0.82616, 0.85162, 0.79492, 0.88331, 1.69808, 0.88331, 0.85284, 0.97801, 0.89552, 0.91133, 0.89552, 0.91133, 1.7801, 0.89552, 1.24487, 1.13254, 1.12401, 0.96839, 0.85284, 0.68787, 0.70645, 0.85592, 0.90747, 1.01466, 1.0088, 0.90323, 1, 1.07463, 1, 0.91056, 0.75806, 1.19118, 0.96839, 0.78864, 0.82845, 0.84133, 0.75859, 0.83908, 0.83908, 0.83908, 0.83908, 0.83908, 0.83908, 0.77539, 0.73293, 0.73133, 0.73133, 0.73133, 0.73133, 0.95958, 0.95958, 0.95958, 0.95958, 0.88506, 0.9121, 0.86943, 0.86943, 0.86943, 0.86943, 0.86943, 0.85284, 0.87508, 0.90399, 0.90399, 0.90399, 0.90399, 0.77892, 0.79795, 0.90807, 0.88762, 0.88762, 0.88762, 0.88762, 0.88762, 0.88762, 0.8715, 0.75241, 0.90518, 0.90518, 0.90518, 0.90518, 0.88401, 0.88401, 0.88401, 0.88401, 0.8785, 0.8785, 0.8801, 0.8801, 0.8801, 0.8801, 0.8801, 0.90747, 0.89049, 0.8785, 0.8785, 0.8785, 0.8785, 0.85162, 0.8785, 0.85162, 0.83908, 0.88762, 0.83908, 0.88762, 0.83908, 0.88762, 0.73293, 0.75241, 0.73293, 0.75241, 0.73293, 0.75241, 0.73293, 0.75241, 0.87289, 0.83016, 0.88506, 0.93125, 0.73133, 0.90518, 0.73133, 0.90518, 0.73133, 0.90518, 0.73133, 0.90518, 0.73133, 0.90518, 0.81921, 0.77618, 0.81921, 0.77618, 0.81921, 0.77618, 1, 1, 0.87356, 0.8785, 0.91075, 0.89608, 0.95958, 0.88401, 0.95958, 0.88401, 0.95958, 0.88401, 0.95958, 0.88401, 0.95958, 0.88401, 0.76229, 0.90167, 0.59526, 0.91916, 1, 1, 0.86304, 0.69225, 0.88401, 1, 1, 0.70424, 0.79468, 0.91926, 0.88175, 0.70823, 0.94903, 0.9121, 0.8785, 1, 1, 0.9121, 0.8785, 0.87802, 0.88656, 0.8785, 0.86943, 0.8801, 0.86943, 0.8801, 0.86943, 0.8801, 0.87402, 0.89291, 0.77958, 0.91343, 1, 1, 0.77958, 0.91343, 0.70864, 0.7173, 0.70864, 0.7173, 0.70864, 0.7173, 0.70864, 0.7173, 1, 1, 0.81055, 0.75841, 0.81055, 1.06452, 0.90399, 0.8785, 0.90399, 0.8785, 0.90399, 0.8785, 0.90399, 0.8785, 0.90399, 0.8785, 0.90399, 0.8785, 0.96017, 0.95794, 0.77892, 0.85162, 0.77892, 0.78257, 0.79492, 0.78257, 0.79492, 0.78257, 0.79492, 0.9297, 0.56892, 0.83908, 0.88762, 0.77539, 0.8715, 0.87508, 0.89049, 1, 1, 0.81055, 1.04106, 1.20528, 1.20528, 1, 1.15543, 0.70674, 0.98387, 0.94721, 1.33431, 1.45894, 0.95161, 1.06303, 0.83908, 0.80352, 0.57184, 0.6965, 0.56289, 0.82001, 0.56029, 0.81235, 1.02988, 0.83908, 0.7762, 0.68156, 0.80367, 0.73133, 0.78257, 0.87356, 0.86943, 0.95958, 0.75727, 0.89019, 1.04924, 0.9121, 0.7648, 0.86943, 0.87356, 0.79795, 0.78275, 0.81055, 0.77892, 0.9762, 0.82577, 0.99819, 0.84896, 0.95958, 0.77892, 0.96108, 1.01407, 0.89049, 1.02988, 0.94211, 0.96108, 0.8936, 0.84021, 0.87842, 0.96399, 0.79109, 0.89049, 1.00813, 1.02988, 0.86077, 0.87445, 0.92099, 0.84723, 0.86513, 0.8801, 0.75638, 0.85714, 0.78216, 0.79586, 0.87965, 0.94211, 0.97747, 0.78287, 0.97926, 0.84971, 1.02988, 0.94211, 0.8801, 0.94211, 0.84971, 0.73133, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.90264, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.90518, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.90548, 1, 1, 1, 1, 1, 1, 0.96017, 0.95794, 0.96017, 0.95794, 0.96017, 0.95794, 0.77892, 0.85162, 1, 1, 0.89552, 0.90527, 1, 0.90363, 0.92794, 0.92794, 0.92794, 0.92794, 0.87012, 0.87012, 0.87012, 0.89552, 0.89552, 1.42259, 0.71143, 1.06152, 1, 1, 1.03372, 1.03372, 0.97171, 1.4956, 2.2807, 0.93835, 0.83406, 0.91133, 0.84107, 0.91133, 1, 1, 1, 0.72021, 1, 1.23108, 0.83489, 0.88525, 0.88525, 0.81499, 0.90527, 1.81055, 0.90527, 1.81055, 1.31006, 1.53711, 0.94434, 1.08696, 1, 0.95018, 0.77192, 0.85284, 0.90747, 1.17534, 0.69825, 0.9716, 1.37077, 0.90747, 0.90747, 0.85356, 0.90747, 0.90747, 1.44947, 0.85284, 0.8941, 0.8941, 0.70572, 0.8, 0.70572, 0.70572, 0.70572, 0.70572, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.99862, 0.99862, 1, 1, 1, 1, 1, 1.08004, 0.91027, 1, 1, 1, 0.99862, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.90727, 0.90727, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1];\nexports.CalibriBoldFactors = CalibriBoldFactors;\nconst CalibriBoldMetrics = {\n  lineHeight: 1.2207,\n  lineGap: 0.2207\n};\nexports.CalibriBoldMetrics = CalibriBoldMetrics;\nconst CalibriBoldItalicFactors = [1.3877, 1, 1, 1, 0.97801, 0.92482, 0.89552, 0.91133, 0.81988, 0.97566, 0.98152, 0.93548, 0.93548, 1.2798, 0.85284, 0.92794, 1, 0.96134, 1.56239, 0.91133, 0.91133, 0.91133, 0.91133, 0.91133, 0.91133, 0.91133, 0.91133, 0.91133, 0.91133, 0.82845, 0.82845, 0.85284, 0.85284, 0.85284, 0.75859, 0.92138, 0.83908, 0.7762, 0.71805, 0.87289, 0.73133, 0.7514, 0.81921, 0.87356, 0.95958, 0.59526, 0.75727, 0.69225, 1.04924, 0.90872, 0.85938, 0.79795, 0.87068, 0.77958, 0.69766, 0.81055, 0.90399, 0.88653, 0.96068, 0.82577, 0.77892, 0.78257, 0.97507, 1.529, 0.97507, 0.85284, 0.89552, 0.90176, 0.94908, 0.86411, 0.74012, 0.86411, 0.88323, 0.95015, 0.86411, 0.86331, 0.88401, 0.91916, 0.86304, 0.88401, 0.9039, 0.86331, 0.86331, 0.86411, 0.86411, 0.90464, 0.70852, 1.04106, 0.86331, 0.84372, 0.95794, 0.82616, 0.84548, 0.79492, 0.88331, 1.69808, 0.88331, 0.85284, 0.97801, 0.89552, 0.91133, 0.89552, 0.91133, 1.7801, 0.89552, 1.24487, 1.13254, 1.19129, 0.96839, 0.85284, 0.68787, 0.70645, 0.85592, 0.90747, 1.01466, 1.0088, 0.90323, 1, 1.07463, 1, 0.91056, 0.75806, 1.19118, 0.96839, 0.78864, 0.82845, 0.84133, 0.75859, 0.83908, 0.83908, 0.83908, 0.83908, 0.83908, 0.83908, 0.77539, 0.71805, 0.73133, 0.73133, 0.73133, 0.73133, 0.95958, 0.95958, 0.95958, 0.95958, 0.88506, 0.90872, 0.85938, 0.85938, 0.85938, 0.85938, 0.85938, 0.85284, 0.87068, 0.90399, 0.90399, 0.90399, 0.90399, 0.77892, 0.79795, 0.90807, 0.94908, 0.94908, 0.94908, 0.94908, 0.94908, 0.94908, 0.85887, 0.74012, 0.88323, 0.88323, 0.88323, 0.88323, 0.88401, 0.88401, 0.88401, 0.88401, 0.8785, 0.86331, 0.86331, 0.86331, 0.86331, 0.86331, 0.86331, 0.90747, 0.89049, 0.86331, 0.86331, 0.86331, 0.86331, 0.84548, 0.86411, 0.84548, 0.83908, 0.94908, 0.83908, 0.94908, 0.83908, 0.94908, 0.71805, 0.74012, 0.71805, 0.74012, 0.71805, 0.74012, 0.71805, 0.74012, 0.87289, 0.79538, 0.88506, 0.92726, 0.73133, 0.88323, 0.73133, 0.88323, 0.73133, 0.88323, 0.73133, 0.88323, 0.73133, 0.88323, 0.81921, 0.86411, 0.81921, 0.86411, 0.81921, 0.86411, 1, 1, 0.87356, 0.86331, 0.91075, 0.8777, 0.95958, 0.88401, 0.95958, 0.88401, 0.95958, 0.88401, 0.95958, 0.88401, 0.95958, 0.88401, 0.76467, 0.90167, 0.59526, 0.91916, 1, 1, 0.86304, 0.69225, 0.88401, 1, 1, 0.70424, 0.77312, 0.91926, 0.88175, 0.70823, 0.94903, 0.90872, 0.86331, 1, 1, 0.90872, 0.86331, 0.86906, 0.88116, 0.86331, 0.85938, 0.86331, 0.85938, 0.86331, 0.85938, 0.86331, 0.87402, 0.86549, 0.77958, 0.90464, 1, 1, 0.77958, 0.90464, 0.69766, 0.70852, 0.69766, 0.70852, 0.69766, 0.70852, 0.69766, 0.70852, 1, 1, 0.81055, 0.75841, 0.81055, 1.06452, 0.90399, 0.86331, 0.90399, 0.86331, 0.90399, 0.86331, 0.90399, 0.86331, 0.90399, 0.86331, 0.90399, 0.86331, 0.96068, 0.95794, 0.77892, 0.84548, 0.77892, 0.78257, 0.79492, 0.78257, 0.79492, 0.78257, 0.79492, 0.9297, 0.56892, 0.83908, 0.94908, 0.77539, 0.85887, 0.87068, 0.89049, 1, 1, 0.81055, 1.04106, 1.20528, 1.20528, 1, 1.15543, 0.70088, 0.98387, 0.94721, 1.33431, 1.45894, 0.95161, 1.48387, 0.83908, 0.80352, 0.57118, 0.6965, 0.56347, 0.79179, 0.55853, 0.80346, 1.02988, 0.83908, 0.7762, 0.67174, 0.86036, 0.73133, 0.78257, 0.87356, 0.86441, 0.95958, 0.75727, 0.89019, 1.04924, 0.90872, 0.74889, 0.85938, 0.87891, 0.79795, 0.7957, 0.81055, 0.77892, 0.97447, 0.82577, 0.97466, 0.87179, 0.95958, 0.77892, 0.94252, 0.95612, 0.8753, 1.02988, 0.92733, 0.94252, 0.87411, 0.84021, 0.8728, 0.95612, 0.74081, 0.8753, 1.02189, 1.02988, 0.84814, 0.87445, 0.91822, 0.84723, 0.85668, 0.86331, 0.81344, 0.87581, 0.76422, 0.82046, 0.96057, 0.92733, 0.99375, 0.78022, 0.95452, 0.86015, 1.02988, 0.92733, 0.86331, 0.92733, 0.86015, 0.73133, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.90631, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.88323, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.85174, 1, 1, 1, 1, 1, 1, 0.96068, 0.95794, 0.96068, 0.95794, 0.96068, 0.95794, 0.77892, 0.84548, 1, 1, 0.89552, 0.90527, 1, 0.90363, 0.92794, 0.92794, 0.92794, 0.89807, 0.87012, 0.87012, 0.87012, 0.89552, 0.89552, 1.42259, 0.71094, 1.06152, 1, 1, 1.03372, 1.03372, 0.97171, 1.4956, 2.2807, 0.92972, 0.83406, 0.91133, 0.83326, 0.91133, 1, 1, 1, 0.72021, 1, 1.23108, 0.83489, 0.88525, 0.88525, 0.81499, 0.90616, 1.81055, 0.90527, 1.81055, 1.3107, 1.53711, 0.94434, 1.08696, 1, 0.95018, 0.77192, 0.85284, 0.90747, 1.17534, 0.69825, 0.9716, 1.37077, 0.90747, 0.90747, 0.85356, 0.90747, 0.90747, 1.44947, 0.85284, 0.8941, 0.8941, 0.70572, 0.8, 0.70572, 0.70572, 0.70572, 0.70572, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.99862, 0.99862, 1, 1, 1, 1, 1, 1.08004, 0.91027, 1, 1, 1, 0.99862, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.90727, 0.90727, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1];\nexports.CalibriBoldItalicFactors = CalibriBoldItalicFactors;\nconst CalibriBoldItalicMetrics = {\n  lineHeight: 1.2207,\n  lineGap: 0.2207\n};\nexports.CalibriBoldItalicMetrics = CalibriBoldItalicMetrics;\nconst CalibriItalicFactors = [1.3877, 1, 1, 1, 1.17223, 1.1293, 0.89552, 0.91133, 0.80395, 1.02269, 1.15601, 0.91056, 0.91056, 1.2798, 0.85284, 0.89807, 1, 0.90861, 1.39543, 0.91133, 0.91133, 0.91133, 0.91133, 0.91133, 0.91133, 0.91133, 0.91133, 0.91133, 0.91133, 0.96309, 0.96309, 0.85284, 0.85284, 0.85284, 0.83319, 0.88071, 0.8675, 0.81552, 0.72346, 0.85193, 0.73206, 0.7522, 0.81105, 0.86275, 0.90685, 0.6377, 0.77892, 0.75593, 1.02638, 0.89249, 0.84118, 0.77452, 0.85374, 0.75186, 0.67789, 0.79776, 0.88844, 0.85066, 0.94309, 0.77818, 0.7306, 0.76659, 1.10369, 1.38313, 1.10369, 1.06139, 0.89552, 0.8739, 0.9245, 0.9245, 0.83203, 0.9245, 0.85865, 1.09842, 0.9245, 0.9245, 1.03297, 1.07692, 0.90918, 1.03297, 0.94959, 0.9245, 0.92274, 0.9245, 0.9245, 1.02933, 0.77832, 1.20562, 0.9245, 0.8916, 0.98986, 0.86621, 0.89453, 0.79004, 0.94152, 1.77256, 0.94152, 0.85284, 0.97801, 0.89552, 0.91133, 0.89552, 0.91133, 1.91729, 0.89552, 1.17889, 1.13254, 1.16359, 0.92098, 0.85284, 0.68787, 0.71353, 0.84737, 0.90747, 1.0088, 1.0044, 0.87683, 1, 1.09091, 1, 0.92229, 0.739, 1.15642, 0.92098, 0.76288, 0.80504, 0.80972, 0.75859, 0.8675, 0.8675, 0.8675, 0.8675, 0.8675, 0.8675, 0.76318, 0.72346, 0.73206, 0.73206, 0.73206, 0.73206, 0.90685, 0.90685, 0.90685, 0.90685, 0.86477, 0.89249, 0.84118, 0.84118, 0.84118, 0.84118, 0.84118, 0.85284, 0.84557, 0.88844, 0.88844, 0.88844, 0.88844, 0.7306, 0.77452, 0.86331, 0.9245, 0.9245, 0.9245, 0.9245, 0.9245, 0.9245, 0.84843, 0.83203, 0.85865, 0.85865, 0.85865, 0.85865, 0.82601, 0.82601, 0.82601, 0.82601, 0.94469, 0.9245, 0.92274, 0.92274, 0.92274, 0.92274, 0.92274, 0.90747, 0.86651, 0.9245, 0.9245, 0.9245, 0.9245, 0.89453, 0.9245, 0.89453, 0.8675, 0.9245, 0.8675, 0.9245, 0.8675, 0.9245, 0.72346, 0.83203, 0.72346, 0.83203, 0.72346, 0.83203, 0.72346, 0.83203, 0.85193, 0.8875, 0.86477, 0.99034, 0.73206, 0.85865, 0.73206, 0.85865, 0.73206, 0.85865, 0.73206, 0.85865, 0.73206, 0.85865, 0.81105, 0.9245, 0.81105, 0.9245, 0.81105, 0.9245, 1, 1, 0.86275, 0.9245, 0.90872, 0.93591, 0.90685, 0.82601, 0.90685, 0.82601, 0.90685, 0.82601, 0.90685, 1.03297, 0.90685, 0.82601, 0.77896, 1.05611, 0.6377, 1.07692, 1, 1, 0.90918, 0.75593, 1.03297, 1, 1, 0.76032, 0.9375, 0.98156, 0.93407, 0.77261, 1.11429, 0.89249, 0.9245, 1, 1, 0.89249, 0.9245, 0.92534, 0.86698, 0.9245, 0.84118, 0.92274, 0.84118, 0.92274, 0.84118, 0.92274, 0.8667, 0.86291, 0.75186, 1.02933, 1, 1, 0.75186, 1.02933, 0.67789, 0.77832, 0.67789, 0.77832, 0.67789, 0.77832, 0.67789, 0.77832, 1, 1, 0.79776, 0.97655, 0.79776, 1.23023, 0.88844, 0.9245, 0.88844, 0.9245, 0.88844, 0.9245, 0.88844, 0.9245, 0.88844, 0.9245, 0.88844, 0.9245, 0.94309, 0.98986, 0.7306, 0.89453, 0.7306, 0.76659, 0.79004, 0.76659, 0.79004, 0.76659, 0.79004, 1.09231, 0.54873, 0.8675, 0.9245, 0.76318, 0.84843, 0.84557, 0.86651, 1, 1, 0.79776, 1.20562, 1.18622, 1.18622, 1, 1.1437, 0.67009, 0.96334, 0.93695, 1.35191, 1.40909, 0.95161, 1.48387, 0.8675, 0.90861, 0.6192, 0.7363, 0.64824, 0.82411, 0.56321, 0.85696, 1.23516, 0.8675, 0.81552, 0.7286, 0.84134, 0.73206, 0.76659, 0.86275, 0.84369, 0.90685, 0.77892, 0.85871, 1.02638, 0.89249, 0.75828, 0.84118, 0.85984, 0.77452, 0.76466, 0.79776, 0.7306, 0.90782, 0.77818, 0.903, 0.87291, 0.90685, 0.7306, 0.99058, 1.03667, 0.94635, 1.23516, 0.9849, 0.99058, 0.92393, 0.8916, 0.942, 1.03667, 0.75026, 0.94635, 1.0297, 1.23516, 0.90918, 0.94048, 0.98217, 0.89746, 0.84153, 0.92274, 0.82507, 0.88832, 0.84438, 0.88178, 1.03525, 0.9849, 1.00225, 0.78086, 0.97248, 0.89404, 1.23516, 0.9849, 0.92274, 0.9849, 0.89404, 0.73206, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.89693, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.85865, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.90933, 1, 1, 1, 1, 1, 1, 0.94309, 0.98986, 0.94309, 0.98986, 0.94309, 0.98986, 0.7306, 0.89453, 1, 1, 0.89552, 0.90527, 1, 0.90186, 1.12308, 1.12308, 1.12308, 1.12308, 1.2566, 1.2566, 1.2566, 0.89552, 0.89552, 1.42259, 0.68994, 1.03809, 1, 1, 1.0176, 1.0176, 1.11523, 1.4956, 2.01462, 0.97858, 0.82616, 0.91133, 0.83437, 0.91133, 1, 1, 1, 0.70508, 1, 1.23108, 0.79801, 0.84426, 0.84426, 0.774, 0.90572, 1.81055, 0.90749, 1.81055, 1.28809, 1.55469, 0.94434, 1.07806, 1, 0.97094, 0.7589, 0.85284, 0.90747, 1.19658, 0.69825, 0.97622, 1.33512, 0.90747, 0.90747, 0.85284, 0.90747, 0.90747, 1.44947, 0.85284, 0.8941, 0.8941, 0.70572, 0.8, 0.70572, 0.70572, 0.70572, 0.70572, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.99862, 0.99862, 1, 1, 1, 1, 1, 1.0336, 0.91027, 1, 1, 1, 0.99862, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1.05859, 1.05859, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1];\nexports.CalibriItalicFactors = CalibriItalicFactors;\nconst CalibriItalicMetrics = {\n  lineHeight: 1.2207,\n  lineGap: 0.2207\n};\nexports.CalibriItalicMetrics = CalibriItalicMetrics;\nconst CalibriRegularFactors = [1.3877, 1, 1, 1, 1.17223, 1.1293, 0.89552, 0.91133, 0.80395, 1.02269, 1.15601, 0.91056, 0.91056, 1.2798, 0.85284, 0.89807, 1, 0.90861, 1.39016, 0.91133, 0.91133, 0.91133, 0.91133, 0.91133, 0.91133, 0.91133, 0.91133, 0.91133, 0.91133, 0.96309, 0.96309, 0.85284, 0.85284, 0.85284, 0.83319, 0.88071, 0.8675, 0.81552, 0.73834, 0.85193, 0.73206, 0.7522, 0.81105, 0.86275, 0.90685, 0.6377, 0.77892, 0.75593, 1.02638, 0.89385, 0.85122, 0.77452, 0.86503, 0.75186, 0.68887, 0.79776, 0.88844, 0.85066, 0.94258, 0.77818, 0.7306, 0.76659, 1.10369, 1.39016, 1.10369, 1.06139, 0.89552, 0.8739, 0.86128, 0.94469, 0.8457, 0.94469, 0.89464, 1.09842, 0.84636, 0.94469, 1.03297, 1.07692, 0.90918, 1.03297, 0.95897, 0.94469, 0.9482, 0.94469, 0.94469, 1.04692, 0.78223, 1.20562, 0.94469, 0.90332, 0.98986, 0.86621, 0.90527, 0.79004, 0.94152, 1.77256, 0.94152, 0.85284, 0.97801, 0.89552, 0.91133, 0.89552, 0.91133, 1.91729, 0.89552, 1.17889, 1.13254, 1.08707, 0.92098, 0.85284, 0.68787, 0.71353, 0.84737, 0.90747, 1.0088, 1.0044, 0.87683, 1, 1.09091, 1, 0.92229, 0.739, 1.15642, 0.92098, 0.76288, 0.80504, 0.80972, 0.75859, 0.8675, 0.8675, 0.8675, 0.8675, 0.8675, 0.8675, 0.76318, 0.73834, 0.73206, 0.73206, 0.73206, 0.73206, 0.90685, 0.90685, 0.90685, 0.90685, 0.86477, 0.89385, 0.85122, 0.85122, 0.85122, 0.85122, 0.85122, 0.85284, 0.85311, 0.88844, 0.88844, 0.88844, 0.88844, 0.7306, 0.77452, 0.86331, 0.86128, 0.86128, 0.86128, 0.86128, 0.86128, 0.86128, 0.8693, 0.8457, 0.89464, 0.89464, 0.89464, 0.89464, 0.82601, 0.82601, 0.82601, 0.82601, 0.94469, 0.94469, 0.9482, 0.9482, 0.9482, 0.9482, 0.9482, 0.90747, 0.86651, 0.94469, 0.94469, 0.94469, 0.94469, 0.90527, 0.94469, 0.90527, 0.8675, 0.86128, 0.8675, 0.86128, 0.8675, 0.86128, 0.73834, 0.8457, 0.73834, 0.8457, 0.73834, 0.8457, 0.73834, 0.8457, 0.85193, 0.92454, 0.86477, 0.9921, 0.73206, 0.89464, 0.73206, 0.89464, 0.73206, 0.89464, 0.73206, 0.89464, 0.73206, 0.89464, 0.81105, 0.84636, 0.81105, 0.84636, 0.81105, 0.84636, 1, 1, 0.86275, 0.94469, 0.90872, 0.95786, 0.90685, 0.82601, 0.90685, 0.82601, 0.90685, 0.82601, 0.90685, 1.03297, 0.90685, 0.82601, 0.77741, 1.05611, 0.6377, 1.07692, 1, 1, 0.90918, 0.75593, 1.03297, 1, 1, 0.76032, 0.90452, 0.98156, 1.11842, 0.77261, 1.11429, 0.89385, 0.94469, 1, 1, 0.89385, 0.94469, 0.95877, 0.86901, 0.94469, 0.85122, 0.9482, 0.85122, 0.9482, 0.85122, 0.9482, 0.8667, 0.90016, 0.75186, 1.04692, 1, 1, 0.75186, 1.04692, 0.68887, 0.78223, 0.68887, 0.78223, 0.68887, 0.78223, 0.68887, 0.78223, 1, 1, 0.79776, 0.92188, 0.79776, 1.23023, 0.88844, 0.94469, 0.88844, 0.94469, 0.88844, 0.94469, 0.88844, 0.94469, 0.88844, 0.94469, 0.88844, 0.94469, 0.94258, 0.98986, 0.7306, 0.90527, 0.7306, 0.76659, 0.79004, 0.76659, 0.79004, 0.76659, 0.79004, 1.09231, 0.54873, 0.8675, 0.86128, 0.76318, 0.8693, 0.85311, 0.86651, 1, 1, 0.79776, 1.20562, 1.18622, 1.18622, 1, 1.1437, 0.67742, 0.96334, 0.93695, 1.35191, 1.40909, 0.95161, 1.48387, 0.86686, 0.90861, 0.62267, 0.74359, 0.65649, 0.85498, 0.56963, 0.88254, 1.23516, 0.8675, 0.81552, 0.75443, 0.84503, 0.73206, 0.76659, 0.86275, 0.85122, 0.90685, 0.77892, 0.85746, 1.02638, 0.89385, 0.75657, 0.85122, 0.86275, 0.77452, 0.74171, 0.79776, 0.7306, 0.95165, 0.77818, 0.89772, 0.88831, 0.90685, 0.7306, 0.98142, 1.02191, 0.96576, 1.23516, 0.99018, 0.98142, 0.9236, 0.89258, 0.94035, 1.02191, 0.78848, 0.96576, 0.9561, 1.23516, 0.90918, 0.92578, 0.95424, 0.89746, 0.83969, 0.9482, 0.80113, 0.89442, 0.85208, 0.86155, 0.98022, 0.99018, 1.00452, 0.81209, 0.99247, 0.89181, 1.23516, 0.99018, 0.9482, 0.99018, 0.89181, 0.73206, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.88844, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.89464, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.96766, 1, 1, 1, 1, 1, 1, 0.94258, 0.98986, 0.94258, 0.98986, 0.94258, 0.98986, 0.7306, 0.90527, 1, 1, 0.89552, 0.90527, 1, 0.90186, 1.12308, 1.12308, 1.12308, 1.12308, 1.2566, 1.2566, 1.2566, 0.89552, 0.89552, 1.42259, 0.69043, 1.03809, 1, 1, 1.0176, 1.0176, 1.11523, 1.4956, 2.01462, 0.99331, 0.82616, 0.91133, 0.84286, 0.91133, 1, 1, 1, 0.70508, 1, 1.23108, 0.79801, 0.84426, 0.84426, 0.774, 0.90527, 1.81055, 0.90527, 1.81055, 1.28809, 1.55469, 0.94434, 1.07806, 1, 0.97094, 0.7589, 0.85284, 0.90747, 1.19658, 0.69825, 0.97622, 1.33512, 0.90747, 0.90747, 0.85356, 0.90747, 0.90747, 1.44947, 0.85284, 0.8941, 0.8941, 0.70572, 0.8, 0.70572, 0.70572, 0.70572, 0.70572, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.99862, 0.99862, 1, 1, 1, 1, 1, 1.0336, 0.91027, 1, 1, 1, 0.99862, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1.05859, 1.05859, 1, 1, 1, 1.07185, 0.99413, 0.96334, 1.08065, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1];\nexports.CalibriRegularFactors = CalibriRegularFactors;\nconst CalibriRegularMetrics = {\n  lineHeight: 1.2207,\n  lineGap: 0.2207\n};\nexports.CalibriRegularMetrics = CalibriRegularMetrics;\n\n/***/ }),\n/* 14 */\n/***/ ((__unused_webpack_module, exports) => {\n\n\n\nObject.defineProperty(exports, \"__esModule\", ({\n  value: true\n}));\nexports.HelveticaRegularMetrics = exports.HelveticaRegularFactors = exports.HelveticaItalicMetrics = exports.HelveticaItalicFactors = exports.HelveticaBoldMetrics = exports.HelveticaBoldItalicMetrics = exports.HelveticaBoldItalicFactors = exports.HelveticaBoldFactors = void 0;\nconst HelveticaBoldFactors = [0.76116, 1, 1, 1.0006, 0.99998, 0.99974, 0.99973, 0.99973, 0.99982, 0.99977, 1.00087, 0.99998, 0.99998, 0.99959, 1.00003, 1.0006, 0.99998, 1.0006, 1.0006, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99998, 1, 1.00003, 1.00003, 1.00003, 1.00026, 0.9999, 0.99977, 0.99977, 0.99977, 0.99977, 1.00001, 1.00026, 1.00022, 0.99977, 1.0006, 0.99973, 0.99977, 1.00026, 0.99999, 0.99977, 1.00022, 1.00001, 1.00022, 0.99977, 1.00001, 1.00026, 0.99977, 1.00001, 1.00016, 1.00001, 1.00001, 1.00026, 0.99998, 1.0006, 0.99998, 1.00003, 0.99973, 0.99998, 0.99973, 1.00026, 0.99973, 1.00026, 0.99973, 0.99998, 1.00026, 1.00026, 1.0006, 1.0006, 0.99973, 1.0006, 0.99982, 1.00026, 1.00026, 1.00026, 1.00026, 0.99959, 0.99973, 0.99998, 1.00026, 0.99973, 1.00022, 0.99973, 0.99973, 1, 0.99959, 1.00077, 0.99959, 1.00003, 0.99998, 0.99973, 0.99973, 0.99973, 0.99973, 1.00077, 0.99973, 0.99998, 1.00025, 0.99968, 0.99973, 1.00003, 1.00025, 0.60299, 1.00024, 1.06409, 1, 1, 0.99998, 1, 0.99973, 1.0006, 0.99998, 1, 0.99936, 0.99973, 1.00002, 1.00002, 1.00002, 1.00026, 0.99977, 0.99977, 0.99977, 0.99977, 0.99977, 0.99977, 1, 0.99977, 1.00001, 1.00001, 1.00001, 1.00001, 1.0006, 1.0006, 1.0006, 1.0006, 0.99977, 0.99977, 1.00022, 1.00022, 1.00022, 1.00022, 1.00022, 1.00003, 1.00022, 0.99977, 0.99977, 0.99977, 0.99977, 1.00001, 1.00001, 1.00026, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99982, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 1.0006, 1.0006, 1.0006, 1.0006, 1.00026, 1.00026, 1.00026, 1.00026, 1.00026, 1.00026, 1.00026, 1.06409, 1.00026, 1.00026, 1.00026, 1.00026, 1.00026, 0.99973, 1.00026, 0.99973, 0.99977, 0.99973, 0.99977, 0.99973, 0.99977, 0.99973, 0.99977, 0.99973, 0.99977, 0.99973, 0.99977, 0.99973, 0.99977, 0.99973, 0.99977, 1.03374, 0.99977, 1.00026, 1.00001, 0.99973, 1.00001, 0.99973, 1.00001, 0.99973, 1.00001, 0.99973, 1.00001, 0.99973, 1.00022, 1.00026, 1.00022, 1.00026, 1.00022, 1.00026, 1.00022, 1.00026, 0.99977, 1.00026, 0.99977, 1.00026, 1.0006, 1.0006, 1.0006, 1.0006, 1.0006, 1.0006, 1.0006, 1.0006, 1.0006, 1.0006, 1.00042, 0.99973, 0.99973, 1.0006, 0.99977, 0.99973, 0.99973, 1.00026, 1.0006, 1.00026, 1.0006, 1.00026, 1.03828, 1.00026, 0.99999, 1.00026, 1.0006, 0.99977, 1.00026, 0.99977, 1.00026, 0.99977, 1.00026, 0.9993, 0.9998, 1.00026, 1.00022, 1.00026, 1.00022, 1.00026, 1.00022, 1.00026, 1, 1.00016, 0.99977, 0.99959, 0.99977, 0.99959, 0.99977, 0.99959, 1.00001, 0.99973, 1.00001, 0.99973, 1.00001, 0.99973, 1.00001, 0.99973, 1.00026, 0.99998, 1.00026, 0.8121, 1.00026, 0.99998, 0.99977, 1.00026, 0.99977, 1.00026, 0.99977, 1.00026, 0.99977, 1.00026, 0.99977, 1.00026, 0.99977, 1.00026, 1.00016, 1.00022, 1.00001, 0.99973, 1.00001, 1.00026, 1, 1.00026, 1, 1.00026, 1, 1.0006, 0.99973, 0.99977, 0.99973, 1, 0.99982, 1.00022, 1.00026, 1.00001, 0.99973, 1.00026, 0.99998, 0.99998, 0.99998, 0.99998, 0.99998, 0.99998, 0.99998, 0.99998, 0.99998, 0.99998, 0.99998, 1.00034, 0.99977, 1, 0.99997, 1.00026, 1.00078, 1.00036, 0.99973, 1.00013, 1.0006, 0.99977, 0.99977, 0.99988, 0.85148, 1.00001, 1.00026, 0.99977, 1.00022, 1.0006, 0.99977, 1.00001, 0.99999, 0.99977, 1.00069, 1.00022, 0.99977, 1.00001, 0.99984, 1.00026, 1.00001, 1.00024, 1.00001, 0.9999, 1, 1.0006, 1.00001, 1.00041, 0.99962, 1.00026, 1.0006, 0.99995, 1.00041, 0.99942, 0.99973, 0.99927, 1.00082, 0.99902, 1.00026, 1.00087, 1.0006, 1.00069, 0.99973, 0.99867, 0.99973, 0.9993, 1.00026, 1.00049, 1.00056, 1, 0.99988, 0.99935, 0.99995, 0.99954, 1.00055, 0.99945, 1.00032, 1.0006, 0.99995, 1.00026, 0.99995, 1.00032, 1.00001, 1.00008, 0.99971, 1.00019, 0.9994, 1.00001, 1.0006, 1.00044, 0.99973, 1.00023, 1.00047, 1, 0.99942, 0.99561, 0.99989, 1.00035, 0.99977, 1.00035, 0.99977, 1.00019, 0.99944, 1.00001, 1.00021, 0.99926, 1.00035, 1.00035, 0.99942, 1.00048, 0.99999, 0.99977, 1.00022, 1.00035, 1.00001, 0.99977, 1.00026, 0.99989, 1.00057, 1.00001, 0.99936, 1.00052, 1.00012, 0.99996, 1.00043, 1, 1.00035, 0.9994, 0.99976, 1.00035, 0.99973, 1.00052, 1.00041, 1.00119, 1.00037, 0.99973, 1.00002, 0.99986, 1.00041, 1.00041, 0.99902, 0.9996, 1.00034, 0.99999, 1.00026, 0.99999, 1.00026, 0.99973, 1.00052, 0.99973, 1, 0.99973, 1.00041, 1.00075, 0.9994, 1.0003, 0.99999, 1, 1.00041, 0.99955, 1, 0.99915, 0.99973, 0.99973, 1.00026, 1.00119, 0.99955, 0.99973, 1.0006, 0.99911, 1.0006, 1.00026, 0.99972, 1.00026, 0.99902, 1.00041, 0.99973, 0.99999, 1, 1, 1.00038, 1.0005, 1.00016, 1.00022, 1.00016, 1.00022, 1.00016, 1.00022, 1.00001, 0.99973, 1, 1, 0.99973, 1, 1, 0.99955, 1.0006, 1.0006, 1.0006, 1.0006, 1, 1, 1, 0.99973, 0.99973, 0.99972, 1, 1, 1.00106, 0.99999, 0.99998, 0.99998, 0.99999, 0.99998, 1.66475, 1, 0.99973, 0.99973, 1.00023, 0.99973, 0.99971, 1.00047, 1.00023, 1, 0.99991, 0.99984, 1.00002, 1.00002, 1.00002, 1.00002, 1, 1, 1, 1, 1, 1, 1, 0.99972, 1, 1.20985, 1.39713, 1.00003, 1.00031, 1.00015, 1, 0.99561, 1.00027, 1.00031, 1.00031, 0.99915, 1.00031, 1.00031, 0.99999, 1.00003, 0.99999, 0.99999, 1.41144, 1.6, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.40579, 1.40579, 1.36625, 0.99999, 1, 0.99861, 0.99861, 1, 1.00026, 1.00026, 1.00026, 1.00026, 0.99972, 0.99999, 0.99999, 0.99999, 0.99999, 1.40483, 1, 0.99977, 1.00054, 1, 1, 0.99953, 0.99962, 1.00042, 0.9995, 1, 1, 1, 1, 1, 1, 1, 1, 0.99998, 0.99998, 0.99998, 0.99998, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1];\nexports.HelveticaBoldFactors = HelveticaBoldFactors;\nconst HelveticaBoldMetrics = {\n  lineHeight: 1.2,\n  lineGap: 0.2\n};\nexports.HelveticaBoldMetrics = HelveticaBoldMetrics;\nconst HelveticaBoldItalicFactors = [0.76116, 1, 1, 1.0006, 0.99998, 0.99974, 0.99973, 0.99973, 0.99982, 0.99977, 1.00087, 0.99998, 0.99998, 0.99959, 1.00003, 1.0006, 0.99998, 1.0006, 1.0006, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99998, 1, 1.00003, 1.00003, 1.00003, 1.00026, 0.9999, 0.99977, 0.99977, 0.99977, 0.99977, 1.00001, 1.00026, 1.00022, 0.99977, 1.0006, 0.99973, 0.99977, 1.00026, 0.99999, 0.99977, 1.00022, 1.00001, 1.00022, 0.99977, 1.00001, 1.00026, 0.99977, 1.00001, 1.00016, 1.00001, 1.00001, 1.00026, 0.99998, 1.0006, 0.99998, 1.00003, 0.99973, 0.99998, 0.99973, 1.00026, 0.99973, 1.00026, 0.99973, 0.99998, 1.00026, 1.00026, 1.0006, 1.0006, 0.99973, 1.0006, 0.99982, 1.00026, 1.00026, 1.00026, 1.00026, 0.99959, 0.99973, 0.99998, 1.00026, 0.99973, 1.00022, 0.99973, 0.99973, 1, 0.99959, 1.00077, 0.99959, 1.00003, 0.99998, 0.99973, 0.99973, 0.99973, 0.99973, 1.00077, 0.99973, 0.99998, 1.00025, 0.99968, 0.99973, 1.00003, 1.00025, 0.60299, 1.00024, 1.06409, 1, 1, 0.99998, 1, 0.99973, 1.0006, 0.99998, 1, 0.99936, 0.99973, 1.00002, 1.00002, 1.00002, 1.00026, 0.99977, 0.99977, 0.99977, 0.99977, 0.99977, 0.99977, 1, 0.99977, 1.00001, 1.00001, 1.00001, 1.00001, 1.0006, 1.0006, 1.0006, 1.0006, 0.99977, 0.99977, 1.00022, 1.00022, 1.00022, 1.00022, 1.00022, 1.00003, 1.00022, 0.99977, 0.99977, 0.99977, 0.99977, 1.00001, 1.00001, 1.00026, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99982, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 1.0006, 1.0006, 1.0006, 1.0006, 1.00026, 1.00026, 1.00026, 1.00026, 1.00026, 1.00026, 1.00026, 1.06409, 1.00026, 1.00026, 1.00026, 1.00026, 1.00026, 0.99973, 1.00026, 0.99973, 0.99977, 0.99973, 0.99977, 0.99973, 0.99977, 0.99973, 0.99977, 0.99973, 0.99977, 0.99973, 0.99977, 0.99973, 0.99977, 0.99973, 0.99977, 1.0044, 0.99977, 1.00026, 1.00001, 0.99973, 1.00001, 0.99973, 1.00001, 0.99973, 1.00001, 0.99973, 1.00001, 0.99973, 1.00022, 1.00026, 1.00022, 1.00026, 1.00022, 1.00026, 1.00022, 1.00026, 0.99977, 1.00026, 0.99977, 1.00026, 1.0006, 1.0006, 1.0006, 1.0006, 1.0006, 1.0006, 1.0006, 1.0006, 1.0006, 1.0006, 0.99971, 0.99973, 0.99973, 1.0006, 0.99977, 0.99973, 0.99973, 1.00026, 1.0006, 1.00026, 1.0006, 1.00026, 1.01011, 1.00026, 0.99999, 1.00026, 1.0006, 0.99977, 1.00026, 0.99977, 1.00026, 0.99977, 1.00026, 0.9993, 0.9998, 1.00026, 1.00022, 1.00026, 1.00022, 1.00026, 1.00022, 1.00026, 1, 1.00016, 0.99977, 0.99959, 0.99977, 0.99959, 0.99977, 0.99959, 1.00001, 0.99973, 1.00001, 0.99973, 1.00001, 0.99973, 1.00001, 0.99973, 1.00026, 0.99998, 1.00026, 0.8121, 1.00026, 0.99998, 0.99977, 1.00026, 0.99977, 1.00026, 0.99977, 1.00026, 0.99977, 1.00026, 0.99977, 1.00026, 0.99977, 1.00026, 1.00016, 1.00022, 1.00001, 0.99973, 1.00001, 1.00026, 1, 1.00026, 1, 1.00026, 1, 1.0006, 0.99973, 0.99977, 0.99973, 1, 0.99982, 1.00022, 1.00026, 1.00001, 0.99973, 1.00026, 0.99998, 0.99998, 0.99998, 0.99998, 0.99998, 0.99998, 0.99998, 0.99998, 0.99998, 0.99998, 0.99998, 0.99998, 0.99977, 1, 1, 1.00026, 0.99969, 0.99972, 0.99981, 0.9998, 1.0006, 0.99977, 0.99977, 1.00022, 0.91155, 1.00001, 1.00026, 0.99977, 1.00022, 1.0006, 0.99977, 1.00001, 0.99999, 0.99977, 0.99966, 1.00022, 1.00032, 1.00001, 0.99944, 1.00026, 1.00001, 0.99968, 1.00001, 1.00047, 1, 1.0006, 1.00001, 0.99981, 1.00101, 1.00026, 1.0006, 0.99948, 0.99981, 1.00064, 0.99973, 0.99942, 1.00101, 1.00061, 1.00026, 1.00069, 1.0006, 1.00014, 0.99973, 1.01322, 0.99973, 1.00065, 1.00026, 1.00012, 0.99923, 1, 1.00064, 1.00076, 0.99948, 1.00055, 1.00063, 1.00007, 0.99943, 1.0006, 0.99948, 1.00026, 0.99948, 0.99943, 1.00001, 1.00001, 1.00029, 1.00038, 1.00035, 1.00001, 1.0006, 1.0006, 0.99973, 0.99978, 1.00001, 1.00057, 0.99989, 0.99967, 0.99964, 0.99967, 0.99977, 0.99999, 0.99977, 1.00038, 0.99977, 1.00001, 0.99973, 1.00066, 0.99967, 0.99967, 1.00041, 0.99998, 0.99999, 0.99977, 1.00022, 0.99967, 1.00001, 0.99977, 1.00026, 0.99964, 1.00031, 1.00001, 0.99999, 0.99999, 1, 1.00023, 1, 1, 0.99999, 1.00035, 1.00001, 0.99999, 0.99973, 0.99977, 0.99999, 1.00058, 0.99973, 0.99973, 0.99955, 0.9995, 1.00026, 1.00026, 1.00032, 0.99989, 1.00034, 0.99999, 1.00026, 1.00026, 1.00026, 0.99973, 0.45998, 0.99973, 1.00026, 0.99973, 1.00001, 0.99999, 0.99982, 0.99994, 0.99996, 1, 1.00042, 1.00044, 1.00029, 1.00023, 0.99973, 0.99973, 1.00026, 0.99949, 1.00002, 0.99973, 1.0006, 1.0006, 1.0006, 0.99975, 1.00026, 1.00026, 1.00032, 0.98685, 0.99973, 1.00026, 1, 1, 0.99966, 1.00044, 1.00016, 1.00022, 1.00016, 1.00022, 1.00016, 1.00022, 1.00001, 0.99973, 1, 1, 0.99973, 1, 1, 0.99955, 1.0006, 1.0006, 1.0006, 1.0006, 1, 1, 1, 0.99973, 0.99973, 0.99972, 1, 1, 1.00106, 0.99999, 0.99998, 0.99998, 0.99999, 0.99998, 1.66475, 1, 0.99973, 0.99973, 1, 0.99973, 0.99971, 0.99978, 1, 1, 0.99991, 0.99984, 1.00002, 1.00002, 1.00002, 1.00002, 1.00098, 1, 1, 1, 1.00049, 1, 1, 0.99972, 1, 1.20985, 1.39713, 1.00003, 1.00031, 1.00015, 1, 0.99561, 1.00027, 1.00031, 1.00031, 0.99915, 1.00031, 1.00031, 0.99999, 1.00003, 0.99999, 0.99999, 1.41144, 1.6, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.40579, 1.40579, 1.36625, 0.99999, 1, 0.99861, 0.99861, 1, 1.00026, 1.00026, 1.00026, 1.00026, 0.99972, 0.99999, 0.99999, 0.99999, 0.99999, 1.40483, 1, 0.99977, 1.00054, 1, 1, 0.99953, 0.99962, 1.00042, 0.9995, 1, 1, 1, 1, 1, 1, 1, 1, 0.99998, 0.99998, 0.99998, 0.99998, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1];\nexports.HelveticaBoldItalicFactors = HelveticaBoldItalicFactors;\nconst HelveticaBoldItalicMetrics = {\n  lineHeight: 1.35,\n  lineGap: 0.2\n};\nexports.HelveticaBoldItalicMetrics = HelveticaBoldItalicMetrics;\nconst HelveticaItalicFactors = [0.76116, 1, 1, 1.0006, 1.0006, 1.00006, 0.99973, 0.99973, 0.99982, 1.00001, 1.00043, 0.99998, 0.99998, 0.99959, 1.00003, 1.0006, 0.99998, 1.0006, 1.0006, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 1.0006, 1, 1.00003, 1.00003, 1.00003, 0.99973, 0.99987, 1.00001, 1.00001, 0.99977, 0.99977, 1.00001, 1.00026, 1.00022, 0.99977, 1.0006, 1, 1.00001, 0.99973, 0.99999, 0.99977, 1.00022, 1.00001, 1.00022, 0.99977, 1.00001, 1.00026, 0.99977, 1.00001, 1.00016, 1.00001, 1.00001, 1.00026, 1.0006, 1.0006, 1.0006, 0.99949, 0.99973, 0.99998, 0.99973, 0.99973, 1, 0.99973, 0.99973, 1.0006, 0.99973, 0.99973, 0.99924, 0.99924, 1, 0.99924, 0.99999, 0.99973, 0.99973, 0.99973, 0.99973, 0.99998, 1, 1.0006, 0.99973, 1, 0.99977, 1, 1, 1, 1.00005, 1.0009, 1.00005, 1.00003, 0.99998, 0.99973, 0.99973, 0.99973, 0.99973, 1.0009, 0.99973, 0.99998, 1.00025, 0.99968, 0.99973, 1.00003, 1.00025, 0.60299, 1.00024, 1.06409, 1, 1, 0.99998, 1, 0.9998, 1.0006, 0.99998, 1, 0.99936, 0.99973, 1.00002, 1.00002, 1.00002, 1.00026, 1.00001, 1.00001, 1.00001, 1.00001, 1.00001, 1.00001, 1, 0.99977, 1.00001, 1.00001, 1.00001, 1.00001, 1.0006, 1.0006, 1.0006, 1.0006, 0.99977, 0.99977, 1.00022, 1.00022, 1.00022, 1.00022, 1.00022, 1.00003, 1.00022, 0.99977, 0.99977, 0.99977, 0.99977, 1.00001, 1.00001, 1.00026, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99982, 1, 0.99973, 0.99973, 0.99973, 0.99973, 1.0006, 1.0006, 1.0006, 1.0006, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 1.06409, 1.00026, 0.99973, 0.99973, 0.99973, 0.99973, 1, 0.99973, 1, 1.00001, 0.99973, 1.00001, 0.99973, 1.00001, 0.99973, 0.99977, 1, 0.99977, 1, 0.99977, 1, 0.99977, 1, 0.99977, 1.0288, 0.99977, 0.99973, 1.00001, 0.99973, 1.00001, 0.99973, 1.00001, 0.99973, 1.00001, 0.99973, 1.00001, 0.99973, 1.00022, 0.99973, 1.00022, 0.99973, 1.00022, 0.99973, 1.00022, 0.99973, 0.99977, 0.99973, 0.99977, 0.99973, 1.0006, 1.0006, 1.0006, 1.0006, 1.0006, 1.0006, 1.0006, 0.99924, 1.0006, 1.0006, 0.99946, 1.00034, 1, 0.99924, 1.00001, 1, 1, 0.99973, 0.99924, 0.99973, 0.99924, 0.99973, 1.06311, 0.99973, 1.00024, 0.99973, 0.99924, 0.99977, 0.99973, 0.99977, 0.99973, 0.99977, 0.99973, 1.00041, 0.9998, 0.99973, 1.00022, 0.99973, 1.00022, 0.99973, 1.00022, 0.99973, 1, 1.00016, 0.99977, 0.99998, 0.99977, 0.99998, 0.99977, 0.99998, 1.00001, 1, 1.00001, 1, 1.00001, 1, 1.00001, 1, 1.00026, 1.0006, 1.00026, 0.89547, 1.00026, 1.0006, 0.99977, 0.99973, 0.99977, 0.99973, 0.99977, 0.99973, 0.99977, 0.99973, 0.99977, 0.99973, 0.99977, 0.99973, 1.00016, 0.99977, 1.00001, 1, 1.00001, 1.00026, 1, 1.00026, 1, 1.00026, 1, 0.99924, 0.99973, 1.00001, 0.99973, 1, 0.99982, 1.00022, 1.00026, 1.00001, 1, 1.00026, 1.0006, 0.99998, 0.99998, 0.99998, 0.99998, 0.99998, 0.99998, 0.99998, 0.99998, 0.99998, 0.99998, 0.99998, 1.00001, 1, 1.00054, 0.99977, 1.00084, 1.00007, 0.99973, 1.00013, 0.99924, 1.00001, 1.00001, 0.99945, 0.91221, 1.00001, 1.00026, 0.99977, 1.00022, 1.0006, 1.00001, 1.00001, 0.99999, 0.99977, 0.99933, 1.00022, 1.00054, 1.00001, 1.00065, 1.00026, 1.00001, 1.0001, 1.00001, 1.00052, 1, 1.0006, 1.00001, 0.99945, 0.99897, 0.99968, 0.99924, 1.00036, 0.99945, 0.99949, 1, 1.0006, 0.99897, 0.99918, 0.99968, 0.99911, 0.99924, 1, 0.99962, 1.01487, 1, 1.0005, 0.99973, 1.00012, 1.00043, 1, 0.99995, 0.99994, 1.00036, 0.99947, 1.00019, 1.00063, 1.00025, 0.99924, 1.00036, 0.99973, 1.00036, 1.00025, 1.00001, 1.00001, 1.00027, 1.0001, 1.00068, 1.00001, 1.0006, 1.0006, 1, 1.00008, 0.99957, 0.99972, 0.9994, 0.99954, 0.99975, 1.00051, 1.00001, 1.00019, 1.00001, 1.0001, 0.99986, 1.00001, 1.00001, 1.00038, 0.99954, 0.99954, 0.9994, 1.00066, 0.99999, 0.99977, 1.00022, 1.00054, 1.00001, 0.99977, 1.00026, 0.99975, 1.0001, 1.00001, 0.99993, 0.9995, 0.99955, 1.00016, 0.99978, 0.99974, 1.00019, 1.00022, 0.99955, 1.00053, 0.99973, 1.00089, 1.00005, 0.99967, 1.00048, 0.99973, 1.00002, 1.00034, 0.99973, 0.99973, 0.99964, 1.00006, 1.00066, 0.99947, 0.99973, 0.98894, 0.99973, 1, 0.44898, 1, 0.99946, 1, 1.00039, 1.00082, 0.99991, 0.99991, 0.99985, 1.00022, 1.00023, 1.00061, 1.00006, 0.99966, 0.99973, 0.99973, 0.99973, 1.00019, 1.0008, 1, 0.99924, 0.99924, 0.99924, 0.99983, 1.00044, 0.99973, 0.99964, 0.98332, 1, 0.99973, 1, 1, 0.99962, 0.99895, 1.00016, 0.99977, 1.00016, 0.99977, 1.00016, 0.99977, 1.00001, 1, 1, 1, 0.99973, 1, 1, 0.99955, 0.99924, 0.99924, 0.99924, 0.99924, 0.99998, 0.99998, 0.99998, 0.99973, 0.99973, 0.99972, 1, 1, 1.00267, 0.99999, 0.99998, 0.99998, 1, 0.99998, 1.66475, 1, 0.99973, 0.99973, 1.00023, 0.99973, 1.00423, 0.99925, 0.99999, 1, 0.99991, 0.99984, 1.00002, 1.00002, 1.00002, 1.00002, 1.00049, 1, 1.00245, 1, 1, 1, 1, 0.96329, 1, 1.20985, 1.39713, 1.00003, 0.8254, 1.00015, 1, 1.00035, 1.00027, 1.00031, 1.00031, 1.00003, 1.00031, 1.00031, 0.99999, 1.00003, 0.99999, 0.99999, 1.41144, 1.6, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.40579, 1.40579, 1.36625, 0.99999, 1, 0.99861, 0.99861, 1, 1.00026, 1.00026, 1.00026, 1.00026, 0.95317, 0.99999, 0.99999, 0.99999, 0.99999, 1.40483, 1, 0.99977, 1.00054, 1, 1, 0.99953, 0.99962, 1.00042, 0.9995, 1, 1, 1, 1, 1, 1, 1, 1, 0.99998, 0.99998, 0.99998, 0.99998, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1];\nexports.HelveticaItalicFactors = HelveticaItalicFactors;\nconst HelveticaItalicMetrics = {\n  lineHeight: 1.35,\n  lineGap: 0.2\n};\nexports.HelveticaItalicMetrics = HelveticaItalicMetrics;\nconst HelveticaRegularFactors = [0.76116, 1, 1, 1.0006, 1.0006, 1.00006, 0.99973, 0.99973, 0.99982, 1.00001, 1.00043, 0.99998, 0.99998, 0.99959, 1.00003, 1.0006, 0.99998, 1.0006, 1.0006, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 1.0006, 1, 1.00003, 1.00003, 1.00003, 0.99973, 0.99987, 1.00001, 1.00001, 0.99977, 0.99977, 1.00001, 1.00026, 1.00022, 0.99977, 1.0006, 1, 1.00001, 0.99973, 0.99999, 0.99977, 1.00022, 1.00001, 1.00022, 0.99977, 1.00001, 1.00026, 0.99977, 1.00001, 1.00016, 1.00001, 1.00001, 1.00026, 1.0006, 1.0006, 1.0006, 0.99949, 0.99973, 0.99998, 0.99973, 0.99973, 1, 0.99973, 0.99973, 1.0006, 0.99973, 0.99973, 0.99924, 0.99924, 1, 0.99924, 0.99999, 0.99973, 0.99973, 0.99973, 0.99973, 0.99998, 1, 1.0006, 0.99973, 1, 0.99977, 1, 1, 1, 1.00005, 1.0009, 1.00005, 1.00003, 0.99998, 0.99973, 0.99973, 0.99973, 0.99973, 1.0009, 0.99973, 0.99998, 1.00025, 0.99968, 0.99973, 1.00003, 1.00025, 0.60299, 1.00024, 1.06409, 1, 1, 0.99998, 1, 0.9998, 1.0006, 0.99998, 1, 0.99936, 0.99973, 1.00002, 1.00002, 1.00002, 1.00026, 1.00001, 1.00001, 1.00001, 1.00001, 1.00001, 1.00001, 1, 0.99977, 1.00001, 1.00001, 1.00001, 1.00001, 1.0006, 1.0006, 1.0006, 1.0006, 0.99977, 0.99977, 1.00022, 1.00022, 1.00022, 1.00022, 1.00022, 1.00003, 1.00022, 0.99977, 0.99977, 0.99977, 0.99977, 1.00001, 1.00001, 1.00026, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99982, 1, 0.99973, 0.99973, 0.99973, 0.99973, 1.0006, 1.0006, 1.0006, 1.0006, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 0.99973, 1.06409, 1.00026, 0.99973, 0.99973, 0.99973, 0.99973, 1, 0.99973, 1, 1.00001, 0.99973, 1.00001, 0.99973, 1.00001, 0.99973, 0.99977, 1, 0.99977, 1, 0.99977, 1, 0.99977, 1, 0.99977, 1.04596, 0.99977, 0.99973, 1.00001, 0.99973, 1.00001, 0.99973, 1.00001, 0.99973, 1.00001, 0.99973, 1.00001, 0.99973, 1.00022, 0.99973, 1.00022, 0.99973, 1.00022, 0.99973, 1.00022, 0.99973, 0.99977, 0.99973, 0.99977, 0.99973, 1.0006, 1.0006, 1.0006, 1.0006, 1.0006, 1.0006, 1.0006, 0.99924, 1.0006, 1.0006, 1.00019, 1.00034, 1, 0.99924, 1.00001, 1, 1, 0.99973, 0.99924, 0.99973, 0.99924, 0.99973, 1.02572, 0.99973, 1.00005, 0.99973, 0.99924, 0.99977, 0.99973, 0.99977, 0.99973, 0.99977, 0.99973, 0.99999, 0.9998, 0.99973, 1.00022, 0.99973, 1.00022, 0.99973, 1.00022, 0.99973, 1, 1.00016, 0.99977, 0.99998, 0.99977, 0.99998, 0.99977, 0.99998, 1.00001, 1, 1.00001, 1, 1.00001, 1, 1.00001, 1, 1.00026, 1.0006, 1.00026, 0.84533, 1.00026, 1.0006, 0.99977, 0.99973, 0.99977, 0.99973, 0.99977, 0.99973, 0.99977, 0.99973, 0.99977, 0.99973, 0.99977, 0.99973, 1.00016, 0.99977, 1.00001, 1, 1.00001, 1.00026, 1, 1.00026, 1, 1.00026, 1, 0.99924, 0.99973, 1.00001, 0.99973, 1, 0.99982, 1.00022, 1.00026, 1.00001, 1, 1.00026, 1.0006, 0.99998, 0.99998, 0.99998, 0.99998, 0.99998, 0.99998, 0.99998, 0.99998, 0.99998, 0.99998, 0.99998, 0.99928, 1, 0.99977, 1.00013, 1.00055, 0.99947, 0.99945, 0.99941, 0.99924, 1.00001, 1.00001, 1.0004, 0.91621, 1.00001, 1.00026, 0.99977, 1.00022, 1.0006, 1.00001, 1.00005, 0.99999, 0.99977, 1.00015, 1.00022, 0.99977, 1.00001, 0.99973, 1.00026, 1.00001, 1.00019, 1.00001, 0.99946, 1, 1.0006, 1.00001, 0.99978, 1.00045, 0.99973, 0.99924, 1.00023, 0.99978, 0.99966, 1, 1.00065, 1.00045, 1.00019, 0.99973, 0.99973, 0.99924, 1, 1, 0.96499, 1, 1.00055, 0.99973, 1.00008, 1.00027, 1, 0.9997, 0.99995, 1.00023, 0.99933, 1.00019, 1.00015, 1.00031, 0.99924, 1.00023, 0.99973, 1.00023, 1.00031, 1.00001, 0.99928, 1.00029, 1.00092, 1.00035, 1.00001, 1.0006, 1.0006, 1, 0.99988, 0.99975, 1, 1.00082, 0.99561, 0.9996, 1.00035, 1.00001, 0.99962, 1.00001, 1.00092, 0.99964, 1.00001, 0.99963, 0.99999, 1.00035, 1.00035, 1.00082, 0.99962, 0.99999, 0.99977, 1.00022, 1.00035, 1.00001, 0.99977, 1.00026, 0.9996, 0.99967, 1.00001, 1.00034, 1.00074, 1.00054, 1.00053, 1.00063, 0.99971, 0.99962, 1.00035, 0.99975, 0.99977, 0.99973, 1.00043, 0.99953, 1.0007, 0.99915, 0.99973, 1.00008, 0.99892, 1.00073, 1.00073, 1.00114, 0.99915, 1.00073, 0.99955, 0.99973, 1.00092, 0.99973, 1, 0.99998, 1, 1.0003, 1, 1.00043, 1.00001, 0.99969, 1.0003, 1, 1.00035, 1.00001, 0.9995, 1, 1.00092, 0.99973, 0.99973, 0.99973, 1.0007, 0.9995, 1, 0.99924, 1.0006, 0.99924, 0.99972, 1.00062, 0.99973, 1.00114, 1.00073, 1, 0.99955, 1, 1, 1.00047, 0.99968, 1.00016, 0.99977, 1.00016, 0.99977, 1.00016, 0.99977, 1.00001, 1, 1, 1, 0.99973, 1, 1, 0.99955, 0.99924, 0.99924, 0.99924, 0.99924, 0.99998, 0.99998, 0.99998, 0.99973, 0.99973, 0.99972, 1, 1, 1.00267, 0.99999, 0.99998, 0.99998, 1, 0.99998, 1.66475, 1, 0.99973, 0.99973, 1.00023, 0.99973, 0.99971, 0.99925, 1.00023, 1, 0.99991, 0.99984, 1.00002, 1.00002, 1.00002, 1.00002, 1, 1, 1, 1, 1, 1, 1, 0.96329, 1, 1.20985, 1.39713, 1.00003, 0.8254, 1.00015, 1, 1.00035, 1.00027, 1.00031, 1.00031, 0.99915, 1.00031, 1.00031, 0.99999, 1.00003, 0.99999, 0.99999, 1.41144, 1.6, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.41144, 1.40579, 1.40579, 1.36625, 0.99999, 1, 0.99861, 0.99861, 1, 1.00026, 1.00026, 1.00026, 1.00026, 0.95317, 0.99999, 0.99999, 0.99999, 0.99999, 1.40483, 1, 0.99977, 1.00054, 1, 1, 0.99953, 0.99962, 1.00042, 0.9995, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1];\nexports.HelveticaRegularFactors = HelveticaRegularFactors;\nconst HelveticaRegularMetrics = {\n  lineHeight: 1.2,\n  lineGap: 0.2\n};\nexports.HelveticaRegularMetrics = HelveticaRegularMetrics;\n\n/***/ }),\n/* 15 */\n/***/ ((__unused_webpack_module, exports) => {\n\n\n\nObject.defineProperty(exports, \"__esModule\", ({\n  value: true\n}));\nexports.LiberationSansRegularWidths = exports.LiberationSansRegularMapping = exports.LiberationSansItalicWidths = exports.LiberationSansItalicMapping = exports.LiberationSansBoldWidths = exports.LiberationSansBoldMapping = exports.LiberationSansBoldItalicWidths = exports.LiberationSansBoldItalicMapping = void 0;\nconst LiberationSansBoldWidths = [365, 0, 333, 278, 333, 474, 556, 556, 889, 722, 238, 333, 333, 389, 584, 278, 333, 278, 278, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 333, 333, 584, 584, 584, 611, 975, 722, 722, 722, 722, 667, 611, 778, 722, 278, 556, 722, 611, 833, 722, 778, 667, 778, 722, 667, 611, 722, 667, 944, 667, 667, 611, 333, 278, 333, 584, 556, 333, 556, 611, 556, 611, 556, 333, 611, 611, 278, 278, 556, 278, 889, 611, 611, 611, 611, 389, 556, 333, 611, 556, 778, 556, 556, 500, 389, 280, 389, 584, 333, 556, 556, 556, 556, 280, 556, 333, 737, 370, 556, 584, 737, 552, 400, 549, 333, 333, 333, 576, 556, 278, 333, 333, 365, 556, 834, 834, 834, 611, 722, 722, 722, 722, 722, 722, 1000, 722, 667, 667, 667, 667, 278, 278, 278, 278, 722, 722, 778, 778, 778, 778, 778, 584, 778, 722, 722, 722, 722, 667, 667, 611, 556, 556, 556, 556, 556, 556, 889, 556, 556, 556, 556, 556, 278, 278, 278, 278, 611, 611, 611, 611, 611, 611, 611, 549, 611, 611, 611, 611, 611, 556, 611, 556, 722, 556, 722, 556, 722, 556, 722, 556, 722, 556, 722, 556, 722, 556, 722, 719, 722, 611, 667, 556, 667, 556, 667, 556, 667, 556, 667, 556, 778, 611, 778, 611, 778, 611, 778, 611, 722, 611, 722, 611, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 785, 556, 556, 278, 722, 556, 556, 611, 278, 611, 278, 611, 385, 611, 479, 611, 278, 722, 611, 722, 611, 722, 611, 708, 723, 611, 778, 611, 778, 611, 778, 611, 1000, 944, 722, 389, 722, 389, 722, 389, 667, 556, 667, 556, 667, 556, 667, 556, 611, 333, 611, 479, 611, 333, 722, 611, 722, 611, 722, 611, 722, 611, 722, 611, 722, 611, 944, 778, 667, 556, 667, 611, 500, 611, 500, 611, 500, 278, 556, 722, 556, 1000, 889, 778, 611, 667, 556, 611, 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, 465, 722, 333, 853, 906, 474, 825, 927, 838, 278, 722, 722, 601, 719, 667, 611, 722, 778, 278, 722, 667, 833, 722, 644, 778, 722, 667, 600, 611, 667, 821, 667, 809, 802, 278, 667, 615, 451, 611, 278, 582, 615, 610, 556, 606, 475, 460, 611, 541, 278, 558, 556, 612, 556, 445, 611, 766, 619, 520, 684, 446, 582, 715, 576, 753, 845, 278, 582, 611, 582, 845, 667, 669, 885, 567, 711, 667, 278, 276, 556, 1094, 1062, 875, 610, 722, 622, 719, 722, 719, 722, 567, 712, 667, 904, 626, 719, 719, 610, 702, 833, 722, 778, 719, 667, 722, 611, 622, 854, 667, 730, 703, 1005, 1019, 870, 979, 719, 711, 1031, 719, 556, 618, 615, 417, 635, 556, 709, 497, 615, 615, 500, 635, 740, 604, 611, 604, 611, 556, 490, 556, 875, 556, 615, 581, 833, 844, 729, 854, 615, 552, 854, 583, 556, 556, 611, 417, 552, 556, 278, 281, 278, 969, 906, 611, 500, 615, 556, 604, 778, 611, 487, 447, 944, 778, 944, 778, 944, 778, 667, 556, 333, 333, 556, 1000, 1000, 552, 278, 278, 278, 278, 500, 500, 500, 556, 556, 350, 1000, 1000, 240, 479, 333, 333, 604, 333, 167, 396, 556, 556, 1094, 556, 885, 489, 1115, 1000, 768, 600, 834, 834, 834, 834, 1000, 500, 1000, 500, 1000, 500, 500, 494, 612, 823, 713, 584, 549, 713, 979, 722, 274, 549, 549, 583, 549, 549, 604, 584, 604, 604, 708, 625, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 729, 604, 604, 354, 354, 1000, 990, 990, 990, 990, 494, 604, 604, 604, 604, 354, 1021, 1052, 917, 750, 750, 531, 656, 594, 510, 500, 750, 750, 611, 611, 333, 333, 333, 333, 333, 333, 333, 333, 222, 222, 333, 333, 333, 333, 333, 333, 333, 333];\nexports.LiberationSansBoldWidths = LiberationSansBoldWidths;\nconst LiberationSansBoldMapping = [-1, -1, -1, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 402, 506, 507, 508, 509, 510, 511, 536, 537, 538, 539, 710, 711, 713, 728, 729, 730, 731, 732, 733, 900, 901, 902, 903, 904, 905, 906, 908, 910, 911, 912, 913, 914, 915, 916, 917, 918, 919, 920, 921, 922, 923, 924, 925, 926, 927, 928, 929, 931, 932, 933, 934, 935, 936, 937, 938, 939, 940, 941, 942, 943, 944, 945, 946, 947, 948, 949, 950, 951, 952, 953, 954, 955, 956, 957, 958, 959, 960, 961, 962, 963, 964, 965, 966, 967, 968, 969, 970, 971, 972, 973, 974, 1024, 1025, 1026, 1027, 1028, 1029, 1030, 1031, 1032, 1033, 1034, 1035, 1036, 1037, 1038, 1039, 1040, 1041, 1042, 1043, 1044, 1045, 1046, 1047, 1048, 1049, 1050, 1051, 1052, 1053, 1054, 1055, 1056, 1057, 1058, 1059, 1060, 1061, 1062, 1063, 1064, 1065, 1066, 1067, 1068, 1069, 1070, 1071, 1072, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1088, 1089, 1090, 1091, 1092, 1093, 1094, 1095, 1096, 1097, 1098, 1099, 1100, 1101, 1102, 1103, 1104, 1105, 1106, 1107, 1108, 1109, 1110, 1111, 1112, 1113, 1114, 1115, 1116, 1117, 1118, 1119, 1138, 1139, 1168, 1169, 7808, 7809, 7810, 7811, 7812, 7813, 7922, 7923, 8208, 8209, 8211, 8212, 8213, 8215, 8216, 8217, 8218, 8219, 8220, 8221, 8222, 8224, 8225, 8226, 8230, 8240, 8242, 8243, 8249, 8250, 8252, 8254, 8260, 8319, 8355, 8356, 8359, 8364, 8453, 8467, 8470, 8482, 8486, 8494, 8539, 8540, 8541, 8542, 8592, 8593, 8594, 8595, 8596, 8597, 8616, 8706, 8710, 8719, 8721, 8722, 8730, 8734, 8735, 8745, 8747, 8776, 8800, 8801, 8804, 8805, 8962, 8976, 8992, 8993, 9472, 9474, 9484, 9488, 9492, 9496, 9500, 9508, 9516, 9524, 9532, 9552, 9553, 9554, 9555, 9556, 9557, 9558, 9559, 9560, 9561, 9562, 9563, 9564, 9565, 9566, 9567, 9568, 9569, 9570, 9571, 9572, 9573, 9574, 9575, 9576, 9577, 9578, 9579, 9580, 9600, 9604, 9608, 9612, 9616, 9617, 9618, 9619, 9632, 9633, 9642, 9643, 9644, 9650, 9658, 9660, 9668, 9674, 9675, 9679, 9688, 9689, 9702, 9786, 9787, 9788, 9792, 9794, 9824, 9827, 9829, 9830, 9834, 9835, 9836, 61441, 61442, 61445, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1];\nexports.LiberationSansBoldMapping = LiberationSansBoldMapping;\nconst LiberationSansBoldItalicWidths = [365, 0, 333, 278, 333, 474, 556, 556, 889, 722, 238, 333, 333, 389, 584, 278, 333, 278, 278, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 333, 333, 584, 584, 584, 611, 975, 722, 722, 722, 722, 667, 611, 778, 722, 278, 556, 722, 611, 833, 722, 778, 667, 778, 722, 667, 611, 722, 667, 944, 667, 667, 611, 333, 278, 333, 584, 556, 333, 556, 611, 556, 611, 556, 333, 611, 611, 278, 278, 556, 278, 889, 611, 611, 611, 611, 389, 556, 333, 611, 556, 778, 556, 556, 500, 389, 280, 389, 584, 333, 556, 556, 556, 556, 280, 556, 333, 737, 370, 556, 584, 737, 552, 400, 549, 333, 333, 333, 576, 556, 278, 333, 333, 365, 556, 834, 834, 834, 611, 722, 722, 722, 722, 722, 722, 1000, 722, 667, 667, 667, 667, 278, 278, 278, 278, 722, 722, 778, 778, 778, 778, 778, 584, 778, 722, 722, 722, 722, 667, 667, 611, 556, 556, 556, 556, 556, 556, 889, 556, 556, 556, 556, 556, 278, 278, 278, 278, 611, 611, 611, 611, 611, 611, 611, 549, 611, 611, 611, 611, 611, 556, 611, 556, 722, 556, 722, 556, 722, 556, 722, 556, 722, 556, 722, 556, 722, 556, 722, 740, 722, 611, 667, 556, 667, 556, 667, 556, 667, 556, 667, 556, 778, 611, 778, 611, 778, 611, 778, 611, 722, 611, 722, 611, 278, 278, 278, 278, 278, 278, 278, 278, 278, 278, 782, 556, 556, 278, 722, 556, 556, 611, 278, 611, 278, 611, 396, 611, 479, 611, 278, 722, 611, 722, 611, 722, 611, 708, 723, 611, 778, 611, 778, 611, 778, 611, 1000, 944, 722, 389, 722, 389, 722, 389, 667, 556, 667, 556, 667, 556, 667, 556, 611, 333, 611, 479, 611, 333, 722, 611, 722, 611, 722, 611, 722, 611, 722, 611, 722, 611, 944, 778, 667, 556, 667, 611, 500, 611, 500, 611, 500, 278, 556, 722, 556, 1000, 889, 778, 611, 667, 556, 611, 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, 722, 333, 854, 906, 473, 844, 930, 847, 278, 722, 722, 610, 671, 667, 611, 722, 778, 278, 722, 667, 833, 722, 657, 778, 718, 667, 590, 611, 667, 822, 667, 829, 781, 278, 667, 620, 479, 611, 278, 591, 620, 621, 556, 610, 479, 492, 611, 558, 278, 566, 556, 603, 556, 450, 611, 712, 605, 532, 664, 409, 591, 704, 578, 773, 834, 278, 591, 611, 591, 834, 667, 667, 886, 614, 719, 667, 278, 278, 556, 1094, 1042, 854, 622, 719, 677, 719, 722, 708, 722, 614, 722, 667, 927, 643, 719, 719, 615, 687, 833, 722, 778, 719, 667, 722, 611, 677, 781, 667, 729, 708, 979, 989, 854, 1000, 708, 719, 1042, 729, 556, 619, 604, 534, 618, 556, 736, 510, 611, 611, 507, 622, 740, 604, 611, 611, 611, 556, 889, 556, 885, 556, 646, 583, 889, 935, 707, 854, 594, 552, 865, 589, 556, 556, 611, 469, 563, 556, 278, 278, 278, 969, 906, 611, 507, 619, 556, 611, 778, 611, 575, 467, 944, 778, 944, 778, 944, 778, 667, 556, 333, 333, 556, 1000, 1000, 552, 278, 278, 278, 278, 500, 500, 500, 556, 556, 350, 1000, 1000, 240, 479, 333, 333, 604, 333, 167, 396, 556, 556, 1104, 556, 885, 516, 1146, 1000, 768, 600, 834, 834, 834, 834, 999, 500, 1000, 500, 1000, 500, 500, 494, 612, 823, 713, 584, 549, 713, 979, 722, 274, 549, 549, 583, 549, 549, 604, 584, 604, 604, 708, 625, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 729, 604, 604, 354, 354, 1000, 990, 990, 990, 990, 494, 604, 604, 604, 604, 354, 1021, 1052, 917, 750, 750, 531, 656, 594, 510, 500, 750, 750, 611, 611, 333, 333, 333, 333, 333, 333, 333, 333, 222, 222, 333, 333, 333, 333, 333, 333, 333, 333];\nexports.LiberationSansBoldItalicWidths = LiberationSansBoldItalicWidths;\nconst LiberationSansBoldItalicMapping = [-1, -1, -1, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 402, 506, 507, 508, 509, 510, 511, 536, 537, 538, 539, 710, 711, 713, 728, 729, 730, 731, 732, 733, 900, 901, 902, 903, 904, 905, 906, 908, 910, 911, 912, 913, 914, 915, 916, 917, 918, 919, 920, 921, 922, 923, 924, 925, 926, 927, 928, 929, 931, 932, 933, 934, 935, 936, 937, 938, 939, 940, 941, 942, 943, 944, 945, 946, 947, 948, 949, 950, 951, 952, 953, 954, 955, 956, 957, 958, 959, 960, 961, 962, 963, 964, 965, 966, 967, 968, 969, 970, 971, 972, 973, 974, 1024, 1025, 1026, 1027, 1028, 1029, 1030, 1031, 1032, 1033, 1034, 1035, 1036, 1037, 1038, 1039, 1040, 1041, 1042, 1043, 1044, 1045, 1046, 1047, 1048, 1049, 1050, 1051, 1052, 1053, 1054, 1055, 1056, 1057, 1058, 1059, 1060, 1061, 1062, 1063, 1064, 1065, 1066, 1067, 1068, 1069, 1070, 1071, 1072, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1088, 1089, 1090, 1091, 1092, 1093, 1094, 1095, 1096, 1097, 1098, 1099, 1100, 1101, 1102, 1103, 1104, 1105, 1106, 1107, 1108, 1109, 1110, 1111, 1112, 1113, 1114, 1115, 1116, 1117, 1118, 1119, 1138, 1139, 1168, 1169, 7808, 7809, 7810, 7811, 7812, 7813, 7922, 7923, 8208, 8209, 8211, 8212, 8213, 8215, 8216, 8217, 8218, 8219, 8220, 8221, 8222, 8224, 8225, 8226, 8230, 8240, 8242, 8243, 8249, 8250, 8252, 8254, 8260, 8319, 8355, 8356, 8359, 8364, 8453, 8467, 8470, 8482, 8486, 8494, 8539, 8540, 8541, 8542, 8592, 8593, 8594, 8595, 8596, 8597, 8616, 8706, 8710, 8719, 8721, 8722, 8730, 8734, 8735, 8745, 8747, 8776, 8800, 8801, 8804, 8805, 8962, 8976, 8992, 8993, 9472, 9474, 9484, 9488, 9492, 9496, 9500, 9508, 9516, 9524, 9532, 9552, 9553, 9554, 9555, 9556, 9557, 9558, 9559, 9560, 9561, 9562, 9563, 9564, 9565, 9566, 9567, 9568, 9569, 9570, 9571, 9572, 9573, 9574, 9575, 9576, 9577, 9578, 9579, 9580, 9600, 9604, 9608, 9612, 9616, 9617, 9618, 9619, 9632, 9633, 9642, 9643, 9644, 9650, 9658, 9660, 9668, 9674, 9675, 9679, 9688, 9689, 9702, 9786, 9787, 9788, 9792, 9794, 9824, 9827, 9829, 9830, 9834, 9835, 9836, 61441, 61442, 61445, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1];\nexports.LiberationSansBoldItalicMapping = LiberationSansBoldItalicMapping;\nconst LiberationSansItalicWidths = [365, 0, 333, 278, 278, 355, 556, 556, 889, 667, 191, 333, 333, 389, 584, 278, 333, 278, 278, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 278, 278, 584, 584, 584, 556, 1015, 667, 667, 722, 722, 667, 611, 778, 722, 278, 500, 667, 556, 833, 722, 778, 667, 778, 722, 667, 611, 722, 667, 944, 667, 667, 611, 278, 278, 278, 469, 556, 333, 556, 556, 500, 556, 556, 278, 556, 556, 222, 222, 500, 222, 833, 556, 556, 556, 556, 333, 500, 278, 556, 500, 722, 500, 500, 500, 334, 260, 334, 584, 333, 556, 556, 556, 556, 260, 556, 333, 737, 370, 556, 584, 737, 552, 400, 549, 333, 333, 333, 576, 537, 278, 333, 333, 365, 556, 834, 834, 834, 611, 667, 667, 667, 667, 667, 667, 1000, 722, 667, 667, 667, 667, 278, 278, 278, 278, 722, 722, 778, 778, 778, 778, 778, 584, 778, 722, 722, 722, 722, 667, 667, 611, 556, 556, 556, 556, 556, 556, 889, 500, 556, 556, 556, 556, 278, 278, 278, 278, 556, 556, 556, 556, 556, 556, 556, 549, 611, 556, 556, 556, 556, 500, 556, 500, 667, 556, 667, 556, 667, 556, 722, 500, 722, 500, 722, 500, 722, 500, 722, 625, 722, 556, 667, 556, 667, 556, 667, 556, 667, 556, 667, 556, 778, 556, 778, 556, 778, 556, 778, 556, 722, 556, 722, 556, 278, 278, 278, 278, 278, 278, 278, 222, 278, 278, 733, 444, 500, 222, 667, 500, 500, 556, 222, 556, 222, 556, 281, 556, 400, 556, 222, 722, 556, 722, 556, 722, 556, 615, 723, 556, 778, 556, 778, 556, 778, 556, 1000, 944, 722, 333, 722, 333, 722, 333, 667, 500, 667, 500, 667, 500, 667, 500, 611, 278, 611, 354, 611, 278, 722, 556, 722, 556, 722, 556, 722, 556, 722, 556, 722, 556, 944, 722, 667, 500, 667, 611, 500, 611, 500, 611, 500, 222, 556, 667, 556, 1000, 889, 778, 611, 667, 500, 611, 278, 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, 667, 278, 789, 846, 389, 794, 865, 775, 222, 667, 667, 570, 671, 667, 611, 722, 778, 278, 667, 667, 833, 722, 648, 778, 725, 667, 600, 611, 667, 837, 667, 831, 761, 278, 667, 570, 439, 555, 222, 550, 570, 571, 500, 556, 439, 463, 555, 542, 222, 500, 492, 548, 500, 447, 556, 670, 573, 486, 603, 374, 550, 652, 546, 728, 779, 222, 550, 556, 550, 779, 667, 667, 843, 544, 708, 667, 278, 278, 500, 1066, 982, 844, 589, 715, 639, 724, 667, 651, 667, 544, 704, 667, 917, 614, 715, 715, 589, 686, 833, 722, 778, 725, 667, 722, 611, 639, 795, 667, 727, 673, 920, 923, 805, 886, 651, 694, 1022, 682, 556, 562, 522, 493, 553, 556, 688, 465, 556, 556, 472, 564, 686, 550, 556, 556, 556, 500, 833, 500, 835, 500, 572, 518, 830, 851, 621, 736, 526, 492, 752, 534, 556, 556, 556, 378, 496, 500, 222, 222, 222, 910, 828, 556, 472, 565, 500, 556, 778, 556, 492, 339, 944, 722, 944, 722, 944, 722, 667, 500, 333, 333, 556, 1000, 1000, 552, 222, 222, 222, 222, 333, 333, 333, 556, 556, 350, 1000, 1000, 188, 354, 333, 333, 500, 333, 167, 365, 556, 556, 1094, 556, 885, 323, 1083, 1000, 768, 600, 834, 834, 834, 834, 1000, 500, 998, 500, 1000, 500, 500, 494, 612, 823, 713, 584, 549, 713, 979, 719, 274, 549, 549, 584, 549, 549, 604, 584, 604, 604, 708, 625, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 729, 604, 604, 354, 354, 1000, 990, 990, 990, 990, 494, 604, 604, 604, 604, 354, 1021, 1052, 917, 750, 750, 531, 656, 594, 510, 500, 750, 750, 500, 500, 333, 333, 333, 333, 333, 333, 333, 333, 222, 222, 294, 294, 324, 324, 316, 328, 398, 285];\nexports.LiberationSansItalicWidths = LiberationSansItalicWidths;\nconst LiberationSansItalicMapping = [-1, -1, -1, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 402, 506, 507, 508, 509, 510, 511, 536, 537, 538, 539, 710, 711, 713, 728, 729, 730, 731, 732, 733, 900, 901, 902, 903, 904, 905, 906, 908, 910, 911, 912, 913, 914, 915, 916, 917, 918, 919, 920, 921, 922, 923, 924, 925, 926, 927, 928, 929, 931, 932, 933, 934, 935, 936, 937, 938, 939, 940, 941, 942, 943, 944, 945, 946, 947, 948, 949, 950, 951, 952, 953, 954, 955, 956, 957, 958, 959, 960, 961, 962, 963, 964, 965, 966, 967, 968, 969, 970, 971, 972, 973, 974, 1024, 1025, 1026, 1027, 1028, 1029, 1030, 1031, 1032, 1033, 1034, 1035, 1036, 1037, 1038, 1039, 1040, 1041, 1042, 1043, 1044, 1045, 1046, 1047, 1048, 1049, 1050, 1051, 1052, 1053, 1054, 1055, 1056, 1057, 1058, 1059, 1060, 1061, 1062, 1063, 1064, 1065, 1066, 1067, 1068, 1069, 1070, 1071, 1072, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1088, 1089, 1090, 1091, 1092, 1093, 1094, 1095, 1096, 1097, 1098, 1099, 1100, 1101, 1102, 1103, 1104, 1105, 1106, 1107, 1108, 1109, 1110, 1111, 1112, 1113, 1114, 1115, 1116, 1117, 1118, 1119, 1138, 1139, 1168, 1169, 7808, 7809, 7810, 7811, 7812, 7813, 7922, 7923, 8208, 8209, 8211, 8212, 8213, 8215, 8216, 8217, 8218, 8219, 8220, 8221, 8222, 8224, 8225, 8226, 8230, 8240, 8242, 8243, 8249, 8250, 8252, 8254, 8260, 8319, 8355, 8356, 8359, 8364, 8453, 8467, 8470, 8482, 8486, 8494, 8539, 8540, 8541, 8542, 8592, 8593, 8594, 8595, 8596, 8597, 8616, 8706, 8710, 8719, 8721, 8722, 8730, 8734, 8735, 8745, 8747, 8776, 8800, 8801, 8804, 8805, 8962, 8976, 8992, 8993, 9472, 9474, 9484, 9488, 9492, 9496, 9500, 9508, 9516, 9524, 9532, 9552, 9553, 9554, 9555, 9556, 9557, 9558, 9559, 9560, 9561, 9562, 9563, 9564, 9565, 9566, 9567, 9568, 9569, 9570, 9571, 9572, 9573, 9574, 9575, 9576, 9577, 9578, 9579, 9580, 9600, 9604, 9608, 9612, 9616, 9617, 9618, 9619, 9632, 9633, 9642, 9643, 9644, 9650, 9658, 9660, 9668, 9674, 9675, 9679, 9688, 9689, 9702, 9786, 9787, 9788, 9792, 9794, 9824, 9827, 9829, 9830, 9834, 9835, 9836, 61441, 61442, 61445, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1];\nexports.LiberationSansItalicMapping = LiberationSansItalicMapping;\nconst LiberationSansRegularWidths = [365, 0, 333, 278, 278, 355, 556, 556, 889, 667, 191, 333, 333, 389, 584, 278, 333, 278, 278, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 278, 278, 584, 584, 584, 556, 1015, 667, 667, 722, 722, 667, 611, 778, 722, 278, 500, 667, 556, 833, 722, 778, 667, 778, 722, 667, 611, 722, 667, 944, 667, 667, 611, 278, 278, 278, 469, 556, 333, 556, 556, 500, 556, 556, 278, 556, 556, 222, 222, 500, 222, 833, 556, 556, 556, 556, 333, 500, 278, 556, 500, 722, 500, 500, 500, 334, 260, 334, 584, 333, 556, 556, 556, 556, 260, 556, 333, 737, 370, 556, 584, 737, 552, 400, 549, 333, 333, 333, 576, 537, 278, 333, 333, 365, 556, 834, 834, 834, 611, 667, 667, 667, 667, 667, 667, 1000, 722, 667, 667, 667, 667, 278, 278, 278, 278, 722, 722, 778, 778, 778, 778, 778, 584, 778, 722, 722, 722, 722, 667, 667, 611, 556, 556, 556, 556, 556, 556, 889, 500, 556, 556, 556, 556, 278, 278, 278, 278, 556, 556, 556, 556, 556, 556, 556, 549, 611, 556, 556, 556, 556, 500, 556, 500, 667, 556, 667, 556, 667, 556, 722, 500, 722, 500, 722, 500, 722, 500, 722, 615, 722, 556, 667, 556, 667, 556, 667, 556, 667, 556, 667, 556, 778, 556, 778, 556, 778, 556, 778, 556, 722, 556, 722, 556, 278, 278, 278, 278, 278, 278, 278, 222, 278, 278, 735, 444, 500, 222, 667, 500, 500, 556, 222, 556, 222, 556, 292, 556, 334, 556, 222, 722, 556, 722, 556, 722, 556, 604, 723, 556, 778, 556, 778, 556, 778, 556, 1000, 944, 722, 333, 722, 333, 722, 333, 667, 500, 667, 500, 667, 500, 667, 500, 611, 278, 611, 375, 611, 278, 722, 556, 722, 556, 722, 556, 722, 556, 722, 556, 722, 556, 944, 722, 667, 500, 667, 611, 500, 611, 500, 611, 500, 222, 556, 667, 556, 1000, 889, 778, 611, 667, 500, 611, 278, 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, 333, 667, 278, 784, 838, 384, 774, 855, 752, 222, 667, 667, 551, 668, 667, 611, 722, 778, 278, 667, 668, 833, 722, 650, 778, 722, 667, 618, 611, 667, 798, 667, 835, 748, 278, 667, 578, 446, 556, 222, 547, 578, 575, 500, 557, 446, 441, 556, 556, 222, 500, 500, 576, 500, 448, 556, 690, 569, 482, 617, 395, 547, 648, 525, 713, 781, 222, 547, 556, 547, 781, 667, 667, 865, 542, 719, 667, 278, 278, 500, 1057, 1010, 854, 583, 722, 635, 719, 667, 656, 667, 542, 677, 667, 923, 604, 719, 719, 583, 656, 833, 722, 778, 719, 667, 722, 611, 635, 760, 667, 740, 667, 917, 938, 792, 885, 656, 719, 1010, 722, 556, 573, 531, 365, 583, 556, 669, 458, 559, 559, 438, 583, 688, 552, 556, 542, 556, 500, 458, 500, 823, 500, 573, 521, 802, 823, 625, 719, 521, 510, 750, 542, 556, 556, 556, 365, 510, 500, 222, 278, 222, 906, 812, 556, 438, 559, 500, 552, 778, 556, 489, 411, 944, 722, 944, 722, 944, 722, 667, 500, 333, 333, 556, 1000, 1000, 552, 222, 222, 222, 222, 333, 333, 333, 556, 556, 350, 1000, 1000, 188, 354, 333, 333, 500, 333, 167, 365, 556, 556, 1094, 556, 885, 323, 1073, 1000, 768, 600, 834, 834, 834, 834, 1000, 500, 1000, 500, 1000, 500, 500, 494, 612, 823, 713, 584, 549, 713, 979, 719, 274, 549, 549, 583, 549, 549, 604, 584, 604, 604, 708, 625, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 708, 729, 604, 604, 354, 354, 1000, 990, 990, 990, 990, 494, 604, 604, 604, 604, 354, 1021, 1052, 917, 750, 750, 531, 656, 594, 510, 500, 750, 750, 500, 500, 333, 333, 333, 333, 333, 333, 333, 333, 222, 222, 294, 294, 324, 324, 316, 328, 398, 285];\nexports.LiberationSansRegularWidths = LiberationSansRegularWidths;\nconst LiberationSansRegularMapping = [-1, -1, -1, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 402, 506, 507, 508, 509, 510, 511, 536, 537, 538, 539, 710, 711, 713, 728, 729, 730, 731, 732, 733, 900, 901, 902, 903, 904, 905, 906, 908, 910, 911, 912, 913, 914, 915, 916, 917, 918, 919, 920, 921, 922, 923, 924, 925, 926, 927, 928, 929, 931, 932, 933, 934, 935, 936, 937, 938, 939, 940, 941, 942, 943, 944, 945, 946, 947, 948, 949, 950, 951, 952, 953, 954, 955, 956, 957, 958, 959, 960, 961, 962, 963, 964, 965, 966, 967, 968, 969, 970, 971, 972, 973, 974, 1024, 1025, 1026, 1027, 1028, 1029, 1030, 1031, 1032, 1033, 1034, 1035, 1036, 1037, 1038, 1039, 1040, 1041, 1042, 1043, 1044, 1045, 1046, 1047, 1048, 1049, 1050, 1051, 1052, 1053, 1054, 1055, 1056, 1057, 1058, 1059, 1060, 1061, 1062, 1063, 1064, 1065, 1066, 1067, 1068, 1069, 1070, 1071, 1072, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1088, 1089, 1090, 1091, 1092, 1093, 1094, 1095, 1096, 1097, 1098, 1099, 1100, 1101, 1102, 1103, 1104, 1105, 1106, 1107, 1108, 1109, 1110, 1111, 1112, 1113, 1114, 1115, 1116, 1117, 1118, 1119, 1138, 1139, 1168, 1169, 7808, 7809, 7810, 7811, 7812, 7813, 7922, 7923, 8208, 8209, 8211, 8212, 8213, 8215, 8216, 8217, 8218, 8219, 8220, 8221, 8222, 8224, 8225, 8226, 8230, 8240, 8242, 8243, 8249, 8250, 8252, 8254, 8260, 8319, 8355, 8356, 8359, 8364, 8453, 8467, 8470, 8482, 8486, 8494, 8539, 8540, 8541, 8542, 8592, 8593, 8594, 8595, 8596, 8597, 8616, 8706, 8710, 8719, 8721, 8722, 8730, 8734, 8735, 8745, 8747, 8776, 8800, 8801, 8804, 8805, 8962, 8976, 8992, 8993, 9472, 9474, 9484, 9488, 9492, 9496, 9500, 9508, 9516, 9524, 9532, 9552, 9553, 9554, 9555, 9556, 9557, 9558, 9559, 9560, 9561, 9562, 9563, 9564, 9565, 9566, 9567, 9568, 9569, 9570, 9571, 9572, 9573, 9574, 9575, 9576, 9577, 9578, 9579, 9580, 9600, 9604, 9608, 9612, 9616, 9617, 9618, 9619, 9632, 9633, 9642, 9643, 9644, 9650, 9658, 9660, 9668, 9674, 9675, 9679, 9688, 9689, 9702, 9786, 9787, 9788, 9792, 9794, 9824, 9827, 9829, 9830, 9834, 9835, 9836, 61441, 61442, 61445, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1];\nexports.LiberationSansRegularMapping = LiberationSansRegularMapping;\n\n/***/ }),\n/* 16 */\n/***/ ((__unused_webpack_module, exports) => {\n\n\n\nObject.defineProperty(exports, \"__esModule\", ({\n  value: true\n}));\nexports.MyriadProRegularMetrics = exports.MyriadProRegularFactors = exports.MyriadProItalicMetrics = exports.MyriadProItalicFactors = exports.MyriadProBoldMetrics = exports.MyriadProBoldItalicMetrics = exports.MyriadProBoldItalicFactors = exports.MyriadProBoldFactors = void 0;\nconst MyriadProBoldFactors = [1.36898, 1, 1, 0.72706, 0.80479, 0.83734, 0.98894, 0.99793, 0.9897, 0.93884, 0.86209, 0.94292, 0.94292, 1.16661, 1.02058, 0.93582, 0.96694, 0.93582, 1.19137, 0.99793, 0.99793, 0.99793, 0.99793, 0.99793, 0.99793, 0.99793, 0.99793, 0.99793, 0.99793, 0.78076, 0.78076, 1.02058, 1.02058, 1.02058, 0.72851, 0.78966, 0.90838, 0.83637, 0.82391, 0.96376, 0.80061, 0.86275, 0.8768, 0.95407, 1.0258, 0.73901, 0.85022, 0.83655, 1.0156, 0.95546, 0.92179, 0.87107, 0.92179, 0.82114, 0.8096, 0.89713, 0.94438, 0.95353, 0.94083, 0.91905, 0.90406, 0.9446, 0.94292, 1.18777, 0.94292, 1.02058, 0.89903, 0.90088, 0.94938, 0.97898, 0.81093, 0.97571, 0.94938, 1.024, 0.9577, 0.95933, 0.98621, 1.0474, 0.97455, 0.98981, 0.9672, 0.95933, 0.9446, 0.97898, 0.97407, 0.97646, 0.78036, 1.10208, 0.95442, 0.95298, 0.97579, 0.9332, 0.94039, 0.938, 0.80687, 1.01149, 0.80687, 1.02058, 0.80479, 0.99793, 0.99793, 0.99793, 0.99793, 1.01149, 1.00872, 0.90088, 0.91882, 1.0213, 0.8361, 1.02058, 0.62295, 0.54324, 0.89022, 1.08595, 1, 1, 0.90088, 1, 0.97455, 0.93582, 0.90088, 1, 1.05686, 0.8361, 0.99642, 0.99642, 0.99642, 0.72851, 0.90838, 0.90838, 0.90838, 0.90838, 0.90838, 0.90838, 0.868, 0.82391, 0.80061, 0.80061, 0.80061, 0.80061, 1.0258, 1.0258, 1.0258, 1.0258, 0.97484, 0.95546, 0.92179, 0.92179, 0.92179, 0.92179, 0.92179, 1.02058, 0.92179, 0.94438, 0.94438, 0.94438, 0.94438, 0.90406, 0.86958, 0.98225, 0.94938, 0.94938, 0.94938, 0.94938, 0.94938, 0.94938, 0.9031, 0.81093, 0.94938, 0.94938, 0.94938, 0.94938, 0.98621, 0.98621, 0.98621, 0.98621, 0.93969, 0.95933, 0.9446, 0.9446, 0.9446, 0.9446, 0.9446, 1.08595, 0.9446, 0.95442, 0.95442, 0.95442, 0.95442, 0.94039, 0.97898, 0.94039, 0.90838, 0.94938, 0.90838, 0.94938, 0.90838, 0.94938, 0.82391, 0.81093, 0.82391, 0.81093, 0.82391, 0.81093, 0.82391, 0.81093, 0.96376, 0.84313, 0.97484, 0.97571, 0.80061, 0.94938, 0.80061, 0.94938, 0.80061, 0.94938, 0.80061, 0.94938, 0.80061, 0.94938, 0.8768, 0.9577, 0.8768, 0.9577, 0.8768, 0.9577, 1, 1, 0.95407, 0.95933, 0.97069, 0.95933, 1.0258, 0.98621, 1.0258, 0.98621, 1.0258, 0.98621, 1.0258, 0.98621, 1.0258, 0.98621, 0.887, 1.01591, 0.73901, 1.0474, 1, 1, 0.97455, 0.83655, 0.98981, 1, 1, 0.83655, 0.73977, 0.83655, 0.73903, 0.84638, 1.033, 0.95546, 0.95933, 1, 1, 0.95546, 0.95933, 0.8271, 0.95417, 0.95933, 0.92179, 0.9446, 0.92179, 0.9446, 0.92179, 0.9446, 0.936, 0.91964, 0.82114, 0.97646, 1, 1, 0.82114, 0.97646, 0.8096, 0.78036, 0.8096, 0.78036, 1, 1, 0.8096, 0.78036, 1, 1, 0.89713, 0.77452, 0.89713, 1.10208, 0.94438, 0.95442, 0.94438, 0.95442, 0.94438, 0.95442, 0.94438, 0.95442, 0.94438, 0.95442, 0.94438, 0.95442, 0.94083, 0.97579, 0.90406, 0.94039, 0.90406, 0.9446, 0.938, 0.9446, 0.938, 0.9446, 0.938, 1, 0.99793, 0.90838, 0.94938, 0.868, 0.9031, 0.92179, 0.9446, 1, 1, 0.89713, 1.10208, 0.90088, 0.90088, 0.90088, 0.90088, 0.90088, 0.90088, 0.90088, 0.90088, 0.90088, 0.90989, 0.9358, 0.91945, 0.83181, 0.75261, 0.87992, 0.82976, 0.96034, 0.83689, 0.97268, 1.0078, 0.90838, 0.83637, 0.8019, 0.90157, 0.80061, 0.9446, 0.95407, 0.92436, 1.0258, 0.85022, 0.97153, 1.0156, 0.95546, 0.89192, 0.92179, 0.92361, 0.87107, 0.96318, 0.89713, 0.93704, 0.95638, 0.91905, 0.91709, 0.92796, 1.0258, 0.93704, 0.94836, 1.0373, 0.95933, 1.0078, 0.95871, 0.94836, 0.96174, 0.92601, 0.9498, 0.98607, 0.95776, 0.95933, 1.05453, 1.0078, 0.98275, 0.9314, 0.95617, 0.91701, 1.05993, 0.9446, 0.78367, 0.9553, 1, 0.86832, 1.0128, 0.95871, 0.99394, 0.87548, 0.96361, 0.86774, 1.0078, 0.95871, 0.9446, 0.95871, 0.86774, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.94083, 0.97579, 0.94083, 0.97579, 0.94083, 0.97579, 0.90406, 0.94039, 0.96694, 1, 0.89903, 1, 1, 1, 0.93582, 0.93582, 0.93582, 1, 0.908, 0.908, 0.918, 0.94219, 0.94219, 0.96544, 1, 1.285, 1, 1, 0.81079, 0.81079, 1, 1, 0.74854, 1, 1, 1, 1, 0.99793, 1, 1, 1, 0.65, 1, 1.36145, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1.17173, 1, 0.80535, 0.76169, 1.02058, 1.0732, 1.05486, 1, 1, 1.30692, 1.08595, 1.08595, 1, 1.08595, 1.08595, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1.16161, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1];\nexports.MyriadProBoldFactors = MyriadProBoldFactors;\nconst MyriadProBoldMetrics = {\n  lineHeight: 1.2,\n  lineGap: 0.2\n};\nexports.MyriadProBoldMetrics = MyriadProBoldMetrics;\nconst MyriadProBoldItalicFactors = [1.36898, 1, 1, 0.66227, 0.80779, 0.81625, 0.97276, 0.97276, 0.97733, 0.92222, 0.83266, 0.94292, 0.94292, 1.16148, 1.02058, 0.93582, 0.96694, 0.93582, 1.17337, 0.97276, 0.97276, 0.97276, 0.97276, 0.97276, 0.97276, 0.97276, 0.97276, 0.97276, 0.97276, 0.78076, 0.78076, 1.02058, 1.02058, 1.02058, 0.71541, 0.76813, 0.85576, 0.80591, 0.80729, 0.94299, 0.77512, 0.83655, 0.86523, 0.92222, 0.98621, 0.71743, 0.81698, 0.79726, 0.98558, 0.92222, 0.90637, 0.83809, 0.90637, 0.80729, 0.76463, 0.86275, 0.90699, 0.91605, 0.9154, 0.85308, 0.85458, 0.90531, 0.94292, 1.21296, 0.94292, 1.02058, 0.89903, 1.18616, 0.99613, 0.91677, 0.78216, 0.91677, 0.90083, 0.98796, 0.9135, 0.92168, 0.95381, 0.98981, 0.95298, 0.95381, 0.93459, 0.92168, 0.91513, 0.92004, 0.91677, 0.95077, 0.748, 1.04502, 0.91677, 0.92061, 0.94236, 0.89544, 0.89364, 0.9, 0.80687, 0.8578, 0.80687, 1.02058, 0.80779, 0.97276, 0.97276, 0.97276, 0.97276, 0.8578, 0.99973, 1.18616, 0.91339, 1.08074, 0.82891, 1.02058, 0.55509, 0.71526, 0.89022, 1.08595, 1, 1, 1.18616, 1, 0.96736, 0.93582, 1.18616, 1, 1.04864, 0.82711, 0.99043, 0.99043, 0.99043, 0.71541, 0.85576, 0.85576, 0.85576, 0.85576, 0.85576, 0.85576, 0.845, 0.80729, 0.77512, 0.77512, 0.77512, 0.77512, 0.98621, 0.98621, 0.98621, 0.98621, 0.95961, 0.92222, 0.90637, 0.90637, 0.90637, 0.90637, 0.90637, 1.02058, 0.90251, 0.90699, 0.90699, 0.90699, 0.90699, 0.85458, 0.83659, 0.94951, 0.99613, 0.99613, 0.99613, 0.99613, 0.99613, 0.99613, 0.85811, 0.78216, 0.90083, 0.90083, 0.90083, 0.90083, 0.95381, 0.95381, 0.95381, 0.95381, 0.9135, 0.92168, 0.91513, 0.91513, 0.91513, 0.91513, 0.91513, 1.08595, 0.91677, 0.91677, 0.91677, 0.91677, 0.91677, 0.89364, 0.92332, 0.89364, 0.85576, 0.99613, 0.85576, 0.99613, 0.85576, 0.99613, 0.80729, 0.78216, 0.80729, 0.78216, 0.80729, 0.78216, 0.80729, 0.78216, 0.94299, 0.76783, 0.95961, 0.91677, 0.77512, 0.90083, 0.77512, 0.90083, 0.77512, 0.90083, 0.77512, 0.90083, 0.77512, 0.90083, 0.86523, 0.9135, 0.86523, 0.9135, 0.86523, 0.9135, 1, 1, 0.92222, 0.92168, 0.92222, 0.92168, 0.98621, 0.95381, 0.98621, 0.95381, 0.98621, 0.95381, 0.98621, 0.95381, 0.98621, 0.95381, 0.86036, 0.97096, 0.71743, 0.98981, 1, 1, 0.95298, 0.79726, 0.95381, 1, 1, 0.79726, 0.6894, 0.79726, 0.74321, 0.81691, 1.0006, 0.92222, 0.92168, 1, 1, 0.92222, 0.92168, 0.79464, 0.92098, 0.92168, 0.90637, 0.91513, 0.90637, 0.91513, 0.90637, 0.91513, 0.909, 0.87514, 0.80729, 0.95077, 1, 1, 0.80729, 0.95077, 0.76463, 0.748, 0.76463, 0.748, 1, 1, 0.76463, 0.748, 1, 1, 0.86275, 0.72651, 0.86275, 1.04502, 0.90699, 0.91677, 0.90699, 0.91677, 0.90699, 0.91677, 0.90699, 0.91677, 0.90699, 0.91677, 0.90699, 0.91677, 0.9154, 0.94236, 0.85458, 0.89364, 0.85458, 0.90531, 0.9, 0.90531, 0.9, 0.90531, 0.9, 1, 0.97276, 0.85576, 0.99613, 0.845, 0.85811, 0.90251, 0.91677, 1, 1, 0.86275, 1.04502, 1.18616, 1.18616, 1.18616, 1.18616, 1.18616, 1.18616, 1.18616, 1.18616, 1.18616, 1.00899, 1.30628, 0.85576, 0.80178, 0.66862, 0.7927, 0.69323, 0.88127, 0.72459, 0.89711, 0.95381, 0.85576, 0.80591, 0.7805, 0.94729, 0.77512, 0.90531, 0.92222, 0.90637, 0.98621, 0.81698, 0.92655, 0.98558, 0.92222, 0.85359, 0.90637, 0.90976, 0.83809, 0.94523, 0.86275, 0.83509, 0.93157, 0.85308, 0.83392, 0.92346, 0.98621, 0.83509, 0.92886, 0.91324, 0.92168, 0.95381, 0.90646, 0.92886, 0.90557, 0.86847, 0.90276, 0.91324, 0.86842, 0.92168, 0.99531, 0.95381, 0.9224, 0.85408, 0.92699, 0.86847, 1.0051, 0.91513, 0.80487, 0.93481, 1, 0.88159, 1.05214, 0.90646, 0.97355, 0.81539, 0.89398, 0.85923, 0.95381, 0.90646, 0.91513, 0.90646, 0.85923, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.9154, 0.94236, 0.9154, 0.94236, 0.9154, 0.94236, 0.85458, 0.89364, 0.96694, 1, 0.89903, 1, 1, 1, 0.91782, 0.91782, 0.91782, 1, 0.896, 0.896, 0.896, 0.9332, 0.9332, 0.95973, 1, 1.26, 1, 1, 0.80479, 0.80178, 1, 1, 0.85633, 1, 1, 1, 1, 0.97276, 1, 1, 1, 0.698, 1, 1.36145, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1.14542, 1, 0.79199, 0.78694, 1.02058, 1.03493, 1.05486, 1, 1, 1.23026, 1.08595, 1.08595, 1, 1.08595, 1.08595, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1.20006, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1];\nexports.MyriadProBoldItalicFactors = MyriadProBoldItalicFactors;\nconst MyriadProBoldItalicMetrics = {\n  lineHeight: 1.2,\n  lineGap: 0.2\n};\nexports.MyriadProBoldItalicMetrics = MyriadProBoldItalicMetrics;\nconst MyriadProItalicFactors = [1.36898, 1, 1, 0.65507, 0.84943, 0.85639, 0.88465, 0.88465, 0.86936, 0.88307, 0.86948, 0.85283, 0.85283, 1.06383, 1.02058, 0.75945, 0.9219, 0.75945, 1.17337, 0.88465, 0.88465, 0.88465, 0.88465, 0.88465, 0.88465, 0.88465, 0.88465, 0.88465, 0.88465, 0.75945, 0.75945, 1.02058, 1.02058, 1.02058, 0.69046, 0.70926, 0.85158, 0.77812, 0.76852, 0.89591, 0.70466, 0.76125, 0.80094, 0.86822, 0.83864, 0.728, 0.77212, 0.79475, 0.93637, 0.87514, 0.8588, 0.76013, 0.8588, 0.72421, 0.69866, 0.77598, 0.85991, 0.80811, 0.87832, 0.78112, 0.77512, 0.8562, 1.0222, 1.18417, 1.0222, 1.27014, 0.89903, 1.15012, 0.93859, 0.94399, 0.846, 0.94399, 0.81453, 1.0186, 0.94219, 0.96017, 1.03075, 1.02175, 0.912, 1.03075, 0.96998, 0.96017, 0.93859, 0.94399, 0.94399, 0.95493, 0.746, 1.12658, 0.94578, 0.91, 0.979, 0.882, 0.882, 0.83, 0.85034, 0.83537, 0.85034, 1.02058, 0.70869, 0.88465, 0.88465, 0.88465, 0.88465, 0.83537, 0.90083, 1.15012, 0.9161, 0.94565, 0.73541, 1.02058, 0.53609, 0.69353, 0.79519, 1.08595, 1, 1, 1.15012, 1, 0.91974, 0.75945, 1.15012, 1, 0.9446, 0.73361, 0.9005, 0.9005, 0.9005, 0.62864, 0.85158, 0.85158, 0.85158, 0.85158, 0.85158, 0.85158, 0.773, 0.76852, 0.70466, 0.70466, 0.70466, 0.70466, 0.83864, 0.83864, 0.83864, 0.83864, 0.90561, 0.87514, 0.8588, 0.8588, 0.8588, 0.8588, 0.8588, 1.02058, 0.85751, 0.85991, 0.85991, 0.85991, 0.85991, 0.77512, 0.76013, 0.88075, 0.93859, 0.93859, 0.93859, 0.93859, 0.93859, 0.93859, 0.8075, 0.846, 0.81453, 0.81453, 0.81453, 0.81453, 0.82424, 0.82424, 0.82424, 0.82424, 0.9278, 0.96017, 0.93859, 0.93859, 0.93859, 0.93859, 0.93859, 1.08595, 0.8562, 0.94578, 0.94578, 0.94578, 0.94578, 0.882, 0.94578, 0.882, 0.85158, 0.93859, 0.85158, 0.93859, 0.85158, 0.93859, 0.76852, 0.846, 0.76852, 0.846, 0.76852, 0.846, 0.76852, 0.846, 0.89591, 0.8544, 0.90561, 0.94399, 0.70466, 0.81453, 0.70466, 0.81453, 0.70466, 0.81453, 0.70466, 0.81453, 0.70466, 0.81453, 0.80094, 0.94219, 0.80094, 0.94219, 0.80094, 0.94219, 1, 1, 0.86822, 0.96017, 0.86822, 0.96017, 0.83864, 0.82424, 0.83864, 0.82424, 0.83864, 0.82424, 0.83864, 1.03075, 0.83864, 0.82424, 0.81402, 1.02738, 0.728, 1.02175, 1, 1, 0.912, 0.79475, 1.03075, 1, 1, 0.79475, 0.83911, 0.79475, 0.66266, 0.80553, 1.06676, 0.87514, 0.96017, 1, 1, 0.87514, 0.96017, 0.86865, 0.87396, 0.96017, 0.8588, 0.93859, 0.8588, 0.93859, 0.8588, 0.93859, 0.867, 0.84759, 0.72421, 0.95493, 1, 1, 0.72421, 0.95493, 0.69866, 0.746, 0.69866, 0.746, 1, 1, 0.69866, 0.746, 1, 1, 0.77598, 0.88417, 0.77598, 1.12658, 0.85991, 0.94578, 0.85991, 0.94578, 0.85991, 0.94578, 0.85991, 0.94578, 0.85991, 0.94578, 0.85991, 0.94578, 0.87832, 0.979, 0.77512, 0.882, 0.77512, 0.8562, 0.83, 0.8562, 0.83, 0.8562, 0.83, 1, 0.88465, 0.85158, 0.93859, 0.773, 0.8075, 0.85751, 0.8562, 1, 1, 0.77598, 1.12658, 1.15012, 1.15012, 1.15012, 1.15012, 1.15012, 1.15313, 1.15012, 1.15012, 1.15012, 1.08106, 1.03901, 0.85158, 0.77025, 0.62264, 0.7646, 0.65351, 0.86026, 0.69461, 0.89947, 1.03075, 0.85158, 0.77812, 0.76449, 0.88836, 0.70466, 0.8562, 0.86822, 0.8588, 0.83864, 0.77212, 0.85308, 0.93637, 0.87514, 0.82352, 0.8588, 0.85701, 0.76013, 0.89058, 0.77598, 0.8156, 0.82565, 0.78112, 0.77899, 0.89386, 0.83864, 0.8156, 0.9486, 0.92388, 0.96186, 1.03075, 0.91123, 0.9486, 0.93298, 0.878, 0.93942, 0.92388, 0.84596, 0.96186, 0.95119, 1.03075, 0.922, 0.88787, 0.95829, 0.88, 0.93559, 0.93859, 0.78815, 0.93758, 1, 0.89217, 1.03737, 0.91123, 0.93969, 0.77487, 0.85769, 0.86799, 1.03075, 0.91123, 0.93859, 0.91123, 0.86799, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.87832, 0.979, 0.87832, 0.979, 0.87832, 0.979, 0.77512, 0.882, 0.9219, 1, 0.89903, 1, 1, 1, 0.87321, 0.87321, 0.87321, 1, 1.027, 1.027, 1.027, 0.86847, 0.86847, 0.79121, 1, 1.124, 1, 1, 0.73572, 0.73572, 1, 1, 0.85034, 1, 1, 1, 1, 0.88465, 1, 1, 1, 0.669, 1, 1.36145, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1.04828, 1, 0.74948, 0.75187, 1.02058, 0.98391, 1.02119, 1, 1, 1.06233, 1.08595, 1.08595, 1, 1.08595, 1.08595, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1.05233, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1];\nexports.MyriadProItalicFactors = MyriadProItalicFactors;\nconst MyriadProItalicMetrics = {\n  lineHeight: 1.2,\n  lineGap: 0.2\n};\nexports.MyriadProItalicMetrics = MyriadProItalicMetrics;\nconst MyriadProRegularFactors = [1.36898, 1, 1, 0.76305, 0.82784, 0.94935, 0.89364, 0.92241, 0.89073, 0.90706, 0.98472, 0.85283, 0.85283, 1.0664, 1.02058, 0.74505, 0.9219, 0.74505, 1.23456, 0.92241, 0.92241, 0.92241, 0.92241, 0.92241, 0.92241, 0.92241, 0.92241, 0.92241, 0.92241, 0.74505, 0.74505, 1.02058, 1.02058, 1.02058, 0.73002, 0.72601, 0.91755, 0.8126, 0.80314, 0.92222, 0.73764, 0.79726, 0.83051, 0.90284, 0.86023, 0.74, 0.8126, 0.84869, 0.96518, 0.91115, 0.8858, 0.79761, 0.8858, 0.74498, 0.73914, 0.81363, 0.89591, 0.83659, 0.89633, 0.85608, 0.8111, 0.90531, 1.0222, 1.22736, 1.0222, 1.27014, 0.89903, 0.90088, 0.86667, 1.0231, 0.896, 1.01411, 0.90083, 1.05099, 1.00512, 0.99793, 1.05326, 1.09377, 0.938, 1.06226, 1.00119, 0.99793, 0.98714, 1.0231, 1.01231, 0.98196, 0.792, 1.19137, 0.99074, 0.962, 1.01915, 0.926, 0.942, 0.856, 0.85034, 0.92006, 0.85034, 1.02058, 0.69067, 0.92241, 0.92241, 0.92241, 0.92241, 0.92006, 0.9332, 0.90088, 0.91882, 0.93484, 0.75339, 1.02058, 0.56866, 0.54324, 0.79519, 1.08595, 1, 1, 0.90088, 1, 0.95325, 0.74505, 0.90088, 1, 0.97198, 0.75339, 0.91009, 0.91009, 0.91009, 0.66466, 0.91755, 0.91755, 0.91755, 0.91755, 0.91755, 0.91755, 0.788, 0.80314, 0.73764, 0.73764, 0.73764, 0.73764, 0.86023, 0.86023, 0.86023, 0.86023, 0.92915, 0.91115, 0.8858, 0.8858, 0.8858, 0.8858, 0.8858, 1.02058, 0.8858, 0.89591, 0.89591, 0.89591, 0.89591, 0.8111, 0.79611, 0.89713, 0.86667, 0.86667, 0.86667, 0.86667, 0.86667, 0.86667, 0.86936, 0.896, 0.90083, 0.90083, 0.90083, 0.90083, 0.84224, 0.84224, 0.84224, 0.84224, 0.97276, 0.99793, 0.98714, 0.98714, 0.98714, 0.98714, 0.98714, 1.08595, 0.89876, 0.99074, 0.99074, 0.99074, 0.99074, 0.942, 1.0231, 0.942, 0.91755, 0.86667, 0.91755, 0.86667, 0.91755, 0.86667, 0.80314, 0.896, 0.80314, 0.896, 0.80314, 0.896, 0.80314, 0.896, 0.92222, 0.93372, 0.92915, 1.01411, 0.73764, 0.90083, 0.73764, 0.90083, 0.73764, 0.90083, 0.73764, 0.90083, 0.73764, 0.90083, 0.83051, 1.00512, 0.83051, 1.00512, 0.83051, 1.00512, 1, 1, 0.90284, 0.99793, 0.90976, 0.99793, 0.86023, 0.84224, 0.86023, 0.84224, 0.86023, 0.84224, 0.86023, 1.05326, 0.86023, 0.84224, 0.82873, 1.07469, 0.74, 1.09377, 1, 1, 0.938, 0.84869, 1.06226, 1, 1, 0.84869, 0.83704, 0.84869, 0.81441, 0.85588, 1.08927, 0.91115, 0.99793, 1, 1, 0.91115, 0.99793, 0.91887, 0.90991, 0.99793, 0.8858, 0.98714, 0.8858, 0.98714, 0.8858, 0.98714, 0.894, 0.91434, 0.74498, 0.98196, 1, 1, 0.74498, 0.98196, 0.73914, 0.792, 0.73914, 0.792, 1, 1, 0.73914, 0.792, 1, 1, 0.81363, 0.904, 0.81363, 1.19137, 0.89591, 0.99074, 0.89591, 0.99074, 0.89591, 0.99074, 0.89591, 0.99074, 0.89591, 0.99074, 0.89591, 0.99074, 0.89633, 1.01915, 0.8111, 0.942, 0.8111, 0.90531, 0.856, 0.90531, 0.856, 0.90531, 0.856, 1, 0.92241, 0.91755, 0.86667, 0.788, 0.86936, 0.8858, 0.89876, 1, 1, 0.81363, 1.19137, 0.90088, 0.90088, 0.90088, 0.90088, 0.90088, 0.90088, 0.90088, 0.90088, 0.90088, 0.90388, 1.03901, 0.92138, 0.78105, 0.7154, 0.86169, 0.80513, 0.94007, 0.82528, 0.98612, 1.06226, 0.91755, 0.8126, 0.81884, 0.92819, 0.73764, 0.90531, 0.90284, 0.8858, 0.86023, 0.8126, 0.91172, 0.96518, 0.91115, 0.83089, 0.8858, 0.87791, 0.79761, 0.89297, 0.81363, 0.88157, 0.89992, 0.85608, 0.81992, 0.94307, 0.86023, 0.88157, 0.95308, 0.98699, 0.99793, 1.06226, 0.95817, 0.95308, 0.97358, 0.928, 0.98088, 0.98699, 0.92761, 0.99793, 0.96017, 1.06226, 0.986, 0.944, 0.95978, 0.938, 0.96705, 0.98714, 0.80442, 0.98972, 1, 0.89762, 1.04552, 0.95817, 0.99007, 0.87064, 0.91879, 0.88888, 1.06226, 0.95817, 0.98714, 0.95817, 0.88888, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.89633, 1.01915, 0.89633, 1.01915, 0.89633, 1.01915, 0.8111, 0.942, 0.9219, 1, 0.89903, 1, 1, 1, 0.93173, 0.93173, 0.93173, 1, 1.06304, 1.06304, 1.06904, 0.89903, 0.89903, 0.80549, 1, 1.156, 1, 1, 0.76575, 0.76575, 1, 1, 0.72458, 1, 1, 1, 1, 0.92241, 1, 1, 1, 0.619, 1, 1.36145, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1.07257, 1, 0.74705, 0.71119, 1.02058, 1.024, 1.02119, 1, 1, 1.1536, 1.08595, 1.08595, 1, 1.08595, 1.08595, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1.05638, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1];\nexports.MyriadProRegularFactors = MyriadProRegularFactors;\nconst MyriadProRegularMetrics = {\n  lineHeight: 1.2,\n  lineGap: 0.2\n};\nexports.MyriadProRegularMetrics = MyriadProRegularMetrics;\n\n/***/ }),\n/* 17 */\n/***/ ((__unused_webpack_module, exports) => {\n\n\n\nObject.defineProperty(exports, \"__esModule\", ({\n  value: true\n}));\nexports.SegoeuiRegularMetrics = exports.SegoeuiRegularFactors = exports.SegoeuiItalicMetrics = exports.SegoeuiItalicFactors = exports.SegoeuiBoldMetrics = exports.SegoeuiBoldItalicMetrics = exports.SegoeuiBoldItalicFactors = exports.SegoeuiBoldFactors = void 0;\nconst SegoeuiBoldFactors = [1.76738, 1, 1, 0.99297, 0.9824, 1.04016, 1.06497, 1.03424, 0.97529, 1.17647, 1.23203, 1.1085, 1.1085, 1.16939, 1.2107, 0.9754, 1.21408, 0.9754, 1.59578, 1.03424, 1.03424, 1.03424, 1.03424, 1.03424, 1.03424, 1.03424, 1.03424, 1.03424, 1.03424, 0.81378, 0.81378, 1.2107, 1.2107, 1.2107, 0.71703, 0.97847, 0.97363, 0.88776, 0.8641, 1.02096, 0.79795, 0.85132, 0.914, 1.06085, 1.1406, 0.8007, 0.89858, 0.83693, 1.14889, 1.09398, 0.97489, 0.92094, 0.97489, 0.90399, 0.84041, 0.95923, 1.00135, 1, 1.06467, 0.98243, 0.90996, 0.99361, 1.1085, 1.56942, 1.1085, 1.2107, 0.74627, 0.94282, 0.96752, 1.01519, 0.86304, 1.01359, 0.97278, 1.15103, 1.01359, 0.98561, 1.02285, 1.02285, 1.00527, 1.02285, 1.0302, 0.99041, 1.0008, 1.01519, 1.01359, 1.02258, 0.79104, 1.16862, 0.99041, 0.97454, 1.02511, 0.99298, 0.96752, 0.95801, 0.94856, 1.16579, 0.94856, 1.2107, 0.9824, 1.03424, 1.03424, 1, 1.03424, 1.16579, 0.8727, 1.3871, 1.18622, 1.10818, 1.04478, 1.2107, 1.18622, 0.75155, 0.94994, 1.28826, 1.21408, 1.21408, 0.91056, 1, 0.91572, 0.9754, 0.64663, 1.18328, 1.24866, 1.04478, 1.14169, 1.15749, 1.17389, 0.71703, 0.97363, 0.97363, 0.97363, 0.97363, 0.97363, 0.97363, 0.93506, 0.8641, 0.79795, 0.79795, 0.79795, 0.79795, 1.1406, 1.1406, 1.1406, 1.1406, 1.02096, 1.09398, 0.97426, 0.97426, 0.97426, 0.97426, 0.97426, 1.2107, 0.97489, 1.00135, 1.00135, 1.00135, 1.00135, 0.90996, 0.92094, 1.02798, 0.96752, 0.96752, 0.96752, 0.96752, 0.96752, 0.96752, 0.93136, 0.86304, 0.97278, 0.97278, 0.97278, 0.97278, 1.02285, 1.02285, 1.02285, 1.02285, 0.97122, 0.99041, 1, 1, 1, 1, 1, 1.28826, 1.0008, 0.99041, 0.99041, 0.99041, 0.99041, 0.96752, 1.01519, 0.96752, 0.97363, 0.96752, 0.97363, 0.96752, 0.97363, 0.96752, 0.8641, 0.86304, 0.8641, 0.86304, 0.8641, 0.86304, 0.8641, 0.86304, 1.02096, 1.03057, 1.02096, 1.03517, 0.79795, 0.97278, 0.79795, 0.97278, 0.79795, 0.97278, 0.79795, 0.97278, 0.79795, 0.97278, 0.914, 1.01359, 0.914, 1.01359, 0.914, 1.01359, 1, 1, 1.06085, 0.98561, 1.06085, 1.00879, 1.1406, 1.02285, 1.1406, 1.02285, 1.1406, 1.02285, 1.1406, 1.02285, 1.1406, 1.02285, 0.97138, 1.08692, 0.8007, 1.02285, 1, 1, 1.00527, 0.83693, 1.02285, 1, 1, 0.83693, 0.9455, 0.83693, 0.90418, 0.83693, 1.13005, 1.09398, 0.99041, 1, 1, 1.09398, 0.99041, 0.96692, 1.09251, 0.99041, 0.97489, 1.0008, 0.97489, 1.0008, 0.97489, 1.0008, 0.93994, 0.97931, 0.90399, 1.02258, 1, 1, 0.90399, 1.02258, 0.84041, 0.79104, 0.84041, 0.79104, 0.84041, 0.79104, 0.84041, 0.79104, 1, 1, 0.95923, 1.07034, 0.95923, 1.16862, 1.00135, 0.99041, 1.00135, 0.99041, 1.00135, 0.99041, 1.00135, 0.99041, 1.00135, 0.99041, 1.00135, 0.99041, 1.06467, 1.02511, 0.90996, 0.96752, 0.90996, 0.99361, 0.95801, 0.99361, 0.95801, 0.99361, 0.95801, 1.07733, 1.03424, 0.97363, 0.96752, 0.93506, 0.93136, 0.97489, 1.0008, 1, 1, 0.95923, 1.16862, 1.15103, 1.15103, 1.01173, 1.03959, 0.75953, 0.81378, 0.79912, 1.15103, 1.21994, 0.95161, 0.87815, 1.01149, 0.81525, 0.7676, 0.98167, 1.01134, 1.02546, 0.84097, 1.03089, 1.18102, 0.97363, 0.88776, 0.85134, 0.97826, 0.79795, 0.99361, 1.06085, 0.97489, 1.1406, 0.89858, 1.0388, 1.14889, 1.09398, 0.86039, 0.97489, 1.0595, 0.92094, 0.94793, 0.95923, 0.90996, 0.99346, 0.98243, 1.02112, 0.95493, 1.1406, 0.90996, 1.03574, 1.02597, 1.0008, 1.18102, 1.06628, 1.03574, 1.0192, 1.01932, 1.00886, 0.97531, 1.0106, 1.0008, 1.13189, 1.18102, 1.02277, 0.98683, 1.0016, 0.99561, 1.07237, 1.0008, 0.90434, 0.99921, 0.93803, 0.8965, 1.23085, 1.06628, 1.04983, 0.96268, 1.0499, 0.98439, 1.18102, 1.06628, 1.0008, 1.06628, 0.98439, 0.79795, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1.09466, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.97278, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1.02065, 1, 1, 1, 1, 1, 1, 1.06467, 1.02511, 1.06467, 1.02511, 1.06467, 1.02511, 0.90996, 0.96752, 1, 1.21408, 0.89903, 1, 1, 0.75155, 1.04394, 1.04394, 1.04394, 1.04394, 0.98633, 0.98633, 0.98633, 0.73047, 0.73047, 1.20642, 0.91211, 1.25635, 1.222, 1.02956, 1.03372, 1.03372, 0.96039, 1.24633, 1, 1.12454, 0.93503, 1.03424, 1.19687, 1.03424, 1, 1, 1, 0.771, 1, 1, 1.15749, 1.15749, 1.15749, 1.10948, 0.86279, 0.94434, 0.86279, 0.94434, 0.86182, 1, 1, 1.16897, 1, 0.96085, 0.90137, 1.2107, 1.18416, 1.13973, 0.69825, 0.9716, 2.10339, 1.29004, 1.29004, 1.21172, 1.29004, 1.29004, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1.42603, 1, 0.99862, 0.99862, 1, 0.87025, 0.87025, 0.87025, 0.87025, 1.18874, 1.42603, 1, 1.42603, 1.42603, 0.99862, 1, 1, 1, 1, 1, 1.2886, 1.04315, 1.15296, 1.34163, 1, 1, 1, 1.09193, 1.09193, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1];\nexports.SegoeuiBoldFactors = SegoeuiBoldFactors;\nconst SegoeuiBoldMetrics = {\n  lineHeight: 1.33008,\n  lineGap: 0\n};\nexports.SegoeuiBoldMetrics = SegoeuiBoldMetrics;\nconst SegoeuiBoldItalicFactors = [1.76738, 1, 1, 0.98946, 1.03959, 1.04016, 1.02809, 1.036, 0.97639, 1.10953, 1.23203, 1.11144, 1.11144, 1.16939, 1.21237, 0.9754, 1.21261, 0.9754, 1.59754, 1.036, 1.036, 1.036, 1.036, 1.036, 1.036, 1.036, 1.036, 1.036, 1.036, 0.81378, 0.81378, 1.21237, 1.21237, 1.21237, 0.73541, 0.97847, 0.97363, 0.89723, 0.87897, 1.0426, 0.79429, 0.85292, 0.91149, 1.05815, 1.1406, 0.79631, 0.90128, 0.83853, 1.04396, 1.10615, 0.97552, 0.94436, 0.97552, 0.88641, 0.80527, 0.96083, 1.00135, 1, 1.06777, 0.9817, 0.91142, 0.99361, 1.11144, 1.57293, 1.11144, 1.21237, 0.74627, 1.31818, 1.06585, 0.97042, 0.83055, 0.97042, 0.93503, 1.1261, 0.97042, 0.97922, 1.14236, 0.94552, 1.01054, 1.14236, 1.02471, 0.97922, 0.94165, 0.97042, 0.97042, 1.0276, 0.78929, 1.1261, 0.97922, 0.95874, 1.02197, 0.98507, 0.96752, 0.97168, 0.95107, 1.16579, 0.95107, 1.21237, 1.03959, 1.036, 1.036, 1, 1.036, 1.16579, 0.87357, 1.31818, 1.18754, 1.26781, 1.05356, 1.21237, 1.18622, 0.79487, 0.94994, 1.29004, 1.24047, 1.24047, 1.31818, 1, 0.91484, 0.9754, 1.31818, 1.1349, 1.24866, 1.05356, 1.13934, 1.15574, 1.17389, 0.73541, 0.97363, 0.97363, 0.97363, 0.97363, 0.97363, 0.97363, 0.94385, 0.87897, 0.79429, 0.79429, 0.79429, 0.79429, 1.1406, 1.1406, 1.1406, 1.1406, 1.0426, 1.10615, 0.97552, 0.97552, 0.97552, 0.97552, 0.97552, 1.21237, 0.97552, 1.00135, 1.00135, 1.00135, 1.00135, 0.91142, 0.94436, 0.98721, 1.06585, 1.06585, 1.06585, 1.06585, 1.06585, 1.06585, 0.96705, 0.83055, 0.93503, 0.93503, 0.93503, 0.93503, 1.14236, 1.14236, 1.14236, 1.14236, 0.93125, 0.97922, 0.94165, 0.94165, 0.94165, 0.94165, 0.94165, 1.29004, 0.94165, 0.97922, 0.97922, 0.97922, 0.97922, 0.96752, 0.97042, 0.96752, 0.97363, 1.06585, 0.97363, 1.06585, 0.97363, 1.06585, 0.87897, 0.83055, 0.87897, 0.83055, 0.87897, 0.83055, 0.87897, 0.83055, 1.0426, 1.0033, 1.0426, 0.97042, 0.79429, 0.93503, 0.79429, 0.93503, 0.79429, 0.93503, 0.79429, 0.93503, 0.79429, 0.93503, 0.91149, 0.97042, 0.91149, 0.97042, 0.91149, 0.97042, 1, 1, 1.05815, 0.97922, 1.05815, 0.97922, 1.1406, 1.14236, 1.1406, 1.14236, 1.1406, 1.14236, 1.1406, 1.14236, 1.1406, 1.14236, 0.97441, 1.04302, 0.79631, 1.01582, 1, 1, 1.01054, 0.83853, 1.14236, 1, 1, 0.83853, 1.09125, 0.83853, 0.90418, 0.83853, 1.19508, 1.10615, 0.97922, 1, 1, 1.10615, 0.97922, 1.01034, 1.10466, 0.97922, 0.97552, 0.94165, 0.97552, 0.94165, 0.97552, 0.94165, 0.91602, 0.91981, 0.88641, 1.0276, 1, 1, 0.88641, 1.0276, 0.80527, 0.78929, 0.80527, 0.78929, 0.80527, 0.78929, 0.80527, 0.78929, 1, 1, 0.96083, 1.05403, 0.95923, 1.16862, 1.00135, 0.97922, 1.00135, 0.97922, 1.00135, 0.97922, 1.00135, 0.97922, 1.00135, 0.97922, 1.00135, 0.97922, 1.06777, 1.02197, 0.91142, 0.96752, 0.91142, 0.99361, 0.97168, 0.99361, 0.97168, 0.99361, 0.97168, 1.23199, 1.036, 0.97363, 1.06585, 0.94385, 0.96705, 0.97552, 0.94165, 1, 1, 0.96083, 1.1261, 1.31818, 1.31818, 1.31818, 1.31818, 1.31818, 1.31818, 1.31818, 1.31818, 1.31818, 0.95161, 1.27126, 1.00811, 0.83284, 0.77702, 0.99137, 0.95253, 1.0347, 0.86142, 1.07205, 1.14236, 0.97363, 0.89723, 0.86869, 1.09818, 0.79429, 0.99361, 1.05815, 0.97552, 1.1406, 0.90128, 1.06662, 1.04396, 1.10615, 0.84918, 0.97552, 1.04694, 0.94436, 0.98015, 0.96083, 0.91142, 1.00356, 0.9817, 1.01945, 0.98999, 1.1406, 0.91142, 1.04961, 0.9898, 1.00639, 1.14236, 1.07514, 1.04961, 0.99607, 1.02897, 1.008, 0.9898, 0.95134, 1.00639, 1.11121, 1.14236, 1.00518, 0.97981, 1.02186, 1, 1.08578, 0.94165, 0.99314, 0.98387, 0.93028, 0.93377, 1.35125, 1.07514, 1.10687, 0.93491, 1.04232, 1.00351, 1.14236, 1.07514, 0.94165, 1.07514, 1.00351, 0.79429, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1.09097, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.93503, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.96609, 1, 1, 1, 1, 1, 1, 1.06777, 1.02197, 1.06777, 1.02197, 1.06777, 1.02197, 0.91142, 0.96752, 1, 1.21261, 0.89903, 1, 1, 0.75155, 1.04745, 1.04745, 1.04745, 1.04394, 0.98633, 0.98633, 0.98633, 0.72959, 0.72959, 1.20502, 0.91406, 1.26514, 1.222, 1.02956, 1.03372, 1.03372, 0.96039, 1.24633, 1, 1.09125, 0.93327, 1.03336, 1.16541, 1.036, 1, 1, 1, 0.771, 1, 1, 1.15574, 1.15574, 1.15574, 1.15574, 0.86364, 0.94434, 0.86279, 0.94434, 0.86224, 1, 1, 1.16798, 1, 0.96085, 0.90068, 1.21237, 1.18416, 1.13904, 0.69825, 0.9716, 2.10339, 1.29004, 1.29004, 1.21339, 1.29004, 1.29004, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1.42603, 1, 0.99862, 0.99862, 1, 0.87025, 0.87025, 0.87025, 0.87025, 1.18775, 1.42603, 1, 1.42603, 1.42603, 0.99862, 1, 1, 1, 1, 1, 1.2886, 1.04315, 1.15296, 1.34163, 1, 1, 1, 1.13269, 1.13269, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1];\nexports.SegoeuiBoldItalicFactors = SegoeuiBoldItalicFactors;\nconst SegoeuiBoldItalicMetrics = {\n  lineHeight: 1.33008,\n  lineGap: 0\n};\nexports.SegoeuiBoldItalicMetrics = SegoeuiBoldItalicMetrics;\nconst SegoeuiItalicFactors = [1.76738, 1, 1, 0.98946, 1.14763, 1.05365, 1.06234, 0.96927, 0.92586, 1.15373, 1.18414, 0.91349, 0.91349, 1.07403, 1.17308, 0.78383, 1.20088, 0.78383, 1.42531, 0.96927, 0.96927, 0.96927, 0.96927, 0.96927, 0.96927, 0.96927, 0.96927, 0.96927, 0.96927, 0.78383, 0.78383, 1.17308, 1.17308, 1.17308, 0.77349, 0.94565, 0.94729, 0.85944, 0.88506, 0.9858, 0.74817, 0.80016, 0.88449, 0.98039, 0.95782, 0.69238, 0.89898, 0.83231, 0.98183, 1.03989, 0.96924, 0.86237, 0.96924, 0.80595, 0.74524, 0.86091, 0.95402, 0.94143, 0.98448, 0.8858, 0.83089, 0.93285, 1.0949, 1.39016, 1.0949, 1.45994, 0.74627, 1.04839, 0.97454, 0.97454, 0.87207, 0.97454, 0.87533, 1.06151, 0.97454, 1.00176, 1.16484, 1.08132, 0.98047, 1.16484, 1.02989, 1.01054, 0.96225, 0.97454, 0.97454, 1.06598, 0.79004, 1.16344, 1.00351, 0.94629, 0.9973, 0.91016, 0.96777, 0.9043, 0.91082, 0.92481, 0.91082, 1.17308, 0.95748, 0.96927, 0.96927, 1, 0.96927, 0.92481, 0.80597, 1.04839, 1.23393, 1.1781, 0.9245, 1.17308, 1.20808, 0.63218, 0.94261, 1.24822, 1.09971, 1.09971, 1.04839, 1, 0.85273, 0.78032, 1.04839, 1.09971, 1.22326, 0.9245, 1.09836, 1.13525, 1.15222, 0.70424, 0.94729, 0.94729, 0.94729, 0.94729, 0.94729, 0.94729, 0.85498, 0.88506, 0.74817, 0.74817, 0.74817, 0.74817, 0.95782, 0.95782, 0.95782, 0.95782, 0.9858, 1.03989, 0.96924, 0.96924, 0.96924, 0.96924, 0.96924, 1.17308, 0.96924, 0.95402, 0.95402, 0.95402, 0.95402, 0.83089, 0.86237, 0.88409, 0.97454, 0.97454, 0.97454, 0.97454, 0.97454, 0.97454, 0.92916, 0.87207, 0.87533, 0.87533, 0.87533, 0.87533, 0.93146, 0.93146, 0.93146, 0.93146, 0.93854, 1.01054, 0.96225, 0.96225, 0.96225, 0.96225, 0.96225, 1.24822, 0.8761, 1.00351, 1.00351, 1.00351, 1.00351, 0.96777, 0.97454, 0.96777, 0.94729, 0.97454, 0.94729, 0.97454, 0.94729, 0.97454, 0.88506, 0.87207, 0.88506, 0.87207, 0.88506, 0.87207, 0.88506, 0.87207, 0.9858, 0.95391, 0.9858, 0.97454, 0.74817, 0.87533, 0.74817, 0.87533, 0.74817, 0.87533, 0.74817, 0.87533, 0.74817, 0.87533, 0.88449, 0.97454, 0.88449, 0.97454, 0.88449, 0.97454, 1, 1, 0.98039, 1.00176, 0.98039, 1.00176, 0.95782, 0.93146, 0.95782, 0.93146, 0.95782, 0.93146, 0.95782, 1.16484, 0.95782, 0.93146, 0.84421, 1.12761, 0.69238, 1.08132, 1, 1, 0.98047, 0.83231, 1.16484, 1, 1, 0.84723, 1.04861, 0.84723, 0.78755, 0.83231, 1.23736, 1.03989, 1.01054, 1, 1, 1.03989, 1.01054, 0.9857, 1.03849, 1.01054, 0.96924, 0.96225, 0.96924, 0.96225, 0.96924, 0.96225, 0.92383, 0.90171, 0.80595, 1.06598, 1, 1, 0.80595, 1.06598, 0.74524, 0.79004, 0.74524, 0.79004, 0.74524, 0.79004, 0.74524, 0.79004, 1, 1, 0.86091, 1.02759, 0.85771, 1.16344, 0.95402, 1.00351, 0.95402, 1.00351, 0.95402, 1.00351, 0.95402, 1.00351, 0.95402, 1.00351, 0.95402, 1.00351, 0.98448, 0.9973, 0.83089, 0.96777, 0.83089, 0.93285, 0.9043, 0.93285, 0.9043, 0.93285, 0.9043, 1.31868, 0.96927, 0.94729, 0.97454, 0.85498, 0.92916, 0.96924, 0.8761, 1, 1, 0.86091, 1.16344, 1.04839, 1.04839, 1.04839, 1.04839, 1.04839, 1.04839, 1.04839, 1.04839, 1.04839, 0.81965, 0.81965, 0.94729, 0.78032, 0.71022, 0.90883, 0.84171, 0.99877, 0.77596, 1.05734, 1.2, 0.94729, 0.85944, 0.82791, 0.9607, 0.74817, 0.93285, 0.98039, 0.96924, 0.95782, 0.89898, 0.98316, 0.98183, 1.03989, 0.78614, 0.96924, 0.97642, 0.86237, 0.86075, 0.86091, 0.83089, 0.90082, 0.8858, 0.97296, 1.01284, 0.95782, 0.83089, 1.0976, 1.04, 1.03342, 1.2, 1.0675, 1.0976, 0.98205, 1.03809, 1.05097, 1.04, 0.95364, 1.03342, 1.05401, 1.2, 1.02148, 1.0119, 1.04724, 1.0127, 1.02732, 0.96225, 0.8965, 0.97783, 0.93574, 0.94818, 1.30679, 1.0675, 1.11826, 0.99821, 1.0557, 1.0326, 1.2, 1.0675, 0.96225, 1.0675, 1.0326, 0.74817, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1.03754, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.87533, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.98705, 1, 1, 1, 1, 1, 1, 0.98448, 0.9973, 0.98448, 0.9973, 0.98448, 0.9973, 0.83089, 0.96777, 1, 1.20088, 0.89903, 1, 1, 0.75155, 0.94945, 0.94945, 0.94945, 0.94945, 1.12317, 1.12317, 1.12317, 0.67603, 0.67603, 1.15621, 0.73584, 1.21191, 1.22135, 1.06483, 0.94868, 0.94868, 0.95996, 1.24633, 1, 1.07497, 0.87709, 0.96927, 1.01473, 0.96927, 1, 1, 1, 0.77295, 1, 1, 1.09836, 1.09836, 1.09836, 1.01522, 0.86321, 0.94434, 0.8649, 0.94434, 0.86182, 1, 1, 1.083, 1, 0.91578, 0.86438, 1.17308, 1.18416, 1.14589, 0.69825, 0.97622, 1.96791, 1.24822, 1.24822, 1.17308, 1.24822, 1.24822, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1.42603, 1, 0.99862, 0.99862, 1, 0.87025, 0.87025, 0.87025, 0.87025, 1.17984, 1.42603, 1, 1.42603, 1.42603, 0.99862, 1, 1, 1, 1, 1, 1.2886, 1.04315, 1.15296, 1.34163, 1, 1, 1, 1.10742, 1.10742, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1];\nexports.SegoeuiItalicFactors = SegoeuiItalicFactors;\nconst SegoeuiItalicMetrics = {\n  lineHeight: 1.33008,\n  lineGap: 0\n};\nexports.SegoeuiItalicMetrics = SegoeuiItalicMetrics;\nconst SegoeuiRegularFactors = [1.76738, 1, 1, 0.98594, 1.02285, 1.10454, 1.06234, 0.96927, 0.92037, 1.19985, 1.2046, 0.90616, 0.90616, 1.07152, 1.1714, 0.78032, 1.20088, 0.78032, 1.40246, 0.96927, 0.96927, 0.96927, 0.96927, 0.96927, 0.96927, 0.96927, 0.96927, 0.96927, 0.96927, 0.78032, 0.78032, 1.1714, 1.1714, 1.1714, 0.80597, 0.94084, 0.96706, 0.85944, 0.85734, 0.97093, 0.75842, 0.79936, 0.88198, 0.9831, 0.95782, 0.71387, 0.86969, 0.84636, 1.07796, 1.03584, 0.96924, 0.83968, 0.96924, 0.82826, 0.79649, 0.85771, 0.95132, 0.93119, 0.98965, 0.88433, 0.8287, 0.93365, 1.08612, 1.3638, 1.08612, 1.45786, 0.74627, 0.80499, 0.91484, 1.05707, 0.92383, 1.05882, 0.9403, 1.12654, 1.05882, 1.01756, 1.09011, 1.09011, 0.99414, 1.09011, 1.034, 1.01756, 1.05356, 1.05707, 1.05882, 1.04399, 0.84863, 1.21968, 1.01756, 0.95801, 1.00068, 0.91797, 0.96777, 0.9043, 0.90351, 0.92105, 0.90351, 1.1714, 0.85337, 0.96927, 0.96927, 0.99912, 0.96927, 0.92105, 0.80597, 1.2434, 1.20808, 1.05937, 0.90957, 1.1714, 1.20808, 0.75155, 0.94261, 1.24644, 1.09971, 1.09971, 0.84751, 1, 0.85273, 0.78032, 0.61584, 1.05425, 1.17914, 0.90957, 1.08665, 1.11593, 1.14169, 0.73381, 0.96706, 0.96706, 0.96706, 0.96706, 0.96706, 0.96706, 0.86035, 0.85734, 0.75842, 0.75842, 0.75842, 0.75842, 0.95782, 0.95782, 0.95782, 0.95782, 0.97093, 1.03584, 0.96924, 0.96924, 0.96924, 0.96924, 0.96924, 1.1714, 0.96924, 0.95132, 0.95132, 0.95132, 0.95132, 0.8287, 0.83968, 0.89049, 0.91484, 0.91484, 0.91484, 0.91484, 0.91484, 0.91484, 0.93575, 0.92383, 0.9403, 0.9403, 0.9403, 0.9403, 0.8717, 0.8717, 0.8717, 0.8717, 1.00527, 1.01756, 1.05356, 1.05356, 1.05356, 1.05356, 1.05356, 1.24644, 0.95923, 1.01756, 1.01756, 1.01756, 1.01756, 0.96777, 1.05707, 0.96777, 0.96706, 0.91484, 0.96706, 0.91484, 0.96706, 0.91484, 0.85734, 0.92383, 0.85734, 0.92383, 0.85734, 0.92383, 0.85734, 0.92383, 0.97093, 1.0969, 0.97093, 1.05882, 0.75842, 0.9403, 0.75842, 0.9403, 0.75842, 0.9403, 0.75842, 0.9403, 0.75842, 0.9403, 0.88198, 1.05882, 0.88198, 1.05882, 0.88198, 1.05882, 1, 1, 0.9831, 1.01756, 0.9831, 1.01756, 0.95782, 0.8717, 0.95782, 0.8717, 0.95782, 0.8717, 0.95782, 1.09011, 0.95782, 0.8717, 0.84784, 1.11551, 0.71387, 1.09011, 1, 1, 0.99414, 0.84636, 1.09011, 1, 1, 0.84636, 1.0536, 0.84636, 0.94298, 0.84636, 1.23297, 1.03584, 1.01756, 1, 1, 1.03584, 1.01756, 1.00323, 1.03444, 1.01756, 0.96924, 1.05356, 0.96924, 1.05356, 0.96924, 1.05356, 0.93066, 0.98293, 0.82826, 1.04399, 1, 1, 0.82826, 1.04399, 0.79649, 0.84863, 0.79649, 0.84863, 0.79649, 0.84863, 0.79649, 0.84863, 1, 1, 0.85771, 1.17318, 0.85771, 1.21968, 0.95132, 1.01756, 0.95132, 1.01756, 0.95132, 1.01756, 0.95132, 1.01756, 0.95132, 1.01756, 0.95132, 1.01756, 0.98965, 1.00068, 0.8287, 0.96777, 0.8287, 0.93365, 0.9043, 0.93365, 0.9043, 0.93365, 0.9043, 1.08571, 0.96927, 0.96706, 0.91484, 0.86035, 0.93575, 0.96924, 0.95923, 1, 1, 0.85771, 1.21968, 1.11437, 1.11437, 0.93109, 0.91202, 0.60411, 0.84164, 0.55572, 1.01173, 0.97361, 0.81818, 0.81818, 0.96635, 0.78032, 0.72727, 0.92366, 0.98601, 1.03405, 0.77968, 1.09799, 1.2, 0.96706, 0.85944, 0.85638, 0.96491, 0.75842, 0.93365, 0.9831, 0.96924, 0.95782, 0.86969, 0.94152, 1.07796, 1.03584, 0.78437, 0.96924, 0.98715, 0.83968, 0.83491, 0.85771, 0.8287, 0.94492, 0.88433, 0.9287, 1.0098, 0.95782, 0.8287, 1.0625, 0.98248, 1.03424, 1.2, 1.01071, 1.0625, 0.95246, 1.03809, 1.04912, 0.98248, 1.00221, 1.03424, 1.05443, 1.2, 1.04785, 0.99609, 1.00169, 1.05176, 0.99346, 1.05356, 0.9087, 1.03004, 0.95542, 0.93117, 1.23362, 1.01071, 1.07831, 1.02512, 1.05205, 1.03502, 1.2, 1.01071, 1.05356, 1.01071, 1.03502, 0.75842, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1.03719, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.9403, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1.04021, 1, 1, 1, 1, 1, 1, 0.98965, 1.00068, 0.98965, 1.00068, 0.98965, 1.00068, 0.8287, 0.96777, 1, 1.20088, 0.89903, 1, 1, 0.75155, 1.03077, 1.03077, 1.03077, 1.03077, 1.13196, 1.13196, 1.13196, 0.67428, 0.67428, 1.16039, 0.73291, 1.20996, 1.22135, 1.06483, 0.94868, 0.94868, 0.95996, 1.24633, 1, 1.07497, 0.87796, 0.96927, 1.01518, 0.96927, 1, 1, 1, 0.77295, 1, 1, 1.10539, 1.10539, 1.11358, 1.06967, 0.86279, 0.94434, 0.86279, 0.94434, 0.86182, 1, 1, 1.083, 1, 0.91578, 0.86507, 1.1714, 1.18416, 1.14589, 0.69825, 0.97622, 1.9697, 1.24822, 1.24822, 1.17238, 1.24822, 1.24822, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1.42603, 1, 0.99862, 0.99862, 1, 0.87025, 0.87025, 0.87025, 0.87025, 1.18083, 1.42603, 1, 1.42603, 1.42603, 0.99862, 1, 1, 1, 1, 1, 1.2886, 1.04315, 1.15296, 1.34163, 1, 1, 1, 1.10938, 1.10938, 1, 1, 1, 1.05425, 1.09971, 1.09971, 1.09971, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1];\nexports.SegoeuiRegularFactors = SegoeuiRegularFactors;\nconst SegoeuiRegularMetrics = {\n  lineHeight: 1.33008,\n  lineGap: 0\n};\nexports.SegoeuiRegularMetrics = SegoeuiRegularMetrics;\n\n/***/ }),\n/* 18 */\n/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {\n\n\n\nObject.defineProperty(exports, \"__esModule\", ({\n  value: true\n}));\nexports.SEAC_ANALYSIS_ENABLED = exports.MacStandardGlyphOrdering = exports.FontFlags = void 0;\nexports.getFontType = getFontType;\nexports.normalizeFontName = normalizeFontName;\nexports.recoverGlyphName = recoverGlyphName;\nexports.type1FontGlyphMapping = type1FontGlyphMapping;\n\nvar _util = __w_pdfjs_require__(2);\n\nvar _encodings = __w_pdfjs_require__(19);\n\nvar _glyphlist = __w_pdfjs_require__(20);\n\nvar _unicode = __w_pdfjs_require__(21);\n\nconst SEAC_ANALYSIS_ENABLED = true;\nexports.SEAC_ANALYSIS_ENABLED = SEAC_ANALYSIS_ENABLED;\nconst FontFlags = {\n  FixedPitch: 1,\n  Serif: 2,\n  Symbolic: 4,\n  Script: 8,\n  Nonsymbolic: 32,\n  Italic: 64,\n  AllCap: 65536,\n  SmallCap: 131072,\n  ForceBold: 262144\n};\nexports.FontFlags = FontFlags;\nconst MacStandardGlyphOrdering = [\".notdef\", \".null\", \"nonmarkingreturn\", \"space\", \"exclam\", \"quotedbl\", \"numbersign\", \"dollar\", \"percent\", \"ampersand\", \"quotesingle\", \"parenleft\", \"parenright\", \"asterisk\", \"plus\", \"comma\", \"hyphen\", \"period\", \"slash\", \"zero\", \"one\", \"two\", \"three\", \"four\", \"five\", \"six\", \"seven\", \"eight\", \"nine\", \"colon\", \"semicolon\", \"less\", \"equal\", \"greater\", \"question\", \"at\", \"A\", \"B\", \"C\", \"D\", \"E\", \"F\", \"G\", \"H\", \"I\", \"J\", \"K\", \"L\", \"M\", \"N\", \"O\", \"P\", \"Q\", \"R\", \"S\", \"T\", \"U\", \"V\", \"W\", \"X\", \"Y\", \"Z\", \"bracketleft\", \"backslash\", \"bracketright\", \"asciicircum\", \"underscore\", \"grave\", \"a\", \"b\", \"c\", \"d\", \"e\", \"f\", \"g\", \"h\", \"i\", \"j\", \"k\", \"l\", \"m\", \"n\", \"o\", \"p\", \"q\", \"r\", \"s\", \"t\", \"u\", \"v\", \"w\", \"x\", \"y\", \"z\", \"braceleft\", \"bar\", \"braceright\", \"asciitilde\", \"Adieresis\", \"Aring\", \"Ccedilla\", \"Eacute\", \"Ntilde\", \"Odieresis\", \"Udieresis\", \"aacute\", \"agrave\", \"acircumflex\", \"adieresis\", \"atilde\", \"aring\", \"ccedilla\", \"eacute\", \"egrave\", \"ecircumflex\", \"edieresis\", \"iacute\", \"igrave\", \"icircumflex\", \"idieresis\", \"ntilde\", \"oacute\", \"ograve\", \"ocircumflex\", \"odieresis\", \"otilde\", \"uacute\", \"ugrave\", \"ucircumflex\", \"udieresis\", \"dagger\", \"degree\", \"cent\", \"sterling\", \"section\", \"bullet\", \"paragraph\", \"germandbls\", \"registered\", \"copyright\", \"trademark\", \"acute\", \"dieresis\", \"notequal\", \"AE\", \"Oslash\", \"infinity\", \"plusminus\", \"lessequal\", \"greaterequal\", \"yen\", \"mu\", \"partialdiff\", \"summation\", \"product\", \"pi\", \"integral\", \"ordfeminine\", \"ordmasculine\", \"Omega\", \"ae\", \"oslash\", \"questiondown\", \"exclamdown\", \"logicalnot\", \"radical\", \"florin\", \"approxequal\", \"Delta\", \"guillemotleft\", \"guillemotright\", \"ellipsis\", \"nonbreakingspace\", \"Agrave\", \"Atilde\", \"Otilde\", \"OE\", \"oe\", \"endash\", \"emdash\", \"quotedblleft\", \"quotedblright\", \"quoteleft\", \"quoteright\", \"divide\", \"lozenge\", \"ydieresis\", \"Ydieresis\", \"fraction\", \"currency\", \"guilsinglleft\", \"guilsinglright\", \"fi\", \"fl\", \"daggerdbl\", \"periodcentered\", \"quotesinglbase\", \"quotedblbase\", \"perthousand\", \"Acircumflex\", \"Ecircumflex\", \"Aacute\", \"Edieresis\", \"Egrave\", \"Iacute\", \"Icircumflex\", \"Idieresis\", \"Igrave\", \"Oacute\", \"Ocircumflex\", \"apple\", \"Ograve\", \"Uacute\", \"Ucircumflex\", \"Ugrave\", \"dotlessi\", \"circumflex\", \"tilde\", \"macron\", \"breve\", \"dotaccent\", \"ring\", \"cedilla\", \"hungarumlaut\", \"ogonek\", \"caron\", \"Lslash\", \"lslash\", \"Scaron\", \"scaron\", \"Zcaron\", \"zcaron\", \"brokenbar\", \"Eth\", \"eth\", \"Yacute\", \"yacute\", \"Thorn\", \"thorn\", \"minus\", \"multiply\", \"onesuperior\", \"twosuperior\", \"threesuperior\", \"onehalf\", \"onequarter\", \"threequarters\", \"franc\", \"Gbreve\", \"gbreve\", \"Idotaccent\", \"Scedilla\", \"scedilla\", \"Cacute\", \"cacute\", \"Ccaron\", \"ccaron\", \"dcroat\"];\nexports.MacStandardGlyphOrdering = MacStandardGlyphOrdering;\n\nfunction getFontType(type, subtype, isStandardFont = false) {\n  switch (type) {\n    case \"Type1\":\n      if (isStandardFont) {\n        return _util.FontType.TYPE1STANDARD;\n      }\n\n      return subtype === \"Type1C\" ? _util.FontType.TYPE1C : _util.FontType.TYPE1;\n\n    case \"CIDFontType0\":\n      return subtype === \"CIDFontType0C\" ? _util.FontType.CIDFONTTYPE0C : _util.FontType.CIDFONTTYPE0;\n\n    case \"OpenType\":\n      return _util.FontType.OPENTYPE;\n\n    case \"TrueType\":\n      return _util.FontType.TRUETYPE;\n\n    case \"CIDFontType2\":\n      return _util.FontType.CIDFONTTYPE2;\n\n    case \"MMType1\":\n      return _util.FontType.MMTYPE1;\n\n    case \"Type0\":\n      return _util.FontType.TYPE0;\n\n    default:\n      return _util.FontType.UNKNOWN;\n  }\n}\n\nfunction recoverGlyphName(name, glyphsUnicodeMap) {\n  if (glyphsUnicodeMap[name] !== undefined) {\n    return name;\n  }\n\n  const unicode = (0, _unicode.getUnicodeForGlyph)(name, glyphsUnicodeMap);\n\n  if (unicode !== -1) {\n    for (const key in glyphsUnicodeMap) {\n      if (glyphsUnicodeMap[key] === unicode) {\n        return key;\n      }\n    }\n  }\n\n  (0, _util.info)(\"Unable to recover a standard glyph name for: \" + name);\n  return name;\n}\n\nfunction type1FontGlyphMapping(properties, builtInEncoding, glyphNames) {\n  const charCodeToGlyphId = Object.create(null);\n  let glyphId, charCode, baseEncoding;\n  const isSymbolicFont = !!(properties.flags & FontFlags.Symbolic);\n\n  if (properties.isInternalFont) {\n    baseEncoding = builtInEncoding;\n\n    for (charCode = 0; charCode < baseEncoding.length; charCode++) {\n      glyphId = glyphNames.indexOf(baseEncoding[charCode]);\n\n      if (glyphId >= 0) {\n        charCodeToGlyphId[charCode] = glyphId;\n      } else {\n        charCodeToGlyphId[charCode] = 0;\n      }\n    }\n  } else if (properties.baseEncodingName) {\n    baseEncoding = (0, _encodings.getEncoding)(properties.baseEncodingName);\n\n    for (charCode = 0; charCode < baseEncoding.length; charCode++) {\n      glyphId = glyphNames.indexOf(baseEncoding[charCode]);\n\n      if (glyphId >= 0) {\n        charCodeToGlyphId[charCode] = glyphId;\n      } else {\n        charCodeToGlyphId[charCode] = 0;\n      }\n    }\n  } else if (isSymbolicFont) {\n    for (charCode in builtInEncoding) {\n      charCodeToGlyphId[charCode] = builtInEncoding[charCode];\n    }\n  } else {\n    baseEncoding = _encodings.StandardEncoding;\n\n    for (charCode = 0; charCode < baseEncoding.length; charCode++) {\n      glyphId = glyphNames.indexOf(baseEncoding[charCode]);\n\n      if (glyphId >= 0) {\n        charCodeToGlyphId[charCode] = glyphId;\n      } else {\n        charCodeToGlyphId[charCode] = 0;\n      }\n    }\n  }\n\n  const differences = properties.differences;\n  let glyphsUnicodeMap;\n\n  if (differences) {\n    for (charCode in differences) {\n      const glyphName = differences[charCode];\n      glyphId = glyphNames.indexOf(glyphName);\n\n      if (glyphId === -1) {\n        if (!glyphsUnicodeMap) {\n          glyphsUnicodeMap = (0, _glyphlist.getGlyphsUnicode)();\n        }\n\n        const standardGlyphName = recoverGlyphName(glyphName, glyphsUnicodeMap);\n\n        if (standardGlyphName !== glyphName) {\n          glyphId = glyphNames.indexOf(standardGlyphName);\n        }\n      }\n\n      if (glyphId >= 0) {\n        charCodeToGlyphId[charCode] = glyphId;\n      } else {\n        charCodeToGlyphId[charCode] = 0;\n      }\n    }\n  }\n\n  return charCodeToGlyphId;\n}\n\nfunction normalizeFontName(name) {\n  return name.replace(/[,_]/g, \"-\").replace(/\\s/g, \"\");\n}\n\n/***/ }),\n/* 19 */\n/***/ ((__unused_webpack_module, exports) => {\n\n\n\nObject.defineProperty(exports, \"__esModule\", ({\n  value: true\n}));\nexports.ZapfDingbatsEncoding = exports.WinAnsiEncoding = exports.SymbolSetEncoding = exports.StandardEncoding = exports.MacRomanEncoding = exports.ExpertEncoding = void 0;\nexports.getEncoding = getEncoding;\nconst ExpertEncoding = [\"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"space\", \"exclamsmall\", \"Hungarumlautsmall\", \"\", \"dollaroldstyle\", \"dollarsuperior\", \"ampersandsmall\", \"Acutesmall\", \"parenleftsuperior\", \"parenrightsuperior\", \"twodotenleader\", \"onedotenleader\", \"comma\", \"hyphen\", \"period\", \"fraction\", \"zerooldstyle\", \"oneoldstyle\", \"twooldstyle\", \"threeoldstyle\", \"fouroldstyle\", \"fiveoldstyle\", \"sixoldstyle\", \"sevenoldstyle\", \"eightoldstyle\", \"nineoldstyle\", \"colon\", \"semicolon\", \"commasuperior\", \"threequartersemdash\", \"periodsuperior\", \"questionsmall\", \"\", \"asuperior\", \"bsuperior\", \"centsuperior\", \"dsuperior\", \"esuperior\", \"\", \"\", \"\", \"isuperior\", \"\", \"\", \"lsuperior\", \"msuperior\", \"nsuperior\", \"osuperior\", \"\", \"\", \"rsuperior\", \"ssuperior\", \"tsuperior\", \"\", \"ff\", \"fi\", \"fl\", \"ffi\", \"ffl\", \"parenleftinferior\", \"\", \"parenrightinferior\", \"Circumflexsmall\", \"hyphensuperior\", \"Gravesmall\", \"Asmall\", \"Bsmall\", \"Csmall\", \"Dsmall\", \"Esmall\", \"Fsmall\", \"Gsmall\", \"Hsmall\", \"Ismall\", \"Jsmall\", \"Ksmall\", \"Lsmall\", \"Msmall\", \"Nsmall\", \"Osmall\", \"Psmall\", \"Qsmall\", \"Rsmall\", \"Ssmall\", \"Tsmall\", \"Usmall\", \"Vsmall\", \"Wsmall\", \"Xsmall\", \"Ysmall\", \"Zsmall\", \"colonmonetary\", \"onefitted\", \"rupiah\", \"Tildesmall\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"exclamdownsmall\", \"centoldstyle\", \"Lslashsmall\", \"\", \"\", \"Scaronsmall\", \"Zcaronsmall\", \"Dieresissmall\", \"Brevesmall\", \"Caronsmall\", \"\", \"Dotaccentsmall\", \"\", \"\", \"Macronsmall\", \"\", \"\", \"figuredash\", \"hypheninferior\", \"\", \"\", \"Ogoneksmall\", \"Ringsmall\", \"Cedillasmall\", \"\", \"\", \"\", \"onequarter\", \"onehalf\", \"threequarters\", \"questiondownsmall\", \"oneeighth\", \"threeeighths\", \"fiveeighths\", \"seveneighths\", \"onethird\", \"twothirds\", \"\", \"\", \"zerosuperior\", \"onesuperior\", \"twosuperior\", \"threesuperior\", \"foursuperior\", \"fivesuperior\", \"sixsuperior\", \"sevensuperior\", \"eightsuperior\", \"ninesuperior\", \"zeroinferior\", \"oneinferior\", \"twoinferior\", \"threeinferior\", \"fourinferior\", \"fiveinferior\", \"sixinferior\", \"seveninferior\", \"eightinferior\", \"nineinferior\", \"centinferior\", \"dollarinferior\", \"periodinferior\", \"commainferior\", \"Agravesmall\", \"Aacutesmall\", \"Acircumflexsmall\", \"Atildesmall\", \"Adieresissmall\", \"Aringsmall\", \"AEsmall\", \"Ccedillasmall\", \"Egravesmall\", \"Eacutesmall\", \"Ecircumflexsmall\", \"Edieresissmall\", \"Igravesmall\", \"Iacutesmall\", \"Icircumflexsmall\", \"Idieresissmall\", \"Ethsmall\", \"Ntildesmall\", \"Ogravesmall\", \"Oacutesmall\", \"Ocircumflexsmall\", \"Otildesmall\", \"Odieresissmall\", \"OEsmall\", \"Oslashsmall\", \"Ugravesmall\", \"Uacutesmall\", \"Ucircumflexsmall\", \"Udieresissmall\", \"Yacutesmall\", \"Thornsmall\", \"Ydieresissmall\"];\nexports.ExpertEncoding = ExpertEncoding;\nconst MacExpertEncoding = [\"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"space\", \"exclamsmall\", \"Hungarumlautsmall\", \"centoldstyle\", \"dollaroldstyle\", \"dollarsuperior\", \"ampersandsmall\", \"Acutesmall\", \"parenleftsuperior\", \"parenrightsuperior\", \"twodotenleader\", \"onedotenleader\", \"comma\", \"hyphen\", \"period\", \"fraction\", \"zerooldstyle\", \"oneoldstyle\", \"twooldstyle\", \"threeoldstyle\", \"fouroldstyle\", \"fiveoldstyle\", \"sixoldstyle\", \"sevenoldstyle\", \"eightoldstyle\", \"nineoldstyle\", \"colon\", \"semicolon\", \"\", \"threequartersemdash\", \"\", \"questionsmall\", \"\", \"\", \"\", \"\", \"Ethsmall\", \"\", \"\", \"onequarter\", \"onehalf\", \"threequarters\", \"oneeighth\", \"threeeighths\", \"fiveeighths\", \"seveneighths\", \"onethird\", \"twothirds\", \"\", \"\", \"\", \"\", \"\", \"\", \"ff\", \"fi\", \"fl\", \"ffi\", \"ffl\", \"parenleftinferior\", \"\", \"parenrightinferior\", \"Circumflexsmall\", \"hypheninferior\", \"Gravesmall\", \"Asmall\", \"Bsmall\", \"Csmall\", \"Dsmall\", \"Esmall\", \"Fsmall\", \"Gsmall\", \"Hsmall\", \"Ismall\", \"Jsmall\", \"Ksmall\", \"Lsmall\", \"Msmall\", \"Nsmall\", \"Osmall\", \"Psmall\", \"Qsmall\", \"Rsmall\", \"Ssmall\", \"Tsmall\", \"Usmall\", \"Vsmall\", \"Wsmall\", \"Xsmall\", \"Ysmall\", \"Zsmall\", \"colonmonetary\", \"onefitted\", \"rupiah\", \"Tildesmall\", \"\", \"\", \"asuperior\", \"centsuperior\", \"\", \"\", \"\", \"\", \"Aacutesmall\", \"Agravesmall\", \"Acircumflexsmall\", \"Adieresissmall\", \"Atildesmall\", \"Aringsmall\", \"Ccedillasmall\", \"Eacutesmall\", \"Egravesmall\", \"Ecircumflexsmall\", \"Edieresissmall\", \"Iacutesmall\", \"Igravesmall\", \"Icircumflexsmall\", \"Idieresissmall\", \"Ntildesmall\", \"Oacutesmall\", \"Ogravesmall\", \"Ocircumflexsmall\", \"Odieresissmall\", \"Otildesmall\", \"Uacutesmall\", \"Ugravesmall\", \"Ucircumflexsmall\", \"Udieresissmall\", \"\", \"eightsuperior\", \"fourinferior\", \"threeinferior\", \"sixinferior\", \"eightinferior\", \"seveninferior\", \"Scaronsmall\", \"\", \"centinferior\", \"twoinferior\", \"\", \"Dieresissmall\", \"\", \"Caronsmall\", \"osuperior\", \"fiveinferior\", \"\", \"commainferior\", \"periodinferior\", \"Yacutesmall\", \"\", \"dollarinferior\", \"\", \"\", \"Thornsmall\", \"\", \"nineinferior\", \"zeroinferior\", \"Zcaronsmall\", \"AEsmall\", \"Oslashsmall\", \"questiondownsmall\", \"oneinferior\", \"Lslashsmall\", \"\", \"\", \"\", \"\", \"\", \"\", \"Cedillasmall\", \"\", \"\", \"\", \"\", \"\", \"OEsmall\", \"figuredash\", \"hyphensuperior\", \"\", \"\", \"\", \"\", \"exclamdownsmall\", \"\", \"Ydieresissmall\", \"\", \"onesuperior\", \"twosuperior\", \"threesuperior\", \"foursuperior\", \"fivesuperior\", \"sixsuperior\", \"sevensuperior\", \"ninesuperior\", \"zerosuperior\", \"\", \"esuperior\", \"rsuperior\", \"tsuperior\", \"\", \"\", \"isuperior\", \"ssuperior\", \"dsuperior\", \"\", \"\", \"\", \"\", \"\", \"lsuperior\", \"Ogoneksmall\", \"Brevesmall\", \"Macronsmall\", \"bsuperior\", \"nsuperior\", \"msuperior\", \"commasuperior\", \"periodsuperior\", \"Dotaccentsmall\", \"Ringsmall\", \"\", \"\", \"\", \"\"];\nconst MacRomanEncoding = [\"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"space\", \"exclam\", \"quotedbl\", \"numbersign\", \"dollar\", \"percent\", \"ampersand\", \"quotesingle\", \"parenleft\", \"parenright\", \"asterisk\", \"plus\", \"comma\", \"hyphen\", \"period\", \"slash\", \"zero\", \"one\", \"two\", \"three\", \"four\", \"five\", \"six\", \"seven\", \"eight\", \"nine\", \"colon\", \"semicolon\", \"less\", \"equal\", \"greater\", \"question\", \"at\", \"A\", \"B\", \"C\", \"D\", \"E\", \"F\", \"G\", \"H\", \"I\", \"J\", \"K\", \"L\", \"M\", \"N\", \"O\", \"P\", \"Q\", \"R\", \"S\", \"T\", \"U\", \"V\", \"W\", \"X\", \"Y\", \"Z\", \"bracketleft\", \"backslash\", \"bracketright\", \"asciicircum\", \"underscore\", \"grave\", \"a\", \"b\", \"c\", \"d\", \"e\", \"f\", \"g\", \"h\", \"i\", \"j\", \"k\", \"l\", \"m\", \"n\", \"o\", \"p\", \"q\", \"r\", \"s\", \"t\", \"u\", \"v\", \"w\", \"x\", \"y\", \"z\", \"braceleft\", \"bar\", \"braceright\", \"asciitilde\", \"\", \"Adieresis\", \"Aring\", \"Ccedilla\", \"Eacute\", \"Ntilde\", \"Odieresis\", \"Udieresis\", \"aacute\", \"agrave\", \"acircumflex\", \"adieresis\", \"atilde\", \"aring\", \"ccedilla\", \"eacute\", \"egrave\", \"ecircumflex\", \"edieresis\", \"iacute\", \"igrave\", \"icircumflex\", \"idieresis\", \"ntilde\", \"oacute\", \"ograve\", \"ocircumflex\", \"odieresis\", \"otilde\", \"uacute\", \"ugrave\", \"ucircumflex\", \"udieresis\", \"dagger\", \"degree\", \"cent\", \"sterling\", \"section\", \"bullet\", \"paragraph\", \"germandbls\", \"registered\", \"copyright\", \"trademark\", \"acute\", \"dieresis\", \"notequal\", \"AE\", \"Oslash\", \"infinity\", \"plusminus\", \"lessequal\", \"greaterequal\", \"yen\", \"mu\", \"partialdiff\", \"summation\", \"product\", \"pi\", \"integral\", \"ordfeminine\", \"ordmasculine\", \"Omega\", \"ae\", \"oslash\", \"questiondown\", \"exclamdown\", \"logicalnot\", \"radical\", \"florin\", \"approxequal\", \"Delta\", \"guillemotleft\", \"guillemotright\", \"ellipsis\", \"space\", \"Agrave\", \"Atilde\", \"Otilde\", \"OE\", \"oe\", \"endash\", \"emdash\", \"quotedblleft\", \"quotedblright\", \"quoteleft\", \"quoteright\", \"divide\", \"lozenge\", \"ydieresis\", \"Ydieresis\", \"fraction\", \"currency\", \"guilsinglleft\", \"guilsinglright\", \"fi\", \"fl\", \"daggerdbl\", \"periodcentered\", \"quotesinglbase\", \"quotedblbase\", \"perthousand\", \"Acircumflex\", \"Ecircumflex\", \"Aacute\", \"Edieresis\", \"Egrave\", \"Iacute\", \"Icircumflex\", \"Idieresis\", \"Igrave\", \"Oacute\", \"Ocircumflex\", \"apple\", \"Ograve\", \"Uacute\", \"Ucircumflex\", \"Ugrave\", \"dotlessi\", \"circumflex\", \"tilde\", \"macron\", \"breve\", \"dotaccent\", \"ring\", \"cedilla\", \"hungarumlaut\", \"ogonek\", \"caron\"];\nexports.MacRomanEncoding = MacRomanEncoding;\nconst StandardEncoding = [\"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"space\", \"exclam\", \"quotedbl\", \"numbersign\", \"dollar\", \"percent\", \"ampersand\", \"quoteright\", \"parenleft\", \"parenright\", \"asterisk\", \"plus\", \"comma\", \"hyphen\", \"period\", \"slash\", \"zero\", \"one\", \"two\", \"three\", \"four\", \"five\", \"six\", \"seven\", \"eight\", \"nine\", \"colon\", \"semicolon\", \"less\", \"equal\", \"greater\", \"question\", \"at\", \"A\", \"B\", \"C\", \"D\", \"E\", \"F\", \"G\", \"H\", \"I\", \"J\", \"K\", \"L\", \"M\", \"N\", \"O\", \"P\", \"Q\", \"R\", \"S\", \"T\", \"U\", \"V\", \"W\", \"X\", \"Y\", \"Z\", \"bracketleft\", \"backslash\", \"bracketright\", \"asciicircum\", \"underscore\", \"quoteleft\", \"a\", \"b\", \"c\", \"d\", \"e\", \"f\", \"g\", \"h\", \"i\", \"j\", \"k\", \"l\", \"m\", \"n\", \"o\", \"p\", \"q\", \"r\", \"s\", \"t\", \"u\", \"v\", \"w\", \"x\", \"y\", \"z\", \"braceleft\", \"bar\", \"braceright\", \"asciitilde\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"exclamdown\", \"cent\", \"sterling\", \"fraction\", \"yen\", \"florin\", \"section\", \"currency\", \"quotesingle\", \"quotedblleft\", \"guillemotleft\", \"guilsinglleft\", \"guilsinglright\", \"fi\", \"fl\", \"\", \"endash\", \"dagger\", \"daggerdbl\", \"periodcentered\", \"\", \"paragraph\", \"bullet\", \"quotesinglbase\", \"quotedblbase\", \"quotedblright\", \"guillemotright\", \"ellipsis\", \"perthousand\", \"\", \"questiondown\", \"\", \"grave\", \"acute\", \"circumflex\", \"tilde\", \"macron\", \"breve\", \"dotaccent\", \"dieresis\", \"\", \"ring\", \"cedilla\", \"\", \"hungarumlaut\", \"ogonek\", \"caron\", \"emdash\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"AE\", \"\", \"ordfeminine\", \"\", \"\", \"\", \"\", \"Lslash\", \"Oslash\", \"OE\", \"ordmasculine\", \"\", \"\", \"\", \"\", \"\", \"ae\", \"\", \"\", \"\", \"dotlessi\", \"\", \"\", \"lslash\", \"oslash\", \"oe\", \"germandbls\", \"\", \"\", \"\", \"\"];\nexports.StandardEncoding = StandardEncoding;\nconst WinAnsiEncoding = [\"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"space\", \"exclam\", \"quotedbl\", \"numbersign\", \"dollar\", \"percent\", \"ampersand\", \"quotesingle\", \"parenleft\", \"parenright\", \"asterisk\", \"plus\", \"comma\", \"hyphen\", \"period\", \"slash\", \"zero\", \"one\", \"two\", \"three\", \"four\", \"five\", \"six\", \"seven\", \"eight\", \"nine\", \"colon\", \"semicolon\", \"less\", \"equal\", \"greater\", \"question\", \"at\", \"A\", \"B\", \"C\", \"D\", \"E\", \"F\", \"G\", \"H\", \"I\", \"J\", \"K\", \"L\", \"M\", \"N\", \"O\", \"P\", \"Q\", \"R\", \"S\", \"T\", \"U\", \"V\", \"W\", \"X\", \"Y\", \"Z\", \"bracketleft\", \"backslash\", \"bracketright\", \"asciicircum\", \"underscore\", \"grave\", \"a\", \"b\", \"c\", \"d\", \"e\", \"f\", \"g\", \"h\", \"i\", \"j\", \"k\", \"l\", \"m\", \"n\", \"o\", \"p\", \"q\", \"r\", \"s\", \"t\", \"u\", \"v\", \"w\", \"x\", \"y\", \"z\", \"braceleft\", \"bar\", \"braceright\", \"asciitilde\", \"bullet\", \"Euro\", \"bullet\", \"quotesinglbase\", \"florin\", \"quotedblbase\", \"ellipsis\", \"dagger\", \"daggerdbl\", \"circumflex\", \"perthousand\", \"Scaron\", \"guilsinglleft\", \"OE\", \"bullet\", \"Zcaron\", \"bullet\", \"bullet\", \"quoteleft\", \"quoteright\", \"quotedblleft\", \"quotedblright\", \"bullet\", \"endash\", \"emdash\", \"tilde\", \"trademark\", \"scaron\", \"guilsinglright\", \"oe\", \"bullet\", \"zcaron\", \"Ydieresis\", \"space\", \"exclamdown\", \"cent\", \"sterling\", \"currency\", \"yen\", \"brokenbar\", \"section\", \"dieresis\", \"copyright\", \"ordfeminine\", \"guillemotleft\", \"logicalnot\", \"hyphen\", \"registered\", \"macron\", \"degree\", \"plusminus\", \"twosuperior\", \"threesuperior\", \"acute\", \"mu\", \"paragraph\", \"periodcentered\", \"cedilla\", \"onesuperior\", \"ordmasculine\", \"guillemotright\", \"onequarter\", \"onehalf\", \"threequarters\", \"questiondown\", \"Agrave\", \"Aacute\", \"Acircumflex\", \"Atilde\", \"Adieresis\", \"Aring\", \"AE\", \"Ccedilla\", \"Egrave\", \"Eacute\", \"Ecircumflex\", \"Edieresis\", \"Igrave\", \"Iacute\", \"Icircumflex\", \"Idieresis\", \"Eth\", \"Ntilde\", \"Ograve\", \"Oacute\", \"Ocircumflex\", \"Otilde\", \"Odieresis\", \"multiply\", \"Oslash\", \"Ugrave\", \"Uacute\", \"Ucircumflex\", \"Udieresis\", \"Yacute\", \"Thorn\", \"germandbls\", \"agrave\", \"aacute\", \"acircumflex\", \"atilde\", \"adieresis\", \"aring\", \"ae\", \"ccedilla\", \"egrave\", \"eacute\", \"ecircumflex\", \"edieresis\", \"igrave\", \"iacute\", \"icircumflex\", \"idieresis\", \"eth\", \"ntilde\", \"ograve\", \"oacute\", \"ocircumflex\", \"otilde\", \"odieresis\", \"divide\", \"oslash\", \"ugrave\", \"uacute\", \"ucircumflex\", \"udieresis\", \"yacute\", \"thorn\", \"ydieresis\"];\nexports.WinAnsiEncoding = WinAnsiEncoding;\nconst SymbolSetEncoding = [\"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"space\", \"exclam\", \"universal\", \"numbersign\", \"existential\", \"percent\", \"ampersand\", \"suchthat\", \"parenleft\", \"parenright\", \"asteriskmath\", \"plus\", \"comma\", \"minus\", \"period\", \"slash\", \"zero\", \"one\", \"two\", \"three\", \"four\", \"five\", \"six\", \"seven\", \"eight\", \"nine\", \"colon\", \"semicolon\", \"less\", \"equal\", \"greater\", \"question\", \"congruent\", \"Alpha\", \"Beta\", \"Chi\", \"Delta\", \"Epsilon\", \"Phi\", \"Gamma\", \"Eta\", \"Iota\", \"theta1\", \"Kappa\", \"Lambda\", \"Mu\", \"Nu\", \"Omicron\", \"Pi\", \"Theta\", \"Rho\", \"Sigma\", \"Tau\", \"Upsilon\", \"sigma1\", \"Omega\", \"Xi\", \"Psi\", \"Zeta\", \"bracketleft\", \"therefore\", \"bracketright\", \"perpendicular\", \"underscore\", \"radicalex\", \"alpha\", \"beta\", \"chi\", \"delta\", \"epsilon\", \"phi\", \"gamma\", \"eta\", \"iota\", \"phi1\", \"kappa\", \"lambda\", \"mu\", \"nu\", \"omicron\", \"pi\", \"theta\", \"rho\", \"sigma\", \"tau\", \"upsilon\", \"omega1\", \"omega\", \"xi\", \"psi\", \"zeta\", \"braceleft\", \"bar\", \"braceright\", \"similar\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"Euro\", \"Upsilon1\", \"minute\", \"lessequal\", \"fraction\", \"infinity\", \"florin\", \"club\", \"diamond\", \"heart\", \"spade\", \"arrowboth\", \"arrowleft\", \"arrowup\", \"arrowright\", \"arrowdown\", \"degree\", \"plusminus\", \"second\", \"greaterequal\", \"multiply\", \"proportional\", \"partialdiff\", \"bullet\", \"divide\", \"notequal\", \"equivalence\", \"approxequal\", \"ellipsis\", \"arrowvertex\", \"arrowhorizex\", \"carriagereturn\", \"aleph\", \"Ifraktur\", \"Rfraktur\", \"weierstrass\", \"circlemultiply\", \"circleplus\", \"emptyset\", \"intersection\", \"union\", \"propersuperset\", \"reflexsuperset\", \"notsubset\", \"propersubset\", \"reflexsubset\", \"element\", \"notelement\", \"angle\", \"gradient\", \"registerserif\", \"copyrightserif\", \"trademarkserif\", \"product\", \"radical\", \"dotmath\", \"logicalnot\", \"logicaland\", \"logicalor\", \"arrowdblboth\", \"arrowdblleft\", \"arrowdblup\", \"arrowdblright\", \"arrowdbldown\", \"lozenge\", \"angleleft\", \"registersans\", \"copyrightsans\", \"trademarksans\", \"summation\", \"parenlefttp\", \"parenleftex\", \"parenleftbt\", \"bracketlefttp\", \"bracketleftex\", \"bracketleftbt\", \"bracelefttp\", \"braceleftmid\", \"braceleftbt\", \"braceex\", \"\", \"angleright\", \"integral\", \"integraltp\", \"integralex\", \"integralbt\", \"parenrighttp\", \"parenrightex\", \"parenrightbt\", \"bracketrighttp\", \"bracketrightex\", \"bracketrightbt\", \"bracerighttp\", \"bracerightmid\", \"bracerightbt\", \"\"];\nexports.SymbolSetEncoding = SymbolSetEncoding;\nconst ZapfDingbatsEncoding = [\"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"space\", \"a1\", \"a2\", \"a202\", \"a3\", \"a4\", \"a5\", \"a119\", \"a118\", \"a117\", \"a11\", \"a12\", \"a13\", \"a14\", \"a15\", \"a16\", \"a105\", \"a17\", \"a18\", \"a19\", \"a20\", \"a21\", \"a22\", \"a23\", \"a24\", \"a25\", \"a26\", \"a27\", \"a28\", \"a6\", \"a7\", \"a8\", \"a9\", \"a10\", \"a29\", \"a30\", \"a31\", \"a32\", \"a33\", \"a34\", \"a35\", \"a36\", \"a37\", \"a38\", \"a39\", \"a40\", \"a41\", \"a42\", \"a43\", \"a44\", \"a45\", \"a46\", \"a47\", \"a48\", \"a49\", \"a50\", \"a51\", \"a52\", \"a53\", \"a54\", \"a55\", \"a56\", \"a57\", \"a58\", \"a59\", \"a60\", \"a61\", \"a62\", \"a63\", \"a64\", \"a65\", \"a66\", \"a67\", \"a68\", \"a69\", \"a70\", \"a71\", \"a72\", \"a73\", \"a74\", \"a203\", \"a75\", \"a204\", \"a76\", \"a77\", \"a78\", \"a79\", \"a81\", \"a82\", \"a83\", \"a84\", \"a97\", \"a98\", \"a99\", \"a100\", \"\", \"a89\", \"a90\", \"a93\", \"a94\", \"a91\", \"a92\", \"a205\", \"a85\", \"a206\", \"a86\", \"a87\", \"a88\", \"a95\", \"a96\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"\", \"a101\", \"a102\", \"a103\", \"a104\", \"a106\", \"a107\", \"a108\", \"a112\", \"a111\", \"a110\", \"a109\", \"a120\", \"a121\", \"a122\", \"a123\", \"a124\", \"a125\", \"a126\", \"a127\", \"a128\", \"a129\", \"a130\", \"a131\", \"a132\", \"a133\", \"a134\", \"a135\", \"a136\", \"a137\", \"a138\", \"a139\", \"a140\", \"a141\", \"a142\", \"a143\", \"a144\", \"a145\", \"a146\", \"a147\", \"a148\", \"a149\", \"a150\", \"a151\", \"a152\", \"a153\", \"a154\", \"a155\", \"a156\", \"a157\", \"a158\", \"a159\", \"a160\", \"a161\", \"a163\", \"a164\", \"a196\", \"a165\", \"a192\", \"a166\", \"a167\", \"a168\", \"a169\", \"a170\", \"a171\", \"a172\", \"a173\", \"a162\", \"a174\", \"a175\", \"a176\", \"a177\", \"a178\", \"a179\", \"a193\", \"a180\", \"a199\", \"a181\", \"a200\", \"a182\", \"\", \"a201\", \"a183\", \"a184\", \"a197\", \"a185\", \"a194\", \"a198\", \"a186\", \"a195\", \"a187\", \"a188\", \"a189\", \"a190\", \"a191\", \"\"];\nexports.ZapfDingbatsEncoding = ZapfDingbatsEncoding;\n\nfunction getEncoding(encodingName) {\n  switch (encodingName) {\n    case \"WinAnsiEncoding\":\n      return WinAnsiEncoding;\n\n    case \"StandardEncoding\":\n      return StandardEncoding;\n\n    case \"MacRomanEncoding\":\n      return MacRomanEncoding;\n\n    case \"SymbolSetEncoding\":\n      return SymbolSetEncoding;\n\n    case \"ZapfDingbatsEncoding\":\n      return ZapfDingbatsEncoding;\n\n    case \"ExpertEncoding\":\n      return ExpertEncoding;\n\n    case \"MacExpertEncoding\":\n      return MacExpertEncoding;\n\n    default:\n      return null;\n  }\n}\n\n/***/ }),\n/* 20 */\n/***/ ((__unused_webpack_module, __webpack_exports__, __w_pdfjs_require__) => {\n\n__w_pdfjs_require__.r(__webpack_exports__);\n/* harmony export */ __w_pdfjs_require__.d(__webpack_exports__, {\n/* harmony export */   \"getDingbatsGlyphsUnicode\": () => (/* binding */ getDingbatsGlyphsUnicode),\n/* harmony export */   \"getGlyphsUnicode\": () => (/* binding */ getGlyphsUnicode)\n/* harmony export */ });\n/* harmony import */ var _core_utils_js__WEBPACK_IMPORTED_MODULE_0__ = __w_pdfjs_require__(8);\n\nconst getGlyphsUnicode = (0,_core_utils_js__WEBPACK_IMPORTED_MODULE_0__.getArrayLookupTableFactory)(function () {\n return [\n  \"A\",\n  0x0041,\n  \"AE\",\n  0x00c6,\n  \"AEacute\",\n  0x01fc,\n  \"AEmacron\",\n  0x01e2,\n  \"AEsmall\",\n  0xf7e6,\n  \"Aacute\",\n  0x00c1,\n  \"Aacutesmall\",\n  0xf7e1,\n  \"Abreve\",\n  0x0102,\n  \"Abreveacute\",\n  0x1eae,\n  \"Abrevecyrillic\",\n  0x04d0,\n  \"Abrevedotbelow\",\n  0x1eb6,\n  \"Abrevegrave\",\n  0x1eb0,\n  \"Abrevehookabove\",\n  0x1eb2,\n  \"Abrevetilde\",\n  0x1eb4,\n  \"Acaron\",\n  0x01cd,\n  \"Acircle\",\n  0x24b6,\n  \"Acircumflex\",\n  0x00c2,\n  \"Acircumflexacute\",\n  0x1ea4,\n  \"Acircumflexdotbelow\",\n  0x1eac,\n  \"Acircumflexgrave\",\n  0x1ea6,\n  \"Acircumflexhookabove\",\n  0x1ea8,\n  \"Acircumflexsmall\",\n  0xf7e2,\n  \"Acircumflextilde\",\n  0x1eaa,\n  \"Acute\",\n  0xf6c9,\n  \"Acutesmall\",\n  0xf7b4,\n  \"Acyrillic\",\n  0x0410,\n  \"Adblgrave\",\n  0x0200,\n  \"Adieresis\",\n  0x00c4,\n  \"Adieresiscyrillic\",\n  0x04d2,\n  \"Adieresismacron\",\n  0x01de,\n  \"Adieresissmall\",\n  0xf7e4,\n  \"Adotbelow\",\n  0x1ea0,\n  \"Adotmacron\",\n  0x01e0,\n  \"Agrave\",\n  0x00c0,\n  \"Agravesmall\",\n  0xf7e0,\n  \"Ahookabove\",\n  0x1ea2,\n  \"Aiecyrillic\",\n  0x04d4,\n  \"Ainvertedbreve\",\n  0x0202,\n  \"Alpha\",\n  0x0391,\n  \"Alphatonos\",\n  0x0386,\n  \"Amacron\",\n  0x0100,\n  \"Amonospace\",\n  0xff21,\n  \"Aogonek\",\n  0x0104,\n  \"Aring\",\n  0x00c5,\n  \"Aringacute\",\n  0x01fa,\n  \"Aringbelow\",\n  0x1e00,\n  \"Aringsmall\",\n  0xf7e5,\n  \"Asmall\",\n  0xf761,\n  \"Atilde\",\n  0x00c3,\n  \"Atildesmall\",\n  0xf7e3,\n  \"Aybarmenian\",\n  0x0531,\n  \"B\",\n  0x0042,\n  \"Bcircle\",\n  0x24b7,\n  \"Bdotaccent\",\n  0x1e02,\n  \"Bdotbelow\",\n  0x1e04,\n  \"Becyrillic\",\n  0x0411,\n  \"Benarmenian\",\n  0x0532,\n  \"Beta\",\n  0x0392,\n  \"Bhook\",\n  0x0181,\n  \"Blinebelow\",\n  0x1e06,\n  \"Bmonospace\",\n  0xff22,\n  \"Brevesmall\",\n  0xf6f4,\n  \"Bsmall\",\n  0xf762,\n  \"Btopbar\",\n  0x0182,\n  \"C\",\n  0x0043,\n  \"Caarmenian\",\n  0x053e,\n  \"Cacute\",\n  0x0106,\n  \"Caron\",\n  0xf6ca,\n  \"Caronsmall\",\n  0xf6f5,\n  \"Ccaron\",\n  0x010c,\n  \"Ccedilla\",\n  0x00c7,\n  \"Ccedillaacute\",\n  0x1e08,\n  \"Ccedillasmall\",\n  0xf7e7,\n  \"Ccircle\",\n  0x24b8,\n  \"Ccircumflex\",\n  0x0108,\n  \"Cdot\",\n  0x010a,\n  \"Cdotaccent\",\n  0x010a,\n  \"Cedillasmall\",\n  0xf7b8,\n  \"Chaarmenian\",\n  0x0549,\n  \"Cheabkhasiancyrillic\",\n  0x04bc,\n  \"Checyrillic\",\n  0x0427,\n  \"Chedescenderabkhasiancyrillic\",\n  0x04be,\n  \"Chedescendercyrillic\",\n  0x04b6,\n  \"Chedieresiscyrillic\",\n  0x04f4,\n  \"Cheharmenian\",\n  0x0543,\n  \"Chekhakassiancyrillic\",\n  0x04cb,\n  \"Cheverticalstrokecyrillic\",\n  0x04b8,\n  \"Chi\",\n  0x03a7,\n  \"Chook\",\n  0x0187,\n  \"Circumflexsmall\",\n  0xf6f6,\n  \"Cmonospace\",\n  0xff23,\n  \"Coarmenian\",\n  0x0551,\n  \"Csmall\",\n  0xf763,\n  \"D\",\n  0x0044,\n  \"DZ\",\n  0x01f1,\n  \"DZcaron\",\n  0x01c4,\n  \"Daarmenian\",\n  0x0534,\n  \"Dafrican\",\n  0x0189,\n  \"Dcaron\",\n  0x010e,\n  \"Dcedilla\",\n  0x1e10,\n  \"Dcircle\",\n  0x24b9,\n  \"Dcircumflexbelow\",\n  0x1e12,\n  \"Dcroat\",\n  0x0110,\n  \"Ddotaccent\",\n  0x1e0a,\n  \"Ddotbelow\",\n  0x1e0c,\n  \"Decyrillic\",\n  0x0414,\n  \"Deicoptic\",\n  0x03ee,\n  \"Delta\",\n  0x2206,\n  \"Deltagreek\",\n  0x0394,\n  \"Dhook\",\n  0x018a,\n  \"Dieresis\",\n  0xf6cb,\n  \"DieresisAcute\",\n  0xf6cc,\n  \"DieresisGrave\",\n  0xf6cd,\n  \"Dieresissmall\",\n  0xf7a8,\n  \"Digammagreek\",\n  0x03dc,\n  \"Djecyrillic\",\n  0x0402,\n  \"Dlinebelow\",\n  0x1e0e,\n  \"Dmonospace\",\n  0xff24,\n  \"Dotaccentsmall\",\n  0xf6f7,\n  \"Dslash\",\n  0x0110,\n  \"Dsmall\",\n  0xf764,\n  \"Dtopbar\",\n  0x018b,\n  \"Dz\",\n  0x01f2,\n  \"Dzcaron\",\n  0x01c5,\n  \"Dzeabkhasiancyrillic\",\n  0x04e0,\n  \"Dzecyrillic\",\n  0x0405,\n  \"Dzhecyrillic\",\n  0x040f,\n  \"E\",\n  0x0045,\n  \"Eacute\",\n  0x00c9,\n  \"Eacutesmall\",\n  0xf7e9,\n  \"Ebreve\",\n  0x0114,\n  \"Ecaron\",\n  0x011a,\n  \"Ecedillabreve\",\n  0x1e1c,\n  \"Echarmenian\",\n  0x0535,\n  \"Ecircle\",\n  0x24ba,\n  \"Ecircumflex\",\n  0x00ca,\n  \"Ecircumflexacute\",\n  0x1ebe,\n  \"Ecircumflexbelow\",\n  0x1e18,\n  \"Ecircumflexdotbelow\",\n  0x1ec6,\n  \"Ecircumflexgrave\",\n  0x1ec0,\n  \"Ecircumflexhookabove\",\n  0x1ec2,\n  \"Ecircumflexsmall\",\n  0xf7ea,\n  \"Ecircumflextilde\",\n  0x1ec4,\n  \"Ecyrillic\",\n  0x0404,\n  \"Edblgrave\",\n  0x0204,\n  \"Edieresis\",\n  0x00cb,\n  \"Edieresissmall\",\n  0xf7eb,\n  \"Edot\",\n  0x0116,\n  \"Edotaccent\",\n  0x0116,\n  \"Edotbelow\",\n  0x1eb8,\n  \"Efcyrillic\",\n  0x0424,\n  \"Egrave\",\n  0x00c8,\n  \"Egravesmall\",\n  0xf7e8,\n  \"Eharmenian\",\n  0x0537,\n  \"Ehookabove\",\n  0x1eba,\n  \"Eightroman\",\n  0x2167,\n  \"Einvertedbreve\",\n  0x0206,\n  \"Eiotifiedcyrillic\",\n  0x0464,\n  \"Elcyrillic\",\n  0x041b,\n  \"Elevenroman\",\n  0x216a,\n  \"Emacron\",\n  0x0112,\n  \"Emacronacute\",\n  0x1e16,\n  \"Emacrongrave\",\n  0x1e14,\n  \"Emcyrillic\",\n  0x041c,\n  \"Emonospace\",\n  0xff25,\n  \"Encyrillic\",\n  0x041d,\n  \"Endescendercyrillic\",\n  0x04a2,\n  \"Eng\",\n  0x014a,\n  \"Enghecyrillic\",\n  0x04a4,\n  \"Enhookcyrillic\",\n  0x04c7,\n  \"Eogonek\",\n  0x0118,\n  \"Eopen\",\n  0x0190,\n  \"Epsilon\",\n  0x0395,\n  \"Epsilontonos\",\n  0x0388,\n  \"Ercyrillic\",\n  0x0420,\n  \"Ereversed\",\n  0x018e,\n  \"Ereversedcyrillic\",\n  0x042d,\n  \"Escyrillic\",\n  0x0421,\n  \"Esdescendercyrillic\",\n  0x04aa,\n  \"Esh\",\n  0x01a9,\n  \"Esmall\",\n  0xf765,\n  \"Eta\",\n  0x0397,\n  \"Etarmenian\",\n  0x0538,\n  \"Etatonos\",\n  0x0389,\n  \"Eth\",\n  0x00d0,\n  \"Ethsmall\",\n  0xf7f0,\n  \"Etilde\",\n  0x1ebc,\n  \"Etildebelow\",\n  0x1e1a,\n  \"Euro\",\n  0x20ac,\n  \"Ezh\",\n  0x01b7,\n  \"Ezhcaron\",\n  0x01ee,\n  \"Ezhreversed\",\n  0x01b8,\n  \"F\",\n  0x0046,\n  \"Fcircle\",\n  0x24bb,\n  \"Fdotaccent\",\n  0x1e1e,\n  \"Feharmenian\",\n  0x0556,\n  \"Feicoptic\",\n  0x03e4,\n  \"Fhook\",\n  0x0191,\n  \"Fitacyrillic\",\n  0x0472,\n  \"Fiveroman\",\n  0x2164,\n  \"Fmonospace\",\n  0xff26,\n  \"Fourroman\",\n  0x2163,\n  \"Fsmall\",\n  0xf766,\n  \"G\",\n  0x0047,\n  \"GBsquare\",\n  0x3387,\n  \"Gacute\",\n  0x01f4,\n  \"Gamma\",\n  0x0393,\n  \"Gammaafrican\",\n  0x0194,\n  \"Gangiacoptic\",\n  0x03ea,\n  \"Gbreve\",\n  0x011e,\n  \"Gcaron\",\n  0x01e6,\n  \"Gcedilla\",\n  0x0122,\n  \"Gcircle\",\n  0x24bc,\n  \"Gcircumflex\",\n  0x011c,\n  \"Gcommaaccent\",\n  0x0122,\n  \"Gdot\",\n  0x0120,\n  \"Gdotaccent\",\n  0x0120,\n  \"Gecyrillic\",\n  0x0413,\n  \"Ghadarmenian\",\n  0x0542,\n  \"Ghemiddlehookcyrillic\",\n  0x0494,\n  \"Ghestrokecyrillic\",\n  0x0492,\n  \"Gheupturncyrillic\",\n  0x0490,\n  \"Ghook\",\n  0x0193,\n  \"Gimarmenian\",\n  0x0533,\n  \"Gjecyrillic\",\n  0x0403,\n  \"Gmacron\",\n  0x1e20,\n  \"Gmonospace\",\n  0xff27,\n  \"Grave\",\n  0xf6ce,\n  \"Gravesmall\",\n  0xf760,\n  \"Gsmall\",\n  0xf767,\n  \"Gsmallhook\",\n  0x029b,\n  \"Gstroke\",\n  0x01e4,\n  \"H\",\n  0x0048,\n  \"H18533\",\n  0x25cf,\n  \"H18543\",\n  0x25aa,\n  \"H18551\",\n  0x25ab,\n  \"H22073\",\n  0x25a1,\n  \"HPsquare\",\n  0x33cb,\n  \"Haabkhasiancyrillic\",\n  0x04a8,\n  \"Hadescendercyrillic\",\n  0x04b2,\n  \"Hardsigncyrillic\",\n  0x042a,\n  \"Hbar\",\n  0x0126,\n  \"Hbrevebelow\",\n  0x1e2a,\n  \"Hcedilla\",\n  0x1e28,\n  \"Hcircle\",\n  0x24bd,\n  \"Hcircumflex\",\n  0x0124,\n  \"Hdieresis\",\n  0x1e26,\n  \"Hdotaccent\",\n  0x1e22,\n  \"Hdotbelow\",\n  0x1e24,\n  \"Hmonospace\",\n  0xff28,\n  \"Hoarmenian\",\n  0x0540,\n  \"Horicoptic\",\n  0x03e8,\n  \"Hsmall\",\n  0xf768,\n  \"Hungarumlaut\",\n  0xf6cf,\n  \"Hungarumlautsmall\",\n  0xf6f8,\n  \"Hzsquare\",\n  0x3390,\n  \"I\",\n  0x0049,\n  \"IAcyrillic\",\n  0x042f,\n  \"IJ\",\n  0x0132,\n  \"IUcyrillic\",\n  0x042e,\n  \"Iacute\",\n  0x00cd,\n  \"Iacutesmall\",\n  0xf7ed,\n  \"Ibreve\",\n  0x012c,\n  \"Icaron\",\n  0x01cf,\n  \"Icircle\",\n  0x24be,\n  \"Icircumflex\",\n  0x00ce,\n  \"Icircumflexsmall\",\n  0xf7ee,\n  \"Icyrillic\",\n  0x0406,\n  \"Idblgrave\",\n  0x0208,\n  \"Idieresis\",\n  0x00cf,\n  \"Idieresisacute\",\n  0x1e2e,\n  \"Idieresiscyrillic\",\n  0x04e4,\n  \"Idieresissmall\",\n  0xf7ef,\n  \"Idot\",\n  0x0130,\n  \"Idotaccent\",\n  0x0130,\n  \"Idotbelow\",\n  0x1eca,\n  \"Iebrevecyrillic\",\n  0x04d6,\n  \"Iecyrillic\",\n  0x0415,\n  \"Ifraktur\",\n  0x2111,\n  \"Igrave\",\n  0x00cc,\n  \"Igravesmall\",\n  0xf7ec,\n  \"Ihookabove\",\n  0x1ec8,\n  \"Iicyrillic\",\n  0x0418,\n  \"Iinvertedbreve\",\n  0x020a,\n  \"Iishortcyrillic\",\n  0x0419,\n  \"Imacron\",\n  0x012a,\n  \"Imacroncyrillic\",\n  0x04e2,\n  \"Imonospace\",\n  0xff29,\n  \"Iniarmenian\",\n  0x053b,\n  \"Iocyrillic\",\n  0x0401,\n  \"Iogonek\",\n  0x012e,\n  \"Iota\",\n  0x0399,\n  \"Iotaafrican\",\n  0x0196,\n  \"Iotadieresis\",\n  0x03aa,\n  \"Iotatonos\",\n  0x038a,\n  \"Ismall\",\n  0xf769,\n  \"Istroke\",\n  0x0197,\n  \"Itilde\",\n  0x0128,\n  \"Itildebelow\",\n  0x1e2c,\n  \"Izhitsacyrillic\",\n  0x0474,\n  \"Izhitsadblgravecyrillic\",\n  0x0476,\n  \"J\",\n  0x004a,\n  \"Jaarmenian\",\n  0x0541,\n  \"Jcircle\",\n  0x24bf,\n  \"Jcircumflex\",\n  0x0134,\n  \"Jecyrillic\",\n  0x0408,\n  \"Jheharmenian\",\n  0x054b,\n  \"Jmonospace\",\n  0xff2a,\n  \"Jsmall\",\n  0xf76a,\n  \"K\",\n  0x004b,\n  \"KBsquare\",\n  0x3385,\n  \"KKsquare\",\n  0x33cd,\n  \"Kabashkircyrillic\",\n  0x04a0,\n  \"Kacute\",\n  0x1e30,\n  \"Kacyrillic\",\n  0x041a,\n  \"Kadescendercyrillic\",\n  0x049a,\n  \"Kahookcyrillic\",\n  0x04c3,\n  \"Kappa\",\n  0x039a,\n  \"Kastrokecyrillic\",\n  0x049e,\n  \"Kaverticalstrokecyrillic\",\n  0x049c,\n  \"Kcaron\",\n  0x01e8,\n  \"Kcedilla\",\n  0x0136,\n  \"Kcircle\",\n  0x24c0,\n  \"Kcommaaccent\",\n  0x0136,\n  \"Kdotbelow\",\n  0x1e32,\n  \"Keharmenian\",\n  0x0554,\n  \"Kenarmenian\",\n  0x053f,\n  \"Khacyrillic\",\n  0x0425,\n  \"Kheicoptic\",\n  0x03e6,\n  \"Khook\",\n  0x0198,\n  \"Kjecyrillic\",\n  0x040c,\n  \"Klinebelow\",\n  0x1e34,\n  \"Kmonospace\",\n  0xff2b,\n  \"Koppacyrillic\",\n  0x0480,\n  \"Koppagreek\",\n  0x03de,\n  \"Ksicyrillic\",\n  0x046e,\n  \"Ksmall\",\n  0xf76b,\n  \"L\",\n  0x004c,\n  \"LJ\",\n  0x01c7,\n  \"LL\",\n  0xf6bf,\n  \"Lacute\",\n  0x0139,\n  \"Lambda\",\n  0x039b,\n  \"Lcaron\",\n  0x013d,\n  \"Lcedilla\",\n  0x013b,\n  \"Lcircle\",\n  0x24c1,\n  \"Lcircumflexbelow\",\n  0x1e3c,\n  \"Lcommaaccent\",\n  0x013b,\n  \"Ldot\",\n  0x013f,\n  \"Ldotaccent\",\n  0x013f,\n  \"Ldotbelow\",\n  0x1e36,\n  \"Ldotbelowmacron\",\n  0x1e38,\n  \"Liwnarmenian\",\n  0x053c,\n  \"Lj\",\n  0x01c8,\n  \"Ljecyrillic\",\n  0x0409,\n  \"Llinebelow\",\n  0x1e3a,\n  \"Lmonospace\",\n  0xff2c,\n  \"Lslash\",\n  0x0141,\n  \"Lslashsmall\",\n  0xf6f9,\n  \"Lsmall\",\n  0xf76c,\n  \"M\",\n  0x004d,\n  \"MBsquare\",\n  0x3386,\n  \"Macron\",\n  0xf6d0,\n  \"Macronsmall\",\n  0xf7af,\n  \"Macute\",\n  0x1e3e,\n  \"Mcircle\",\n  0x24c2,\n  \"Mdotaccent\",\n  0x1e40,\n  \"Mdotbelow\",\n  0x1e42,\n  \"Menarmenian\",\n  0x0544,\n  \"Mmonospace\",\n  0xff2d,\n  \"Msmall\",\n  0xf76d,\n  \"Mturned\",\n  0x019c,\n  \"Mu\",\n  0x039c,\n  \"N\",\n  0x004e,\n  \"NJ\",\n  0x01ca,\n  \"Nacute\",\n  0x0143,\n  \"Ncaron\",\n  0x0147,\n  \"Ncedilla\",\n  0x0145,\n  \"Ncircle\",\n  0x24c3,\n  \"Ncircumflexbelow\",\n  0x1e4a,\n  \"Ncommaaccent\",\n  0x0145,\n  \"Ndotaccent\",\n  0x1e44,\n  \"Ndotbelow\",\n  0x1e46,\n  \"Nhookleft\",\n  0x019d,\n  \"Nineroman\",\n  0x2168,\n  \"Nj\",\n  0x01cb,\n  \"Njecyrillic\",\n  0x040a,\n  \"Nlinebelow\",\n  0x1e48,\n  \"Nmonospace\",\n  0xff2e,\n  \"Nowarmenian\",\n  0x0546,\n  \"Nsmall\",\n  0xf76e,\n  \"Ntilde\",\n  0x00d1,\n  \"Ntildesmall\",\n  0xf7f1,\n  \"Nu\",\n  0x039d,\n  \"O\",\n  0x004f,\n  \"OE\",\n  0x0152,\n  \"OEsmall\",\n  0xf6fa,\n  \"Oacute\",\n  0x00d3,\n  \"Oacutesmall\",\n  0xf7f3,\n  \"Obarredcyrillic\",\n  0x04e8,\n  \"Obarreddieresiscyrillic\",\n  0x04ea,\n  \"Obreve\",\n  0x014e,\n  \"Ocaron\",\n  0x01d1,\n  \"Ocenteredtilde\",\n  0x019f,\n  \"Ocircle\",\n  0x24c4,\n  \"Ocircumflex\",\n  0x00d4,\n  \"Ocircumflexacute\",\n  0x1ed0,\n  \"Ocircumflexdotbelow\",\n  0x1ed8,\n  \"Ocircumflexgrave\",\n  0x1ed2,\n  \"Ocircumflexhookabove\",\n  0x1ed4,\n  \"Ocircumflexsmall\",\n  0xf7f4,\n  \"Ocircumflextilde\",\n  0x1ed6,\n  \"Ocyrillic\",\n  0x041e,\n  \"Odblacute\",\n  0x0150,\n  \"Odblgrave\",\n  0x020c,\n  \"Odieresis\",\n  0x00d6,\n  \"Odieresiscyrillic\",\n  0x04e6,\n  \"Odieresissmall\",\n  0xf7f6,\n  \"Odotbelow\",\n  0x1ecc,\n  \"Ogoneksmall\",\n  0xf6fb,\n  \"Ograve\",\n  0x00d2,\n  \"Ogravesmall\",\n  0xf7f2,\n  \"Oharmenian\",\n  0x0555,\n  \"Ohm\",\n  0x2126,\n  \"Ohookabove\",\n  0x1ece,\n  \"Ohorn\",\n  0x01a0,\n  \"Ohornacute\",\n  0x1eda,\n  \"Ohorndotbelow\",\n  0x1ee2,\n  \"Ohorngrave\",\n  0x1edc,\n  \"Ohornhookabove\",\n  0x1ede,\n  \"Ohorntilde\",\n  0x1ee0,\n  \"Ohungarumlaut\",\n  0x0150,\n  \"Oi\",\n  0x01a2,\n  \"Oinvertedbreve\",\n  0x020e,\n  \"Omacron\",\n  0x014c,\n  \"Omacronacute\",\n  0x1e52,\n  \"Omacrongrave\",\n  0x1e50,\n  \"Omega\",\n  0x2126,\n  \"Omegacyrillic\",\n  0x0460,\n  \"Omegagreek\",\n  0x03a9,\n  \"Omegaroundcyrillic\",\n  0x047a,\n  \"Omegatitlocyrillic\",\n  0x047c,\n  \"Omegatonos\",\n  0x038f,\n  \"Omicron\",\n  0x039f,\n  \"Omicrontonos\",\n  0x038c,\n  \"Omonospace\",\n  0xff2f,\n  \"Oneroman\",\n  0x2160,\n  \"Oogonek\",\n  0x01ea,\n  \"Oogonekmacron\",\n  0x01ec,\n  \"Oopen\",\n  0x0186,\n  \"Oslash\",\n  0x00d8,\n  \"Oslashacute\",\n  0x01fe,\n  \"Oslashsmall\",\n  0xf7f8,\n  \"Osmall\",\n  0xf76f,\n  \"Ostrokeacute\",\n  0x01fe,\n  \"Otcyrillic\",\n  0x047e,\n  \"Otilde\",\n  0x00d5,\n  \"Otildeacute\",\n  0x1e4c,\n  \"Otildedieresis\",\n  0x1e4e,\n  \"Otildesmall\",\n  0xf7f5,\n  \"P\",\n  0x0050,\n  \"Pacute\",\n  0x1e54,\n  \"Pcircle\",\n  0x24c5,\n  \"Pdotaccent\",\n  0x1e56,\n  \"Pecyrillic\",\n  0x041f,\n  \"Peharmenian\",\n  0x054a,\n  \"Pemiddlehookcyrillic\",\n  0x04a6,\n  \"Phi\",\n  0x03a6,\n  \"Phook\",\n  0x01a4,\n  \"Pi\",\n  0x03a0,\n  \"Piwrarmenian\",\n  0x0553,\n  \"Pmonospace\",\n  0xff30,\n  \"Psi\",\n  0x03a8,\n  \"Psicyrillic\",\n  0x0470,\n  \"Psmall\",\n  0xf770,\n  \"Q\",\n  0x0051,\n  \"Qcircle\",\n  0x24c6,\n  \"Qmonospace\",\n  0xff31,\n  \"Qsmall\",\n  0xf771,\n  \"R\",\n  0x0052,\n  \"Raarmenian\",\n  0x054c,\n  \"Racute\",\n  0x0154,\n  \"Rcaron\",\n  0x0158,\n  \"Rcedilla\",\n  0x0156,\n  \"Rcircle\",\n  0x24c7,\n  \"Rcommaaccent\",\n  0x0156,\n  \"Rdblgrave\",\n  0x0210,\n  \"Rdotaccent\",\n  0x1e58,\n  \"Rdotbelow\",\n  0x1e5a,\n  \"Rdotbelowmacron\",\n  0x1e5c,\n  \"Reharmenian\",\n  0x0550,\n  \"Rfraktur\",\n  0x211c,\n  \"Rho\",\n  0x03a1,\n  \"Ringsmall\",\n  0xf6fc,\n  \"Rinvertedbreve\",\n  0x0212,\n  \"Rlinebelow\",\n  0x1e5e,\n  \"Rmonospace\",\n  0xff32,\n  \"Rsmall\",\n  0xf772,\n  \"Rsmallinverted\",\n  0x0281,\n  \"Rsmallinvertedsuperior\",\n  0x02b6,\n  \"S\",\n  0x0053,\n  \"SF010000\",\n  0x250c,\n  \"SF020000\",\n  0x2514,\n  \"SF030000\",\n  0x2510,\n  \"SF040000\",\n  0x2518,\n  \"SF050000\",\n  0x253c,\n  \"SF060000\",\n  0x252c,\n  \"SF070000\",\n  0x2534,\n  \"SF080000\",\n  0x251c,\n  \"SF090000\",\n  0x2524,\n  \"SF100000\",\n  0x2500,\n  \"SF110000\",\n  0x2502,\n  \"SF190000\",\n  0x2561,\n  \"SF200000\",\n  0x2562,\n  \"SF210000\",\n  0x2556,\n  \"SF220000\",\n  0x2555,\n  \"SF230000\",\n  0x2563,\n  \"SF240000\",\n  0x2551,\n  \"SF250000\",\n  0x2557,\n  \"SF260000\",\n  0x255d,\n  \"SF270000\",\n  0x255c,\n  \"SF280000\",\n  0x255b,\n  \"SF360000\",\n  0x255e,\n  \"SF370000\",\n  0x255f,\n  \"SF380000\",\n  0x255a,\n  \"SF390000\",\n  0x2554,\n  \"SF400000\",\n  0x2569,\n  \"SF410000\",\n  0x2566,\n  \"SF420000\",\n  0x2560,\n  \"SF430000\",\n  0x2550,\n  \"SF440000\",\n  0x256c,\n  \"SF450000\",\n  0x2567,\n  \"SF460000\",\n  0x2568,\n  \"SF470000\",\n  0x2564,\n  \"SF480000\",\n  0x2565,\n  \"SF490000\",\n  0x2559,\n  \"SF500000\",\n  0x2558,\n  \"SF510000\",\n  0x2552,\n  \"SF520000\",\n  0x2553,\n  \"SF530000\",\n  0x256b,\n  \"SF540000\",\n  0x256a,\n  \"Sacute\",\n  0x015a,\n  \"Sacutedotaccent\",\n  0x1e64,\n  \"Sampigreek\",\n  0x03e0,\n  \"Scaron\",\n  0x0160,\n  \"Scarondotaccent\",\n  0x1e66,\n  \"Scaronsmall\",\n  0xf6fd,\n  \"Scedilla\",\n  0x015e,\n  \"Schwa\",\n  0x018f,\n  \"Schwacyrillic\",\n  0x04d8,\n  \"Schwadieresiscyrillic\",\n  0x04da,\n  \"Scircle\",\n  0x24c8,\n  \"Scircumflex\",\n  0x015c,\n  \"Scommaaccent\",\n  0x0218,\n  \"Sdotaccent\",\n  0x1e60,\n  \"Sdotbelow\",\n  0x1e62,\n  \"Sdotbelowdotaccent\",\n  0x1e68,\n  \"Seharmenian\",\n  0x054d,\n  \"Sevenroman\",\n  0x2166,\n  \"Shaarmenian\",\n  0x0547,\n  \"Shacyrillic\",\n  0x0428,\n  \"Shchacyrillic\",\n  0x0429,\n  \"Sheicoptic\",\n  0x03e2,\n  \"Shhacyrillic\",\n  0x04ba,\n  \"Shimacoptic\",\n  0x03ec,\n  \"Sigma\",\n  0x03a3,\n  \"Sixroman\",\n  0x2165,\n  \"Smonospace\",\n  0xff33,\n  \"Softsigncyrillic\",\n  0x042c,\n  \"Ssmall\",\n  0xf773,\n  \"Stigmagreek\",\n  0x03da,\n  \"T\",\n  0x0054,\n  \"Tau\",\n  0x03a4,\n  \"Tbar\",\n  0x0166,\n  \"Tcaron\",\n  0x0164,\n  \"Tcedilla\",\n  0x0162,\n  \"Tcircle\",\n  0x24c9,\n  \"Tcircumflexbelow\",\n  0x1e70,\n  \"Tcommaaccent\",\n  0x0162,\n  \"Tdotaccent\",\n  0x1e6a,\n  \"Tdotbelow\",\n  0x1e6c,\n  \"Tecyrillic\",\n  0x0422,\n  \"Tedescendercyrillic\",\n  0x04ac,\n  \"Tenroman\",\n  0x2169,\n  \"Tetsecyrillic\",\n  0x04b4,\n  \"Theta\",\n  0x0398,\n  \"Thook\",\n  0x01ac,\n  \"Thorn\",\n  0x00de,\n  \"Thornsmall\",\n  0xf7fe,\n  \"Threeroman\",\n  0x2162,\n  \"Tildesmall\",\n  0xf6fe,\n  \"Tiwnarmenian\",\n  0x054f,\n  \"Tlinebelow\",\n  0x1e6e,\n  \"Tmonospace\",\n  0xff34,\n  \"Toarmenian\",\n  0x0539,\n  \"Tonefive\",\n  0x01bc,\n  \"Tonesix\",\n  0x0184,\n  \"Tonetwo\",\n  0x01a7,\n  \"Tretroflexhook\",\n  0x01ae,\n  \"Tsecyrillic\",\n  0x0426,\n  \"Tshecyrillic\",\n  0x040b,\n  \"Tsmall\",\n  0xf774,\n  \"Twelveroman\",\n  0x216b,\n  \"Tworoman\",\n  0x2161,\n  \"U\",\n  0x0055,\n  \"Uacute\",\n  0x00da,\n  \"Uacutesmall\",\n  0xf7fa,\n  \"Ubreve\",\n  0x016c,\n  \"Ucaron\",\n  0x01d3,\n  \"Ucircle\",\n  0x24ca,\n  \"Ucircumflex\",\n  0x00db,\n  \"Ucircumflexbelow\",\n  0x1e76,\n  \"Ucircumflexsmall\",\n  0xf7fb,\n  \"Ucyrillic\",\n  0x0423,\n  \"Udblacute\",\n  0x0170,\n  \"Udblgrave\",\n  0x0214,\n  \"Udieresis\",\n  0x00dc,\n  \"Udieresisacute\",\n  0x01d7,\n  \"Udieresisbelow\",\n  0x1e72,\n  \"Udieresiscaron\",\n  0x01d9,\n  \"Udieresiscyrillic\",\n  0x04f0,\n  \"Udieresisgrave\",\n  0x01db,\n  \"Udieresismacron\",\n  0x01d5,\n  \"Udieresissmall\",\n  0xf7fc,\n  \"Udotbelow\",\n  0x1ee4,\n  \"Ugrave\",\n  0x00d9,\n  \"Ugravesmall\",\n  0xf7f9,\n  \"Uhookabove\",\n  0x1ee6,\n  \"Uhorn\",\n  0x01af,\n  \"Uhornacute\",\n  0x1ee8,\n  \"Uhorndotbelow\",\n  0x1ef0,\n  \"Uhorngrave\",\n  0x1eea,\n  \"Uhornhookabove\",\n  0x1eec,\n  \"Uhorntilde\",\n  0x1eee,\n  \"Uhungarumlaut\",\n  0x0170,\n  \"Uhungarumlautcyrillic\",\n  0x04f2,\n  \"Uinvertedbreve\",\n  0x0216,\n  \"Ukcyrillic\",\n  0x0478,\n  \"Umacron\",\n  0x016a,\n  \"Umacroncyrillic\",\n  0x04ee,\n  \"Umacrondieresis\",\n  0x1e7a,\n  \"Umonospace\",\n  0xff35,\n  \"Uogonek\",\n  0x0172,\n  \"Upsilon\",\n  0x03a5,\n  \"Upsilon1\",\n  0x03d2,\n  \"Upsilonacutehooksymbolgreek\",\n  0x03d3,\n  \"Upsilonafrican\",\n  0x01b1,\n  \"Upsilondieresis\",\n  0x03ab,\n  \"Upsilondieresishooksymbolgreek\",\n  0x03d4,\n  \"Upsilonhooksymbol\",\n  0x03d2,\n  \"Upsilontonos\",\n  0x038e,\n  \"Uring\",\n  0x016e,\n  \"Ushortcyrillic\",\n  0x040e,\n  \"Usmall\",\n  0xf775,\n  \"Ustraightcyrillic\",\n  0x04ae,\n  \"Ustraightstrokecyrillic\",\n  0x04b0,\n  \"Utilde\",\n  0x0168,\n  \"Utildeacute\",\n  0x1e78,\n  \"Utildebelow\",\n  0x1e74,\n  \"V\",\n  0x0056,\n  \"Vcircle\",\n  0x24cb,\n  \"Vdotbelow\",\n  0x1e7e,\n  \"Vecyrillic\",\n  0x0412,\n  \"Vewarmenian\",\n  0x054e,\n  \"Vhook\",\n  0x01b2,\n  \"Vmonospace\",\n  0xff36,\n  \"Voarmenian\",\n  0x0548,\n  \"Vsmall\",\n  0xf776,\n  \"Vtilde\",\n  0x1e7c,\n  \"W\",\n  0x0057,\n  \"Wacute\",\n  0x1e82,\n  \"Wcircle\",\n  0x24cc,\n  \"Wcircumflex\",\n  0x0174,\n  \"Wdieresis\",\n  0x1e84,\n  \"Wdotaccent\",\n  0x1e86,\n  \"Wdotbelow\",\n  0x1e88,\n  \"Wgrave\",\n  0x1e80,\n  \"Wmonospace\",\n  0xff37,\n  \"Wsmall\",\n  0xf777,\n  \"X\",\n  0x0058,\n  \"Xcircle\",\n  0x24cd,\n  \"Xdieresis\",\n  0x1e8c,\n  \"Xdotaccent\",\n  0x1e8a,\n  \"Xeharmenian\",\n  0x053d,\n  \"Xi\",\n  0x039e,\n  \"Xmonospace\",\n  0xff38,\n  \"Xsmall\",\n  0xf778,\n  \"Y\",\n  0x0059,\n  \"Yacute\",\n  0x00dd,\n  \"Yacutesmall\",\n  0xf7fd,\n  \"Yatcyrillic\",\n  0x0462,\n  \"Ycircle\",\n  0x24ce,\n  \"Ycircumflex\",\n  0x0176,\n  \"Ydieresis\",\n  0x0178,\n  \"Ydieresissmall\",\n  0xf7ff,\n  \"Ydotaccent\",\n  0x1e8e,\n  \"Ydotbelow\",\n  0x1ef4,\n  \"Yericyrillic\",\n  0x042b,\n  \"Yerudieresiscyrillic\",\n  0x04f8,\n  \"Ygrave\",\n  0x1ef2,\n  \"Yhook\",\n  0x01b3,\n  \"Yhookabove\",\n  0x1ef6,\n  \"Yiarmenian\",\n  0x0545,\n  \"Yicyrillic\",\n  0x0407,\n  \"Yiwnarmenian\",\n  0x0552,\n  \"Ymonospace\",\n  0xff39,\n  \"Ysmall\",\n  0xf779,\n  \"Ytilde\",\n  0x1ef8,\n  \"Yusbigcyrillic\",\n  0x046a,\n  \"Yusbigiotifiedcyrillic\",\n  0x046c,\n  \"Yuslittlecyrillic\",\n  0x0466,\n  \"Yuslittleiotifiedcyrillic\",\n  0x0468,\n  \"Z\",\n  0x005a,\n  \"Zaarmenian\",\n  0x0536,\n  \"Zacute\",\n  0x0179,\n  \"Zcaron\",\n  0x017d,\n  \"Zcaronsmall\",\n  0xf6ff,\n  \"Zcircle\",\n  0x24cf,\n  \"Zcircumflex\",\n  0x1e90,\n  \"Zdot\",\n  0x017b,\n  \"Zdotaccent\",\n  0x017b,\n  \"Zdotbelow\",\n  0x1e92,\n  \"Zecyrillic\",\n  0x0417,\n  \"Zedescendercyrillic\",\n  0x0498,\n  \"Zedieresiscyrillic\",\n  0x04de,\n  \"Zeta\",\n  0x0396,\n  \"Zhearmenian\",\n  0x053a,\n  \"Zhebrevecyrillic\",\n  0x04c1,\n  \"Zhecyrillic\",\n  0x0416,\n  \"Zhedescendercyrillic\",\n  0x0496,\n  \"Zhedieresiscyrillic\",\n  0x04dc,\n  \"Zlinebelow\",\n  0x1e94,\n  \"Zmonospace\",\n  0xff3a,\n  \"Zsmall\",\n  0xf77a,\n  \"Zstroke\",\n  0x01b5,\n  \"a\",\n  0x0061,\n  \"aabengali\",\n  0x0986,\n  \"aacute\",\n  0x00e1,\n  \"aadeva\",\n  0x0906,\n  \"aagujarati\",\n  0x0a86,\n  \"aagurmukhi\",\n  0x0a06,\n  \"aamatragurmukhi\",\n  0x0a3e,\n  \"aarusquare\",\n  0x3303,\n  \"aavowelsignbengali\",\n  0x09be,\n  \"aavowelsigndeva\",\n  0x093e,\n  \"aavowelsigngujarati\",\n  0x0abe,\n  \"abbreviationmarkarmenian\",\n  0x055f,\n  \"abbreviationsigndeva\",\n  0x0970,\n  \"abengali\",\n  0x0985,\n  \"abopomofo\",\n  0x311a,\n  \"abreve\",\n  0x0103,\n  \"abreveacute\",\n  0x1eaf,\n  \"abrevecyrillic\",\n  0x04d1,\n  \"abrevedotbelow\",\n  0x1eb7,\n  \"abrevegrave\",\n  0x1eb1,\n  \"abrevehookabove\",\n  0x1eb3,\n  \"abrevetilde\",\n  0x1eb5,\n  \"acaron\",\n  0x01ce,\n  \"acircle\",\n  0x24d0,\n  \"acircumflex\",\n  0x00e2,\n  \"acircumflexacute\",\n  0x1ea5,\n  \"acircumflexdotbelow\",\n  0x1ead,\n  \"acircumflexgrave\",\n  0x1ea7,\n  \"acircumflexhookabove\",\n  0x1ea9,\n  \"acircumflextilde\",\n  0x1eab,\n  \"acute\",\n  0x00b4,\n  \"acutebelowcmb\",\n  0x0317,\n  \"acutecmb\",\n  0x0301,\n  \"acutecomb\",\n  0x0301,\n  \"acutedeva\",\n  0x0954,\n  \"acutelowmod\",\n  0x02cf,\n  \"acutetonecmb\",\n  0x0341,\n  \"acyrillic\",\n  0x0430,\n  \"adblgrave\",\n  0x0201,\n  \"addakgurmukhi\",\n  0x0a71,\n  \"adeva\",\n  0x0905,\n  \"adieresis\",\n  0x00e4,\n  \"adieresiscyrillic\",\n  0x04d3,\n  \"adieresismacron\",\n  0x01df,\n  \"adotbelow\",\n  0x1ea1,\n  \"adotmacron\",\n  0x01e1,\n  \"ae\",\n  0x00e6,\n  \"aeacute\",\n  0x01fd,\n  \"aekorean\",\n  0x3150,\n  \"aemacron\",\n  0x01e3,\n  \"afii00208\",\n  0x2015,\n  \"afii08941\",\n  0x20a4,\n  \"afii10017\",\n  0x0410,\n  \"afii10018\",\n  0x0411,\n  \"afii10019\",\n  0x0412,\n  \"afii10020\",\n  0x0413,\n  \"afii10021\",\n  0x0414,\n  \"afii10022\",\n  0x0415,\n  \"afii10023\",\n  0x0401,\n  \"afii10024\",\n  0x0416,\n  \"afii10025\",\n  0x0417,\n  \"afii10026\",\n  0x0418,\n  \"afii10027\",\n  0x0419,\n  \"afii10028\",\n  0x041a,\n  \"afii10029\",\n  0x041b,\n  \"afii10030\",\n  0x041c,\n  \"afii10031\",\n  0x041d,\n  \"afii10032\",\n  0x041e,\n  \"afii10033\",\n  0x041f,\n  \"afii10034\",\n  0x0420,\n  \"afii10035\",\n  0x0421,\n  \"afii10036\",\n  0x0422,\n  \"afii10037\",\n  0x0423,\n  \"afii10038\",\n  0x0424,\n  \"afii10039\",\n  0x0425,\n  \"afii10040\",\n  0x0426,\n  \"afii10041\",\n  0x0427,\n  \"afii10042\",\n  0x0428,\n  \"afii10043\",\n  0x0429,\n  \"afii10044\",\n  0x042a,\n  \"afii10045\",\n  0x042b,\n  \"afii10046\",\n  0x042c,\n  \"afii10047\",\n  0x042d,\n  \"afii10048\",\n  0x042e,\n  \"afii10049\",\n  0x042f,\n  \"afii10050\",\n  0x0490,\n  \"afii10051\",\n  0x0402,\n  \"afii10052\",\n  0x0403,\n  \"afii10053\",\n  0x0404,\n  \"afii10054\",\n  0x0405,\n  \"afii10055\",\n  0x0406,\n  \"afii10056\",\n  0x0407,\n  \"afii10057\",\n  0x0408,\n  \"afii10058\",\n  0x0409,\n  \"afii10059\",\n  0x040a,\n  \"afii10060\",\n  0x040b,\n  \"afii10061\",\n  0x040c,\n  \"afii10062\",\n  0x040e,\n  \"afii10063\",\n  0xf6c4,\n  \"afii10064\",\n  0xf6c5,\n  \"afii10065\",\n  0x0430,\n  \"afii10066\",\n  0x0431,\n  \"afii10067\",\n  0x0432,\n  \"afii10068\",\n  0x0433,\n  \"afii10069\",\n  0x0434,\n  \"afii10070\",\n  0x0435,\n  \"afii10071\",\n  0x0451,\n  \"afii10072\",\n  0x0436,\n  \"afii10073\",\n  0x0437,\n  \"afii10074\",\n  0x0438,\n  \"afii10075\",\n  0x0439,\n  \"afii10076\",\n  0x043a,\n  \"afii10077\",\n  0x043b,\n  \"afii10078\",\n  0x043c,\n  \"afii10079\",\n  0x043d,\n  \"afii10080\",\n  0x043e,\n  \"afii10081\",\n  0x043f,\n  \"afii10082\",\n  0x0440,\n  \"afii10083\",\n  0x0441,\n  \"afii10084\",\n  0x0442,\n  \"afii10085\",\n  0x0443,\n  \"afii10086\",\n  0x0444,\n  \"afii10087\",\n  0x0445,\n  \"afii10088\",\n  0x0446,\n  \"afii10089\",\n  0x0447,\n  \"afii10090\",\n  0x0448,\n  \"afii10091\",\n  0x0449,\n  \"afii10092\",\n  0x044a,\n  \"afii10093\",\n  0x044b,\n  \"afii10094\",\n  0x044c,\n  \"afii10095\",\n  0x044d,\n  \"afii10096\",\n  0x044e,\n  \"afii10097\",\n  0x044f,\n  \"afii10098\",\n  0x0491,\n  \"afii10099\",\n  0x0452,\n  \"afii10100\",\n  0x0453,\n  \"afii10101\",\n  0x0454,\n  \"afii10102\",\n  0x0455,\n  \"afii10103\",\n  0x0456,\n  \"afii10104\",\n  0x0457,\n  \"afii10105\",\n  0x0458,\n  \"afii10106\",\n  0x0459,\n  \"afii10107\",\n  0x045a,\n  \"afii10108\",\n  0x045b,\n  \"afii10109\",\n  0x045c,\n  \"afii10110\",\n  0x045e,\n  \"afii10145\",\n  0x040f,\n  \"afii10146\",\n  0x0462,\n  \"afii10147\",\n  0x0472,\n  \"afii10148\",\n  0x0474,\n  \"afii10192\",\n  0xf6c6,\n  \"afii10193\",\n  0x045f,\n  \"afii10194\",\n  0x0463,\n  \"afii10195\",\n  0x0473,\n  \"afii10196\",\n  0x0475,\n  \"afii10831\",\n  0xf6c7,\n  \"afii10832\",\n  0xf6c8,\n  \"afii10846\",\n  0x04d9,\n  \"afii299\",\n  0x200e,\n  \"afii300\",\n  0x200f,\n  \"afii301\",\n  0x200d,\n  \"afii57381\",\n  0x066a,\n  \"afii57388\",\n  0x060c,\n  \"afii57392\",\n  0x0660,\n  \"afii57393\",\n  0x0661,\n  \"afii57394\",\n  0x0662,\n  \"afii57395\",\n  0x0663,\n  \"afii57396\",\n  0x0664,\n  \"afii57397\",\n  0x0665,\n  \"afii57398\",\n  0x0666,\n  \"afii57399\",\n  0x0667,\n  \"afii57400\",\n  0x0668,\n  \"afii57401\",\n  0x0669,\n  \"afii57403\",\n  0x061b,\n  \"afii57407\",\n  0x061f,\n  \"afii57409\",\n  0x0621,\n  \"afii57410\",\n  0x0622,\n  \"afii57411\",\n  0x0623,\n  \"afii57412\",\n  0x0624,\n  \"afii57413\",\n  0x0625,\n  \"afii57414\",\n  0x0626,\n  \"afii57415\",\n  0x0627,\n  \"afii57416\",\n  0x0628,\n  \"afii57417\",\n  0x0629,\n  \"afii57418\",\n  0x062a,\n  \"afii57419\",\n  0x062b,\n  \"afii57420\",\n  0x062c,\n  \"afii57421\",\n  0x062d,\n  \"afii57422\",\n  0x062e,\n  \"afii57423\",\n  0x062f,\n  \"afii57424\",\n  0x0630,\n  \"afii57425\",\n  0x0631,\n  \"afii57426\",\n  0x0632,\n  \"afii57427\",\n  0x0633,\n  \"afii57428\",\n  0x0634,\n  \"afii57429\",\n  0x0635,\n  \"afii57430\",\n  0x0636,\n  \"afii57431\",\n  0x0637,\n  \"afii57432\",\n  0x0638,\n  \"afii57433\",\n  0x0639,\n  \"afii57434\",\n  0x063a,\n  \"afii57440\",\n  0x0640,\n  \"afii57441\",\n  0x0641,\n  \"afii57442\",\n  0x0642,\n  \"afii57443\",\n  0x0643,\n  \"afii57444\",\n  0x0644,\n  \"afii57445\",\n  0x0645,\n  \"afii57446\",\n  0x0646,\n  \"afii57448\",\n  0x0648,\n  \"afii57449\",\n  0x0649,\n  \"afii57450\",\n  0x064a,\n  \"afii57451\",\n  0x064b,\n  \"afii57452\",\n  0x064c,\n  \"afii57453\",\n  0x064d,\n  \"afii57454\",\n  0x064e,\n  \"afii57455\",\n  0x064f,\n  \"afii57456\",\n  0x0650,\n  \"afii57457\",\n  0x0651,\n  \"afii57458\",\n  0x0652,\n  \"afii57470\",\n  0x0647,\n  \"afii57505\",\n  0x06a4,\n  \"afii57506\",\n  0x067e,\n  \"afii57507\",\n  0x0686,\n  \"afii57508\",\n  0x0698,\n  \"afii57509\",\n  0x06af,\n  \"afii57511\",\n  0x0679,\n  \"afii57512\",\n  0x0688,\n  \"afii57513\",\n  0x0691,\n  \"afii57514\",\n  0x06ba,\n  \"afii57519\",\n  0x06d2,\n  \"afii57534\",\n  0x06d5,\n  \"afii57636\",\n  0x20aa,\n  \"afii57645\",\n  0x05be,\n  \"afii57658\",\n  0x05c3,\n  \"afii57664\",\n  0x05d0,\n  \"afii57665\",\n  0x05d1,\n  \"afii57666\",\n  0x05d2,\n  \"afii57667\",\n  0x05d3,\n  \"afii57668\",\n  0x05d4,\n  \"afii57669\",\n  0x05d5,\n  \"afii57670\",\n  0x05d6,\n  \"afii57671\",\n  0x05d7,\n  \"afii57672\",\n  0x05d8,\n  \"afii57673\",\n  0x05d9,\n  \"afii57674\",\n  0x05da,\n  \"afii57675\",\n  0x05db,\n  \"afii57676\",\n  0x05dc,\n  \"afii57677\",\n  0x05dd,\n  \"afii57678\",\n  0x05de,\n  \"afii57679\",\n  0x05df,\n  \"afii57680\",\n  0x05e0,\n  \"afii57681\",\n  0x05e1,\n  \"afii57682\",\n  0x05e2,\n  \"afii57683\",\n  0x05e3,\n  \"afii57684\",\n  0x05e4,\n  \"afii57685\",\n  0x05e5,\n  \"afii57686\",\n  0x05e6,\n  \"afii57687\",\n  0x05e7,\n  \"afii57688\",\n  0x05e8,\n  \"afii57689\",\n  0x05e9,\n  \"afii57690\",\n  0x05ea,\n  \"afii57694\",\n  0xfb2a,\n  \"afii57695\",\n  0xfb2b,\n  \"afii57700\",\n  0xfb4b,\n  \"afii57705\",\n  0xfb1f,\n  \"afii57716\",\n  0x05f0,\n  \"afii57717\",\n  0x05f1,\n  \"afii57718\",\n  0x05f2,\n  \"afii57723\",\n  0xfb35,\n  \"afii57793\",\n  0x05b4,\n  \"afii57794\",\n  0x05b5,\n  \"afii57795\",\n  0x05b6,\n  \"afii57796\",\n  0x05bb,\n  \"afii57797\",\n  0x05b8,\n  \"afii57798\",\n  0x05b7,\n  \"afii57799\",\n  0x05b0,\n  \"afii57800\",\n  0x05b2,\n  \"afii57801\",\n  0x05b1,\n  \"afii57802\",\n  0x05b3,\n  \"afii57803\",\n  0x05c2,\n  \"afii57804\",\n  0x05c1,\n  \"afii57806\",\n  0x05b9,\n  \"afii57807\",\n  0x05bc,\n  \"afii57839\",\n  0x05bd,\n  \"afii57841\",\n  0x05bf,\n  \"afii57842\",\n  0x05c0,\n  \"afii57929\",\n  0x02bc,\n  \"afii61248\",\n  0x2105,\n  \"afii61289\",\n  0x2113,\n  \"afii61352\",\n  0x2116,\n  \"afii61573\",\n  0x202c,\n  \"afii61574\",\n  0x202d,\n  \"afii61575\",\n  0x202e,\n  \"afii61664\",\n  0x200c,\n  \"afii63167\",\n  0x066d,\n  \"afii64937\",\n  0x02bd,\n  \"agrave\",\n  0x00e0,\n  \"agujarati\",\n  0x0a85,\n  \"agurmukhi\",\n  0x0a05,\n  \"ahiragana\",\n  0x3042,\n  \"ahookabove\",\n  0x1ea3,\n  \"aibengali\",\n  0x0990,\n  \"aibopomofo\",\n  0x311e,\n  \"aideva\",\n  0x0910,\n  \"aiecyrillic\",\n  0x04d5,\n  \"aigujarati\",\n  0x0a90,\n  \"aigurmukhi\",\n  0x0a10,\n  \"aimatragurmukhi\",\n  0x0a48,\n  \"ainarabic\",\n  0x0639,\n  \"ainfinalarabic\",\n  0xfeca,\n  \"aininitialarabic\",\n  0xfecb,\n  \"ainmedialarabic\",\n  0xfecc,\n  \"ainvertedbreve\",\n  0x0203,\n  \"aivowelsignbengali\",\n  0x09c8,\n  \"aivowelsigndeva\",\n  0x0948,\n  \"aivowelsigngujarati\",\n  0x0ac8,\n  \"akatakana\",\n  0x30a2,\n  \"akatakanahalfwidth\",\n  0xff71,\n  \"akorean\",\n  0x314f,\n  \"alef\",\n  0x05d0,\n  \"alefarabic\",\n  0x0627,\n  \"alefdageshhebrew\",\n  0xfb30,\n  \"aleffinalarabic\",\n  0xfe8e,\n  \"alefhamzaabovearabic\",\n  0x0623,\n  \"alefhamzaabovefinalarabic\",\n  0xfe84,\n  \"alefhamzabelowarabic\",\n  0x0625,\n  \"alefhamzabelowfinalarabic\",\n  0xfe88,\n  \"alefhebrew\",\n  0x05d0,\n  \"aleflamedhebrew\",\n  0xfb4f,\n  \"alefmaddaabovearabic\",\n  0x0622,\n  \"alefmaddaabovefinalarabic\",\n  0xfe82,\n  \"alefmaksuraarabic\",\n  0x0649,\n  \"alefmaksurafinalarabic\",\n  0xfef0,\n  \"alefmaksurainitialarabic\",\n  0xfef3,\n  \"alefmaksuramedialarabic\",\n  0xfef4,\n  \"alefpatahhebrew\",\n  0xfb2e,\n  \"alefqamatshebrew\",\n  0xfb2f,\n  \"aleph\",\n  0x2135,\n  \"allequal\",\n  0x224c,\n  \"alpha\",\n  0x03b1,\n  \"alphatonos\",\n  0x03ac,\n  \"amacron\",\n  0x0101,\n  \"amonospace\",\n  0xff41,\n  \"ampersand\",\n  0x0026,\n  \"ampersandmonospace\",\n  0xff06,\n  \"ampersandsmall\",\n  0xf726,\n  \"amsquare\",\n  0x33c2,\n  \"anbopomofo\",\n  0x3122,\n  \"angbopomofo\",\n  0x3124,\n  \"angbracketleft\",\n  0x3008,\n  \"angbracketright\",\n  0x3009,\n  \"angkhankhuthai\",\n  0x0e5a,\n  \"angle\",\n  0x2220,\n  \"anglebracketleft\",\n  0x3008,\n  \"anglebracketleftvertical\",\n  0xfe3f,\n  \"anglebracketright\",\n  0x3009,\n  \"anglebracketrightvertical\",\n  0xfe40,\n  \"angleleft\",\n  0x2329,\n  \"angleright\",\n  0x232a,\n  \"angstrom\",\n  0x212b,\n  \"anoteleia\",\n  0x0387,\n  \"anudattadeva\",\n  0x0952,\n  \"anusvarabengali\",\n  0x0982,\n  \"anusvaradeva\",\n  0x0902,\n  \"anusvaragujarati\",\n  0x0a82,\n  \"aogonek\",\n  0x0105,\n  \"apaatosquare\",\n  0x3300,\n  \"aparen\",\n  0x249c,\n  \"apostrophearmenian\",\n  0x055a,\n  \"apostrophemod\",\n  0x02bc,\n  \"apple\",\n  0xf8ff,\n  \"approaches\",\n  0x2250,\n  \"approxequal\",\n  0x2248,\n  \"approxequalorimage\",\n  0x2252,\n  \"approximatelyequal\",\n  0x2245,\n  \"araeaekorean\",\n  0x318e,\n  \"araeakorean\",\n  0x318d,\n  \"arc\",\n  0x2312,\n  \"arighthalfring\",\n  0x1e9a,\n  \"aring\",\n  0x00e5,\n  \"aringacute\",\n  0x01fb,\n  \"aringbelow\",\n  0x1e01,\n  \"arrowboth\",\n  0x2194,\n  \"arrowdashdown\",\n  0x21e3,\n  \"arrowdashleft\",\n  0x21e0,\n  \"arrowdashright\",\n  0x21e2,\n  \"arrowdashup\",\n  0x21e1,\n  \"arrowdblboth\",\n  0x21d4,\n  \"arrowdbldown\",\n  0x21d3,\n  \"arrowdblleft\",\n  0x21d0,\n  \"arrowdblright\",\n  0x21d2,\n  \"arrowdblup\",\n  0x21d1,\n  \"arrowdown\",\n  0x2193,\n  \"arrowdownleft\",\n  0x2199,\n  \"arrowdownright\",\n  0x2198,\n  \"arrowdownwhite\",\n  0x21e9,\n  \"arrowheaddownmod\",\n  0x02c5,\n  \"arrowheadleftmod\",\n  0x02c2,\n  \"arrowheadrightmod\",\n  0x02c3,\n  \"arrowheadupmod\",\n  0x02c4,\n  \"arrowhorizex\",\n  0xf8e7,\n  \"arrowleft\",\n  0x2190,\n  \"arrowleftdbl\",\n  0x21d0,\n  \"arrowleftdblstroke\",\n  0x21cd,\n  \"arrowleftoverright\",\n  0x21c6,\n  \"arrowleftwhite\",\n  0x21e6,\n  \"arrowright\",\n  0x2192,\n  \"arrowrightdblstroke\",\n  0x21cf,\n  \"arrowrightheavy\",\n  0x279e,\n  \"arrowrightoverleft\",\n  0x21c4,\n  \"arrowrightwhite\",\n  0x21e8,\n  \"arrowtableft\",\n  0x21e4,\n  \"arrowtabright\",\n  0x21e5,\n  \"arrowup\",\n  0x2191,\n  \"arrowupdn\",\n  0x2195,\n  \"arrowupdnbse\",\n  0x21a8,\n  \"arrowupdownbase\",\n  0x21a8,\n  \"arrowupleft\",\n  0x2196,\n  \"arrowupleftofdown\",\n  0x21c5,\n  \"arrowupright\",\n  0x2197,\n  \"arrowupwhite\",\n  0x21e7,\n  \"arrowvertex\",\n  0xf8e6,\n  \"asciicircum\",\n  0x005e,\n  \"asciicircummonospace\",\n  0xff3e,\n  \"asciitilde\",\n  0x007e,\n  \"asciitildemonospace\",\n  0xff5e,\n  \"ascript\",\n  0x0251,\n  \"ascriptturned\",\n  0x0252,\n  \"asmallhiragana\",\n  0x3041,\n  \"asmallkatakana\",\n  0x30a1,\n  \"asmallkatakanahalfwidth\",\n  0xff67,\n  \"asterisk\",\n  0x002a,\n  \"asteriskaltonearabic\",\n  0x066d,\n  \"asteriskarabic\",\n  0x066d,\n  \"asteriskmath\",\n  0x2217,\n  \"asteriskmonospace\",\n  0xff0a,\n  \"asterisksmall\",\n  0xfe61,\n  \"asterism\",\n  0x2042,\n  \"asuperior\",\n  0xf6e9,\n  \"asymptoticallyequal\",\n  0x2243,\n  \"at\",\n  0x0040,\n  \"atilde\",\n  0x00e3,\n  \"atmonospace\",\n  0xff20,\n  \"atsmall\",\n  0xfe6b,\n  \"aturned\",\n  0x0250,\n  \"aubengali\",\n  0x0994,\n  \"aubopomofo\",\n  0x3120,\n  \"audeva\",\n  0x0914,\n  \"augujarati\",\n  0x0a94,\n  \"augurmukhi\",\n  0x0a14,\n  \"aulengthmarkbengali\",\n  0x09d7,\n  \"aumatragurmukhi\",\n  0x0a4c,\n  \"auvowelsignbengali\",\n  0x09cc,\n  \"auvowelsigndeva\",\n  0x094c,\n  \"auvowelsigngujarati\",\n  0x0acc,\n  \"avagrahadeva\",\n  0x093d,\n  \"aybarmenian\",\n  0x0561,\n  \"ayin\",\n  0x05e2,\n  \"ayinaltonehebrew\",\n  0xfb20,\n  \"ayinhebrew\",\n  0x05e2,\n  \"b\",\n  0x0062,\n  \"babengali\",\n  0x09ac,\n  \"backslash\",\n  0x005c,\n  \"backslashmonospace\",\n  0xff3c,\n  \"badeva\",\n  0x092c,\n  \"bagujarati\",\n  0x0aac,\n  \"bagurmukhi\",\n  0x0a2c,\n  \"bahiragana\",\n  0x3070,\n  \"bahtthai\",\n  0x0e3f,\n  \"bakatakana\",\n  0x30d0,\n  \"bar\",\n  0x007c,\n  \"barmonospace\",\n  0xff5c,\n  \"bbopomofo\",\n  0x3105,\n  \"bcircle\",\n  0x24d1,\n  \"bdotaccent\",\n  0x1e03,\n  \"bdotbelow\",\n  0x1e05,\n  \"beamedsixteenthnotes\",\n  0x266c,\n  \"because\",\n  0x2235,\n  \"becyrillic\",\n  0x0431,\n  \"beharabic\",\n  0x0628,\n  \"behfinalarabic\",\n  0xfe90,\n  \"behinitialarabic\",\n  0xfe91,\n  \"behiragana\",\n  0x3079,\n  \"behmedialarabic\",\n  0xfe92,\n  \"behmeeminitialarabic\",\n  0xfc9f,\n  \"behmeemisolatedarabic\",\n  0xfc08,\n  \"behnoonfinalarabic\",\n  0xfc6d,\n  \"bekatakana\",\n  0x30d9,\n  \"benarmenian\",\n  0x0562,\n  \"bet\",\n  0x05d1,\n  \"beta\",\n  0x03b2,\n  \"betasymbolgreek\",\n  0x03d0,\n  \"betdagesh\",\n  0xfb31,\n  \"betdageshhebrew\",\n  0xfb31,\n  \"bethebrew\",\n  0x05d1,\n  \"betrafehebrew\",\n  0xfb4c,\n  \"bhabengali\",\n  0x09ad,\n  \"bhadeva\",\n  0x092d,\n  \"bhagujarati\",\n  0x0aad,\n  \"bhagurmukhi\",\n  0x0a2d,\n  \"bhook\",\n  0x0253,\n  \"bihiragana\",\n  0x3073,\n  \"bikatakana\",\n  0x30d3,\n  \"bilabialclick\",\n  0x0298,\n  \"bindigurmukhi\",\n  0x0a02,\n  \"birusquare\",\n  0x3331,\n  \"blackcircle\",\n  0x25cf,\n  \"blackdiamond\",\n  0x25c6,\n  \"blackdownpointingtriangle\",\n  0x25bc,\n  \"blackleftpointingpointer\",\n  0x25c4,\n  \"blackleftpointingtriangle\",\n  0x25c0,\n  \"blacklenticularbracketleft\",\n  0x3010,\n  \"blacklenticularbracketleftvertical\",\n  0xfe3b,\n  \"blacklenticularbracketright\",\n  0x3011,\n  \"blacklenticularbracketrightvertical\",\n  0xfe3c,\n  \"blacklowerlefttriangle\",\n  0x25e3,\n  \"blacklowerrighttriangle\",\n  0x25e2,\n  \"blackrectangle\",\n  0x25ac,\n  \"blackrightpointingpointer\",\n  0x25ba,\n  \"blackrightpointingtriangle\",\n  0x25b6,\n  \"blacksmallsquare\",\n  0x25aa,\n  \"blacksmilingface\",\n  0x263b,\n  \"blacksquare\",\n  0x25a0,\n  \"blackstar\",\n  0x2605,\n  \"blackupperlefttriangle\",\n  0x25e4,\n  \"blackupperrighttriangle\",\n  0x25e5,\n  \"blackuppointingsmalltriangle\",\n  0x25b4,\n  \"blackuppointingtriangle\",\n  0x25b2,\n  \"blank\",\n  0x2423,\n  \"blinebelow\",\n  0x1e07,\n  \"block\",\n  0x2588,\n  \"bmonospace\",\n  0xff42,\n  \"bobaimaithai\",\n  0x0e1a,\n  \"bohiragana\",\n  0x307c,\n  \"bokatakana\",\n  0x30dc,\n  \"bparen\",\n  0x249d,\n  \"bqsquare\",\n  0x33c3,\n  \"braceex\",\n  0xf8f4,\n  \"braceleft\",\n  0x007b,\n  \"braceleftbt\",\n  0xf8f3,\n  \"braceleftmid\",\n  0xf8f2,\n  \"braceleftmonospace\",\n  0xff5b,\n  \"braceleftsmall\",\n  0xfe5b,\n  \"bracelefttp\",\n  0xf8f1,\n  \"braceleftvertical\",\n  0xfe37,\n  \"braceright\",\n  0x007d,\n  \"bracerightbt\",\n  0xf8fe,\n  \"bracerightmid\",\n  0xf8fd,\n  \"bracerightmonospace\",\n  0xff5d,\n  \"bracerightsmall\",\n  0xfe5c,\n  \"bracerighttp\",\n  0xf8fc,\n  \"bracerightvertical\",\n  0xfe38,\n  \"bracketleft\",\n  0x005b,\n  \"bracketleftbt\",\n  0xf8f0,\n  \"bracketleftex\",\n  0xf8ef,\n  \"bracketleftmonospace\",\n  0xff3b,\n  \"bracketlefttp\",\n  0xf8ee,\n  \"bracketright\",\n  0x005d,\n  \"bracketrightbt\",\n  0xf8fb,\n  \"bracketrightex\",\n  0xf8fa,\n  \"bracketrightmonospace\",\n  0xff3d,\n  \"bracketrighttp\",\n  0xf8f9,\n  \"breve\",\n  0x02d8,\n  \"brevebelowcmb\",\n  0x032e,\n  \"brevecmb\",\n  0x0306,\n  \"breveinvertedbelowcmb\",\n  0x032f,\n  \"breveinvertedcmb\",\n  0x0311,\n  \"breveinverteddoublecmb\",\n  0x0361,\n  \"bridgebelowcmb\",\n  0x032a,\n  \"bridgeinvertedbelowcmb\",\n  0x033a,\n  \"brokenbar\",\n  0x00a6,\n  \"bstroke\",\n  0x0180,\n  \"bsuperior\",\n  0xf6ea,\n  \"btopbar\",\n  0x0183,\n  \"buhiragana\",\n  0x3076,\n  \"bukatakana\",\n  0x30d6,\n  \"bullet\",\n  0x2022,\n  \"bulletinverse\",\n  0x25d8,\n  \"bulletoperator\",\n  0x2219,\n  \"bullseye\",\n  0x25ce,\n  \"c\",\n  0x0063,\n  \"caarmenian\",\n  0x056e,\n  \"cabengali\",\n  0x099a,\n  \"cacute\",\n  0x0107,\n  \"cadeva\",\n  0x091a,\n  \"cagujarati\",\n  0x0a9a,\n  \"cagurmukhi\",\n  0x0a1a,\n  \"calsquare\",\n  0x3388,\n  \"candrabindubengali\",\n  0x0981,\n  \"candrabinducmb\",\n  0x0310,\n  \"candrabindudeva\",\n  0x0901,\n  \"candrabindugujarati\",\n  0x0a81,\n  \"capslock\",\n  0x21ea,\n  \"careof\",\n  0x2105,\n  \"caron\",\n  0x02c7,\n  \"caronbelowcmb\",\n  0x032c,\n  \"caroncmb\",\n  0x030c,\n  \"carriagereturn\",\n  0x21b5,\n  \"cbopomofo\",\n  0x3118,\n  \"ccaron\",\n  0x010d,\n  \"ccedilla\",\n  0x00e7,\n  \"ccedillaacute\",\n  0x1e09,\n  \"ccircle\",\n  0x24d2,\n  \"ccircumflex\",\n  0x0109,\n  \"ccurl\",\n  0x0255,\n  \"cdot\",\n  0x010b,\n  \"cdotaccent\",\n  0x010b,\n  \"cdsquare\",\n  0x33c5,\n  \"cedilla\",\n  0x00b8,\n  \"cedillacmb\",\n  0x0327,\n  \"cent\",\n  0x00a2,\n  \"centigrade\",\n  0x2103,\n  \"centinferior\",\n  0xf6df,\n  \"centmonospace\",\n  0xffe0,\n  \"centoldstyle\",\n  0xf7a2,\n  \"centsuperior\",\n  0xf6e0,\n  \"chaarmenian\",\n  0x0579,\n  \"chabengali\",\n  0x099b,\n  \"chadeva\",\n  0x091b,\n  \"chagujarati\",\n  0x0a9b,\n  \"chagurmukhi\",\n  0x0a1b,\n  \"chbopomofo\",\n  0x3114,\n  \"cheabkhasiancyrillic\",\n  0x04bd,\n  \"checkmark\",\n  0x2713,\n  \"checyrillic\",\n  0x0447,\n  \"chedescenderabkhasiancyrillic\",\n  0x04bf,\n  \"chedescendercyrillic\",\n  0x04b7,\n  \"chedieresiscyrillic\",\n  0x04f5,\n  \"cheharmenian\",\n  0x0573,\n  \"chekhakassiancyrillic\",\n  0x04cc,\n  \"cheverticalstrokecyrillic\",\n  0x04b9,\n  \"chi\",\n  0x03c7,\n  \"chieuchacirclekorean\",\n  0x3277,\n  \"chieuchaparenkorean\",\n  0x3217,\n  \"chieuchcirclekorean\",\n  0x3269,\n  \"chieuchkorean\",\n  0x314a,\n  \"chieuchparenkorean\",\n  0x3209,\n  \"chochangthai\",\n  0x0e0a,\n  \"chochanthai\",\n  0x0e08,\n  \"chochingthai\",\n  0x0e09,\n  \"chochoethai\",\n  0x0e0c,\n  \"chook\",\n  0x0188,\n  \"cieucacirclekorean\",\n  0x3276,\n  \"cieucaparenkorean\",\n  0x3216,\n  \"cieuccirclekorean\",\n  0x3268,\n  \"cieuckorean\",\n  0x3148,\n  \"cieucparenkorean\",\n  0x3208,\n  \"cieucuparenkorean\",\n  0x321c,\n  \"circle\",\n  0x25cb,\n  \"circlecopyrt\",\n  0x00a9,\n  \"circlemultiply\",\n  0x2297,\n  \"circleot\",\n  0x2299,\n  \"circleplus\",\n  0x2295,\n  \"circlepostalmark\",\n  0x3036,\n  \"circlewithlefthalfblack\",\n  0x25d0,\n  \"circlewithrighthalfblack\",\n  0x25d1,\n  \"circumflex\",\n  0x02c6,\n  \"circumflexbelowcmb\",\n  0x032d,\n  \"circumflexcmb\",\n  0x0302,\n  \"clear\",\n  0x2327,\n  \"clickalveolar\",\n  0x01c2,\n  \"clickdental\",\n  0x01c0,\n  \"clicklateral\",\n  0x01c1,\n  \"clickretroflex\",\n  0x01c3,\n  \"club\",\n  0x2663,\n  \"clubsuitblack\",\n  0x2663,\n  \"clubsuitwhite\",\n  0x2667,\n  \"cmcubedsquare\",\n  0x33a4,\n  \"cmonospace\",\n  0xff43,\n  \"cmsquaredsquare\",\n  0x33a0,\n  \"coarmenian\",\n  0x0581,\n  \"colon\",\n  0x003a,\n  \"colonmonetary\",\n  0x20a1,\n  \"colonmonospace\",\n  0xff1a,\n  \"colonsign\",\n  0x20a1,\n  \"colonsmall\",\n  0xfe55,\n  \"colontriangularhalfmod\",\n  0x02d1,\n  \"colontriangularmod\",\n  0x02d0,\n  \"comma\",\n  0x002c,\n  \"commaabovecmb\",\n  0x0313,\n  \"commaaboverightcmb\",\n  0x0315,\n  \"commaaccent\",\n  0xf6c3,\n  \"commaarabic\",\n  0x060c,\n  \"commaarmenian\",\n  0x055d,\n  \"commainferior\",\n  0xf6e1,\n  \"commamonospace\",\n  0xff0c,\n  \"commareversedabovecmb\",\n  0x0314,\n  \"commareversedmod\",\n  0x02bd,\n  \"commasmall\",\n  0xfe50,\n  \"commasuperior\",\n  0xf6e2,\n  \"commaturnedabovecmb\",\n  0x0312,\n  \"commaturnedmod\",\n  0x02bb,\n  \"compass\",\n  0x263c,\n  \"congruent\",\n  0x2245,\n  \"contourintegral\",\n  0x222e,\n  \"control\",\n  0x2303,\n  \"controlACK\",\n  0x0006,\n  \"controlBEL\",\n  0x0007,\n  \"controlBS\",\n  0x0008,\n  \"controlCAN\",\n  0x0018,\n  \"controlCR\",\n  0x000d,\n  \"controlDC1\",\n  0x0011,\n  \"controlDC2\",\n  0x0012,\n  \"controlDC3\",\n  0x0013,\n  \"controlDC4\",\n  0x0014,\n  \"controlDEL\",\n  0x007f,\n  \"controlDLE\",\n  0x0010,\n  \"controlEM\",\n  0x0019,\n  \"controlENQ\",\n  0x0005,\n  \"controlEOT\",\n  0x0004,\n  \"controlESC\",\n  0x001b,\n  \"controlETB\",\n  0x0017,\n  \"controlETX\",\n  0x0003,\n  \"controlFF\",\n  0x000c,\n  \"controlFS\",\n  0x001c,\n  \"controlGS\",\n  0x001d,\n  \"controlHT\",\n  0x0009,\n  \"controlLF\",\n  0x000a,\n  \"controlNAK\",\n  0x0015,\n  \"controlNULL\",\n  0x0000,\n  \"controlRS\",\n  0x001e,\n  \"controlSI\",\n  0x000f,\n  \"controlSO\",\n  0x000e,\n  \"controlSOT\",\n  0x0002,\n  \"controlSTX\",\n  0x0001,\n  \"controlSUB\",\n  0x001a,\n  \"controlSYN\",\n  0x0016,\n  \"controlUS\",\n  0x001f,\n  \"controlVT\",\n  0x000b,\n  \"copyright\",\n  0x00a9,\n  \"copyrightsans\",\n  0xf8e9,\n  \"copyrightserif\",\n  0xf6d9,\n  \"cornerbracketleft\",\n  0x300c,\n  \"cornerbracketlefthalfwidth\",\n  0xff62,\n  \"cornerbracketleftvertical\",\n  0xfe41,\n  \"cornerbracketright\",\n  0x300d,\n  \"cornerbracketrighthalfwidth\",\n  0xff63,\n  \"cornerbracketrightvertical\",\n  0xfe42,\n  \"corporationsquare\",\n  0x337f,\n  \"cosquare\",\n  0x33c7,\n  \"coverkgsquare\",\n  0x33c6,\n  \"cparen\",\n  0x249e,\n  \"cruzeiro\",\n  0x20a2,\n  \"cstretched\",\n  0x0297,\n  \"curlyand\",\n  0x22cf,\n  \"curlyor\",\n  0x22ce,\n  \"currency\",\n  0x00a4,\n  \"cyrBreve\",\n  0xf6d1,\n  \"cyrFlex\",\n  0xf6d2,\n  \"cyrbreve\",\n  0xf6d4,\n  \"cyrflex\",\n  0xf6d5,\n  \"d\",\n  0x0064,\n  \"daarmenian\",\n  0x0564,\n  \"dabengali\",\n  0x09a6,\n  \"dadarabic\",\n  0x0636,\n  \"dadeva\",\n  0x0926,\n  \"dadfinalarabic\",\n  0xfebe,\n  \"dadinitialarabic\",\n  0xfebf,\n  \"dadmedialarabic\",\n  0xfec0,\n  \"dagesh\",\n  0x05bc,\n  \"dageshhebrew\",\n  0x05bc,\n  \"dagger\",\n  0x2020,\n  \"daggerdbl\",\n  0x2021,\n  \"dagujarati\",\n  0x0aa6,\n  \"dagurmukhi\",\n  0x0a26,\n  \"dahiragana\",\n  0x3060,\n  \"dakatakana\",\n  0x30c0,\n  \"dalarabic\",\n  0x062f,\n  \"dalet\",\n  0x05d3,\n  \"daletdagesh\",\n  0xfb33,\n  \"daletdageshhebrew\",\n  0xfb33,\n  \"dalethebrew\",\n  0x05d3,\n  \"dalfinalarabic\",\n  0xfeaa,\n  \"dammaarabic\",\n  0x064f,\n  \"dammalowarabic\",\n  0x064f,\n  \"dammatanaltonearabic\",\n  0x064c,\n  \"dammatanarabic\",\n  0x064c,\n  \"danda\",\n  0x0964,\n  \"dargahebrew\",\n  0x05a7,\n  \"dargalefthebrew\",\n  0x05a7,\n  \"dasiapneumatacyrilliccmb\",\n  0x0485,\n  \"dblGrave\",\n  0xf6d3,\n  \"dblanglebracketleft\",\n  0x300a,\n  \"dblanglebracketleftvertical\",\n  0xfe3d,\n  \"dblanglebracketright\",\n  0x300b,\n  \"dblanglebracketrightvertical\",\n  0xfe3e,\n  \"dblarchinvertedbelowcmb\",\n  0x032b,\n  \"dblarrowleft\",\n  0x21d4,\n  \"dblarrowright\",\n  0x21d2,\n  \"dbldanda\",\n  0x0965,\n  \"dblgrave\",\n  0xf6d6,\n  \"dblgravecmb\",\n  0x030f,\n  \"dblintegral\",\n  0x222c,\n  \"dbllowline\",\n  0x2017,\n  \"dbllowlinecmb\",\n  0x0333,\n  \"dbloverlinecmb\",\n  0x033f,\n  \"dblprimemod\",\n  0x02ba,\n  \"dblverticalbar\",\n  0x2016,\n  \"dblverticallineabovecmb\",\n  0x030e,\n  \"dbopomofo\",\n  0x3109,\n  \"dbsquare\",\n  0x33c8,\n  \"dcaron\",\n  0x010f,\n  \"dcedilla\",\n  0x1e11,\n  \"dcircle\",\n  0x24d3,\n  \"dcircumflexbelow\",\n  0x1e13,\n  \"dcroat\",\n  0x0111,\n  \"ddabengali\",\n  0x09a1,\n  \"ddadeva\",\n  0x0921,\n  \"ddagujarati\",\n  0x0aa1,\n  \"ddagurmukhi\",\n  0x0a21,\n  \"ddalarabic\",\n  0x0688,\n  \"ddalfinalarabic\",\n  0xfb89,\n  \"dddhadeva\",\n  0x095c,\n  \"ddhabengali\",\n  0x09a2,\n  \"ddhadeva\",\n  0x0922,\n  \"ddhagujarati\",\n  0x0aa2,\n  \"ddhagurmukhi\",\n  0x0a22,\n  \"ddotaccent\",\n  0x1e0b,\n  \"ddotbelow\",\n  0x1e0d,\n  \"decimalseparatorarabic\",\n  0x066b,\n  \"decimalseparatorpersian\",\n  0x066b,\n  \"decyrillic\",\n  0x0434,\n  \"degree\",\n  0x00b0,\n  \"dehihebrew\",\n  0x05ad,\n  \"dehiragana\",\n  0x3067,\n  \"deicoptic\",\n  0x03ef,\n  \"dekatakana\",\n  0x30c7,\n  \"deleteleft\",\n  0x232b,\n  \"deleteright\",\n  0x2326,\n  \"delta\",\n  0x03b4,\n  \"deltaturned\",\n  0x018d,\n  \"denominatorminusonenumeratorbengali\",\n  0x09f8,\n  \"dezh\",\n  0x02a4,\n  \"dhabengali\",\n  0x09a7,\n  \"dhadeva\",\n  0x0927,\n  \"dhagujarati\",\n  0x0aa7,\n  \"dhagurmukhi\",\n  0x0a27,\n  \"dhook\",\n  0x0257,\n  \"dialytikatonos\",\n  0x0385,\n  \"dialytikatonoscmb\",\n  0x0344,\n  \"diamond\",\n  0x2666,\n  \"diamondsuitwhite\",\n  0x2662,\n  \"dieresis\",\n  0x00a8,\n  \"dieresisacute\",\n  0xf6d7,\n  \"dieresisbelowcmb\",\n  0x0324,\n  \"dieresiscmb\",\n  0x0308,\n  \"dieresisgrave\",\n  0xf6d8,\n  \"dieresistonos\",\n  0x0385,\n  \"dihiragana\",\n  0x3062,\n  \"dikatakana\",\n  0x30c2,\n  \"dittomark\",\n  0x3003,\n  \"divide\",\n  0x00f7,\n  \"divides\",\n  0x2223,\n  \"divisionslash\",\n  0x2215,\n  \"djecyrillic\",\n  0x0452,\n  \"dkshade\",\n  0x2593,\n  \"dlinebelow\",\n  0x1e0f,\n  \"dlsquare\",\n  0x3397,\n  \"dmacron\",\n  0x0111,\n  \"dmonospace\",\n  0xff44,\n  \"dnblock\",\n  0x2584,\n  \"dochadathai\",\n  0x0e0e,\n  \"dodekthai\",\n  0x0e14,\n  \"dohiragana\",\n  0x3069,\n  \"dokatakana\",\n  0x30c9,\n  \"dollar\",\n  0x0024,\n  \"dollarinferior\",\n  0xf6e3,\n  \"dollarmonospace\",\n  0xff04,\n  \"dollaroldstyle\",\n  0xf724,\n  \"dollarsmall\",\n  0xfe69,\n  \"dollarsuperior\",\n  0xf6e4,\n  \"dong\",\n  0x20ab,\n  \"dorusquare\",\n  0x3326,\n  \"dotaccent\",\n  0x02d9,\n  \"dotaccentcmb\",\n  0x0307,\n  \"dotbelowcmb\",\n  0x0323,\n  \"dotbelowcomb\",\n  0x0323,\n  \"dotkatakana\",\n  0x30fb,\n  \"dotlessi\",\n  0x0131,\n  \"dotlessj\",\n  0xf6be,\n  \"dotlessjstrokehook\",\n  0x0284,\n  \"dotmath\",\n  0x22c5,\n  \"dottedcircle\",\n  0x25cc,\n  \"doubleyodpatah\",\n  0xfb1f,\n  \"doubleyodpatahhebrew\",\n  0xfb1f,\n  \"downtackbelowcmb\",\n  0x031e,\n  \"downtackmod\",\n  0x02d5,\n  \"dparen\",\n  0x249f,\n  \"dsuperior\",\n  0xf6eb,\n  \"dtail\",\n  0x0256,\n  \"dtopbar\",\n  0x018c,\n  \"duhiragana\",\n  0x3065,\n  \"dukatakana\",\n  0x30c5,\n  \"dz\",\n  0x01f3,\n  \"dzaltone\",\n  0x02a3,\n  \"dzcaron\",\n  0x01c6,\n  \"dzcurl\",\n  0x02a5,\n  \"dzeabkhasiancyrillic\",\n  0x04e1,\n  \"dzecyrillic\",\n  0x0455,\n  \"dzhecyrillic\",\n  0x045f,\n  \"e\",\n  0x0065,\n  \"eacute\",\n  0x00e9,\n  \"earth\",\n  0x2641,\n  \"ebengali\",\n  0x098f,\n  \"ebopomofo\",\n  0x311c,\n  \"ebreve\",\n  0x0115,\n  \"ecandradeva\",\n  0x090d,\n  \"ecandragujarati\",\n  0x0a8d,\n  \"ecandravowelsigndeva\",\n  0x0945,\n  \"ecandravowelsigngujarati\",\n  0x0ac5,\n  \"ecaron\",\n  0x011b,\n  \"ecedillabreve\",\n  0x1e1d,\n  \"echarmenian\",\n  0x0565,\n  \"echyiwnarmenian\",\n  0x0587,\n  \"ecircle\",\n  0x24d4,\n  \"ecircumflex\",\n  0x00ea,\n  \"ecircumflexacute\",\n  0x1ebf,\n  \"ecircumflexbelow\",\n  0x1e19,\n  \"ecircumflexdotbelow\",\n  0x1ec7,\n  \"ecircumflexgrave\",\n  0x1ec1,\n  \"ecircumflexhookabove\",\n  0x1ec3,\n  \"ecircumflextilde\",\n  0x1ec5,\n  \"ecyrillic\",\n  0x0454,\n  \"edblgrave\",\n  0x0205,\n  \"edeva\",\n  0x090f,\n  \"edieresis\",\n  0x00eb,\n  \"edot\",\n  0x0117,\n  \"edotaccent\",\n  0x0117,\n  \"edotbelow\",\n  0x1eb9,\n  \"eegurmukhi\",\n  0x0a0f,\n  \"eematragurmukhi\",\n  0x0a47,\n  \"efcyrillic\",\n  0x0444,\n  \"egrave\",\n  0x00e8,\n  \"egujarati\",\n  0x0a8f,\n  \"eharmenian\",\n  0x0567,\n  \"ehbopomofo\",\n  0x311d,\n  \"ehiragana\",\n  0x3048,\n  \"ehookabove\",\n  0x1ebb,\n  \"eibopomofo\",\n  0x311f,\n  \"eight\",\n  0x0038,\n  \"eightarabic\",\n  0x0668,\n  \"eightbengali\",\n  0x09ee,\n  \"eightcircle\",\n  0x2467,\n  \"eightcircleinversesansserif\",\n  0x2791,\n  \"eightdeva\",\n  0x096e,\n  \"eighteencircle\",\n  0x2471,\n  \"eighteenparen\",\n  0x2485,\n  \"eighteenperiod\",\n  0x2499,\n  \"eightgujarati\",\n  0x0aee,\n  \"eightgurmukhi\",\n  0x0a6e,\n  \"eighthackarabic\",\n  0x0668,\n  \"eighthangzhou\",\n  0x3028,\n  \"eighthnotebeamed\",\n  0x266b,\n  \"eightideographicparen\",\n  0x3227,\n  \"eightinferior\",\n  0x2088,\n  \"eightmonospace\",\n  0xff18,\n  \"eightoldstyle\",\n  0xf738,\n  \"eightparen\",\n  0x247b,\n  \"eightperiod\",\n  0x248f,\n  \"eightpersian\",\n  0x06f8,\n  \"eightroman\",\n  0x2177,\n  \"eightsuperior\",\n  0x2078,\n  \"eightthai\",\n  0x0e58,\n  \"einvertedbreve\",\n  0x0207,\n  \"eiotifiedcyrillic\",\n  0x0465,\n  \"ekatakana\",\n  0x30a8,\n  \"ekatakanahalfwidth\",\n  0xff74,\n  \"ekonkargurmukhi\",\n  0x0a74,\n  \"ekorean\",\n  0x3154,\n  \"elcyrillic\",\n  0x043b,\n  \"element\",\n  0x2208,\n  \"elevencircle\",\n  0x246a,\n  \"elevenparen\",\n  0x247e,\n  \"elevenperiod\",\n  0x2492,\n  \"elevenroman\",\n  0x217a,\n  \"ellipsis\",\n  0x2026,\n  \"ellipsisvertical\",\n  0x22ee,\n  \"emacron\",\n  0x0113,\n  \"emacronacute\",\n  0x1e17,\n  \"emacrongrave\",\n  0x1e15,\n  \"emcyrillic\",\n  0x043c,\n  \"emdash\",\n  0x2014,\n  \"emdashvertical\",\n  0xfe31,\n  \"emonospace\",\n  0xff45,\n  \"emphasismarkarmenian\",\n  0x055b,\n  \"emptyset\",\n  0x2205,\n  \"enbopomofo\",\n  0x3123,\n  \"encyrillic\",\n  0x043d,\n  \"endash\",\n  0x2013,\n  \"endashvertical\",\n  0xfe32,\n  \"endescendercyrillic\",\n  0x04a3,\n  \"eng\",\n  0x014b,\n  \"engbopomofo\",\n  0x3125,\n  \"enghecyrillic\",\n  0x04a5,\n  \"enhookcyrillic\",\n  0x04c8,\n  \"enspace\",\n  0x2002,\n  \"eogonek\",\n  0x0119,\n  \"eokorean\",\n  0x3153,\n  \"eopen\",\n  0x025b,\n  \"eopenclosed\",\n  0x029a,\n  \"eopenreversed\",\n  0x025c,\n  \"eopenreversedclosed\",\n  0x025e,\n  \"eopenreversedhook\",\n  0x025d,\n  \"eparen\",\n  0x24a0,\n  \"epsilon\",\n  0x03b5,\n  \"epsilontonos\",\n  0x03ad,\n  \"equal\",\n  0x003d,\n  \"equalmonospace\",\n  0xff1d,\n  \"equalsmall\",\n  0xfe66,\n  \"equalsuperior\",\n  0x207c,\n  \"equivalence\",\n  0x2261,\n  \"erbopomofo\",\n  0x3126,\n  \"ercyrillic\",\n  0x0440,\n  \"ereversed\",\n  0x0258,\n  \"ereversedcyrillic\",\n  0x044d,\n  \"escyrillic\",\n  0x0441,\n  \"esdescendercyrillic\",\n  0x04ab,\n  \"esh\",\n  0x0283,\n  \"eshcurl\",\n  0x0286,\n  \"eshortdeva\",\n  0x090e,\n  \"eshortvowelsigndeva\",\n  0x0946,\n  \"eshreversedloop\",\n  0x01aa,\n  \"eshsquatreversed\",\n  0x0285,\n  \"esmallhiragana\",\n  0x3047,\n  \"esmallkatakana\",\n  0x30a7,\n  \"esmallkatakanahalfwidth\",\n  0xff6a,\n  \"estimated\",\n  0x212e,\n  \"esuperior\",\n  0xf6ec,\n  \"eta\",\n  0x03b7,\n  \"etarmenian\",\n  0x0568,\n  \"etatonos\",\n  0x03ae,\n  \"eth\",\n  0x00f0,\n  \"etilde\",\n  0x1ebd,\n  \"etildebelow\",\n  0x1e1b,\n  \"etnahtafoukhhebrew\",\n  0x0591,\n  \"etnahtafoukhlefthebrew\",\n  0x0591,\n  \"etnahtahebrew\",\n  0x0591,\n  \"etnahtalefthebrew\",\n  0x0591,\n  \"eturned\",\n  0x01dd,\n  \"eukorean\",\n  0x3161,\n  \"euro\",\n  0x20ac,\n  \"evowelsignbengali\",\n  0x09c7,\n  \"evowelsigndeva\",\n  0x0947,\n  \"evowelsigngujarati\",\n  0x0ac7,\n  \"exclam\",\n  0x0021,\n  \"exclamarmenian\",\n  0x055c,\n  \"exclamdbl\",\n  0x203c,\n  \"exclamdown\",\n  0x00a1,\n  \"exclamdownsmall\",\n  0xf7a1,\n  \"exclammonospace\",\n  0xff01,\n  \"exclamsmall\",\n  0xf721,\n  \"existential\",\n  0x2203,\n  \"ezh\",\n  0x0292,\n  \"ezhcaron\",\n  0x01ef,\n  \"ezhcurl\",\n  0x0293,\n  \"ezhreversed\",\n  0x01b9,\n  \"ezhtail\",\n  0x01ba,\n  \"f\",\n  0x0066,\n  \"fadeva\",\n  0x095e,\n  \"fagurmukhi\",\n  0x0a5e,\n  \"fahrenheit\",\n  0x2109,\n  \"fathaarabic\",\n  0x064e,\n  \"fathalowarabic\",\n  0x064e,\n  \"fathatanarabic\",\n  0x064b,\n  \"fbopomofo\",\n  0x3108,\n  \"fcircle\",\n  0x24d5,\n  \"fdotaccent\",\n  0x1e1f,\n  \"feharabic\",\n  0x0641,\n  \"feharmenian\",\n  0x0586,\n  \"fehfinalarabic\",\n  0xfed2,\n  \"fehinitialarabic\",\n  0xfed3,\n  \"fehmedialarabic\",\n  0xfed4,\n  \"feicoptic\",\n  0x03e5,\n  \"female\",\n  0x2640,\n  \"ff\",\n  0xfb00,\n  \"f_f\",\n  0xfb00,\n  \"ffi\",\n  0xfb03,\n  \"ffl\",\n  0xfb04,\n  \"fi\",\n  0xfb01,\n  \"fifteencircle\",\n  0x246e,\n  \"fifteenparen\",\n  0x2482,\n  \"fifteenperiod\",\n  0x2496,\n  \"figuredash\",\n  0x2012,\n  \"filledbox\",\n  0x25a0,\n  \"filledrect\",\n  0x25ac,\n  \"finalkaf\",\n  0x05da,\n  \"finalkafdagesh\",\n  0xfb3a,\n  \"finalkafdageshhebrew\",\n  0xfb3a,\n  \"finalkafhebrew\",\n  0x05da,\n  \"finalmem\",\n  0x05dd,\n  \"finalmemhebrew\",\n  0x05dd,\n  \"finalnun\",\n  0x05df,\n  \"finalnunhebrew\",\n  0x05df,\n  \"finalpe\",\n  0x05e3,\n  \"finalpehebrew\",\n  0x05e3,\n  \"finaltsadi\",\n  0x05e5,\n  \"finaltsadihebrew\",\n  0x05e5,\n  \"firsttonechinese\",\n  0x02c9,\n  \"fisheye\",\n  0x25c9,\n  \"fitacyrillic\",\n  0x0473,\n  \"five\",\n  0x0035,\n  \"fivearabic\",\n  0x0665,\n  \"fivebengali\",\n  0x09eb,\n  \"fivecircle\",\n  0x2464,\n  \"fivecircleinversesansserif\",\n  0x278e,\n  \"fivedeva\",\n  0x096b,\n  \"fiveeighths\",\n  0x215d,\n  \"fivegujarati\",\n  0x0aeb,\n  \"fivegurmukhi\",\n  0x0a6b,\n  \"fivehackarabic\",\n  0x0665,\n  \"fivehangzhou\",\n  0x3025,\n  \"fiveideographicparen\",\n  0x3224,\n  \"fiveinferior\",\n  0x2085,\n  \"fivemonospace\",\n  0xff15,\n  \"fiveoldstyle\",\n  0xf735,\n  \"fiveparen\",\n  0x2478,\n  \"fiveperiod\",\n  0x248c,\n  \"fivepersian\",\n  0x06f5,\n  \"fiveroman\",\n  0x2174,\n  \"fivesuperior\",\n  0x2075,\n  \"fivethai\",\n  0x0e55,\n  \"fl\",\n  0xfb02,\n  \"florin\",\n  0x0192,\n  \"fmonospace\",\n  0xff46,\n  \"fmsquare\",\n  0x3399,\n  \"fofanthai\",\n  0x0e1f,\n  \"fofathai\",\n  0x0e1d,\n  \"fongmanthai\",\n  0x0e4f,\n  \"forall\",\n  0x2200,\n  \"four\",\n  0x0034,\n  \"fourarabic\",\n  0x0664,\n  \"fourbengali\",\n  0x09ea,\n  \"fourcircle\",\n  0x2463,\n  \"fourcircleinversesansserif\",\n  0x278d,\n  \"fourdeva\",\n  0x096a,\n  \"fourgujarati\",\n  0x0aea,\n  \"fourgurmukhi\",\n  0x0a6a,\n  \"fourhackarabic\",\n  0x0664,\n  \"fourhangzhou\",\n  0x3024,\n  \"fourideographicparen\",\n  0x3223,\n  \"fourinferior\",\n  0x2084,\n  \"fourmonospace\",\n  0xff14,\n  \"fournumeratorbengali\",\n  0x09f7,\n  \"fouroldstyle\",\n  0xf734,\n  \"fourparen\",\n  0x2477,\n  \"fourperiod\",\n  0x248b,\n  \"fourpersian\",\n  0x06f4,\n  \"fourroman\",\n  0x2173,\n  \"foursuperior\",\n  0x2074,\n  \"fourteencircle\",\n  0x246d,\n  \"fourteenparen\",\n  0x2481,\n  \"fourteenperiod\",\n  0x2495,\n  \"fourthai\",\n  0x0e54,\n  \"fourthtonechinese\",\n  0x02cb,\n  \"fparen\",\n  0x24a1,\n  \"fraction\",\n  0x2044,\n  \"franc\",\n  0x20a3,\n  \"g\",\n  0x0067,\n  \"gabengali\",\n  0x0997,\n  \"gacute\",\n  0x01f5,\n  \"gadeva\",\n  0x0917,\n  \"gafarabic\",\n  0x06af,\n  \"gaffinalarabic\",\n  0xfb93,\n  \"gafinitialarabic\",\n  0xfb94,\n  \"gafmedialarabic\",\n  0xfb95,\n  \"gagujarati\",\n  0x0a97,\n  \"gagurmukhi\",\n  0x0a17,\n  \"gahiragana\",\n  0x304c,\n  \"gakatakana\",\n  0x30ac,\n  \"gamma\",\n  0x03b3,\n  \"gammalatinsmall\",\n  0x0263,\n  \"gammasuperior\",\n  0x02e0,\n  \"gangiacoptic\",\n  0x03eb,\n  \"gbopomofo\",\n  0x310d,\n  \"gbreve\",\n  0x011f,\n  \"gcaron\",\n  0x01e7,\n  \"gcedilla\",\n  0x0123,\n  \"gcircle\",\n  0x24d6,\n  \"gcircumflex\",\n  0x011d,\n  \"gcommaaccent\",\n  0x0123,\n  \"gdot\",\n  0x0121,\n  \"gdotaccent\",\n  0x0121,\n  \"gecyrillic\",\n  0x0433,\n  \"gehiragana\",\n  0x3052,\n  \"gekatakana\",\n  0x30b2,\n  \"geometricallyequal\",\n  0x2251,\n  \"gereshaccenthebrew\",\n  0x059c,\n  \"gereshhebrew\",\n  0x05f3,\n  \"gereshmuqdamhebrew\",\n  0x059d,\n  \"germandbls\",\n  0x00df,\n  \"gershayimaccenthebrew\",\n  0x059e,\n  \"gershayimhebrew\",\n  0x05f4,\n  \"getamark\",\n  0x3013,\n  \"ghabengali\",\n  0x0998,\n  \"ghadarmenian\",\n  0x0572,\n  \"ghadeva\",\n  0x0918,\n  \"ghagujarati\",\n  0x0a98,\n  \"ghagurmukhi\",\n  0x0a18,\n  \"ghainarabic\",\n  0x063a,\n  \"ghainfinalarabic\",\n  0xfece,\n  \"ghaininitialarabic\",\n  0xfecf,\n  \"ghainmedialarabic\",\n  0xfed0,\n  \"ghemiddlehookcyrillic\",\n  0x0495,\n  \"ghestrokecyrillic\",\n  0x0493,\n  \"gheupturncyrillic\",\n  0x0491,\n  \"ghhadeva\",\n  0x095a,\n  \"ghhagurmukhi\",\n  0x0a5a,\n  \"ghook\",\n  0x0260,\n  \"ghzsquare\",\n  0x3393,\n  \"gihiragana\",\n  0x304e,\n  \"gikatakana\",\n  0x30ae,\n  \"gimarmenian\",\n  0x0563,\n  \"gimel\",\n  0x05d2,\n  \"gimeldagesh\",\n  0xfb32,\n  \"gimeldageshhebrew\",\n  0xfb32,\n  \"gimelhebrew\",\n  0x05d2,\n  \"gjecyrillic\",\n  0x0453,\n  \"glottalinvertedstroke\",\n  0x01be,\n  \"glottalstop\",\n  0x0294,\n  \"glottalstopinverted\",\n  0x0296,\n  \"glottalstopmod\",\n  0x02c0,\n  \"glottalstopreversed\",\n  0x0295,\n  \"glottalstopreversedmod\",\n  0x02c1,\n  \"glottalstopreversedsuperior\",\n  0x02e4,\n  \"glottalstopstroke\",\n  0x02a1,\n  \"glottalstopstrokereversed\",\n  0x02a2,\n  \"gmacron\",\n  0x1e21,\n  \"gmonospace\",\n  0xff47,\n  \"gohiragana\",\n  0x3054,\n  \"gokatakana\",\n  0x30b4,\n  \"gparen\",\n  0x24a2,\n  \"gpasquare\",\n  0x33ac,\n  \"gradient\",\n  0x2207,\n  \"grave\",\n  0x0060,\n  \"gravebelowcmb\",\n  0x0316,\n  \"gravecmb\",\n  0x0300,\n  \"gravecomb\",\n  0x0300,\n  \"gravedeva\",\n  0x0953,\n  \"gravelowmod\",\n  0x02ce,\n  \"gravemonospace\",\n  0xff40,\n  \"gravetonecmb\",\n  0x0340,\n  \"greater\",\n  0x003e,\n  \"greaterequal\",\n  0x2265,\n  \"greaterequalorless\",\n  0x22db,\n  \"greatermonospace\",\n  0xff1e,\n  \"greaterorequivalent\",\n  0x2273,\n  \"greaterorless\",\n  0x2277,\n  \"greateroverequal\",\n  0x2267,\n  \"greatersmall\",\n  0xfe65,\n  \"gscript\",\n  0x0261,\n  \"gstroke\",\n  0x01e5,\n  \"guhiragana\",\n  0x3050,\n  \"guillemotleft\",\n  0x00ab,\n  \"guillemotright\",\n  0x00bb,\n  \"guilsinglleft\",\n  0x2039,\n  \"guilsinglright\",\n  0x203a,\n  \"gukatakana\",\n  0x30b0,\n  \"guramusquare\",\n  0x3318,\n  \"gysquare\",\n  0x33c9,\n  \"h\",\n  0x0068,\n  \"haabkhasiancyrillic\",\n  0x04a9,\n  \"haaltonearabic\",\n  0x06c1,\n  \"habengali\",\n  0x09b9,\n  \"hadescendercyrillic\",\n  0x04b3,\n  \"hadeva\",\n  0x0939,\n  \"hagujarati\",\n  0x0ab9,\n  \"hagurmukhi\",\n  0x0a39,\n  \"haharabic\",\n  0x062d,\n  \"hahfinalarabic\",\n  0xfea2,\n  \"hahinitialarabic\",\n  0xfea3,\n  \"hahiragana\",\n  0x306f,\n  \"hahmedialarabic\",\n  0xfea4,\n  \"haitusquare\",\n  0x332a,\n  \"hakatakana\",\n  0x30cf,\n  \"hakatakanahalfwidth\",\n  0xff8a,\n  \"halantgurmukhi\",\n  0x0a4d,\n  \"hamzaarabic\",\n  0x0621,\n  \"hamzalowarabic\",\n  0x0621,\n  \"hangulfiller\",\n  0x3164,\n  \"hardsigncyrillic\",\n  0x044a,\n  \"harpoonleftbarbup\",\n  0x21bc,\n  \"harpoonrightbarbup\",\n  0x21c0,\n  \"hasquare\",\n  0x33ca,\n  \"hatafpatah\",\n  0x05b2,\n  \"hatafpatah16\",\n  0x05b2,\n  \"hatafpatah23\",\n  0x05b2,\n  \"hatafpatah2f\",\n  0x05b2,\n  \"hatafpatahhebrew\",\n  0x05b2,\n  \"hatafpatahnarrowhebrew\",\n  0x05b2,\n  \"hatafpatahquarterhebrew\",\n  0x05b2,\n  \"hatafpatahwidehebrew\",\n  0x05b2,\n  \"hatafqamats\",\n  0x05b3,\n  \"hatafqamats1b\",\n  0x05b3,\n  \"hatafqamats28\",\n  0x05b3,\n  \"hatafqamats34\",\n  0x05b3,\n  \"hatafqamatshebrew\",\n  0x05b3,\n  \"hatafqamatsnarrowhebrew\",\n  0x05b3,\n  \"hatafqamatsquarterhebrew\",\n  0x05b3,\n  \"hatafqamatswidehebrew\",\n  0x05b3,\n  \"hatafsegol\",\n  0x05b1,\n  \"hatafsegol17\",\n  0x05b1,\n  \"hatafsegol24\",\n  0x05b1,\n  \"hatafsegol30\",\n  0x05b1,\n  \"hatafsegolhebrew\",\n  0x05b1,\n  \"hatafsegolnarrowhebrew\",\n  0x05b1,\n  \"hatafsegolquarterhebrew\",\n  0x05b1,\n  \"hatafsegolwidehebrew\",\n  0x05b1,\n  \"hbar\",\n  0x0127,\n  \"hbopomofo\",\n  0x310f,\n  \"hbrevebelow\",\n  0x1e2b,\n  \"hcedilla\",\n  0x1e29,\n  \"hcircle\",\n  0x24d7,\n  \"hcircumflex\",\n  0x0125,\n  \"hdieresis\",\n  0x1e27,\n  \"hdotaccent\",\n  0x1e23,\n  \"hdotbelow\",\n  0x1e25,\n  \"he\",\n  0x05d4,\n  \"heart\",\n  0x2665,\n  \"heartsuitblack\",\n  0x2665,\n  \"heartsuitwhite\",\n  0x2661,\n  \"hedagesh\",\n  0xfb34,\n  \"hedageshhebrew\",\n  0xfb34,\n  \"hehaltonearabic\",\n  0x06c1,\n  \"heharabic\",\n  0x0647,\n  \"hehebrew\",\n  0x05d4,\n  \"hehfinalaltonearabic\",\n  0xfba7,\n  \"hehfinalalttwoarabic\",\n  0xfeea,\n  \"hehfinalarabic\",\n  0xfeea,\n  \"hehhamzaabovefinalarabic\",\n  0xfba5,\n  \"hehhamzaaboveisolatedarabic\",\n  0xfba4,\n  \"hehinitialaltonearabic\",\n  0xfba8,\n  \"hehinitialarabic\",\n  0xfeeb,\n  \"hehiragana\",\n  0x3078,\n  \"hehmedialaltonearabic\",\n  0xfba9,\n  \"hehmedialarabic\",\n  0xfeec,\n  \"heiseierasquare\",\n  0x337b,\n  \"hekatakana\",\n  0x30d8,\n  \"hekatakanahalfwidth\",\n  0xff8d,\n  \"hekutaarusquare\",\n  0x3336,\n  \"henghook\",\n  0x0267,\n  \"herutusquare\",\n  0x3339,\n  \"het\",\n  0x05d7,\n  \"hethebrew\",\n  0x05d7,\n  \"hhook\",\n  0x0266,\n  \"hhooksuperior\",\n  0x02b1,\n  \"hieuhacirclekorean\",\n  0x327b,\n  \"hieuhaparenkorean\",\n  0x321b,\n  \"hieuhcirclekorean\",\n  0x326d,\n  \"hieuhkorean\",\n  0x314e,\n  \"hieuhparenkorean\",\n  0x320d,\n  \"hihiragana\",\n  0x3072,\n  \"hikatakana\",\n  0x30d2,\n  \"hikatakanahalfwidth\",\n  0xff8b,\n  \"hiriq\",\n  0x05b4,\n  \"hiriq14\",\n  0x05b4,\n  \"hiriq21\",\n  0x05b4,\n  \"hiriq2d\",\n  0x05b4,\n  \"hiriqhebrew\",\n  0x05b4,\n  \"hiriqnarrowhebrew\",\n  0x05b4,\n  \"hiriqquarterhebrew\",\n  0x05b4,\n  \"hiriqwidehebrew\",\n  0x05b4,\n  \"hlinebelow\",\n  0x1e96,\n  \"hmonospace\",\n  0xff48,\n  \"hoarmenian\",\n  0x0570,\n  \"hohipthai\",\n  0x0e2b,\n  \"hohiragana\",\n  0x307b,\n  \"hokatakana\",\n  0x30db,\n  \"hokatakanahalfwidth\",\n  0xff8e,\n  \"holam\",\n  0x05b9,\n  \"holam19\",\n  0x05b9,\n  \"holam26\",\n  0x05b9,\n  \"holam32\",\n  0x05b9,\n  \"holamhebrew\",\n  0x05b9,\n  \"holamnarrowhebrew\",\n  0x05b9,\n  \"holamquarterhebrew\",\n  0x05b9,\n  \"holamwidehebrew\",\n  0x05b9,\n  \"honokhukthai\",\n  0x0e2e,\n  \"hookabovecomb\",\n  0x0309,\n  \"hookcmb\",\n  0x0309,\n  \"hookpalatalizedbelowcmb\",\n  0x0321,\n  \"hookretroflexbelowcmb\",\n  0x0322,\n  \"hoonsquare\",\n  0x3342,\n  \"horicoptic\",\n  0x03e9,\n  \"horizontalbar\",\n  0x2015,\n  \"horncmb\",\n  0x031b,\n  \"hotsprings\",\n  0x2668,\n  \"house\",\n  0x2302,\n  \"hparen\",\n  0x24a3,\n  \"hsuperior\",\n  0x02b0,\n  \"hturned\",\n  0x0265,\n  \"huhiragana\",\n  0x3075,\n  \"huiitosquare\",\n  0x3333,\n  \"hukatakana\",\n  0x30d5,\n  \"hukatakanahalfwidth\",\n  0xff8c,\n  \"hungarumlaut\",\n  0x02dd,\n  \"hungarumlautcmb\",\n  0x030b,\n  \"hv\",\n  0x0195,\n  \"hyphen\",\n  0x002d,\n  \"hypheninferior\",\n  0xf6e5,\n  \"hyphenmonospace\",\n  0xff0d,\n  \"hyphensmall\",\n  0xfe63,\n  \"hyphensuperior\",\n  0xf6e6,\n  \"hyphentwo\",\n  0x2010,\n  \"i\",\n  0x0069,\n  \"iacute\",\n  0x00ed,\n  \"iacyrillic\",\n  0x044f,\n  \"ibengali\",\n  0x0987,\n  \"ibopomofo\",\n  0x3127,\n  \"ibreve\",\n  0x012d,\n  \"icaron\",\n  0x01d0,\n  \"icircle\",\n  0x24d8,\n  \"icircumflex\",\n  0x00ee,\n  \"icyrillic\",\n  0x0456,\n  \"idblgrave\",\n  0x0209,\n  \"ideographearthcircle\",\n  0x328f,\n  \"ideographfirecircle\",\n  0x328b,\n  \"ideographicallianceparen\",\n  0x323f,\n  \"ideographiccallparen\",\n  0x323a,\n  \"ideographiccentrecircle\",\n  0x32a5,\n  \"ideographicclose\",\n  0x3006,\n  \"ideographiccomma\",\n  0x3001,\n  \"ideographiccommaleft\",\n  0xff64,\n  \"ideographiccongratulationparen\",\n  0x3237,\n  \"ideographiccorrectcircle\",\n  0x32a3,\n  \"ideographicearthparen\",\n  0x322f,\n  \"ideographicenterpriseparen\",\n  0x323d,\n  \"ideographicexcellentcircle\",\n  0x329d,\n  \"ideographicfestivalparen\",\n  0x3240,\n  \"ideographicfinancialcircle\",\n  0x3296,\n  \"ideographicfinancialparen\",\n  0x3236,\n  \"ideographicfireparen\",\n  0x322b,\n  \"ideographichaveparen\",\n  0x3232,\n  \"ideographichighcircle\",\n  0x32a4,\n  \"ideographiciterationmark\",\n  0x3005,\n  \"ideographiclaborcircle\",\n  0x3298,\n  \"ideographiclaborparen\",\n  0x3238,\n  \"ideographicleftcircle\",\n  0x32a7,\n  \"ideographiclowcircle\",\n  0x32a6,\n  \"ideographicmedicinecircle\",\n  0x32a9,\n  \"ideographicmetalparen\",\n  0x322e,\n  \"ideographicmoonparen\",\n  0x322a,\n  \"ideographicnameparen\",\n  0x3234,\n  \"ideographicperiod\",\n  0x3002,\n  \"ideographicprintcircle\",\n  0x329e,\n  \"ideographicreachparen\",\n  0x3243,\n  \"ideographicrepresentparen\",\n  0x3239,\n  \"ideographicresourceparen\",\n  0x323e,\n  \"ideographicrightcircle\",\n  0x32a8,\n  \"ideographicsecretcircle\",\n  0x3299,\n  \"ideographicselfparen\",\n  0x3242,\n  \"ideographicsocietyparen\",\n  0x3233,\n  \"ideographicspace\",\n  0x3000,\n  \"ideographicspecialparen\",\n  0x3235,\n  \"ideographicstockparen\",\n  0x3231,\n  \"ideographicstudyparen\",\n  0x323b,\n  \"ideographicsunparen\",\n  0x3230,\n  \"ideographicsuperviseparen\",\n  0x323c,\n  \"ideographicwaterparen\",\n  0x322c,\n  \"ideographicwoodparen\",\n  0x322d,\n  \"ideographiczero\",\n  0x3007,\n  \"ideographmetalcircle\",\n  0x328e,\n  \"ideographmooncircle\",\n  0x328a,\n  \"ideographnamecircle\",\n  0x3294,\n  \"ideographsuncircle\",\n  0x3290,\n  \"ideographwatercircle\",\n  0x328c,\n  \"ideographwoodcircle\",\n  0x328d,\n  \"ideva\",\n  0x0907,\n  \"idieresis\",\n  0x00ef,\n  \"idieresisacute\",\n  0x1e2f,\n  \"idieresiscyrillic\",\n  0x04e5,\n  \"idotbelow\",\n  0x1ecb,\n  \"iebrevecyrillic\",\n  0x04d7,\n  \"iecyrillic\",\n  0x0435,\n  \"ieungacirclekorean\",\n  0x3275,\n  \"ieungaparenkorean\",\n  0x3215,\n  \"ieungcirclekorean\",\n  0x3267,\n  \"ieungkorean\",\n  0x3147,\n  \"ieungparenkorean\",\n  0x3207,\n  \"igrave\",\n  0x00ec,\n  \"igujarati\",\n  0x0a87,\n  \"igurmukhi\",\n  0x0a07,\n  \"ihiragana\",\n  0x3044,\n  \"ihookabove\",\n  0x1ec9,\n  \"iibengali\",\n  0x0988,\n  \"iicyrillic\",\n  0x0438,\n  \"iideva\",\n  0x0908,\n  \"iigujarati\",\n  0x0a88,\n  \"iigurmukhi\",\n  0x0a08,\n  \"iimatragurmukhi\",\n  0x0a40,\n  \"iinvertedbreve\",\n  0x020b,\n  \"iishortcyrillic\",\n  0x0439,\n  \"iivowelsignbengali\",\n  0x09c0,\n  \"iivowelsigndeva\",\n  0x0940,\n  \"iivowelsigngujarati\",\n  0x0ac0,\n  \"ij\",\n  0x0133,\n  \"ikatakana\",\n  0x30a4,\n  \"ikatakanahalfwidth\",\n  0xff72,\n  \"ikorean\",\n  0x3163,\n  \"ilde\",\n  0x02dc,\n  \"iluyhebrew\",\n  0x05ac,\n  \"imacron\",\n  0x012b,\n  \"imacroncyrillic\",\n  0x04e3,\n  \"imageorapproximatelyequal\",\n  0x2253,\n  \"imatragurmukhi\",\n  0x0a3f,\n  \"imonospace\",\n  0xff49,\n  \"increment\",\n  0x2206,\n  \"infinity\",\n  0x221e,\n  \"iniarmenian\",\n  0x056b,\n  \"integral\",\n  0x222b,\n  \"integralbottom\",\n  0x2321,\n  \"integralbt\",\n  0x2321,\n  \"integralex\",\n  0xf8f5,\n  \"integraltop\",\n  0x2320,\n  \"integraltp\",\n  0x2320,\n  \"intersection\",\n  0x2229,\n  \"intisquare\",\n  0x3305,\n  \"invbullet\",\n  0x25d8,\n  \"invcircle\",\n  0x25d9,\n  \"invsmileface\",\n  0x263b,\n  \"iocyrillic\",\n  0x0451,\n  \"iogonek\",\n  0x012f,\n  \"iota\",\n  0x03b9,\n  \"iotadieresis\",\n  0x03ca,\n  \"iotadieresistonos\",\n  0x0390,\n  \"iotalatin\",\n  0x0269,\n  \"iotatonos\",\n  0x03af,\n  \"iparen\",\n  0x24a4,\n  \"irigurmukhi\",\n  0x0a72,\n  \"ismallhiragana\",\n  0x3043,\n  \"ismallkatakana\",\n  0x30a3,\n  \"ismallkatakanahalfwidth\",\n  0xff68,\n  \"issharbengali\",\n  0x09fa,\n  \"istroke\",\n  0x0268,\n  \"isuperior\",\n  0xf6ed,\n  \"iterationhiragana\",\n  0x309d,\n  \"iterationkatakana\",\n  0x30fd,\n  \"itilde\",\n  0x0129,\n  \"itildebelow\",\n  0x1e2d,\n  \"iubopomofo\",\n  0x3129,\n  \"iucyrillic\",\n  0x044e,\n  \"ivowelsignbengali\",\n  0x09bf,\n  \"ivowelsigndeva\",\n  0x093f,\n  \"ivowelsigngujarati\",\n  0x0abf,\n  \"izhitsacyrillic\",\n  0x0475,\n  \"izhitsadblgravecyrillic\",\n  0x0477,\n  \"j\",\n  0x006a,\n  \"jaarmenian\",\n  0x0571,\n  \"jabengali\",\n  0x099c,\n  \"jadeva\",\n  0x091c,\n  \"jagujarati\",\n  0x0a9c,\n  \"jagurmukhi\",\n  0x0a1c,\n  \"jbopomofo\",\n  0x3110,\n  \"jcaron\",\n  0x01f0,\n  \"jcircle\",\n  0x24d9,\n  \"jcircumflex\",\n  0x0135,\n  \"jcrossedtail\",\n  0x029d,\n  \"jdotlessstroke\",\n  0x025f,\n  \"jecyrillic\",\n  0x0458,\n  \"jeemarabic\",\n  0x062c,\n  \"jeemfinalarabic\",\n  0xfe9e,\n  \"jeeminitialarabic\",\n  0xfe9f,\n  \"jeemmedialarabic\",\n  0xfea0,\n  \"jeharabic\",\n  0x0698,\n  \"jehfinalarabic\",\n  0xfb8b,\n  \"jhabengali\",\n  0x099d,\n  \"jhadeva\",\n  0x091d,\n  \"jhagujarati\",\n  0x0a9d,\n  \"jhagurmukhi\",\n  0x0a1d,\n  \"jheharmenian\",\n  0x057b,\n  \"jis\",\n  0x3004,\n  \"jmonospace\",\n  0xff4a,\n  \"jparen\",\n  0x24a5,\n  \"jsuperior\",\n  0x02b2,\n  \"k\",\n  0x006b,\n  \"kabashkircyrillic\",\n  0x04a1,\n  \"kabengali\",\n  0x0995,\n  \"kacute\",\n  0x1e31,\n  \"kacyrillic\",\n  0x043a,\n  \"kadescendercyrillic\",\n  0x049b,\n  \"kadeva\",\n  0x0915,\n  \"kaf\",\n  0x05db,\n  \"kafarabic\",\n  0x0643,\n  \"kafdagesh\",\n  0xfb3b,\n  \"kafdageshhebrew\",\n  0xfb3b,\n  \"kaffinalarabic\",\n  0xfeda,\n  \"kafhebrew\",\n  0x05db,\n  \"kafinitialarabic\",\n  0xfedb,\n  \"kafmedialarabic\",\n  0xfedc,\n  \"kafrafehebrew\",\n  0xfb4d,\n  \"kagujarati\",\n  0x0a95,\n  \"kagurmukhi\",\n  0x0a15,\n  \"kahiragana\",\n  0x304b,\n  \"kahookcyrillic\",\n  0x04c4,\n  \"kakatakana\",\n  0x30ab,\n  \"kakatakanahalfwidth\",\n  0xff76,\n  \"kappa\",\n  0x03ba,\n  \"kappasymbolgreek\",\n  0x03f0,\n  \"kapyeounmieumkorean\",\n  0x3171,\n  \"kapyeounphieuphkorean\",\n  0x3184,\n  \"kapyeounpieupkorean\",\n  0x3178,\n  \"kapyeounssangpieupkorean\",\n  0x3179,\n  \"karoriisquare\",\n  0x330d,\n  \"kashidaautoarabic\",\n  0x0640,\n  \"kashidaautonosidebearingarabic\",\n  0x0640,\n  \"kasmallkatakana\",\n  0x30f5,\n  \"kasquare\",\n  0x3384,\n  \"kasraarabic\",\n  0x0650,\n  \"kasratanarabic\",\n  0x064d,\n  \"kastrokecyrillic\",\n  0x049f,\n  \"katahiraprolongmarkhalfwidth\",\n  0xff70,\n  \"kaverticalstrokecyrillic\",\n  0x049d,\n  \"kbopomofo\",\n  0x310e,\n  \"kcalsquare\",\n  0x3389,\n  \"kcaron\",\n  0x01e9,\n  \"kcedilla\",\n  0x0137,\n  \"kcircle\",\n  0x24da,\n  \"kcommaaccent\",\n  0x0137,\n  \"kdotbelow\",\n  0x1e33,\n  \"keharmenian\",\n  0x0584,\n  \"kehiragana\",\n  0x3051,\n  \"kekatakana\",\n  0x30b1,\n  \"kekatakanahalfwidth\",\n  0xff79,\n  \"kenarmenian\",\n  0x056f,\n  \"kesmallkatakana\",\n  0x30f6,\n  \"kgreenlandic\",\n  0x0138,\n  \"khabengali\",\n  0x0996,\n  \"khacyrillic\",\n  0x0445,\n  \"khadeva\",\n  0x0916,\n  \"khagujarati\",\n  0x0a96,\n  \"khagurmukhi\",\n  0x0a16,\n  \"khaharabic\",\n  0x062e,\n  \"khahfinalarabic\",\n  0xfea6,\n  \"khahinitialarabic\",\n  0xfea7,\n  \"khahmedialarabic\",\n  0xfea8,\n  \"kheicoptic\",\n  0x03e7,\n  \"khhadeva\",\n  0x0959,\n  \"khhagurmukhi\",\n  0x0a59,\n  \"khieukhacirclekorean\",\n  0x3278,\n  \"khieukhaparenkorean\",\n  0x3218,\n  \"khieukhcirclekorean\",\n  0x326a,\n  \"khieukhkorean\",\n  0x314b,\n  \"khieukhparenkorean\",\n  0x320a,\n  \"khokhaithai\",\n  0x0e02,\n  \"khokhonthai\",\n  0x0e05,\n  \"khokhuatthai\",\n  0x0e03,\n  \"khokhwaithai\",\n  0x0e04,\n  \"khomutthai\",\n  0x0e5b,\n  \"khook\",\n  0x0199,\n  \"khorakhangthai\",\n  0x0e06,\n  \"khzsquare\",\n  0x3391,\n  \"kihiragana\",\n  0x304d,\n  \"kikatakana\",\n  0x30ad,\n  \"kikatakanahalfwidth\",\n  0xff77,\n  \"kiroguramusquare\",\n  0x3315,\n  \"kiromeetorusquare\",\n  0x3316,\n  \"kirosquare\",\n  0x3314,\n  \"kiyeokacirclekorean\",\n  0x326e,\n  \"kiyeokaparenkorean\",\n  0x320e,\n  \"kiyeokcirclekorean\",\n  0x3260,\n  \"kiyeokkorean\",\n  0x3131,\n  \"kiyeokparenkorean\",\n  0x3200,\n  \"kiyeoksioskorean\",\n  0x3133,\n  \"kjecyrillic\",\n  0x045c,\n  \"klinebelow\",\n  0x1e35,\n  \"klsquare\",\n  0x3398,\n  \"kmcubedsquare\",\n  0x33a6,\n  \"kmonospace\",\n  0xff4b,\n  \"kmsquaredsquare\",\n  0x33a2,\n  \"kohiragana\",\n  0x3053,\n  \"kohmsquare\",\n  0x33c0,\n  \"kokaithai\",\n  0x0e01,\n  \"kokatakana\",\n  0x30b3,\n  \"kokatakanahalfwidth\",\n  0xff7a,\n  \"kooposquare\",\n  0x331e,\n  \"koppacyrillic\",\n  0x0481,\n  \"koreanstandardsymbol\",\n  0x327f,\n  \"koroniscmb\",\n  0x0343,\n  \"kparen\",\n  0x24a6,\n  \"kpasquare\",\n  0x33aa,\n  \"ksicyrillic\",\n  0x046f,\n  \"ktsquare\",\n  0x33cf,\n  \"kturned\",\n  0x029e,\n  \"kuhiragana\",\n  0x304f,\n  \"kukatakana\",\n  0x30af,\n  \"kukatakanahalfwidth\",\n  0xff78,\n  \"kvsquare\",\n  0x33b8,\n  \"kwsquare\",\n  0x33be,\n  \"l\",\n  0x006c,\n  \"labengali\",\n  0x09b2,\n  \"lacute\",\n  0x013a,\n  \"ladeva\",\n  0x0932,\n  \"lagujarati\",\n  0x0ab2,\n  \"lagurmukhi\",\n  0x0a32,\n  \"lakkhangyaothai\",\n  0x0e45,\n  \"lamaleffinalarabic\",\n  0xfefc,\n  \"lamalefhamzaabovefinalarabic\",\n  0xfef8,\n  \"lamalefhamzaaboveisolatedarabic\",\n  0xfef7,\n  \"lamalefhamzabelowfinalarabic\",\n  0xfefa,\n  \"lamalefhamzabelowisolatedarabic\",\n  0xfef9,\n  \"lamalefisolatedarabic\",\n  0xfefb,\n  \"lamalefmaddaabovefinalarabic\",\n  0xfef6,\n  \"lamalefmaddaaboveisolatedarabic\",\n  0xfef5,\n  \"lamarabic\",\n  0x0644,\n  \"lambda\",\n  0x03bb,\n  \"lambdastroke\",\n  0x019b,\n  \"lamed\",\n  0x05dc,\n  \"lameddagesh\",\n  0xfb3c,\n  \"lameddageshhebrew\",\n  0xfb3c,\n  \"lamedhebrew\",\n  0x05dc,\n  \"lamfinalarabic\",\n  0xfede,\n  \"lamhahinitialarabic\",\n  0xfcca,\n  \"laminitialarabic\",\n  0xfedf,\n  \"lamjeeminitialarabic\",\n  0xfcc9,\n  \"lamkhahinitialarabic\",\n  0xfccb,\n  \"lamlamhehisolatedarabic\",\n  0xfdf2,\n  \"lammedialarabic\",\n  0xfee0,\n  \"lammeemhahinitialarabic\",\n  0xfd88,\n  \"lammeeminitialarabic\",\n  0xfccc,\n  \"largecircle\",\n  0x25ef,\n  \"lbar\",\n  0x019a,\n  \"lbelt\",\n  0x026c,\n  \"lbopomofo\",\n  0x310c,\n  \"lcaron\",\n  0x013e,\n  \"lcedilla\",\n  0x013c,\n  \"lcircle\",\n  0x24db,\n  \"lcircumflexbelow\",\n  0x1e3d,\n  \"lcommaaccent\",\n  0x013c,\n  \"ldot\",\n  0x0140,\n  \"ldotaccent\",\n  0x0140,\n  \"ldotbelow\",\n  0x1e37,\n  \"ldotbelowmacron\",\n  0x1e39,\n  \"leftangleabovecmb\",\n  0x031a,\n  \"lefttackbelowcmb\",\n  0x0318,\n  \"less\",\n  0x003c,\n  \"lessequal\",\n  0x2264,\n  \"lessequalorgreater\",\n  0x22da,\n  \"lessmonospace\",\n  0xff1c,\n  \"lessorequivalent\",\n  0x2272,\n  \"lessorgreater\",\n  0x2276,\n  \"lessoverequal\",\n  0x2266,\n  \"lesssmall\",\n  0xfe64,\n  \"lezh\",\n  0x026e,\n  \"lfblock\",\n  0x258c,\n  \"lhookretroflex\",\n  0x026d,\n  \"lira\",\n  0x20a4,\n  \"liwnarmenian\",\n  0x056c,\n  \"lj\",\n  0x01c9,\n  \"ljecyrillic\",\n  0x0459,\n  \"ll\",\n  0xf6c0,\n  \"lladeva\",\n  0x0933,\n  \"llagujarati\",\n  0x0ab3,\n  \"llinebelow\",\n  0x1e3b,\n  \"llladeva\",\n  0x0934,\n  \"llvocalicbengali\",\n  0x09e1,\n  \"llvocalicdeva\",\n  0x0961,\n  \"llvocalicvowelsignbengali\",\n  0x09e3,\n  \"llvocalicvowelsigndeva\",\n  0x0963,\n  \"lmiddletilde\",\n  0x026b,\n  \"lmonospace\",\n  0xff4c,\n  \"lmsquare\",\n  0x33d0,\n  \"lochulathai\",\n  0x0e2c,\n  \"logicaland\",\n  0x2227,\n  \"logicalnot\",\n  0x00ac,\n  \"logicalnotreversed\",\n  0x2310,\n  \"logicalor\",\n  0x2228,\n  \"lolingthai\",\n  0x0e25,\n  \"longs\",\n  0x017f,\n  \"lowlinecenterline\",\n  0xfe4e,\n  \"lowlinecmb\",\n  0x0332,\n  \"lowlinedashed\",\n  0xfe4d,\n  \"lozenge\",\n  0x25ca,\n  \"lparen\",\n  0x24a7,\n  \"lslash\",\n  0x0142,\n  \"lsquare\",\n  0x2113,\n  \"lsuperior\",\n  0xf6ee,\n  \"ltshade\",\n  0x2591,\n  \"luthai\",\n  0x0e26,\n  \"lvocalicbengali\",\n  0x098c,\n  \"lvocalicdeva\",\n  0x090c,\n  \"lvocalicvowelsignbengali\",\n  0x09e2,\n  \"lvocalicvowelsigndeva\",\n  0x0962,\n  \"lxsquare\",\n  0x33d3,\n  \"m\",\n  0x006d,\n  \"mabengali\",\n  0x09ae,\n  \"macron\",\n  0x00af,\n  \"macronbelowcmb\",\n  0x0331,\n  \"macroncmb\",\n  0x0304,\n  \"macronlowmod\",\n  0x02cd,\n  \"macronmonospace\",\n  0xffe3,\n  \"macute\",\n  0x1e3f,\n  \"madeva\",\n  0x092e,\n  \"magujarati\",\n  0x0aae,\n  \"magurmukhi\",\n  0x0a2e,\n  \"mahapakhhebrew\",\n  0x05a4,\n  \"mahapakhlefthebrew\",\n  0x05a4,\n  \"mahiragana\",\n  0x307e,\n  \"maichattawalowleftthai\",\n  0xf895,\n  \"maichattawalowrightthai\",\n  0xf894,\n  \"maichattawathai\",\n  0x0e4b,\n  \"maichattawaupperleftthai\",\n  0xf893,\n  \"maieklowleftthai\",\n  0xf88c,\n  \"maieklowrightthai\",\n  0xf88b,\n  \"maiekthai\",\n  0x0e48,\n  \"maiekupperleftthai\",\n  0xf88a,\n  \"maihanakatleftthai\",\n  0xf884,\n  \"maihanakatthai\",\n  0x0e31,\n  \"maitaikhuleftthai\",\n  0xf889,\n  \"maitaikhuthai\",\n  0x0e47,\n  \"maitholowleftthai\",\n  0xf88f,\n  \"maitholowrightthai\",\n  0xf88e,\n  \"maithothai\",\n  0x0e49,\n  \"maithoupperleftthai\",\n  0xf88d,\n  \"maitrilowleftthai\",\n  0xf892,\n  \"maitrilowrightthai\",\n  0xf891,\n  \"maitrithai\",\n  0x0e4a,\n  \"maitriupperleftthai\",\n  0xf890,\n  \"maiyamokthai\",\n  0x0e46,\n  \"makatakana\",\n  0x30de,\n  \"makatakanahalfwidth\",\n  0xff8f,\n  \"male\",\n  0x2642,\n  \"mansyonsquare\",\n  0x3347,\n  \"maqafhebrew\",\n  0x05be,\n  \"mars\",\n  0x2642,\n  \"masoracirclehebrew\",\n  0x05af,\n  \"masquare\",\n  0x3383,\n  \"mbopomofo\",\n  0x3107,\n  \"mbsquare\",\n  0x33d4,\n  \"mcircle\",\n  0x24dc,\n  \"mcubedsquare\",\n  0x33a5,\n  \"mdotaccent\",\n  0x1e41,\n  \"mdotbelow\",\n  0x1e43,\n  \"meemarabic\",\n  0x0645,\n  \"meemfinalarabic\",\n  0xfee2,\n  \"meeminitialarabic\",\n  0xfee3,\n  \"meemmedialarabic\",\n  0xfee4,\n  \"meemmeeminitialarabic\",\n  0xfcd1,\n  \"meemmeemisolatedarabic\",\n  0xfc48,\n  \"meetorusquare\",\n  0x334d,\n  \"mehiragana\",\n  0x3081,\n  \"meizierasquare\",\n  0x337e,\n  \"mekatakana\",\n  0x30e1,\n  \"mekatakanahalfwidth\",\n  0xff92,\n  \"mem\",\n  0x05de,\n  \"memdagesh\",\n  0xfb3e,\n  \"memdageshhebrew\",\n  0xfb3e,\n  \"memhebrew\",\n  0x05de,\n  \"menarmenian\",\n  0x0574,\n  \"merkhahebrew\",\n  0x05a5,\n  \"merkhakefulahebrew\",\n  0x05a6,\n  \"merkhakefulalefthebrew\",\n  0x05a6,\n  \"merkhalefthebrew\",\n  0x05a5,\n  \"mhook\",\n  0x0271,\n  \"mhzsquare\",\n  0x3392,\n  \"middledotkatakanahalfwidth\",\n  0xff65,\n  \"middot\",\n  0x00b7,\n  \"mieumacirclekorean\",\n  0x3272,\n  \"mieumaparenkorean\",\n  0x3212,\n  \"mieumcirclekorean\",\n  0x3264,\n  \"mieumkorean\",\n  0x3141,\n  \"mieumpansioskorean\",\n  0x3170,\n  \"mieumparenkorean\",\n  0x3204,\n  \"mieumpieupkorean\",\n  0x316e,\n  \"mieumsioskorean\",\n  0x316f,\n  \"mihiragana\",\n  0x307f,\n  \"mikatakana\",\n  0x30df,\n  \"mikatakanahalfwidth\",\n  0xff90,\n  \"minus\",\n  0x2212,\n  \"minusbelowcmb\",\n  0x0320,\n  \"minuscircle\",\n  0x2296,\n  \"minusmod\",\n  0x02d7,\n  \"minusplus\",\n  0x2213,\n  \"minute\",\n  0x2032,\n  \"miribaarusquare\",\n  0x334a,\n  \"mirisquare\",\n  0x3349,\n  \"mlonglegturned\",\n  0x0270,\n  \"mlsquare\",\n  0x3396,\n  \"mmcubedsquare\",\n  0x33a3,\n  \"mmonospace\",\n  0xff4d,\n  \"mmsquaredsquare\",\n  0x339f,\n  \"mohiragana\",\n  0x3082,\n  \"mohmsquare\",\n  0x33c1,\n  \"mokatakana\",\n  0x30e2,\n  \"mokatakanahalfwidth\",\n  0xff93,\n  \"molsquare\",\n  0x33d6,\n  \"momathai\",\n  0x0e21,\n  \"moverssquare\",\n  0x33a7,\n  \"moverssquaredsquare\",\n  0x33a8,\n  \"mparen\",\n  0x24a8,\n  \"mpasquare\",\n  0x33ab,\n  \"mssquare\",\n  0x33b3,\n  \"msuperior\",\n  0xf6ef,\n  \"mturned\",\n  0x026f,\n  \"mu\",\n  0x00b5,\n  \"mu1\",\n  0x00b5,\n  \"muasquare\",\n  0x3382,\n  \"muchgreater\",\n  0x226b,\n  \"muchless\",\n  0x226a,\n  \"mufsquare\",\n  0x338c,\n  \"mugreek\",\n  0x03bc,\n  \"mugsquare\",\n  0x338d,\n  \"muhiragana\",\n  0x3080,\n  \"mukatakana\",\n  0x30e0,\n  \"mukatakanahalfwidth\",\n  0xff91,\n  \"mulsquare\",\n  0x3395,\n  \"multiply\",\n  0x00d7,\n  \"mumsquare\",\n  0x339b,\n  \"munahhebrew\",\n  0x05a3,\n  \"munahlefthebrew\",\n  0x05a3,\n  \"musicalnote\",\n  0x266a,\n  \"musicalnotedbl\",\n  0x266b,\n  \"musicflatsign\",\n  0x266d,\n  \"musicsharpsign\",\n  0x266f,\n  \"mussquare\",\n  0x33b2,\n  \"muvsquare\",\n  0x33b6,\n  \"muwsquare\",\n  0x33bc,\n  \"mvmegasquare\",\n  0x33b9,\n  \"mvsquare\",\n  0x33b7,\n  \"mwmegasquare\",\n  0x33bf,\n  \"mwsquare\",\n  0x33bd,\n  \"n\",\n  0x006e,\n  \"nabengali\",\n  0x09a8,\n  \"nabla\",\n  0x2207,\n  \"nacute\",\n  0x0144,\n  \"nadeva\",\n  0x0928,\n  \"nagujarati\",\n  0x0aa8,\n  \"nagurmukhi\",\n  0x0a28,\n  \"nahiragana\",\n  0x306a,\n  \"nakatakana\",\n  0x30ca,\n  \"nakatakanahalfwidth\",\n  0xff85,\n  \"napostrophe\",\n  0x0149,\n  \"nasquare\",\n  0x3381,\n  \"nbopomofo\",\n  0x310b,\n  \"nbspace\",\n  0x00a0,\n  \"ncaron\",\n  0x0148,\n  \"ncedilla\",\n  0x0146,\n  \"ncircle\",\n  0x24dd,\n  \"ncircumflexbelow\",\n  0x1e4b,\n  \"ncommaaccent\",\n  0x0146,\n  \"ndotaccent\",\n  0x1e45,\n  \"ndotbelow\",\n  0x1e47,\n  \"nehiragana\",\n  0x306d,\n  \"nekatakana\",\n  0x30cd,\n  \"nekatakanahalfwidth\",\n  0xff88,\n  \"newsheqelsign\",\n  0x20aa,\n  \"nfsquare\",\n  0x338b,\n  \"ngabengali\",\n  0x0999,\n  \"ngadeva\",\n  0x0919,\n  \"ngagujarati\",\n  0x0a99,\n  \"ngagurmukhi\",\n  0x0a19,\n  \"ngonguthai\",\n  0x0e07,\n  \"nhiragana\",\n  0x3093,\n  \"nhookleft\",\n  0x0272,\n  \"nhookretroflex\",\n  0x0273,\n  \"nieunacirclekorean\",\n  0x326f,\n  \"nieunaparenkorean\",\n  0x320f,\n  \"nieuncieuckorean\",\n  0x3135,\n  \"nieuncirclekorean\",\n  0x3261,\n  \"nieunhieuhkorean\",\n  0x3136,\n  \"nieunkorean\",\n  0x3134,\n  \"nieunpansioskorean\",\n  0x3168,\n  \"nieunparenkorean\",\n  0x3201,\n  \"nieunsioskorean\",\n  0x3167,\n  \"nieuntikeutkorean\",\n  0x3166,\n  \"nihiragana\",\n  0x306b,\n  \"nikatakana\",\n  0x30cb,\n  \"nikatakanahalfwidth\",\n  0xff86,\n  \"nikhahitleftthai\",\n  0xf899,\n  \"nikhahitthai\",\n  0x0e4d,\n  \"nine\",\n  0x0039,\n  \"ninearabic\",\n  0x0669,\n  \"ninebengali\",\n  0x09ef,\n  \"ninecircle\",\n  0x2468,\n  \"ninecircleinversesansserif\",\n  0x2792,\n  \"ninedeva\",\n  0x096f,\n  \"ninegujarati\",\n  0x0aef,\n  \"ninegurmukhi\",\n  0x0a6f,\n  \"ninehackarabic\",\n  0x0669,\n  \"ninehangzhou\",\n  0x3029,\n  \"nineideographicparen\",\n  0x3228,\n  \"nineinferior\",\n  0x2089,\n  \"ninemonospace\",\n  0xff19,\n  \"nineoldstyle\",\n  0xf739,\n  \"nineparen\",\n  0x247c,\n  \"nineperiod\",\n  0x2490,\n  \"ninepersian\",\n  0x06f9,\n  \"nineroman\",\n  0x2178,\n  \"ninesuperior\",\n  0x2079,\n  \"nineteencircle\",\n  0x2472,\n  \"nineteenparen\",\n  0x2486,\n  \"nineteenperiod\",\n  0x249a,\n  \"ninethai\",\n  0x0e59,\n  \"nj\",\n  0x01cc,\n  \"njecyrillic\",\n  0x045a,\n  \"nkatakana\",\n  0x30f3,\n  \"nkatakanahalfwidth\",\n  0xff9d,\n  \"nlegrightlong\",\n  0x019e,\n  \"nlinebelow\",\n  0x1e49,\n  \"nmonospace\",\n  0xff4e,\n  \"nmsquare\",\n  0x339a,\n  \"nnabengali\",\n  0x09a3,\n  \"nnadeva\",\n  0x0923,\n  \"nnagujarati\",\n  0x0aa3,\n  \"nnagurmukhi\",\n  0x0a23,\n  \"nnnadeva\",\n  0x0929,\n  \"nohiragana\",\n  0x306e,\n  \"nokatakana\",\n  0x30ce,\n  \"nokatakanahalfwidth\",\n  0xff89,\n  \"nonbreakingspace\",\n  0x00a0,\n  \"nonenthai\",\n  0x0e13,\n  \"nonuthai\",\n  0x0e19,\n  \"noonarabic\",\n  0x0646,\n  \"noonfinalarabic\",\n  0xfee6,\n  \"noonghunnaarabic\",\n  0x06ba,\n  \"noonghunnafinalarabic\",\n  0xfb9f,\n  \"nooninitialarabic\",\n  0xfee7,\n  \"noonjeeminitialarabic\",\n  0xfcd2,\n  \"noonjeemisolatedarabic\",\n  0xfc4b,\n  \"noonmedialarabic\",\n  0xfee8,\n  \"noonmeeminitialarabic\",\n  0xfcd5,\n  \"noonmeemisolatedarabic\",\n  0xfc4e,\n  \"noonnoonfinalarabic\",\n  0xfc8d,\n  \"notcontains\",\n  0x220c,\n  \"notelement\",\n  0x2209,\n  \"notelementof\",\n  0x2209,\n  \"notequal\",\n  0x2260,\n  \"notgreater\",\n  0x226f,\n  \"notgreaternorequal\",\n  0x2271,\n  \"notgreaternorless\",\n  0x2279,\n  \"notidentical\",\n  0x2262,\n  \"notless\",\n  0x226e,\n  \"notlessnorequal\",\n  0x2270,\n  \"notparallel\",\n  0x2226,\n  \"notprecedes\",\n  0x2280,\n  \"notsubset\",\n  0x2284,\n  \"notsucceeds\",\n  0x2281,\n  \"notsuperset\",\n  0x2285,\n  \"nowarmenian\",\n  0x0576,\n  \"nparen\",\n  0x24a9,\n  \"nssquare\",\n  0x33b1,\n  \"nsuperior\",\n  0x207f,\n  \"ntilde\",\n  0x00f1,\n  \"nu\",\n  0x03bd,\n  \"nuhiragana\",\n  0x306c,\n  \"nukatakana\",\n  0x30cc,\n  \"nukatakanahalfwidth\",\n  0xff87,\n  \"nuktabengali\",\n  0x09bc,\n  \"nuktadeva\",\n  0x093c,\n  \"nuktagujarati\",\n  0x0abc,\n  \"nuktagurmukhi\",\n  0x0a3c,\n  \"numbersign\",\n  0x0023,\n  \"numbersignmonospace\",\n  0xff03,\n  \"numbersignsmall\",\n  0xfe5f,\n  \"numeralsigngreek\",\n  0x0374,\n  \"numeralsignlowergreek\",\n  0x0375,\n  \"numero\",\n  0x2116,\n  \"nun\",\n  0x05e0,\n  \"nundagesh\",\n  0xfb40,\n  \"nundageshhebrew\",\n  0xfb40,\n  \"nunhebrew\",\n  0x05e0,\n  \"nvsquare\",\n  0x33b5,\n  \"nwsquare\",\n  0x33bb,\n  \"nyabengali\",\n  0x099e,\n  \"nyadeva\",\n  0x091e,\n  \"nyagujarati\",\n  0x0a9e,\n  \"nyagurmukhi\",\n  0x0a1e,\n  \"o\",\n  0x006f,\n  \"oacute\",\n  0x00f3,\n  \"oangthai\",\n  0x0e2d,\n  \"obarred\",\n  0x0275,\n  \"obarredcyrillic\",\n  0x04e9,\n  \"obarreddieresiscyrillic\",\n  0x04eb,\n  \"obengali\",\n  0x0993,\n  \"obopomofo\",\n  0x311b,\n  \"obreve\",\n  0x014f,\n  \"ocandradeva\",\n  0x0911,\n  \"ocandragujarati\",\n  0x0a91,\n  \"ocandravowelsigndeva\",\n  0x0949,\n  \"ocandravowelsigngujarati\",\n  0x0ac9,\n  \"ocaron\",\n  0x01d2,\n  \"ocircle\",\n  0x24de,\n  \"ocircumflex\",\n  0x00f4,\n  \"ocircumflexacute\",\n  0x1ed1,\n  \"ocircumflexdotbelow\",\n  0x1ed9,\n  \"ocircumflexgrave\",\n  0x1ed3,\n  \"ocircumflexhookabove\",\n  0x1ed5,\n  \"ocircumflextilde\",\n  0x1ed7,\n  \"ocyrillic\",\n  0x043e,\n  \"odblacute\",\n  0x0151,\n  \"odblgrave\",\n  0x020d,\n  \"odeva\",\n  0x0913,\n  \"odieresis\",\n  0x00f6,\n  \"odieresiscyrillic\",\n  0x04e7,\n  \"odotbelow\",\n  0x1ecd,\n  \"oe\",\n  0x0153,\n  \"oekorean\",\n  0x315a,\n  \"ogonek\",\n  0x02db,\n  \"ogonekcmb\",\n  0x0328,\n  \"ograve\",\n  0x00f2,\n  \"ogujarati\",\n  0x0a93,\n  \"oharmenian\",\n  0x0585,\n  \"ohiragana\",\n  0x304a,\n  \"ohookabove\",\n  0x1ecf,\n  \"ohorn\",\n  0x01a1,\n  \"ohornacute\",\n  0x1edb,\n  \"ohorndotbelow\",\n  0x1ee3,\n  \"ohorngrave\",\n  0x1edd,\n  \"ohornhookabove\",\n  0x1edf,\n  \"ohorntilde\",\n  0x1ee1,\n  \"ohungarumlaut\",\n  0x0151,\n  \"oi\",\n  0x01a3,\n  \"oinvertedbreve\",\n  0x020f,\n  \"okatakana\",\n  0x30aa,\n  \"okatakanahalfwidth\",\n  0xff75,\n  \"okorean\",\n  0x3157,\n  \"olehebrew\",\n  0x05ab,\n  \"omacron\",\n  0x014d,\n  \"omacronacute\",\n  0x1e53,\n  \"omacrongrave\",\n  0x1e51,\n  \"omdeva\",\n  0x0950,\n  \"omega\",\n  0x03c9,\n  \"omega1\",\n  0x03d6,\n  \"omegacyrillic\",\n  0x0461,\n  \"omegalatinclosed\",\n  0x0277,\n  \"omegaroundcyrillic\",\n  0x047b,\n  \"omegatitlocyrillic\",\n  0x047d,\n  \"omegatonos\",\n  0x03ce,\n  \"omgujarati\",\n  0x0ad0,\n  \"omicron\",\n  0x03bf,\n  \"omicrontonos\",\n  0x03cc,\n  \"omonospace\",\n  0xff4f,\n  \"one\",\n  0x0031,\n  \"onearabic\",\n  0x0661,\n  \"onebengali\",\n  0x09e7,\n  \"onecircle\",\n  0x2460,\n  \"onecircleinversesansserif\",\n  0x278a,\n  \"onedeva\",\n  0x0967,\n  \"onedotenleader\",\n  0x2024,\n  \"oneeighth\",\n  0x215b,\n  \"onefitted\",\n  0xf6dc,\n  \"onegujarati\",\n  0x0ae7,\n  \"onegurmukhi\",\n  0x0a67,\n  \"onehackarabic\",\n  0x0661,\n  \"onehalf\",\n  0x00bd,\n  \"onehangzhou\",\n  0x3021,\n  \"oneideographicparen\",\n  0x3220,\n  \"oneinferior\",\n  0x2081,\n  \"onemonospace\",\n  0xff11,\n  \"onenumeratorbengali\",\n  0x09f4,\n  \"oneoldstyle\",\n  0xf731,\n  \"oneparen\",\n  0x2474,\n  \"oneperiod\",\n  0x2488,\n  \"onepersian\",\n  0x06f1,\n  \"onequarter\",\n  0x00bc,\n  \"oneroman\",\n  0x2170,\n  \"onesuperior\",\n  0x00b9,\n  \"onethai\",\n  0x0e51,\n  \"onethird\",\n  0x2153,\n  \"oogonek\",\n  0x01eb,\n  \"oogonekmacron\",\n  0x01ed,\n  \"oogurmukhi\",\n  0x0a13,\n  \"oomatragurmukhi\",\n  0x0a4b,\n  \"oopen\",\n  0x0254,\n  \"oparen\",\n  0x24aa,\n  \"openbullet\",\n  0x25e6,\n  \"option\",\n  0x2325,\n  \"ordfeminine\",\n  0x00aa,\n  \"ordmasculine\",\n  0x00ba,\n  \"orthogonal\",\n  0x221f,\n  \"oshortdeva\",\n  0x0912,\n  \"oshortvowelsigndeva\",\n  0x094a,\n  \"oslash\",\n  0x00f8,\n  \"oslashacute\",\n  0x01ff,\n  \"osmallhiragana\",\n  0x3049,\n  \"osmallkatakana\",\n  0x30a9,\n  \"osmallkatakanahalfwidth\",\n  0xff6b,\n  \"ostrokeacute\",\n  0x01ff,\n  \"osuperior\",\n  0xf6f0,\n  \"otcyrillic\",\n  0x047f,\n  \"otilde\",\n  0x00f5,\n  \"otildeacute\",\n  0x1e4d,\n  \"otildedieresis\",\n  0x1e4f,\n  \"oubopomofo\",\n  0x3121,\n  \"overline\",\n  0x203e,\n  \"overlinecenterline\",\n  0xfe4a,\n  \"overlinecmb\",\n  0x0305,\n  \"overlinedashed\",\n  0xfe49,\n  \"overlinedblwavy\",\n  0xfe4c,\n  \"overlinewavy\",\n  0xfe4b,\n  \"overscore\",\n  0x00af,\n  \"ovowelsignbengali\",\n  0x09cb,\n  \"ovowelsigndeva\",\n  0x094b,\n  \"ovowelsigngujarati\",\n  0x0acb,\n  \"p\",\n  0x0070,\n  \"paampssquare\",\n  0x3380,\n  \"paasentosquare\",\n  0x332b,\n  \"pabengali\",\n  0x09aa,\n  \"pacute\",\n  0x1e55,\n  \"padeva\",\n  0x092a,\n  \"pagedown\",\n  0x21df,\n  \"pageup\",\n  0x21de,\n  \"pagujarati\",\n  0x0aaa,\n  \"pagurmukhi\",\n  0x0a2a,\n  \"pahiragana\",\n  0x3071,\n  \"paiyannoithai\",\n  0x0e2f,\n  \"pakatakana\",\n  0x30d1,\n  \"palatalizationcyrilliccmb\",\n  0x0484,\n  \"palochkacyrillic\",\n  0x04c0,\n  \"pansioskorean\",\n  0x317f,\n  \"paragraph\",\n  0x00b6,\n  \"parallel\",\n  0x2225,\n  \"parenleft\",\n  0x0028,\n  \"parenleftaltonearabic\",\n  0xfd3e,\n  \"parenleftbt\",\n  0xf8ed,\n  \"parenleftex\",\n  0xf8ec,\n  \"parenleftinferior\",\n  0x208d,\n  \"parenleftmonospace\",\n  0xff08,\n  \"parenleftsmall\",\n  0xfe59,\n  \"parenleftsuperior\",\n  0x207d,\n  \"parenlefttp\",\n  0xf8eb,\n  \"parenleftvertical\",\n  0xfe35,\n  \"parenright\",\n  0x0029,\n  \"parenrightaltonearabic\",\n  0xfd3f,\n  \"parenrightbt\",\n  0xf8f8,\n  \"parenrightex\",\n  0xf8f7,\n  \"parenrightinferior\",\n  0x208e,\n  \"parenrightmonospace\",\n  0xff09,\n  \"parenrightsmall\",\n  0xfe5a,\n  \"parenrightsuperior\",\n  0x207e,\n  \"parenrighttp\",\n  0xf8f6,\n  \"parenrightvertical\",\n  0xfe36,\n  \"partialdiff\",\n  0x2202,\n  \"paseqhebrew\",\n  0x05c0,\n  \"pashtahebrew\",\n  0x0599,\n  \"pasquare\",\n  0x33a9,\n  \"patah\",\n  0x05b7,\n  \"patah11\",\n  0x05b7,\n  \"patah1d\",\n  0x05b7,\n  \"patah2a\",\n  0x05b7,\n  \"patahhebrew\",\n  0x05b7,\n  \"patahnarrowhebrew\",\n  0x05b7,\n  \"patahquarterhebrew\",\n  0x05b7,\n  \"patahwidehebrew\",\n  0x05b7,\n  \"pazerhebrew\",\n  0x05a1,\n  \"pbopomofo\",\n  0x3106,\n  \"pcircle\",\n  0x24df,\n  \"pdotaccent\",\n  0x1e57,\n  \"pe\",\n  0x05e4,\n  \"pecyrillic\",\n  0x043f,\n  \"pedagesh\",\n  0xfb44,\n  \"pedageshhebrew\",\n  0xfb44,\n  \"peezisquare\",\n  0x333b,\n  \"pefinaldageshhebrew\",\n  0xfb43,\n  \"peharabic\",\n  0x067e,\n  \"peharmenian\",\n  0x057a,\n  \"pehebrew\",\n  0x05e4,\n  \"pehfinalarabic\",\n  0xfb57,\n  \"pehinitialarabic\",\n  0xfb58,\n  \"pehiragana\",\n  0x307a,\n  \"pehmedialarabic\",\n  0xfb59,\n  \"pekatakana\",\n  0x30da,\n  \"pemiddlehookcyrillic\",\n  0x04a7,\n  \"perafehebrew\",\n  0xfb4e,\n  \"percent\",\n  0x0025,\n  \"percentarabic\",\n  0x066a,\n  \"percentmonospace\",\n  0xff05,\n  \"percentsmall\",\n  0xfe6a,\n  \"period\",\n  0x002e,\n  \"periodarmenian\",\n  0x0589,\n  \"periodcentered\",\n  0x00b7,\n  \"periodhalfwidth\",\n  0xff61,\n  \"periodinferior\",\n  0xf6e7,\n  \"periodmonospace\",\n  0xff0e,\n  \"periodsmall\",\n  0xfe52,\n  \"periodsuperior\",\n  0xf6e8,\n  \"perispomenigreekcmb\",\n  0x0342,\n  \"perpendicular\",\n  0x22a5,\n  \"perthousand\",\n  0x2030,\n  \"peseta\",\n  0x20a7,\n  \"pfsquare\",\n  0x338a,\n  \"phabengali\",\n  0x09ab,\n  \"phadeva\",\n  0x092b,\n  \"phagujarati\",\n  0x0aab,\n  \"phagurmukhi\",\n  0x0a2b,\n  \"phi\",\n  0x03c6,\n  \"phi1\",\n  0x03d5,\n  \"phieuphacirclekorean\",\n  0x327a,\n  \"phieuphaparenkorean\",\n  0x321a,\n  \"phieuphcirclekorean\",\n  0x326c,\n  \"phieuphkorean\",\n  0x314d,\n  \"phieuphparenkorean\",\n  0x320c,\n  \"philatin\",\n  0x0278,\n  \"phinthuthai\",\n  0x0e3a,\n  \"phisymbolgreek\",\n  0x03d5,\n  \"phook\",\n  0x01a5,\n  \"phophanthai\",\n  0x0e1e,\n  \"phophungthai\",\n  0x0e1c,\n  \"phosamphaothai\",\n  0x0e20,\n  \"pi\",\n  0x03c0,\n  \"pieupacirclekorean\",\n  0x3273,\n  \"pieupaparenkorean\",\n  0x3213,\n  \"pieupcieuckorean\",\n  0x3176,\n  \"pieupcirclekorean\",\n  0x3265,\n  \"pieupkiyeokkorean\",\n  0x3172,\n  \"pieupkorean\",\n  0x3142,\n  \"pieupparenkorean\",\n  0x3205,\n  \"pieupsioskiyeokkorean\",\n  0x3174,\n  \"pieupsioskorean\",\n  0x3144,\n  \"pieupsiostikeutkorean\",\n  0x3175,\n  \"pieupthieuthkorean\",\n  0x3177,\n  \"pieuptikeutkorean\",\n  0x3173,\n  \"pihiragana\",\n  0x3074,\n  \"pikatakana\",\n  0x30d4,\n  \"pisymbolgreek\",\n  0x03d6,\n  \"piwrarmenian\",\n  0x0583,\n  \"plus\",\n  0x002b,\n  \"plusbelowcmb\",\n  0x031f,\n  \"pluscircle\",\n  0x2295,\n  \"plusminus\",\n  0x00b1,\n  \"plusmod\",\n  0x02d6,\n  \"plusmonospace\",\n  0xff0b,\n  \"plussmall\",\n  0xfe62,\n  \"plussuperior\",\n  0x207a,\n  \"pmonospace\",\n  0xff50,\n  \"pmsquare\",\n  0x33d8,\n  \"pohiragana\",\n  0x307d,\n  \"pointingindexdownwhite\",\n  0x261f,\n  \"pointingindexleftwhite\",\n  0x261c,\n  \"pointingindexrightwhite\",\n  0x261e,\n  \"pointingindexupwhite\",\n  0x261d,\n  \"pokatakana\",\n  0x30dd,\n  \"poplathai\",\n  0x0e1b,\n  \"postalmark\",\n  0x3012,\n  \"postalmarkface\",\n  0x3020,\n  \"pparen\",\n  0x24ab,\n  \"precedes\",\n  0x227a,\n  \"prescription\",\n  0x211e,\n  \"primemod\",\n  0x02b9,\n  \"primereversed\",\n  0x2035,\n  \"product\",\n  0x220f,\n  \"projective\",\n  0x2305,\n  \"prolongedkana\",\n  0x30fc,\n  \"propellor\",\n  0x2318,\n  \"propersubset\",\n  0x2282,\n  \"propersuperset\",\n  0x2283,\n  \"proportion\",\n  0x2237,\n  \"proportional\",\n  0x221d,\n  \"psi\",\n  0x03c8,\n  \"psicyrillic\",\n  0x0471,\n  \"psilipneumatacyrilliccmb\",\n  0x0486,\n  \"pssquare\",\n  0x33b0,\n  \"puhiragana\",\n  0x3077,\n  \"pukatakana\",\n  0x30d7,\n  \"pvsquare\",\n  0x33b4,\n  \"pwsquare\",\n  0x33ba,\n  \"q\",\n  0x0071,\n  \"qadeva\",\n  0x0958,\n  \"qadmahebrew\",\n  0x05a8,\n  \"qafarabic\",\n  0x0642,\n  \"qaffinalarabic\",\n  0xfed6,\n  \"qafinitialarabic\",\n  0xfed7,\n  \"qafmedialarabic\",\n  0xfed8,\n  \"qamats\",\n  0x05b8,\n  \"qamats10\",\n  0x05b8,\n  \"qamats1a\",\n  0x05b8,\n  \"qamats1c\",\n  0x05b8,\n  \"qamats27\",\n  0x05b8,\n  \"qamats29\",\n  0x05b8,\n  \"qamats33\",\n  0x05b8,\n  \"qamatsde\",\n  0x05b8,\n  \"qamatshebrew\",\n  0x05b8,\n  \"qamatsnarrowhebrew\",\n  0x05b8,\n  \"qamatsqatanhebrew\",\n  0x05b8,\n  \"qamatsqatannarrowhebrew\",\n  0x05b8,\n  \"qamatsqatanquarterhebrew\",\n  0x05b8,\n  \"qamatsqatanwidehebrew\",\n  0x05b8,\n  \"qamatsquarterhebrew\",\n  0x05b8,\n  \"qamatswidehebrew\",\n  0x05b8,\n  \"qarneyparahebrew\",\n  0x059f,\n  \"qbopomofo\",\n  0x3111,\n  \"qcircle\",\n  0x24e0,\n  \"qhook\",\n  0x02a0,\n  \"qmonospace\",\n  0xff51,\n  \"qof\",\n  0x05e7,\n  \"qofdagesh\",\n  0xfb47,\n  \"qofdageshhebrew\",\n  0xfb47,\n  \"qofhebrew\",\n  0x05e7,\n  \"qparen\",\n  0x24ac,\n  \"quarternote\",\n  0x2669,\n  \"qubuts\",\n  0x05bb,\n  \"qubuts18\",\n  0x05bb,\n  \"qubuts25\",\n  0x05bb,\n  \"qubuts31\",\n  0x05bb,\n  \"qubutshebrew\",\n  0x05bb,\n  \"qubutsnarrowhebrew\",\n  0x05bb,\n  \"qubutsquarterhebrew\",\n  0x05bb,\n  \"qubutswidehebrew\",\n  0x05bb,\n  \"question\",\n  0x003f,\n  \"questionarabic\",\n  0x061f,\n  \"questionarmenian\",\n  0x055e,\n  \"questiondown\",\n  0x00bf,\n  \"questiondownsmall\",\n  0xf7bf,\n  \"questiongreek\",\n  0x037e,\n  \"questionmonospace\",\n  0xff1f,\n  \"questionsmall\",\n  0xf73f,\n  \"quotedbl\",\n  0x0022,\n  \"quotedblbase\",\n  0x201e,\n  \"quotedblleft\",\n  0x201c,\n  \"quotedblmonospace\",\n  0xff02,\n  \"quotedblprime\",\n  0x301e,\n  \"quotedblprimereversed\",\n  0x301d,\n  \"quotedblright\",\n  0x201d,\n  \"quoteleft\",\n  0x2018,\n  \"quoteleftreversed\",\n  0x201b,\n  \"quotereversed\",\n  0x201b,\n  \"quoteright\",\n  0x2019,\n  \"quoterightn\",\n  0x0149,\n  \"quotesinglbase\",\n  0x201a,\n  \"quotesingle\",\n  0x0027,\n  \"quotesinglemonospace\",\n  0xff07,\n  \"r\",\n  0x0072,\n  \"raarmenian\",\n  0x057c,\n  \"rabengali\",\n  0x09b0,\n  \"racute\",\n  0x0155,\n  \"radeva\",\n  0x0930,\n  \"radical\",\n  0x221a,\n  \"radicalex\",\n  0xf8e5,\n  \"radoverssquare\",\n  0x33ae,\n  \"radoverssquaredsquare\",\n  0x33af,\n  \"radsquare\",\n  0x33ad,\n  \"rafe\",\n  0x05bf,\n  \"rafehebrew\",\n  0x05bf,\n  \"ragujarati\",\n  0x0ab0,\n  \"ragurmukhi\",\n  0x0a30,\n  \"rahiragana\",\n  0x3089,\n  \"rakatakana\",\n  0x30e9,\n  \"rakatakanahalfwidth\",\n  0xff97,\n  \"ralowerdiagonalbengali\",\n  0x09f1,\n  \"ramiddlediagonalbengali\",\n  0x09f0,\n  \"ramshorn\",\n  0x0264,\n  \"ratio\",\n  0x2236,\n  \"rbopomofo\",\n  0x3116,\n  \"rcaron\",\n  0x0159,\n  \"rcedilla\",\n  0x0157,\n  \"rcircle\",\n  0x24e1,\n  \"rcommaaccent\",\n  0x0157,\n  \"rdblgrave\",\n  0x0211,\n  \"rdotaccent\",\n  0x1e59,\n  \"rdotbelow\",\n  0x1e5b,\n  \"rdotbelowmacron\",\n  0x1e5d,\n  \"referencemark\",\n  0x203b,\n  \"reflexsubset\",\n  0x2286,\n  \"reflexsuperset\",\n  0x2287,\n  \"registered\",\n  0x00ae,\n  \"registersans\",\n  0xf8e8,\n  \"registerserif\",\n  0xf6da,\n  \"reharabic\",\n  0x0631,\n  \"reharmenian\",\n  0x0580,\n  \"rehfinalarabic\",\n  0xfeae,\n  \"rehiragana\",\n  0x308c,\n  \"rekatakana\",\n  0x30ec,\n  \"rekatakanahalfwidth\",\n  0xff9a,\n  \"resh\",\n  0x05e8,\n  \"reshdageshhebrew\",\n  0xfb48,\n  \"reshhebrew\",\n  0x05e8,\n  \"reversedtilde\",\n  0x223d,\n  \"reviahebrew\",\n  0x0597,\n  \"reviamugrashhebrew\",\n  0x0597,\n  \"revlogicalnot\",\n  0x2310,\n  \"rfishhook\",\n  0x027e,\n  \"rfishhookreversed\",\n  0x027f,\n  \"rhabengali\",\n  0x09dd,\n  \"rhadeva\",\n  0x095d,\n  \"rho\",\n  0x03c1,\n  \"rhook\",\n  0x027d,\n  \"rhookturned\",\n  0x027b,\n  \"rhookturnedsuperior\",\n  0x02b5,\n  \"rhosymbolgreek\",\n  0x03f1,\n  \"rhotichookmod\",\n  0x02de,\n  \"rieulacirclekorean\",\n  0x3271,\n  \"rieulaparenkorean\",\n  0x3211,\n  \"rieulcirclekorean\",\n  0x3263,\n  \"rieulhieuhkorean\",\n  0x3140,\n  \"rieulkiyeokkorean\",\n  0x313a,\n  \"rieulkiyeoksioskorean\",\n  0x3169,\n  \"rieulkorean\",\n  0x3139,\n  \"rieulmieumkorean\",\n  0x313b,\n  \"rieulpansioskorean\",\n  0x316c,\n  \"rieulparenkorean\",\n  0x3203,\n  \"rieulphieuphkorean\",\n  0x313f,\n  \"rieulpieupkorean\",\n  0x313c,\n  \"rieulpieupsioskorean\",\n  0x316b,\n  \"rieulsioskorean\",\n  0x313d,\n  \"rieulthieuthkorean\",\n  0x313e,\n  \"rieultikeutkorean\",\n  0x316a,\n  \"rieulyeorinhieuhkorean\",\n  0x316d,\n  \"rightangle\",\n  0x221f,\n  \"righttackbelowcmb\",\n  0x0319,\n  \"righttriangle\",\n  0x22bf,\n  \"rihiragana\",\n  0x308a,\n  \"rikatakana\",\n  0x30ea,\n  \"rikatakanahalfwidth\",\n  0xff98,\n  \"ring\",\n  0x02da,\n  \"ringbelowcmb\",\n  0x0325,\n  \"ringcmb\",\n  0x030a,\n  \"ringhalfleft\",\n  0x02bf,\n  \"ringhalfleftarmenian\",\n  0x0559,\n  \"ringhalfleftbelowcmb\",\n  0x031c,\n  \"ringhalfleftcentered\",\n  0x02d3,\n  \"ringhalfright\",\n  0x02be,\n  \"ringhalfrightbelowcmb\",\n  0x0339,\n  \"ringhalfrightcentered\",\n  0x02d2,\n  \"rinvertedbreve\",\n  0x0213,\n  \"rittorusquare\",\n  0x3351,\n  \"rlinebelow\",\n  0x1e5f,\n  \"rlongleg\",\n  0x027c,\n  \"rlonglegturned\",\n  0x027a,\n  \"rmonospace\",\n  0xff52,\n  \"rohiragana\",\n  0x308d,\n  \"rokatakana\",\n  0x30ed,\n  \"rokatakanahalfwidth\",\n  0xff9b,\n  \"roruathai\",\n  0x0e23,\n  \"rparen\",\n  0x24ad,\n  \"rrabengali\",\n  0x09dc,\n  \"rradeva\",\n  0x0931,\n  \"rragurmukhi\",\n  0x0a5c,\n  \"rreharabic\",\n  0x0691,\n  \"rrehfinalarabic\",\n  0xfb8d,\n  \"rrvocalicbengali\",\n  0x09e0,\n  \"rrvocalicdeva\",\n  0x0960,\n  \"rrvocalicgujarati\",\n  0x0ae0,\n  \"rrvocalicvowelsignbengali\",\n  0x09c4,\n  \"rrvocalicvowelsigndeva\",\n  0x0944,\n  \"rrvocalicvowelsigngujarati\",\n  0x0ac4,\n  \"rsuperior\",\n  0xf6f1,\n  \"rtblock\",\n  0x2590,\n  \"rturned\",\n  0x0279,\n  \"rturnedsuperior\",\n  0x02b4,\n  \"ruhiragana\",\n  0x308b,\n  \"rukatakana\",\n  0x30eb,\n  \"rukatakanahalfwidth\",\n  0xff99,\n  \"rupeemarkbengali\",\n  0x09f2,\n  \"rupeesignbengali\",\n  0x09f3,\n  \"rupiah\",\n  0xf6dd,\n  \"ruthai\",\n  0x0e24,\n  \"rvocalicbengali\",\n  0x098b,\n  \"rvocalicdeva\",\n  0x090b,\n  \"rvocalicgujarati\",\n  0x0a8b,\n  \"rvocalicvowelsignbengali\",\n  0x09c3,\n  \"rvocalicvowelsigndeva\",\n  0x0943,\n  \"rvocalicvowelsigngujarati\",\n  0x0ac3,\n  \"s\",\n  0x0073,\n  \"sabengali\",\n  0x09b8,\n  \"sacute\",\n  0x015b,\n  \"sacutedotaccent\",\n  0x1e65,\n  \"sadarabic\",\n  0x0635,\n  \"sadeva\",\n  0x0938,\n  \"sadfinalarabic\",\n  0xfeba,\n  \"sadinitialarabic\",\n  0xfebb,\n  \"sadmedialarabic\",\n  0xfebc,\n  \"sagujarati\",\n  0x0ab8,\n  \"sagurmukhi\",\n  0x0a38,\n  \"sahiragana\",\n  0x3055,\n  \"sakatakana\",\n  0x30b5,\n  \"sakatakanahalfwidth\",\n  0xff7b,\n  \"sallallahoualayhewasallamarabic\",\n  0xfdfa,\n  \"samekh\",\n  0x05e1,\n  \"samekhdagesh\",\n  0xfb41,\n  \"samekhdageshhebrew\",\n  0xfb41,\n  \"samekhhebrew\",\n  0x05e1,\n  \"saraaathai\",\n  0x0e32,\n  \"saraaethai\",\n  0x0e41,\n  \"saraaimaimalaithai\",\n  0x0e44,\n  \"saraaimaimuanthai\",\n  0x0e43,\n  \"saraamthai\",\n  0x0e33,\n  \"saraathai\",\n  0x0e30,\n  \"saraethai\",\n  0x0e40,\n  \"saraiileftthai\",\n  0xf886,\n  \"saraiithai\",\n  0x0e35,\n  \"saraileftthai\",\n  0xf885,\n  \"saraithai\",\n  0x0e34,\n  \"saraothai\",\n  0x0e42,\n  \"saraueeleftthai\",\n  0xf888,\n  \"saraueethai\",\n  0x0e37,\n  \"saraueleftthai\",\n  0xf887,\n  \"sarauethai\",\n  0x0e36,\n  \"sarauthai\",\n  0x0e38,\n  \"sarauuthai\",\n  0x0e39,\n  \"sbopomofo\",\n  0x3119,\n  \"scaron\",\n  0x0161,\n  \"scarondotaccent\",\n  0x1e67,\n  \"scedilla\",\n  0x015f,\n  \"schwa\",\n  0x0259,\n  \"schwacyrillic\",\n  0x04d9,\n  \"schwadieresiscyrillic\",\n  0x04db,\n  \"schwahook\",\n  0x025a,\n  \"scircle\",\n  0x24e2,\n  \"scircumflex\",\n  0x015d,\n  \"scommaaccent\",\n  0x0219,\n  \"sdotaccent\",\n  0x1e61,\n  \"sdotbelow\",\n  0x1e63,\n  \"sdotbelowdotaccent\",\n  0x1e69,\n  \"seagullbelowcmb\",\n  0x033c,\n  \"second\",\n  0x2033,\n  \"secondtonechinese\",\n  0x02ca,\n  \"section\",\n  0x00a7,\n  \"seenarabic\",\n  0x0633,\n  \"seenfinalarabic\",\n  0xfeb2,\n  \"seeninitialarabic\",\n  0xfeb3,\n  \"seenmedialarabic\",\n  0xfeb4,\n  \"segol\",\n  0x05b6,\n  \"segol13\",\n  0x05b6,\n  \"segol1f\",\n  0x05b6,\n  \"segol2c\",\n  0x05b6,\n  \"segolhebrew\",\n  0x05b6,\n  \"segolnarrowhebrew\",\n  0x05b6,\n  \"segolquarterhebrew\",\n  0x05b6,\n  \"segoltahebrew\",\n  0x0592,\n  \"segolwidehebrew\",\n  0x05b6,\n  \"seharmenian\",\n  0x057d,\n  \"sehiragana\",\n  0x305b,\n  \"sekatakana\",\n  0x30bb,\n  \"sekatakanahalfwidth\",\n  0xff7e,\n  \"semicolon\",\n  0x003b,\n  \"semicolonarabic\",\n  0x061b,\n  \"semicolonmonospace\",\n  0xff1b,\n  \"semicolonsmall\",\n  0xfe54,\n  \"semivoicedmarkkana\",\n  0x309c,\n  \"semivoicedmarkkanahalfwidth\",\n  0xff9f,\n  \"sentisquare\",\n  0x3322,\n  \"sentosquare\",\n  0x3323,\n  \"seven\",\n  0x0037,\n  \"sevenarabic\",\n  0x0667,\n  \"sevenbengali\",\n  0x09ed,\n  \"sevencircle\",\n  0x2466,\n  \"sevencircleinversesansserif\",\n  0x2790,\n  \"sevendeva\",\n  0x096d,\n  \"seveneighths\",\n  0x215e,\n  \"sevengujarati\",\n  0x0aed,\n  \"sevengurmukhi\",\n  0x0a6d,\n  \"sevenhackarabic\",\n  0x0667,\n  \"sevenhangzhou\",\n  0x3027,\n  \"sevenideographicparen\",\n  0x3226,\n  \"seveninferior\",\n  0x2087,\n  \"sevenmonospace\",\n  0xff17,\n  \"sevenoldstyle\",\n  0xf737,\n  \"sevenparen\",\n  0x247a,\n  \"sevenperiod\",\n  0x248e,\n  \"sevenpersian\",\n  0x06f7,\n  \"sevenroman\",\n  0x2176,\n  \"sevensuperior\",\n  0x2077,\n  \"seventeencircle\",\n  0x2470,\n  \"seventeenparen\",\n  0x2484,\n  \"seventeenperiod\",\n  0x2498,\n  \"seventhai\",\n  0x0e57,\n  \"sfthyphen\",\n  0x00ad,\n  \"shaarmenian\",\n  0x0577,\n  \"shabengali\",\n  0x09b6,\n  \"shacyrillic\",\n  0x0448,\n  \"shaddaarabic\",\n  0x0651,\n  \"shaddadammaarabic\",\n  0xfc61,\n  \"shaddadammatanarabic\",\n  0xfc5e,\n  \"shaddafathaarabic\",\n  0xfc60,\n  \"shaddakasraarabic\",\n  0xfc62,\n  \"shaddakasratanarabic\",\n  0xfc5f,\n  \"shade\",\n  0x2592,\n  \"shadedark\",\n  0x2593,\n  \"shadelight\",\n  0x2591,\n  \"shademedium\",\n  0x2592,\n  \"shadeva\",\n  0x0936,\n  \"shagujarati\",\n  0x0ab6,\n  \"shagurmukhi\",\n  0x0a36,\n  \"shalshelethebrew\",\n  0x0593,\n  \"shbopomofo\",\n  0x3115,\n  \"shchacyrillic\",\n  0x0449,\n  \"sheenarabic\",\n  0x0634,\n  \"sheenfinalarabic\",\n  0xfeb6,\n  \"sheeninitialarabic\",\n  0xfeb7,\n  \"sheenmedialarabic\",\n  0xfeb8,\n  \"sheicoptic\",\n  0x03e3,\n  \"sheqel\",\n  0x20aa,\n  \"sheqelhebrew\",\n  0x20aa,\n  \"sheva\",\n  0x05b0,\n  \"sheva115\",\n  0x05b0,\n  \"sheva15\",\n  0x05b0,\n  \"sheva22\",\n  0x05b0,\n  \"sheva2e\",\n  0x05b0,\n  \"shevahebrew\",\n  0x05b0,\n  \"shevanarrowhebrew\",\n  0x05b0,\n  \"shevaquarterhebrew\",\n  0x05b0,\n  \"shevawidehebrew\",\n  0x05b0,\n  \"shhacyrillic\",\n  0x04bb,\n  \"shimacoptic\",\n  0x03ed,\n  \"shin\",\n  0x05e9,\n  \"shindagesh\",\n  0xfb49,\n  \"shindageshhebrew\",\n  0xfb49,\n  \"shindageshshindot\",\n  0xfb2c,\n  \"shindageshshindothebrew\",\n  0xfb2c,\n  \"shindageshsindot\",\n  0xfb2d,\n  \"shindageshsindothebrew\",\n  0xfb2d,\n  \"shindothebrew\",\n  0x05c1,\n  \"shinhebrew\",\n  0x05e9,\n  \"shinshindot\",\n  0xfb2a,\n  \"shinshindothebrew\",\n  0xfb2a,\n  \"shinsindot\",\n  0xfb2b,\n  \"shinsindothebrew\",\n  0xfb2b,\n  \"shook\",\n  0x0282,\n  \"sigma\",\n  0x03c3,\n  \"sigma1\",\n  0x03c2,\n  \"sigmafinal\",\n  0x03c2,\n  \"sigmalunatesymbolgreek\",\n  0x03f2,\n  \"sihiragana\",\n  0x3057,\n  \"sikatakana\",\n  0x30b7,\n  \"sikatakanahalfwidth\",\n  0xff7c,\n  \"siluqhebrew\",\n  0x05bd,\n  \"siluqlefthebrew\",\n  0x05bd,\n  \"similar\",\n  0x223c,\n  \"sindothebrew\",\n  0x05c2,\n  \"siosacirclekorean\",\n  0x3274,\n  \"siosaparenkorean\",\n  0x3214,\n  \"sioscieuckorean\",\n  0x317e,\n  \"sioscirclekorean\",\n  0x3266,\n  \"sioskiyeokkorean\",\n  0x317a,\n  \"sioskorean\",\n  0x3145,\n  \"siosnieunkorean\",\n  0x317b,\n  \"siosparenkorean\",\n  0x3206,\n  \"siospieupkorean\",\n  0x317d,\n  \"siostikeutkorean\",\n  0x317c,\n  \"six\",\n  0x0036,\n  \"sixarabic\",\n  0x0666,\n  \"sixbengali\",\n  0x09ec,\n  \"sixcircle\",\n  0x2465,\n  \"sixcircleinversesansserif\",\n  0x278f,\n  \"sixdeva\",\n  0x096c,\n  \"sixgujarati\",\n  0x0aec,\n  \"sixgurmukhi\",\n  0x0a6c,\n  \"sixhackarabic\",\n  0x0666,\n  \"sixhangzhou\",\n  0x3026,\n  \"sixideographicparen\",\n  0x3225,\n  \"sixinferior\",\n  0x2086,\n  \"sixmonospace\",\n  0xff16,\n  \"sixoldstyle\",\n  0xf736,\n  \"sixparen\",\n  0x2479,\n  \"sixperiod\",\n  0x248d,\n  \"sixpersian\",\n  0x06f6,\n  \"sixroman\",\n  0x2175,\n  \"sixsuperior\",\n  0x2076,\n  \"sixteencircle\",\n  0x246f,\n  \"sixteencurrencydenominatorbengali\",\n  0x09f9,\n  \"sixteenparen\",\n  0x2483,\n  \"sixteenperiod\",\n  0x2497,\n  \"sixthai\",\n  0x0e56,\n  \"slash\",\n  0x002f,\n  \"slashmonospace\",\n  0xff0f,\n  \"slong\",\n  0x017f,\n  \"slongdotaccent\",\n  0x1e9b,\n  \"smileface\",\n  0x263a,\n  \"smonospace\",\n  0xff53,\n  \"sofpasuqhebrew\",\n  0x05c3,\n  \"softhyphen\",\n  0x00ad,\n  \"softsigncyrillic\",\n  0x044c,\n  \"sohiragana\",\n  0x305d,\n  \"sokatakana\",\n  0x30bd,\n  \"sokatakanahalfwidth\",\n  0xff7f,\n  \"soliduslongoverlaycmb\",\n  0x0338,\n  \"solidusshortoverlaycmb\",\n  0x0337,\n  \"sorusithai\",\n  0x0e29,\n  \"sosalathai\",\n  0x0e28,\n  \"sosothai\",\n  0x0e0b,\n  \"sosuathai\",\n  0x0e2a,\n  \"space\",\n  0x0020,\n  \"spacehackarabic\",\n  0x0020,\n  \"spade\",\n  0x2660,\n  \"spadesuitblack\",\n  0x2660,\n  \"spadesuitwhite\",\n  0x2664,\n  \"sparen\",\n  0x24ae,\n  \"squarebelowcmb\",\n  0x033b,\n  \"squarecc\",\n  0x33c4,\n  \"squarecm\",\n  0x339d,\n  \"squarediagonalcrosshatchfill\",\n  0x25a9,\n  \"squarehorizontalfill\",\n  0x25a4,\n  \"squarekg\",\n  0x338f,\n  \"squarekm\",\n  0x339e,\n  \"squarekmcapital\",\n  0x33ce,\n  \"squareln\",\n  0x33d1,\n  \"squarelog\",\n  0x33d2,\n  \"squaremg\",\n  0x338e,\n  \"squaremil\",\n  0x33d5,\n  \"squaremm\",\n  0x339c,\n  \"squaremsquared\",\n  0x33a1,\n  \"squareorthogonalcrosshatchfill\",\n  0x25a6,\n  \"squareupperlefttolowerrightfill\",\n  0x25a7,\n  \"squareupperrighttolowerleftfill\",\n  0x25a8,\n  \"squareverticalfill\",\n  0x25a5,\n  \"squarewhitewithsmallblack\",\n  0x25a3,\n  \"srsquare\",\n  0x33db,\n  \"ssabengali\",\n  0x09b7,\n  \"ssadeva\",\n  0x0937,\n  \"ssagujarati\",\n  0x0ab7,\n  \"ssangcieuckorean\",\n  0x3149,\n  \"ssanghieuhkorean\",\n  0x3185,\n  \"ssangieungkorean\",\n  0x3180,\n  \"ssangkiyeokkorean\",\n  0x3132,\n  \"ssangnieunkorean\",\n  0x3165,\n  \"ssangpieupkorean\",\n  0x3143,\n  \"ssangsioskorean\",\n  0x3146,\n  \"ssangtikeutkorean\",\n  0x3138,\n  \"ssuperior\",\n  0xf6f2,\n  \"sterling\",\n  0x00a3,\n  \"sterlingmonospace\",\n  0xffe1,\n  \"strokelongoverlaycmb\",\n  0x0336,\n  \"strokeshortoverlaycmb\",\n  0x0335,\n  \"subset\",\n  0x2282,\n  \"subsetnotequal\",\n  0x228a,\n  \"subsetorequal\",\n  0x2286,\n  \"succeeds\",\n  0x227b,\n  \"suchthat\",\n  0x220b,\n  \"suhiragana\",\n  0x3059,\n  \"sukatakana\",\n  0x30b9,\n  \"sukatakanahalfwidth\",\n  0xff7d,\n  \"sukunarabic\",\n  0x0652,\n  \"summation\",\n  0x2211,\n  \"sun\",\n  0x263c,\n  \"superset\",\n  0x2283,\n  \"supersetnotequal\",\n  0x228b,\n  \"supersetorequal\",\n  0x2287,\n  \"svsquare\",\n  0x33dc,\n  \"syouwaerasquare\",\n  0x337c,\n  \"t\",\n  0x0074,\n  \"tabengali\",\n  0x09a4,\n  \"tackdown\",\n  0x22a4,\n  \"tackleft\",\n  0x22a3,\n  \"tadeva\",\n  0x0924,\n  \"tagujarati\",\n  0x0aa4,\n  \"tagurmukhi\",\n  0x0a24,\n  \"taharabic\",\n  0x0637,\n  \"tahfinalarabic\",\n  0xfec2,\n  \"tahinitialarabic\",\n  0xfec3,\n  \"tahiragana\",\n  0x305f,\n  \"tahmedialarabic\",\n  0xfec4,\n  \"taisyouerasquare\",\n  0x337d,\n  \"takatakana\",\n  0x30bf,\n  \"takatakanahalfwidth\",\n  0xff80,\n  \"tatweelarabic\",\n  0x0640,\n  \"tau\",\n  0x03c4,\n  \"tav\",\n  0x05ea,\n  \"tavdages\",\n  0xfb4a,\n  \"tavdagesh\",\n  0xfb4a,\n  \"tavdageshhebrew\",\n  0xfb4a,\n  \"tavhebrew\",\n  0x05ea,\n  \"tbar\",\n  0x0167,\n  \"tbopomofo\",\n  0x310a,\n  \"tcaron\",\n  0x0165,\n  \"tccurl\",\n  0x02a8,\n  \"tcedilla\",\n  0x0163,\n  \"tcheharabic\",\n  0x0686,\n  \"tchehfinalarabic\",\n  0xfb7b,\n  \"tchehinitialarabic\",\n  0xfb7c,\n  \"tchehmedialarabic\",\n  0xfb7d,\n  \"tcircle\",\n  0x24e3,\n  \"tcircumflexbelow\",\n  0x1e71,\n  \"tcommaaccent\",\n  0x0163,\n  \"tdieresis\",\n  0x1e97,\n  \"tdotaccent\",\n  0x1e6b,\n  \"tdotbelow\",\n  0x1e6d,\n  \"tecyrillic\",\n  0x0442,\n  \"tedescendercyrillic\",\n  0x04ad,\n  \"teharabic\",\n  0x062a,\n  \"tehfinalarabic\",\n  0xfe96,\n  \"tehhahinitialarabic\",\n  0xfca2,\n  \"tehhahisolatedarabic\",\n  0xfc0c,\n  \"tehinitialarabic\",\n  0xfe97,\n  \"tehiragana\",\n  0x3066,\n  \"tehjeeminitialarabic\",\n  0xfca1,\n  \"tehjeemisolatedarabic\",\n  0xfc0b,\n  \"tehmarbutaarabic\",\n  0x0629,\n  \"tehmarbutafinalarabic\",\n  0xfe94,\n  \"tehmedialarabic\",\n  0xfe98,\n  \"tehmeeminitialarabic\",\n  0xfca4,\n  \"tehmeemisolatedarabic\",\n  0xfc0e,\n  \"tehnoonfinalarabic\",\n  0xfc73,\n  \"tekatakana\",\n  0x30c6,\n  \"tekatakanahalfwidth\",\n  0xff83,\n  \"telephone\",\n  0x2121,\n  \"telephoneblack\",\n  0x260e,\n  \"telishagedolahebrew\",\n  0x05a0,\n  \"telishaqetanahebrew\",\n  0x05a9,\n  \"tencircle\",\n  0x2469,\n  \"tenideographicparen\",\n  0x3229,\n  \"tenparen\",\n  0x247d,\n  \"tenperiod\",\n  0x2491,\n  \"tenroman\",\n  0x2179,\n  \"tesh\",\n  0x02a7,\n  \"tet\",\n  0x05d8,\n  \"tetdagesh\",\n  0xfb38,\n  \"tetdageshhebrew\",\n  0xfb38,\n  \"tethebrew\",\n  0x05d8,\n  \"tetsecyrillic\",\n  0x04b5,\n  \"tevirhebrew\",\n  0x059b,\n  \"tevirlefthebrew\",\n  0x059b,\n  \"thabengali\",\n  0x09a5,\n  \"thadeva\",\n  0x0925,\n  \"thagujarati\",\n  0x0aa5,\n  \"thagurmukhi\",\n  0x0a25,\n  \"thalarabic\",\n  0x0630,\n  \"thalfinalarabic\",\n  0xfeac,\n  \"thanthakhatlowleftthai\",\n  0xf898,\n  \"thanthakhatlowrightthai\",\n  0xf897,\n  \"thanthakhatthai\",\n  0x0e4c,\n  \"thanthakhatupperleftthai\",\n  0xf896,\n  \"theharabic\",\n  0x062b,\n  \"thehfinalarabic\",\n  0xfe9a,\n  \"thehinitialarabic\",\n  0xfe9b,\n  \"thehmedialarabic\",\n  0xfe9c,\n  \"thereexists\",\n  0x2203,\n  \"therefore\",\n  0x2234,\n  \"theta\",\n  0x03b8,\n  \"theta1\",\n  0x03d1,\n  \"thetasymbolgreek\",\n  0x03d1,\n  \"thieuthacirclekorean\",\n  0x3279,\n  \"thieuthaparenkorean\",\n  0x3219,\n  \"thieuthcirclekorean\",\n  0x326b,\n  \"thieuthkorean\",\n  0x314c,\n  \"thieuthparenkorean\",\n  0x320b,\n  \"thirteencircle\",\n  0x246c,\n  \"thirteenparen\",\n  0x2480,\n  \"thirteenperiod\",\n  0x2494,\n  \"thonangmonthothai\",\n  0x0e11,\n  \"thook\",\n  0x01ad,\n  \"thophuthaothai\",\n  0x0e12,\n  \"thorn\",\n  0x00fe,\n  \"thothahanthai\",\n  0x0e17,\n  \"thothanthai\",\n  0x0e10,\n  \"thothongthai\",\n  0x0e18,\n  \"thothungthai\",\n  0x0e16,\n  \"thousandcyrillic\",\n  0x0482,\n  \"thousandsseparatorarabic\",\n  0x066c,\n  \"thousandsseparatorpersian\",\n  0x066c,\n  \"three\",\n  0x0033,\n  \"threearabic\",\n  0x0663,\n  \"threebengali\",\n  0x09e9,\n  \"threecircle\",\n  0x2462,\n  \"threecircleinversesansserif\",\n  0x278c,\n  \"threedeva\",\n  0x0969,\n  \"threeeighths\",\n  0x215c,\n  \"threegujarati\",\n  0x0ae9,\n  \"threegurmukhi\",\n  0x0a69,\n  \"threehackarabic\",\n  0x0663,\n  \"threehangzhou\",\n  0x3023,\n  \"threeideographicparen\",\n  0x3222,\n  \"threeinferior\",\n  0x2083,\n  \"threemonospace\",\n  0xff13,\n  \"threenumeratorbengali\",\n  0x09f6,\n  \"threeoldstyle\",\n  0xf733,\n  \"threeparen\",\n  0x2476,\n  \"threeperiod\",\n  0x248a,\n  \"threepersian\",\n  0x06f3,\n  \"threequarters\",\n  0x00be,\n  \"threequartersemdash\",\n  0xf6de,\n  \"threeroman\",\n  0x2172,\n  \"threesuperior\",\n  0x00b3,\n  \"threethai\",\n  0x0e53,\n  \"thzsquare\",\n  0x3394,\n  \"tihiragana\",\n  0x3061,\n  \"tikatakana\",\n  0x30c1,\n  \"tikatakanahalfwidth\",\n  0xff81,\n  \"tikeutacirclekorean\",\n  0x3270,\n  \"tikeutaparenkorean\",\n  0x3210,\n  \"tikeutcirclekorean\",\n  0x3262,\n  \"tikeutkorean\",\n  0x3137,\n  \"tikeutparenkorean\",\n  0x3202,\n  \"tilde\",\n  0x02dc,\n  \"tildebelowcmb\",\n  0x0330,\n  \"tildecmb\",\n  0x0303,\n  \"tildecomb\",\n  0x0303,\n  \"tildedoublecmb\",\n  0x0360,\n  \"tildeoperator\",\n  0x223c,\n  \"tildeoverlaycmb\",\n  0x0334,\n  \"tildeverticalcmb\",\n  0x033e,\n  \"timescircle\",\n  0x2297,\n  \"tipehahebrew\",\n  0x0596,\n  \"tipehalefthebrew\",\n  0x0596,\n  \"tippigurmukhi\",\n  0x0a70,\n  \"titlocyrilliccmb\",\n  0x0483,\n  \"tiwnarmenian\",\n  0x057f,\n  \"tlinebelow\",\n  0x1e6f,\n  \"tmonospace\",\n  0xff54,\n  \"toarmenian\",\n  0x0569,\n  \"tohiragana\",\n  0x3068,\n  \"tokatakana\",\n  0x30c8,\n  \"tokatakanahalfwidth\",\n  0xff84,\n  \"tonebarextrahighmod\",\n  0x02e5,\n  \"tonebarextralowmod\",\n  0x02e9,\n  \"tonebarhighmod\",\n  0x02e6,\n  \"tonebarlowmod\",\n  0x02e8,\n  \"tonebarmidmod\",\n  0x02e7,\n  \"tonefive\",\n  0x01bd,\n  \"tonesix\",\n  0x0185,\n  \"tonetwo\",\n  0x01a8,\n  \"tonos\",\n  0x0384,\n  \"tonsquare\",\n  0x3327,\n  \"topatakthai\",\n  0x0e0f,\n  \"tortoiseshellbracketleft\",\n  0x3014,\n  \"tortoiseshellbracketleftsmall\",\n  0xfe5d,\n  \"tortoiseshellbracketleftvertical\",\n  0xfe39,\n  \"tortoiseshellbracketright\",\n  0x3015,\n  \"tortoiseshellbracketrightsmall\",\n  0xfe5e,\n  \"tortoiseshellbracketrightvertical\",\n  0xfe3a,\n  \"totaothai\",\n  0x0e15,\n  \"tpalatalhook\",\n  0x01ab,\n  \"tparen\",\n  0x24af,\n  \"trademark\",\n  0x2122,\n  \"trademarksans\",\n  0xf8ea,\n  \"trademarkserif\",\n  0xf6db,\n  \"tretroflexhook\",\n  0x0288,\n  \"triagdn\",\n  0x25bc,\n  \"triaglf\",\n  0x25c4,\n  \"triagrt\",\n  0x25ba,\n  \"triagup\",\n  0x25b2,\n  \"ts\",\n  0x02a6,\n  \"tsadi\",\n  0x05e6,\n  \"tsadidagesh\",\n  0xfb46,\n  \"tsadidageshhebrew\",\n  0xfb46,\n  \"tsadihebrew\",\n  0x05e6,\n  \"tsecyrillic\",\n  0x0446,\n  \"tsere\",\n  0x05b5,\n  \"tsere12\",\n  0x05b5,\n  \"tsere1e\",\n  0x05b5,\n  \"tsere2b\",\n  0x05b5,\n  \"tserehebrew\",\n  0x05b5,\n  \"tserenarrowhebrew\",\n  0x05b5,\n  \"tserequarterhebrew\",\n  0x05b5,\n  \"tserewidehebrew\",\n  0x05b5,\n  \"tshecyrillic\",\n  0x045b,\n  \"tsuperior\",\n  0xf6f3,\n  \"ttabengali\",\n  0x099f,\n  \"ttadeva\",\n  0x091f,\n  \"ttagujarati\",\n  0x0a9f,\n  \"ttagurmukhi\",\n  0x0a1f,\n  \"tteharabic\",\n  0x0679,\n  \"ttehfinalarabic\",\n  0xfb67,\n  \"ttehinitialarabic\",\n  0xfb68,\n  \"ttehmedialarabic\",\n  0xfb69,\n  \"tthabengali\",\n  0x09a0,\n  \"tthadeva\",\n  0x0920,\n  \"tthagujarati\",\n  0x0aa0,\n  \"tthagurmukhi\",\n  0x0a20,\n  \"tturned\",\n  0x0287,\n  \"tuhiragana\",\n  0x3064,\n  \"tukatakana\",\n  0x30c4,\n  \"tukatakanahalfwidth\",\n  0xff82,\n  \"tusmallhiragana\",\n  0x3063,\n  \"tusmallkatakana\",\n  0x30c3,\n  \"tusmallkatakanahalfwidth\",\n  0xff6f,\n  \"twelvecircle\",\n  0x246b,\n  \"twelveparen\",\n  0x247f,\n  \"twelveperiod\",\n  0x2493,\n  \"twelveroman\",\n  0x217b,\n  \"twentycircle\",\n  0x2473,\n  \"twentyhangzhou\",\n  0x5344,\n  \"twentyparen\",\n  0x2487,\n  \"twentyperiod\",\n  0x249b,\n  \"two\",\n  0x0032,\n  \"twoarabic\",\n  0x0662,\n  \"twobengali\",\n  0x09e8,\n  \"twocircle\",\n  0x2461,\n  \"twocircleinversesansserif\",\n  0x278b,\n  \"twodeva\",\n  0x0968,\n  \"twodotenleader\",\n  0x2025,\n  \"twodotleader\",\n  0x2025,\n  \"twodotleadervertical\",\n  0xfe30,\n  \"twogujarati\",\n  0x0ae8,\n  \"twogurmukhi\",\n  0x0a68,\n  \"twohackarabic\",\n  0x0662,\n  \"twohangzhou\",\n  0x3022,\n  \"twoideographicparen\",\n  0x3221,\n  \"twoinferior\",\n  0x2082,\n  \"twomonospace\",\n  0xff12,\n  \"twonumeratorbengali\",\n  0x09f5,\n  \"twooldstyle\",\n  0xf732,\n  \"twoparen\",\n  0x2475,\n  \"twoperiod\",\n  0x2489,\n  \"twopersian\",\n  0x06f2,\n  \"tworoman\",\n  0x2171,\n  \"twostroke\",\n  0x01bb,\n  \"twosuperior\",\n  0x00b2,\n  \"twothai\",\n  0x0e52,\n  \"twothirds\",\n  0x2154,\n  \"u\",\n  0x0075,\n  \"uacute\",\n  0x00fa,\n  \"ubar\",\n  0x0289,\n  \"ubengali\",\n  0x0989,\n  \"ubopomofo\",\n  0x3128,\n  \"ubreve\",\n  0x016d,\n  \"ucaron\",\n  0x01d4,\n  \"ucircle\",\n  0x24e4,\n  \"ucircumflex\",\n  0x00fb,\n  \"ucircumflexbelow\",\n  0x1e77,\n  \"ucyrillic\",\n  0x0443,\n  \"udattadeva\",\n  0x0951,\n  \"udblacute\",\n  0x0171,\n  \"udblgrave\",\n  0x0215,\n  \"udeva\",\n  0x0909,\n  \"udieresis\",\n  0x00fc,\n  \"udieresisacute\",\n  0x01d8,\n  \"udieresisbelow\",\n  0x1e73,\n  \"udieresiscaron\",\n  0x01da,\n  \"udieresiscyrillic\",\n  0x04f1,\n  \"udieresisgrave\",\n  0x01dc,\n  \"udieresismacron\",\n  0x01d6,\n  \"udotbelow\",\n  0x1ee5,\n  \"ugrave\",\n  0x00f9,\n  \"ugujarati\",\n  0x0a89,\n  \"ugurmukhi\",\n  0x0a09,\n  \"uhiragana\",\n  0x3046,\n  \"uhookabove\",\n  0x1ee7,\n  \"uhorn\",\n  0x01b0,\n  \"uhornacute\",\n  0x1ee9,\n  \"uhorndotbelow\",\n  0x1ef1,\n  \"uhorngrave\",\n  0x1eeb,\n  \"uhornhookabove\",\n  0x1eed,\n  \"uhorntilde\",\n  0x1eef,\n  \"uhungarumlaut\",\n  0x0171,\n  \"uhungarumlautcyrillic\",\n  0x04f3,\n  \"uinvertedbreve\",\n  0x0217,\n  \"ukatakana\",\n  0x30a6,\n  \"ukatakanahalfwidth\",\n  0xff73,\n  \"ukcyrillic\",\n  0x0479,\n  \"ukorean\",\n  0x315c,\n  \"umacron\",\n  0x016b,\n  \"umacroncyrillic\",\n  0x04ef,\n  \"umacrondieresis\",\n  0x1e7b,\n  \"umatragurmukhi\",\n  0x0a41,\n  \"umonospace\",\n  0xff55,\n  \"underscore\",\n  0x005f,\n  \"underscoredbl\",\n  0x2017,\n  \"underscoremonospace\",\n  0xff3f,\n  \"underscorevertical\",\n  0xfe33,\n  \"underscorewavy\",\n  0xfe4f,\n  \"union\",\n  0x222a,\n  \"universal\",\n  0x2200,\n  \"uogonek\",\n  0x0173,\n  \"uparen\",\n  0x24b0,\n  \"upblock\",\n  0x2580,\n  \"upperdothebrew\",\n  0x05c4,\n  \"upsilon\",\n  0x03c5,\n  \"upsilondieresis\",\n  0x03cb,\n  \"upsilondieresistonos\",\n  0x03b0,\n  \"upsilonlatin\",\n  0x028a,\n  \"upsilontonos\",\n  0x03cd,\n  \"uptackbelowcmb\",\n  0x031d,\n  \"uptackmod\",\n  0x02d4,\n  \"uragurmukhi\",\n  0x0a73,\n  \"uring\",\n  0x016f,\n  \"ushortcyrillic\",\n  0x045e,\n  \"usmallhiragana\",\n  0x3045,\n  \"usmallkatakana\",\n  0x30a5,\n  \"usmallkatakanahalfwidth\",\n  0xff69,\n  \"ustraightcyrillic\",\n  0x04af,\n  \"ustraightstrokecyrillic\",\n  0x04b1,\n  \"utilde\",\n  0x0169,\n  \"utildeacute\",\n  0x1e79,\n  \"utildebelow\",\n  0x1e75,\n  \"uubengali\",\n  0x098a,\n  \"uudeva\",\n  0x090a,\n  \"uugujarati\",\n  0x0a8a,\n  \"uugurmukhi\",\n  0x0a0a,\n  \"uumatragurmukhi\",\n  0x0a42,\n  \"uuvowelsignbengali\",\n  0x09c2,\n  \"uuvowelsigndeva\",\n  0x0942,\n  \"uuvowelsigngujarati\",\n  0x0ac2,\n  \"uvowelsignbengali\",\n  0x09c1,\n  \"uvowelsigndeva\",\n  0x0941,\n  \"uvowelsigngujarati\",\n  0x0ac1,\n  \"v\",\n  0x0076,\n  \"vadeva\",\n  0x0935,\n  \"vagujarati\",\n  0x0ab5,\n  \"vagurmukhi\",\n  0x0a35,\n  \"vakatakana\",\n  0x30f7,\n  \"vav\",\n  0x05d5,\n  \"vavdagesh\",\n  0xfb35,\n  \"vavdagesh65\",\n  0xfb35,\n  \"vavdageshhebrew\",\n  0xfb35,\n  \"vavhebrew\",\n  0x05d5,\n  \"vavholam\",\n  0xfb4b,\n  \"vavholamhebrew\",\n  0xfb4b,\n  \"vavvavhebrew\",\n  0x05f0,\n  \"vavyodhebrew\",\n  0x05f1,\n  \"vcircle\",\n  0x24e5,\n  \"vdotbelow\",\n  0x1e7f,\n  \"vecyrillic\",\n  0x0432,\n  \"veharabic\",\n  0x06a4,\n  \"vehfinalarabic\",\n  0xfb6b,\n  \"vehinitialarabic\",\n  0xfb6c,\n  \"vehmedialarabic\",\n  0xfb6d,\n  \"vekatakana\",\n  0x30f9,\n  \"venus\",\n  0x2640,\n  \"verticalbar\",\n  0x007c,\n  \"verticallineabovecmb\",\n  0x030d,\n  \"verticallinebelowcmb\",\n  0x0329,\n  \"verticallinelowmod\",\n  0x02cc,\n  \"verticallinemod\",\n  0x02c8,\n  \"vewarmenian\",\n  0x057e,\n  \"vhook\",\n  0x028b,\n  \"vikatakana\",\n  0x30f8,\n  \"viramabengali\",\n  0x09cd,\n  \"viramadeva\",\n  0x094d,\n  \"viramagujarati\",\n  0x0acd,\n  \"visargabengali\",\n  0x0983,\n  \"visargadeva\",\n  0x0903,\n  \"visargagujarati\",\n  0x0a83,\n  \"vmonospace\",\n  0xff56,\n  \"voarmenian\",\n  0x0578,\n  \"voicediterationhiragana\",\n  0x309e,\n  \"voicediterationkatakana\",\n  0x30fe,\n  \"voicedmarkkana\",\n  0x309b,\n  \"voicedmarkkanahalfwidth\",\n  0xff9e,\n  \"vokatakana\",\n  0x30fa,\n  \"vparen\",\n  0x24b1,\n  \"vtilde\",\n  0x1e7d,\n  \"vturned\",\n  0x028c,\n  \"vuhiragana\",\n  0x3094,\n  \"vukatakana\",\n  0x30f4,\n  \"w\",\n  0x0077,\n  \"wacute\",\n  0x1e83,\n  \"waekorean\",\n  0x3159,\n  \"wahiragana\",\n  0x308f,\n  \"wakatakana\",\n  0x30ef,\n  \"wakatakanahalfwidth\",\n  0xff9c,\n  \"wakorean\",\n  0x3158,\n  \"wasmallhiragana\",\n  0x308e,\n  \"wasmallkatakana\",\n  0x30ee,\n  \"wattosquare\",\n  0x3357,\n  \"wavedash\",\n  0x301c,\n  \"wavyunderscorevertical\",\n  0xfe34,\n  \"wawarabic\",\n  0x0648,\n  \"wawfinalarabic\",\n  0xfeee,\n  \"wawhamzaabovearabic\",\n  0x0624,\n  \"wawhamzaabovefinalarabic\",\n  0xfe86,\n  \"wbsquare\",\n  0x33dd,\n  \"wcircle\",\n  0x24e6,\n  \"wcircumflex\",\n  0x0175,\n  \"wdieresis\",\n  0x1e85,\n  \"wdotaccent\",\n  0x1e87,\n  \"wdotbelow\",\n  0x1e89,\n  \"wehiragana\",\n  0x3091,\n  \"weierstrass\",\n  0x2118,\n  \"wekatakana\",\n  0x30f1,\n  \"wekorean\",\n  0x315e,\n  \"weokorean\",\n  0x315d,\n  \"wgrave\",\n  0x1e81,\n  \"whitebullet\",\n  0x25e6,\n  \"whitecircle\",\n  0x25cb,\n  \"whitecircleinverse\",\n  0x25d9,\n  \"whitecornerbracketleft\",\n  0x300e,\n  \"whitecornerbracketleftvertical\",\n  0xfe43,\n  \"whitecornerbracketright\",\n  0x300f,\n  \"whitecornerbracketrightvertical\",\n  0xfe44,\n  \"whitediamond\",\n  0x25c7,\n  \"whitediamondcontainingblacksmalldiamond\",\n  0x25c8,\n  \"whitedownpointingsmalltriangle\",\n  0x25bf,\n  \"whitedownpointingtriangle\",\n  0x25bd,\n  \"whiteleftpointingsmalltriangle\",\n  0x25c3,\n  \"whiteleftpointingtriangle\",\n  0x25c1,\n  \"whitelenticularbracketleft\",\n  0x3016,\n  \"whitelenticularbracketright\",\n  0x3017,\n  \"whiterightpointingsmalltriangle\",\n  0x25b9,\n  \"whiterightpointingtriangle\",\n  0x25b7,\n  \"whitesmallsquare\",\n  0x25ab,\n  \"whitesmilingface\",\n  0x263a,\n  \"whitesquare\",\n  0x25a1,\n  \"whitestar\",\n  0x2606,\n  \"whitetelephone\",\n  0x260f,\n  \"whitetortoiseshellbracketleft\",\n  0x3018,\n  \"whitetortoiseshellbracketright\",\n  0x3019,\n  \"whiteuppointingsmalltriangle\",\n  0x25b5,\n  \"whiteuppointingtriangle\",\n  0x25b3,\n  \"wihiragana\",\n  0x3090,\n  \"wikatakana\",\n  0x30f0,\n  \"wikorean\",\n  0x315f,\n  \"wmonospace\",\n  0xff57,\n  \"wohiragana\",\n  0x3092,\n  \"wokatakana\",\n  0x30f2,\n  \"wokatakanahalfwidth\",\n  0xff66,\n  \"won\",\n  0x20a9,\n  \"wonmonospace\",\n  0xffe6,\n  \"wowaenthai\",\n  0x0e27,\n  \"wparen\",\n  0x24b2,\n  \"wring\",\n  0x1e98,\n  \"wsuperior\",\n  0x02b7,\n  \"wturned\",\n  0x028d,\n  \"wynn\",\n  0x01bf,\n  \"x\",\n  0x0078,\n  \"xabovecmb\",\n  0x033d,\n  \"xbopomofo\",\n  0x3112,\n  \"xcircle\",\n  0x24e7,\n  \"xdieresis\",\n  0x1e8d,\n  \"xdotaccent\",\n  0x1e8b,\n  \"xeharmenian\",\n  0x056d,\n  \"xi\",\n  0x03be,\n  \"xmonospace\",\n  0xff58,\n  \"xparen\",\n  0x24b3,\n  \"xsuperior\",\n  0x02e3,\n  \"y\",\n  0x0079,\n  \"yaadosquare\",\n  0x334e,\n  \"yabengali\",\n  0x09af,\n  \"yacute\",\n  0x00fd,\n  \"yadeva\",\n  0x092f,\n  \"yaekorean\",\n  0x3152,\n  \"yagujarati\",\n  0x0aaf,\n  \"yagurmukhi\",\n  0x0a2f,\n  \"yahiragana\",\n  0x3084,\n  \"yakatakana\",\n  0x30e4,\n  \"yakatakanahalfwidth\",\n  0xff94,\n  \"yakorean\",\n  0x3151,\n  \"yamakkanthai\",\n  0x0e4e,\n  \"yasmallhiragana\",\n  0x3083,\n  \"yasmallkatakana\",\n  0x30e3,\n  \"yasmallkatakanahalfwidth\",\n  0xff6c,\n  \"yatcyrillic\",\n  0x0463,\n  \"ycircle\",\n  0x24e8,\n  \"ycircumflex\",\n  0x0177,\n  \"ydieresis\",\n  0x00ff,\n  \"ydotaccent\",\n  0x1e8f,\n  \"ydotbelow\",\n  0x1ef5,\n  \"yeharabic\",\n  0x064a,\n  \"yehbarreearabic\",\n  0x06d2,\n  \"yehbarreefinalarabic\",\n  0xfbaf,\n  \"yehfinalarabic\",\n  0xfef2,\n  \"yehhamzaabovearabic\",\n  0x0626,\n  \"yehhamzaabovefinalarabic\",\n  0xfe8a,\n  \"yehhamzaaboveinitialarabic\",\n  0xfe8b,\n  \"yehhamzaabovemedialarabic\",\n  0xfe8c,\n  \"yehinitialarabic\",\n  0xfef3,\n  \"yehmedialarabic\",\n  0xfef4,\n  \"yehmeeminitialarabic\",\n  0xfcdd,\n  \"yehmeemisolatedarabic\",\n  0xfc58,\n  \"yehnoonfinalarabic\",\n  0xfc94,\n  \"yehthreedotsbelowarabic\",\n  0x06d1,\n  \"yekorean\",\n  0x3156,\n  \"yen\",\n  0x00a5,\n  \"yenmonospace\",\n  0xffe5,\n  \"yeokorean\",\n  0x3155,\n  \"yeorinhieuhkorean\",\n  0x3186,\n  \"yerahbenyomohebrew\",\n  0x05aa,\n  \"yerahbenyomolefthebrew\",\n  0x05aa,\n  \"yericyrillic\",\n  0x044b,\n  \"yerudieresiscyrillic\",\n  0x04f9,\n  \"yesieungkorean\",\n  0x3181,\n  \"yesieungpansioskorean\",\n  0x3183,\n  \"yesieungsioskorean\",\n  0x3182,\n  \"yetivhebrew\",\n  0x059a,\n  \"ygrave\",\n  0x1ef3,\n  \"yhook\",\n  0x01b4,\n  \"yhookabove\",\n  0x1ef7,\n  \"yiarmenian\",\n  0x0575,\n  \"yicyrillic\",\n  0x0457,\n  \"yikorean\",\n  0x3162,\n  \"yinyang\",\n  0x262f,\n  \"yiwnarmenian\",\n  0x0582,\n  \"ymonospace\",\n  0xff59,\n  \"yod\",\n  0x05d9,\n  \"yoddagesh\",\n  0xfb39,\n  \"yoddageshhebrew\",\n  0xfb39,\n  \"yodhebrew\",\n  0x05d9,\n  \"yodyodhebrew\",\n  0x05f2,\n  \"yodyodpatahhebrew\",\n  0xfb1f,\n  \"yohiragana\",\n  0x3088,\n  \"yoikorean\",\n  0x3189,\n  \"yokatakana\",\n  0x30e8,\n  \"yokatakanahalfwidth\",\n  0xff96,\n  \"yokorean\",\n  0x315b,\n  \"yosmallhiragana\",\n  0x3087,\n  \"yosmallkatakana\",\n  0x30e7,\n  \"yosmallkatakanahalfwidth\",\n  0xff6e,\n  \"yotgreek\",\n  0x03f3,\n  \"yoyaekorean\",\n  0x3188,\n  \"yoyakorean\",\n  0x3187,\n  \"yoyakthai\",\n  0x0e22,\n  \"yoyingthai\",\n  0x0e0d,\n  \"yparen\",\n  0x24b4,\n  \"ypogegrammeni\",\n  0x037a,\n  \"ypogegrammenigreekcmb\",\n  0x0345,\n  \"yr\",\n  0x01a6,\n  \"yring\",\n  0x1e99,\n  \"ysuperior\",\n  0x02b8,\n  \"ytilde\",\n  0x1ef9,\n  \"yturned\",\n  0x028e,\n  \"yuhiragana\",\n  0x3086,\n  \"yuikorean\",\n  0x318c,\n  \"yukatakana\",\n  0x30e6,\n  \"yukatakanahalfwidth\",\n  0xff95,\n  \"yukorean\",\n  0x3160,\n  \"yusbigcyrillic\",\n  0x046b,\n  \"yusbigiotifiedcyrillic\",\n  0x046d,\n  \"yuslittlecyrillic\",\n  0x0467,\n  \"yuslittleiotifiedcyrillic\",\n  0x0469,\n  \"yusmallhiragana\",\n  0x3085,\n  \"yusmallkatakana\",\n  0x30e5,\n  \"yusmallkatakanahalfwidth\",\n  0xff6d,\n  \"yuyekorean\",\n  0x318b,\n  \"yuyeokorean\",\n  0x318a,\n  \"yyabengali\",\n  0x09df,\n  \"yyadeva\",\n  0x095f,\n  \"z\",\n  0x007a,\n  \"zaarmenian\",\n  0x0566,\n  \"zacute\",\n  0x017a,\n  \"zadeva\",\n  0x095b,\n  \"zagurmukhi\",\n  0x0a5b,\n  \"zaharabic\",\n  0x0638,\n  \"zahfinalarabic\",\n  0xfec6,\n  \"zahinitialarabic\",\n  0xfec7,\n  \"zahiragana\",\n  0x3056,\n  \"zahmedialarabic\",\n  0xfec8,\n  \"zainarabic\",\n  0x0632,\n  \"zainfinalarabic\",\n  0xfeb0,\n  \"zakatakana\",\n  0x30b6,\n  \"zaqefgadolhebrew\",\n  0x0595,\n  \"zaqefqatanhebrew\",\n  0x0594,\n  \"zarqahebrew\",\n  0x0598,\n  \"zayin\",\n  0x05d6,\n  \"zayindagesh\",\n  0xfb36,\n  \"zayindageshhebrew\",\n  0xfb36,\n  \"zayinhebrew\",\n  0x05d6,\n  \"zbopomofo\",\n  0x3117,\n  \"zcaron\",\n  0x017e,\n  \"zcircle\",\n  0x24e9,\n  \"zcircumflex\",\n  0x1e91,\n  \"zcurl\",\n  0x0291,\n  \"zdot\",\n  0x017c,\n  \"zdotaccent\",\n  0x017c,\n  \"zdotbelow\",\n  0x1e93,\n  \"zecyrillic\",\n  0x0437,\n  \"zedescendercyrillic\",\n  0x0499,\n  \"zedieresiscyrillic\",\n  0x04df,\n  \"zehiragana\",\n  0x305c,\n  \"zekatakana\",\n  0x30bc,\n  \"zero\",\n  0x0030,\n  \"zeroarabic\",\n  0x0660,\n  \"zerobengali\",\n  0x09e6,\n  \"zerodeva\",\n  0x0966,\n  \"zerogujarati\",\n  0x0ae6,\n  \"zerogurmukhi\",\n  0x0a66,\n  \"zerohackarabic\",\n  0x0660,\n  \"zeroinferior\",\n  0x2080,\n  \"zeromonospace\",\n  0xff10,\n  \"zerooldstyle\",\n  0xf730,\n  \"zeropersian\",\n  0x06f0,\n  \"zerosuperior\",\n  0x2070,\n  \"zerothai\",\n  0x0e50,\n  \"zerowidthjoiner\",\n  0xfeff,\n  \"zerowidthnonjoiner\",\n  0x200c,\n  \"zerowidthspace\",\n  0x200b,\n  \"zeta\",\n  0x03b6,\n  \"zhbopomofo\",\n  0x3113,\n  \"zhearmenian\",\n  0x056a,\n  \"zhebrevecyrillic\",\n  0x04c2,\n  \"zhecyrillic\",\n  0x0436,\n  \"zhedescendercyrillic\",\n  0x0497,\n  \"zhedieresiscyrillic\",\n  0x04dd,\n  \"zihiragana\",\n  0x3058,\n  \"zikatakana\",\n  0x30b8,\n  \"zinorhebrew\",\n  0x05ae,\n  \"zlinebelow\",\n  0x1e95,\n  \"zmonospace\",\n  0xff5a,\n  \"zohiragana\",\n  0x305e,\n  \"zokatakana\",\n  0x30be,\n  \"zparen\",\n  0x24b5,\n  \"zretroflexhook\",\n  0x0290,\n  \"zstroke\",\n  0x01b6,\n  \"zuhiragana\",\n  0x305a,\n  \"zukatakana\",\n  0x30ba,\n  \".notdef\",\n  0x0000,\n  \"angbracketleftbig\",\n  0x2329,\n  \"angbracketleftBig\",\n  0x2329,\n  \"angbracketleftbigg\",\n  0x2329,\n  \"angbracketleftBigg\",\n  0x2329,\n  \"angbracketrightBig\",\n  0x232a,\n  \"angbracketrightbig\",\n  0x232a,\n  \"angbracketrightBigg\",\n  0x232a,\n  \"angbracketrightbigg\",\n  0x232a,\n  \"arrowhookleft\",\n  0x21aa,\n  \"arrowhookright\",\n  0x21a9,\n  \"arrowlefttophalf\",\n  0x21bc,\n  \"arrowleftbothalf\",\n  0x21bd,\n  \"arrownortheast\",\n  0x2197,\n  \"arrownorthwest\",\n  0x2196,\n  \"arrowrighttophalf\",\n  0x21c0,\n  \"arrowrightbothalf\",\n  0x21c1,\n  \"arrowsoutheast\",\n  0x2198,\n  \"arrowsouthwest\",\n  0x2199,\n  \"backslashbig\",\n  0x2216,\n  \"backslashBig\",\n  0x2216,\n  \"backslashBigg\",\n  0x2216,\n  \"backslashbigg\",\n  0x2216,\n  \"bardbl\",\n  0x2016,\n  \"bracehtipdownleft\",\n  0xfe37,\n  \"bracehtipdownright\",\n  0xfe37,\n  \"bracehtipupleft\",\n  0xfe38,\n  \"bracehtipupright\",\n  0xfe38,\n  \"braceleftBig\",\n  0x007b,\n  \"braceleftbig\",\n  0x007b,\n  \"braceleftbigg\",\n  0x007b,\n  \"braceleftBigg\",\n  0x007b,\n  \"bracerightBig\",\n  0x007d,\n  \"bracerightbig\",\n  0x007d,\n  \"bracerightbigg\",\n  0x007d,\n  \"bracerightBigg\",\n  0x007d,\n  \"bracketleftbig\",\n  0x005b,\n  \"bracketleftBig\",\n  0x005b,\n  \"bracketleftbigg\",\n  0x005b,\n  \"bracketleftBigg\",\n  0x005b,\n  \"bracketrightBig\",\n  0x005d,\n  \"bracketrightbig\",\n  0x005d,\n  \"bracketrightbigg\",\n  0x005d,\n  \"bracketrightBigg\",\n  0x005d,\n  \"ceilingleftbig\",\n  0x2308,\n  \"ceilingleftBig\",\n  0x2308,\n  \"ceilingleftBigg\",\n  0x2308,\n  \"ceilingleftbigg\",\n  0x2308,\n  \"ceilingrightbig\",\n  0x2309,\n  \"ceilingrightBig\",\n  0x2309,\n  \"ceilingrightbigg\",\n  0x2309,\n  \"ceilingrightBigg\",\n  0x2309,\n  \"circledotdisplay\",\n  0x2299,\n  \"circledottext\",\n  0x2299,\n  \"circlemultiplydisplay\",\n  0x2297,\n  \"circlemultiplytext\",\n  0x2297,\n  \"circleplusdisplay\",\n  0x2295,\n  \"circleplustext\",\n  0x2295,\n  \"contintegraldisplay\",\n  0x222e,\n  \"contintegraltext\",\n  0x222e,\n  \"coproductdisplay\",\n  0x2210,\n  \"coproducttext\",\n  0x2210,\n  \"floorleftBig\",\n  0x230a,\n  \"floorleftbig\",\n  0x230a,\n  \"floorleftbigg\",\n  0x230a,\n  \"floorleftBigg\",\n  0x230a,\n  \"floorrightbig\",\n  0x230b,\n  \"floorrightBig\",\n  0x230b,\n  \"floorrightBigg\",\n  0x230b,\n  \"floorrightbigg\",\n  0x230b,\n  \"hatwide\",\n  0x0302,\n  \"hatwider\",\n  0x0302,\n  \"hatwidest\",\n  0x0302,\n  \"intercal\",\n  0x1d40,\n  \"integraldisplay\",\n  0x222b,\n  \"integraltext\",\n  0x222b,\n  \"intersectiondisplay\",\n  0x22c2,\n  \"intersectiontext\",\n  0x22c2,\n  \"logicalanddisplay\",\n  0x2227,\n  \"logicalandtext\",\n  0x2227,\n  \"logicalordisplay\",\n  0x2228,\n  \"logicalortext\",\n  0x2228,\n  \"parenleftBig\",\n  0x0028,\n  \"parenleftbig\",\n  0x0028,\n  \"parenleftBigg\",\n  0x0028,\n  \"parenleftbigg\",\n  0x0028,\n  \"parenrightBig\",\n  0x0029,\n  \"parenrightbig\",\n  0x0029,\n  \"parenrightBigg\",\n  0x0029,\n  \"parenrightbigg\",\n  0x0029,\n  \"prime\",\n  0x2032,\n  \"productdisplay\",\n  0x220f,\n  \"producttext\",\n  0x220f,\n  \"radicalbig\",\n  0x221a,\n  \"radicalBig\",\n  0x221a,\n  \"radicalBigg\",\n  0x221a,\n  \"radicalbigg\",\n  0x221a,\n  \"radicalbt\",\n  0x221a,\n  \"radicaltp\",\n  0x221a,\n  \"radicalvertex\",\n  0x221a,\n  \"slashbig\",\n  0x002f,\n  \"slashBig\",\n  0x002f,\n  \"slashBigg\",\n  0x002f,\n  \"slashbigg\",\n  0x002f,\n  \"summationdisplay\",\n  0x2211,\n  \"summationtext\",\n  0x2211,\n  \"tildewide\",\n  0x02dc,\n  \"tildewider\",\n  0x02dc,\n  \"tildewidest\",\n  0x02dc,\n  \"uniondisplay\",\n  0x22c3,\n  \"unionmultidisplay\",\n  0x228e,\n  \"unionmultitext\",\n  0x228e,\n  \"unionsqdisplay\",\n  0x2294,\n  \"unionsqtext\",\n  0x2294,\n  \"uniontext\",\n  0x22c3,\n  \"vextenddouble\",\n  0x2225,\n  \"vextendsingle\",\n  0x2223\n ];\n});\nconst getDingbatsGlyphsUnicode = (0,_core_utils_js__WEBPACK_IMPORTED_MODULE_0__.getArrayLookupTableFactory)(function () {\n return [\n  \"space\",\n  0x0020,\n  \"a1\",\n  0x2701,\n  \"a2\",\n  0x2702,\n  \"a202\",\n  0x2703,\n  \"a3\",\n  0x2704,\n  \"a4\",\n  0x260e,\n  \"a5\",\n  0x2706,\n  \"a119\",\n  0x2707,\n  \"a118\",\n  0x2708,\n  \"a117\",\n  0x2709,\n  \"a11\",\n  0x261b,\n  \"a12\",\n  0x261e,\n  \"a13\",\n  0x270c,\n  \"a14\",\n  0x270d,\n  \"a15\",\n  0x270e,\n  \"a16\",\n  0x270f,\n  \"a105\",\n  0x2710,\n  \"a17\",\n  0x2711,\n  \"a18\",\n  0x2712,\n  \"a19\",\n  0x2713,\n  \"a20\",\n  0x2714,\n  \"a21\",\n  0x2715,\n  \"a22\",\n  0x2716,\n  \"a23\",\n  0x2717,\n  \"a24\",\n  0x2718,\n  \"a25\",\n  0x2719,\n  \"a26\",\n  0x271a,\n  \"a27\",\n  0x271b,\n  \"a28\",\n  0x271c,\n  \"a6\",\n  0x271d,\n  \"a7\",\n  0x271e,\n  \"a8\",\n  0x271f,\n  \"a9\",\n  0x2720,\n  \"a10\",\n  0x2721,\n  \"a29\",\n  0x2722,\n  \"a30\",\n  0x2723,\n  \"a31\",\n  0x2724,\n  \"a32\",\n  0x2725,\n  \"a33\",\n  0x2726,\n  \"a34\",\n  0x2727,\n  \"a35\",\n  0x2605,\n  \"a36\",\n  0x2729,\n  \"a37\",\n  0x272a,\n  \"a38\",\n  0x272b,\n  \"a39\",\n  0x272c,\n  \"a40\",\n  0x272d,\n  \"a41\",\n  0x272e,\n  \"a42\",\n  0x272f,\n  \"a43\",\n  0x2730,\n  \"a44\",\n  0x2731,\n  \"a45\",\n  0x2732,\n  \"a46\",\n  0x2733,\n  \"a47\",\n  0x2734,\n  \"a48\",\n  0x2735,\n  \"a49\",\n  0x2736,\n  \"a50\",\n  0x2737,\n  \"a51\",\n  0x2738,\n  \"a52\",\n  0x2739,\n  \"a53\",\n  0x273a,\n  \"a54\",\n  0x273b,\n  \"a55\",\n  0x273c,\n  \"a56\",\n  0x273d,\n  \"a57\",\n  0x273e,\n  \"a58\",\n  0x273f,\n  \"a59\",\n  0x2740,\n  \"a60\",\n  0x2741,\n  \"a61\",\n  0x2742,\n  \"a62\",\n  0x2743,\n  \"a63\",\n  0x2744,\n  \"a64\",\n  0x2745,\n  \"a65\",\n  0x2746,\n  \"a66\",\n  0x2747,\n  \"a67\",\n  0x2748,\n  \"a68\",\n  0x2749,\n  \"a69\",\n  0x274a,\n  \"a70\",\n  0x274b,\n  \"a71\",\n  0x25cf,\n  \"a72\",\n  0x274d,\n  \"a73\",\n  0x25a0,\n  \"a74\",\n  0x274f,\n  \"a203\",\n  0x2750,\n  \"a75\",\n  0x2751,\n  \"a204\",\n  0x2752,\n  \"a76\",\n  0x25b2,\n  \"a77\",\n  0x25bc,\n  \"a78\",\n  0x25c6,\n  \"a79\",\n  0x2756,\n  \"a81\",\n  0x25d7,\n  \"a82\",\n  0x2758,\n  \"a83\",\n  0x2759,\n  \"a84\",\n  0x275a,\n  \"a97\",\n  0x275b,\n  \"a98\",\n  0x275c,\n  \"a99\",\n  0x275d,\n  \"a100\",\n  0x275e,\n  \"a101\",\n  0x2761,\n  \"a102\",\n  0x2762,\n  \"a103\",\n  0x2763,\n  \"a104\",\n  0x2764,\n  \"a106\",\n  0x2765,\n  \"a107\",\n  0x2766,\n  \"a108\",\n  0x2767,\n  \"a112\",\n  0x2663,\n  \"a111\",\n  0x2666,\n  \"a110\",\n  0x2665,\n  \"a109\",\n  0x2660,\n  \"a120\",\n  0x2460,\n  \"a121\",\n  0x2461,\n  \"a122\",\n  0x2462,\n  \"a123\",\n  0x2463,\n  \"a124\",\n  0x2464,\n  \"a125\",\n  0x2465,\n  \"a126\",\n  0x2466,\n  \"a127\",\n  0x2467,\n  \"a128\",\n  0x2468,\n  \"a129\",\n  0x2469,\n  \"a130\",\n  0x2776,\n  \"a131\",\n  0x2777,\n  \"a132\",\n  0x2778,\n  \"a133\",\n  0x2779,\n  \"a134\",\n  0x277a,\n  \"a135\",\n  0x277b,\n  \"a136\",\n  0x277c,\n  \"a137\",\n  0x277d,\n  \"a138\",\n  0x277e,\n  \"a139\",\n  0x277f,\n  \"a140\",\n  0x2780,\n  \"a141\",\n  0x2781,\n  \"a142\",\n  0x2782,\n  \"a143\",\n  0x2783,\n  \"a144\",\n  0x2784,\n  \"a145\",\n  0x2785,\n  \"a146\",\n  0x2786,\n  \"a147\",\n  0x2787,\n  \"a148\",\n  0x2788,\n  \"a149\",\n  0x2789,\n  \"a150\",\n  0x278a,\n  \"a151\",\n  0x278b,\n  \"a152\",\n  0x278c,\n  \"a153\",\n  0x278d,\n  \"a154\",\n  0x278e,\n  \"a155\",\n  0x278f,\n  \"a156\",\n  0x2790,\n  \"a157\",\n  0x2791,\n  \"a158\",\n  0x2792,\n  \"a159\",\n  0x2793,\n  \"a160\",\n  0x2794,\n  \"a161\",\n  0x2192,\n  \"a163\",\n  0x2194,\n  \"a164\",\n  0x2195,\n  \"a196\",\n  0x2798,\n  \"a165\",\n  0x2799,\n  \"a192\",\n  0x279a,\n  \"a166\",\n  0x279b,\n  \"a167\",\n  0x279c,\n  \"a168\",\n  0x279d,\n  \"a169\",\n  0x279e,\n  \"a170\",\n  0x279f,\n  \"a171\",\n  0x27a0,\n  \"a172\",\n  0x27a1,\n  \"a173\",\n  0x27a2,\n  \"a162\",\n  0x27a3,\n  \"a174\",\n  0x27a4,\n  \"a175\",\n  0x27a5,\n  \"a176\",\n  0x27a6,\n  \"a177\",\n  0x27a7,\n  \"a178\",\n  0x27a8,\n  \"a179\",\n  0x27a9,\n  \"a193\",\n  0x27aa,\n  \"a180\",\n  0x27ab,\n  \"a199\",\n  0x27ac,\n  \"a181\",\n  0x27ad,\n  \"a200\",\n  0x27ae,\n  \"a182\",\n  0x27af,\n  \"a201\",\n  0x27b1,\n  \"a183\",\n  0x27b2,\n  \"a184\",\n  0x27b3,\n  \"a197\",\n  0x27b4,\n  \"a185\",\n  0x27b5,\n  \"a194\",\n  0x27b6,\n  \"a198\",\n  0x27b7,\n  \"a186\",\n  0x27b8,\n  \"a195\",\n  0x27b9,\n  \"a187\",\n  0x27ba,\n  \"a188\",\n  0x27bb,\n  \"a189\",\n  0x27bc,\n  \"a190\",\n  0x27bd,\n  \"a191\",\n  0x27be,\n  \"a89\",\n  0x2768,\n  \"a90\",\n  0x2769,\n  \"a93\",\n  0x276a,\n  \"a94\",\n  0x276b,\n  \"a91\",\n  0x276c,\n  \"a92\",\n  0x276d,\n  \"a205\",\n  0x276e,\n  \"a85\",\n  0x276f,\n  \"a206\",\n  0x2770,\n  \"a86\",\n  0x2771,\n  \"a87\",\n  0x2772,\n  \"a88\",\n  0x2773,\n  \"a95\",\n  0x2774,\n  \"a96\",\n  0x2775,\n  \".notdef\",\n  0x0000\n ];\n});\n\n\n/***/ }),\n/* 21 */\n/***/ ((__unused_webpack_module, __webpack_exports__, __w_pdfjs_require__) => {\n\n__w_pdfjs_require__.r(__webpack_exports__);\n/* harmony export */ __w_pdfjs_require__.d(__webpack_exports__, {\n/* harmony export */   \"clearUnicodeCaches\": () => (/* binding */ clearUnicodeCaches),\n/* harmony export */   \"getCharUnicodeCategory\": () => (/* binding */ getCharUnicodeCategory),\n/* harmony export */   \"getNormalizedUnicodes\": () => (/* binding */ getNormalizedUnicodes),\n/* harmony export */   \"getUnicodeForGlyph\": () => (/* binding */ getUnicodeForGlyph),\n/* harmony export */   \"getUnicodeRangeFor\": () => (/* binding */ getUnicodeRangeFor),\n/* harmony export */   \"mapSpecialUnicodeValues\": () => (/* binding */ mapSpecialUnicodeValues),\n/* harmony export */   \"reverseIfRtl\": () => (/* binding */ reverseIfRtl)\n/* harmony export */ });\n/* harmony import */ var _core_utils_js__WEBPACK_IMPORTED_MODULE_0__ = __w_pdfjs_require__(8);\n\nconst getSpecialPUASymbols = (0,_core_utils_js__WEBPACK_IMPORTED_MODULE_0__.getLookupTableFactory)(function (t) {\n t[63721] = 0x00a9;\n t[63193] = 0x00a9;\n t[63720] = 0x00ae;\n t[63194] = 0x00ae;\n t[63722] = 0x2122;\n t[63195] = 0x2122;\n t[63729] = 0x23a7;\n t[63730] = 0x23a8;\n t[63731] = 0x23a9;\n t[63740] = 0x23ab;\n t[63741] = 0x23ac;\n t[63742] = 0x23ad;\n t[63726] = 0x23a1;\n t[63727] = 0x23a2;\n t[63728] = 0x23a3;\n t[63737] = 0x23a4;\n t[63738] = 0x23a5;\n t[63739] = 0x23a6;\n t[63723] = 0x239b;\n t[63724] = 0x239c;\n t[63725] = 0x239d;\n t[63734] = 0x239e;\n t[63735] = 0x239f;\n t[63736] = 0x23a0;\n});\nfunction mapSpecialUnicodeValues(code) {\n if (code >= 0xfff0 && code <= 0xffff) {\n  return 0;\n } else if (code >= 0xf600 && code <= 0xf8ff) {\n  return getSpecialPUASymbols()[code] || code;\n } else if (code === 0x00ad) {\n  return 0x002d;\n }\n return code;\n}\nfunction getUnicodeForGlyph(name, glyphsUnicodeMap) {\n let unicode = glyphsUnicodeMap[name];\n if (unicode !== undefined) {\n  return unicode;\n }\n if (!name) {\n  return -1;\n }\n if (name[0] === \"u\") {\n  const nameLen = name.length;\n  let hexStr;\n  if (nameLen === 7 && name[1] === \"n\" && name[2] === \"i\") {\n   hexStr = name.substring(3);\n  } else if (nameLen >= 5 && nameLen <= 7) {\n   hexStr = name.substring(1);\n  } else {\n   return -1;\n  }\n  if (hexStr === hexStr.toUpperCase()) {\n   unicode = parseInt(hexStr, 16);\n   if (unicode >= 0) {\n    return unicode;\n   }\n  }\n }\n return -1;\n}\nconst UnicodeRanges = [\n {\n  begin: 0x0000,\n  end: 0x007f\n },\n {\n  begin: 0x0080,\n  end: 0x00ff\n },\n {\n  begin: 0x0100,\n  end: 0x017f\n },\n {\n  begin: 0x0180,\n  end: 0x024f\n },\n {\n  begin: 0x0250,\n  end: 0x02af\n },\n {\n  begin: 0x02b0,\n  end: 0x02ff\n },\n {\n  begin: 0x0300,\n  end: 0x036f\n },\n {\n  begin: 0x0370,\n  end: 0x03ff\n },\n {\n  begin: 0x2c80,\n  end: 0x2cff\n },\n {\n  begin: 0x0400,\n  end: 0x04ff\n },\n {\n  begin: 0x0530,\n  end: 0x058f\n },\n {\n  begin: 0x0590,\n  end: 0x05ff\n },\n {\n  begin: 0xa500,\n  end: 0xa63f\n },\n {\n  begin: 0x0600,\n  end: 0x06ff\n },\n {\n  begin: 0x07c0,\n  end: 0x07ff\n },\n {\n  begin: 0x0900,\n  end: 0x097f\n },\n {\n  begin: 0x0980,\n  end: 0x09ff\n },\n {\n  begin: 0x0a00,\n  end: 0x0a7f\n },\n {\n  begin: 0x0a80,\n  end: 0x0aff\n },\n {\n  begin: 0x0b00,\n  end: 0x0b7f\n },\n {\n  begin: 0x0b80,\n  end: 0x0bff\n },\n {\n  begin: 0x0c00,\n  end: 0x0c7f\n },\n {\n  begin: 0x0c80,\n  end: 0x0cff\n },\n {\n  begin: 0x0d00,\n  end: 0x0d7f\n },\n {\n  begin: 0x0e00,\n  end: 0x0e7f\n },\n {\n  begin: 0x0e80,\n  end: 0x0eff\n },\n {\n  begin: 0x10a0,\n  end: 0x10ff\n },\n {\n  begin: 0x1b00,\n  end: 0x1b7f\n },\n {\n  begin: 0x1100,\n  end: 0x11ff\n },\n {\n  begin: 0x1e00,\n  end: 0x1eff\n },\n {\n  begin: 0x1f00,\n  end: 0x1fff\n },\n {\n  begin: 0x2000,\n  end: 0x206f\n },\n {\n  begin: 0x2070,\n  end: 0x209f\n },\n {\n  begin: 0x20a0,\n  end: 0x20cf\n },\n {\n  begin: 0x20d0,\n  end: 0x20ff\n },\n {\n  begin: 0x2100,\n  end: 0x214f\n },\n {\n  begin: 0x2150,\n  end: 0x218f\n },\n {\n  begin: 0x2190,\n  end: 0x21ff\n },\n {\n  begin: 0x2200,\n  end: 0x22ff\n },\n {\n  begin: 0x2300,\n  end: 0x23ff\n },\n {\n  begin: 0x2400,\n  end: 0x243f\n },\n {\n  begin: 0x2440,\n  end: 0x245f\n },\n {\n  begin: 0x2460,\n  end: 0x24ff\n },\n {\n  begin: 0x2500,\n  end: 0x257f\n },\n {\n  begin: 0x2580,\n  end: 0x259f\n },\n {\n  begin: 0x25a0,\n  end: 0x25ff\n },\n {\n  begin: 0x2600,\n  end: 0x26ff\n },\n {\n  begin: 0x2700,\n  end: 0x27bf\n },\n {\n  begin: 0x3000,\n  end: 0x303f\n },\n {\n  begin: 0x3040,\n  end: 0x309f\n },\n {\n  begin: 0x30a0,\n  end: 0x30ff\n },\n {\n  begin: 0x3100,\n  end: 0x312f\n },\n {\n  begin: 0x3130,\n  end: 0x318f\n },\n {\n  begin: 0xa840,\n  end: 0xa87f\n },\n {\n  begin: 0x3200,\n  end: 0x32ff\n },\n {\n  begin: 0x3300,\n  end: 0x33ff\n },\n {\n  begin: 0xac00,\n  end: 0xd7af\n },\n {\n  begin: 0xd800,\n  end: 0xdfff\n },\n {\n  begin: 0x10900,\n  end: 0x1091f\n },\n {\n  begin: 0x4e00,\n  end: 0x9fff\n },\n {\n  begin: 0xe000,\n  end: 0xf8ff\n },\n {\n  begin: 0x31c0,\n  end: 0x31ef\n },\n {\n  begin: 0xfb00,\n  end: 0xfb4f\n },\n {\n  begin: 0xfb50,\n  end: 0xfdff\n },\n {\n  begin: 0xfe20,\n  end: 0xfe2f\n },\n {\n  begin: 0xfe10,\n  end: 0xfe1f\n },\n {\n  begin: 0xfe50,\n  end: 0xfe6f\n },\n {\n  begin: 0xfe70,\n  end: 0xfeff\n },\n {\n  begin: 0xff00,\n  end: 0xffef\n },\n {\n  begin: 0xfff0,\n  end: 0xffff\n },\n {\n  begin: 0x0f00,\n  end: 0x0fff\n },\n {\n  begin: 0x0700,\n  end: 0x074f\n },\n {\n  begin: 0x0780,\n  end: 0x07bf\n },\n {\n  begin: 0x0d80,\n  end: 0x0dff\n },\n {\n  begin: 0x1000,\n  end: 0x109f\n },\n {\n  begin: 0x1200,\n  end: 0x137f\n },\n {\n  begin: 0x13a0,\n  end: 0x13ff\n },\n {\n  begin: 0x1400,\n  end: 0x167f\n },\n {\n  begin: 0x1680,\n  end: 0x169f\n },\n {\n  begin: 0x16a0,\n  end: 0x16ff\n },\n {\n  begin: 0x1780,\n  end: 0x17ff\n },\n {\n  begin: 0x1800,\n  end: 0x18af\n },\n {\n  begin: 0x2800,\n  end: 0x28ff\n },\n {\n  begin: 0xa000,\n  end: 0xa48f\n },\n {\n  begin: 0x1700,\n  end: 0x171f\n },\n {\n  begin: 0x10300,\n  end: 0x1032f\n },\n {\n  begin: 0x10330,\n  end: 0x1034f\n },\n {\n  begin: 0x10400,\n  end: 0x1044f\n },\n {\n  begin: 0x1d000,\n  end: 0x1d0ff\n },\n {\n  begin: 0x1d400,\n  end: 0x1d7ff\n },\n {\n  begin: 0xff000,\n  end: 0xffffd\n },\n {\n  begin: 0xfe00,\n  end: 0xfe0f\n },\n {\n  begin: 0xe0000,\n  end: 0xe007f\n },\n {\n  begin: 0x1900,\n  end: 0x194f\n },\n {\n  begin: 0x1950,\n  end: 0x197f\n },\n {\n  begin: 0x1980,\n  end: 0x19df\n },\n {\n  begin: 0x1a00,\n  end: 0x1a1f\n },\n {\n  begin: 0x2c00,\n  end: 0x2c5f\n },\n {\n  begin: 0x2d30,\n  end: 0x2d7f\n },\n {\n  begin: 0x4dc0,\n  end: 0x4dff\n },\n {\n  begin: 0xa800,\n  end: 0xa82f\n },\n {\n  begin: 0x10000,\n  end: 0x1007f\n },\n {\n  begin: 0x10140,\n  end: 0x1018f\n },\n {\n  begin: 0x10380,\n  end: 0x1039f\n },\n {\n  begin: 0x103a0,\n  end: 0x103df\n },\n {\n  begin: 0x10450,\n  end: 0x1047f\n },\n {\n  begin: 0x10480,\n  end: 0x104af\n },\n {\n  begin: 0x10800,\n  end: 0x1083f\n },\n {\n  begin: 0x10a00,\n  end: 0x10a5f\n },\n {\n  begin: 0x1d300,\n  end: 0x1d35f\n },\n {\n  begin: 0x12000,\n  end: 0x123ff\n },\n {\n  begin: 0x1d360,\n  end: 0x1d37f\n },\n {\n  begin: 0x1b80,\n  end: 0x1bbf\n },\n {\n  begin: 0x1c00,\n  end: 0x1c4f\n },\n {\n  begin: 0x1c50,\n  end: 0x1c7f\n },\n {\n  begin: 0xa880,\n  end: 0xa8df\n },\n {\n  begin: 0xa900,\n  end: 0xa92f\n },\n {\n  begin: 0xa930,\n  end: 0xa95f\n },\n {\n  begin: 0xaa00,\n  end: 0xaa5f\n },\n {\n  begin: 0x10190,\n  end: 0x101cf\n },\n {\n  begin: 0x101d0,\n  end: 0x101ff\n },\n {\n  begin: 0x102a0,\n  end: 0x102df\n },\n {\n  begin: 0x1f030,\n  end: 0x1f09f\n }\n];\nfunction getUnicodeRangeFor(value) {\n for (let i = 0, ii = UnicodeRanges.length; i < ii; i++) {\n  const range = UnicodeRanges[i];\n  if (value >= range.begin && value < range.end) {\n   return i;\n  }\n }\n return -1;\n}\nfunction isRTLRangeFor(value) {\n let range = UnicodeRanges[13];\n if (value >= range.begin && value < range.end) {\n  return true;\n }\n range = UnicodeRanges[11];\n if (value >= range.begin && value < range.end) {\n  return true;\n }\n return false;\n}\nconst getNormalizedUnicodes = (0,_core_utils_js__WEBPACK_IMPORTED_MODULE_0__.getArrayLookupTableFactory)(function () {\n return [\n  \"\\u00A8\",\n  \"\\u0020\\u0308\",\n  \"\\u00AF\",\n  \"\\u0020\\u0304\",\n  \"\\u00B4\",\n  \"\\u0020\\u0301\",\n  \"\\u00B5\",\n  \"\\u03BC\",\n  \"\\u00B8\",\n  \"\\u0020\\u0327\",\n  \"\\u0132\",\n  \"\\u0049\\u004A\",\n  \"\\u0133\",\n  \"\\u0069\\u006A\",\n  \"\\u013F\",\n  \"\\u004C\\u00B7\",\n  \"\\u0140\",\n  \"\\u006C\\u00B7\",\n  \"\\u0149\",\n  \"\\u02BC\\u006E\",\n  \"\\u017F\",\n  \"\\u0073\",\n  \"\\u01C4\",\n  \"\\u0044\\u017D\",\n  \"\\u01C5\",\n  \"\\u0044\\u017E\",\n  \"\\u01C6\",\n  \"\\u0064\\u017E\",\n  \"\\u01C7\",\n  \"\\u004C\\u004A\",\n  \"\\u01C8\",\n  \"\\u004C\\u006A\",\n  \"\\u01C9\",\n  \"\\u006C\\u006A\",\n  \"\\u01CA\",\n  \"\\u004E\\u004A\",\n  \"\\u01CB\",\n  \"\\u004E\\u006A\",\n  \"\\u01CC\",\n  \"\\u006E\\u006A\",\n  \"\\u01F1\",\n  \"\\u0044\\u005A\",\n  \"\\u01F2\",\n  \"\\u0044\\u007A\",\n  \"\\u01F3\",\n  \"\\u0064\\u007A\",\n  \"\\u02D8\",\n  \"\\u0020\\u0306\",\n  \"\\u02D9\",\n  \"\\u0020\\u0307\",\n  \"\\u02DA\",\n  \"\\u0020\\u030A\",\n  \"\\u02DB\",\n  \"\\u0020\\u0328\",\n  \"\\u02DC\",\n  \"\\u0020\\u0303\",\n  \"\\u02DD\",\n  \"\\u0020\\u030B\",\n  \"\\u037A\",\n  \"\\u0020\\u0345\",\n  \"\\u0384\",\n  \"\\u0020\\u0301\",\n  \"\\u03D0\",\n  \"\\u03B2\",\n  \"\\u03D1\",\n  \"\\u03B8\",\n  \"\\u03D2\",\n  \"\\u03A5\",\n  \"\\u03D5\",\n  \"\\u03C6\",\n  \"\\u03D6\",\n  \"\\u03C0\",\n  \"\\u03F0\",\n  \"\\u03BA\",\n  \"\\u03F1\",\n  \"\\u03C1\",\n  \"\\u03F2\",\n  \"\\u03C2\",\n  \"\\u03F4\",\n  \"\\u0398\",\n  \"\\u03F5\",\n  \"\\u03B5\",\n  \"\\u03F9\",\n  \"\\u03A3\",\n  \"\\u0587\",\n  \"\\u0565\\u0582\",\n  \"\\u0675\",\n  \"\\u0627\\u0674\",\n  \"\\u0676\",\n  \"\\u0648\\u0674\",\n  \"\\u0677\",\n  \"\\u06C7\\u0674\",\n  \"\\u0678\",\n  \"\\u064A\\u0674\",\n  \"\\u0E33\",\n  \"\\u0E4D\\u0E32\",\n  \"\\u0EB3\",\n  \"\\u0ECD\\u0EB2\",\n  \"\\u0EDC\",\n  \"\\u0EAB\\u0E99\",\n  \"\\u0EDD\",\n  \"\\u0EAB\\u0EA1\",\n  \"\\u0F77\",\n  \"\\u0FB2\\u0F81\",\n  \"\\u0F79\",\n  \"\\u0FB3\\u0F81\",\n  \"\\u1E9A\",\n  \"\\u0061\\u02BE\",\n  \"\\u1FBD\",\n  \"\\u0020\\u0313\",\n  \"\\u1FBF\",\n  \"\\u0020\\u0313\",\n  \"\\u1FC0\",\n  \"\\u0020\\u0342\",\n  \"\\u1FFE\",\n  \"\\u0020\\u0314\",\n  \"\\u2002\",\n  \"\\u0020\",\n  \"\\u2003\",\n  \"\\u0020\",\n  \"\\u2004\",\n  \"\\u0020\",\n  \"\\u2005\",\n  \"\\u0020\",\n  \"\\u2006\",\n  \"\\u0020\",\n  \"\\u2008\",\n  \"\\u0020\",\n  \"\\u2009\",\n  \"\\u0020\",\n  \"\\u200A\",\n  \"\\u0020\",\n  \"\\u2017\",\n  \"\\u0020\\u0333\",\n  \"\\u2024\",\n  \"\\u002E\",\n  \"\\u2025\",\n  \"\\u002E\\u002E\",\n  \"\\u2026\",\n  \"\\u002E\\u002E\\u002E\",\n  \"\\u2033\",\n  \"\\u2032\\u2032\",\n  \"\\u2034\",\n  \"\\u2032\\u2032\\u2032\",\n  \"\\u2036\",\n  \"\\u2035\\u2035\",\n  \"\\u2037\",\n  \"\\u2035\\u2035\\u2035\",\n  \"\\u203C\",\n  \"\\u0021\\u0021\",\n  \"\\u203E\",\n  \"\\u0020\\u0305\",\n  \"\\u2047\",\n  \"\\u003F\\u003F\",\n  \"\\u2048\",\n  \"\\u003F\\u0021\",\n  \"\\u2049\",\n  \"\\u0021\\u003F\",\n  \"\\u2057\",\n  \"\\u2032\\u2032\\u2032\\u2032\",\n  \"\\u205F\",\n  \"\\u0020\",\n  \"\\u20A8\",\n  \"\\u0052\\u0073\",\n  \"\\u2100\",\n  \"\\u0061\\u002F\\u0063\",\n  \"\\u2101\",\n  \"\\u0061\\u002F\\u0073\",\n  \"\\u2103\",\n  \"\\u00B0\\u0043\",\n  \"\\u2105\",\n  \"\\u0063\\u002F\\u006F\",\n  \"\\u2106\",\n  \"\\u0063\\u002F\\u0075\",\n  \"\\u2107\",\n  \"\\u0190\",\n  \"\\u2109\",\n  \"\\u00B0\\u0046\",\n  \"\\u2116\",\n  \"\\u004E\\u006F\",\n  \"\\u2121\",\n  \"\\u0054\\u0045\\u004C\",\n  \"\\u2135\",\n  \"\\u05D0\",\n  \"\\u2136\",\n  \"\\u05D1\",\n  \"\\u2137\",\n  \"\\u05D2\",\n  \"\\u2138\",\n  \"\\u05D3\",\n  \"\\u213B\",\n  \"\\u0046\\u0041\\u0058\",\n  \"\\u2160\",\n  \"\\u0049\",\n  \"\\u2161\",\n  \"\\u0049\\u0049\",\n  \"\\u2162\",\n  \"\\u0049\\u0049\\u0049\",\n  \"\\u2163\",\n  \"\\u0049\\u0056\",\n  \"\\u2164\",\n  \"\\u0056\",\n  \"\\u2165\",\n  \"\\u0056\\u0049\",\n  \"\\u2166\",\n  \"\\u0056\\u0049\\u0049\",\n  \"\\u2167\",\n  \"\\u0056\\u0049\\u0049\\u0049\",\n  \"\\u2168\",\n  \"\\u0049\\u0058\",\n  \"\\u2169\",\n  \"\\u0058\",\n  \"\\u216A\",\n  \"\\u0058\\u0049\",\n  \"\\u216B\",\n  \"\\u0058\\u0049\\u0049\",\n  \"\\u216C\",\n  \"\\u004C\",\n  \"\\u216D\",\n  \"\\u0043\",\n  \"\\u216E\",\n  \"\\u0044\",\n  \"\\u216F\",\n  \"\\u004D\",\n  \"\\u2170\",\n  \"\\u0069\",\n  \"\\u2171\",\n  \"\\u0069\\u0069\",\n  \"\\u2172\",\n  \"\\u0069\\u0069\\u0069\",\n  \"\\u2173\",\n  \"\\u0069\\u0076\",\n  \"\\u2174\",\n  \"\\u0076\",\n  \"\\u2175\",\n  \"\\u0076\\u0069\",\n  \"\\u2176\",\n  \"\\u0076\\u0069\\u0069\",\n  \"\\u2177\",\n  \"\\u0076\\u0069\\u0069\\u0069\",\n  \"\\u2178\",\n  \"\\u0069\\u0078\",\n  \"\\u2179\",\n  \"\\u0078\",\n  \"\\u217A\",\n  \"\\u0078\\u0069\",\n  \"\\u217B\",\n  \"\\u0078\\u0069\\u0069\",\n  \"\\u217C\",\n  \"\\u006C\",\n  \"\\u217D\",\n  \"\\u0063\",\n  \"\\u217E\",\n  \"\\u0064\",\n  \"\\u217F\",\n  \"\\u006D\",\n  \"\\u222C\",\n  \"\\u222B\\u222B\",\n  \"\\u222D\",\n  \"\\u222B\\u222B\\u222B\",\n  \"\\u222F\",\n  \"\\u222E\\u222E\",\n  \"\\u2230\",\n  \"\\u222E\\u222E\\u222E\",\n  \"\\u2474\",\n  \"\\u0028\\u0031\\u0029\",\n  \"\\u2475\",\n  \"\\u0028\\u0032\\u0029\",\n  \"\\u2476\",\n  \"\\u0028\\u0033\\u0029\",\n  \"\\u2477\",\n  \"\\u0028\\u0034\\u0029\",\n  \"\\u2478\",\n  \"\\u0028\\u0035\\u0029\",\n  \"\\u2479\",\n  \"\\u0028\\u0036\\u0029\",\n  \"\\u247A\",\n  \"\\u0028\\u0037\\u0029\",\n  \"\\u247B\",\n  \"\\u0028\\u0038\\u0029\",\n  \"\\u247C\",\n  \"\\u0028\\u0039\\u0029\",\n  \"\\u247D\",\n  \"\\u0028\\u0031\\u0030\\u0029\",\n  \"\\u247E\",\n  \"\\u0028\\u0031\\u0031\\u0029\",\n  \"\\u247F\",\n  \"\\u0028\\u0031\\u0032\\u0029\",\n  \"\\u2480\",\n  \"\\u0028\\u0031\\u0033\\u0029\",\n  \"\\u2481\",\n  \"\\u0028\\u0031\\u0034\\u0029\",\n  \"\\u2482\",\n  \"\\u0028\\u0031\\u0035\\u0029\",\n  \"\\u2483\",\n  \"\\u0028\\u0031\\u0036\\u0029\",\n  \"\\u2484\",\n  \"\\u0028\\u0031\\u0037\\u0029\",\n  \"\\u2485\",\n  \"\\u0028\\u0031\\u0038\\u0029\",\n  \"\\u2486\",\n  \"\\u0028\\u0031\\u0039\\u0029\",\n  \"\\u2487\",\n  \"\\u0028\\u0032\\u0030\\u0029\",\n  \"\\u2488\",\n  \"\\u0031\\u002E\",\n  \"\\u2489\",\n  \"\\u0032\\u002E\",\n  \"\\u248A\",\n  \"\\u0033\\u002E\",\n  \"\\u248B\",\n  \"\\u0034\\u002E\",\n  \"\\u248C\",\n  \"\\u0035\\u002E\",\n  \"\\u248D\",\n  \"\\u0036\\u002E\",\n  \"\\u248E\",\n  \"\\u0037\\u002E\",\n  \"\\u248F\",\n  \"\\u0038\\u002E\",\n  \"\\u2490\",\n  \"\\u0039\\u002E\",\n  \"\\u2491\",\n  \"\\u0031\\u0030\\u002E\",\n  \"\\u2492\",\n  \"\\u0031\\u0031\\u002E\",\n  \"\\u2493\",\n  \"\\u0031\\u0032\\u002E\",\n  \"\\u2494\",\n  \"\\u0031\\u0033\\u002E\",\n  \"\\u2495\",\n  \"\\u0031\\u0034\\u002E\",\n  \"\\u2496\",\n  \"\\u0031\\u0035\\u002E\",\n  \"\\u2497\",\n  \"\\u0031\\u0036\\u002E\",\n  \"\\u2498\",\n  \"\\u0031\\u0037\\u002E\",\n  \"\\u2499\",\n  \"\\u0031\\u0038\\u002E\",\n  \"\\u249A\",\n  \"\\u0031\\u0039\\u002E\",\n  \"\\u249B\",\n  \"\\u0032\\u0030\\u002E\",\n  \"\\u249C\",\n  \"\\u0028\\u0061\\u0029\",\n  \"\\u249D\",\n  \"\\u0028\\u0062\\u0029\",\n  \"\\u249E\",\n  \"\\u0028\\u0063\\u0029\",\n  \"\\u249F\",\n  \"\\u0028\\u0064\\u0029\",\n  \"\\u24A0\",\n  \"\\u0028\\u0065\\u0029\",\n  \"\\u24A1\",\n  \"\\u0028\\u0066\\u0029\",\n  \"\\u24A2\",\n  \"\\u0028\\u0067\\u0029\",\n  \"\\u24A3\",\n  \"\\u0028\\u0068\\u0029\",\n  \"\\u24A4\",\n  \"\\u0028\\u0069\\u0029\",\n  \"\\u24A5\",\n  \"\\u0028\\u006A\\u0029\",\n  \"\\u24A6\",\n  \"\\u0028\\u006B\\u0029\",\n  \"\\u24A7\",\n  \"\\u0028\\u006C\\u0029\",\n  \"\\u24A8\",\n  \"\\u0028\\u006D\\u0029\",\n  \"\\u24A9\",\n  \"\\u0028\\u006E\\u0029\",\n  \"\\u24AA\",\n  \"\\u0028\\u006F\\u0029\",\n  \"\\u24AB\",\n  \"\\u0028\\u0070\\u0029\",\n  \"\\u24AC\",\n  \"\\u0028\\u0071\\u0029\",\n  \"\\u24AD\",\n  \"\\u0028\\u0072\\u0029\",\n  \"\\u24AE\",\n  \"\\u0028\\u0073\\u0029\",\n  \"\\u24AF\",\n  \"\\u0028\\u0074\\u0029\",\n  \"\\u24B0\",\n  \"\\u0028\\u0075\\u0029\",\n  \"\\u24B1\",\n  \"\\u0028\\u0076\\u0029\",\n  \"\\u24B2\",\n  \"\\u0028\\u0077\\u0029\",\n  \"\\u24B3\",\n  \"\\u0028\\u0078\\u0029\",\n  \"\\u24B4\",\n  \"\\u0028\\u0079\\u0029\",\n  \"\\u24B5\",\n  \"\\u0028\\u007A\\u0029\",\n  \"\\u2A0C\",\n  \"\\u222B\\u222B\\u222B\\u222B\",\n  \"\\u2A74\",\n  \"\\u003A\\u003A\\u003D\",\n  \"\\u2A75\",\n  \"\\u003D\\u003D\",\n  \"\\u2A76\",\n  \"\\u003D\\u003D\\u003D\",\n  \"\\u2E9F\",\n  \"\\u6BCD\",\n  \"\\u2EF3\",\n  \"\\u9F9F\",\n  \"\\u2F00\",\n  \"\\u4E00\",\n  \"\\u2F01\",\n  \"\\u4E28\",\n  \"\\u2F02\",\n  \"\\u4E36\",\n  \"\\u2F03\",\n  \"\\u4E3F\",\n  \"\\u2F04\",\n  \"\\u4E59\",\n  \"\\u2F05\",\n  \"\\u4E85\",\n  \"\\u2F06\",\n  \"\\u4E8C\",\n  \"\\u2F07\",\n  \"\\u4EA0\",\n  \"\\u2F08\",\n  \"\\u4EBA\",\n  \"\\u2F09\",\n  \"\\u513F\",\n  \"\\u2F0A\",\n  \"\\u5165\",\n  \"\\u2F0B\",\n  \"\\u516B\",\n  \"\\u2F0C\",\n  \"\\u5182\",\n  \"\\u2F0D\",\n  \"\\u5196\",\n  \"\\u2F0E\",\n  \"\\u51AB\",\n  \"\\u2F0F\",\n  \"\\u51E0\",\n  \"\\u2F10\",\n  \"\\u51F5\",\n  \"\\u2F11\",\n  \"\\u5200\",\n  \"\\u2F12\",\n  \"\\u529B\",\n  \"\\u2F13\",\n  \"\\u52F9\",\n  \"\\u2F14\",\n  \"\\u5315\",\n  \"\\u2F15\",\n  \"\\u531A\",\n  \"\\u2F16\",\n  \"\\u5338\",\n  \"\\u2F17\",\n  \"\\u5341\",\n  \"\\u2F18\",\n  \"\\u535C\",\n  \"\\u2F19\",\n  \"\\u5369\",\n  \"\\u2F1A\",\n  \"\\u5382\",\n  \"\\u2F1B\",\n  \"\\u53B6\",\n  \"\\u2F1C\",\n  \"\\u53C8\",\n  \"\\u2F1D\",\n  \"\\u53E3\",\n  \"\\u2F1E\",\n  \"\\u56D7\",\n  \"\\u2F1F\",\n  \"\\u571F\",\n  \"\\u2F20\",\n  \"\\u58EB\",\n  \"\\u2F21\",\n  \"\\u5902\",\n  \"\\u2F22\",\n  \"\\u590A\",\n  \"\\u2F23\",\n  \"\\u5915\",\n  \"\\u2F24\",\n  \"\\u5927\",\n  \"\\u2F25\",\n  \"\\u5973\",\n  \"\\u2F26\",\n  \"\\u5B50\",\n  \"\\u2F27\",\n  \"\\u5B80\",\n  \"\\u2F28\",\n  \"\\u5BF8\",\n  \"\\u2F29\",\n  \"\\u5C0F\",\n  \"\\u2F2A\",\n  \"\\u5C22\",\n  \"\\u2F2B\",\n  \"\\u5C38\",\n  \"\\u2F2C\",\n  \"\\u5C6E\",\n  \"\\u2F2D\",\n  \"\\u5C71\",\n  \"\\u2F2E\",\n  \"\\u5DDB\",\n  \"\\u2F2F\",\n  \"\\u5DE5\",\n  \"\\u2F30\",\n  \"\\u5DF1\",\n  \"\\u2F31\",\n  \"\\u5DFE\",\n  \"\\u2F32\",\n  \"\\u5E72\",\n  \"\\u2F33\",\n  \"\\u5E7A\",\n  \"\\u2F34\",\n  \"\\u5E7F\",\n  \"\\u2F35\",\n  \"\\u5EF4\",\n  \"\\u2F36\",\n  \"\\u5EFE\",\n  \"\\u2F37\",\n  \"\\u5F0B\",\n  \"\\u2F38\",\n  \"\\u5F13\",\n  \"\\u2F39\",\n  \"\\u5F50\",\n  \"\\u2F3A\",\n  \"\\u5F61\",\n  \"\\u2F3B\",\n  \"\\u5F73\",\n  \"\\u2F3C\",\n  \"\\u5FC3\",\n  \"\\u2F3D\",\n  \"\\u6208\",\n  \"\\u2F3E\",\n  \"\\u6236\",\n  \"\\u2F3F\",\n  \"\\u624B\",\n  \"\\u2F40\",\n  \"\\u652F\",\n  \"\\u2F41\",\n  \"\\u6534\",\n  \"\\u2F42\",\n  \"\\u6587\",\n  \"\\u2F43\",\n  \"\\u6597\",\n  \"\\u2F44\",\n  \"\\u65A4\",\n  \"\\u2F45\",\n  \"\\u65B9\",\n  \"\\u2F46\",\n  \"\\u65E0\",\n  \"\\u2F47\",\n  \"\\u65E5\",\n  \"\\u2F48\",\n  \"\\u66F0\",\n  \"\\u2F49\",\n  \"\\u6708\",\n  \"\\u2F4A\",\n  \"\\u6728\",\n  \"\\u2F4B\",\n  \"\\u6B20\",\n  \"\\u2F4C\",\n  \"\\u6B62\",\n  \"\\u2F4D\",\n  \"\\u6B79\",\n  \"\\u2F4E\",\n  \"\\u6BB3\",\n  \"\\u2F4F\",\n  \"\\u6BCB\",\n  \"\\u2F50\",\n  \"\\u6BD4\",\n  \"\\u2F51\",\n  \"\\u6BDB\",\n  \"\\u2F52\",\n  \"\\u6C0F\",\n  \"\\u2F53\",\n  \"\\u6C14\",\n  \"\\u2F54\",\n  \"\\u6C34\",\n  \"\\u2F55\",\n  \"\\u706B\",\n  \"\\u2F56\",\n  \"\\u722A\",\n  \"\\u2F57\",\n  \"\\u7236\",\n  \"\\u2F58\",\n  \"\\u723B\",\n  \"\\u2F59\",\n  \"\\u723F\",\n  \"\\u2F5A\",\n  \"\\u7247\",\n  \"\\u2F5B\",\n  \"\\u7259\",\n  \"\\u2F5C\",\n  \"\\u725B\",\n  \"\\u2F5D\",\n  \"\\u72AC\",\n  \"\\u2F5E\",\n  \"\\u7384\",\n  \"\\u2F5F\",\n  \"\\u7389\",\n  \"\\u2F60\",\n  \"\\u74DC\",\n  \"\\u2F61\",\n  \"\\u74E6\",\n  \"\\u2F62\",\n  \"\\u7518\",\n  \"\\u2F63\",\n  \"\\u751F\",\n  \"\\u2F64\",\n  \"\\u7528\",\n  \"\\u2F65\",\n  \"\\u7530\",\n  \"\\u2F66\",\n  \"\\u758B\",\n  \"\\u2F67\",\n  \"\\u7592\",\n  \"\\u2F68\",\n  \"\\u7676\",\n  \"\\u2F69\",\n  \"\\u767D\",\n  \"\\u2F6A\",\n  \"\\u76AE\",\n  \"\\u2F6B\",\n  \"\\u76BF\",\n  \"\\u2F6C\",\n  \"\\u76EE\",\n  \"\\u2F6D\",\n  \"\\u77DB\",\n  \"\\u2F6E\",\n  \"\\u77E2\",\n  \"\\u2F6F\",\n  \"\\u77F3\",\n  \"\\u2F70\",\n  \"\\u793A\",\n  \"\\u2F71\",\n  \"\\u79B8\",\n  \"\\u2F72\",\n  \"\\u79BE\",\n  \"\\u2F73\",\n  \"\\u7A74\",\n  \"\\u2F74\",\n  \"\\u7ACB\",\n  \"\\u2F75\",\n  \"\\u7AF9\",\n  \"\\u2F76\",\n  \"\\u7C73\",\n  \"\\u2F77\",\n  \"\\u7CF8\",\n  \"\\u2F78\",\n  \"\\u7F36\",\n  \"\\u2F79\",\n  \"\\u7F51\",\n  \"\\u2F7A\",\n  \"\\u7F8A\",\n  \"\\u2F7B\",\n  \"\\u7FBD\",\n  \"\\u2F7C\",\n  \"\\u8001\",\n  \"\\u2F7D\",\n  \"\\u800C\",\n  \"\\u2F7E\",\n  \"\\u8012\",\n  \"\\u2F7F\",\n  \"\\u8033\",\n  \"\\u2F80\",\n  \"\\u807F\",\n  \"\\u2F81\",\n  \"\\u8089\",\n  \"\\u2F82\",\n  \"\\u81E3\",\n  \"\\u2F83\",\n  \"\\u81EA\",\n  \"\\u2F84\",\n  \"\\u81F3\",\n  \"\\u2F85\",\n  \"\\u81FC\",\n  \"\\u2F86\",\n  \"\\u820C\",\n  \"\\u2F87\",\n  \"\\u821B\",\n  \"\\u2F88\",\n  \"\\u821F\",\n  \"\\u2F89\",\n  \"\\u826E\",\n  \"\\u2F8A\",\n  \"\\u8272\",\n  \"\\u2F8B\",\n  \"\\u8278\",\n  \"\\u2F8C\",\n  \"\\u864D\",\n  \"\\u2F8D\",\n  \"\\u866B\",\n  \"\\u2F8E\",\n  \"\\u8840\",\n  \"\\u2F8F\",\n  \"\\u884C\",\n  \"\\u2F90\",\n  \"\\u8863\",\n  \"\\u2F91\",\n  \"\\u897E\",\n  \"\\u2F92\",\n  \"\\u898B\",\n  \"\\u2F93\",\n  \"\\u89D2\",\n  \"\\u2F94\",\n  \"\\u8A00\",\n  \"\\u2F95\",\n  \"\\u8C37\",\n  \"\\u2F96\",\n  \"\\u8C46\",\n  \"\\u2F97\",\n  \"\\u8C55\",\n  \"\\u2F98\",\n  \"\\u8C78\",\n  \"\\u2F99\",\n  \"\\u8C9D\",\n  \"\\u2F9A\",\n  \"\\u8D64\",\n  \"\\u2F9B\",\n  \"\\u8D70\",\n  \"\\u2F9C\",\n  \"\\u8DB3\",\n  \"\\u2F9D\",\n  \"\\u8EAB\",\n  \"\\u2F9E\",\n  \"\\u8ECA\",\n  \"\\u2F9F\",\n  \"\\u8F9B\",\n  \"\\u2FA0\",\n  \"\\u8FB0\",\n  \"\\u2FA1\",\n  \"\\u8FB5\",\n  \"\\u2FA2\",\n  \"\\u9091\",\n  \"\\u2FA3\",\n  \"\\u9149\",\n  \"\\u2FA4\",\n  \"\\u91C6\",\n  \"\\u2FA5\",\n  \"\\u91CC\",\n  \"\\u2FA6\",\n  \"\\u91D1\",\n  \"\\u2FA7\",\n  \"\\u9577\",\n  \"\\u2FA8\",\n  \"\\u9580\",\n  \"\\u2FA9\",\n  \"\\u961C\",\n  \"\\u2FAA\",\n  \"\\u96B6\",\n  \"\\u2FAB\",\n  \"\\u96B9\",\n  \"\\u2FAC\",\n  \"\\u96E8\",\n  \"\\u2FAD\",\n  \"\\u9751\",\n  \"\\u2FAE\",\n  \"\\u975E\",\n  \"\\u2FAF\",\n  \"\\u9762\",\n  \"\\u2FB0\",\n  \"\\u9769\",\n  \"\\u2FB1\",\n  \"\\u97CB\",\n  \"\\u2FB2\",\n  \"\\u97ED\",\n  \"\\u2FB3\",\n  \"\\u97F3\",\n  \"\\u2FB4\",\n  \"\\u9801\",\n  \"\\u2FB5\",\n  \"\\u98A8\",\n  \"\\u2FB6\",\n  \"\\u98DB\",\n  \"\\u2FB7\",\n  \"\\u98DF\",\n  \"\\u2FB8\",\n  \"\\u9996\",\n  \"\\u2FB9\",\n  \"\\u9999\",\n  \"\\u2FBA\",\n  \"\\u99AC\",\n  \"\\u2FBB\",\n  \"\\u9AA8\",\n  \"\\u2FBC\",\n  \"\\u9AD8\",\n  \"\\u2FBD\",\n  \"\\u9ADF\",\n  \"\\u2FBE\",\n  \"\\u9B25\",\n  \"\\u2FBF\",\n  \"\\u9B2F\",\n  \"\\u2FC0\",\n  \"\\u9B32\",\n  \"\\u2FC1\",\n  \"\\u9B3C\",\n  \"\\u2FC2\",\n  \"\\u9B5A\",\n  \"\\u2FC3\",\n  \"\\u9CE5\",\n  \"\\u2FC4\",\n  \"\\u9E75\",\n  \"\\u2FC5\",\n  \"\\u9E7F\",\n  \"\\u2FC6\",\n  \"\\u9EA5\",\n  \"\\u2FC7\",\n  \"\\u9EBB\",\n  \"\\u2FC8\",\n  \"\\u9EC3\",\n  \"\\u2FC9\",\n  \"\\u9ECD\",\n  \"\\u2FCA\",\n  \"\\u9ED1\",\n  \"\\u2FCB\",\n  \"\\u9EF9\",\n  \"\\u2FCC\",\n  \"\\u9EFD\",\n  \"\\u2FCD\",\n  \"\\u9F0E\",\n  \"\\u2FCE\",\n  \"\\u9F13\",\n  \"\\u2FCF\",\n  \"\\u9F20\",\n  \"\\u2FD0\",\n  \"\\u9F3B\",\n  \"\\u2FD1\",\n  \"\\u9F4A\",\n  \"\\u2FD2\",\n  \"\\u9F52\",\n  \"\\u2FD3\",\n  \"\\u9F8D\",\n  \"\\u2FD4\",\n  \"\\u9F9C\",\n  \"\\u2FD5\",\n  \"\\u9FA0\",\n  \"\\u3036\",\n  \"\\u3012\",\n  \"\\u3038\",\n  \"\\u5341\",\n  \"\\u3039\",\n  \"\\u5344\",\n  \"\\u303A\",\n  \"\\u5345\",\n  \"\\u309B\",\n  \"\\u0020\\u3099\",\n  \"\\u309C\",\n  \"\\u0020\\u309A\",\n  \"\\u3131\",\n  \"\\u1100\",\n  \"\\u3132\",\n  \"\\u1101\",\n  \"\\u3133\",\n  \"\\u11AA\",\n  \"\\u3134\",\n  \"\\u1102\",\n  \"\\u3135\",\n  \"\\u11AC\",\n  \"\\u3136\",\n  \"\\u11AD\",\n  \"\\u3137\",\n  \"\\u1103\",\n  \"\\u3138\",\n  \"\\u1104\",\n  \"\\u3139\",\n  \"\\u1105\",\n  \"\\u313A\",\n  \"\\u11B0\",\n  \"\\u313B\",\n  \"\\u11B1\",\n  \"\\u313C\",\n  \"\\u11B2\",\n  \"\\u313D\",\n  \"\\u11B3\",\n  \"\\u313E\",\n  \"\\u11B4\",\n  \"\\u313F\",\n  \"\\u11B5\",\n  \"\\u3140\",\n  \"\\u111A\",\n  \"\\u3141\",\n  \"\\u1106\",\n  \"\\u3142\",\n  \"\\u1107\",\n  \"\\u3143\",\n  \"\\u1108\",\n  \"\\u3144\",\n  \"\\u1121\",\n  \"\\u3145\",\n  \"\\u1109\",\n  \"\\u3146\",\n  \"\\u110A\",\n  \"\\u3147\",\n  \"\\u110B\",\n  \"\\u3148\",\n  \"\\u110C\",\n  \"\\u3149\",\n  \"\\u110D\",\n  \"\\u314A\",\n  \"\\u110E\",\n  \"\\u314B\",\n  \"\\u110F\",\n  \"\\u314C\",\n  \"\\u1110\",\n  \"\\u314D\",\n  \"\\u1111\",\n  \"\\u314E\",\n  \"\\u1112\",\n  \"\\u314F\",\n  \"\\u1161\",\n  \"\\u3150\",\n  \"\\u1162\",\n  \"\\u3151\",\n  \"\\u1163\",\n  \"\\u3152\",\n  \"\\u1164\",\n  \"\\u3153\",\n  \"\\u1165\",\n  \"\\u3154\",\n  \"\\u1166\",\n  \"\\u3155\",\n  \"\\u1167\",\n  \"\\u3156\",\n  \"\\u1168\",\n  \"\\u3157\",\n  \"\\u1169\",\n  \"\\u3158\",\n  \"\\u116A\",\n  \"\\u3159\",\n  \"\\u116B\",\n  \"\\u315A\",\n  \"\\u116C\",\n  \"\\u315B\",\n  \"\\u116D\",\n  \"\\u315C\",\n  \"\\u116E\",\n  \"\\u315D\",\n  \"\\u116F\",\n  \"\\u315E\",\n  \"\\u1170\",\n  \"\\u315F\",\n  \"\\u1171\",\n  \"\\u3160\",\n  \"\\u1172\",\n  \"\\u3161\",\n  \"\\u1173\",\n  \"\\u3162\",\n  \"\\u1174\",\n  \"\\u3163\",\n  \"\\u1175\",\n  \"\\u3164\",\n  \"\\u1160\",\n  \"\\u3165\",\n  \"\\u1114\",\n  \"\\u3166\",\n  \"\\u1115\",\n  \"\\u3167\",\n  \"\\u11C7\",\n  \"\\u3168\",\n  \"\\u11C8\",\n  \"\\u3169\",\n  \"\\u11CC\",\n  \"\\u316A\",\n  \"\\u11CE\",\n  \"\\u316B\",\n  \"\\u11D3\",\n  \"\\u316C\",\n  \"\\u11D7\",\n  \"\\u316D\",\n  \"\\u11D9\",\n  \"\\u316E\",\n  \"\\u111C\",\n  \"\\u316F\",\n  \"\\u11DD\",\n  \"\\u3170\",\n  \"\\u11DF\",\n  \"\\u3171\",\n  \"\\u111D\",\n  \"\\u3172\",\n  \"\\u111E\",\n  \"\\u3173\",\n  \"\\u1120\",\n  \"\\u3174\",\n  \"\\u1122\",\n  \"\\u3175\",\n  \"\\u1123\",\n  \"\\u3176\",\n  \"\\u1127\",\n  \"\\u3177\",\n  \"\\u1129\",\n  \"\\u3178\",\n  \"\\u112B\",\n  \"\\u3179\",\n  \"\\u112C\",\n  \"\\u317A\",\n  \"\\u112D\",\n  \"\\u317B\",\n  \"\\u112E\",\n  \"\\u317C\",\n  \"\\u112F\",\n  \"\\u317D\",\n  \"\\u1132\",\n  \"\\u317E\",\n  \"\\u1136\",\n  \"\\u317F\",\n  \"\\u1140\",\n  \"\\u3180\",\n  \"\\u1147\",\n  \"\\u3181\",\n  \"\\u114C\",\n  \"\\u3182\",\n  \"\\u11F1\",\n  \"\\u3183\",\n  \"\\u11F2\",\n  \"\\u3184\",\n  \"\\u1157\",\n  \"\\u3185\",\n  \"\\u1158\",\n  \"\\u3186\",\n  \"\\u1159\",\n  \"\\u3187\",\n  \"\\u1184\",\n  \"\\u3188\",\n  \"\\u1185\",\n  \"\\u3189\",\n  \"\\u1188\",\n  \"\\u318A\",\n  \"\\u1191\",\n  \"\\u318B\",\n  \"\\u1192\",\n  \"\\u318C\",\n  \"\\u1194\",\n  \"\\u318D\",\n  \"\\u119E\",\n  \"\\u318E\",\n  \"\\u11A1\",\n  \"\\u3200\",\n  \"\\u0028\\u1100\\u0029\",\n  \"\\u3201\",\n  \"\\u0028\\u1102\\u0029\",\n  \"\\u3202\",\n  \"\\u0028\\u1103\\u0029\",\n  \"\\u3203\",\n  \"\\u0028\\u1105\\u0029\",\n  \"\\u3204\",\n  \"\\u0028\\u1106\\u0029\",\n  \"\\u3205\",\n  \"\\u0028\\u1107\\u0029\",\n  \"\\u3206\",\n  \"\\u0028\\u1109\\u0029\",\n  \"\\u3207\",\n  \"\\u0028\\u110B\\u0029\",\n  \"\\u3208\",\n  \"\\u0028\\u110C\\u0029\",\n  \"\\u3209\",\n  \"\\u0028\\u110E\\u0029\",\n  \"\\u320A\",\n  \"\\u0028\\u110F\\u0029\",\n  \"\\u320B\",\n  \"\\u0028\\u1110\\u0029\",\n  \"\\u320C\",\n  \"\\u0028\\u1111\\u0029\",\n  \"\\u320D\",\n  \"\\u0028\\u1112\\u0029\",\n  \"\\u320E\",\n  \"\\u0028\\u1100\\u1161\\u0029\",\n  \"\\u320F\",\n  \"\\u0028\\u1102\\u1161\\u0029\",\n  \"\\u3210\",\n  \"\\u0028\\u1103\\u1161\\u0029\",\n  \"\\u3211\",\n  \"\\u0028\\u1105\\u1161\\u0029\",\n  \"\\u3212\",\n  \"\\u0028\\u1106\\u1161\\u0029\",\n  \"\\u3213\",\n  \"\\u0028\\u1107\\u1161\\u0029\",\n  \"\\u3214\",\n  \"\\u0028\\u1109\\u1161\\u0029\",\n  \"\\u3215\",\n  \"\\u0028\\u110B\\u1161\\u0029\",\n  \"\\u3216\",\n  \"\\u0028\\u110C\\u1161\\u0029\",\n  \"\\u3217\",\n  \"\\u0028\\u110E\\u1161\\u0029\",\n  \"\\u3218\",\n  \"\\u0028\\u110F\\u1161\\u0029\",\n  \"\\u3219\",\n  \"\\u0028\\u1110\\u1161\\u0029\",\n  \"\\u321A\",\n  \"\\u0028\\u1111\\u1161\\u0029\",\n  \"\\u321B\",\n  \"\\u0028\\u1112\\u1161\\u0029\",\n  \"\\u321C\",\n  \"\\u0028\\u110C\\u116E\\u0029\",\n  \"\\u321D\",\n  \"\\u0028\\u110B\\u1169\\u110C\\u1165\\u11AB\\u0029\",\n  \"\\u321E\",\n  \"\\u0028\\u110B\\u1169\\u1112\\u116E\\u0029\",\n  \"\\u3220\",\n  \"\\u0028\\u4E00\\u0029\",\n  \"\\u3221\",\n  \"\\u0028\\u4E8C\\u0029\",\n  \"\\u3222\",\n  \"\\u0028\\u4E09\\u0029\",\n  \"\\u3223\",\n  \"\\u0028\\u56DB\\u0029\",\n  \"\\u3224\",\n  \"\\u0028\\u4E94\\u0029\",\n  \"\\u3225\",\n  \"\\u0028\\u516D\\u0029\",\n  \"\\u3226\",\n  \"\\u0028\\u4E03\\u0029\",\n  \"\\u3227\",\n  \"\\u0028\\u516B\\u0029\",\n  \"\\u3228\",\n  \"\\u0028\\u4E5D\\u0029\",\n  \"\\u3229\",\n  \"\\u0028\\u5341\\u0029\",\n  \"\\u322A\",\n  \"\\u0028\\u6708\\u0029\",\n  \"\\u322B\",\n  \"\\u0028\\u706B\\u0029\",\n  \"\\u322C\",\n  \"\\u0028\\u6C34\\u0029\",\n  \"\\u322D\",\n  \"\\u0028\\u6728\\u0029\",\n  \"\\u322E\",\n  \"\\u0028\\u91D1\\u0029\",\n  \"\\u322F\",\n  \"\\u0028\\u571F\\u0029\",\n  \"\\u3230\",\n  \"\\u0028\\u65E5\\u0029\",\n  \"\\u3231\",\n  \"\\u0028\\u682A\\u0029\",\n  \"\\u3232\",\n  \"\\u0028\\u6709\\u0029\",\n  \"\\u3233\",\n  \"\\u0028\\u793E\\u0029\",\n  \"\\u3234\",\n  \"\\u0028\\u540D\\u0029\",\n  \"\\u3235\",\n  \"\\u0028\\u7279\\u0029\",\n  \"\\u3236\",\n  \"\\u0028\\u8CA1\\u0029\",\n  \"\\u3237\",\n  \"\\u0028\\u795D\\u0029\",\n  \"\\u3238\",\n  \"\\u0028\\u52B4\\u0029\",\n  \"\\u3239\",\n  \"\\u0028\\u4EE3\\u0029\",\n  \"\\u323A\",\n  \"\\u0028\\u547C\\u0029\",\n  \"\\u323B\",\n  \"\\u0028\\u5B66\\u0029\",\n  \"\\u323C\",\n  \"\\u0028\\u76E3\\u0029\",\n  \"\\u323D\",\n  \"\\u0028\\u4F01\\u0029\",\n  \"\\u323E\",\n  \"\\u0028\\u8CC7\\u0029\",\n  \"\\u323F\",\n  \"\\u0028\\u5354\\u0029\",\n  \"\\u3240\",\n  \"\\u0028\\u796D\\u0029\",\n  \"\\u3241\",\n  \"\\u0028\\u4F11\\u0029\",\n  \"\\u3242\",\n  \"\\u0028\\u81EA\\u0029\",\n  \"\\u3243\",\n  \"\\u0028\\u81F3\\u0029\",\n  \"\\u32C0\",\n  \"\\u0031\\u6708\",\n  \"\\u32C1\",\n  \"\\u0032\\u6708\",\n  \"\\u32C2\",\n  \"\\u0033\\u6708\",\n  \"\\u32C3\",\n  \"\\u0034\\u6708\",\n  \"\\u32C4\",\n  \"\\u0035\\u6708\",\n  \"\\u32C5\",\n  \"\\u0036\\u6708\",\n  \"\\u32C6\",\n  \"\\u0037\\u6708\",\n  \"\\u32C7\",\n  \"\\u0038\\u6708\",\n  \"\\u32C8\",\n  \"\\u0039\\u6708\",\n  \"\\u32C9\",\n  \"\\u0031\\u0030\\u6708\",\n  \"\\u32CA\",\n  \"\\u0031\\u0031\\u6708\",\n  \"\\u32CB\",\n  \"\\u0031\\u0032\\u6708\",\n  \"\\u3358\",\n  \"\\u0030\\u70B9\",\n  \"\\u3359\",\n  \"\\u0031\\u70B9\",\n  \"\\u335A\",\n  \"\\u0032\\u70B9\",\n  \"\\u335B\",\n  \"\\u0033\\u70B9\",\n  \"\\u335C\",\n  \"\\u0034\\u70B9\",\n  \"\\u335D\",\n  \"\\u0035\\u70B9\",\n  \"\\u335E\",\n  \"\\u0036\\u70B9\",\n  \"\\u335F\",\n  \"\\u0037\\u70B9\",\n  \"\\u3360\",\n  \"\\u0038\\u70B9\",\n  \"\\u3361\",\n  \"\\u0039\\u70B9\",\n  \"\\u3362\",\n  \"\\u0031\\u0030\\u70B9\",\n  \"\\u3363\",\n  \"\\u0031\\u0031\\u70B9\",\n  \"\\u3364\",\n  \"\\u0031\\u0032\\u70B9\",\n  \"\\u3365\",\n  \"\\u0031\\u0033\\u70B9\",\n  \"\\u3366\",\n  \"\\u0031\\u0034\\u70B9\",\n  \"\\u3367\",\n  \"\\u0031\\u0035\\u70B9\",\n  \"\\u3368\",\n  \"\\u0031\\u0036\\u70B9\",\n  \"\\u3369\",\n  \"\\u0031\\u0037\\u70B9\",\n  \"\\u336A\",\n  \"\\u0031\\u0038\\u70B9\",\n  \"\\u336B\",\n  \"\\u0031\\u0039\\u70B9\",\n  \"\\u336C\",\n  \"\\u0032\\u0030\\u70B9\",\n  \"\\u336D\",\n  \"\\u0032\\u0031\\u70B9\",\n  \"\\u336E\",\n  \"\\u0032\\u0032\\u70B9\",\n  \"\\u336F\",\n  \"\\u0032\\u0033\\u70B9\",\n  \"\\u3370\",\n  \"\\u0032\\u0034\\u70B9\",\n  \"\\u33E0\",\n  \"\\u0031\\u65E5\",\n  \"\\u33E1\",\n  \"\\u0032\\u65E5\",\n  \"\\u33E2\",\n  \"\\u0033\\u65E5\",\n  \"\\u33E3\",\n  \"\\u0034\\u65E5\",\n  \"\\u33E4\",\n  \"\\u0035\\u65E5\",\n  \"\\u33E5\",\n  \"\\u0036\\u65E5\",\n  \"\\u33E6\",\n  \"\\u0037\\u65E5\",\n  \"\\u33E7\",\n  \"\\u0038\\u65E5\",\n  \"\\u33E8\",\n  \"\\u0039\\u65E5\",\n  \"\\u33E9\",\n  \"\\u0031\\u0030\\u65E5\",\n  \"\\u33EA\",\n  \"\\u0031\\u0031\\u65E5\",\n  \"\\u33EB\",\n  \"\\u0031\\u0032\\u65E5\",\n  \"\\u33EC\",\n  \"\\u0031\\u0033\\u65E5\",\n  \"\\u33ED\",\n  \"\\u0031\\u0034\\u65E5\",\n  \"\\u33EE\",\n  \"\\u0031\\u0035\\u65E5\",\n  \"\\u33EF\",\n  \"\\u0031\\u0036\\u65E5\",\n  \"\\u33F0\",\n  \"\\u0031\\u0037\\u65E5\",\n  \"\\u33F1\",\n  \"\\u0031\\u0038\\u65E5\",\n  \"\\u33F2\",\n  \"\\u0031\\u0039\\u65E5\",\n  \"\\u33F3\",\n  \"\\u0032\\u0030\\u65E5\",\n  \"\\u33F4\",\n  \"\\u0032\\u0031\\u65E5\",\n  \"\\u33F5\",\n  \"\\u0032\\u0032\\u65E5\",\n  \"\\u33F6\",\n  \"\\u0032\\u0033\\u65E5\",\n  \"\\u33F7\",\n  \"\\u0032\\u0034\\u65E5\",\n  \"\\u33F8\",\n  \"\\u0032\\u0035\\u65E5\",\n  \"\\u33F9\",\n  \"\\u0032\\u0036\\u65E5\",\n  \"\\u33FA\",\n  \"\\u0032\\u0037\\u65E5\",\n  \"\\u33FB\",\n  \"\\u0032\\u0038\\u65E5\",\n  \"\\u33FC\",\n  \"\\u0032\\u0039\\u65E5\",\n  \"\\u33FD\",\n  \"\\u0033\\u0030\\u65E5\",\n  \"\\u33FE\",\n  \"\\u0033\\u0031\\u65E5\",\n  \"\\uFB00\",\n  \"\\u0066\\u0066\",\n  \"\\uFB01\",\n  \"\\u0066\\u0069\",\n  \"\\uFB02\",\n  \"\\u0066\\u006C\",\n  \"\\uFB03\",\n  \"\\u0066\\u0066\\u0069\",\n  \"\\uFB04\",\n  \"\\u0066\\u0066\\u006C\",\n  \"\\uFB05\",\n  \"\\u017F\\u0074\",\n  \"\\uFB06\",\n  \"\\u0073\\u0074\",\n  \"\\uFB13\",\n  \"\\u0574\\u0576\",\n  \"\\uFB14\",\n  \"\\u0574\\u0565\",\n  \"\\uFB15\",\n  \"\\u0574\\u056B\",\n  \"\\uFB16\",\n  \"\\u057E\\u0576\",\n  \"\\uFB17\",\n  \"\\u0574\\u056D\",\n  \"\\uFB4F\",\n  \"\\u05D0\\u05DC\",\n  \"\\uFB50\",\n  \"\\u0671\",\n  \"\\uFB51\",\n  \"\\u0671\",\n  \"\\uFB52\",\n  \"\\u067B\",\n  \"\\uFB53\",\n  \"\\u067B\",\n  \"\\uFB54\",\n  \"\\u067B\",\n  \"\\uFB55\",\n  \"\\u067B\",\n  \"\\uFB56\",\n  \"\\u067E\",\n  \"\\uFB57\",\n  \"\\u067E\",\n  \"\\uFB58\",\n  \"\\u067E\",\n  \"\\uFB59\",\n  \"\\u067E\",\n  \"\\uFB5A\",\n  \"\\u0680\",\n  \"\\uFB5B\",\n  \"\\u0680\",\n  \"\\uFB5C\",\n  \"\\u0680\",\n  \"\\uFB5D\",\n  \"\\u0680\",\n  \"\\uFB5E\",\n  \"\\u067A\",\n  \"\\uFB5F\",\n  \"\\u067A\",\n  \"\\uFB60\",\n  \"\\u067A\",\n  \"\\uFB61\",\n  \"\\u067A\",\n  \"\\uFB62\",\n  \"\\u067F\",\n  \"\\uFB63\",\n  \"\\u067F\",\n  \"\\uFB64\",\n  \"\\u067F\",\n  \"\\uFB65\",\n  \"\\u067F\",\n  \"\\uFB66\",\n  \"\\u0679\",\n  \"\\uFB67\",\n  \"\\u0679\",\n  \"\\uFB68\",\n  \"\\u0679\",\n  \"\\uFB69\",\n  \"\\u0679\",\n  \"\\uFB6A\",\n  \"\\u06A4\",\n  \"\\uFB6B\",\n  \"\\u06A4\",\n  \"\\uFB6C\",\n  \"\\u06A4\",\n  \"\\uFB6D\",\n  \"\\u06A4\",\n  \"\\uFB6E\",\n  \"\\u06A6\",\n  \"\\uFB6F\",\n  \"\\u06A6\",\n  \"\\uFB70\",\n  \"\\u06A6\",\n  \"\\uFB71\",\n  \"\\u06A6\",\n  \"\\uFB72\",\n  \"\\u0684\",\n  \"\\uFB73\",\n  \"\\u0684\",\n  \"\\uFB74\",\n  \"\\u0684\",\n  \"\\uFB75\",\n  \"\\u0684\",\n  \"\\uFB76\",\n  \"\\u0683\",\n  \"\\uFB77\",\n  \"\\u0683\",\n  \"\\uFB78\",\n  \"\\u0683\",\n  \"\\uFB79\",\n  \"\\u0683\",\n  \"\\uFB7A\",\n  \"\\u0686\",\n  \"\\uFB7B\",\n  \"\\u0686\",\n  \"\\uFB7C\",\n  \"\\u0686\",\n  \"\\uFB7D\",\n  \"\\u0686\",\n  \"\\uFB7E\",\n  \"\\u0687\",\n  \"\\uFB7F\",\n  \"\\u0687\",\n  \"\\uFB80\",\n  \"\\u0687\",\n  \"\\uFB81\",\n  \"\\u0687\",\n  \"\\uFB82\",\n  \"\\u068D\",\n  \"\\uFB83\",\n  \"\\u068D\",\n  \"\\uFB84\",\n  \"\\u068C\",\n  \"\\uFB85\",\n  \"\\u068C\",\n  \"\\uFB86\",\n  \"\\u068E\",\n  \"\\uFB87\",\n  \"\\u068E\",\n  \"\\uFB88\",\n  \"\\u0688\",\n  \"\\uFB89\",\n  \"\\u0688\",\n  \"\\uFB8A\",\n  \"\\u0698\",\n  \"\\uFB8B\",\n  \"\\u0698\",\n  \"\\uFB8C\",\n  \"\\u0691\",\n  \"\\uFB8D\",\n  \"\\u0691\",\n  \"\\uFB8E\",\n  \"\\u06A9\",\n  \"\\uFB8F\",\n  \"\\u06A9\",\n  \"\\uFB90\",\n  \"\\u06A9\",\n  \"\\uFB91\",\n  \"\\u06A9\",\n  \"\\uFB92\",\n  \"\\u06AF\",\n  \"\\uFB93\",\n  \"\\u06AF\",\n  \"\\uFB94\",\n  \"\\u06AF\",\n  \"\\uFB95\",\n  \"\\u06AF\",\n  \"\\uFB96\",\n  \"\\u06B3\",\n  \"\\uFB97\",\n  \"\\u06B3\",\n  \"\\uFB98\",\n  \"\\u06B3\",\n  \"\\uFB99\",\n  \"\\u06B3\",\n  \"\\uFB9A\",\n  \"\\u06B1\",\n  \"\\uFB9B\",\n  \"\\u06B1\",\n  \"\\uFB9C\",\n  \"\\u06B1\",\n  \"\\uFB9D\",\n  \"\\u06B1\",\n  \"\\uFB9E\",\n  \"\\u06BA\",\n  \"\\uFB9F\",\n  \"\\u06BA\",\n  \"\\uFBA0\",\n  \"\\u06BB\",\n  \"\\uFBA1\",\n  \"\\u06BB\",\n  \"\\uFBA2\",\n  \"\\u06BB\",\n  \"\\uFBA3\",\n  \"\\u06BB\",\n  \"\\uFBA4\",\n  \"\\u06C0\",\n  \"\\uFBA5\",\n  \"\\u06C0\",\n  \"\\uFBA6\",\n  \"\\u06C1\",\n  \"\\uFBA7\",\n  \"\\u06C1\",\n  \"\\uFBA8\",\n  \"\\u06C1\",\n  \"\\uFBA9\",\n  \"\\u06C1\",\n  \"\\uFBAA\",\n  \"\\u06BE\",\n  \"\\uFBAB\",\n  \"\\u06BE\",\n  \"\\uFBAC\",\n  \"\\u06BE\",\n  \"\\uFBAD\",\n  \"\\u06BE\",\n  \"\\uFBAE\",\n  \"\\u06D2\",\n  \"\\uFBAF\",\n  \"\\u06D2\",\n  \"\\uFBB0\",\n  \"\\u06D3\",\n  \"\\uFBB1\",\n  \"\\u06D3\",\n  \"\\uFBD3\",\n  \"\\u06AD\",\n  \"\\uFBD4\",\n  \"\\u06AD\",\n  \"\\uFBD5\",\n  \"\\u06AD\",\n  \"\\uFBD6\",\n  \"\\u06AD\",\n  \"\\uFBD7\",\n  \"\\u06C7\",\n  \"\\uFBD8\",\n  \"\\u06C7\",\n  \"\\uFBD9\",\n  \"\\u06C6\",\n  \"\\uFBDA\",\n  \"\\u06C6\",\n  \"\\uFBDB\",\n  \"\\u06C8\",\n  \"\\uFBDC\",\n  \"\\u06C8\",\n  \"\\uFBDD\",\n  \"\\u0677\",\n  \"\\uFBDE\",\n  \"\\u06CB\",\n  \"\\uFBDF\",\n  \"\\u06CB\",\n  \"\\uFBE0\",\n  \"\\u06C5\",\n  \"\\uFBE1\",\n  \"\\u06C5\",\n  \"\\uFBE2\",\n  \"\\u06C9\",\n  \"\\uFBE3\",\n  \"\\u06C9\",\n  \"\\uFBE4\",\n  \"\\u06D0\",\n  \"\\uFBE5\",\n  \"\\u06D0\",\n  \"\\uFBE6\",\n  \"\\u06D0\",\n  \"\\uFBE7\",\n  \"\\u06D0\",\n  \"\\uFBE8\",\n  \"\\u0649\",\n  \"\\uFBE9\",\n  \"\\u0649\",\n  \"\\uFBEA\",\n  \"\\u0626\\u0627\",\n  \"\\uFBEB\",\n  \"\\u0626\\u0627\",\n  \"\\uFBEC\",\n  \"\\u0626\\u06D5\",\n  \"\\uFBED\",\n  \"\\u0626\\u06D5\",\n  \"\\uFBEE\",\n  \"\\u0626\\u0648\",\n  \"\\uFBEF\",\n  \"\\u0626\\u0648\",\n  \"\\uFBF0\",\n  \"\\u0626\\u06C7\",\n  \"\\uFBF1\",\n  \"\\u0626\\u06C7\",\n  \"\\uFBF2\",\n  \"\\u0626\\u06C6\",\n  \"\\uFBF3\",\n  \"\\u0626\\u06C6\",\n  \"\\uFBF4\",\n  \"\\u0626\\u06C8\",\n  \"\\uFBF5\",\n  \"\\u0626\\u06C8\",\n  \"\\uFBF6\",\n  \"\\u0626\\u06D0\",\n  \"\\uFBF7\",\n  \"\\u0626\\u06D0\",\n  \"\\uFBF8\",\n  \"\\u0626\\u06D0\",\n  \"\\uFBF9\",\n  \"\\u0626\\u0649\",\n  \"\\uFBFA\",\n  \"\\u0626\\u0649\",\n  \"\\uFBFB\",\n  \"\\u0626\\u0649\",\n  \"\\uFBFC\",\n  \"\\u06CC\",\n  \"\\uFBFD\",\n  \"\\u06CC\",\n  \"\\uFBFE\",\n  \"\\u06CC\",\n  \"\\uFBFF\",\n  \"\\u06CC\",\n  \"\\uFC00\",\n  \"\\u0626\\u062C\",\n  \"\\uFC01\",\n  \"\\u0626\\u062D\",\n  \"\\uFC02\",\n  \"\\u0626\\u0645\",\n  \"\\uFC03\",\n  \"\\u0626\\u0649\",\n  \"\\uFC04\",\n  \"\\u0626\\u064A\",\n  \"\\uFC05\",\n  \"\\u0628\\u062C\",\n  \"\\uFC06\",\n  \"\\u0628\\u062D\",\n  \"\\uFC07\",\n  \"\\u0628\\u062E\",\n  \"\\uFC08\",\n  \"\\u0628\\u0645\",\n  \"\\uFC09\",\n  \"\\u0628\\u0649\",\n  \"\\uFC0A\",\n  \"\\u0628\\u064A\",\n  \"\\uFC0B\",\n  \"\\u062A\\u062C\",\n  \"\\uFC0C\",\n  \"\\u062A\\u062D\",\n  \"\\uFC0D\",\n  \"\\u062A\\u062E\",\n  \"\\uFC0E\",\n  \"\\u062A\\u0645\",\n  \"\\uFC0F\",\n  \"\\u062A\\u0649\",\n  \"\\uFC10\",\n  \"\\u062A\\u064A\",\n  \"\\uFC11\",\n  \"\\u062B\\u062C\",\n  \"\\uFC12\",\n  \"\\u062B\\u0645\",\n  \"\\uFC13\",\n  \"\\u062B\\u0649\",\n  \"\\uFC14\",\n  \"\\u062B\\u064A\",\n  \"\\uFC15\",\n  \"\\u062C\\u062D\",\n  \"\\uFC16\",\n  \"\\u062C\\u0645\",\n  \"\\uFC17\",\n  \"\\u062D\\u062C\",\n  \"\\uFC18\",\n  \"\\u062D\\u0645\",\n  \"\\uFC19\",\n  \"\\u062E\\u062C\",\n  \"\\uFC1A\",\n  \"\\u062E\\u062D\",\n  \"\\uFC1B\",\n  \"\\u062E\\u0645\",\n  \"\\uFC1C\",\n  \"\\u0633\\u062C\",\n  \"\\uFC1D\",\n  \"\\u0633\\u062D\",\n  \"\\uFC1E\",\n  \"\\u0633\\u062E\",\n  \"\\uFC1F\",\n  \"\\u0633\\u0645\",\n  \"\\uFC20\",\n  \"\\u0635\\u062D\",\n  \"\\uFC21\",\n  \"\\u0635\\u0645\",\n  \"\\uFC22\",\n  \"\\u0636\\u062C\",\n  \"\\uFC23\",\n  \"\\u0636\\u062D\",\n  \"\\uFC24\",\n  \"\\u0636\\u062E\",\n  \"\\uFC25\",\n  \"\\u0636\\u0645\",\n  \"\\uFC26\",\n  \"\\u0637\\u062D\",\n  \"\\uFC27\",\n  \"\\u0637\\u0645\",\n  \"\\uFC28\",\n  \"\\u0638\\u0645\",\n  \"\\uFC29\",\n  \"\\u0639\\u062C\",\n  \"\\uFC2A\",\n  \"\\u0639\\u0645\",\n  \"\\uFC2B\",\n  \"\\u063A\\u062C\",\n  \"\\uFC2C\",\n  \"\\u063A\\u0645\",\n  \"\\uFC2D\",\n  \"\\u0641\\u062C\",\n  \"\\uFC2E\",\n  \"\\u0641\\u062D\",\n  \"\\uFC2F\",\n  \"\\u0641\\u062E\",\n  \"\\uFC30\",\n  \"\\u0641\\u0645\",\n  \"\\uFC31\",\n  \"\\u0641\\u0649\",\n  \"\\uFC32\",\n  \"\\u0641\\u064A\",\n  \"\\uFC33\",\n  \"\\u0642\\u062D\",\n  \"\\uFC34\",\n  \"\\u0642\\u0645\",\n  \"\\uFC35\",\n  \"\\u0642\\u0649\",\n  \"\\uFC36\",\n  \"\\u0642\\u064A\",\n  \"\\uFC37\",\n  \"\\u0643\\u0627\",\n  \"\\uFC38\",\n  \"\\u0643\\u062C\",\n  \"\\uFC39\",\n  \"\\u0643\\u062D\",\n  \"\\uFC3A\",\n  \"\\u0643\\u062E\",\n  \"\\uFC3B\",\n  \"\\u0643\\u0644\",\n  \"\\uFC3C\",\n  \"\\u0643\\u0645\",\n  \"\\uFC3D\",\n  \"\\u0643\\u0649\",\n  \"\\uFC3E\",\n  \"\\u0643\\u064A\",\n  \"\\uFC3F\",\n  \"\\u0644\\u062C\",\n  \"\\uFC40\",\n  \"\\u0644\\u062D\",\n  \"\\uFC41\",\n  \"\\u0644\\u062E\",\n  \"\\uFC42\",\n  \"\\u0644\\u0645\",\n  \"\\uFC43\",\n  \"\\u0644\\u0649\",\n  \"\\uFC44\",\n  \"\\u0644\\u064A\",\n  \"\\uFC45\",\n  \"\\u0645\\u062C\",\n  \"\\uFC46\",\n  \"\\u0645\\u062D\",\n  \"\\uFC47\",\n  \"\\u0645\\u062E\",\n  \"\\uFC48\",\n  \"\\u0645\\u0645\",\n  \"\\uFC49\",\n  \"\\u0645\\u0649\",\n  \"\\uFC4A\",\n  \"\\u0645\\u064A\",\n  \"\\uFC4B\",\n  \"\\u0646\\u062C\",\n  \"\\uFC4C\",\n  \"\\u0646\\u062D\",\n  \"\\uFC4D\",\n  \"\\u0646\\u062E\",\n  \"\\uFC4E\",\n  \"\\u0646\\u0645\",\n  \"\\uFC4F\",\n  \"\\u0646\\u0649\",\n  \"\\uFC50\",\n  \"\\u0646\\u064A\",\n  \"\\uFC51\",\n  \"\\u0647\\u062C\",\n  \"\\uFC52\",\n  \"\\u0647\\u0645\",\n  \"\\uFC53\",\n  \"\\u0647\\u0649\",\n  \"\\uFC54\",\n  \"\\u0647\\u064A\",\n  \"\\uFC55\",\n  \"\\u064A\\u062C\",\n  \"\\uFC56\",\n  \"\\u064A\\u062D\",\n  \"\\uFC57\",\n  \"\\u064A\\u062E\",\n  \"\\uFC58\",\n  \"\\u064A\\u0645\",\n  \"\\uFC59\",\n  \"\\u064A\\u0649\",\n  \"\\uFC5A\",\n  \"\\u064A\\u064A\",\n  \"\\uFC5B\",\n  \"\\u0630\\u0670\",\n  \"\\uFC5C\",\n  \"\\u0631\\u0670\",\n  \"\\uFC5D\",\n  \"\\u0649\\u0670\",\n  \"\\uFC5E\",\n  \"\\u0020\\u064C\\u0651\",\n  \"\\uFC5F\",\n  \"\\u0020\\u064D\\u0651\",\n  \"\\uFC60\",\n  \"\\u0020\\u064E\\u0651\",\n  \"\\uFC61\",\n  \"\\u0020\\u064F\\u0651\",\n  \"\\uFC62\",\n  \"\\u0020\\u0650\\u0651\",\n  \"\\uFC63\",\n  \"\\u0020\\u0651\\u0670\",\n  \"\\uFC64\",\n  \"\\u0626\\u0631\",\n  \"\\uFC65\",\n  \"\\u0626\\u0632\",\n  \"\\uFC66\",\n  \"\\u0626\\u0645\",\n  \"\\uFC67\",\n  \"\\u0626\\u0646\",\n  \"\\uFC68\",\n  \"\\u0626\\u0649\",\n  \"\\uFC69\",\n  \"\\u0626\\u064A\",\n  \"\\uFC6A\",\n  \"\\u0628\\u0631\",\n  \"\\uFC6B\",\n  \"\\u0628\\u0632\",\n  \"\\uFC6C\",\n  \"\\u0628\\u0645\",\n  \"\\uFC6D\",\n  \"\\u0628\\u0646\",\n  \"\\uFC6E\",\n  \"\\u0628\\u0649\",\n  \"\\uFC6F\",\n  \"\\u0628\\u064A\",\n  \"\\uFC70\",\n  \"\\u062A\\u0631\",\n  \"\\uFC71\",\n  \"\\u062A\\u0632\",\n  \"\\uFC72\",\n  \"\\u062A\\u0645\",\n  \"\\uFC73\",\n  \"\\u062A\\u0646\",\n  \"\\uFC74\",\n  \"\\u062A\\u0649\",\n  \"\\uFC75\",\n  \"\\u062A\\u064A\",\n  \"\\uFC76\",\n  \"\\u062B\\u0631\",\n  \"\\uFC77\",\n  \"\\u062B\\u0632\",\n  \"\\uFC78\",\n  \"\\u062B\\u0645\",\n  \"\\uFC79\",\n  \"\\u062B\\u0646\",\n  \"\\uFC7A\",\n  \"\\u062B\\u0649\",\n  \"\\uFC7B\",\n  \"\\u062B\\u064A\",\n  \"\\uFC7C\",\n  \"\\u0641\\u0649\",\n  \"\\uFC7D\",\n  \"\\u0641\\u064A\",\n  \"\\uFC7E\",\n  \"\\u0642\\u0649\",\n  \"\\uFC7F\",\n  \"\\u0642\\u064A\",\n  \"\\uFC80\",\n  \"\\u0643\\u0627\",\n  \"\\uFC81\",\n  \"\\u0643\\u0644\",\n  \"\\uFC82\",\n  \"\\u0643\\u0645\",\n  \"\\uFC83\",\n  \"\\u0643\\u0649\",\n  \"\\uFC84\",\n  \"\\u0643\\u064A\",\n  \"\\uFC85\",\n  \"\\u0644\\u0645\",\n  \"\\uFC86\",\n  \"\\u0644\\u0649\",\n  \"\\uFC87\",\n  \"\\u0644\\u064A\",\n  \"\\uFC88\",\n  \"\\u0645\\u0627\",\n  \"\\uFC89\",\n  \"\\u0645\\u0645\",\n  \"\\uFC8A\",\n  \"\\u0646\\u0631\",\n  \"\\uFC8B\",\n  \"\\u0646\\u0632\",\n  \"\\uFC8C\",\n  \"\\u0646\\u0645\",\n  \"\\uFC8D\",\n  \"\\u0646\\u0646\",\n  \"\\uFC8E\",\n  \"\\u0646\\u0649\",\n  \"\\uFC8F\",\n  \"\\u0646\\u064A\",\n  \"\\uFC90\",\n  \"\\u0649\\u0670\",\n  \"\\uFC91\",\n  \"\\u064A\\u0631\",\n  \"\\uFC92\",\n  \"\\u064A\\u0632\",\n  \"\\uFC93\",\n  \"\\u064A\\u0645\",\n  \"\\uFC94\",\n  \"\\u064A\\u0646\",\n  \"\\uFC95\",\n  \"\\u064A\\u0649\",\n  \"\\uFC96\",\n  \"\\u064A\\u064A\",\n  \"\\uFC97\",\n  \"\\u0626\\u062C\",\n  \"\\uFC98\",\n  \"\\u0626\\u062D\",\n  \"\\uFC99\",\n  \"\\u0626\\u062E\",\n  \"\\uFC9A\",\n  \"\\u0626\\u0645\",\n  \"\\uFC9B\",\n  \"\\u0626\\u0647\",\n  \"\\uFC9C\",\n  \"\\u0628\\u062C\",\n  \"\\uFC9D\",\n  \"\\u0628\\u062D\",\n  \"\\uFC9E\",\n  \"\\u0628\\u062E\",\n  \"\\uFC9F\",\n  \"\\u0628\\u0645\",\n  \"\\uFCA0\",\n  \"\\u0628\\u0647\",\n  \"\\uFCA1\",\n  \"\\u062A\\u062C\",\n  \"\\uFCA2\",\n  \"\\u062A\\u062D\",\n  \"\\uFCA3\",\n  \"\\u062A\\u062E\",\n  \"\\uFCA4\",\n  \"\\u062A\\u0645\",\n  \"\\uFCA5\",\n  \"\\u062A\\u0647\",\n  \"\\uFCA6\",\n  \"\\u062B\\u0645\",\n  \"\\uFCA7\",\n  \"\\u062C\\u062D\",\n  \"\\uFCA8\",\n  \"\\u062C\\u0645\",\n  \"\\uFCA9\",\n  \"\\u062D\\u062C\",\n  \"\\uFCAA\",\n  \"\\u062D\\u0645\",\n  \"\\uFCAB\",\n  \"\\u062E\\u062C\",\n  \"\\uFCAC\",\n  \"\\u062E\\u0645\",\n  \"\\uFCAD\",\n  \"\\u0633\\u062C\",\n  \"\\uFCAE\",\n  \"\\u0633\\u062D\",\n  \"\\uFCAF\",\n  \"\\u0633\\u062E\",\n  \"\\uFCB0\",\n  \"\\u0633\\u0645\",\n  \"\\uFCB1\",\n  \"\\u0635\\u062D\",\n  \"\\uFCB2\",\n  \"\\u0635\\u062E\",\n  \"\\uFCB3\",\n  \"\\u0635\\u0645\",\n  \"\\uFCB4\",\n  \"\\u0636\\u062C\",\n  \"\\uFCB5\",\n  \"\\u0636\\u062D\",\n  \"\\uFCB6\",\n  \"\\u0636\\u062E\",\n  \"\\uFCB7\",\n  \"\\u0636\\u0645\",\n  \"\\uFCB8\",\n  \"\\u0637\\u062D\",\n  \"\\uFCB9\",\n  \"\\u0638\\u0645\",\n  \"\\uFCBA\",\n  \"\\u0639\\u062C\",\n  \"\\uFCBB\",\n  \"\\u0639\\u0645\",\n  \"\\uFCBC\",\n  \"\\u063A\\u062C\",\n  \"\\uFCBD\",\n  \"\\u063A\\u0645\",\n  \"\\uFCBE\",\n  \"\\u0641\\u062C\",\n  \"\\uFCBF\",\n  \"\\u0641\\u062D\",\n  \"\\uFCC0\",\n  \"\\u0641\\u062E\",\n  \"\\uFCC1\",\n  \"\\u0641\\u0645\",\n  \"\\uFCC2\",\n  \"\\u0642\\u062D\",\n  \"\\uFCC3\",\n  \"\\u0642\\u0645\",\n  \"\\uFCC4\",\n  \"\\u0643\\u062C\",\n  \"\\uFCC5\",\n  \"\\u0643\\u062D\",\n  \"\\uFCC6\",\n  \"\\u0643\\u062E\",\n  \"\\uFCC7\",\n  \"\\u0643\\u0644\",\n  \"\\uFCC8\",\n  \"\\u0643\\u0645\",\n  \"\\uFCC9\",\n  \"\\u0644\\u062C\",\n  \"\\uFCCA\",\n  \"\\u0644\\u062D\",\n  \"\\uFCCB\",\n  \"\\u0644\\u062E\",\n  \"\\uFCCC\",\n  \"\\u0644\\u0645\",\n  \"\\uFCCD\",\n  \"\\u0644\\u0647\",\n  \"\\uFCCE\",\n  \"\\u0645\\u062C\",\n  \"\\uFCCF\",\n  \"\\u0645\\u062D\",\n  \"\\uFCD0\",\n  \"\\u0645\\u062E\",\n  \"\\uFCD1\",\n  \"\\u0645\\u0645\",\n  \"\\uFCD2\",\n  \"\\u0646\\u062C\",\n  \"\\uFCD3\",\n  \"\\u0646\\u062D\",\n  \"\\uFCD4\",\n  \"\\u0646\\u062E\",\n  \"\\uFCD5\",\n  \"\\u0646\\u0645\",\n  \"\\uFCD6\",\n  \"\\u0646\\u0647\",\n  \"\\uFCD7\",\n  \"\\u0647\\u062C\",\n  \"\\uFCD8\",\n  \"\\u0647\\u0645\",\n  \"\\uFCD9\",\n  \"\\u0647\\u0670\",\n  \"\\uFCDA\",\n  \"\\u064A\\u062C\",\n  \"\\uFCDB\",\n  \"\\u064A\\u062D\",\n  \"\\uFCDC\",\n  \"\\u064A\\u062E\",\n  \"\\uFCDD\",\n  \"\\u064A\\u0645\",\n  \"\\uFCDE\",\n  \"\\u064A\\u0647\",\n  \"\\uFCDF\",\n  \"\\u0626\\u0645\",\n  \"\\uFCE0\",\n  \"\\u0626\\u0647\",\n  \"\\uFCE1\",\n  \"\\u0628\\u0645\",\n  \"\\uFCE2\",\n  \"\\u0628\\u0647\",\n  \"\\uFCE3\",\n  \"\\u062A\\u0645\",\n  \"\\uFCE4\",\n  \"\\u062A\\u0647\",\n  \"\\uFCE5\",\n  \"\\u062B\\u0645\",\n  \"\\uFCE6\",\n  \"\\u062B\\u0647\",\n  \"\\uFCE7\",\n  \"\\u0633\\u0645\",\n  \"\\uFCE8\",\n  \"\\u0633\\u0647\",\n  \"\\uFCE9\",\n  \"\\u0634\\u0645\",\n  \"\\uFCEA\",\n  \"\\u0634\\u0647\",\n  \"\\uFCEB\",\n  \"\\u0643\\u0644\",\n  \"\\uFCEC\",\n  \"\\u0643\\u0645\",\n  \"\\uFCED\",\n  \"\\u0644\\u0645\",\n  \"\\uFCEE\",\n  \"\\u0646\\u0645\",\n  \"\\uFCEF\",\n  \"\\u0646\\u0647\",\n  \"\\uFCF0\",\n  \"\\u064A\\u0645\",\n  \"\\uFCF1\",\n  \"\\u064A\\u0647\",\n  \"\\uFCF2\",\n  \"\\u0640\\u064E\\u0651\",\n  \"\\uFCF3\",\n  \"\\u0640\\u064F\\u0651\",\n  \"\\uFCF4\",\n  \"\\u0640\\u0650\\u0651\",\n  \"\\uFCF5\",\n  \"\\u0637\\u0649\",\n  \"\\uFCF6\",\n  \"\\u0637\\u064A\",\n  \"\\uFCF7\",\n  \"\\u0639\\u0649\",\n  \"\\uFCF8\",\n  \"\\u0639\\u064A\",\n  \"\\uFCF9\",\n  \"\\u063A\\u0649\",\n  \"\\uFCFA\",\n  \"\\u063A\\u064A\",\n  \"\\uFCFB\",\n  \"\\u0633\\u0649\",\n  \"\\uFCFC\",\n  \"\\u0633\\u064A\",\n  \"\\uFCFD\",\n  \"\\u0634\\u0649\",\n  \"\\uFCFE\",\n  \"\\u0634\\u064A\",\n  \"\\uFCFF\",\n  \"\\u062D\\u0649\",\n  \"\\uFD00\",\n  \"\\u062D\\u064A\",\n  \"\\uFD01\",\n  \"\\u062C\\u0649\",\n  \"\\uFD02\",\n  \"\\u062C\\u064A\",\n  \"\\uFD03\",\n  \"\\u062E\\u0649\",\n  \"\\uFD04\",\n  \"\\u062E\\u064A\",\n  \"\\uFD05\",\n  \"\\u0635\\u0649\",\n  \"\\uFD06\",\n  \"\\u0635\\u064A\",\n  \"\\uFD07\",\n  \"\\u0636\\u0649\",\n  \"\\uFD08\",\n  \"\\u0636\\u064A\",\n  \"\\uFD09\",\n  \"\\u0634\\u062C\",\n  \"\\uFD0A\",\n  \"\\u0634\\u062D\",\n  \"\\uFD0B\",\n  \"\\u0634\\u062E\",\n  \"\\uFD0C\",\n  \"\\u0634\\u0645\",\n  \"\\uFD0D\",\n  \"\\u0634\\u0631\",\n  \"\\uFD0E\",\n  \"\\u0633\\u0631\",\n  \"\\uFD0F\",\n  \"\\u0635\\u0631\",\n  \"\\uFD10\",\n  \"\\u0636\\u0631\",\n  \"\\uFD11\",\n  \"\\u0637\\u0649\",\n  \"\\uFD12\",\n  \"\\u0637\\u064A\",\n  \"\\uFD13\",\n  \"\\u0639\\u0649\",\n  \"\\uFD14\",\n  \"\\u0639\\u064A\",\n  \"\\uFD15\",\n  \"\\u063A\\u0649\",\n  \"\\uFD16\",\n  \"\\u063A\\u064A\",\n  \"\\uFD17\",\n  \"\\u0633\\u0649\",\n  \"\\uFD18\",\n  \"\\u0633\\u064A\",\n  \"\\uFD19\",\n  \"\\u0634\\u0649\",\n  \"\\uFD1A\",\n  \"\\u0634\\u064A\",\n  \"\\uFD1B\",\n  \"\\u062D\\u0649\",\n  \"\\uFD1C\",\n  \"\\u062D\\u064A\",\n  \"\\uFD1D\",\n  \"\\u062C\\u0649\",\n  \"\\uFD1E\",\n  \"\\u062C\\u064A\",\n  \"\\uFD1F\",\n  \"\\u062E\\u0649\",\n  \"\\uFD20\",\n  \"\\u062E\\u064A\",\n  \"\\uFD21\",\n  \"\\u0635\\u0649\",\n  \"\\uFD22\",\n  \"\\u0635\\u064A\",\n  \"\\uFD23\",\n  \"\\u0636\\u0649\",\n  \"\\uFD24\",\n  \"\\u0636\\u064A\",\n  \"\\uFD25\",\n  \"\\u0634\\u062C\",\n  \"\\uFD26\",\n  \"\\u0634\\u062D\",\n  \"\\uFD27\",\n  \"\\u0634\\u062E\",\n  \"\\uFD28\",\n  \"\\u0634\\u0645\",\n  \"\\uFD29\",\n  \"\\u0634\\u0631\",\n  \"\\uFD2A\",\n  \"\\u0633\\u0631\",\n  \"\\uFD2B\",\n  \"\\u0635\\u0631\",\n  \"\\uFD2C\",\n  \"\\u0636\\u0631\",\n  \"\\uFD2D\",\n  \"\\u0634\\u062C\",\n  \"\\uFD2E\",\n  \"\\u0634\\u062D\",\n  \"\\uFD2F\",\n  \"\\u0634\\u062E\",\n  \"\\uFD30\",\n  \"\\u0634\\u0645\",\n  \"\\uFD31\",\n  \"\\u0633\\u0647\",\n  \"\\uFD32\",\n  \"\\u0634\\u0647\",\n  \"\\uFD33\",\n  \"\\u0637\\u0645\",\n  \"\\uFD34\",\n  \"\\u0633\\u062C\",\n  \"\\uFD35\",\n  \"\\u0633\\u062D\",\n  \"\\uFD36\",\n  \"\\u0633\\u062E\",\n  \"\\uFD37\",\n  \"\\u0634\\u062C\",\n  \"\\uFD38\",\n  \"\\u0634\\u062D\",\n  \"\\uFD39\",\n  \"\\u0634\\u062E\",\n  \"\\uFD3A\",\n  \"\\u0637\\u0645\",\n  \"\\uFD3B\",\n  \"\\u0638\\u0645\",\n  \"\\uFD3C\",\n  \"\\u0627\\u064B\",\n  \"\\uFD3D\",\n  \"\\u0627\\u064B\",\n  \"\\uFD50\",\n  \"\\u062A\\u062C\\u0645\",\n  \"\\uFD51\",\n  \"\\u062A\\u062D\\u062C\",\n  \"\\uFD52\",\n  \"\\u062A\\u062D\\u062C\",\n  \"\\uFD53\",\n  \"\\u062A\\u062D\\u0645\",\n  \"\\uFD54\",\n  \"\\u062A\\u062E\\u0645\",\n  \"\\uFD55\",\n  \"\\u062A\\u0645\\u062C\",\n  \"\\uFD56\",\n  \"\\u062A\\u0645\\u062D\",\n  \"\\uFD57\",\n  \"\\u062A\\u0645\\u062E\",\n  \"\\uFD58\",\n  \"\\u062C\\u0645\\u062D\",\n  \"\\uFD59\",\n  \"\\u062C\\u0645\\u062D\",\n  \"\\uFD5A\",\n  \"\\u062D\\u0645\\u064A\",\n  \"\\uFD5B\",\n  \"\\u062D\\u0645\\u0649\",\n  \"\\uFD5C\",\n  \"\\u0633\\u062D\\u062C\",\n  \"\\uFD5D\",\n  \"\\u0633\\u062C\\u062D\",\n  \"\\uFD5E\",\n  \"\\u0633\\u062C\\u0649\",\n  \"\\uFD5F\",\n  \"\\u0633\\u0645\\u062D\",\n  \"\\uFD60\",\n  \"\\u0633\\u0645\\u062D\",\n  \"\\uFD61\",\n  \"\\u0633\\u0645\\u062C\",\n  \"\\uFD62\",\n  \"\\u0633\\u0645\\u0645\",\n  \"\\uFD63\",\n  \"\\u0633\\u0645\\u0645\",\n  \"\\uFD64\",\n  \"\\u0635\\u062D\\u062D\",\n  \"\\uFD65\",\n  \"\\u0635\\u062D\\u062D\",\n  \"\\uFD66\",\n  \"\\u0635\\u0645\\u0645\",\n  \"\\uFD67\",\n  \"\\u0634\\u062D\\u0645\",\n  \"\\uFD68\",\n  \"\\u0634\\u062D\\u0645\",\n  \"\\uFD69\",\n  \"\\u0634\\u062C\\u064A\",\n  \"\\uFD6A\",\n  \"\\u0634\\u0645\\u062E\",\n  \"\\uFD6B\",\n  \"\\u0634\\u0645\\u062E\",\n  \"\\uFD6C\",\n  \"\\u0634\\u0645\\u0645\",\n  \"\\uFD6D\",\n  \"\\u0634\\u0645\\u0645\",\n  \"\\uFD6E\",\n  \"\\u0636\\u062D\\u0649\",\n  \"\\uFD6F\",\n  \"\\u0636\\u062E\\u0645\",\n  \"\\uFD70\",\n  \"\\u0636\\u062E\\u0645\",\n  \"\\uFD71\",\n  \"\\u0637\\u0645\\u062D\",\n  \"\\uFD72\",\n  \"\\u0637\\u0645\\u062D\",\n  \"\\uFD73\",\n  \"\\u0637\\u0645\\u0645\",\n  \"\\uFD74\",\n  \"\\u0637\\u0645\\u064A\",\n  \"\\uFD75\",\n  \"\\u0639\\u062C\\u0645\",\n  \"\\uFD76\",\n  \"\\u0639\\u0645\\u0645\",\n  \"\\uFD77\",\n  \"\\u0639\\u0645\\u0645\",\n  \"\\uFD78\",\n  \"\\u0639\\u0645\\u0649\",\n  \"\\uFD79\",\n  \"\\u063A\\u0645\\u0645\",\n  \"\\uFD7A\",\n  \"\\u063A\\u0645\\u064A\",\n  \"\\uFD7B\",\n  \"\\u063A\\u0645\\u0649\",\n  \"\\uFD7C\",\n  \"\\u0641\\u062E\\u0645\",\n  \"\\uFD7D\",\n  \"\\u0641\\u062E\\u0645\",\n  \"\\uFD7E\",\n  \"\\u0642\\u0645\\u062D\",\n  \"\\uFD7F\",\n  \"\\u0642\\u0645\\u0645\",\n  \"\\uFD80\",\n  \"\\u0644\\u062D\\u0645\",\n  \"\\uFD81\",\n  \"\\u0644\\u062D\\u064A\",\n  \"\\uFD82\",\n  \"\\u0644\\u062D\\u0649\",\n  \"\\uFD83\",\n  \"\\u0644\\u062C\\u062C\",\n  \"\\uFD84\",\n  \"\\u0644\\u062C\\u062C\",\n  \"\\uFD85\",\n  \"\\u0644\\u062E\\u0645\",\n  \"\\uFD86\",\n  \"\\u0644\\u062E\\u0645\",\n  \"\\uFD87\",\n  \"\\u0644\\u0645\\u062D\",\n  \"\\uFD88\",\n  \"\\u0644\\u0645\\u062D\",\n  \"\\uFD89\",\n  \"\\u0645\\u062D\\u062C\",\n  \"\\uFD8A\",\n  \"\\u0645\\u062D\\u0645\",\n  \"\\uFD8B\",\n  \"\\u0645\\u062D\\u064A\",\n  \"\\uFD8C\",\n  \"\\u0645\\u062C\\u062D\",\n  \"\\uFD8D\",\n  \"\\u0645\\u062C\\u0645\",\n  \"\\uFD8E\",\n  \"\\u0645\\u062E\\u062C\",\n  \"\\uFD8F\",\n  \"\\u0645\\u062E\\u0645\",\n  \"\\uFD92\",\n  \"\\u0645\\u062C\\u062E\",\n  \"\\uFD93\",\n  \"\\u0647\\u0645\\u062C\",\n  \"\\uFD94\",\n  \"\\u0647\\u0645\\u0645\",\n  \"\\uFD95\",\n  \"\\u0646\\u062D\\u0645\",\n  \"\\uFD96\",\n  \"\\u0646\\u062D\\u0649\",\n  \"\\uFD97\",\n  \"\\u0646\\u062C\\u0645\",\n  \"\\uFD98\",\n  \"\\u0646\\u062C\\u0645\",\n  \"\\uFD99\",\n  \"\\u0646\\u062C\\u0649\",\n  \"\\uFD9A\",\n  \"\\u0646\\u0645\\u064A\",\n  \"\\uFD9B\",\n  \"\\u0646\\u0645\\u0649\",\n  \"\\uFD9C\",\n  \"\\u064A\\u0645\\u0645\",\n  \"\\uFD9D\",\n  \"\\u064A\\u0645\\u0645\",\n  \"\\uFD9E\",\n  \"\\u0628\\u062E\\u064A\",\n  \"\\uFD9F\",\n  \"\\u062A\\u062C\\u064A\",\n  \"\\uFDA0\",\n  \"\\u062A\\u062C\\u0649\",\n  \"\\uFDA1\",\n  \"\\u062A\\u062E\\u064A\",\n  \"\\uFDA2\",\n  \"\\u062A\\u062E\\u0649\",\n  \"\\uFDA3\",\n  \"\\u062A\\u0645\\u064A\",\n  \"\\uFDA4\",\n  \"\\u062A\\u0645\\u0649\",\n  \"\\uFDA5\",\n  \"\\u062C\\u0645\\u064A\",\n  \"\\uFDA6\",\n  \"\\u062C\\u062D\\u0649\",\n  \"\\uFDA7\",\n  \"\\u062C\\u0645\\u0649\",\n  \"\\uFDA8\",\n  \"\\u0633\\u062E\\u0649\",\n  \"\\uFDA9\",\n  \"\\u0635\\u062D\\u064A\",\n  \"\\uFDAA\",\n  \"\\u0634\\u062D\\u064A\",\n  \"\\uFDAB\",\n  \"\\u0636\\u062D\\u064A\",\n  \"\\uFDAC\",\n  \"\\u0644\\u062C\\u064A\",\n  \"\\uFDAD\",\n  \"\\u0644\\u0645\\u064A\",\n  \"\\uFDAE\",\n  \"\\u064A\\u062D\\u064A\",\n  \"\\uFDAF\",\n  \"\\u064A\\u062C\\u064A\",\n  \"\\uFDB0\",\n  \"\\u064A\\u0645\\u064A\",\n  \"\\uFDB1\",\n  \"\\u0645\\u0645\\u064A\",\n  \"\\uFDB2\",\n  \"\\u0642\\u0645\\u064A\",\n  \"\\uFDB3\",\n  \"\\u0646\\u062D\\u064A\",\n  \"\\uFDB4\",\n  \"\\u0642\\u0645\\u062D\",\n  \"\\uFDB5\",\n  \"\\u0644\\u062D\\u0645\",\n  \"\\uFDB6\",\n  \"\\u0639\\u0645\\u064A\",\n  \"\\uFDB7\",\n  \"\\u0643\\u0645\\u064A\",\n  \"\\uFDB8\",\n  \"\\u0646\\u062C\\u062D\",\n  \"\\uFDB9\",\n  \"\\u0645\\u062E\\u064A\",\n  \"\\uFDBA\",\n  \"\\u0644\\u062C\\u0645\",\n  \"\\uFDBB\",\n  \"\\u0643\\u0645\\u0645\",\n  \"\\uFDBC\",\n  \"\\u0644\\u062C\\u0645\",\n  \"\\uFDBD\",\n  \"\\u0646\\u062C\\u062D\",\n  \"\\uFDBE\",\n  \"\\u062C\\u062D\\u064A\",\n  \"\\uFDBF\",\n  \"\\u062D\\u062C\\u064A\",\n  \"\\uFDC0\",\n  \"\\u0645\\u062C\\u064A\",\n  \"\\uFDC1\",\n  \"\\u0641\\u0645\\u064A\",\n  \"\\uFDC2\",\n  \"\\u0628\\u062D\\u064A\",\n  \"\\uFDC3\",\n  \"\\u0643\\u0645\\u0645\",\n  \"\\uFDC4\",\n  \"\\u0639\\u062C\\u0645\",\n  \"\\uFDC5\",\n  \"\\u0635\\u0645\\u0645\",\n  \"\\uFDC6\",\n  \"\\u0633\\u062E\\u064A\",\n  \"\\uFDC7\",\n  \"\\u0646\\u062C\\u064A\",\n  \"\\uFE49\",\n  \"\\u203E\",\n  \"\\uFE4A\",\n  \"\\u203E\",\n  \"\\uFE4B\",\n  \"\\u203E\",\n  \"\\uFE4C\",\n  \"\\u203E\",\n  \"\\uFE4D\",\n  \"\\u005F\",\n  \"\\uFE4E\",\n  \"\\u005F\",\n  \"\\uFE4F\",\n  \"\\u005F\",\n  \"\\uFE80\",\n  \"\\u0621\",\n  \"\\uFE81\",\n  \"\\u0622\",\n  \"\\uFE82\",\n  \"\\u0622\",\n  \"\\uFE83\",\n  \"\\u0623\",\n  \"\\uFE84\",\n  \"\\u0623\",\n  \"\\uFE85\",\n  \"\\u0624\",\n  \"\\uFE86\",\n  \"\\u0624\",\n  \"\\uFE87\",\n  \"\\u0625\",\n  \"\\uFE88\",\n  \"\\u0625\",\n  \"\\uFE89\",\n  \"\\u0626\",\n  \"\\uFE8A\",\n  \"\\u0626\",\n  \"\\uFE8B\",\n  \"\\u0626\",\n  \"\\uFE8C\",\n  \"\\u0626\",\n  \"\\uFE8D\",\n  \"\\u0627\",\n  \"\\uFE8E\",\n  \"\\u0627\",\n  \"\\uFE8F\",\n  \"\\u0628\",\n  \"\\uFE90\",\n  \"\\u0628\",\n  \"\\uFE91\",\n  \"\\u0628\",\n  \"\\uFE92\",\n  \"\\u0628\",\n  \"\\uFE93\",\n  \"\\u0629\",\n  \"\\uFE94\",\n  \"\\u0629\",\n  \"\\uFE95\",\n  \"\\u062A\",\n  \"\\uFE96\",\n  \"\\u062A\",\n  \"\\uFE97\",\n  \"\\u062A\",\n  \"\\uFE98\",\n  \"\\u062A\",\n  \"\\uFE99\",\n  \"\\u062B\",\n  \"\\uFE9A\",\n  \"\\u062B\",\n  \"\\uFE9B\",\n  \"\\u062B\",\n  \"\\uFE9C\",\n  \"\\u062B\",\n  \"\\uFE9D\",\n  \"\\u062C\",\n  \"\\uFE9E\",\n  \"\\u062C\",\n  \"\\uFE9F\",\n  \"\\u062C\",\n  \"\\uFEA0\",\n  \"\\u062C\",\n  \"\\uFEA1\",\n  \"\\u062D\",\n  \"\\uFEA2\",\n  \"\\u062D\",\n  \"\\uFEA3\",\n  \"\\u062D\",\n  \"\\uFEA4\",\n  \"\\u062D\",\n  \"\\uFEA5\",\n  \"\\u062E\",\n  \"\\uFEA6\",\n  \"\\u062E\",\n  \"\\uFEA7\",\n  \"\\u062E\",\n  \"\\uFEA8\",\n  \"\\u062E\",\n  \"\\uFEA9\",\n  \"\\u062F\",\n  \"\\uFEAA\",\n  \"\\u062F\",\n  \"\\uFEAB\",\n  \"\\u0630\",\n  \"\\uFEAC\",\n  \"\\u0630\",\n  \"\\uFEAD\",\n  \"\\u0631\",\n  \"\\uFEAE\",\n  \"\\u0631\",\n  \"\\uFEAF\",\n  \"\\u0632\",\n  \"\\uFEB0\",\n  \"\\u0632\",\n  \"\\uFEB1\",\n  \"\\u0633\",\n  \"\\uFEB2\",\n  \"\\u0633\",\n  \"\\uFEB3\",\n  \"\\u0633\",\n  \"\\uFEB4\",\n  \"\\u0633\",\n  \"\\uFEB5\",\n  \"\\u0634\",\n  \"\\uFEB6\",\n  \"\\u0634\",\n  \"\\uFEB7\",\n  \"\\u0634\",\n  \"\\uFEB8\",\n  \"\\u0634\",\n  \"\\uFEB9\",\n  \"\\u0635\",\n  \"\\uFEBA\",\n  \"\\u0635\",\n  \"\\uFEBB\",\n  \"\\u0635\",\n  \"\\uFEBC\",\n  \"\\u0635\",\n  \"\\uFEBD\",\n  \"\\u0636\",\n  \"\\uFEBE\",\n  \"\\u0636\",\n  \"\\uFEBF\",\n  \"\\u0636\",\n  \"\\uFEC0\",\n  \"\\u0636\",\n  \"\\uFEC1\",\n  \"\\u0637\",\n  \"\\uFEC2\",\n  \"\\u0637\",\n  \"\\uFEC3\",\n  \"\\u0637\",\n  \"\\uFEC4\",\n  \"\\u0637\",\n  \"\\uFEC5\",\n  \"\\u0638\",\n  \"\\uFEC6\",\n  \"\\u0638\",\n  \"\\uFEC7\",\n  \"\\u0638\",\n  \"\\uFEC8\",\n  \"\\u0638\",\n  \"\\uFEC9\",\n  \"\\u0639\",\n  \"\\uFECA\",\n  \"\\u0639\",\n  \"\\uFECB\",\n  \"\\u0639\",\n  \"\\uFECC\",\n  \"\\u0639\",\n  \"\\uFECD\",\n  \"\\u063A\",\n  \"\\uFECE\",\n  \"\\u063A\",\n  \"\\uFECF\",\n  \"\\u063A\",\n  \"\\uFED0\",\n  \"\\u063A\",\n  \"\\uFED1\",\n  \"\\u0641\",\n  \"\\uFED2\",\n  \"\\u0641\",\n  \"\\uFED3\",\n  \"\\u0641\",\n  \"\\uFED4\",\n  \"\\u0641\",\n  \"\\uFED5\",\n  \"\\u0642\",\n  \"\\uFED6\",\n  \"\\u0642\",\n  \"\\uFED7\",\n  \"\\u0642\",\n  \"\\uFED8\",\n  \"\\u0642\",\n  \"\\uFED9\",\n  \"\\u0643\",\n  \"\\uFEDA\",\n  \"\\u0643\",\n  \"\\uFEDB\",\n  \"\\u0643\",\n  \"\\uFEDC\",\n  \"\\u0643\",\n  \"\\uFEDD\",\n  \"\\u0644\",\n  \"\\uFEDE\",\n  \"\\u0644\",\n  \"\\uFEDF\",\n  \"\\u0644\",\n  \"\\uFEE0\",\n  \"\\u0644\",\n  \"\\uFEE1\",\n  \"\\u0645\",\n  \"\\uFEE2\",\n  \"\\u0645\",\n  \"\\uFEE3\",\n  \"\\u0645\",\n  \"\\uFEE4\",\n  \"\\u0645\",\n  \"\\uFEE5\",\n  \"\\u0646\",\n  \"\\uFEE6\",\n  \"\\u0646\",\n  \"\\uFEE7\",\n  \"\\u0646\",\n  \"\\uFEE8\",\n  \"\\u0646\",\n  \"\\uFEE9\",\n  \"\\u0647\",\n  \"\\uFEEA\",\n  \"\\u0647\",\n  \"\\uFEEB\",\n  \"\\u0647\",\n  \"\\uFEEC\",\n  \"\\u0647\",\n  \"\\uFEED\",\n  \"\\u0648\",\n  \"\\uFEEE\",\n  \"\\u0648\",\n  \"\\uFEEF\",\n  \"\\u0649\",\n  \"\\uFEF0\",\n  \"\\u0649\",\n  \"\\uFEF1\",\n  \"\\u064A\",\n  \"\\uFEF2\",\n  \"\\u064A\",\n  \"\\uFEF3\",\n  \"\\u064A\",\n  \"\\uFEF4\",\n  \"\\u064A\",\n  \"\\uFEF5\",\n  \"\\u0644\\u0622\",\n  \"\\uFEF6\",\n  \"\\u0644\\u0622\",\n  \"\\uFEF7\",\n  \"\\u0644\\u0623\",\n  \"\\uFEF8\",\n  \"\\u0644\\u0623\",\n  \"\\uFEF9\",\n  \"\\u0644\\u0625\",\n  \"\\uFEFA\",\n  \"\\u0644\\u0625\",\n  \"\\uFEFB\",\n  \"\\u0644\\u0627\",\n  \"\\uFEFC\",\n  \"\\u0644\\u0627\"\n ];\n});\nfunction reverseIfRtl(chars) {\n const charsLength = chars.length;\n if (charsLength <= 1 || !isRTLRangeFor(chars.charCodeAt(0))) {\n  return chars;\n }\n const buf = [];\n for (let ii = charsLength - 1; ii >= 0; ii--) {\n  buf.push(chars[ii]);\n }\n return buf.join(\"\");\n}\nconst SpecialCharRegExp = new RegExp(\"^(\\\\s)|(\\\\p{Mn})|(\\\\p{Cf})$\", \"u\");\nconst CategoryCache = new Map();\nfunction getCharUnicodeCategory(char) {\n const cachedCategory = CategoryCache.get(char);\n if (cachedCategory) {\n  return cachedCategory;\n }\n const groups = char.match(SpecialCharRegExp);\n const category = {\n  isWhitespace: !!(groups && groups[1]),\n  isZeroWidthDiacritic: !!(groups && groups[2]),\n  isInvisibleFormatMark: !!(groups && groups[3])\n };\n CategoryCache.set(char, category);\n return category;\n}\nfunction clearUnicodeCaches() {\n CategoryCache.clear();\n}\n\n\n/***/ }),\n/* 22 */\n/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {\n\n\n\nObject.defineProperty(exports, \"__esModule\", ({\n  value: true\n}));\nexports.MarkupAnnotation = exports.AnnotationFactory = exports.AnnotationBorderStyle = exports.Annotation = void 0;\nexports.getQuadPoints = getQuadPoints;\n\nvar _util = __w_pdfjs_require__(2);\n\nvar _core_utils = __w_pdfjs_require__(8);\n\nvar _default_appearance = __w_pdfjs_require__(23);\n\nvar _primitives = __w_pdfjs_require__(5);\n\nvar _base_stream = __w_pdfjs_require__(9);\n\nvar _bidi = __w_pdfjs_require__(60);\n\nvar _catalog = __w_pdfjs_require__(64);\n\nvar _colorspace = __w_pdfjs_require__(24);\n\nvar _file_spec = __w_pdfjs_require__(67);\n\nvar _object_loader = __w_pdfjs_require__(71);\n\nvar _operator_list = __w_pdfjs_require__(62);\n\nvar _stream = __w_pdfjs_require__(10);\n\nvar _writer = __w_pdfjs_require__(72);\n\nvar _factory = __w_pdfjs_require__(75);\n\nclass AnnotationFactory {\n  static create(xref, ref, pdfManager, idFactory, collectFields) {\n    return Promise.all([pdfManager.ensureCatalog(\"acroForm\"), collectFields ? this._getPageIndex(xref, ref, pdfManager) : -1]).then(([acroForm, pageIndex]) => pdfManager.ensure(this, \"_create\", [xref, ref, pdfManager, idFactory, acroForm, collectFields, pageIndex]));\n  }\n\n  static _create(xref, ref, pdfManager, idFactory, acroForm, collectFields, pageIndex = -1) {\n    const dict = xref.fetchIfRef(ref);\n\n    if (!(dict instanceof _primitives.Dict)) {\n      return undefined;\n    }\n\n    const id = ref instanceof _primitives.Ref ? ref.toString() : `annot_${idFactory.createObjId()}`;\n    let subtype = dict.get(\"Subtype\");\n    subtype = subtype instanceof _primitives.Name ? subtype.name : null;\n    const parameters = {\n      xref,\n      ref,\n      dict,\n      subtype,\n      id,\n      pdfManager,\n      acroForm: acroForm instanceof _primitives.Dict ? acroForm : _primitives.Dict.empty,\n      collectFields,\n      pageIndex\n    };\n\n    switch (subtype) {\n      case \"Link\":\n        return new LinkAnnotation(parameters);\n\n      case \"Text\":\n        return new TextAnnotation(parameters);\n\n      case \"Widget\":\n        let fieldType = (0, _core_utils.getInheritableProperty)({\n          dict,\n          key: \"FT\"\n        });\n        fieldType = fieldType instanceof _primitives.Name ? fieldType.name : null;\n\n        switch (fieldType) {\n          case \"Tx\":\n            return new TextWidgetAnnotation(parameters);\n\n          case \"Btn\":\n            return new ButtonWidgetAnnotation(parameters);\n\n          case \"Ch\":\n            return new ChoiceWidgetAnnotation(parameters);\n\n          case \"Sig\":\n            return new SignatureWidgetAnnotation(parameters);\n        }\n\n        (0, _util.warn)(`Unimplemented widget field type \"${fieldType}\", ` + \"falling back to base field type.\");\n        return new WidgetAnnotation(parameters);\n\n      case \"Popup\":\n        return new PopupAnnotation(parameters);\n\n      case \"FreeText\":\n        return new FreeTextAnnotation(parameters);\n\n      case \"Line\":\n        return new LineAnnotation(parameters);\n\n      case \"Square\":\n        return new SquareAnnotation(parameters);\n\n      case \"Circle\":\n        return new CircleAnnotation(parameters);\n\n      case \"PolyLine\":\n        return new PolylineAnnotation(parameters);\n\n      case \"Polygon\":\n        return new PolygonAnnotation(parameters);\n\n      case \"Caret\":\n        return new CaretAnnotation(parameters);\n\n      case \"Ink\":\n        return new InkAnnotation(parameters);\n\n      case \"Highlight\":\n        return new HighlightAnnotation(parameters);\n\n      case \"Underline\":\n        return new UnderlineAnnotation(parameters);\n\n      case \"Squiggly\":\n        return new SquigglyAnnotation(parameters);\n\n      case \"StrikeOut\":\n        return new StrikeOutAnnotation(parameters);\n\n      case \"Stamp\":\n        return new StampAnnotation(parameters);\n\n      case \"FileAttachment\":\n        return new FileAttachmentAnnotation(parameters);\n\n      default:\n        if (!collectFields) {\n          if (!subtype) {\n            (0, _util.warn)(\"Annotation is missing the required /Subtype.\");\n          } else {\n            (0, _util.warn)(`Unimplemented annotation type \"${subtype}\", ` + \"falling back to base annotation.\");\n          }\n        }\n\n        return new Annotation(parameters);\n    }\n  }\n\n  static async _getPageIndex(xref, ref, pdfManager) {\n    try {\n      const annotDict = await xref.fetchIfRefAsync(ref);\n\n      if (!(annotDict instanceof _primitives.Dict)) {\n        return -1;\n      }\n\n      const pageRef = annotDict.getRaw(\"P\");\n\n      if (!(pageRef instanceof _primitives.Ref)) {\n        return -1;\n      }\n\n      const pageIndex = await pdfManager.ensureCatalog(\"getPageIndex\", [pageRef]);\n      return pageIndex;\n    } catch (ex) {\n      (0, _util.warn)(`_getPageIndex: \"${ex}\".`);\n      return -1;\n    }\n  }\n\n}\n\nexports.AnnotationFactory = AnnotationFactory;\n\nfunction getRgbColor(color, defaultColor = new Uint8ClampedArray(3)) {\n  if (!Array.isArray(color)) {\n    return defaultColor;\n  }\n\n  const rgbColor = defaultColor || new Uint8ClampedArray(3);\n\n  switch (color.length) {\n    case 0:\n      return null;\n\n    case 1:\n      _colorspace.ColorSpace.singletons.gray.getRgbItem(color, 0, rgbColor, 0);\n\n      return rgbColor;\n\n    case 3:\n      _colorspace.ColorSpace.singletons.rgb.getRgbItem(color, 0, rgbColor, 0);\n\n      return rgbColor;\n\n    case 4:\n      _colorspace.ColorSpace.singletons.cmyk.getRgbItem(color, 0, rgbColor, 0);\n\n      return rgbColor;\n\n    default:\n      return defaultColor;\n  }\n}\n\nfunction getQuadPoints(dict, rect) {\n  if (!dict.has(\"QuadPoints\")) {\n    return null;\n  }\n\n  const quadPoints = dict.getArray(\"QuadPoints\");\n\n  if (!Array.isArray(quadPoints) || quadPoints.length === 0 || quadPoints.length % 8 > 0) {\n    return null;\n  }\n\n  const quadPointsLists = [];\n\n  for (let i = 0, ii = quadPoints.length / 8; i < ii; i++) {\n    quadPointsLists.push([]);\n\n    for (let j = i * 8, jj = i * 8 + 8; j < jj; j += 2) {\n      const x = quadPoints[j];\n      const y = quadPoints[j + 1];\n\n      if (rect !== null && (x < rect[0] || x > rect[2] || y < rect[1] || y > rect[3])) {\n        return null;\n      }\n\n      quadPointsLists[i].push({\n        x,\n        y\n      });\n    }\n  }\n\n  return quadPointsLists.map(quadPointsList => {\n    const [minX, maxX, minY, maxY] = quadPointsList.reduce(([mX, MX, mY, MY], quadPoint) => [Math.min(mX, quadPoint.x), Math.max(MX, quadPoint.x), Math.min(mY, quadPoint.y), Math.max(MY, quadPoint.y)], [Number.MAX_VALUE, Number.MIN_VALUE, Number.MAX_VALUE, Number.MIN_VALUE]);\n    return [{\n      x: minX,\n      y: maxY\n    }, {\n      x: maxX,\n      y: maxY\n    }, {\n      x: minX,\n      y: minY\n    }, {\n      x: maxX,\n      y: minY\n    }];\n  });\n}\n\nfunction getTransformMatrix(rect, bbox, matrix) {\n  const [minX, minY, maxX, maxY] = _util.Util.getAxialAlignedBoundingBox(bbox, matrix);\n\n  if (minX === maxX || minY === maxY) {\n    return [1, 0, 0, 1, rect[0], rect[1]];\n  }\n\n  const xRatio = (rect[2] - rect[0]) / (maxX - minX);\n  const yRatio = (rect[3] - rect[1]) / (maxY - minY);\n  return [xRatio, 0, 0, yRatio, rect[0] - minX * xRatio, rect[1] - minY * yRatio];\n}\n\nclass Annotation {\n  constructor(params) {\n    const dict = params.dict;\n    this.setTitle(dict.get(\"T\"));\n    this.setContents(dict.get(\"Contents\"));\n    this.setModificationDate(dict.get(\"M\"));\n    this.setFlags(dict.get(\"F\"));\n    this.setRectangle(dict.getArray(\"Rect\"));\n    this.setColor(dict.getArray(\"C\"));\n    this.setBorderStyle(dict);\n    this.setAppearance(dict);\n    this.setBorderAndBackgroundColors(dict.get(\"MK\"));\n    this._streams = [];\n\n    if (this.appearance) {\n      this._streams.push(this.appearance);\n    }\n\n    this.data = {\n      annotationFlags: this.flags,\n      borderStyle: this.borderStyle,\n      color: this.color,\n      backgroundColor: this.backgroundColor,\n      borderColor: this.borderColor,\n      contentsObj: this._contents,\n      hasAppearance: !!this.appearance,\n      id: params.id,\n      modificationDate: this.modificationDate,\n      rect: this.rectangle,\n      subtype: params.subtype,\n      hasOwnCanvas: false\n    };\n\n    if (params.collectFields) {\n      const kids = dict.get(\"Kids\");\n\n      if (Array.isArray(kids)) {\n        const kidIds = [];\n\n        for (const kid of kids) {\n          if (kid instanceof _primitives.Ref) {\n            kidIds.push(kid.toString());\n          }\n        }\n\n        if (kidIds.length !== 0) {\n          this.data.kidIds = kidIds;\n        }\n      }\n\n      this.data.actions = (0, _core_utils.collectActions)(params.xref, dict, _util.AnnotationActionEventType);\n      this.data.fieldName = this._constructFieldName(dict);\n      this.data.pageIndex = params.pageIndex;\n    }\n\n    this._fallbackFontDict = null;\n  }\n\n  _hasFlag(flags, flag) {\n    return !!(flags & flag);\n  }\n\n  _isViewable(flags) {\n    return !this._hasFlag(flags, _util.AnnotationFlag.INVISIBLE) && !this._hasFlag(flags, _util.AnnotationFlag.NOVIEW);\n  }\n\n  _isPrintable(flags) {\n    return this._hasFlag(flags, _util.AnnotationFlag.PRINT) && !this._hasFlag(flags, _util.AnnotationFlag.INVISIBLE);\n  }\n\n  mustBeViewed(annotationStorage) {\n    const storageEntry = annotationStorage && annotationStorage.get(this.data.id);\n\n    if (storageEntry && storageEntry.hidden !== undefined) {\n      return !storageEntry.hidden;\n    }\n\n    return this.viewable && !this._hasFlag(this.flags, _util.AnnotationFlag.HIDDEN);\n  }\n\n  mustBePrinted(annotationStorage) {\n    const storageEntry = annotationStorage && annotationStorage.get(this.data.id);\n\n    if (storageEntry && storageEntry.print !== undefined) {\n      return storageEntry.print;\n    }\n\n    return this.printable;\n  }\n\n  get viewable() {\n    if (this.data.quadPoints === null) {\n      return false;\n    }\n\n    if (this.flags === 0) {\n      return true;\n    }\n\n    return this._isViewable(this.flags);\n  }\n\n  get printable() {\n    if (this.data.quadPoints === null) {\n      return false;\n    }\n\n    if (this.flags === 0) {\n      return false;\n    }\n\n    return this._isPrintable(this.flags);\n  }\n\n  _parseStringHelper(data) {\n    const str = typeof data === \"string\" ? (0, _util.stringToPDFString)(data) : \"\";\n    const dir = str && (0, _bidi.bidi)(str).dir === \"rtl\" ? \"rtl\" : \"ltr\";\n    return {\n      str,\n      dir\n    };\n  }\n\n  setTitle(title) {\n    this._title = this._parseStringHelper(title);\n  }\n\n  setContents(contents) {\n    this._contents = this._parseStringHelper(contents);\n  }\n\n  setModificationDate(modificationDate) {\n    this.modificationDate = typeof modificationDate === \"string\" ? modificationDate : null;\n  }\n\n  setFlags(flags) {\n    this.flags = Number.isInteger(flags) && flags > 0 ? flags : 0;\n  }\n\n  hasFlag(flag) {\n    return this._hasFlag(this.flags, flag);\n  }\n\n  setRectangle(rectangle) {\n    if (Array.isArray(rectangle) && rectangle.length === 4) {\n      this.rectangle = _util.Util.normalizeRect(rectangle);\n    } else {\n      this.rectangle = [0, 0, 0, 0];\n    }\n  }\n\n  setColor(color) {\n    this.color = getRgbColor(color);\n  }\n\n  setBorderAndBackgroundColors(mk) {\n    if (mk instanceof _primitives.Dict) {\n      this.borderColor = getRgbColor(mk.getArray(\"BC\"), null);\n      this.backgroundColor = getRgbColor(mk.getArray(\"BG\"), null);\n    } else {\n      this.borderColor = this.backgroundColor = null;\n    }\n  }\n\n  setBorderStyle(borderStyle) {\n    this.borderStyle = new AnnotationBorderStyle();\n\n    if (!(borderStyle instanceof _primitives.Dict)) {\n      return;\n    }\n\n    if (borderStyle.has(\"BS\")) {\n      const dict = borderStyle.get(\"BS\");\n      const dictType = dict.get(\"Type\");\n\n      if (!dictType || (0, _primitives.isName)(dictType, \"Border\")) {\n        this.borderStyle.setWidth(dict.get(\"W\"), this.rectangle);\n        this.borderStyle.setStyle(dict.get(\"S\"));\n        this.borderStyle.setDashArray(dict.getArray(\"D\"));\n      }\n    } else if (borderStyle.has(\"Border\")) {\n      const array = borderStyle.getArray(\"Border\");\n\n      if (Array.isArray(array) && array.length >= 3) {\n        this.borderStyle.setHorizontalCornerRadius(array[0]);\n        this.borderStyle.setVerticalCornerRadius(array[1]);\n        this.borderStyle.setWidth(array[2], this.rectangle);\n\n        if (array.length === 4) {\n          this.borderStyle.setDashArray(array[3], true);\n        }\n      }\n    } else {\n      this.borderStyle.setWidth(0);\n    }\n  }\n\n  setAppearance(dict) {\n    this.appearance = null;\n    const appearanceStates = dict.get(\"AP\");\n\n    if (!(appearanceStates instanceof _primitives.Dict)) {\n      return;\n    }\n\n    const normalAppearanceState = appearanceStates.get(\"N\");\n\n    if (normalAppearanceState instanceof _base_stream.BaseStream) {\n      this.appearance = normalAppearanceState;\n      return;\n    }\n\n    if (!(normalAppearanceState instanceof _primitives.Dict)) {\n      return;\n    }\n\n    const as = dict.get(\"AS\");\n\n    if (!(as instanceof _primitives.Name) || !normalAppearanceState.has(as.name)) {\n      return;\n    }\n\n    this.appearance = normalAppearanceState.get(as.name);\n  }\n\n  loadResources(keys, appearance) {\n    return appearance.dict.getAsync(\"Resources\").then(resources => {\n      if (!resources) {\n        return undefined;\n      }\n\n      const objectLoader = new _object_loader.ObjectLoader(resources, keys, resources.xref);\n      return objectLoader.load().then(function () {\n        return resources;\n      });\n    });\n  }\n\n  getOperatorList(evaluator, task, intent, renderForms, annotationStorage) {\n    const data = this.data;\n    let appearance = this.appearance;\n    const isUsingOwnCanvas = data.hasOwnCanvas && intent & _util.RenderingIntentFlag.DISPLAY;\n\n    if (!appearance) {\n      if (!isUsingOwnCanvas) {\n        return Promise.resolve(new _operator_list.OperatorList());\n      }\n\n      appearance = new _stream.StringStream(\"\");\n      appearance.dict = new _primitives.Dict();\n    }\n\n    const appearanceDict = appearance.dict;\n    const resourcesPromise = this.loadResources([\"ExtGState\", \"ColorSpace\", \"Pattern\", \"Shading\", \"XObject\", \"Font\"], appearance);\n    const bbox = appearanceDict.getArray(\"BBox\") || [0, 0, 1, 1];\n    const matrix = appearanceDict.getArray(\"Matrix\") || [1, 0, 0, 1, 0, 0];\n    const transform = getTransformMatrix(data.rect, bbox, matrix);\n    return resourcesPromise.then(resources => {\n      const opList = new _operator_list.OperatorList();\n      opList.addOp(_util.OPS.beginAnnotation, [data.id, data.rect, transform, matrix, isUsingOwnCanvas]);\n      return evaluator.getOperatorList({\n        stream: appearance,\n        task,\n        resources,\n        operatorList: opList,\n        fallbackFontDict: this._fallbackFontDict\n      }).then(() => {\n        opList.addOp(_util.OPS.endAnnotation, []);\n        this.reset();\n        return opList;\n      });\n    });\n  }\n\n  async save(evaluator, task, annotationStorage) {\n    return null;\n  }\n\n  getFieldObject() {\n    if (this.data.kidIds) {\n      return {\n        id: this.data.id,\n        actions: this.data.actions,\n        name: this.data.fieldName,\n        strokeColor: this.data.borderColor,\n        fillColor: this.data.backgroundColor,\n        type: \"\",\n        kidIds: this.data.kidIds,\n        page: this.data.pageIndex\n      };\n    }\n\n    return null;\n  }\n\n  reset() {\n    for (const stream of this._streams) {\n      stream.reset();\n    }\n  }\n\n  _constructFieldName(dict) {\n    if (!dict.has(\"T\") && !dict.has(\"Parent\")) {\n      (0, _util.warn)(\"Unknown field name, falling back to empty field name.\");\n      return \"\";\n    }\n\n    if (!dict.has(\"Parent\")) {\n      return (0, _util.stringToPDFString)(dict.get(\"T\"));\n    }\n\n    const fieldName = [];\n\n    if (dict.has(\"T\")) {\n      fieldName.unshift((0, _util.stringToPDFString)(dict.get(\"T\")));\n    }\n\n    let loopDict = dict;\n    const visited = new _primitives.RefSet();\n\n    if (dict.objId) {\n      visited.put(dict.objId);\n    }\n\n    while (loopDict.has(\"Parent\")) {\n      loopDict = loopDict.get(\"Parent\");\n\n      if (!(loopDict instanceof _primitives.Dict) || loopDict.objId && visited.has(loopDict.objId)) {\n        break;\n      }\n\n      if (loopDict.objId) {\n        visited.put(loopDict.objId);\n      }\n\n      if (loopDict.has(\"T\")) {\n        fieldName.unshift((0, _util.stringToPDFString)(loopDict.get(\"T\")));\n      }\n    }\n\n    return fieldName.join(\".\");\n  }\n\n}\n\nexports.Annotation = Annotation;\n\nclass AnnotationBorderStyle {\n  constructor() {\n    this.width = 1;\n    this.style = _util.AnnotationBorderStyleType.SOLID;\n    this.dashArray = [3];\n    this.horizontalCornerRadius = 0;\n    this.verticalCornerRadius = 0;\n  }\n\n  setWidth(width, rect = [0, 0, 0, 0]) {\n    if (width instanceof _primitives.Name) {\n      this.width = 0;\n      return;\n    }\n\n    if (typeof width === \"number\") {\n      if (width > 0) {\n        const maxWidth = (rect[2] - rect[0]) / 2;\n        const maxHeight = (rect[3] - rect[1]) / 2;\n\n        if (maxWidth > 0 && maxHeight > 0 && (width > maxWidth || width > maxHeight)) {\n          (0, _util.warn)(`AnnotationBorderStyle.setWidth - ignoring width: ${width}`);\n          width = 1;\n        }\n      }\n\n      this.width = width;\n    }\n  }\n\n  setStyle(style) {\n    if (!(style instanceof _primitives.Name)) {\n      return;\n    }\n\n    switch (style.name) {\n      case \"S\":\n        this.style = _util.AnnotationBorderStyleType.SOLID;\n        break;\n\n      case \"D\":\n        this.style = _util.AnnotationBorderStyleType.DASHED;\n        break;\n\n      case \"B\":\n        this.style = _util.AnnotationBorderStyleType.BEVELED;\n        break;\n\n      case \"I\":\n        this.style = _util.AnnotationBorderStyleType.INSET;\n        break;\n\n      case \"U\":\n        this.style = _util.AnnotationBorderStyleType.UNDERLINE;\n        break;\n\n      default:\n        break;\n    }\n  }\n\n  setDashArray(dashArray, forceStyle = false) {\n    if (Array.isArray(dashArray) && dashArray.length > 0) {\n      let isValid = true;\n      let allZeros = true;\n\n      for (const element of dashArray) {\n        const validNumber = +element >= 0;\n\n        if (!validNumber) {\n          isValid = false;\n          break;\n        } else if (element > 0) {\n          allZeros = false;\n        }\n      }\n\n      if (isValid && !allZeros) {\n        this.dashArray = dashArray;\n\n        if (forceStyle) {\n          this.setStyle(_primitives.Name.get(\"D\"));\n        }\n      } else {\n        this.width = 0;\n      }\n    } else if (dashArray) {\n      this.width = 0;\n    }\n  }\n\n  setHorizontalCornerRadius(radius) {\n    if (Number.isInteger(radius)) {\n      this.horizontalCornerRadius = radius;\n    }\n  }\n\n  setVerticalCornerRadius(radius) {\n    if (Number.isInteger(radius)) {\n      this.verticalCornerRadius = radius;\n    }\n  }\n\n}\n\nexports.AnnotationBorderStyle = AnnotationBorderStyle;\n\nclass MarkupAnnotation extends Annotation {\n  constructor(parameters) {\n    super(parameters);\n    const dict = parameters.dict;\n\n    if (dict.has(\"IRT\")) {\n      const rawIRT = dict.getRaw(\"IRT\");\n      this.data.inReplyTo = rawIRT instanceof _primitives.Ref ? rawIRT.toString() : null;\n      const rt = dict.get(\"RT\");\n      this.data.replyType = rt instanceof _primitives.Name ? rt.name : _util.AnnotationReplyType.REPLY;\n    }\n\n    if (this.data.replyType === _util.AnnotationReplyType.GROUP) {\n      const parent = dict.get(\"IRT\");\n      this.setTitle(parent.get(\"T\"));\n      this.data.titleObj = this._title;\n      this.setContents(parent.get(\"Contents\"));\n      this.data.contentsObj = this._contents;\n\n      if (!parent.has(\"CreationDate\")) {\n        this.data.creationDate = null;\n      } else {\n        this.setCreationDate(parent.get(\"CreationDate\"));\n        this.data.creationDate = this.creationDate;\n      }\n\n      if (!parent.has(\"M\")) {\n        this.data.modificationDate = null;\n      } else {\n        this.setModificationDate(parent.get(\"M\"));\n        this.data.modificationDate = this.modificationDate;\n      }\n\n      this.data.hasPopup = parent.has(\"Popup\");\n\n      if (!parent.has(\"C\")) {\n        this.data.color = null;\n      } else {\n        this.setColor(parent.getArray(\"C\"));\n        this.data.color = this.color;\n      }\n    } else {\n      this.data.titleObj = this._title;\n      this.setCreationDate(dict.get(\"CreationDate\"));\n      this.data.creationDate = this.creationDate;\n      this.data.hasPopup = dict.has(\"Popup\");\n\n      if (!dict.has(\"C\")) {\n        this.data.color = null;\n      }\n    }\n\n    if (dict.has(\"RC\")) {\n      this.data.richText = _factory.XFAFactory.getRichTextAsHtml(dict.get(\"RC\"));\n    }\n  }\n\n  setCreationDate(creationDate) {\n    this.creationDate = typeof creationDate === \"string\" ? creationDate : null;\n  }\n\n  _setDefaultAppearance({\n    xref,\n    extra,\n    strokeColor,\n    fillColor,\n    blendMode,\n    strokeAlpha,\n    fillAlpha,\n    pointsCallback\n  }) {\n    let minX = Number.MAX_VALUE;\n    let minY = Number.MAX_VALUE;\n    let maxX = Number.MIN_VALUE;\n    let maxY = Number.MIN_VALUE;\n    const buffer = [\"q\"];\n\n    if (extra) {\n      buffer.push(extra);\n    }\n\n    if (strokeColor) {\n      buffer.push(`${strokeColor[0]} ${strokeColor[1]} ${strokeColor[2]} RG`);\n    }\n\n    if (fillColor) {\n      buffer.push(`${fillColor[0]} ${fillColor[1]} ${fillColor[2]} rg`);\n    }\n\n    let pointsArray = this.data.quadPoints;\n\n    if (!pointsArray) {\n      pointsArray = [[{\n        x: this.rectangle[0],\n        y: this.rectangle[3]\n      }, {\n        x: this.rectangle[2],\n        y: this.rectangle[3]\n      }, {\n        x: this.rectangle[0],\n        y: this.rectangle[1]\n      }, {\n        x: this.rectangle[2],\n        y: this.rectangle[1]\n      }]];\n    }\n\n    for (const points of pointsArray) {\n      const [mX, MX, mY, MY] = pointsCallback(buffer, points);\n      minX = Math.min(minX, mX);\n      maxX = Math.max(maxX, MX);\n      minY = Math.min(minY, mY);\n      maxY = Math.max(maxY, MY);\n    }\n\n    buffer.push(\"Q\");\n    const formDict = new _primitives.Dict(xref);\n    const appearanceStreamDict = new _primitives.Dict(xref);\n    appearanceStreamDict.set(\"Subtype\", _primitives.Name.get(\"Form\"));\n    const appearanceStream = new _stream.StringStream(buffer.join(\" \"));\n    appearanceStream.dict = appearanceStreamDict;\n    formDict.set(\"Fm0\", appearanceStream);\n    const gsDict = new _primitives.Dict(xref);\n\n    if (blendMode) {\n      gsDict.set(\"BM\", _primitives.Name.get(blendMode));\n    }\n\n    if (typeof strokeAlpha === \"number\") {\n      gsDict.set(\"CA\", strokeAlpha);\n    }\n\n    if (typeof fillAlpha === \"number\") {\n      gsDict.set(\"ca\", fillAlpha);\n    }\n\n    const stateDict = new _primitives.Dict(xref);\n    stateDict.set(\"GS0\", gsDict);\n    const resources = new _primitives.Dict(xref);\n    resources.set(\"ExtGState\", stateDict);\n    resources.set(\"XObject\", formDict);\n    const appearanceDict = new _primitives.Dict(xref);\n    appearanceDict.set(\"Resources\", resources);\n    const bbox = this.data.rect = [minX, minY, maxX, maxY];\n    appearanceDict.set(\"BBox\", bbox);\n    this.appearance = new _stream.StringStream(\"/GS0 gs /Fm0 Do\");\n    this.appearance.dict = appearanceDict;\n\n    this._streams.push(this.appearance, appearanceStream);\n  }\n\n}\n\nexports.MarkupAnnotation = MarkupAnnotation;\n\nclass WidgetAnnotation extends Annotation {\n  constructor(params) {\n    super(params);\n    const dict = params.dict;\n    const data = this.data;\n    this.ref = params.ref;\n    data.annotationType = _util.AnnotationType.WIDGET;\n\n    if (data.fieldName === undefined) {\n      data.fieldName = this._constructFieldName(dict);\n    }\n\n    if (data.actions === undefined) {\n      data.actions = (0, _core_utils.collectActions)(params.xref, dict, _util.AnnotationActionEventType);\n    }\n\n    const fieldValue = (0, _core_utils.getInheritableProperty)({\n      dict,\n      key: \"V\",\n      getArray: true\n    });\n    data.fieldValue = this._decodeFormValue(fieldValue);\n    const defaultFieldValue = (0, _core_utils.getInheritableProperty)({\n      dict,\n      key: \"DV\",\n      getArray: true\n    });\n    data.defaultFieldValue = this._decodeFormValue(defaultFieldValue);\n\n    if (fieldValue === undefined && data.defaultFieldValue !== null) {\n      data.fieldValue = data.defaultFieldValue;\n    }\n\n    data.alternativeText = (0, _util.stringToPDFString)(dict.get(\"TU\") || \"\");\n    const defaultAppearance = (0, _core_utils.getInheritableProperty)({\n      dict,\n      key: \"DA\"\n    }) || params.acroForm.get(\"DA\");\n    this._defaultAppearance = typeof defaultAppearance === \"string\" ? defaultAppearance : \"\";\n    data.defaultAppearanceData = (0, _default_appearance.parseDefaultAppearance)(this._defaultAppearance);\n    const fieldType = (0, _core_utils.getInheritableProperty)({\n      dict,\n      key: \"FT\"\n    });\n    data.fieldType = fieldType instanceof _primitives.Name ? fieldType.name : null;\n    const localResources = (0, _core_utils.getInheritableProperty)({\n      dict,\n      key: \"DR\"\n    });\n    const acroFormResources = params.acroForm.get(\"DR\");\n    const appearanceResources = this.appearance && this.appearance.dict.get(\"Resources\");\n    this._fieldResources = {\n      localResources,\n      acroFormResources,\n      appearanceResources,\n      mergedResources: _primitives.Dict.merge({\n        xref: params.xref,\n        dictArray: [localResources, appearanceResources, acroFormResources],\n        mergeSubDicts: true\n      })\n    };\n    data.fieldFlags = (0, _core_utils.getInheritableProperty)({\n      dict,\n      key: \"Ff\"\n    });\n\n    if (!Number.isInteger(data.fieldFlags) || data.fieldFlags < 0) {\n      data.fieldFlags = 0;\n    }\n\n    data.readOnly = this.hasFieldFlag(_util.AnnotationFieldFlag.READONLY);\n    data.hidden = this._hasFlag(data.annotationFlags, _util.AnnotationFlag.HIDDEN);\n  }\n\n  _decodeFormValue(formValue) {\n    if (Array.isArray(formValue)) {\n      return formValue.filter(item => typeof item === \"string\").map(item => (0, _util.stringToPDFString)(item));\n    } else if (formValue instanceof _primitives.Name) {\n      return (0, _util.stringToPDFString)(formValue.name);\n    } else if (typeof formValue === \"string\") {\n      return (0, _util.stringToPDFString)(formValue);\n    }\n\n    return null;\n  }\n\n  hasFieldFlag(flag) {\n    return !!(this.data.fieldFlags & flag);\n  }\n\n  getOperatorList(evaluator, task, intent, renderForms, annotationStorage) {\n    if (renderForms && !(this instanceof SignatureWidgetAnnotation)) {\n      return Promise.resolve(new _operator_list.OperatorList());\n    }\n\n    if (!this._hasText) {\n      return super.getOperatorList(evaluator, task, intent, renderForms, annotationStorage);\n    }\n\n    return this._getAppearance(evaluator, task, annotationStorage).then(content => {\n      if (this.appearance && content === null) {\n        return super.getOperatorList(evaluator, task, intent, renderForms, annotationStorage);\n      }\n\n      const operatorList = new _operator_list.OperatorList();\n\n      if (!this._defaultAppearance || content === null) {\n        return operatorList;\n      }\n\n      const matrix = [1, 0, 0, 1, 0, 0];\n      const bbox = [0, 0, this.data.rect[2] - this.data.rect[0], this.data.rect[3] - this.data.rect[1]];\n      const transform = getTransformMatrix(this.data.rect, bbox, matrix);\n      operatorList.addOp(_util.OPS.beginAnnotation, [this.data.id, this.data.rect, transform, matrix]);\n      const stream = new _stream.StringStream(content);\n      return evaluator.getOperatorList({\n        stream,\n        task,\n        resources: this._fieldResources.mergedResources,\n        operatorList\n      }).then(function () {\n        operatorList.addOp(_util.OPS.endAnnotation, []);\n        return operatorList;\n      });\n    });\n  }\n\n  async save(evaluator, task, annotationStorage) {\n    if (!annotationStorage) {\n      return null;\n    }\n\n    const storageEntry = annotationStorage.get(this.data.id);\n    const value = storageEntry && storageEntry.value;\n\n    if (value === this.data.fieldValue || value === undefined) {\n      return null;\n    }\n\n    let appearance = await this._getAppearance(evaluator, task, annotationStorage);\n\n    if (appearance === null) {\n      return null;\n    }\n\n    const {\n      xref\n    } = evaluator;\n    const dict = xref.fetchIfRef(this.ref);\n\n    if (!(dict instanceof _primitives.Dict)) {\n      return null;\n    }\n\n    const bbox = [0, 0, this.data.rect[2] - this.data.rect[0], this.data.rect[3] - this.data.rect[1]];\n    const xfa = {\n      path: (0, _util.stringToPDFString)(dict.get(\"T\") || \"\"),\n      value\n    };\n    const newRef = xref.getNewRef();\n    const AP = new _primitives.Dict(xref);\n    AP.set(\"N\", newRef);\n    const encrypt = xref.encrypt;\n    let originalTransform = null;\n    let newTransform = null;\n\n    if (encrypt) {\n      originalTransform = encrypt.createCipherTransform(this.ref.num, this.ref.gen);\n      newTransform = encrypt.createCipherTransform(newRef.num, newRef.gen);\n      appearance = newTransform.encryptString(appearance);\n    }\n\n    dict.set(\"V\", (0, _util.isAscii)(value) ? value : (0, _util.stringToUTF16BEString)(value));\n    dict.set(\"AP\", AP);\n    dict.set(\"M\", `D:${(0, _util.getModificationDate)()}`);\n    const appearanceDict = new _primitives.Dict(xref);\n    appearanceDict.set(\"Length\", appearance.length);\n    appearanceDict.set(\"Subtype\", _primitives.Name.get(\"Form\"));\n    appearanceDict.set(\"Resources\", this._getSaveFieldResources(xref));\n    appearanceDict.set(\"BBox\", bbox);\n    const bufferOriginal = [`${this.ref.num} ${this.ref.gen} obj\\n`];\n    (0, _writer.writeDict)(dict, bufferOriginal, originalTransform);\n    bufferOriginal.push(\"\\nendobj\\n\");\n    const bufferNew = [`${newRef.num} ${newRef.gen} obj\\n`];\n    (0, _writer.writeDict)(appearanceDict, bufferNew, newTransform);\n    bufferNew.push(\" stream\\n\", appearance, \"\\nendstream\\nendobj\\n\");\n    return [{\n      ref: this.ref,\n      data: bufferOriginal.join(\"\"),\n      xfa\n    }, {\n      ref: newRef,\n      data: bufferNew.join(\"\"),\n      xfa: null\n    }];\n  }\n\n  async _getAppearance(evaluator, task, annotationStorage) {\n    const isPassword = this.hasFieldFlag(_util.AnnotationFieldFlag.PASSWORD);\n\n    if (!annotationStorage || isPassword) {\n      return null;\n    }\n\n    const storageEntry = annotationStorage.get(this.data.id);\n    let value = storageEntry && storageEntry.value;\n\n    if (value === undefined) {\n      return null;\n    }\n\n    value = value.trim();\n\n    if (value === \"\") {\n      return \"\";\n    }\n\n    let lineCount = -1;\n\n    if (this.data.multiLine) {\n      lineCount = value.split(/\\r\\n|\\r|\\n/).length;\n    }\n\n    const defaultPadding = 2;\n    const hPadding = defaultPadding;\n    const totalHeight = this.data.rect[3] - this.data.rect[1];\n    const totalWidth = this.data.rect[2] - this.data.rect[0];\n\n    if (!this._defaultAppearance) {\n      this.data.defaultAppearanceData = (0, _default_appearance.parseDefaultAppearance)(this._defaultAppearance = \"/Helvetica 0 Tf 0 g\");\n    }\n\n    const font = await this._getFontData(evaluator, task);\n\n    const [defaultAppearance, fontSize] = this._computeFontSize(totalHeight - defaultPadding, totalWidth - 2 * hPadding, value, font, lineCount);\n\n    let descent = font.descent;\n\n    if (isNaN(descent)) {\n      descent = 0;\n    }\n\n    const vPadding = defaultPadding + Math.abs(descent) * fontSize;\n    const alignment = this.data.textAlignment;\n\n    if (this.data.multiLine) {\n      return this._getMultilineAppearance(defaultAppearance, value, font, fontSize, totalWidth, totalHeight, alignment, hPadding, vPadding);\n    }\n\n    const encodedString = font.encodeString(value).join(\"\");\n\n    if (this.data.comb) {\n      return this._getCombAppearance(defaultAppearance, font, encodedString, totalWidth, hPadding, vPadding);\n    }\n\n    if (alignment === 0 || alignment > 2) {\n      return \"/Tx BMC q BT \" + defaultAppearance + ` 1 0 0 1 ${hPadding} ${vPadding} Tm (${(0, _util.escapeString)(encodedString)}) Tj` + \" ET Q EMC\";\n    }\n\n    const renderedText = this._renderText(encodedString, font, fontSize, totalWidth, alignment, hPadding, vPadding);\n\n    return \"/Tx BMC q BT \" + defaultAppearance + ` 1 0 0 1 0 0 Tm ${renderedText}` + \" ET Q EMC\";\n  }\n\n  async _getFontData(evaluator, task) {\n    const operatorList = new _operator_list.OperatorList();\n    const initialState = {\n      font: null,\n\n      clone() {\n        return this;\n      }\n\n    };\n    const {\n      fontName,\n      fontSize\n    } = this.data.defaultAppearanceData;\n    await evaluator.handleSetFont(this._fieldResources.mergedResources, [fontName && _primitives.Name.get(fontName), fontSize], null, operatorList, task, initialState, null);\n    return initialState.font;\n  }\n\n  _getTextWidth(text, font) {\n    return font.charsToGlyphs(text).reduce((width, glyph) => width + glyph.width, 0) / 1000;\n  }\n\n  _computeFontSize(height, width, text, font, lineCount) {\n    let {\n      fontSize\n    } = this.data.defaultAppearanceData;\n\n    if (!fontSize) {\n      const roundWithTwoDigits = x => Math.floor(x * 100) / 100;\n\n      const LINE_FACTOR = 1.35;\n\n      if (lineCount === -1) {\n        const textWidth = this._getTextWidth(text, font);\n\n        fontSize = roundWithTwoDigits(Math.min(height / LINE_FACTOR, width / textWidth));\n      } else {\n        const lines = text.split(/\\r\\n?|\\n/);\n        const cachedLines = [];\n\n        for (const line of lines) {\n          const encoded = font.encodeString(line).join(\"\");\n          const glyphs = font.charsToGlyphs(encoded);\n          const positions = font.getCharPositions(encoded);\n          cachedLines.push({\n            line: encoded,\n            glyphs,\n            positions\n          });\n        }\n\n        const isTooBig = fsize => {\n          let totalHeight = 0;\n\n          for (const cache of cachedLines) {\n            const chunks = this._splitLine(null, font, fsize, width, cache);\n\n            totalHeight += chunks.length * fsize;\n\n            if (totalHeight > height) {\n              return true;\n            }\n          }\n\n          return false;\n        };\n\n        fontSize = 12;\n        let lineHeight = fontSize * LINE_FACTOR;\n        let numberOfLines = Math.round(height / lineHeight);\n        numberOfLines = Math.max(numberOfLines, lineCount);\n\n        while (true) {\n          lineHeight = height / numberOfLines;\n          fontSize = roundWithTwoDigits(lineHeight / LINE_FACTOR);\n\n          if (isTooBig(fontSize)) {\n            numberOfLines++;\n            continue;\n          }\n\n          break;\n        }\n      }\n\n      const {\n        fontName,\n        fontColor\n      } = this.data.defaultAppearanceData;\n      this._defaultAppearance = (0, _default_appearance.createDefaultAppearance)({\n        fontSize,\n        fontName,\n        fontColor\n      });\n    }\n\n    return [this._defaultAppearance, fontSize];\n  }\n\n  _renderText(text, font, fontSize, totalWidth, alignment, hPadding, vPadding) {\n    const width = this._getTextWidth(text, font) * fontSize;\n    let shift;\n\n    if (alignment === 1) {\n      shift = (totalWidth - width) / 2;\n    } else if (alignment === 2) {\n      shift = totalWidth - width - hPadding;\n    } else {\n      shift = hPadding;\n    }\n\n    shift = shift.toFixed(2);\n    vPadding = vPadding.toFixed(2);\n    return `${shift} ${vPadding} Td (${(0, _util.escapeString)(text)}) Tj`;\n  }\n\n  _getSaveFieldResources(xref) {\n    const {\n      localResources,\n      appearanceResources,\n      acroFormResources\n    } = this._fieldResources;\n    const fontName = this.data.defaultAppearanceData && this.data.defaultAppearanceData.fontName;\n\n    if (!fontName) {\n      return localResources || _primitives.Dict.empty;\n    }\n\n    for (const resources of [localResources, appearanceResources]) {\n      if (resources instanceof _primitives.Dict) {\n        const localFont = resources.get(\"Font\");\n\n        if (localFont instanceof _primitives.Dict && localFont.has(fontName)) {\n          return resources;\n        }\n      }\n    }\n\n    if (acroFormResources instanceof _primitives.Dict) {\n      const acroFormFont = acroFormResources.get(\"Font\");\n\n      if (acroFormFont instanceof _primitives.Dict && acroFormFont.has(fontName)) {\n        const subFontDict = new _primitives.Dict(xref);\n        subFontDict.set(fontName, acroFormFont.getRaw(fontName));\n        const subResourcesDict = new _primitives.Dict(xref);\n        subResourcesDict.set(\"Font\", subFontDict);\n        return _primitives.Dict.merge({\n          xref,\n          dictArray: [subResourcesDict, localResources],\n          mergeSubDicts: true\n        });\n      }\n    }\n\n    return localResources || _primitives.Dict.empty;\n  }\n\n  getFieldObject() {\n    return null;\n  }\n\n}\n\nclass TextWidgetAnnotation extends WidgetAnnotation {\n  constructor(params) {\n    super(params);\n    this._hasText = true;\n    const dict = params.dict;\n\n    if (typeof this.data.fieldValue !== \"string\") {\n      this.data.fieldValue = \"\";\n    }\n\n    let alignment = (0, _core_utils.getInheritableProperty)({\n      dict,\n      key: \"Q\"\n    });\n\n    if (!Number.isInteger(alignment) || alignment < 0 || alignment > 2) {\n      alignment = null;\n    }\n\n    this.data.textAlignment = alignment;\n    let maximumLength = (0, _core_utils.getInheritableProperty)({\n      dict,\n      key: \"MaxLen\"\n    });\n\n    if (!Number.isInteger(maximumLength) || maximumLength < 0) {\n      maximumLength = null;\n    }\n\n    this.data.maxLen = maximumLength;\n    this.data.multiLine = this.hasFieldFlag(_util.AnnotationFieldFlag.MULTILINE);\n    this.data.comb = this.hasFieldFlag(_util.AnnotationFieldFlag.COMB) && !this.hasFieldFlag(_util.AnnotationFieldFlag.MULTILINE) && !this.hasFieldFlag(_util.AnnotationFieldFlag.PASSWORD) && !this.hasFieldFlag(_util.AnnotationFieldFlag.FILESELECT) && this.data.maxLen !== null;\n  }\n\n  _getCombAppearance(defaultAppearance, font, text, width, hPadding, vPadding) {\n    const combWidth = (width / this.data.maxLen).toFixed(2);\n    const buf = [];\n    const positions = font.getCharPositions(text);\n\n    for (const [start, end] of positions) {\n      buf.push(`(${(0, _util.escapeString)(text.substring(start, end))}) Tj`);\n    }\n\n    const renderedComb = buf.join(` ${combWidth} 0 Td `);\n    return \"/Tx BMC q BT \" + defaultAppearance + ` 1 0 0 1 ${hPadding} ${vPadding} Tm ${renderedComb}` + \" ET Q EMC\";\n  }\n\n  _getMultilineAppearance(defaultAppearance, text, font, fontSize, width, height, alignment, hPadding, vPadding) {\n    const lines = text.split(/\\r\\n?|\\n/);\n    const buf = [];\n    const totalWidth = width - 2 * hPadding;\n\n    for (const line of lines) {\n      const chunks = this._splitLine(line, font, fontSize, totalWidth);\n\n      for (const chunk of chunks) {\n        const padding = buf.length === 0 ? hPadding : 0;\n        buf.push(this._renderText(chunk, font, fontSize, width, alignment, padding, -fontSize));\n      }\n    }\n\n    const renderedText = buf.join(\"\\n\");\n    return \"/Tx BMC q BT \" + defaultAppearance + ` 1 0 0 1 0 ${height} Tm ${renderedText}` + \" ET Q EMC\";\n  }\n\n  _splitLine(line, font, fontSize, width, cache = {}) {\n    line = cache.line || font.encodeString(line).join(\"\");\n    const glyphs = cache.glyphs || font.charsToGlyphs(line);\n\n    if (glyphs.length <= 1) {\n      return [line];\n    }\n\n    const positions = cache.positions || font.getCharPositions(line);\n    const scale = fontSize / 1000;\n    const chunks = [];\n    let lastSpacePosInStringStart = -1,\n        lastSpacePosInStringEnd = -1,\n        lastSpacePos = -1,\n        startChunk = 0,\n        currentWidth = 0;\n\n    for (let i = 0, ii = glyphs.length; i < ii; i++) {\n      const [start, end] = positions[i];\n      const glyph = glyphs[i];\n      const glyphWidth = glyph.width * scale;\n\n      if (glyph.unicode === \" \") {\n        if (currentWidth + glyphWidth > width) {\n          chunks.push(line.substring(startChunk, start));\n          startChunk = start;\n          currentWidth = glyphWidth;\n          lastSpacePosInStringStart = -1;\n          lastSpacePos = -1;\n        } else {\n          currentWidth += glyphWidth;\n          lastSpacePosInStringStart = start;\n          lastSpacePosInStringEnd = end;\n          lastSpacePos = i;\n        }\n      } else {\n        if (currentWidth + glyphWidth > width) {\n          if (lastSpacePosInStringStart !== -1) {\n            chunks.push(line.substring(startChunk, lastSpacePosInStringEnd));\n            startChunk = lastSpacePosInStringEnd;\n            i = lastSpacePos + 1;\n            lastSpacePosInStringStart = -1;\n            currentWidth = 0;\n          } else {\n            chunks.push(line.substring(startChunk, start));\n            startChunk = start;\n            currentWidth = glyphWidth;\n          }\n        } else {\n          currentWidth += glyphWidth;\n        }\n      }\n    }\n\n    if (startChunk < line.length) {\n      chunks.push(line.substring(startChunk, line.length));\n    }\n\n    return chunks;\n  }\n\n  getFieldObject() {\n    return {\n      id: this.data.id,\n      value: this.data.fieldValue,\n      defaultValue: this.data.defaultFieldValue,\n      multiline: this.data.multiLine,\n      password: this.hasFieldFlag(_util.AnnotationFieldFlag.PASSWORD),\n      charLimit: this.data.maxLen,\n      comb: this.data.comb,\n      editable: !this.data.readOnly,\n      hidden: this.data.hidden,\n      name: this.data.fieldName,\n      rect: this.data.rect,\n      actions: this.data.actions,\n      page: this.data.pageIndex,\n      strokeColor: this.data.borderColor,\n      fillColor: this.data.backgroundColor,\n      type: \"text\"\n    };\n  }\n\n}\n\nclass ButtonWidgetAnnotation extends WidgetAnnotation {\n  constructor(params) {\n    super(params);\n    this.checkedAppearance = null;\n    this.uncheckedAppearance = null;\n    this.data.checkBox = !this.hasFieldFlag(_util.AnnotationFieldFlag.RADIO) && !this.hasFieldFlag(_util.AnnotationFieldFlag.PUSHBUTTON);\n    this.data.radioButton = this.hasFieldFlag(_util.AnnotationFieldFlag.RADIO) && !this.hasFieldFlag(_util.AnnotationFieldFlag.PUSHBUTTON);\n    this.data.pushButton = this.hasFieldFlag(_util.AnnotationFieldFlag.PUSHBUTTON);\n    this.data.isTooltipOnly = false;\n\n    if (this.data.checkBox) {\n      this._processCheckBox(params);\n    } else if (this.data.radioButton) {\n      this._processRadioButton(params);\n    } else if (this.data.pushButton) {\n      this.data.hasOwnCanvas = true;\n\n      this._processPushButton(params);\n    } else {\n      (0, _util.warn)(\"Invalid field flags for button widget annotation\");\n    }\n  }\n\n  async getOperatorList(evaluator, task, intent, renderForms, annotationStorage) {\n    if (this.data.pushButton) {\n      return super.getOperatorList(evaluator, task, intent, false, annotationStorage);\n    }\n\n    let value = null;\n\n    if (annotationStorage) {\n      const storageEntry = annotationStorage.get(this.data.id);\n      value = storageEntry ? storageEntry.value : null;\n    }\n\n    if (value === null) {\n      if (this.appearance) {\n        return super.getOperatorList(evaluator, task, intent, renderForms, annotationStorage);\n      }\n\n      if (this.data.checkBox) {\n        value = this.data.fieldValue === this.data.exportValue;\n      } else {\n        value = this.data.fieldValue === this.data.buttonValue;\n      }\n    }\n\n    const appearance = value ? this.checkedAppearance : this.uncheckedAppearance;\n\n    if (appearance) {\n      const savedAppearance = this.appearance;\n      this.appearance = appearance;\n      const operatorList = super.getOperatorList(evaluator, task, intent, renderForms, annotationStorage);\n      this.appearance = savedAppearance;\n      return operatorList;\n    }\n\n    return new _operator_list.OperatorList();\n  }\n\n  async save(evaluator, task, annotationStorage) {\n    if (this.data.checkBox) {\n      return this._saveCheckbox(evaluator, task, annotationStorage);\n    }\n\n    if (this.data.radioButton) {\n      return this._saveRadioButton(evaluator, task, annotationStorage);\n    }\n\n    return null;\n  }\n\n  async _saveCheckbox(evaluator, task, annotationStorage) {\n    if (!annotationStorage) {\n      return null;\n    }\n\n    const storageEntry = annotationStorage.get(this.data.id);\n    const value = storageEntry && storageEntry.value;\n\n    if (value === undefined) {\n      return null;\n    }\n\n    const defaultValue = this.data.fieldValue === this.data.exportValue;\n\n    if (defaultValue === value) {\n      return null;\n    }\n\n    const dict = evaluator.xref.fetchIfRef(this.ref);\n\n    if (!(dict instanceof _primitives.Dict)) {\n      return null;\n    }\n\n    const xfa = {\n      path: (0, _util.stringToPDFString)(dict.get(\"T\") || \"\"),\n      value: value ? this.data.exportValue : \"\"\n    };\n\n    const name = _primitives.Name.get(value ? this.data.exportValue : \"Off\");\n\n    dict.set(\"V\", name);\n    dict.set(\"AS\", name);\n    dict.set(\"M\", `D:${(0, _util.getModificationDate)()}`);\n    const encrypt = evaluator.xref.encrypt;\n    let originalTransform = null;\n\n    if (encrypt) {\n      originalTransform = encrypt.createCipherTransform(this.ref.num, this.ref.gen);\n    }\n\n    const buffer = [`${this.ref.num} ${this.ref.gen} obj\\n`];\n    (0, _writer.writeDict)(dict, buffer, originalTransform);\n    buffer.push(\"\\nendobj\\n\");\n    return [{\n      ref: this.ref,\n      data: buffer.join(\"\"),\n      xfa\n    }];\n  }\n\n  async _saveRadioButton(evaluator, task, annotationStorage) {\n    if (!annotationStorage) {\n      return null;\n    }\n\n    const storageEntry = annotationStorage.get(this.data.id);\n    const value = storageEntry && storageEntry.value;\n\n    if (value === undefined) {\n      return null;\n    }\n\n    const defaultValue = this.data.fieldValue === this.data.buttonValue;\n\n    if (defaultValue === value) {\n      return null;\n    }\n\n    const dict = evaluator.xref.fetchIfRef(this.ref);\n\n    if (!(dict instanceof _primitives.Dict)) {\n      return null;\n    }\n\n    const xfa = {\n      path: (0, _util.stringToPDFString)(dict.get(\"T\") || \"\"),\n      value: value ? this.data.buttonValue : \"\"\n    };\n\n    const name = _primitives.Name.get(value ? this.data.buttonValue : \"Off\");\n\n    let parentBuffer = null;\n    const encrypt = evaluator.xref.encrypt;\n\n    if (value) {\n      if (this.parent instanceof _primitives.Ref) {\n        const parent = evaluator.xref.fetch(this.parent);\n        let parentTransform = null;\n\n        if (encrypt) {\n          parentTransform = encrypt.createCipherTransform(this.parent.num, this.parent.gen);\n        }\n\n        parent.set(\"V\", name);\n        parentBuffer = [`${this.parent.num} ${this.parent.gen} obj\\n`];\n        (0, _writer.writeDict)(parent, parentBuffer, parentTransform);\n        parentBuffer.push(\"\\nendobj\\n\");\n      } else if (this.parent instanceof _primitives.Dict) {\n        this.parent.set(\"V\", name);\n      }\n    }\n\n    dict.set(\"AS\", name);\n    dict.set(\"M\", `D:${(0, _util.getModificationDate)()}`);\n    let originalTransform = null;\n\n    if (encrypt) {\n      originalTransform = encrypt.createCipherTransform(this.ref.num, this.ref.gen);\n    }\n\n    const buffer = [`${this.ref.num} ${this.ref.gen} obj\\n`];\n    (0, _writer.writeDict)(dict, buffer, originalTransform);\n    buffer.push(\"\\nendobj\\n\");\n    const newRefs = [{\n      ref: this.ref,\n      data: buffer.join(\"\"),\n      xfa\n    }];\n\n    if (parentBuffer !== null) {\n      newRefs.push({\n        ref: this.parent,\n        data: parentBuffer.join(\"\"),\n        xfa: null\n      });\n    }\n\n    return newRefs;\n  }\n\n  _getDefaultCheckedAppearance(params, type) {\n    const width = this.data.rect[2] - this.data.rect[0];\n    const height = this.data.rect[3] - this.data.rect[1];\n    const bbox = [0, 0, width, height];\n    const FONT_RATIO = 0.8;\n    const fontSize = Math.min(width, height) * FONT_RATIO;\n    let metrics, char;\n\n    if (type === \"check\") {\n      metrics = {\n        width: 0.755 * fontSize,\n        height: 0.705 * fontSize\n      };\n      char = \"\\x33\";\n    } else if (type === \"disc\") {\n      metrics = {\n        width: 0.791 * fontSize,\n        height: 0.705 * fontSize\n      };\n      char = \"\\x6C\";\n    } else {\n      (0, _util.unreachable)(`_getDefaultCheckedAppearance - unsupported type: ${type}`);\n    }\n\n    const xShift = (width - metrics.width) / 2;\n    const yShift = (height - metrics.height) / 2;\n    const appearance = `q BT /PdfJsZaDb ${fontSize} Tf 0 g ${xShift} ${yShift} Td (${char}) Tj ET Q`;\n    const appearanceStreamDict = new _primitives.Dict(params.xref);\n    appearanceStreamDict.set(\"FormType\", 1);\n    appearanceStreamDict.set(\"Subtype\", _primitives.Name.get(\"Form\"));\n    appearanceStreamDict.set(\"Type\", _primitives.Name.get(\"XObject\"));\n    appearanceStreamDict.set(\"BBox\", bbox);\n    appearanceStreamDict.set(\"Matrix\", [1, 0, 0, 1, 0, 0]);\n    appearanceStreamDict.set(\"Length\", appearance.length);\n    const resources = new _primitives.Dict(params.xref);\n    const font = new _primitives.Dict(params.xref);\n    font.set(\"PdfJsZaDb\", this.fallbackFontDict);\n    resources.set(\"Font\", font);\n    appearanceStreamDict.set(\"Resources\", resources);\n    this.checkedAppearance = new _stream.StringStream(appearance);\n    this.checkedAppearance.dict = appearanceStreamDict;\n\n    this._streams.push(this.checkedAppearance);\n  }\n\n  _processCheckBox(params) {\n    const customAppearance = params.dict.get(\"AP\");\n\n    if (!(customAppearance instanceof _primitives.Dict)) {\n      return;\n    }\n\n    const normalAppearance = customAppearance.get(\"N\");\n\n    if (!(normalAppearance instanceof _primitives.Dict)) {\n      return;\n    }\n\n    const asValue = this._decodeFormValue(params.dict.get(\"AS\"));\n\n    if (typeof asValue === \"string\") {\n      this.data.fieldValue = asValue;\n    }\n\n    const yes = this.data.fieldValue !== null && this.data.fieldValue !== \"Off\" ? this.data.fieldValue : \"Yes\";\n    const exportValues = normalAppearance.getKeys();\n\n    if (exportValues.length === 0) {\n      exportValues.push(\"Off\", yes);\n    } else if (exportValues.length === 1) {\n      if (exportValues[0] === \"Off\") {\n        exportValues.push(yes);\n      } else {\n        exportValues.unshift(\"Off\");\n      }\n    } else if (exportValues.includes(yes)) {\n      exportValues.length = 0;\n      exportValues.push(\"Off\", yes);\n    } else {\n      const otherYes = exportValues.find(v => v !== \"Off\");\n      exportValues.length = 0;\n      exportValues.push(\"Off\", otherYes);\n    }\n\n    if (!exportValues.includes(this.data.fieldValue)) {\n      this.data.fieldValue = \"Off\";\n    }\n\n    this.data.exportValue = exportValues[1];\n    this.checkedAppearance = normalAppearance.get(this.data.exportValue) || null;\n    this.uncheckedAppearance = normalAppearance.get(\"Off\") || null;\n\n    if (this.checkedAppearance) {\n      this._streams.push(this.checkedAppearance);\n    } else {\n      this._getDefaultCheckedAppearance(params, \"check\");\n    }\n\n    if (this.uncheckedAppearance) {\n      this._streams.push(this.uncheckedAppearance);\n    }\n\n    this._fallbackFontDict = this.fallbackFontDict;\n  }\n\n  _processRadioButton(params) {\n    this.data.fieldValue = this.data.buttonValue = null;\n    const fieldParent = params.dict.get(\"Parent\");\n\n    if (fieldParent instanceof _primitives.Dict) {\n      this.parent = params.dict.getRaw(\"Parent\");\n      const fieldParentValue = fieldParent.get(\"V\");\n\n      if (fieldParentValue instanceof _primitives.Name) {\n        this.data.fieldValue = this._decodeFormValue(fieldParentValue);\n      }\n    }\n\n    const appearanceStates = params.dict.get(\"AP\");\n\n    if (!(appearanceStates instanceof _primitives.Dict)) {\n      return;\n    }\n\n    const normalAppearance = appearanceStates.get(\"N\");\n\n    if (!(normalAppearance instanceof _primitives.Dict)) {\n      return;\n    }\n\n    for (const key of normalAppearance.getKeys()) {\n      if (key !== \"Off\") {\n        this.data.buttonValue = this._decodeFormValue(key);\n        break;\n      }\n    }\n\n    this.checkedAppearance = normalAppearance.get(this.data.buttonValue) || null;\n    this.uncheckedAppearance = normalAppearance.get(\"Off\") || null;\n\n    if (this.checkedAppearance) {\n      this._streams.push(this.checkedAppearance);\n    } else {\n      this._getDefaultCheckedAppearance(params, \"disc\");\n    }\n\n    if (this.uncheckedAppearance) {\n      this._streams.push(this.uncheckedAppearance);\n    }\n\n    this._fallbackFontDict = this.fallbackFontDict;\n  }\n\n  _processPushButton(params) {\n    if (!params.dict.has(\"A\") && !params.dict.has(\"AA\") && !this.data.alternativeText) {\n      (0, _util.warn)(\"Push buttons without action dictionaries are not supported\");\n      return;\n    }\n\n    this.data.isTooltipOnly = !params.dict.has(\"A\") && !params.dict.has(\"AA\");\n\n    _catalog.Catalog.parseDestDictionary({\n      destDict: params.dict,\n      resultObj: this.data,\n      docBaseUrl: params.pdfManager.docBaseUrl\n    });\n  }\n\n  getFieldObject() {\n    let type = \"button\";\n    let exportValues;\n\n    if (this.data.checkBox) {\n      type = \"checkbox\";\n      exportValues = this.data.exportValue;\n    } else if (this.data.radioButton) {\n      type = \"radiobutton\";\n      exportValues = this.data.buttonValue;\n    }\n\n    return {\n      id: this.data.id,\n      value: this.data.fieldValue || \"Off\",\n      defaultValue: this.data.defaultFieldValue,\n      exportValues,\n      editable: !this.data.readOnly,\n      name: this.data.fieldName,\n      rect: this.data.rect,\n      hidden: this.data.hidden,\n      actions: this.data.actions,\n      page: this.data.pageIndex,\n      strokeColor: this.data.borderColor,\n      fillColor: this.data.backgroundColor,\n      type\n    };\n  }\n\n  get fallbackFontDict() {\n    const dict = new _primitives.Dict();\n    dict.set(\"BaseFont\", _primitives.Name.get(\"ZapfDingbats\"));\n    dict.set(\"Type\", _primitives.Name.get(\"FallbackType\"));\n    dict.set(\"Subtype\", _primitives.Name.get(\"FallbackType\"));\n    dict.set(\"Encoding\", _primitives.Name.get(\"ZapfDingbatsEncoding\"));\n    return (0, _util.shadow)(this, \"fallbackFontDict\", dict);\n  }\n\n}\n\nclass ChoiceWidgetAnnotation extends WidgetAnnotation {\n  constructor(params) {\n    super(params);\n    this.data.options = [];\n    const options = (0, _core_utils.getInheritableProperty)({\n      dict: params.dict,\n      key: \"Opt\"\n    });\n\n    if (Array.isArray(options)) {\n      const xref = params.xref;\n\n      for (let i = 0, ii = options.length; i < ii; i++) {\n        const option = xref.fetchIfRef(options[i]);\n        const isOptionArray = Array.isArray(option);\n        this.data.options[i] = {\n          exportValue: this._decodeFormValue(isOptionArray ? xref.fetchIfRef(option[0]) : option),\n          displayValue: this._decodeFormValue(isOptionArray ? xref.fetchIfRef(option[1]) : option)\n        };\n      }\n    }\n\n    if (typeof this.data.fieldValue === \"string\") {\n      this.data.fieldValue = [this.data.fieldValue];\n    } else if (!this.data.fieldValue) {\n      this.data.fieldValue = [];\n    }\n\n    this.data.combo = this.hasFieldFlag(_util.AnnotationFieldFlag.COMBO);\n    this.data.multiSelect = this.hasFieldFlag(_util.AnnotationFieldFlag.MULTISELECT);\n    this._hasText = true;\n  }\n\n  getFieldObject() {\n    const type = this.data.combo ? \"combobox\" : \"listbox\";\n    const value = this.data.fieldValue.length > 0 ? this.data.fieldValue[0] : null;\n    return {\n      id: this.data.id,\n      value,\n      defaultValue: this.data.defaultFieldValue,\n      editable: !this.data.readOnly,\n      name: this.data.fieldName,\n      rect: this.data.rect,\n      numItems: this.data.fieldValue.length,\n      multipleSelection: this.data.multiSelect,\n      hidden: this.data.hidden,\n      actions: this.data.actions,\n      items: this.data.options,\n      page: this.data.pageIndex,\n      strokeColor: this.data.borderColor,\n      fillColor: this.data.backgroundColor,\n      type\n    };\n  }\n\n}\n\nclass SignatureWidgetAnnotation extends WidgetAnnotation {\n  constructor(params) {\n    super(params);\n    this.data.fieldValue = null;\n  }\n\n  getFieldObject() {\n    return {\n      id: this.data.id,\n      value: null,\n      page: this.data.pageIndex,\n      type: \"signature\"\n    };\n  }\n\n}\n\nclass TextAnnotation extends MarkupAnnotation {\n  constructor(parameters) {\n    const DEFAULT_ICON_SIZE = 22;\n    super(parameters);\n    const dict = parameters.dict;\n    this.data.annotationType = _util.AnnotationType.TEXT;\n\n    if (this.data.hasAppearance) {\n      this.data.name = \"NoIcon\";\n    } else {\n      this.data.rect[1] = this.data.rect[3] - DEFAULT_ICON_SIZE;\n      this.data.rect[2] = this.data.rect[0] + DEFAULT_ICON_SIZE;\n      this.data.name = dict.has(\"Name\") ? dict.get(\"Name\").name : \"Note\";\n    }\n\n    if (dict.has(\"State\")) {\n      this.data.state = dict.get(\"State\") || null;\n      this.data.stateModel = dict.get(\"StateModel\") || null;\n    } else {\n      this.data.state = null;\n      this.data.stateModel = null;\n    }\n  }\n\n}\n\nclass LinkAnnotation extends Annotation {\n  constructor(params) {\n    super(params);\n    this.data.annotationType = _util.AnnotationType.LINK;\n    const quadPoints = getQuadPoints(params.dict, this.rectangle);\n\n    if (quadPoints) {\n      this.data.quadPoints = quadPoints;\n    }\n\n    _catalog.Catalog.parseDestDictionary({\n      destDict: params.dict,\n      resultObj: this.data,\n      docBaseUrl: params.pdfManager.docBaseUrl\n    });\n  }\n\n}\n\nclass PopupAnnotation extends Annotation {\n  constructor(parameters) {\n    super(parameters);\n    this.data.annotationType = _util.AnnotationType.POPUP;\n    let parentItem = parameters.dict.get(\"Parent\");\n\n    if (!parentItem) {\n      (0, _util.warn)(\"Popup annotation has a missing or invalid parent annotation.\");\n      return;\n    }\n\n    const parentSubtype = parentItem.get(\"Subtype\");\n    this.data.parentType = parentSubtype instanceof _primitives.Name ? parentSubtype.name : null;\n    const rawParent = parameters.dict.getRaw(\"Parent\");\n    this.data.parentId = rawParent instanceof _primitives.Ref ? rawParent.toString() : null;\n    const parentRect = parentItem.getArray(\"Rect\");\n\n    if (Array.isArray(parentRect) && parentRect.length === 4) {\n      this.data.parentRect = _util.Util.normalizeRect(parentRect);\n    } else {\n      this.data.parentRect = [0, 0, 0, 0];\n    }\n\n    const rt = parentItem.get(\"RT\");\n\n    if ((0, _primitives.isName)(rt, _util.AnnotationReplyType.GROUP)) {\n      parentItem = parentItem.get(\"IRT\");\n    }\n\n    if (!parentItem.has(\"M\")) {\n      this.data.modificationDate = null;\n    } else {\n      this.setModificationDate(parentItem.get(\"M\"));\n      this.data.modificationDate = this.modificationDate;\n    }\n\n    if (!parentItem.has(\"C\")) {\n      this.data.color = null;\n    } else {\n      this.setColor(parentItem.getArray(\"C\"));\n      this.data.color = this.color;\n    }\n\n    if (!this.viewable) {\n      const parentFlags = parentItem.get(\"F\");\n\n      if (this._isViewable(parentFlags)) {\n        this.setFlags(parentFlags);\n      }\n    }\n\n    this.setTitle(parentItem.get(\"T\"));\n    this.data.titleObj = this._title;\n    this.setContents(parentItem.get(\"Contents\"));\n    this.data.contentsObj = this._contents;\n\n    if (parentItem.has(\"RC\")) {\n      this.data.richText = _factory.XFAFactory.getRichTextAsHtml(parentItem.get(\"RC\"));\n    }\n  }\n\n}\n\nclass FreeTextAnnotation extends MarkupAnnotation {\n  constructor(parameters) {\n    super(parameters);\n    this.data.annotationType = _util.AnnotationType.FREETEXT;\n  }\n\n}\n\nclass LineAnnotation extends MarkupAnnotation {\n  constructor(parameters) {\n    super(parameters);\n    this.data.annotationType = _util.AnnotationType.LINE;\n    const lineCoordinates = parameters.dict.getArray(\"L\");\n    this.data.lineCoordinates = _util.Util.normalizeRect(lineCoordinates);\n\n    if (!this.appearance) {\n      const strokeColor = this.color ? Array.from(this.color).map(c => c / 255) : [0, 0, 0];\n      const strokeAlpha = parameters.dict.get(\"CA\");\n      let fillColor = null,\n          interiorColor = parameters.dict.getArray(\"IC\");\n\n      if (interiorColor) {\n        interiorColor = getRgbColor(interiorColor, null);\n        fillColor = interiorColor ? Array.from(interiorColor).map(c => c / 255) : null;\n      }\n\n      const fillAlpha = fillColor ? strokeAlpha : null;\n      const borderWidth = this.borderStyle.width || 1,\n            borderAdjust = 2 * borderWidth;\n      const bbox = [this.data.lineCoordinates[0] - borderAdjust, this.data.lineCoordinates[1] - borderAdjust, this.data.lineCoordinates[2] + borderAdjust, this.data.lineCoordinates[3] + borderAdjust];\n\n      if (!_util.Util.intersect(this.rectangle, bbox)) {\n        this.rectangle = bbox;\n      }\n\n      this._setDefaultAppearance({\n        xref: parameters.xref,\n        extra: `${borderWidth} w`,\n        strokeColor,\n        fillColor,\n        strokeAlpha,\n        fillAlpha,\n        pointsCallback: (buffer, points) => {\n          buffer.push(`${lineCoordinates[0]} ${lineCoordinates[1]} m`, `${lineCoordinates[2]} ${lineCoordinates[3]} l`, \"S\");\n          return [points[0].x - borderWidth, points[1].x + borderWidth, points[3].y - borderWidth, points[1].y + borderWidth];\n        }\n      });\n    }\n  }\n\n}\n\nclass SquareAnnotation extends MarkupAnnotation {\n  constructor(parameters) {\n    super(parameters);\n    this.data.annotationType = _util.AnnotationType.SQUARE;\n\n    if (!this.appearance) {\n      const strokeColor = this.color ? Array.from(this.color).map(c => c / 255) : [0, 0, 0];\n      const strokeAlpha = parameters.dict.get(\"CA\");\n      let fillColor = null,\n          interiorColor = parameters.dict.getArray(\"IC\");\n\n      if (interiorColor) {\n        interiorColor = getRgbColor(interiorColor, null);\n        fillColor = interiorColor ? Array.from(interiorColor).map(c => c / 255) : null;\n      }\n\n      const fillAlpha = fillColor ? strokeAlpha : null;\n\n      if (this.borderStyle.width === 0 && !fillColor) {\n        return;\n      }\n\n      this._setDefaultAppearance({\n        xref: parameters.xref,\n        extra: `${this.borderStyle.width} w`,\n        strokeColor,\n        fillColor,\n        strokeAlpha,\n        fillAlpha,\n        pointsCallback: (buffer, points) => {\n          const x = points[2].x + this.borderStyle.width / 2;\n          const y = points[2].y + this.borderStyle.width / 2;\n          const width = points[3].x - points[2].x - this.borderStyle.width;\n          const height = points[1].y - points[3].y - this.borderStyle.width;\n          buffer.push(`${x} ${y} ${width} ${height} re`);\n\n          if (fillColor) {\n            buffer.push(\"B\");\n          } else {\n            buffer.push(\"S\");\n          }\n\n          return [points[0].x, points[1].x, points[3].y, points[1].y];\n        }\n      });\n    }\n  }\n\n}\n\nclass CircleAnnotation extends MarkupAnnotation {\n  constructor(parameters) {\n    super(parameters);\n    this.data.annotationType = _util.AnnotationType.CIRCLE;\n\n    if (!this.appearance) {\n      const strokeColor = this.color ? Array.from(this.color).map(c => c / 255) : [0, 0, 0];\n      const strokeAlpha = parameters.dict.get(\"CA\");\n      let fillColor = null;\n      let interiorColor = parameters.dict.getArray(\"IC\");\n\n      if (interiorColor) {\n        interiorColor = getRgbColor(interiorColor, null);\n        fillColor = interiorColor ? Array.from(interiorColor).map(c => c / 255) : null;\n      }\n\n      const fillAlpha = fillColor ? strokeAlpha : null;\n\n      if (this.borderStyle.width === 0 && !fillColor) {\n        return;\n      }\n\n      const controlPointsDistance = 4 / 3 * Math.tan(Math.PI / (2 * 4));\n\n      this._setDefaultAppearance({\n        xref: parameters.xref,\n        extra: `${this.borderStyle.width} w`,\n        strokeColor,\n        fillColor,\n        strokeAlpha,\n        fillAlpha,\n        pointsCallback: (buffer, points) => {\n          const x0 = points[0].x + this.borderStyle.width / 2;\n          const y0 = points[0].y - this.borderStyle.width / 2;\n          const x1 = points[3].x - this.borderStyle.width / 2;\n          const y1 = points[3].y + this.borderStyle.width / 2;\n          const xMid = x0 + (x1 - x0) / 2;\n          const yMid = y0 + (y1 - y0) / 2;\n          const xOffset = (x1 - x0) / 2 * controlPointsDistance;\n          const yOffset = (y1 - y0) / 2 * controlPointsDistance;\n          buffer.push(`${xMid} ${y1} m`, `${xMid + xOffset} ${y1} ${x1} ${yMid + yOffset} ${x1} ${yMid} c`, `${x1} ${yMid - yOffset} ${xMid + xOffset} ${y0} ${xMid} ${y0} c`, `${xMid - xOffset} ${y0} ${x0} ${yMid - yOffset} ${x0} ${yMid} c`, `${x0} ${yMid + yOffset} ${xMid - xOffset} ${y1} ${xMid} ${y1} c`, \"h\");\n\n          if (fillColor) {\n            buffer.push(\"B\");\n          } else {\n            buffer.push(\"S\");\n          }\n\n          return [points[0].x, points[1].x, points[3].y, points[1].y];\n        }\n      });\n    }\n  }\n\n}\n\nclass PolylineAnnotation extends MarkupAnnotation {\n  constructor(parameters) {\n    super(parameters);\n    this.data.annotationType = _util.AnnotationType.POLYLINE;\n    this.data.vertices = [];\n    const rawVertices = parameters.dict.getArray(\"Vertices\");\n\n    if (!Array.isArray(rawVertices)) {\n      return;\n    }\n\n    for (let i = 0, ii = rawVertices.length; i < ii; i += 2) {\n      this.data.vertices.push({\n        x: rawVertices[i],\n        y: rawVertices[i + 1]\n      });\n    }\n\n    if (!this.appearance) {\n      const strokeColor = this.color ? Array.from(this.color).map(c => c / 255) : [0, 0, 0];\n      const strokeAlpha = parameters.dict.get(\"CA\");\n      const borderWidth = this.borderStyle.width || 1,\n            borderAdjust = 2 * borderWidth;\n      const bbox = [Infinity, Infinity, -Infinity, -Infinity];\n\n      for (const vertex of this.data.vertices) {\n        bbox[0] = Math.min(bbox[0], vertex.x - borderAdjust);\n        bbox[1] = Math.min(bbox[1], vertex.y - borderAdjust);\n        bbox[2] = Math.max(bbox[2], vertex.x + borderAdjust);\n        bbox[3] = Math.max(bbox[3], vertex.y + borderAdjust);\n      }\n\n      if (!_util.Util.intersect(this.rectangle, bbox)) {\n        this.rectangle = bbox;\n      }\n\n      this._setDefaultAppearance({\n        xref: parameters.xref,\n        extra: `${borderWidth} w`,\n        strokeColor,\n        strokeAlpha,\n        pointsCallback: (buffer, points) => {\n          const vertices = this.data.vertices;\n\n          for (let i = 0, ii = vertices.length; i < ii; i++) {\n            buffer.push(`${vertices[i].x} ${vertices[i].y} ${i === 0 ? \"m\" : \"l\"}`);\n          }\n\n          buffer.push(\"S\");\n          return [points[0].x, points[1].x, points[3].y, points[1].y];\n        }\n      });\n    }\n  }\n\n}\n\nclass PolygonAnnotation extends PolylineAnnotation {\n  constructor(parameters) {\n    super(parameters);\n    this.data.annotationType = _util.AnnotationType.POLYGON;\n  }\n\n}\n\nclass CaretAnnotation extends MarkupAnnotation {\n  constructor(parameters) {\n    super(parameters);\n    this.data.annotationType = _util.AnnotationType.CARET;\n  }\n\n}\n\nclass InkAnnotation extends MarkupAnnotation {\n  constructor(parameters) {\n    super(parameters);\n    this.data.annotationType = _util.AnnotationType.INK;\n    this.data.inkLists = [];\n    const rawInkLists = parameters.dict.getArray(\"InkList\");\n\n    if (!Array.isArray(rawInkLists)) {\n      return;\n    }\n\n    const xref = parameters.xref;\n\n    for (let i = 0, ii = rawInkLists.length; i < ii; ++i) {\n      this.data.inkLists.push([]);\n\n      for (let j = 0, jj = rawInkLists[i].length; j < jj; j += 2) {\n        this.data.inkLists[i].push({\n          x: xref.fetchIfRef(rawInkLists[i][j]),\n          y: xref.fetchIfRef(rawInkLists[i][j + 1])\n        });\n      }\n    }\n\n    if (!this.appearance) {\n      const strokeColor = this.color ? Array.from(this.color).map(c => c / 255) : [0, 0, 0];\n      const strokeAlpha = parameters.dict.get(\"CA\");\n      const borderWidth = this.borderStyle.width || 1,\n            borderAdjust = 2 * borderWidth;\n      const bbox = [Infinity, Infinity, -Infinity, -Infinity];\n\n      for (const inkLists of this.data.inkLists) {\n        for (const vertex of inkLists) {\n          bbox[0] = Math.min(bbox[0], vertex.x - borderAdjust);\n          bbox[1] = Math.min(bbox[1], vertex.y - borderAdjust);\n          bbox[2] = Math.max(bbox[2], vertex.x + borderAdjust);\n          bbox[3] = Math.max(bbox[3], vertex.y + borderAdjust);\n        }\n      }\n\n      if (!_util.Util.intersect(this.rectangle, bbox)) {\n        this.rectangle = bbox;\n      }\n\n      this._setDefaultAppearance({\n        xref: parameters.xref,\n        extra: `${borderWidth} w`,\n        strokeColor,\n        strokeAlpha,\n        pointsCallback: (buffer, points) => {\n          for (const inkList of this.data.inkLists) {\n            for (let i = 0, ii = inkList.length; i < ii; i++) {\n              buffer.push(`${inkList[i].x} ${inkList[i].y} ${i === 0 ? \"m\" : \"l\"}`);\n            }\n\n            buffer.push(\"S\");\n          }\n\n          return [points[0].x, points[1].x, points[3].y, points[1].y];\n        }\n      });\n    }\n  }\n\n}\n\nclass HighlightAnnotation extends MarkupAnnotation {\n  constructor(parameters) {\n    super(parameters);\n    this.data.annotationType = _util.AnnotationType.HIGHLIGHT;\n    const quadPoints = this.data.quadPoints = getQuadPoints(parameters.dict, null);\n\n    if (quadPoints) {\n      const resources = this.appearance && this.appearance.dict.get(\"Resources\");\n\n      if (!this.appearance || !(resources && resources.has(\"ExtGState\"))) {\n        if (this.appearance) {\n          (0, _util.warn)(\"HighlightAnnotation - ignoring built-in appearance stream.\");\n        }\n\n        const fillColor = this.color ? Array.from(this.color).map(c => c / 255) : [1, 1, 0];\n        const fillAlpha = parameters.dict.get(\"CA\");\n\n        this._setDefaultAppearance({\n          xref: parameters.xref,\n          fillColor,\n          blendMode: \"Multiply\",\n          fillAlpha,\n          pointsCallback: (buffer, points) => {\n            buffer.push(`${points[0].x} ${points[0].y} m`, `${points[1].x} ${points[1].y} l`, `${points[3].x} ${points[3].y} l`, `${points[2].x} ${points[2].y} l`, \"f\");\n            return [points[0].x, points[1].x, points[3].y, points[1].y];\n          }\n        });\n      }\n    } else {\n      this.data.hasPopup = false;\n    }\n  }\n\n}\n\nclass UnderlineAnnotation extends MarkupAnnotation {\n  constructor(parameters) {\n    super(parameters);\n    this.data.annotationType = _util.AnnotationType.UNDERLINE;\n    const quadPoints = this.data.quadPoints = getQuadPoints(parameters.dict, null);\n\n    if (quadPoints) {\n      if (!this.appearance) {\n        const strokeColor = this.color ? Array.from(this.color).map(c => c / 255) : [0, 0, 0];\n        const strokeAlpha = parameters.dict.get(\"CA\");\n\n        this._setDefaultAppearance({\n          xref: parameters.xref,\n          extra: \"[] 0 d 1 w\",\n          strokeColor,\n          strokeAlpha,\n          pointsCallback: (buffer, points) => {\n            buffer.push(`${points[2].x} ${points[2].y} m`, `${points[3].x} ${points[3].y} l`, \"S\");\n            return [points[0].x, points[1].x, points[3].y, points[1].y];\n          }\n        });\n      }\n    } else {\n      this.data.hasPopup = false;\n    }\n  }\n\n}\n\nclass SquigglyAnnotation extends MarkupAnnotation {\n  constructor(parameters) {\n    super(parameters);\n    this.data.annotationType = _util.AnnotationType.SQUIGGLY;\n    const quadPoints = this.data.quadPoints = getQuadPoints(parameters.dict, null);\n\n    if (quadPoints) {\n      if (!this.appearance) {\n        const strokeColor = this.color ? Array.from(this.color).map(c => c / 255) : [0, 0, 0];\n        const strokeAlpha = parameters.dict.get(\"CA\");\n\n        this._setDefaultAppearance({\n          xref: parameters.xref,\n          extra: \"[] 0 d 1 w\",\n          strokeColor,\n          strokeAlpha,\n          pointsCallback: (buffer, points) => {\n            const dy = (points[0].y - points[2].y) / 6;\n            let shift = dy;\n            let x = points[2].x;\n            const y = points[2].y;\n            const xEnd = points[3].x;\n            buffer.push(`${x} ${y + shift} m`);\n\n            do {\n              x += 2;\n              shift = shift === 0 ? dy : 0;\n              buffer.push(`${x} ${y + shift} l`);\n            } while (x < xEnd);\n\n            buffer.push(\"S\");\n            return [points[2].x, xEnd, y - 2 * dy, y + 2 * dy];\n          }\n        });\n      }\n    } else {\n      this.data.hasPopup = false;\n    }\n  }\n\n}\n\nclass StrikeOutAnnotation extends MarkupAnnotation {\n  constructor(parameters) {\n    super(parameters);\n    this.data.annotationType = _util.AnnotationType.STRIKEOUT;\n    const quadPoints = this.data.quadPoints = getQuadPoints(parameters.dict, null);\n\n    if (quadPoints) {\n      if (!this.appearance) {\n        const strokeColor = this.color ? Array.from(this.color).map(c => c / 255) : [0, 0, 0];\n        const strokeAlpha = parameters.dict.get(\"CA\");\n\n        this._setDefaultAppearance({\n          xref: parameters.xref,\n          extra: \"[] 0 d 1 w\",\n          strokeColor,\n          strokeAlpha,\n          pointsCallback: (buffer, points) => {\n            buffer.push(`${(points[0].x + points[2].x) / 2} ` + `${(points[0].y + points[2].y) / 2} m`, `${(points[1].x + points[3].x) / 2} ` + `${(points[1].y + points[3].y) / 2} l`, \"S\");\n            return [points[0].x, points[1].x, points[3].y, points[1].y];\n          }\n        });\n      }\n    } else {\n      this.data.hasPopup = false;\n    }\n  }\n\n}\n\nclass StampAnnotation extends MarkupAnnotation {\n  constructor(parameters) {\n    super(parameters);\n    this.data.annotationType = _util.AnnotationType.STAMP;\n  }\n\n}\n\nclass FileAttachmentAnnotation extends MarkupAnnotation {\n  constructor(parameters) {\n    super(parameters);\n    const file = new _file_spec.FileSpec(parameters.dict.get(\"FS\"), parameters.xref);\n    this.data.annotationType = _util.AnnotationType.FILEATTACHMENT;\n    this.data.file = file.serializable;\n  }\n\n}\n\n/***/ }),\n/* 23 */\n/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {\n\n\n\nObject.defineProperty(exports, \"__esModule\", ({\n  value: true\n}));\nexports.createDefaultAppearance = createDefaultAppearance;\nexports.parseDefaultAppearance = parseDefaultAppearance;\n\nvar _util = __w_pdfjs_require__(2);\n\nvar _colorspace = __w_pdfjs_require__(24);\n\nvar _core_utils = __w_pdfjs_require__(8);\n\nvar _evaluator = __w_pdfjs_require__(25);\n\nvar _primitives = __w_pdfjs_require__(5);\n\nvar _stream = __w_pdfjs_require__(10);\n\nclass DefaultAppearanceEvaluator extends _evaluator.EvaluatorPreprocessor {\n  constructor(str) {\n    super(new _stream.StringStream(str));\n  }\n\n  parse() {\n    const operation = {\n      fn: 0,\n      args: []\n    };\n    const result = {\n      fontSize: 0,\n      fontName: \"\",\n      fontColor: new Uint8ClampedArray(3)\n    };\n\n    try {\n      while (true) {\n        operation.args.length = 0;\n\n        if (!this.read(operation)) {\n          break;\n        }\n\n        if (this.savedStatesDepth !== 0) {\n          continue;\n        }\n\n        const {\n          fn,\n          args\n        } = operation;\n\n        switch (fn | 0) {\n          case _util.OPS.setFont:\n            const [fontName, fontSize] = args;\n\n            if (fontName instanceof _primitives.Name) {\n              result.fontName = fontName.name;\n            }\n\n            if (typeof fontSize === \"number\" && fontSize > 0) {\n              result.fontSize = fontSize;\n            }\n\n            break;\n\n          case _util.OPS.setFillRGBColor:\n            _colorspace.ColorSpace.singletons.rgb.getRgbItem(args, 0, result.fontColor, 0);\n\n            break;\n\n          case _util.OPS.setFillGray:\n            _colorspace.ColorSpace.singletons.gray.getRgbItem(args, 0, result.fontColor, 0);\n\n            break;\n\n          case _util.OPS.setFillColorSpace:\n            _colorspace.ColorSpace.singletons.cmyk.getRgbItem(args, 0, result.fontColor, 0);\n\n            break;\n        }\n      }\n    } catch (reason) {\n      (0, _util.warn)(`parseDefaultAppearance - ignoring errors: \"${reason}\".`);\n    }\n\n    return result;\n  }\n\n}\n\nfunction parseDefaultAppearance(str) {\n  return new DefaultAppearanceEvaluator(str).parse();\n}\n\nfunction createDefaultAppearance({\n  fontSize,\n  fontName,\n  fontColor\n}) {\n  let colorCmd;\n\n  if (fontColor.every(c => c === 0)) {\n    colorCmd = \"0 g\";\n  } else {\n    colorCmd = Array.from(fontColor).map(c => (c / 255).toFixed(2)).join(\" \") + \" rg\";\n  }\n\n  return `/${(0, _core_utils.escapePDFName)(fontName)} ${fontSize} Tf ${colorCmd}`;\n}\n\n/***/ }),\n/* 24 */\n/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {\n\n\n\nObject.defineProperty(exports, \"__esModule\", ({\n  value: true\n}));\nexports.ColorSpace = void 0;\n\nvar _util = __w_pdfjs_require__(2);\n\nvar _primitives = __w_pdfjs_require__(5);\n\nvar _base_stream = __w_pdfjs_require__(9);\n\nvar _core_utils = __w_pdfjs_require__(8);\n\nfunction resizeRgbImage(src, dest, w1, h1, w2, h2, alpha01) {\n  const COMPONENTS = 3;\n  alpha01 = alpha01 !== 1 ? 0 : alpha01;\n  const xRatio = w1 / w2;\n  const yRatio = h1 / h2;\n  let newIndex = 0,\n      oldIndex;\n  const xScaled = new Uint16Array(w2);\n  const w1Scanline = w1 * COMPONENTS;\n\n  for (let i = 0; i < w2; i++) {\n    xScaled[i] = Math.floor(i * xRatio) * COMPONENTS;\n  }\n\n  for (let i = 0; i < h2; i++) {\n    const py = Math.floor(i * yRatio) * w1Scanline;\n\n    for (let j = 0; j < w2; j++) {\n      oldIndex = py + xScaled[j];\n      dest[newIndex++] = src[oldIndex++];\n      dest[newIndex++] = src[oldIndex++];\n      dest[newIndex++] = src[oldIndex++];\n      newIndex += alpha01;\n    }\n  }\n}\n\nclass ColorSpace {\n  constructor(name, numComps) {\n    if (this.constructor === ColorSpace) {\n      (0, _util.unreachable)(\"Cannot initialize ColorSpace.\");\n    }\n\n    this.name = name;\n    this.numComps = numComps;\n  }\n\n  getRgb(src, srcOffset) {\n    const rgb = new Uint8ClampedArray(3);\n    this.getRgbItem(src, srcOffset, rgb, 0);\n    return rgb;\n  }\n\n  getRgbItem(src, srcOffset, dest, destOffset) {\n    (0, _util.unreachable)(\"Should not call ColorSpace.getRgbItem\");\n  }\n\n  getRgbBuffer(src, srcOffset, count, dest, destOffset, bits, alpha01) {\n    (0, _util.unreachable)(\"Should not call ColorSpace.getRgbBuffer\");\n  }\n\n  getOutputLength(inputLength, alpha01) {\n    (0, _util.unreachable)(\"Should not call ColorSpace.getOutputLength\");\n  }\n\n  isPassthrough(bits) {\n    return false;\n  }\n\n  isDefaultDecode(decodeMap, bpc) {\n    return ColorSpace.isDefaultDecode(decodeMap, this.numComps);\n  }\n\n  fillRgb(dest, originalWidth, originalHeight, width, height, actualHeight, bpc, comps, alpha01) {\n    const count = originalWidth * originalHeight;\n    let rgbBuf = null;\n    const numComponentColors = 1 << bpc;\n    const needsResizing = originalHeight !== height || originalWidth !== width;\n\n    if (this.isPassthrough(bpc)) {\n      rgbBuf = comps;\n    } else if (this.numComps === 1 && count > numComponentColors && this.name !== \"DeviceGray\" && this.name !== \"DeviceRGB\") {\n      const allColors = bpc <= 8 ? new Uint8Array(numComponentColors) : new Uint16Array(numComponentColors);\n\n      for (let i = 0; i < numComponentColors; i++) {\n        allColors[i] = i;\n      }\n\n      const colorMap = new Uint8ClampedArray(numComponentColors * 3);\n      this.getRgbBuffer(allColors, 0, numComponentColors, colorMap, 0, bpc, 0);\n\n      if (!needsResizing) {\n        let destPos = 0;\n\n        for (let i = 0; i < count; ++i) {\n          const key = comps[i] * 3;\n          dest[destPos++] = colorMap[key];\n          dest[destPos++] = colorMap[key + 1];\n          dest[destPos++] = colorMap[key + 2];\n          destPos += alpha01;\n        }\n      } else {\n        rgbBuf = new Uint8Array(count * 3);\n        let rgbPos = 0;\n\n        for (let i = 0; i < count; ++i) {\n          const key = comps[i] * 3;\n          rgbBuf[rgbPos++] = colorMap[key];\n          rgbBuf[rgbPos++] = colorMap[key + 1];\n          rgbBuf[rgbPos++] = colorMap[key + 2];\n        }\n      }\n    } else {\n      if (!needsResizing) {\n        this.getRgbBuffer(comps, 0, width * actualHeight, dest, 0, bpc, alpha01);\n      } else {\n        rgbBuf = new Uint8ClampedArray(count * 3);\n        this.getRgbBuffer(comps, 0, count, rgbBuf, 0, bpc, 0);\n      }\n    }\n\n    if (rgbBuf) {\n      if (needsResizing) {\n        resizeRgbImage(rgbBuf, dest, originalWidth, originalHeight, width, height, alpha01);\n      } else {\n        let destPos = 0,\n            rgbPos = 0;\n\n        for (let i = 0, ii = width * actualHeight; i < ii; i++) {\n          dest[destPos++] = rgbBuf[rgbPos++];\n          dest[destPos++] = rgbBuf[rgbPos++];\n          dest[destPos++] = rgbBuf[rgbPos++];\n          destPos += alpha01;\n        }\n      }\n    }\n  }\n\n  get usesZeroToOneRange() {\n    return (0, _util.shadow)(this, \"usesZeroToOneRange\", true);\n  }\n\n  static _cache(cacheKey, xref, localColorSpaceCache, parsedColorSpace) {\n    if (!localColorSpaceCache) {\n      throw new Error('ColorSpace._cache - expected \"localColorSpaceCache\" argument.');\n    }\n\n    if (!parsedColorSpace) {\n      throw new Error('ColorSpace._cache - expected \"parsedColorSpace\" argument.');\n    }\n\n    let csName, csRef;\n\n    if (cacheKey instanceof _primitives.Ref) {\n      csRef = cacheKey;\n      cacheKey = xref.fetch(cacheKey);\n    }\n\n    if (cacheKey instanceof _primitives.Name) {\n      csName = cacheKey.name;\n    }\n\n    if (csName || csRef) {\n      localColorSpaceCache.set(csName, csRef, parsedColorSpace);\n    }\n  }\n\n  static getCached(cacheKey, xref, localColorSpaceCache) {\n    if (!localColorSpaceCache) {\n      throw new Error('ColorSpace.getCached - expected \"localColorSpaceCache\" argument.');\n    }\n\n    if (cacheKey instanceof _primitives.Ref) {\n      const localColorSpace = localColorSpaceCache.getByRef(cacheKey);\n\n      if (localColorSpace) {\n        return localColorSpace;\n      }\n\n      try {\n        cacheKey = xref.fetch(cacheKey);\n      } catch (ex) {\n        if (ex instanceof _core_utils.MissingDataException) {\n          throw ex;\n        }\n      }\n    }\n\n    if (cacheKey instanceof _primitives.Name) {\n      const localColorSpace = localColorSpaceCache.getByName(cacheKey.name);\n\n      if (localColorSpace) {\n        return localColorSpace;\n      }\n    }\n\n    return null;\n  }\n\n  static async parseAsync({\n    cs,\n    xref,\n    resources = null,\n    pdfFunctionFactory,\n    localColorSpaceCache\n  }) {\n    const parsedColorSpace = this._parse(cs, xref, resources, pdfFunctionFactory);\n\n    this._cache(cs, xref, localColorSpaceCache, parsedColorSpace);\n\n    return parsedColorSpace;\n  }\n\n  static parse({\n    cs,\n    xref,\n    resources = null,\n    pdfFunctionFactory,\n    localColorSpaceCache\n  }) {\n    const cachedColorSpace = this.getCached(cs, xref, localColorSpaceCache);\n\n    if (cachedColorSpace) {\n      return cachedColorSpace;\n    }\n\n    const parsedColorSpace = this._parse(cs, xref, resources, pdfFunctionFactory);\n\n    this._cache(cs, xref, localColorSpaceCache, parsedColorSpace);\n\n    return parsedColorSpace;\n  }\n\n  static _parse(cs, xref, resources = null, pdfFunctionFactory) {\n    cs = xref.fetchIfRef(cs);\n\n    if (cs instanceof _primitives.Name) {\n      switch (cs.name) {\n        case \"G\":\n        case \"DeviceGray\":\n          return this.singletons.gray;\n\n        case \"RGB\":\n        case \"DeviceRGB\":\n          return this.singletons.rgb;\n\n        case \"CMYK\":\n        case \"DeviceCMYK\":\n          return this.singletons.cmyk;\n\n        case \"Pattern\":\n          return new PatternCS(null);\n\n        default:\n          if (resources instanceof _primitives.Dict) {\n            const colorSpaces = resources.get(\"ColorSpace\");\n\n            if (colorSpaces instanceof _primitives.Dict) {\n              const resourcesCS = colorSpaces.get(cs.name);\n\n              if (resourcesCS) {\n                if (resourcesCS instanceof _primitives.Name) {\n                  return this._parse(resourcesCS, xref, resources, pdfFunctionFactory);\n                }\n\n                cs = resourcesCS;\n                break;\n              }\n            }\n          }\n\n          throw new _util.FormatError(`Unrecognized ColorSpace: ${cs.name}`);\n      }\n    }\n\n    if (Array.isArray(cs)) {\n      const mode = xref.fetchIfRef(cs[0]).name;\n      let params, numComps, baseCS, whitePoint, blackPoint, gamma;\n\n      switch (mode) {\n        case \"G\":\n        case \"DeviceGray\":\n          return this.singletons.gray;\n\n        case \"RGB\":\n        case \"DeviceRGB\":\n          return this.singletons.rgb;\n\n        case \"CMYK\":\n        case \"DeviceCMYK\":\n          return this.singletons.cmyk;\n\n        case \"CalGray\":\n          params = xref.fetchIfRef(cs[1]);\n          whitePoint = params.getArray(\"WhitePoint\");\n          blackPoint = params.getArray(\"BlackPoint\");\n          gamma = params.get(\"Gamma\");\n          return new CalGrayCS(whitePoint, blackPoint, gamma);\n\n        case \"CalRGB\":\n          params = xref.fetchIfRef(cs[1]);\n          whitePoint = params.getArray(\"WhitePoint\");\n          blackPoint = params.getArray(\"BlackPoint\");\n          gamma = params.getArray(\"Gamma\");\n          const matrix = params.getArray(\"Matrix\");\n          return new CalRGBCS(whitePoint, blackPoint, gamma, matrix);\n\n        case \"ICCBased\":\n          const stream = xref.fetchIfRef(cs[1]);\n          const dict = stream.dict;\n          numComps = dict.get(\"N\");\n          const alt = dict.get(\"Alternate\");\n\n          if (alt) {\n            const altCS = this._parse(alt, xref, resources, pdfFunctionFactory);\n\n            if (altCS.numComps === numComps) {\n              return altCS;\n            }\n\n            (0, _util.warn)(\"ICCBased color space: Ignoring incorrect /Alternate entry.\");\n          }\n\n          if (numComps === 1) {\n            return this.singletons.gray;\n          } else if (numComps === 3) {\n            return this.singletons.rgb;\n          } else if (numComps === 4) {\n            return this.singletons.cmyk;\n          }\n\n          break;\n\n        case \"Pattern\":\n          baseCS = cs[1] || null;\n\n          if (baseCS) {\n            baseCS = this._parse(baseCS, xref, resources, pdfFunctionFactory);\n          }\n\n          return new PatternCS(baseCS);\n\n        case \"I\":\n        case \"Indexed\":\n          baseCS = this._parse(cs[1], xref, resources, pdfFunctionFactory);\n          const hiVal = xref.fetchIfRef(cs[2]) + 1;\n          const lookup = xref.fetchIfRef(cs[3]);\n          return new IndexedCS(baseCS, hiVal, lookup);\n\n        case \"Separation\":\n        case \"DeviceN\":\n          const name = xref.fetchIfRef(cs[1]);\n          numComps = Array.isArray(name) ? name.length : 1;\n          baseCS = this._parse(cs[2], xref, resources, pdfFunctionFactory);\n          const tintFn = pdfFunctionFactory.create(cs[3]);\n          return new AlternateCS(numComps, baseCS, tintFn);\n\n        case \"Lab\":\n          params = xref.fetchIfRef(cs[1]);\n          whitePoint = params.getArray(\"WhitePoint\");\n          blackPoint = params.getArray(\"BlackPoint\");\n          const range = params.getArray(\"Range\");\n          return new LabCS(whitePoint, blackPoint, range);\n\n        default:\n          throw new _util.FormatError(`Unimplemented ColorSpace object: ${mode}`);\n      }\n    }\n\n    throw new _util.FormatError(`Unrecognized ColorSpace object: ${cs}`);\n  }\n\n  static isDefaultDecode(decode, numComps) {\n    if (!Array.isArray(decode)) {\n      return true;\n    }\n\n    if (numComps * 2 !== decode.length) {\n      (0, _util.warn)(\"The decode map is not the correct length\");\n      return true;\n    }\n\n    for (let i = 0, ii = decode.length; i < ii; i += 2) {\n      if (decode[i] !== 0 || decode[i + 1] !== 1) {\n        return false;\n      }\n    }\n\n    return true;\n  }\n\n  static get singletons() {\n    return (0, _util.shadow)(this, \"singletons\", {\n      get gray() {\n        return (0, _util.shadow)(this, \"gray\", new DeviceGrayCS());\n      },\n\n      get rgb() {\n        return (0, _util.shadow)(this, \"rgb\", new DeviceRgbCS());\n      },\n\n      get cmyk() {\n        return (0, _util.shadow)(this, \"cmyk\", new DeviceCmykCS());\n      }\n\n    });\n  }\n\n}\n\nexports.ColorSpace = ColorSpace;\n\nclass AlternateCS extends ColorSpace {\n  constructor(numComps, base, tintFn) {\n    super(\"Alternate\", numComps);\n    this.base = base;\n    this.tintFn = tintFn;\n    this.tmpBuf = new Float32Array(base.numComps);\n  }\n\n  getRgbItem(src, srcOffset, dest, destOffset) {\n    const tmpBuf = this.tmpBuf;\n    this.tintFn(src, srcOffset, tmpBuf, 0);\n    this.base.getRgbItem(tmpBuf, 0, dest, destOffset);\n  }\n\n  getRgbBuffer(src, srcOffset, count, dest, destOffset, bits, alpha01) {\n    const tintFn = this.tintFn;\n    const base = this.base;\n    const scale = 1 / ((1 << bits) - 1);\n    const baseNumComps = base.numComps;\n    const usesZeroToOneRange = base.usesZeroToOneRange;\n    const isPassthrough = (base.isPassthrough(8) || !usesZeroToOneRange) && alpha01 === 0;\n    let pos = isPassthrough ? destOffset : 0;\n    const baseBuf = isPassthrough ? dest : new Uint8ClampedArray(baseNumComps * count);\n    const numComps = this.numComps;\n    const scaled = new Float32Array(numComps);\n    const tinted = new Float32Array(baseNumComps);\n    let i, j;\n\n    for (i = 0; i < count; i++) {\n      for (j = 0; j < numComps; j++) {\n        scaled[j] = src[srcOffset++] * scale;\n      }\n\n      tintFn(scaled, 0, tinted, 0);\n\n      if (usesZeroToOneRange) {\n        for (j = 0; j < baseNumComps; j++) {\n          baseBuf[pos++] = tinted[j] * 255;\n        }\n      } else {\n        base.getRgbItem(tinted, 0, baseBuf, pos);\n        pos += baseNumComps;\n      }\n    }\n\n    if (!isPassthrough) {\n      base.getRgbBuffer(baseBuf, 0, count, dest, destOffset, 8, alpha01);\n    }\n  }\n\n  getOutputLength(inputLength, alpha01) {\n    return this.base.getOutputLength(inputLength * this.base.numComps / this.numComps, alpha01);\n  }\n\n}\n\nclass PatternCS extends ColorSpace {\n  constructor(baseCS) {\n    super(\"Pattern\", null);\n    this.base = baseCS;\n  }\n\n  isDefaultDecode(decodeMap, bpc) {\n    (0, _util.unreachable)(\"Should not call PatternCS.isDefaultDecode\");\n  }\n\n}\n\nclass IndexedCS extends ColorSpace {\n  constructor(base, highVal, lookup) {\n    super(\"Indexed\", 1);\n    this.base = base;\n    this.highVal = highVal;\n    const length = base.numComps * highVal;\n    this.lookup = new Uint8Array(length);\n\n    if (lookup instanceof _base_stream.BaseStream) {\n      const bytes = lookup.getBytes(length);\n      this.lookup.set(bytes);\n    } else if (typeof lookup === \"string\") {\n      for (let i = 0; i < length; ++i) {\n        this.lookup[i] = lookup.charCodeAt(i) & 0xff;\n      }\n    } else {\n      throw new _util.FormatError(`IndexedCS - unrecognized lookup table: ${lookup}`);\n    }\n  }\n\n  getRgbItem(src, srcOffset, dest, destOffset) {\n    const numComps = this.base.numComps;\n    const start = src[srcOffset] * numComps;\n    this.base.getRgbBuffer(this.lookup, start, 1, dest, destOffset, 8, 0);\n  }\n\n  getRgbBuffer(src, srcOffset, count, dest, destOffset, bits, alpha01) {\n    const base = this.base;\n    const numComps = base.numComps;\n    const outputDelta = base.getOutputLength(numComps, alpha01);\n    const lookup = this.lookup;\n\n    for (let i = 0; i < count; ++i) {\n      const lookupPos = src[srcOffset++] * numComps;\n      base.getRgbBuffer(lookup, lookupPos, 1, dest, destOffset, 8, alpha01);\n      destOffset += outputDelta;\n    }\n  }\n\n  getOutputLength(inputLength, alpha01) {\n    return this.base.getOutputLength(inputLength * this.base.numComps, alpha01);\n  }\n\n  isDefaultDecode(decodeMap, bpc) {\n    if (!Array.isArray(decodeMap)) {\n      return true;\n    }\n\n    if (decodeMap.length !== 2) {\n      (0, _util.warn)(\"Decode map length is not correct\");\n      return true;\n    }\n\n    if (!Number.isInteger(bpc) || bpc < 1) {\n      (0, _util.warn)(\"Bits per component is not correct\");\n      return true;\n    }\n\n    return decodeMap[0] === 0 && decodeMap[1] === (1 << bpc) - 1;\n  }\n\n}\n\nclass DeviceGrayCS extends ColorSpace {\n  constructor() {\n    super(\"DeviceGray\", 1);\n  }\n\n  getRgbItem(src, srcOffset, dest, destOffset) {\n    const c = src[srcOffset] * 255;\n    dest[destOffset] = dest[destOffset + 1] = dest[destOffset + 2] = c;\n  }\n\n  getRgbBuffer(src, srcOffset, count, dest, destOffset, bits, alpha01) {\n    const scale = 255 / ((1 << bits) - 1);\n    let j = srcOffset,\n        q = destOffset;\n\n    for (let i = 0; i < count; ++i) {\n      const c = scale * src[j++];\n      dest[q++] = c;\n      dest[q++] = c;\n      dest[q++] = c;\n      q += alpha01;\n    }\n  }\n\n  getOutputLength(inputLength, alpha01) {\n    return inputLength * (3 + alpha01);\n  }\n\n}\n\nclass DeviceRgbCS extends ColorSpace {\n  constructor() {\n    super(\"DeviceRGB\", 3);\n  }\n\n  getRgbItem(src, srcOffset, dest, destOffset) {\n    dest[destOffset] = src[srcOffset] * 255;\n    dest[destOffset + 1] = src[srcOffset + 1] * 255;\n    dest[destOffset + 2] = src[srcOffset + 2] * 255;\n  }\n\n  getRgbBuffer(src, srcOffset, count, dest, destOffset, bits, alpha01) {\n    if (bits === 8 && alpha01 === 0) {\n      dest.set(src.subarray(srcOffset, srcOffset + count * 3), destOffset);\n      return;\n    }\n\n    const scale = 255 / ((1 << bits) - 1);\n    let j = srcOffset,\n        q = destOffset;\n\n    for (let i = 0; i < count; ++i) {\n      dest[q++] = scale * src[j++];\n      dest[q++] = scale * src[j++];\n      dest[q++] = scale * src[j++];\n      q += alpha01;\n    }\n  }\n\n  getOutputLength(inputLength, alpha01) {\n    return inputLength * (3 + alpha01) / 3 | 0;\n  }\n\n  isPassthrough(bits) {\n    return bits === 8;\n  }\n\n}\n\nconst DeviceCmykCS = function DeviceCmykCSClosure() {\n  function convertToRgb(src, srcOffset, srcScale, dest, destOffset) {\n    const c = src[srcOffset] * srcScale;\n    const m = src[srcOffset + 1] * srcScale;\n    const y = src[srcOffset + 2] * srcScale;\n    const k = src[srcOffset + 3] * srcScale;\n    dest[destOffset] = 255 + c * (-4.387332384609988 * c + 54.48615194189176 * m + 18.82290502165302 * y + 212.25662451639585 * k + -285.2331026137004) + m * (1.7149763477362134 * m - 5.6096736904047315 * y + -17.873870861415444 * k - 5.497006427196366) + y * (-2.5217340131683033 * y - 21.248923337353073 * k + 17.5119270841813) + k * (-21.86122147463605 * k - 189.48180835922747);\n    dest[destOffset + 1] = 255 + c * (8.841041422036149 * c + 60.118027045597366 * m + 6.871425592049007 * y + 31.159100130055922 * k + -79.2970844816548) + m * (-15.310361306967817 * m + 17.575251261109482 * y + 131.35250912493976 * k - 190.9453302588951) + y * (4.444339102852739 * y + 9.8632861493405 * k - 24.86741582555878) + k * (-20.737325471181034 * k - 187.80453709719578);\n    dest[destOffset + 2] = 255 + c * (0.8842522430003296 * c + 8.078677503112928 * m + 30.89978309703729 * y - 0.23883238689178934 * k + -14.183576799673286) + m * (10.49593273432072 * m + 63.02378494754052 * y + 50.606957656360734 * k - 112.23884253719248) + y * (0.03296041114873217 * y + 115.60384449646641 * k + -193.58209356861505) + k * (-22.33816807309886 * k - 180.12613974708367);\n  }\n\n  class DeviceCmykCS extends ColorSpace {\n    constructor() {\n      super(\"DeviceCMYK\", 4);\n    }\n\n    getRgbItem(src, srcOffset, dest, destOffset) {\n      convertToRgb(src, srcOffset, 1, dest, destOffset);\n    }\n\n    getRgbBuffer(src, srcOffset, count, dest, destOffset, bits, alpha01) {\n      const scale = 1 / ((1 << bits) - 1);\n\n      for (let i = 0; i < count; i++) {\n        convertToRgb(src, srcOffset, scale, dest, destOffset);\n        srcOffset += 4;\n        destOffset += 3 + alpha01;\n      }\n    }\n\n    getOutputLength(inputLength, alpha01) {\n      return inputLength / 4 * (3 + alpha01) | 0;\n    }\n\n  }\n\n  return DeviceCmykCS;\n}();\n\nconst CalGrayCS = function CalGrayCSClosure() {\n  function convertToRgb(cs, src, srcOffset, dest, destOffset, scale) {\n    const A = src[srcOffset] * scale;\n    const AG = A ** cs.G;\n    const L = cs.YW * AG;\n    const val = Math.max(295.8 * L ** 0.3333333333333333 - 40.8, 0);\n    dest[destOffset] = val;\n    dest[destOffset + 1] = val;\n    dest[destOffset + 2] = val;\n  }\n\n  class CalGrayCS extends ColorSpace {\n    constructor(whitePoint, blackPoint, gamma) {\n      super(\"CalGray\", 1);\n\n      if (!whitePoint) {\n        throw new _util.FormatError(\"WhitePoint missing - required for color space CalGray\");\n      }\n\n      blackPoint = blackPoint || [0, 0, 0];\n      gamma = gamma || 1;\n      this.XW = whitePoint[0];\n      this.YW = whitePoint[1];\n      this.ZW = whitePoint[2];\n      this.XB = blackPoint[0];\n      this.YB = blackPoint[1];\n      this.ZB = blackPoint[2];\n      this.G = gamma;\n\n      if (this.XW < 0 || this.ZW < 0 || this.YW !== 1) {\n        throw new _util.FormatError(`Invalid WhitePoint components for ${this.name}` + \", no fallback available\");\n      }\n\n      if (this.XB < 0 || this.YB < 0 || this.ZB < 0) {\n        (0, _util.info)(`Invalid BlackPoint for ${this.name}, falling back to default.`);\n        this.XB = this.YB = this.ZB = 0;\n      }\n\n      if (this.XB !== 0 || this.YB !== 0 || this.ZB !== 0) {\n        (0, _util.warn)(`${this.name}, BlackPoint: XB: ${this.XB}, YB: ${this.YB}, ` + `ZB: ${this.ZB}, only default values are supported.`);\n      }\n\n      if (this.G < 1) {\n        (0, _util.info)(`Invalid Gamma: ${this.G} for ${this.name}, ` + \"falling back to default.\");\n        this.G = 1;\n      }\n    }\n\n    getRgbItem(src, srcOffset, dest, destOffset) {\n      convertToRgb(this, src, srcOffset, dest, destOffset, 1);\n    }\n\n    getRgbBuffer(src, srcOffset, count, dest, destOffset, bits, alpha01) {\n      const scale = 1 / ((1 << bits) - 1);\n\n      for (let i = 0; i < count; ++i) {\n        convertToRgb(this, src, srcOffset, dest, destOffset, scale);\n        srcOffset += 1;\n        destOffset += 3 + alpha01;\n      }\n    }\n\n    getOutputLength(inputLength, alpha01) {\n      return inputLength * (3 + alpha01);\n    }\n\n  }\n\n  return CalGrayCS;\n}();\n\nconst CalRGBCS = function CalRGBCSClosure() {\n  const BRADFORD_SCALE_MATRIX = new Float32Array([0.8951, 0.2664, -0.1614, -0.7502, 1.7135, 0.0367, 0.0389, -0.0685, 1.0296]);\n  const BRADFORD_SCALE_INVERSE_MATRIX = new Float32Array([0.9869929, -0.1470543, 0.1599627, 0.4323053, 0.5183603, 0.0492912, -0.0085287, 0.0400428, 0.9684867]);\n  const SRGB_D65_XYZ_TO_RGB_MATRIX = new Float32Array([3.2404542, -1.5371385, -0.4985314, -0.9692660, 1.8760108, 0.0415560, 0.0556434, -0.2040259, 1.0572252]);\n  const FLAT_WHITEPOINT_MATRIX = new Float32Array([1, 1, 1]);\n  const tempNormalizeMatrix = new Float32Array(3);\n  const tempConvertMatrix1 = new Float32Array(3);\n  const tempConvertMatrix2 = new Float32Array(3);\n  const DECODE_L_CONSTANT = ((8 + 16) / 116) ** 3 / 8.0;\n\n  function matrixProduct(a, b, result) {\n    result[0] = a[0] * b[0] + a[1] * b[1] + a[2] * b[2];\n    result[1] = a[3] * b[0] + a[4] * b[1] + a[5] * b[2];\n    result[2] = a[6] * b[0] + a[7] * b[1] + a[8] * b[2];\n  }\n\n  function convertToFlat(sourceWhitePoint, LMS, result) {\n    result[0] = LMS[0] * 1 / sourceWhitePoint[0];\n    result[1] = LMS[1] * 1 / sourceWhitePoint[1];\n    result[2] = LMS[2] * 1 / sourceWhitePoint[2];\n  }\n\n  function convertToD65(sourceWhitePoint, LMS, result) {\n    const D65X = 0.95047;\n    const D65Y = 1;\n    const D65Z = 1.08883;\n    result[0] = LMS[0] * D65X / sourceWhitePoint[0];\n    result[1] = LMS[1] * D65Y / sourceWhitePoint[1];\n    result[2] = LMS[2] * D65Z / sourceWhitePoint[2];\n  }\n\n  function sRGBTransferFunction(color) {\n    if (color <= 0.0031308) {\n      return adjustToRange(0, 1, 12.92 * color);\n    }\n\n    if (color >= 0.99554525) {\n      return 1;\n    }\n\n    return adjustToRange(0, 1, (1 + 0.055) * color ** (1 / 2.4) - 0.055);\n  }\n\n  function adjustToRange(min, max, value) {\n    return Math.max(min, Math.min(max, value));\n  }\n\n  function decodeL(L) {\n    if (L < 0) {\n      return -decodeL(-L);\n    }\n\n    if (L > 8.0) {\n      return ((L + 16) / 116) ** 3;\n    }\n\n    return L * DECODE_L_CONSTANT;\n  }\n\n  function compensateBlackPoint(sourceBlackPoint, XYZ_Flat, result) {\n    if (sourceBlackPoint[0] === 0 && sourceBlackPoint[1] === 0 && sourceBlackPoint[2] === 0) {\n      result[0] = XYZ_Flat[0];\n      result[1] = XYZ_Flat[1];\n      result[2] = XYZ_Flat[2];\n      return;\n    }\n\n    const zeroDecodeL = decodeL(0);\n    const X_DST = zeroDecodeL;\n    const X_SRC = decodeL(sourceBlackPoint[0]);\n    const Y_DST = zeroDecodeL;\n    const Y_SRC = decodeL(sourceBlackPoint[1]);\n    const Z_DST = zeroDecodeL;\n    const Z_SRC = decodeL(sourceBlackPoint[2]);\n    const X_Scale = (1 - X_DST) / (1 - X_SRC);\n    const X_Offset = 1 - X_Scale;\n    const Y_Scale = (1 - Y_DST) / (1 - Y_SRC);\n    const Y_Offset = 1 - Y_Scale;\n    const Z_Scale = (1 - Z_DST) / (1 - Z_SRC);\n    const Z_Offset = 1 - Z_Scale;\n    result[0] = XYZ_Flat[0] * X_Scale + X_Offset;\n    result[1] = XYZ_Flat[1] * Y_Scale + Y_Offset;\n    result[2] = XYZ_Flat[2] * Z_Scale + Z_Offset;\n  }\n\n  function normalizeWhitePointToFlat(sourceWhitePoint, XYZ_In, result) {\n    if (sourceWhitePoint[0] === 1 && sourceWhitePoint[2] === 1) {\n      result[0] = XYZ_In[0];\n      result[1] = XYZ_In[1];\n      result[2] = XYZ_In[2];\n      return;\n    }\n\n    const LMS = result;\n    matrixProduct(BRADFORD_SCALE_MATRIX, XYZ_In, LMS);\n    const LMS_Flat = tempNormalizeMatrix;\n    convertToFlat(sourceWhitePoint, LMS, LMS_Flat);\n    matrixProduct(BRADFORD_SCALE_INVERSE_MATRIX, LMS_Flat, result);\n  }\n\n  function normalizeWhitePointToD65(sourceWhitePoint, XYZ_In, result) {\n    const LMS = result;\n    matrixProduct(BRADFORD_SCALE_MATRIX, XYZ_In, LMS);\n    const LMS_D65 = tempNormalizeMatrix;\n    convertToD65(sourceWhitePoint, LMS, LMS_D65);\n    matrixProduct(BRADFORD_SCALE_INVERSE_MATRIX, LMS_D65, result);\n  }\n\n  function convertToRgb(cs, src, srcOffset, dest, destOffset, scale) {\n    const A = adjustToRange(0, 1, src[srcOffset] * scale);\n    const B = adjustToRange(0, 1, src[srcOffset + 1] * scale);\n    const C = adjustToRange(0, 1, src[srcOffset + 2] * scale);\n    const AGR = A === 1 ? 1 : A ** cs.GR;\n    const BGG = B === 1 ? 1 : B ** cs.GG;\n    const CGB = C === 1 ? 1 : C ** cs.GB;\n    const X = cs.MXA * AGR + cs.MXB * BGG + cs.MXC * CGB;\n    const Y = cs.MYA * AGR + cs.MYB * BGG + cs.MYC * CGB;\n    const Z = cs.MZA * AGR + cs.MZB * BGG + cs.MZC * CGB;\n    const XYZ = tempConvertMatrix1;\n    XYZ[0] = X;\n    XYZ[1] = Y;\n    XYZ[2] = Z;\n    const XYZ_Flat = tempConvertMatrix2;\n    normalizeWhitePointToFlat(cs.whitePoint, XYZ, XYZ_Flat);\n    const XYZ_Black = tempConvertMatrix1;\n    compensateBlackPoint(cs.blackPoint, XYZ_Flat, XYZ_Black);\n    const XYZ_D65 = tempConvertMatrix2;\n    normalizeWhitePointToD65(FLAT_WHITEPOINT_MATRIX, XYZ_Black, XYZ_D65);\n    const SRGB = tempConvertMatrix1;\n    matrixProduct(SRGB_D65_XYZ_TO_RGB_MATRIX, XYZ_D65, SRGB);\n    dest[destOffset] = sRGBTransferFunction(SRGB[0]) * 255;\n    dest[destOffset + 1] = sRGBTransferFunction(SRGB[1]) * 255;\n    dest[destOffset + 2] = sRGBTransferFunction(SRGB[2]) * 255;\n  }\n\n  class CalRGBCS extends ColorSpace {\n    constructor(whitePoint, blackPoint, gamma, matrix) {\n      super(\"CalRGB\", 3);\n\n      if (!whitePoint) {\n        throw new _util.FormatError(\"WhitePoint missing - required for color space CalRGB\");\n      }\n\n      blackPoint = blackPoint || new Float32Array(3);\n      gamma = gamma || new Float32Array([1, 1, 1]);\n      matrix = matrix || new Float32Array([1, 0, 0, 0, 1, 0, 0, 0, 1]);\n      const XW = whitePoint[0];\n      const YW = whitePoint[1];\n      const ZW = whitePoint[2];\n      this.whitePoint = whitePoint;\n      const XB = blackPoint[0];\n      const YB = blackPoint[1];\n      const ZB = blackPoint[2];\n      this.blackPoint = blackPoint;\n      this.GR = gamma[0];\n      this.GG = gamma[1];\n      this.GB = gamma[2];\n      this.MXA = matrix[0];\n      this.MYA = matrix[1];\n      this.MZA = matrix[2];\n      this.MXB = matrix[3];\n      this.MYB = matrix[4];\n      this.MZB = matrix[5];\n      this.MXC = matrix[6];\n      this.MYC = matrix[7];\n      this.MZC = matrix[8];\n\n      if (XW < 0 || ZW < 0 || YW !== 1) {\n        throw new _util.FormatError(`Invalid WhitePoint components for ${this.name}` + \", no fallback available\");\n      }\n\n      if (XB < 0 || YB < 0 || ZB < 0) {\n        (0, _util.info)(`Invalid BlackPoint for ${this.name} [${XB}, ${YB}, ${ZB}], ` + \"falling back to default.\");\n        this.blackPoint = new Float32Array(3);\n      }\n\n      if (this.GR < 0 || this.GG < 0 || this.GB < 0) {\n        (0, _util.info)(`Invalid Gamma [${this.GR}, ${this.GG}, ${this.GB}] for ` + `${this.name}, falling back to default.`);\n        this.GR = this.GG = this.GB = 1;\n      }\n    }\n\n    getRgbItem(src, srcOffset, dest, destOffset) {\n      convertToRgb(this, src, srcOffset, dest, destOffset, 1);\n    }\n\n    getRgbBuffer(src, srcOffset, count, dest, destOffset, bits, alpha01) {\n      const scale = 1 / ((1 << bits) - 1);\n\n      for (let i = 0; i < count; ++i) {\n        convertToRgb(this, src, srcOffset, dest, destOffset, scale);\n        srcOffset += 3;\n        destOffset += 3 + alpha01;\n      }\n    }\n\n    getOutputLength(inputLength, alpha01) {\n      return inputLength * (3 + alpha01) / 3 | 0;\n    }\n\n  }\n\n  return CalRGBCS;\n}();\n\nconst LabCS = function LabCSClosure() {\n  function fn_g(x) {\n    let result;\n\n    if (x >= 6 / 29) {\n      result = x ** 3;\n    } else {\n      result = 108 / 841 * (x - 4 / 29);\n    }\n\n    return result;\n  }\n\n  function decode(value, high1, low2, high2) {\n    return low2 + value * (high2 - low2) / high1;\n  }\n\n  function convertToRgb(cs, src, srcOffset, maxVal, dest, destOffset) {\n    let Ls = src[srcOffset];\n    let as = src[srcOffset + 1];\n    let bs = src[srcOffset + 2];\n\n    if (maxVal !== false) {\n      Ls = decode(Ls, maxVal, 0, 100);\n      as = decode(as, maxVal, cs.amin, cs.amax);\n      bs = decode(bs, maxVal, cs.bmin, cs.bmax);\n    }\n\n    if (as > cs.amax) {\n      as = cs.amax;\n    } else if (as < cs.amin) {\n      as = cs.amin;\n    }\n\n    if (bs > cs.bmax) {\n      bs = cs.bmax;\n    } else if (bs < cs.bmin) {\n      bs = cs.bmin;\n    }\n\n    const M = (Ls + 16) / 116;\n    const L = M + as / 500;\n    const N = M - bs / 200;\n    const X = cs.XW * fn_g(L);\n    const Y = cs.YW * fn_g(M);\n    const Z = cs.ZW * fn_g(N);\n    let r, g, b;\n\n    if (cs.ZW < 1) {\n      r = X * 3.1339 + Y * -1.617 + Z * -0.4906;\n      g = X * -0.9785 + Y * 1.916 + Z * 0.0333;\n      b = X * 0.072 + Y * -0.229 + Z * 1.4057;\n    } else {\n      r = X * 3.2406 + Y * -1.5372 + Z * -0.4986;\n      g = X * -0.9689 + Y * 1.8758 + Z * 0.0415;\n      b = X * 0.0557 + Y * -0.204 + Z * 1.057;\n    }\n\n    dest[destOffset] = Math.sqrt(r) * 255;\n    dest[destOffset + 1] = Math.sqrt(g) * 255;\n    dest[destOffset + 2] = Math.sqrt(b) * 255;\n  }\n\n  class LabCS extends ColorSpace {\n    constructor(whitePoint, blackPoint, range) {\n      super(\"Lab\", 3);\n\n      if (!whitePoint) {\n        throw new _util.FormatError(\"WhitePoint missing - required for color space Lab\");\n      }\n\n      blackPoint = blackPoint || [0, 0, 0];\n      range = range || [-100, 100, -100, 100];\n      this.XW = whitePoint[0];\n      this.YW = whitePoint[1];\n      this.ZW = whitePoint[2];\n      this.amin = range[0];\n      this.amax = range[1];\n      this.bmin = range[2];\n      this.bmax = range[3];\n      this.XB = blackPoint[0];\n      this.YB = blackPoint[1];\n      this.ZB = blackPoint[2];\n\n      if (this.XW < 0 || this.ZW < 0 || this.YW !== 1) {\n        throw new _util.FormatError(\"Invalid WhitePoint components, no fallback available\");\n      }\n\n      if (this.XB < 0 || this.YB < 0 || this.ZB < 0) {\n        (0, _util.info)(\"Invalid BlackPoint, falling back to default\");\n        this.XB = this.YB = this.ZB = 0;\n      }\n\n      if (this.amin > this.amax || this.bmin > this.bmax) {\n        (0, _util.info)(\"Invalid Range, falling back to defaults\");\n        this.amin = -100;\n        this.amax = 100;\n        this.bmin = -100;\n        this.bmax = 100;\n      }\n    }\n\n    getRgbItem(src, srcOffset, dest, destOffset) {\n      convertToRgb(this, src, srcOffset, false, dest, destOffset);\n    }\n\n    getRgbBuffer(src, srcOffset, count, dest, destOffset, bits, alpha01) {\n      const maxVal = (1 << bits) - 1;\n\n      for (let i = 0; i < count; i++) {\n        convertToRgb(this, src, srcOffset, maxVal, dest, destOffset);\n        srcOffset += 3;\n        destOffset += 3 + alpha01;\n      }\n    }\n\n    getOutputLength(inputLength, alpha01) {\n      return inputLength * (3 + alpha01) / 3 | 0;\n    }\n\n    isDefaultDecode(decodeMap, bpc) {\n      return true;\n    }\n\n    get usesZeroToOneRange() {\n      return (0, _util.shadow)(this, \"usesZeroToOneRange\", false);\n    }\n\n  }\n\n  return LabCS;\n}();\n\n/***/ }),\n/* 25 */\n/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {\n\n\n\nObject.defineProperty(exports, \"__esModule\", ({\n  value: true\n}));\nexports.PartialEvaluator = exports.EvaluatorPreprocessor = void 0;\n\nvar _util = __w_pdfjs_require__(2);\n\nvar _cmap = __w_pdfjs_require__(26);\n\nvar _primitives = __w_pdfjs_require__(5);\n\nvar _fonts = __w_pdfjs_require__(44);\n\nvar _fonts_utils = __w_pdfjs_require__(18);\n\nvar _encodings = __w_pdfjs_require__(19);\n\nvar _standard_fonts = __w_pdfjs_require__(47);\n\nvar _unicode = __w_pdfjs_require__(21);\n\nvar _pattern = __w_pdfjs_require__(56);\n\nvar _xfa_fonts = __w_pdfjs_require__(12);\n\nvar _to_unicode_map = __w_pdfjs_require__(48);\n\nvar _function = __w_pdfjs_require__(57);\n\nvar _parser = __w_pdfjs_require__(27);\n\nvar _image_utils = __w_pdfjs_require__(59);\n\nvar _stream = __w_pdfjs_require__(10);\n\nvar _base_stream = __w_pdfjs_require__(9);\n\nvar _bidi = __w_pdfjs_require__(60);\n\nvar _colorspace = __w_pdfjs_require__(24);\n\nvar _decode_stream = __w_pdfjs_require__(29);\n\nvar _glyphlist = __w_pdfjs_require__(20);\n\nvar _core_utils = __w_pdfjs_require__(8);\n\nvar _metrics = __w_pdfjs_require__(51);\n\nvar _murmurhash = __w_pdfjs_require__(61);\n\nvar _operator_list = __w_pdfjs_require__(62);\n\nvar _image = __w_pdfjs_require__(63);\n\nconst DefaultPartialEvaluatorOptions = Object.freeze({\n  maxImageSize: -1,\n  disableFontFace: false,\n  ignoreErrors: false,\n  isEvalSupported: true,\n  fontExtraProperties: false,\n  useSystemFonts: true,\n  cMapUrl: null,\n  standardFontDataUrl: null\n});\nconst PatternType = {\n  TILING: 1,\n  SHADING: 2\n};\nconst TEXT_CHUNK_BATCH_SIZE = 10;\nconst deferred = Promise.resolve();\n\nfunction normalizeBlendMode(value, parsingArray = false) {\n  if (Array.isArray(value)) {\n    for (let i = 0, ii = value.length; i < ii; i++) {\n      const maybeBM = normalizeBlendMode(value[i], true);\n\n      if (maybeBM) {\n        return maybeBM;\n      }\n    }\n\n    (0, _util.warn)(`Unsupported blend mode Array: ${value}`);\n    return \"source-over\";\n  }\n\n  if (!(value instanceof _primitives.Name)) {\n    if (parsingArray) {\n      return null;\n    }\n\n    return \"source-over\";\n  }\n\n  switch (value.name) {\n    case \"Normal\":\n    case \"Compatible\":\n      return \"source-over\";\n\n    case \"Multiply\":\n      return \"multiply\";\n\n    case \"Screen\":\n      return \"screen\";\n\n    case \"Overlay\":\n      return \"overlay\";\n\n    case \"Darken\":\n      return \"darken\";\n\n    case \"Lighten\":\n      return \"lighten\";\n\n    case \"ColorDodge\":\n      return \"color-dodge\";\n\n    case \"ColorBurn\":\n      return \"color-burn\";\n\n    case \"HardLight\":\n      return \"hard-light\";\n\n    case \"SoftLight\":\n      return \"soft-light\";\n\n    case \"Difference\":\n      return \"difference\";\n\n    case \"Exclusion\":\n      return \"exclusion\";\n\n    case \"Hue\":\n      return \"hue\";\n\n    case \"Saturation\":\n      return \"saturation\";\n\n    case \"Color\":\n      return \"color\";\n\n    case \"Luminosity\":\n      return \"luminosity\";\n  }\n\n  if (parsingArray) {\n    return null;\n  }\n\n  (0, _util.warn)(`Unsupported blend mode: ${value.name}`);\n  return \"source-over\";\n}\n\nclass TimeSlotManager {\n  static get TIME_SLOT_DURATION_MS() {\n    return (0, _util.shadow)(this, \"TIME_SLOT_DURATION_MS\", 20);\n  }\n\n  static get CHECK_TIME_EVERY() {\n    return (0, _util.shadow)(this, \"CHECK_TIME_EVERY\", 100);\n  }\n\n  constructor() {\n    this.reset();\n  }\n\n  check() {\n    if (++this.checked < TimeSlotManager.CHECK_TIME_EVERY) {\n      return false;\n    }\n\n    this.checked = 0;\n    return this.endTime <= Date.now();\n  }\n\n  reset() {\n    this.endTime = Date.now() + TimeSlotManager.TIME_SLOT_DURATION_MS;\n    this.checked = 0;\n  }\n\n}\n\nclass PartialEvaluator {\n  constructor({\n    xref,\n    handler,\n    pageIndex,\n    idFactory,\n    fontCache,\n    builtInCMapCache,\n    standardFontDataCache,\n    globalImageCache,\n    options = null\n  }) {\n    this.xref = xref;\n    this.handler = handler;\n    this.pageIndex = pageIndex;\n    this.idFactory = idFactory;\n    this.fontCache = fontCache;\n    this.builtInCMapCache = builtInCMapCache;\n    this.standardFontDataCache = standardFontDataCache;\n    this.globalImageCache = globalImageCache;\n    this.options = options || DefaultPartialEvaluatorOptions;\n    this.parsingType3Font = false;\n    this._fetchBuiltInCMapBound = this.fetchBuiltInCMap.bind(this);\n  }\n\n  get _pdfFunctionFactory() {\n    const pdfFunctionFactory = new _function.PDFFunctionFactory({\n      xref: this.xref,\n      isEvalSupported: this.options.isEvalSupported\n    });\n    return (0, _util.shadow)(this, \"_pdfFunctionFactory\", pdfFunctionFactory);\n  }\n\n  clone(newOptions = null) {\n    const newEvaluator = Object.create(this);\n    newEvaluator.options = Object.assign(Object.create(null), this.options, newOptions);\n    return newEvaluator;\n  }\n\n  hasBlendModes(resources, nonBlendModesSet) {\n    if (!(resources instanceof _primitives.Dict)) {\n      return false;\n    }\n\n    if (resources.objId && nonBlendModesSet.has(resources.objId)) {\n      return false;\n    }\n\n    const processed = new _primitives.RefSet(nonBlendModesSet);\n\n    if (resources.objId) {\n      processed.put(resources.objId);\n    }\n\n    const nodes = [resources],\n          xref = this.xref;\n\n    while (nodes.length) {\n      const node = nodes.shift();\n      const graphicStates = node.get(\"ExtGState\");\n\n      if (graphicStates instanceof _primitives.Dict) {\n        for (let graphicState of graphicStates.getRawValues()) {\n          if (graphicState instanceof _primitives.Ref) {\n            if (processed.has(graphicState)) {\n              continue;\n            }\n\n            try {\n              graphicState = xref.fetch(graphicState);\n            } catch (ex) {\n              processed.put(graphicState);\n              (0, _util.info)(`hasBlendModes - ignoring ExtGState: \"${ex}\".`);\n              continue;\n            }\n          }\n\n          if (!(graphicState instanceof _primitives.Dict)) {\n            continue;\n          }\n\n          if (graphicState.objId) {\n            processed.put(graphicState.objId);\n          }\n\n          const bm = graphicState.get(\"BM\");\n\n          if (bm instanceof _primitives.Name) {\n            if (bm.name !== \"Normal\") {\n              return true;\n            }\n\n            continue;\n          }\n\n          if (bm !== undefined && Array.isArray(bm)) {\n            for (const element of bm) {\n              if (element instanceof _primitives.Name && element.name !== \"Normal\") {\n                return true;\n              }\n            }\n          }\n        }\n      }\n\n      const xObjects = node.get(\"XObject\");\n\n      if (!(xObjects instanceof _primitives.Dict)) {\n        continue;\n      }\n\n      for (let xObject of xObjects.getRawValues()) {\n        if (xObject instanceof _primitives.Ref) {\n          if (processed.has(xObject)) {\n            continue;\n          }\n\n          try {\n            xObject = xref.fetch(xObject);\n          } catch (ex) {\n            processed.put(xObject);\n            (0, _util.info)(`hasBlendModes - ignoring XObject: \"${ex}\".`);\n            continue;\n          }\n        }\n\n        if (!(xObject instanceof _base_stream.BaseStream)) {\n          continue;\n        }\n\n        if (xObject.dict.objId) {\n          processed.put(xObject.dict.objId);\n        }\n\n        const xResources = xObject.dict.get(\"Resources\");\n\n        if (!(xResources instanceof _primitives.Dict)) {\n          continue;\n        }\n\n        if (xResources.objId && processed.has(xResources.objId)) {\n          continue;\n        }\n\n        nodes.push(xResources);\n\n        if (xResources.objId) {\n          processed.put(xResources.objId);\n        }\n      }\n    }\n\n    processed.forEach(ref => {\n      nonBlendModesSet.put(ref);\n    });\n    return false;\n  }\n\n  async fetchBuiltInCMap(name) {\n    const cachedData = this.builtInCMapCache.get(name);\n\n    if (cachedData) {\n      return cachedData;\n    }\n\n    let data;\n\n    if (this.options.cMapUrl !== null) {\n      const url = `${this.options.cMapUrl}${name}.bcmap`;\n      const response = await fetch(url);\n\n      if (!response.ok) {\n        throw new Error(`fetchBuiltInCMap: failed to fetch file \"${url}\" with \"${response.statusText}\".`);\n      }\n\n      data = {\n        cMapData: new Uint8Array(await response.arrayBuffer()),\n        compressionType: _util.CMapCompressionType.BINARY\n      };\n    } else {\n      data = await this.handler.sendWithPromise(\"FetchBuiltInCMap\", {\n        name\n      });\n    }\n\n    if (data.compressionType !== _util.CMapCompressionType.NONE) {\n      this.builtInCMapCache.set(name, data);\n    }\n\n    return data;\n  }\n\n  async fetchStandardFontData(name) {\n    const cachedData = this.standardFontDataCache.get(name);\n\n    if (cachedData) {\n      return new _stream.Stream(cachedData);\n    }\n\n    if (this.options.useSystemFonts && name !== \"Symbol\" && name !== \"ZapfDingbats\") {\n      return null;\n    }\n\n    const standardFontNameToFileName = (0, _standard_fonts.getFontNameToFileMap)(),\n          filename = standardFontNameToFileName[name];\n    let data;\n\n    if (this.options.standardFontDataUrl !== null) {\n      const url = `${this.options.standardFontDataUrl}${filename}`;\n      const response = await fetch(url);\n\n      if (!response.ok) {\n        (0, _util.warn)(`fetchStandardFontData: failed to fetch file \"${url}\" with \"${response.statusText}\".`);\n      } else {\n        data = await response.arrayBuffer();\n      }\n    } else {\n      try {\n        data = await this.handler.sendWithPromise(\"FetchStandardFontData\", {\n          filename\n        });\n      } catch (e) {\n        (0, _util.warn)(`fetchStandardFontData: failed to fetch file \"${filename}\" with \"${e}\".`);\n      }\n    }\n\n    if (!data) {\n      return null;\n    }\n\n    this.standardFontDataCache.set(name, data);\n    return new _stream.Stream(data);\n  }\n\n  async buildFormXObject(resources, xobj, smask, operatorList, task, initialState, localColorSpaceCache) {\n    const dict = xobj.dict;\n    const matrix = dict.getArray(\"Matrix\");\n    let bbox = dict.getArray(\"BBox\");\n\n    if (Array.isArray(bbox) && bbox.length === 4) {\n      bbox = _util.Util.normalizeRect(bbox);\n    } else {\n      bbox = null;\n    }\n\n    let optionalContent, groupOptions;\n\n    if (dict.has(\"OC\")) {\n      optionalContent = await this.parseMarkedContentProps(dict.get(\"OC\"), resources);\n    }\n\n    if (optionalContent !== undefined) {\n      operatorList.addOp(_util.OPS.beginMarkedContentProps, [\"OC\", optionalContent]);\n    }\n\n    const group = dict.get(\"Group\");\n\n    if (group) {\n      groupOptions = {\n        matrix,\n        bbox,\n        smask,\n        isolated: false,\n        knockout: false\n      };\n      const groupSubtype = group.get(\"S\");\n      let colorSpace = null;\n\n      if ((0, _primitives.isName)(groupSubtype, \"Transparency\")) {\n        groupOptions.isolated = group.get(\"I\") || false;\n        groupOptions.knockout = group.get(\"K\") || false;\n\n        if (group.has(\"CS\")) {\n          const cs = group.getRaw(\"CS\");\n\n          const cachedColorSpace = _colorspace.ColorSpace.getCached(cs, this.xref, localColorSpaceCache);\n\n          if (cachedColorSpace) {\n            colorSpace = cachedColorSpace;\n          } else {\n            colorSpace = await this.parseColorSpace({\n              cs,\n              resources,\n              localColorSpaceCache\n            });\n          }\n        }\n      }\n\n      if (smask && smask.backdrop) {\n        colorSpace = colorSpace || _colorspace.ColorSpace.singletons.rgb;\n        smask.backdrop = colorSpace.getRgb(smask.backdrop, 0);\n      }\n\n      operatorList.addOp(_util.OPS.beginGroup, [groupOptions]);\n    }\n\n    const args = group ? [matrix, null] : [matrix, bbox];\n    operatorList.addOp(_util.OPS.paintFormXObjectBegin, args);\n    return this.getOperatorList({\n      stream: xobj,\n      task,\n      resources: dict.get(\"Resources\") || resources,\n      operatorList,\n      initialState\n    }).then(function () {\n      operatorList.addOp(_util.OPS.paintFormXObjectEnd, []);\n\n      if (group) {\n        operatorList.addOp(_util.OPS.endGroup, [groupOptions]);\n      }\n\n      if (optionalContent !== undefined) {\n        operatorList.addOp(_util.OPS.endMarkedContent, []);\n      }\n    });\n  }\n\n  _sendImgData(objId, imgData, cacheGlobally = false) {\n    const transfers = imgData ? [imgData.data.buffer] : null;\n\n    if (this.parsingType3Font || cacheGlobally) {\n      return this.handler.send(\"commonobj\", [objId, \"Image\", imgData], transfers);\n    }\n\n    return this.handler.send(\"obj\", [objId, this.pageIndex, \"Image\", imgData], transfers);\n  }\n\n  async buildPaintImageXObject({\n    resources,\n    image,\n    isInline = false,\n    operatorList,\n    cacheKey,\n    localImageCache,\n    localColorSpaceCache\n  }) {\n    const dict = image.dict;\n    const imageRef = dict.objId;\n    const w = dict.get(\"W\", \"Width\");\n    const h = dict.get(\"H\", \"Height\");\n\n    if (!(w && typeof w === \"number\") || !(h && typeof h === \"number\")) {\n      (0, _util.warn)(\"Image dimensions are missing, or not numbers.\");\n      return;\n    }\n\n    const maxImageSize = this.options.maxImageSize;\n\n    if (maxImageSize !== -1 && w * h > maxImageSize) {\n      const msg = \"Image exceeded maximum allowed size and was removed.\";\n\n      if (this.options.ignoreErrors) {\n        (0, _util.warn)(msg);\n        return;\n      }\n\n      throw new Error(msg);\n    }\n\n    let optionalContent;\n\n    if (dict.has(\"OC\")) {\n      optionalContent = await this.parseMarkedContentProps(dict.get(\"OC\"), resources);\n    }\n\n    if (optionalContent !== undefined) {\n      operatorList.addOp(_util.OPS.beginMarkedContentProps, [\"OC\", optionalContent]);\n    }\n\n    const imageMask = dict.get(\"IM\", \"ImageMask\") || false;\n    const interpolate = dict.get(\"I\", \"Interpolate\");\n    let imgData, args;\n\n    if (imageMask) {\n      const bitStrideLength = w + 7 >> 3;\n      const imgArray = image.getBytes(bitStrideLength * h, true);\n      const decode = dict.getArray(\"D\", \"Decode\");\n      imgData = _image.PDFImage.createMask({\n        imgArray,\n        width: w,\n        height: h,\n        imageIsFromDecodeStream: image instanceof _decode_stream.DecodeStream,\n        inverseDecode: !!decode && decode[0] > 0,\n        interpolate\n      });\n      imgData.cached = !!cacheKey;\n      args = [imgData];\n      operatorList.addOp(_util.OPS.paintImageMaskXObject, args);\n\n      if (cacheKey) {\n        localImageCache.set(cacheKey, imageRef, {\n          fn: _util.OPS.paintImageMaskXObject,\n          args\n        });\n      }\n\n      if (optionalContent !== undefined) {\n        operatorList.addOp(_util.OPS.endMarkedContent, []);\n      }\n\n      return;\n    }\n\n    const softMask = dict.get(\"SM\", \"SMask\") || false;\n    const mask = dict.get(\"Mask\") || false;\n    const SMALL_IMAGE_DIMENSIONS = 200;\n\n    if (isInline && !softMask && !mask && w + h < SMALL_IMAGE_DIMENSIONS) {\n      const imageObj = new _image.PDFImage({\n        xref: this.xref,\n        res: resources,\n        image,\n        isInline,\n        pdfFunctionFactory: this._pdfFunctionFactory,\n        localColorSpaceCache\n      });\n      imgData = imageObj.createImageData(true);\n      operatorList.addOp(_util.OPS.paintInlineImageXObject, [imgData]);\n\n      if (optionalContent !== undefined) {\n        operatorList.addOp(_util.OPS.endMarkedContent, []);\n      }\n\n      return;\n    }\n\n    let objId = `img_${this.idFactory.createObjId()}`,\n        cacheGlobally = false;\n\n    if (this.parsingType3Font) {\n      objId = `${this.idFactory.getDocId()}_type3_${objId}`;\n    } else if (imageRef) {\n      cacheGlobally = this.globalImageCache.shouldCache(imageRef, this.pageIndex);\n\n      if (cacheGlobally) {\n        objId = `${this.idFactory.getDocId()}_${objId}`;\n      }\n    }\n\n    operatorList.addDependency(objId);\n    args = [objId, w, h];\n\n    _image.PDFImage.buildImage({\n      xref: this.xref,\n      res: resources,\n      image,\n      isInline,\n      pdfFunctionFactory: this._pdfFunctionFactory,\n      localColorSpaceCache\n    }).then(imageObj => {\n      imgData = imageObj.createImageData(false);\n\n      if (cacheKey && imageRef && cacheGlobally) {\n        this.globalImageCache.addByteSize(imageRef, imgData.data.length);\n      }\n\n      return this._sendImgData(objId, imgData, cacheGlobally);\n    }).catch(reason => {\n      (0, _util.warn)(`Unable to decode image \"${objId}\": \"${reason}\".`);\n      return this._sendImgData(objId, null, cacheGlobally);\n    });\n\n    operatorList.addOp(_util.OPS.paintImageXObject, args);\n\n    if (cacheKey) {\n      localImageCache.set(cacheKey, imageRef, {\n        fn: _util.OPS.paintImageXObject,\n        args\n      });\n\n      if (imageRef) {\n        (0, _util.assert)(!isInline, \"Cannot cache an inline image globally.\");\n        this.globalImageCache.addPageIndex(imageRef, this.pageIndex);\n\n        if (cacheGlobally) {\n          this.globalImageCache.setData(imageRef, {\n            objId,\n            fn: _util.OPS.paintImageXObject,\n            args,\n            byteSize: 0\n          });\n        }\n      }\n    }\n\n    if (optionalContent !== undefined) {\n      operatorList.addOp(_util.OPS.endMarkedContent, []);\n    }\n  }\n\n  handleSMask(smask, resources, operatorList, task, stateManager, localColorSpaceCache) {\n    const smaskContent = smask.get(\"G\");\n    const smaskOptions = {\n      subtype: smask.get(\"S\").name,\n      backdrop: smask.get(\"BC\")\n    };\n    const transferObj = smask.get(\"TR\");\n\n    if ((0, _function.isPDFFunction)(transferObj)) {\n      const transferFn = this._pdfFunctionFactory.create(transferObj);\n\n      const transferMap = new Uint8Array(256);\n      const tmp = new Float32Array(1);\n\n      for (let i = 0; i < 256; i++) {\n        tmp[0] = i / 255;\n        transferFn(tmp, 0, tmp, 0);\n        transferMap[i] = tmp[0] * 255 | 0;\n      }\n\n      smaskOptions.transferMap = transferMap;\n    }\n\n    return this.buildFormXObject(resources, smaskContent, smaskOptions, operatorList, task, stateManager.state.clone(), localColorSpaceCache);\n  }\n\n  handleTransferFunction(tr) {\n    let transferArray;\n\n    if (Array.isArray(tr)) {\n      transferArray = tr;\n    } else if ((0, _function.isPDFFunction)(tr)) {\n      transferArray = [tr];\n    } else {\n      return null;\n    }\n\n    const transferMaps = [];\n    let numFns = 0,\n        numEffectfulFns = 0;\n\n    for (const entry of transferArray) {\n      const transferObj = this.xref.fetchIfRef(entry);\n      numFns++;\n\n      if ((0, _primitives.isName)(transferObj, \"Identity\")) {\n        transferMaps.push(null);\n        continue;\n      } else if (!(0, _function.isPDFFunction)(transferObj)) {\n        return null;\n      }\n\n      const transferFn = this._pdfFunctionFactory.create(transferObj);\n\n      const transferMap = new Uint8Array(256),\n            tmp = new Float32Array(1);\n\n      for (let j = 0; j < 256; j++) {\n        tmp[0] = j / 255;\n        transferFn(tmp, 0, tmp, 0);\n        transferMap[j] = tmp[0] * 255 | 0;\n      }\n\n      transferMaps.push(transferMap);\n      numEffectfulFns++;\n    }\n\n    if (!(numFns === 1 || numFns === 4)) {\n      return null;\n    }\n\n    if (numEffectfulFns === 0) {\n      return null;\n    }\n\n    return transferMaps;\n  }\n\n  handleTilingType(fn, color, resources, pattern, patternDict, operatorList, task, localTilingPatternCache) {\n    const tilingOpList = new _operator_list.OperatorList();\n\n    const patternResources = _primitives.Dict.merge({\n      xref: this.xref,\n      dictArray: [patternDict.get(\"Resources\"), resources]\n    });\n\n    return this.getOperatorList({\n      stream: pattern,\n      task,\n      resources: patternResources,\n      operatorList: tilingOpList\n    }).then(function () {\n      const operatorListIR = tilingOpList.getIR();\n      const tilingPatternIR = (0, _pattern.getTilingPatternIR)(operatorListIR, patternDict, color);\n      operatorList.addDependencies(tilingOpList.dependencies);\n      operatorList.addOp(fn, tilingPatternIR);\n\n      if (patternDict.objId) {\n        localTilingPatternCache.set(null, patternDict.objId, {\n          operatorListIR,\n          dict: patternDict\n        });\n      }\n    }).catch(reason => {\n      if (reason instanceof _util.AbortException) {\n        return;\n      }\n\n      if (this.options.ignoreErrors) {\n        this.handler.send(\"UnsupportedFeature\", {\n          featureId: _util.UNSUPPORTED_FEATURES.errorTilingPattern\n        });\n        (0, _util.warn)(`handleTilingType - ignoring pattern: \"${reason}\".`);\n        return;\n      }\n\n      throw reason;\n    });\n  }\n\n  handleSetFont(resources, fontArgs, fontRef, operatorList, task, state, fallbackFontDict = null, cssFontInfo = null) {\n    const fontName = fontArgs && fontArgs[0] instanceof _primitives.Name ? fontArgs[0].name : null;\n    return this.loadFont(fontName, fontRef, resources, fallbackFontDict, cssFontInfo).then(translated => {\n      if (!translated.font.isType3Font) {\n        return translated;\n      }\n\n      return translated.loadType3Data(this, resources, task).then(function () {\n        operatorList.addDependencies(translated.type3Dependencies);\n        return translated;\n      }).catch(reason => {\n        this.handler.send(\"UnsupportedFeature\", {\n          featureId: _util.UNSUPPORTED_FEATURES.errorFontLoadType3\n        });\n        return new TranslatedFont({\n          loadedName: \"g_font_error\",\n          font: new _fonts.ErrorFont(`Type3 font load error: ${reason}`),\n          dict: translated.font,\n          evaluatorOptions: this.options\n        });\n      });\n    }).then(translated => {\n      state.font = translated.font;\n      translated.send(this.handler);\n      return translated.loadedName;\n    });\n  }\n\n  handleText(chars, state) {\n    const font = state.font;\n    const glyphs = font.charsToGlyphs(chars);\n\n    if (font.data) {\n      const isAddToPathSet = !!(state.textRenderingMode & _util.TextRenderingMode.ADD_TO_PATH_FLAG);\n\n      if (isAddToPathSet || state.fillColorSpace.name === \"Pattern\" || font.disableFontFace || this.options.disableFontFace) {\n        PartialEvaluator.buildFontPaths(font, glyphs, this.handler, this.options);\n      }\n    }\n\n    return glyphs;\n  }\n\n  ensureStateFont(state) {\n    if (state.font) {\n      return;\n    }\n\n    const reason = new _util.FormatError(\"Missing setFont (Tf) operator before text rendering operator.\");\n\n    if (this.options.ignoreErrors) {\n      this.handler.send(\"UnsupportedFeature\", {\n        featureId: _util.UNSUPPORTED_FEATURES.errorFontState\n      });\n      (0, _util.warn)(`ensureStateFont: \"${reason}\".`);\n      return;\n    }\n\n    throw reason;\n  }\n\n  async setGState({\n    resources,\n    gState,\n    operatorList,\n    cacheKey,\n    task,\n    stateManager,\n    localGStateCache,\n    localColorSpaceCache\n  }) {\n    const gStateRef = gState.objId;\n    let isSimpleGState = true;\n    const gStateObj = [];\n    const gStateKeys = gState.getKeys();\n    let promise = Promise.resolve();\n\n    for (let i = 0, ii = gStateKeys.length; i < ii; i++) {\n      const key = gStateKeys[i];\n      const value = gState.get(key);\n\n      switch (key) {\n        case \"Type\":\n          break;\n\n        case \"LW\":\n        case \"LC\":\n        case \"LJ\":\n        case \"ML\":\n        case \"D\":\n        case \"RI\":\n        case \"FL\":\n        case \"CA\":\n        case \"ca\":\n          gStateObj.push([key, value]);\n          break;\n\n        case \"Font\":\n          isSimpleGState = false;\n          promise = promise.then(() => {\n            return this.handleSetFont(resources, null, value[0], operatorList, task, stateManager.state).then(function (loadedName) {\n              operatorList.addDependency(loadedName);\n              gStateObj.push([key, [loadedName, value[1]]]);\n            });\n          });\n          break;\n\n        case \"BM\":\n          gStateObj.push([key, normalizeBlendMode(value)]);\n          break;\n\n        case \"SMask\":\n          if ((0, _primitives.isName)(value, \"None\")) {\n            gStateObj.push([key, false]);\n            break;\n          }\n\n          if (value instanceof _primitives.Dict) {\n            isSimpleGState = false;\n            promise = promise.then(() => {\n              return this.handleSMask(value, resources, operatorList, task, stateManager, localColorSpaceCache);\n            });\n            gStateObj.push([key, true]);\n          } else {\n            (0, _util.warn)(\"Unsupported SMask type\");\n          }\n\n          break;\n\n        case \"TR\":\n          const transferMaps = this.handleTransferFunction(value);\n          gStateObj.push([key, transferMaps]);\n          break;\n\n        case \"OP\":\n        case \"op\":\n        case \"OPM\":\n        case \"BG\":\n        case \"BG2\":\n        case \"UCR\":\n        case \"UCR2\":\n        case \"TR2\":\n        case \"HT\":\n        case \"SM\":\n        case \"SA\":\n        case \"AIS\":\n        case \"TK\":\n          (0, _util.info)(\"graphic state operator \" + key);\n          break;\n\n        default:\n          (0, _util.info)(\"Unknown graphic state operator \" + key);\n          break;\n      }\n    }\n\n    return promise.then(function () {\n      if (gStateObj.length > 0) {\n        operatorList.addOp(_util.OPS.setGState, [gStateObj]);\n      }\n\n      if (isSimpleGState) {\n        localGStateCache.set(cacheKey, gStateRef, gStateObj);\n      }\n    });\n  }\n\n  loadFont(fontName, font, resources, fallbackFontDict = null, cssFontInfo = null) {\n    const errorFont = async () => {\n      return new TranslatedFont({\n        loadedName: \"g_font_error\",\n        font: new _fonts.ErrorFont(`Font \"${fontName}\" is not available.`),\n        dict: font,\n        evaluatorOptions: this.options\n      });\n    };\n\n    const xref = this.xref;\n    let fontRef;\n\n    if (font) {\n      if (!(font instanceof _primitives.Ref)) {\n        throw new _util.FormatError('The \"font\" object should be a reference.');\n      }\n\n      fontRef = font;\n    } else {\n      const fontRes = resources.get(\"Font\");\n\n      if (fontRes) {\n        fontRef = fontRes.getRaw(fontName);\n      }\n    }\n\n    if (!fontRef) {\n      const partialMsg = `Font \"${fontName || font && font.toString()}\" is not available`;\n\n      if (!this.options.ignoreErrors && !this.parsingType3Font) {\n        (0, _util.warn)(`${partialMsg}.`);\n        return errorFont();\n      }\n\n      this.handler.send(\"UnsupportedFeature\", {\n        featureId: _util.UNSUPPORTED_FEATURES.errorFontMissing\n      });\n      (0, _util.warn)(`${partialMsg} -- attempting to fallback to a default font.`);\n\n      if (fallbackFontDict) {\n        fontRef = fallbackFontDict;\n      } else {\n        fontRef = PartialEvaluator.fallbackFontDict;\n      }\n    }\n\n    if (this.parsingType3Font && this.type3FontRefs.has(fontRef)) {\n      return errorFont();\n    }\n\n    if (this.fontCache.has(fontRef)) {\n      return this.fontCache.get(fontRef);\n    }\n\n    font = xref.fetchIfRef(fontRef);\n\n    if (!(font instanceof _primitives.Dict)) {\n      return errorFont();\n    }\n\n    if (font.cacheKey && this.fontCache.has(font.cacheKey)) {\n      return this.fontCache.get(font.cacheKey);\n    }\n\n    const fontCapability = (0, _util.createPromiseCapability)();\n    let preEvaluatedFont;\n\n    try {\n      preEvaluatedFont = this.preEvaluateFont(font);\n      preEvaluatedFont.cssFontInfo = cssFontInfo;\n    } catch (reason) {\n      (0, _util.warn)(`loadFont - preEvaluateFont failed: \"${reason}\".`);\n      return errorFont();\n    }\n\n    const {\n      descriptor,\n      hash\n    } = preEvaluatedFont;\n    const fontRefIsRef = fontRef instanceof _primitives.Ref;\n    let fontID;\n\n    if (fontRefIsRef) {\n      fontID = `f${fontRef.toString()}`;\n    }\n\n    if (hash && descriptor instanceof _primitives.Dict) {\n      if (!descriptor.fontAliases) {\n        descriptor.fontAliases = Object.create(null);\n      }\n\n      const fontAliases = descriptor.fontAliases;\n\n      if (fontAliases[hash]) {\n        const aliasFontRef = fontAliases[hash].aliasRef;\n\n        if (fontRefIsRef && aliasFontRef && this.fontCache.has(aliasFontRef)) {\n          this.fontCache.putAlias(fontRef, aliasFontRef);\n          return this.fontCache.get(fontRef);\n        }\n      } else {\n        fontAliases[hash] = {\n          fontID: this.idFactory.createFontId()\n        };\n      }\n\n      if (fontRefIsRef) {\n        fontAliases[hash].aliasRef = fontRef;\n      }\n\n      fontID = fontAliases[hash].fontID;\n    }\n\n    if (fontRefIsRef) {\n      this.fontCache.put(fontRef, fontCapability.promise);\n    } else {\n      if (!fontID) {\n        fontID = this.idFactory.createFontId();\n      }\n\n      font.cacheKey = `cacheKey_${fontID}`;\n      this.fontCache.put(font.cacheKey, fontCapability.promise);\n    }\n\n    (0, _util.assert)(fontID && fontID.startsWith(\"f\"), 'The \"fontID\" must be (correctly) defined.');\n    font.loadedName = `${this.idFactory.getDocId()}_${fontID}`;\n    this.translateFont(preEvaluatedFont).then(translatedFont => {\n      if (translatedFont.fontType !== undefined) {\n        xref.stats.addFontType(translatedFont.fontType);\n      }\n\n      fontCapability.resolve(new TranslatedFont({\n        loadedName: font.loadedName,\n        font: translatedFont,\n        dict: font,\n        evaluatorOptions: this.options\n      }));\n    }).catch(reason => {\n      this.handler.send(\"UnsupportedFeature\", {\n        featureId: _util.UNSUPPORTED_FEATURES.errorFontTranslate\n      });\n      (0, _util.warn)(`loadFont - translateFont failed: \"${reason}\".`);\n\n      try {\n        const fontFile3 = descriptor && descriptor.get(\"FontFile3\");\n        const subtype = fontFile3 && fontFile3.get(\"Subtype\");\n        const fontType = (0, _fonts_utils.getFontType)(preEvaluatedFont.type, subtype && subtype.name);\n\n        if (fontType !== undefined) {\n          xref.stats.addFontType(fontType);\n        }\n      } catch (ex) {}\n\n      fontCapability.resolve(new TranslatedFont({\n        loadedName: font.loadedName,\n        font: new _fonts.ErrorFont(reason instanceof Error ? reason.message : reason),\n        dict: font,\n        evaluatorOptions: this.options\n      }));\n    });\n    return fontCapability.promise;\n  }\n\n  buildPath(operatorList, fn, args, parsingText = false) {\n    const lastIndex = operatorList.length - 1;\n\n    if (!args) {\n      args = [];\n    }\n\n    if (lastIndex < 0 || operatorList.fnArray[lastIndex] !== _util.OPS.constructPath) {\n      if (parsingText) {\n        (0, _util.warn)(`Encountered path operator \"${fn}\" inside of a text object.`);\n        operatorList.addOp(_util.OPS.save, null);\n      }\n\n      operatorList.addOp(_util.OPS.constructPath, [[fn], args]);\n\n      if (parsingText) {\n        operatorList.addOp(_util.OPS.restore, null);\n      }\n    } else {\n      const opArgs = operatorList.argsArray[lastIndex];\n      opArgs[0].push(fn);\n      Array.prototype.push.apply(opArgs[1], args);\n    }\n  }\n\n  parseColorSpace({\n    cs,\n    resources,\n    localColorSpaceCache\n  }) {\n    return _colorspace.ColorSpace.parseAsync({\n      cs,\n      xref: this.xref,\n      resources,\n      pdfFunctionFactory: this._pdfFunctionFactory,\n      localColorSpaceCache\n    }).catch(reason => {\n      if (reason instanceof _util.AbortException) {\n        return null;\n      }\n\n      if (this.options.ignoreErrors) {\n        this.handler.send(\"UnsupportedFeature\", {\n          featureId: _util.UNSUPPORTED_FEATURES.errorColorSpace\n        });\n        (0, _util.warn)(`parseColorSpace - ignoring ColorSpace: \"${reason}\".`);\n        return null;\n      }\n\n      throw reason;\n    });\n  }\n\n  parseShading({\n    shading,\n    resources,\n    localColorSpaceCache,\n    localShadingPatternCache\n  }) {\n    let id = localShadingPatternCache.get(shading);\n\n    if (!id) {\n      var shadingFill = _pattern.Pattern.parseShading(shading, this.xref, resources, this.handler, this._pdfFunctionFactory, localColorSpaceCache);\n\n      const patternIR = shadingFill.getIR();\n      id = `pattern_${this.idFactory.createObjId()}`;\n      localShadingPatternCache.set(shading, id);\n      this.handler.send(\"obj\", [id, this.pageIndex, \"Pattern\", patternIR]);\n    }\n\n    return id;\n  }\n\n  handleColorN(operatorList, fn, args, cs, patterns, resources, task, localColorSpaceCache, localTilingPatternCache, localShadingPatternCache) {\n    const patternName = args.pop();\n\n    if (patternName instanceof _primitives.Name) {\n      const rawPattern = patterns.getRaw(patternName.name);\n      const localTilingPattern = rawPattern instanceof _primitives.Ref && localTilingPatternCache.getByRef(rawPattern);\n\n      if (localTilingPattern) {\n        try {\n          const color = cs.base ? cs.base.getRgb(args, 0) : null;\n          const tilingPatternIR = (0, _pattern.getTilingPatternIR)(localTilingPattern.operatorListIR, localTilingPattern.dict, color);\n          operatorList.addOp(fn, tilingPatternIR);\n          return undefined;\n        } catch (ex) {}\n      }\n\n      const pattern = this.xref.fetchIfRef(rawPattern);\n\n      if (pattern) {\n        const dict = pattern instanceof _base_stream.BaseStream ? pattern.dict : pattern;\n        const typeNum = dict.get(\"PatternType\");\n\n        if (typeNum === PatternType.TILING) {\n          const color = cs.base ? cs.base.getRgb(args, 0) : null;\n          return this.handleTilingType(fn, color, resources, pattern, dict, operatorList, task, localTilingPatternCache);\n        } else if (typeNum === PatternType.SHADING) {\n          const shading = dict.get(\"Shading\");\n          const matrix = dict.getArray(\"Matrix\");\n          const objId = this.parseShading({\n            shading,\n            resources,\n            localColorSpaceCache,\n            localShadingPatternCache\n          });\n          operatorList.addOp(fn, [\"Shading\", objId, matrix]);\n          return undefined;\n        }\n\n        throw new _util.FormatError(`Unknown PatternType: ${typeNum}`);\n      }\n    }\n\n    throw new _util.FormatError(`Unknown PatternName: ${patternName}`);\n  }\n\n  _parseVisibilityExpression(array, nestingCounter, currentResult) {\n    const MAX_NESTING = 10;\n\n    if (++nestingCounter > MAX_NESTING) {\n      (0, _util.warn)(\"Visibility expression is too deeply nested\");\n      return;\n    }\n\n    const length = array.length;\n    const operator = this.xref.fetchIfRef(array[0]);\n\n    if (length < 2 || !(operator instanceof _primitives.Name)) {\n      (0, _util.warn)(\"Invalid visibility expression\");\n      return;\n    }\n\n    switch (operator.name) {\n      case \"And\":\n      case \"Or\":\n      case \"Not\":\n        currentResult.push(operator.name);\n        break;\n\n      default:\n        (0, _util.warn)(`Invalid operator ${operator.name} in visibility expression`);\n        return;\n    }\n\n    for (let i = 1; i < length; i++) {\n      const raw = array[i];\n      const object = this.xref.fetchIfRef(raw);\n\n      if (Array.isArray(object)) {\n        const nestedResult = [];\n        currentResult.push(nestedResult);\n\n        this._parseVisibilityExpression(object, nestingCounter, nestedResult);\n      } else if (raw instanceof _primitives.Ref) {\n        currentResult.push(raw.toString());\n      }\n    }\n  }\n\n  async parseMarkedContentProps(contentProperties, resources) {\n    let optionalContent;\n\n    if (contentProperties instanceof _primitives.Name) {\n      const properties = resources.get(\"Properties\");\n      optionalContent = properties.get(contentProperties.name);\n    } else if (contentProperties instanceof _primitives.Dict) {\n      optionalContent = contentProperties;\n    } else {\n      throw new _util.FormatError(\"Optional content properties malformed.\");\n    }\n\n    const optionalContentType = optionalContent.get(\"Type\").name;\n\n    if (optionalContentType === \"OCG\") {\n      return {\n        type: optionalContentType,\n        id: optionalContent.objId\n      };\n    } else if (optionalContentType === \"OCMD\") {\n      const expression = optionalContent.get(\"VE\");\n\n      if (Array.isArray(expression)) {\n        const result = [];\n\n        this._parseVisibilityExpression(expression, 0, result);\n\n        if (result.length > 0) {\n          return {\n            type: \"OCMD\",\n            expression: result\n          };\n        }\n      }\n\n      const optionalContentGroups = optionalContent.get(\"OCGs\");\n\n      if (Array.isArray(optionalContentGroups) || optionalContentGroups instanceof _primitives.Dict) {\n        const groupIds = [];\n\n        if (Array.isArray(optionalContentGroups)) {\n          for (const ocg of optionalContentGroups) {\n            groupIds.push(ocg.toString());\n          }\n        } else {\n          groupIds.push(optionalContentGroups.objId);\n        }\n\n        return {\n          type: optionalContentType,\n          ids: groupIds,\n          policy: optionalContent.get(\"P\") instanceof _primitives.Name ? optionalContent.get(\"P\").name : null,\n          expression: null\n        };\n      } else if (optionalContentGroups instanceof _primitives.Ref) {\n        return {\n          type: optionalContentType,\n          id: optionalContentGroups.toString()\n        };\n      }\n    }\n\n    return null;\n  }\n\n  getOperatorList({\n    stream,\n    task,\n    resources,\n    operatorList,\n    initialState = null,\n    fallbackFontDict = null\n  }) {\n    resources = resources || _primitives.Dict.empty;\n    initialState = initialState || new EvalState();\n\n    if (!operatorList) {\n      throw new Error('getOperatorList: missing \"operatorList\" parameter');\n    }\n\n    const self = this;\n    const xref = this.xref;\n    let parsingText = false;\n    const localImageCache = new _image_utils.LocalImageCache();\n    const localColorSpaceCache = new _image_utils.LocalColorSpaceCache();\n    const localGStateCache = new _image_utils.LocalGStateCache();\n    const localTilingPatternCache = new _image_utils.LocalTilingPatternCache();\n    const localShadingPatternCache = new Map();\n\n    const xobjs = resources.get(\"XObject\") || _primitives.Dict.empty;\n\n    const patterns = resources.get(\"Pattern\") || _primitives.Dict.empty;\n\n    const stateManager = new StateManager(initialState);\n    const preprocessor = new EvaluatorPreprocessor(stream, xref, stateManager);\n    const timeSlotManager = new TimeSlotManager();\n\n    function closePendingRestoreOPS(argument) {\n      for (let i = 0, ii = preprocessor.savedStatesDepth; i < ii; i++) {\n        operatorList.addOp(_util.OPS.restore, []);\n      }\n    }\n\n    return new Promise(function promiseBody(resolve, reject) {\n      const next = function (promise) {\n        Promise.all([promise, operatorList.ready]).then(function () {\n          try {\n            promiseBody(resolve, reject);\n          } catch (ex) {\n            reject(ex);\n          }\n        }, reject);\n      };\n\n      task.ensureNotTerminated();\n      timeSlotManager.reset();\n      const operation = {};\n      let stop, i, ii, cs, name, isValidName;\n\n      while (!(stop = timeSlotManager.check())) {\n        operation.args = null;\n\n        if (!preprocessor.read(operation)) {\n          break;\n        }\n\n        let args = operation.args;\n        let fn = operation.fn;\n\n        switch (fn | 0) {\n          case _util.OPS.paintXObject:\n            isValidName = args[0] instanceof _primitives.Name;\n            name = args[0].name;\n\n            if (isValidName) {\n              const localImage = localImageCache.getByName(name);\n\n              if (localImage) {\n                operatorList.addOp(localImage.fn, localImage.args);\n                args = null;\n                continue;\n              }\n            }\n\n            next(new Promise(function (resolveXObject, rejectXObject) {\n              if (!isValidName) {\n                throw new _util.FormatError(\"XObject must be referred to by name.\");\n              }\n\n              let xobj = xobjs.getRaw(name);\n\n              if (xobj instanceof _primitives.Ref) {\n                const localImage = localImageCache.getByRef(xobj);\n\n                if (localImage) {\n                  operatorList.addOp(localImage.fn, localImage.args);\n                  resolveXObject();\n                  return;\n                }\n\n                const globalImage = self.globalImageCache.getData(xobj, self.pageIndex);\n\n                if (globalImage) {\n                  operatorList.addDependency(globalImage.objId);\n                  operatorList.addOp(globalImage.fn, globalImage.args);\n                  resolveXObject();\n                  return;\n                }\n\n                xobj = xref.fetch(xobj);\n              }\n\n              if (!(xobj instanceof _base_stream.BaseStream)) {\n                throw new _util.FormatError(\"XObject should be a stream\");\n              }\n\n              const type = xobj.dict.get(\"Subtype\");\n\n              if (!(type instanceof _primitives.Name)) {\n                throw new _util.FormatError(\"XObject should have a Name subtype\");\n              }\n\n              if (type.name === \"Form\") {\n                stateManager.save();\n                self.buildFormXObject(resources, xobj, null, operatorList, task, stateManager.state.clone(), localColorSpaceCache).then(function () {\n                  stateManager.restore();\n                  resolveXObject();\n                }, rejectXObject);\n                return;\n              } else if (type.name === \"Image\") {\n                self.buildPaintImageXObject({\n                  resources,\n                  image: xobj,\n                  operatorList,\n                  cacheKey: name,\n                  localImageCache,\n                  localColorSpaceCache\n                }).then(resolveXObject, rejectXObject);\n                return;\n              } else if (type.name === \"PS\") {\n                (0, _util.info)(\"Ignored XObject subtype PS\");\n              } else {\n                throw new _util.FormatError(`Unhandled XObject subtype ${type.name}`);\n              }\n\n              resolveXObject();\n            }).catch(function (reason) {\n              if (reason instanceof _util.AbortException) {\n                return;\n              }\n\n              if (self.options.ignoreErrors) {\n                self.handler.send(\"UnsupportedFeature\", {\n                  featureId: _util.UNSUPPORTED_FEATURES.errorXObject\n                });\n                (0, _util.warn)(`getOperatorList - ignoring XObject: \"${reason}\".`);\n                return;\n              }\n\n              throw reason;\n            }));\n            return;\n\n          case _util.OPS.setFont:\n            var fontSize = args[1];\n            next(self.handleSetFont(resources, args, null, operatorList, task, stateManager.state, fallbackFontDict).then(function (loadedName) {\n              operatorList.addDependency(loadedName);\n              operatorList.addOp(_util.OPS.setFont, [loadedName, fontSize]);\n            }));\n            return;\n\n          case _util.OPS.beginText:\n            parsingText = true;\n            break;\n\n          case _util.OPS.endText:\n            parsingText = false;\n            break;\n\n          case _util.OPS.endInlineImage:\n            var cacheKey = args[0].cacheKey;\n\n            if (cacheKey) {\n              const localImage = localImageCache.getByName(cacheKey);\n\n              if (localImage) {\n                operatorList.addOp(localImage.fn, localImage.args);\n                args = null;\n                continue;\n              }\n            }\n\n            next(self.buildPaintImageXObject({\n              resources,\n              image: args[0],\n              isInline: true,\n              operatorList,\n              cacheKey,\n              localImageCache,\n              localColorSpaceCache\n            }));\n            return;\n\n          case _util.OPS.showText:\n            if (!stateManager.state.font) {\n              self.ensureStateFont(stateManager.state);\n              continue;\n            }\n\n            args[0] = self.handleText(args[0], stateManager.state);\n            break;\n\n          case _util.OPS.showSpacedText:\n            if (!stateManager.state.font) {\n              self.ensureStateFont(stateManager.state);\n              continue;\n            }\n\n            var arr = args[0];\n            var combinedGlyphs = [];\n            var arrLength = arr.length;\n            var state = stateManager.state;\n\n            for (i = 0; i < arrLength; ++i) {\n              const arrItem = arr[i];\n\n              if (typeof arrItem === \"string\") {\n                Array.prototype.push.apply(combinedGlyphs, self.handleText(arrItem, state));\n              } else if (typeof arrItem === \"number\") {\n                combinedGlyphs.push(arrItem);\n              }\n            }\n\n            args[0] = combinedGlyphs;\n            fn = _util.OPS.showText;\n            break;\n\n          case _util.OPS.nextLineShowText:\n            if (!stateManager.state.font) {\n              self.ensureStateFont(stateManager.state);\n              continue;\n            }\n\n            operatorList.addOp(_util.OPS.nextLine);\n            args[0] = self.handleText(args[0], stateManager.state);\n            fn = _util.OPS.showText;\n            break;\n\n          case _util.OPS.nextLineSetSpacingShowText:\n            if (!stateManager.state.font) {\n              self.ensureStateFont(stateManager.state);\n              continue;\n            }\n\n            operatorList.addOp(_util.OPS.nextLine);\n            operatorList.addOp(_util.OPS.setWordSpacing, [args.shift()]);\n            operatorList.addOp(_util.OPS.setCharSpacing, [args.shift()]);\n            args[0] = self.handleText(args[0], stateManager.state);\n            fn = _util.OPS.showText;\n            break;\n\n          case _util.OPS.setTextRenderingMode:\n            stateManager.state.textRenderingMode = args[0];\n            break;\n\n          case _util.OPS.setFillColorSpace:\n            {\n              const cachedColorSpace = _colorspace.ColorSpace.getCached(args[0], xref, localColorSpaceCache);\n\n              if (cachedColorSpace) {\n                stateManager.state.fillColorSpace = cachedColorSpace;\n                continue;\n              }\n\n              next(self.parseColorSpace({\n                cs: args[0],\n                resources,\n                localColorSpaceCache\n              }).then(function (colorSpace) {\n                if (colorSpace) {\n                  stateManager.state.fillColorSpace = colorSpace;\n                }\n              }));\n              return;\n            }\n\n          case _util.OPS.setStrokeColorSpace:\n            {\n              const cachedColorSpace = _colorspace.ColorSpace.getCached(args[0], xref, localColorSpaceCache);\n\n              if (cachedColorSpace) {\n                stateManager.state.strokeColorSpace = cachedColorSpace;\n                continue;\n              }\n\n              next(self.parseColorSpace({\n                cs: args[0],\n                resources,\n                localColorSpaceCache\n              }).then(function (colorSpace) {\n                if (colorSpace) {\n                  stateManager.state.strokeColorSpace = colorSpace;\n                }\n              }));\n              return;\n            }\n\n          case _util.OPS.setFillColor:\n            cs = stateManager.state.fillColorSpace;\n            args = cs.getRgb(args, 0);\n            fn = _util.OPS.setFillRGBColor;\n            break;\n\n          case _util.OPS.setStrokeColor:\n            cs = stateManager.state.strokeColorSpace;\n            args = cs.getRgb(args, 0);\n            fn = _util.OPS.setStrokeRGBColor;\n            break;\n\n          case _util.OPS.setFillGray:\n            stateManager.state.fillColorSpace = _colorspace.ColorSpace.singletons.gray;\n            args = _colorspace.ColorSpace.singletons.gray.getRgb(args, 0);\n            fn = _util.OPS.setFillRGBColor;\n            break;\n\n          case _util.OPS.setStrokeGray:\n            stateManager.state.strokeColorSpace = _colorspace.ColorSpace.singletons.gray;\n            args = _colorspace.ColorSpace.singletons.gray.getRgb(args, 0);\n            fn = _util.OPS.setStrokeRGBColor;\n            break;\n\n          case _util.OPS.setFillCMYKColor:\n            stateManager.state.fillColorSpace = _colorspace.ColorSpace.singletons.cmyk;\n            args = _colorspace.ColorSpace.singletons.cmyk.getRgb(args, 0);\n            fn = _util.OPS.setFillRGBColor;\n            break;\n\n          case _util.OPS.setStrokeCMYKColor:\n            stateManager.state.strokeColorSpace = _colorspace.ColorSpace.singletons.cmyk;\n            args = _colorspace.ColorSpace.singletons.cmyk.getRgb(args, 0);\n            fn = _util.OPS.setStrokeRGBColor;\n            break;\n\n          case _util.OPS.setFillRGBColor:\n            stateManager.state.fillColorSpace = _colorspace.ColorSpace.singletons.rgb;\n            args = _colorspace.ColorSpace.singletons.rgb.getRgb(args, 0);\n            break;\n\n          case _util.OPS.setStrokeRGBColor:\n            stateManager.state.strokeColorSpace = _colorspace.ColorSpace.singletons.rgb;\n            args = _colorspace.ColorSpace.singletons.rgb.getRgb(args, 0);\n            break;\n\n          case _util.OPS.setFillColorN:\n            cs = stateManager.state.fillColorSpace;\n\n            if (cs.name === \"Pattern\") {\n              next(self.handleColorN(operatorList, _util.OPS.setFillColorN, args, cs, patterns, resources, task, localColorSpaceCache, localTilingPatternCache, localShadingPatternCache));\n              return;\n            }\n\n            args = cs.getRgb(args, 0);\n            fn = _util.OPS.setFillRGBColor;\n            break;\n\n          case _util.OPS.setStrokeColorN:\n            cs = stateManager.state.strokeColorSpace;\n\n            if (cs.name === \"Pattern\") {\n              next(self.handleColorN(operatorList, _util.OPS.setStrokeColorN, args, cs, patterns, resources, task, localColorSpaceCache, localTilingPatternCache, localShadingPatternCache));\n              return;\n            }\n\n            args = cs.getRgb(args, 0);\n            fn = _util.OPS.setStrokeRGBColor;\n            break;\n\n          case _util.OPS.shadingFill:\n            var shadingRes = resources.get(\"Shading\");\n\n            if (!shadingRes) {\n              throw new _util.FormatError(\"No shading resource found\");\n            }\n\n            var shading = shadingRes.get(args[0].name);\n\n            if (!shading) {\n              throw new _util.FormatError(\"No shading object found\");\n            }\n\n            const patternId = self.parseShading({\n              shading,\n              resources,\n              localColorSpaceCache,\n              localShadingPatternCache\n            });\n            args = [patternId];\n            fn = _util.OPS.shadingFill;\n            break;\n\n          case _util.OPS.setGState:\n            isValidName = args[0] instanceof _primitives.Name;\n            name = args[0].name;\n\n            if (isValidName) {\n              const localGStateObj = localGStateCache.getByName(name);\n\n              if (localGStateObj) {\n                if (localGStateObj.length > 0) {\n                  operatorList.addOp(_util.OPS.setGState, [localGStateObj]);\n                }\n\n                args = null;\n                continue;\n              }\n            }\n\n            next(new Promise(function (resolveGState, rejectGState) {\n              if (!isValidName) {\n                throw new _util.FormatError(\"GState must be referred to by name.\");\n              }\n\n              const extGState = resources.get(\"ExtGState\");\n\n              if (!(extGState instanceof _primitives.Dict)) {\n                throw new _util.FormatError(\"ExtGState should be a dictionary.\");\n              }\n\n              const gState = extGState.get(name);\n\n              if (!(gState instanceof _primitives.Dict)) {\n                throw new _util.FormatError(\"GState should be a dictionary.\");\n              }\n\n              self.setGState({\n                resources,\n                gState,\n                operatorList,\n                cacheKey: name,\n                task,\n                stateManager,\n                localGStateCache,\n                localColorSpaceCache\n              }).then(resolveGState, rejectGState);\n            }).catch(function (reason) {\n              if (reason instanceof _util.AbortException) {\n                return;\n              }\n\n              if (self.options.ignoreErrors) {\n                self.handler.send(\"UnsupportedFeature\", {\n                  featureId: _util.UNSUPPORTED_FEATURES.errorExtGState\n                });\n                (0, _util.warn)(`getOperatorList - ignoring ExtGState: \"${reason}\".`);\n                return;\n              }\n\n              throw reason;\n            }));\n            return;\n\n          case _util.OPS.moveTo:\n          case _util.OPS.lineTo:\n          case _util.OPS.curveTo:\n          case _util.OPS.curveTo2:\n          case _util.OPS.curveTo3:\n          case _util.OPS.closePath:\n          case _util.OPS.rectangle:\n            self.buildPath(operatorList, fn, args, parsingText);\n            continue;\n\n          case _util.OPS.markPoint:\n          case _util.OPS.markPointProps:\n          case _util.OPS.beginCompat:\n          case _util.OPS.endCompat:\n            continue;\n\n          case _util.OPS.beginMarkedContentProps:\n            if (!(args[0] instanceof _primitives.Name)) {\n              (0, _util.warn)(`Expected name for beginMarkedContentProps arg0=${args[0]}`);\n              continue;\n            }\n\n            if (args[0].name === \"OC\") {\n              next(self.parseMarkedContentProps(args[1], resources).then(data => {\n                operatorList.addOp(_util.OPS.beginMarkedContentProps, [\"OC\", data]);\n              }).catch(reason => {\n                if (reason instanceof _util.AbortException) {\n                  return;\n                }\n\n                if (self.options.ignoreErrors) {\n                  self.handler.send(\"UnsupportedFeature\", {\n                    featureId: _util.UNSUPPORTED_FEATURES.errorMarkedContent\n                  });\n                  (0, _util.warn)(`getOperatorList - ignoring beginMarkedContentProps: \"${reason}\".`);\n                  return;\n                }\n\n                throw reason;\n              }));\n              return;\n            }\n\n            args = [args[0].name, args[1] instanceof _primitives.Dict ? args[1].get(\"MCID\") : null];\n            break;\n\n          case _util.OPS.beginMarkedContent:\n          case _util.OPS.endMarkedContent:\n          default:\n            if (args !== null) {\n              for (i = 0, ii = args.length; i < ii; i++) {\n                if (args[i] instanceof _primitives.Dict) {\n                  break;\n                }\n              }\n\n              if (i < ii) {\n                (0, _util.warn)(\"getOperatorList - ignoring operator: \" + fn);\n                continue;\n              }\n            }\n\n        }\n\n        operatorList.addOp(fn, args);\n      }\n\n      if (stop) {\n        next(deferred);\n        return;\n      }\n\n      closePendingRestoreOPS();\n      resolve();\n    }).catch(reason => {\n      if (reason instanceof _util.AbortException) {\n        return;\n      }\n\n      if (this.options.ignoreErrors) {\n        this.handler.send(\"UnsupportedFeature\", {\n          featureId: _util.UNSUPPORTED_FEATURES.errorOperatorList\n        });\n        (0, _util.warn)(`getOperatorList - ignoring errors during \"${task.name}\" ` + `task: \"${reason}\".`);\n        closePendingRestoreOPS();\n        return;\n      }\n\n      throw reason;\n    });\n  }\n\n  getTextContent({\n    stream,\n    task,\n    resources,\n    stateManager = null,\n    combineTextItems = false,\n    includeMarkedContent = false,\n    sink,\n    seenStyles = new Set(),\n    viewBox\n  }) {\n    resources = resources || _primitives.Dict.empty;\n    stateManager = stateManager || new StateManager(new TextState());\n    const NormalizedUnicodes = (0, _unicode.getNormalizedUnicodes)();\n    const textContent = {\n      items: [],\n      styles: Object.create(null)\n    };\n    const textContentItem = {\n      initialized: false,\n      str: [],\n      totalWidth: 0,\n      totalHeight: 0,\n      width: 0,\n      height: 0,\n      vertical: false,\n      prevTransform: null,\n      textAdvanceScale: 0,\n      spaceInFlowMin: 0,\n      spaceInFlowMax: 0,\n      trackingSpaceMin: Infinity,\n      negativeSpaceMax: -Infinity,\n      transform: null,\n      fontName: null,\n      hasEOL: false\n    };\n    const TRACKING_SPACE_FACTOR = 0.1;\n    const NEGATIVE_SPACE_FACTOR = -0.2;\n    const SPACE_IN_FLOW_MIN_FACTOR = 0.1;\n    const SPACE_IN_FLOW_MAX_FACTOR = 0.6;\n    const self = this;\n    const xref = this.xref;\n    const showSpacedTextBuffer = [];\n    let xobjs = null;\n    const emptyXObjectCache = new _image_utils.LocalImageCache();\n    const emptyGStateCache = new _image_utils.LocalGStateCache();\n    const preprocessor = new EvaluatorPreprocessor(stream, xref, stateManager);\n    let textState;\n\n    function getCurrentTextTransform() {\n      const font = textState.font;\n      const tsm = [textState.fontSize * textState.textHScale, 0, 0, textState.fontSize, 0, textState.textRise];\n\n      if (font.isType3Font && (textState.fontSize <= 1 || font.isCharBBox) && !(0, _util.isArrayEqual)(textState.fontMatrix, _util.FONT_IDENTITY_MATRIX)) {\n        const glyphHeight = font.bbox[3] - font.bbox[1];\n\n        if (glyphHeight > 0) {\n          tsm[3] *= glyphHeight * textState.fontMatrix[3];\n        }\n      }\n\n      return _util.Util.transform(textState.ctm, _util.Util.transform(textState.textMatrix, tsm));\n    }\n\n    function ensureTextContentItem() {\n      if (textContentItem.initialized) {\n        return textContentItem;\n      }\n\n      const font = textState.font,\n            loadedName = font.loadedName;\n\n      if (!seenStyles.has(loadedName)) {\n        seenStyles.add(loadedName);\n        textContent.styles[loadedName] = {\n          fontFamily: font.fallbackName,\n          ascent: font.ascent,\n          descent: font.descent,\n          vertical: font.vertical\n        };\n      }\n\n      textContentItem.fontName = loadedName;\n      const trm = textContentItem.transform = getCurrentTextTransform();\n\n      if (!font.vertical) {\n        textContentItem.width = textContentItem.totalWidth = 0;\n        textContentItem.height = textContentItem.totalHeight = Math.hypot(trm[2], trm[3]);\n        textContentItem.vertical = false;\n      } else {\n        textContentItem.width = textContentItem.totalWidth = Math.hypot(trm[0], trm[1]);\n        textContentItem.height = textContentItem.totalHeight = 0;\n        textContentItem.vertical = true;\n      }\n\n      const scaleLineX = Math.hypot(textState.textLineMatrix[0], textState.textLineMatrix[1]);\n      const scaleCtmX = Math.hypot(textState.ctm[0], textState.ctm[1]);\n      textContentItem.textAdvanceScale = scaleCtmX * scaleLineX;\n      textContentItem.trackingSpaceMin = textState.fontSize * TRACKING_SPACE_FACTOR;\n      textContentItem.negativeSpaceMax = textState.fontSize * NEGATIVE_SPACE_FACTOR;\n      textContentItem.spaceInFlowMin = textState.fontSize * SPACE_IN_FLOW_MIN_FACTOR;\n      textContentItem.spaceInFlowMax = textState.fontSize * SPACE_IN_FLOW_MAX_FACTOR;\n      textContentItem.hasEOL = false;\n      textContentItem.initialized = true;\n      return textContentItem;\n    }\n\n    function updateAdvanceScale() {\n      if (!textContentItem.initialized) {\n        return;\n      }\n\n      const scaleLineX = Math.hypot(textState.textLineMatrix[0], textState.textLineMatrix[1]);\n      const scaleCtmX = Math.hypot(textState.ctm[0], textState.ctm[1]);\n      const scaleFactor = scaleCtmX * scaleLineX;\n\n      if (scaleFactor === textContentItem.textAdvanceScale) {\n        return;\n      }\n\n      if (!textContentItem.vertical) {\n        textContentItem.totalWidth += textContentItem.width * textContentItem.textAdvanceScale;\n        textContentItem.width = 0;\n      } else {\n        textContentItem.totalHeight += textContentItem.height * textContentItem.textAdvanceScale;\n        textContentItem.height = 0;\n      }\n\n      textContentItem.textAdvanceScale = scaleFactor;\n    }\n\n    function runBidiTransform(textChunk) {\n      const text = textChunk.str.join(\"\");\n      const bidiResult = (0, _bidi.bidi)(text, -1, textChunk.vertical);\n      return {\n        str: bidiResult.str,\n        dir: bidiResult.dir,\n        width: Math.abs(textChunk.totalWidth),\n        height: Math.abs(textChunk.totalHeight),\n        transform: textChunk.transform,\n        fontName: textChunk.fontName,\n        hasEOL: textChunk.hasEOL\n      };\n    }\n\n    function handleSetFont(fontName, fontRef) {\n      return self.loadFont(fontName, fontRef, resources).then(function (translated) {\n        if (!translated.font.isType3Font) {\n          return translated;\n        }\n\n        return translated.loadType3Data(self, resources, task).catch(function () {}).then(function () {\n          return translated;\n        });\n      }).then(function (translated) {\n        textState.font = translated.font;\n        textState.fontMatrix = translated.font.fontMatrix || _util.FONT_IDENTITY_MATRIX;\n      });\n    }\n\n    function applyInverseRotation(x, y, matrix) {\n      const scale = Math.hypot(matrix[0], matrix[1]);\n      return [(matrix[0] * x + matrix[1] * y) / scale, (matrix[2] * x + matrix[3] * y) / scale];\n    }\n\n    function compareWithLastPosition() {\n      const currentTransform = getCurrentTextTransform();\n      let posX = currentTransform[4];\n      let posY = currentTransform[5];\n      const shiftedX = posX - viewBox[0];\n      const shiftedY = posY - viewBox[1];\n\n      if (shiftedX < 0 || shiftedX > viewBox[2] || shiftedY < 0 || shiftedY > viewBox[3]) {\n        return false;\n      }\n\n      if (!combineTextItems || !textState.font || !textContentItem.prevTransform) {\n        return true;\n      }\n\n      let lastPosX = textContentItem.prevTransform[4];\n      let lastPosY = textContentItem.prevTransform[5];\n\n      if (lastPosX === posX && lastPosY === posY) {\n        return true;\n      }\n\n      let rotate = -1;\n\n      if (currentTransform[0] && currentTransform[1] === 0 && currentTransform[2] === 0) {\n        rotate = currentTransform[0] > 0 ? 0 : 180;\n      } else if (currentTransform[1] && currentTransform[0] === 0 && currentTransform[3] === 0) {\n        rotate = currentTransform[1] > 0 ? 90 : 270;\n      }\n\n      switch (rotate) {\n        case 0:\n          break;\n\n        case 90:\n          [posX, posY] = [posY, posX];\n          [lastPosX, lastPosY] = [lastPosY, lastPosX];\n          break;\n\n        case 180:\n          [posX, posY, lastPosX, lastPosY] = [-posX, -posY, -lastPosX, -lastPosY];\n          break;\n\n        case 270:\n          [posX, posY] = [-posY, -posX];\n          [lastPosX, lastPosY] = [-lastPosY, -lastPosX];\n          break;\n\n        default:\n          [posX, posY] = applyInverseRotation(posX, posY, currentTransform);\n          [lastPosX, lastPosY] = applyInverseRotation(lastPosX, lastPosY, textContentItem.prevTransform);\n      }\n\n      if (textState.font.vertical) {\n        const advanceY = (lastPosY - posY) / textContentItem.textAdvanceScale;\n        const advanceX = posX - lastPosX;\n        const textOrientation = Math.sign(textContentItem.height);\n\n        if (advanceY < textOrientation * textContentItem.negativeSpaceMax) {\n          if (Math.abs(advanceX) > 0.5 * textContentItem.width) {\n            appendEOL();\n            return true;\n          }\n\n          flushTextContentItem();\n          return true;\n        }\n\n        if (Math.abs(advanceX) > textContentItem.width) {\n          appendEOL();\n          return true;\n        }\n\n        if (advanceY <= textOrientation * textContentItem.trackingSpaceMin) {\n          textContentItem.height += advanceY;\n        } else if (!addFakeSpaces(advanceY, textContentItem.prevTransform, textOrientation)) {\n          if (textContentItem.str.length === 0) {\n            textContent.items.push({\n              str: \" \",\n              dir: \"ltr\",\n              width: 0,\n              height: Math.abs(advanceY),\n              transform: textContentItem.prevTransform,\n              fontName: textContentItem.fontName,\n              hasEOL: false\n            });\n          } else {\n            textContentItem.height += advanceY;\n          }\n        }\n\n        return true;\n      }\n\n      const advanceX = (posX - lastPosX) / textContentItem.textAdvanceScale;\n      const advanceY = posY - lastPosY;\n      const textOrientation = Math.sign(textContentItem.width);\n\n      if (advanceX < textOrientation * textContentItem.negativeSpaceMax) {\n        if (Math.abs(advanceY) > 0.5 * textContentItem.height) {\n          appendEOL();\n          return true;\n        }\n\n        flushTextContentItem();\n        return true;\n      }\n\n      if (Math.abs(advanceY) > textContentItem.height) {\n        appendEOL();\n        return true;\n      }\n\n      if (advanceX <= textOrientation * textContentItem.trackingSpaceMin) {\n        textContentItem.width += advanceX;\n      } else if (!addFakeSpaces(advanceX, textContentItem.prevTransform, textOrientation)) {\n        if (textContentItem.str.length === 0) {\n          textContent.items.push({\n            str: \" \",\n            dir: \"ltr\",\n            width: Math.abs(advanceX),\n            height: 0,\n            transform: textContentItem.prevTransform,\n            fontName: textContentItem.fontName,\n            hasEOL: false\n          });\n        } else {\n          textContentItem.width += advanceX;\n        }\n      }\n\n      return true;\n    }\n\n    function buildTextContentItem({\n      chars,\n      extraSpacing\n    }) {\n      const font = textState.font;\n\n      if (!chars) {\n        const charSpacing = textState.charSpacing + extraSpacing;\n\n        if (charSpacing) {\n          if (!font.vertical) {\n            textState.translateTextMatrix(charSpacing * textState.textHScale, 0);\n          } else {\n            textState.translateTextMatrix(0, -charSpacing);\n          }\n        }\n\n        return;\n      }\n\n      const glyphs = font.charsToGlyphs(chars);\n      const scale = textState.fontMatrix[0] * textState.fontSize;\n\n      for (let i = 0, ii = glyphs.length; i < ii; i++) {\n        const glyph = glyphs[i];\n\n        if (glyph.isInvisibleFormatMark) {\n          continue;\n        }\n\n        let charSpacing = textState.charSpacing + (i + 1 === ii ? extraSpacing : 0);\n        let glyphWidth = glyph.width;\n\n        if (font.vertical) {\n          glyphWidth = glyph.vmetric ? glyph.vmetric[0] : -glyphWidth;\n        }\n\n        let scaledDim = glyphWidth * scale;\n\n        if (glyph.isWhitespace && (i === 0 || i + 1 === ii || glyphs[i - 1].isWhitespace || glyphs[i + 1].isWhitespace || extraSpacing)) {\n          if (!font.vertical) {\n            charSpacing += scaledDim + textState.wordSpacing;\n            textState.translateTextMatrix(charSpacing * textState.textHScale, 0);\n          } else {\n            charSpacing += -scaledDim + textState.wordSpacing;\n            textState.translateTextMatrix(0, -charSpacing);\n          }\n\n          continue;\n        }\n\n        if (!compareWithLastPosition()) {\n          continue;\n        }\n\n        const textChunk = ensureTextContentItem();\n\n        if (glyph.isZeroWidthDiacritic) {\n          scaledDim = 0;\n        }\n\n        if (!font.vertical) {\n          scaledDim *= textState.textHScale;\n          textState.translateTextMatrix(scaledDim, 0);\n          textChunk.width += scaledDim;\n        } else {\n          textState.translateTextMatrix(0, scaledDim);\n          scaledDim = Math.abs(scaledDim);\n          textChunk.height += scaledDim;\n        }\n\n        if (scaledDim) {\n          textChunk.prevTransform = getCurrentTextTransform();\n        }\n\n        if (glyph.isWhitespace) {\n          textChunk.str.push(\" \");\n        } else {\n          let glyphUnicode = glyph.unicode;\n          glyphUnicode = NormalizedUnicodes[glyphUnicode] || glyphUnicode;\n          glyphUnicode = (0, _unicode.reverseIfRtl)(glyphUnicode);\n          textChunk.str.push(glyphUnicode);\n        }\n\n        if (charSpacing) {\n          if (!font.vertical) {\n            textState.translateTextMatrix(charSpacing * textState.textHScale, 0);\n          } else {\n            textState.translateTextMatrix(0, -charSpacing);\n          }\n        }\n      }\n    }\n\n    function appendEOL() {\n      if (textContentItem.initialized) {\n        textContentItem.hasEOL = true;\n        flushTextContentItem();\n      } else {\n        textContent.items.push({\n          str: \"\",\n          dir: \"ltr\",\n          width: 0,\n          height: 0,\n          transform: getCurrentTextTransform(),\n          fontName: textState.font.loadedName,\n          hasEOL: true\n        });\n      }\n    }\n\n    function addFakeSpaces(width, transf, textOrientation) {\n      if (textOrientation * textContentItem.spaceInFlowMin <= width && width <= textOrientation * textContentItem.spaceInFlowMax) {\n        if (textContentItem.initialized) {\n          textContentItem.str.push(\" \");\n        }\n\n        return false;\n      }\n\n      const fontName = textContentItem.fontName;\n      let height = 0;\n\n      if (textContentItem.vertical) {\n        height = width;\n        width = 0;\n      }\n\n      flushTextContentItem();\n      textContent.items.push({\n        str: \" \",\n        dir: \"ltr\",\n        width: Math.abs(width),\n        height: Math.abs(height),\n        transform: transf || getCurrentTextTransform(),\n        fontName,\n        hasEOL: false\n      });\n      return true;\n    }\n\n    function flushTextContentItem() {\n      if (!textContentItem.initialized || !textContentItem.str) {\n        return;\n      }\n\n      if (!textContentItem.vertical) {\n        textContentItem.totalWidth += textContentItem.width * textContentItem.textAdvanceScale;\n      } else {\n        textContentItem.totalHeight += textContentItem.height * textContentItem.textAdvanceScale;\n      }\n\n      textContent.items.push(runBidiTransform(textContentItem));\n      textContentItem.initialized = false;\n      textContentItem.str.length = 0;\n    }\n\n    function enqueueChunk(batch = false) {\n      const length = textContent.items.length;\n\n      if (length === 0) {\n        return;\n      }\n\n      if (batch && length < TEXT_CHUNK_BATCH_SIZE) {\n        return;\n      }\n\n      sink.enqueue(textContent, length);\n      textContent.items = [];\n      textContent.styles = Object.create(null);\n    }\n\n    const timeSlotManager = new TimeSlotManager();\n    return new Promise(function promiseBody(resolve, reject) {\n      const next = function (promise) {\n        enqueueChunk(true);\n        Promise.all([promise, sink.ready]).then(function () {\n          try {\n            promiseBody(resolve, reject);\n          } catch (ex) {\n            reject(ex);\n          }\n        }, reject);\n      };\n\n      task.ensureNotTerminated();\n      timeSlotManager.reset();\n      const operation = {};\n      let stop,\n          args = [];\n\n      while (!(stop = timeSlotManager.check())) {\n        args.length = 0;\n        operation.args = args;\n\n        if (!preprocessor.read(operation)) {\n          break;\n        }\n\n        textState = stateManager.state;\n        const fn = operation.fn;\n        args = operation.args;\n\n        switch (fn | 0) {\n          case _util.OPS.setFont:\n            var fontNameArg = args[0].name,\n                fontSizeArg = args[1];\n\n            if (textState.font && fontNameArg === textState.fontName && fontSizeArg === textState.fontSize) {\n              break;\n            }\n\n            flushTextContentItem();\n            textState.fontName = fontNameArg;\n            textState.fontSize = fontSizeArg;\n            next(handleSetFont(fontNameArg, null));\n            return;\n\n          case _util.OPS.setTextRise:\n            textState.textRise = args[0];\n            break;\n\n          case _util.OPS.setHScale:\n            textState.textHScale = args[0] / 100;\n            break;\n\n          case _util.OPS.setLeading:\n            textState.leading = args[0];\n            break;\n\n          case _util.OPS.moveText:\n            textState.translateTextLineMatrix(args[0], args[1]);\n            textState.textMatrix = textState.textLineMatrix.slice();\n            break;\n\n          case _util.OPS.setLeadingMoveText:\n            textState.leading = -args[1];\n            textState.translateTextLineMatrix(args[0], args[1]);\n            textState.textMatrix = textState.textLineMatrix.slice();\n            break;\n\n          case _util.OPS.nextLine:\n            textState.carriageReturn();\n            break;\n\n          case _util.OPS.setTextMatrix:\n            textState.setTextMatrix(args[0], args[1], args[2], args[3], args[4], args[5]);\n            textState.setTextLineMatrix(args[0], args[1], args[2], args[3], args[4], args[5]);\n            updateAdvanceScale();\n            break;\n\n          case _util.OPS.setCharSpacing:\n            textState.charSpacing = args[0];\n            break;\n\n          case _util.OPS.setWordSpacing:\n            textState.wordSpacing = args[0];\n            break;\n\n          case _util.OPS.beginText:\n            textState.textMatrix = _util.IDENTITY_MATRIX.slice();\n            textState.textLineMatrix = _util.IDENTITY_MATRIX.slice();\n            break;\n\n          case _util.OPS.showSpacedText:\n            if (!stateManager.state.font) {\n              self.ensureStateFont(stateManager.state);\n              continue;\n            }\n\n            const spaceFactor = (textState.font.vertical ? 1 : -1) * textState.fontSize / 1000;\n            const elements = args[0];\n\n            for (let i = 0, ii = elements.length; i < ii - 1; i++) {\n              const item = elements[i];\n\n              if (typeof item === \"string\") {\n                showSpacedTextBuffer.push(item);\n              } else if (typeof item === \"number\" && item !== 0) {\n                const str = showSpacedTextBuffer.join(\"\");\n                showSpacedTextBuffer.length = 0;\n                buildTextContentItem({\n                  chars: str,\n                  extraSpacing: item * spaceFactor\n                });\n              }\n            }\n\n            const item = elements[elements.length - 1];\n\n            if (typeof item === \"string\") {\n              showSpacedTextBuffer.push(item);\n            }\n\n            if (showSpacedTextBuffer.length > 0) {\n              const str = showSpacedTextBuffer.join(\"\");\n              showSpacedTextBuffer.length = 0;\n              buildTextContentItem({\n                chars: str,\n                extraSpacing: 0\n              });\n            }\n\n            break;\n\n          case _util.OPS.showText:\n            if (!stateManager.state.font) {\n              self.ensureStateFont(stateManager.state);\n              continue;\n            }\n\n            buildTextContentItem({\n              chars: args[0],\n              extraSpacing: 0\n            });\n            break;\n\n          case _util.OPS.nextLineShowText:\n            if (!stateManager.state.font) {\n              self.ensureStateFont(stateManager.state);\n              continue;\n            }\n\n            textState.carriageReturn();\n            buildTextContentItem({\n              chars: args[0],\n              extraSpacing: 0\n            });\n            break;\n\n          case _util.OPS.nextLineSetSpacingShowText:\n            if (!stateManager.state.font) {\n              self.ensureStateFont(stateManager.state);\n              continue;\n            }\n\n            textState.wordSpacing = args[0];\n            textState.charSpacing = args[1];\n            textState.carriageReturn();\n            buildTextContentItem({\n              chars: args[2],\n              extraSpacing: 0\n            });\n            break;\n\n          case _util.OPS.paintXObject:\n            flushTextContentItem();\n\n            if (!xobjs) {\n              xobjs = resources.get(\"XObject\") || _primitives.Dict.empty;\n            }\n\n            var isValidName = args[0] instanceof _primitives.Name;\n            var name = args[0].name;\n\n            if (isValidName && emptyXObjectCache.getByName(name)) {\n              break;\n            }\n\n            next(new Promise(function (resolveXObject, rejectXObject) {\n              if (!isValidName) {\n                throw new _util.FormatError(\"XObject must be referred to by name.\");\n              }\n\n              let xobj = xobjs.getRaw(name);\n\n              if (xobj instanceof _primitives.Ref) {\n                if (emptyXObjectCache.getByRef(xobj)) {\n                  resolveXObject();\n                  return;\n                }\n\n                const globalImage = self.globalImageCache.getData(xobj, self.pageIndex);\n\n                if (globalImage) {\n                  resolveXObject();\n                  return;\n                }\n\n                xobj = xref.fetch(xobj);\n              }\n\n              if (!(xobj instanceof _base_stream.BaseStream)) {\n                throw new _util.FormatError(\"XObject should be a stream\");\n              }\n\n              const type = xobj.dict.get(\"Subtype\");\n\n              if (!(type instanceof _primitives.Name)) {\n                throw new _util.FormatError(\"XObject should have a Name subtype\");\n              }\n\n              if (type.name !== \"Form\") {\n                emptyXObjectCache.set(name, xobj.dict.objId, true);\n                resolveXObject();\n                return;\n              }\n\n              const currentState = stateManager.state.clone();\n              const xObjStateManager = new StateManager(currentState);\n              const matrix = xobj.dict.getArray(\"Matrix\");\n\n              if (Array.isArray(matrix) && matrix.length === 6) {\n                xObjStateManager.transform(matrix);\n              }\n\n              enqueueChunk();\n              const sinkWrapper = {\n                enqueueInvoked: false,\n\n                enqueue(chunk, size) {\n                  this.enqueueInvoked = true;\n                  sink.enqueue(chunk, size);\n                },\n\n                get desiredSize() {\n                  return sink.desiredSize;\n                },\n\n                get ready() {\n                  return sink.ready;\n                }\n\n              };\n              self.getTextContent({\n                stream: xobj,\n                task,\n                resources: xobj.dict.get(\"Resources\") || resources,\n                stateManager: xObjStateManager,\n                combineTextItems,\n                includeMarkedContent,\n                sink: sinkWrapper,\n                seenStyles,\n                viewBox\n              }).then(function () {\n                if (!sinkWrapper.enqueueInvoked) {\n                  emptyXObjectCache.set(name, xobj.dict.objId, true);\n                }\n\n                resolveXObject();\n              }, rejectXObject);\n            }).catch(function (reason) {\n              if (reason instanceof _util.AbortException) {\n                return;\n              }\n\n              if (self.options.ignoreErrors) {\n                (0, _util.warn)(`getTextContent - ignoring XObject: \"${reason}\".`);\n                return;\n              }\n\n              throw reason;\n            }));\n            return;\n\n          case _util.OPS.setGState:\n            isValidName = args[0] instanceof _primitives.Name;\n            name = args[0].name;\n\n            if (isValidName && emptyGStateCache.getByName(name)) {\n              break;\n            }\n\n            next(new Promise(function (resolveGState, rejectGState) {\n              if (!isValidName) {\n                throw new _util.FormatError(\"GState must be referred to by name.\");\n              }\n\n              const extGState = resources.get(\"ExtGState\");\n\n              if (!(extGState instanceof _primitives.Dict)) {\n                throw new _util.FormatError(\"ExtGState should be a dictionary.\");\n              }\n\n              const gState = extGState.get(name);\n\n              if (!(gState instanceof _primitives.Dict)) {\n                throw new _util.FormatError(\"GState should be a dictionary.\");\n              }\n\n              const gStateFont = gState.get(\"Font\");\n\n              if (!gStateFont) {\n                emptyGStateCache.set(name, gState.objId, true);\n                resolveGState();\n                return;\n              }\n\n              flushTextContentItem();\n              textState.fontName = null;\n              textState.fontSize = gStateFont[1];\n              handleSetFont(null, gStateFont[0]).then(resolveGState, rejectGState);\n            }).catch(function (reason) {\n              if (reason instanceof _util.AbortException) {\n                return;\n              }\n\n              if (self.options.ignoreErrors) {\n                (0, _util.warn)(`getTextContent - ignoring ExtGState: \"${reason}\".`);\n                return;\n              }\n\n              throw reason;\n            }));\n            return;\n\n          case _util.OPS.beginMarkedContent:\n            if (includeMarkedContent) {\n              textContent.items.push({\n                type: \"beginMarkedContent\",\n                tag: args[0] instanceof _primitives.Name ? args[0].name : null\n              });\n            }\n\n            break;\n\n          case _util.OPS.beginMarkedContentProps:\n            if (includeMarkedContent) {\n              flushTextContentItem();\n              let mcid = null;\n\n              if (args[1] instanceof _primitives.Dict) {\n                mcid = args[1].get(\"MCID\");\n              }\n\n              textContent.items.push({\n                type: \"beginMarkedContentProps\",\n                id: Number.isInteger(mcid) ? `${self.idFactory.getPageObjId()}_mcid${mcid}` : null,\n                tag: args[0] instanceof _primitives.Name ? args[0].name : null\n              });\n            }\n\n            break;\n\n          case _util.OPS.endMarkedContent:\n            if (includeMarkedContent) {\n              flushTextContentItem();\n              textContent.items.push({\n                type: \"endMarkedContent\"\n              });\n            }\n\n            break;\n        }\n\n        if (textContent.items.length >= sink.desiredSize) {\n          stop = true;\n          break;\n        }\n      }\n\n      if (stop) {\n        next(deferred);\n        return;\n      }\n\n      flushTextContentItem();\n      enqueueChunk();\n      resolve();\n    }).catch(reason => {\n      if (reason instanceof _util.AbortException) {\n        return;\n      }\n\n      if (this.options.ignoreErrors) {\n        (0, _util.warn)(`getTextContent - ignoring errors during \"${task.name}\" ` + `task: \"${reason}\".`);\n        flushTextContentItem();\n        enqueueChunk();\n        return;\n      }\n\n      throw reason;\n    });\n  }\n\n  extractDataStructures(dict, baseDict, properties) {\n    const xref = this.xref;\n    let cidToGidBytes;\n    const toUnicodePromise = this.readToUnicode(properties.toUnicode || dict.get(\"ToUnicode\") || baseDict.get(\"ToUnicode\"));\n\n    if (properties.composite) {\n      const cidSystemInfo = dict.get(\"CIDSystemInfo\");\n\n      if (cidSystemInfo instanceof _primitives.Dict) {\n        properties.cidSystemInfo = {\n          registry: (0, _util.stringToPDFString)(cidSystemInfo.get(\"Registry\")),\n          ordering: (0, _util.stringToPDFString)(cidSystemInfo.get(\"Ordering\")),\n          supplement: cidSystemInfo.get(\"Supplement\")\n        };\n      }\n\n      const cidToGidMap = dict.get(\"CIDToGIDMap\");\n\n      if (cidToGidMap instanceof _base_stream.BaseStream) {\n        cidToGidBytes = cidToGidMap.getBytes();\n      }\n    }\n\n    const differences = [];\n    let baseEncodingName = null;\n    let encoding;\n\n    if (dict.has(\"Encoding\")) {\n      encoding = dict.get(\"Encoding\");\n\n      if (encoding instanceof _primitives.Dict) {\n        baseEncodingName = encoding.get(\"BaseEncoding\");\n        baseEncodingName = baseEncodingName instanceof _primitives.Name ? baseEncodingName.name : null;\n\n        if (encoding.has(\"Differences\")) {\n          const diffEncoding = encoding.get(\"Differences\");\n          let index = 0;\n\n          for (let j = 0, jj = diffEncoding.length; j < jj; j++) {\n            const data = xref.fetchIfRef(diffEncoding[j]);\n\n            if (typeof data === \"number\") {\n              index = data;\n            } else if (data instanceof _primitives.Name) {\n              differences[index++] = data.name;\n            } else {\n              throw new _util.FormatError(`Invalid entry in 'Differences' array: ${data}`);\n            }\n          }\n        }\n      } else if (encoding instanceof _primitives.Name) {\n        baseEncodingName = encoding.name;\n      } else {\n        throw new _util.FormatError(\"Encoding is not a Name nor a Dict\");\n      }\n\n      if (baseEncodingName !== \"MacRomanEncoding\" && baseEncodingName !== \"MacExpertEncoding\" && baseEncodingName !== \"WinAnsiEncoding\") {\n        baseEncodingName = null;\n      }\n    }\n\n    if (baseEncodingName) {\n      properties.defaultEncoding = (0, _encodings.getEncoding)(baseEncodingName);\n    } else {\n      const isSymbolicFont = !!(properties.flags & _fonts_utils.FontFlags.Symbolic);\n      const isNonsymbolicFont = !!(properties.flags & _fonts_utils.FontFlags.Nonsymbolic);\n      encoding = _encodings.StandardEncoding;\n\n      if (properties.type === \"TrueType\" && !isNonsymbolicFont) {\n        encoding = _encodings.WinAnsiEncoding;\n      }\n\n      if (isSymbolicFont) {\n        encoding = _encodings.MacRomanEncoding;\n\n        if (!properties.file || properties.isInternalFont) {\n          if (/Symbol/i.test(properties.name)) {\n            encoding = _encodings.SymbolSetEncoding;\n          } else if (/Dingbats|Wingdings/i.test(properties.name)) {\n            encoding = _encodings.ZapfDingbatsEncoding;\n          }\n        }\n      }\n\n      properties.defaultEncoding = encoding;\n    }\n\n    properties.differences = differences;\n    properties.baseEncodingName = baseEncodingName;\n    properties.hasEncoding = !!baseEncodingName || differences.length > 0;\n    properties.dict = dict;\n    return toUnicodePromise.then(readToUnicode => {\n      properties.toUnicode = readToUnicode;\n      return this.buildToUnicode(properties);\n    }).then(builtToUnicode => {\n      properties.toUnicode = builtToUnicode;\n\n      if (cidToGidBytes) {\n        properties.cidToGidMap = this.readCidToGidMap(cidToGidBytes, builtToUnicode);\n      }\n\n      return properties;\n    });\n  }\n\n  _simpleFontToUnicode(properties, forceGlyphs = false) {\n    (0, _util.assert)(!properties.composite, \"Must be a simple font.\");\n    const toUnicode = [];\n    const encoding = properties.defaultEncoding.slice();\n    const baseEncodingName = properties.baseEncodingName;\n    const differences = properties.differences;\n\n    for (const charcode in differences) {\n      const glyphName = differences[charcode];\n\n      if (glyphName === \".notdef\") {\n        continue;\n      }\n\n      encoding[charcode] = glyphName;\n    }\n\n    const glyphsUnicodeMap = (0, _glyphlist.getGlyphsUnicode)();\n\n    for (const charcode in encoding) {\n      let glyphName = encoding[charcode];\n\n      if (glyphName === \"\") {\n        continue;\n      } else if (glyphsUnicodeMap[glyphName] === undefined) {\n        let code = 0;\n\n        switch (glyphName[0]) {\n          case \"G\":\n            if (glyphName.length === 3) {\n              code = parseInt(glyphName.substring(1), 16);\n            }\n\n            break;\n\n          case \"g\":\n            if (glyphName.length === 5) {\n              code = parseInt(glyphName.substring(1), 16);\n            }\n\n            break;\n\n          case \"C\":\n          case \"c\":\n            if (glyphName.length >= 3 && glyphName.length <= 4) {\n              const codeStr = glyphName.substring(1);\n\n              if (forceGlyphs) {\n                code = parseInt(codeStr, 16);\n                break;\n              }\n\n              code = +codeStr;\n\n              if (Number.isNaN(code) && Number.isInteger(parseInt(codeStr, 16))) {\n                return this._simpleFontToUnicode(properties, true);\n              }\n            }\n\n            break;\n\n          default:\n            const unicode = (0, _unicode.getUnicodeForGlyph)(glyphName, glyphsUnicodeMap);\n\n            if (unicode !== -1) {\n              code = unicode;\n            }\n\n        }\n\n        if (code > 0 && code <= 0x10ffff && Number.isInteger(code)) {\n          if (baseEncodingName && code === +charcode) {\n            const baseEncoding = (0, _encodings.getEncoding)(baseEncodingName);\n\n            if (baseEncoding && (glyphName = baseEncoding[charcode])) {\n              toUnicode[charcode] = String.fromCharCode(glyphsUnicodeMap[glyphName]);\n              continue;\n            }\n          }\n\n          toUnicode[charcode] = String.fromCodePoint(code);\n        }\n\n        continue;\n      }\n\n      toUnicode[charcode] = String.fromCharCode(glyphsUnicodeMap[glyphName]);\n    }\n\n    return toUnicode;\n  }\n\n  async buildToUnicode(properties) {\n    properties.hasIncludedToUnicodeMap = !!properties.toUnicode && properties.toUnicode.length > 0;\n\n    if (properties.hasIncludedToUnicodeMap) {\n      if (!properties.composite && properties.hasEncoding) {\n        properties.fallbackToUnicode = this._simpleFontToUnicode(properties);\n      }\n\n      return properties.toUnicode;\n    }\n\n    if (!properties.composite) {\n      return new _to_unicode_map.ToUnicodeMap(this._simpleFontToUnicode(properties));\n    }\n\n    if (properties.composite && (properties.cMap.builtInCMap && !(properties.cMap instanceof _cmap.IdentityCMap) || properties.cidSystemInfo.registry === \"Adobe\" && (properties.cidSystemInfo.ordering === \"GB1\" || properties.cidSystemInfo.ordering === \"CNS1\" || properties.cidSystemInfo.ordering === \"Japan1\" || properties.cidSystemInfo.ordering === \"Korea1\"))) {\n      const {\n        registry,\n        ordering\n      } = properties.cidSystemInfo;\n\n      const ucs2CMapName = _primitives.Name.get(`${registry}-${ordering}-UCS2`);\n\n      const ucs2CMap = await _cmap.CMapFactory.create({\n        encoding: ucs2CMapName,\n        fetchBuiltInCMap: this._fetchBuiltInCMapBound,\n        useCMap: null\n      });\n      const toUnicode = [];\n      properties.cMap.forEach(function (charcode, cid) {\n        if (cid > 0xffff) {\n          throw new _util.FormatError(\"Max size of CID is 65,535\");\n        }\n\n        const ucs2 = ucs2CMap.lookup(cid);\n\n        if (ucs2) {\n          toUnicode[charcode] = String.fromCharCode((ucs2.charCodeAt(0) << 8) + ucs2.charCodeAt(1));\n        }\n      });\n      return new _to_unicode_map.ToUnicodeMap(toUnicode);\n    }\n\n    return new _to_unicode_map.IdentityToUnicodeMap(properties.firstChar, properties.lastChar);\n  }\n\n  readToUnicode(cmapObj) {\n    if (!cmapObj) {\n      return Promise.resolve(null);\n    }\n\n    if (cmapObj instanceof _primitives.Name) {\n      return _cmap.CMapFactory.create({\n        encoding: cmapObj,\n        fetchBuiltInCMap: this._fetchBuiltInCMapBound,\n        useCMap: null\n      }).then(function (cmap) {\n        if (cmap instanceof _cmap.IdentityCMap) {\n          return new _to_unicode_map.IdentityToUnicodeMap(0, 0xffff);\n        }\n\n        return new _to_unicode_map.ToUnicodeMap(cmap.getMap());\n      });\n    } else if (cmapObj instanceof _base_stream.BaseStream) {\n      return _cmap.CMapFactory.create({\n        encoding: cmapObj,\n        fetchBuiltInCMap: this._fetchBuiltInCMapBound,\n        useCMap: null\n      }).then(function (cmap) {\n        if (cmap instanceof _cmap.IdentityCMap) {\n          return new _to_unicode_map.IdentityToUnicodeMap(0, 0xffff);\n        }\n\n        const map = new Array(cmap.length);\n        cmap.forEach(function (charCode, token) {\n          if (typeof token === \"number\") {\n            map[charCode] = String.fromCodePoint(token);\n            return;\n          }\n\n          const str = [];\n\n          for (let k = 0; k < token.length; k += 2) {\n            const w1 = token.charCodeAt(k) << 8 | token.charCodeAt(k + 1);\n\n            if ((w1 & 0xf800) !== 0xd800) {\n              str.push(w1);\n              continue;\n            }\n\n            k += 2;\n            const w2 = token.charCodeAt(k) << 8 | token.charCodeAt(k + 1);\n            str.push(((w1 & 0x3ff) << 10) + (w2 & 0x3ff) + 0x10000);\n          }\n\n          map[charCode] = String.fromCodePoint.apply(String, str);\n        });\n        return new _to_unicode_map.ToUnicodeMap(map);\n      }, reason => {\n        if (reason instanceof _util.AbortException) {\n          return null;\n        }\n\n        if (this.options.ignoreErrors) {\n          this.handler.send(\"UnsupportedFeature\", {\n            featureId: _util.UNSUPPORTED_FEATURES.errorFontToUnicode\n          });\n          (0, _util.warn)(`readToUnicode - ignoring ToUnicode data: \"${reason}\".`);\n          return null;\n        }\n\n        throw reason;\n      });\n    }\n\n    return Promise.resolve(null);\n  }\n\n  readCidToGidMap(glyphsData, toUnicode) {\n    const result = [];\n\n    for (let j = 0, jj = glyphsData.length; j < jj; j++) {\n      const glyphID = glyphsData[j++] << 8 | glyphsData[j];\n      const code = j >> 1;\n\n      if (glyphID === 0 && !toUnicode.has(code)) {\n        continue;\n      }\n\n      result[code] = glyphID;\n    }\n\n    return result;\n  }\n\n  extractWidths(dict, descriptor, properties) {\n    const xref = this.xref;\n    let glyphsWidths = [];\n    let defaultWidth = 0;\n    const glyphsVMetrics = [];\n    let defaultVMetrics;\n    let i, ii, j, jj, start, code, widths;\n\n    if (properties.composite) {\n      defaultWidth = dict.has(\"DW\") ? dict.get(\"DW\") : 1000;\n      widths = dict.get(\"W\");\n\n      if (widths) {\n        for (i = 0, ii = widths.length; i < ii; i++) {\n          start = xref.fetchIfRef(widths[i++]);\n          code = xref.fetchIfRef(widths[i]);\n\n          if (Array.isArray(code)) {\n            for (j = 0, jj = code.length; j < jj; j++) {\n              glyphsWidths[start++] = xref.fetchIfRef(code[j]);\n            }\n          } else {\n            const width = xref.fetchIfRef(widths[++i]);\n\n            for (j = start; j <= code; j++) {\n              glyphsWidths[j] = width;\n            }\n          }\n        }\n      }\n\n      if (properties.vertical) {\n        let vmetrics = dict.getArray(\"DW2\") || [880, -1000];\n        defaultVMetrics = [vmetrics[1], defaultWidth * 0.5, vmetrics[0]];\n        vmetrics = dict.get(\"W2\");\n\n        if (vmetrics) {\n          for (i = 0, ii = vmetrics.length; i < ii; i++) {\n            start = xref.fetchIfRef(vmetrics[i++]);\n            code = xref.fetchIfRef(vmetrics[i]);\n\n            if (Array.isArray(code)) {\n              for (j = 0, jj = code.length; j < jj; j++) {\n                glyphsVMetrics[start++] = [xref.fetchIfRef(code[j++]), xref.fetchIfRef(code[j++]), xref.fetchIfRef(code[j])];\n              }\n            } else {\n              const vmetric = [xref.fetchIfRef(vmetrics[++i]), xref.fetchIfRef(vmetrics[++i]), xref.fetchIfRef(vmetrics[++i])];\n\n              for (j = start; j <= code; j++) {\n                glyphsVMetrics[j] = vmetric;\n              }\n            }\n          }\n        }\n      }\n    } else {\n      const firstChar = properties.firstChar;\n      widths = dict.get(\"Widths\");\n\n      if (widths) {\n        j = firstChar;\n\n        for (i = 0, ii = widths.length; i < ii; i++) {\n          glyphsWidths[j++] = xref.fetchIfRef(widths[i]);\n        }\n\n        defaultWidth = parseFloat(descriptor.get(\"MissingWidth\")) || 0;\n      } else {\n        const baseFontName = dict.get(\"BaseFont\");\n\n        if (baseFontName instanceof _primitives.Name) {\n          const metrics = this.getBaseFontMetrics(baseFontName.name);\n          glyphsWidths = this.buildCharCodeToWidth(metrics.widths, properties);\n          defaultWidth = metrics.defaultWidth;\n        }\n      }\n    }\n\n    let isMonospace = true;\n    let firstWidth = defaultWidth;\n\n    for (const glyph in glyphsWidths) {\n      const glyphWidth = glyphsWidths[glyph];\n\n      if (!glyphWidth) {\n        continue;\n      }\n\n      if (!firstWidth) {\n        firstWidth = glyphWidth;\n        continue;\n      }\n\n      if (firstWidth !== glyphWidth) {\n        isMonospace = false;\n        break;\n      }\n    }\n\n    if (isMonospace) {\n      properties.flags |= _fonts_utils.FontFlags.FixedPitch;\n    }\n\n    properties.defaultWidth = defaultWidth;\n    properties.widths = glyphsWidths;\n    properties.defaultVMetrics = defaultVMetrics;\n    properties.vmetrics = glyphsVMetrics;\n  }\n\n  isSerifFont(baseFontName) {\n    const fontNameWoStyle = baseFontName.split(\"-\")[0];\n    return fontNameWoStyle in (0, _standard_fonts.getSerifFonts)() || fontNameWoStyle.search(/serif/gi) !== -1;\n  }\n\n  getBaseFontMetrics(name) {\n    let defaultWidth = 0;\n    let widths = Object.create(null);\n    let monospace = false;\n    const stdFontMap = (0, _standard_fonts.getStdFontMap)();\n    let lookupName = stdFontMap[name] || name;\n    const Metrics = (0, _metrics.getMetrics)();\n\n    if (!(lookupName in Metrics)) {\n      if (this.isSerifFont(name)) {\n        lookupName = \"Times-Roman\";\n      } else {\n        lookupName = \"Helvetica\";\n      }\n    }\n\n    const glyphWidths = Metrics[lookupName];\n\n    if (typeof glyphWidths === \"number\") {\n      defaultWidth = glyphWidths;\n      monospace = true;\n    } else {\n      widths = glyphWidths();\n    }\n\n    return {\n      defaultWidth,\n      monospace,\n      widths\n    };\n  }\n\n  buildCharCodeToWidth(widthsByGlyphName, properties) {\n    const widths = Object.create(null);\n    const differences = properties.differences;\n    const encoding = properties.defaultEncoding;\n\n    for (let charCode = 0; charCode < 256; charCode++) {\n      if (charCode in differences && widthsByGlyphName[differences[charCode]]) {\n        widths[charCode] = widthsByGlyphName[differences[charCode]];\n        continue;\n      }\n\n      if (charCode in encoding && widthsByGlyphName[encoding[charCode]]) {\n        widths[charCode] = widthsByGlyphName[encoding[charCode]];\n        continue;\n      }\n    }\n\n    return widths;\n  }\n\n  preEvaluateFont(dict) {\n    const baseDict = dict;\n    let type = dict.get(\"Subtype\");\n\n    if (!(type instanceof _primitives.Name)) {\n      throw new _util.FormatError(\"invalid font Subtype\");\n    }\n\n    let composite = false;\n    let hash, toUnicode;\n\n    if (type.name === \"Type0\") {\n      const df = dict.get(\"DescendantFonts\");\n\n      if (!df) {\n        throw new _util.FormatError(\"Descendant fonts are not specified\");\n      }\n\n      dict = Array.isArray(df) ? this.xref.fetchIfRef(df[0]) : df;\n\n      if (!(dict instanceof _primitives.Dict)) {\n        throw new _util.FormatError(\"Descendant font is not a dictionary.\");\n      }\n\n      type = dict.get(\"Subtype\");\n\n      if (!(type instanceof _primitives.Name)) {\n        throw new _util.FormatError(\"invalid font Subtype\");\n      }\n\n      composite = true;\n    }\n\n    const firstChar = dict.get(\"FirstChar\") || 0,\n          lastChar = dict.get(\"LastChar\") || (composite ? 0xffff : 0xff);\n    const descriptor = dict.get(\"FontDescriptor\");\n\n    if (descriptor) {\n      hash = new _murmurhash.MurmurHash3_64();\n      const encoding = baseDict.getRaw(\"Encoding\");\n\n      if (encoding instanceof _primitives.Name) {\n        hash.update(encoding.name);\n      } else if (encoding instanceof _primitives.Ref) {\n        hash.update(encoding.toString());\n      } else if (encoding instanceof _primitives.Dict) {\n        for (const entry of encoding.getRawValues()) {\n          if (entry instanceof _primitives.Name) {\n            hash.update(entry.name);\n          } else if (entry instanceof _primitives.Ref) {\n            hash.update(entry.toString());\n          } else if (Array.isArray(entry)) {\n            const diffLength = entry.length,\n                  diffBuf = new Array(diffLength);\n\n            for (let j = 0; j < diffLength; j++) {\n              const diffEntry = entry[j];\n\n              if (diffEntry instanceof _primitives.Name) {\n                diffBuf[j] = diffEntry.name;\n              } else if (typeof diffEntry === \"number\" || diffEntry instanceof _primitives.Ref) {\n                diffBuf[j] = diffEntry.toString();\n              }\n            }\n\n            hash.update(diffBuf.join());\n          }\n        }\n      }\n\n      hash.update(`${firstChar}-${lastChar}`);\n      toUnicode = dict.get(\"ToUnicode\") || baseDict.get(\"ToUnicode\");\n\n      if (toUnicode instanceof _base_stream.BaseStream) {\n        const stream = toUnicode.str || toUnicode;\n        const uint8array = stream.buffer ? new Uint8Array(stream.buffer.buffer, 0, stream.bufferLength) : new Uint8Array(stream.bytes.buffer, stream.start, stream.end - stream.start);\n        hash.update(uint8array);\n      } else if (toUnicode instanceof _primitives.Name) {\n        hash.update(toUnicode.name);\n      }\n\n      const widths = dict.get(\"Widths\") || baseDict.get(\"Widths\");\n\n      if (Array.isArray(widths)) {\n        const widthsBuf = [];\n\n        for (const entry of widths) {\n          if (typeof entry === \"number\" || entry instanceof _primitives.Ref) {\n            widthsBuf.push(entry.toString());\n          }\n        }\n\n        hash.update(widthsBuf.join());\n      }\n\n      if (composite) {\n        hash.update(\"compositeFont\");\n        const compositeWidths = dict.get(\"W\") || baseDict.get(\"W\");\n\n        if (Array.isArray(compositeWidths)) {\n          const widthsBuf = [];\n\n          for (const entry of compositeWidths) {\n            if (typeof entry === \"number\" || entry instanceof _primitives.Ref) {\n              widthsBuf.push(entry.toString());\n            } else if (Array.isArray(entry)) {\n              const subWidthsBuf = [];\n\n              for (const element of entry) {\n                if (typeof element === \"number\" || element instanceof _primitives.Ref) {\n                  subWidthsBuf.push(element.toString());\n                }\n              }\n\n              widthsBuf.push(`[${subWidthsBuf.join()}]`);\n            }\n          }\n\n          hash.update(widthsBuf.join());\n        }\n\n        const cidToGidMap = dict.getRaw(\"CIDToGIDMap\") || baseDict.getRaw(\"CIDToGIDMap\");\n\n        if (cidToGidMap instanceof _primitives.Name) {\n          hash.update(cidToGidMap.name);\n        } else if (cidToGidMap instanceof _primitives.Ref) {\n          hash.update(cidToGidMap.toString());\n        } else if (cidToGidMap instanceof _base_stream.BaseStream) {\n          hash.update(cidToGidMap.peekBytes());\n        }\n      }\n    }\n\n    return {\n      descriptor,\n      dict,\n      baseDict,\n      composite,\n      type: type.name,\n      firstChar,\n      lastChar,\n      toUnicode,\n      hash: hash ? hash.hexdigest() : \"\"\n    };\n  }\n\n  async translateFont({\n    descriptor,\n    dict,\n    baseDict,\n    composite,\n    type,\n    firstChar,\n    lastChar,\n    toUnicode,\n    cssFontInfo\n  }) {\n    const isType3Font = type === \"Type3\";\n    let properties;\n\n    if (!descriptor) {\n      if (isType3Font) {\n        descriptor = new _primitives.Dict(null);\n        descriptor.set(\"FontName\", _primitives.Name.get(type));\n        descriptor.set(\"FontBBox\", dict.getArray(\"FontBBox\") || [0, 0, 0, 0]);\n      } else {\n        let baseFontName = dict.get(\"BaseFont\");\n\n        if (!(baseFontName instanceof _primitives.Name)) {\n          throw new _util.FormatError(\"Base font is not specified\");\n        }\n\n        baseFontName = baseFontName.name.replace(/[,_]/g, \"-\");\n        const metrics = this.getBaseFontMetrics(baseFontName);\n        const fontNameWoStyle = baseFontName.split(\"-\")[0];\n        const flags = (this.isSerifFont(fontNameWoStyle) ? _fonts_utils.FontFlags.Serif : 0) | (metrics.monospace ? _fonts_utils.FontFlags.FixedPitch : 0) | ((0, _standard_fonts.getSymbolsFonts)()[fontNameWoStyle] ? _fonts_utils.FontFlags.Symbolic : _fonts_utils.FontFlags.Nonsymbolic);\n        properties = {\n          type,\n          name: baseFontName,\n          loadedName: baseDict.loadedName,\n          widths: metrics.widths,\n          defaultWidth: metrics.defaultWidth,\n          isSimulatedFlags: true,\n          flags,\n          firstChar,\n          lastChar,\n          toUnicode,\n          xHeight: 0,\n          capHeight: 0,\n          italicAngle: 0,\n          isType3Font\n        };\n        const widths = dict.get(\"Widths\");\n        const standardFontName = (0, _standard_fonts.getStandardFontName)(baseFontName);\n        let file = null;\n\n        if (standardFontName) {\n          properties.isStandardFont = true;\n          file = await this.fetchStandardFontData(standardFontName);\n          properties.isInternalFont = !!file;\n        }\n\n        return this.extractDataStructures(dict, dict, properties).then(newProperties => {\n          if (widths) {\n            const glyphWidths = [];\n            let j = firstChar;\n\n            for (let i = 0, ii = widths.length; i < ii; i++) {\n              glyphWidths[j++] = this.xref.fetchIfRef(widths[i]);\n            }\n\n            newProperties.widths = glyphWidths;\n          } else {\n            newProperties.widths = this.buildCharCodeToWidth(metrics.widths, newProperties);\n          }\n\n          return new _fonts.Font(baseFontName, file, newProperties);\n        });\n      }\n    }\n\n    let fontName = descriptor.get(\"FontName\");\n    let baseFont = dict.get(\"BaseFont\");\n\n    if (typeof fontName === \"string\") {\n      fontName = _primitives.Name.get(fontName);\n    }\n\n    if (typeof baseFont === \"string\") {\n      baseFont = _primitives.Name.get(baseFont);\n    }\n\n    if (!isType3Font) {\n      const fontNameStr = fontName && fontName.name;\n      const baseFontStr = baseFont && baseFont.name;\n\n      if (fontNameStr !== baseFontStr) {\n        (0, _util.info)(`The FontDescriptor's FontName is \"${fontNameStr}\" but ` + `should be the same as the Font's BaseFont \"${baseFontStr}\".`);\n\n        if (fontNameStr && baseFontStr && baseFontStr.startsWith(fontNameStr)) {\n          fontName = baseFont;\n        }\n      }\n    }\n\n    fontName = fontName || baseFont;\n\n    if (!(fontName instanceof _primitives.Name)) {\n      throw new _util.FormatError(\"invalid font name\");\n    }\n\n    let fontFile, subtype, length1, length2, length3;\n\n    try {\n      fontFile = descriptor.get(\"FontFile\", \"FontFile2\", \"FontFile3\");\n    } catch (ex) {\n      if (!this.options.ignoreErrors) {\n        throw ex;\n      }\n\n      (0, _util.warn)(`translateFont - fetching \"${fontName.name}\" font file: \"${ex}\".`);\n      fontFile = new _stream.NullStream();\n    }\n\n    let isStandardFont = false;\n    let isInternalFont = false;\n    let glyphScaleFactors = null;\n\n    if (fontFile) {\n      if (fontFile.dict) {\n        const subtypeEntry = fontFile.dict.get(\"Subtype\");\n\n        if (subtypeEntry instanceof _primitives.Name) {\n          subtype = subtypeEntry.name;\n        }\n\n        length1 = fontFile.dict.get(\"Length1\");\n        length2 = fontFile.dict.get(\"Length2\");\n        length3 = fontFile.dict.get(\"Length3\");\n      }\n    } else if (cssFontInfo) {\n      const standardFontName = (0, _xfa_fonts.getXfaFontName)(fontName.name);\n\n      if (standardFontName) {\n        cssFontInfo.fontFamily = `${cssFontInfo.fontFamily}-PdfJS-XFA`;\n        cssFontInfo.metrics = standardFontName.metrics || null;\n        glyphScaleFactors = standardFontName.factors || null;\n        fontFile = await this.fetchStandardFontData(standardFontName.name);\n        isInternalFont = !!fontFile;\n        baseDict = dict = (0, _xfa_fonts.getXfaFontDict)(fontName.name);\n        composite = true;\n      }\n    } else if (!isType3Font) {\n      const standardFontName = (0, _standard_fonts.getStandardFontName)(fontName.name);\n\n      if (standardFontName) {\n        isStandardFont = true;\n        fontFile = await this.fetchStandardFontData(standardFontName);\n        isInternalFont = !!fontFile;\n      }\n    }\n\n    properties = {\n      type,\n      name: fontName.name,\n      subtype,\n      file: fontFile,\n      length1,\n      length2,\n      length3,\n      isStandardFont,\n      isInternalFont,\n      loadedName: baseDict.loadedName,\n      composite,\n      fixedPitch: false,\n      fontMatrix: dict.getArray(\"FontMatrix\") || _util.FONT_IDENTITY_MATRIX,\n      firstChar,\n      lastChar,\n      toUnicode,\n      bbox: descriptor.getArray(\"FontBBox\") || dict.getArray(\"FontBBox\"),\n      ascent: descriptor.get(\"Ascent\"),\n      descent: descriptor.get(\"Descent\"),\n      xHeight: descriptor.get(\"XHeight\") || 0,\n      capHeight: descriptor.get(\"CapHeight\") || 0,\n      flags: descriptor.get(\"Flags\"),\n      italicAngle: descriptor.get(\"ItalicAngle\") || 0,\n      isType3Font,\n      cssFontInfo,\n      scaleFactors: glyphScaleFactors\n    };\n\n    if (composite) {\n      const cidEncoding = baseDict.get(\"Encoding\");\n\n      if (cidEncoding instanceof _primitives.Name) {\n        properties.cidEncoding = cidEncoding.name;\n      }\n\n      const cMap = await _cmap.CMapFactory.create({\n        encoding: cidEncoding,\n        fetchBuiltInCMap: this._fetchBuiltInCMapBound,\n        useCMap: null\n      });\n      properties.cMap = cMap;\n      properties.vertical = properties.cMap.vertical;\n    }\n\n    return this.extractDataStructures(dict, baseDict, properties).then(newProperties => {\n      this.extractWidths(dict, descriptor, newProperties);\n      return new _fonts.Font(fontName.name, fontFile, newProperties);\n    });\n  }\n\n  static buildFontPaths(font, glyphs, handler, evaluatorOptions) {\n    function buildPath(fontChar) {\n      const glyphName = `${font.loadedName}_path_${fontChar}`;\n\n      try {\n        if (font.renderer.hasBuiltPath(fontChar)) {\n          return;\n        }\n\n        handler.send(\"commonobj\", [glyphName, \"FontPath\", font.renderer.getPathJs(fontChar)]);\n      } catch (reason) {\n        if (evaluatorOptions.ignoreErrors) {\n          handler.send(\"UnsupportedFeature\", {\n            featureId: _util.UNSUPPORTED_FEATURES.errorFontBuildPath\n          });\n          (0, _util.warn)(`buildFontPaths - ignoring ${glyphName} glyph: \"${reason}\".`);\n          return;\n        }\n\n        throw reason;\n      }\n    }\n\n    for (const glyph of glyphs) {\n      buildPath(glyph.fontChar);\n      const accent = glyph.accent;\n\n      if (accent && accent.fontChar) {\n        buildPath(accent.fontChar);\n      }\n    }\n  }\n\n  static get fallbackFontDict() {\n    const dict = new _primitives.Dict();\n    dict.set(\"BaseFont\", _primitives.Name.get(\"PDFJS-FallbackFont\"));\n    dict.set(\"Type\", _primitives.Name.get(\"FallbackType\"));\n    dict.set(\"Subtype\", _primitives.Name.get(\"FallbackType\"));\n    dict.set(\"Encoding\", _primitives.Name.get(\"WinAnsiEncoding\"));\n    return (0, _util.shadow)(this, \"fallbackFontDict\", dict);\n  }\n\n}\n\nexports.PartialEvaluator = PartialEvaluator;\n\nclass TranslatedFont {\n  constructor({\n    loadedName,\n    font,\n    dict,\n    evaluatorOptions\n  }) {\n    this.loadedName = loadedName;\n    this.font = font;\n    this.dict = dict;\n    this._evaluatorOptions = evaluatorOptions || DefaultPartialEvaluatorOptions;\n    this.type3Loaded = null;\n    this.type3Dependencies = font.isType3Font ? new Set() : null;\n    this.sent = false;\n  }\n\n  send(handler) {\n    if (this.sent) {\n      return;\n    }\n\n    this.sent = true;\n    handler.send(\"commonobj\", [this.loadedName, \"Font\", this.font.exportData(this._evaluatorOptions.fontExtraProperties)]);\n  }\n\n  fallback(handler) {\n    if (!this.font.data) {\n      return;\n    }\n\n    this.font.disableFontFace = true;\n    PartialEvaluator.buildFontPaths(this.font, this.font.glyphCacheValues, handler, this._evaluatorOptions);\n  }\n\n  loadType3Data(evaluator, resources, task) {\n    if (this.type3Loaded) {\n      return this.type3Loaded;\n    }\n\n    if (!this.font.isType3Font) {\n      throw new Error(\"Must be a Type3 font.\");\n    }\n\n    const type3Evaluator = evaluator.clone({\n      ignoreErrors: false\n    });\n    type3Evaluator.parsingType3Font = true;\n    const type3FontRefs = new _primitives.RefSet(evaluator.type3FontRefs);\n\n    if (this.dict.objId && !type3FontRefs.has(this.dict.objId)) {\n      type3FontRefs.put(this.dict.objId);\n    }\n\n    type3Evaluator.type3FontRefs = type3FontRefs;\n    const translatedFont = this.font,\n          type3Dependencies = this.type3Dependencies;\n    let loadCharProcsPromise = Promise.resolve();\n    const charProcs = this.dict.get(\"CharProcs\");\n    const fontResources = this.dict.get(\"Resources\") || resources;\n    const charProcOperatorList = Object.create(null);\n    const isEmptyBBox = !translatedFont.bbox || (0, _util.isArrayEqual)(translatedFont.bbox, [0, 0, 0, 0]);\n\n    for (const key of charProcs.getKeys()) {\n      loadCharProcsPromise = loadCharProcsPromise.then(() => {\n        const glyphStream = charProcs.get(key);\n        const operatorList = new _operator_list.OperatorList();\n        return type3Evaluator.getOperatorList({\n          stream: glyphStream,\n          task,\n          resources: fontResources,\n          operatorList\n        }).then(() => {\n          if (operatorList.fnArray[0] === _util.OPS.setCharWidthAndBounds) {\n            this._removeType3ColorOperators(operatorList, isEmptyBBox);\n          }\n\n          charProcOperatorList[key] = operatorList.getIR();\n\n          for (const dependency of operatorList.dependencies) {\n            type3Dependencies.add(dependency);\n          }\n        }).catch(function (reason) {\n          (0, _util.warn)(`Type3 font resource \"${key}\" is not available.`);\n          const dummyOperatorList = new _operator_list.OperatorList();\n          charProcOperatorList[key] = dummyOperatorList.getIR();\n        });\n      });\n    }\n\n    this.type3Loaded = loadCharProcsPromise.then(() => {\n      translatedFont.charProcOperatorList = charProcOperatorList;\n\n      if (this._bbox) {\n        translatedFont.isCharBBox = true;\n        translatedFont.bbox = this._bbox;\n      }\n    });\n    return this.type3Loaded;\n  }\n\n  _removeType3ColorOperators(operatorList, isEmptyBBox = false) {\n    if (isEmptyBBox) {\n      if (!this._bbox) {\n        this._bbox = [Infinity, Infinity, -Infinity, -Infinity];\n      }\n\n      const charBBox = _util.Util.normalizeRect(operatorList.argsArray[0].slice(2));\n\n      this._bbox[0] = Math.min(this._bbox[0], charBBox[0]);\n      this._bbox[1] = Math.min(this._bbox[1], charBBox[1]);\n      this._bbox[2] = Math.max(this._bbox[2], charBBox[2]);\n      this._bbox[3] = Math.max(this._bbox[3], charBBox[3]);\n    }\n\n    let i = 1,\n        ii = operatorList.length;\n\n    while (i < ii) {\n      switch (operatorList.fnArray[i]) {\n        case _util.OPS.setStrokeColorSpace:\n        case _util.OPS.setFillColorSpace:\n        case _util.OPS.setStrokeColor:\n        case _util.OPS.setStrokeColorN:\n        case _util.OPS.setFillColor:\n        case _util.OPS.setFillColorN:\n        case _util.OPS.setStrokeGray:\n        case _util.OPS.setFillGray:\n        case _util.OPS.setStrokeRGBColor:\n        case _util.OPS.setFillRGBColor:\n        case _util.OPS.setStrokeCMYKColor:\n        case _util.OPS.setFillCMYKColor:\n        case _util.OPS.shadingFill:\n        case _util.OPS.setRenderingIntent:\n          operatorList.fnArray.splice(i, 1);\n          operatorList.argsArray.splice(i, 1);\n          ii--;\n          continue;\n\n        case _util.OPS.setGState:\n          const [gStateObj] = operatorList.argsArray[i];\n          let j = 0,\n              jj = gStateObj.length;\n\n          while (j < jj) {\n            const [gStateKey] = gStateObj[j];\n\n            switch (gStateKey) {\n              case \"TR\":\n              case \"TR2\":\n              case \"HT\":\n              case \"BG\":\n              case \"BG2\":\n              case \"UCR\":\n              case \"UCR2\":\n                gStateObj.splice(j, 1);\n                jj--;\n                continue;\n            }\n\n            j++;\n          }\n\n          break;\n      }\n\n      i++;\n    }\n  }\n\n}\n\nclass StateManager {\n  constructor(initialState = new EvalState()) {\n    this.state = initialState;\n    this.stateStack = [];\n  }\n\n  save() {\n    const old = this.state;\n    this.stateStack.push(this.state);\n    this.state = old.clone();\n  }\n\n  restore() {\n    const prev = this.stateStack.pop();\n\n    if (prev) {\n      this.state = prev;\n    }\n  }\n\n  transform(args) {\n    this.state.ctm = _util.Util.transform(this.state.ctm, args);\n  }\n\n}\n\nclass TextState {\n  constructor() {\n    this.ctm = new Float32Array(_util.IDENTITY_MATRIX);\n    this.fontName = null;\n    this.fontSize = 0;\n    this.font = null;\n    this.fontMatrix = _util.FONT_IDENTITY_MATRIX;\n    this.textMatrix = _util.IDENTITY_MATRIX.slice();\n    this.textLineMatrix = _util.IDENTITY_MATRIX.slice();\n    this.charSpacing = 0;\n    this.wordSpacing = 0;\n    this.leading = 0;\n    this.textHScale = 1;\n    this.textRise = 0;\n  }\n\n  setTextMatrix(a, b, c, d, e, f) {\n    const m = this.textMatrix;\n    m[0] = a;\n    m[1] = b;\n    m[2] = c;\n    m[3] = d;\n    m[4] = e;\n    m[5] = f;\n  }\n\n  setTextLineMatrix(a, b, c, d, e, f) {\n    const m = this.textLineMatrix;\n    m[0] = a;\n    m[1] = b;\n    m[2] = c;\n    m[3] = d;\n    m[4] = e;\n    m[5] = f;\n  }\n\n  translateTextMatrix(x, y) {\n    const m = this.textMatrix;\n    m[4] = m[0] * x + m[2] * y + m[4];\n    m[5] = m[1] * x + m[3] * y + m[5];\n  }\n\n  translateTextLineMatrix(x, y) {\n    const m = this.textLineMatrix;\n    m[4] = m[0] * x + m[2] * y + m[4];\n    m[5] = m[1] * x + m[3] * y + m[5];\n  }\n\n  carriageReturn() {\n    this.translateTextLineMatrix(0, -this.leading);\n    this.textMatrix = this.textLineMatrix.slice();\n  }\n\n  clone() {\n    const clone = Object.create(this);\n    clone.textMatrix = this.textMatrix.slice();\n    clone.textLineMatrix = this.textLineMatrix.slice();\n    clone.fontMatrix = this.fontMatrix.slice();\n    return clone;\n  }\n\n}\n\nclass EvalState {\n  constructor() {\n    this.ctm = new Float32Array(_util.IDENTITY_MATRIX);\n    this.font = null;\n    this.textRenderingMode = _util.TextRenderingMode.FILL;\n    this.fillColorSpace = _colorspace.ColorSpace.singletons.gray;\n    this.strokeColorSpace = _colorspace.ColorSpace.singletons.gray;\n  }\n\n  clone() {\n    return Object.create(this);\n  }\n\n}\n\nclass EvaluatorPreprocessor {\n  static get opMap() {\n    const getOPMap = (0, _core_utils.getLookupTableFactory)(function (t) {\n      t.w = {\n        id: _util.OPS.setLineWidth,\n        numArgs: 1,\n        variableArgs: false\n      };\n      t.J = {\n        id: _util.OPS.setLineCap,\n        numArgs: 1,\n        variableArgs: false\n      };\n      t.j = {\n        id: _util.OPS.setLineJoin,\n        numArgs: 1,\n        variableArgs: false\n      };\n      t.M = {\n        id: _util.OPS.setMiterLimit,\n        numArgs: 1,\n        variableArgs: false\n      };\n      t.d = {\n        id: _util.OPS.setDash,\n        numArgs: 2,\n        variableArgs: false\n      };\n      t.ri = {\n        id: _util.OPS.setRenderingIntent,\n        numArgs: 1,\n        variableArgs: false\n      };\n      t.i = {\n        id: _util.OPS.setFlatness,\n        numArgs: 1,\n        variableArgs: false\n      };\n      t.gs = {\n        id: _util.OPS.setGState,\n        numArgs: 1,\n        variableArgs: false\n      };\n      t.q = {\n        id: _util.OPS.save,\n        numArgs: 0,\n        variableArgs: false\n      };\n      t.Q = {\n        id: _util.OPS.restore,\n        numArgs: 0,\n        variableArgs: false\n      };\n      t.cm = {\n        id: _util.OPS.transform,\n        numArgs: 6,\n        variableArgs: false\n      };\n      t.m = {\n        id: _util.OPS.moveTo,\n        numArgs: 2,\n        variableArgs: false\n      };\n      t.l = {\n        id: _util.OPS.lineTo,\n        numArgs: 2,\n        variableArgs: false\n      };\n      t.c = {\n        id: _util.OPS.curveTo,\n        numArgs: 6,\n        variableArgs: false\n      };\n      t.v = {\n        id: _util.OPS.curveTo2,\n        numArgs: 4,\n        variableArgs: false\n      };\n      t.y = {\n        id: _util.OPS.curveTo3,\n        numArgs: 4,\n        variableArgs: false\n      };\n      t.h = {\n        id: _util.OPS.closePath,\n        numArgs: 0,\n        variableArgs: false\n      };\n      t.re = {\n        id: _util.OPS.rectangle,\n        numArgs: 4,\n        variableArgs: false\n      };\n      t.S = {\n        id: _util.OPS.stroke,\n        numArgs: 0,\n        variableArgs: false\n      };\n      t.s = {\n        id: _util.OPS.closeStroke,\n        numArgs: 0,\n        variableArgs: false\n      };\n      t.f = {\n        id: _util.OPS.fill,\n        numArgs: 0,\n        variableArgs: false\n      };\n      t.F = {\n        id: _util.OPS.fill,\n        numArgs: 0,\n        variableArgs: false\n      };\n      t[\"f*\"] = {\n        id: _util.OPS.eoFill,\n        numArgs: 0,\n        variableArgs: false\n      };\n      t.B = {\n        id: _util.OPS.fillStroke,\n        numArgs: 0,\n        variableArgs: false\n      };\n      t[\"B*\"] = {\n        id: _util.OPS.eoFillStroke,\n        numArgs: 0,\n        variableArgs: false\n      };\n      t.b = {\n        id: _util.OPS.closeFillStroke,\n        numArgs: 0,\n        variableArgs: false\n      };\n      t[\"b*\"] = {\n        id: _util.OPS.closeEOFillStroke,\n        numArgs: 0,\n        variableArgs: false\n      };\n      t.n = {\n        id: _util.OPS.endPath,\n        numArgs: 0,\n        variableArgs: false\n      };\n      t.W = {\n        id: _util.OPS.clip,\n        numArgs: 0,\n        variableArgs: false\n      };\n      t[\"W*\"] = {\n        id: _util.OPS.eoClip,\n        numArgs: 0,\n        variableArgs: false\n      };\n      t.BT = {\n        id: _util.OPS.beginText,\n        numArgs: 0,\n        variableArgs: false\n      };\n      t.ET = {\n        id: _util.OPS.endText,\n        numArgs: 0,\n        variableArgs: false\n      };\n      t.Tc = {\n        id: _util.OPS.setCharSpacing,\n        numArgs: 1,\n        variableArgs: false\n      };\n      t.Tw = {\n        id: _util.OPS.setWordSpacing,\n        numArgs: 1,\n        variableArgs: false\n      };\n      t.Tz = {\n        id: _util.OPS.setHScale,\n        numArgs: 1,\n        variableArgs: false\n      };\n      t.TL = {\n        id: _util.OPS.setLeading,\n        numArgs: 1,\n        variableArgs: false\n      };\n      t.Tf = {\n        id: _util.OPS.setFont,\n        numArgs: 2,\n        variableArgs: false\n      };\n      t.Tr = {\n        id: _util.OPS.setTextRenderingMode,\n        numArgs: 1,\n        variableArgs: false\n      };\n      t.Ts = {\n        id: _util.OPS.setTextRise,\n        numArgs: 1,\n        variableArgs: false\n      };\n      t.Td = {\n        id: _util.OPS.moveText,\n        numArgs: 2,\n        variableArgs: false\n      };\n      t.TD = {\n        id: _util.OPS.setLeadingMoveText,\n        numArgs: 2,\n        variableArgs: false\n      };\n      t.Tm = {\n        id: _util.OPS.setTextMatrix,\n        numArgs: 6,\n        variableArgs: false\n      };\n      t[\"T*\"] = {\n        id: _util.OPS.nextLine,\n        numArgs: 0,\n        variableArgs: false\n      };\n      t.Tj = {\n        id: _util.OPS.showText,\n        numArgs: 1,\n        variableArgs: false\n      };\n      t.TJ = {\n        id: _util.OPS.showSpacedText,\n        numArgs: 1,\n        variableArgs: false\n      };\n      t[\"'\"] = {\n        id: _util.OPS.nextLineShowText,\n        numArgs: 1,\n        variableArgs: false\n      };\n      t['\"'] = {\n        id: _util.OPS.nextLineSetSpacingShowText,\n        numArgs: 3,\n        variableArgs: false\n      };\n      t.d0 = {\n        id: _util.OPS.setCharWidth,\n        numArgs: 2,\n        variableArgs: false\n      };\n      t.d1 = {\n        id: _util.OPS.setCharWidthAndBounds,\n        numArgs: 6,\n        variableArgs: false\n      };\n      t.CS = {\n        id: _util.OPS.setStrokeColorSpace,\n        numArgs: 1,\n        variableArgs: false\n      };\n      t.cs = {\n        id: _util.OPS.setFillColorSpace,\n        numArgs: 1,\n        variableArgs: false\n      };\n      t.SC = {\n        id: _util.OPS.setStrokeColor,\n        numArgs: 4,\n        variableArgs: true\n      };\n      t.SCN = {\n        id: _util.OPS.setStrokeColorN,\n        numArgs: 33,\n        variableArgs: true\n      };\n      t.sc = {\n        id: _util.OPS.setFillColor,\n        numArgs: 4,\n        variableArgs: true\n      };\n      t.scn = {\n        id: _util.OPS.setFillColorN,\n        numArgs: 33,\n        variableArgs: true\n      };\n      t.G = {\n        id: _util.OPS.setStrokeGray,\n        numArgs: 1,\n        variableArgs: false\n      };\n      t.g = {\n        id: _util.OPS.setFillGray,\n        numArgs: 1,\n        variableArgs: false\n      };\n      t.RG = {\n        id: _util.OPS.setStrokeRGBColor,\n        numArgs: 3,\n        variableArgs: false\n      };\n      t.rg = {\n        id: _util.OPS.setFillRGBColor,\n        numArgs: 3,\n        variableArgs: false\n      };\n      t.K = {\n        id: _util.OPS.setStrokeCMYKColor,\n        numArgs: 4,\n        variableArgs: false\n      };\n      t.k = {\n        id: _util.OPS.setFillCMYKColor,\n        numArgs: 4,\n        variableArgs: false\n      };\n      t.sh = {\n        id: _util.OPS.shadingFill,\n        numArgs: 1,\n        variableArgs: false\n      };\n      t.BI = {\n        id: _util.OPS.beginInlineImage,\n        numArgs: 0,\n        variableArgs: false\n      };\n      t.ID = {\n        id: _util.OPS.beginImageData,\n        numArgs: 0,\n        variableArgs: false\n      };\n      t.EI = {\n        id: _util.OPS.endInlineImage,\n        numArgs: 1,\n        variableArgs: false\n      };\n      t.Do = {\n        id: _util.OPS.paintXObject,\n        numArgs: 1,\n        variableArgs: false\n      };\n      t.MP = {\n        id: _util.OPS.markPoint,\n        numArgs: 1,\n        variableArgs: false\n      };\n      t.DP = {\n        id: _util.OPS.markPointProps,\n        numArgs: 2,\n        variableArgs: false\n      };\n      t.BMC = {\n        id: _util.OPS.beginMarkedContent,\n        numArgs: 1,\n        variableArgs: false\n      };\n      t.BDC = {\n        id: _util.OPS.beginMarkedContentProps,\n        numArgs: 2,\n        variableArgs: false\n      };\n      t.EMC = {\n        id: _util.OPS.endMarkedContent,\n        numArgs: 0,\n        variableArgs: false\n      };\n      t.BX = {\n        id: _util.OPS.beginCompat,\n        numArgs: 0,\n        variableArgs: false\n      };\n      t.EX = {\n        id: _util.OPS.endCompat,\n        numArgs: 0,\n        variableArgs: false\n      };\n      t.BM = null;\n      t.BD = null;\n      t.true = null;\n      t.fa = null;\n      t.fal = null;\n      t.fals = null;\n      t.false = null;\n      t.nu = null;\n      t.nul = null;\n      t.null = null;\n    });\n    return (0, _util.shadow)(this, \"opMap\", getOPMap());\n  }\n\n  static get MAX_INVALID_PATH_OPS() {\n    return (0, _util.shadow)(this, \"MAX_INVALID_PATH_OPS\", 10);\n  }\n\n  constructor(stream, xref, stateManager = new StateManager()) {\n    this.parser = new _parser.Parser({\n      lexer: new _parser.Lexer(stream, EvaluatorPreprocessor.opMap),\n      xref\n    });\n    this.stateManager = stateManager;\n    this.nonProcessedArgs = [];\n    this._numInvalidPathOPS = 0;\n  }\n\n  get savedStatesDepth() {\n    return this.stateManager.stateStack.length;\n  }\n\n  read(operation) {\n    let args = operation.args;\n\n    while (true) {\n      const obj = this.parser.getObj();\n\n      if (obj instanceof _primitives.Cmd) {\n        const cmd = obj.cmd;\n        const opSpec = EvaluatorPreprocessor.opMap[cmd];\n\n        if (!opSpec) {\n          (0, _util.warn)(`Unknown command \"${cmd}\".`);\n          continue;\n        }\n\n        const fn = opSpec.id;\n        const numArgs = opSpec.numArgs;\n        let argsLength = args !== null ? args.length : 0;\n\n        if (!opSpec.variableArgs) {\n          if (argsLength !== numArgs) {\n            const nonProcessedArgs = this.nonProcessedArgs;\n\n            while (argsLength > numArgs) {\n              nonProcessedArgs.push(args.shift());\n              argsLength--;\n            }\n\n            while (argsLength < numArgs && nonProcessedArgs.length !== 0) {\n              if (args === null) {\n                args = [];\n              }\n\n              args.unshift(nonProcessedArgs.pop());\n              argsLength++;\n            }\n          }\n\n          if (argsLength < numArgs) {\n            const partialMsg = `command ${cmd}: expected ${numArgs} args, ` + `but received ${argsLength} args.`;\n\n            if (fn >= _util.OPS.moveTo && fn <= _util.OPS.endPath && ++this._numInvalidPathOPS > EvaluatorPreprocessor.MAX_INVALID_PATH_OPS) {\n              throw new _util.FormatError(`Invalid ${partialMsg}`);\n            }\n\n            (0, _util.warn)(`Skipping ${partialMsg}`);\n\n            if (args !== null) {\n              args.length = 0;\n            }\n\n            continue;\n          }\n        } else if (argsLength > numArgs) {\n          (0, _util.info)(`Command ${cmd}: expected [0, ${numArgs}] args, ` + `but received ${argsLength} args.`);\n        }\n\n        this.preprocessCommand(fn, args);\n        operation.fn = fn;\n        operation.args = args;\n        return true;\n      }\n\n      if (obj === _primitives.EOF) {\n        return false;\n      }\n\n      if (obj !== null) {\n        if (args === null) {\n          args = [];\n        }\n\n        args.push(obj);\n\n        if (args.length > 33) {\n          throw new _util.FormatError(\"Too many arguments\");\n        }\n      }\n    }\n  }\n\n  preprocessCommand(fn, args) {\n    switch (fn | 0) {\n      case _util.OPS.save:\n        this.stateManager.save();\n        break;\n\n      case _util.OPS.restore:\n        this.stateManager.restore();\n        break;\n\n      case _util.OPS.transform:\n        this.stateManager.transform(args);\n        break;\n    }\n  }\n\n}\n\nexports.EvaluatorPreprocessor = EvaluatorPreprocessor;\n\n/***/ }),\n/* 26 */\n/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {\n\n\n\nObject.defineProperty(exports, \"__esModule\", ({\n  value: true\n}));\nexports.IdentityCMap = exports.CMapFactory = exports.CMap = void 0;\n\nvar _util = __w_pdfjs_require__(2);\n\nvar _primitives = __w_pdfjs_require__(5);\n\nvar _base_stream = __w_pdfjs_require__(9);\n\nvar _parser = __w_pdfjs_require__(27);\n\nvar _core_utils = __w_pdfjs_require__(8);\n\nvar _stream = __w_pdfjs_require__(10);\n\nconst BUILT_IN_CMAPS = [\"Adobe-GB1-UCS2\", \"Adobe-CNS1-UCS2\", \"Adobe-Japan1-UCS2\", \"Adobe-Korea1-UCS2\", \"78-EUC-H\", \"78-EUC-V\", \"78-H\", \"78-RKSJ-H\", \"78-RKSJ-V\", \"78-V\", \"78ms-RKSJ-H\", \"78ms-RKSJ-V\", \"83pv-RKSJ-H\", \"90ms-RKSJ-H\", \"90ms-RKSJ-V\", \"90msp-RKSJ-H\", \"90msp-RKSJ-V\", \"90pv-RKSJ-H\", \"90pv-RKSJ-V\", \"Add-H\", \"Add-RKSJ-H\", \"Add-RKSJ-V\", \"Add-V\", \"Adobe-CNS1-0\", \"Adobe-CNS1-1\", \"Adobe-CNS1-2\", \"Adobe-CNS1-3\", \"Adobe-CNS1-4\", \"Adobe-CNS1-5\", \"Adobe-CNS1-6\", \"Adobe-GB1-0\", \"Adobe-GB1-1\", \"Adobe-GB1-2\", \"Adobe-GB1-3\", \"Adobe-GB1-4\", \"Adobe-GB1-5\", \"Adobe-Japan1-0\", \"Adobe-Japan1-1\", \"Adobe-Japan1-2\", \"Adobe-Japan1-3\", \"Adobe-Japan1-4\", \"Adobe-Japan1-5\", \"Adobe-Japan1-6\", \"Adobe-Korea1-0\", \"Adobe-Korea1-1\", \"Adobe-Korea1-2\", \"B5-H\", \"B5-V\", \"B5pc-H\", \"B5pc-V\", \"CNS-EUC-H\", \"CNS-EUC-V\", \"CNS1-H\", \"CNS1-V\", \"CNS2-H\", \"CNS2-V\", \"ETHK-B5-H\", \"ETHK-B5-V\", \"ETen-B5-H\", \"ETen-B5-V\", \"ETenms-B5-H\", \"ETenms-B5-V\", \"EUC-H\", \"EUC-V\", \"Ext-H\", \"Ext-RKSJ-H\", \"Ext-RKSJ-V\", \"Ext-V\", \"GB-EUC-H\", \"GB-EUC-V\", \"GB-H\", \"GB-V\", \"GBK-EUC-H\", \"GBK-EUC-V\", \"GBK2K-H\", \"GBK2K-V\", \"GBKp-EUC-H\", \"GBKp-EUC-V\", \"GBT-EUC-H\", \"GBT-EUC-V\", \"GBT-H\", \"GBT-V\", \"GBTpc-EUC-H\", \"GBTpc-EUC-V\", \"GBpc-EUC-H\", \"GBpc-EUC-V\", \"H\", \"HKdla-B5-H\", \"HKdla-B5-V\", \"HKdlb-B5-H\", \"HKdlb-B5-V\", \"HKgccs-B5-H\", \"HKgccs-B5-V\", \"HKm314-B5-H\", \"HKm314-B5-V\", \"HKm471-B5-H\", \"HKm471-B5-V\", \"HKscs-B5-H\", \"HKscs-B5-V\", \"Hankaku\", \"Hiragana\", \"KSC-EUC-H\", \"KSC-EUC-V\", \"KSC-H\", \"KSC-Johab-H\", \"KSC-Johab-V\", \"KSC-V\", \"KSCms-UHC-H\", \"KSCms-UHC-HW-H\", \"KSCms-UHC-HW-V\", \"KSCms-UHC-V\", \"KSCpc-EUC-H\", \"KSCpc-EUC-V\", \"Katakana\", \"NWP-H\", \"NWP-V\", \"RKSJ-H\", \"RKSJ-V\", \"Roman\", \"UniCNS-UCS2-H\", \"UniCNS-UCS2-V\", \"UniCNS-UTF16-H\", \"UniCNS-UTF16-V\", \"UniCNS-UTF32-H\", \"UniCNS-UTF32-V\", \"UniCNS-UTF8-H\", \"UniCNS-UTF8-V\", \"UniGB-UCS2-H\", \"UniGB-UCS2-V\", \"UniGB-UTF16-H\", \"UniGB-UTF16-V\", \"UniGB-UTF32-H\", \"UniGB-UTF32-V\", \"UniGB-UTF8-H\", \"UniGB-UTF8-V\", \"UniJIS-UCS2-H\", \"UniJIS-UCS2-HW-H\", \"UniJIS-UCS2-HW-V\", \"UniJIS-UCS2-V\", \"UniJIS-UTF16-H\", \"UniJIS-UTF16-V\", \"UniJIS-UTF32-H\", \"UniJIS-UTF32-V\", \"UniJIS-UTF8-H\", \"UniJIS-UTF8-V\", \"UniJIS2004-UTF16-H\", \"UniJIS2004-UTF16-V\", \"UniJIS2004-UTF32-H\", \"UniJIS2004-UTF32-V\", \"UniJIS2004-UTF8-H\", \"UniJIS2004-UTF8-V\", \"UniJISPro-UCS2-HW-V\", \"UniJISPro-UCS2-V\", \"UniJISPro-UTF8-V\", \"UniJISX0213-UTF32-H\", \"UniJISX0213-UTF32-V\", \"UniJISX02132004-UTF32-H\", \"UniJISX02132004-UTF32-V\", \"UniKS-UCS2-H\", \"UniKS-UCS2-V\", \"UniKS-UTF16-H\", \"UniKS-UTF16-V\", \"UniKS-UTF32-H\", \"UniKS-UTF32-V\", \"UniKS-UTF8-H\", \"UniKS-UTF8-V\", \"V\", \"WP-Symbol\"];\nconst MAX_MAP_RANGE = 2 ** 24 - 1;\n\nclass CMap {\n  constructor(builtInCMap = false) {\n    this.codespaceRanges = [[], [], [], []];\n    this.numCodespaceRanges = 0;\n    this._map = [];\n    this.name = \"\";\n    this.vertical = false;\n    this.useCMap = null;\n    this.builtInCMap = builtInCMap;\n  }\n\n  addCodespaceRange(n, low, high) {\n    this.codespaceRanges[n - 1].push(low, high);\n    this.numCodespaceRanges++;\n  }\n\n  mapCidRange(low, high, dstLow) {\n    if (high - low > MAX_MAP_RANGE) {\n      throw new Error(\"mapCidRange - ignoring data above MAX_MAP_RANGE.\");\n    }\n\n    while (low <= high) {\n      this._map[low++] = dstLow++;\n    }\n  }\n\n  mapBfRange(low, high, dstLow) {\n    if (high - low > MAX_MAP_RANGE) {\n      throw new Error(\"mapBfRange - ignoring data above MAX_MAP_RANGE.\");\n    }\n\n    const lastByte = dstLow.length - 1;\n\n    while (low <= high) {\n      this._map[low++] = dstLow;\n      const nextCharCode = dstLow.charCodeAt(lastByte) + 1;\n\n      if (nextCharCode > 0xff) {\n        dstLow = dstLow.substring(0, lastByte - 1) + String.fromCharCode(dstLow.charCodeAt(lastByte - 1) + 1) + \"\\x00\";\n        continue;\n      }\n\n      dstLow = dstLow.substring(0, lastByte) + String.fromCharCode(nextCharCode);\n    }\n  }\n\n  mapBfRangeToArray(low, high, array) {\n    if (high - low > MAX_MAP_RANGE) {\n      throw new Error(\"mapBfRangeToArray - ignoring data above MAX_MAP_RANGE.\");\n    }\n\n    const ii = array.length;\n    let i = 0;\n\n    while (low <= high && i < ii) {\n      this._map[low] = array[i++];\n      ++low;\n    }\n  }\n\n  mapOne(src, dst) {\n    this._map[src] = dst;\n  }\n\n  lookup(code) {\n    return this._map[code];\n  }\n\n  contains(code) {\n    return this._map[code] !== undefined;\n  }\n\n  forEach(callback) {\n    const map = this._map;\n    const length = map.length;\n\n    if (length <= 0x10000) {\n      for (let i = 0; i < length; i++) {\n        if (map[i] !== undefined) {\n          callback(i, map[i]);\n        }\n      }\n    } else {\n      for (const i in map) {\n        callback(i, map[i]);\n      }\n    }\n  }\n\n  charCodeOf(value) {\n    const map = this._map;\n\n    if (map.length <= 0x10000) {\n      return map.indexOf(value);\n    }\n\n    for (const charCode in map) {\n      if (map[charCode] === value) {\n        return charCode | 0;\n      }\n    }\n\n    return -1;\n  }\n\n  getMap() {\n    return this._map;\n  }\n\n  readCharCode(str, offset, out) {\n    let c = 0;\n    const codespaceRanges = this.codespaceRanges;\n\n    for (let n = 0, nn = codespaceRanges.length; n < nn; n++) {\n      c = (c << 8 | str.charCodeAt(offset + n)) >>> 0;\n      const codespaceRange = codespaceRanges[n];\n\n      for (let k = 0, kk = codespaceRange.length; k < kk;) {\n        const low = codespaceRange[k++];\n        const high = codespaceRange[k++];\n\n        if (c >= low && c <= high) {\n          out.charcode = c;\n          out.length = n + 1;\n          return;\n        }\n      }\n    }\n\n    out.charcode = 0;\n    out.length = 1;\n  }\n\n  getCharCodeLength(charCode) {\n    const codespaceRanges = this.codespaceRanges;\n\n    for (let n = 0, nn = codespaceRanges.length; n < nn; n++) {\n      const codespaceRange = codespaceRanges[n];\n\n      for (let k = 0, kk = codespaceRange.length; k < kk;) {\n        const low = codespaceRange[k++];\n        const high = codespaceRange[k++];\n\n        if (charCode >= low && charCode <= high) {\n          return n + 1;\n        }\n      }\n    }\n\n    return 1;\n  }\n\n  get length() {\n    return this._map.length;\n  }\n\n  get isIdentityCMap() {\n    if (!(this.name === \"Identity-H\" || this.name === \"Identity-V\")) {\n      return false;\n    }\n\n    if (this._map.length !== 0x10000) {\n      return false;\n    }\n\n    for (let i = 0; i < 0x10000; i++) {\n      if (this._map[i] !== i) {\n        return false;\n      }\n    }\n\n    return true;\n  }\n\n}\n\nexports.CMap = CMap;\n\nclass IdentityCMap extends CMap {\n  constructor(vertical, n) {\n    super();\n    this.vertical = vertical;\n    this.addCodespaceRange(n, 0, 0xffff);\n  }\n\n  mapCidRange(low, high, dstLow) {\n    (0, _util.unreachable)(\"should not call mapCidRange\");\n  }\n\n  mapBfRange(low, high, dstLow) {\n    (0, _util.unreachable)(\"should not call mapBfRange\");\n  }\n\n  mapBfRangeToArray(low, high, array) {\n    (0, _util.unreachable)(\"should not call mapBfRangeToArray\");\n  }\n\n  mapOne(src, dst) {\n    (0, _util.unreachable)(\"should not call mapCidOne\");\n  }\n\n  lookup(code) {\n    return Number.isInteger(code) && code <= 0xffff ? code : undefined;\n  }\n\n  contains(code) {\n    return Number.isInteger(code) && code <= 0xffff;\n  }\n\n  forEach(callback) {\n    for (let i = 0; i <= 0xffff; i++) {\n      callback(i, i);\n    }\n  }\n\n  charCodeOf(value) {\n    return Number.isInteger(value) && value <= 0xffff ? value : -1;\n  }\n\n  getMap() {\n    const map = new Array(0x10000);\n\n    for (let i = 0; i <= 0xffff; i++) {\n      map[i] = i;\n    }\n\n    return map;\n  }\n\n  get length() {\n    return 0x10000;\n  }\n\n  get isIdentityCMap() {\n    (0, _util.unreachable)(\"should not access .isIdentityCMap\");\n  }\n\n}\n\nexports.IdentityCMap = IdentityCMap;\n\nconst BinaryCMapReader = function BinaryCMapReaderClosure() {\n  function hexToInt(a, size) {\n    let n = 0;\n\n    for (let i = 0; i <= size; i++) {\n      n = n << 8 | a[i];\n    }\n\n    return n >>> 0;\n  }\n\n  function hexToStr(a, size) {\n    if (size === 1) {\n      return String.fromCharCode(a[0], a[1]);\n    }\n\n    if (size === 3) {\n      return String.fromCharCode(a[0], a[1], a[2], a[3]);\n    }\n\n    return String.fromCharCode.apply(null, a.subarray(0, size + 1));\n  }\n\n  function addHex(a, b, size) {\n    let c = 0;\n\n    for (let i = size; i >= 0; i--) {\n      c += a[i] + b[i];\n      a[i] = c & 255;\n      c >>= 8;\n    }\n  }\n\n  function incHex(a, size) {\n    let c = 1;\n\n    for (let i = size; i >= 0 && c > 0; i--) {\n      c += a[i];\n      a[i] = c & 255;\n      c >>= 8;\n    }\n  }\n\n  const MAX_NUM_SIZE = 16;\n  const MAX_ENCODED_NUM_SIZE = 19;\n\n  class BinaryCMapStream {\n    constructor(data) {\n      this.buffer = data;\n      this.pos = 0;\n      this.end = data.length;\n      this.tmpBuf = new Uint8Array(MAX_ENCODED_NUM_SIZE);\n    }\n\n    readByte() {\n      if (this.pos >= this.end) {\n        return -1;\n      }\n\n      return this.buffer[this.pos++];\n    }\n\n    readNumber() {\n      let n = 0;\n      let last;\n\n      do {\n        const b = this.readByte();\n\n        if (b < 0) {\n          throw new _util.FormatError(\"unexpected EOF in bcmap\");\n        }\n\n        last = !(b & 0x80);\n        n = n << 7 | b & 0x7f;\n      } while (!last);\n\n      return n;\n    }\n\n    readSigned() {\n      const n = this.readNumber();\n      return n & 1 ? ~(n >>> 1) : n >>> 1;\n    }\n\n    readHex(num, size) {\n      num.set(this.buffer.subarray(this.pos, this.pos + size + 1));\n      this.pos += size + 1;\n    }\n\n    readHexNumber(num, size) {\n      let last;\n      const stack = this.tmpBuf;\n      let sp = 0;\n\n      do {\n        const b = this.readByte();\n\n        if (b < 0) {\n          throw new _util.FormatError(\"unexpected EOF in bcmap\");\n        }\n\n        last = !(b & 0x80);\n        stack[sp++] = b & 0x7f;\n      } while (!last);\n\n      let i = size,\n          buffer = 0,\n          bufferSize = 0;\n\n      while (i >= 0) {\n        while (bufferSize < 8 && stack.length > 0) {\n          buffer |= stack[--sp] << bufferSize;\n          bufferSize += 7;\n        }\n\n        num[i] = buffer & 255;\n        i--;\n        buffer >>= 8;\n        bufferSize -= 8;\n      }\n    }\n\n    readHexSigned(num, size) {\n      this.readHexNumber(num, size);\n      const sign = num[size] & 1 ? 255 : 0;\n      let c = 0;\n\n      for (let i = 0; i <= size; i++) {\n        c = (c & 1) << 8 | num[i];\n        num[i] = c >> 1 ^ sign;\n      }\n    }\n\n    readString() {\n      const len = this.readNumber();\n      let s = \"\";\n\n      for (let i = 0; i < len; i++) {\n        s += String.fromCharCode(this.readNumber());\n      }\n\n      return s;\n    }\n\n  }\n\n  class BinaryCMapReader {\n    async process(data, cMap, extend) {\n      const stream = new BinaryCMapStream(data);\n      const header = stream.readByte();\n      cMap.vertical = !!(header & 1);\n      let useCMap = null;\n      const start = new Uint8Array(MAX_NUM_SIZE);\n      const end = new Uint8Array(MAX_NUM_SIZE);\n      const char = new Uint8Array(MAX_NUM_SIZE);\n      const charCode = new Uint8Array(MAX_NUM_SIZE);\n      const tmp = new Uint8Array(MAX_NUM_SIZE);\n      let code;\n      let b;\n\n      while ((b = stream.readByte()) >= 0) {\n        const type = b >> 5;\n\n        if (type === 7) {\n          switch (b & 0x1f) {\n            case 0:\n              stream.readString();\n              break;\n\n            case 1:\n              useCMap = stream.readString();\n              break;\n          }\n\n          continue;\n        }\n\n        const sequence = !!(b & 0x10);\n        const dataSize = b & 15;\n\n        if (dataSize + 1 > MAX_NUM_SIZE) {\n          throw new Error(\"BinaryCMapReader.process: Invalid dataSize.\");\n        }\n\n        const ucs2DataSize = 1;\n        const subitemsCount = stream.readNumber();\n\n        switch (type) {\n          case 0:\n            stream.readHex(start, dataSize);\n            stream.readHexNumber(end, dataSize);\n            addHex(end, start, dataSize);\n            cMap.addCodespaceRange(dataSize + 1, hexToInt(start, dataSize), hexToInt(end, dataSize));\n\n            for (let i = 1; i < subitemsCount; i++) {\n              incHex(end, dataSize);\n              stream.readHexNumber(start, dataSize);\n              addHex(start, end, dataSize);\n              stream.readHexNumber(end, dataSize);\n              addHex(end, start, dataSize);\n              cMap.addCodespaceRange(dataSize + 1, hexToInt(start, dataSize), hexToInt(end, dataSize));\n            }\n\n            break;\n\n          case 1:\n            stream.readHex(start, dataSize);\n            stream.readHexNumber(end, dataSize);\n            addHex(end, start, dataSize);\n            stream.readNumber();\n\n            for (let i = 1; i < subitemsCount; i++) {\n              incHex(end, dataSize);\n              stream.readHexNumber(start, dataSize);\n              addHex(start, end, dataSize);\n              stream.readHexNumber(end, dataSize);\n              addHex(end, start, dataSize);\n              stream.readNumber();\n            }\n\n            break;\n\n          case 2:\n            stream.readHex(char, dataSize);\n            code = stream.readNumber();\n            cMap.mapOne(hexToInt(char, dataSize), code);\n\n            for (let i = 1; i < subitemsCount; i++) {\n              incHex(char, dataSize);\n\n              if (!sequence) {\n                stream.readHexNumber(tmp, dataSize);\n                addHex(char, tmp, dataSize);\n              }\n\n              code = stream.readSigned() + (code + 1);\n              cMap.mapOne(hexToInt(char, dataSize), code);\n            }\n\n            break;\n\n          case 3:\n            stream.readHex(start, dataSize);\n            stream.readHexNumber(end, dataSize);\n            addHex(end, start, dataSize);\n            code = stream.readNumber();\n            cMap.mapCidRange(hexToInt(start, dataSize), hexToInt(end, dataSize), code);\n\n            for (let i = 1; i < subitemsCount; i++) {\n              incHex(end, dataSize);\n\n              if (!sequence) {\n                stream.readHexNumber(start, dataSize);\n                addHex(start, end, dataSize);\n              } else {\n                start.set(end);\n              }\n\n              stream.readHexNumber(end, dataSize);\n              addHex(end, start, dataSize);\n              code = stream.readNumber();\n              cMap.mapCidRange(hexToInt(start, dataSize), hexToInt(end, dataSize), code);\n            }\n\n            break;\n\n          case 4:\n            stream.readHex(char, ucs2DataSize);\n            stream.readHex(charCode, dataSize);\n            cMap.mapOne(hexToInt(char, ucs2DataSize), hexToStr(charCode, dataSize));\n\n            for (let i = 1; i < subitemsCount; i++) {\n              incHex(char, ucs2DataSize);\n\n              if (!sequence) {\n                stream.readHexNumber(tmp, ucs2DataSize);\n                addHex(char, tmp, ucs2DataSize);\n              }\n\n              incHex(charCode, dataSize);\n              stream.readHexSigned(tmp, dataSize);\n              addHex(charCode, tmp, dataSize);\n              cMap.mapOne(hexToInt(char, ucs2DataSize), hexToStr(charCode, dataSize));\n            }\n\n            break;\n\n          case 5:\n            stream.readHex(start, ucs2DataSize);\n            stream.readHexNumber(end, ucs2DataSize);\n            addHex(end, start, ucs2DataSize);\n            stream.readHex(charCode, dataSize);\n            cMap.mapBfRange(hexToInt(start, ucs2DataSize), hexToInt(end, ucs2DataSize), hexToStr(charCode, dataSize));\n\n            for (let i = 1; i < subitemsCount; i++) {\n              incHex(end, ucs2DataSize);\n\n              if (!sequence) {\n                stream.readHexNumber(start, ucs2DataSize);\n                addHex(start, end, ucs2DataSize);\n              } else {\n                start.set(end);\n              }\n\n              stream.readHexNumber(end, ucs2DataSize);\n              addHex(end, start, ucs2DataSize);\n              stream.readHex(charCode, dataSize);\n              cMap.mapBfRange(hexToInt(start, ucs2DataSize), hexToInt(end, ucs2DataSize), hexToStr(charCode, dataSize));\n            }\n\n            break;\n\n          default:\n            throw new Error(`BinaryCMapReader.process - unknown type: ${type}`);\n        }\n      }\n\n      if (useCMap) {\n        return extend(useCMap);\n      }\n\n      return cMap;\n    }\n\n  }\n\n  return BinaryCMapReader;\n}();\n\nconst CMapFactory = function CMapFactoryClosure() {\n  function strToInt(str) {\n    let a = 0;\n\n    for (let i = 0; i < str.length; i++) {\n      a = a << 8 | str.charCodeAt(i);\n    }\n\n    return a >>> 0;\n  }\n\n  function expectString(obj) {\n    if (typeof obj !== \"string\") {\n      throw new _util.FormatError(\"Malformed CMap: expected string.\");\n    }\n  }\n\n  function expectInt(obj) {\n    if (!Number.isInteger(obj)) {\n      throw new _util.FormatError(\"Malformed CMap: expected int.\");\n    }\n  }\n\n  function parseBfChar(cMap, lexer) {\n    while (true) {\n      let obj = lexer.getObj();\n\n      if (obj === _primitives.EOF) {\n        break;\n      }\n\n      if ((0, _primitives.isCmd)(obj, \"endbfchar\")) {\n        return;\n      }\n\n      expectString(obj);\n      const src = strToInt(obj);\n      obj = lexer.getObj();\n      expectString(obj);\n      const dst = obj;\n      cMap.mapOne(src, dst);\n    }\n  }\n\n  function parseBfRange(cMap, lexer) {\n    while (true) {\n      let obj = lexer.getObj();\n\n      if (obj === _primitives.EOF) {\n        break;\n      }\n\n      if ((0, _primitives.isCmd)(obj, \"endbfrange\")) {\n        return;\n      }\n\n      expectString(obj);\n      const low = strToInt(obj);\n      obj = lexer.getObj();\n      expectString(obj);\n      const high = strToInt(obj);\n      obj = lexer.getObj();\n\n      if (Number.isInteger(obj) || typeof obj === \"string\") {\n        const dstLow = Number.isInteger(obj) ? String.fromCharCode(obj) : obj;\n        cMap.mapBfRange(low, high, dstLow);\n      } else if ((0, _primitives.isCmd)(obj, \"[\")) {\n        obj = lexer.getObj();\n        const array = [];\n\n        while (!(0, _primitives.isCmd)(obj, \"]\") && obj !== _primitives.EOF) {\n          array.push(obj);\n          obj = lexer.getObj();\n        }\n\n        cMap.mapBfRangeToArray(low, high, array);\n      } else {\n        break;\n      }\n    }\n\n    throw new _util.FormatError(\"Invalid bf range.\");\n  }\n\n  function parseCidChar(cMap, lexer) {\n    while (true) {\n      let obj = lexer.getObj();\n\n      if (obj === _primitives.EOF) {\n        break;\n      }\n\n      if ((0, _primitives.isCmd)(obj, \"endcidchar\")) {\n        return;\n      }\n\n      expectString(obj);\n      const src = strToInt(obj);\n      obj = lexer.getObj();\n      expectInt(obj);\n      const dst = obj;\n      cMap.mapOne(src, dst);\n    }\n  }\n\n  function parseCidRange(cMap, lexer) {\n    while (true) {\n      let obj = lexer.getObj();\n\n      if (obj === _primitives.EOF) {\n        break;\n      }\n\n      if ((0, _primitives.isCmd)(obj, \"endcidrange\")) {\n        return;\n      }\n\n      expectString(obj);\n      const low = strToInt(obj);\n      obj = lexer.getObj();\n      expectString(obj);\n      const high = strToInt(obj);\n      obj = lexer.getObj();\n      expectInt(obj);\n      const dstLow = obj;\n      cMap.mapCidRange(low, high, dstLow);\n    }\n  }\n\n  function parseCodespaceRange(cMap, lexer) {\n    while (true) {\n      let obj = lexer.getObj();\n\n      if (obj === _primitives.EOF) {\n        break;\n      }\n\n      if ((0, _primitives.isCmd)(obj, \"endcodespacerange\")) {\n        return;\n      }\n\n      if (typeof obj !== \"string\") {\n        break;\n      }\n\n      const low = strToInt(obj);\n      obj = lexer.getObj();\n\n      if (typeof obj !== \"string\") {\n        break;\n      }\n\n      const high = strToInt(obj);\n      cMap.addCodespaceRange(obj.length, low, high);\n    }\n\n    throw new _util.FormatError(\"Invalid codespace range.\");\n  }\n\n  function parseWMode(cMap, lexer) {\n    const obj = lexer.getObj();\n\n    if (Number.isInteger(obj)) {\n      cMap.vertical = !!obj;\n    }\n  }\n\n  function parseCMapName(cMap, lexer) {\n    const obj = lexer.getObj();\n\n    if (obj instanceof _primitives.Name) {\n      cMap.name = obj.name;\n    }\n  }\n\n  async function parseCMap(cMap, lexer, fetchBuiltInCMap, useCMap) {\n    let previous, embeddedUseCMap;\n\n    objLoop: while (true) {\n      try {\n        const obj = lexer.getObj();\n\n        if (obj === _primitives.EOF) {\n          break;\n        } else if (obj instanceof _primitives.Name) {\n          if (obj.name === \"WMode\") {\n            parseWMode(cMap, lexer);\n          } else if (obj.name === \"CMapName\") {\n            parseCMapName(cMap, lexer);\n          }\n\n          previous = obj;\n        } else if (obj instanceof _primitives.Cmd) {\n          switch (obj.cmd) {\n            case \"endcmap\":\n              break objLoop;\n\n            case \"usecmap\":\n              if (previous instanceof _primitives.Name) {\n                embeddedUseCMap = previous.name;\n              }\n\n              break;\n\n            case \"begincodespacerange\":\n              parseCodespaceRange(cMap, lexer);\n              break;\n\n            case \"beginbfchar\":\n              parseBfChar(cMap, lexer);\n              break;\n\n            case \"begincidchar\":\n              parseCidChar(cMap, lexer);\n              break;\n\n            case \"beginbfrange\":\n              parseBfRange(cMap, lexer);\n              break;\n\n            case \"begincidrange\":\n              parseCidRange(cMap, lexer);\n              break;\n          }\n        }\n      } catch (ex) {\n        if (ex instanceof _core_utils.MissingDataException) {\n          throw ex;\n        }\n\n        (0, _util.warn)(\"Invalid cMap data: \" + ex);\n        continue;\n      }\n    }\n\n    if (!useCMap && embeddedUseCMap) {\n      useCMap = embeddedUseCMap;\n    }\n\n    if (useCMap) {\n      return extendCMap(cMap, fetchBuiltInCMap, useCMap);\n    }\n\n    return cMap;\n  }\n\n  async function extendCMap(cMap, fetchBuiltInCMap, useCMap) {\n    cMap.useCMap = await createBuiltInCMap(useCMap, fetchBuiltInCMap);\n\n    if (cMap.numCodespaceRanges === 0) {\n      const useCodespaceRanges = cMap.useCMap.codespaceRanges;\n\n      for (let i = 0; i < useCodespaceRanges.length; i++) {\n        cMap.codespaceRanges[i] = useCodespaceRanges[i].slice();\n      }\n\n      cMap.numCodespaceRanges = cMap.useCMap.numCodespaceRanges;\n    }\n\n    cMap.useCMap.forEach(function (key, value) {\n      if (!cMap.contains(key)) {\n        cMap.mapOne(key, cMap.useCMap.lookup(key));\n      }\n    });\n    return cMap;\n  }\n\n  async function createBuiltInCMap(name, fetchBuiltInCMap) {\n    if (name === \"Identity-H\") {\n      return new IdentityCMap(false, 2);\n    } else if (name === \"Identity-V\") {\n      return new IdentityCMap(true, 2);\n    }\n\n    if (!BUILT_IN_CMAPS.includes(name)) {\n      throw new Error(\"Unknown CMap name: \" + name);\n    }\n\n    if (!fetchBuiltInCMap) {\n      throw new Error(\"Built-in CMap parameters are not provided.\");\n    }\n\n    const {\n      cMapData,\n      compressionType\n    } = await fetchBuiltInCMap(name);\n    const cMap = new CMap(true);\n\n    if (compressionType === _util.CMapCompressionType.BINARY) {\n      return new BinaryCMapReader().process(cMapData, cMap, useCMap => {\n        return extendCMap(cMap, fetchBuiltInCMap, useCMap);\n      });\n    }\n\n    if (compressionType === _util.CMapCompressionType.NONE) {\n      const lexer = new _parser.Lexer(new _stream.Stream(cMapData));\n      return parseCMap(cMap, lexer, fetchBuiltInCMap, null);\n    }\n\n    throw new Error(\"TODO: Only BINARY/NONE CMap compression is currently supported.\");\n  }\n\n  return {\n    async create(params) {\n      const encoding = params.encoding;\n      const fetchBuiltInCMap = params.fetchBuiltInCMap;\n      const useCMap = params.useCMap;\n\n      if (encoding instanceof _primitives.Name) {\n        return createBuiltInCMap(encoding.name, fetchBuiltInCMap);\n      } else if (encoding instanceof _base_stream.BaseStream) {\n        const parsedCMap = await parseCMap(new CMap(), new _parser.Lexer(encoding), fetchBuiltInCMap, useCMap);\n\n        if (parsedCMap.isIdentityCMap) {\n          return createBuiltInCMap(parsedCMap.name, fetchBuiltInCMap);\n        }\n\n        return parsedCMap;\n      }\n\n      throw new Error(\"Encoding required.\");\n    }\n\n  };\n}();\n\nexports.CMapFactory = CMapFactory;\n\n/***/ }),\n/* 27 */\n/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {\n\n\n\nObject.defineProperty(exports, \"__esModule\", ({\n  value: true\n}));\nexports.Parser = exports.Linearization = exports.Lexer = void 0;\n\nvar _util = __w_pdfjs_require__(2);\n\nvar _primitives = __w_pdfjs_require__(5);\n\nvar _core_utils = __w_pdfjs_require__(8);\n\nvar _ascii_85_stream = __w_pdfjs_require__(28);\n\nvar _ascii_hex_stream = __w_pdfjs_require__(30);\n\nvar _ccitt_stream = __w_pdfjs_require__(31);\n\nvar _flate_stream = __w_pdfjs_require__(33);\n\nvar _jbig2_stream = __w_pdfjs_require__(34);\n\nvar _jpeg_stream = __w_pdfjs_require__(37);\n\nvar _jpx_stream = __w_pdfjs_require__(39);\n\nvar _lzw_stream = __w_pdfjs_require__(41);\n\nvar _stream = __w_pdfjs_require__(10);\n\nvar _predictor_stream = __w_pdfjs_require__(42);\n\nvar _run_length_stream = __w_pdfjs_require__(43);\n\nconst MAX_LENGTH_TO_CACHE = 1000;\nconst MAX_ADLER32_LENGTH = 5552;\n\nfunction computeAdler32(bytes) {\n  const bytesLength = bytes.length;\n  let a = 1,\n      b = 0;\n\n  for (let i = 0; i < bytesLength; ++i) {\n    a += bytes[i] & 0xff;\n    b += a;\n  }\n\n  return b % 65521 << 16 | a % 65521;\n}\n\nclass Parser {\n  constructor({\n    lexer,\n    xref,\n    allowStreams = false,\n    recoveryMode = false\n  }) {\n    this.lexer = lexer;\n    this.xref = xref;\n    this.allowStreams = allowStreams;\n    this.recoveryMode = recoveryMode;\n    this.imageCache = Object.create(null);\n    this.refill();\n  }\n\n  refill() {\n    this.buf1 = this.lexer.getObj();\n    this.buf2 = this.lexer.getObj();\n  }\n\n  shift() {\n    if (this.buf2 instanceof _primitives.Cmd && this.buf2.cmd === \"ID\") {\n      this.buf1 = this.buf2;\n      this.buf2 = null;\n    } else {\n      this.buf1 = this.buf2;\n      this.buf2 = this.lexer.getObj();\n    }\n  }\n\n  tryShift() {\n    try {\n      this.shift();\n      return true;\n    } catch (e) {\n      if (e instanceof _core_utils.MissingDataException) {\n        throw e;\n      }\n\n      return false;\n    }\n  }\n\n  getObj(cipherTransform = null) {\n    const buf1 = this.buf1;\n    this.shift();\n\n    if (buf1 instanceof _primitives.Cmd) {\n      switch (buf1.cmd) {\n        case \"BI\":\n          return this.makeInlineImage(cipherTransform);\n\n        case \"[\":\n          const array = [];\n\n          while (!(0, _primitives.isCmd)(this.buf1, \"]\") && this.buf1 !== _primitives.EOF) {\n            array.push(this.getObj(cipherTransform));\n          }\n\n          if (this.buf1 === _primitives.EOF) {\n            if (this.recoveryMode) {\n              return array;\n            }\n\n            throw new _core_utils.ParserEOFException(\"End of file inside array.\");\n          }\n\n          this.shift();\n          return array;\n\n        case \"<<\":\n          const dict = new _primitives.Dict(this.xref);\n\n          while (!(0, _primitives.isCmd)(this.buf1, \">>\") && this.buf1 !== _primitives.EOF) {\n            if (!(this.buf1 instanceof _primitives.Name)) {\n              (0, _util.info)(\"Malformed dictionary: key must be a name object\");\n              this.shift();\n              continue;\n            }\n\n            const key = this.buf1.name;\n            this.shift();\n\n            if (this.buf1 === _primitives.EOF) {\n              break;\n            }\n\n            dict.set(key, this.getObj(cipherTransform));\n          }\n\n          if (this.buf1 === _primitives.EOF) {\n            if (this.recoveryMode) {\n              return dict;\n            }\n\n            throw new _core_utils.ParserEOFException(\"End of file inside dictionary.\");\n          }\n\n          if ((0, _primitives.isCmd)(this.buf2, \"stream\")) {\n            return this.allowStreams ? this.makeStream(dict, cipherTransform) : dict;\n          }\n\n          this.shift();\n          return dict;\n\n        default:\n          return buf1;\n      }\n    }\n\n    if (Number.isInteger(buf1)) {\n      if (Number.isInteger(this.buf1) && (0, _primitives.isCmd)(this.buf2, \"R\")) {\n        const ref = _primitives.Ref.get(buf1, this.buf1);\n\n        this.shift();\n        this.shift();\n        return ref;\n      }\n\n      return buf1;\n    }\n\n    if (typeof buf1 === \"string\") {\n      if (cipherTransform) {\n        return cipherTransform.decryptString(buf1);\n      }\n\n      return buf1;\n    }\n\n    return buf1;\n  }\n\n  findDefaultInlineStreamEnd(stream) {\n    const E = 0x45,\n          I = 0x49,\n          SPACE = 0x20,\n          LF = 0xa,\n          CR = 0xd,\n          NUL = 0x0;\n    const lexer = this.lexer,\n          startPos = stream.pos,\n          n = 10;\n    let state = 0,\n        ch,\n        maybeEIPos;\n\n    while ((ch = stream.getByte()) !== -1) {\n      if (state === 0) {\n        state = ch === E ? 1 : 0;\n      } else if (state === 1) {\n        state = ch === I ? 2 : 0;\n      } else {\n        (0, _util.assert)(state === 2, \"findDefaultInlineStreamEnd - invalid state.\");\n\n        if (ch === SPACE || ch === LF || ch === CR) {\n          maybeEIPos = stream.pos;\n          const followingBytes = stream.peekBytes(n);\n\n          for (let i = 0, ii = followingBytes.length; i < ii; i++) {\n            ch = followingBytes[i];\n\n            if (ch === NUL && followingBytes[i + 1] !== NUL) {\n              continue;\n            }\n\n            if (ch !== LF && ch !== CR && (ch < SPACE || ch > 0x7f)) {\n              state = 0;\n              break;\n            }\n          }\n\n          if (state !== 2) {\n            continue;\n          }\n\n          if (lexer.knownCommands) {\n            const nextObj = lexer.peekObj();\n\n            if (nextObj instanceof _primitives.Cmd && !lexer.knownCommands[nextObj.cmd]) {\n              state = 0;\n            }\n          } else {\n            (0, _util.warn)(\"findDefaultInlineStreamEnd - `lexer.knownCommands` is undefined.\");\n          }\n\n          if (state === 2) {\n            break;\n          }\n        } else {\n          state = 0;\n        }\n      }\n    }\n\n    if (ch === -1) {\n      (0, _util.warn)(\"findDefaultInlineStreamEnd: \" + \"Reached the end of the stream without finding a valid EI marker\");\n\n      if (maybeEIPos) {\n        (0, _util.warn)('... trying to recover by using the last \"EI\" occurrence.');\n        stream.skip(-(stream.pos - maybeEIPos));\n      }\n    }\n\n    let endOffset = 4;\n    stream.skip(-endOffset);\n    ch = stream.peekByte();\n    stream.skip(endOffset);\n\n    if (!(0, _core_utils.isWhiteSpace)(ch)) {\n      endOffset--;\n    }\n\n    return stream.pos - endOffset - startPos;\n  }\n\n  findDCTDecodeInlineStreamEnd(stream) {\n    const startPos = stream.pos;\n    let foundEOI = false,\n        b,\n        markerLength;\n\n    while ((b = stream.getByte()) !== -1) {\n      if (b !== 0xff) {\n        continue;\n      }\n\n      switch (stream.getByte()) {\n        case 0x00:\n          break;\n\n        case 0xff:\n          stream.skip(-1);\n          break;\n\n        case 0xd9:\n          foundEOI = true;\n          break;\n\n        case 0xc0:\n        case 0xc1:\n        case 0xc2:\n        case 0xc3:\n        case 0xc5:\n        case 0xc6:\n        case 0xc7:\n        case 0xc9:\n        case 0xca:\n        case 0xcb:\n        case 0xcd:\n        case 0xce:\n        case 0xcf:\n        case 0xc4:\n        case 0xcc:\n        case 0xda:\n        case 0xdb:\n        case 0xdc:\n        case 0xdd:\n        case 0xde:\n        case 0xdf:\n        case 0xe0:\n        case 0xe1:\n        case 0xe2:\n        case 0xe3:\n        case 0xe4:\n        case 0xe5:\n        case 0xe6:\n        case 0xe7:\n        case 0xe8:\n        case 0xe9:\n        case 0xea:\n        case 0xeb:\n        case 0xec:\n        case 0xed:\n        case 0xee:\n        case 0xef:\n        case 0xfe:\n          markerLength = stream.getUint16();\n\n          if (markerLength > 2) {\n            stream.skip(markerLength - 2);\n          } else {\n            stream.skip(-2);\n          }\n\n          break;\n      }\n\n      if (foundEOI) {\n        break;\n      }\n    }\n\n    const length = stream.pos - startPos;\n\n    if (b === -1) {\n      (0, _util.warn)(\"Inline DCTDecode image stream: \" + \"EOI marker not found, searching for /EI/ instead.\");\n      stream.skip(-length);\n      return this.findDefaultInlineStreamEnd(stream);\n    }\n\n    this.inlineStreamSkipEI(stream);\n    return length;\n  }\n\n  findASCII85DecodeInlineStreamEnd(stream) {\n    const TILDE = 0x7e,\n          GT = 0x3e;\n    const startPos = stream.pos;\n    let ch;\n\n    while ((ch = stream.getByte()) !== -1) {\n      if (ch === TILDE) {\n        const tildePos = stream.pos;\n        ch = stream.peekByte();\n\n        while ((0, _core_utils.isWhiteSpace)(ch)) {\n          stream.skip();\n          ch = stream.peekByte();\n        }\n\n        if (ch === GT) {\n          stream.skip();\n          break;\n        }\n\n        if (stream.pos > tildePos) {\n          const maybeEI = stream.peekBytes(2);\n\n          if (maybeEI[0] === 0x45 && maybeEI[1] === 0x49) {\n            break;\n          }\n        }\n      }\n    }\n\n    const length = stream.pos - startPos;\n\n    if (ch === -1) {\n      (0, _util.warn)(\"Inline ASCII85Decode image stream: \" + \"EOD marker not found, searching for /EI/ instead.\");\n      stream.skip(-length);\n      return this.findDefaultInlineStreamEnd(stream);\n    }\n\n    this.inlineStreamSkipEI(stream);\n    return length;\n  }\n\n  findASCIIHexDecodeInlineStreamEnd(stream) {\n    const GT = 0x3e;\n    const startPos = stream.pos;\n    let ch;\n\n    while ((ch = stream.getByte()) !== -1) {\n      if (ch === GT) {\n        break;\n      }\n    }\n\n    const length = stream.pos - startPos;\n\n    if (ch === -1) {\n      (0, _util.warn)(\"Inline ASCIIHexDecode image stream: \" + \"EOD marker not found, searching for /EI/ instead.\");\n      stream.skip(-length);\n      return this.findDefaultInlineStreamEnd(stream);\n    }\n\n    this.inlineStreamSkipEI(stream);\n    return length;\n  }\n\n  inlineStreamSkipEI(stream) {\n    const E = 0x45,\n          I = 0x49;\n    let state = 0,\n        ch;\n\n    while ((ch = stream.getByte()) !== -1) {\n      if (state === 0) {\n        state = ch === E ? 1 : 0;\n      } else if (state === 1) {\n        state = ch === I ? 2 : 0;\n      } else if (state === 2) {\n        break;\n      }\n    }\n  }\n\n  makeInlineImage(cipherTransform) {\n    const lexer = this.lexer;\n    const stream = lexer.stream;\n    const dict = new _primitives.Dict(this.xref);\n    let dictLength;\n\n    while (!(0, _primitives.isCmd)(this.buf1, \"ID\") && this.buf1 !== _primitives.EOF) {\n      if (!(this.buf1 instanceof _primitives.Name)) {\n        throw new _util.FormatError(\"Dictionary key must be a name object\");\n      }\n\n      const key = this.buf1.name;\n      this.shift();\n\n      if (this.buf1 === _primitives.EOF) {\n        break;\n      }\n\n      dict.set(key, this.getObj(cipherTransform));\n    }\n\n    if (lexer.beginInlineImagePos !== -1) {\n      dictLength = stream.pos - lexer.beginInlineImagePos;\n    }\n\n    const filter = dict.get(\"F\", \"Filter\");\n    let filterName;\n\n    if (filter instanceof _primitives.Name) {\n      filterName = filter.name;\n    } else if (Array.isArray(filter)) {\n      const filterZero = this.xref.fetchIfRef(filter[0]);\n\n      if (filterZero instanceof _primitives.Name) {\n        filterName = filterZero.name;\n      }\n    }\n\n    const startPos = stream.pos;\n    let length;\n\n    switch (filterName) {\n      case \"DCT\":\n      case \"DCTDecode\":\n        length = this.findDCTDecodeInlineStreamEnd(stream);\n        break;\n\n      case \"A85\":\n      case \"ASCII85Decode\":\n        length = this.findASCII85DecodeInlineStreamEnd(stream);\n        break;\n\n      case \"AHx\":\n      case \"ASCIIHexDecode\":\n        length = this.findASCIIHexDecodeInlineStreamEnd(stream);\n        break;\n\n      default:\n        length = this.findDefaultInlineStreamEnd(stream);\n    }\n\n    let imageStream = stream.makeSubStream(startPos, length, dict);\n    let cacheKey;\n\n    if (length < MAX_LENGTH_TO_CACHE && dictLength < MAX_ADLER32_LENGTH) {\n      const imageBytes = imageStream.getBytes();\n      imageStream.reset();\n      const initialStreamPos = stream.pos;\n      stream.pos = lexer.beginInlineImagePos;\n      const dictBytes = stream.getBytes(dictLength);\n      stream.pos = initialStreamPos;\n      cacheKey = computeAdler32(imageBytes) + \"_\" + computeAdler32(dictBytes);\n      const cacheEntry = this.imageCache[cacheKey];\n\n      if (cacheEntry !== undefined) {\n        this.buf2 = _primitives.Cmd.get(\"EI\");\n        this.shift();\n        cacheEntry.reset();\n        return cacheEntry;\n      }\n    }\n\n    if (cipherTransform) {\n      imageStream = cipherTransform.createStream(imageStream, length);\n    }\n\n    imageStream = this.filter(imageStream, dict, length);\n    imageStream.dict = dict;\n\n    if (cacheKey !== undefined) {\n      imageStream.cacheKey = `inline_${length}_${cacheKey}`;\n      this.imageCache[cacheKey] = imageStream;\n    }\n\n    this.buf2 = _primitives.Cmd.get(\"EI\");\n    this.shift();\n    return imageStream;\n  }\n\n  _findStreamLength(startPos, signature) {\n    const {\n      stream\n    } = this.lexer;\n    stream.pos = startPos;\n    const SCAN_BLOCK_LENGTH = 2048;\n    const signatureLength = signature.length;\n\n    while (stream.pos < stream.end) {\n      const scanBytes = stream.peekBytes(SCAN_BLOCK_LENGTH);\n      const scanLength = scanBytes.length - signatureLength;\n\n      if (scanLength <= 0) {\n        break;\n      }\n\n      let pos = 0;\n\n      while (pos < scanLength) {\n        let j = 0;\n\n        while (j < signatureLength && scanBytes[pos + j] === signature[j]) {\n          j++;\n        }\n\n        if (j >= signatureLength) {\n          stream.pos += pos;\n          return stream.pos - startPos;\n        }\n\n        pos++;\n      }\n\n      stream.pos += scanLength;\n    }\n\n    return -1;\n  }\n\n  makeStream(dict, cipherTransform) {\n    const lexer = this.lexer;\n    let stream = lexer.stream;\n    lexer.skipToNextLine();\n    const startPos = stream.pos - 1;\n    let length = dict.get(\"Length\");\n\n    if (!Number.isInteger(length)) {\n      (0, _util.info)(`Bad length \"${length && length.toString()}\" in stream.`);\n      length = 0;\n    }\n\n    stream.pos = startPos + length;\n    lexer.nextChar();\n\n    if (this.tryShift() && (0, _primitives.isCmd)(this.buf2, \"endstream\")) {\n      this.shift();\n    } else {\n      const ENDSTREAM_SIGNATURE = new Uint8Array([0x65, 0x6e, 0x64, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d]);\n\n      let actualLength = this._findStreamLength(startPos, ENDSTREAM_SIGNATURE);\n\n      if (actualLength < 0) {\n        const MAX_TRUNCATION = 1;\n\n        for (let i = 1; i <= MAX_TRUNCATION; i++) {\n          const end = ENDSTREAM_SIGNATURE.length - i;\n          const TRUNCATED_SIGNATURE = ENDSTREAM_SIGNATURE.slice(0, end);\n\n          const maybeLength = this._findStreamLength(startPos, TRUNCATED_SIGNATURE);\n\n          if (maybeLength >= 0) {\n            const lastByte = stream.peekBytes(end + 1)[end];\n\n            if (!(0, _core_utils.isWhiteSpace)(lastByte)) {\n              break;\n            }\n\n            (0, _util.info)(`Found \"${(0, _util.bytesToString)(TRUNCATED_SIGNATURE)}\" when ` + \"searching for endstream command.\");\n            actualLength = maybeLength;\n            break;\n          }\n        }\n\n        if (actualLength < 0) {\n          throw new _util.FormatError(\"Missing endstream command.\");\n        }\n      }\n\n      length = actualLength;\n      lexer.nextChar();\n      this.shift();\n      this.shift();\n    }\n\n    this.shift();\n    stream = stream.makeSubStream(startPos, length, dict);\n\n    if (cipherTransform) {\n      stream = cipherTransform.createStream(stream, length);\n    }\n\n    stream = this.filter(stream, dict, length);\n    stream.dict = dict;\n    return stream;\n  }\n\n  filter(stream, dict, length) {\n    let filter = dict.get(\"F\", \"Filter\");\n    let params = dict.get(\"DP\", \"DecodeParms\");\n\n    if (filter instanceof _primitives.Name) {\n      if (Array.isArray(params)) {\n        (0, _util.warn)(\"/DecodeParms should not be an Array, when /Filter is a Name.\");\n      }\n\n      return this.makeFilter(stream, filter.name, length, params);\n    }\n\n    let maybeLength = length;\n\n    if (Array.isArray(filter)) {\n      const filterArray = filter;\n      const paramsArray = params;\n\n      for (let i = 0, ii = filterArray.length; i < ii; ++i) {\n        filter = this.xref.fetchIfRef(filterArray[i]);\n\n        if (!(filter instanceof _primitives.Name)) {\n          throw new _util.FormatError(`Bad filter name \"${filter}\"`);\n        }\n\n        params = null;\n\n        if (Array.isArray(paramsArray) && i in paramsArray) {\n          params = this.xref.fetchIfRef(paramsArray[i]);\n        }\n\n        stream = this.makeFilter(stream, filter.name, maybeLength, params);\n        maybeLength = null;\n      }\n    }\n\n    return stream;\n  }\n\n  makeFilter(stream, name, maybeLength, params) {\n    if (maybeLength === 0) {\n      (0, _util.warn)(`Empty \"${name}\" stream.`);\n      return new _stream.NullStream();\n    }\n\n    const xrefStats = this.xref.stats;\n\n    try {\n      switch (name) {\n        case \"Fl\":\n        case \"FlateDecode\":\n          xrefStats.addStreamType(_util.StreamType.FLATE);\n\n          if (params) {\n            return new _predictor_stream.PredictorStream(new _flate_stream.FlateStream(stream, maybeLength), maybeLength, params);\n          }\n\n          return new _flate_stream.FlateStream(stream, maybeLength);\n\n        case \"LZW\":\n        case \"LZWDecode\":\n          xrefStats.addStreamType(_util.StreamType.LZW);\n          let earlyChange = 1;\n\n          if (params) {\n            if (params.has(\"EarlyChange\")) {\n              earlyChange = params.get(\"EarlyChange\");\n            }\n\n            return new _predictor_stream.PredictorStream(new _lzw_stream.LZWStream(stream, maybeLength, earlyChange), maybeLength, params);\n          }\n\n          return new _lzw_stream.LZWStream(stream, maybeLength, earlyChange);\n\n        case \"DCT\":\n        case \"DCTDecode\":\n          xrefStats.addStreamType(_util.StreamType.DCT);\n          return new _jpeg_stream.JpegStream(stream, maybeLength, params);\n\n        case \"JPX\":\n        case \"JPXDecode\":\n          xrefStats.addStreamType(_util.StreamType.JPX);\n          return new _jpx_stream.JpxStream(stream, maybeLength, params);\n\n        case \"A85\":\n        case \"ASCII85Decode\":\n          xrefStats.addStreamType(_util.StreamType.A85);\n          return new _ascii_85_stream.Ascii85Stream(stream, maybeLength);\n\n        case \"AHx\":\n        case \"ASCIIHexDecode\":\n          xrefStats.addStreamType(_util.StreamType.AHX);\n          return new _ascii_hex_stream.AsciiHexStream(stream, maybeLength);\n\n        case \"CCF\":\n        case \"CCITTFaxDecode\":\n          xrefStats.addStreamType(_util.StreamType.CCF);\n          return new _ccitt_stream.CCITTFaxStream(stream, maybeLength, params);\n\n        case \"RL\":\n        case \"RunLengthDecode\":\n          xrefStats.addStreamType(_util.StreamType.RLX);\n          return new _run_length_stream.RunLengthStream(stream, maybeLength);\n\n        case \"JBIG2Decode\":\n          xrefStats.addStreamType(_util.StreamType.JBIG);\n          return new _jbig2_stream.Jbig2Stream(stream, maybeLength, params);\n      }\n\n      (0, _util.warn)(`Filter \"${name}\" is not supported.`);\n      return stream;\n    } catch (ex) {\n      if (ex instanceof _core_utils.MissingDataException) {\n        throw ex;\n      }\n\n      (0, _util.warn)(`Invalid stream: \"${ex}\"`);\n      return new _stream.NullStream();\n    }\n  }\n\n}\n\nexports.Parser = Parser;\nconst specialChars = [1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 2, 0, 0, 2, 2, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0];\n\nfunction toHexDigit(ch) {\n  if (ch >= 0x30 && ch <= 0x39) {\n    return ch & 0x0f;\n  }\n\n  if (ch >= 0x41 && ch <= 0x46 || ch >= 0x61 && ch <= 0x66) {\n    return (ch & 0x0f) + 9;\n  }\n\n  return -1;\n}\n\nclass Lexer {\n  constructor(stream, knownCommands = null) {\n    this.stream = stream;\n    this.nextChar();\n    this.strBuf = [];\n    this.knownCommands = knownCommands;\n    this._hexStringNumWarn = 0;\n    this.beginInlineImagePos = -1;\n  }\n\n  nextChar() {\n    return this.currentChar = this.stream.getByte();\n  }\n\n  peekChar() {\n    return this.stream.peekByte();\n  }\n\n  getNumber() {\n    let ch = this.currentChar;\n    let eNotation = false;\n    let divideBy = 0;\n    let sign = 0;\n\n    if (ch === 0x2d) {\n      sign = -1;\n      ch = this.nextChar();\n\n      if (ch === 0x2d) {\n        ch = this.nextChar();\n      }\n    } else if (ch === 0x2b) {\n      sign = 1;\n      ch = this.nextChar();\n    }\n\n    if (ch === 0x0a || ch === 0x0d) {\n      do {\n        ch = this.nextChar();\n      } while (ch === 0x0a || ch === 0x0d);\n    }\n\n    if (ch === 0x2e) {\n      divideBy = 10;\n      ch = this.nextChar();\n    }\n\n    if (ch < 0x30 || ch > 0x39) {\n      if ((0, _core_utils.isWhiteSpace)(ch) || ch === -1) {\n        if (divideBy === 10 && sign === 0) {\n          (0, _util.warn)(\"Lexer.getNumber - treating a single decimal point as zero.\");\n          return 0;\n        }\n\n        if (divideBy === 0 && sign === -1) {\n          (0, _util.warn)(\"Lexer.getNumber - treating a single minus sign as zero.\");\n          return 0;\n        }\n      }\n\n      throw new _util.FormatError(`Invalid number: ${String.fromCharCode(ch)} (charCode ${ch})`);\n    }\n\n    sign = sign || 1;\n    let baseValue = ch - 0x30;\n    let powerValue = 0;\n    let powerValueSign = 1;\n\n    while ((ch = this.nextChar()) >= 0) {\n      if (ch >= 0x30 && ch <= 0x39) {\n        const currentDigit = ch - 0x30;\n\n        if (eNotation) {\n          powerValue = powerValue * 10 + currentDigit;\n        } else {\n          if (divideBy !== 0) {\n            divideBy *= 10;\n          }\n\n          baseValue = baseValue * 10 + currentDigit;\n        }\n      } else if (ch === 0x2e) {\n        if (divideBy === 0) {\n          divideBy = 1;\n        } else {\n          break;\n        }\n      } else if (ch === 0x2d) {\n        (0, _util.warn)(\"Badly formatted number: minus sign in the middle\");\n      } else if (ch === 0x45 || ch === 0x65) {\n        ch = this.peekChar();\n\n        if (ch === 0x2b || ch === 0x2d) {\n          powerValueSign = ch === 0x2d ? -1 : 1;\n          this.nextChar();\n        } else if (ch < 0x30 || ch > 0x39) {\n          break;\n        }\n\n        eNotation = true;\n      } else {\n        break;\n      }\n    }\n\n    if (divideBy !== 0) {\n      baseValue /= divideBy;\n    }\n\n    if (eNotation) {\n      baseValue *= 10 ** (powerValueSign * powerValue);\n    }\n\n    return sign * baseValue;\n  }\n\n  getString() {\n    let numParen = 1;\n    let done = false;\n    const strBuf = this.strBuf;\n    strBuf.length = 0;\n    let ch = this.nextChar();\n\n    while (true) {\n      let charBuffered = false;\n\n      switch (ch | 0) {\n        case -1:\n          (0, _util.warn)(\"Unterminated string\");\n          done = true;\n          break;\n\n        case 0x28:\n          ++numParen;\n          strBuf.push(\"(\");\n          break;\n\n        case 0x29:\n          if (--numParen === 0) {\n            this.nextChar();\n            done = true;\n          } else {\n            strBuf.push(\")\");\n          }\n\n          break;\n\n        case 0x5c:\n          ch = this.nextChar();\n\n          switch (ch) {\n            case -1:\n              (0, _util.warn)(\"Unterminated string\");\n              done = true;\n              break;\n\n            case 0x6e:\n              strBuf.push(\"\\n\");\n              break;\n\n            case 0x72:\n              strBuf.push(\"\\r\");\n              break;\n\n            case 0x74:\n              strBuf.push(\"\\t\");\n              break;\n\n            case 0x62:\n              strBuf.push(\"\\b\");\n              break;\n\n            case 0x66:\n              strBuf.push(\"\\f\");\n              break;\n\n            case 0x5c:\n            case 0x28:\n            case 0x29:\n              strBuf.push(String.fromCharCode(ch));\n              break;\n\n            case 0x30:\n            case 0x31:\n            case 0x32:\n            case 0x33:\n            case 0x34:\n            case 0x35:\n            case 0x36:\n            case 0x37:\n              let x = ch & 0x0f;\n              ch = this.nextChar();\n              charBuffered = true;\n\n              if (ch >= 0x30 && ch <= 0x37) {\n                x = (x << 3) + (ch & 0x0f);\n                ch = this.nextChar();\n\n                if (ch >= 0x30 && ch <= 0x37) {\n                  charBuffered = false;\n                  x = (x << 3) + (ch & 0x0f);\n                }\n              }\n\n              strBuf.push(String.fromCharCode(x));\n              break;\n\n            case 0x0d:\n              if (this.peekChar() === 0x0a) {\n                this.nextChar();\n              }\n\n              break;\n\n            case 0x0a:\n              break;\n\n            default:\n              strBuf.push(String.fromCharCode(ch));\n              break;\n          }\n\n          break;\n\n        default:\n          strBuf.push(String.fromCharCode(ch));\n          break;\n      }\n\n      if (done) {\n        break;\n      }\n\n      if (!charBuffered) {\n        ch = this.nextChar();\n      }\n    }\n\n    return strBuf.join(\"\");\n  }\n\n  getName() {\n    let ch, previousCh;\n    const strBuf = this.strBuf;\n    strBuf.length = 0;\n\n    while ((ch = this.nextChar()) >= 0 && !specialChars[ch]) {\n      if (ch === 0x23) {\n        ch = this.nextChar();\n\n        if (specialChars[ch]) {\n          (0, _util.warn)(\"Lexer_getName: \" + \"NUMBER SIGN (#) should be followed by a hexadecimal number.\");\n          strBuf.push(\"#\");\n          break;\n        }\n\n        const x = toHexDigit(ch);\n\n        if (x !== -1) {\n          previousCh = ch;\n          ch = this.nextChar();\n          const x2 = toHexDigit(ch);\n\n          if (x2 === -1) {\n            (0, _util.warn)(`Lexer_getName: Illegal digit (${String.fromCharCode(ch)}) ` + \"in hexadecimal number.\");\n            strBuf.push(\"#\", String.fromCharCode(previousCh));\n\n            if (specialChars[ch]) {\n              break;\n            }\n\n            strBuf.push(String.fromCharCode(ch));\n            continue;\n          }\n\n          strBuf.push(String.fromCharCode(x << 4 | x2));\n        } else {\n          strBuf.push(\"#\", String.fromCharCode(ch));\n        }\n      } else {\n        strBuf.push(String.fromCharCode(ch));\n      }\n    }\n\n    if (strBuf.length > 127) {\n      (0, _util.warn)(`Name token is longer than allowed by the spec: ${strBuf.length}`);\n    }\n\n    return _primitives.Name.get(strBuf.join(\"\"));\n  }\n\n  _hexStringWarn(ch) {\n    const MAX_HEX_STRING_NUM_WARN = 5;\n\n    if (this._hexStringNumWarn++ === MAX_HEX_STRING_NUM_WARN) {\n      (0, _util.warn)(\"getHexString - ignoring additional invalid characters.\");\n      return;\n    }\n\n    if (this._hexStringNumWarn > MAX_HEX_STRING_NUM_WARN) {\n      return;\n    }\n\n    (0, _util.warn)(`getHexString - ignoring invalid character: ${ch}`);\n  }\n\n  getHexString() {\n    const strBuf = this.strBuf;\n    strBuf.length = 0;\n    let ch = this.currentChar;\n    let isFirstHex = true;\n    let firstDigit, secondDigit;\n    this._hexStringNumWarn = 0;\n\n    while (true) {\n      if (ch < 0) {\n        (0, _util.warn)(\"Unterminated hex string\");\n        break;\n      } else if (ch === 0x3e) {\n        this.nextChar();\n        break;\n      } else if (specialChars[ch] === 1) {\n        ch = this.nextChar();\n        continue;\n      } else {\n        if (isFirstHex) {\n          firstDigit = toHexDigit(ch);\n\n          if (firstDigit === -1) {\n            this._hexStringWarn(ch);\n\n            ch = this.nextChar();\n            continue;\n          }\n        } else {\n          secondDigit = toHexDigit(ch);\n\n          if (secondDigit === -1) {\n            this._hexStringWarn(ch);\n\n            ch = this.nextChar();\n            continue;\n          }\n\n          strBuf.push(String.fromCharCode(firstDigit << 4 | secondDigit));\n        }\n\n        isFirstHex = !isFirstHex;\n        ch = this.nextChar();\n      }\n    }\n\n    return strBuf.join(\"\");\n  }\n\n  getObj() {\n    let comment = false;\n    let ch = this.currentChar;\n\n    while (true) {\n      if (ch < 0) {\n        return _primitives.EOF;\n      }\n\n      if (comment) {\n        if (ch === 0x0a || ch === 0x0d) {\n          comment = false;\n        }\n      } else if (ch === 0x25) {\n        comment = true;\n      } else if (specialChars[ch] !== 1) {\n        break;\n      }\n\n      ch = this.nextChar();\n    }\n\n    switch (ch | 0) {\n      case 0x30:\n      case 0x31:\n      case 0x32:\n      case 0x33:\n      case 0x34:\n      case 0x35:\n      case 0x36:\n      case 0x37:\n      case 0x38:\n      case 0x39:\n      case 0x2b:\n      case 0x2d:\n      case 0x2e:\n        return this.getNumber();\n\n      case 0x28:\n        return this.getString();\n\n      case 0x2f:\n        return this.getName();\n\n      case 0x5b:\n        this.nextChar();\n        return _primitives.Cmd.get(\"[\");\n\n      case 0x5d:\n        this.nextChar();\n        return _primitives.Cmd.get(\"]\");\n\n      case 0x3c:\n        ch = this.nextChar();\n\n        if (ch === 0x3c) {\n          this.nextChar();\n          return _primitives.Cmd.get(\"<<\");\n        }\n\n        return this.getHexString();\n\n      case 0x3e:\n        ch = this.nextChar();\n\n        if (ch === 0x3e) {\n          this.nextChar();\n          return _primitives.Cmd.get(\">>\");\n        }\n\n        return _primitives.Cmd.get(\">\");\n\n      case 0x7b:\n        this.nextChar();\n        return _primitives.Cmd.get(\"{\");\n\n      case 0x7d:\n        this.nextChar();\n        return _primitives.Cmd.get(\"}\");\n\n      case 0x29:\n        this.nextChar();\n        throw new _util.FormatError(`Illegal character: ${ch}`);\n    }\n\n    let str = String.fromCharCode(ch);\n\n    if (ch < 0x20 || ch > 0x7f) {\n      const nextCh = this.peekChar();\n\n      if (nextCh >= 0x20 && nextCh <= 0x7f) {\n        this.nextChar();\n        return _primitives.Cmd.get(str);\n      }\n    }\n\n    const knownCommands = this.knownCommands;\n    let knownCommandFound = knownCommands && knownCommands[str] !== undefined;\n\n    while ((ch = this.nextChar()) >= 0 && !specialChars[ch]) {\n      const possibleCommand = str + String.fromCharCode(ch);\n\n      if (knownCommandFound && knownCommands[possibleCommand] === undefined) {\n        break;\n      }\n\n      if (str.length === 128) {\n        throw new _util.FormatError(`Command token too long: ${str.length}`);\n      }\n\n      str = possibleCommand;\n      knownCommandFound = knownCommands && knownCommands[str] !== undefined;\n    }\n\n    if (str === \"true\") {\n      return true;\n    }\n\n    if (str === \"false\") {\n      return false;\n    }\n\n    if (str === \"null\") {\n      return null;\n    }\n\n    if (str === \"BI\") {\n      this.beginInlineImagePos = this.stream.pos;\n    }\n\n    return _primitives.Cmd.get(str);\n  }\n\n  peekObj() {\n    const streamPos = this.stream.pos,\n          currentChar = this.currentChar,\n          beginInlineImagePos = this.beginInlineImagePos;\n    let nextObj;\n\n    try {\n      nextObj = this.getObj();\n    } catch (ex) {\n      if (ex instanceof _core_utils.MissingDataException) {\n        throw ex;\n      }\n\n      (0, _util.warn)(`peekObj: ${ex}`);\n    }\n\n    this.stream.pos = streamPos;\n    this.currentChar = currentChar;\n    this.beginInlineImagePos = beginInlineImagePos;\n    return nextObj;\n  }\n\n  skipToNextLine() {\n    let ch = this.currentChar;\n\n    while (ch >= 0) {\n      if (ch === 0x0d) {\n        ch = this.nextChar();\n\n        if (ch === 0x0a) {\n          this.nextChar();\n        }\n\n        break;\n      } else if (ch === 0x0a) {\n        this.nextChar();\n        break;\n      }\n\n      ch = this.nextChar();\n    }\n  }\n\n}\n\nexports.Lexer = Lexer;\n\nclass Linearization {\n  static create(stream) {\n    function getInt(linDict, name, allowZeroValue = false) {\n      const obj = linDict.get(name);\n\n      if (Number.isInteger(obj) && (allowZeroValue ? obj >= 0 : obj > 0)) {\n        return obj;\n      }\n\n      throw new Error(`The \"${name}\" parameter in the linearization ` + \"dictionary is invalid.\");\n    }\n\n    function getHints(linDict) {\n      const hints = linDict.get(\"H\");\n      let hintsLength;\n\n      if (Array.isArray(hints) && ((hintsLength = hints.length) === 2 || hintsLength === 4)) {\n        for (let index = 0; index < hintsLength; index++) {\n          const hint = hints[index];\n\n          if (!(Number.isInteger(hint) && hint > 0)) {\n            throw new Error(`Hint (${index}) in the linearization dictionary is invalid.`);\n          }\n        }\n\n        return hints;\n      }\n\n      throw new Error(\"Hint array in the linearization dictionary is invalid.\");\n    }\n\n    const parser = new Parser({\n      lexer: new Lexer(stream),\n      xref: null\n    });\n    const obj1 = parser.getObj();\n    const obj2 = parser.getObj();\n    const obj3 = parser.getObj();\n    const linDict = parser.getObj();\n    let obj, length;\n\n    if (!(Number.isInteger(obj1) && Number.isInteger(obj2) && (0, _primitives.isCmd)(obj3, \"obj\") && linDict instanceof _primitives.Dict && typeof (obj = linDict.get(\"Linearized\")) === \"number\" && obj > 0)) {\n      return null;\n    } else if ((length = getInt(linDict, \"L\")) !== stream.length) {\n      throw new Error('The \"L\" parameter in the linearization dictionary ' + \"does not equal the stream length.\");\n    }\n\n    return {\n      length,\n      hints: getHints(linDict),\n      objectNumberFirst: getInt(linDict, \"O\"),\n      endFirst: getInt(linDict, \"E\"),\n      numPages: getInt(linDict, \"N\"),\n      mainXRefEntriesOffset: getInt(linDict, \"T\"),\n      pageFirst: linDict.has(\"P\") ? getInt(linDict, \"P\", true) : 0\n    };\n  }\n\n}\n\nexports.Linearization = Linearization;\n\n/***/ }),\n/* 28 */\n/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {\n\n\n\nObject.defineProperty(exports, \"__esModule\", ({\n  value: true\n}));\nexports.Ascii85Stream = void 0;\n\nvar _decode_stream = __w_pdfjs_require__(29);\n\nvar _core_utils = __w_pdfjs_require__(8);\n\nclass Ascii85Stream extends _decode_stream.DecodeStream {\n  constructor(str, maybeLength) {\n    if (maybeLength) {\n      maybeLength *= 0.8;\n    }\n\n    super(maybeLength);\n    this.str = str;\n    this.dict = str.dict;\n    this.input = new Uint8Array(5);\n  }\n\n  readBlock() {\n    const TILDA_CHAR = 0x7e;\n    const Z_LOWER_CHAR = 0x7a;\n    const EOF = -1;\n    const str = this.str;\n    let c = str.getByte();\n\n    while ((0, _core_utils.isWhiteSpace)(c)) {\n      c = str.getByte();\n    }\n\n    if (c === EOF || c === TILDA_CHAR) {\n      this.eof = true;\n      return;\n    }\n\n    const bufferLength = this.bufferLength;\n    let buffer, i;\n\n    if (c === Z_LOWER_CHAR) {\n      buffer = this.ensureBuffer(bufferLength + 4);\n\n      for (i = 0; i < 4; ++i) {\n        buffer[bufferLength + i] = 0;\n      }\n\n      this.bufferLength += 4;\n    } else {\n      const input = this.input;\n      input[0] = c;\n\n      for (i = 1; i < 5; ++i) {\n        c = str.getByte();\n\n        while ((0, _core_utils.isWhiteSpace)(c)) {\n          c = str.getByte();\n        }\n\n        input[i] = c;\n\n        if (c === EOF || c === TILDA_CHAR) {\n          break;\n        }\n      }\n\n      buffer = this.ensureBuffer(bufferLength + i - 1);\n      this.bufferLength += i - 1;\n\n      if (i < 5) {\n        for (; i < 5; ++i) {\n          input[i] = 0x21 + 84;\n        }\n\n        this.eof = true;\n      }\n\n      let t = 0;\n\n      for (i = 0; i < 5; ++i) {\n        t = t * 85 + (input[i] - 0x21);\n      }\n\n      for (i = 3; i >= 0; --i) {\n        buffer[bufferLength + i] = t & 0xff;\n        t >>= 8;\n      }\n    }\n  }\n\n}\n\nexports.Ascii85Stream = Ascii85Stream;\n\n/***/ }),\n/* 29 */\n/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {\n\n\n\nObject.defineProperty(exports, \"__esModule\", ({\n  value: true\n}));\nexports.StreamsSequenceStream = exports.DecodeStream = void 0;\n\nvar _base_stream = __w_pdfjs_require__(9);\n\nvar _stream = __w_pdfjs_require__(10);\n\nconst emptyBuffer = new Uint8Array(0);\n\nclass DecodeStream extends _base_stream.BaseStream {\n  constructor(maybeMinBufferLength) {\n    super();\n    this._rawMinBufferLength = maybeMinBufferLength || 0;\n    this.pos = 0;\n    this.bufferLength = 0;\n    this.eof = false;\n    this.buffer = emptyBuffer;\n    this.minBufferLength = 512;\n\n    if (maybeMinBufferLength) {\n      while (this.minBufferLength < maybeMinBufferLength) {\n        this.minBufferLength *= 2;\n      }\n    }\n  }\n\n  get isEmpty() {\n    while (!this.eof && this.bufferLength === 0) {\n      this.readBlock();\n    }\n\n    return this.bufferLength === 0;\n  }\n\n  ensureBuffer(requested) {\n    const buffer = this.buffer;\n\n    if (requested <= buffer.byteLength) {\n      return buffer;\n    }\n\n    let size = this.minBufferLength;\n\n    while (size < requested) {\n      size *= 2;\n    }\n\n    const buffer2 = new Uint8Array(size);\n    buffer2.set(buffer);\n    return this.buffer = buffer2;\n  }\n\n  getByte() {\n    const pos = this.pos;\n\n    while (this.bufferLength <= pos) {\n      if (this.eof) {\n        return -1;\n      }\n\n      this.readBlock();\n    }\n\n    return this.buffer[this.pos++];\n  }\n\n  getBytes(length, forceClamped = false) {\n    const pos = this.pos;\n    let end;\n\n    if (length) {\n      this.ensureBuffer(pos + length);\n      end = pos + length;\n\n      while (!this.eof && this.bufferLength < end) {\n        this.readBlock();\n      }\n\n      const bufEnd = this.bufferLength;\n\n      if (end > bufEnd) {\n        end = bufEnd;\n      }\n    } else {\n      while (!this.eof) {\n        this.readBlock();\n      }\n\n      end = this.bufferLength;\n    }\n\n    this.pos = end;\n    const subarray = this.buffer.subarray(pos, end);\n    return forceClamped && !(subarray instanceof Uint8ClampedArray) ? new Uint8ClampedArray(subarray) : subarray;\n  }\n\n  reset() {\n    this.pos = 0;\n  }\n\n  makeSubStream(start, length, dict = null) {\n    if (length === undefined) {\n      while (!this.eof) {\n        this.readBlock();\n      }\n    } else {\n      const end = start + length;\n\n      while (this.bufferLength <= end && !this.eof) {\n        this.readBlock();\n      }\n    }\n\n    return new _stream.Stream(this.buffer, start, length, dict);\n  }\n\n  getBaseStreams() {\n    return this.str ? this.str.getBaseStreams() : null;\n  }\n\n}\n\nexports.DecodeStream = DecodeStream;\n\nclass StreamsSequenceStream extends DecodeStream {\n  constructor(streams, onError = null) {\n    let maybeLength = 0;\n\n    for (const stream of streams) {\n      maybeLength += stream instanceof DecodeStream ? stream._rawMinBufferLength : stream.length;\n    }\n\n    super(maybeLength);\n    this.streams = streams;\n    this._onError = onError;\n  }\n\n  readBlock() {\n    const streams = this.streams;\n\n    if (streams.length === 0) {\n      this.eof = true;\n      return;\n    }\n\n    const stream = streams.shift();\n    let chunk;\n\n    try {\n      chunk = stream.getBytes();\n    } catch (reason) {\n      if (this._onError) {\n        this._onError(reason, stream.dict && stream.dict.objId);\n\n        return;\n      }\n\n      throw reason;\n    }\n\n    const bufferLength = this.bufferLength;\n    const newLength = bufferLength + chunk.length;\n    const buffer = this.ensureBuffer(newLength);\n    buffer.set(chunk, bufferLength);\n    this.bufferLength = newLength;\n  }\n\n  getBaseStreams() {\n    const baseStreamsBuf = [];\n\n    for (const stream of this.streams) {\n      const baseStreams = stream.getBaseStreams();\n\n      if (baseStreams) {\n        baseStreamsBuf.push(...baseStreams);\n      }\n    }\n\n    return baseStreamsBuf.length > 0 ? baseStreamsBuf : null;\n  }\n\n}\n\nexports.StreamsSequenceStream = StreamsSequenceStream;\n\n/***/ }),\n/* 30 */\n/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {\n\n\n\nObject.defineProperty(exports, \"__esModule\", ({\n  value: true\n}));\nexports.AsciiHexStream = void 0;\n\nvar _decode_stream = __w_pdfjs_require__(29);\n\nclass AsciiHexStream extends _decode_stream.DecodeStream {\n  constructor(str, maybeLength) {\n    if (maybeLength) {\n      maybeLength *= 0.5;\n    }\n\n    super(maybeLength);\n    this.str = str;\n    this.dict = str.dict;\n    this.firstDigit = -1;\n  }\n\n  readBlock() {\n    const UPSTREAM_BLOCK_SIZE = 8000;\n    const bytes = this.str.getBytes(UPSTREAM_BLOCK_SIZE);\n\n    if (!bytes.length) {\n      this.eof = true;\n      return;\n    }\n\n    const maxDecodeLength = bytes.length + 1 >> 1;\n    const buffer = this.ensureBuffer(this.bufferLength + maxDecodeLength);\n    let bufferLength = this.bufferLength;\n    let firstDigit = this.firstDigit;\n\n    for (const ch of bytes) {\n      let digit;\n\n      if (ch >= 0x30 && ch <= 0x39) {\n        digit = ch & 0x0f;\n      } else if (ch >= 0x41 && ch <= 0x46 || ch >= 0x61 && ch <= 0x66) {\n        digit = (ch & 0x0f) + 9;\n      } else if (ch === 0x3e) {\n        this.eof = true;\n        break;\n      } else {\n        continue;\n      }\n\n      if (firstDigit < 0) {\n        firstDigit = digit;\n      } else {\n        buffer[bufferLength++] = firstDigit << 4 | digit;\n        firstDigit = -1;\n      }\n    }\n\n    if (firstDigit >= 0 && this.eof) {\n      buffer[bufferLength++] = firstDigit << 4;\n      firstDigit = -1;\n    }\n\n    this.firstDigit = firstDigit;\n    this.bufferLength = bufferLength;\n  }\n\n}\n\nexports.AsciiHexStream = AsciiHexStream;\n\n/***/ }),\n/* 31 */\n/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {\n\n\n\nObject.defineProperty(exports, \"__esModule\", ({\n  value: true\n}));\nexports.CCITTFaxStream = void 0;\n\nvar _ccitt = __w_pdfjs_require__(32);\n\nvar _decode_stream = __w_pdfjs_require__(29);\n\nvar _primitives = __w_pdfjs_require__(5);\n\nclass CCITTFaxStream extends _decode_stream.DecodeStream {\n  constructor(str, maybeLength, params) {\n    super(maybeLength);\n    this.str = str;\n    this.dict = str.dict;\n\n    if (!(params instanceof _primitives.Dict)) {\n      params = _primitives.Dict.empty;\n    }\n\n    const source = {\n      next() {\n        return str.getByte();\n      }\n\n    };\n    this.ccittFaxDecoder = new _ccitt.CCITTFaxDecoder(source, {\n      K: params.get(\"K\"),\n      EndOfLine: params.get(\"EndOfLine\"),\n      EncodedByteAlign: params.get(\"EncodedByteAlign\"),\n      Columns: params.get(\"Columns\"),\n      Rows: params.get(\"Rows\"),\n      EndOfBlock: params.get(\"EndOfBlock\"),\n      BlackIs1: params.get(\"BlackIs1\")\n    });\n  }\n\n  readBlock() {\n    while (!this.eof) {\n      const c = this.ccittFaxDecoder.readNextChar();\n\n      if (c === -1) {\n        this.eof = true;\n        return;\n      }\n\n      this.ensureBuffer(this.bufferLength + 1);\n      this.buffer[this.bufferLength++] = c;\n    }\n  }\n\n}\n\nexports.CCITTFaxStream = CCITTFaxStream;\n\n/***/ }),\n/* 32 */\n/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {\n\n\n\nObject.defineProperty(exports, \"__esModule\", ({\n  value: true\n}));\nexports.CCITTFaxDecoder = void 0;\n\nvar _util = __w_pdfjs_require__(2);\n\nconst ccittEOL = -2;\nconst ccittEOF = -1;\nconst twoDimPass = 0;\nconst twoDimHoriz = 1;\nconst twoDimVert0 = 2;\nconst twoDimVertR1 = 3;\nconst twoDimVertL1 = 4;\nconst twoDimVertR2 = 5;\nconst twoDimVertL2 = 6;\nconst twoDimVertR3 = 7;\nconst twoDimVertL3 = 8;\nconst twoDimTable = [[-1, -1], [-1, -1], [7, twoDimVertL3], [7, twoDimVertR3], [6, twoDimVertL2], [6, twoDimVertL2], [6, twoDimVertR2], [6, twoDimVertR2], [4, twoDimPass], [4, twoDimPass], [4, twoDimPass], [4, twoDimPass], [4, twoDimPass], [4, twoDimPass], [4, twoDimPass], [4, twoDimPass], [3, twoDimHoriz], [3, twoDimHoriz], [3, twoDimHoriz], [3, twoDimHoriz], [3, twoDimHoriz], [3, twoDimHoriz], [3, twoDimHoriz], [3, twoDimHoriz], [3, twoDimHoriz], [3, twoDimHoriz], [3, twoDimHoriz], [3, twoDimHoriz], [3, twoDimHoriz], [3, twoDimHoriz], [3, twoDimHoriz], [3, twoDimHoriz], [3, twoDimVertL1], [3, twoDimVertL1], [3, twoDimVertL1], [3, twoDimVertL1], [3, twoDimVertL1], [3, twoDimVertL1], [3, twoDimVertL1], [3, twoDimVertL1], [3, twoDimVertL1], [3, twoDimVertL1], [3, twoDimVertL1], [3, twoDimVertL1], [3, twoDimVertL1], [3, twoDimVertL1], [3, twoDimVertL1], [3, twoDimVertL1], [3, twoDimVertR1], [3, twoDimVertR1], [3, twoDimVertR1], [3, twoDimVertR1], [3, twoDimVertR1], [3, twoDimVertR1], [3, twoDimVertR1], [3, twoDimVertR1], [3, twoDimVertR1], [3, twoDimVertR1], [3, twoDimVertR1], [3, twoDimVertR1], [3, twoDimVertR1], [3, twoDimVertR1], [3, twoDimVertR1], [3, twoDimVertR1], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0]];\nconst whiteTable1 = [[-1, -1], [12, ccittEOL], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [11, 1792], [11, 1792], [12, 1984], [12, 2048], [12, 2112], [12, 2176], [12, 2240], [12, 2304], [11, 1856], [11, 1856], [11, 1920], [11, 1920], [12, 2368], [12, 2432], [12, 2496], [12, 2560]];\nconst whiteTable2 = [[-1, -1], [-1, -1], [-1, -1], [-1, -1], [8, 29], [8, 29], [8, 30], [8, 30], [8, 45], [8, 45], [8, 46], [8, 46], [7, 22], [7, 22], [7, 22], [7, 22], [7, 23], [7, 23], [7, 23], [7, 23], [8, 47], [8, 47], [8, 48], [8, 48], [6, 13], [6, 13], [6, 13], [6, 13], [6, 13], [6, 13], [6, 13], [6, 13], [7, 20], [7, 20], [7, 20], [7, 20], [8, 33], [8, 33], [8, 34], [8, 34], [8, 35], [8, 35], [8, 36], [8, 36], [8, 37], [8, 37], [8, 38], [8, 38], [7, 19], [7, 19], [7, 19], [7, 19], [8, 31], [8, 31], [8, 32], [8, 32], [6, 1], [6, 1], [6, 1], [6, 1], [6, 1], [6, 1], [6, 1], [6, 1], [6, 12], [6, 12], [6, 12], [6, 12], [6, 12], [6, 12], [6, 12], [6, 12], [8, 53], [8, 53], [8, 54], [8, 54], [7, 26], [7, 26], [7, 26], [7, 26], [8, 39], [8, 39], [8, 40], [8, 40], [8, 41], [8, 41], [8, 42], [8, 42], [8, 43], [8, 43], [8, 44], [8, 44], [7, 21], [7, 21], [7, 21], [7, 21], [7, 28], [7, 28], [7, 28], [7, 28], [8, 61], [8, 61], [8, 62], [8, 62], [8, 63], [8, 63], [8, 0], [8, 0], [8, 320], [8, 320], [8, 384], [8, 384], [5, 10], [5, 10], [5, 10], [5, 10], [5, 10], [5, 10], [5, 10], [5, 10], [5, 10], [5, 10], [5, 10], [5, 10], [5, 10], [5, 10], [5, 10], [5, 10], [5, 11], [5, 11], [5, 11], [5, 11], [5, 11], [5, 11], [5, 11], [5, 11], [5, 11], [5, 11], [5, 11], [5, 11], [5, 11], [5, 11], [5, 11], [5, 11], [7, 27], [7, 27], [7, 27], [7, 27], [8, 59], [8, 59], [8, 60], [8, 60], [9, 1472], [9, 1536], [9, 1600], [9, 1728], [7, 18], [7, 18], [7, 18], [7, 18], [7, 24], [7, 24], [7, 24], [7, 24], [8, 49], [8, 49], [8, 50], [8, 50], [8, 51], [8, 51], [8, 52], [8, 52], [7, 25], [7, 25], [7, 25], [7, 25], [8, 55], [8, 55], [8, 56], [8, 56], [8, 57], [8, 57], [8, 58], [8, 58], [6, 192], [6, 192], [6, 192], [6, 192], [6, 192], [6, 192], [6, 192], [6, 192], [6, 1664], [6, 1664], [6, 1664], [6, 1664], [6, 1664], [6, 1664], [6, 1664], [6, 1664], [8, 448], [8, 448], [8, 512], [8, 512], [9, 704], [9, 768], [8, 640], [8, 640], [8, 576], [8, 576], [9, 832], [9, 896], [9, 960], [9, 1024], [9, 1088], [9, 1152], [9, 1216], [9, 1280], [9, 1344], [9, 1408], [7, 256], [7, 256], [7, 256], [7, 256], [4, 2], [4, 2], [4, 2], [4, 2], [4, 2], [4, 2], [4, 2], [4, 2], [4, 2], [4, 2], [4, 2], [4, 2], [4, 2], [4, 2], [4, 2], [4, 2], [4, 2], [4, 2], [4, 2], [4, 2], [4, 2], [4, 2], [4, 2], [4, 2], [4, 2], [4, 2], [4, 2], [4, 2], [4, 2], [4, 2], [4, 2], [4, 2], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [5, 128], [5, 128], [5, 128], [5, 128], [5, 128], [5, 128], [5, 128], [5, 128], [5, 128], [5, 128], [5, 128], [5, 128], [5, 128], [5, 128], [5, 128], [5, 128], [5, 8], [5, 8], [5, 8], [5, 8], [5, 8], [5, 8], [5, 8], [5, 8], [5, 8], [5, 8], [5, 8], [5, 8], [5, 8], [5, 8], [5, 8], [5, 8], [5, 9], [5, 9], [5, 9], [5, 9], [5, 9], [5, 9], [5, 9], [5, 9], [5, 9], [5, 9], [5, 9], [5, 9], [5, 9], [5, 9], [5, 9], [5, 9], [6, 16], [6, 16], [6, 16], [6, 16], [6, 16], [6, 16], [6, 16], [6, 16], [6, 17], [6, 17], [6, 17], [6, 17], [6, 17], [6, 17], [6, 17], [6, 17], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 5], [4, 5], [4, 5], [4, 5], [4, 5], [4, 5], [4, 5], [4, 5], [4, 5], [4, 5], [4, 5], [4, 5], [4, 5], [4, 5], [4, 5], [4, 5], [4, 5], [4, 5], [4, 5], [4, 5], [4, 5], [4, 5], [4, 5], [4, 5], [4, 5], [4, 5], [4, 5], [4, 5], [4, 5], [4, 5], [4, 5], [4, 5], [6, 14], [6, 14], [6, 14], [6, 14], [6, 14], [6, 14], [6, 14], [6, 14], [6, 15], [6, 15], [6, 15], [6, 15], [6, 15], [6, 15], [6, 15], [6, 15], [5, 64], [5, 64], [5, 64], [5, 64], [5, 64], [5, 64], [5, 64], [5, 64], [5, 64], [5, 64], [5, 64], [5, 64], [5, 64], [5, 64], [5, 64], [5, 64], [4, 6], [4, 6], [4, 6], [4, 6], [4, 6], [4, 6], [4, 6], [4, 6], [4, 6], [4, 6], [4, 6], [4, 6], [4, 6], [4, 6], [4, 6], [4, 6], [4, 6], [4, 6], [4, 6], [4, 6], [4, 6], [4, 6], [4, 6], [4, 6], [4, 6], [4, 6], [4, 6], [4, 6], [4, 6], [4, 6], [4, 6], [4, 6], [4, 7], [4, 7], [4, 7], [4, 7], [4, 7], [4, 7], [4, 7], [4, 7], [4, 7], [4, 7], [4, 7], [4, 7], [4, 7], [4, 7], [4, 7], [4, 7], [4, 7], [4, 7], [4, 7], [4, 7], [4, 7], [4, 7], [4, 7], [4, 7], [4, 7], [4, 7], [4, 7], [4, 7], [4, 7], [4, 7], [4, 7], [4, 7]];\nconst blackTable1 = [[-1, -1], [-1, -1], [12, ccittEOL], [12, ccittEOL], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [11, 1792], [11, 1792], [11, 1792], [11, 1792], [12, 1984], [12, 1984], [12, 2048], [12, 2048], [12, 2112], [12, 2112], [12, 2176], [12, 2176], [12, 2240], [12, 2240], [12, 2304], [12, 2304], [11, 1856], [11, 1856], [11, 1856], [11, 1856], [11, 1920], [11, 1920], [11, 1920], [11, 1920], [12, 2368], [12, 2368], [12, 2432], [12, 2432], [12, 2496], [12, 2496], [12, 2560], [12, 2560], [10, 18], [10, 18], [10, 18], [10, 18], [10, 18], [10, 18], [10, 18], [10, 18], [12, 52], [12, 52], [13, 640], [13, 704], [13, 768], [13, 832], [12, 55], [12, 55], [12, 56], [12, 56], [13, 1280], [13, 1344], [13, 1408], [13, 1472], [12, 59], [12, 59], [12, 60], [12, 60], [13, 1536], [13, 1600], [11, 24], [11, 24], [11, 24], [11, 24], [11, 25], [11, 25], [11, 25], [11, 25], [13, 1664], [13, 1728], [12, 320], [12, 320], [12, 384], [12, 384], [12, 448], [12, 448], [13, 512], [13, 576], [12, 53], [12, 53], [12, 54], [12, 54], [13, 896], [13, 960], [13, 1024], [13, 1088], [13, 1152], [13, 1216], [10, 64], [10, 64], [10, 64], [10, 64], [10, 64], [10, 64], [10, 64], [10, 64]];\nconst blackTable2 = [[8, 13], [8, 13], [8, 13], [8, 13], [8, 13], [8, 13], [8, 13], [8, 13], [8, 13], [8, 13], [8, 13], [8, 13], [8, 13], [8, 13], [8, 13], [8, 13], [11, 23], [11, 23], [12, 50], [12, 51], [12, 44], [12, 45], [12, 46], [12, 47], [12, 57], [12, 58], [12, 61], [12, 256], [10, 16], [10, 16], [10, 16], [10, 16], [10, 17], [10, 17], [10, 17], [10, 17], [12, 48], [12, 49], [12, 62], [12, 63], [12, 30], [12, 31], [12, 32], [12, 33], [12, 40], [12, 41], [11, 22], [11, 22], [8, 14], [8, 14], [8, 14], [8, 14], [8, 14], [8, 14], [8, 14], [8, 14], [8, 14], [8, 14], [8, 14], [8, 14], [8, 14], [8, 14], [8, 14], [8, 14], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [9, 15], [9, 15], [9, 15], [9, 15], [9, 15], [9, 15], [9, 15], [9, 15], [12, 128], [12, 192], [12, 26], [12, 27], [12, 28], [12, 29], [11, 19], [11, 19], [11, 20], [11, 20], [12, 34], [12, 35], [12, 36], [12, 37], [12, 38], [12, 39], [11, 21], [11, 21], [12, 42], [12, 43], [10, 0], [10, 0], [10, 0], [10, 0], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12]];\nconst blackTable3 = [[-1, -1], [-1, -1], [-1, -1], [-1, -1], [6, 9], [6, 8], [5, 7], [5, 7], [4, 6], [4, 6], [4, 6], [4, 6], [4, 5], [4, 5], [4, 5], [4, 5], [3, 1], [3, 1], [3, 1], [3, 1], [3, 1], [3, 1], [3, 1], [3, 1], [3, 4], [3, 4], [3, 4], [3, 4], [3, 4], [3, 4], [3, 4], [3, 4], [2, 3], [2, 3], [2, 3], [2, 3], [2, 3], [2, 3], [2, 3], [2, 3], [2, 3], [2, 3], [2, 3], [2, 3], [2, 3], [2, 3], [2, 3], [2, 3], [2, 2], [2, 2], [2, 2], [2, 2], [2, 2], [2, 2], [2, 2], [2, 2], [2, 2], [2, 2], [2, 2], [2, 2], [2, 2], [2, 2], [2, 2], [2, 2]];\n\nclass CCITTFaxDecoder {\n  constructor(source, options = {}) {\n    if (!source || typeof source.next !== \"function\") {\n      throw new Error('CCITTFaxDecoder - invalid \"source\" parameter.');\n    }\n\n    this.source = source;\n    this.eof = false;\n    this.encoding = options.K || 0;\n    this.eoline = options.EndOfLine || false;\n    this.byteAlign = options.EncodedByteAlign || false;\n    this.columns = options.Columns || 1728;\n    this.rows = options.Rows || 0;\n    let eoblock = options.EndOfBlock;\n\n    if (eoblock === null || eoblock === undefined) {\n      eoblock = true;\n    }\n\n    this.eoblock = eoblock;\n    this.black = options.BlackIs1 || false;\n    this.codingLine = new Uint32Array(this.columns + 1);\n    this.refLine = new Uint32Array(this.columns + 2);\n    this.codingLine[0] = this.columns;\n    this.codingPos = 0;\n    this.row = 0;\n    this.nextLine2D = this.encoding < 0;\n    this.inputBits = 0;\n    this.inputBuf = 0;\n    this.outputBits = 0;\n    this.rowsDone = false;\n    let code1;\n\n    while ((code1 = this._lookBits(12)) === 0) {\n      this._eatBits(1);\n    }\n\n    if (code1 === 1) {\n      this._eatBits(12);\n    }\n\n    if (this.encoding > 0) {\n      this.nextLine2D = !this._lookBits(1);\n\n      this._eatBits(1);\n    }\n  }\n\n  readNextChar() {\n    if (this.eof) {\n      return -1;\n    }\n\n    const refLine = this.refLine;\n    const codingLine = this.codingLine;\n    const columns = this.columns;\n    let refPos, blackPixels, bits, i;\n\n    if (this.outputBits === 0) {\n      if (this.rowsDone) {\n        this.eof = true;\n      }\n\n      if (this.eof) {\n        return -1;\n      }\n\n      this.err = false;\n      let code1, code2, code3;\n\n      if (this.nextLine2D) {\n        for (i = 0; codingLine[i] < columns; ++i) {\n          refLine[i] = codingLine[i];\n        }\n\n        refLine[i++] = columns;\n        refLine[i] = columns;\n        codingLine[0] = 0;\n        this.codingPos = 0;\n        refPos = 0;\n        blackPixels = 0;\n\n        while (codingLine[this.codingPos] < columns) {\n          code1 = this._getTwoDimCode();\n\n          switch (code1) {\n            case twoDimPass:\n              this._addPixels(refLine[refPos + 1], blackPixels);\n\n              if (refLine[refPos + 1] < columns) {\n                refPos += 2;\n              }\n\n              break;\n\n            case twoDimHoriz:\n              code1 = code2 = 0;\n\n              if (blackPixels) {\n                do {\n                  code1 += code3 = this._getBlackCode();\n                } while (code3 >= 64);\n\n                do {\n                  code2 += code3 = this._getWhiteCode();\n                } while (code3 >= 64);\n              } else {\n                do {\n                  code1 += code3 = this._getWhiteCode();\n                } while (code3 >= 64);\n\n                do {\n                  code2 += code3 = this._getBlackCode();\n                } while (code3 >= 64);\n              }\n\n              this._addPixels(codingLine[this.codingPos] + code1, blackPixels);\n\n              if (codingLine[this.codingPos] < columns) {\n                this._addPixels(codingLine[this.codingPos] + code2, blackPixels ^ 1);\n              }\n\n              while (refLine[refPos] <= codingLine[this.codingPos] && refLine[refPos] < columns) {\n                refPos += 2;\n              }\n\n              break;\n\n            case twoDimVertR3:\n              this._addPixels(refLine[refPos] + 3, blackPixels);\n\n              blackPixels ^= 1;\n\n              if (codingLine[this.codingPos] < columns) {\n                ++refPos;\n\n                while (refLine[refPos] <= codingLine[this.codingPos] && refLine[refPos] < columns) {\n                  refPos += 2;\n                }\n              }\n\n              break;\n\n            case twoDimVertR2:\n              this._addPixels(refLine[refPos] + 2, blackPixels);\n\n              blackPixels ^= 1;\n\n              if (codingLine[this.codingPos] < columns) {\n                ++refPos;\n\n                while (refLine[refPos] <= codingLine[this.codingPos] && refLine[refPos] < columns) {\n                  refPos += 2;\n                }\n              }\n\n              break;\n\n            case twoDimVertR1:\n              this._addPixels(refLine[refPos] + 1, blackPixels);\n\n              blackPixels ^= 1;\n\n              if (codingLine[this.codingPos] < columns) {\n                ++refPos;\n\n                while (refLine[refPos] <= codingLine[this.codingPos] && refLine[refPos] < columns) {\n                  refPos += 2;\n                }\n              }\n\n              break;\n\n            case twoDimVert0:\n              this._addPixels(refLine[refPos], blackPixels);\n\n              blackPixels ^= 1;\n\n              if (codingLine[this.codingPos] < columns) {\n                ++refPos;\n\n                while (refLine[refPos] <= codingLine[this.codingPos] && refLine[refPos] < columns) {\n                  refPos += 2;\n                }\n              }\n\n              break;\n\n            case twoDimVertL3:\n              this._addPixelsNeg(refLine[refPos] - 3, blackPixels);\n\n              blackPixels ^= 1;\n\n              if (codingLine[this.codingPos] < columns) {\n                if (refPos > 0) {\n                  --refPos;\n                } else {\n                  ++refPos;\n                }\n\n                while (refLine[refPos] <= codingLine[this.codingPos] && refLine[refPos] < columns) {\n                  refPos += 2;\n                }\n              }\n\n              break;\n\n            case twoDimVertL2:\n              this._addPixelsNeg(refLine[refPos] - 2, blackPixels);\n\n              blackPixels ^= 1;\n\n              if (codingLine[this.codingPos] < columns) {\n                if (refPos > 0) {\n                  --refPos;\n                } else {\n                  ++refPos;\n                }\n\n                while (refLine[refPos] <= codingLine[this.codingPos] && refLine[refPos] < columns) {\n                  refPos += 2;\n                }\n              }\n\n              break;\n\n            case twoDimVertL1:\n              this._addPixelsNeg(refLine[refPos] - 1, blackPixels);\n\n              blackPixels ^= 1;\n\n              if (codingLine[this.codingPos] < columns) {\n                if (refPos > 0) {\n                  --refPos;\n                } else {\n                  ++refPos;\n                }\n\n                while (refLine[refPos] <= codingLine[this.codingPos] && refLine[refPos] < columns) {\n                  refPos += 2;\n                }\n              }\n\n              break;\n\n            case ccittEOF:\n              this._addPixels(columns, 0);\n\n              this.eof = true;\n              break;\n\n            default:\n              (0, _util.info)(\"bad 2d code\");\n\n              this._addPixels(columns, 0);\n\n              this.err = true;\n          }\n        }\n      } else {\n        codingLine[0] = 0;\n        this.codingPos = 0;\n        blackPixels = 0;\n\n        while (codingLine[this.codingPos] < columns) {\n          code1 = 0;\n\n          if (blackPixels) {\n            do {\n              code1 += code3 = this._getBlackCode();\n            } while (code3 >= 64);\n          } else {\n            do {\n              code1 += code3 = this._getWhiteCode();\n            } while (code3 >= 64);\n          }\n\n          this._addPixels(codingLine[this.codingPos] + code1, blackPixels);\n\n          blackPixels ^= 1;\n        }\n      }\n\n      let gotEOL = false;\n\n      if (this.byteAlign) {\n        this.inputBits &= ~7;\n      }\n\n      if (!this.eoblock && this.row === this.rows - 1) {\n        this.rowsDone = true;\n      } else {\n        code1 = this._lookBits(12);\n\n        if (this.eoline) {\n          while (code1 !== ccittEOF && code1 !== 1) {\n            this._eatBits(1);\n\n            code1 = this._lookBits(12);\n          }\n        } else {\n          while (code1 === 0) {\n            this._eatBits(1);\n\n            code1 = this._lookBits(12);\n          }\n        }\n\n        if (code1 === 1) {\n          this._eatBits(12);\n\n          gotEOL = true;\n        } else if (code1 === ccittEOF) {\n          this.eof = true;\n        }\n      }\n\n      if (!this.eof && this.encoding > 0 && !this.rowsDone) {\n        this.nextLine2D = !this._lookBits(1);\n\n        this._eatBits(1);\n      }\n\n      if (this.eoblock && gotEOL && this.byteAlign) {\n        code1 = this._lookBits(12);\n\n        if (code1 === 1) {\n          this._eatBits(12);\n\n          if (this.encoding > 0) {\n            this._lookBits(1);\n\n            this._eatBits(1);\n          }\n\n          if (this.encoding >= 0) {\n            for (i = 0; i < 4; ++i) {\n              code1 = this._lookBits(12);\n\n              if (code1 !== 1) {\n                (0, _util.info)(\"bad rtc code: \" + code1);\n              }\n\n              this._eatBits(12);\n\n              if (this.encoding > 0) {\n                this._lookBits(1);\n\n                this._eatBits(1);\n              }\n            }\n          }\n\n          this.eof = true;\n        }\n      } else if (this.err && this.eoline) {\n        while (true) {\n          code1 = this._lookBits(13);\n\n          if (code1 === ccittEOF) {\n            this.eof = true;\n            return -1;\n          }\n\n          if (code1 >> 1 === 1) {\n            break;\n          }\n\n          this._eatBits(1);\n        }\n\n        this._eatBits(12);\n\n        if (this.encoding > 0) {\n          this._eatBits(1);\n\n          this.nextLine2D = !(code1 & 1);\n        }\n      }\n\n      if (codingLine[0] > 0) {\n        this.outputBits = codingLine[this.codingPos = 0];\n      } else {\n        this.outputBits = codingLine[this.codingPos = 1];\n      }\n\n      this.row++;\n    }\n\n    let c;\n\n    if (this.outputBits >= 8) {\n      c = this.codingPos & 1 ? 0 : 0xff;\n      this.outputBits -= 8;\n\n      if (this.outputBits === 0 && codingLine[this.codingPos] < columns) {\n        this.codingPos++;\n        this.outputBits = codingLine[this.codingPos] - codingLine[this.codingPos - 1];\n      }\n    } else {\n      bits = 8;\n      c = 0;\n\n      do {\n        if (typeof this.outputBits !== \"number\") {\n          throw new _util.FormatError('Invalid /CCITTFaxDecode data, \"outputBits\" must be a number.');\n        }\n\n        if (this.outputBits > bits) {\n          c <<= bits;\n\n          if (!(this.codingPos & 1)) {\n            c |= 0xff >> 8 - bits;\n          }\n\n          this.outputBits -= bits;\n          bits = 0;\n        } else {\n          c <<= this.outputBits;\n\n          if (!(this.codingPos & 1)) {\n            c |= 0xff >> 8 - this.outputBits;\n          }\n\n          bits -= this.outputBits;\n          this.outputBits = 0;\n\n          if (codingLine[this.codingPos] < columns) {\n            this.codingPos++;\n            this.outputBits = codingLine[this.codingPos] - codingLine[this.codingPos - 1];\n          } else if (bits > 0) {\n            c <<= bits;\n            bits = 0;\n          }\n        }\n      } while (bits);\n    }\n\n    if (this.black) {\n      c ^= 0xff;\n    }\n\n    return c;\n  }\n\n  _addPixels(a1, blackPixels) {\n    const codingLine = this.codingLine;\n    let codingPos = this.codingPos;\n\n    if (a1 > codingLine[codingPos]) {\n      if (a1 > this.columns) {\n        (0, _util.info)(\"row is wrong length\");\n        this.err = true;\n        a1 = this.columns;\n      }\n\n      if (codingPos & 1 ^ blackPixels) {\n        ++codingPos;\n      }\n\n      codingLine[codingPos] = a1;\n    }\n\n    this.codingPos = codingPos;\n  }\n\n  _addPixelsNeg(a1, blackPixels) {\n    const codingLine = this.codingLine;\n    let codingPos = this.codingPos;\n\n    if (a1 > codingLine[codingPos]) {\n      if (a1 > this.columns) {\n        (0, _util.info)(\"row is wrong length\");\n        this.err = true;\n        a1 = this.columns;\n      }\n\n      if (codingPos & 1 ^ blackPixels) {\n        ++codingPos;\n      }\n\n      codingLine[codingPos] = a1;\n    } else if (a1 < codingLine[codingPos]) {\n      if (a1 < 0) {\n        (0, _util.info)(\"invalid code\");\n        this.err = true;\n        a1 = 0;\n      }\n\n      while (codingPos > 0 && a1 < codingLine[codingPos - 1]) {\n        --codingPos;\n      }\n\n      codingLine[codingPos] = a1;\n    }\n\n    this.codingPos = codingPos;\n  }\n\n  _findTableCode(start, end, table, limit) {\n    const limitValue = limit || 0;\n\n    for (let i = start; i <= end; ++i) {\n      let code = this._lookBits(i);\n\n      if (code === ccittEOF) {\n        return [true, 1, false];\n      }\n\n      if (i < end) {\n        code <<= end - i;\n      }\n\n      if (!limitValue || code >= limitValue) {\n        const p = table[code - limitValue];\n\n        if (p[0] === i) {\n          this._eatBits(i);\n\n          return [true, p[1], true];\n        }\n      }\n    }\n\n    return [false, 0, false];\n  }\n\n  _getTwoDimCode() {\n    let code = 0;\n    let p;\n\n    if (this.eoblock) {\n      code = this._lookBits(7);\n      p = twoDimTable[code];\n\n      if (p && p[0] > 0) {\n        this._eatBits(p[0]);\n\n        return p[1];\n      }\n    } else {\n      const result = this._findTableCode(1, 7, twoDimTable);\n\n      if (result[0] && result[2]) {\n        return result[1];\n      }\n    }\n\n    (0, _util.info)(\"Bad two dim code\");\n    return ccittEOF;\n  }\n\n  _getWhiteCode() {\n    let code = 0;\n    let p;\n\n    if (this.eoblock) {\n      code = this._lookBits(12);\n\n      if (code === ccittEOF) {\n        return 1;\n      }\n\n      if (code >> 5 === 0) {\n        p = whiteTable1[code];\n      } else {\n        p = whiteTable2[code >> 3];\n      }\n\n      if (p[0] > 0) {\n        this._eatBits(p[0]);\n\n        return p[1];\n      }\n    } else {\n      let result = this._findTableCode(1, 9, whiteTable2);\n\n      if (result[0]) {\n        return result[1];\n      }\n\n      result = this._findTableCode(11, 12, whiteTable1);\n\n      if (result[0]) {\n        return result[1];\n      }\n    }\n\n    (0, _util.info)(\"bad white code\");\n\n    this._eatBits(1);\n\n    return 1;\n  }\n\n  _getBlackCode() {\n    let code, p;\n\n    if (this.eoblock) {\n      code = this._lookBits(13);\n\n      if (code === ccittEOF) {\n        return 1;\n      }\n\n      if (code >> 7 === 0) {\n        p = blackTable1[code];\n      } else if (code >> 9 === 0 && code >> 7 !== 0) {\n        p = blackTable2[(code >> 1) - 64];\n      } else {\n        p = blackTable3[code >> 7];\n      }\n\n      if (p[0] > 0) {\n        this._eatBits(p[0]);\n\n        return p[1];\n      }\n    } else {\n      let result = this._findTableCode(2, 6, blackTable3);\n\n      if (result[0]) {\n        return result[1];\n      }\n\n      result = this._findTableCode(7, 12, blackTable2, 64);\n\n      if (result[0]) {\n        return result[1];\n      }\n\n      result = this._findTableCode(10, 13, blackTable1);\n\n      if (result[0]) {\n        return result[1];\n      }\n    }\n\n    (0, _util.info)(\"bad black code\");\n\n    this._eatBits(1);\n\n    return 1;\n  }\n\n  _lookBits(n) {\n    let c;\n\n    while (this.inputBits < n) {\n      if ((c = this.source.next()) === -1) {\n        if (this.inputBits === 0) {\n          return ccittEOF;\n        }\n\n        return this.inputBuf << n - this.inputBits & 0xffff >> 16 - n;\n      }\n\n      this.inputBuf = this.inputBuf << 8 | c;\n      this.inputBits += 8;\n    }\n\n    return this.inputBuf >> this.inputBits - n & 0xffff >> 16 - n;\n  }\n\n  _eatBits(n) {\n    if ((this.inputBits -= n) < 0) {\n      this.inputBits = 0;\n    }\n  }\n\n}\n\nexports.CCITTFaxDecoder = CCITTFaxDecoder;\n\n/***/ }),\n/* 33 */\n/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {\n\n\n\nObject.defineProperty(exports, \"__esModule\", ({\n  value: true\n}));\nexports.FlateStream = void 0;\n\nvar _decode_stream = __w_pdfjs_require__(29);\n\nvar _util = __w_pdfjs_require__(2);\n\nconst codeLenCodeMap = new Int32Array([16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15]);\nconst lengthDecode = new Int32Array([0x00003, 0x00004, 0x00005, 0x00006, 0x00007, 0x00008, 0x00009, 0x0000a, 0x1000b, 0x1000d, 0x1000f, 0x10011, 0x20013, 0x20017, 0x2001b, 0x2001f, 0x30023, 0x3002b, 0x30033, 0x3003b, 0x40043, 0x40053, 0x40063, 0x40073, 0x50083, 0x500a3, 0x500c3, 0x500e3, 0x00102, 0x00102, 0x00102]);\nconst distDecode = new Int32Array([0x00001, 0x00002, 0x00003, 0x00004, 0x10005, 0x10007, 0x20009, 0x2000d, 0x30011, 0x30019, 0x40021, 0x40031, 0x50041, 0x50061, 0x60081, 0x600c1, 0x70101, 0x70181, 0x80201, 0x80301, 0x90401, 0x90601, 0xa0801, 0xa0c01, 0xb1001, 0xb1801, 0xc2001, 0xc3001, 0xd4001, 0xd6001]);\nconst fixedLitCodeTab = [new Int32Array([0x70100, 0x80050, 0x80010, 0x80118, 0x70110, 0x80070, 0x80030, 0x900c0, 0x70108, 0x80060, 0x80020, 0x900a0, 0x80000, 0x80080, 0x80040, 0x900e0, 0x70104, 0x80058, 0x80018, 0x90090, 0x70114, 0x80078, 0x80038, 0x900d0, 0x7010c, 0x80068, 0x80028, 0x900b0, 0x80008, 0x80088, 0x80048, 0x900f0, 0x70102, 0x80054, 0x80014, 0x8011c, 0x70112, 0x80074, 0x80034, 0x900c8, 0x7010a, 0x80064, 0x80024, 0x900a8, 0x80004, 0x80084, 0x80044, 0x900e8, 0x70106, 0x8005c, 0x8001c, 0x90098, 0x70116, 0x8007c, 0x8003c, 0x900d8, 0x7010e, 0x8006c, 0x8002c, 0x900b8, 0x8000c, 0x8008c, 0x8004c, 0x900f8, 0x70101, 0x80052, 0x80012, 0x8011a, 0x70111, 0x80072, 0x80032, 0x900c4, 0x70109, 0x80062, 0x80022, 0x900a4, 0x80002, 0x80082, 0x80042, 0x900e4, 0x70105, 0x8005a, 0x8001a, 0x90094, 0x70115, 0x8007a, 0x8003a, 0x900d4, 0x7010d, 0x8006a, 0x8002a, 0x900b4, 0x8000a, 0x8008a, 0x8004a, 0x900f4, 0x70103, 0x80056, 0x80016, 0x8011e, 0x70113, 0x80076, 0x80036, 0x900cc, 0x7010b, 0x80066, 0x80026, 0x900ac, 0x80006, 0x80086, 0x80046, 0x900ec, 0x70107, 0x8005e, 0x8001e, 0x9009c, 0x70117, 0x8007e, 0x8003e, 0x900dc, 0x7010f, 0x8006e, 0x8002e, 0x900bc, 0x8000e, 0x8008e, 0x8004e, 0x900fc, 0x70100, 0x80051, 0x80011, 0x80119, 0x70110, 0x80071, 0x80031, 0x900c2, 0x70108, 0x80061, 0x80021, 0x900a2, 0x80001, 0x80081, 0x80041, 0x900e2, 0x70104, 0x80059, 0x80019, 0x90092, 0x70114, 0x80079, 0x80039, 0x900d2, 0x7010c, 0x80069, 0x80029, 0x900b2, 0x80009, 0x80089, 0x80049, 0x900f2, 0x70102, 0x80055, 0x80015, 0x8011d, 0x70112, 0x80075, 0x80035, 0x900ca, 0x7010a, 0x80065, 0x80025, 0x900aa, 0x80005, 0x80085, 0x80045, 0x900ea, 0x70106, 0x8005d, 0x8001d, 0x9009a, 0x70116, 0x8007d, 0x8003d, 0x900da, 0x7010e, 0x8006d, 0x8002d, 0x900ba, 0x8000d, 0x8008d, 0x8004d, 0x900fa, 0x70101, 0x80053, 0x80013, 0x8011b, 0x70111, 0x80073, 0x80033, 0x900c6, 0x70109, 0x80063, 0x80023, 0x900a6, 0x80003, 0x80083, 0x80043, 0x900e6, 0x70105, 0x8005b, 0x8001b, 0x90096, 0x70115, 0x8007b, 0x8003b, 0x900d6, 0x7010d, 0x8006b, 0x8002b, 0x900b6, 0x8000b, 0x8008b, 0x8004b, 0x900f6, 0x70103, 0x80057, 0x80017, 0x8011f, 0x70113, 0x80077, 0x80037, 0x900ce, 0x7010b, 0x80067, 0x80027, 0x900ae, 0x80007, 0x80087, 0x80047, 0x900ee, 0x70107, 0x8005f, 0x8001f, 0x9009e, 0x70117, 0x8007f, 0x8003f, 0x900de, 0x7010f, 0x8006f, 0x8002f, 0x900be, 0x8000f, 0x8008f, 0x8004f, 0x900fe, 0x70100, 0x80050, 0x80010, 0x80118, 0x70110, 0x80070, 0x80030, 0x900c1, 0x70108, 0x80060, 0x80020, 0x900a1, 0x80000, 0x80080, 0x80040, 0x900e1, 0x70104, 0x80058, 0x80018, 0x90091, 0x70114, 0x80078, 0x80038, 0x900d1, 0x7010c, 0x80068, 0x80028, 0x900b1, 0x80008, 0x80088, 0x80048, 0x900f1, 0x70102, 0x80054, 0x80014, 0x8011c, 0x70112, 0x80074, 0x80034, 0x900c9, 0x7010a, 0x80064, 0x80024, 0x900a9, 0x80004, 0x80084, 0x80044, 0x900e9, 0x70106, 0x8005c, 0x8001c, 0x90099, 0x70116, 0x8007c, 0x8003c, 0x900d9, 0x7010e, 0x8006c, 0x8002c, 0x900b9, 0x8000c, 0x8008c, 0x8004c, 0x900f9, 0x70101, 0x80052, 0x80012, 0x8011a, 0x70111, 0x80072, 0x80032, 0x900c5, 0x70109, 0x80062, 0x80022, 0x900a5, 0x80002, 0x80082, 0x80042, 0x900e5, 0x70105, 0x8005a, 0x8001a, 0x90095, 0x70115, 0x8007a, 0x8003a, 0x900d5, 0x7010d, 0x8006a, 0x8002a, 0x900b5, 0x8000a, 0x8008a, 0x8004a, 0x900f5, 0x70103, 0x80056, 0x80016, 0x8011e, 0x70113, 0x80076, 0x80036, 0x900cd, 0x7010b, 0x80066, 0x80026, 0x900ad, 0x80006, 0x80086, 0x80046, 0x900ed, 0x70107, 0x8005e, 0x8001e, 0x9009d, 0x70117, 0x8007e, 0x8003e, 0x900dd, 0x7010f, 0x8006e, 0x8002e, 0x900bd, 0x8000e, 0x8008e, 0x8004e, 0x900fd, 0x70100, 0x80051, 0x80011, 0x80119, 0x70110, 0x80071, 0x80031, 0x900c3, 0x70108, 0x80061, 0x80021, 0x900a3, 0x80001, 0x80081, 0x80041, 0x900e3, 0x70104, 0x80059, 0x80019, 0x90093, 0x70114, 0x80079, 0x80039, 0x900d3, 0x7010c, 0x80069, 0x80029, 0x900b3, 0x80009, 0x80089, 0x80049, 0x900f3, 0x70102, 0x80055, 0x80015, 0x8011d, 0x70112, 0x80075, 0x80035, 0x900cb, 0x7010a, 0x80065, 0x80025, 0x900ab, 0x80005, 0x80085, 0x80045, 0x900eb, 0x70106, 0x8005d, 0x8001d, 0x9009b, 0x70116, 0x8007d, 0x8003d, 0x900db, 0x7010e, 0x8006d, 0x8002d, 0x900bb, 0x8000d, 0x8008d, 0x8004d, 0x900fb, 0x70101, 0x80053, 0x80013, 0x8011b, 0x70111, 0x80073, 0x80033, 0x900c7, 0x70109, 0x80063, 0x80023, 0x900a7, 0x80003, 0x80083, 0x80043, 0x900e7, 0x70105, 0x8005b, 0x8001b, 0x90097, 0x70115, 0x8007b, 0x8003b, 0x900d7, 0x7010d, 0x8006b, 0x8002b, 0x900b7, 0x8000b, 0x8008b, 0x8004b, 0x900f7, 0x70103, 0x80057, 0x80017, 0x8011f, 0x70113, 0x80077, 0x80037, 0x900cf, 0x7010b, 0x80067, 0x80027, 0x900af, 0x80007, 0x80087, 0x80047, 0x900ef, 0x70107, 0x8005f, 0x8001f, 0x9009f, 0x70117, 0x8007f, 0x8003f, 0x900df, 0x7010f, 0x8006f, 0x8002f, 0x900bf, 0x8000f, 0x8008f, 0x8004f, 0x900ff]), 9];\nconst fixedDistCodeTab = [new Int32Array([0x50000, 0x50010, 0x50008, 0x50018, 0x50004, 0x50014, 0x5000c, 0x5001c, 0x50002, 0x50012, 0x5000a, 0x5001a, 0x50006, 0x50016, 0x5000e, 0x00000, 0x50001, 0x50011, 0x50009, 0x50019, 0x50005, 0x50015, 0x5000d, 0x5001d, 0x50003, 0x50013, 0x5000b, 0x5001b, 0x50007, 0x50017, 0x5000f, 0x00000]), 5];\n\nclass FlateStream extends _decode_stream.DecodeStream {\n  constructor(str, maybeLength) {\n    super(maybeLength);\n    this.str = str;\n    this.dict = str.dict;\n    const cmf = str.getByte();\n    const flg = str.getByte();\n\n    if (cmf === -1 || flg === -1) {\n      throw new _util.FormatError(`Invalid header in flate stream: ${cmf}, ${flg}`);\n    }\n\n    if ((cmf & 0x0f) !== 0x08) {\n      throw new _util.FormatError(`Unknown compression method in flate stream: ${cmf}, ${flg}`);\n    }\n\n    if (((cmf << 8) + flg) % 31 !== 0) {\n      throw new _util.FormatError(`Bad FCHECK in flate stream: ${cmf}, ${flg}`);\n    }\n\n    if (flg & 0x20) {\n      throw new _util.FormatError(`FDICT bit set in flate stream: ${cmf}, ${flg}`);\n    }\n\n    this.codeSize = 0;\n    this.codeBuf = 0;\n  }\n\n  getBits(bits) {\n    const str = this.str;\n    let codeSize = this.codeSize;\n    let codeBuf = this.codeBuf;\n    let b;\n\n    while (codeSize < bits) {\n      if ((b = str.getByte()) === -1) {\n        throw new _util.FormatError(\"Bad encoding in flate stream\");\n      }\n\n      codeBuf |= b << codeSize;\n      codeSize += 8;\n    }\n\n    b = codeBuf & (1 << bits) - 1;\n    this.codeBuf = codeBuf >> bits;\n    this.codeSize = codeSize -= bits;\n    return b;\n  }\n\n  getCode(table) {\n    const str = this.str;\n    const codes = table[0];\n    const maxLen = table[1];\n    let codeSize = this.codeSize;\n    let codeBuf = this.codeBuf;\n    let b;\n\n    while (codeSize < maxLen) {\n      if ((b = str.getByte()) === -1) {\n        break;\n      }\n\n      codeBuf |= b << codeSize;\n      codeSize += 8;\n    }\n\n    const code = codes[codeBuf & (1 << maxLen) - 1];\n    const codeLen = code >> 16;\n    const codeVal = code & 0xffff;\n\n    if (codeLen < 1 || codeSize < codeLen) {\n      throw new _util.FormatError(\"Bad encoding in flate stream\");\n    }\n\n    this.codeBuf = codeBuf >> codeLen;\n    this.codeSize = codeSize - codeLen;\n    return codeVal;\n  }\n\n  generateHuffmanTable(lengths) {\n    const n = lengths.length;\n    let maxLen = 0;\n    let i;\n\n    for (i = 0; i < n; ++i) {\n      if (lengths[i] > maxLen) {\n        maxLen = lengths[i];\n      }\n    }\n\n    const size = 1 << maxLen;\n    const codes = new Int32Array(size);\n\n    for (let len = 1, code = 0, skip = 2; len <= maxLen; ++len, code <<= 1, skip <<= 1) {\n      for (let val = 0; val < n; ++val) {\n        if (lengths[val] === len) {\n          let code2 = 0;\n          let t = code;\n\n          for (i = 0; i < len; ++i) {\n            code2 = code2 << 1 | t & 1;\n            t >>= 1;\n          }\n\n          for (i = code2; i < size; i += skip) {\n            codes[i] = len << 16 | val;\n          }\n\n          ++code;\n        }\n      }\n    }\n\n    return [codes, maxLen];\n  }\n\n  readBlock() {\n    let buffer, len;\n    const str = this.str;\n    let hdr = this.getBits(3);\n\n    if (hdr & 1) {\n      this.eof = true;\n    }\n\n    hdr >>= 1;\n\n    if (hdr === 0) {\n      let b;\n\n      if ((b = str.getByte()) === -1) {\n        throw new _util.FormatError(\"Bad block header in flate stream\");\n      }\n\n      let blockLen = b;\n\n      if ((b = str.getByte()) === -1) {\n        throw new _util.FormatError(\"Bad block header in flate stream\");\n      }\n\n      blockLen |= b << 8;\n\n      if ((b = str.getByte()) === -1) {\n        throw new _util.FormatError(\"Bad block header in flate stream\");\n      }\n\n      let check = b;\n\n      if ((b = str.getByte()) === -1) {\n        throw new _util.FormatError(\"Bad block header in flate stream\");\n      }\n\n      check |= b << 8;\n\n      if (check !== (~blockLen & 0xffff) && (blockLen !== 0 || check !== 0)) {\n        throw new _util.FormatError(\"Bad uncompressed block length in flate stream\");\n      }\n\n      this.codeBuf = 0;\n      this.codeSize = 0;\n      const bufferLength = this.bufferLength,\n            end = bufferLength + blockLen;\n      buffer = this.ensureBuffer(end);\n      this.bufferLength = end;\n\n      if (blockLen === 0) {\n        if (str.peekByte() === -1) {\n          this.eof = true;\n        }\n      } else {\n        const block = str.getBytes(blockLen);\n        buffer.set(block, bufferLength);\n\n        if (block.length < blockLen) {\n          this.eof = true;\n        }\n      }\n\n      return;\n    }\n\n    let litCodeTable;\n    let distCodeTable;\n\n    if (hdr === 1) {\n      litCodeTable = fixedLitCodeTab;\n      distCodeTable = fixedDistCodeTab;\n    } else if (hdr === 2) {\n      const numLitCodes = this.getBits(5) + 257;\n      const numDistCodes = this.getBits(5) + 1;\n      const numCodeLenCodes = this.getBits(4) + 4;\n      const codeLenCodeLengths = new Uint8Array(codeLenCodeMap.length);\n      let i;\n\n      for (i = 0; i < numCodeLenCodes; ++i) {\n        codeLenCodeLengths[codeLenCodeMap[i]] = this.getBits(3);\n      }\n\n      const codeLenCodeTab = this.generateHuffmanTable(codeLenCodeLengths);\n      len = 0;\n      i = 0;\n      const codes = numLitCodes + numDistCodes;\n      const codeLengths = new Uint8Array(codes);\n      let bitsLength, bitsOffset, what;\n\n      while (i < codes) {\n        const code = this.getCode(codeLenCodeTab);\n\n        if (code === 16) {\n          bitsLength = 2;\n          bitsOffset = 3;\n          what = len;\n        } else if (code === 17) {\n          bitsLength = 3;\n          bitsOffset = 3;\n          what = len = 0;\n        } else if (code === 18) {\n          bitsLength = 7;\n          bitsOffset = 11;\n          what = len = 0;\n        } else {\n          codeLengths[i++] = len = code;\n          continue;\n        }\n\n        let repeatLength = this.getBits(bitsLength) + bitsOffset;\n\n        while (repeatLength-- > 0) {\n          codeLengths[i++] = what;\n        }\n      }\n\n      litCodeTable = this.generateHuffmanTable(codeLengths.subarray(0, numLitCodes));\n      distCodeTable = this.generateHuffmanTable(codeLengths.subarray(numLitCodes, codes));\n    } else {\n      throw new _util.FormatError(\"Unknown block type in flate stream\");\n    }\n\n    buffer = this.buffer;\n    let limit = buffer ? buffer.length : 0;\n    let pos = this.bufferLength;\n\n    while (true) {\n      let code1 = this.getCode(litCodeTable);\n\n      if (code1 < 256) {\n        if (pos + 1 >= limit) {\n          buffer = this.ensureBuffer(pos + 1);\n          limit = buffer.length;\n        }\n\n        buffer[pos++] = code1;\n        continue;\n      }\n\n      if (code1 === 256) {\n        this.bufferLength = pos;\n        return;\n      }\n\n      code1 -= 257;\n      code1 = lengthDecode[code1];\n      let code2 = code1 >> 16;\n\n      if (code2 > 0) {\n        code2 = this.getBits(code2);\n      }\n\n      len = (code1 & 0xffff) + code2;\n      code1 = this.getCode(distCodeTable);\n      code1 = distDecode[code1];\n      code2 = code1 >> 16;\n\n      if (code2 > 0) {\n        code2 = this.getBits(code2);\n      }\n\n      const dist = (code1 & 0xffff) + code2;\n\n      if (pos + len >= limit) {\n        buffer = this.ensureBuffer(pos + len);\n        limit = buffer.length;\n      }\n\n      for (let k = 0; k < len; ++k, ++pos) {\n        buffer[pos] = buffer[pos - dist];\n      }\n    }\n  }\n\n}\n\nexports.FlateStream = FlateStream;\n\n/***/ }),\n/* 34 */\n/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {\n\n\n\nObject.defineProperty(exports, \"__esModule\", ({\n  value: true\n}));\nexports.Jbig2Stream = void 0;\n\nvar _base_stream = __w_pdfjs_require__(9);\n\nvar _decode_stream = __w_pdfjs_require__(29);\n\nvar _primitives = __w_pdfjs_require__(5);\n\nvar _jbig = __w_pdfjs_require__(35);\n\nvar _util = __w_pdfjs_require__(2);\n\nclass Jbig2Stream extends _decode_stream.DecodeStream {\n  constructor(stream, maybeLength, params) {\n    super(maybeLength);\n    this.stream = stream;\n    this.dict = stream.dict;\n    this.maybeLength = maybeLength;\n    this.params = params;\n  }\n\n  get bytes() {\n    return (0, _util.shadow)(this, \"bytes\", this.stream.getBytes(this.maybeLength));\n  }\n\n  ensureBuffer(requested) {}\n\n  readBlock() {\n    if (this.eof) {\n      return;\n    }\n\n    const jbig2Image = new _jbig.Jbig2Image();\n    const chunks = [];\n\n    if (this.params instanceof _primitives.Dict) {\n      const globalsStream = this.params.get(\"JBIG2Globals\");\n\n      if (globalsStream instanceof _base_stream.BaseStream) {\n        const globals = globalsStream.getBytes();\n        chunks.push({\n          data: globals,\n          start: 0,\n          end: globals.length\n        });\n      }\n    }\n\n    chunks.push({\n      data: this.bytes,\n      start: 0,\n      end: this.bytes.length\n    });\n    const data = jbig2Image.parseChunks(chunks);\n    const dataLength = data.length;\n\n    for (let i = 0; i < dataLength; i++) {\n      data[i] ^= 0xff;\n    }\n\n    this.buffer = data;\n    this.bufferLength = dataLength;\n    this.eof = true;\n  }\n\n}\n\nexports.Jbig2Stream = Jbig2Stream;\n\n/***/ }),\n/* 35 */\n/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {\n\n\n\nObject.defineProperty(exports, \"__esModule\", ({\n  value: true\n}));\nexports.Jbig2Image = void 0;\n\nvar _util = __w_pdfjs_require__(2);\n\nvar _core_utils = __w_pdfjs_require__(8);\n\nvar _arithmetic_decoder = __w_pdfjs_require__(36);\n\nvar _ccitt = __w_pdfjs_require__(32);\n\nclass Jbig2Error extends _util.BaseException {\n  constructor(msg) {\n    super(`JBIG2 error: ${msg}`, \"Jbig2Error\");\n  }\n\n}\n\nclass ContextCache {\n  getContexts(id) {\n    if (id in this) {\n      return this[id];\n    }\n\n    return this[id] = new Int8Array(1 << 16);\n  }\n\n}\n\nclass DecodingContext {\n  constructor(data, start, end) {\n    this.data = data;\n    this.start = start;\n    this.end = end;\n  }\n\n  get decoder() {\n    const decoder = new _arithmetic_decoder.ArithmeticDecoder(this.data, this.start, this.end);\n    return (0, _util.shadow)(this, \"decoder\", decoder);\n  }\n\n  get contextCache() {\n    const cache = new ContextCache();\n    return (0, _util.shadow)(this, \"contextCache\", cache);\n  }\n\n}\n\nfunction decodeInteger(contextCache, procedure, decoder) {\n  const contexts = contextCache.getContexts(procedure);\n  let prev = 1;\n\n  function readBits(length) {\n    let v = 0;\n\n    for (let i = 0; i < length; i++) {\n      const bit = decoder.readBit(contexts, prev);\n      prev = prev < 256 ? prev << 1 | bit : (prev << 1 | bit) & 511 | 256;\n      v = v << 1 | bit;\n    }\n\n    return v >>> 0;\n  }\n\n  const sign = readBits(1);\n  const value = readBits(1) ? readBits(1) ? readBits(1) ? readBits(1) ? readBits(1) ? readBits(32) + 4436 : readBits(12) + 340 : readBits(8) + 84 : readBits(6) + 20 : readBits(4) + 4 : readBits(2);\n\n  if (sign === 0) {\n    return value;\n  } else if (value > 0) {\n    return -value;\n  }\n\n  return null;\n}\n\nfunction decodeIAID(contextCache, decoder, codeLength) {\n  const contexts = contextCache.getContexts(\"IAID\");\n  let prev = 1;\n\n  for (let i = 0; i < codeLength; i++) {\n    const bit = decoder.readBit(contexts, prev);\n    prev = prev << 1 | bit;\n  }\n\n  if (codeLength < 31) {\n    return prev & (1 << codeLength) - 1;\n  }\n\n  return prev & 0x7fffffff;\n}\n\nconst SegmentTypes = [\"SymbolDictionary\", null, null, null, \"IntermediateTextRegion\", null, \"ImmediateTextRegion\", \"ImmediateLosslessTextRegion\", null, null, null, null, null, null, null, null, \"PatternDictionary\", null, null, null, \"IntermediateHalftoneRegion\", null, \"ImmediateHalftoneRegion\", \"ImmediateLosslessHalftoneRegion\", null, null, null, null, null, null, null, null, null, null, null, null, \"IntermediateGenericRegion\", null, \"ImmediateGenericRegion\", \"ImmediateLosslessGenericRegion\", \"IntermediateGenericRefinementRegion\", null, \"ImmediateGenericRefinementRegion\", \"ImmediateLosslessGenericRefinementRegion\", null, null, null, null, \"PageInformation\", \"EndOfPage\", \"EndOfStripe\", \"EndOfFile\", \"Profiles\", \"Tables\", null, null, null, null, null, null, null, null, \"Extension\"];\nconst CodingTemplates = [[{\n  x: -1,\n  y: -2\n}, {\n  x: 0,\n  y: -2\n}, {\n  x: 1,\n  y: -2\n}, {\n  x: -2,\n  y: -1\n}, {\n  x: -1,\n  y: -1\n}, {\n  x: 0,\n  y: -1\n}, {\n  x: 1,\n  y: -1\n}, {\n  x: 2,\n  y: -1\n}, {\n  x: -4,\n  y: 0\n}, {\n  x: -3,\n  y: 0\n}, {\n  x: -2,\n  y: 0\n}, {\n  x: -1,\n  y: 0\n}], [{\n  x: -1,\n  y: -2\n}, {\n  x: 0,\n  y: -2\n}, {\n  x: 1,\n  y: -2\n}, {\n  x: 2,\n  y: -2\n}, {\n  x: -2,\n  y: -1\n}, {\n  x: -1,\n  y: -1\n}, {\n  x: 0,\n  y: -1\n}, {\n  x: 1,\n  y: -1\n}, {\n  x: 2,\n  y: -1\n}, {\n  x: -3,\n  y: 0\n}, {\n  x: -2,\n  y: 0\n}, {\n  x: -1,\n  y: 0\n}], [{\n  x: -1,\n  y: -2\n}, {\n  x: 0,\n  y: -2\n}, {\n  x: 1,\n  y: -2\n}, {\n  x: -2,\n  y: -1\n}, {\n  x: -1,\n  y: -1\n}, {\n  x: 0,\n  y: -1\n}, {\n  x: 1,\n  y: -1\n}, {\n  x: -2,\n  y: 0\n}, {\n  x: -1,\n  y: 0\n}], [{\n  x: -3,\n  y: -1\n}, {\n  x: -2,\n  y: -1\n}, {\n  x: -1,\n  y: -1\n}, {\n  x: 0,\n  y: -1\n}, {\n  x: 1,\n  y: -1\n}, {\n  x: -4,\n  y: 0\n}, {\n  x: -3,\n  y: 0\n}, {\n  x: -2,\n  y: 0\n}, {\n  x: -1,\n  y: 0\n}]];\nconst RefinementTemplates = [{\n  coding: [{\n    x: 0,\n    y: -1\n  }, {\n    x: 1,\n    y: -1\n  }, {\n    x: -1,\n    y: 0\n  }],\n  reference: [{\n    x: 0,\n    y: -1\n  }, {\n    x: 1,\n    y: -1\n  }, {\n    x: -1,\n    y: 0\n  }, {\n    x: 0,\n    y: 0\n  }, {\n    x: 1,\n    y: 0\n  }, {\n    x: -1,\n    y: 1\n  }, {\n    x: 0,\n    y: 1\n  }, {\n    x: 1,\n    y: 1\n  }]\n}, {\n  coding: [{\n    x: -1,\n    y: -1\n  }, {\n    x: 0,\n    y: -1\n  }, {\n    x: 1,\n    y: -1\n  }, {\n    x: -1,\n    y: 0\n  }],\n  reference: [{\n    x: 0,\n    y: -1\n  }, {\n    x: -1,\n    y: 0\n  }, {\n    x: 0,\n    y: 0\n  }, {\n    x: 1,\n    y: 0\n  }, {\n    x: 0,\n    y: 1\n  }, {\n    x: 1,\n    y: 1\n  }]\n}];\nconst ReusedContexts = [0x9b25, 0x0795, 0x00e5, 0x0195];\nconst RefinementReusedContexts = [0x0020, 0x0008];\n\nfunction decodeBitmapTemplate0(width, height, decodingContext) {\n  const decoder = decodingContext.decoder;\n  const contexts = decodingContext.contextCache.getContexts(\"GB\");\n  const bitmap = [];\n  let contextLabel, i, j, pixel, row, row1, row2;\n  const OLD_PIXEL_MASK = 0x7bf7;\n\n  for (i = 0; i < height; i++) {\n    row = bitmap[i] = new Uint8Array(width);\n    row1 = i < 1 ? row : bitmap[i - 1];\n    row2 = i < 2 ? row : bitmap[i - 2];\n    contextLabel = row2[0] << 13 | row2[1] << 12 | row2[2] << 11 | row1[0] << 7 | row1[1] << 6 | row1[2] << 5 | row1[3] << 4;\n\n    for (j = 0; j < width; j++) {\n      row[j] = pixel = decoder.readBit(contexts, contextLabel);\n      contextLabel = (contextLabel & OLD_PIXEL_MASK) << 1 | (j + 3 < width ? row2[j + 3] << 11 : 0) | (j + 4 < width ? row1[j + 4] << 4 : 0) | pixel;\n    }\n  }\n\n  return bitmap;\n}\n\nfunction decodeBitmap(mmr, width, height, templateIndex, prediction, skip, at, decodingContext) {\n  if (mmr) {\n    const input = new Reader(decodingContext.data, decodingContext.start, decodingContext.end);\n    return decodeMMRBitmap(input, width, height, false);\n  }\n\n  if (templateIndex === 0 && !skip && !prediction && at.length === 4 && at[0].x === 3 && at[0].y === -1 && at[1].x === -3 && at[1].y === -1 && at[2].x === 2 && at[2].y === -2 && at[3].x === -2 && at[3].y === -2) {\n    return decodeBitmapTemplate0(width, height, decodingContext);\n  }\n\n  const useskip = !!skip;\n  const template = CodingTemplates[templateIndex].concat(at);\n  template.sort(function (a, b) {\n    return a.y - b.y || a.x - b.x;\n  });\n  const templateLength = template.length;\n  const templateX = new Int8Array(templateLength);\n  const templateY = new Int8Array(templateLength);\n  const changingTemplateEntries = [];\n  let reuseMask = 0,\n      minX = 0,\n      maxX = 0,\n      minY = 0;\n  let c, k;\n\n  for (k = 0; k < templateLength; k++) {\n    templateX[k] = template[k].x;\n    templateY[k] = template[k].y;\n    minX = Math.min(minX, template[k].x);\n    maxX = Math.max(maxX, template[k].x);\n    minY = Math.min(minY, template[k].y);\n\n    if (k < templateLength - 1 && template[k].y === template[k + 1].y && template[k].x === template[k + 1].x - 1) {\n      reuseMask |= 1 << templateLength - 1 - k;\n    } else {\n      changingTemplateEntries.push(k);\n    }\n  }\n\n  const changingEntriesLength = changingTemplateEntries.length;\n  const changingTemplateX = new Int8Array(changingEntriesLength);\n  const changingTemplateY = new Int8Array(changingEntriesLength);\n  const changingTemplateBit = new Uint16Array(changingEntriesLength);\n\n  for (c = 0; c < changingEntriesLength; c++) {\n    k = changingTemplateEntries[c];\n    changingTemplateX[c] = template[k].x;\n    changingTemplateY[c] = template[k].y;\n    changingTemplateBit[c] = 1 << templateLength - 1 - k;\n  }\n\n  const sbb_left = -minX;\n  const sbb_top = -minY;\n  const sbb_right = width - maxX;\n  const pseudoPixelContext = ReusedContexts[templateIndex];\n  let row = new Uint8Array(width);\n  const bitmap = [];\n  const decoder = decodingContext.decoder;\n  const contexts = decodingContext.contextCache.getContexts(\"GB\");\n  let ltp = 0,\n      j,\n      i0,\n      j0,\n      contextLabel = 0,\n      bit,\n      shift;\n\n  for (let i = 0; i < height; i++) {\n    if (prediction) {\n      const sltp = decoder.readBit(contexts, pseudoPixelContext);\n      ltp ^= sltp;\n\n      if (ltp) {\n        bitmap.push(row);\n        continue;\n      }\n    }\n\n    row = new Uint8Array(row);\n    bitmap.push(row);\n\n    for (j = 0; j < width; j++) {\n      if (useskip && skip[i][j]) {\n        row[j] = 0;\n        continue;\n      }\n\n      if (j >= sbb_left && j < sbb_right && i >= sbb_top) {\n        contextLabel = contextLabel << 1 & reuseMask;\n\n        for (k = 0; k < changingEntriesLength; k++) {\n          i0 = i + changingTemplateY[k];\n          j0 = j + changingTemplateX[k];\n          bit = bitmap[i0][j0];\n\n          if (bit) {\n            bit = changingTemplateBit[k];\n            contextLabel |= bit;\n          }\n        }\n      } else {\n        contextLabel = 0;\n        shift = templateLength - 1;\n\n        for (k = 0; k < templateLength; k++, shift--) {\n          j0 = j + templateX[k];\n\n          if (j0 >= 0 && j0 < width) {\n            i0 = i + templateY[k];\n\n            if (i0 >= 0) {\n              bit = bitmap[i0][j0];\n\n              if (bit) {\n                contextLabel |= bit << shift;\n              }\n            }\n          }\n        }\n      }\n\n      const pixel = decoder.readBit(contexts, contextLabel);\n      row[j] = pixel;\n    }\n  }\n\n  return bitmap;\n}\n\nfunction decodeRefinement(width, height, templateIndex, referenceBitmap, offsetX, offsetY, prediction, at, decodingContext) {\n  let codingTemplate = RefinementTemplates[templateIndex].coding;\n\n  if (templateIndex === 0) {\n    codingTemplate = codingTemplate.concat([at[0]]);\n  }\n\n  const codingTemplateLength = codingTemplate.length;\n  const codingTemplateX = new Int32Array(codingTemplateLength);\n  const codingTemplateY = new Int32Array(codingTemplateLength);\n  let k;\n\n  for (k = 0; k < codingTemplateLength; k++) {\n    codingTemplateX[k] = codingTemplate[k].x;\n    codingTemplateY[k] = codingTemplate[k].y;\n  }\n\n  let referenceTemplate = RefinementTemplates[templateIndex].reference;\n\n  if (templateIndex === 0) {\n    referenceTemplate = referenceTemplate.concat([at[1]]);\n  }\n\n  const referenceTemplateLength = referenceTemplate.length;\n  const referenceTemplateX = new Int32Array(referenceTemplateLength);\n  const referenceTemplateY = new Int32Array(referenceTemplateLength);\n\n  for (k = 0; k < referenceTemplateLength; k++) {\n    referenceTemplateX[k] = referenceTemplate[k].x;\n    referenceTemplateY[k] = referenceTemplate[k].y;\n  }\n\n  const referenceWidth = referenceBitmap[0].length;\n  const referenceHeight = referenceBitmap.length;\n  const pseudoPixelContext = RefinementReusedContexts[templateIndex];\n  const bitmap = [];\n  const decoder = decodingContext.decoder;\n  const contexts = decodingContext.contextCache.getContexts(\"GR\");\n  let ltp = 0;\n\n  for (let i = 0; i < height; i++) {\n    if (prediction) {\n      const sltp = decoder.readBit(contexts, pseudoPixelContext);\n      ltp ^= sltp;\n\n      if (ltp) {\n        throw new Jbig2Error(\"prediction is not supported\");\n      }\n    }\n\n    const row = new Uint8Array(width);\n    bitmap.push(row);\n\n    for (let j = 0; j < width; j++) {\n      let i0, j0;\n      let contextLabel = 0;\n\n      for (k = 0; k < codingTemplateLength; k++) {\n        i0 = i + codingTemplateY[k];\n        j0 = j + codingTemplateX[k];\n\n        if (i0 < 0 || j0 < 0 || j0 >= width) {\n          contextLabel <<= 1;\n        } else {\n          contextLabel = contextLabel << 1 | bitmap[i0][j0];\n        }\n      }\n\n      for (k = 0; k < referenceTemplateLength; k++) {\n        i0 = i + referenceTemplateY[k] - offsetY;\n        j0 = j + referenceTemplateX[k] - offsetX;\n\n        if (i0 < 0 || i0 >= referenceHeight || j0 < 0 || j0 >= referenceWidth) {\n          contextLabel <<= 1;\n        } else {\n          contextLabel = contextLabel << 1 | referenceBitmap[i0][j0];\n        }\n      }\n\n      const pixel = decoder.readBit(contexts, contextLabel);\n      row[j] = pixel;\n    }\n  }\n\n  return bitmap;\n}\n\nfunction decodeSymbolDictionary(huffman, refinement, symbols, numberOfNewSymbols, numberOfExportedSymbols, huffmanTables, templateIndex, at, refinementTemplateIndex, refinementAt, decodingContext, huffmanInput) {\n  if (huffman && refinement) {\n    throw new Jbig2Error(\"symbol refinement with Huffman is not supported\");\n  }\n\n  const newSymbols = [];\n  let currentHeight = 0;\n  let symbolCodeLength = (0, _core_utils.log2)(symbols.length + numberOfNewSymbols);\n  const decoder = decodingContext.decoder;\n  const contextCache = decodingContext.contextCache;\n  let tableB1, symbolWidths;\n\n  if (huffman) {\n    tableB1 = getStandardTable(1);\n    symbolWidths = [];\n    symbolCodeLength = Math.max(symbolCodeLength, 1);\n  }\n\n  while (newSymbols.length < numberOfNewSymbols) {\n    const deltaHeight = huffman ? huffmanTables.tableDeltaHeight.decode(huffmanInput) : decodeInteger(contextCache, \"IADH\", decoder);\n    currentHeight += deltaHeight;\n    let currentWidth = 0,\n        totalWidth = 0;\n    const firstSymbol = huffman ? symbolWidths.length : 0;\n\n    while (true) {\n      const deltaWidth = huffman ? huffmanTables.tableDeltaWidth.decode(huffmanInput) : decodeInteger(contextCache, \"IADW\", decoder);\n\n      if (deltaWidth === null) {\n        break;\n      }\n\n      currentWidth += deltaWidth;\n      totalWidth += currentWidth;\n      let bitmap;\n\n      if (refinement) {\n        const numberOfInstances = decodeInteger(contextCache, \"IAAI\", decoder);\n\n        if (numberOfInstances > 1) {\n          bitmap = decodeTextRegion(huffman, refinement, currentWidth, currentHeight, 0, numberOfInstances, 1, symbols.concat(newSymbols), symbolCodeLength, 0, 0, 1, 0, huffmanTables, refinementTemplateIndex, refinementAt, decodingContext, 0, huffmanInput);\n        } else {\n          const symbolId = decodeIAID(contextCache, decoder, symbolCodeLength);\n          const rdx = decodeInteger(contextCache, \"IARDX\", decoder);\n          const rdy = decodeInteger(contextCache, \"IARDY\", decoder);\n          const symbol = symbolId < symbols.length ? symbols[symbolId] : newSymbols[symbolId - symbols.length];\n          bitmap = decodeRefinement(currentWidth, currentHeight, refinementTemplateIndex, symbol, rdx, rdy, false, refinementAt, decodingContext);\n        }\n\n        newSymbols.push(bitmap);\n      } else if (huffman) {\n        symbolWidths.push(currentWidth);\n      } else {\n        bitmap = decodeBitmap(false, currentWidth, currentHeight, templateIndex, false, null, at, decodingContext);\n        newSymbols.push(bitmap);\n      }\n    }\n\n    if (huffman && !refinement) {\n      const bitmapSize = huffmanTables.tableBitmapSize.decode(huffmanInput);\n      huffmanInput.byteAlign();\n      let collectiveBitmap;\n\n      if (bitmapSize === 0) {\n        collectiveBitmap = readUncompressedBitmap(huffmanInput, totalWidth, currentHeight);\n      } else {\n        const originalEnd = huffmanInput.end;\n        const bitmapEnd = huffmanInput.position + bitmapSize;\n        huffmanInput.end = bitmapEnd;\n        collectiveBitmap = decodeMMRBitmap(huffmanInput, totalWidth, currentHeight, false);\n        huffmanInput.end = originalEnd;\n        huffmanInput.position = bitmapEnd;\n      }\n\n      const numberOfSymbolsDecoded = symbolWidths.length;\n\n      if (firstSymbol === numberOfSymbolsDecoded - 1) {\n        newSymbols.push(collectiveBitmap);\n      } else {\n        let i,\n            y,\n            xMin = 0,\n            xMax,\n            bitmapWidth,\n            symbolBitmap;\n\n        for (i = firstSymbol; i < numberOfSymbolsDecoded; i++) {\n          bitmapWidth = symbolWidths[i];\n          xMax = xMin + bitmapWidth;\n          symbolBitmap = [];\n\n          for (y = 0; y < currentHeight; y++) {\n            symbolBitmap.push(collectiveBitmap[y].subarray(xMin, xMax));\n          }\n\n          newSymbols.push(symbolBitmap);\n          xMin = xMax;\n        }\n      }\n    }\n  }\n\n  const exportedSymbols = [],\n        flags = [];\n  let currentFlag = false,\n      i,\n      ii;\n  const totalSymbolsLength = symbols.length + numberOfNewSymbols;\n\n  while (flags.length < totalSymbolsLength) {\n    let runLength = huffman ? tableB1.decode(huffmanInput) : decodeInteger(contextCache, \"IAEX\", decoder);\n\n    while (runLength--) {\n      flags.push(currentFlag);\n    }\n\n    currentFlag = !currentFlag;\n  }\n\n  for (i = 0, ii = symbols.length; i < ii; i++) {\n    if (flags[i]) {\n      exportedSymbols.push(symbols[i]);\n    }\n  }\n\n  for (let j = 0; j < numberOfNewSymbols; i++, j++) {\n    if (flags[i]) {\n      exportedSymbols.push(newSymbols[j]);\n    }\n  }\n\n  return exportedSymbols;\n}\n\nfunction decodeTextRegion(huffman, refinement, width, height, defaultPixelValue, numberOfSymbolInstances, stripSize, inputSymbols, symbolCodeLength, transposed, dsOffset, referenceCorner, combinationOperator, huffmanTables, refinementTemplateIndex, refinementAt, decodingContext, logStripSize, huffmanInput) {\n  if (huffman && refinement) {\n    throw new Jbig2Error(\"refinement with Huffman is not supported\");\n  }\n\n  const bitmap = [];\n  let i, row;\n\n  for (i = 0; i < height; i++) {\n    row = new Uint8Array(width);\n\n    if (defaultPixelValue) {\n      for (let j = 0; j < width; j++) {\n        row[j] = defaultPixelValue;\n      }\n    }\n\n    bitmap.push(row);\n  }\n\n  const decoder = decodingContext.decoder;\n  const contextCache = decodingContext.contextCache;\n  let stripT = huffman ? -huffmanTables.tableDeltaT.decode(huffmanInput) : -decodeInteger(contextCache, \"IADT\", decoder);\n  let firstS = 0;\n  i = 0;\n\n  while (i < numberOfSymbolInstances) {\n    const deltaT = huffman ? huffmanTables.tableDeltaT.decode(huffmanInput) : decodeInteger(contextCache, \"IADT\", decoder);\n    stripT += deltaT;\n    const deltaFirstS = huffman ? huffmanTables.tableFirstS.decode(huffmanInput) : decodeInteger(contextCache, \"IAFS\", decoder);\n    firstS += deltaFirstS;\n    let currentS = firstS;\n\n    do {\n      let currentT = 0;\n\n      if (stripSize > 1) {\n        currentT = huffman ? huffmanInput.readBits(logStripSize) : decodeInteger(contextCache, \"IAIT\", decoder);\n      }\n\n      const t = stripSize * stripT + currentT;\n      const symbolId = huffman ? huffmanTables.symbolIDTable.decode(huffmanInput) : decodeIAID(contextCache, decoder, symbolCodeLength);\n      const applyRefinement = refinement && (huffman ? huffmanInput.readBit() : decodeInteger(contextCache, \"IARI\", decoder));\n      let symbolBitmap = inputSymbols[symbolId];\n      let symbolWidth = symbolBitmap[0].length;\n      let symbolHeight = symbolBitmap.length;\n\n      if (applyRefinement) {\n        const rdw = decodeInteger(contextCache, \"IARDW\", decoder);\n        const rdh = decodeInteger(contextCache, \"IARDH\", decoder);\n        const rdx = decodeInteger(contextCache, \"IARDX\", decoder);\n        const rdy = decodeInteger(contextCache, \"IARDY\", decoder);\n        symbolWidth += rdw;\n        symbolHeight += rdh;\n        symbolBitmap = decodeRefinement(symbolWidth, symbolHeight, refinementTemplateIndex, symbolBitmap, (rdw >> 1) + rdx, (rdh >> 1) + rdy, false, refinementAt, decodingContext);\n      }\n\n      const offsetT = t - (referenceCorner & 1 ? 0 : symbolHeight - 1);\n      const offsetS = currentS - (referenceCorner & 2 ? symbolWidth - 1 : 0);\n      let s2, t2, symbolRow;\n\n      if (transposed) {\n        for (s2 = 0; s2 < symbolHeight; s2++) {\n          row = bitmap[offsetS + s2];\n\n          if (!row) {\n            continue;\n          }\n\n          symbolRow = symbolBitmap[s2];\n          const maxWidth = Math.min(width - offsetT, symbolWidth);\n\n          switch (combinationOperator) {\n            case 0:\n              for (t2 = 0; t2 < maxWidth; t2++) {\n                row[offsetT + t2] |= symbolRow[t2];\n              }\n\n              break;\n\n            case 2:\n              for (t2 = 0; t2 < maxWidth; t2++) {\n                row[offsetT + t2] ^= symbolRow[t2];\n              }\n\n              break;\n\n            default:\n              throw new Jbig2Error(`operator ${combinationOperator} is not supported`);\n          }\n        }\n\n        currentS += symbolHeight - 1;\n      } else {\n        for (t2 = 0; t2 < symbolHeight; t2++) {\n          row = bitmap[offsetT + t2];\n\n          if (!row) {\n            continue;\n          }\n\n          symbolRow = symbolBitmap[t2];\n\n          switch (combinationOperator) {\n            case 0:\n              for (s2 = 0; s2 < symbolWidth; s2++) {\n                row[offsetS + s2] |= symbolRow[s2];\n              }\n\n              break;\n\n            case 2:\n              for (s2 = 0; s2 < symbolWidth; s2++) {\n                row[offsetS + s2] ^= symbolRow[s2];\n              }\n\n              break;\n\n            default:\n              throw new Jbig2Error(`operator ${combinationOperator} is not supported`);\n          }\n        }\n\n        currentS += symbolWidth - 1;\n      }\n\n      i++;\n      const deltaS = huffman ? huffmanTables.tableDeltaS.decode(huffmanInput) : decodeInteger(contextCache, \"IADS\", decoder);\n\n      if (deltaS === null) {\n        break;\n      }\n\n      currentS += deltaS + dsOffset;\n    } while (true);\n  }\n\n  return bitmap;\n}\n\nfunction decodePatternDictionary(mmr, patternWidth, patternHeight, maxPatternIndex, template, decodingContext) {\n  const at = [];\n\n  if (!mmr) {\n    at.push({\n      x: -patternWidth,\n      y: 0\n    });\n\n    if (template === 0) {\n      at.push({\n        x: -3,\n        y: -1\n      }, {\n        x: 2,\n        y: -2\n      }, {\n        x: -2,\n        y: -2\n      });\n    }\n  }\n\n  const collectiveWidth = (maxPatternIndex + 1) * patternWidth;\n  const collectiveBitmap = decodeBitmap(mmr, collectiveWidth, patternHeight, template, false, null, at, decodingContext);\n  const patterns = [];\n\n  for (let i = 0; i <= maxPatternIndex; i++) {\n    const patternBitmap = [];\n    const xMin = patternWidth * i;\n    const xMax = xMin + patternWidth;\n\n    for (let y = 0; y < patternHeight; y++) {\n      patternBitmap.push(collectiveBitmap[y].subarray(xMin, xMax));\n    }\n\n    patterns.push(patternBitmap);\n  }\n\n  return patterns;\n}\n\nfunction decodeHalftoneRegion(mmr, patterns, template, regionWidth, regionHeight, defaultPixelValue, enableSkip, combinationOperator, gridWidth, gridHeight, gridOffsetX, gridOffsetY, gridVectorX, gridVectorY, decodingContext) {\n  const skip = null;\n\n  if (enableSkip) {\n    throw new Jbig2Error(\"skip is not supported\");\n  }\n\n  if (combinationOperator !== 0) {\n    throw new Jbig2Error(`operator \"${combinationOperator}\" is not supported in halftone region`);\n  }\n\n  const regionBitmap = [];\n  let i, j, row;\n\n  for (i = 0; i < regionHeight; i++) {\n    row = new Uint8Array(regionWidth);\n\n    if (defaultPixelValue) {\n      for (j = 0; j < regionWidth; j++) {\n        row[j] = defaultPixelValue;\n      }\n    }\n\n    regionBitmap.push(row);\n  }\n\n  const numberOfPatterns = patterns.length;\n  const pattern0 = patterns[0];\n  const patternWidth = pattern0[0].length,\n        patternHeight = pattern0.length;\n  const bitsPerValue = (0, _core_utils.log2)(numberOfPatterns);\n  const at = [];\n\n  if (!mmr) {\n    at.push({\n      x: template <= 1 ? 3 : 2,\n      y: -1\n    });\n\n    if (template === 0) {\n      at.push({\n        x: -3,\n        y: -1\n      }, {\n        x: 2,\n        y: -2\n      }, {\n        x: -2,\n        y: -2\n      });\n    }\n  }\n\n  const grayScaleBitPlanes = [];\n  let mmrInput, bitmap;\n\n  if (mmr) {\n    mmrInput = new Reader(decodingContext.data, decodingContext.start, decodingContext.end);\n  }\n\n  for (i = bitsPerValue - 1; i >= 0; i--) {\n    if (mmr) {\n      bitmap = decodeMMRBitmap(mmrInput, gridWidth, gridHeight, true);\n    } else {\n      bitmap = decodeBitmap(false, gridWidth, gridHeight, template, false, skip, at, decodingContext);\n    }\n\n    grayScaleBitPlanes[i] = bitmap;\n  }\n\n  let mg, ng, bit, patternIndex, patternBitmap, x, y, patternRow, regionRow;\n\n  for (mg = 0; mg < gridHeight; mg++) {\n    for (ng = 0; ng < gridWidth; ng++) {\n      bit = 0;\n      patternIndex = 0;\n\n      for (j = bitsPerValue - 1; j >= 0; j--) {\n        bit ^= grayScaleBitPlanes[j][mg][ng];\n        patternIndex |= bit << j;\n      }\n\n      patternBitmap = patterns[patternIndex];\n      x = gridOffsetX + mg * gridVectorY + ng * gridVectorX >> 8;\n      y = gridOffsetY + mg * gridVectorX - ng * gridVectorY >> 8;\n\n      if (x >= 0 && x + patternWidth <= regionWidth && y >= 0 && y + patternHeight <= regionHeight) {\n        for (i = 0; i < patternHeight; i++) {\n          regionRow = regionBitmap[y + i];\n          patternRow = patternBitmap[i];\n\n          for (j = 0; j < patternWidth; j++) {\n            regionRow[x + j] |= patternRow[j];\n          }\n        }\n      } else {\n        let regionX, regionY;\n\n        for (i = 0; i < patternHeight; i++) {\n          regionY = y + i;\n\n          if (regionY < 0 || regionY >= regionHeight) {\n            continue;\n          }\n\n          regionRow = regionBitmap[regionY];\n          patternRow = patternBitmap[i];\n\n          for (j = 0; j < patternWidth; j++) {\n            regionX = x + j;\n\n            if (regionX >= 0 && regionX < regionWidth) {\n              regionRow[regionX] |= patternRow[j];\n            }\n          }\n        }\n      }\n    }\n  }\n\n  return regionBitmap;\n}\n\nfunction readSegmentHeader(data, start) {\n  const segmentHeader = {};\n  segmentHeader.number = (0, _core_utils.readUint32)(data, start);\n  const flags = data[start + 4];\n  const segmentType = flags & 0x3f;\n\n  if (!SegmentTypes[segmentType]) {\n    throw new Jbig2Error(\"invalid segment type: \" + segmentType);\n  }\n\n  segmentHeader.type = segmentType;\n  segmentHeader.typeName = SegmentTypes[segmentType];\n  segmentHeader.deferredNonRetain = !!(flags & 0x80);\n  const pageAssociationFieldSize = !!(flags & 0x40);\n  const referredFlags = data[start + 5];\n  let referredToCount = referredFlags >> 5 & 7;\n  const retainBits = [referredFlags & 31];\n  let position = start + 6;\n\n  if (referredFlags === 7) {\n    referredToCount = (0, _core_utils.readUint32)(data, position - 1) & 0x1fffffff;\n    position += 3;\n    let bytes = referredToCount + 7 >> 3;\n    retainBits[0] = data[position++];\n\n    while (--bytes > 0) {\n      retainBits.push(data[position++]);\n    }\n  } else if (referredFlags === 5 || referredFlags === 6) {\n    throw new Jbig2Error(\"invalid referred-to flags\");\n  }\n\n  segmentHeader.retainBits = retainBits;\n  let referredToSegmentNumberSize = 4;\n\n  if (segmentHeader.number <= 256) {\n    referredToSegmentNumberSize = 1;\n  } else if (segmentHeader.number <= 65536) {\n    referredToSegmentNumberSize = 2;\n  }\n\n  const referredTo = [];\n  let i, ii;\n\n  for (i = 0; i < referredToCount; i++) {\n    let number;\n\n    if (referredToSegmentNumberSize === 1) {\n      number = data[position];\n    } else if (referredToSegmentNumberSize === 2) {\n      number = (0, _core_utils.readUint16)(data, position);\n    } else {\n      number = (0, _core_utils.readUint32)(data, position);\n    }\n\n    referredTo.push(number);\n    position += referredToSegmentNumberSize;\n  }\n\n  segmentHeader.referredTo = referredTo;\n\n  if (!pageAssociationFieldSize) {\n    segmentHeader.pageAssociation = data[position++];\n  } else {\n    segmentHeader.pageAssociation = (0, _core_utils.readUint32)(data, position);\n    position += 4;\n  }\n\n  segmentHeader.length = (0, _core_utils.readUint32)(data, position);\n  position += 4;\n\n  if (segmentHeader.length === 0xffffffff) {\n    if (segmentType === 38) {\n      const genericRegionInfo = readRegionSegmentInformation(data, position);\n      const genericRegionSegmentFlags = data[position + RegionSegmentInformationFieldLength];\n      const genericRegionMmr = !!(genericRegionSegmentFlags & 1);\n      const searchPatternLength = 6;\n      const searchPattern = new Uint8Array(searchPatternLength);\n\n      if (!genericRegionMmr) {\n        searchPattern[0] = 0xff;\n        searchPattern[1] = 0xac;\n      }\n\n      searchPattern[2] = genericRegionInfo.height >>> 24 & 0xff;\n      searchPattern[3] = genericRegionInfo.height >> 16 & 0xff;\n      searchPattern[4] = genericRegionInfo.height >> 8 & 0xff;\n      searchPattern[5] = genericRegionInfo.height & 0xff;\n\n      for (i = position, ii = data.length; i < ii; i++) {\n        let j = 0;\n\n        while (j < searchPatternLength && searchPattern[j] === data[i + j]) {\n          j++;\n        }\n\n        if (j === searchPatternLength) {\n          segmentHeader.length = i + searchPatternLength;\n          break;\n        }\n      }\n\n      if (segmentHeader.length === 0xffffffff) {\n        throw new Jbig2Error(\"segment end was not found\");\n      }\n    } else {\n      throw new Jbig2Error(\"invalid unknown segment length\");\n    }\n  }\n\n  segmentHeader.headerEnd = position;\n  return segmentHeader;\n}\n\nfunction readSegments(header, data, start, end) {\n  const segments = [];\n  let position = start;\n\n  while (position < end) {\n    const segmentHeader = readSegmentHeader(data, position);\n    position = segmentHeader.headerEnd;\n    const segment = {\n      header: segmentHeader,\n      data\n    };\n\n    if (!header.randomAccess) {\n      segment.start = position;\n      position += segmentHeader.length;\n      segment.end = position;\n    }\n\n    segments.push(segment);\n\n    if (segmentHeader.type === 51) {\n      break;\n    }\n  }\n\n  if (header.randomAccess) {\n    for (let i = 0, ii = segments.length; i < ii; i++) {\n      segments[i].start = position;\n      position += segments[i].header.length;\n      segments[i].end = position;\n    }\n  }\n\n  return segments;\n}\n\nfunction readRegionSegmentInformation(data, start) {\n  return {\n    width: (0, _core_utils.readUint32)(data, start),\n    height: (0, _core_utils.readUint32)(data, start + 4),\n    x: (0, _core_utils.readUint32)(data, start + 8),\n    y: (0, _core_utils.readUint32)(data, start + 12),\n    combinationOperator: data[start + 16] & 7\n  };\n}\n\nconst RegionSegmentInformationFieldLength = 17;\n\nfunction processSegment(segment, visitor) {\n  const header = segment.header;\n  const data = segment.data,\n        end = segment.end;\n  let position = segment.start;\n  let args, at, i, atLength;\n\n  switch (header.type) {\n    case 0:\n      const dictionary = {};\n      const dictionaryFlags = (0, _core_utils.readUint16)(data, position);\n      dictionary.huffman = !!(dictionaryFlags & 1);\n      dictionary.refinement = !!(dictionaryFlags & 2);\n      dictionary.huffmanDHSelector = dictionaryFlags >> 2 & 3;\n      dictionary.huffmanDWSelector = dictionaryFlags >> 4 & 3;\n      dictionary.bitmapSizeSelector = dictionaryFlags >> 6 & 1;\n      dictionary.aggregationInstancesSelector = dictionaryFlags >> 7 & 1;\n      dictionary.bitmapCodingContextUsed = !!(dictionaryFlags & 256);\n      dictionary.bitmapCodingContextRetained = !!(dictionaryFlags & 512);\n      dictionary.template = dictionaryFlags >> 10 & 3;\n      dictionary.refinementTemplate = dictionaryFlags >> 12 & 1;\n      position += 2;\n\n      if (!dictionary.huffman) {\n        atLength = dictionary.template === 0 ? 4 : 1;\n        at = [];\n\n        for (i = 0; i < atLength; i++) {\n          at.push({\n            x: (0, _core_utils.readInt8)(data, position),\n            y: (0, _core_utils.readInt8)(data, position + 1)\n          });\n          position += 2;\n        }\n\n        dictionary.at = at;\n      }\n\n      if (dictionary.refinement && !dictionary.refinementTemplate) {\n        at = [];\n\n        for (i = 0; i < 2; i++) {\n          at.push({\n            x: (0, _core_utils.readInt8)(data, position),\n            y: (0, _core_utils.readInt8)(data, position + 1)\n          });\n          position += 2;\n        }\n\n        dictionary.refinementAt = at;\n      }\n\n      dictionary.numberOfExportedSymbols = (0, _core_utils.readUint32)(data, position);\n      position += 4;\n      dictionary.numberOfNewSymbols = (0, _core_utils.readUint32)(data, position);\n      position += 4;\n      args = [dictionary, header.number, header.referredTo, data, position, end];\n      break;\n\n    case 6:\n    case 7:\n      const textRegion = {};\n      textRegion.info = readRegionSegmentInformation(data, position);\n      position += RegionSegmentInformationFieldLength;\n      const textRegionSegmentFlags = (0, _core_utils.readUint16)(data, position);\n      position += 2;\n      textRegion.huffman = !!(textRegionSegmentFlags & 1);\n      textRegion.refinement = !!(textRegionSegmentFlags & 2);\n      textRegion.logStripSize = textRegionSegmentFlags >> 2 & 3;\n      textRegion.stripSize = 1 << textRegion.logStripSize;\n      textRegion.referenceCorner = textRegionSegmentFlags >> 4 & 3;\n      textRegion.transposed = !!(textRegionSegmentFlags & 64);\n      textRegion.combinationOperator = textRegionSegmentFlags >> 7 & 3;\n      textRegion.defaultPixelValue = textRegionSegmentFlags >> 9 & 1;\n      textRegion.dsOffset = textRegionSegmentFlags << 17 >> 27;\n      textRegion.refinementTemplate = textRegionSegmentFlags >> 15 & 1;\n\n      if (textRegion.huffman) {\n        const textRegionHuffmanFlags = (0, _core_utils.readUint16)(data, position);\n        position += 2;\n        textRegion.huffmanFS = textRegionHuffmanFlags & 3;\n        textRegion.huffmanDS = textRegionHuffmanFlags >> 2 & 3;\n        textRegion.huffmanDT = textRegionHuffmanFlags >> 4 & 3;\n        textRegion.huffmanRefinementDW = textRegionHuffmanFlags >> 6 & 3;\n        textRegion.huffmanRefinementDH = textRegionHuffmanFlags >> 8 & 3;\n        textRegion.huffmanRefinementDX = textRegionHuffmanFlags >> 10 & 3;\n        textRegion.huffmanRefinementDY = textRegionHuffmanFlags >> 12 & 3;\n        textRegion.huffmanRefinementSizeSelector = !!(textRegionHuffmanFlags & 0x4000);\n      }\n\n      if (textRegion.refinement && !textRegion.refinementTemplate) {\n        at = [];\n\n        for (i = 0; i < 2; i++) {\n          at.push({\n            x: (0, _core_utils.readInt8)(data, position),\n            y: (0, _core_utils.readInt8)(data, position + 1)\n          });\n          position += 2;\n        }\n\n        textRegion.refinementAt = at;\n      }\n\n      textRegion.numberOfSymbolInstances = (0, _core_utils.readUint32)(data, position);\n      position += 4;\n      args = [textRegion, header.referredTo, data, position, end];\n      break;\n\n    case 16:\n      const patternDictionary = {};\n      const patternDictionaryFlags = data[position++];\n      patternDictionary.mmr = !!(patternDictionaryFlags & 1);\n      patternDictionary.template = patternDictionaryFlags >> 1 & 3;\n      patternDictionary.patternWidth = data[position++];\n      patternDictionary.patternHeight = data[position++];\n      patternDictionary.maxPatternIndex = (0, _core_utils.readUint32)(data, position);\n      position += 4;\n      args = [patternDictionary, header.number, data, position, end];\n      break;\n\n    case 22:\n    case 23:\n      const halftoneRegion = {};\n      halftoneRegion.info = readRegionSegmentInformation(data, position);\n      position += RegionSegmentInformationFieldLength;\n      const halftoneRegionFlags = data[position++];\n      halftoneRegion.mmr = !!(halftoneRegionFlags & 1);\n      halftoneRegion.template = halftoneRegionFlags >> 1 & 3;\n      halftoneRegion.enableSkip = !!(halftoneRegionFlags & 8);\n      halftoneRegion.combinationOperator = halftoneRegionFlags >> 4 & 7;\n      halftoneRegion.defaultPixelValue = halftoneRegionFlags >> 7 & 1;\n      halftoneRegion.gridWidth = (0, _core_utils.readUint32)(data, position);\n      position += 4;\n      halftoneRegion.gridHeight = (0, _core_utils.readUint32)(data, position);\n      position += 4;\n      halftoneRegion.gridOffsetX = (0, _core_utils.readUint32)(data, position) & 0xffffffff;\n      position += 4;\n      halftoneRegion.gridOffsetY = (0, _core_utils.readUint32)(data, position) & 0xffffffff;\n      position += 4;\n      halftoneRegion.gridVectorX = (0, _core_utils.readUint16)(data, position);\n      position += 2;\n      halftoneRegion.gridVectorY = (0, _core_utils.readUint16)(data, position);\n      position += 2;\n      args = [halftoneRegion, header.referredTo, data, position, end];\n      break;\n\n    case 38:\n    case 39:\n      const genericRegion = {};\n      genericRegion.info = readRegionSegmentInformation(data, position);\n      position += RegionSegmentInformationFieldLength;\n      const genericRegionSegmentFlags = data[position++];\n      genericRegion.mmr = !!(genericRegionSegmentFlags & 1);\n      genericRegion.template = genericRegionSegmentFlags >> 1 & 3;\n      genericRegion.prediction = !!(genericRegionSegmentFlags & 8);\n\n      if (!genericRegion.mmr) {\n        atLength = genericRegion.template === 0 ? 4 : 1;\n        at = [];\n\n        for (i = 0; i < atLength; i++) {\n          at.push({\n            x: (0, _core_utils.readInt8)(data, position),\n            y: (0, _core_utils.readInt8)(data, position + 1)\n          });\n          position += 2;\n        }\n\n        genericRegion.at = at;\n      }\n\n      args = [genericRegion, data, position, end];\n      break;\n\n    case 48:\n      const pageInfo = {\n        width: (0, _core_utils.readUint32)(data, position),\n        height: (0, _core_utils.readUint32)(data, position + 4),\n        resolutionX: (0, _core_utils.readUint32)(data, position + 8),\n        resolutionY: (0, _core_utils.readUint32)(data, position + 12)\n      };\n\n      if (pageInfo.height === 0xffffffff) {\n        delete pageInfo.height;\n      }\n\n      const pageSegmentFlags = data[position + 16];\n      (0, _core_utils.readUint16)(data, position + 17);\n      pageInfo.lossless = !!(pageSegmentFlags & 1);\n      pageInfo.refinement = !!(pageSegmentFlags & 2);\n      pageInfo.defaultPixelValue = pageSegmentFlags >> 2 & 1;\n      pageInfo.combinationOperator = pageSegmentFlags >> 3 & 3;\n      pageInfo.requiresBuffer = !!(pageSegmentFlags & 32);\n      pageInfo.combinationOperatorOverride = !!(pageSegmentFlags & 64);\n      args = [pageInfo];\n      break;\n\n    case 49:\n      break;\n\n    case 50:\n      break;\n\n    case 51:\n      break;\n\n    case 53:\n      args = [header.number, data, position, end];\n      break;\n\n    case 62:\n      break;\n\n    default:\n      throw new Jbig2Error(`segment type ${header.typeName}(${header.type})` + \" is not implemented\");\n  }\n\n  const callbackName = \"on\" + header.typeName;\n\n  if (callbackName in visitor) {\n    visitor[callbackName].apply(visitor, args);\n  }\n}\n\nfunction processSegments(segments, visitor) {\n  for (let i = 0, ii = segments.length; i < ii; i++) {\n    processSegment(segments[i], visitor);\n  }\n}\n\nfunction parseJbig2Chunks(chunks) {\n  const visitor = new SimpleSegmentVisitor();\n\n  for (let i = 0, ii = chunks.length; i < ii; i++) {\n    const chunk = chunks[i];\n    const segments = readSegments({}, chunk.data, chunk.start, chunk.end);\n    processSegments(segments, visitor);\n  }\n\n  return visitor.buffer;\n}\n\nfunction parseJbig2(data) {\n  const end = data.length;\n  let position = 0;\n\n  if (data[position] !== 0x97 || data[position + 1] !== 0x4a || data[position + 2] !== 0x42 || data[position + 3] !== 0x32 || data[position + 4] !== 0x0d || data[position + 5] !== 0x0a || data[position + 6] !== 0x1a || data[position + 7] !== 0x0a) {\n    throw new Jbig2Error(\"parseJbig2 - invalid header.\");\n  }\n\n  const header = Object.create(null);\n  position += 8;\n  const flags = data[position++];\n  header.randomAccess = !(flags & 1);\n\n  if (!(flags & 2)) {\n    header.numberOfPages = (0, _core_utils.readUint32)(data, position);\n    position += 4;\n  }\n\n  const segments = readSegments(header, data, position, end);\n  const visitor = new SimpleSegmentVisitor();\n  processSegments(segments, visitor);\n  const {\n    width,\n    height\n  } = visitor.currentPageInfo;\n  const bitPacked = visitor.buffer;\n  const imgData = new Uint8ClampedArray(width * height);\n  let q = 0,\n      k = 0;\n\n  for (let i = 0; i < height; i++) {\n    let mask = 0,\n        buffer;\n\n    for (let j = 0; j < width; j++) {\n      if (!mask) {\n        mask = 128;\n        buffer = bitPacked[k++];\n      }\n\n      imgData[q++] = buffer & mask ? 0 : 255;\n      mask >>= 1;\n    }\n  }\n\n  return {\n    imgData,\n    width,\n    height\n  };\n}\n\nclass SimpleSegmentVisitor {\n  onPageInformation(info) {\n    this.currentPageInfo = info;\n    const rowSize = info.width + 7 >> 3;\n    const buffer = new Uint8ClampedArray(rowSize * info.height);\n\n    if (info.defaultPixelValue) {\n      for (let i = 0, ii = buffer.length; i < ii; i++) {\n        buffer[i] = 0xff;\n      }\n    }\n\n    this.buffer = buffer;\n  }\n\n  drawBitmap(regionInfo, bitmap) {\n    const pageInfo = this.currentPageInfo;\n    const width = regionInfo.width,\n          height = regionInfo.height;\n    const rowSize = pageInfo.width + 7 >> 3;\n    const combinationOperator = pageInfo.combinationOperatorOverride ? regionInfo.combinationOperator : pageInfo.combinationOperator;\n    const buffer = this.buffer;\n    const mask0 = 128 >> (regionInfo.x & 7);\n    let offset0 = regionInfo.y * rowSize + (regionInfo.x >> 3);\n    let i, j, mask, offset;\n\n    switch (combinationOperator) {\n      case 0:\n        for (i = 0; i < height; i++) {\n          mask = mask0;\n          offset = offset0;\n\n          for (j = 0; j < width; j++) {\n            if (bitmap[i][j]) {\n              buffer[offset] |= mask;\n            }\n\n            mask >>= 1;\n\n            if (!mask) {\n              mask = 128;\n              offset++;\n            }\n          }\n\n          offset0 += rowSize;\n        }\n\n        break;\n\n      case 2:\n        for (i = 0; i < height; i++) {\n          mask = mask0;\n          offset = offset0;\n\n          for (j = 0; j < width; j++) {\n            if (bitmap[i][j]) {\n              buffer[offset] ^= mask;\n            }\n\n            mask >>= 1;\n\n            if (!mask) {\n              mask = 128;\n              offset++;\n            }\n          }\n\n          offset0 += rowSize;\n        }\n\n        break;\n\n      default:\n        throw new Jbig2Error(`operator ${combinationOperator} is not supported`);\n    }\n  }\n\n  onImmediateGenericRegion(region, data, start, end) {\n    const regionInfo = region.info;\n    const decodingContext = new DecodingContext(data, start, end);\n    const bitmap = decodeBitmap(region.mmr, regionInfo.width, regionInfo.height, region.template, region.prediction, null, region.at, decodingContext);\n    this.drawBitmap(regionInfo, bitmap);\n  }\n\n  onImmediateLosslessGenericRegion() {\n    this.onImmediateGenericRegion.apply(this, arguments);\n  }\n\n  onSymbolDictionary(dictionary, currentSegment, referredSegments, data, start, end) {\n    let huffmanTables, huffmanInput;\n\n    if (dictionary.huffman) {\n      huffmanTables = getSymbolDictionaryHuffmanTables(dictionary, referredSegments, this.customTables);\n      huffmanInput = new Reader(data, start, end);\n    }\n\n    let symbols = this.symbols;\n\n    if (!symbols) {\n      this.symbols = symbols = {};\n    }\n\n    let inputSymbols = [];\n\n    for (let i = 0, ii = referredSegments.length; i < ii; i++) {\n      const referredSymbols = symbols[referredSegments[i]];\n\n      if (referredSymbols) {\n        inputSymbols = inputSymbols.concat(referredSymbols);\n      }\n    }\n\n    const decodingContext = new DecodingContext(data, start, end);\n    symbols[currentSegment] = decodeSymbolDictionary(dictionary.huffman, dictionary.refinement, inputSymbols, dictionary.numberOfNewSymbols, dictionary.numberOfExportedSymbols, huffmanTables, dictionary.template, dictionary.at, dictionary.refinementTemplate, dictionary.refinementAt, decodingContext, huffmanInput);\n  }\n\n  onImmediateTextRegion(region, referredSegments, data, start, end) {\n    const regionInfo = region.info;\n    let huffmanTables, huffmanInput;\n    const symbols = this.symbols;\n    let inputSymbols = [];\n\n    for (let i = 0, ii = referredSegments.length; i < ii; i++) {\n      const referredSymbols = symbols[referredSegments[i]];\n\n      if (referredSymbols) {\n        inputSymbols = inputSymbols.concat(referredSymbols);\n      }\n    }\n\n    const symbolCodeLength = (0, _core_utils.log2)(inputSymbols.length);\n\n    if (region.huffman) {\n      huffmanInput = new Reader(data, start, end);\n      huffmanTables = getTextRegionHuffmanTables(region, referredSegments, this.customTables, inputSymbols.length, huffmanInput);\n    }\n\n    const decodingContext = new DecodingContext(data, start, end);\n    const bitmap = decodeTextRegion(region.huffman, region.refinement, regionInfo.width, regionInfo.height, region.defaultPixelValue, region.numberOfSymbolInstances, region.stripSize, inputSymbols, symbolCodeLength, region.transposed, region.dsOffset, region.referenceCorner, region.combinationOperator, huffmanTables, region.refinementTemplate, region.refinementAt, decodingContext, region.logStripSize, huffmanInput);\n    this.drawBitmap(regionInfo, bitmap);\n  }\n\n  onImmediateLosslessTextRegion() {\n    this.onImmediateTextRegion.apply(this, arguments);\n  }\n\n  onPatternDictionary(dictionary, currentSegment, data, start, end) {\n    let patterns = this.patterns;\n\n    if (!patterns) {\n      this.patterns = patterns = {};\n    }\n\n    const decodingContext = new DecodingContext(data, start, end);\n    patterns[currentSegment] = decodePatternDictionary(dictionary.mmr, dictionary.patternWidth, dictionary.patternHeight, dictionary.maxPatternIndex, dictionary.template, decodingContext);\n  }\n\n  onImmediateHalftoneRegion(region, referredSegments, data, start, end) {\n    const patterns = this.patterns[referredSegments[0]];\n    const regionInfo = region.info;\n    const decodingContext = new DecodingContext(data, start, end);\n    const bitmap = decodeHalftoneRegion(region.mmr, patterns, region.template, regionInfo.width, regionInfo.height, region.defaultPixelValue, region.enableSkip, region.combinationOperator, region.gridWidth, region.gridHeight, region.gridOffsetX, region.gridOffsetY, region.gridVectorX, region.gridVectorY, decodingContext);\n    this.drawBitmap(regionInfo, bitmap);\n  }\n\n  onImmediateLosslessHalftoneRegion() {\n    this.onImmediateHalftoneRegion.apply(this, arguments);\n  }\n\n  onTables(currentSegment, data, start, end) {\n    let customTables = this.customTables;\n\n    if (!customTables) {\n      this.customTables = customTables = {};\n    }\n\n    customTables[currentSegment] = decodeTablesSegment(data, start, end);\n  }\n\n}\n\nclass HuffmanLine {\n  constructor(lineData) {\n    if (lineData.length === 2) {\n      this.isOOB = true;\n      this.rangeLow = 0;\n      this.prefixLength = lineData[0];\n      this.rangeLength = 0;\n      this.prefixCode = lineData[1];\n      this.isLowerRange = false;\n    } else {\n      this.isOOB = false;\n      this.rangeLow = lineData[0];\n      this.prefixLength = lineData[1];\n      this.rangeLength = lineData[2];\n      this.prefixCode = lineData[3];\n      this.isLowerRange = lineData[4] === \"lower\";\n    }\n  }\n\n}\n\nclass HuffmanTreeNode {\n  constructor(line) {\n    this.children = [];\n\n    if (line) {\n      this.isLeaf = true;\n      this.rangeLength = line.rangeLength;\n      this.rangeLow = line.rangeLow;\n      this.isLowerRange = line.isLowerRange;\n      this.isOOB = line.isOOB;\n    } else {\n      this.isLeaf = false;\n    }\n  }\n\n  buildTree(line, shift) {\n    const bit = line.prefixCode >> shift & 1;\n\n    if (shift <= 0) {\n      this.children[bit] = new HuffmanTreeNode(line);\n    } else {\n      let node = this.children[bit];\n\n      if (!node) {\n        this.children[bit] = node = new HuffmanTreeNode(null);\n      }\n\n      node.buildTree(line, shift - 1);\n    }\n  }\n\n  decodeNode(reader) {\n    if (this.isLeaf) {\n      if (this.isOOB) {\n        return null;\n      }\n\n      const htOffset = reader.readBits(this.rangeLength);\n      return this.rangeLow + (this.isLowerRange ? -htOffset : htOffset);\n    }\n\n    const node = this.children[reader.readBit()];\n\n    if (!node) {\n      throw new Jbig2Error(\"invalid Huffman data\");\n    }\n\n    return node.decodeNode(reader);\n  }\n\n}\n\nclass HuffmanTable {\n  constructor(lines, prefixCodesDone) {\n    if (!prefixCodesDone) {\n      this.assignPrefixCodes(lines);\n    }\n\n    this.rootNode = new HuffmanTreeNode(null);\n\n    for (let i = 0, ii = lines.length; i < ii; i++) {\n      const line = lines[i];\n\n      if (line.prefixLength > 0) {\n        this.rootNode.buildTree(line, line.prefixLength - 1);\n      }\n    }\n  }\n\n  decode(reader) {\n    return this.rootNode.decodeNode(reader);\n  }\n\n  assignPrefixCodes(lines) {\n    const linesLength = lines.length;\n    let prefixLengthMax = 0;\n\n    for (let i = 0; i < linesLength; i++) {\n      prefixLengthMax = Math.max(prefixLengthMax, lines[i].prefixLength);\n    }\n\n    const histogram = new Uint32Array(prefixLengthMax + 1);\n\n    for (let i = 0; i < linesLength; i++) {\n      histogram[lines[i].prefixLength]++;\n    }\n\n    let currentLength = 1,\n        firstCode = 0,\n        currentCode,\n        currentTemp,\n        line;\n    histogram[0] = 0;\n\n    while (currentLength <= prefixLengthMax) {\n      firstCode = firstCode + histogram[currentLength - 1] << 1;\n      currentCode = firstCode;\n      currentTemp = 0;\n\n      while (currentTemp < linesLength) {\n        line = lines[currentTemp];\n\n        if (line.prefixLength === currentLength) {\n          line.prefixCode = currentCode;\n          currentCode++;\n        }\n\n        currentTemp++;\n      }\n\n      currentLength++;\n    }\n  }\n\n}\n\nfunction decodeTablesSegment(data, start, end) {\n  const flags = data[start];\n  const lowestValue = (0, _core_utils.readUint32)(data, start + 1) & 0xffffffff;\n  const highestValue = (0, _core_utils.readUint32)(data, start + 5) & 0xffffffff;\n  const reader = new Reader(data, start + 9, end);\n  const prefixSizeBits = (flags >> 1 & 7) + 1;\n  const rangeSizeBits = (flags >> 4 & 7) + 1;\n  const lines = [];\n  let prefixLength,\n      rangeLength,\n      currentRangeLow = lowestValue;\n\n  do {\n    prefixLength = reader.readBits(prefixSizeBits);\n    rangeLength = reader.readBits(rangeSizeBits);\n    lines.push(new HuffmanLine([currentRangeLow, prefixLength, rangeLength, 0]));\n    currentRangeLow += 1 << rangeLength;\n  } while (currentRangeLow < highestValue);\n\n  prefixLength = reader.readBits(prefixSizeBits);\n  lines.push(new HuffmanLine([lowestValue - 1, prefixLength, 32, 0, \"lower\"]));\n  prefixLength = reader.readBits(prefixSizeBits);\n  lines.push(new HuffmanLine([highestValue, prefixLength, 32, 0]));\n\n  if (flags & 1) {\n    prefixLength = reader.readBits(prefixSizeBits);\n    lines.push(new HuffmanLine([prefixLength, 0]));\n  }\n\n  return new HuffmanTable(lines, false);\n}\n\nconst standardTablesCache = {};\n\nfunction getStandardTable(number) {\n  let table = standardTablesCache[number];\n\n  if (table) {\n    return table;\n  }\n\n  let lines;\n\n  switch (number) {\n    case 1:\n      lines = [[0, 1, 4, 0x0], [16, 2, 8, 0x2], [272, 3, 16, 0x6], [65808, 3, 32, 0x7]];\n      break;\n\n    case 2:\n      lines = [[0, 1, 0, 0x0], [1, 2, 0, 0x2], [2, 3, 0, 0x6], [3, 4, 3, 0xe], [11, 5, 6, 0x1e], [75, 6, 32, 0x3e], [6, 0x3f]];\n      break;\n\n    case 3:\n      lines = [[-256, 8, 8, 0xfe], [0, 1, 0, 0x0], [1, 2, 0, 0x2], [2, 3, 0, 0x6], [3, 4, 3, 0xe], [11, 5, 6, 0x1e], [-257, 8, 32, 0xff, \"lower\"], [75, 7, 32, 0x7e], [6, 0x3e]];\n      break;\n\n    case 4:\n      lines = [[1, 1, 0, 0x0], [2, 2, 0, 0x2], [3, 3, 0, 0x6], [4, 4, 3, 0xe], [12, 5, 6, 0x1e], [76, 5, 32, 0x1f]];\n      break;\n\n    case 5:\n      lines = [[-255, 7, 8, 0x7e], [1, 1, 0, 0x0], [2, 2, 0, 0x2], [3, 3, 0, 0x6], [4, 4, 3, 0xe], [12, 5, 6, 0x1e], [-256, 7, 32, 0x7f, \"lower\"], [76, 6, 32, 0x3e]];\n      break;\n\n    case 6:\n      lines = [[-2048, 5, 10, 0x1c], [-1024, 4, 9, 0x8], [-512, 4, 8, 0x9], [-256, 4, 7, 0xa], [-128, 5, 6, 0x1d], [-64, 5, 5, 0x1e], [-32, 4, 5, 0xb], [0, 2, 7, 0x0], [128, 3, 7, 0x2], [256, 3, 8, 0x3], [512, 4, 9, 0xc], [1024, 4, 10, 0xd], [-2049, 6, 32, 0x3e, \"lower\"], [2048, 6, 32, 0x3f]];\n      break;\n\n    case 7:\n      lines = [[-1024, 4, 9, 0x8], [-512, 3, 8, 0x0], [-256, 4, 7, 0x9], [-128, 5, 6, 0x1a], [-64, 5, 5, 0x1b], [-32, 4, 5, 0xa], [0, 4, 5, 0xb], [32, 5, 5, 0x1c], [64, 5, 6, 0x1d], [128, 4, 7, 0xc], [256, 3, 8, 0x1], [512, 3, 9, 0x2], [1024, 3, 10, 0x3], [-1025, 5, 32, 0x1e, \"lower\"], [2048, 5, 32, 0x1f]];\n      break;\n\n    case 8:\n      lines = [[-15, 8, 3, 0xfc], [-7, 9, 1, 0x1fc], [-5, 8, 1, 0xfd], [-3, 9, 0, 0x1fd], [-2, 7, 0, 0x7c], [-1, 4, 0, 0xa], [0, 2, 1, 0x0], [2, 5, 0, 0x1a], [3, 6, 0, 0x3a], [4, 3, 4, 0x4], [20, 6, 1, 0x3b], [22, 4, 4, 0xb], [38, 4, 5, 0xc], [70, 5, 6, 0x1b], [134, 5, 7, 0x1c], [262, 6, 7, 0x3c], [390, 7, 8, 0x7d], [646, 6, 10, 0x3d], [-16, 9, 32, 0x1fe, \"lower\"], [1670, 9, 32, 0x1ff], [2, 0x1]];\n      break;\n\n    case 9:\n      lines = [[-31, 8, 4, 0xfc], [-15, 9, 2, 0x1fc], [-11, 8, 2, 0xfd], [-7, 9, 1, 0x1fd], [-5, 7, 1, 0x7c], [-3, 4, 1, 0xa], [-1, 3, 1, 0x2], [1, 3, 1, 0x3], [3, 5, 1, 0x1a], [5, 6, 1, 0x3a], [7, 3, 5, 0x4], [39, 6, 2, 0x3b], [43, 4, 5, 0xb], [75, 4, 6, 0xc], [139, 5, 7, 0x1b], [267, 5, 8, 0x1c], [523, 6, 8, 0x3c], [779, 7, 9, 0x7d], [1291, 6, 11, 0x3d], [-32, 9, 32, 0x1fe, \"lower\"], [3339, 9, 32, 0x1ff], [2, 0x0]];\n      break;\n\n    case 10:\n      lines = [[-21, 7, 4, 0x7a], [-5, 8, 0, 0xfc], [-4, 7, 0, 0x7b], [-3, 5, 0, 0x18], [-2, 2, 2, 0x0], [2, 5, 0, 0x19], [3, 6, 0, 0x36], [4, 7, 0, 0x7c], [5, 8, 0, 0xfd], [6, 2, 6, 0x1], [70, 5, 5, 0x1a], [102, 6, 5, 0x37], [134, 6, 6, 0x38], [198, 6, 7, 0x39], [326, 6, 8, 0x3a], [582, 6, 9, 0x3b], [1094, 6, 10, 0x3c], [2118, 7, 11, 0x7d], [-22, 8, 32, 0xfe, \"lower\"], [4166, 8, 32, 0xff], [2, 0x2]];\n      break;\n\n    case 11:\n      lines = [[1, 1, 0, 0x0], [2, 2, 1, 0x2], [4, 4, 0, 0xc], [5, 4, 1, 0xd], [7, 5, 1, 0x1c], [9, 5, 2, 0x1d], [13, 6, 2, 0x3c], [17, 7, 2, 0x7a], [21, 7, 3, 0x7b], [29, 7, 4, 0x7c], [45, 7, 5, 0x7d], [77, 7, 6, 0x7e], [141, 7, 32, 0x7f]];\n      break;\n\n    case 12:\n      lines = [[1, 1, 0, 0x0], [2, 2, 0, 0x2], [3, 3, 1, 0x6], [5, 5, 0, 0x1c], [6, 5, 1, 0x1d], [8, 6, 1, 0x3c], [10, 7, 0, 0x7a], [11, 7, 1, 0x7b], [13, 7, 2, 0x7c], [17, 7, 3, 0x7d], [25, 7, 4, 0x7e], [41, 8, 5, 0xfe], [73, 8, 32, 0xff]];\n      break;\n\n    case 13:\n      lines = [[1, 1, 0, 0x0], [2, 3, 0, 0x4], [3, 4, 0, 0xc], [4, 5, 0, 0x1c], [5, 4, 1, 0xd], [7, 3, 3, 0x5], [15, 6, 1, 0x3a], [17, 6, 2, 0x3b], [21, 6, 3, 0x3c], [29, 6, 4, 0x3d], [45, 6, 5, 0x3e], [77, 7, 6, 0x7e], [141, 7, 32, 0x7f]];\n      break;\n\n    case 14:\n      lines = [[-2, 3, 0, 0x4], [-1, 3, 0, 0x5], [0, 1, 0, 0x0], [1, 3, 0, 0x6], [2, 3, 0, 0x7]];\n      break;\n\n    case 15:\n      lines = [[-24, 7, 4, 0x7c], [-8, 6, 2, 0x3c], [-4, 5, 1, 0x1c], [-2, 4, 0, 0xc], [-1, 3, 0, 0x4], [0, 1, 0, 0x0], [1, 3, 0, 0x5], [2, 4, 0, 0xd], [3, 5, 1, 0x1d], [5, 6, 2, 0x3d], [9, 7, 4, 0x7d], [-25, 7, 32, 0x7e, \"lower\"], [25, 7, 32, 0x7f]];\n      break;\n\n    default:\n      throw new Jbig2Error(`standard table B.${number} does not exist`);\n  }\n\n  for (let i = 0, ii = lines.length; i < ii; i++) {\n    lines[i] = new HuffmanLine(lines[i]);\n  }\n\n  table = new HuffmanTable(lines, true);\n  standardTablesCache[number] = table;\n  return table;\n}\n\nclass Reader {\n  constructor(data, start, end) {\n    this.data = data;\n    this.start = start;\n    this.end = end;\n    this.position = start;\n    this.shift = -1;\n    this.currentByte = 0;\n  }\n\n  readBit() {\n    if (this.shift < 0) {\n      if (this.position >= this.end) {\n        throw new Jbig2Error(\"end of data while reading bit\");\n      }\n\n      this.currentByte = this.data[this.position++];\n      this.shift = 7;\n    }\n\n    const bit = this.currentByte >> this.shift & 1;\n    this.shift--;\n    return bit;\n  }\n\n  readBits(numBits) {\n    let result = 0,\n        i;\n\n    for (i = numBits - 1; i >= 0; i--) {\n      result |= this.readBit() << i;\n    }\n\n    return result;\n  }\n\n  byteAlign() {\n    this.shift = -1;\n  }\n\n  next() {\n    if (this.position >= this.end) {\n      return -1;\n    }\n\n    return this.data[this.position++];\n  }\n\n}\n\nfunction getCustomHuffmanTable(index, referredTo, customTables) {\n  let currentIndex = 0;\n\n  for (let i = 0, ii = referredTo.length; i < ii; i++) {\n    const table = customTables[referredTo[i]];\n\n    if (table) {\n      if (index === currentIndex) {\n        return table;\n      }\n\n      currentIndex++;\n    }\n  }\n\n  throw new Jbig2Error(\"can't find custom Huffman table\");\n}\n\nfunction getTextRegionHuffmanTables(textRegion, referredTo, customTables, numberOfSymbols, reader) {\n  const codes = [];\n\n  for (let i = 0; i <= 34; i++) {\n    const codeLength = reader.readBits(4);\n    codes.push(new HuffmanLine([i, codeLength, 0, 0]));\n  }\n\n  const runCodesTable = new HuffmanTable(codes, false);\n  codes.length = 0;\n\n  for (let i = 0; i < numberOfSymbols;) {\n    const codeLength = runCodesTable.decode(reader);\n\n    if (codeLength >= 32) {\n      let repeatedLength, numberOfRepeats, j;\n\n      switch (codeLength) {\n        case 32:\n          if (i === 0) {\n            throw new Jbig2Error(\"no previous value in symbol ID table\");\n          }\n\n          numberOfRepeats = reader.readBits(2) + 3;\n          repeatedLength = codes[i - 1].prefixLength;\n          break;\n\n        case 33:\n          numberOfRepeats = reader.readBits(3) + 3;\n          repeatedLength = 0;\n          break;\n\n        case 34:\n          numberOfRepeats = reader.readBits(7) + 11;\n          repeatedLength = 0;\n          break;\n\n        default:\n          throw new Jbig2Error(\"invalid code length in symbol ID table\");\n      }\n\n      for (j = 0; j < numberOfRepeats; j++) {\n        codes.push(new HuffmanLine([i, repeatedLength, 0, 0]));\n        i++;\n      }\n    } else {\n      codes.push(new HuffmanLine([i, codeLength, 0, 0]));\n      i++;\n    }\n  }\n\n  reader.byteAlign();\n  const symbolIDTable = new HuffmanTable(codes, false);\n  let customIndex = 0,\n      tableFirstS,\n      tableDeltaS,\n      tableDeltaT;\n\n  switch (textRegion.huffmanFS) {\n    case 0:\n    case 1:\n      tableFirstS = getStandardTable(textRegion.huffmanFS + 6);\n      break;\n\n    case 3:\n      tableFirstS = getCustomHuffmanTable(customIndex, referredTo, customTables);\n      customIndex++;\n      break;\n\n    default:\n      throw new Jbig2Error(\"invalid Huffman FS selector\");\n  }\n\n  switch (textRegion.huffmanDS) {\n    case 0:\n    case 1:\n    case 2:\n      tableDeltaS = getStandardTable(textRegion.huffmanDS + 8);\n      break;\n\n    case 3:\n      tableDeltaS = getCustomHuffmanTable(customIndex, referredTo, customTables);\n      customIndex++;\n      break;\n\n    default:\n      throw new Jbig2Error(\"invalid Huffman DS selector\");\n  }\n\n  switch (textRegion.huffmanDT) {\n    case 0:\n    case 1:\n    case 2:\n      tableDeltaT = getStandardTable(textRegion.huffmanDT + 11);\n      break;\n\n    case 3:\n      tableDeltaT = getCustomHuffmanTable(customIndex, referredTo, customTables);\n      customIndex++;\n      break;\n\n    default:\n      throw new Jbig2Error(\"invalid Huffman DT selector\");\n  }\n\n  if (textRegion.refinement) {\n    throw new Jbig2Error(\"refinement with Huffman is not supported\");\n  }\n\n  return {\n    symbolIDTable,\n    tableFirstS,\n    tableDeltaS,\n    tableDeltaT\n  };\n}\n\nfunction getSymbolDictionaryHuffmanTables(dictionary, referredTo, customTables) {\n  let customIndex = 0,\n      tableDeltaHeight,\n      tableDeltaWidth;\n\n  switch (dictionary.huffmanDHSelector) {\n    case 0:\n    case 1:\n      tableDeltaHeight = getStandardTable(dictionary.huffmanDHSelector + 4);\n      break;\n\n    case 3:\n      tableDeltaHeight = getCustomHuffmanTable(customIndex, referredTo, customTables);\n      customIndex++;\n      break;\n\n    default:\n      throw new Jbig2Error(\"invalid Huffman DH selector\");\n  }\n\n  switch (dictionary.huffmanDWSelector) {\n    case 0:\n    case 1:\n      tableDeltaWidth = getStandardTable(dictionary.huffmanDWSelector + 2);\n      break;\n\n    case 3:\n      tableDeltaWidth = getCustomHuffmanTable(customIndex, referredTo, customTables);\n      customIndex++;\n      break;\n\n    default:\n      throw new Jbig2Error(\"invalid Huffman DW selector\");\n  }\n\n  let tableBitmapSize, tableAggregateInstances;\n\n  if (dictionary.bitmapSizeSelector) {\n    tableBitmapSize = getCustomHuffmanTable(customIndex, referredTo, customTables);\n    customIndex++;\n  } else {\n    tableBitmapSize = getStandardTable(1);\n  }\n\n  if (dictionary.aggregationInstancesSelector) {\n    tableAggregateInstances = getCustomHuffmanTable(customIndex, referredTo, customTables);\n  } else {\n    tableAggregateInstances = getStandardTable(1);\n  }\n\n  return {\n    tableDeltaHeight,\n    tableDeltaWidth,\n    tableBitmapSize,\n    tableAggregateInstances\n  };\n}\n\nfunction readUncompressedBitmap(reader, width, height) {\n  const bitmap = [];\n\n  for (let y = 0; y < height; y++) {\n    const row = new Uint8Array(width);\n    bitmap.push(row);\n\n    for (let x = 0; x < width; x++) {\n      row[x] = reader.readBit();\n    }\n\n    reader.byteAlign();\n  }\n\n  return bitmap;\n}\n\nfunction decodeMMRBitmap(input, width, height, endOfBlock) {\n  const params = {\n    K: -1,\n    Columns: width,\n    Rows: height,\n    BlackIs1: true,\n    EndOfBlock: endOfBlock\n  };\n  const decoder = new _ccitt.CCITTFaxDecoder(input, params);\n  const bitmap = [];\n  let currentByte,\n      eof = false;\n\n  for (let y = 0; y < height; y++) {\n    const row = new Uint8Array(width);\n    bitmap.push(row);\n    let shift = -1;\n\n    for (let x = 0; x < width; x++) {\n      if (shift < 0) {\n        currentByte = decoder.readNextChar();\n\n        if (currentByte === -1) {\n          currentByte = 0;\n          eof = true;\n        }\n\n        shift = 7;\n      }\n\n      row[x] = currentByte >> shift & 1;\n      shift--;\n    }\n  }\n\n  if (endOfBlock && !eof) {\n    const lookForEOFLimit = 5;\n\n    for (let i = 0; i < lookForEOFLimit; i++) {\n      if (decoder.readNextChar() === -1) {\n        break;\n      }\n    }\n  }\n\n  return bitmap;\n}\n\nclass Jbig2Image {\n  parseChunks(chunks) {\n    return parseJbig2Chunks(chunks);\n  }\n\n  parse(data) {\n    const {\n      imgData,\n      width,\n      height\n    } = parseJbig2(data);\n    this.width = width;\n    this.height = height;\n    return imgData;\n  }\n\n}\n\nexports.Jbig2Image = Jbig2Image;\n\n/***/ }),\n/* 36 */\n/***/ ((__unused_webpack_module, exports) => {\n\n\n\nObject.defineProperty(exports, \"__esModule\", ({\n  value: true\n}));\nexports.ArithmeticDecoder = void 0;\nconst QeTable = [{\n  qe: 0x5601,\n  nmps: 1,\n  nlps: 1,\n  switchFlag: 1\n}, {\n  qe: 0x3401,\n  nmps: 2,\n  nlps: 6,\n  switchFlag: 0\n}, {\n  qe: 0x1801,\n  nmps: 3,\n  nlps: 9,\n  switchFlag: 0\n}, {\n  qe: 0x0ac1,\n  nmps: 4,\n  nlps: 12,\n  switchFlag: 0\n}, {\n  qe: 0x0521,\n  nmps: 5,\n  nlps: 29,\n  switchFlag: 0\n}, {\n  qe: 0x0221,\n  nmps: 38,\n  nlps: 33,\n  switchFlag: 0\n}, {\n  qe: 0x5601,\n  nmps: 7,\n  nlps: 6,\n  switchFlag: 1\n}, {\n  qe: 0x5401,\n  nmps: 8,\n  nlps: 14,\n  switchFlag: 0\n}, {\n  qe: 0x4801,\n  nmps: 9,\n  nlps: 14,\n  switchFlag: 0\n}, {\n  qe: 0x3801,\n  nmps: 10,\n  nlps: 14,\n  switchFlag: 0\n}, {\n  qe: 0x3001,\n  nmps: 11,\n  nlps: 17,\n  switchFlag: 0\n}, {\n  qe: 0x2401,\n  nmps: 12,\n  nlps: 18,\n  switchFlag: 0\n}, {\n  qe: 0x1c01,\n  nmps: 13,\n  nlps: 20,\n  switchFlag: 0\n}, {\n  qe: 0x1601,\n  nmps: 29,\n  nlps: 21,\n  switchFlag: 0\n}, {\n  qe: 0x5601,\n  nmps: 15,\n  nlps: 14,\n  switchFlag: 1\n}, {\n  qe: 0x5401,\n  nmps: 16,\n  nlps: 14,\n  switchFlag: 0\n}, {\n  qe: 0x5101,\n  nmps: 17,\n  nlps: 15,\n  switchFlag: 0\n}, {\n  qe: 0x4801,\n  nmps: 18,\n  nlps: 16,\n  switchFlag: 0\n}, {\n  qe: 0x3801,\n  nmps: 19,\n  nlps: 17,\n  switchFlag: 0\n}, {\n  qe: 0x3401,\n  nmps: 20,\n  nlps: 18,\n  switchFlag: 0\n}, {\n  qe: 0x3001,\n  nmps: 21,\n  nlps: 19,\n  switchFlag: 0\n}, {\n  qe: 0x2801,\n  nmps: 22,\n  nlps: 19,\n  switchFlag: 0\n}, {\n  qe: 0x2401,\n  nmps: 23,\n  nlps: 20,\n  switchFlag: 0\n}, {\n  qe: 0x2201,\n  nmps: 24,\n  nlps: 21,\n  switchFlag: 0\n}, {\n  qe: 0x1c01,\n  nmps: 25,\n  nlps: 22,\n  switchFlag: 0\n}, {\n  qe: 0x1801,\n  nmps: 26,\n  nlps: 23,\n  switchFlag: 0\n}, {\n  qe: 0x1601,\n  nmps: 27,\n  nlps: 24,\n  switchFlag: 0\n}, {\n  qe: 0x1401,\n  nmps: 28,\n  nlps: 25,\n  switchFlag: 0\n}, {\n  qe: 0x1201,\n  nmps: 29,\n  nlps: 26,\n  switchFlag: 0\n}, {\n  qe: 0x1101,\n  nmps: 30,\n  nlps: 27,\n  switchFlag: 0\n}, {\n  qe: 0x0ac1,\n  nmps: 31,\n  nlps: 28,\n  switchFlag: 0\n}, {\n  qe: 0x09c1,\n  nmps: 32,\n  nlps: 29,\n  switchFlag: 0\n}, {\n  qe: 0x08a1,\n  nmps: 33,\n  nlps: 30,\n  switchFlag: 0\n}, {\n  qe: 0x0521,\n  nmps: 34,\n  nlps: 31,\n  switchFlag: 0\n}, {\n  qe: 0x0441,\n  nmps: 35,\n  nlps: 32,\n  switchFlag: 0\n}, {\n  qe: 0x02a1,\n  nmps: 36,\n  nlps: 33,\n  switchFlag: 0\n}, {\n  qe: 0x0221,\n  nmps: 37,\n  nlps: 34,\n  switchFlag: 0\n}, {\n  qe: 0x0141,\n  nmps: 38,\n  nlps: 35,\n  switchFlag: 0\n}, {\n  qe: 0x0111,\n  nmps: 39,\n  nlps: 36,\n  switchFlag: 0\n}, {\n  qe: 0x0085,\n  nmps: 40,\n  nlps: 37,\n  switchFlag: 0\n}, {\n  qe: 0x0049,\n  nmps: 41,\n  nlps: 38,\n  switchFlag: 0\n}, {\n  qe: 0x0025,\n  nmps: 42,\n  nlps: 39,\n  switchFlag: 0\n}, {\n  qe: 0x0015,\n  nmps: 43,\n  nlps: 40,\n  switchFlag: 0\n}, {\n  qe: 0x0009,\n  nmps: 44,\n  nlps: 41,\n  switchFlag: 0\n}, {\n  qe: 0x0005,\n  nmps: 45,\n  nlps: 42,\n  switchFlag: 0\n}, {\n  qe: 0x0001,\n  nmps: 45,\n  nlps: 43,\n  switchFlag: 0\n}, {\n  qe: 0x5601,\n  nmps: 46,\n  nlps: 46,\n  switchFlag: 0\n}];\n\nclass ArithmeticDecoder {\n  constructor(data, start, end) {\n    this.data = data;\n    this.bp = start;\n    this.dataEnd = end;\n    this.chigh = data[start];\n    this.clow = 0;\n    this.byteIn();\n    this.chigh = this.chigh << 7 & 0xffff | this.clow >> 9 & 0x7f;\n    this.clow = this.clow << 7 & 0xffff;\n    this.ct -= 7;\n    this.a = 0x8000;\n  }\n\n  byteIn() {\n    const data = this.data;\n    let bp = this.bp;\n\n    if (data[bp] === 0xff) {\n      if (data[bp + 1] > 0x8f) {\n        this.clow += 0xff00;\n        this.ct = 8;\n      } else {\n        bp++;\n        this.clow += data[bp] << 9;\n        this.ct = 7;\n        this.bp = bp;\n      }\n    } else {\n      bp++;\n      this.clow += bp < this.dataEnd ? data[bp] << 8 : 0xff00;\n      this.ct = 8;\n      this.bp = bp;\n    }\n\n    if (this.clow > 0xffff) {\n      this.chigh += this.clow >> 16;\n      this.clow &= 0xffff;\n    }\n  }\n\n  readBit(contexts, pos) {\n    let cx_index = contexts[pos] >> 1,\n        cx_mps = contexts[pos] & 1;\n    const qeTableIcx = QeTable[cx_index];\n    const qeIcx = qeTableIcx.qe;\n    let d;\n    let a = this.a - qeIcx;\n\n    if (this.chigh < qeIcx) {\n      if (a < qeIcx) {\n        a = qeIcx;\n        d = cx_mps;\n        cx_index = qeTableIcx.nmps;\n      } else {\n        a = qeIcx;\n        d = 1 ^ cx_mps;\n\n        if (qeTableIcx.switchFlag === 1) {\n          cx_mps = d;\n        }\n\n        cx_index = qeTableIcx.nlps;\n      }\n    } else {\n      this.chigh -= qeIcx;\n\n      if ((a & 0x8000) !== 0) {\n        this.a = a;\n        return cx_mps;\n      }\n\n      if (a < qeIcx) {\n        d = 1 ^ cx_mps;\n\n        if (qeTableIcx.switchFlag === 1) {\n          cx_mps = d;\n        }\n\n        cx_index = qeTableIcx.nlps;\n      } else {\n        d = cx_mps;\n        cx_index = qeTableIcx.nmps;\n      }\n    }\n\n    do {\n      if (this.ct === 0) {\n        this.byteIn();\n      }\n\n      a <<= 1;\n      this.chigh = this.chigh << 1 & 0xffff | this.clow >> 15 & 1;\n      this.clow = this.clow << 1 & 0xffff;\n      this.ct--;\n    } while ((a & 0x8000) === 0);\n\n    this.a = a;\n    contexts[pos] = cx_index << 1 | cx_mps;\n    return d;\n  }\n\n}\n\nexports.ArithmeticDecoder = ArithmeticDecoder;\n\n/***/ }),\n/* 37 */\n/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {\n\n\n\nObject.defineProperty(exports, \"__esModule\", ({\n  value: true\n}));\nexports.JpegStream = void 0;\n\nvar _decode_stream = __w_pdfjs_require__(29);\n\nvar _primitives = __w_pdfjs_require__(5);\n\nvar _jpg = __w_pdfjs_require__(38);\n\nvar _util = __w_pdfjs_require__(2);\n\nclass JpegStream extends _decode_stream.DecodeStream {\n  constructor(stream, maybeLength, params) {\n    let ch;\n\n    while ((ch = stream.getByte()) !== -1) {\n      if (ch === 0xff) {\n        stream.skip(-1);\n        break;\n      }\n    }\n\n    super(maybeLength);\n    this.stream = stream;\n    this.dict = stream.dict;\n    this.maybeLength = maybeLength;\n    this.params = params;\n  }\n\n  get bytes() {\n    return (0, _util.shadow)(this, \"bytes\", this.stream.getBytes(this.maybeLength));\n  }\n\n  ensureBuffer(requested) {}\n\n  readBlock() {\n    if (this.eof) {\n      return;\n    }\n\n    const jpegOptions = {\n      decodeTransform: undefined,\n      colorTransform: undefined\n    };\n    const decodeArr = this.dict.getArray(\"D\", \"Decode\");\n\n    if (this.forceRGB && Array.isArray(decodeArr)) {\n      const bitsPerComponent = this.dict.get(\"BPC\", \"BitsPerComponent\") || 8;\n      const decodeArrLength = decodeArr.length;\n      const transform = new Int32Array(decodeArrLength);\n      let transformNeeded = false;\n      const maxValue = (1 << bitsPerComponent) - 1;\n\n      for (let i = 0; i < decodeArrLength; i += 2) {\n        transform[i] = (decodeArr[i + 1] - decodeArr[i]) * 256 | 0;\n        transform[i + 1] = decodeArr[i] * maxValue | 0;\n\n        if (transform[i] !== 256 || transform[i + 1] !== 0) {\n          transformNeeded = true;\n        }\n      }\n\n      if (transformNeeded) {\n        jpegOptions.decodeTransform = transform;\n      }\n    }\n\n    if (this.params instanceof _primitives.Dict) {\n      const colorTransform = this.params.get(\"ColorTransform\");\n\n      if (Number.isInteger(colorTransform)) {\n        jpegOptions.colorTransform = colorTransform;\n      }\n    }\n\n    const jpegImage = new _jpg.JpegImage(jpegOptions);\n    jpegImage.parse(this.bytes);\n    const data = jpegImage.getData({\n      width: this.drawWidth,\n      height: this.drawHeight,\n      forceRGB: this.forceRGB,\n      isSourcePDF: true\n    });\n    this.buffer = data;\n    this.bufferLength = data.length;\n    this.eof = true;\n  }\n\n}\n\nexports.JpegStream = JpegStream;\n\n/***/ }),\n/* 38 */\n/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {\n\n\n\nObject.defineProperty(exports, \"__esModule\", ({\n  value: true\n}));\nexports.JpegImage = void 0;\n\nvar _util = __w_pdfjs_require__(2);\n\nvar _core_utils = __w_pdfjs_require__(8);\n\nclass JpegError extends _util.BaseException {\n  constructor(msg) {\n    super(`JPEG error: ${msg}`, \"JpegError\");\n  }\n\n}\n\nclass DNLMarkerError extends _util.BaseException {\n  constructor(message, scanLines) {\n    super(message, \"DNLMarkerError\");\n    this.scanLines = scanLines;\n  }\n\n}\n\nclass EOIMarkerError extends _util.BaseException {\n  constructor(msg) {\n    super(msg, \"EOIMarkerError\");\n  }\n\n}\n\nconst dctZigZag = new Uint8Array([0, 1, 8, 16, 9, 2, 3, 10, 17, 24, 32, 25, 18, 11, 4, 5, 12, 19, 26, 33, 40, 48, 41, 34, 27, 20, 13, 6, 7, 14, 21, 28, 35, 42, 49, 56, 57, 50, 43, 36, 29, 22, 15, 23, 30, 37, 44, 51, 58, 59, 52, 45, 38, 31, 39, 46, 53, 60, 61, 54, 47, 55, 62, 63]);\nconst dctCos1 = 4017;\nconst dctSin1 = 799;\nconst dctCos3 = 3406;\nconst dctSin3 = 2276;\nconst dctCos6 = 1567;\nconst dctSin6 = 3784;\nconst dctSqrt2 = 5793;\nconst dctSqrt1d2 = 2896;\n\nfunction buildHuffmanTable(codeLengths, values) {\n  let k = 0,\n      i,\n      j,\n      length = 16;\n\n  while (length > 0 && !codeLengths[length - 1]) {\n    length--;\n  }\n\n  const code = [{\n    children: [],\n    index: 0\n  }];\n  let p = code[0],\n      q;\n\n  for (i = 0; i < length; i++) {\n    for (j = 0; j < codeLengths[i]; j++) {\n      p = code.pop();\n      p.children[p.index] = values[k];\n\n      while (p.index > 0) {\n        p = code.pop();\n      }\n\n      p.index++;\n      code.push(p);\n\n      while (code.length <= i) {\n        code.push(q = {\n          children: [],\n          index: 0\n        });\n        p.children[p.index] = q.children;\n        p = q;\n      }\n\n      k++;\n    }\n\n    if (i + 1 < length) {\n      code.push(q = {\n        children: [],\n        index: 0\n      });\n      p.children[p.index] = q.children;\n      p = q;\n    }\n  }\n\n  return code[0].children;\n}\n\nfunction getBlockBufferOffset(component, row, col) {\n  return 64 * ((component.blocksPerLine + 1) * row + col);\n}\n\nfunction decodeScan(data, offset, frame, components, resetInterval, spectralStart, spectralEnd, successivePrev, successive, parseDNLMarker = false) {\n  const mcusPerLine = frame.mcusPerLine;\n  const progressive = frame.progressive;\n  const startOffset = offset;\n  let bitsData = 0,\n      bitsCount = 0;\n\n  function readBit() {\n    if (bitsCount > 0) {\n      bitsCount--;\n      return bitsData >> bitsCount & 1;\n    }\n\n    bitsData = data[offset++];\n\n    if (bitsData === 0xff) {\n      const nextByte = data[offset++];\n\n      if (nextByte) {\n        if (nextByte === 0xdc && parseDNLMarker) {\n          offset += 2;\n          const scanLines = (0, _core_utils.readUint16)(data, offset);\n          offset += 2;\n\n          if (scanLines > 0 && scanLines !== frame.scanLines) {\n            throw new DNLMarkerError(\"Found DNL marker (0xFFDC) while parsing scan data\", scanLines);\n          }\n        } else if (nextByte === 0xd9) {\n          if (parseDNLMarker) {\n            const maybeScanLines = blockRow * (frame.precision === 8 ? 8 : 0);\n\n            if (maybeScanLines > 0 && Math.round(frame.scanLines / maybeScanLines) >= 10) {\n              throw new DNLMarkerError(\"Found EOI marker (0xFFD9) while parsing scan data, \" + \"possibly caused by incorrect `scanLines` parameter\", maybeScanLines);\n            }\n          }\n\n          throw new EOIMarkerError(\"Found EOI marker (0xFFD9) while parsing scan data\");\n        }\n\n        throw new JpegError(`unexpected marker ${(bitsData << 8 | nextByte).toString(16)}`);\n      }\n    }\n\n    bitsCount = 7;\n    return bitsData >>> 7;\n  }\n\n  function decodeHuffman(tree) {\n    let node = tree;\n\n    while (true) {\n      node = node[readBit()];\n\n      switch (typeof node) {\n        case \"number\":\n          return node;\n\n        case \"object\":\n          continue;\n      }\n\n      throw new JpegError(\"invalid huffman sequence\");\n    }\n  }\n\n  function receive(length) {\n    let n = 0;\n\n    while (length > 0) {\n      n = n << 1 | readBit();\n      length--;\n    }\n\n    return n;\n  }\n\n  function receiveAndExtend(length) {\n    if (length === 1) {\n      return readBit() === 1 ? 1 : -1;\n    }\n\n    const n = receive(length);\n\n    if (n >= 1 << length - 1) {\n      return n;\n    }\n\n    return n + (-1 << length) + 1;\n  }\n\n  function decodeBaseline(component, blockOffset) {\n    const t = decodeHuffman(component.huffmanTableDC);\n    const diff = t === 0 ? 0 : receiveAndExtend(t);\n    component.blockData[blockOffset] = component.pred += diff;\n    let k = 1;\n\n    while (k < 64) {\n      const rs = decodeHuffman(component.huffmanTableAC);\n      const s = rs & 15,\n            r = rs >> 4;\n\n      if (s === 0) {\n        if (r < 15) {\n          break;\n        }\n\n        k += 16;\n        continue;\n      }\n\n      k += r;\n      const z = dctZigZag[k];\n      component.blockData[blockOffset + z] = receiveAndExtend(s);\n      k++;\n    }\n  }\n\n  function decodeDCFirst(component, blockOffset) {\n    const t = decodeHuffman(component.huffmanTableDC);\n    const diff = t === 0 ? 0 : receiveAndExtend(t) << successive;\n    component.blockData[blockOffset] = component.pred += diff;\n  }\n\n  function decodeDCSuccessive(component, blockOffset) {\n    component.blockData[blockOffset] |= readBit() << successive;\n  }\n\n  let eobrun = 0;\n\n  function decodeACFirst(component, blockOffset) {\n    if (eobrun > 0) {\n      eobrun--;\n      return;\n    }\n\n    let k = spectralStart;\n    const e = spectralEnd;\n\n    while (k <= e) {\n      const rs = decodeHuffman(component.huffmanTableAC);\n      const s = rs & 15,\n            r = rs >> 4;\n\n      if (s === 0) {\n        if (r < 15) {\n          eobrun = receive(r) + (1 << r) - 1;\n          break;\n        }\n\n        k += 16;\n        continue;\n      }\n\n      k += r;\n      const z = dctZigZag[k];\n      component.blockData[blockOffset + z] = receiveAndExtend(s) * (1 << successive);\n      k++;\n    }\n  }\n\n  let successiveACState = 0,\n      successiveACNextValue;\n\n  function decodeACSuccessive(component, blockOffset) {\n    let k = spectralStart;\n    const e = spectralEnd;\n    let r = 0;\n    let s;\n    let rs;\n\n    while (k <= e) {\n      const offsetZ = blockOffset + dctZigZag[k];\n      const sign = component.blockData[offsetZ] < 0 ? -1 : 1;\n\n      switch (successiveACState) {\n        case 0:\n          rs = decodeHuffman(component.huffmanTableAC);\n          s = rs & 15;\n          r = rs >> 4;\n\n          if (s === 0) {\n            if (r < 15) {\n              eobrun = receive(r) + (1 << r);\n              successiveACState = 4;\n            } else {\n              r = 16;\n              successiveACState = 1;\n            }\n          } else {\n            if (s !== 1) {\n              throw new JpegError(\"invalid ACn encoding\");\n            }\n\n            successiveACNextValue = receiveAndExtend(s);\n            successiveACState = r ? 2 : 3;\n          }\n\n          continue;\n\n        case 1:\n        case 2:\n          if (component.blockData[offsetZ]) {\n            component.blockData[offsetZ] += sign * (readBit() << successive);\n          } else {\n            r--;\n\n            if (r === 0) {\n              successiveACState = successiveACState === 2 ? 3 : 0;\n            }\n          }\n\n          break;\n\n        case 3:\n          if (component.blockData[offsetZ]) {\n            component.blockData[offsetZ] += sign * (readBit() << successive);\n          } else {\n            component.blockData[offsetZ] = successiveACNextValue << successive;\n            successiveACState = 0;\n          }\n\n          break;\n\n        case 4:\n          if (component.blockData[offsetZ]) {\n            component.blockData[offsetZ] += sign * (readBit() << successive);\n          }\n\n          break;\n      }\n\n      k++;\n    }\n\n    if (successiveACState === 4) {\n      eobrun--;\n\n      if (eobrun === 0) {\n        successiveACState = 0;\n      }\n    }\n  }\n\n  let blockRow = 0;\n\n  function decodeMcu(component, decode, mcu, row, col) {\n    const mcuRow = mcu / mcusPerLine | 0;\n    const mcuCol = mcu % mcusPerLine;\n    blockRow = mcuRow * component.v + row;\n    const blockCol = mcuCol * component.h + col;\n    const blockOffset = getBlockBufferOffset(component, blockRow, blockCol);\n    decode(component, blockOffset);\n  }\n\n  function decodeBlock(component, decode, mcu) {\n    blockRow = mcu / component.blocksPerLine | 0;\n    const blockCol = mcu % component.blocksPerLine;\n    const blockOffset = getBlockBufferOffset(component, blockRow, blockCol);\n    decode(component, blockOffset);\n  }\n\n  const componentsLength = components.length;\n  let component, i, j, k, n;\n  let decodeFn;\n\n  if (progressive) {\n    if (spectralStart === 0) {\n      decodeFn = successivePrev === 0 ? decodeDCFirst : decodeDCSuccessive;\n    } else {\n      decodeFn = successivePrev === 0 ? decodeACFirst : decodeACSuccessive;\n    }\n  } else {\n    decodeFn = decodeBaseline;\n  }\n\n  let mcu = 0,\n      fileMarker;\n  let mcuExpected;\n\n  if (componentsLength === 1) {\n    mcuExpected = components[0].blocksPerLine * components[0].blocksPerColumn;\n  } else {\n    mcuExpected = mcusPerLine * frame.mcusPerColumn;\n  }\n\n  let h, v;\n\n  while (mcu <= mcuExpected) {\n    const mcuToRead = resetInterval ? Math.min(mcuExpected - mcu, resetInterval) : mcuExpected;\n\n    if (mcuToRead > 0) {\n      for (i = 0; i < componentsLength; i++) {\n        components[i].pred = 0;\n      }\n\n      eobrun = 0;\n\n      if (componentsLength === 1) {\n        component = components[0];\n\n        for (n = 0; n < mcuToRead; n++) {\n          decodeBlock(component, decodeFn, mcu);\n          mcu++;\n        }\n      } else {\n        for (n = 0; n < mcuToRead; n++) {\n          for (i = 0; i < componentsLength; i++) {\n            component = components[i];\n            h = component.h;\n            v = component.v;\n\n            for (j = 0; j < v; j++) {\n              for (k = 0; k < h; k++) {\n                decodeMcu(component, decodeFn, mcu, j, k);\n              }\n            }\n          }\n\n          mcu++;\n        }\n      }\n    }\n\n    bitsCount = 0;\n    fileMarker = findNextFileMarker(data, offset);\n\n    if (!fileMarker) {\n      break;\n    }\n\n    if (fileMarker.invalid) {\n      const partialMsg = mcuToRead > 0 ? \"unexpected\" : \"excessive\";\n      (0, _util.warn)(`decodeScan - ${partialMsg} MCU data, current marker is: ${fileMarker.invalid}`);\n      offset = fileMarker.offset;\n    }\n\n    if (fileMarker.marker >= 0xffd0 && fileMarker.marker <= 0xffd7) {\n      offset += 2;\n    } else {\n      break;\n    }\n  }\n\n  return offset - startOffset;\n}\n\nfunction quantizeAndInverse(component, blockBufferOffset, p) {\n  const qt = component.quantizationTable,\n        blockData = component.blockData;\n  let v0, v1, v2, v3, v4, v5, v6, v7;\n  let p0, p1, p2, p3, p4, p5, p6, p7;\n  let t;\n\n  if (!qt) {\n    throw new JpegError(\"missing required Quantization Table.\");\n  }\n\n  for (let row = 0; row < 64; row += 8) {\n    p0 = blockData[blockBufferOffset + row];\n    p1 = blockData[blockBufferOffset + row + 1];\n    p2 = blockData[blockBufferOffset + row + 2];\n    p3 = blockData[blockBufferOffset + row + 3];\n    p4 = blockData[blockBufferOffset + row + 4];\n    p5 = blockData[blockBufferOffset + row + 5];\n    p6 = blockData[blockBufferOffset + row + 6];\n    p7 = blockData[blockBufferOffset + row + 7];\n    p0 *= qt[row];\n\n    if ((p1 | p2 | p3 | p4 | p5 | p6 | p7) === 0) {\n      t = dctSqrt2 * p0 + 512 >> 10;\n      p[row] = t;\n      p[row + 1] = t;\n      p[row + 2] = t;\n      p[row + 3] = t;\n      p[row + 4] = t;\n      p[row + 5] = t;\n      p[row + 6] = t;\n      p[row + 7] = t;\n      continue;\n    }\n\n    p1 *= qt[row + 1];\n    p2 *= qt[row + 2];\n    p3 *= qt[row + 3];\n    p4 *= qt[row + 4];\n    p5 *= qt[row + 5];\n    p6 *= qt[row + 6];\n    p7 *= qt[row + 7];\n    v0 = dctSqrt2 * p0 + 128 >> 8;\n    v1 = dctSqrt2 * p4 + 128 >> 8;\n    v2 = p2;\n    v3 = p6;\n    v4 = dctSqrt1d2 * (p1 - p7) + 128 >> 8;\n    v7 = dctSqrt1d2 * (p1 + p7) + 128 >> 8;\n    v5 = p3 << 4;\n    v6 = p5 << 4;\n    v0 = v0 + v1 + 1 >> 1;\n    v1 = v0 - v1;\n    t = v2 * dctSin6 + v3 * dctCos6 + 128 >> 8;\n    v2 = v2 * dctCos6 - v3 * dctSin6 + 128 >> 8;\n    v3 = t;\n    v4 = v4 + v6 + 1 >> 1;\n    v6 = v4 - v6;\n    v7 = v7 + v5 + 1 >> 1;\n    v5 = v7 - v5;\n    v0 = v0 + v3 + 1 >> 1;\n    v3 = v0 - v3;\n    v1 = v1 + v2 + 1 >> 1;\n    v2 = v1 - v2;\n    t = v4 * dctSin3 + v7 * dctCos3 + 2048 >> 12;\n    v4 = v4 * dctCos3 - v7 * dctSin3 + 2048 >> 12;\n    v7 = t;\n    t = v5 * dctSin1 + v6 * dctCos1 + 2048 >> 12;\n    v5 = v5 * dctCos1 - v6 * dctSin1 + 2048 >> 12;\n    v6 = t;\n    p[row] = v0 + v7;\n    p[row + 7] = v0 - v7;\n    p[row + 1] = v1 + v6;\n    p[row + 6] = v1 - v6;\n    p[row + 2] = v2 + v5;\n    p[row + 5] = v2 - v5;\n    p[row + 3] = v3 + v4;\n    p[row + 4] = v3 - v4;\n  }\n\n  for (let col = 0; col < 8; ++col) {\n    p0 = p[col];\n    p1 = p[col + 8];\n    p2 = p[col + 16];\n    p3 = p[col + 24];\n    p4 = p[col + 32];\n    p5 = p[col + 40];\n    p6 = p[col + 48];\n    p7 = p[col + 56];\n\n    if ((p1 | p2 | p3 | p4 | p5 | p6 | p7) === 0) {\n      t = dctSqrt2 * p0 + 8192 >> 14;\n\n      if (t < -2040) {\n        t = 0;\n      } else if (t >= 2024) {\n        t = 255;\n      } else {\n        t = t + 2056 >> 4;\n      }\n\n      blockData[blockBufferOffset + col] = t;\n      blockData[blockBufferOffset + col + 8] = t;\n      blockData[blockBufferOffset + col + 16] = t;\n      blockData[blockBufferOffset + col + 24] = t;\n      blockData[blockBufferOffset + col + 32] = t;\n      blockData[blockBufferOffset + col + 40] = t;\n      blockData[blockBufferOffset + col + 48] = t;\n      blockData[blockBufferOffset + col + 56] = t;\n      continue;\n    }\n\n    v0 = dctSqrt2 * p0 + 2048 >> 12;\n    v1 = dctSqrt2 * p4 + 2048 >> 12;\n    v2 = p2;\n    v3 = p6;\n    v4 = dctSqrt1d2 * (p1 - p7) + 2048 >> 12;\n    v7 = dctSqrt1d2 * (p1 + p7) + 2048 >> 12;\n    v5 = p3;\n    v6 = p5;\n    v0 = (v0 + v1 + 1 >> 1) + 4112;\n    v1 = v0 - v1;\n    t = v2 * dctSin6 + v3 * dctCos6 + 2048 >> 12;\n    v2 = v2 * dctCos6 - v3 * dctSin6 + 2048 >> 12;\n    v3 = t;\n    v4 = v4 + v6 + 1 >> 1;\n    v6 = v4 - v6;\n    v7 = v7 + v5 + 1 >> 1;\n    v5 = v7 - v5;\n    v0 = v0 + v3 + 1 >> 1;\n    v3 = v0 - v3;\n    v1 = v1 + v2 + 1 >> 1;\n    v2 = v1 - v2;\n    t = v4 * dctSin3 + v7 * dctCos3 + 2048 >> 12;\n    v4 = v4 * dctCos3 - v7 * dctSin3 + 2048 >> 12;\n    v7 = t;\n    t = v5 * dctSin1 + v6 * dctCos1 + 2048 >> 12;\n    v5 = v5 * dctCos1 - v6 * dctSin1 + 2048 >> 12;\n    v6 = t;\n    p0 = v0 + v7;\n    p7 = v0 - v7;\n    p1 = v1 + v6;\n    p6 = v1 - v6;\n    p2 = v2 + v5;\n    p5 = v2 - v5;\n    p3 = v3 + v4;\n    p4 = v3 - v4;\n\n    if (p0 < 16) {\n      p0 = 0;\n    } else if (p0 >= 4080) {\n      p0 = 255;\n    } else {\n      p0 >>= 4;\n    }\n\n    if (p1 < 16) {\n      p1 = 0;\n    } else if (p1 >= 4080) {\n      p1 = 255;\n    } else {\n      p1 >>= 4;\n    }\n\n    if (p2 < 16) {\n      p2 = 0;\n    } else if (p2 >= 4080) {\n      p2 = 255;\n    } else {\n      p2 >>= 4;\n    }\n\n    if (p3 < 16) {\n      p3 = 0;\n    } else if (p3 >= 4080) {\n      p3 = 255;\n    } else {\n      p3 >>= 4;\n    }\n\n    if (p4 < 16) {\n      p4 = 0;\n    } else if (p4 >= 4080) {\n      p4 = 255;\n    } else {\n      p4 >>= 4;\n    }\n\n    if (p5 < 16) {\n      p5 = 0;\n    } else if (p5 >= 4080) {\n      p5 = 255;\n    } else {\n      p5 >>= 4;\n    }\n\n    if (p6 < 16) {\n      p6 = 0;\n    } else if (p6 >= 4080) {\n      p6 = 255;\n    } else {\n      p6 >>= 4;\n    }\n\n    if (p7 < 16) {\n      p7 = 0;\n    } else if (p7 >= 4080) {\n      p7 = 255;\n    } else {\n      p7 >>= 4;\n    }\n\n    blockData[blockBufferOffset + col] = p0;\n    blockData[blockBufferOffset + col + 8] = p1;\n    blockData[blockBufferOffset + col + 16] = p2;\n    blockData[blockBufferOffset + col + 24] = p3;\n    blockData[blockBufferOffset + col + 32] = p4;\n    blockData[blockBufferOffset + col + 40] = p5;\n    blockData[blockBufferOffset + col + 48] = p6;\n    blockData[blockBufferOffset + col + 56] = p7;\n  }\n}\n\nfunction buildComponentData(frame, component) {\n  const blocksPerLine = component.blocksPerLine;\n  const blocksPerColumn = component.blocksPerColumn;\n  const computationBuffer = new Int16Array(64);\n\n  for (let blockRow = 0; blockRow < blocksPerColumn; blockRow++) {\n    for (let blockCol = 0; blockCol < blocksPerLine; blockCol++) {\n      const offset = getBlockBufferOffset(component, blockRow, blockCol);\n      quantizeAndInverse(component, offset, computationBuffer);\n    }\n  }\n\n  return component.blockData;\n}\n\nfunction findNextFileMarker(data, currentPos, startPos = currentPos) {\n  const maxPos = data.length - 1;\n  let newPos = startPos < currentPos ? startPos : currentPos;\n\n  if (currentPos >= maxPos) {\n    return null;\n  }\n\n  const currentMarker = (0, _core_utils.readUint16)(data, currentPos);\n\n  if (currentMarker >= 0xffc0 && currentMarker <= 0xfffe) {\n    return {\n      invalid: null,\n      marker: currentMarker,\n      offset: currentPos\n    };\n  }\n\n  let newMarker = (0, _core_utils.readUint16)(data, newPos);\n\n  while (!(newMarker >= 0xffc0 && newMarker <= 0xfffe)) {\n    if (++newPos >= maxPos) {\n      return null;\n    }\n\n    newMarker = (0, _core_utils.readUint16)(data, newPos);\n  }\n\n  return {\n    invalid: currentMarker.toString(16),\n    marker: newMarker,\n    offset: newPos\n  };\n}\n\nclass JpegImage {\n  constructor({\n    decodeTransform = null,\n    colorTransform = -1\n  } = {}) {\n    this._decodeTransform = decodeTransform;\n    this._colorTransform = colorTransform;\n  }\n\n  parse(data, {\n    dnlScanLines = null\n  } = {}) {\n    function readDataBlock() {\n      const length = (0, _core_utils.readUint16)(data, offset);\n      offset += 2;\n      let endOffset = offset + length - 2;\n      const fileMarker = findNextFileMarker(data, endOffset, offset);\n\n      if (fileMarker && fileMarker.invalid) {\n        (0, _util.warn)(\"readDataBlock - incorrect length, current marker is: \" + fileMarker.invalid);\n        endOffset = fileMarker.offset;\n      }\n\n      const array = data.subarray(offset, endOffset);\n      offset += array.length;\n      return array;\n    }\n\n    function prepareComponents(frame) {\n      const mcusPerLine = Math.ceil(frame.samplesPerLine / 8 / frame.maxH);\n      const mcusPerColumn = Math.ceil(frame.scanLines / 8 / frame.maxV);\n\n      for (let i = 0, ii = frame.components.length; i < ii; i++) {\n        const component = frame.components[i];\n        const blocksPerLine = Math.ceil(Math.ceil(frame.samplesPerLine / 8) * component.h / frame.maxH);\n        const blocksPerColumn = Math.ceil(Math.ceil(frame.scanLines / 8) * component.v / frame.maxV);\n        const blocksPerLineForMcu = mcusPerLine * component.h;\n        const blocksPerColumnForMcu = mcusPerColumn * component.v;\n        const blocksBufferSize = 64 * blocksPerColumnForMcu * (blocksPerLineForMcu + 1);\n        component.blockData = new Int16Array(blocksBufferSize);\n        component.blocksPerLine = blocksPerLine;\n        component.blocksPerColumn = blocksPerColumn;\n      }\n\n      frame.mcusPerLine = mcusPerLine;\n      frame.mcusPerColumn = mcusPerColumn;\n    }\n\n    let offset = 0;\n    let jfif = null;\n    let adobe = null;\n    let frame, resetInterval;\n    let numSOSMarkers = 0;\n    const quantizationTables = [];\n    const huffmanTablesAC = [],\n          huffmanTablesDC = [];\n    let fileMarker = (0, _core_utils.readUint16)(data, offset);\n    offset += 2;\n\n    if (fileMarker !== 0xffd8) {\n      throw new JpegError(\"SOI not found\");\n    }\n\n    fileMarker = (0, _core_utils.readUint16)(data, offset);\n    offset += 2;\n\n    markerLoop: while (fileMarker !== 0xffd9) {\n      let i, j, l;\n\n      switch (fileMarker) {\n        case 0xffe0:\n        case 0xffe1:\n        case 0xffe2:\n        case 0xffe3:\n        case 0xffe4:\n        case 0xffe5:\n        case 0xffe6:\n        case 0xffe7:\n        case 0xffe8:\n        case 0xffe9:\n        case 0xffea:\n        case 0xffeb:\n        case 0xffec:\n        case 0xffed:\n        case 0xffee:\n        case 0xffef:\n        case 0xfffe:\n          const appData = readDataBlock();\n\n          if (fileMarker === 0xffe0) {\n            if (appData[0] === 0x4a && appData[1] === 0x46 && appData[2] === 0x49 && appData[3] === 0x46 && appData[4] === 0) {\n              jfif = {\n                version: {\n                  major: appData[5],\n                  minor: appData[6]\n                },\n                densityUnits: appData[7],\n                xDensity: appData[8] << 8 | appData[9],\n                yDensity: appData[10] << 8 | appData[11],\n                thumbWidth: appData[12],\n                thumbHeight: appData[13],\n                thumbData: appData.subarray(14, 14 + 3 * appData[12] * appData[13])\n              };\n            }\n          }\n\n          if (fileMarker === 0xffee) {\n            if (appData[0] === 0x41 && appData[1] === 0x64 && appData[2] === 0x6f && appData[3] === 0x62 && appData[4] === 0x65) {\n              adobe = {\n                version: appData[5] << 8 | appData[6],\n                flags0: appData[7] << 8 | appData[8],\n                flags1: appData[9] << 8 | appData[10],\n                transformCode: appData[11]\n              };\n            }\n          }\n\n          break;\n\n        case 0xffdb:\n          const quantizationTablesLength = (0, _core_utils.readUint16)(data, offset);\n          offset += 2;\n          const quantizationTablesEnd = quantizationTablesLength + offset - 2;\n          let z;\n\n          while (offset < quantizationTablesEnd) {\n            const quantizationTableSpec = data[offset++];\n            const tableData = new Uint16Array(64);\n\n            if (quantizationTableSpec >> 4 === 0) {\n              for (j = 0; j < 64; j++) {\n                z = dctZigZag[j];\n                tableData[z] = data[offset++];\n              }\n            } else if (quantizationTableSpec >> 4 === 1) {\n              for (j = 0; j < 64; j++) {\n                z = dctZigZag[j];\n                tableData[z] = (0, _core_utils.readUint16)(data, offset);\n                offset += 2;\n              }\n            } else {\n              throw new JpegError(\"DQT - invalid table spec\");\n            }\n\n            quantizationTables[quantizationTableSpec & 15] = tableData;\n          }\n\n          break;\n\n        case 0xffc0:\n        case 0xffc1:\n        case 0xffc2:\n          if (frame) {\n            throw new JpegError(\"Only single frame JPEGs supported\");\n          }\n\n          offset += 2;\n          frame = {};\n          frame.extended = fileMarker === 0xffc1;\n          frame.progressive = fileMarker === 0xffc2;\n          frame.precision = data[offset++];\n          const sofScanLines = (0, _core_utils.readUint16)(data, offset);\n          offset += 2;\n          frame.scanLines = dnlScanLines || sofScanLines;\n          frame.samplesPerLine = (0, _core_utils.readUint16)(data, offset);\n          offset += 2;\n          frame.components = [];\n          frame.componentIds = {};\n          const componentsCount = data[offset++];\n          let maxH = 0,\n              maxV = 0;\n\n          for (i = 0; i < componentsCount; i++) {\n            const componentId = data[offset];\n            const h = data[offset + 1] >> 4;\n            const v = data[offset + 1] & 15;\n\n            if (maxH < h) {\n              maxH = h;\n            }\n\n            if (maxV < v) {\n              maxV = v;\n            }\n\n            const qId = data[offset + 2];\n            l = frame.components.push({\n              h,\n              v,\n              quantizationId: qId,\n              quantizationTable: null\n            });\n            frame.componentIds[componentId] = l - 1;\n            offset += 3;\n          }\n\n          frame.maxH = maxH;\n          frame.maxV = maxV;\n          prepareComponents(frame);\n          break;\n\n        case 0xffc4:\n          const huffmanLength = (0, _core_utils.readUint16)(data, offset);\n          offset += 2;\n\n          for (i = 2; i < huffmanLength;) {\n            const huffmanTableSpec = data[offset++];\n            const codeLengths = new Uint8Array(16);\n            let codeLengthSum = 0;\n\n            for (j = 0; j < 16; j++, offset++) {\n              codeLengthSum += codeLengths[j] = data[offset];\n            }\n\n            const huffmanValues = new Uint8Array(codeLengthSum);\n\n            for (j = 0; j < codeLengthSum; j++, offset++) {\n              huffmanValues[j] = data[offset];\n            }\n\n            i += 17 + codeLengthSum;\n            (huffmanTableSpec >> 4 === 0 ? huffmanTablesDC : huffmanTablesAC)[huffmanTableSpec & 15] = buildHuffmanTable(codeLengths, huffmanValues);\n          }\n\n          break;\n\n        case 0xffdd:\n          offset += 2;\n          resetInterval = (0, _core_utils.readUint16)(data, offset);\n          offset += 2;\n          break;\n\n        case 0xffda:\n          const parseDNLMarker = ++numSOSMarkers === 1 && !dnlScanLines;\n          offset += 2;\n          const selectorsCount = data[offset++],\n                components = [];\n\n          for (i = 0; i < selectorsCount; i++) {\n            const index = data[offset++];\n            const componentIndex = frame.componentIds[index];\n            const component = frame.components[componentIndex];\n            component.index = index;\n            const tableSpec = data[offset++];\n            component.huffmanTableDC = huffmanTablesDC[tableSpec >> 4];\n            component.huffmanTableAC = huffmanTablesAC[tableSpec & 15];\n            components.push(component);\n          }\n\n          const spectralStart = data[offset++],\n                spectralEnd = data[offset++],\n                successiveApproximation = data[offset++];\n\n          try {\n            const processed = decodeScan(data, offset, frame, components, resetInterval, spectralStart, spectralEnd, successiveApproximation >> 4, successiveApproximation & 15, parseDNLMarker);\n            offset += processed;\n          } catch (ex) {\n            if (ex instanceof DNLMarkerError) {\n              (0, _util.warn)(`${ex.message} -- attempting to re-parse the JPEG image.`);\n              return this.parse(data, {\n                dnlScanLines: ex.scanLines\n              });\n            } else if (ex instanceof EOIMarkerError) {\n              (0, _util.warn)(`${ex.message} -- ignoring the rest of the image data.`);\n              break markerLoop;\n            }\n\n            throw ex;\n          }\n\n          break;\n\n        case 0xffdc:\n          offset += 4;\n          break;\n\n        case 0xffff:\n          if (data[offset] !== 0xff) {\n            offset--;\n          }\n\n          break;\n\n        default:\n          const nextFileMarker = findNextFileMarker(data, offset - 2, offset - 3);\n\n          if (nextFileMarker && nextFileMarker.invalid) {\n            (0, _util.warn)(\"JpegImage.parse - unexpected data, current marker is: \" + nextFileMarker.invalid);\n            offset = nextFileMarker.offset;\n            break;\n          }\n\n          if (!nextFileMarker || offset >= data.length - 1) {\n            (0, _util.warn)(\"JpegImage.parse - reached the end of the image data \" + \"without finding an EOI marker (0xFFD9).\");\n            break markerLoop;\n          }\n\n          throw new JpegError(\"JpegImage.parse - unknown marker: \" + fileMarker.toString(16));\n      }\n\n      fileMarker = (0, _core_utils.readUint16)(data, offset);\n      offset += 2;\n    }\n\n    this.width = frame.samplesPerLine;\n    this.height = frame.scanLines;\n    this.jfif = jfif;\n    this.adobe = adobe;\n    this.components = [];\n\n    for (let i = 0, ii = frame.components.length; i < ii; i++) {\n      const component = frame.components[i];\n      const quantizationTable = quantizationTables[component.quantizationId];\n\n      if (quantizationTable) {\n        component.quantizationTable = quantizationTable;\n      }\n\n      this.components.push({\n        index: component.index,\n        output: buildComponentData(frame, component),\n        scaleX: component.h / frame.maxH,\n        scaleY: component.v / frame.maxV,\n        blocksPerLine: component.blocksPerLine,\n        blocksPerColumn: component.blocksPerColumn\n      });\n    }\n\n    this.numComponents = this.components.length;\n    return undefined;\n  }\n\n  _getLinearizedBlockData(width, height, isSourcePDF = false) {\n    const scaleX = this.width / width,\n          scaleY = this.height / height;\n    let component, componentScaleX, componentScaleY, blocksPerScanline;\n    let x, y, i, j, k;\n    let index;\n    let offset = 0;\n    let output;\n    const numComponents = this.components.length;\n    const dataLength = width * height * numComponents;\n    const data = new Uint8ClampedArray(dataLength);\n    const xScaleBlockOffset = new Uint32Array(width);\n    const mask3LSB = 0xfffffff8;\n    let lastComponentScaleX;\n\n    for (i = 0; i < numComponents; i++) {\n      component = this.components[i];\n      componentScaleX = component.scaleX * scaleX;\n      componentScaleY = component.scaleY * scaleY;\n      offset = i;\n      output = component.output;\n      blocksPerScanline = component.blocksPerLine + 1 << 3;\n\n      if (componentScaleX !== lastComponentScaleX) {\n        for (x = 0; x < width; x++) {\n          j = 0 | x * componentScaleX;\n          xScaleBlockOffset[x] = (j & mask3LSB) << 3 | j & 7;\n        }\n\n        lastComponentScaleX = componentScaleX;\n      }\n\n      for (y = 0; y < height; y++) {\n        j = 0 | y * componentScaleY;\n        index = blocksPerScanline * (j & mask3LSB) | (j & 7) << 3;\n\n        for (x = 0; x < width; x++) {\n          data[offset] = output[index + xScaleBlockOffset[x]];\n          offset += numComponents;\n        }\n      }\n    }\n\n    let transform = this._decodeTransform;\n\n    if (!isSourcePDF && numComponents === 4 && !transform) {\n      transform = new Int32Array([-256, 255, -256, 255, -256, 255, -256, 255]);\n    }\n\n    if (transform) {\n      for (i = 0; i < dataLength;) {\n        for (j = 0, k = 0; j < numComponents; j++, i++, k += 2) {\n          data[i] = (data[i] * transform[k] >> 8) + transform[k + 1];\n        }\n      }\n    }\n\n    return data;\n  }\n\n  get _isColorConversionNeeded() {\n    if (this.adobe) {\n      return !!this.adobe.transformCode;\n    }\n\n    if (this.numComponents === 3) {\n      if (this._colorTransform === 0) {\n        return false;\n      } else if (this.components[0].index === 0x52 && this.components[1].index === 0x47 && this.components[2].index === 0x42) {\n        return false;\n      }\n\n      return true;\n    }\n\n    if (this._colorTransform === 1) {\n      return true;\n    }\n\n    return false;\n  }\n\n  _convertYccToRgb(data) {\n    let Y, Cb, Cr;\n\n    for (let i = 0, length = data.length; i < length; i += 3) {\n      Y = data[i];\n      Cb = data[i + 1];\n      Cr = data[i + 2];\n      data[i] = Y - 179.456 + 1.402 * Cr;\n      data[i + 1] = Y + 135.459 - 0.344 * Cb - 0.714 * Cr;\n      data[i + 2] = Y - 226.816 + 1.772 * Cb;\n    }\n\n    return data;\n  }\n\n  _convertYcckToRgb(data) {\n    let Y, Cb, Cr, k;\n    let offset = 0;\n\n    for (let i = 0, length = data.length; i < length; i += 4) {\n      Y = data[i];\n      Cb = data[i + 1];\n      Cr = data[i + 2];\n      k = data[i + 3];\n      data[offset++] = -122.67195406894 + Cb * (-6.60635669420364e-5 * Cb + 0.000437130475926232 * Cr - 5.4080610064599e-5 * Y + 0.00048449797120281 * k - 0.154362151871126) + Cr * (-0.000957964378445773 * Cr + 0.000817076911346625 * Y - 0.00477271405408747 * k + 1.53380253221734) + Y * (0.000961250184130688 * Y - 0.00266257332283933 * k + 0.48357088451265) + k * (-0.000336197177618394 * k + 0.484791561490776);\n      data[offset++] = 107.268039397724 + Cb * (2.19927104525741e-5 * Cb - 0.000640992018297945 * Cr + 0.000659397001245577 * Y + 0.000426105652938837 * k - 0.176491792462875) + Cr * (-0.000778269941513683 * Cr + 0.00130872261408275 * Y + 0.000770482631801132 * k - 0.151051492775562) + Y * (0.00126935368114843 * Y - 0.00265090189010898 * k + 0.25802910206845) + k * (-0.000318913117588328 * k - 0.213742400323665);\n      data[offset++] = -20.810012546947 + Cb * (-0.000570115196973677 * Cb - 2.63409051004589e-5 * Cr + 0.0020741088115012 * Y - 0.00288260236853442 * k + 0.814272968359295) + Cr * (-1.53496057440975e-5 * Cr - 0.000132689043961446 * Y + 0.000560833691242812 * k - 0.195152027534049) + Y * (0.00174418132927582 * Y - 0.00255243321439347 * k + 0.116935020465145) + k * (-0.000343531996510555 * k + 0.24165260232407);\n    }\n\n    return data.subarray(0, offset);\n  }\n\n  _convertYcckToCmyk(data) {\n    let Y, Cb, Cr;\n\n    for (let i = 0, length = data.length; i < length; i += 4) {\n      Y = data[i];\n      Cb = data[i + 1];\n      Cr = data[i + 2];\n      data[i] = 434.456 - Y - 1.402 * Cr;\n      data[i + 1] = 119.541 - Y + 0.344 * Cb + 0.714 * Cr;\n      data[i + 2] = 481.816 - Y - 1.772 * Cb;\n    }\n\n    return data;\n  }\n\n  _convertCmykToRgb(data) {\n    let c, m, y, k;\n    let offset = 0;\n\n    for (let i = 0, length = data.length; i < length; i += 4) {\n      c = data[i];\n      m = data[i + 1];\n      y = data[i + 2];\n      k = data[i + 3];\n      data[offset++] = 255 + c * (-0.00006747147073602441 * c + 0.0008379262121013727 * m + 0.0002894718188643294 * y + 0.003264231057537806 * k - 1.1185611867203937) + m * (0.000026374107616089405 * m - 0.00008626949158638572 * y - 0.0002748769067499491 * k - 0.02155688794978967) + y * (-0.00003878099212869363 * y - 0.0003267808279485286 * k + 0.0686742238595345) - k * (0.0003361971776183937 * k + 0.7430659151342254);\n      data[offset++] = 255 + c * (0.00013596372813588848 * c + 0.000924537132573585 * m + 0.00010567359618683593 * y + 0.0004791864687436512 * k - 0.3109689587515875) + m * (-0.00023545346108370344 * m + 0.0002702845253534714 * y + 0.0020200308977307156 * k - 0.7488052167015494) + y * (0.00006834815998235662 * y + 0.00015168452363460973 * k - 0.09751927774728933) - k * (0.0003189131175883281 * k + 0.7364883807733168);\n      data[offset++] = 255 + c * (0.000013598650411385307 * c + 0.00012423956175490851 * m + 0.0004751985097583589 * y - 0.0000036729317476630422 * k - 0.05562186980264034) + m * (0.00016141380598724676 * m + 0.0009692239130725186 * y + 0.0007782692450036253 * k - 0.44015232367526463) + y * (5.068882914068769e-7 * y + 0.0017778369011375071 * k - 0.7591454649749609) - k * (0.0003435319965105553 * k + 0.7063770186160144);\n    }\n\n    return data.subarray(0, offset);\n  }\n\n  getData({\n    width,\n    height,\n    forceRGB = false,\n    isSourcePDF = false\n  }) {\n    if (this.numComponents > 4) {\n      throw new JpegError(\"Unsupported color mode\");\n    }\n\n    const data = this._getLinearizedBlockData(width, height, isSourcePDF);\n\n    if (this.numComponents === 1 && forceRGB) {\n      const dataLength = data.length;\n      const rgbData = new Uint8ClampedArray(dataLength * 3);\n      let offset = 0;\n\n      for (let i = 0; i < dataLength; i++) {\n        const grayColor = data[i];\n        rgbData[offset++] = grayColor;\n        rgbData[offset++] = grayColor;\n        rgbData[offset++] = grayColor;\n      }\n\n      return rgbData;\n    } else if (this.numComponents === 3 && this._isColorConversionNeeded) {\n      return this._convertYccToRgb(data);\n    } else if (this.numComponents === 4) {\n      if (this._isColorConversionNeeded) {\n        if (forceRGB) {\n          return this._convertYcckToRgb(data);\n        }\n\n        return this._convertYcckToCmyk(data);\n      } else if (forceRGB) {\n        return this._convertCmykToRgb(data);\n      }\n    }\n\n    return data;\n  }\n\n}\n\nexports.JpegImage = JpegImage;\n\n/***/ }),\n/* 39 */\n/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {\n\n\n\nObject.defineProperty(exports, \"__esModule\", ({\n  value: true\n}));\nexports.JpxStream = void 0;\n\nvar _decode_stream = __w_pdfjs_require__(29);\n\nvar _jpx = __w_pdfjs_require__(40);\n\nvar _util = __w_pdfjs_require__(2);\n\nclass JpxStream extends _decode_stream.DecodeStream {\n  constructor(stream, maybeLength, params) {\n    super(maybeLength);\n    this.stream = stream;\n    this.dict = stream.dict;\n    this.maybeLength = maybeLength;\n    this.params = params;\n  }\n\n  get bytes() {\n    return (0, _util.shadow)(this, \"bytes\", this.stream.getBytes(this.maybeLength));\n  }\n\n  ensureBuffer(requested) {}\n\n  readBlock() {\n    if (this.eof) {\n      return;\n    }\n\n    const jpxImage = new _jpx.JpxImage();\n    jpxImage.parse(this.bytes);\n    const width = jpxImage.width;\n    const height = jpxImage.height;\n    const componentsCount = jpxImage.componentsCount;\n    const tileCount = jpxImage.tiles.length;\n\n    if (tileCount === 1) {\n      this.buffer = jpxImage.tiles[0].items;\n    } else {\n      const data = new Uint8ClampedArray(width * height * componentsCount);\n\n      for (let k = 0; k < tileCount; k++) {\n        const tileComponents = jpxImage.tiles[k];\n        const tileWidth = tileComponents.width;\n        const tileHeight = tileComponents.height;\n        const tileLeft = tileComponents.left;\n        const tileTop = tileComponents.top;\n        const src = tileComponents.items;\n        let srcPosition = 0;\n        let dataPosition = (width * tileTop + tileLeft) * componentsCount;\n        const imgRowSize = width * componentsCount;\n        const tileRowSize = tileWidth * componentsCount;\n\n        for (let j = 0; j < tileHeight; j++) {\n          const rowBytes = src.subarray(srcPosition, srcPosition + tileRowSize);\n          data.set(rowBytes, dataPosition);\n          srcPosition += tileRowSize;\n          dataPosition += imgRowSize;\n        }\n      }\n\n      this.buffer = data;\n    }\n\n    this.bufferLength = this.buffer.length;\n    this.eof = true;\n  }\n\n}\n\nexports.JpxStream = JpxStream;\n\n/***/ }),\n/* 40 */\n/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {\n\n\n\nObject.defineProperty(exports, \"__esModule\", ({\n  value: true\n}));\nexports.JpxImage = void 0;\n\nvar _util = __w_pdfjs_require__(2);\n\nvar _core_utils = __w_pdfjs_require__(8);\n\nvar _arithmetic_decoder = __w_pdfjs_require__(36);\n\nclass JpxError extends _util.BaseException {\n  constructor(msg) {\n    super(`JPX error: ${msg}`, \"JpxError\");\n  }\n\n}\n\nconst SubbandsGainLog2 = {\n  LL: 0,\n  LH: 1,\n  HL: 1,\n  HH: 2\n};\n\nclass JpxImage {\n  constructor() {\n    this.failOnCorruptedImage = false;\n  }\n\n  parse(data) {\n    const head = (0, _core_utils.readUint16)(data, 0);\n\n    if (head === 0xff4f) {\n      this.parseCodestream(data, 0, data.length);\n      return;\n    }\n\n    const length = data.length;\n    let position = 0;\n\n    while (position < length) {\n      let headerSize = 8;\n      let lbox = (0, _core_utils.readUint32)(data, position);\n      const tbox = (0, _core_utils.readUint32)(data, position + 4);\n      position += headerSize;\n\n      if (lbox === 1) {\n        lbox = (0, _core_utils.readUint32)(data, position) * 4294967296 + (0, _core_utils.readUint32)(data, position + 4);\n        position += 8;\n        headerSize += 8;\n      }\n\n      if (lbox === 0) {\n        lbox = length - position + headerSize;\n      }\n\n      if (lbox < headerSize) {\n        throw new JpxError(\"Invalid box field size\");\n      }\n\n      const dataLength = lbox - headerSize;\n      let jumpDataLength = true;\n\n      switch (tbox) {\n        case 0x6a703268:\n          jumpDataLength = false;\n          break;\n\n        case 0x636f6c72:\n          const method = data[position];\n\n          if (method === 1) {\n            const colorspace = (0, _core_utils.readUint32)(data, position + 3);\n\n            switch (colorspace) {\n              case 16:\n              case 17:\n              case 18:\n                break;\n\n              default:\n                (0, _util.warn)(\"Unknown colorspace \" + colorspace);\n                break;\n            }\n          } else if (method === 2) {\n            (0, _util.info)(\"ICC profile not supported\");\n          }\n\n          break;\n\n        case 0x6a703263:\n          this.parseCodestream(data, position, position + dataLength);\n          break;\n\n        case 0x6a502020:\n          if ((0, _core_utils.readUint32)(data, position) !== 0x0d0a870a) {\n            (0, _util.warn)(\"Invalid JP2 signature\");\n          }\n\n          break;\n\n        case 0x6a501a1a:\n        case 0x66747970:\n        case 0x72726571:\n        case 0x72657320:\n        case 0x69686472:\n          break;\n\n        default:\n          const headerType = String.fromCharCode(tbox >> 24 & 0xff, tbox >> 16 & 0xff, tbox >> 8 & 0xff, tbox & 0xff);\n          (0, _util.warn)(`Unsupported header type ${tbox} (${headerType}).`);\n          break;\n      }\n\n      if (jumpDataLength) {\n        position += dataLength;\n      }\n    }\n  }\n\n  parseImageProperties(stream) {\n    let newByte = stream.getByte();\n\n    while (newByte >= 0) {\n      const oldByte = newByte;\n      newByte = stream.getByte();\n      const code = oldByte << 8 | newByte;\n\n      if (code === 0xff51) {\n        stream.skip(4);\n        const Xsiz = stream.getInt32() >>> 0;\n        const Ysiz = stream.getInt32() >>> 0;\n        const XOsiz = stream.getInt32() >>> 0;\n        const YOsiz = stream.getInt32() >>> 0;\n        stream.skip(16);\n        const Csiz = stream.getUint16();\n        this.width = Xsiz - XOsiz;\n        this.height = Ysiz - YOsiz;\n        this.componentsCount = Csiz;\n        this.bitsPerComponent = 8;\n        return;\n      }\n    }\n\n    throw new JpxError(\"No size marker found in JPX stream\");\n  }\n\n  parseCodestream(data, start, end) {\n    const context = {};\n    let doNotRecover = false;\n\n    try {\n      let position = start;\n\n      while (position + 1 < end) {\n        const code = (0, _core_utils.readUint16)(data, position);\n        position += 2;\n        let length = 0,\n            j,\n            sqcd,\n            spqcds,\n            spqcdSize,\n            scalarExpounded,\n            tile;\n\n        switch (code) {\n          case 0xff4f:\n            context.mainHeader = true;\n            break;\n\n          case 0xffd9:\n            break;\n\n          case 0xff51:\n            length = (0, _core_utils.readUint16)(data, position);\n            const siz = {};\n            siz.Xsiz = (0, _core_utils.readUint32)(data, position + 4);\n            siz.Ysiz = (0, _core_utils.readUint32)(data, position + 8);\n            siz.XOsiz = (0, _core_utils.readUint32)(data, position + 12);\n            siz.YOsiz = (0, _core_utils.readUint32)(data, position + 16);\n            siz.XTsiz = (0, _core_utils.readUint32)(data, position + 20);\n            siz.YTsiz = (0, _core_utils.readUint32)(data, position + 24);\n            siz.XTOsiz = (0, _core_utils.readUint32)(data, position + 28);\n            siz.YTOsiz = (0, _core_utils.readUint32)(data, position + 32);\n            const componentsCount = (0, _core_utils.readUint16)(data, position + 36);\n            siz.Csiz = componentsCount;\n            const components = [];\n            j = position + 38;\n\n            for (let i = 0; i < componentsCount; i++) {\n              const component = {\n                precision: (data[j] & 0x7f) + 1,\n                isSigned: !!(data[j] & 0x80),\n                XRsiz: data[j + 1],\n                YRsiz: data[j + 2]\n              };\n              j += 3;\n              calculateComponentDimensions(component, siz);\n              components.push(component);\n            }\n\n            context.SIZ = siz;\n            context.components = components;\n            calculateTileGrids(context, components);\n            context.QCC = [];\n            context.COC = [];\n            break;\n\n          case 0xff5c:\n            length = (0, _core_utils.readUint16)(data, position);\n            const qcd = {};\n            j = position + 2;\n            sqcd = data[j++];\n\n            switch (sqcd & 0x1f) {\n              case 0:\n                spqcdSize = 8;\n                scalarExpounded = true;\n                break;\n\n              case 1:\n                spqcdSize = 16;\n                scalarExpounded = false;\n                break;\n\n              case 2:\n                spqcdSize = 16;\n                scalarExpounded = true;\n                break;\n\n              default:\n                throw new Error(\"Invalid SQcd value \" + sqcd);\n            }\n\n            qcd.noQuantization = spqcdSize === 8;\n            qcd.scalarExpounded = scalarExpounded;\n            qcd.guardBits = sqcd >> 5;\n            spqcds = [];\n\n            while (j < length + position) {\n              const spqcd = {};\n\n              if (spqcdSize === 8) {\n                spqcd.epsilon = data[j++] >> 3;\n                spqcd.mu = 0;\n              } else {\n                spqcd.epsilon = data[j] >> 3;\n                spqcd.mu = (data[j] & 0x7) << 8 | data[j + 1];\n                j += 2;\n              }\n\n              spqcds.push(spqcd);\n            }\n\n            qcd.SPqcds = spqcds;\n\n            if (context.mainHeader) {\n              context.QCD = qcd;\n            } else {\n              context.currentTile.QCD = qcd;\n              context.currentTile.QCC = [];\n            }\n\n            break;\n\n          case 0xff5d:\n            length = (0, _core_utils.readUint16)(data, position);\n            const qcc = {};\n            j = position + 2;\n            let cqcc;\n\n            if (context.SIZ.Csiz < 257) {\n              cqcc = data[j++];\n            } else {\n              cqcc = (0, _core_utils.readUint16)(data, j);\n              j += 2;\n            }\n\n            sqcd = data[j++];\n\n            switch (sqcd & 0x1f) {\n              case 0:\n                spqcdSize = 8;\n                scalarExpounded = true;\n                break;\n\n              case 1:\n                spqcdSize = 16;\n                scalarExpounded = false;\n                break;\n\n              case 2:\n                spqcdSize = 16;\n                scalarExpounded = true;\n                break;\n\n              default:\n                throw new Error(\"Invalid SQcd value \" + sqcd);\n            }\n\n            qcc.noQuantization = spqcdSize === 8;\n            qcc.scalarExpounded = scalarExpounded;\n            qcc.guardBits = sqcd >> 5;\n            spqcds = [];\n\n            while (j < length + position) {\n              const spqcd = {};\n\n              if (spqcdSize === 8) {\n                spqcd.epsilon = data[j++] >> 3;\n                spqcd.mu = 0;\n              } else {\n                spqcd.epsilon = data[j] >> 3;\n                spqcd.mu = (data[j] & 0x7) << 8 | data[j + 1];\n                j += 2;\n              }\n\n              spqcds.push(spqcd);\n            }\n\n            qcc.SPqcds = spqcds;\n\n            if (context.mainHeader) {\n              context.QCC[cqcc] = qcc;\n            } else {\n              context.currentTile.QCC[cqcc] = qcc;\n            }\n\n            break;\n\n          case 0xff52:\n            length = (0, _core_utils.readUint16)(data, position);\n            const cod = {};\n            j = position + 2;\n            const scod = data[j++];\n            cod.entropyCoderWithCustomPrecincts = !!(scod & 1);\n            cod.sopMarkerUsed = !!(scod & 2);\n            cod.ephMarkerUsed = !!(scod & 4);\n            cod.progressionOrder = data[j++];\n            cod.layersCount = (0, _core_utils.readUint16)(data, j);\n            j += 2;\n            cod.multipleComponentTransform = data[j++];\n            cod.decompositionLevelsCount = data[j++];\n            cod.xcb = (data[j++] & 0xf) + 2;\n            cod.ycb = (data[j++] & 0xf) + 2;\n            const blockStyle = data[j++];\n            cod.selectiveArithmeticCodingBypass = !!(blockStyle & 1);\n            cod.resetContextProbabilities = !!(blockStyle & 2);\n            cod.terminationOnEachCodingPass = !!(blockStyle & 4);\n            cod.verticallyStripe = !!(blockStyle & 8);\n            cod.predictableTermination = !!(blockStyle & 16);\n            cod.segmentationSymbolUsed = !!(blockStyle & 32);\n            cod.reversibleTransformation = data[j++];\n\n            if (cod.entropyCoderWithCustomPrecincts) {\n              const precinctsSizes = [];\n\n              while (j < length + position) {\n                const precinctsSize = data[j++];\n                precinctsSizes.push({\n                  PPx: precinctsSize & 0xf,\n                  PPy: precinctsSize >> 4\n                });\n              }\n\n              cod.precinctsSizes = precinctsSizes;\n            }\n\n            const unsupported = [];\n\n            if (cod.selectiveArithmeticCodingBypass) {\n              unsupported.push(\"selectiveArithmeticCodingBypass\");\n            }\n\n            if (cod.terminationOnEachCodingPass) {\n              unsupported.push(\"terminationOnEachCodingPass\");\n            }\n\n            if (cod.verticallyStripe) {\n              unsupported.push(\"verticallyStripe\");\n            }\n\n            if (cod.predictableTermination) {\n              unsupported.push(\"predictableTermination\");\n            }\n\n            if (unsupported.length > 0) {\n              doNotRecover = true;\n              (0, _util.warn)(`JPX: Unsupported COD options (${unsupported.join(\", \")}).`);\n            }\n\n            if (context.mainHeader) {\n              context.COD = cod;\n            } else {\n              context.currentTile.COD = cod;\n              context.currentTile.COC = [];\n            }\n\n            break;\n\n          case 0xff90:\n            length = (0, _core_utils.readUint16)(data, position);\n            tile = {};\n            tile.index = (0, _core_utils.readUint16)(data, position + 2);\n            tile.length = (0, _core_utils.readUint32)(data, position + 4);\n            tile.dataEnd = tile.length + position - 2;\n            tile.partIndex = data[position + 8];\n            tile.partsCount = data[position + 9];\n            context.mainHeader = false;\n\n            if (tile.partIndex === 0) {\n              tile.COD = context.COD;\n              tile.COC = context.COC.slice(0);\n              tile.QCD = context.QCD;\n              tile.QCC = context.QCC.slice(0);\n            }\n\n            context.currentTile = tile;\n            break;\n\n          case 0xff93:\n            tile = context.currentTile;\n\n            if (tile.partIndex === 0) {\n              initializeTile(context, tile.index);\n              buildPackets(context);\n            }\n\n            length = tile.dataEnd - position;\n            parseTilePackets(context, data, position, length);\n            break;\n\n          case 0xff53:\n            (0, _util.warn)(\"JPX: Codestream code 0xFF53 (COC) is not implemented.\");\n\n          case 0xff55:\n          case 0xff57:\n          case 0xff58:\n          case 0xff64:\n            length = (0, _core_utils.readUint16)(data, position);\n            break;\n\n          default:\n            throw new Error(\"Unknown codestream code: \" + code.toString(16));\n        }\n\n        position += length;\n      }\n    } catch (e) {\n      if (doNotRecover || this.failOnCorruptedImage) {\n        throw new JpxError(e.message);\n      } else {\n        (0, _util.warn)(`JPX: Trying to recover from: \"${e.message}\".`);\n      }\n    }\n\n    this.tiles = transformComponents(context);\n    this.width = context.SIZ.Xsiz - context.SIZ.XOsiz;\n    this.height = context.SIZ.Ysiz - context.SIZ.YOsiz;\n    this.componentsCount = context.SIZ.Csiz;\n  }\n\n}\n\nexports.JpxImage = JpxImage;\n\nfunction calculateComponentDimensions(component, siz) {\n  component.x0 = Math.ceil(siz.XOsiz / component.XRsiz);\n  component.x1 = Math.ceil(siz.Xsiz / component.XRsiz);\n  component.y0 = Math.ceil(siz.YOsiz / component.YRsiz);\n  component.y1 = Math.ceil(siz.Ysiz / component.YRsiz);\n  component.width = component.x1 - component.x0;\n  component.height = component.y1 - component.y0;\n}\n\nfunction calculateTileGrids(context, components) {\n  const siz = context.SIZ;\n  const tiles = [];\n  let tile;\n  const numXtiles = Math.ceil((siz.Xsiz - siz.XTOsiz) / siz.XTsiz);\n  const numYtiles = Math.ceil((siz.Ysiz - siz.YTOsiz) / siz.YTsiz);\n\n  for (let q = 0; q < numYtiles; q++) {\n    for (let p = 0; p < numXtiles; p++) {\n      tile = {};\n      tile.tx0 = Math.max(siz.XTOsiz + p * siz.XTsiz, siz.XOsiz);\n      tile.ty0 = Math.max(siz.YTOsiz + q * siz.YTsiz, siz.YOsiz);\n      tile.tx1 = Math.min(siz.XTOsiz + (p + 1) * siz.XTsiz, siz.Xsiz);\n      tile.ty1 = Math.min(siz.YTOsiz + (q + 1) * siz.YTsiz, siz.Ysiz);\n      tile.width = tile.tx1 - tile.tx0;\n      tile.height = tile.ty1 - tile.ty0;\n      tile.components = [];\n      tiles.push(tile);\n    }\n  }\n\n  context.tiles = tiles;\n  const componentsCount = siz.Csiz;\n\n  for (let i = 0, ii = componentsCount; i < ii; i++) {\n    const component = components[i];\n\n    for (let j = 0, jj = tiles.length; j < jj; j++) {\n      const tileComponent = {};\n      tile = tiles[j];\n      tileComponent.tcx0 = Math.ceil(tile.tx0 / component.XRsiz);\n      tileComponent.tcy0 = Math.ceil(tile.ty0 / component.YRsiz);\n      tileComponent.tcx1 = Math.ceil(tile.tx1 / component.XRsiz);\n      tileComponent.tcy1 = Math.ceil(tile.ty1 / component.YRsiz);\n      tileComponent.width = tileComponent.tcx1 - tileComponent.tcx0;\n      tileComponent.height = tileComponent.tcy1 - tileComponent.tcy0;\n      tile.components[i] = tileComponent;\n    }\n  }\n}\n\nfunction getBlocksDimensions(context, component, r) {\n  const codOrCoc = component.codingStyleParameters;\n  const result = {};\n\n  if (!codOrCoc.entropyCoderWithCustomPrecincts) {\n    result.PPx = 15;\n    result.PPy = 15;\n  } else {\n    result.PPx = codOrCoc.precinctsSizes[r].PPx;\n    result.PPy = codOrCoc.precinctsSizes[r].PPy;\n  }\n\n  result.xcb_ = r > 0 ? Math.min(codOrCoc.xcb, result.PPx - 1) : Math.min(codOrCoc.xcb, result.PPx);\n  result.ycb_ = r > 0 ? Math.min(codOrCoc.ycb, result.PPy - 1) : Math.min(codOrCoc.ycb, result.PPy);\n  return result;\n}\n\nfunction buildPrecincts(context, resolution, dimensions) {\n  const precinctWidth = 1 << dimensions.PPx;\n  const precinctHeight = 1 << dimensions.PPy;\n  const isZeroRes = resolution.resLevel === 0;\n  const precinctWidthInSubband = 1 << dimensions.PPx + (isZeroRes ? 0 : -1);\n  const precinctHeightInSubband = 1 << dimensions.PPy + (isZeroRes ? 0 : -1);\n  const numprecinctswide = resolution.trx1 > resolution.trx0 ? Math.ceil(resolution.trx1 / precinctWidth) - Math.floor(resolution.trx0 / precinctWidth) : 0;\n  const numprecinctshigh = resolution.try1 > resolution.try0 ? Math.ceil(resolution.try1 / precinctHeight) - Math.floor(resolution.try0 / precinctHeight) : 0;\n  const numprecincts = numprecinctswide * numprecinctshigh;\n  resolution.precinctParameters = {\n    precinctWidth,\n    precinctHeight,\n    numprecinctswide,\n    numprecinctshigh,\n    numprecincts,\n    precinctWidthInSubband,\n    precinctHeightInSubband\n  };\n}\n\nfunction buildCodeblocks(context, subband, dimensions) {\n  const xcb_ = dimensions.xcb_;\n  const ycb_ = dimensions.ycb_;\n  const codeblockWidth = 1 << xcb_;\n  const codeblockHeight = 1 << ycb_;\n  const cbx0 = subband.tbx0 >> xcb_;\n  const cby0 = subband.tby0 >> ycb_;\n  const cbx1 = subband.tbx1 + codeblockWidth - 1 >> xcb_;\n  const cby1 = subband.tby1 + codeblockHeight - 1 >> ycb_;\n  const precinctParameters = subband.resolution.precinctParameters;\n  const codeblocks = [];\n  const precincts = [];\n  let i, j, codeblock, precinctNumber;\n\n  for (j = cby0; j < cby1; j++) {\n    for (i = cbx0; i < cbx1; i++) {\n      codeblock = {\n        cbx: i,\n        cby: j,\n        tbx0: codeblockWidth * i,\n        tby0: codeblockHeight * j,\n        tbx1: codeblockWidth * (i + 1),\n        tby1: codeblockHeight * (j + 1)\n      };\n      codeblock.tbx0_ = Math.max(subband.tbx0, codeblock.tbx0);\n      codeblock.tby0_ = Math.max(subband.tby0, codeblock.tby0);\n      codeblock.tbx1_ = Math.min(subband.tbx1, codeblock.tbx1);\n      codeblock.tby1_ = Math.min(subband.tby1, codeblock.tby1);\n      const pi = Math.floor((codeblock.tbx0_ - subband.tbx0) / precinctParameters.precinctWidthInSubband);\n      const pj = Math.floor((codeblock.tby0_ - subband.tby0) / precinctParameters.precinctHeightInSubband);\n      precinctNumber = pi + pj * precinctParameters.numprecinctswide;\n      codeblock.precinctNumber = precinctNumber;\n      codeblock.subbandType = subband.type;\n      codeblock.Lblock = 3;\n\n      if (codeblock.tbx1_ <= codeblock.tbx0_ || codeblock.tby1_ <= codeblock.tby0_) {\n        continue;\n      }\n\n      codeblocks.push(codeblock);\n      let precinct = precincts[precinctNumber];\n\n      if (precinct !== undefined) {\n        if (i < precinct.cbxMin) {\n          precinct.cbxMin = i;\n        } else if (i > precinct.cbxMax) {\n          precinct.cbxMax = i;\n        }\n\n        if (j < precinct.cbyMin) {\n          precinct.cbxMin = j;\n        } else if (j > precinct.cbyMax) {\n          precinct.cbyMax = j;\n        }\n      } else {\n        precincts[precinctNumber] = precinct = {\n          cbxMin: i,\n          cbyMin: j,\n          cbxMax: i,\n          cbyMax: j\n        };\n      }\n\n      codeblock.precinct = precinct;\n    }\n  }\n\n  subband.codeblockParameters = {\n    codeblockWidth: xcb_,\n    codeblockHeight: ycb_,\n    numcodeblockwide: cbx1 - cbx0 + 1,\n    numcodeblockhigh: cby1 - cby0 + 1\n  };\n  subband.codeblocks = codeblocks;\n  subband.precincts = precincts;\n}\n\nfunction createPacket(resolution, precinctNumber, layerNumber) {\n  const precinctCodeblocks = [];\n  const subbands = resolution.subbands;\n\n  for (let i = 0, ii = subbands.length; i < ii; i++) {\n    const subband = subbands[i];\n    const codeblocks = subband.codeblocks;\n\n    for (let j = 0, jj = codeblocks.length; j < jj; j++) {\n      const codeblock = codeblocks[j];\n\n      if (codeblock.precinctNumber !== precinctNumber) {\n        continue;\n      }\n\n      precinctCodeblocks.push(codeblock);\n    }\n  }\n\n  return {\n    layerNumber,\n    codeblocks: precinctCodeblocks\n  };\n}\n\nfunction LayerResolutionComponentPositionIterator(context) {\n  const siz = context.SIZ;\n  const tileIndex = context.currentTile.index;\n  const tile = context.tiles[tileIndex];\n  const layersCount = tile.codingStyleDefaultParameters.layersCount;\n  const componentsCount = siz.Csiz;\n  let maxDecompositionLevelsCount = 0;\n\n  for (let q = 0; q < componentsCount; q++) {\n    maxDecompositionLevelsCount = Math.max(maxDecompositionLevelsCount, tile.components[q].codingStyleParameters.decompositionLevelsCount);\n  }\n\n  let l = 0,\n      r = 0,\n      i = 0,\n      k = 0;\n\n  this.nextPacket = function JpxImage_nextPacket() {\n    for (; l < layersCount; l++) {\n      for (; r <= maxDecompositionLevelsCount; r++) {\n        for (; i < componentsCount; i++) {\n          const component = tile.components[i];\n\n          if (r > component.codingStyleParameters.decompositionLevelsCount) {\n            continue;\n          }\n\n          const resolution = component.resolutions[r];\n          const numprecincts = resolution.precinctParameters.numprecincts;\n\n          for (; k < numprecincts;) {\n            const packet = createPacket(resolution, k, l);\n            k++;\n            return packet;\n          }\n\n          k = 0;\n        }\n\n        i = 0;\n      }\n\n      r = 0;\n    }\n\n    throw new JpxError(\"Out of packets\");\n  };\n}\n\nfunction ResolutionLayerComponentPositionIterator(context) {\n  const siz = context.SIZ;\n  const tileIndex = context.currentTile.index;\n  const tile = context.tiles[tileIndex];\n  const layersCount = tile.codingStyleDefaultParameters.layersCount;\n  const componentsCount = siz.Csiz;\n  let maxDecompositionLevelsCount = 0;\n\n  for (let q = 0; q < componentsCount; q++) {\n    maxDecompositionLevelsCount = Math.max(maxDecompositionLevelsCount, tile.components[q].codingStyleParameters.decompositionLevelsCount);\n  }\n\n  let r = 0,\n      l = 0,\n      i = 0,\n      k = 0;\n\n  this.nextPacket = function JpxImage_nextPacket() {\n    for (; r <= maxDecompositionLevelsCount; r++) {\n      for (; l < layersCount; l++) {\n        for (; i < componentsCount; i++) {\n          const component = tile.components[i];\n\n          if (r > component.codingStyleParameters.decompositionLevelsCount) {\n            continue;\n          }\n\n          const resolution = component.resolutions[r];\n          const numprecincts = resolution.precinctParameters.numprecincts;\n\n          for (; k < numprecincts;) {\n            const packet = createPacket(resolution, k, l);\n            k++;\n            return packet;\n          }\n\n          k = 0;\n        }\n\n        i = 0;\n      }\n\n      l = 0;\n    }\n\n    throw new JpxError(\"Out of packets\");\n  };\n}\n\nfunction ResolutionPositionComponentLayerIterator(context) {\n  const siz = context.SIZ;\n  const tileIndex = context.currentTile.index;\n  const tile = context.tiles[tileIndex];\n  const layersCount = tile.codingStyleDefaultParameters.layersCount;\n  const componentsCount = siz.Csiz;\n  let l, r, c, p;\n  let maxDecompositionLevelsCount = 0;\n\n  for (c = 0; c < componentsCount; c++) {\n    const component = tile.components[c];\n    maxDecompositionLevelsCount = Math.max(maxDecompositionLevelsCount, component.codingStyleParameters.decompositionLevelsCount);\n  }\n\n  const maxNumPrecinctsInLevel = new Int32Array(maxDecompositionLevelsCount + 1);\n\n  for (r = 0; r <= maxDecompositionLevelsCount; ++r) {\n    let maxNumPrecincts = 0;\n\n    for (c = 0; c < componentsCount; ++c) {\n      const resolutions = tile.components[c].resolutions;\n\n      if (r < resolutions.length) {\n        maxNumPrecincts = Math.max(maxNumPrecincts, resolutions[r].precinctParameters.numprecincts);\n      }\n    }\n\n    maxNumPrecinctsInLevel[r] = maxNumPrecincts;\n  }\n\n  l = 0;\n  r = 0;\n  c = 0;\n  p = 0;\n\n  this.nextPacket = function JpxImage_nextPacket() {\n    for (; r <= maxDecompositionLevelsCount; r++) {\n      for (; p < maxNumPrecinctsInLevel[r]; p++) {\n        for (; c < componentsCount; c++) {\n          const component = tile.components[c];\n\n          if (r > component.codingStyleParameters.decompositionLevelsCount) {\n            continue;\n          }\n\n          const resolution = component.resolutions[r];\n          const numprecincts = resolution.precinctParameters.numprecincts;\n\n          if (p >= numprecincts) {\n            continue;\n          }\n\n          for (; l < layersCount;) {\n            const packet = createPacket(resolution, p, l);\n            l++;\n            return packet;\n          }\n\n          l = 0;\n        }\n\n        c = 0;\n      }\n\n      p = 0;\n    }\n\n    throw new JpxError(\"Out of packets\");\n  };\n}\n\nfunction PositionComponentResolutionLayerIterator(context) {\n  const siz = context.SIZ;\n  const tileIndex = context.currentTile.index;\n  const tile = context.tiles[tileIndex];\n  const layersCount = tile.codingStyleDefaultParameters.layersCount;\n  const componentsCount = siz.Csiz;\n  const precinctsSizes = getPrecinctSizesInImageScale(tile);\n  const precinctsIterationSizes = precinctsSizes;\n  let l = 0,\n      r = 0,\n      c = 0,\n      px = 0,\n      py = 0;\n\n  this.nextPacket = function JpxImage_nextPacket() {\n    for (; py < precinctsIterationSizes.maxNumHigh; py++) {\n      for (; px < precinctsIterationSizes.maxNumWide; px++) {\n        for (; c < componentsCount; c++) {\n          const component = tile.components[c];\n          const decompositionLevelsCount = component.codingStyleParameters.decompositionLevelsCount;\n\n          for (; r <= decompositionLevelsCount; r++) {\n            const resolution = component.resolutions[r];\n            const sizeInImageScale = precinctsSizes.components[c].resolutions[r];\n            const k = getPrecinctIndexIfExist(px, py, sizeInImageScale, precinctsIterationSizes, resolution);\n\n            if (k === null) {\n              continue;\n            }\n\n            for (; l < layersCount;) {\n              const packet = createPacket(resolution, k, l);\n              l++;\n              return packet;\n            }\n\n            l = 0;\n          }\n\n          r = 0;\n        }\n\n        c = 0;\n      }\n\n      px = 0;\n    }\n\n    throw new JpxError(\"Out of packets\");\n  };\n}\n\nfunction ComponentPositionResolutionLayerIterator(context) {\n  const siz = context.SIZ;\n  const tileIndex = context.currentTile.index;\n  const tile = context.tiles[tileIndex];\n  const layersCount = tile.codingStyleDefaultParameters.layersCount;\n  const componentsCount = siz.Csiz;\n  const precinctsSizes = getPrecinctSizesInImageScale(tile);\n  let l = 0,\n      r = 0,\n      c = 0,\n      px = 0,\n      py = 0;\n\n  this.nextPacket = function JpxImage_nextPacket() {\n    for (; c < componentsCount; ++c) {\n      const component = tile.components[c];\n      const precinctsIterationSizes = precinctsSizes.components[c];\n      const decompositionLevelsCount = component.codingStyleParameters.decompositionLevelsCount;\n\n      for (; py < precinctsIterationSizes.maxNumHigh; py++) {\n        for (; px < precinctsIterationSizes.maxNumWide; px++) {\n          for (; r <= decompositionLevelsCount; r++) {\n            const resolution = component.resolutions[r];\n            const sizeInImageScale = precinctsIterationSizes.resolutions[r];\n            const k = getPrecinctIndexIfExist(px, py, sizeInImageScale, precinctsIterationSizes, resolution);\n\n            if (k === null) {\n              continue;\n            }\n\n            for (; l < layersCount;) {\n              const packet = createPacket(resolution, k, l);\n              l++;\n              return packet;\n            }\n\n            l = 0;\n          }\n\n          r = 0;\n        }\n\n        px = 0;\n      }\n\n      py = 0;\n    }\n\n    throw new JpxError(\"Out of packets\");\n  };\n}\n\nfunction getPrecinctIndexIfExist(pxIndex, pyIndex, sizeInImageScale, precinctIterationSizes, resolution) {\n  const posX = pxIndex * precinctIterationSizes.minWidth;\n  const posY = pyIndex * precinctIterationSizes.minHeight;\n\n  if (posX % sizeInImageScale.width !== 0 || posY % sizeInImageScale.height !== 0) {\n    return null;\n  }\n\n  const startPrecinctRowIndex = posY / sizeInImageScale.width * resolution.precinctParameters.numprecinctswide;\n  return posX / sizeInImageScale.height + startPrecinctRowIndex;\n}\n\nfunction getPrecinctSizesInImageScale(tile) {\n  const componentsCount = tile.components.length;\n  let minWidth = Number.MAX_VALUE;\n  let minHeight = Number.MAX_VALUE;\n  let maxNumWide = 0;\n  let maxNumHigh = 0;\n  const sizePerComponent = new Array(componentsCount);\n\n  for (let c = 0; c < componentsCount; c++) {\n    const component = tile.components[c];\n    const decompositionLevelsCount = component.codingStyleParameters.decompositionLevelsCount;\n    const sizePerResolution = new Array(decompositionLevelsCount + 1);\n    let minWidthCurrentComponent = Number.MAX_VALUE;\n    let minHeightCurrentComponent = Number.MAX_VALUE;\n    let maxNumWideCurrentComponent = 0;\n    let maxNumHighCurrentComponent = 0;\n    let scale = 1;\n\n    for (let r = decompositionLevelsCount; r >= 0; --r) {\n      const resolution = component.resolutions[r];\n      const widthCurrentResolution = scale * resolution.precinctParameters.precinctWidth;\n      const heightCurrentResolution = scale * resolution.precinctParameters.precinctHeight;\n      minWidthCurrentComponent = Math.min(minWidthCurrentComponent, widthCurrentResolution);\n      minHeightCurrentComponent = Math.min(minHeightCurrentComponent, heightCurrentResolution);\n      maxNumWideCurrentComponent = Math.max(maxNumWideCurrentComponent, resolution.precinctParameters.numprecinctswide);\n      maxNumHighCurrentComponent = Math.max(maxNumHighCurrentComponent, resolution.precinctParameters.numprecinctshigh);\n      sizePerResolution[r] = {\n        width: widthCurrentResolution,\n        height: heightCurrentResolution\n      };\n      scale <<= 1;\n    }\n\n    minWidth = Math.min(minWidth, minWidthCurrentComponent);\n    minHeight = Math.min(minHeight, minHeightCurrentComponent);\n    maxNumWide = Math.max(maxNumWide, maxNumWideCurrentComponent);\n    maxNumHigh = Math.max(maxNumHigh, maxNumHighCurrentComponent);\n    sizePerComponent[c] = {\n      resolutions: sizePerResolution,\n      minWidth: minWidthCurrentComponent,\n      minHeight: minHeightCurrentComponent,\n      maxNumWide: maxNumWideCurrentComponent,\n      maxNumHigh: maxNumHighCurrentComponent\n    };\n  }\n\n  return {\n    components: sizePerComponent,\n    minWidth,\n    minHeight,\n    maxNumWide,\n    maxNumHigh\n  };\n}\n\nfunction buildPackets(context) {\n  const siz = context.SIZ;\n  const tileIndex = context.currentTile.index;\n  const tile = context.tiles[tileIndex];\n  const componentsCount = siz.Csiz;\n\n  for (let c = 0; c < componentsCount; c++) {\n    const component = tile.components[c];\n    const decompositionLevelsCount = component.codingStyleParameters.decompositionLevelsCount;\n    const resolutions = [];\n    const subbands = [];\n\n    for (let r = 0; r <= decompositionLevelsCount; r++) {\n      const blocksDimensions = getBlocksDimensions(context, component, r);\n      const resolution = {};\n      const scale = 1 << decompositionLevelsCount - r;\n      resolution.trx0 = Math.ceil(component.tcx0 / scale);\n      resolution.try0 = Math.ceil(component.tcy0 / scale);\n      resolution.trx1 = Math.ceil(component.tcx1 / scale);\n      resolution.try1 = Math.ceil(component.tcy1 / scale);\n      resolution.resLevel = r;\n      buildPrecincts(context, resolution, blocksDimensions);\n      resolutions.push(resolution);\n      let subband;\n\n      if (r === 0) {\n        subband = {};\n        subband.type = \"LL\";\n        subband.tbx0 = Math.ceil(component.tcx0 / scale);\n        subband.tby0 = Math.ceil(component.tcy0 / scale);\n        subband.tbx1 = Math.ceil(component.tcx1 / scale);\n        subband.tby1 = Math.ceil(component.tcy1 / scale);\n        subband.resolution = resolution;\n        buildCodeblocks(context, subband, blocksDimensions);\n        subbands.push(subband);\n        resolution.subbands = [subband];\n      } else {\n        const bscale = 1 << decompositionLevelsCount - r + 1;\n        const resolutionSubbands = [];\n        subband = {};\n        subband.type = \"HL\";\n        subband.tbx0 = Math.ceil(component.tcx0 / bscale - 0.5);\n        subband.tby0 = Math.ceil(component.tcy0 / bscale);\n        subband.tbx1 = Math.ceil(component.tcx1 / bscale - 0.5);\n        subband.tby1 = Math.ceil(component.tcy1 / bscale);\n        subband.resolution = resolution;\n        buildCodeblocks(context, subband, blocksDimensions);\n        subbands.push(subband);\n        resolutionSubbands.push(subband);\n        subband = {};\n        subband.type = \"LH\";\n        subband.tbx0 = Math.ceil(component.tcx0 / bscale);\n        subband.tby0 = Math.ceil(component.tcy0 / bscale - 0.5);\n        subband.tbx1 = Math.ceil(component.tcx1 / bscale);\n        subband.tby1 = Math.ceil(component.tcy1 / bscale - 0.5);\n        subband.resolution = resolution;\n        buildCodeblocks(context, subband, blocksDimensions);\n        subbands.push(subband);\n        resolutionSubbands.push(subband);\n        subband = {};\n        subband.type = \"HH\";\n        subband.tbx0 = Math.ceil(component.tcx0 / bscale - 0.5);\n        subband.tby0 = Math.ceil(component.tcy0 / bscale - 0.5);\n        subband.tbx1 = Math.ceil(component.tcx1 / bscale - 0.5);\n        subband.tby1 = Math.ceil(component.tcy1 / bscale - 0.5);\n        subband.resolution = resolution;\n        buildCodeblocks(context, subband, blocksDimensions);\n        subbands.push(subband);\n        resolutionSubbands.push(subband);\n        resolution.subbands = resolutionSubbands;\n      }\n    }\n\n    component.resolutions = resolutions;\n    component.subbands = subbands;\n  }\n\n  const progressionOrder = tile.codingStyleDefaultParameters.progressionOrder;\n\n  switch (progressionOrder) {\n    case 0:\n      tile.packetsIterator = new LayerResolutionComponentPositionIterator(context);\n      break;\n\n    case 1:\n      tile.packetsIterator = new ResolutionLayerComponentPositionIterator(context);\n      break;\n\n    case 2:\n      tile.packetsIterator = new ResolutionPositionComponentLayerIterator(context);\n      break;\n\n    case 3:\n      tile.packetsIterator = new PositionComponentResolutionLayerIterator(context);\n      break;\n\n    case 4:\n      tile.packetsIterator = new ComponentPositionResolutionLayerIterator(context);\n      break;\n\n    default:\n      throw new JpxError(`Unsupported progression order ${progressionOrder}`);\n  }\n}\n\nfunction parseTilePackets(context, data, offset, dataLength) {\n  let position = 0;\n  let buffer,\n      bufferSize = 0,\n      skipNextBit = false;\n\n  function readBits(count) {\n    while (bufferSize < count) {\n      const b = data[offset + position];\n      position++;\n\n      if (skipNextBit) {\n        buffer = buffer << 7 | b;\n        bufferSize += 7;\n        skipNextBit = false;\n      } else {\n        buffer = buffer << 8 | b;\n        bufferSize += 8;\n      }\n\n      if (b === 0xff) {\n        skipNextBit = true;\n      }\n    }\n\n    bufferSize -= count;\n    return buffer >>> bufferSize & (1 << count) - 1;\n  }\n\n  function skipMarkerIfEqual(value) {\n    if (data[offset + position - 1] === 0xff && data[offset + position] === value) {\n      skipBytes(1);\n      return true;\n    } else if (data[offset + position] === 0xff && data[offset + position + 1] === value) {\n      skipBytes(2);\n      return true;\n    }\n\n    return false;\n  }\n\n  function skipBytes(count) {\n    position += count;\n  }\n\n  function alignToByte() {\n    bufferSize = 0;\n\n    if (skipNextBit) {\n      position++;\n      skipNextBit = false;\n    }\n  }\n\n  function readCodingpasses() {\n    if (readBits(1) === 0) {\n      return 1;\n    }\n\n    if (readBits(1) === 0) {\n      return 2;\n    }\n\n    let value = readBits(2);\n\n    if (value < 3) {\n      return value + 3;\n    }\n\n    value = readBits(5);\n\n    if (value < 31) {\n      return value + 6;\n    }\n\n    value = readBits(7);\n    return value + 37;\n  }\n\n  const tileIndex = context.currentTile.index;\n  const tile = context.tiles[tileIndex];\n  const sopMarkerUsed = context.COD.sopMarkerUsed;\n  const ephMarkerUsed = context.COD.ephMarkerUsed;\n  const packetsIterator = tile.packetsIterator;\n\n  while (position < dataLength) {\n    alignToByte();\n\n    if (sopMarkerUsed && skipMarkerIfEqual(0x91)) {\n      skipBytes(4);\n    }\n\n    const packet = packetsIterator.nextPacket();\n\n    if (!readBits(1)) {\n      continue;\n    }\n\n    const layerNumber = packet.layerNumber,\n          queue = [];\n    let codeblock;\n\n    for (let i = 0, ii = packet.codeblocks.length; i < ii; i++) {\n      codeblock = packet.codeblocks[i];\n      let precinct = codeblock.precinct;\n      const codeblockColumn = codeblock.cbx - precinct.cbxMin;\n      const codeblockRow = codeblock.cby - precinct.cbyMin;\n      let codeblockIncluded = false;\n      let firstTimeInclusion = false;\n      let valueReady, zeroBitPlanesTree;\n\n      if (codeblock.included !== undefined) {\n        codeblockIncluded = !!readBits(1);\n      } else {\n        precinct = codeblock.precinct;\n        let inclusionTree;\n\n        if (precinct.inclusionTree !== undefined) {\n          inclusionTree = precinct.inclusionTree;\n        } else {\n          const width = precinct.cbxMax - precinct.cbxMin + 1;\n          const height = precinct.cbyMax - precinct.cbyMin + 1;\n          inclusionTree = new InclusionTree(width, height, layerNumber);\n          zeroBitPlanesTree = new TagTree(width, height);\n          precinct.inclusionTree = inclusionTree;\n          precinct.zeroBitPlanesTree = zeroBitPlanesTree;\n\n          for (let l = 0; l < layerNumber; l++) {\n            if (readBits(1) !== 0) {\n              throw new JpxError(\"Invalid tag tree\");\n            }\n          }\n        }\n\n        if (inclusionTree.reset(codeblockColumn, codeblockRow, layerNumber)) {\n          while (true) {\n            if (readBits(1)) {\n              valueReady = !inclusionTree.nextLevel();\n\n              if (valueReady) {\n                codeblock.included = true;\n                codeblockIncluded = firstTimeInclusion = true;\n                break;\n              }\n            } else {\n              inclusionTree.incrementValue(layerNumber);\n              break;\n            }\n          }\n        }\n      }\n\n      if (!codeblockIncluded) {\n        continue;\n      }\n\n      if (firstTimeInclusion) {\n        zeroBitPlanesTree = precinct.zeroBitPlanesTree;\n        zeroBitPlanesTree.reset(codeblockColumn, codeblockRow);\n\n        while (true) {\n          if (readBits(1)) {\n            valueReady = !zeroBitPlanesTree.nextLevel();\n\n            if (valueReady) {\n              break;\n            }\n          } else {\n            zeroBitPlanesTree.incrementValue();\n          }\n        }\n\n        codeblock.zeroBitPlanes = zeroBitPlanesTree.value;\n      }\n\n      const codingpasses = readCodingpasses();\n\n      while (readBits(1)) {\n        codeblock.Lblock++;\n      }\n\n      const codingpassesLog2 = (0, _core_utils.log2)(codingpasses);\n      const bits = (codingpasses < 1 << codingpassesLog2 ? codingpassesLog2 - 1 : codingpassesLog2) + codeblock.Lblock;\n      const codedDataLength = readBits(bits);\n      queue.push({\n        codeblock,\n        codingpasses,\n        dataLength: codedDataLength\n      });\n    }\n\n    alignToByte();\n\n    if (ephMarkerUsed) {\n      skipMarkerIfEqual(0x92);\n    }\n\n    while (queue.length > 0) {\n      const packetItem = queue.shift();\n      codeblock = packetItem.codeblock;\n\n      if (codeblock.data === undefined) {\n        codeblock.data = [];\n      }\n\n      codeblock.data.push({\n        data,\n        start: offset + position,\n        end: offset + position + packetItem.dataLength,\n        codingpasses: packetItem.codingpasses\n      });\n      position += packetItem.dataLength;\n    }\n  }\n\n  return position;\n}\n\nfunction copyCoefficients(coefficients, levelWidth, levelHeight, subband, delta, mb, reversible, segmentationSymbolUsed, resetContextProbabilities) {\n  const x0 = subband.tbx0;\n  const y0 = subband.tby0;\n  const width = subband.tbx1 - subband.tbx0;\n  const codeblocks = subband.codeblocks;\n  const right = subband.type.charAt(0) === \"H\" ? 1 : 0;\n  const bottom = subband.type.charAt(1) === \"H\" ? levelWidth : 0;\n\n  for (let i = 0, ii = codeblocks.length; i < ii; ++i) {\n    const codeblock = codeblocks[i];\n    const blockWidth = codeblock.tbx1_ - codeblock.tbx0_;\n    const blockHeight = codeblock.tby1_ - codeblock.tby0_;\n\n    if (blockWidth === 0 || blockHeight === 0) {\n      continue;\n    }\n\n    if (codeblock.data === undefined) {\n      continue;\n    }\n\n    const bitModel = new BitModel(blockWidth, blockHeight, codeblock.subbandType, codeblock.zeroBitPlanes, mb);\n    let currentCodingpassType = 2;\n    const data = codeblock.data;\n    let totalLength = 0,\n        codingpasses = 0;\n    let j, jj, dataItem;\n\n    for (j = 0, jj = data.length; j < jj; j++) {\n      dataItem = data[j];\n      totalLength += dataItem.end - dataItem.start;\n      codingpasses += dataItem.codingpasses;\n    }\n\n    const encodedData = new Uint8Array(totalLength);\n    let position = 0;\n\n    for (j = 0, jj = data.length; j < jj; j++) {\n      dataItem = data[j];\n      const chunk = dataItem.data.subarray(dataItem.start, dataItem.end);\n      encodedData.set(chunk, position);\n      position += chunk.length;\n    }\n\n    const decoder = new _arithmetic_decoder.ArithmeticDecoder(encodedData, 0, totalLength);\n    bitModel.setDecoder(decoder);\n\n    for (j = 0; j < codingpasses; j++) {\n      switch (currentCodingpassType) {\n        case 0:\n          bitModel.runSignificancePropagationPass();\n          break;\n\n        case 1:\n          bitModel.runMagnitudeRefinementPass();\n          break;\n\n        case 2:\n          bitModel.runCleanupPass();\n\n          if (segmentationSymbolUsed) {\n            bitModel.checkSegmentationSymbol();\n          }\n\n          break;\n      }\n\n      if (resetContextProbabilities) {\n        bitModel.reset();\n      }\n\n      currentCodingpassType = (currentCodingpassType + 1) % 3;\n    }\n\n    let offset = codeblock.tbx0_ - x0 + (codeblock.tby0_ - y0) * width;\n    const sign = bitModel.coefficentsSign;\n    const magnitude = bitModel.coefficentsMagnitude;\n    const bitsDecoded = bitModel.bitsDecoded;\n    const magnitudeCorrection = reversible ? 0 : 0.5;\n    let k, n, nb;\n    position = 0;\n    const interleave = subband.type !== \"LL\";\n\n    for (j = 0; j < blockHeight; j++) {\n      const row = offset / width | 0;\n      const levelOffset = 2 * row * (levelWidth - width) + right + bottom;\n\n      for (k = 0; k < blockWidth; k++) {\n        n = magnitude[position];\n\n        if (n !== 0) {\n          n = (n + magnitudeCorrection) * delta;\n\n          if (sign[position] !== 0) {\n            n = -n;\n          }\n\n          nb = bitsDecoded[position];\n          const pos = interleave ? levelOffset + (offset << 1) : offset;\n\n          if (reversible && nb >= mb) {\n            coefficients[pos] = n;\n          } else {\n            coefficients[pos] = n * (1 << mb - nb);\n          }\n        }\n\n        offset++;\n        position++;\n      }\n\n      offset += width - blockWidth;\n    }\n  }\n}\n\nfunction transformTile(context, tile, c) {\n  const component = tile.components[c];\n  const codingStyleParameters = component.codingStyleParameters;\n  const quantizationParameters = component.quantizationParameters;\n  const decompositionLevelsCount = codingStyleParameters.decompositionLevelsCount;\n  const spqcds = quantizationParameters.SPqcds;\n  const scalarExpounded = quantizationParameters.scalarExpounded;\n  const guardBits = quantizationParameters.guardBits;\n  const segmentationSymbolUsed = codingStyleParameters.segmentationSymbolUsed;\n  const resetContextProbabilities = codingStyleParameters.resetContextProbabilities;\n  const precision = context.components[c].precision;\n  const reversible = codingStyleParameters.reversibleTransformation;\n  const transform = reversible ? new ReversibleTransform() : new IrreversibleTransform();\n  const subbandCoefficients = [];\n  let b = 0;\n\n  for (let i = 0; i <= decompositionLevelsCount; i++) {\n    const resolution = component.resolutions[i];\n    const width = resolution.trx1 - resolution.trx0;\n    const height = resolution.try1 - resolution.try0;\n    const coefficients = new Float32Array(width * height);\n\n    for (let j = 0, jj = resolution.subbands.length; j < jj; j++) {\n      let mu, epsilon;\n\n      if (!scalarExpounded) {\n        mu = spqcds[0].mu;\n        epsilon = spqcds[0].epsilon + (i > 0 ? 1 - i : 0);\n      } else {\n        mu = spqcds[b].mu;\n        epsilon = spqcds[b].epsilon;\n        b++;\n      }\n\n      const subband = resolution.subbands[j];\n      const gainLog2 = SubbandsGainLog2[subband.type];\n      const delta = reversible ? 1 : 2 ** (precision + gainLog2 - epsilon) * (1 + mu / 2048);\n      const mb = guardBits + epsilon - 1;\n      copyCoefficients(coefficients, width, height, subband, delta, mb, reversible, segmentationSymbolUsed, resetContextProbabilities);\n    }\n\n    subbandCoefficients.push({\n      width,\n      height,\n      items: coefficients\n    });\n  }\n\n  const result = transform.calculate(subbandCoefficients, component.tcx0, component.tcy0);\n  return {\n    left: component.tcx0,\n    top: component.tcy0,\n    width: result.width,\n    height: result.height,\n    items: result.items\n  };\n}\n\nfunction transformComponents(context) {\n  const siz = context.SIZ;\n  const components = context.components;\n  const componentsCount = siz.Csiz;\n  const resultImages = [];\n\n  for (let i = 0, ii = context.tiles.length; i < ii; i++) {\n    const tile = context.tiles[i];\n    const transformedTiles = [];\n\n    for (let c = 0; c < componentsCount; c++) {\n      transformedTiles[c] = transformTile(context, tile, c);\n    }\n\n    const tile0 = transformedTiles[0];\n    const out = new Uint8ClampedArray(tile0.items.length * componentsCount);\n    const result = {\n      left: tile0.left,\n      top: tile0.top,\n      width: tile0.width,\n      height: tile0.height,\n      items: out\n    };\n    let shift, offset;\n    let pos = 0,\n        j,\n        jj,\n        y0,\n        y1,\n        y2;\n\n    if (tile.codingStyleDefaultParameters.multipleComponentTransform) {\n      const fourComponents = componentsCount === 4;\n      const y0items = transformedTiles[0].items;\n      const y1items = transformedTiles[1].items;\n      const y2items = transformedTiles[2].items;\n      const y3items = fourComponents ? transformedTiles[3].items : null;\n      shift = components[0].precision - 8;\n      offset = (128 << shift) + 0.5;\n      const component0 = tile.components[0];\n      const alpha01 = componentsCount - 3;\n      jj = y0items.length;\n\n      if (!component0.codingStyleParameters.reversibleTransformation) {\n        for (j = 0; j < jj; j++, pos += alpha01) {\n          y0 = y0items[j] + offset;\n          y1 = y1items[j];\n          y2 = y2items[j];\n          out[pos++] = y0 + 1.402 * y2 >> shift;\n          out[pos++] = y0 - 0.34413 * y1 - 0.71414 * y2 >> shift;\n          out[pos++] = y0 + 1.772 * y1 >> shift;\n        }\n      } else {\n        for (j = 0; j < jj; j++, pos += alpha01) {\n          y0 = y0items[j] + offset;\n          y1 = y1items[j];\n          y2 = y2items[j];\n          const g = y0 - (y2 + y1 >> 2);\n          out[pos++] = g + y2 >> shift;\n          out[pos++] = g >> shift;\n          out[pos++] = g + y1 >> shift;\n        }\n      }\n\n      if (fourComponents) {\n        for (j = 0, pos = 3; j < jj; j++, pos += 4) {\n          out[pos] = y3items[j] + offset >> shift;\n        }\n      }\n    } else {\n      for (let c = 0; c < componentsCount; c++) {\n        const items = transformedTiles[c].items;\n        shift = components[c].precision - 8;\n        offset = (128 << shift) + 0.5;\n\n        for (pos = c, j = 0, jj = items.length; j < jj; j++) {\n          out[pos] = items[j] + offset >> shift;\n          pos += componentsCount;\n        }\n      }\n    }\n\n    resultImages.push(result);\n  }\n\n  return resultImages;\n}\n\nfunction initializeTile(context, tileIndex) {\n  const siz = context.SIZ;\n  const componentsCount = siz.Csiz;\n  const tile = context.tiles[tileIndex];\n\n  for (let c = 0; c < componentsCount; c++) {\n    const component = tile.components[c];\n    const qcdOrQcc = context.currentTile.QCC[c] !== undefined ? context.currentTile.QCC[c] : context.currentTile.QCD;\n    component.quantizationParameters = qcdOrQcc;\n    const codOrCoc = context.currentTile.COC[c] !== undefined ? context.currentTile.COC[c] : context.currentTile.COD;\n    component.codingStyleParameters = codOrCoc;\n  }\n\n  tile.codingStyleDefaultParameters = context.currentTile.COD;\n}\n\nclass TagTree {\n  constructor(width, height) {\n    const levelsLength = (0, _core_utils.log2)(Math.max(width, height)) + 1;\n    this.levels = [];\n\n    for (let i = 0; i < levelsLength; i++) {\n      const level = {\n        width,\n        height,\n        items: []\n      };\n      this.levels.push(level);\n      width = Math.ceil(width / 2);\n      height = Math.ceil(height / 2);\n    }\n  }\n\n  reset(i, j) {\n    let currentLevel = 0,\n        value = 0,\n        level;\n\n    while (currentLevel < this.levels.length) {\n      level = this.levels[currentLevel];\n      const index = i + j * level.width;\n\n      if (level.items[index] !== undefined) {\n        value = level.items[index];\n        break;\n      }\n\n      level.index = index;\n      i >>= 1;\n      j >>= 1;\n      currentLevel++;\n    }\n\n    currentLevel--;\n    level = this.levels[currentLevel];\n    level.items[level.index] = value;\n    this.currentLevel = currentLevel;\n    delete this.value;\n  }\n\n  incrementValue() {\n    const level = this.levels[this.currentLevel];\n    level.items[level.index]++;\n  }\n\n  nextLevel() {\n    let currentLevel = this.currentLevel;\n    let level = this.levels[currentLevel];\n    const value = level.items[level.index];\n    currentLevel--;\n\n    if (currentLevel < 0) {\n      this.value = value;\n      return false;\n    }\n\n    this.currentLevel = currentLevel;\n    level = this.levels[currentLevel];\n    level.items[level.index] = value;\n    return true;\n  }\n\n}\n\nclass InclusionTree {\n  constructor(width, height, defaultValue) {\n    const levelsLength = (0, _core_utils.log2)(Math.max(width, height)) + 1;\n    this.levels = [];\n\n    for (let i = 0; i < levelsLength; i++) {\n      const items = new Uint8Array(width * height);\n\n      for (let j = 0, jj = items.length; j < jj; j++) {\n        items[j] = defaultValue;\n      }\n\n      const level = {\n        width,\n        height,\n        items\n      };\n      this.levels.push(level);\n      width = Math.ceil(width / 2);\n      height = Math.ceil(height / 2);\n    }\n  }\n\n  reset(i, j, stopValue) {\n    let currentLevel = 0;\n\n    while (currentLevel < this.levels.length) {\n      const level = this.levels[currentLevel];\n      const index = i + j * level.width;\n      level.index = index;\n      const value = level.items[index];\n\n      if (value === 0xff) {\n        break;\n      }\n\n      if (value > stopValue) {\n        this.currentLevel = currentLevel;\n        this.propagateValues();\n        return false;\n      }\n\n      i >>= 1;\n      j >>= 1;\n      currentLevel++;\n    }\n\n    this.currentLevel = currentLevel - 1;\n    return true;\n  }\n\n  incrementValue(stopValue) {\n    const level = this.levels[this.currentLevel];\n    level.items[level.index] = stopValue + 1;\n    this.propagateValues();\n  }\n\n  propagateValues() {\n    let levelIndex = this.currentLevel;\n    let level = this.levels[levelIndex];\n    const currentValue = level.items[level.index];\n\n    while (--levelIndex >= 0) {\n      level = this.levels[levelIndex];\n      level.items[level.index] = currentValue;\n    }\n  }\n\n  nextLevel() {\n    let currentLevel = this.currentLevel;\n    let level = this.levels[currentLevel];\n    const value = level.items[level.index];\n    level.items[level.index] = 0xff;\n    currentLevel--;\n\n    if (currentLevel < 0) {\n      return false;\n    }\n\n    this.currentLevel = currentLevel;\n    level = this.levels[currentLevel];\n    level.items[level.index] = value;\n    return true;\n  }\n\n}\n\nconst BitModel = function BitModelClosure() {\n  const UNIFORM_CONTEXT = 17;\n  const RUNLENGTH_CONTEXT = 18;\n  const LLAndLHContextsLabel = new Uint8Array([0, 5, 8, 0, 3, 7, 8, 0, 4, 7, 8, 0, 0, 0, 0, 0, 1, 6, 8, 0, 3, 7, 8, 0, 4, 7, 8, 0, 0, 0, 0, 0, 2, 6, 8, 0, 3, 7, 8, 0, 4, 7, 8, 0, 0, 0, 0, 0, 2, 6, 8, 0, 3, 7, 8, 0, 4, 7, 8, 0, 0, 0, 0, 0, 2, 6, 8, 0, 3, 7, 8, 0, 4, 7, 8]);\n  const HLContextLabel = new Uint8Array([0, 3, 4, 0, 5, 7, 7, 0, 8, 8, 8, 0, 0, 0, 0, 0, 1, 3, 4, 0, 6, 7, 7, 0, 8, 8, 8, 0, 0, 0, 0, 0, 2, 3, 4, 0, 6, 7, 7, 0, 8, 8, 8, 0, 0, 0, 0, 0, 2, 3, 4, 0, 6, 7, 7, 0, 8, 8, 8, 0, 0, 0, 0, 0, 2, 3, 4, 0, 6, 7, 7, 0, 8, 8, 8]);\n  const HHContextLabel = new Uint8Array([0, 1, 2, 0, 1, 2, 2, 0, 2, 2, 2, 0, 0, 0, 0, 0, 3, 4, 5, 0, 4, 5, 5, 0, 5, 5, 5, 0, 0, 0, 0, 0, 6, 7, 7, 0, 7, 7, 7, 0, 7, 7, 7, 0, 0, 0, 0, 0, 8, 8, 8, 0, 8, 8, 8, 0, 8, 8, 8, 0, 0, 0, 0, 0, 8, 8, 8, 0, 8, 8, 8, 0, 8, 8, 8]);\n\n  class BitModel {\n    constructor(width, height, subband, zeroBitPlanes, mb) {\n      this.width = width;\n      this.height = height;\n      let contextLabelTable;\n\n      if (subband === \"HH\") {\n        contextLabelTable = HHContextLabel;\n      } else if (subband === \"HL\") {\n        contextLabelTable = HLContextLabel;\n      } else {\n        contextLabelTable = LLAndLHContextsLabel;\n      }\n\n      this.contextLabelTable = contextLabelTable;\n      const coefficientCount = width * height;\n      this.neighborsSignificance = new Uint8Array(coefficientCount);\n      this.coefficentsSign = new Uint8Array(coefficientCount);\n      let coefficentsMagnitude;\n\n      if (mb > 14) {\n        coefficentsMagnitude = new Uint32Array(coefficientCount);\n      } else if (mb > 6) {\n        coefficentsMagnitude = new Uint16Array(coefficientCount);\n      } else {\n        coefficentsMagnitude = new Uint8Array(coefficientCount);\n      }\n\n      this.coefficentsMagnitude = coefficentsMagnitude;\n      this.processingFlags = new Uint8Array(coefficientCount);\n      const bitsDecoded = new Uint8Array(coefficientCount);\n\n      if (zeroBitPlanes !== 0) {\n        for (let i = 0; i < coefficientCount; i++) {\n          bitsDecoded[i] = zeroBitPlanes;\n        }\n      }\n\n      this.bitsDecoded = bitsDecoded;\n      this.reset();\n    }\n\n    setDecoder(decoder) {\n      this.decoder = decoder;\n    }\n\n    reset() {\n      this.contexts = new Int8Array(19);\n      this.contexts[0] = 4 << 1 | 0;\n      this.contexts[UNIFORM_CONTEXT] = 46 << 1 | 0;\n      this.contexts[RUNLENGTH_CONTEXT] = 3 << 1 | 0;\n    }\n\n    setNeighborsSignificance(row, column, index) {\n      const neighborsSignificance = this.neighborsSignificance;\n      const width = this.width,\n            height = this.height;\n      const left = column > 0;\n      const right = column + 1 < width;\n      let i;\n\n      if (row > 0) {\n        i = index - width;\n\n        if (left) {\n          neighborsSignificance[i - 1] += 0x10;\n        }\n\n        if (right) {\n          neighborsSignificance[i + 1] += 0x10;\n        }\n\n        neighborsSignificance[i] += 0x04;\n      }\n\n      if (row + 1 < height) {\n        i = index + width;\n\n        if (left) {\n          neighborsSignificance[i - 1] += 0x10;\n        }\n\n        if (right) {\n          neighborsSignificance[i + 1] += 0x10;\n        }\n\n        neighborsSignificance[i] += 0x04;\n      }\n\n      if (left) {\n        neighborsSignificance[index - 1] += 0x01;\n      }\n\n      if (right) {\n        neighborsSignificance[index + 1] += 0x01;\n      }\n\n      neighborsSignificance[index] |= 0x80;\n    }\n\n    runSignificancePropagationPass() {\n      const decoder = this.decoder;\n      const width = this.width,\n            height = this.height;\n      const coefficentsMagnitude = this.coefficentsMagnitude;\n      const coefficentsSign = this.coefficentsSign;\n      const neighborsSignificance = this.neighborsSignificance;\n      const processingFlags = this.processingFlags;\n      const contexts = this.contexts;\n      const labels = this.contextLabelTable;\n      const bitsDecoded = this.bitsDecoded;\n      const processedInverseMask = ~1;\n      const processedMask = 1;\n      const firstMagnitudeBitMask = 2;\n\n      for (let i0 = 0; i0 < height; i0 += 4) {\n        for (let j = 0; j < width; j++) {\n          let index = i0 * width + j;\n\n          for (let i1 = 0; i1 < 4; i1++, index += width) {\n            const i = i0 + i1;\n\n            if (i >= height) {\n              break;\n            }\n\n            processingFlags[index] &= processedInverseMask;\n\n            if (coefficentsMagnitude[index] || !neighborsSignificance[index]) {\n              continue;\n            }\n\n            const contextLabel = labels[neighborsSignificance[index]];\n            const decision = decoder.readBit(contexts, contextLabel);\n\n            if (decision) {\n              const sign = this.decodeSignBit(i, j, index);\n              coefficentsSign[index] = sign;\n              coefficentsMagnitude[index] = 1;\n              this.setNeighborsSignificance(i, j, index);\n              processingFlags[index] |= firstMagnitudeBitMask;\n            }\n\n            bitsDecoded[index]++;\n            processingFlags[index] |= processedMask;\n          }\n        }\n      }\n    }\n\n    decodeSignBit(row, column, index) {\n      const width = this.width,\n            height = this.height;\n      const coefficentsMagnitude = this.coefficentsMagnitude;\n      const coefficentsSign = this.coefficentsSign;\n      let contribution, sign0, sign1, significance1;\n      let contextLabel, decoded;\n      significance1 = column > 0 && coefficentsMagnitude[index - 1] !== 0;\n\n      if (column + 1 < width && coefficentsMagnitude[index + 1] !== 0) {\n        sign1 = coefficentsSign[index + 1];\n\n        if (significance1) {\n          sign0 = coefficentsSign[index - 1];\n          contribution = 1 - sign1 - sign0;\n        } else {\n          contribution = 1 - sign1 - sign1;\n        }\n      } else if (significance1) {\n        sign0 = coefficentsSign[index - 1];\n        contribution = 1 - sign0 - sign0;\n      } else {\n        contribution = 0;\n      }\n\n      const horizontalContribution = 3 * contribution;\n      significance1 = row > 0 && coefficentsMagnitude[index - width] !== 0;\n\n      if (row + 1 < height && coefficentsMagnitude[index + width] !== 0) {\n        sign1 = coefficentsSign[index + width];\n\n        if (significance1) {\n          sign0 = coefficentsSign[index - width];\n          contribution = 1 - sign1 - sign0 + horizontalContribution;\n        } else {\n          contribution = 1 - sign1 - sign1 + horizontalContribution;\n        }\n      } else if (significance1) {\n        sign0 = coefficentsSign[index - width];\n        contribution = 1 - sign0 - sign0 + horizontalContribution;\n      } else {\n        contribution = horizontalContribution;\n      }\n\n      if (contribution >= 0) {\n        contextLabel = 9 + contribution;\n        decoded = this.decoder.readBit(this.contexts, contextLabel);\n      } else {\n        contextLabel = 9 - contribution;\n        decoded = this.decoder.readBit(this.contexts, contextLabel) ^ 1;\n      }\n\n      return decoded;\n    }\n\n    runMagnitudeRefinementPass() {\n      const decoder = this.decoder;\n      const width = this.width,\n            height = this.height;\n      const coefficentsMagnitude = this.coefficentsMagnitude;\n      const neighborsSignificance = this.neighborsSignificance;\n      const contexts = this.contexts;\n      const bitsDecoded = this.bitsDecoded;\n      const processingFlags = this.processingFlags;\n      const processedMask = 1;\n      const firstMagnitudeBitMask = 2;\n      const length = width * height;\n      const width4 = width * 4;\n\n      for (let index0 = 0, indexNext; index0 < length; index0 = indexNext) {\n        indexNext = Math.min(length, index0 + width4);\n\n        for (let j = 0; j < width; j++) {\n          for (let index = index0 + j; index < indexNext; index += width) {\n            if (!coefficentsMagnitude[index] || (processingFlags[index] & processedMask) !== 0) {\n              continue;\n            }\n\n            let contextLabel = 16;\n\n            if ((processingFlags[index] & firstMagnitudeBitMask) !== 0) {\n              processingFlags[index] ^= firstMagnitudeBitMask;\n              const significance = neighborsSignificance[index] & 127;\n              contextLabel = significance === 0 ? 15 : 14;\n            }\n\n            const bit = decoder.readBit(contexts, contextLabel);\n            coefficentsMagnitude[index] = coefficentsMagnitude[index] << 1 | bit;\n            bitsDecoded[index]++;\n            processingFlags[index] |= processedMask;\n          }\n        }\n      }\n    }\n\n    runCleanupPass() {\n      const decoder = this.decoder;\n      const width = this.width,\n            height = this.height;\n      const neighborsSignificance = this.neighborsSignificance;\n      const coefficentsMagnitude = this.coefficentsMagnitude;\n      const coefficentsSign = this.coefficentsSign;\n      const contexts = this.contexts;\n      const labels = this.contextLabelTable;\n      const bitsDecoded = this.bitsDecoded;\n      const processingFlags = this.processingFlags;\n      const processedMask = 1;\n      const firstMagnitudeBitMask = 2;\n      const oneRowDown = width;\n      const twoRowsDown = width * 2;\n      const threeRowsDown = width * 3;\n      let iNext;\n\n      for (let i0 = 0; i0 < height; i0 = iNext) {\n        iNext = Math.min(i0 + 4, height);\n        const indexBase = i0 * width;\n        const checkAllEmpty = i0 + 3 < height;\n\n        for (let j = 0; j < width; j++) {\n          const index0 = indexBase + j;\n          const allEmpty = checkAllEmpty && processingFlags[index0] === 0 && processingFlags[index0 + oneRowDown] === 0 && processingFlags[index0 + twoRowsDown] === 0 && processingFlags[index0 + threeRowsDown] === 0 && neighborsSignificance[index0] === 0 && neighborsSignificance[index0 + oneRowDown] === 0 && neighborsSignificance[index0 + twoRowsDown] === 0 && neighborsSignificance[index0 + threeRowsDown] === 0;\n          let i1 = 0,\n              index = index0;\n          let i = i0,\n              sign;\n\n          if (allEmpty) {\n            const hasSignificantCoefficent = decoder.readBit(contexts, RUNLENGTH_CONTEXT);\n\n            if (!hasSignificantCoefficent) {\n              bitsDecoded[index0]++;\n              bitsDecoded[index0 + oneRowDown]++;\n              bitsDecoded[index0 + twoRowsDown]++;\n              bitsDecoded[index0 + threeRowsDown]++;\n              continue;\n            }\n\n            i1 = decoder.readBit(contexts, UNIFORM_CONTEXT) << 1 | decoder.readBit(contexts, UNIFORM_CONTEXT);\n\n            if (i1 !== 0) {\n              i = i0 + i1;\n              index += i1 * width;\n            }\n\n            sign = this.decodeSignBit(i, j, index);\n            coefficentsSign[index] = sign;\n            coefficentsMagnitude[index] = 1;\n            this.setNeighborsSignificance(i, j, index);\n            processingFlags[index] |= firstMagnitudeBitMask;\n            index = index0;\n\n            for (let i2 = i0; i2 <= i; i2++, index += width) {\n              bitsDecoded[index]++;\n            }\n\n            i1++;\n          }\n\n          for (i = i0 + i1; i < iNext; i++, index += width) {\n            if (coefficentsMagnitude[index] || (processingFlags[index] & processedMask) !== 0) {\n              continue;\n            }\n\n            const contextLabel = labels[neighborsSignificance[index]];\n            const decision = decoder.readBit(contexts, contextLabel);\n\n            if (decision === 1) {\n              sign = this.decodeSignBit(i, j, index);\n              coefficentsSign[index] = sign;\n              coefficentsMagnitude[index] = 1;\n              this.setNeighborsSignificance(i, j, index);\n              processingFlags[index] |= firstMagnitudeBitMask;\n            }\n\n            bitsDecoded[index]++;\n          }\n        }\n      }\n    }\n\n    checkSegmentationSymbol() {\n      const decoder = this.decoder;\n      const contexts = this.contexts;\n      const symbol = decoder.readBit(contexts, UNIFORM_CONTEXT) << 3 | decoder.readBit(contexts, UNIFORM_CONTEXT) << 2 | decoder.readBit(contexts, UNIFORM_CONTEXT) << 1 | decoder.readBit(contexts, UNIFORM_CONTEXT);\n\n      if (symbol !== 0xa) {\n        throw new JpxError(\"Invalid segmentation symbol\");\n      }\n    }\n\n  }\n\n  return BitModel;\n}();\n\nclass Transform {\n  constructor() {\n    if (this.constructor === Transform) {\n      (0, _util.unreachable)(\"Cannot initialize Transform.\");\n    }\n  }\n\n  calculate(subbands, u0, v0) {\n    let ll = subbands[0];\n\n    for (let i = 1, ii = subbands.length; i < ii; i++) {\n      ll = this.iterate(ll, subbands[i], u0, v0);\n    }\n\n    return ll;\n  }\n\n  extend(buffer, offset, size) {\n    let i1 = offset - 1,\n        j1 = offset + 1;\n    let i2 = offset + size - 2,\n        j2 = offset + size;\n    buffer[i1--] = buffer[j1++];\n    buffer[j2++] = buffer[i2--];\n    buffer[i1--] = buffer[j1++];\n    buffer[j2++] = buffer[i2--];\n    buffer[i1--] = buffer[j1++];\n    buffer[j2++] = buffer[i2--];\n    buffer[i1] = buffer[j1];\n    buffer[j2] = buffer[i2];\n  }\n\n  filter(x, offset, length) {\n    (0, _util.unreachable)(\"Abstract method `filter` called\");\n  }\n\n  iterate(ll, hl_lh_hh, u0, v0) {\n    const llWidth = ll.width,\n          llHeight = ll.height;\n    let llItems = ll.items;\n    const width = hl_lh_hh.width;\n    const height = hl_lh_hh.height;\n    const items = hl_lh_hh.items;\n    let i, j, k, l, u, v;\n\n    for (k = 0, i = 0; i < llHeight; i++) {\n      l = i * 2 * width;\n\n      for (j = 0; j < llWidth; j++, k++, l += 2) {\n        items[l] = llItems[k];\n      }\n    }\n\n    llItems = ll.items = null;\n    const bufferPadding = 4;\n    const rowBuffer = new Float32Array(width + 2 * bufferPadding);\n\n    if (width === 1) {\n      if ((u0 & 1) !== 0) {\n        for (v = 0, k = 0; v < height; v++, k += width) {\n          items[k] *= 0.5;\n        }\n      }\n    } else {\n      for (v = 0, k = 0; v < height; v++, k += width) {\n        rowBuffer.set(items.subarray(k, k + width), bufferPadding);\n        this.extend(rowBuffer, bufferPadding, width);\n        this.filter(rowBuffer, bufferPadding, width);\n        items.set(rowBuffer.subarray(bufferPadding, bufferPadding + width), k);\n      }\n    }\n\n    let numBuffers = 16;\n    const colBuffers = [];\n\n    for (i = 0; i < numBuffers; i++) {\n      colBuffers.push(new Float32Array(height + 2 * bufferPadding));\n    }\n\n    let b,\n        currentBuffer = 0;\n    ll = bufferPadding + height;\n\n    if (height === 1) {\n      if ((v0 & 1) !== 0) {\n        for (u = 0; u < width; u++) {\n          items[u] *= 0.5;\n        }\n      }\n    } else {\n      for (u = 0; u < width; u++) {\n        if (currentBuffer === 0) {\n          numBuffers = Math.min(width - u, numBuffers);\n\n          for (k = u, l = bufferPadding; l < ll; k += width, l++) {\n            for (b = 0; b < numBuffers; b++) {\n              colBuffers[b][l] = items[k + b];\n            }\n          }\n\n          currentBuffer = numBuffers;\n        }\n\n        currentBuffer--;\n        const buffer = colBuffers[currentBuffer];\n        this.extend(buffer, bufferPadding, height);\n        this.filter(buffer, bufferPadding, height);\n\n        if (currentBuffer === 0) {\n          k = u - numBuffers + 1;\n\n          for (l = bufferPadding; l < ll; k += width, l++) {\n            for (b = 0; b < numBuffers; b++) {\n              items[k + b] = colBuffers[b][l];\n            }\n          }\n        }\n      }\n    }\n\n    return {\n      width,\n      height,\n      items\n    };\n  }\n\n}\n\nclass IrreversibleTransform extends Transform {\n  filter(x, offset, length) {\n    const len = length >> 1;\n    offset |= 0;\n    let j, n, current, next;\n    const alpha = -1.586134342059924;\n    const beta = -0.052980118572961;\n    const gamma = 0.882911075530934;\n    const delta = 0.443506852043971;\n    const K = 1.230174104914001;\n    const K_ = 1 / K;\n    j = offset - 3;\n\n    for (n = len + 4; n--; j += 2) {\n      x[j] *= K_;\n    }\n\n    j = offset - 2;\n    current = delta * x[j - 1];\n\n    for (n = len + 3; n--; j += 2) {\n      next = delta * x[j + 1];\n      x[j] = K * x[j] - current - next;\n\n      if (n--) {\n        j += 2;\n        current = delta * x[j + 1];\n        x[j] = K * x[j] - current - next;\n      } else {\n        break;\n      }\n    }\n\n    j = offset - 1;\n    current = gamma * x[j - 1];\n\n    for (n = len + 2; n--; j += 2) {\n      next = gamma * x[j + 1];\n      x[j] -= current + next;\n\n      if (n--) {\n        j += 2;\n        current = gamma * x[j + 1];\n        x[j] -= current + next;\n      } else {\n        break;\n      }\n    }\n\n    j = offset;\n    current = beta * x[j - 1];\n\n    for (n = len + 1; n--; j += 2) {\n      next = beta * x[j + 1];\n      x[j] -= current + next;\n\n      if (n--) {\n        j += 2;\n        current = beta * x[j + 1];\n        x[j] -= current + next;\n      } else {\n        break;\n      }\n    }\n\n    if (len !== 0) {\n      j = offset + 1;\n      current = alpha * x[j - 1];\n\n      for (n = len; n--; j += 2) {\n        next = alpha * x[j + 1];\n        x[j] -= current + next;\n\n        if (n--) {\n          j += 2;\n          current = alpha * x[j + 1];\n          x[j] -= current + next;\n        } else {\n          break;\n        }\n      }\n    }\n  }\n\n}\n\nclass ReversibleTransform extends Transform {\n  filter(x, offset, length) {\n    const len = length >> 1;\n    offset |= 0;\n    let j, n;\n\n    for (j = offset, n = len + 1; n--; j += 2) {\n      x[j] -= x[j - 1] + x[j + 1] + 2 >> 2;\n    }\n\n    for (j = offset + 1, n = len; n--; j += 2) {\n      x[j] += x[j - 1] + x[j + 1] >> 1;\n    }\n  }\n\n}\n\n/***/ }),\n/* 41 */\n/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {\n\n\n\nObject.defineProperty(exports, \"__esModule\", ({\n  value: true\n}));\nexports.LZWStream = void 0;\n\nvar _decode_stream = __w_pdfjs_require__(29);\n\nclass LZWStream extends _decode_stream.DecodeStream {\n  constructor(str, maybeLength, earlyChange) {\n    super(maybeLength);\n    this.str = str;\n    this.dict = str.dict;\n    this.cachedData = 0;\n    this.bitsCached = 0;\n    const maxLzwDictionarySize = 4096;\n    const lzwState = {\n      earlyChange,\n      codeLength: 9,\n      nextCode: 258,\n      dictionaryValues: new Uint8Array(maxLzwDictionarySize),\n      dictionaryLengths: new Uint16Array(maxLzwDictionarySize),\n      dictionaryPrevCodes: new Uint16Array(maxLzwDictionarySize),\n      currentSequence: new Uint8Array(maxLzwDictionarySize),\n      currentSequenceLength: 0\n    };\n\n    for (let i = 0; i < 256; ++i) {\n      lzwState.dictionaryValues[i] = i;\n      lzwState.dictionaryLengths[i] = 1;\n    }\n\n    this.lzwState = lzwState;\n  }\n\n  readBits(n) {\n    let bitsCached = this.bitsCached;\n    let cachedData = this.cachedData;\n\n    while (bitsCached < n) {\n      const c = this.str.getByte();\n\n      if (c === -1) {\n        this.eof = true;\n        return null;\n      }\n\n      cachedData = cachedData << 8 | c;\n      bitsCached += 8;\n    }\n\n    this.bitsCached = bitsCached -= n;\n    this.cachedData = cachedData;\n    this.lastCode = null;\n    return cachedData >>> bitsCached & (1 << n) - 1;\n  }\n\n  readBlock() {\n    const blockSize = 512,\n          decodedSizeDelta = blockSize;\n    let estimatedDecodedSize = blockSize * 2;\n    let i, j, q;\n    const lzwState = this.lzwState;\n\n    if (!lzwState) {\n      return;\n    }\n\n    const earlyChange = lzwState.earlyChange;\n    let nextCode = lzwState.nextCode;\n    const dictionaryValues = lzwState.dictionaryValues;\n    const dictionaryLengths = lzwState.dictionaryLengths;\n    const dictionaryPrevCodes = lzwState.dictionaryPrevCodes;\n    let codeLength = lzwState.codeLength;\n    let prevCode = lzwState.prevCode;\n    const currentSequence = lzwState.currentSequence;\n    let currentSequenceLength = lzwState.currentSequenceLength;\n    let decodedLength = 0;\n    let currentBufferLength = this.bufferLength;\n    let buffer = this.ensureBuffer(this.bufferLength + estimatedDecodedSize);\n\n    for (i = 0; i < blockSize; i++) {\n      const code = this.readBits(codeLength);\n      const hasPrev = currentSequenceLength > 0;\n\n      if (code < 256) {\n        currentSequence[0] = code;\n        currentSequenceLength = 1;\n      } else if (code >= 258) {\n        if (code < nextCode) {\n          currentSequenceLength = dictionaryLengths[code];\n\n          for (j = currentSequenceLength - 1, q = code; j >= 0; j--) {\n            currentSequence[j] = dictionaryValues[q];\n            q = dictionaryPrevCodes[q];\n          }\n        } else {\n          currentSequence[currentSequenceLength++] = currentSequence[0];\n        }\n      } else if (code === 256) {\n        codeLength = 9;\n        nextCode = 258;\n        currentSequenceLength = 0;\n        continue;\n      } else {\n        this.eof = true;\n        delete this.lzwState;\n        break;\n      }\n\n      if (hasPrev) {\n        dictionaryPrevCodes[nextCode] = prevCode;\n        dictionaryLengths[nextCode] = dictionaryLengths[prevCode] + 1;\n        dictionaryValues[nextCode] = currentSequence[0];\n        nextCode++;\n        codeLength = nextCode + earlyChange & nextCode + earlyChange - 1 ? codeLength : Math.min(Math.log(nextCode + earlyChange) / 0.6931471805599453 + 1, 12) | 0;\n      }\n\n      prevCode = code;\n      decodedLength += currentSequenceLength;\n\n      if (estimatedDecodedSize < decodedLength) {\n        do {\n          estimatedDecodedSize += decodedSizeDelta;\n        } while (estimatedDecodedSize < decodedLength);\n\n        buffer = this.ensureBuffer(this.bufferLength + estimatedDecodedSize);\n      }\n\n      for (j = 0; j < currentSequenceLength; j++) {\n        buffer[currentBufferLength++] = currentSequence[j];\n      }\n    }\n\n    lzwState.nextCode = nextCode;\n    lzwState.codeLength = codeLength;\n    lzwState.prevCode = prevCode;\n    lzwState.currentSequenceLength = currentSequenceLength;\n    this.bufferLength = currentBufferLength;\n  }\n\n}\n\nexports.LZWStream = LZWStream;\n\n/***/ }),\n/* 42 */\n/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {\n\n\n\nObject.defineProperty(exports, \"__esModule\", ({\n  value: true\n}));\nexports.PredictorStream = void 0;\n\nvar _decode_stream = __w_pdfjs_require__(29);\n\nvar _primitives = __w_pdfjs_require__(5);\n\nvar _util = __w_pdfjs_require__(2);\n\nclass PredictorStream extends _decode_stream.DecodeStream {\n  constructor(str, maybeLength, params) {\n    super(maybeLength);\n\n    if (!(params instanceof _primitives.Dict)) {\n      return str;\n    }\n\n    const predictor = this.predictor = params.get(\"Predictor\") || 1;\n\n    if (predictor <= 1) {\n      return str;\n    }\n\n    if (predictor !== 2 && (predictor < 10 || predictor > 15)) {\n      throw new _util.FormatError(`Unsupported predictor: ${predictor}`);\n    }\n\n    if (predictor === 2) {\n      this.readBlock = this.readBlockTiff;\n    } else {\n      this.readBlock = this.readBlockPng;\n    }\n\n    this.str = str;\n    this.dict = str.dict;\n    const colors = this.colors = params.get(\"Colors\") || 1;\n    const bits = this.bits = params.get(\"BPC\", \"BitsPerComponent\") || 8;\n    const columns = this.columns = params.get(\"Columns\") || 1;\n    this.pixBytes = colors * bits + 7 >> 3;\n    this.rowBytes = columns * colors * bits + 7 >> 3;\n    return this;\n  }\n\n  readBlockTiff() {\n    const rowBytes = this.rowBytes;\n    const bufferLength = this.bufferLength;\n    const buffer = this.ensureBuffer(bufferLength + rowBytes);\n    const bits = this.bits;\n    const colors = this.colors;\n    const rawBytes = this.str.getBytes(rowBytes);\n    this.eof = !rawBytes.length;\n\n    if (this.eof) {\n      return;\n    }\n\n    let inbuf = 0,\n        outbuf = 0;\n    let inbits = 0,\n        outbits = 0;\n    let pos = bufferLength;\n    let i;\n\n    if (bits === 1 && colors === 1) {\n      for (i = 0; i < rowBytes; ++i) {\n        let c = rawBytes[i] ^ inbuf;\n        c ^= c >> 1;\n        c ^= c >> 2;\n        c ^= c >> 4;\n        inbuf = (c & 1) << 7;\n        buffer[pos++] = c;\n      }\n    } else if (bits === 8) {\n      for (i = 0; i < colors; ++i) {\n        buffer[pos++] = rawBytes[i];\n      }\n\n      for (; i < rowBytes; ++i) {\n        buffer[pos] = buffer[pos - colors] + rawBytes[i];\n        pos++;\n      }\n    } else if (bits === 16) {\n      const bytesPerPixel = colors * 2;\n\n      for (i = 0; i < bytesPerPixel; ++i) {\n        buffer[pos++] = rawBytes[i];\n      }\n\n      for (; i < rowBytes; i += 2) {\n        const sum = ((rawBytes[i] & 0xff) << 8) + (rawBytes[i + 1] & 0xff) + ((buffer[pos - bytesPerPixel] & 0xff) << 8) + (buffer[pos - bytesPerPixel + 1] & 0xff);\n        buffer[pos++] = sum >> 8 & 0xff;\n        buffer[pos++] = sum & 0xff;\n      }\n    } else {\n      const compArray = new Uint8Array(colors + 1);\n      const bitMask = (1 << bits) - 1;\n      let j = 0,\n          k = bufferLength;\n      const columns = this.columns;\n\n      for (i = 0; i < columns; ++i) {\n        for (let kk = 0; kk < colors; ++kk) {\n          if (inbits < bits) {\n            inbuf = inbuf << 8 | rawBytes[j++] & 0xff;\n            inbits += 8;\n          }\n\n          compArray[kk] = compArray[kk] + (inbuf >> inbits - bits) & bitMask;\n          inbits -= bits;\n          outbuf = outbuf << bits | compArray[kk];\n          outbits += bits;\n\n          if (outbits >= 8) {\n            buffer[k++] = outbuf >> outbits - 8 & 0xff;\n            outbits -= 8;\n          }\n        }\n      }\n\n      if (outbits > 0) {\n        buffer[k++] = (outbuf << 8 - outbits) + (inbuf & (1 << 8 - outbits) - 1);\n      }\n    }\n\n    this.bufferLength += rowBytes;\n  }\n\n  readBlockPng() {\n    const rowBytes = this.rowBytes;\n    const pixBytes = this.pixBytes;\n    const predictor = this.str.getByte();\n    const rawBytes = this.str.getBytes(rowBytes);\n    this.eof = !rawBytes.length;\n\n    if (this.eof) {\n      return;\n    }\n\n    const bufferLength = this.bufferLength;\n    const buffer = this.ensureBuffer(bufferLength + rowBytes);\n    let prevRow = buffer.subarray(bufferLength - rowBytes, bufferLength);\n\n    if (prevRow.length === 0) {\n      prevRow = new Uint8Array(rowBytes);\n    }\n\n    let i,\n        j = bufferLength,\n        up,\n        c;\n\n    switch (predictor) {\n      case 0:\n        for (i = 0; i < rowBytes; ++i) {\n          buffer[j++] = rawBytes[i];\n        }\n\n        break;\n\n      case 1:\n        for (i = 0; i < pixBytes; ++i) {\n          buffer[j++] = rawBytes[i];\n        }\n\n        for (; i < rowBytes; ++i) {\n          buffer[j] = buffer[j - pixBytes] + rawBytes[i] & 0xff;\n          j++;\n        }\n\n        break;\n\n      case 2:\n        for (i = 0; i < rowBytes; ++i) {\n          buffer[j++] = prevRow[i] + rawBytes[i] & 0xff;\n        }\n\n        break;\n\n      case 3:\n        for (i = 0; i < pixBytes; ++i) {\n          buffer[j++] = (prevRow[i] >> 1) + rawBytes[i];\n        }\n\n        for (; i < rowBytes; ++i) {\n          buffer[j] = (prevRow[i] + buffer[j - pixBytes] >> 1) + rawBytes[i] & 0xff;\n          j++;\n        }\n\n        break;\n\n      case 4:\n        for (i = 0; i < pixBytes; ++i) {\n          up = prevRow[i];\n          c = rawBytes[i];\n          buffer[j++] = up + c;\n        }\n\n        for (; i < rowBytes; ++i) {\n          up = prevRow[i];\n          const upLeft = prevRow[i - pixBytes];\n          const left = buffer[j - pixBytes];\n          const p = left + up - upLeft;\n          let pa = p - left;\n\n          if (pa < 0) {\n            pa = -pa;\n          }\n\n          let pb = p - up;\n\n          if (pb < 0) {\n            pb = -pb;\n          }\n\n          let pc = p - upLeft;\n\n          if (pc < 0) {\n            pc = -pc;\n          }\n\n          c = rawBytes[i];\n\n          if (pa <= pb && pa <= pc) {\n            buffer[j++] = left + c;\n          } else if (pb <= pc) {\n            buffer[j++] = up + c;\n          } else {\n            buffer[j++] = upLeft + c;\n          }\n        }\n\n        break;\n\n      default:\n        throw new _util.FormatError(`Unsupported predictor: ${predictor}`);\n    }\n\n    this.bufferLength += rowBytes;\n  }\n\n}\n\nexports.PredictorStream = PredictorStream;\n\n/***/ }),\n/* 43 */\n/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {\n\n\n\nObject.defineProperty(exports, \"__esModule\", ({\n  value: true\n}));\nexports.RunLengthStream = void 0;\n\nvar _decode_stream = __w_pdfjs_require__(29);\n\nclass RunLengthStream extends _decode_stream.DecodeStream {\n  constructor(str, maybeLength) {\n    super(maybeLength);\n    this.str = str;\n    this.dict = str.dict;\n  }\n\n  readBlock() {\n    const repeatHeader = this.str.getBytes(2);\n\n    if (!repeatHeader || repeatHeader.length < 2 || repeatHeader[0] === 128) {\n      this.eof = true;\n      return;\n    }\n\n    let buffer;\n    let bufferLength = this.bufferLength;\n    let n = repeatHeader[0];\n\n    if (n < 128) {\n      buffer = this.ensureBuffer(bufferLength + n + 1);\n      buffer[bufferLength++] = repeatHeader[1];\n\n      if (n > 0) {\n        const source = this.str.getBytes(n);\n        buffer.set(source, bufferLength);\n        bufferLength += n;\n      }\n    } else {\n      n = 257 - n;\n      const b = repeatHeader[1];\n      buffer = this.ensureBuffer(bufferLength + n + 1);\n\n      for (let i = 0; i < n; i++) {\n        buffer[bufferLength++] = b;\n      }\n    }\n\n    this.bufferLength = bufferLength;\n  }\n\n}\n\nexports.RunLengthStream = RunLengthStream;\n\n/***/ }),\n/* 44 */\n/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {\n\n\n\nObject.defineProperty(exports, \"__esModule\", ({\n  value: true\n}));\nexports.Font = exports.ErrorFont = void 0;\n\nvar _util = __w_pdfjs_require__(2);\n\nvar _cff_parser = __w_pdfjs_require__(45);\n\nvar _fonts_utils = __w_pdfjs_require__(18);\n\nvar _unicode = __w_pdfjs_require__(21);\n\nvar _glyphlist = __w_pdfjs_require__(20);\n\nvar _encodings = __w_pdfjs_require__(19);\n\nvar _standard_fonts = __w_pdfjs_require__(47);\n\nvar _to_unicode_map = __w_pdfjs_require__(48);\n\nvar _cff_font = __w_pdfjs_require__(49);\n\nvar _font_renderer = __w_pdfjs_require__(50);\n\nvar _metrics = __w_pdfjs_require__(51);\n\nvar _glyf = __w_pdfjs_require__(52);\n\nvar _cmap = __w_pdfjs_require__(26);\n\nvar _opentype_file_builder = __w_pdfjs_require__(53);\n\nvar _core_utils = __w_pdfjs_require__(8);\n\nvar _stream = __w_pdfjs_require__(10);\n\nvar _type1_font = __w_pdfjs_require__(54);\n\nconst PRIVATE_USE_AREAS = [[0xe000, 0xf8ff], [0x100000, 0x10fffd]];\nconst PDF_GLYPH_SPACE_UNITS = 1000;\nconst EXPORT_DATA_PROPERTIES = [\"ascent\", \"bbox\", \"black\", \"bold\", \"charProcOperatorList\", \"composite\", \"cssFontInfo\", \"data\", \"defaultVMetrics\", \"defaultWidth\", \"descent\", \"fallbackName\", \"fontMatrix\", \"fontType\", \"isType3Font\", \"italic\", \"loadedName\", \"mimetype\", \"missingFile\", \"name\", \"remeasure\", \"subtype\", \"type\", \"vertical\"];\nconst EXPORT_DATA_EXTRA_PROPERTIES = [\"cMap\", \"defaultEncoding\", \"differences\", \"isMonospace\", \"isSerifFont\", \"isSymbolicFont\", \"seacMap\", \"toFontChar\", \"toUnicode\", \"vmetrics\", \"widths\"];\n\nfunction adjustWidths(properties) {\n  if (!properties.fontMatrix) {\n    return;\n  }\n\n  if (properties.fontMatrix[0] === _util.FONT_IDENTITY_MATRIX[0]) {\n    return;\n  }\n\n  const scale = 0.001 / properties.fontMatrix[0];\n  const glyphsWidths = properties.widths;\n\n  for (const glyph in glyphsWidths) {\n    glyphsWidths[glyph] *= scale;\n  }\n\n  properties.defaultWidth *= scale;\n}\n\nfunction adjustToUnicode(properties, builtInEncoding) {\n  if (properties.isInternalFont) {\n    return;\n  }\n\n  if (builtInEncoding === properties.defaultEncoding) {\n    return;\n  }\n\n  if (properties.toUnicode instanceof _to_unicode_map.IdentityToUnicodeMap) {\n    return;\n  }\n\n  const toUnicode = [],\n        glyphsUnicodeMap = (0, _glyphlist.getGlyphsUnicode)();\n\n  for (const charCode in builtInEncoding) {\n    if (properties.hasIncludedToUnicodeMap) {\n      if (properties.toUnicode.has(charCode)) {\n        continue;\n      }\n    } else if (properties.hasEncoding) {\n      if (properties.differences.length === 0 || properties.differences[charCode] !== undefined) {\n        continue;\n      }\n    }\n\n    const glyphName = builtInEncoding[charCode];\n    const unicode = (0, _unicode.getUnicodeForGlyph)(glyphName, glyphsUnicodeMap);\n\n    if (unicode !== -1) {\n      toUnicode[charCode] = String.fromCharCode(unicode);\n    }\n  }\n\n  if (toUnicode.length > 0) {\n    properties.toUnicode.amend(toUnicode);\n  }\n}\n\nfunction amendFallbackToUnicode(properties) {\n  if (!properties.fallbackToUnicode) {\n    return;\n  }\n\n  if (properties.toUnicode instanceof _to_unicode_map.IdentityToUnicodeMap) {\n    return;\n  }\n\n  const toUnicode = [];\n\n  for (const charCode in properties.fallbackToUnicode) {\n    if (properties.toUnicode.has(charCode)) {\n      continue;\n    }\n\n    toUnicode[charCode] = properties.fallbackToUnicode[charCode];\n  }\n\n  if (toUnicode.length > 0) {\n    properties.toUnicode.amend(toUnicode);\n  }\n}\n\nclass Glyph {\n  constructor(originalCharCode, fontChar, unicode, accent, width, vmetric, operatorListId, isSpace, isInFont) {\n    this.originalCharCode = originalCharCode;\n    this.fontChar = fontChar;\n    this.unicode = unicode;\n    this.accent = accent;\n    this.width = width;\n    this.vmetric = vmetric;\n    this.operatorListId = operatorListId;\n    this.isSpace = isSpace;\n    this.isInFont = isInFont;\n    const category = (0, _unicode.getCharUnicodeCategory)(unicode);\n    this.isWhitespace = category.isWhitespace;\n    this.isZeroWidthDiacritic = category.isZeroWidthDiacritic;\n    this.isInvisibleFormatMark = category.isInvisibleFormatMark;\n  }\n\n  matchesForCache(originalCharCode, fontChar, unicode, accent, width, vmetric, operatorListId, isSpace, isInFont) {\n    return this.originalCharCode === originalCharCode && this.fontChar === fontChar && this.unicode === unicode && this.accent === accent && this.width === width && this.vmetric === vmetric && this.operatorListId === operatorListId && this.isSpace === isSpace && this.isInFont === isInFont;\n  }\n\n}\n\nfunction int16(b0, b1) {\n  return (b0 << 8) + b1;\n}\n\nfunction writeSignedInt16(bytes, index, value) {\n  bytes[index + 1] = value;\n  bytes[index] = value >>> 8;\n}\n\nfunction signedInt16(b0, b1) {\n  const value = (b0 << 8) + b1;\n  return value & 1 << 15 ? value - 0x10000 : value;\n}\n\nfunction int32(b0, b1, b2, b3) {\n  return (b0 << 24) + (b1 << 16) + (b2 << 8) + b3;\n}\n\nfunction string16(value) {\n  return String.fromCharCode(value >> 8 & 0xff, value & 0xff);\n}\n\nfunction safeString16(value) {\n  if (value > 0x7fff) {\n    value = 0x7fff;\n  } else if (value < -0x8000) {\n    value = -0x8000;\n  }\n\n  return String.fromCharCode(value >> 8 & 0xff, value & 0xff);\n}\n\nfunction isTrueTypeFile(file) {\n  const header = file.peekBytes(4);\n  return (0, _core_utils.readUint32)(header, 0) === 0x00010000 || (0, _util.bytesToString)(header) === \"true\";\n}\n\nfunction isTrueTypeCollectionFile(file) {\n  const header = file.peekBytes(4);\n  return (0, _util.bytesToString)(header) === \"ttcf\";\n}\n\nfunction isOpenTypeFile(file) {\n  const header = file.peekBytes(4);\n  return (0, _util.bytesToString)(header) === \"OTTO\";\n}\n\nfunction isType1File(file) {\n  const header = file.peekBytes(2);\n\n  if (header[0] === 0x25 && header[1] === 0x21) {\n    return true;\n  }\n\n  if (header[0] === 0x80 && header[1] === 0x01) {\n    return true;\n  }\n\n  return false;\n}\n\nfunction isCFFFile(file) {\n  const header = file.peekBytes(4);\n\n  if (header[0] >= 1 && header[3] >= 1 && header[3] <= 4) {\n    return true;\n  }\n\n  return false;\n}\n\nfunction getFontFileType(file, {\n  type,\n  subtype,\n  composite\n}) {\n  let fileType, fileSubtype;\n\n  if (isTrueTypeFile(file) || isTrueTypeCollectionFile(file)) {\n    if (composite) {\n      fileType = \"CIDFontType2\";\n    } else {\n      fileType = \"TrueType\";\n    }\n  } else if (isOpenTypeFile(file)) {\n    if (composite) {\n      fileType = \"CIDFontType2\";\n    } else {\n      fileType = \"OpenType\";\n    }\n  } else if (isType1File(file)) {\n    if (composite) {\n      fileType = \"CIDFontType0\";\n    } else {\n      fileType = type === \"MMType1\" ? \"MMType1\" : \"Type1\";\n    }\n  } else if (isCFFFile(file)) {\n    if (composite) {\n      fileType = \"CIDFontType0\";\n      fileSubtype = \"CIDFontType0C\";\n    } else {\n      fileType = type === \"MMType1\" ? \"MMType1\" : \"Type1\";\n      fileSubtype = \"Type1C\";\n    }\n  } else {\n    (0, _util.warn)(\"getFontFileType: Unable to detect correct font file Type/Subtype.\");\n    fileType = type;\n    fileSubtype = subtype;\n  }\n\n  return [fileType, fileSubtype];\n}\n\nfunction applyStandardFontGlyphMap(map, glyphMap) {\n  for (const charCode in glyphMap) {\n    map[+charCode] = glyphMap[charCode];\n  }\n}\n\nfunction buildToFontChar(encoding, glyphsUnicodeMap, differences) {\n  const toFontChar = [];\n  let unicode;\n\n  for (let i = 0, ii = encoding.length; i < ii; i++) {\n    unicode = (0, _unicode.getUnicodeForGlyph)(encoding[i], glyphsUnicodeMap);\n\n    if (unicode !== -1) {\n      toFontChar[i] = unicode;\n    }\n  }\n\n  for (const charCode in differences) {\n    unicode = (0, _unicode.getUnicodeForGlyph)(differences[charCode], glyphsUnicodeMap);\n\n    if (unicode !== -1) {\n      toFontChar[+charCode] = unicode;\n    }\n  }\n\n  return toFontChar;\n}\n\nfunction convertCidString(charCode, cid, shouldThrow = false) {\n  switch (cid.length) {\n    case 1:\n      return cid.charCodeAt(0);\n\n    case 2:\n      return cid.charCodeAt(0) << 8 | cid.charCodeAt(1);\n  }\n\n  const msg = `Unsupported CID string (charCode ${charCode}): \"${cid}\".`;\n\n  if (shouldThrow) {\n    throw new _util.FormatError(msg);\n  }\n\n  (0, _util.warn)(msg);\n  return cid;\n}\n\nfunction adjustMapping(charCodeToGlyphId, hasGlyph, newGlyphZeroId) {\n  const newMap = Object.create(null);\n  const toFontChar = [];\n  let privateUseAreaIndex = 0;\n  let nextAvailableFontCharCode = PRIVATE_USE_AREAS[privateUseAreaIndex][0];\n  let privateUseOffetEnd = PRIVATE_USE_AREAS[privateUseAreaIndex][1];\n\n  for (let originalCharCode in charCodeToGlyphId) {\n    originalCharCode |= 0;\n    let glyphId = charCodeToGlyphId[originalCharCode];\n\n    if (!hasGlyph(glyphId)) {\n      continue;\n    }\n\n    if (nextAvailableFontCharCode > privateUseOffetEnd) {\n      privateUseAreaIndex++;\n\n      if (privateUseAreaIndex >= PRIVATE_USE_AREAS.length) {\n        (0, _util.warn)(\"Ran out of space in font private use area.\");\n        break;\n      }\n\n      nextAvailableFontCharCode = PRIVATE_USE_AREAS[privateUseAreaIndex][0];\n      privateUseOffetEnd = PRIVATE_USE_AREAS[privateUseAreaIndex][1];\n    }\n\n    const fontCharCode = nextAvailableFontCharCode++;\n\n    if (glyphId === 0) {\n      glyphId = newGlyphZeroId;\n    }\n\n    newMap[fontCharCode] = glyphId;\n    toFontChar[originalCharCode] = fontCharCode;\n  }\n\n  return {\n    toFontChar,\n    charCodeToGlyphId: newMap,\n    nextAvailableFontCharCode\n  };\n}\n\nfunction getRanges(glyphs, numGlyphs) {\n  const codes = [];\n\n  for (const charCode in glyphs) {\n    if (glyphs[charCode] >= numGlyphs) {\n      continue;\n    }\n\n    codes.push({\n      fontCharCode: charCode | 0,\n      glyphId: glyphs[charCode]\n    });\n  }\n\n  if (codes.length === 0) {\n    codes.push({\n      fontCharCode: 0,\n      glyphId: 0\n    });\n  }\n\n  codes.sort(function fontGetRangesSort(a, b) {\n    return a.fontCharCode - b.fontCharCode;\n  });\n  const ranges = [];\n  const length = codes.length;\n\n  for (let n = 0; n < length;) {\n    const start = codes[n].fontCharCode;\n    const codeIndices = [codes[n].glyphId];\n    ++n;\n    let end = start;\n\n    while (n < length && end + 1 === codes[n].fontCharCode) {\n      codeIndices.push(codes[n].glyphId);\n      ++end;\n      ++n;\n\n      if (end === 0xffff) {\n        break;\n      }\n    }\n\n    ranges.push([start, end, codeIndices]);\n  }\n\n  return ranges;\n}\n\nfunction createCmapTable(glyphs, numGlyphs) {\n  const ranges = getRanges(glyphs, numGlyphs);\n  const numTables = ranges[ranges.length - 1][1] > 0xffff ? 2 : 1;\n  let cmap = \"\\x00\\x00\" + string16(numTables) + \"\\x00\\x03\" + \"\\x00\\x01\" + (0, _util.string32)(4 + numTables * 8);\n  let i, ii, j, jj;\n\n  for (i = ranges.length - 1; i >= 0; --i) {\n    if (ranges[i][0] <= 0xffff) {\n      break;\n    }\n  }\n\n  const bmpLength = i + 1;\n\n  if (ranges[i][0] < 0xffff && ranges[i][1] === 0xffff) {\n    ranges[i][1] = 0xfffe;\n  }\n\n  const trailingRangesCount = ranges[i][1] < 0xffff ? 1 : 0;\n  const segCount = bmpLength + trailingRangesCount;\n\n  const searchParams = _opentype_file_builder.OpenTypeFileBuilder.getSearchParams(segCount, 2);\n\n  let startCount = \"\";\n  let endCount = \"\";\n  let idDeltas = \"\";\n  let idRangeOffsets = \"\";\n  let glyphsIds = \"\";\n  let bias = 0;\n  let range, start, end, codes;\n\n  for (i = 0, ii = bmpLength; i < ii; i++) {\n    range = ranges[i];\n    start = range[0];\n    end = range[1];\n    startCount += string16(start);\n    endCount += string16(end);\n    codes = range[2];\n    let contiguous = true;\n\n    for (j = 1, jj = codes.length; j < jj; ++j) {\n      if (codes[j] !== codes[j - 1] + 1) {\n        contiguous = false;\n        break;\n      }\n    }\n\n    if (!contiguous) {\n      const offset = (segCount - i) * 2 + bias * 2;\n      bias += end - start + 1;\n      idDeltas += string16(0);\n      idRangeOffsets += string16(offset);\n\n      for (j = 0, jj = codes.length; j < jj; ++j) {\n        glyphsIds += string16(codes[j]);\n      }\n    } else {\n      const startCode = codes[0];\n      idDeltas += string16(startCode - start & 0xffff);\n      idRangeOffsets += string16(0);\n    }\n  }\n\n  if (trailingRangesCount > 0) {\n    endCount += \"\\xFF\\xFF\";\n    startCount += \"\\xFF\\xFF\";\n    idDeltas += \"\\x00\\x01\";\n    idRangeOffsets += \"\\x00\\x00\";\n  }\n\n  const format314 = \"\\x00\\x00\" + string16(2 * segCount) + string16(searchParams.range) + string16(searchParams.entry) + string16(searchParams.rangeShift) + endCount + \"\\x00\\x00\" + startCount + idDeltas + idRangeOffsets + glyphsIds;\n  let format31012 = \"\";\n  let header31012 = \"\";\n\n  if (numTables > 1) {\n    cmap += \"\\x00\\x03\" + \"\\x00\\x0A\" + (0, _util.string32)(4 + numTables * 8 + 4 + format314.length);\n    format31012 = \"\";\n\n    for (i = 0, ii = ranges.length; i < ii; i++) {\n      range = ranges[i];\n      start = range[0];\n      codes = range[2];\n      let code = codes[0];\n\n      for (j = 1, jj = codes.length; j < jj; ++j) {\n        if (codes[j] !== codes[j - 1] + 1) {\n          end = range[0] + j - 1;\n          format31012 += (0, _util.string32)(start) + (0, _util.string32)(end) + (0, _util.string32)(code);\n          start = end + 1;\n          code = codes[j];\n        }\n      }\n\n      format31012 += (0, _util.string32)(start) + (0, _util.string32)(range[1]) + (0, _util.string32)(code);\n    }\n\n    header31012 = \"\\x00\\x0C\" + \"\\x00\\x00\" + (0, _util.string32)(format31012.length + 16) + \"\\x00\\x00\\x00\\x00\" + (0, _util.string32)(format31012.length / 12);\n  }\n\n  return cmap + \"\\x00\\x04\" + string16(format314.length + 4) + format314 + header31012 + format31012;\n}\n\nfunction validateOS2Table(os2, file) {\n  file.pos = (file.start || 0) + os2.offset;\n  const version = file.getUint16();\n  file.skip(60);\n  const selection = file.getUint16();\n\n  if (version < 4 && selection & 0x0300) {\n    return false;\n  }\n\n  const firstChar = file.getUint16();\n  const lastChar = file.getUint16();\n\n  if (firstChar > lastChar) {\n    return false;\n  }\n\n  file.skip(6);\n  const usWinAscent = file.getUint16();\n\n  if (usWinAscent === 0) {\n    return false;\n  }\n\n  os2.data[8] = os2.data[9] = 0;\n  return true;\n}\n\nfunction createOS2Table(properties, charstrings, override) {\n  override = override || {\n    unitsPerEm: 0,\n    yMax: 0,\n    yMin: 0,\n    ascent: 0,\n    descent: 0\n  };\n  let ulUnicodeRange1 = 0;\n  let ulUnicodeRange2 = 0;\n  let ulUnicodeRange3 = 0;\n  let ulUnicodeRange4 = 0;\n  let firstCharIndex = null;\n  let lastCharIndex = 0;\n\n  if (charstrings) {\n    for (let code in charstrings) {\n      code |= 0;\n\n      if (firstCharIndex > code || !firstCharIndex) {\n        firstCharIndex = code;\n      }\n\n      if (lastCharIndex < code) {\n        lastCharIndex = code;\n      }\n\n      const position = (0, _unicode.getUnicodeRangeFor)(code);\n\n      if (position < 32) {\n        ulUnicodeRange1 |= 1 << position;\n      } else if (position < 64) {\n        ulUnicodeRange2 |= 1 << position - 32;\n      } else if (position < 96) {\n        ulUnicodeRange3 |= 1 << position - 64;\n      } else if (position < 123) {\n        ulUnicodeRange4 |= 1 << position - 96;\n      } else {\n        throw new _util.FormatError(\"Unicode ranges Bits > 123 are reserved for internal usage\");\n      }\n    }\n\n    if (lastCharIndex > 0xffff) {\n      lastCharIndex = 0xffff;\n    }\n  } else {\n    firstCharIndex = 0;\n    lastCharIndex = 255;\n  }\n\n  const bbox = properties.bbox || [0, 0, 0, 0];\n  const unitsPerEm = override.unitsPerEm || 1 / (properties.fontMatrix || _util.FONT_IDENTITY_MATRIX)[0];\n  const scale = properties.ascentScaled ? 1.0 : unitsPerEm / PDF_GLYPH_SPACE_UNITS;\n  const typoAscent = override.ascent || Math.round(scale * (properties.ascent || bbox[3]));\n  let typoDescent = override.descent || Math.round(scale * (properties.descent || bbox[1]));\n\n  if (typoDescent > 0 && properties.descent > 0 && bbox[1] < 0) {\n    typoDescent = -typoDescent;\n  }\n\n  const winAscent = override.yMax || typoAscent;\n  const winDescent = -override.yMin || -typoDescent;\n  return \"\\x00\\x03\" + \"\\x02\\x24\" + \"\\x01\\xF4\" + \"\\x00\\x05\" + \"\\x00\\x00\" + \"\\x02\\x8A\" + \"\\x02\\xBB\" + \"\\x00\\x00\" + \"\\x00\\x8C\" + \"\\x02\\x8A\" + \"\\x02\\xBB\" + \"\\x00\\x00\" + \"\\x01\\xDF\" + \"\\x00\\x31\" + \"\\x01\\x02\" + \"\\x00\\x00\" + \"\\x00\\x00\\x06\" + String.fromCharCode(properties.fixedPitch ? 0x09 : 0x00) + \"\\x00\\x00\\x00\\x00\\x00\\x00\" + (0, _util.string32)(ulUnicodeRange1) + (0, _util.string32)(ulUnicodeRange2) + (0, _util.string32)(ulUnicodeRange3) + (0, _util.string32)(ulUnicodeRange4) + \"\\x2A\\x32\\x31\\x2A\" + string16(properties.italicAngle ? 1 : 0) + string16(firstCharIndex || properties.firstChar) + string16(lastCharIndex || properties.lastChar) + string16(typoAscent) + string16(typoDescent) + \"\\x00\\x64\" + string16(winAscent) + string16(winDescent) + \"\\x00\\x00\\x00\\x00\" + \"\\x00\\x00\\x00\\x00\" + string16(properties.xHeight) + string16(properties.capHeight) + string16(0) + string16(firstCharIndex || properties.firstChar) + \"\\x00\\x03\";\n}\n\nfunction createPostTable(properties) {\n  const angle = Math.floor(properties.italicAngle * 2 ** 16);\n  return \"\\x00\\x03\\x00\\x00\" + (0, _util.string32)(angle) + \"\\x00\\x00\" + \"\\x00\\x00\" + (0, _util.string32)(properties.fixedPitch ? 1 : 0) + \"\\x00\\x00\\x00\\x00\" + \"\\x00\\x00\\x00\\x00\" + \"\\x00\\x00\\x00\\x00\" + \"\\x00\\x00\\x00\\x00\";\n}\n\nfunction createPostscriptName(name) {\n  return name.replace(/[^\\x21-\\x7E]|[[\\](){}<>/%]/g, \"\").slice(0, 63);\n}\n\nfunction createNameTable(name, proto) {\n  if (!proto) {\n    proto = [[], []];\n  }\n\n  const strings = [proto[0][0] || \"Original licence\", proto[0][1] || name, proto[0][2] || \"Unknown\", proto[0][3] || \"uniqueID\", proto[0][4] || name, proto[0][5] || \"Version 0.11\", proto[0][6] || createPostscriptName(name), proto[0][7] || \"Unknown\", proto[0][8] || \"Unknown\", proto[0][9] || \"Unknown\"];\n  const stringsUnicode = [];\n  let i, ii, j, jj, str;\n\n  for (i = 0, ii = strings.length; i < ii; i++) {\n    str = proto[1][i] || strings[i];\n    const strBufUnicode = [];\n\n    for (j = 0, jj = str.length; j < jj; j++) {\n      strBufUnicode.push(string16(str.charCodeAt(j)));\n    }\n\n    stringsUnicode.push(strBufUnicode.join(\"\"));\n  }\n\n  const names = [strings, stringsUnicode];\n  const platforms = [\"\\x00\\x01\", \"\\x00\\x03\"];\n  const encodings = [\"\\x00\\x00\", \"\\x00\\x01\"];\n  const languages = [\"\\x00\\x00\", \"\\x04\\x09\"];\n  const namesRecordCount = strings.length * platforms.length;\n  let nameTable = \"\\x00\\x00\" + string16(namesRecordCount) + string16(namesRecordCount * 12 + 6);\n  let strOffset = 0;\n\n  for (i = 0, ii = platforms.length; i < ii; i++) {\n    const strs = names[i];\n\n    for (j = 0, jj = strs.length; j < jj; j++) {\n      str = strs[j];\n      const nameRecord = platforms[i] + encodings[i] + languages[i] + string16(j) + string16(str.length) + string16(strOffset);\n      nameTable += nameRecord;\n      strOffset += str.length;\n    }\n  }\n\n  nameTable += strings.join(\"\") + stringsUnicode.join(\"\");\n  return nameTable;\n}\n\nclass Font {\n  constructor(name, file, properties) {\n    this.name = name;\n    this.psName = null;\n    this.mimetype = null;\n    this.disableFontFace = false;\n    this.loadedName = properties.loadedName;\n    this.isType3Font = properties.isType3Font;\n    this.missingFile = false;\n    this.cssFontInfo = properties.cssFontInfo;\n    this._charsCache = Object.create(null);\n    this._glyphCache = Object.create(null);\n    let isSerifFont = !!(properties.flags & _fonts_utils.FontFlags.Serif);\n\n    if (!isSerifFont && !properties.isSimulatedFlags) {\n      const baseName = name.replace(/[,_]/g, \"-\").split(\"-\")[0],\n            serifFonts = (0, _standard_fonts.getSerifFonts)();\n\n      for (const namePart of baseName.split(\"+\")) {\n        if (serifFonts[namePart]) {\n          isSerifFont = true;\n          break;\n        }\n      }\n    }\n\n    this.isSerifFont = isSerifFont;\n    this.isSymbolicFont = !!(properties.flags & _fonts_utils.FontFlags.Symbolic);\n    this.isMonospace = !!(properties.flags & _fonts_utils.FontFlags.FixedPitch);\n    let type = properties.type;\n    let subtype = properties.subtype;\n    this.type = type;\n    this.subtype = subtype;\n    let fallbackName = \"sans-serif\";\n\n    if (this.isMonospace) {\n      fallbackName = \"monospace\";\n    } else if (this.isSerifFont) {\n      fallbackName = \"serif\";\n    }\n\n    this.fallbackName = fallbackName;\n    this.differences = properties.differences;\n    this.widths = properties.widths;\n    this.defaultWidth = properties.defaultWidth;\n    this.composite = properties.composite;\n    this.cMap = properties.cMap;\n    this.capHeight = properties.capHeight / PDF_GLYPH_SPACE_UNITS;\n    this.ascent = properties.ascent / PDF_GLYPH_SPACE_UNITS;\n    this.descent = properties.descent / PDF_GLYPH_SPACE_UNITS;\n    this.lineHeight = this.ascent - this.descent;\n    this.fontMatrix = properties.fontMatrix;\n    this.bbox = properties.bbox;\n    this.defaultEncoding = properties.defaultEncoding;\n    this.toUnicode = properties.toUnicode;\n    this.toFontChar = [];\n\n    if (properties.type === \"Type3\") {\n      for (let charCode = 0; charCode < 256; charCode++) {\n        this.toFontChar[charCode] = this.differences[charCode] || properties.defaultEncoding[charCode];\n      }\n\n      this.fontType = _util.FontType.TYPE3;\n      return;\n    }\n\n    this.cidEncoding = properties.cidEncoding || \"\";\n    this.vertical = !!properties.vertical;\n\n    if (this.vertical) {\n      this.vmetrics = properties.vmetrics;\n      this.defaultVMetrics = properties.defaultVMetrics;\n    }\n\n    if (!file || file.isEmpty) {\n      if (file) {\n        (0, _util.warn)('Font file is empty in \"' + name + '\" (' + this.loadedName + \")\");\n      }\n\n      this.fallbackToSystemFont(properties);\n      return;\n    }\n\n    [type, subtype] = getFontFileType(file, properties);\n\n    if (type !== this.type || subtype !== this.subtype) {\n      (0, _util.info)(\"Inconsistent font file Type/SubType, expected: \" + `${this.type}/${this.subtype} but found: ${type}/${subtype}.`);\n    }\n\n    let data;\n\n    try {\n      switch (type) {\n        case \"MMType1\":\n          (0, _util.info)(\"MMType1 font (\" + name + \"), falling back to Type1.\");\n\n        case \"Type1\":\n        case \"CIDFontType0\":\n          this.mimetype = \"font/opentype\";\n          const cff = subtype === \"Type1C\" || subtype === \"CIDFontType0C\" ? new _cff_font.CFFFont(file, properties) : new _type1_font.Type1Font(name, file, properties);\n          adjustWidths(properties);\n          data = this.convert(name, cff, properties);\n          break;\n\n        case \"OpenType\":\n        case \"TrueType\":\n        case \"CIDFontType2\":\n          this.mimetype = \"font/opentype\";\n          data = this.checkAndRepair(name, file, properties);\n\n          if (this.isOpenType) {\n            adjustWidths(properties);\n            type = \"OpenType\";\n          }\n\n          break;\n\n        default:\n          throw new _util.FormatError(`Font ${type} is not supported`);\n      }\n    } catch (e) {\n      (0, _util.warn)(e);\n      this.fallbackToSystemFont(properties);\n      return;\n    }\n\n    amendFallbackToUnicode(properties);\n    this.data = data;\n    this.fontType = (0, _fonts_utils.getFontType)(type, subtype, properties.isStandardFont);\n    this.fontMatrix = properties.fontMatrix;\n    this.widths = properties.widths;\n    this.defaultWidth = properties.defaultWidth;\n    this.toUnicode = properties.toUnicode;\n    this.seacMap = properties.seacMap;\n  }\n\n  get renderer() {\n    const renderer = _font_renderer.FontRendererFactory.create(this, _fonts_utils.SEAC_ANALYSIS_ENABLED);\n\n    return (0, _util.shadow)(this, \"renderer\", renderer);\n  }\n\n  exportData(extraProperties = false) {\n    const exportDataProperties = extraProperties ? [...EXPORT_DATA_PROPERTIES, ...EXPORT_DATA_EXTRA_PROPERTIES] : EXPORT_DATA_PROPERTIES;\n    const data = Object.create(null);\n    let property, value;\n\n    for (property of exportDataProperties) {\n      value = this[property];\n\n      if (value !== undefined) {\n        data[property] = value;\n      }\n    }\n\n    return data;\n  }\n\n  fallbackToSystemFont(properties) {\n    this.missingFile = true;\n    const name = this.name;\n    const type = this.type;\n    const subtype = this.subtype;\n    let fontName = (0, _fonts_utils.normalizeFontName)(name);\n    const stdFontMap = (0, _standard_fonts.getStdFontMap)(),\n          nonStdFontMap = (0, _standard_fonts.getNonStdFontMap)();\n    const isStandardFont = !!stdFontMap[fontName];\n    const isMappedToStandardFont = !!(nonStdFontMap[fontName] && stdFontMap[nonStdFontMap[fontName]]);\n    fontName = stdFontMap[fontName] || nonStdFontMap[fontName] || fontName;\n    const fontBasicMetricsMap = (0, _metrics.getFontBasicMetrics)();\n    const metrics = fontBasicMetricsMap[fontName];\n\n    if (metrics) {\n      if (isNaN(this.ascent)) {\n        this.ascent = metrics.ascent / PDF_GLYPH_SPACE_UNITS;\n      }\n\n      if (isNaN(this.descent)) {\n        this.descent = metrics.descent / PDF_GLYPH_SPACE_UNITS;\n      }\n\n      if (isNaN(this.capHeight)) {\n        this.capHeight = metrics.capHeight / PDF_GLYPH_SPACE_UNITS;\n      }\n    }\n\n    this.bold = fontName.search(/bold/gi) !== -1;\n    this.italic = fontName.search(/oblique/gi) !== -1 || fontName.search(/italic/gi) !== -1;\n    this.black = name.search(/Black/g) !== -1;\n    const isNarrow = name.search(/Narrow/g) !== -1;\n    this.remeasure = (!isStandardFont || isNarrow) && Object.keys(this.widths).length > 0;\n\n    if ((isStandardFont || isMappedToStandardFont) && type === \"CIDFontType2\" && this.cidEncoding.startsWith(\"Identity-\")) {\n      const cidToGidMap = properties.cidToGidMap;\n      const map = [];\n      applyStandardFontGlyphMap(map, (0, _standard_fonts.getGlyphMapForStandardFonts)());\n\n      if (/Arial-?Black/i.test(name)) {\n        applyStandardFontGlyphMap(map, (0, _standard_fonts.getSupplementalGlyphMapForArialBlack)());\n      } else if (/Calibri/i.test(name)) {\n        applyStandardFontGlyphMap(map, (0, _standard_fonts.getSupplementalGlyphMapForCalibri)());\n      }\n\n      if (cidToGidMap) {\n        for (const charCode in map) {\n          const cid = map[charCode];\n\n          if (cidToGidMap[cid] !== undefined) {\n            map[+charCode] = cidToGidMap[cid];\n          }\n        }\n\n        if (cidToGidMap.length !== this.toUnicode.length && properties.hasIncludedToUnicodeMap && this.toUnicode instanceof _to_unicode_map.IdentityToUnicodeMap) {\n          this.toUnicode.forEach(function (charCode, unicodeCharCode) {\n            const cid = map[charCode];\n\n            if (cidToGidMap[cid] === undefined) {\n              map[+charCode] = unicodeCharCode;\n            }\n          });\n        }\n      }\n\n      if (!(this.toUnicode instanceof _to_unicode_map.IdentityToUnicodeMap)) {\n        this.toUnicode.forEach(function (charCode, unicodeCharCode) {\n          map[+charCode] = unicodeCharCode;\n        });\n      }\n\n      this.toFontChar = map;\n      this.toUnicode = new _to_unicode_map.ToUnicodeMap(map);\n    } else if (/Symbol/i.test(fontName)) {\n      this.toFontChar = buildToFontChar(_encodings.SymbolSetEncoding, (0, _glyphlist.getGlyphsUnicode)(), this.differences);\n    } else if (/Dingbats/i.test(fontName)) {\n      if (/Wingdings/i.test(name)) {\n        (0, _util.warn)(\"Non-embedded Wingdings font, falling back to ZapfDingbats.\");\n      }\n\n      this.toFontChar = buildToFontChar(_encodings.ZapfDingbatsEncoding, (0, _glyphlist.getDingbatsGlyphsUnicode)(), this.differences);\n    } else if (isStandardFont) {\n      const map = buildToFontChar(this.defaultEncoding, (0, _glyphlist.getGlyphsUnicode)(), this.differences);\n\n      if (type === \"CIDFontType2\" && !this.cidEncoding.startsWith(\"Identity-\") && !(this.toUnicode instanceof _to_unicode_map.IdentityToUnicodeMap)) {\n        this.toUnicode.forEach(function (charCode, unicodeCharCode) {\n          map[+charCode] = unicodeCharCode;\n        });\n      }\n\n      this.toFontChar = map;\n    } else {\n      const glyphsUnicodeMap = (0, _glyphlist.getGlyphsUnicode)();\n      const map = [];\n      this.toUnicode.forEach((charCode, unicodeCharCode) => {\n        if (!this.composite) {\n          const glyphName = this.differences[charCode] || this.defaultEncoding[charCode];\n          const unicode = (0, _unicode.getUnicodeForGlyph)(glyphName, glyphsUnicodeMap);\n\n          if (unicode !== -1) {\n            unicodeCharCode = unicode;\n          }\n        }\n\n        map[+charCode] = unicodeCharCode;\n      });\n\n      if (this.composite && this.toUnicode instanceof _to_unicode_map.IdentityToUnicodeMap) {\n        if (/Verdana/i.test(name)) {\n          applyStandardFontGlyphMap(map, (0, _standard_fonts.getGlyphMapForStandardFonts)());\n        }\n      }\n\n      this.toFontChar = map;\n    }\n\n    amendFallbackToUnicode(properties);\n    this.loadedName = fontName.split(\"-\")[0];\n    this.fontType = (0, _fonts_utils.getFontType)(type, subtype, properties.isStandardFont);\n  }\n\n  checkAndRepair(name, font, properties) {\n    const VALID_TABLES = [\"OS/2\", \"cmap\", \"head\", \"hhea\", \"hmtx\", \"maxp\", \"name\", \"post\", \"loca\", \"glyf\", \"fpgm\", \"prep\", \"cvt \", \"CFF \"];\n\n    function readTables(file, numTables) {\n      const tables = Object.create(null);\n      tables[\"OS/2\"] = null;\n      tables.cmap = null;\n      tables.head = null;\n      tables.hhea = null;\n      tables.hmtx = null;\n      tables.maxp = null;\n      tables.name = null;\n      tables.post = null;\n\n      for (let i = 0; i < numTables; i++) {\n        const table = readTableEntry(file);\n\n        if (!VALID_TABLES.includes(table.tag)) {\n          continue;\n        }\n\n        if (table.length === 0) {\n          continue;\n        }\n\n        tables[table.tag] = table;\n      }\n\n      return tables;\n    }\n\n    function readTableEntry(file) {\n      const tag = file.getString(4);\n      const checksum = file.getInt32() >>> 0;\n      const offset = file.getInt32() >>> 0;\n      const length = file.getInt32() >>> 0;\n      const previousPosition = file.pos;\n      file.pos = file.start ? file.start : 0;\n      file.skip(offset);\n      const data = file.getBytes(length);\n      file.pos = previousPosition;\n\n      if (tag === \"head\") {\n        data[8] = data[9] = data[10] = data[11] = 0;\n        data[17] |= 0x20;\n      }\n\n      return {\n        tag,\n        checksum,\n        length,\n        offset,\n        data\n      };\n    }\n\n    function readOpenTypeHeader(ttf) {\n      return {\n        version: ttf.getString(4),\n        numTables: ttf.getUint16(),\n        searchRange: ttf.getUint16(),\n        entrySelector: ttf.getUint16(),\n        rangeShift: ttf.getUint16()\n      };\n    }\n\n    function readTrueTypeCollectionHeader(ttc) {\n      const ttcTag = ttc.getString(4);\n      (0, _util.assert)(ttcTag === \"ttcf\", \"Must be a TrueType Collection font.\");\n      const majorVersion = ttc.getUint16();\n      const minorVersion = ttc.getUint16();\n      const numFonts = ttc.getInt32() >>> 0;\n      const offsetTable = [];\n\n      for (let i = 0; i < numFonts; i++) {\n        offsetTable.push(ttc.getInt32() >>> 0);\n      }\n\n      const header = {\n        ttcTag,\n        majorVersion,\n        minorVersion,\n        numFonts,\n        offsetTable\n      };\n\n      switch (majorVersion) {\n        case 1:\n          return header;\n\n        case 2:\n          header.dsigTag = ttc.getInt32() >>> 0;\n          header.dsigLength = ttc.getInt32() >>> 0;\n          header.dsigOffset = ttc.getInt32() >>> 0;\n          return header;\n      }\n\n      throw new _util.FormatError(`Invalid TrueType Collection majorVersion: ${majorVersion}.`);\n    }\n\n    function readTrueTypeCollectionData(ttc, fontName) {\n      const {\n        numFonts,\n        offsetTable\n      } = readTrueTypeCollectionHeader(ttc);\n      const fontNameParts = fontName.split(\"+\");\n      let fallbackData;\n\n      for (let i = 0; i < numFonts; i++) {\n        ttc.pos = (ttc.start || 0) + offsetTable[i];\n        const potentialHeader = readOpenTypeHeader(ttc);\n        const potentialTables = readTables(ttc, potentialHeader.numTables);\n\n        if (!potentialTables.name) {\n          throw new _util.FormatError('TrueType Collection font must contain a \"name\" table.');\n        }\n\n        const nameTable = readNameTable(potentialTables.name);\n\n        for (let j = 0, jj = nameTable.length; j < jj; j++) {\n          for (let k = 0, kk = nameTable[j].length; k < kk; k++) {\n            const nameEntry = nameTable[j][k] && nameTable[j][k].replace(/\\s/g, \"\");\n\n            if (!nameEntry) {\n              continue;\n            }\n\n            if (nameEntry === fontName) {\n              return {\n                header: potentialHeader,\n                tables: potentialTables\n              };\n            }\n\n            if (fontNameParts.length < 2) {\n              continue;\n            }\n\n            for (const part of fontNameParts) {\n              if (nameEntry === part) {\n                fallbackData = {\n                  name: part,\n                  header: potentialHeader,\n                  tables: potentialTables\n                };\n              }\n            }\n          }\n        }\n      }\n\n      if (fallbackData) {\n        (0, _util.warn)(`TrueType Collection does not contain \"${fontName}\" font, ` + `falling back to \"${fallbackData.name}\" font instead.`);\n        return {\n          header: fallbackData.header,\n          tables: fallbackData.tables\n        };\n      }\n\n      throw new _util.FormatError(`TrueType Collection does not contain \"${fontName}\" font.`);\n    }\n\n    function readCmapTable(cmap, file, isSymbolicFont, hasEncoding) {\n      if (!cmap) {\n        (0, _util.warn)(\"No cmap table available.\");\n        return {\n          platformId: -1,\n          encodingId: -1,\n          mappings: [],\n          hasShortCmap: false\n        };\n      }\n\n      let segment;\n      let start = (file.start ? file.start : 0) + cmap.offset;\n      file.pos = start;\n      file.skip(2);\n      const numTables = file.getUint16();\n      let potentialTable;\n      let canBreak = false;\n\n      for (let i = 0; i < numTables; i++) {\n        const platformId = file.getUint16();\n        const encodingId = file.getUint16();\n        const offset = file.getInt32() >>> 0;\n        let useTable = false;\n\n        if (potentialTable && potentialTable.platformId === platformId && potentialTable.encodingId === encodingId) {\n          continue;\n        }\n\n        if (platformId === 0 && (encodingId === 0 || encodingId === 1 || encodingId === 3)) {\n          useTable = true;\n        } else if (platformId === 1 && encodingId === 0) {\n          useTable = true;\n        } else if (platformId === 3 && encodingId === 1 && (hasEncoding || !potentialTable)) {\n          useTable = true;\n\n          if (!isSymbolicFont) {\n            canBreak = true;\n          }\n        } else if (isSymbolicFont && platformId === 3 && encodingId === 0) {\n          useTable = true;\n          let correctlySorted = true;\n\n          if (i < numTables - 1) {\n            const nextBytes = file.peekBytes(2),\n                  nextPlatformId = int16(nextBytes[0], nextBytes[1]);\n\n            if (nextPlatformId < platformId) {\n              correctlySorted = false;\n            }\n          }\n\n          if (correctlySorted) {\n            canBreak = true;\n          }\n        }\n\n        if (useTable) {\n          potentialTable = {\n            platformId,\n            encodingId,\n            offset\n          };\n        }\n\n        if (canBreak) {\n          break;\n        }\n      }\n\n      if (potentialTable) {\n        file.pos = start + potentialTable.offset;\n      }\n\n      if (!potentialTable || file.peekByte() === -1) {\n        (0, _util.warn)(\"Could not find a preferred cmap table.\");\n        return {\n          platformId: -1,\n          encodingId: -1,\n          mappings: [],\n          hasShortCmap: false\n        };\n      }\n\n      const format = file.getUint16();\n      file.skip(2 + 2);\n      let hasShortCmap = false;\n      const mappings = [];\n      let j, glyphId;\n\n      if (format === 0) {\n        for (j = 0; j < 256; j++) {\n          const index = file.getByte();\n\n          if (!index) {\n            continue;\n          }\n\n          mappings.push({\n            charCode: j,\n            glyphId: index\n          });\n        }\n\n        hasShortCmap = true;\n      } else if (format === 2) {\n        const subHeaderKeys = [];\n        let maxSubHeaderKey = 0;\n\n        for (let i = 0; i < 256; i++) {\n          const subHeaderKey = file.getUint16() >> 3;\n          subHeaderKeys.push(subHeaderKey);\n          maxSubHeaderKey = Math.max(subHeaderKey, maxSubHeaderKey);\n        }\n\n        const subHeaders = [];\n\n        for (let i = 0; i <= maxSubHeaderKey; i++) {\n          subHeaders.push({\n            firstCode: file.getUint16(),\n            entryCount: file.getUint16(),\n            idDelta: signedInt16(file.getByte(), file.getByte()),\n            idRangePos: file.pos + file.getUint16()\n          });\n        }\n\n        for (let i = 0; i < 256; i++) {\n          if (subHeaderKeys[i] === 0) {\n            file.pos = subHeaders[0].idRangePos + 2 * i;\n            glyphId = file.getUint16();\n            mappings.push({\n              charCode: i,\n              glyphId\n            });\n          } else {\n            const s = subHeaders[subHeaderKeys[i]];\n\n            for (j = 0; j < s.entryCount; j++) {\n              const charCode = (i << 8) + j + s.firstCode;\n              file.pos = s.idRangePos + 2 * j;\n              glyphId = file.getUint16();\n\n              if (glyphId !== 0) {\n                glyphId = (glyphId + s.idDelta) % 65536;\n              }\n\n              mappings.push({\n                charCode,\n                glyphId\n              });\n            }\n          }\n        }\n      } else if (format === 4) {\n        const segCount = file.getUint16() >> 1;\n        file.skip(6);\n        const segments = [];\n        let segIndex;\n\n        for (segIndex = 0; segIndex < segCount; segIndex++) {\n          segments.push({\n            end: file.getUint16()\n          });\n        }\n\n        file.skip(2);\n\n        for (segIndex = 0; segIndex < segCount; segIndex++) {\n          segments[segIndex].start = file.getUint16();\n        }\n\n        for (segIndex = 0; segIndex < segCount; segIndex++) {\n          segments[segIndex].delta = file.getUint16();\n        }\n\n        let offsetsCount = 0,\n            offsetIndex;\n\n        for (segIndex = 0; segIndex < segCount; segIndex++) {\n          segment = segments[segIndex];\n          const rangeOffset = file.getUint16();\n\n          if (!rangeOffset) {\n            segment.offsetIndex = -1;\n            continue;\n          }\n\n          offsetIndex = (rangeOffset >> 1) - (segCount - segIndex);\n          segment.offsetIndex = offsetIndex;\n          offsetsCount = Math.max(offsetsCount, offsetIndex + segment.end - segment.start + 1);\n        }\n\n        const offsets = [];\n\n        for (j = 0; j < offsetsCount; j++) {\n          offsets.push(file.getUint16());\n        }\n\n        for (segIndex = 0; segIndex < segCount; segIndex++) {\n          segment = segments[segIndex];\n          start = segment.start;\n          const end = segment.end;\n          const delta = segment.delta;\n          offsetIndex = segment.offsetIndex;\n\n          for (j = start; j <= end; j++) {\n            if (j === 0xffff) {\n              continue;\n            }\n\n            glyphId = offsetIndex < 0 ? j : offsets[offsetIndex + j - start];\n            glyphId = glyphId + delta & 0xffff;\n            mappings.push({\n              charCode: j,\n              glyphId\n            });\n          }\n        }\n      } else if (format === 6) {\n        const firstCode = file.getUint16();\n        const entryCount = file.getUint16();\n\n        for (j = 0; j < entryCount; j++) {\n          glyphId = file.getUint16();\n          const charCode = firstCode + j;\n          mappings.push({\n            charCode,\n            glyphId\n          });\n        }\n      } else {\n        (0, _util.warn)(\"cmap table has unsupported format: \" + format);\n        return {\n          platformId: -1,\n          encodingId: -1,\n          mappings: [],\n          hasShortCmap: false\n        };\n      }\n\n      mappings.sort(function (a, b) {\n        return a.charCode - b.charCode;\n      });\n\n      for (let i = 1; i < mappings.length; i++) {\n        if (mappings[i - 1].charCode === mappings[i].charCode) {\n          mappings.splice(i, 1);\n          i--;\n        }\n      }\n\n      return {\n        platformId: potentialTable.platformId,\n        encodingId: potentialTable.encodingId,\n        mappings,\n        hasShortCmap\n      };\n    }\n\n    function sanitizeMetrics(file, header, metrics, headTable, numGlyphs, dupFirstEntry) {\n      if (!header) {\n        if (metrics) {\n          metrics.data = null;\n        }\n\n        return;\n      }\n\n      file.pos = (file.start ? file.start : 0) + header.offset;\n      file.pos += 4;\n      file.pos += 2;\n      file.pos += 2;\n      file.pos += 2;\n      file.pos += 2;\n      file.pos += 2;\n      file.pos += 2;\n      file.pos += 2;\n      file.pos += 2;\n      file.pos += 2;\n      const caretOffset = file.getUint16();\n      file.pos += 8;\n      file.pos += 2;\n      let numOfMetrics = file.getUint16();\n\n      if (caretOffset !== 0) {\n        const macStyle = int16(headTable.data[44], headTable.data[45]);\n\n        if (!(macStyle & 2)) {\n          header.data[22] = 0;\n          header.data[23] = 0;\n        }\n      }\n\n      if (numOfMetrics > numGlyphs) {\n        (0, _util.info)(`The numOfMetrics (${numOfMetrics}) should not be ` + `greater than the numGlyphs (${numGlyphs}).`);\n        numOfMetrics = numGlyphs;\n        header.data[34] = (numOfMetrics & 0xff00) >> 8;\n        header.data[35] = numOfMetrics & 0x00ff;\n      }\n\n      const numOfSidebearings = numGlyphs - numOfMetrics;\n      const numMissing = numOfSidebearings - (metrics.length - numOfMetrics * 4 >> 1);\n\n      if (numMissing > 0) {\n        const entries = new Uint8Array(metrics.length + numMissing * 2);\n        entries.set(metrics.data);\n\n        if (dupFirstEntry) {\n          entries[metrics.length] = metrics.data[2];\n          entries[metrics.length + 1] = metrics.data[3];\n        }\n\n        metrics.data = entries;\n      }\n    }\n\n    function sanitizeGlyph(source, sourceStart, sourceEnd, dest, destStart, hintsValid) {\n      const glyphProfile = {\n        length: 0,\n        sizeOfInstructions: 0\n      };\n\n      if (sourceEnd - sourceStart <= 12) {\n        return glyphProfile;\n      }\n\n      const glyf = source.subarray(sourceStart, sourceEnd);\n      let contoursCount = signedInt16(glyf[0], glyf[1]);\n\n      if (contoursCount < 0) {\n        contoursCount = -1;\n        writeSignedInt16(glyf, 0, contoursCount);\n        dest.set(glyf, destStart);\n        glyphProfile.length = glyf.length;\n        return glyphProfile;\n      }\n\n      let i,\n          j = 10,\n          flagsCount = 0;\n\n      for (i = 0; i < contoursCount; i++) {\n        const endPoint = glyf[j] << 8 | glyf[j + 1];\n        flagsCount = endPoint + 1;\n        j += 2;\n      }\n\n      const instructionsStart = j;\n      const instructionsLength = glyf[j] << 8 | glyf[j + 1];\n      glyphProfile.sizeOfInstructions = instructionsLength;\n      j += 2 + instructionsLength;\n      const instructionsEnd = j;\n      let coordinatesLength = 0;\n\n      for (i = 0; i < flagsCount; i++) {\n        const flag = glyf[j++];\n\n        if (flag & 0xc0) {\n          glyf[j - 1] = flag & 0x3f;\n        }\n\n        let xLength = 2;\n\n        if (flag & 2) {\n          xLength = 1;\n        } else if (flag & 16) {\n          xLength = 0;\n        }\n\n        let yLength = 2;\n\n        if (flag & 4) {\n          yLength = 1;\n        } else if (flag & 32) {\n          yLength = 0;\n        }\n\n        const xyLength = xLength + yLength;\n        coordinatesLength += xyLength;\n\n        if (flag & 8) {\n          const repeat = glyf[j++];\n          i += repeat;\n          coordinatesLength += repeat * xyLength;\n        }\n      }\n\n      if (coordinatesLength === 0) {\n        return glyphProfile;\n      }\n\n      let glyphDataLength = j + coordinatesLength;\n\n      if (glyphDataLength > glyf.length) {\n        return glyphProfile;\n      }\n\n      if (!hintsValid && instructionsLength > 0) {\n        dest.set(glyf.subarray(0, instructionsStart), destStart);\n        dest.set([0, 0], destStart + instructionsStart);\n        dest.set(glyf.subarray(instructionsEnd, glyphDataLength), destStart + instructionsStart + 2);\n        glyphDataLength -= instructionsLength;\n\n        if (glyf.length - glyphDataLength > 3) {\n          glyphDataLength = glyphDataLength + 3 & ~3;\n        }\n\n        glyphProfile.length = glyphDataLength;\n        return glyphProfile;\n      }\n\n      if (glyf.length - glyphDataLength > 3) {\n        glyphDataLength = glyphDataLength + 3 & ~3;\n        dest.set(glyf.subarray(0, glyphDataLength), destStart);\n        glyphProfile.length = glyphDataLength;\n        return glyphProfile;\n      }\n\n      dest.set(glyf, destStart);\n      glyphProfile.length = glyf.length;\n      return glyphProfile;\n    }\n\n    function sanitizeHead(head, numGlyphs, locaLength) {\n      const data = head.data;\n      const version = int32(data[0], data[1], data[2], data[3]);\n\n      if (version >> 16 !== 1) {\n        (0, _util.info)(\"Attempting to fix invalid version in head table: \" + version);\n        data[0] = 0;\n        data[1] = 1;\n        data[2] = 0;\n        data[3] = 0;\n      }\n\n      const indexToLocFormat = int16(data[50], data[51]);\n\n      if (indexToLocFormat < 0 || indexToLocFormat > 1) {\n        (0, _util.info)(\"Attempting to fix invalid indexToLocFormat in head table: \" + indexToLocFormat);\n        const numGlyphsPlusOne = numGlyphs + 1;\n\n        if (locaLength === numGlyphsPlusOne << 1) {\n          data[50] = 0;\n          data[51] = 0;\n        } else if (locaLength === numGlyphsPlusOne << 2) {\n          data[50] = 0;\n          data[51] = 1;\n        } else {\n          throw new _util.FormatError(\"Could not fix indexToLocFormat: \" + indexToLocFormat);\n        }\n      }\n    }\n\n    function sanitizeGlyphLocations(loca, glyf, numGlyphs, isGlyphLocationsLong, hintsValid, dupFirstEntry, maxSizeOfInstructions) {\n      let itemSize, itemDecode, itemEncode;\n\n      if (isGlyphLocationsLong) {\n        itemSize = 4;\n\n        itemDecode = function fontItemDecodeLong(data, offset) {\n          return data[offset] << 24 | data[offset + 1] << 16 | data[offset + 2] << 8 | data[offset + 3];\n        };\n\n        itemEncode = function fontItemEncodeLong(data, offset, value) {\n          data[offset] = value >>> 24 & 0xff;\n          data[offset + 1] = value >> 16 & 0xff;\n          data[offset + 2] = value >> 8 & 0xff;\n          data[offset + 3] = value & 0xff;\n        };\n      } else {\n        itemSize = 2;\n\n        itemDecode = function fontItemDecode(data, offset) {\n          return data[offset] << 9 | data[offset + 1] << 1;\n        };\n\n        itemEncode = function fontItemEncode(data, offset, value) {\n          data[offset] = value >> 9 & 0xff;\n          data[offset + 1] = value >> 1 & 0xff;\n        };\n      }\n\n      const numGlyphsOut = dupFirstEntry ? numGlyphs + 1 : numGlyphs;\n      const locaDataSize = itemSize * (1 + numGlyphsOut);\n      const locaData = new Uint8Array(locaDataSize);\n      locaData.set(loca.data.subarray(0, locaDataSize));\n      loca.data = locaData;\n      const oldGlyfData = glyf.data;\n      const oldGlyfDataLength = oldGlyfData.length;\n      const newGlyfData = new Uint8Array(oldGlyfDataLength);\n      let i, j;\n      const locaEntries = [];\n\n      for (i = 0, j = 0; i < numGlyphs + 1; i++, j += itemSize) {\n        let offset = itemDecode(locaData, j);\n\n        if (offset > oldGlyfDataLength) {\n          offset = oldGlyfDataLength;\n        }\n\n        locaEntries.push({\n          index: i,\n          offset,\n          endOffset: 0\n        });\n      }\n\n      locaEntries.sort((a, b) => {\n        return a.offset - b.offset;\n      });\n\n      for (i = 0; i < numGlyphs; i++) {\n        locaEntries[i].endOffset = locaEntries[i + 1].offset;\n      }\n\n      locaEntries.sort((a, b) => {\n        return a.index - b.index;\n      });\n\n      for (i = 0; i < numGlyphs; i++) {\n        const {\n          offset,\n          endOffset\n        } = locaEntries[i];\n\n        if (offset !== 0 || endOffset !== 0) {\n          break;\n        }\n\n        const nextOffset = locaEntries[i + 1].offset;\n\n        if (nextOffset === 0) {\n          continue;\n        }\n\n        locaEntries[i].endOffset = nextOffset;\n        break;\n      }\n\n      const missingGlyphs = Object.create(null);\n      let writeOffset = 0;\n      itemEncode(locaData, 0, writeOffset);\n\n      for (i = 0, j = itemSize; i < numGlyphs; i++, j += itemSize) {\n        const glyphProfile = sanitizeGlyph(oldGlyfData, locaEntries[i].offset, locaEntries[i].endOffset, newGlyfData, writeOffset, hintsValid);\n        const newLength = glyphProfile.length;\n\n        if (newLength === 0) {\n          missingGlyphs[i] = true;\n        }\n\n        if (glyphProfile.sizeOfInstructions > maxSizeOfInstructions) {\n          maxSizeOfInstructions = glyphProfile.sizeOfInstructions;\n        }\n\n        writeOffset += newLength;\n        itemEncode(locaData, j, writeOffset);\n      }\n\n      if (writeOffset === 0) {\n        const simpleGlyph = new Uint8Array([0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 49, 0]);\n\n        for (i = 0, j = itemSize; i < numGlyphsOut; i++, j += itemSize) {\n          itemEncode(locaData, j, simpleGlyph.length);\n        }\n\n        glyf.data = simpleGlyph;\n      } else if (dupFirstEntry) {\n        const firstEntryLength = itemDecode(locaData, itemSize);\n\n        if (newGlyfData.length > firstEntryLength + writeOffset) {\n          glyf.data = newGlyfData.subarray(0, firstEntryLength + writeOffset);\n        } else {\n          glyf.data = new Uint8Array(firstEntryLength + writeOffset);\n          glyf.data.set(newGlyfData.subarray(0, writeOffset));\n        }\n\n        glyf.data.set(newGlyfData.subarray(0, firstEntryLength), writeOffset);\n        itemEncode(loca.data, locaData.length - itemSize, writeOffset + firstEntryLength);\n      } else {\n        glyf.data = newGlyfData.subarray(0, writeOffset);\n      }\n\n      return {\n        missingGlyphs,\n        maxSizeOfInstructions\n      };\n    }\n\n    function readPostScriptTable(post, propertiesObj, maxpNumGlyphs) {\n      const start = (font.start ? font.start : 0) + post.offset;\n      font.pos = start;\n      const length = post.length,\n            end = start + length;\n      const version = font.getInt32();\n      font.skip(28);\n      let glyphNames;\n      let valid = true;\n      let i;\n\n      switch (version) {\n        case 0x00010000:\n          glyphNames = _fonts_utils.MacStandardGlyphOrdering;\n          break;\n\n        case 0x00020000:\n          const numGlyphs = font.getUint16();\n\n          if (numGlyphs !== maxpNumGlyphs) {\n            valid = false;\n            break;\n          }\n\n          const glyphNameIndexes = [];\n\n          for (i = 0; i < numGlyphs; ++i) {\n            const index = font.getUint16();\n\n            if (index >= 32768) {\n              valid = false;\n              break;\n            }\n\n            glyphNameIndexes.push(index);\n          }\n\n          if (!valid) {\n            break;\n          }\n\n          const customNames = [],\n                strBuf = [];\n\n          while (font.pos < end) {\n            const stringLength = font.getByte();\n            strBuf.length = stringLength;\n\n            for (i = 0; i < stringLength; ++i) {\n              strBuf[i] = String.fromCharCode(font.getByte());\n            }\n\n            customNames.push(strBuf.join(\"\"));\n          }\n\n          glyphNames = [];\n\n          for (i = 0; i < numGlyphs; ++i) {\n            const j = glyphNameIndexes[i];\n\n            if (j < 258) {\n              glyphNames.push(_fonts_utils.MacStandardGlyphOrdering[j]);\n              continue;\n            }\n\n            glyphNames.push(customNames[j - 258]);\n          }\n\n          break;\n\n        case 0x00030000:\n          break;\n\n        default:\n          (0, _util.warn)(\"Unknown/unsupported post table version \" + version);\n          valid = false;\n\n          if (propertiesObj.defaultEncoding) {\n            glyphNames = propertiesObj.defaultEncoding;\n          }\n\n          break;\n      }\n\n      propertiesObj.glyphNames = glyphNames;\n      return valid;\n    }\n\n    function readNameTable(nameTable) {\n      const start = (font.start ? font.start : 0) + nameTable.offset;\n      font.pos = start;\n      const names = [[], []];\n      const length = nameTable.length,\n            end = start + length;\n      const format = font.getUint16();\n      const FORMAT_0_HEADER_LENGTH = 6;\n\n      if (format !== 0 || length < FORMAT_0_HEADER_LENGTH) {\n        return names;\n      }\n\n      const numRecords = font.getUint16();\n      const stringsStart = font.getUint16();\n      const records = [];\n      const NAME_RECORD_LENGTH = 12;\n      let i, ii;\n\n      for (i = 0; i < numRecords && font.pos + NAME_RECORD_LENGTH <= end; i++) {\n        const r = {\n          platform: font.getUint16(),\n          encoding: font.getUint16(),\n          language: font.getUint16(),\n          name: font.getUint16(),\n          length: font.getUint16(),\n          offset: font.getUint16()\n        };\n\n        if (r.platform === 1 && r.encoding === 0 && r.language === 0 || r.platform === 3 && r.encoding === 1 && r.language === 0x409) {\n          records.push(r);\n        }\n      }\n\n      for (i = 0, ii = records.length; i < ii; i++) {\n        const record = records[i];\n\n        if (record.length <= 0) {\n          continue;\n        }\n\n        const pos = start + stringsStart + record.offset;\n\n        if (pos + record.length > end) {\n          continue;\n        }\n\n        font.pos = pos;\n        const nameIndex = record.name;\n\n        if (record.encoding) {\n          let str = \"\";\n\n          for (let j = 0, jj = record.length; j < jj; j += 2) {\n            str += String.fromCharCode(font.getUint16());\n          }\n\n          names[1][nameIndex] = str;\n        } else {\n          names[0][nameIndex] = font.getString(record.length);\n        }\n      }\n\n      return names;\n    }\n\n    const TTOpsStackDeltas = [0, 0, 0, 0, 0, 0, 0, 0, -2, -2, -2, -2, 0, 0, -2, -5, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, -1, 0, -1, -1, -1, -1, 1, -1, -999, 0, 1, 0, -1, -2, 0, -1, -2, -1, -1, 0, -1, -1, 0, 0, -999, -999, -1, -1, -1, -1, -2, -999, -2, -2, -999, 0, -2, -2, 0, 0, -2, 0, -2, 0, 0, 0, -2, -1, -1, 1, 1, 0, 0, -1, -1, -1, -1, -1, -1, -1, 0, 0, -1, 0, -1, -1, 0, -999, -1, -1, -1, -1, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -2, -999, -999, -999, -999, -999, -1, -1, -2, -2, 0, 0, 0, 0, -1, -1, -999, -2, -2, 0, 0, -1, -2, -2, 0, 0, 0, -1, -1, -1, -2];\n\n    function sanitizeTTProgram(table, ttContext) {\n      let data = table.data;\n      let i = 0,\n          j,\n          n,\n          b,\n          funcId,\n          pc,\n          lastEndf = 0,\n          lastDeff = 0;\n      const stack = [];\n      const callstack = [];\n      const functionsCalled = [];\n      let tooComplexToFollowFunctions = ttContext.tooComplexToFollowFunctions;\n      let inFDEF = false,\n          ifLevel = 0,\n          inELSE = 0;\n\n      for (let ii = data.length; i < ii;) {\n        const op = data[i++];\n\n        if (op === 0x40) {\n          n = data[i++];\n\n          if (inFDEF || inELSE) {\n            i += n;\n          } else {\n            for (j = 0; j < n; j++) {\n              stack.push(data[i++]);\n            }\n          }\n        } else if (op === 0x41) {\n          n = data[i++];\n\n          if (inFDEF || inELSE) {\n            i += n * 2;\n          } else {\n            for (j = 0; j < n; j++) {\n              b = data[i++];\n              stack.push(b << 8 | data[i++]);\n            }\n          }\n        } else if ((op & 0xf8) === 0xb0) {\n          n = op - 0xb0 + 1;\n\n          if (inFDEF || inELSE) {\n            i += n;\n          } else {\n            for (j = 0; j < n; j++) {\n              stack.push(data[i++]);\n            }\n          }\n        } else if ((op & 0xf8) === 0xb8) {\n          n = op - 0xb8 + 1;\n\n          if (inFDEF || inELSE) {\n            i += n * 2;\n          } else {\n            for (j = 0; j < n; j++) {\n              b = data[i++];\n              stack.push(b << 8 | data[i++]);\n            }\n          }\n        } else if (op === 0x2b && !tooComplexToFollowFunctions) {\n          if (!inFDEF && !inELSE) {\n            funcId = stack[stack.length - 1];\n\n            if (isNaN(funcId)) {\n              (0, _util.info)(\"TT: CALL empty stack (or invalid entry).\");\n            } else {\n              ttContext.functionsUsed[funcId] = true;\n\n              if (funcId in ttContext.functionsStackDeltas) {\n                const newStackLength = stack.length + ttContext.functionsStackDeltas[funcId];\n\n                if (newStackLength < 0) {\n                  (0, _util.warn)(\"TT: CALL invalid functions stack delta.\");\n                  ttContext.hintsValid = false;\n                  return;\n                }\n\n                stack.length = newStackLength;\n              } else if (funcId in ttContext.functionsDefined && !functionsCalled.includes(funcId)) {\n                callstack.push({\n                  data,\n                  i,\n                  stackTop: stack.length - 1\n                });\n                functionsCalled.push(funcId);\n                pc = ttContext.functionsDefined[funcId];\n\n                if (!pc) {\n                  (0, _util.warn)(\"TT: CALL non-existent function\");\n                  ttContext.hintsValid = false;\n                  return;\n                }\n\n                data = pc.data;\n                i = pc.i;\n              }\n            }\n          }\n        } else if (op === 0x2c && !tooComplexToFollowFunctions) {\n          if (inFDEF || inELSE) {\n            (0, _util.warn)(\"TT: nested FDEFs not allowed\");\n            tooComplexToFollowFunctions = true;\n          }\n\n          inFDEF = true;\n          lastDeff = i;\n          funcId = stack.pop();\n          ttContext.functionsDefined[funcId] = {\n            data,\n            i\n          };\n        } else if (op === 0x2d) {\n          if (inFDEF) {\n            inFDEF = false;\n            lastEndf = i;\n          } else {\n            pc = callstack.pop();\n\n            if (!pc) {\n              (0, _util.warn)(\"TT: ENDF bad stack\");\n              ttContext.hintsValid = false;\n              return;\n            }\n\n            funcId = functionsCalled.pop();\n            data = pc.data;\n            i = pc.i;\n            ttContext.functionsStackDeltas[funcId] = stack.length - pc.stackTop;\n          }\n        } else if (op === 0x89) {\n          if (inFDEF || inELSE) {\n            (0, _util.warn)(\"TT: nested IDEFs not allowed\");\n            tooComplexToFollowFunctions = true;\n          }\n\n          inFDEF = true;\n          lastDeff = i;\n        } else if (op === 0x58) {\n          ++ifLevel;\n        } else if (op === 0x1b) {\n          inELSE = ifLevel;\n        } else if (op === 0x59) {\n          if (inELSE === ifLevel) {\n            inELSE = 0;\n          }\n\n          --ifLevel;\n        } else if (op === 0x1c) {\n          if (!inFDEF && !inELSE) {\n            const offset = stack[stack.length - 1];\n\n            if (offset > 0) {\n              i += offset - 1;\n            }\n          }\n        }\n\n        if (!inFDEF && !inELSE) {\n          let stackDelta = 0;\n\n          if (op <= 0x8e) {\n            stackDelta = TTOpsStackDeltas[op];\n          } else if (op >= 0xc0 && op <= 0xdf) {\n            stackDelta = -1;\n          } else if (op >= 0xe0) {\n            stackDelta = -2;\n          }\n\n          if (op >= 0x71 && op <= 0x75) {\n            n = stack.pop();\n\n            if (!isNaN(n)) {\n              stackDelta = -n * 2;\n            }\n          }\n\n          while (stackDelta < 0 && stack.length > 0) {\n            stack.pop();\n            stackDelta++;\n          }\n\n          while (stackDelta > 0) {\n            stack.push(NaN);\n            stackDelta--;\n          }\n        }\n      }\n\n      ttContext.tooComplexToFollowFunctions = tooComplexToFollowFunctions;\n      const content = [data];\n\n      if (i > data.length) {\n        content.push(new Uint8Array(i - data.length));\n      }\n\n      if (lastDeff > lastEndf) {\n        (0, _util.warn)(\"TT: complementing a missing function tail\");\n        content.push(new Uint8Array([0x22, 0x2d]));\n      }\n\n      foldTTTable(table, content);\n    }\n\n    function checkInvalidFunctions(ttContext, maxFunctionDefs) {\n      if (ttContext.tooComplexToFollowFunctions) {\n        return;\n      }\n\n      if (ttContext.functionsDefined.length > maxFunctionDefs) {\n        (0, _util.warn)(\"TT: more functions defined than expected\");\n        ttContext.hintsValid = false;\n        return;\n      }\n\n      for (let j = 0, jj = ttContext.functionsUsed.length; j < jj; j++) {\n        if (j > maxFunctionDefs) {\n          (0, _util.warn)(\"TT: invalid function id: \" + j);\n          ttContext.hintsValid = false;\n          return;\n        }\n\n        if (ttContext.functionsUsed[j] && !ttContext.functionsDefined[j]) {\n          (0, _util.warn)(\"TT: undefined function: \" + j);\n          ttContext.hintsValid = false;\n          return;\n        }\n      }\n    }\n\n    function foldTTTable(table, content) {\n      if (content.length > 1) {\n        let newLength = 0;\n        let j, jj;\n\n        for (j = 0, jj = content.length; j < jj; j++) {\n          newLength += content[j].length;\n        }\n\n        newLength = newLength + 3 & ~3;\n        const result = new Uint8Array(newLength);\n        let pos = 0;\n\n        for (j = 0, jj = content.length; j < jj; j++) {\n          result.set(content[j], pos);\n          pos += content[j].length;\n        }\n\n        table.data = result;\n        table.length = newLength;\n      }\n    }\n\n    function sanitizeTTPrograms(fpgm, prep, cvt, maxFunctionDefs) {\n      const ttContext = {\n        functionsDefined: [],\n        functionsUsed: [],\n        functionsStackDeltas: [],\n        tooComplexToFollowFunctions: false,\n        hintsValid: true\n      };\n\n      if (fpgm) {\n        sanitizeTTProgram(fpgm, ttContext);\n      }\n\n      if (prep) {\n        sanitizeTTProgram(prep, ttContext);\n      }\n\n      if (fpgm) {\n        checkInvalidFunctions(ttContext, maxFunctionDefs);\n      }\n\n      if (cvt && cvt.length & 1) {\n        const cvtData = new Uint8Array(cvt.length + 1);\n        cvtData.set(cvt.data);\n        cvt.data = cvtData;\n      }\n\n      return ttContext.hintsValid;\n    }\n\n    font = new _stream.Stream(new Uint8Array(font.getBytes()));\n    let header, tables;\n\n    if (isTrueTypeCollectionFile(font)) {\n      const ttcData = readTrueTypeCollectionData(font, this.name);\n      header = ttcData.header;\n      tables = ttcData.tables;\n    } else {\n      header = readOpenTypeHeader(font);\n      tables = readTables(font, header.numTables);\n    }\n\n    let cff, cffFile;\n    const isTrueType = !tables[\"CFF \"];\n\n    if (!isTrueType) {\n      const isComposite = properties.composite && ((properties.cidToGidMap || []).length > 0 || !(properties.cMap instanceof _cmap.IdentityCMap));\n\n      if (header.version === \"OTTO\" && !isComposite || !tables.head || !tables.hhea || !tables.maxp || !tables.post) {\n        cffFile = new _stream.Stream(tables[\"CFF \"].data);\n        cff = new _cff_font.CFFFont(cffFile, properties);\n        adjustWidths(properties);\n        return this.convert(name, cff, properties);\n      }\n\n      delete tables.glyf;\n      delete tables.loca;\n      delete tables.fpgm;\n      delete tables.prep;\n      delete tables[\"cvt \"];\n      this.isOpenType = true;\n    } else {\n      if (!tables.loca) {\n        throw new _util.FormatError('Required \"loca\" table is not found');\n      }\n\n      if (!tables.glyf) {\n        (0, _util.warn)('Required \"glyf\" table is not found -- trying to recover.');\n        tables.glyf = {\n          tag: \"glyf\",\n          data: new Uint8Array(0)\n        };\n      }\n\n      this.isOpenType = false;\n    }\n\n    if (!tables.maxp) {\n      throw new _util.FormatError('Required \"maxp\" table is not found');\n    }\n\n    font.pos = (font.start || 0) + tables.maxp.offset;\n    const version = font.getInt32();\n    const numGlyphs = font.getUint16();\n\n    if (properties.scaleFactors && properties.scaleFactors.length === numGlyphs && isTrueType) {\n      const {\n        scaleFactors\n      } = properties;\n      const isGlyphLocationsLong = int16(tables.head.data[50], tables.head.data[51]);\n      const glyphs = new _glyf.GlyfTable({\n        glyfTable: tables.glyf.data,\n        isGlyphLocationsLong,\n        locaTable: tables.loca.data,\n        numGlyphs\n      });\n      glyphs.scale(scaleFactors);\n      const {\n        glyf,\n        loca,\n        isLocationLong\n      } = glyphs.write();\n      tables.glyf.data = glyf;\n      tables.loca.data = loca;\n\n      if (isLocationLong !== !!isGlyphLocationsLong) {\n        tables.head.data[50] = 0;\n        tables.head.data[51] = isLocationLong ? 1 : 0;\n      }\n\n      const metrics = tables.hmtx.data;\n\n      for (let i = 0; i < numGlyphs; i++) {\n        const j = 4 * i;\n        const advanceWidth = Math.round(scaleFactors[i] * int16(metrics[j], metrics[j + 1]));\n        metrics[j] = advanceWidth >> 8 & 0xff;\n        metrics[j + 1] = advanceWidth & 0xff;\n        const lsb = Math.round(scaleFactors[i] * signedInt16(metrics[j + 2], metrics[j + 3]));\n        writeSignedInt16(metrics, j + 2, lsb);\n      }\n    }\n\n    let numGlyphsOut = numGlyphs + 1;\n    let dupFirstEntry = true;\n\n    if (numGlyphsOut > 0xffff) {\n      dupFirstEntry = false;\n      numGlyphsOut = numGlyphs;\n      (0, _util.warn)(\"Not enough space in glyfs to duplicate first glyph.\");\n    }\n\n    let maxFunctionDefs = 0;\n    let maxSizeOfInstructions = 0;\n\n    if (version >= 0x00010000 && tables.maxp.length >= 22) {\n      font.pos += 8;\n      const maxZones = font.getUint16();\n\n      if (maxZones > 2) {\n        tables.maxp.data[14] = 0;\n        tables.maxp.data[15] = 2;\n      }\n\n      font.pos += 4;\n      maxFunctionDefs = font.getUint16();\n      font.pos += 4;\n      maxSizeOfInstructions = font.getUint16();\n    }\n\n    tables.maxp.data[4] = numGlyphsOut >> 8;\n    tables.maxp.data[5] = numGlyphsOut & 255;\n    const hintsValid = sanitizeTTPrograms(tables.fpgm, tables.prep, tables[\"cvt \"], maxFunctionDefs);\n\n    if (!hintsValid) {\n      delete tables.fpgm;\n      delete tables.prep;\n      delete tables[\"cvt \"];\n    }\n\n    sanitizeMetrics(font, tables.hhea, tables.hmtx, tables.head, numGlyphsOut, dupFirstEntry);\n\n    if (!tables.head) {\n      throw new _util.FormatError('Required \"head\" table is not found');\n    }\n\n    sanitizeHead(tables.head, numGlyphs, isTrueType ? tables.loca.length : 0);\n    let missingGlyphs = Object.create(null);\n\n    if (isTrueType) {\n      const isGlyphLocationsLong = int16(tables.head.data[50], tables.head.data[51]);\n      const glyphsInfo = sanitizeGlyphLocations(tables.loca, tables.glyf, numGlyphs, isGlyphLocationsLong, hintsValid, dupFirstEntry, maxSizeOfInstructions);\n      missingGlyphs = glyphsInfo.missingGlyphs;\n\n      if (version >= 0x00010000 && tables.maxp.length >= 22) {\n        tables.maxp.data[26] = glyphsInfo.maxSizeOfInstructions >> 8;\n        tables.maxp.data[27] = glyphsInfo.maxSizeOfInstructions & 255;\n      }\n    }\n\n    if (!tables.hhea) {\n      throw new _util.FormatError('Required \"hhea\" table is not found');\n    }\n\n    if (tables.hhea.data[10] === 0 && tables.hhea.data[11] === 0) {\n      tables.hhea.data[10] = 0xff;\n      tables.hhea.data[11] = 0xff;\n    }\n\n    const metricsOverride = {\n      unitsPerEm: int16(tables.head.data[18], tables.head.data[19]),\n      yMax: int16(tables.head.data[42], tables.head.data[43]),\n      yMin: signedInt16(tables.head.data[38], tables.head.data[39]),\n      ascent: signedInt16(tables.hhea.data[4], tables.hhea.data[5]),\n      descent: signedInt16(tables.hhea.data[6], tables.hhea.data[7]),\n      lineGap: signedInt16(tables.hhea.data[8], tables.hhea.data[9])\n    };\n    this.ascent = metricsOverride.ascent / metricsOverride.unitsPerEm;\n    this.descent = metricsOverride.descent / metricsOverride.unitsPerEm;\n    this.lineGap = metricsOverride.lineGap / metricsOverride.unitsPerEm;\n\n    if (this.cssFontInfo && this.cssFontInfo.lineHeight) {\n      this.lineHeight = this.cssFontInfo.metrics.lineHeight;\n      this.lineGap = this.cssFontInfo.metrics.lineGap;\n    } else {\n      this.lineHeight = this.ascent - this.descent + this.lineGap;\n    }\n\n    if (tables.post) {\n      readPostScriptTable(tables.post, properties, numGlyphs);\n    }\n\n    tables.post = {\n      tag: \"post\",\n      data: createPostTable(properties)\n    };\n    const charCodeToGlyphId = [];\n\n    function hasGlyph(glyphId) {\n      return !missingGlyphs[glyphId];\n    }\n\n    if (properties.composite) {\n      const cidToGidMap = properties.cidToGidMap || [];\n      const isCidToGidMapEmpty = cidToGidMap.length === 0;\n      properties.cMap.forEach(function (charCode, cid) {\n        if (typeof cid === \"string\") {\n          cid = convertCidString(charCode, cid, true);\n        }\n\n        if (cid > 0xffff) {\n          throw new _util.FormatError(\"Max size of CID is 65,535\");\n        }\n\n        let glyphId = -1;\n\n        if (isCidToGidMapEmpty) {\n          glyphId = cid;\n        } else if (cidToGidMap[cid] !== undefined) {\n          glyphId = cidToGidMap[cid];\n        }\n\n        if (glyphId >= 0 && glyphId < numGlyphs && hasGlyph(glyphId)) {\n          charCodeToGlyphId[charCode] = glyphId;\n        }\n      });\n    } else {\n      const cmapTable = readCmapTable(tables.cmap, font, this.isSymbolicFont, properties.hasEncoding);\n      const cmapPlatformId = cmapTable.platformId;\n      const cmapEncodingId = cmapTable.encodingId;\n      const cmapMappings = cmapTable.mappings;\n      const cmapMappingsLength = cmapMappings.length;\n      let baseEncoding = [],\n          forcePostTable = false;\n\n      if (properties.hasEncoding && (properties.baseEncodingName === \"MacRomanEncoding\" || properties.baseEncodingName === \"WinAnsiEncoding\")) {\n        baseEncoding = (0, _encodings.getEncoding)(properties.baseEncodingName);\n      }\n\n      if (properties.hasEncoding && !this.isSymbolicFont && (cmapPlatformId === 3 && cmapEncodingId === 1 || cmapPlatformId === 1 && cmapEncodingId === 0)) {\n        const glyphsUnicodeMap = (0, _glyphlist.getGlyphsUnicode)();\n\n        for (let charCode = 0; charCode < 256; charCode++) {\n          let glyphName;\n\n          if (this.differences[charCode] !== undefined) {\n            glyphName = this.differences[charCode];\n          } else if (baseEncoding.length && baseEncoding[charCode] !== \"\") {\n            glyphName = baseEncoding[charCode];\n          } else {\n            glyphName = _encodings.StandardEncoding[charCode];\n          }\n\n          if (!glyphName) {\n            continue;\n          }\n\n          const standardGlyphName = (0, _fonts_utils.recoverGlyphName)(glyphName, glyphsUnicodeMap);\n          let unicodeOrCharCode;\n\n          if (cmapPlatformId === 3 && cmapEncodingId === 1) {\n            unicodeOrCharCode = glyphsUnicodeMap[standardGlyphName];\n          } else if (cmapPlatformId === 1 && cmapEncodingId === 0) {\n            unicodeOrCharCode = _encodings.MacRomanEncoding.indexOf(standardGlyphName);\n          }\n\n          if (unicodeOrCharCode === undefined) {\n            if (!properties.glyphNames && properties.hasIncludedToUnicodeMap && !(this.toUnicode instanceof _to_unicode_map.IdentityToUnicodeMap)) {\n              const unicode = this.toUnicode.get(charCode);\n\n              if (unicode) {\n                unicodeOrCharCode = unicode.codePointAt(0);\n              }\n            }\n\n            if (unicodeOrCharCode === undefined) {\n              continue;\n            }\n          }\n\n          for (let i = 0; i < cmapMappingsLength; ++i) {\n            if (cmapMappings[i].charCode !== unicodeOrCharCode) {\n              continue;\n            }\n\n            charCodeToGlyphId[charCode] = cmapMappings[i].glyphId;\n            break;\n          }\n        }\n      } else if (cmapPlatformId === 0) {\n        for (let i = 0; i < cmapMappingsLength; ++i) {\n          charCodeToGlyphId[cmapMappings[i].charCode] = cmapMappings[i].glyphId;\n        }\n\n        forcePostTable = true;\n      } else {\n        for (let i = 0; i < cmapMappingsLength; ++i) {\n          let charCode = cmapMappings[i].charCode;\n\n          if (cmapPlatformId === 3 && charCode >= 0xf000 && charCode <= 0xf0ff) {\n            charCode &= 0xff;\n          }\n\n          charCodeToGlyphId[charCode] = cmapMappings[i].glyphId;\n        }\n      }\n\n      if (properties.glyphNames && (baseEncoding.length || this.differences.length)) {\n        for (let i = 0; i < 256; ++i) {\n          if (!forcePostTable && charCodeToGlyphId[i] !== undefined) {\n            continue;\n          }\n\n          const glyphName = this.differences[i] || baseEncoding[i];\n\n          if (!glyphName) {\n            continue;\n          }\n\n          const glyphId = properties.glyphNames.indexOf(glyphName);\n\n          if (glyphId > 0 && hasGlyph(glyphId)) {\n            charCodeToGlyphId[i] = glyphId;\n          }\n        }\n      }\n    }\n\n    if (charCodeToGlyphId.length === 0) {\n      charCodeToGlyphId[0] = 0;\n    }\n\n    let glyphZeroId = numGlyphsOut - 1;\n\n    if (!dupFirstEntry) {\n      glyphZeroId = 0;\n    }\n\n    if (!properties.cssFontInfo) {\n      const newMapping = adjustMapping(charCodeToGlyphId, hasGlyph, glyphZeroId);\n      this.toFontChar = newMapping.toFontChar;\n      tables.cmap = {\n        tag: \"cmap\",\n        data: createCmapTable(newMapping.charCodeToGlyphId, numGlyphsOut)\n      };\n\n      if (!tables[\"OS/2\"] || !validateOS2Table(tables[\"OS/2\"], font)) {\n        tables[\"OS/2\"] = {\n          tag: \"OS/2\",\n          data: createOS2Table(properties, newMapping.charCodeToGlyphId, metricsOverride)\n        };\n      }\n    }\n\n    if (!isTrueType) {\n      try {\n        cffFile = new _stream.Stream(tables[\"CFF \"].data);\n        const parser = new _cff_parser.CFFParser(cffFile, properties, _fonts_utils.SEAC_ANALYSIS_ENABLED);\n        cff = parser.parse();\n        cff.duplicateFirstGlyph();\n        const compiler = new _cff_parser.CFFCompiler(cff);\n        tables[\"CFF \"].data = compiler.compile();\n      } catch (e) {\n        (0, _util.warn)(\"Failed to compile font \" + properties.loadedName);\n      }\n    }\n\n    if (!tables.name) {\n      tables.name = {\n        tag: \"name\",\n        data: createNameTable(this.name)\n      };\n    } else {\n      const namePrototype = readNameTable(tables.name);\n      tables.name.data = createNameTable(name, namePrototype);\n      this.psName = namePrototype[0][6] || null;\n    }\n\n    const builder = new _opentype_file_builder.OpenTypeFileBuilder(header.version);\n\n    for (const tableTag in tables) {\n      builder.addTable(tableTag, tables[tableTag].data);\n    }\n\n    return builder.toArray();\n  }\n\n  convert(fontName, font, properties) {\n    properties.fixedPitch = false;\n\n    if (properties.builtInEncoding) {\n      adjustToUnicode(properties, properties.builtInEncoding);\n    }\n\n    let glyphZeroId = 1;\n\n    if (font instanceof _cff_font.CFFFont) {\n      glyphZeroId = font.numGlyphs - 1;\n    }\n\n    const mapping = font.getGlyphMapping(properties);\n    let newMapping = null;\n    let newCharCodeToGlyphId = mapping;\n\n    if (!properties.cssFontInfo) {\n      newMapping = adjustMapping(mapping, font.hasGlyphId.bind(font), glyphZeroId);\n      this.toFontChar = newMapping.toFontChar;\n      newCharCodeToGlyphId = newMapping.charCodeToGlyphId;\n    }\n\n    const numGlyphs = font.numGlyphs;\n\n    function getCharCodes(charCodeToGlyphId, glyphId) {\n      let charCodes = null;\n\n      for (const charCode in charCodeToGlyphId) {\n        if (glyphId === charCodeToGlyphId[charCode]) {\n          if (!charCodes) {\n            charCodes = [];\n          }\n\n          charCodes.push(charCode | 0);\n        }\n      }\n\n      return charCodes;\n    }\n\n    function createCharCode(charCodeToGlyphId, glyphId) {\n      for (const charCode in charCodeToGlyphId) {\n        if (glyphId === charCodeToGlyphId[charCode]) {\n          return charCode | 0;\n        }\n      }\n\n      newMapping.charCodeToGlyphId[newMapping.nextAvailableFontCharCode] = glyphId;\n      return newMapping.nextAvailableFontCharCode++;\n    }\n\n    const seacs = font.seacs;\n\n    if (newMapping && _fonts_utils.SEAC_ANALYSIS_ENABLED && seacs && seacs.length) {\n      const matrix = properties.fontMatrix || _util.FONT_IDENTITY_MATRIX;\n      const charset = font.getCharset();\n      const seacMap = Object.create(null);\n\n      for (let glyphId in seacs) {\n        glyphId |= 0;\n        const seac = seacs[glyphId];\n        const baseGlyphName = _encodings.StandardEncoding[seac[2]];\n        const accentGlyphName = _encodings.StandardEncoding[seac[3]];\n        const baseGlyphId = charset.indexOf(baseGlyphName);\n        const accentGlyphId = charset.indexOf(accentGlyphName);\n\n        if (baseGlyphId < 0 || accentGlyphId < 0) {\n          continue;\n        }\n\n        const accentOffset = {\n          x: seac[0] * matrix[0] + seac[1] * matrix[2] + matrix[4],\n          y: seac[0] * matrix[1] + seac[1] * matrix[3] + matrix[5]\n        };\n        const charCodes = getCharCodes(mapping, glyphId);\n\n        if (!charCodes) {\n          continue;\n        }\n\n        for (let i = 0, ii = charCodes.length; i < ii; i++) {\n          const charCode = charCodes[i];\n          const charCodeToGlyphId = newMapping.charCodeToGlyphId;\n          const baseFontCharCode = createCharCode(charCodeToGlyphId, baseGlyphId);\n          const accentFontCharCode = createCharCode(charCodeToGlyphId, accentGlyphId);\n          seacMap[charCode] = {\n            baseFontCharCode,\n            accentFontCharCode,\n            accentOffset\n          };\n        }\n      }\n\n      properties.seacMap = seacMap;\n    }\n\n    const unitsPerEm = 1 / (properties.fontMatrix || _util.FONT_IDENTITY_MATRIX)[0];\n    const builder = new _opentype_file_builder.OpenTypeFileBuilder(\"\\x4F\\x54\\x54\\x4F\");\n    builder.addTable(\"CFF \", font.data);\n    builder.addTable(\"OS/2\", createOS2Table(properties, newCharCodeToGlyphId));\n    builder.addTable(\"cmap\", createCmapTable(newCharCodeToGlyphId, numGlyphs));\n    builder.addTable(\"head\", \"\\x00\\x01\\x00\\x00\" + \"\\x00\\x00\\x10\\x00\" + \"\\x00\\x00\\x00\\x00\" + \"\\x5F\\x0F\\x3C\\xF5\" + \"\\x00\\x00\" + safeString16(unitsPerEm) + \"\\x00\\x00\\x00\\x00\\x9e\\x0b\\x7e\\x27\" + \"\\x00\\x00\\x00\\x00\\x9e\\x0b\\x7e\\x27\" + \"\\x00\\x00\" + safeString16(properties.descent) + \"\\x0F\\xFF\" + safeString16(properties.ascent) + string16(properties.italicAngle ? 2 : 0) + \"\\x00\\x11\" + \"\\x00\\x00\" + \"\\x00\\x00\" + \"\\x00\\x00\");\n    builder.addTable(\"hhea\", \"\\x00\\x01\\x00\\x00\" + safeString16(properties.ascent) + safeString16(properties.descent) + \"\\x00\\x00\" + \"\\xFF\\xFF\" + \"\\x00\\x00\" + \"\\x00\\x00\" + \"\\x00\\x00\" + safeString16(properties.capHeight) + safeString16(Math.tan(properties.italicAngle) * properties.xHeight) + \"\\x00\\x00\" + \"\\x00\\x00\" + \"\\x00\\x00\" + \"\\x00\\x00\" + \"\\x00\\x00\" + \"\\x00\\x00\" + string16(numGlyphs));\n    builder.addTable(\"hmtx\", function fontFieldsHmtx() {\n      const charstrings = font.charstrings;\n      const cffWidths = font.cff ? font.cff.widths : null;\n      let hmtx = \"\\x00\\x00\\x00\\x00\";\n\n      for (let i = 1, ii = numGlyphs; i < ii; i++) {\n        let width = 0;\n\n        if (charstrings) {\n          const charstring = charstrings[i - 1];\n          width = \"width\" in charstring ? charstring.width : 0;\n        } else if (cffWidths) {\n          width = Math.ceil(cffWidths[i] || 0);\n        }\n\n        hmtx += string16(width) + string16(0);\n      }\n\n      return hmtx;\n    }());\n    builder.addTable(\"maxp\", \"\\x00\\x00\\x50\\x00\" + string16(numGlyphs));\n    builder.addTable(\"name\", createNameTable(fontName));\n    builder.addTable(\"post\", createPostTable(properties));\n    return builder.toArray();\n  }\n\n  get spaceWidth() {\n    const possibleSpaceReplacements = [\"space\", \"minus\", \"one\", \"i\", \"I\"];\n    let width;\n\n    for (let i = 0, ii = possibleSpaceReplacements.length; i < ii; i++) {\n      const glyphName = possibleSpaceReplacements[i];\n\n      if (glyphName in this.widths) {\n        width = this.widths[glyphName];\n        break;\n      }\n\n      const glyphsUnicodeMap = (0, _glyphlist.getGlyphsUnicode)();\n      const glyphUnicode = glyphsUnicodeMap[glyphName];\n      let charcode = 0;\n\n      if (this.composite && this.cMap.contains(glyphUnicode)) {\n        charcode = this.cMap.lookup(glyphUnicode);\n\n        if (typeof charcode === \"string\") {\n          charcode = convertCidString(glyphUnicode, charcode);\n        }\n      }\n\n      if (!charcode && this.toUnicode) {\n        charcode = this.toUnicode.charCodeOf(glyphUnicode);\n      }\n\n      if (charcode <= 0) {\n        charcode = glyphUnicode;\n      }\n\n      width = this.widths[charcode];\n\n      if (width) {\n        break;\n      }\n    }\n\n    width = width || this.defaultWidth;\n    return (0, _util.shadow)(this, \"spaceWidth\", width);\n  }\n\n  _charToGlyph(charcode, isSpace = false) {\n    let fontCharCode, width, operatorListId;\n    let widthCode = charcode;\n\n    if (this.cMap && this.cMap.contains(charcode)) {\n      widthCode = this.cMap.lookup(charcode);\n\n      if (typeof widthCode === \"string\") {\n        widthCode = convertCidString(charcode, widthCode);\n      }\n    }\n\n    width = this.widths[widthCode];\n\n    if (typeof width !== \"number\") {\n      width = this.defaultWidth;\n    }\n\n    const vmetric = this.vmetrics && this.vmetrics[widthCode];\n    let unicode = this.toUnicode.get(charcode) || charcode;\n\n    if (typeof unicode === \"number\") {\n      unicode = String.fromCharCode(unicode);\n    }\n\n    let isInFont = this.toFontChar[charcode] !== undefined;\n    fontCharCode = this.toFontChar[charcode] || charcode;\n\n    if (this.missingFile) {\n      const glyphName = this.differences[charcode] || this.defaultEncoding[charcode];\n\n      if ((glyphName === \".notdef\" || glyphName === \"\") && this.type === \"Type1\") {\n        fontCharCode = 0x20;\n      }\n\n      fontCharCode = (0, _unicode.mapSpecialUnicodeValues)(fontCharCode);\n    }\n\n    if (this.isType3Font) {\n      operatorListId = fontCharCode;\n    }\n\n    let accent = null;\n\n    if (this.seacMap && this.seacMap[charcode]) {\n      isInFont = true;\n      const seac = this.seacMap[charcode];\n      fontCharCode = seac.baseFontCharCode;\n      accent = {\n        fontChar: String.fromCodePoint(seac.accentFontCharCode),\n        offset: seac.accentOffset\n      };\n    }\n\n    let fontChar = \"\";\n\n    if (typeof fontCharCode === \"number\") {\n      if (fontCharCode <= 0x10ffff) {\n        fontChar = String.fromCodePoint(fontCharCode);\n      } else {\n        (0, _util.warn)(`charToGlyph - invalid fontCharCode: ${fontCharCode}`);\n      }\n    }\n\n    let glyph = this._glyphCache[charcode];\n\n    if (!glyph || !glyph.matchesForCache(charcode, fontChar, unicode, accent, width, vmetric, operatorListId, isSpace, isInFont)) {\n      glyph = new Glyph(charcode, fontChar, unicode, accent, width, vmetric, operatorListId, isSpace, isInFont);\n      this._glyphCache[charcode] = glyph;\n    }\n\n    return glyph;\n  }\n\n  charsToGlyphs(chars) {\n    let glyphs = this._charsCache[chars];\n\n    if (glyphs) {\n      return glyphs;\n    }\n\n    glyphs = [];\n\n    if (this.cMap) {\n      const c = Object.create(null),\n            ii = chars.length;\n      let i = 0;\n\n      while (i < ii) {\n        this.cMap.readCharCode(chars, i, c);\n        const {\n          charcode,\n          length\n        } = c;\n        i += length;\n\n        const glyph = this._charToGlyph(charcode, length === 1 && chars.charCodeAt(i - 1) === 0x20);\n\n        glyphs.push(glyph);\n      }\n    } else {\n      for (let i = 0, ii = chars.length; i < ii; ++i) {\n        const charcode = chars.charCodeAt(i);\n\n        const glyph = this._charToGlyph(charcode, charcode === 0x20);\n\n        glyphs.push(glyph);\n      }\n    }\n\n    return this._charsCache[chars] = glyphs;\n  }\n\n  getCharPositions(chars) {\n    const positions = [];\n\n    if (this.cMap) {\n      const c = Object.create(null);\n      let i = 0;\n\n      while (i < chars.length) {\n        this.cMap.readCharCode(chars, i, c);\n        const length = c.length;\n        positions.push([i, i + length]);\n        i += length;\n      }\n    } else {\n      for (let i = 0, ii = chars.length; i < ii; ++i) {\n        positions.push([i, i + 1]);\n      }\n    }\n\n    return positions;\n  }\n\n  get glyphCacheValues() {\n    return Object.values(this._glyphCache);\n  }\n\n  encodeString(str) {\n    const buffers = [];\n    const currentBuf = [];\n\n    const hasCurrentBufErrors = () => buffers.length % 2 === 1;\n\n    const getCharCode = this.toUnicode instanceof _to_unicode_map.IdentityToUnicodeMap ? unicode => this.toUnicode.charCodeOf(unicode) : unicode => this.toUnicode.charCodeOf(String.fromCodePoint(unicode));\n\n    for (let i = 0, ii = str.length; i < ii; i++) {\n      const unicode = str.codePointAt(i);\n\n      if (unicode > 0xd7ff && (unicode < 0xe000 || unicode > 0xfffd)) {\n        i++;\n      }\n\n      if (this.toUnicode) {\n        const charCode = getCharCode(unicode);\n\n        if (charCode !== -1) {\n          if (hasCurrentBufErrors()) {\n            buffers.push(currentBuf.join(\"\"));\n            currentBuf.length = 0;\n          }\n\n          const charCodeLength = this.cMap ? this.cMap.getCharCodeLength(charCode) : 1;\n\n          for (let j = charCodeLength - 1; j >= 0; j--) {\n            currentBuf.push(String.fromCharCode(charCode >> 8 * j & 0xff));\n          }\n\n          continue;\n        }\n      }\n\n      if (!hasCurrentBufErrors()) {\n        buffers.push(currentBuf.join(\"\"));\n        currentBuf.length = 0;\n      }\n\n      currentBuf.push(String.fromCodePoint(unicode));\n    }\n\n    buffers.push(currentBuf.join(\"\"));\n    return buffers;\n  }\n\n}\n\nexports.Font = Font;\n\nclass ErrorFont {\n  constructor(error) {\n    this.error = error;\n    this.loadedName = \"g_font_error\";\n    this.missingFile = true;\n  }\n\n  charsToGlyphs() {\n    return [];\n  }\n\n  encodeString(chars) {\n    return [chars];\n  }\n\n  exportData(extraProperties = false) {\n    return {\n      error: this.error\n    };\n  }\n\n}\n\nexports.ErrorFont = ErrorFont;\n\n/***/ }),\n/* 45 */\n/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {\n\n\n\nObject.defineProperty(exports, \"__esModule\", ({\n  value: true\n}));\nexports.CFFTopDict = exports.CFFStrings = exports.CFFStandardStrings = exports.CFFPrivateDict = exports.CFFParser = exports.CFFIndex = exports.CFFHeader = exports.CFFFDSelect = exports.CFFCompiler = exports.CFFCharset = exports.CFF = void 0;\n\nvar _util = __w_pdfjs_require__(2);\n\nvar _charsets = __w_pdfjs_require__(46);\n\nvar _encodings = __w_pdfjs_require__(19);\n\nconst MAX_SUBR_NESTING = 10;\nconst CFFStandardStrings = [\".notdef\", \"space\", \"exclam\", \"quotedbl\", \"numbersign\", \"dollar\", \"percent\", \"ampersand\", \"quoteright\", \"parenleft\", \"parenright\", \"asterisk\", \"plus\", \"comma\", \"hyphen\", \"period\", \"slash\", \"zero\", \"one\", \"two\", \"three\", \"four\", \"five\", \"six\", \"seven\", \"eight\", \"nine\", \"colon\", \"semicolon\", \"less\", \"equal\", \"greater\", \"question\", \"at\", \"A\", \"B\", \"C\", \"D\", \"E\", \"F\", \"G\", \"H\", \"I\", \"J\", \"K\", \"L\", \"M\", \"N\", \"O\", \"P\", \"Q\", \"R\", \"S\", \"T\", \"U\", \"V\", \"W\", \"X\", \"Y\", \"Z\", \"bracketleft\", \"backslash\", \"bracketright\", \"asciicircum\", \"underscore\", \"quoteleft\", \"a\", \"b\", \"c\", \"d\", \"e\", \"f\", \"g\", \"h\", \"i\", \"j\", \"k\", \"l\", \"m\", \"n\", \"o\", \"p\", \"q\", \"r\", \"s\", \"t\", \"u\", \"v\", \"w\", \"x\", \"y\", \"z\", \"braceleft\", \"bar\", \"braceright\", \"asciitilde\", \"exclamdown\", \"cent\", \"sterling\", \"fraction\", \"yen\", \"florin\", \"section\", \"currency\", \"quotesingle\", \"quotedblleft\", \"guillemotleft\", \"guilsinglleft\", \"guilsinglright\", \"fi\", \"fl\", \"endash\", \"dagger\", \"daggerdbl\", \"periodcentered\", \"paragraph\", \"bullet\", \"quotesinglbase\", \"quotedblbase\", \"quotedblright\", \"guillemotright\", \"ellipsis\", \"perthousand\", \"questiondown\", \"grave\", \"acute\", \"circumflex\", \"tilde\", \"macron\", \"breve\", \"dotaccent\", \"dieresis\", \"ring\", \"cedilla\", \"hungarumlaut\", \"ogonek\", \"caron\", \"emdash\", \"AE\", \"ordfeminine\", \"Lslash\", \"Oslash\", \"OE\", \"ordmasculine\", \"ae\", \"dotlessi\", \"lslash\", \"oslash\", \"oe\", \"germandbls\", \"onesuperior\", \"logicalnot\", \"mu\", \"trademark\", \"Eth\", \"onehalf\", \"plusminus\", \"Thorn\", \"onequarter\", \"divide\", \"brokenbar\", \"degree\", \"thorn\", \"threequarters\", \"twosuperior\", \"registered\", \"minus\", \"eth\", \"multiply\", \"threesuperior\", \"copyright\", \"Aacute\", \"Acircumflex\", \"Adieresis\", \"Agrave\", \"Aring\", \"Atilde\", \"Ccedilla\", \"Eacute\", \"Ecircumflex\", \"Edieresis\", \"Egrave\", \"Iacute\", \"Icircumflex\", \"Idieresis\", \"Igrave\", \"Ntilde\", \"Oacute\", \"Ocircumflex\", \"Odieresis\", \"Ograve\", \"Otilde\", \"Scaron\", \"Uacute\", \"Ucircumflex\", \"Udieresis\", \"Ugrave\", \"Yacute\", \"Ydieresis\", \"Zcaron\", \"aacute\", \"acircumflex\", \"adieresis\", \"agrave\", \"aring\", \"atilde\", \"ccedilla\", \"eacute\", \"ecircumflex\", \"edieresis\", \"egrave\", \"iacute\", \"icircumflex\", \"idieresis\", \"igrave\", \"ntilde\", \"oacute\", \"ocircumflex\", \"odieresis\", \"ograve\", \"otilde\", \"scaron\", \"uacute\", \"ucircumflex\", \"udieresis\", \"ugrave\", \"yacute\", \"ydieresis\", \"zcaron\", \"exclamsmall\", \"Hungarumlautsmall\", \"dollaroldstyle\", \"dollarsuperior\", \"ampersandsmall\", \"Acutesmall\", \"parenleftsuperior\", \"parenrightsuperior\", \"twodotenleader\", \"onedotenleader\", \"zerooldstyle\", \"oneoldstyle\", \"twooldstyle\", \"threeoldstyle\", \"fouroldstyle\", \"fiveoldstyle\", \"sixoldstyle\", \"sevenoldstyle\", \"eightoldstyle\", \"nineoldstyle\", \"commasuperior\", \"threequartersemdash\", \"periodsuperior\", \"questionsmall\", \"asuperior\", \"bsuperior\", \"centsuperior\", \"dsuperior\", \"esuperior\", \"isuperior\", \"lsuperior\", \"msuperior\", \"nsuperior\", \"osuperior\", \"rsuperior\", \"ssuperior\", \"tsuperior\", \"ff\", \"ffi\", \"ffl\", \"parenleftinferior\", \"parenrightinferior\", \"Circumflexsmall\", \"hyphensuperior\", \"Gravesmall\", \"Asmall\", \"Bsmall\", \"Csmall\", \"Dsmall\", \"Esmall\", \"Fsmall\", \"Gsmall\", \"Hsmall\", \"Ismall\", \"Jsmall\", \"Ksmall\", \"Lsmall\", \"Msmall\", \"Nsmall\", \"Osmall\", \"Psmall\", \"Qsmall\", \"Rsmall\", \"Ssmall\", \"Tsmall\", \"Usmall\", \"Vsmall\", \"Wsmall\", \"Xsmall\", \"Ysmall\", \"Zsmall\", \"colonmonetary\", \"onefitted\", \"rupiah\", \"Tildesmall\", \"exclamdownsmall\", \"centoldstyle\", \"Lslashsmall\", \"Scaronsmall\", \"Zcaronsmall\", \"Dieresissmall\", \"Brevesmall\", \"Caronsmall\", \"Dotaccentsmall\", \"Macronsmall\", \"figuredash\", \"hypheninferior\", \"Ogoneksmall\", \"Ringsmall\", \"Cedillasmall\", \"questiondownsmall\", \"oneeighth\", \"threeeighths\", \"fiveeighths\", \"seveneighths\", \"onethird\", \"twothirds\", \"zerosuperior\", \"foursuperior\", \"fivesuperior\", \"sixsuperior\", \"sevensuperior\", \"eightsuperior\", \"ninesuperior\", \"zeroinferior\", \"oneinferior\", \"twoinferior\", \"threeinferior\", \"fourinferior\", \"fiveinferior\", \"sixinferior\", \"seveninferior\", \"eightinferior\", \"nineinferior\", \"centinferior\", \"dollarinferior\", \"periodinferior\", \"commainferior\", \"Agravesmall\", \"Aacutesmall\", \"Acircumflexsmall\", \"Atildesmall\", \"Adieresissmall\", \"Aringsmall\", \"AEsmall\", \"Ccedillasmall\", \"Egravesmall\", \"Eacutesmall\", \"Ecircumflexsmall\", \"Edieresissmall\", \"Igravesmall\", \"Iacutesmall\", \"Icircumflexsmall\", \"Idieresissmall\", \"Ethsmall\", \"Ntildesmall\", \"Ogravesmall\", \"Oacutesmall\", \"Ocircumflexsmall\", \"Otildesmall\", \"Odieresissmall\", \"OEsmall\", \"Oslashsmall\", \"Ugravesmall\", \"Uacutesmall\", \"Ucircumflexsmall\", \"Udieresissmall\", \"Yacutesmall\", \"Thornsmall\", \"Ydieresissmall\", \"001.000\", \"001.001\", \"001.002\", \"001.003\", \"Black\", \"Bold\", \"Book\", \"Light\", \"Medium\", \"Regular\", \"Roman\", \"Semibold\"];\nexports.CFFStandardStrings = CFFStandardStrings;\nconst NUM_STANDARD_CFF_STRINGS = 391;\n\nconst CFFParser = function CFFParserClosure() {\n  const CharstringValidationData = [null, {\n    id: \"hstem\",\n    min: 2,\n    stackClearing: true,\n    stem: true\n  }, null, {\n    id: \"vstem\",\n    min: 2,\n    stackClearing: true,\n    stem: true\n  }, {\n    id: \"vmoveto\",\n    min: 1,\n    stackClearing: true\n  }, {\n    id: \"rlineto\",\n    min: 2,\n    resetStack: true\n  }, {\n    id: \"hlineto\",\n    min: 1,\n    resetStack: true\n  }, {\n    id: \"vlineto\",\n    min: 1,\n    resetStack: true\n  }, {\n    id: \"rrcurveto\",\n    min: 6,\n    resetStack: true\n  }, null, {\n    id: \"callsubr\",\n    min: 1,\n    undefStack: true\n  }, {\n    id: \"return\",\n    min: 0,\n    undefStack: true\n  }, null, null, {\n    id: \"endchar\",\n    min: 0,\n    stackClearing: true\n  }, null, null, null, {\n    id: \"hstemhm\",\n    min: 2,\n    stackClearing: true,\n    stem: true\n  }, {\n    id: \"hintmask\",\n    min: 0,\n    stackClearing: true\n  }, {\n    id: \"cntrmask\",\n    min: 0,\n    stackClearing: true\n  }, {\n    id: \"rmoveto\",\n    min: 2,\n    stackClearing: true\n  }, {\n    id: \"hmoveto\",\n    min: 1,\n    stackClearing: true\n  }, {\n    id: \"vstemhm\",\n    min: 2,\n    stackClearing: true,\n    stem: true\n  }, {\n    id: \"rcurveline\",\n    min: 8,\n    resetStack: true\n  }, {\n    id: \"rlinecurve\",\n    min: 8,\n    resetStack: true\n  }, {\n    id: \"vvcurveto\",\n    min: 4,\n    resetStack: true\n  }, {\n    id: \"hhcurveto\",\n    min: 4,\n    resetStack: true\n  }, null, {\n    id: \"callgsubr\",\n    min: 1,\n    undefStack: true\n  }, {\n    id: \"vhcurveto\",\n    min: 4,\n    resetStack: true\n  }, {\n    id: \"hvcurveto\",\n    min: 4,\n    resetStack: true\n  }];\n  const CharstringValidationData12 = [null, null, null, {\n    id: \"and\",\n    min: 2,\n    stackDelta: -1\n  }, {\n    id: \"or\",\n    min: 2,\n    stackDelta: -1\n  }, {\n    id: \"not\",\n    min: 1,\n    stackDelta: 0\n  }, null, null, null, {\n    id: \"abs\",\n    min: 1,\n    stackDelta: 0\n  }, {\n    id: \"add\",\n    min: 2,\n    stackDelta: -1,\n    stackFn: function stack_div(stack, index) {\n      stack[index - 2] = stack[index - 2] + stack[index - 1];\n    }\n  }, {\n    id: \"sub\",\n    min: 2,\n    stackDelta: -1,\n    stackFn: function stack_div(stack, index) {\n      stack[index - 2] = stack[index - 2] - stack[index - 1];\n    }\n  }, {\n    id: \"div\",\n    min: 2,\n    stackDelta: -1,\n    stackFn: function stack_div(stack, index) {\n      stack[index - 2] = stack[index - 2] / stack[index - 1];\n    }\n  }, null, {\n    id: \"neg\",\n    min: 1,\n    stackDelta: 0,\n    stackFn: function stack_div(stack, index) {\n      stack[index - 1] = -stack[index - 1];\n    }\n  }, {\n    id: \"eq\",\n    min: 2,\n    stackDelta: -1\n  }, null, null, {\n    id: \"drop\",\n    min: 1,\n    stackDelta: -1\n  }, null, {\n    id: \"put\",\n    min: 2,\n    stackDelta: -2\n  }, {\n    id: \"get\",\n    min: 1,\n    stackDelta: 0\n  }, {\n    id: \"ifelse\",\n    min: 4,\n    stackDelta: -3\n  }, {\n    id: \"random\",\n    min: 0,\n    stackDelta: 1\n  }, {\n    id: \"mul\",\n    min: 2,\n    stackDelta: -1,\n    stackFn: function stack_div(stack, index) {\n      stack[index - 2] = stack[index - 2] * stack[index - 1];\n    }\n  }, null, {\n    id: \"sqrt\",\n    min: 1,\n    stackDelta: 0\n  }, {\n    id: \"dup\",\n    min: 1,\n    stackDelta: 1\n  }, {\n    id: \"exch\",\n    min: 2,\n    stackDelta: 0\n  }, {\n    id: \"index\",\n    min: 2,\n    stackDelta: 0\n  }, {\n    id: \"roll\",\n    min: 3,\n    stackDelta: -2\n  }, null, null, null, {\n    id: \"hflex\",\n    min: 7,\n    resetStack: true\n  }, {\n    id: \"flex\",\n    min: 13,\n    resetStack: true\n  }, {\n    id: \"hflex1\",\n    min: 9,\n    resetStack: true\n  }, {\n    id: \"flex1\",\n    min: 11,\n    resetStack: true\n  }];\n\n  class CFFParser {\n    constructor(file, properties, seacAnalysisEnabled) {\n      this.bytes = file.getBytes();\n      this.properties = properties;\n      this.seacAnalysisEnabled = !!seacAnalysisEnabled;\n    }\n\n    parse() {\n      const properties = this.properties;\n      const cff = new CFF();\n      this.cff = cff;\n      const header = this.parseHeader();\n      const nameIndex = this.parseIndex(header.endPos);\n      const topDictIndex = this.parseIndex(nameIndex.endPos);\n      const stringIndex = this.parseIndex(topDictIndex.endPos);\n      const globalSubrIndex = this.parseIndex(stringIndex.endPos);\n      const topDictParsed = this.parseDict(topDictIndex.obj.get(0));\n      const topDict = this.createDict(CFFTopDict, topDictParsed, cff.strings);\n      cff.header = header.obj;\n      cff.names = this.parseNameIndex(nameIndex.obj);\n      cff.strings = this.parseStringIndex(stringIndex.obj);\n      cff.topDict = topDict;\n      cff.globalSubrIndex = globalSubrIndex.obj;\n      this.parsePrivateDict(cff.topDict);\n      cff.isCIDFont = topDict.hasName(\"ROS\");\n      const charStringOffset = topDict.getByName(\"CharStrings\");\n      const charStringIndex = this.parseIndex(charStringOffset).obj;\n      const fontMatrix = topDict.getByName(\"FontMatrix\");\n\n      if (fontMatrix) {\n        properties.fontMatrix = fontMatrix;\n      }\n\n      const fontBBox = topDict.getByName(\"FontBBox\");\n\n      if (fontBBox) {\n        properties.ascent = Math.max(fontBBox[3], fontBBox[1]);\n        properties.descent = Math.min(fontBBox[1], fontBBox[3]);\n        properties.ascentScaled = true;\n      }\n\n      let charset, encoding;\n\n      if (cff.isCIDFont) {\n        const fdArrayIndex = this.parseIndex(topDict.getByName(\"FDArray\")).obj;\n\n        for (let i = 0, ii = fdArrayIndex.count; i < ii; ++i) {\n          const dictRaw = fdArrayIndex.get(i);\n          const fontDict = this.createDict(CFFTopDict, this.parseDict(dictRaw), cff.strings);\n          this.parsePrivateDict(fontDict);\n          cff.fdArray.push(fontDict);\n        }\n\n        encoding = null;\n        charset = this.parseCharsets(topDict.getByName(\"charset\"), charStringIndex.count, cff.strings, true);\n        cff.fdSelect = this.parseFDSelect(topDict.getByName(\"FDSelect\"), charStringIndex.count);\n      } else {\n        charset = this.parseCharsets(topDict.getByName(\"charset\"), charStringIndex.count, cff.strings, false);\n        encoding = this.parseEncoding(topDict.getByName(\"Encoding\"), properties, cff.strings, charset.charset);\n      }\n\n      cff.charset = charset;\n      cff.encoding = encoding;\n      const charStringsAndSeacs = this.parseCharStrings({\n        charStrings: charStringIndex,\n        localSubrIndex: topDict.privateDict.subrsIndex,\n        globalSubrIndex: globalSubrIndex.obj,\n        fdSelect: cff.fdSelect,\n        fdArray: cff.fdArray,\n        privateDict: topDict.privateDict\n      });\n      cff.charStrings = charStringsAndSeacs.charStrings;\n      cff.seacs = charStringsAndSeacs.seacs;\n      cff.widths = charStringsAndSeacs.widths;\n      return cff;\n    }\n\n    parseHeader() {\n      let bytes = this.bytes;\n      const bytesLength = bytes.length;\n      let offset = 0;\n\n      while (offset < bytesLength && bytes[offset] !== 1) {\n        ++offset;\n      }\n\n      if (offset >= bytesLength) {\n        throw new _util.FormatError(\"Invalid CFF header\");\n      }\n\n      if (offset !== 0) {\n        (0, _util.info)(\"cff data is shifted\");\n        bytes = bytes.subarray(offset);\n        this.bytes = bytes;\n      }\n\n      const major = bytes[0];\n      const minor = bytes[1];\n      const hdrSize = bytes[2];\n      const offSize = bytes[3];\n      const header = new CFFHeader(major, minor, hdrSize, offSize);\n      return {\n        obj: header,\n        endPos: hdrSize\n      };\n    }\n\n    parseDict(dict) {\n      let pos = 0;\n\n      function parseOperand() {\n        let value = dict[pos++];\n\n        if (value === 30) {\n          return parseFloatOperand();\n        } else if (value === 28) {\n          value = dict[pos++];\n          value = (value << 24 | dict[pos++] << 16) >> 16;\n          return value;\n        } else if (value === 29) {\n          value = dict[pos++];\n          value = value << 8 | dict[pos++];\n          value = value << 8 | dict[pos++];\n          value = value << 8 | dict[pos++];\n          return value;\n        } else if (value >= 32 && value <= 246) {\n          return value - 139;\n        } else if (value >= 247 && value <= 250) {\n          return (value - 247) * 256 + dict[pos++] + 108;\n        } else if (value >= 251 && value <= 254) {\n          return -((value - 251) * 256) - dict[pos++] - 108;\n        }\n\n        (0, _util.warn)('CFFParser_parseDict: \"' + value + '\" is a reserved command.');\n        return NaN;\n      }\n\n      function parseFloatOperand() {\n        let str = \"\";\n        const eof = 15;\n        const lookup = [\"0\", \"1\", \"2\", \"3\", \"4\", \"5\", \"6\", \"7\", \"8\", \"9\", \".\", \"E\", \"E-\", null, \"-\"];\n        const length = dict.length;\n\n        while (pos < length) {\n          const b = dict[pos++];\n          const b1 = b >> 4;\n          const b2 = b & 15;\n\n          if (b1 === eof) {\n            break;\n          }\n\n          str += lookup[b1];\n\n          if (b2 === eof) {\n            break;\n          }\n\n          str += lookup[b2];\n        }\n\n        return parseFloat(str);\n      }\n\n      let operands = [];\n      const entries = [];\n      pos = 0;\n      const end = dict.length;\n\n      while (pos < end) {\n        let b = dict[pos];\n\n        if (b <= 21) {\n          if (b === 12) {\n            b = b << 8 | dict[++pos];\n          }\n\n          entries.push([b, operands]);\n          operands = [];\n          ++pos;\n        } else {\n          operands.push(parseOperand());\n        }\n      }\n\n      return entries;\n    }\n\n    parseIndex(pos) {\n      const cffIndex = new CFFIndex();\n      const bytes = this.bytes;\n      const count = bytes[pos++] << 8 | bytes[pos++];\n      const offsets = [];\n      let end = pos;\n      let i, ii;\n\n      if (count !== 0) {\n        const offsetSize = bytes[pos++];\n        const startPos = pos + (count + 1) * offsetSize - 1;\n\n        for (i = 0, ii = count + 1; i < ii; ++i) {\n          let offset = 0;\n\n          for (let j = 0; j < offsetSize; ++j) {\n            offset <<= 8;\n            offset += bytes[pos++];\n          }\n\n          offsets.push(startPos + offset);\n        }\n\n        end = offsets[count];\n      }\n\n      for (i = 0, ii = offsets.length - 1; i < ii; ++i) {\n        const offsetStart = offsets[i];\n        const offsetEnd = offsets[i + 1];\n        cffIndex.add(bytes.subarray(offsetStart, offsetEnd));\n      }\n\n      return {\n        obj: cffIndex,\n        endPos: end\n      };\n    }\n\n    parseNameIndex(index) {\n      const names = [];\n\n      for (let i = 0, ii = index.count; i < ii; ++i) {\n        const name = index.get(i);\n        names.push((0, _util.bytesToString)(name));\n      }\n\n      return names;\n    }\n\n    parseStringIndex(index) {\n      const strings = new CFFStrings();\n\n      for (let i = 0, ii = index.count; i < ii; ++i) {\n        const data = index.get(i);\n        strings.add((0, _util.bytesToString)(data));\n      }\n\n      return strings;\n    }\n\n    createDict(Type, dict, strings) {\n      const cffDict = new Type(strings);\n\n      for (let i = 0, ii = dict.length; i < ii; ++i) {\n        const pair = dict[i];\n        const key = pair[0];\n        const value = pair[1];\n        cffDict.setByKey(key, value);\n      }\n\n      return cffDict;\n    }\n\n    parseCharString(state, data, localSubrIndex, globalSubrIndex) {\n      if (!data || state.callDepth > MAX_SUBR_NESTING) {\n        return false;\n      }\n\n      let stackSize = state.stackSize;\n      const stack = state.stack;\n      const length = data.length;\n\n      for (let j = 0; j < length;) {\n        const value = data[j++];\n        let validationCommand = null;\n\n        if (value === 12) {\n          const q = data[j++];\n\n          if (q === 0) {\n            data[j - 2] = 139;\n            data[j - 1] = 22;\n            stackSize = 0;\n          } else {\n            validationCommand = CharstringValidationData12[q];\n          }\n        } else if (value === 28) {\n          stack[stackSize] = (data[j] << 24 | data[j + 1] << 16) >> 16;\n          j += 2;\n          stackSize++;\n        } else if (value === 14) {\n          if (stackSize >= 4) {\n            stackSize -= 4;\n\n            if (this.seacAnalysisEnabled) {\n              state.seac = stack.slice(stackSize, stackSize + 4);\n              return false;\n            }\n          }\n\n          validationCommand = CharstringValidationData[value];\n        } else if (value >= 32 && value <= 246) {\n          stack[stackSize] = value - 139;\n          stackSize++;\n        } else if (value >= 247 && value <= 254) {\n          stack[stackSize] = value < 251 ? (value - 247 << 8) + data[j] + 108 : -(value - 251 << 8) - data[j] - 108;\n          j++;\n          stackSize++;\n        } else if (value === 255) {\n          stack[stackSize] = (data[j] << 24 | data[j + 1] << 16 | data[j + 2] << 8 | data[j + 3]) / 65536;\n          j += 4;\n          stackSize++;\n        } else if (value === 19 || value === 20) {\n          state.hints += stackSize >> 1;\n          j += state.hints + 7 >> 3;\n          stackSize %= 2;\n          validationCommand = CharstringValidationData[value];\n        } else if (value === 10 || value === 29) {\n          let subrsIndex;\n\n          if (value === 10) {\n            subrsIndex = localSubrIndex;\n          } else {\n            subrsIndex = globalSubrIndex;\n          }\n\n          if (!subrsIndex) {\n            validationCommand = CharstringValidationData[value];\n            (0, _util.warn)(\"Missing subrsIndex for \" + validationCommand.id);\n            return false;\n          }\n\n          let bias = 32768;\n\n          if (subrsIndex.count < 1240) {\n            bias = 107;\n          } else if (subrsIndex.count < 33900) {\n            bias = 1131;\n          }\n\n          const subrNumber = stack[--stackSize] + bias;\n\n          if (subrNumber < 0 || subrNumber >= subrsIndex.count || isNaN(subrNumber)) {\n            validationCommand = CharstringValidationData[value];\n            (0, _util.warn)(\"Out of bounds subrIndex for \" + validationCommand.id);\n            return false;\n          }\n\n          state.stackSize = stackSize;\n          state.callDepth++;\n          const valid = this.parseCharString(state, subrsIndex.get(subrNumber), localSubrIndex, globalSubrIndex);\n\n          if (!valid) {\n            return false;\n          }\n\n          state.callDepth--;\n          stackSize = state.stackSize;\n          continue;\n        } else if (value === 11) {\n          state.stackSize = stackSize;\n          return true;\n        } else if (value === 0 && j === data.length) {\n          data[j - 1] = 14;\n          validationCommand = CharstringValidationData[14];\n        } else {\n          validationCommand = CharstringValidationData[value];\n        }\n\n        if (validationCommand) {\n          if (validationCommand.stem) {\n            state.hints += stackSize >> 1;\n\n            if (value === 3 || value === 23) {\n              state.hasVStems = true;\n            } else if (state.hasVStems && (value === 1 || value === 18)) {\n              (0, _util.warn)(\"CFF stem hints are in wrong order\");\n              data[j - 1] = value === 1 ? 3 : 23;\n            }\n          }\n\n          if (\"min\" in validationCommand) {\n            if (!state.undefStack && stackSize < validationCommand.min) {\n              (0, _util.warn)(\"Not enough parameters for \" + validationCommand.id + \"; actual: \" + stackSize + \", expected: \" + validationCommand.min);\n\n              if (stackSize === 0) {\n                data[j - 1] = 14;\n                return true;\n              }\n\n              return false;\n            }\n          }\n\n          if (state.firstStackClearing && validationCommand.stackClearing) {\n            state.firstStackClearing = false;\n            stackSize -= validationCommand.min;\n\n            if (stackSize >= 2 && validationCommand.stem) {\n              stackSize %= 2;\n            } else if (stackSize > 1) {\n              (0, _util.warn)(\"Found too many parameters for stack-clearing command\");\n            }\n\n            if (stackSize > 0) {\n              state.width = stack[stackSize - 1];\n            }\n          }\n\n          if (\"stackDelta\" in validationCommand) {\n            if (\"stackFn\" in validationCommand) {\n              validationCommand.stackFn(stack, stackSize);\n            }\n\n            stackSize += validationCommand.stackDelta;\n          } else if (validationCommand.stackClearing) {\n            stackSize = 0;\n          } else if (validationCommand.resetStack) {\n            stackSize = 0;\n            state.undefStack = false;\n          } else if (validationCommand.undefStack) {\n            stackSize = 0;\n            state.undefStack = true;\n            state.firstStackClearing = false;\n          }\n        }\n      }\n\n      state.stackSize = stackSize;\n      return true;\n    }\n\n    parseCharStrings({\n      charStrings,\n      localSubrIndex,\n      globalSubrIndex,\n      fdSelect,\n      fdArray,\n      privateDict\n    }) {\n      const seacs = [];\n      const widths = [];\n      const count = charStrings.count;\n\n      for (let i = 0; i < count; i++) {\n        const charstring = charStrings.get(i);\n        const state = {\n          callDepth: 0,\n          stackSize: 0,\n          stack: [],\n          undefStack: true,\n          hints: 0,\n          firstStackClearing: true,\n          seac: null,\n          width: null,\n          hasVStems: false\n        };\n        let valid = true;\n        let localSubrToUse = null;\n        let privateDictToUse = privateDict;\n\n        if (fdSelect && fdArray.length) {\n          const fdIndex = fdSelect.getFDIndex(i);\n\n          if (fdIndex === -1) {\n            (0, _util.warn)(\"Glyph index is not in fd select.\");\n            valid = false;\n          }\n\n          if (fdIndex >= fdArray.length) {\n            (0, _util.warn)(\"Invalid fd index for glyph index.\");\n            valid = false;\n          }\n\n          if (valid) {\n            privateDictToUse = fdArray[fdIndex].privateDict;\n            localSubrToUse = privateDictToUse.subrsIndex;\n          }\n        } else if (localSubrIndex) {\n          localSubrToUse = localSubrIndex;\n        }\n\n        if (valid) {\n          valid = this.parseCharString(state, charstring, localSubrToUse, globalSubrIndex);\n        }\n\n        if (state.width !== null) {\n          const nominalWidth = privateDictToUse.getByName(\"nominalWidthX\");\n          widths[i] = nominalWidth + state.width;\n        } else {\n          const defaultWidth = privateDictToUse.getByName(\"defaultWidthX\");\n          widths[i] = defaultWidth;\n        }\n\n        if (state.seac !== null) {\n          seacs[i] = state.seac;\n        }\n\n        if (!valid) {\n          charStrings.set(i, new Uint8Array([14]));\n        }\n      }\n\n      return {\n        charStrings,\n        seacs,\n        widths\n      };\n    }\n\n    emptyPrivateDictionary(parentDict) {\n      const privateDict = this.createDict(CFFPrivateDict, [], parentDict.strings);\n      parentDict.setByKey(18, [0, 0]);\n      parentDict.privateDict = privateDict;\n    }\n\n    parsePrivateDict(parentDict) {\n      if (!parentDict.hasName(\"Private\")) {\n        this.emptyPrivateDictionary(parentDict);\n        return;\n      }\n\n      const privateOffset = parentDict.getByName(\"Private\");\n\n      if (!Array.isArray(privateOffset) || privateOffset.length !== 2) {\n        parentDict.removeByName(\"Private\");\n        return;\n      }\n\n      const size = privateOffset[0];\n      const offset = privateOffset[1];\n\n      if (size === 0 || offset >= this.bytes.length) {\n        this.emptyPrivateDictionary(parentDict);\n        return;\n      }\n\n      const privateDictEnd = offset + size;\n      const dictData = this.bytes.subarray(offset, privateDictEnd);\n      const dict = this.parseDict(dictData);\n      const privateDict = this.createDict(CFFPrivateDict, dict, parentDict.strings);\n      parentDict.privateDict = privateDict;\n\n      if (!privateDict.getByName(\"Subrs\")) {\n        return;\n      }\n\n      const subrsOffset = privateDict.getByName(\"Subrs\");\n      const relativeOffset = offset + subrsOffset;\n\n      if (subrsOffset === 0 || relativeOffset >= this.bytes.length) {\n        this.emptyPrivateDictionary(parentDict);\n        return;\n      }\n\n      const subrsIndex = this.parseIndex(relativeOffset);\n      privateDict.subrsIndex = subrsIndex.obj;\n    }\n\n    parseCharsets(pos, length, strings, cid) {\n      if (pos === 0) {\n        return new CFFCharset(true, CFFCharsetPredefinedTypes.ISO_ADOBE, _charsets.ISOAdobeCharset);\n      } else if (pos === 1) {\n        return new CFFCharset(true, CFFCharsetPredefinedTypes.EXPERT, _charsets.ExpertCharset);\n      } else if (pos === 2) {\n        return new CFFCharset(true, CFFCharsetPredefinedTypes.EXPERT_SUBSET, _charsets.ExpertSubsetCharset);\n      }\n\n      const bytes = this.bytes;\n      const start = pos;\n      const format = bytes[pos++];\n      const charset = [cid ? 0 : \".notdef\"];\n      let id, count, i;\n      length -= 1;\n\n      switch (format) {\n        case 0:\n          for (i = 0; i < length; i++) {\n            id = bytes[pos++] << 8 | bytes[pos++];\n            charset.push(cid ? id : strings.get(id));\n          }\n\n          break;\n\n        case 1:\n          while (charset.length <= length) {\n            id = bytes[pos++] << 8 | bytes[pos++];\n            count = bytes[pos++];\n\n            for (i = 0; i <= count; i++) {\n              charset.push(cid ? id++ : strings.get(id++));\n            }\n          }\n\n          break;\n\n        case 2:\n          while (charset.length <= length) {\n            id = bytes[pos++] << 8 | bytes[pos++];\n            count = bytes[pos++] << 8 | bytes[pos++];\n\n            for (i = 0; i <= count; i++) {\n              charset.push(cid ? id++ : strings.get(id++));\n            }\n          }\n\n          break;\n\n        default:\n          throw new _util.FormatError(\"Unknown charset format\");\n      }\n\n      const end = pos;\n      const raw = bytes.subarray(start, end);\n      return new CFFCharset(false, format, charset, raw);\n    }\n\n    parseEncoding(pos, properties, strings, charset) {\n      const encoding = Object.create(null);\n      const bytes = this.bytes;\n      let predefined = false;\n      let format, i, ii;\n      let raw = null;\n\n      function readSupplement() {\n        const supplementsCount = bytes[pos++];\n\n        for (i = 0; i < supplementsCount; i++) {\n          const code = bytes[pos++];\n          const sid = (bytes[pos++] << 8) + (bytes[pos++] & 0xff);\n          encoding[code] = charset.indexOf(strings.get(sid));\n        }\n      }\n\n      if (pos === 0 || pos === 1) {\n        predefined = true;\n        format = pos;\n        const baseEncoding = pos ? _encodings.ExpertEncoding : _encodings.StandardEncoding;\n\n        for (i = 0, ii = charset.length; i < ii; i++) {\n          const index = baseEncoding.indexOf(charset[i]);\n\n          if (index !== -1) {\n            encoding[index] = i;\n          }\n        }\n      } else {\n        const dataStart = pos;\n        format = bytes[pos++];\n\n        switch (format & 0x7f) {\n          case 0:\n            const glyphsCount = bytes[pos++];\n\n            for (i = 1; i <= glyphsCount; i++) {\n              encoding[bytes[pos++]] = i;\n            }\n\n            break;\n\n          case 1:\n            const rangesCount = bytes[pos++];\n            let gid = 1;\n\n            for (i = 0; i < rangesCount; i++) {\n              const start = bytes[pos++];\n              const left = bytes[pos++];\n\n              for (let j = start; j <= start + left; j++) {\n                encoding[j] = gid++;\n              }\n            }\n\n            break;\n\n          default:\n            throw new _util.FormatError(`Unknown encoding format: ${format} in CFF`);\n        }\n\n        const dataEnd = pos;\n\n        if (format & 0x80) {\n          bytes[dataStart] &= 0x7f;\n          readSupplement();\n        }\n\n        raw = bytes.subarray(dataStart, dataEnd);\n      }\n\n      format &= 0x7f;\n      return new CFFEncoding(predefined, format, encoding, raw);\n    }\n\n    parseFDSelect(pos, length) {\n      const bytes = this.bytes;\n      const format = bytes[pos++];\n      const fdSelect = [];\n      let i;\n\n      switch (format) {\n        case 0:\n          for (i = 0; i < length; ++i) {\n            const id = bytes[pos++];\n            fdSelect.push(id);\n          }\n\n          break;\n\n        case 3:\n          const rangesCount = bytes[pos++] << 8 | bytes[pos++];\n\n          for (i = 0; i < rangesCount; ++i) {\n            let first = bytes[pos++] << 8 | bytes[pos++];\n\n            if (i === 0 && first !== 0) {\n              (0, _util.warn)(\"parseFDSelect: The first range must have a first GID of 0\" + \" -- trying to recover.\");\n              first = 0;\n            }\n\n            const fdIndex = bytes[pos++];\n            const next = bytes[pos] << 8 | bytes[pos + 1];\n\n            for (let j = first; j < next; ++j) {\n              fdSelect.push(fdIndex);\n            }\n          }\n\n          pos += 2;\n          break;\n\n        default:\n          throw new _util.FormatError(`parseFDSelect: Unknown format \"${format}\".`);\n      }\n\n      if (fdSelect.length !== length) {\n        throw new _util.FormatError(\"parseFDSelect: Invalid font data.\");\n      }\n\n      return new CFFFDSelect(format, fdSelect);\n    }\n\n  }\n\n  return CFFParser;\n}();\n\nexports.CFFParser = CFFParser;\n\nclass CFF {\n  constructor() {\n    this.header = null;\n    this.names = [];\n    this.topDict = null;\n    this.strings = new CFFStrings();\n    this.globalSubrIndex = null;\n    this.encoding = null;\n    this.charset = null;\n    this.charStrings = null;\n    this.fdArray = [];\n    this.fdSelect = null;\n    this.isCIDFont = false;\n  }\n\n  duplicateFirstGlyph() {\n    if (this.charStrings.count >= 65535) {\n      (0, _util.warn)(\"Not enough space in charstrings to duplicate first glyph.\");\n      return;\n    }\n\n    const glyphZero = this.charStrings.get(0);\n    this.charStrings.add(glyphZero);\n\n    if (this.isCIDFont) {\n      this.fdSelect.fdSelect.push(this.fdSelect.fdSelect[0]);\n    }\n  }\n\n  hasGlyphId(id) {\n    if (id < 0 || id >= this.charStrings.count) {\n      return false;\n    }\n\n    const glyph = this.charStrings.get(id);\n    return glyph.length > 0;\n  }\n\n}\n\nexports.CFF = CFF;\n\nclass CFFHeader {\n  constructor(major, minor, hdrSize, offSize) {\n    this.major = major;\n    this.minor = minor;\n    this.hdrSize = hdrSize;\n    this.offSize = offSize;\n  }\n\n}\n\nexports.CFFHeader = CFFHeader;\n\nclass CFFStrings {\n  constructor() {\n    this.strings = [];\n  }\n\n  get(index) {\n    if (index >= 0 && index <= NUM_STANDARD_CFF_STRINGS - 1) {\n      return CFFStandardStrings[index];\n    }\n\n    if (index - NUM_STANDARD_CFF_STRINGS <= this.strings.length) {\n      return this.strings[index - NUM_STANDARD_CFF_STRINGS];\n    }\n\n    return CFFStandardStrings[0];\n  }\n\n  getSID(str) {\n    let index = CFFStandardStrings.indexOf(str);\n\n    if (index !== -1) {\n      return index;\n    }\n\n    index = this.strings.indexOf(str);\n\n    if (index !== -1) {\n      return index + NUM_STANDARD_CFF_STRINGS;\n    }\n\n    return -1;\n  }\n\n  add(value) {\n    this.strings.push(value);\n  }\n\n  get count() {\n    return this.strings.length;\n  }\n\n}\n\nexports.CFFStrings = CFFStrings;\n\nclass CFFIndex {\n  constructor() {\n    this.objects = [];\n    this.length = 0;\n  }\n\n  add(data) {\n    this.length += data.length;\n    this.objects.push(data);\n  }\n\n  set(index, data) {\n    this.length += data.length - this.objects[index].length;\n    this.objects[index] = data;\n  }\n\n  get(index) {\n    return this.objects[index];\n  }\n\n  get count() {\n    return this.objects.length;\n  }\n\n}\n\nexports.CFFIndex = CFFIndex;\n\nclass CFFDict {\n  constructor(tables, strings) {\n    this.keyToNameMap = tables.keyToNameMap;\n    this.nameToKeyMap = tables.nameToKeyMap;\n    this.defaults = tables.defaults;\n    this.types = tables.types;\n    this.opcodes = tables.opcodes;\n    this.order = tables.order;\n    this.strings = strings;\n    this.values = Object.create(null);\n  }\n\n  setByKey(key, value) {\n    if (!(key in this.keyToNameMap)) {\n      return false;\n    }\n\n    const valueLength = value.length;\n\n    if (valueLength === 0) {\n      return true;\n    }\n\n    for (let i = 0; i < valueLength; i++) {\n      if (isNaN(value[i])) {\n        (0, _util.warn)('Invalid CFFDict value: \"' + value + '\" for key \"' + key + '\".');\n        return true;\n      }\n    }\n\n    const type = this.types[key];\n\n    if (type === \"num\" || type === \"sid\" || type === \"offset\") {\n      value = value[0];\n    }\n\n    this.values[key] = value;\n    return true;\n  }\n\n  setByName(name, value) {\n    if (!(name in this.nameToKeyMap)) {\n      throw new _util.FormatError(`Invalid dictionary name \"${name}\"`);\n    }\n\n    this.values[this.nameToKeyMap[name]] = value;\n  }\n\n  hasName(name) {\n    return this.nameToKeyMap[name] in this.values;\n  }\n\n  getByName(name) {\n    if (!(name in this.nameToKeyMap)) {\n      throw new _util.FormatError(`Invalid dictionary name ${name}\"`);\n    }\n\n    const key = this.nameToKeyMap[name];\n\n    if (!(key in this.values)) {\n      return this.defaults[key];\n    }\n\n    return this.values[key];\n  }\n\n  removeByName(name) {\n    delete this.values[this.nameToKeyMap[name]];\n  }\n\n  static createTables(layout) {\n    const tables = {\n      keyToNameMap: {},\n      nameToKeyMap: {},\n      defaults: {},\n      types: {},\n      opcodes: {},\n      order: []\n    };\n\n    for (let i = 0, ii = layout.length; i < ii; ++i) {\n      const entry = layout[i];\n      const key = Array.isArray(entry[0]) ? (entry[0][0] << 8) + entry[0][1] : entry[0];\n      tables.keyToNameMap[key] = entry[1];\n      tables.nameToKeyMap[entry[1]] = key;\n      tables.types[key] = entry[2];\n      tables.defaults[key] = entry[3];\n      tables.opcodes[key] = Array.isArray(entry[0]) ? entry[0] : [entry[0]];\n      tables.order.push(key);\n    }\n\n    return tables;\n  }\n\n}\n\nconst CFFTopDict = function CFFTopDictClosure() {\n  const layout = [[[12, 30], \"ROS\", [\"sid\", \"sid\", \"num\"], null], [[12, 20], \"SyntheticBase\", \"num\", null], [0, \"version\", \"sid\", null], [1, \"Notice\", \"sid\", null], [[12, 0], \"Copyright\", \"sid\", null], [2, \"FullName\", \"sid\", null], [3, \"FamilyName\", \"sid\", null], [4, \"Weight\", \"sid\", null], [[12, 1], \"isFixedPitch\", \"num\", 0], [[12, 2], \"ItalicAngle\", \"num\", 0], [[12, 3], \"UnderlinePosition\", \"num\", -100], [[12, 4], \"UnderlineThickness\", \"num\", 50], [[12, 5], \"PaintType\", \"num\", 0], [[12, 6], \"CharstringType\", \"num\", 2], [[12, 7], \"FontMatrix\", [\"num\", \"num\", \"num\", \"num\", \"num\", \"num\"], [0.001, 0, 0, 0.001, 0, 0]], [13, \"UniqueID\", \"num\", null], [5, \"FontBBox\", [\"num\", \"num\", \"num\", \"num\"], [0, 0, 0, 0]], [[12, 8], \"StrokeWidth\", \"num\", 0], [14, \"XUID\", \"array\", null], [15, \"charset\", \"offset\", 0], [16, \"Encoding\", \"offset\", 0], [17, \"CharStrings\", \"offset\", 0], [18, \"Private\", [\"offset\", \"offset\"], null], [[12, 21], \"PostScript\", \"sid\", null], [[12, 22], \"BaseFontName\", \"sid\", null], [[12, 23], \"BaseFontBlend\", \"delta\", null], [[12, 31], \"CIDFontVersion\", \"num\", 0], [[12, 32], \"CIDFontRevision\", \"num\", 0], [[12, 33], \"CIDFontType\", \"num\", 0], [[12, 34], \"CIDCount\", \"num\", 8720], [[12, 35], \"UIDBase\", \"num\", null], [[12, 37], \"FDSelect\", \"offset\", null], [[12, 36], \"FDArray\", \"offset\", null], [[12, 38], \"FontName\", \"sid\", null]];\n  let tables = null;\n\n  class CFFTopDict extends CFFDict {\n    constructor(strings) {\n      if (tables === null) {\n        tables = CFFDict.createTables(layout);\n      }\n\n      super(tables, strings);\n      this.privateDict = null;\n    }\n\n  }\n\n  return CFFTopDict;\n}();\n\nexports.CFFTopDict = CFFTopDict;\n\nconst CFFPrivateDict = function CFFPrivateDictClosure() {\n  const layout = [[6, \"BlueValues\", \"delta\", null], [7, \"OtherBlues\", \"delta\", null], [8, \"FamilyBlues\", \"delta\", null], [9, \"FamilyOtherBlues\", \"delta\", null], [[12, 9], \"BlueScale\", \"num\", 0.039625], [[12, 10], \"BlueShift\", \"num\", 7], [[12, 11], \"BlueFuzz\", \"num\", 1], [10, \"StdHW\", \"num\", null], [11, \"StdVW\", \"num\", null], [[12, 12], \"StemSnapH\", \"delta\", null], [[12, 13], \"StemSnapV\", \"delta\", null], [[12, 14], \"ForceBold\", \"num\", 0], [[12, 17], \"LanguageGroup\", \"num\", 0], [[12, 18], \"ExpansionFactor\", \"num\", 0.06], [[12, 19], \"initialRandomSeed\", \"num\", 0], [20, \"defaultWidthX\", \"num\", 0], [21, \"nominalWidthX\", \"num\", 0], [19, \"Subrs\", \"offset\", null]];\n  let tables = null;\n\n  class CFFPrivateDict extends CFFDict {\n    constructor(strings) {\n      if (tables === null) {\n        tables = CFFDict.createTables(layout);\n      }\n\n      super(tables, strings);\n      this.subrsIndex = null;\n    }\n\n  }\n\n  return CFFPrivateDict;\n}();\n\nexports.CFFPrivateDict = CFFPrivateDict;\nconst CFFCharsetPredefinedTypes = {\n  ISO_ADOBE: 0,\n  EXPERT: 1,\n  EXPERT_SUBSET: 2\n};\n\nclass CFFCharset {\n  constructor(predefined, format, charset, raw) {\n    this.predefined = predefined;\n    this.format = format;\n    this.charset = charset;\n    this.raw = raw;\n  }\n\n}\n\nexports.CFFCharset = CFFCharset;\n\nclass CFFEncoding {\n  constructor(predefined, format, encoding, raw) {\n    this.predefined = predefined;\n    this.format = format;\n    this.encoding = encoding;\n    this.raw = raw;\n  }\n\n}\n\nclass CFFFDSelect {\n  constructor(format, fdSelect) {\n    this.format = format;\n    this.fdSelect = fdSelect;\n  }\n\n  getFDIndex(glyphIndex) {\n    if (glyphIndex < 0 || glyphIndex >= this.fdSelect.length) {\n      return -1;\n    }\n\n    return this.fdSelect[glyphIndex];\n  }\n\n}\n\nexports.CFFFDSelect = CFFFDSelect;\n\nclass CFFOffsetTracker {\n  constructor() {\n    this.offsets = Object.create(null);\n  }\n\n  isTracking(key) {\n    return key in this.offsets;\n  }\n\n  track(key, location) {\n    if (key in this.offsets) {\n      throw new _util.FormatError(`Already tracking location of ${key}`);\n    }\n\n    this.offsets[key] = location;\n  }\n\n  offset(value) {\n    for (const key in this.offsets) {\n      this.offsets[key] += value;\n    }\n  }\n\n  setEntryLocation(key, values, output) {\n    if (!(key in this.offsets)) {\n      throw new _util.FormatError(`Not tracking location of ${key}`);\n    }\n\n    const data = output.data;\n    const dataOffset = this.offsets[key];\n    const size = 5;\n\n    for (let i = 0, ii = values.length; i < ii; ++i) {\n      const offset0 = i * size + dataOffset;\n      const offset1 = offset0 + 1;\n      const offset2 = offset0 + 2;\n      const offset3 = offset0 + 3;\n      const offset4 = offset0 + 4;\n\n      if (data[offset0] !== 0x1d || data[offset1] !== 0 || data[offset2] !== 0 || data[offset3] !== 0 || data[offset4] !== 0) {\n        throw new _util.FormatError(\"writing to an offset that is not empty\");\n      }\n\n      const value = values[i];\n      data[offset0] = 0x1d;\n      data[offset1] = value >> 24 & 0xff;\n      data[offset2] = value >> 16 & 0xff;\n      data[offset3] = value >> 8 & 0xff;\n      data[offset4] = value & 0xff;\n    }\n  }\n\n}\n\nclass CFFCompiler {\n  constructor(cff) {\n    this.cff = cff;\n  }\n\n  compile() {\n    const cff = this.cff;\n    const output = {\n      data: [],\n      length: 0,\n      add: function CFFCompiler_add(data) {\n        this.data = this.data.concat(data);\n        this.length = this.data.length;\n      }\n    };\n    const header = this.compileHeader(cff.header);\n    output.add(header);\n    const nameIndex = this.compileNameIndex(cff.names);\n    output.add(nameIndex);\n\n    if (cff.isCIDFont) {\n      if (cff.topDict.hasName(\"FontMatrix\")) {\n        const base = cff.topDict.getByName(\"FontMatrix\");\n        cff.topDict.removeByName(\"FontMatrix\");\n\n        for (let i = 0, ii = cff.fdArray.length; i < ii; i++) {\n          const subDict = cff.fdArray[i];\n          let matrix = base.slice(0);\n\n          if (subDict.hasName(\"FontMatrix\")) {\n            matrix = _util.Util.transform(matrix, subDict.getByName(\"FontMatrix\"));\n          }\n\n          subDict.setByName(\"FontMatrix\", matrix);\n        }\n      }\n    }\n\n    const xuid = cff.topDict.getByName(\"XUID\");\n\n    if (xuid && xuid.length > 16) {\n      cff.topDict.removeByName(\"XUID\");\n    }\n\n    cff.topDict.setByName(\"charset\", 0);\n    let compiled = this.compileTopDicts([cff.topDict], output.length, cff.isCIDFont);\n    output.add(compiled.output);\n    const topDictTracker = compiled.trackers[0];\n    const stringIndex = this.compileStringIndex(cff.strings.strings);\n    output.add(stringIndex);\n    const globalSubrIndex = this.compileIndex(cff.globalSubrIndex);\n    output.add(globalSubrIndex);\n\n    if (cff.encoding && cff.topDict.hasName(\"Encoding\")) {\n      if (cff.encoding.predefined) {\n        topDictTracker.setEntryLocation(\"Encoding\", [cff.encoding.format], output);\n      } else {\n        const encoding = this.compileEncoding(cff.encoding);\n        topDictTracker.setEntryLocation(\"Encoding\", [output.length], output);\n        output.add(encoding);\n      }\n    }\n\n    const charset = this.compileCharset(cff.charset, cff.charStrings.count, cff.strings, cff.isCIDFont);\n    topDictTracker.setEntryLocation(\"charset\", [output.length], output);\n    output.add(charset);\n    const charStrings = this.compileCharStrings(cff.charStrings);\n    topDictTracker.setEntryLocation(\"CharStrings\", [output.length], output);\n    output.add(charStrings);\n\n    if (cff.isCIDFont) {\n      topDictTracker.setEntryLocation(\"FDSelect\", [output.length], output);\n      const fdSelect = this.compileFDSelect(cff.fdSelect);\n      output.add(fdSelect);\n      compiled = this.compileTopDicts(cff.fdArray, output.length, true);\n      topDictTracker.setEntryLocation(\"FDArray\", [output.length], output);\n      output.add(compiled.output);\n      const fontDictTrackers = compiled.trackers;\n      this.compilePrivateDicts(cff.fdArray, fontDictTrackers, output);\n    }\n\n    this.compilePrivateDicts([cff.topDict], [topDictTracker], output);\n    output.add([0]);\n    return output.data;\n  }\n\n  encodeNumber(value) {\n    if (Number.isInteger(value)) {\n      return this.encodeInteger(value);\n    }\n\n    return this.encodeFloat(value);\n  }\n\n  static get EncodeFloatRegExp() {\n    return (0, _util.shadow)(this, \"EncodeFloatRegExp\", /\\.(\\d*?)(?:9{5,20}|0{5,20})\\d{0,2}(?:e(.+)|$)/);\n  }\n\n  encodeFloat(num) {\n    let value = num.toString();\n    const m = CFFCompiler.EncodeFloatRegExp.exec(value);\n\n    if (m) {\n      const epsilon = parseFloat(\"1e\" + ((m[2] ? +m[2] : 0) + m[1].length));\n      value = (Math.round(num * epsilon) / epsilon).toString();\n    }\n\n    let nibbles = \"\";\n    let i, ii;\n\n    for (i = 0, ii = value.length; i < ii; ++i) {\n      const a = value[i];\n\n      if (a === \"e\") {\n        nibbles += value[++i] === \"-\" ? \"c\" : \"b\";\n      } else if (a === \".\") {\n        nibbles += \"a\";\n      } else if (a === \"-\") {\n        nibbles += \"e\";\n      } else {\n        nibbles += a;\n      }\n    }\n\n    nibbles += nibbles.length & 1 ? \"f\" : \"ff\";\n    const out = [30];\n\n    for (i = 0, ii = nibbles.length; i < ii; i += 2) {\n      out.push(parseInt(nibbles.substring(i, i + 2), 16));\n    }\n\n    return out;\n  }\n\n  encodeInteger(value) {\n    let code;\n\n    if (value >= -107 && value <= 107) {\n      code = [value + 139];\n    } else if (value >= 108 && value <= 1131) {\n      value -= 108;\n      code = [(value >> 8) + 247, value & 0xff];\n    } else if (value >= -1131 && value <= -108) {\n      value = -value - 108;\n      code = [(value >> 8) + 251, value & 0xff];\n    } else if (value >= -32768 && value <= 32767) {\n      code = [0x1c, value >> 8 & 0xff, value & 0xff];\n    } else {\n      code = [0x1d, value >> 24 & 0xff, value >> 16 & 0xff, value >> 8 & 0xff, value & 0xff];\n    }\n\n    return code;\n  }\n\n  compileHeader(header) {\n    return [header.major, header.minor, 4, header.offSize];\n  }\n\n  compileNameIndex(names) {\n    const nameIndex = new CFFIndex();\n\n    for (let i = 0, ii = names.length; i < ii; ++i) {\n      const name = names[i];\n      const length = Math.min(name.length, 127);\n      let sanitizedName = new Array(length);\n\n      for (let j = 0; j < length; j++) {\n        let char = name[j];\n\n        if (char < \"!\" || char > \"~\" || char === \"[\" || char === \"]\" || char === \"(\" || char === \")\" || char === \"{\" || char === \"}\" || char === \"<\" || char === \">\" || char === \"/\" || char === \"%\") {\n          char = \"_\";\n        }\n\n        sanitizedName[j] = char;\n      }\n\n      sanitizedName = sanitizedName.join(\"\");\n\n      if (sanitizedName === \"\") {\n        sanitizedName = \"Bad_Font_Name\";\n      }\n\n      nameIndex.add((0, _util.stringToBytes)(sanitizedName));\n    }\n\n    return this.compileIndex(nameIndex);\n  }\n\n  compileTopDicts(dicts, length, removeCidKeys) {\n    const fontDictTrackers = [];\n    let fdArrayIndex = new CFFIndex();\n\n    for (let i = 0, ii = dicts.length; i < ii; ++i) {\n      const fontDict = dicts[i];\n\n      if (removeCidKeys) {\n        fontDict.removeByName(\"CIDFontVersion\");\n        fontDict.removeByName(\"CIDFontRevision\");\n        fontDict.removeByName(\"CIDFontType\");\n        fontDict.removeByName(\"CIDCount\");\n        fontDict.removeByName(\"UIDBase\");\n      }\n\n      const fontDictTracker = new CFFOffsetTracker();\n      const fontDictData = this.compileDict(fontDict, fontDictTracker);\n      fontDictTrackers.push(fontDictTracker);\n      fdArrayIndex.add(fontDictData);\n      fontDictTracker.offset(length);\n    }\n\n    fdArrayIndex = this.compileIndex(fdArrayIndex, fontDictTrackers);\n    return {\n      trackers: fontDictTrackers,\n      output: fdArrayIndex\n    };\n  }\n\n  compilePrivateDicts(dicts, trackers, output) {\n    for (let i = 0, ii = dicts.length; i < ii; ++i) {\n      const fontDict = dicts[i];\n      const privateDict = fontDict.privateDict;\n\n      if (!privateDict || !fontDict.hasName(\"Private\")) {\n        throw new _util.FormatError(\"There must be a private dictionary.\");\n      }\n\n      const privateDictTracker = new CFFOffsetTracker();\n      const privateDictData = this.compileDict(privateDict, privateDictTracker);\n      let outputLength = output.length;\n      privateDictTracker.offset(outputLength);\n\n      if (!privateDictData.length) {\n        outputLength = 0;\n      }\n\n      trackers[i].setEntryLocation(\"Private\", [privateDictData.length, outputLength], output);\n      output.add(privateDictData);\n\n      if (privateDict.subrsIndex && privateDict.hasName(\"Subrs\")) {\n        const subrs = this.compileIndex(privateDict.subrsIndex);\n        privateDictTracker.setEntryLocation(\"Subrs\", [privateDictData.length], output);\n        output.add(subrs);\n      }\n    }\n  }\n\n  compileDict(dict, offsetTracker) {\n    let out = [];\n    const order = dict.order;\n\n    for (let i = 0; i < order.length; ++i) {\n      const key = order[i];\n\n      if (!(key in dict.values)) {\n        continue;\n      }\n\n      let values = dict.values[key];\n      let types = dict.types[key];\n\n      if (!Array.isArray(types)) {\n        types = [types];\n      }\n\n      if (!Array.isArray(values)) {\n        values = [values];\n      }\n\n      if (values.length === 0) {\n        continue;\n      }\n\n      for (let j = 0, jj = types.length; j < jj; ++j) {\n        const type = types[j];\n        const value = values[j];\n\n        switch (type) {\n          case \"num\":\n          case \"sid\":\n            out = out.concat(this.encodeNumber(value));\n            break;\n\n          case \"offset\":\n            const name = dict.keyToNameMap[key];\n\n            if (!offsetTracker.isTracking(name)) {\n              offsetTracker.track(name, out.length);\n            }\n\n            out = out.concat([0x1d, 0, 0, 0, 0]);\n            break;\n\n          case \"array\":\n          case \"delta\":\n            out = out.concat(this.encodeNumber(value));\n\n            for (let k = 1, kk = values.length; k < kk; ++k) {\n              out = out.concat(this.encodeNumber(values[k]));\n            }\n\n            break;\n\n          default:\n            throw new _util.FormatError(`Unknown data type of ${type}`);\n        }\n      }\n\n      out = out.concat(dict.opcodes[key]);\n    }\n\n    return out;\n  }\n\n  compileStringIndex(strings) {\n    const stringIndex = new CFFIndex();\n\n    for (let i = 0, ii = strings.length; i < ii; ++i) {\n      stringIndex.add((0, _util.stringToBytes)(strings[i]));\n    }\n\n    return this.compileIndex(stringIndex);\n  }\n\n  compileGlobalSubrIndex() {\n    const globalSubrIndex = this.cff.globalSubrIndex;\n    this.out.writeByteArray(this.compileIndex(globalSubrIndex));\n  }\n\n  compileCharStrings(charStrings) {\n    const charStringsIndex = new CFFIndex();\n\n    for (let i = 0; i < charStrings.count; i++) {\n      const glyph = charStrings.get(i);\n\n      if (glyph.length === 0) {\n        charStringsIndex.add(new Uint8Array([0x8b, 0x0e]));\n        continue;\n      }\n\n      charStringsIndex.add(glyph);\n    }\n\n    return this.compileIndex(charStringsIndex);\n  }\n\n  compileCharset(charset, numGlyphs, strings, isCIDFont) {\n    let out;\n    const numGlyphsLessNotDef = numGlyphs - 1;\n\n    if (isCIDFont) {\n      out = new Uint8Array([2, 0, 0, numGlyphsLessNotDef >> 8 & 0xff, numGlyphsLessNotDef & 0xff]);\n    } else {\n      const length = 1 + numGlyphsLessNotDef * 2;\n      out = new Uint8Array(length);\n      out[0] = 0;\n      let charsetIndex = 0;\n      const numCharsets = charset.charset.length;\n      let warned = false;\n\n      for (let i = 1; i < out.length; i += 2) {\n        let sid = 0;\n\n        if (charsetIndex < numCharsets) {\n          const name = charset.charset[charsetIndex++];\n          sid = strings.getSID(name);\n\n          if (sid === -1) {\n            sid = 0;\n\n            if (!warned) {\n              warned = true;\n              (0, _util.warn)(`Couldn't find ${name} in CFF strings`);\n            }\n          }\n        }\n\n        out[i] = sid >> 8 & 0xff;\n        out[i + 1] = sid & 0xff;\n      }\n    }\n\n    return this.compileTypedArray(out);\n  }\n\n  compileEncoding(encoding) {\n    return this.compileTypedArray(encoding.raw);\n  }\n\n  compileFDSelect(fdSelect) {\n    const format = fdSelect.format;\n    let out, i;\n\n    switch (format) {\n      case 0:\n        out = new Uint8Array(1 + fdSelect.fdSelect.length);\n        out[0] = format;\n\n        for (i = 0; i < fdSelect.fdSelect.length; i++) {\n          out[i + 1] = fdSelect.fdSelect[i];\n        }\n\n        break;\n\n      case 3:\n        const start = 0;\n        let lastFD = fdSelect.fdSelect[0];\n        const ranges = [format, 0, 0, start >> 8 & 0xff, start & 0xff, lastFD];\n\n        for (i = 1; i < fdSelect.fdSelect.length; i++) {\n          const currentFD = fdSelect.fdSelect[i];\n\n          if (currentFD !== lastFD) {\n            ranges.push(i >> 8 & 0xff, i & 0xff, currentFD);\n            lastFD = currentFD;\n          }\n        }\n\n        const numRanges = (ranges.length - 3) / 3;\n        ranges[1] = numRanges >> 8 & 0xff;\n        ranges[2] = numRanges & 0xff;\n        ranges.push(i >> 8 & 0xff, i & 0xff);\n        out = new Uint8Array(ranges);\n        break;\n    }\n\n    return this.compileTypedArray(out);\n  }\n\n  compileTypedArray(data) {\n    const out = [];\n\n    for (let i = 0, ii = data.length; i < ii; ++i) {\n      out[i] = data[i];\n    }\n\n    return out;\n  }\n\n  compileIndex(index, trackers = []) {\n    const objects = index.objects;\n    const count = objects.length;\n\n    if (count === 0) {\n      return [0, 0, 0];\n    }\n\n    const data = [count >> 8 & 0xff, count & 0xff];\n    let lastOffset = 1,\n        i;\n\n    for (i = 0; i < count; ++i) {\n      lastOffset += objects[i].length;\n    }\n\n    let offsetSize;\n\n    if (lastOffset < 0x100) {\n      offsetSize = 1;\n    } else if (lastOffset < 0x10000) {\n      offsetSize = 2;\n    } else if (lastOffset < 0x1000000) {\n      offsetSize = 3;\n    } else {\n      offsetSize = 4;\n    }\n\n    data.push(offsetSize);\n    let relativeOffset = 1;\n\n    for (i = 0; i < count + 1; i++) {\n      if (offsetSize === 1) {\n        data.push(relativeOffset & 0xff);\n      } else if (offsetSize === 2) {\n        data.push(relativeOffset >> 8 & 0xff, relativeOffset & 0xff);\n      } else if (offsetSize === 3) {\n        data.push(relativeOffset >> 16 & 0xff, relativeOffset >> 8 & 0xff, relativeOffset & 0xff);\n      } else {\n        data.push(relativeOffset >>> 24 & 0xff, relativeOffset >> 16 & 0xff, relativeOffset >> 8 & 0xff, relativeOffset & 0xff);\n      }\n\n      if (objects[i]) {\n        relativeOffset += objects[i].length;\n      }\n    }\n\n    for (i = 0; i < count; i++) {\n      if (trackers[i]) {\n        trackers[i].offset(data.length);\n      }\n\n      for (let j = 0, jj = objects[i].length; j < jj; j++) {\n        data.push(objects[i][j]);\n      }\n    }\n\n    return data;\n  }\n\n}\n\nexports.CFFCompiler = CFFCompiler;\n\n/***/ }),\n/* 46 */\n/***/ ((__unused_webpack_module, exports) => {\n\n\n\nObject.defineProperty(exports, \"__esModule\", ({\n  value: true\n}));\nexports.ISOAdobeCharset = exports.ExpertSubsetCharset = exports.ExpertCharset = void 0;\nconst ISOAdobeCharset = [\".notdef\", \"space\", \"exclam\", \"quotedbl\", \"numbersign\", \"dollar\", \"percent\", \"ampersand\", \"quoteright\", \"parenleft\", \"parenright\", \"asterisk\", \"plus\", \"comma\", \"hyphen\", \"period\", \"slash\", \"zero\", \"one\", \"two\", \"three\", \"four\", \"five\", \"six\", \"seven\", \"eight\", \"nine\", \"colon\", \"semicolon\", \"less\", \"equal\", \"greater\", \"question\", \"at\", \"A\", \"B\", \"C\", \"D\", \"E\", \"F\", \"G\", \"H\", \"I\", \"J\", \"K\", \"L\", \"M\", \"N\", \"O\", \"P\", \"Q\", \"R\", \"S\", \"T\", \"U\", \"V\", \"W\", \"X\", \"Y\", \"Z\", \"bracketleft\", \"backslash\", \"bracketright\", \"asciicircum\", \"underscore\", \"quoteleft\", \"a\", \"b\", \"c\", \"d\", \"e\", \"f\", \"g\", \"h\", \"i\", \"j\", \"k\", \"l\", \"m\", \"n\", \"o\", \"p\", \"q\", \"r\", \"s\", \"t\", \"u\", \"v\", \"w\", \"x\", \"y\", \"z\", \"braceleft\", \"bar\", \"braceright\", \"asciitilde\", \"exclamdown\", \"cent\", \"sterling\", \"fraction\", \"yen\", \"florin\", \"section\", \"currency\", \"quotesingle\", \"quotedblleft\", \"guillemotleft\", \"guilsinglleft\", \"guilsinglright\", \"fi\", \"fl\", \"endash\", \"dagger\", \"daggerdbl\", \"periodcentered\", \"paragraph\", \"bullet\", \"quotesinglbase\", \"quotedblbase\", \"quotedblright\", \"guillemotright\", \"ellipsis\", \"perthousand\", \"questiondown\", \"grave\", \"acute\", \"circumflex\", \"tilde\", \"macron\", \"breve\", \"dotaccent\", \"dieresis\", \"ring\", \"cedilla\", \"hungarumlaut\", \"ogonek\", \"caron\", \"emdash\", \"AE\", \"ordfeminine\", \"Lslash\", \"Oslash\", \"OE\", \"ordmasculine\", \"ae\", \"dotlessi\", \"lslash\", \"oslash\", \"oe\", \"germandbls\", \"onesuperior\", \"logicalnot\", \"mu\", \"trademark\", \"Eth\", \"onehalf\", \"plusminus\", \"Thorn\", \"onequarter\", \"divide\", \"brokenbar\", \"degree\", \"thorn\", \"threequarters\", \"twosuperior\", \"registered\", \"minus\", \"eth\", \"multiply\", \"threesuperior\", \"copyright\", \"Aacute\", \"Acircumflex\", \"Adieresis\", \"Agrave\", \"Aring\", \"Atilde\", \"Ccedilla\", \"Eacute\", \"Ecircumflex\", \"Edieresis\", \"Egrave\", \"Iacute\", \"Icircumflex\", \"Idieresis\", \"Igrave\", \"Ntilde\", \"Oacute\", \"Ocircumflex\", \"Odieresis\", \"Ograve\", \"Otilde\", \"Scaron\", \"Uacute\", \"Ucircumflex\", \"Udieresis\", \"Ugrave\", \"Yacute\", \"Ydieresis\", \"Zcaron\", \"aacute\", \"acircumflex\", \"adieresis\", \"agrave\", \"aring\", \"atilde\", \"ccedilla\", \"eacute\", \"ecircumflex\", \"edieresis\", \"egrave\", \"iacute\", \"icircumflex\", \"idieresis\", \"igrave\", \"ntilde\", \"oacute\", \"ocircumflex\", \"odieresis\", \"ograve\", \"otilde\", \"scaron\", \"uacute\", \"ucircumflex\", \"udieresis\", \"ugrave\", \"yacute\", \"ydieresis\", \"zcaron\"];\nexports.ISOAdobeCharset = ISOAdobeCharset;\nconst ExpertCharset = [\".notdef\", \"space\", \"exclamsmall\", \"Hungarumlautsmall\", \"dollaroldstyle\", \"dollarsuperior\", \"ampersandsmall\", \"Acutesmall\", \"parenleftsuperior\", \"parenrightsuperior\", \"twodotenleader\", \"onedotenleader\", \"comma\", \"hyphen\", \"period\", \"fraction\", \"zerooldstyle\", \"oneoldstyle\", \"twooldstyle\", \"threeoldstyle\", \"fouroldstyle\", \"fiveoldstyle\", \"sixoldstyle\", \"sevenoldstyle\", \"eightoldstyle\", \"nineoldstyle\", \"colon\", \"semicolon\", \"commasuperior\", \"threequartersemdash\", \"periodsuperior\", \"questionsmall\", \"asuperior\", \"bsuperior\", \"centsuperior\", \"dsuperior\", \"esuperior\", \"isuperior\", \"lsuperior\", \"msuperior\", \"nsuperior\", \"osuperior\", \"rsuperior\", \"ssuperior\", \"tsuperior\", \"ff\", \"fi\", \"fl\", \"ffi\", \"ffl\", \"parenleftinferior\", \"parenrightinferior\", \"Circumflexsmall\", \"hyphensuperior\", \"Gravesmall\", \"Asmall\", \"Bsmall\", \"Csmall\", \"Dsmall\", \"Esmall\", \"Fsmall\", \"Gsmall\", \"Hsmall\", \"Ismall\", \"Jsmall\", \"Ksmall\", \"Lsmall\", \"Msmall\", \"Nsmall\", \"Osmall\", \"Psmall\", \"Qsmall\", \"Rsmall\", \"Ssmall\", \"Tsmall\", \"Usmall\", \"Vsmall\", \"Wsmall\", \"Xsmall\", \"Ysmall\", \"Zsmall\", \"colonmonetary\", \"onefitted\", \"rupiah\", \"Tildesmall\", \"exclamdownsmall\", \"centoldstyle\", \"Lslashsmall\", \"Scaronsmall\", \"Zcaronsmall\", \"Dieresissmall\", \"Brevesmall\", \"Caronsmall\", \"Dotaccentsmall\", \"Macronsmall\", \"figuredash\", \"hypheninferior\", \"Ogoneksmall\", \"Ringsmall\", \"Cedillasmall\", \"onequarter\", \"onehalf\", \"threequarters\", \"questiondownsmall\", \"oneeighth\", \"threeeighths\", \"fiveeighths\", \"seveneighths\", \"onethird\", \"twothirds\", \"zerosuperior\", \"onesuperior\", \"twosuperior\", \"threesuperior\", \"foursuperior\", \"fivesuperior\", \"sixsuperior\", \"sevensuperior\", \"eightsuperior\", \"ninesuperior\", \"zeroinferior\", \"oneinferior\", \"twoinferior\", \"threeinferior\", \"fourinferior\", \"fiveinferior\", \"sixinferior\", \"seveninferior\", \"eightinferior\", \"nineinferior\", \"centinferior\", \"dollarinferior\", \"periodinferior\", \"commainferior\", \"Agravesmall\", \"Aacutesmall\", \"Acircumflexsmall\", \"Atildesmall\", \"Adieresissmall\", \"Aringsmall\", \"AEsmall\", \"Ccedillasmall\", \"Egravesmall\", \"Eacutesmall\", \"Ecircumflexsmall\", \"Edieresissmall\", \"Igravesmall\", \"Iacutesmall\", \"Icircumflexsmall\", \"Idieresissmall\", \"Ethsmall\", \"Ntildesmall\", \"Ogravesmall\", \"Oacutesmall\", \"Ocircumflexsmall\", \"Otildesmall\", \"Odieresissmall\", \"OEsmall\", \"Oslashsmall\", \"Ugravesmall\", \"Uacutesmall\", \"Ucircumflexsmall\", \"Udieresissmall\", \"Yacutesmall\", \"Thornsmall\", \"Ydieresissmall\"];\nexports.ExpertCharset = ExpertCharset;\nconst ExpertSubsetCharset = [\".notdef\", \"space\", \"dollaroldstyle\", \"dollarsuperior\", \"parenleftsuperior\", \"parenrightsuperior\", \"twodotenleader\", \"onedotenleader\", \"comma\", \"hyphen\", \"period\", \"fraction\", \"zerooldstyle\", \"oneoldstyle\", \"twooldstyle\", \"threeoldstyle\", \"fouroldstyle\", \"fiveoldstyle\", \"sixoldstyle\", \"sevenoldstyle\", \"eightoldstyle\", \"nineoldstyle\", \"colon\", \"semicolon\", \"commasuperior\", \"threequartersemdash\", \"periodsuperior\", \"asuperior\", \"bsuperior\", \"centsuperior\", \"dsuperior\", \"esuperior\", \"isuperior\", \"lsuperior\", \"msuperior\", \"nsuperior\", \"osuperior\", \"rsuperior\", \"ssuperior\", \"tsuperior\", \"ff\", \"fi\", \"fl\", \"ffi\", \"ffl\", \"parenleftinferior\", \"parenrightinferior\", \"hyphensuperior\", \"colonmonetary\", \"onefitted\", \"rupiah\", \"centoldstyle\", \"figuredash\", \"hypheninferior\", \"onequarter\", \"onehalf\", \"threequarters\", \"oneeighth\", \"threeeighths\", \"fiveeighths\", \"seveneighths\", \"onethird\", \"twothirds\", \"zerosuperior\", \"onesuperior\", \"twosuperior\", \"threesuperior\", \"foursuperior\", \"fivesuperior\", \"sixsuperior\", \"sevensuperior\", \"eightsuperior\", \"ninesuperior\", \"zeroinferior\", \"oneinferior\", \"twoinferior\", \"threeinferior\", \"fourinferior\", \"fiveinferior\", \"sixinferior\", \"seveninferior\", \"eightinferior\", \"nineinferior\", \"centinferior\", \"dollarinferior\", \"periodinferior\", \"commainferior\"];\nexports.ExpertSubsetCharset = ExpertSubsetCharset;\n\n/***/ }),\n/* 47 */\n/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {\n\n\n\nObject.defineProperty(exports, \"__esModule\", ({\n  value: true\n}));\nexports.getSerifFonts = exports.getNonStdFontMap = exports.getGlyphMapForStandardFonts = exports.getFontNameToFileMap = void 0;\nexports.getStandardFontName = getStandardFontName;\nexports.getSymbolsFonts = exports.getSupplementalGlyphMapForCalibri = exports.getSupplementalGlyphMapForArialBlack = exports.getStdFontMap = void 0;\n\nvar _core_utils = __w_pdfjs_require__(8);\n\nvar _fonts_utils = __w_pdfjs_require__(18);\n\nconst getStdFontMap = (0, _core_utils.getLookupTableFactory)(function (t) {\n  t[\"Times-Roman\"] = \"Times-Roman\";\n  t.Helvetica = \"Helvetica\";\n  t.Courier = \"Courier\";\n  t.Symbol = \"Symbol\";\n  t[\"Times-Bold\"] = \"Times-Bold\";\n  t[\"Helvetica-Bold\"] = \"Helvetica-Bold\";\n  t[\"Courier-Bold\"] = \"Courier-Bold\";\n  t.ZapfDingbats = \"ZapfDingbats\";\n  t[\"Times-Italic\"] = \"Times-Italic\";\n  t[\"Helvetica-Oblique\"] = \"Helvetica-Oblique\";\n  t[\"Courier-Oblique\"] = \"Courier-Oblique\";\n  t[\"Times-BoldItalic\"] = \"Times-BoldItalic\";\n  t[\"Helvetica-BoldOblique\"] = \"Helvetica-BoldOblique\";\n  t[\"Courier-BoldOblique\"] = \"Courier-BoldOblique\";\n  t.ArialNarrow = \"Helvetica\";\n  t[\"ArialNarrow-Bold\"] = \"Helvetica-Bold\";\n  t[\"ArialNarrow-BoldItalic\"] = \"Helvetica-BoldOblique\";\n  t[\"ArialNarrow-Italic\"] = \"Helvetica-Oblique\";\n  t.ArialBlack = \"Helvetica\";\n  t[\"ArialBlack-Bold\"] = \"Helvetica-Bold\";\n  t[\"ArialBlack-BoldItalic\"] = \"Helvetica-BoldOblique\";\n  t[\"ArialBlack-Italic\"] = \"Helvetica-Oblique\";\n  t[\"Arial-Black\"] = \"Helvetica\";\n  t[\"Arial-Black-Bold\"] = \"Helvetica-Bold\";\n  t[\"Arial-Black-BoldItalic\"] = \"Helvetica-BoldOblique\";\n  t[\"Arial-Black-Italic\"] = \"Helvetica-Oblique\";\n  t.Arial = \"Helvetica\";\n  t[\"Arial-Bold\"] = \"Helvetica-Bold\";\n  t[\"Arial-BoldItalic\"] = \"Helvetica-BoldOblique\";\n  t[\"Arial-Italic\"] = \"Helvetica-Oblique\";\n  t[\"Arial-BoldItalicMT\"] = \"Helvetica-BoldOblique\";\n  t[\"Arial-BoldMT\"] = \"Helvetica-Bold\";\n  t[\"Arial-ItalicMT\"] = \"Helvetica-Oblique\";\n  t.ArialMT = \"Helvetica\";\n  t[\"Courier-BoldItalic\"] = \"Courier-BoldOblique\";\n  t[\"Courier-Italic\"] = \"Courier-Oblique\";\n  t.CourierNew = \"Courier\";\n  t[\"CourierNew-Bold\"] = \"Courier-Bold\";\n  t[\"CourierNew-BoldItalic\"] = \"Courier-BoldOblique\";\n  t[\"CourierNew-Italic\"] = \"Courier-Oblique\";\n  t[\"CourierNewPS-BoldItalicMT\"] = \"Courier-BoldOblique\";\n  t[\"CourierNewPS-BoldMT\"] = \"Courier-Bold\";\n  t[\"CourierNewPS-ItalicMT\"] = \"Courier-Oblique\";\n  t.CourierNewPSMT = \"Courier\";\n  t[\"Helvetica-BoldItalic\"] = \"Helvetica-BoldOblique\";\n  t[\"Helvetica-Italic\"] = \"Helvetica-Oblique\";\n  t[\"Symbol-Bold\"] = \"Symbol\";\n  t[\"Symbol-BoldItalic\"] = \"Symbol\";\n  t[\"Symbol-Italic\"] = \"Symbol\";\n  t.TimesNewRoman = \"Times-Roman\";\n  t[\"TimesNewRoman-Bold\"] = \"Times-Bold\";\n  t[\"TimesNewRoman-BoldItalic\"] = \"Times-BoldItalic\";\n  t[\"TimesNewRoman-Italic\"] = \"Times-Italic\";\n  t.TimesNewRomanPS = \"Times-Roman\";\n  t[\"TimesNewRomanPS-Bold\"] = \"Times-Bold\";\n  t[\"TimesNewRomanPS-BoldItalic\"] = \"Times-BoldItalic\";\n  t[\"TimesNewRomanPS-BoldItalicMT\"] = \"Times-BoldItalic\";\n  t[\"TimesNewRomanPS-BoldMT\"] = \"Times-Bold\";\n  t[\"TimesNewRomanPS-Italic\"] = \"Times-Italic\";\n  t[\"TimesNewRomanPS-ItalicMT\"] = \"Times-Italic\";\n  t.TimesNewRomanPSMT = \"Times-Roman\";\n  t[\"TimesNewRomanPSMT-Bold\"] = \"Times-Bold\";\n  t[\"TimesNewRomanPSMT-BoldItalic\"] = \"Times-BoldItalic\";\n  t[\"TimesNewRomanPSMT-Italic\"] = \"Times-Italic\";\n});\nexports.getStdFontMap = getStdFontMap;\nconst getFontNameToFileMap = (0, _core_utils.getLookupTableFactory)(function (t) {\n  t.Courier = \"FoxitFixed.pfb\";\n  t[\"Courier-Bold\"] = \"FoxitFixedBold.pfb\";\n  t[\"Courier-BoldOblique\"] = \"FoxitFixedBoldItalic.pfb\";\n  t[\"Courier-Oblique\"] = \"FoxitFixedItalic.pfb\";\n  t.Helvetica = \"FoxitSans.pfb\";\n  t[\"Helvetica-Bold\"] = \"FoxitSansBold.pfb\";\n  t[\"Helvetica-BoldOblique\"] = \"FoxitSansBoldItalic.pfb\";\n  t[\"Helvetica-Oblique\"] = \"FoxitSansItalic.pfb\";\n  t[\"Times-Roman\"] = \"FoxitSerif.pfb\";\n  t[\"Times-Bold\"] = \"FoxitSerifBold.pfb\";\n  t[\"Times-BoldItalic\"] = \"FoxitSerifBoldItalic.pfb\";\n  t[\"Times-Italic\"] = \"FoxitSerifItalic.pfb\";\n  t.Symbol = \"FoxitSymbol.pfb\";\n  t.ZapfDingbats = \"FoxitDingbats.pfb\";\n  t[\"LiberationSans-Regular\"] = \"LiberationSans-Regular.ttf\";\n  t[\"LiberationSans-Bold\"] = \"LiberationSans-Bold.ttf\";\n  t[\"LiberationSans-Italic\"] = \"LiberationSans-Italic.ttf\";\n  t[\"LiberationSans-BoldItalic\"] = \"LiberationSans-BoldItalic.ttf\";\n});\nexports.getFontNameToFileMap = getFontNameToFileMap;\nconst getNonStdFontMap = (0, _core_utils.getLookupTableFactory)(function (t) {\n  t.Calibri = \"Helvetica\";\n  t[\"Calibri-Bold\"] = \"Helvetica-Bold\";\n  t[\"Calibri-BoldItalic\"] = \"Helvetica-BoldOblique\";\n  t[\"Calibri-Italic\"] = \"Helvetica-Oblique\";\n  t.CenturyGothic = \"Helvetica\";\n  t[\"CenturyGothic-Bold\"] = \"Helvetica-Bold\";\n  t[\"CenturyGothic-BoldItalic\"] = \"Helvetica-BoldOblique\";\n  t[\"CenturyGothic-Italic\"] = \"Helvetica-Oblique\";\n  t.ComicSansMS = \"Comic Sans MS\";\n  t[\"ComicSansMS-Bold\"] = \"Comic Sans MS-Bold\";\n  t[\"ComicSansMS-BoldItalic\"] = \"Comic Sans MS-BoldItalic\";\n  t[\"ComicSansMS-Italic\"] = \"Comic Sans MS-Italic\";\n  t[\"ItcSymbol-Bold\"] = \"Helvetica-Bold\";\n  t[\"ItcSymbol-BoldItalic\"] = \"Helvetica-BoldOblique\";\n  t[\"ItcSymbol-Book\"] = \"Helvetica\";\n  t[\"ItcSymbol-BookItalic\"] = \"Helvetica-Oblique\";\n  t[\"ItcSymbol-Medium\"] = \"Helvetica\";\n  t[\"ItcSymbol-MediumItalic\"] = \"Helvetica-Oblique\";\n  t.LucidaConsole = \"Courier\";\n  t[\"LucidaConsole-Bold\"] = \"Courier-Bold\";\n  t[\"LucidaConsole-BoldItalic\"] = \"Courier-BoldOblique\";\n  t[\"LucidaConsole-Italic\"] = \"Courier-Oblique\";\n  t[\"LucidaSans-Demi\"] = \"Helvetica-Bold\";\n  t[\"MS-Gothic\"] = \"MS Gothic\";\n  t[\"MS-Gothic-Bold\"] = \"MS Gothic-Bold\";\n  t[\"MS-Gothic-BoldItalic\"] = \"MS Gothic-BoldItalic\";\n  t[\"MS-Gothic-Italic\"] = \"MS Gothic-Italic\";\n  t[\"MS-Mincho\"] = \"MS Mincho\";\n  t[\"MS-Mincho-Bold\"] = \"MS Mincho-Bold\";\n  t[\"MS-Mincho-BoldItalic\"] = \"MS Mincho-BoldItalic\";\n  t[\"MS-Mincho-Italic\"] = \"MS Mincho-Italic\";\n  t[\"MS-PGothic\"] = \"MS PGothic\";\n  t[\"MS-PGothic-Bold\"] = \"MS PGothic-Bold\";\n  t[\"MS-PGothic-BoldItalic\"] = \"MS PGothic-BoldItalic\";\n  t[\"MS-PGothic-Italic\"] = \"MS PGothic-Italic\";\n  t[\"MS-PMincho\"] = \"MS PMincho\";\n  t[\"MS-PMincho-Bold\"] = \"MS PMincho-Bold\";\n  t[\"MS-PMincho-BoldItalic\"] = \"MS PMincho-BoldItalic\";\n  t[\"MS-PMincho-Italic\"] = \"MS PMincho-Italic\";\n  t.NuptialScript = \"Times-Italic\";\n  t.SegoeUISymbol = \"Helvetica\";\n  t.Wingdings = \"ZapfDingbats\";\n  t[\"Wingdings-Regular\"] = \"ZapfDingbats\";\n});\nexports.getNonStdFontMap = getNonStdFontMap;\nconst getSerifFonts = (0, _core_utils.getLookupTableFactory)(function (t) {\n  t[\"Adobe Jenson\"] = true;\n  t[\"Adobe Text\"] = true;\n  t.Albertus = true;\n  t.Aldus = true;\n  t.Alexandria = true;\n  t.Algerian = true;\n  t[\"American Typewriter\"] = true;\n  t.Antiqua = true;\n  t.Apex = true;\n  t.Arno = true;\n  t.Aster = true;\n  t.Aurora = true;\n  t.Baskerville = true;\n  t.Bell = true;\n  t.Bembo = true;\n  t[\"Bembo Schoolbook\"] = true;\n  t.Benguiat = true;\n  t[\"Berkeley Old Style\"] = true;\n  t[\"Bernhard Modern\"] = true;\n  t[\"Berthold City\"] = true;\n  t.Bodoni = true;\n  t[\"Bauer Bodoni\"] = true;\n  t[\"Book Antiqua\"] = true;\n  t.Bookman = true;\n  t[\"Bordeaux Roman\"] = true;\n  t[\"Californian FB\"] = true;\n  t.Calisto = true;\n  t.Calvert = true;\n  t.Capitals = true;\n  t.Cambria = true;\n  t.Cartier = true;\n  t.Caslon = true;\n  t.Catull = true;\n  t.Centaur = true;\n  t[\"Century Old Style\"] = true;\n  t[\"Century Schoolbook\"] = true;\n  t.Chaparral = true;\n  t[\"Charis SIL\"] = true;\n  t.Cheltenham = true;\n  t[\"Cholla Slab\"] = true;\n  t.Clarendon = true;\n  t.Clearface = true;\n  t.Cochin = true;\n  t.Colonna = true;\n  t[\"Computer Modern\"] = true;\n  t[\"Concrete Roman\"] = true;\n  t.Constantia = true;\n  t[\"Cooper Black\"] = true;\n  t.Corona = true;\n  t.Ecotype = true;\n  t.Egyptienne = true;\n  t.Elephant = true;\n  t.Excelsior = true;\n  t.Fairfield = true;\n  t[\"FF Scala\"] = true;\n  t.Folkard = true;\n  t.Footlight = true;\n  t.FreeSerif = true;\n  t[\"Friz Quadrata\"] = true;\n  t.Garamond = true;\n  t.Gentium = true;\n  t.Georgia = true;\n  t.Gloucester = true;\n  t[\"Goudy Old Style\"] = true;\n  t[\"Goudy Schoolbook\"] = true;\n  t[\"Goudy Pro Font\"] = true;\n  t.Granjon = true;\n  t[\"Guardian Egyptian\"] = true;\n  t.Heather = true;\n  t.Hercules = true;\n  t[\"High Tower Text\"] = true;\n  t.Hiroshige = true;\n  t[\"Hoefler Text\"] = true;\n  t[\"Humana Serif\"] = true;\n  t.Imprint = true;\n  t[\"Ionic No. 5\"] = true;\n  t.Janson = true;\n  t.Joanna = true;\n  t.Korinna = true;\n  t.Lexicon = true;\n  t.LiberationSerif = true;\n  t[\"Liberation Serif\"] = true;\n  t[\"Linux Libertine\"] = true;\n  t.Literaturnaya = true;\n  t.Lucida = true;\n  t[\"Lucida Bright\"] = true;\n  t.Melior = true;\n  t.Memphis = true;\n  t.Miller = true;\n  t.Minion = true;\n  t.Modern = true;\n  t[\"Mona Lisa\"] = true;\n  t[\"Mrs Eaves\"] = true;\n  t[\"MS Serif\"] = true;\n  t[\"Museo Slab\"] = true;\n  t[\"New York\"] = true;\n  t[\"Nimbus Roman\"] = true;\n  t[\"NPS Rawlinson Roadway\"] = true;\n  t.NuptialScript = true;\n  t.Palatino = true;\n  t.Perpetua = true;\n  t.Plantin = true;\n  t[\"Plantin Schoolbook\"] = true;\n  t.Playbill = true;\n  t[\"Poor Richard\"] = true;\n  t[\"Rawlinson Roadway\"] = true;\n  t.Renault = true;\n  t.Requiem = true;\n  t.Rockwell = true;\n  t.Roman = true;\n  t[\"Rotis Serif\"] = true;\n  t.Sabon = true;\n  t.Scala = true;\n  t.Seagull = true;\n  t.Sistina = true;\n  t.Souvenir = true;\n  t.STIX = true;\n  t[\"Stone Informal\"] = true;\n  t[\"Stone Serif\"] = true;\n  t.Sylfaen = true;\n  t.Times = true;\n  t.Trajan = true;\n  t[\"Trinité\"] = true;\n  t[\"Trump Mediaeval\"] = true;\n  t.Utopia = true;\n  t[\"Vale Type\"] = true;\n  t[\"Bitstream Vera\"] = true;\n  t[\"Vera Serif\"] = true;\n  t.Versailles = true;\n  t.Wanted = true;\n  t.Weiss = true;\n  t[\"Wide Latin\"] = true;\n  t.Windsor = true;\n  t.XITS = true;\n});\nexports.getSerifFonts = getSerifFonts;\nconst getSymbolsFonts = (0, _core_utils.getLookupTableFactory)(function (t) {\n  t.Dingbats = true;\n  t.Symbol = true;\n  t.ZapfDingbats = true;\n});\nexports.getSymbolsFonts = getSymbolsFonts;\nconst getGlyphMapForStandardFonts = (0, _core_utils.getLookupTableFactory)(function (t) {\n  t[2] = 10;\n  t[3] = 32;\n  t[4] = 33;\n  t[5] = 34;\n  t[6] = 35;\n  t[7] = 36;\n  t[8] = 37;\n  t[9] = 38;\n  t[10] = 39;\n  t[11] = 40;\n  t[12] = 41;\n  t[13] = 42;\n  t[14] = 43;\n  t[15] = 44;\n  t[16] = 45;\n  t[17] = 46;\n  t[18] = 47;\n  t[19] = 48;\n  t[20] = 49;\n  t[21] = 50;\n  t[22] = 51;\n  t[23] = 52;\n  t[24] = 53;\n  t[25] = 54;\n  t[26] = 55;\n  t[27] = 56;\n  t[28] = 57;\n  t[29] = 58;\n  t[30] = 894;\n  t[31] = 60;\n  t[32] = 61;\n  t[33] = 62;\n  t[34] = 63;\n  t[35] = 64;\n  t[36] = 65;\n  t[37] = 66;\n  t[38] = 67;\n  t[39] = 68;\n  t[40] = 69;\n  t[41] = 70;\n  t[42] = 71;\n  t[43] = 72;\n  t[44] = 73;\n  t[45] = 74;\n  t[46] = 75;\n  t[47] = 76;\n  t[48] = 77;\n  t[49] = 78;\n  t[50] = 79;\n  t[51] = 80;\n  t[52] = 81;\n  t[53] = 82;\n  t[54] = 83;\n  t[55] = 84;\n  t[56] = 85;\n  t[57] = 86;\n  t[58] = 87;\n  t[59] = 88;\n  t[60] = 89;\n  t[61] = 90;\n  t[62] = 91;\n  t[63] = 92;\n  t[64] = 93;\n  t[65] = 94;\n  t[66] = 95;\n  t[67] = 96;\n  t[68] = 97;\n  t[69] = 98;\n  t[70] = 99;\n  t[71] = 100;\n  t[72] = 101;\n  t[73] = 102;\n  t[74] = 103;\n  t[75] = 104;\n  t[76] = 105;\n  t[77] = 106;\n  t[78] = 107;\n  t[79] = 108;\n  t[80] = 109;\n  t[81] = 110;\n  t[82] = 111;\n  t[83] = 112;\n  t[84] = 113;\n  t[85] = 114;\n  t[86] = 115;\n  t[87] = 116;\n  t[88] = 117;\n  t[89] = 118;\n  t[90] = 119;\n  t[91] = 120;\n  t[92] = 121;\n  t[93] = 122;\n  t[94] = 123;\n  t[95] = 124;\n  t[96] = 125;\n  t[97] = 126;\n  t[98] = 196;\n  t[99] = 197;\n  t[100] = 199;\n  t[101] = 201;\n  t[102] = 209;\n  t[103] = 214;\n  t[104] = 220;\n  t[105] = 225;\n  t[106] = 224;\n  t[107] = 226;\n  t[108] = 228;\n  t[109] = 227;\n  t[110] = 229;\n  t[111] = 231;\n  t[112] = 233;\n  t[113] = 232;\n  t[114] = 234;\n  t[115] = 235;\n  t[116] = 237;\n  t[117] = 236;\n  t[118] = 238;\n  t[119] = 239;\n  t[120] = 241;\n  t[121] = 243;\n  t[122] = 242;\n  t[123] = 244;\n  t[124] = 246;\n  t[125] = 245;\n  t[126] = 250;\n  t[127] = 249;\n  t[128] = 251;\n  t[129] = 252;\n  t[130] = 8224;\n  t[131] = 176;\n  t[132] = 162;\n  t[133] = 163;\n  t[134] = 167;\n  t[135] = 8226;\n  t[136] = 182;\n  t[137] = 223;\n  t[138] = 174;\n  t[139] = 169;\n  t[140] = 8482;\n  t[141] = 180;\n  t[142] = 168;\n  t[143] = 8800;\n  t[144] = 198;\n  t[145] = 216;\n  t[146] = 8734;\n  t[147] = 177;\n  t[148] = 8804;\n  t[149] = 8805;\n  t[150] = 165;\n  t[151] = 181;\n  t[152] = 8706;\n  t[153] = 8721;\n  t[154] = 8719;\n  t[156] = 8747;\n  t[157] = 170;\n  t[158] = 186;\n  t[159] = 8486;\n  t[160] = 230;\n  t[161] = 248;\n  t[162] = 191;\n  t[163] = 161;\n  t[164] = 172;\n  t[165] = 8730;\n  t[166] = 402;\n  t[167] = 8776;\n  t[168] = 8710;\n  t[169] = 171;\n  t[170] = 187;\n  t[171] = 8230;\n  t[200] = 193;\n  t[203] = 205;\n  t[210] = 218;\n  t[223] = 711;\n  t[224] = 321;\n  t[225] = 322;\n  t[226] = 352;\n  t[227] = 353;\n  t[228] = 381;\n  t[229] = 382;\n  t[233] = 221;\n  t[234] = 253;\n  t[252] = 263;\n  t[253] = 268;\n  t[254] = 269;\n  t[258] = 258;\n  t[260] = 260;\n  t[261] = 261;\n  t[265] = 280;\n  t[266] = 281;\n  t[267] = 282;\n  t[268] = 283;\n  t[269] = 313;\n  t[275] = 323;\n  t[276] = 324;\n  t[278] = 328;\n  t[283] = 344;\n  t[284] = 345;\n  t[285] = 346;\n  t[286] = 347;\n  t[292] = 367;\n  t[295] = 377;\n  t[296] = 378;\n  t[298] = 380;\n  t[305] = 963;\n  t[306] = 964;\n  t[307] = 966;\n  t[308] = 8215;\n  t[309] = 8252;\n  t[310] = 8319;\n  t[311] = 8359;\n  t[312] = 8592;\n  t[313] = 8593;\n  t[337] = 9552;\n  t[493] = 1039;\n  t[494] = 1040;\n  t[705] = 1524;\n  t[706] = 8362;\n  t[710] = 64288;\n  t[711] = 64298;\n  t[759] = 1617;\n  t[761] = 1776;\n  t[763] = 1778;\n  t[775] = 1652;\n  t[777] = 1764;\n  t[778] = 1780;\n  t[779] = 1781;\n  t[780] = 1782;\n  t[782] = 771;\n  t[783] = 64726;\n  t[786] = 8363;\n  t[788] = 8532;\n  t[790] = 768;\n  t[791] = 769;\n  t[792] = 768;\n  t[795] = 803;\n  t[797] = 64336;\n  t[798] = 64337;\n  t[799] = 64342;\n  t[800] = 64343;\n  t[801] = 64344;\n  t[802] = 64345;\n  t[803] = 64362;\n  t[804] = 64363;\n  t[805] = 64364;\n  t[2424] = 7821;\n  t[2425] = 7822;\n  t[2426] = 7823;\n  t[2427] = 7824;\n  t[2428] = 7825;\n  t[2429] = 7826;\n  t[2430] = 7827;\n  t[2433] = 7682;\n  t[2678] = 8045;\n  t[2679] = 8046;\n  t[2830] = 1552;\n  t[2838] = 686;\n  t[2840] = 751;\n  t[2842] = 753;\n  t[2843] = 754;\n  t[2844] = 755;\n  t[2846] = 757;\n  t[2856] = 767;\n  t[2857] = 848;\n  t[2858] = 849;\n  t[2862] = 853;\n  t[2863] = 854;\n  t[2864] = 855;\n  t[2865] = 861;\n  t[2866] = 862;\n  t[2906] = 7460;\n  t[2908] = 7462;\n  t[2909] = 7463;\n  t[2910] = 7464;\n  t[2912] = 7466;\n  t[2913] = 7467;\n  t[2914] = 7468;\n  t[2916] = 7470;\n  t[2917] = 7471;\n  t[2918] = 7472;\n  t[2920] = 7474;\n  t[2921] = 7475;\n  t[2922] = 7476;\n  t[2924] = 7478;\n  t[2925] = 7479;\n  t[2926] = 7480;\n  t[2928] = 7482;\n  t[2929] = 7483;\n  t[2930] = 7484;\n  t[2932] = 7486;\n  t[2933] = 7487;\n  t[2934] = 7488;\n  t[2936] = 7490;\n  t[2937] = 7491;\n  t[2938] = 7492;\n  t[2940] = 7494;\n  t[2941] = 7495;\n  t[2942] = 7496;\n  t[2944] = 7498;\n  t[2946] = 7500;\n  t[2948] = 7502;\n  t[2950] = 7504;\n  t[2951] = 7505;\n  t[2952] = 7506;\n  t[2954] = 7508;\n  t[2955] = 7509;\n  t[2956] = 7510;\n  t[2958] = 7512;\n  t[2959] = 7513;\n  t[2960] = 7514;\n  t[2962] = 7516;\n  t[2963] = 7517;\n  t[2964] = 7518;\n  t[2966] = 7520;\n  t[2967] = 7521;\n  t[2968] = 7522;\n  t[2970] = 7524;\n  t[2971] = 7525;\n  t[2972] = 7526;\n  t[2974] = 7528;\n  t[2975] = 7529;\n  t[2976] = 7530;\n  t[2978] = 1537;\n  t[2979] = 1538;\n  t[2980] = 1539;\n  t[2982] = 1549;\n  t[2983] = 1551;\n  t[2984] = 1552;\n  t[2986] = 1554;\n  t[2987] = 1555;\n  t[2988] = 1556;\n  t[2990] = 1623;\n  t[2991] = 1624;\n  t[2995] = 1775;\n  t[2999] = 1791;\n  t[3002] = 64290;\n  t[3003] = 64291;\n  t[3004] = 64292;\n  t[3006] = 64294;\n  t[3007] = 64295;\n  t[3008] = 64296;\n  t[3011] = 1900;\n  t[3014] = 8223;\n  t[3015] = 8244;\n  t[3017] = 7532;\n  t[3018] = 7533;\n  t[3019] = 7534;\n  t[3075] = 7590;\n  t[3076] = 7591;\n  t[3079] = 7594;\n  t[3080] = 7595;\n  t[3083] = 7598;\n  t[3084] = 7599;\n  t[3087] = 7602;\n  t[3088] = 7603;\n  t[3091] = 7606;\n  t[3092] = 7607;\n  t[3095] = 7610;\n  t[3096] = 7611;\n  t[3099] = 7614;\n  t[3100] = 7615;\n  t[3103] = 7618;\n  t[3104] = 7619;\n  t[3107] = 8337;\n  t[3108] = 8338;\n  t[3116] = 1884;\n  t[3119] = 1885;\n  t[3120] = 1885;\n  t[3123] = 1886;\n  t[3124] = 1886;\n  t[3127] = 1887;\n  t[3128] = 1887;\n  t[3131] = 1888;\n  t[3132] = 1888;\n  t[3135] = 1889;\n  t[3136] = 1889;\n  t[3139] = 1890;\n  t[3140] = 1890;\n  t[3143] = 1891;\n  t[3144] = 1891;\n  t[3147] = 1892;\n  t[3148] = 1892;\n  t[3153] = 580;\n  t[3154] = 581;\n  t[3157] = 584;\n  t[3158] = 585;\n  t[3161] = 588;\n  t[3162] = 589;\n  t[3165] = 891;\n  t[3166] = 892;\n  t[3169] = 1274;\n  t[3170] = 1275;\n  t[3173] = 1278;\n  t[3174] = 1279;\n  t[3181] = 7622;\n  t[3182] = 7623;\n  t[3282] = 11799;\n  t[3316] = 578;\n  t[3379] = 42785;\n  t[3393] = 1159;\n  t[3416] = 8377;\n});\nexports.getGlyphMapForStandardFonts = getGlyphMapForStandardFonts;\nconst getSupplementalGlyphMapForArialBlack = (0, _core_utils.getLookupTableFactory)(function (t) {\n  t[227] = 322;\n  t[264] = 261;\n  t[291] = 346;\n});\nexports.getSupplementalGlyphMapForArialBlack = getSupplementalGlyphMapForArialBlack;\nconst getSupplementalGlyphMapForCalibri = (0, _core_utils.getLookupTableFactory)(function (t) {\n  t[1] = 32;\n  t[4] = 65;\n  t[6] = 193;\n  t[17] = 66;\n  t[18] = 67;\n  t[21] = 268;\n  t[24] = 68;\n  t[28] = 69;\n  t[30] = 201;\n  t[32] = 282;\n  t[38] = 70;\n  t[39] = 71;\n  t[44] = 72;\n  t[47] = 73;\n  t[49] = 205;\n  t[58] = 74;\n  t[60] = 75;\n  t[62] = 76;\n  t[68] = 77;\n  t[69] = 78;\n  t[75] = 79;\n  t[87] = 80;\n  t[89] = 81;\n  t[90] = 82;\n  t[92] = 344;\n  t[94] = 83;\n  t[97] = 352;\n  t[100] = 84;\n  t[104] = 85;\n  t[115] = 86;\n  t[116] = 87;\n  t[121] = 88;\n  t[122] = 89;\n  t[124] = 221;\n  t[127] = 90;\n  t[129] = 381;\n  t[258] = 97;\n  t[260] = 225;\n  t[268] = 261;\n  t[271] = 98;\n  t[272] = 99;\n  t[273] = 263;\n  t[275] = 269;\n  t[282] = 100;\n  t[286] = 101;\n  t[288] = 233;\n  t[290] = 283;\n  t[295] = 281;\n  t[296] = 102;\n  t[336] = 103;\n  t[346] = 104;\n  t[349] = 105;\n  t[351] = 237;\n  t[361] = 106;\n  t[364] = 107;\n  t[367] = 108;\n  t[371] = 322;\n  t[373] = 109;\n  t[374] = 110;\n  t[381] = 111;\n  t[383] = 243;\n  t[393] = 112;\n  t[395] = 113;\n  t[396] = 114;\n  t[398] = 345;\n  t[400] = 115;\n  t[401] = 347;\n  t[403] = 353;\n  t[410] = 116;\n  t[437] = 117;\n  t[448] = 118;\n  t[449] = 119;\n  t[454] = 120;\n  t[455] = 121;\n  t[457] = 253;\n  t[460] = 122;\n  t[462] = 382;\n  t[463] = 380;\n  t[853] = 44;\n  t[855] = 58;\n  t[856] = 46;\n  t[876] = 47;\n  t[878] = 45;\n  t[882] = 45;\n  t[894] = 40;\n  t[895] = 41;\n  t[896] = 91;\n  t[897] = 93;\n  t[923] = 64;\n  t[1004] = 48;\n  t[1005] = 49;\n  t[1006] = 50;\n  t[1007] = 51;\n  t[1008] = 52;\n  t[1009] = 53;\n  t[1010] = 54;\n  t[1011] = 55;\n  t[1012] = 56;\n  t[1013] = 57;\n  t[1081] = 37;\n  t[1085] = 43;\n  t[1086] = 45;\n});\nexports.getSupplementalGlyphMapForCalibri = getSupplementalGlyphMapForCalibri;\n\nfunction getStandardFontName(name) {\n  const fontName = (0, _fonts_utils.normalizeFontName)(name);\n  const stdFontMap = getStdFontMap();\n  return stdFontMap[fontName];\n}\n\n/***/ }),\n/* 48 */\n/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {\n\n\n\nObject.defineProperty(exports, \"__esModule\", ({\n  value: true\n}));\nexports.ToUnicodeMap = exports.IdentityToUnicodeMap = void 0;\n\nvar _util = __w_pdfjs_require__(2);\n\nclass ToUnicodeMap {\n  constructor(cmap = []) {\n    this._map = cmap;\n  }\n\n  get length() {\n    return this._map.length;\n  }\n\n  forEach(callback) {\n    for (const charCode in this._map) {\n      callback(charCode, this._map[charCode].charCodeAt(0));\n    }\n  }\n\n  has(i) {\n    return this._map[i] !== undefined;\n  }\n\n  get(i) {\n    return this._map[i];\n  }\n\n  charCodeOf(value) {\n    const map = this._map;\n\n    if (map.length <= 0x10000) {\n      return map.indexOf(value);\n    }\n\n    for (const charCode in map) {\n      if (map[charCode] === value) {\n        return charCode | 0;\n      }\n    }\n\n    return -1;\n  }\n\n  amend(map) {\n    for (const charCode in map) {\n      this._map[charCode] = map[charCode];\n    }\n  }\n\n}\n\nexports.ToUnicodeMap = ToUnicodeMap;\n\nclass IdentityToUnicodeMap {\n  constructor(firstChar, lastChar) {\n    this.firstChar = firstChar;\n    this.lastChar = lastChar;\n  }\n\n  get length() {\n    return this.lastChar + 1 - this.firstChar;\n  }\n\n  forEach(callback) {\n    for (let i = this.firstChar, ii = this.lastChar; i <= ii; i++) {\n      callback(i, i);\n    }\n  }\n\n  has(i) {\n    return this.firstChar <= i && i <= this.lastChar;\n  }\n\n  get(i) {\n    if (this.firstChar <= i && i <= this.lastChar) {\n      return String.fromCharCode(i);\n    }\n\n    return undefined;\n  }\n\n  charCodeOf(v) {\n    return Number.isInteger(v) && v >= this.firstChar && v <= this.lastChar ? v : -1;\n  }\n\n  amend(map) {\n    (0, _util.unreachable)(\"Should not call amend()\");\n  }\n\n}\n\nexports.IdentityToUnicodeMap = IdentityToUnicodeMap;\n\n/***/ }),\n/* 49 */\n/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {\n\n\n\nObject.defineProperty(exports, \"__esModule\", ({\n  value: true\n}));\nexports.CFFFont = void 0;\n\nvar _cff_parser = __w_pdfjs_require__(45);\n\nvar _fonts_utils = __w_pdfjs_require__(18);\n\nvar _util = __w_pdfjs_require__(2);\n\nclass CFFFont {\n  constructor(file, properties) {\n    this.properties = properties;\n    const parser = new _cff_parser.CFFParser(file, properties, _fonts_utils.SEAC_ANALYSIS_ENABLED);\n    this.cff = parser.parse();\n    this.cff.duplicateFirstGlyph();\n    const compiler = new _cff_parser.CFFCompiler(this.cff);\n    this.seacs = this.cff.seacs;\n\n    try {\n      this.data = compiler.compile();\n    } catch (e) {\n      (0, _util.warn)(\"Failed to compile font \" + properties.loadedName);\n      this.data = file;\n    }\n\n    this._createBuiltInEncoding();\n  }\n\n  get numGlyphs() {\n    return this.cff.charStrings.count;\n  }\n\n  getCharset() {\n    return this.cff.charset.charset;\n  }\n\n  getGlyphMapping() {\n    const cff = this.cff;\n    const properties = this.properties;\n    const charsets = cff.charset.charset;\n    let charCodeToGlyphId;\n    let glyphId;\n\n    if (properties.composite) {\n      charCodeToGlyphId = Object.create(null);\n      let charCode;\n\n      if (cff.isCIDFont) {\n        for (glyphId = 0; glyphId < charsets.length; glyphId++) {\n          const cid = charsets[glyphId];\n          charCode = properties.cMap.charCodeOf(cid);\n          charCodeToGlyphId[charCode] = glyphId;\n        }\n      } else {\n        for (glyphId = 0; glyphId < cff.charStrings.count; glyphId++) {\n          charCode = properties.cMap.charCodeOf(glyphId);\n          charCodeToGlyphId[charCode] = glyphId;\n        }\n      }\n\n      return charCodeToGlyphId;\n    }\n\n    let encoding = cff.encoding ? cff.encoding.encoding : null;\n\n    if (properties.isInternalFont) {\n      encoding = properties.defaultEncoding;\n    }\n\n    charCodeToGlyphId = (0, _fonts_utils.type1FontGlyphMapping)(properties, encoding, charsets);\n    return charCodeToGlyphId;\n  }\n\n  hasGlyphId(id) {\n    return this.cff.hasGlyphId(id);\n  }\n\n  _createBuiltInEncoding() {\n    const {\n      charset,\n      encoding\n    } = this.cff;\n\n    if (!charset || !encoding) {\n      return;\n    }\n\n    const charsets = charset.charset,\n          encodings = encoding.encoding;\n    const map = [];\n\n    for (const charCode in encodings) {\n      const glyphId = encodings[charCode];\n\n      if (glyphId >= 0) {\n        const glyphName = charsets[glyphId];\n\n        if (glyphName) {\n          map[charCode] = glyphName;\n        }\n      }\n    }\n\n    if (map.length > 0) {\n      this.properties.builtInEncoding = map;\n    }\n  }\n\n}\n\nexports.CFFFont = CFFFont;\n\n/***/ }),\n/* 50 */\n/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {\n\n\n\nObject.defineProperty(exports, \"__esModule\", ({\n  value: true\n}));\nexports.FontRendererFactory = void 0;\n\nvar _util = __w_pdfjs_require__(2);\n\nvar _cff_parser = __w_pdfjs_require__(45);\n\nvar _glyphlist = __w_pdfjs_require__(20);\n\nvar _encodings = __w_pdfjs_require__(19);\n\nvar _stream = __w_pdfjs_require__(10);\n\nfunction getUint32(data, offset) {\n  return (data[offset] << 24 | data[offset + 1] << 16 | data[offset + 2] << 8 | data[offset + 3]) >>> 0;\n}\n\nfunction getUint16(data, offset) {\n  return data[offset] << 8 | data[offset + 1];\n}\n\nfunction getInt16(data, offset) {\n  return (data[offset] << 24 | data[offset + 1] << 16) >> 16;\n}\n\nfunction getInt8(data, offset) {\n  return data[offset] << 24 >> 24;\n}\n\nfunction getFloat214(data, offset) {\n  return getInt16(data, offset) / 16384;\n}\n\nfunction getSubroutineBias(subrs) {\n  const numSubrs = subrs.length;\n  let bias = 32768;\n\n  if (numSubrs < 1240) {\n    bias = 107;\n  } else if (numSubrs < 33900) {\n    bias = 1131;\n  }\n\n  return bias;\n}\n\nfunction parseCmap(data, start, end) {\n  const offset = getUint16(data, start + 2) === 1 ? getUint32(data, start + 8) : getUint32(data, start + 16);\n  const format = getUint16(data, start + offset);\n  let ranges, p, i;\n\n  if (format === 4) {\n    getUint16(data, start + offset + 2);\n    const segCount = getUint16(data, start + offset + 6) >> 1;\n    p = start + offset + 14;\n    ranges = [];\n\n    for (i = 0; i < segCount; i++, p += 2) {\n      ranges[i] = {\n        end: getUint16(data, p)\n      };\n    }\n\n    p += 2;\n\n    for (i = 0; i < segCount; i++, p += 2) {\n      ranges[i].start = getUint16(data, p);\n    }\n\n    for (i = 0; i < segCount; i++, p += 2) {\n      ranges[i].idDelta = getUint16(data, p);\n    }\n\n    for (i = 0; i < segCount; i++, p += 2) {\n      let idOffset = getUint16(data, p);\n\n      if (idOffset === 0) {\n        continue;\n      }\n\n      ranges[i].ids = [];\n\n      for (let j = 0, jj = ranges[i].end - ranges[i].start + 1; j < jj; j++) {\n        ranges[i].ids[j] = getUint16(data, p + idOffset);\n        idOffset += 2;\n      }\n    }\n\n    return ranges;\n  } else if (format === 12) {\n    const groups = getUint32(data, start + offset + 12);\n    p = start + offset + 16;\n    ranges = [];\n\n    for (i = 0; i < groups; i++) {\n      start = getUint32(data, p);\n      ranges.push({\n        start,\n        end: getUint32(data, p + 4),\n        idDelta: getUint32(data, p + 8) - start\n      });\n      p += 12;\n    }\n\n    return ranges;\n  }\n\n  throw new _util.FormatError(`unsupported cmap: ${format}`);\n}\n\nfunction parseCff(data, start, end, seacAnalysisEnabled) {\n  const properties = {};\n  const parser = new _cff_parser.CFFParser(new _stream.Stream(data, start, end - start), properties, seacAnalysisEnabled);\n  const cff = parser.parse();\n  return {\n    glyphs: cff.charStrings.objects,\n    subrs: cff.topDict.privateDict && cff.topDict.privateDict.subrsIndex && cff.topDict.privateDict.subrsIndex.objects,\n    gsubrs: cff.globalSubrIndex && cff.globalSubrIndex.objects,\n    isCFFCIDFont: cff.isCIDFont,\n    fdSelect: cff.fdSelect,\n    fdArray: cff.fdArray\n  };\n}\n\nfunction parseGlyfTable(glyf, loca, isGlyphLocationsLong) {\n  let itemSize, itemDecode;\n\n  if (isGlyphLocationsLong) {\n    itemSize = 4;\n    itemDecode = getUint32;\n  } else {\n    itemSize = 2;\n\n    itemDecode = (data, offset) => 2 * getUint16(data, offset);\n  }\n\n  const glyphs = [];\n  let startOffset = itemDecode(loca, 0);\n\n  for (let j = itemSize; j < loca.length; j += itemSize) {\n    const endOffset = itemDecode(loca, j);\n    glyphs.push(glyf.subarray(startOffset, endOffset));\n    startOffset = endOffset;\n  }\n\n  return glyphs;\n}\n\nfunction lookupCmap(ranges, unicode) {\n  const code = unicode.codePointAt(0);\n  let gid = 0,\n      l = 0,\n      r = ranges.length - 1;\n\n  while (l < r) {\n    const c = l + r + 1 >> 1;\n\n    if (code < ranges[c].start) {\n      r = c - 1;\n    } else {\n      l = c;\n    }\n  }\n\n  if (ranges[l].start <= code && code <= ranges[l].end) {\n    gid = ranges[l].idDelta + (ranges[l].ids ? ranges[l].ids[code - ranges[l].start] : code) & 0xffff;\n  }\n\n  return {\n    charCode: code,\n    glyphId: gid\n  };\n}\n\nfunction compileGlyf(code, cmds, font) {\n  function moveTo(x, y) {\n    cmds.push({\n      cmd: \"moveTo\",\n      args: [x, y]\n    });\n  }\n\n  function lineTo(x, y) {\n    cmds.push({\n      cmd: \"lineTo\",\n      args: [x, y]\n    });\n  }\n\n  function quadraticCurveTo(xa, ya, x, y) {\n    cmds.push({\n      cmd: \"quadraticCurveTo\",\n      args: [xa, ya, x, y]\n    });\n  }\n\n  let i = 0;\n  const numberOfContours = getInt16(code, i);\n  let flags;\n  let x = 0,\n      y = 0;\n  i += 10;\n\n  if (numberOfContours < 0) {\n    do {\n      flags = getUint16(code, i);\n      const glyphIndex = getUint16(code, i + 2);\n      i += 4;\n      let arg1, arg2;\n\n      if (flags & 0x01) {\n        if (flags & 0x02) {\n          arg1 = getInt16(code, i);\n          arg2 = getInt16(code, i + 2);\n        } else {\n          arg1 = getUint16(code, i);\n          arg2 = getUint16(code, i + 2);\n        }\n\n        i += 4;\n      } else {\n        if (flags & 0x02) {\n          arg1 = getInt8(code, i++);\n          arg2 = getInt8(code, i++);\n        } else {\n          arg1 = code[i++];\n          arg2 = code[i++];\n        }\n      }\n\n      if (flags & 0x02) {\n        x = arg1;\n        y = arg2;\n      } else {\n        x = 0;\n        y = 0;\n      }\n\n      let scaleX = 1,\n          scaleY = 1,\n          scale01 = 0,\n          scale10 = 0;\n\n      if (flags & 0x08) {\n        scaleX = scaleY = getFloat214(code, i);\n        i += 2;\n      } else if (flags & 0x40) {\n        scaleX = getFloat214(code, i);\n        scaleY = getFloat214(code, i + 2);\n        i += 4;\n      } else if (flags & 0x80) {\n        scaleX = getFloat214(code, i);\n        scale01 = getFloat214(code, i + 2);\n        scale10 = getFloat214(code, i + 4);\n        scaleY = getFloat214(code, i + 6);\n        i += 8;\n      }\n\n      const subglyph = font.glyphs[glyphIndex];\n\n      if (subglyph) {\n        cmds.push({\n          cmd: \"save\"\n        }, {\n          cmd: \"transform\",\n          args: [scaleX, scale01, scale10, scaleY, x, y]\n        });\n\n        if (!(flags & 0x02)) {}\n\n        compileGlyf(subglyph, cmds, font);\n        cmds.push({\n          cmd: \"restore\"\n        });\n      }\n    } while (flags & 0x20);\n  } else {\n    const endPtsOfContours = [];\n    let j, jj;\n\n    for (j = 0; j < numberOfContours; j++) {\n      endPtsOfContours.push(getUint16(code, i));\n      i += 2;\n    }\n\n    const instructionLength = getUint16(code, i);\n    i += 2 + instructionLength;\n    const numberOfPoints = endPtsOfContours[endPtsOfContours.length - 1] + 1;\n    const points = [];\n\n    while (points.length < numberOfPoints) {\n      flags = code[i++];\n      let repeat = 1;\n\n      if (flags & 0x08) {\n        repeat += code[i++];\n      }\n\n      while (repeat-- > 0) {\n        points.push({\n          flags\n        });\n      }\n    }\n\n    for (j = 0; j < numberOfPoints; j++) {\n      switch (points[j].flags & 0x12) {\n        case 0x00:\n          x += getInt16(code, i);\n          i += 2;\n          break;\n\n        case 0x02:\n          x -= code[i++];\n          break;\n\n        case 0x12:\n          x += code[i++];\n          break;\n      }\n\n      points[j].x = x;\n    }\n\n    for (j = 0; j < numberOfPoints; j++) {\n      switch (points[j].flags & 0x24) {\n        case 0x00:\n          y += getInt16(code, i);\n          i += 2;\n          break;\n\n        case 0x04:\n          y -= code[i++];\n          break;\n\n        case 0x24:\n          y += code[i++];\n          break;\n      }\n\n      points[j].y = y;\n    }\n\n    let startPoint = 0;\n\n    for (i = 0; i < numberOfContours; i++) {\n      const endPoint = endPtsOfContours[i];\n      const contour = points.slice(startPoint, endPoint + 1);\n\n      if (contour[0].flags & 1) {\n        contour.push(contour[0]);\n      } else if (contour[contour.length - 1].flags & 1) {\n        contour.unshift(contour[contour.length - 1]);\n      } else {\n        const p = {\n          flags: 1,\n          x: (contour[0].x + contour[contour.length - 1].x) / 2,\n          y: (contour[0].y + contour[contour.length - 1].y) / 2\n        };\n        contour.unshift(p);\n        contour.push(p);\n      }\n\n      moveTo(contour[0].x, contour[0].y);\n\n      for (j = 1, jj = contour.length; j < jj; j++) {\n        if (contour[j].flags & 1) {\n          lineTo(contour[j].x, contour[j].y);\n        } else if (contour[j + 1].flags & 1) {\n          quadraticCurveTo(contour[j].x, contour[j].y, contour[j + 1].x, contour[j + 1].y);\n          j++;\n        } else {\n          quadraticCurveTo(contour[j].x, contour[j].y, (contour[j].x + contour[j + 1].x) / 2, (contour[j].y + contour[j + 1].y) / 2);\n        }\n      }\n\n      startPoint = endPoint + 1;\n    }\n  }\n}\n\nfunction compileCharString(charStringCode, cmds, font, glyphId) {\n  function moveTo(x, y) {\n    cmds.push({\n      cmd: \"moveTo\",\n      args: [x, y]\n    });\n  }\n\n  function lineTo(x, y) {\n    cmds.push({\n      cmd: \"lineTo\",\n      args: [x, y]\n    });\n  }\n\n  function bezierCurveTo(x1, y1, x2, y2, x, y) {\n    cmds.push({\n      cmd: \"bezierCurveTo\",\n      args: [x1, y1, x2, y2, x, y]\n    });\n  }\n\n  const stack = [];\n  let x = 0,\n      y = 0;\n  let stems = 0;\n\n  function parse(code) {\n    let i = 0;\n\n    while (i < code.length) {\n      let stackClean = false;\n      let v = code[i++];\n      let xa, xb, ya, yb, y1, y2, y3, n, subrCode;\n\n      switch (v) {\n        case 1:\n          stems += stack.length >> 1;\n          stackClean = true;\n          break;\n\n        case 3:\n          stems += stack.length >> 1;\n          stackClean = true;\n          break;\n\n        case 4:\n          y += stack.pop();\n          moveTo(x, y);\n          stackClean = true;\n          break;\n\n        case 5:\n          while (stack.length > 0) {\n            x += stack.shift();\n            y += stack.shift();\n            lineTo(x, y);\n          }\n\n          break;\n\n        case 6:\n          while (stack.length > 0) {\n            x += stack.shift();\n            lineTo(x, y);\n\n            if (stack.length === 0) {\n              break;\n            }\n\n            y += stack.shift();\n            lineTo(x, y);\n          }\n\n          break;\n\n        case 7:\n          while (stack.length > 0) {\n            y += stack.shift();\n            lineTo(x, y);\n\n            if (stack.length === 0) {\n              break;\n            }\n\n            x += stack.shift();\n            lineTo(x, y);\n          }\n\n          break;\n\n        case 8:\n          while (stack.length > 0) {\n            xa = x + stack.shift();\n            ya = y + stack.shift();\n            xb = xa + stack.shift();\n            yb = ya + stack.shift();\n            x = xb + stack.shift();\n            y = yb + stack.shift();\n            bezierCurveTo(xa, ya, xb, yb, x, y);\n          }\n\n          break;\n\n        case 10:\n          n = stack.pop();\n          subrCode = null;\n\n          if (font.isCFFCIDFont) {\n            const fdIndex = font.fdSelect.getFDIndex(glyphId);\n\n            if (fdIndex >= 0 && fdIndex < font.fdArray.length) {\n              const fontDict = font.fdArray[fdIndex];\n              let subrs;\n\n              if (fontDict.privateDict && fontDict.privateDict.subrsIndex) {\n                subrs = fontDict.privateDict.subrsIndex.objects;\n              }\n\n              if (subrs) {\n                n += getSubroutineBias(subrs);\n                subrCode = subrs[n];\n              }\n            } else {\n              (0, _util.warn)(\"Invalid fd index for glyph index.\");\n            }\n          } else {\n            subrCode = font.subrs[n + font.subrsBias];\n          }\n\n          if (subrCode) {\n            parse(subrCode);\n          }\n\n          break;\n\n        case 11:\n          return;\n\n        case 12:\n          v = code[i++];\n\n          switch (v) {\n            case 34:\n              xa = x + stack.shift();\n              xb = xa + stack.shift();\n              y1 = y + stack.shift();\n              x = xb + stack.shift();\n              bezierCurveTo(xa, y, xb, y1, x, y1);\n              xa = x + stack.shift();\n              xb = xa + stack.shift();\n              x = xb + stack.shift();\n              bezierCurveTo(xa, y1, xb, y, x, y);\n              break;\n\n            case 35:\n              xa = x + stack.shift();\n              ya = y + stack.shift();\n              xb = xa + stack.shift();\n              yb = ya + stack.shift();\n              x = xb + stack.shift();\n              y = yb + stack.shift();\n              bezierCurveTo(xa, ya, xb, yb, x, y);\n              xa = x + stack.shift();\n              ya = y + stack.shift();\n              xb = xa + stack.shift();\n              yb = ya + stack.shift();\n              x = xb + stack.shift();\n              y = yb + stack.shift();\n              bezierCurveTo(xa, ya, xb, yb, x, y);\n              stack.pop();\n              break;\n\n            case 36:\n              xa = x + stack.shift();\n              y1 = y + stack.shift();\n              xb = xa + stack.shift();\n              y2 = y1 + stack.shift();\n              x = xb + stack.shift();\n              bezierCurveTo(xa, y1, xb, y2, x, y2);\n              xa = x + stack.shift();\n              xb = xa + stack.shift();\n              y3 = y2 + stack.shift();\n              x = xb + stack.shift();\n              bezierCurveTo(xa, y2, xb, y3, x, y);\n              break;\n\n            case 37:\n              const x0 = x,\n                    y0 = y;\n              xa = x + stack.shift();\n              ya = y + stack.shift();\n              xb = xa + stack.shift();\n              yb = ya + stack.shift();\n              x = xb + stack.shift();\n              y = yb + stack.shift();\n              bezierCurveTo(xa, ya, xb, yb, x, y);\n              xa = x + stack.shift();\n              ya = y + stack.shift();\n              xb = xa + stack.shift();\n              yb = ya + stack.shift();\n              x = xb;\n              y = yb;\n\n              if (Math.abs(x - x0) > Math.abs(y - y0)) {\n                x += stack.shift();\n              } else {\n                y += stack.shift();\n              }\n\n              bezierCurveTo(xa, ya, xb, yb, x, y);\n              break;\n\n            default:\n              throw new _util.FormatError(`unknown operator: 12 ${v}`);\n          }\n\n          break;\n\n        case 14:\n          if (stack.length >= 4) {\n            const achar = stack.pop();\n            const bchar = stack.pop();\n            y = stack.pop();\n            x = stack.pop();\n            cmds.push({\n              cmd: \"save\"\n            }, {\n              cmd: \"translate\",\n              args: [x, y]\n            });\n            let cmap = lookupCmap(font.cmap, String.fromCharCode(font.glyphNameMap[_encodings.StandardEncoding[achar]]));\n            compileCharString(font.glyphs[cmap.glyphId], cmds, font, cmap.glyphId);\n            cmds.push({\n              cmd: \"restore\"\n            });\n            cmap = lookupCmap(font.cmap, String.fromCharCode(font.glyphNameMap[_encodings.StandardEncoding[bchar]]));\n            compileCharString(font.glyphs[cmap.glyphId], cmds, font, cmap.glyphId);\n          }\n\n          return;\n\n        case 18:\n          stems += stack.length >> 1;\n          stackClean = true;\n          break;\n\n        case 19:\n          stems += stack.length >> 1;\n          i += stems + 7 >> 3;\n          stackClean = true;\n          break;\n\n        case 20:\n          stems += stack.length >> 1;\n          i += stems + 7 >> 3;\n          stackClean = true;\n          break;\n\n        case 21:\n          y += stack.pop();\n          x += stack.pop();\n          moveTo(x, y);\n          stackClean = true;\n          break;\n\n        case 22:\n          x += stack.pop();\n          moveTo(x, y);\n          stackClean = true;\n          break;\n\n        case 23:\n          stems += stack.length >> 1;\n          stackClean = true;\n          break;\n\n        case 24:\n          while (stack.length > 2) {\n            xa = x + stack.shift();\n            ya = y + stack.shift();\n            xb = xa + stack.shift();\n            yb = ya + stack.shift();\n            x = xb + stack.shift();\n            y = yb + stack.shift();\n            bezierCurveTo(xa, ya, xb, yb, x, y);\n          }\n\n          x += stack.shift();\n          y += stack.shift();\n          lineTo(x, y);\n          break;\n\n        case 25:\n          while (stack.length > 6) {\n            x += stack.shift();\n            y += stack.shift();\n            lineTo(x, y);\n          }\n\n          xa = x + stack.shift();\n          ya = y + stack.shift();\n          xb = xa + stack.shift();\n          yb = ya + stack.shift();\n          x = xb + stack.shift();\n          y = yb + stack.shift();\n          bezierCurveTo(xa, ya, xb, yb, x, y);\n          break;\n\n        case 26:\n          if (stack.length % 2) {\n            x += stack.shift();\n          }\n\n          while (stack.length > 0) {\n            xa = x;\n            ya = y + stack.shift();\n            xb = xa + stack.shift();\n            yb = ya + stack.shift();\n            x = xb;\n            y = yb + stack.shift();\n            bezierCurveTo(xa, ya, xb, yb, x, y);\n          }\n\n          break;\n\n        case 27:\n          if (stack.length % 2) {\n            y += stack.shift();\n          }\n\n          while (stack.length > 0) {\n            xa = x + stack.shift();\n            ya = y;\n            xb = xa + stack.shift();\n            yb = ya + stack.shift();\n            x = xb + stack.shift();\n            y = yb;\n            bezierCurveTo(xa, ya, xb, yb, x, y);\n          }\n\n          break;\n\n        case 28:\n          stack.push((code[i] << 24 | code[i + 1] << 16) >> 16);\n          i += 2;\n          break;\n\n        case 29:\n          n = stack.pop() + font.gsubrsBias;\n          subrCode = font.gsubrs[n];\n\n          if (subrCode) {\n            parse(subrCode);\n          }\n\n          break;\n\n        case 30:\n          while (stack.length > 0) {\n            xa = x;\n            ya = y + stack.shift();\n            xb = xa + stack.shift();\n            yb = ya + stack.shift();\n            x = xb + stack.shift();\n            y = yb + (stack.length === 1 ? stack.shift() : 0);\n            bezierCurveTo(xa, ya, xb, yb, x, y);\n\n            if (stack.length === 0) {\n              break;\n            }\n\n            xa = x + stack.shift();\n            ya = y;\n            xb = xa + stack.shift();\n            yb = ya + stack.shift();\n            y = yb + stack.shift();\n            x = xb + (stack.length === 1 ? stack.shift() : 0);\n            bezierCurveTo(xa, ya, xb, yb, x, y);\n          }\n\n          break;\n\n        case 31:\n          while (stack.length > 0) {\n            xa = x + stack.shift();\n            ya = y;\n            xb = xa + stack.shift();\n            yb = ya + stack.shift();\n            y = yb + stack.shift();\n            x = xb + (stack.length === 1 ? stack.shift() : 0);\n            bezierCurveTo(xa, ya, xb, yb, x, y);\n\n            if (stack.length === 0) {\n              break;\n            }\n\n            xa = x;\n            ya = y + stack.shift();\n            xb = xa + stack.shift();\n            yb = ya + stack.shift();\n            x = xb + stack.shift();\n            y = yb + (stack.length === 1 ? stack.shift() : 0);\n            bezierCurveTo(xa, ya, xb, yb, x, y);\n          }\n\n          break;\n\n        default:\n          if (v < 32) {\n            throw new _util.FormatError(`unknown operator: ${v}`);\n          }\n\n          if (v < 247) {\n            stack.push(v - 139);\n          } else if (v < 251) {\n            stack.push((v - 247) * 256 + code[i++] + 108);\n          } else if (v < 255) {\n            stack.push(-(v - 251) * 256 - code[i++] - 108);\n          } else {\n            stack.push((code[i] << 24 | code[i + 1] << 16 | code[i + 2] << 8 | code[i + 3]) / 65536);\n            i += 4;\n          }\n\n          break;\n      }\n\n      if (stackClean) {\n        stack.length = 0;\n      }\n    }\n  }\n\n  parse(charStringCode);\n}\n\nconst NOOP = [];\n\nclass CompiledFont {\n  constructor(fontMatrix) {\n    if (this.constructor === CompiledFont) {\n      (0, _util.unreachable)(\"Cannot initialize CompiledFont.\");\n    }\n\n    this.fontMatrix = fontMatrix;\n    this.compiledGlyphs = Object.create(null);\n    this.compiledCharCodeToGlyphId = Object.create(null);\n  }\n\n  getPathJs(unicode) {\n    const {\n      charCode,\n      glyphId\n    } = lookupCmap(this.cmap, unicode);\n    let fn = this.compiledGlyphs[glyphId];\n\n    if (!fn) {\n      try {\n        fn = this.compileGlyph(this.glyphs[glyphId], glyphId);\n        this.compiledGlyphs[glyphId] = fn;\n      } catch (ex) {\n        this.compiledGlyphs[glyphId] = NOOP;\n\n        if (this.compiledCharCodeToGlyphId[charCode] === undefined) {\n          this.compiledCharCodeToGlyphId[charCode] = glyphId;\n        }\n\n        throw ex;\n      }\n    }\n\n    if (this.compiledCharCodeToGlyphId[charCode] === undefined) {\n      this.compiledCharCodeToGlyphId[charCode] = glyphId;\n    }\n\n    return fn;\n  }\n\n  compileGlyph(code, glyphId) {\n    if (!code || code.length === 0 || code[0] === 14) {\n      return NOOP;\n    }\n\n    let fontMatrix = this.fontMatrix;\n\n    if (this.isCFFCIDFont) {\n      const fdIndex = this.fdSelect.getFDIndex(glyphId);\n\n      if (fdIndex >= 0 && fdIndex < this.fdArray.length) {\n        const fontDict = this.fdArray[fdIndex];\n        fontMatrix = fontDict.getByName(\"FontMatrix\") || _util.FONT_IDENTITY_MATRIX;\n      } else {\n        (0, _util.warn)(\"Invalid fd index for glyph index.\");\n      }\n    }\n\n    const cmds = [{\n      cmd: \"save\"\n    }, {\n      cmd: \"transform\",\n      args: fontMatrix.slice()\n    }, {\n      cmd: \"scale\",\n      args: [\"size\", \"-size\"]\n    }];\n    this.compileGlyphImpl(code, cmds, glyphId);\n    cmds.push({\n      cmd: \"restore\"\n    });\n    return cmds;\n  }\n\n  compileGlyphImpl() {\n    (0, _util.unreachable)(\"Children classes should implement this.\");\n  }\n\n  hasBuiltPath(unicode) {\n    const {\n      charCode,\n      glyphId\n    } = lookupCmap(this.cmap, unicode);\n    return this.compiledGlyphs[glyphId] !== undefined && this.compiledCharCodeToGlyphId[charCode] !== undefined;\n  }\n\n}\n\nclass TrueTypeCompiled extends CompiledFont {\n  constructor(glyphs, cmap, fontMatrix) {\n    super(fontMatrix || [0.000488, 0, 0, 0.000488, 0, 0]);\n    this.glyphs = glyphs;\n    this.cmap = cmap;\n  }\n\n  compileGlyphImpl(code, cmds) {\n    compileGlyf(code, cmds, this);\n  }\n\n}\n\nclass Type2Compiled extends CompiledFont {\n  constructor(cffInfo, cmap, fontMatrix, glyphNameMap) {\n    super(fontMatrix || [0.001, 0, 0, 0.001, 0, 0]);\n    this.glyphs = cffInfo.glyphs;\n    this.gsubrs = cffInfo.gsubrs || [];\n    this.subrs = cffInfo.subrs || [];\n    this.cmap = cmap;\n    this.glyphNameMap = glyphNameMap || (0, _glyphlist.getGlyphsUnicode)();\n    this.gsubrsBias = getSubroutineBias(this.gsubrs);\n    this.subrsBias = getSubroutineBias(this.subrs);\n    this.isCFFCIDFont = cffInfo.isCFFCIDFont;\n    this.fdSelect = cffInfo.fdSelect;\n    this.fdArray = cffInfo.fdArray;\n  }\n\n  compileGlyphImpl(code, cmds, glyphId) {\n    compileCharString(code, cmds, this, glyphId);\n  }\n\n}\n\nclass FontRendererFactory {\n  static create(font, seacAnalysisEnabled) {\n    const data = new Uint8Array(font.data);\n    let cmap, glyf, loca, cff, indexToLocFormat, unitsPerEm;\n    const numTables = getUint16(data, 4);\n\n    for (let i = 0, p = 12; i < numTables; i++, p += 16) {\n      const tag = (0, _util.bytesToString)(data.subarray(p, p + 4));\n      const offset = getUint32(data, p + 8);\n      const length = getUint32(data, p + 12);\n\n      switch (tag) {\n        case \"cmap\":\n          cmap = parseCmap(data, offset, offset + length);\n          break;\n\n        case \"glyf\":\n          glyf = data.subarray(offset, offset + length);\n          break;\n\n        case \"loca\":\n          loca = data.subarray(offset, offset + length);\n          break;\n\n        case \"head\":\n          unitsPerEm = getUint16(data, offset + 18);\n          indexToLocFormat = getUint16(data, offset + 50);\n          break;\n\n        case \"CFF \":\n          cff = parseCff(data, offset, offset + length, seacAnalysisEnabled);\n          break;\n      }\n    }\n\n    if (glyf) {\n      const fontMatrix = !unitsPerEm ? font.fontMatrix : [1 / unitsPerEm, 0, 0, 1 / unitsPerEm, 0, 0];\n      return new TrueTypeCompiled(parseGlyfTable(glyf, loca, indexToLocFormat), cmap, fontMatrix);\n    }\n\n    return new Type2Compiled(cff, cmap, font.fontMatrix, font.glyphNameMap);\n  }\n\n}\n\nexports.FontRendererFactory = FontRendererFactory;\n\n/***/ }),\n/* 51 */\n/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {\n\n\n\nObject.defineProperty(exports, \"__esModule\", ({\n  value: true\n}));\nexports.getMetrics = exports.getFontBasicMetrics = void 0;\n\nvar _core_utils = __w_pdfjs_require__(8);\n\nconst getMetrics = (0, _core_utils.getLookupTableFactory)(function (t) {\n  t.Courier = 600;\n  t[\"Courier-Bold\"] = 600;\n  t[\"Courier-BoldOblique\"] = 600;\n  t[\"Courier-Oblique\"] = 600;\n  t.Helvetica = (0, _core_utils.getLookupTableFactory)(function (t) {\n    t.space = 278;\n    t.exclam = 278;\n    t.quotedbl = 355;\n    t.numbersign = 556;\n    t.dollar = 556;\n    t.percent = 889;\n    t.ampersand = 667;\n    t.quoteright = 222;\n    t.parenleft = 333;\n    t.parenright = 333;\n    t.asterisk = 389;\n    t.plus = 584;\n    t.comma = 278;\n    t.hyphen = 333;\n    t.period = 278;\n    t.slash = 278;\n    t.zero = 556;\n    t.one = 556;\n    t.two = 556;\n    t.three = 556;\n    t.four = 556;\n    t.five = 556;\n    t.six = 556;\n    t.seven = 556;\n    t.eight = 556;\n    t.nine = 556;\n    t.colon = 278;\n    t.semicolon = 278;\n    t.less = 584;\n    t.equal = 584;\n    t.greater = 584;\n    t.question = 556;\n    t.at = 1015;\n    t.A = 667;\n    t.B = 667;\n    t.C = 722;\n    t.D = 722;\n    t.E = 667;\n    t.F = 611;\n    t.G = 778;\n    t.H = 722;\n    t.I = 278;\n    t.J = 500;\n    t.K = 667;\n    t.L = 556;\n    t.M = 833;\n    t.N = 722;\n    t.O = 778;\n    t.P = 667;\n    t.Q = 778;\n    t.R = 722;\n    t.S = 667;\n    t.T = 611;\n    t.U = 722;\n    t.V = 667;\n    t.W = 944;\n    t.X = 667;\n    t.Y = 667;\n    t.Z = 611;\n    t.bracketleft = 278;\n    t.backslash = 278;\n    t.bracketright = 278;\n    t.asciicircum = 469;\n    t.underscore = 556;\n    t.quoteleft = 222;\n    t.a = 556;\n    t.b = 556;\n    t.c = 500;\n    t.d = 556;\n    t.e = 556;\n    t.f = 278;\n    t.g = 556;\n    t.h = 556;\n    t.i = 222;\n    t.j = 222;\n    t.k = 500;\n    t.l = 222;\n    t.m = 833;\n    t.n = 556;\n    t.o = 556;\n    t.p = 556;\n    t.q = 556;\n    t.r = 333;\n    t.s = 500;\n    t.t = 278;\n    t.u = 556;\n    t.v = 500;\n    t.w = 722;\n    t.x = 500;\n    t.y = 500;\n    t.z = 500;\n    t.braceleft = 334;\n    t.bar = 260;\n    t.braceright = 334;\n    t.asciitilde = 584;\n    t.exclamdown = 333;\n    t.cent = 556;\n    t.sterling = 556;\n    t.fraction = 167;\n    t.yen = 556;\n    t.florin = 556;\n    t.section = 556;\n    t.currency = 556;\n    t.quotesingle = 191;\n    t.quotedblleft = 333;\n    t.guillemotleft = 556;\n    t.guilsinglleft = 333;\n    t.guilsinglright = 333;\n    t.fi = 500;\n    t.fl = 500;\n    t.endash = 556;\n    t.dagger = 556;\n    t.daggerdbl = 556;\n    t.periodcentered = 278;\n    t.paragraph = 537;\n    t.bullet = 350;\n    t.quotesinglbase = 222;\n    t.quotedblbase = 333;\n    t.quotedblright = 333;\n    t.guillemotright = 556;\n    t.ellipsis = 1000;\n    t.perthousand = 1000;\n    t.questiondown = 611;\n    t.grave = 333;\n    t.acute = 333;\n    t.circumflex = 333;\n    t.tilde = 333;\n    t.macron = 333;\n    t.breve = 333;\n    t.dotaccent = 333;\n    t.dieresis = 333;\n    t.ring = 333;\n    t.cedilla = 333;\n    t.hungarumlaut = 333;\n    t.ogonek = 333;\n    t.caron = 333;\n    t.emdash = 1000;\n    t.AE = 1000;\n    t.ordfeminine = 370;\n    t.Lslash = 556;\n    t.Oslash = 778;\n    t.OE = 1000;\n    t.ordmasculine = 365;\n    t.ae = 889;\n    t.dotlessi = 278;\n    t.lslash = 222;\n    t.oslash = 611;\n    t.oe = 944;\n    t.germandbls = 611;\n    t.Idieresis = 278;\n    t.eacute = 556;\n    t.abreve = 556;\n    t.uhungarumlaut = 556;\n    t.ecaron = 556;\n    t.Ydieresis = 667;\n    t.divide = 584;\n    t.Yacute = 667;\n    t.Acircumflex = 667;\n    t.aacute = 556;\n    t.Ucircumflex = 722;\n    t.yacute = 500;\n    t.scommaaccent = 500;\n    t.ecircumflex = 556;\n    t.Uring = 722;\n    t.Udieresis = 722;\n    t.aogonek = 556;\n    t.Uacute = 722;\n    t.uogonek = 556;\n    t.Edieresis = 667;\n    t.Dcroat = 722;\n    t.commaaccent = 250;\n    t.copyright = 737;\n    t.Emacron = 667;\n    t.ccaron = 500;\n    t.aring = 556;\n    t.Ncommaaccent = 722;\n    t.lacute = 222;\n    t.agrave = 556;\n    t.Tcommaaccent = 611;\n    t.Cacute = 722;\n    t.atilde = 556;\n    t.Edotaccent = 667;\n    t.scaron = 500;\n    t.scedilla = 500;\n    t.iacute = 278;\n    t.lozenge = 471;\n    t.Rcaron = 722;\n    t.Gcommaaccent = 778;\n    t.ucircumflex = 556;\n    t.acircumflex = 556;\n    t.Amacron = 667;\n    t.rcaron = 333;\n    t.ccedilla = 500;\n    t.Zdotaccent = 611;\n    t.Thorn = 667;\n    t.Omacron = 778;\n    t.Racute = 722;\n    t.Sacute = 667;\n    t.dcaron = 643;\n    t.Umacron = 722;\n    t.uring = 556;\n    t.threesuperior = 333;\n    t.Ograve = 778;\n    t.Agrave = 667;\n    t.Abreve = 667;\n    t.multiply = 584;\n    t.uacute = 556;\n    t.Tcaron = 611;\n    t.partialdiff = 476;\n    t.ydieresis = 500;\n    t.Nacute = 722;\n    t.icircumflex = 278;\n    t.Ecircumflex = 667;\n    t.adieresis = 556;\n    t.edieresis = 556;\n    t.cacute = 500;\n    t.nacute = 556;\n    t.umacron = 556;\n    t.Ncaron = 722;\n    t.Iacute = 278;\n    t.plusminus = 584;\n    t.brokenbar = 260;\n    t.registered = 737;\n    t.Gbreve = 778;\n    t.Idotaccent = 278;\n    t.summation = 600;\n    t.Egrave = 667;\n    t.racute = 333;\n    t.omacron = 556;\n    t.Zacute = 611;\n    t.Zcaron = 611;\n    t.greaterequal = 549;\n    t.Eth = 722;\n    t.Ccedilla = 722;\n    t.lcommaaccent = 222;\n    t.tcaron = 317;\n    t.eogonek = 556;\n    t.Uogonek = 722;\n    t.Aacute = 667;\n    t.Adieresis = 667;\n    t.egrave = 556;\n    t.zacute = 500;\n    t.iogonek = 222;\n    t.Oacute = 778;\n    t.oacute = 556;\n    t.amacron = 556;\n    t.sacute = 500;\n    t.idieresis = 278;\n    t.Ocircumflex = 778;\n    t.Ugrave = 722;\n    t.Delta = 612;\n    t.thorn = 556;\n    t.twosuperior = 333;\n    t.Odieresis = 778;\n    t.mu = 556;\n    t.igrave = 278;\n    t.ohungarumlaut = 556;\n    t.Eogonek = 667;\n    t.dcroat = 556;\n    t.threequarters = 834;\n    t.Scedilla = 667;\n    t.lcaron = 299;\n    t.Kcommaaccent = 667;\n    t.Lacute = 556;\n    t.trademark = 1000;\n    t.edotaccent = 556;\n    t.Igrave = 278;\n    t.Imacron = 278;\n    t.Lcaron = 556;\n    t.onehalf = 834;\n    t.lessequal = 549;\n    t.ocircumflex = 556;\n    t.ntilde = 556;\n    t.Uhungarumlaut = 722;\n    t.Eacute = 667;\n    t.emacron = 556;\n    t.gbreve = 556;\n    t.onequarter = 834;\n    t.Scaron = 667;\n    t.Scommaaccent = 667;\n    t.Ohungarumlaut = 778;\n    t.degree = 400;\n    t.ograve = 556;\n    t.Ccaron = 722;\n    t.ugrave = 556;\n    t.radical = 453;\n    t.Dcaron = 722;\n    t.rcommaaccent = 333;\n    t.Ntilde = 722;\n    t.otilde = 556;\n    t.Rcommaaccent = 722;\n    t.Lcommaaccent = 556;\n    t.Atilde = 667;\n    t.Aogonek = 667;\n    t.Aring = 667;\n    t.Otilde = 778;\n    t.zdotaccent = 500;\n    t.Ecaron = 667;\n    t.Iogonek = 278;\n    t.kcommaaccent = 500;\n    t.minus = 584;\n    t.Icircumflex = 278;\n    t.ncaron = 556;\n    t.tcommaaccent = 278;\n    t.logicalnot = 584;\n    t.odieresis = 556;\n    t.udieresis = 556;\n    t.notequal = 549;\n    t.gcommaaccent = 556;\n    t.eth = 556;\n    t.zcaron = 500;\n    t.ncommaaccent = 556;\n    t.onesuperior = 333;\n    t.imacron = 278;\n    t.Euro = 556;\n  });\n  t[\"Helvetica-Bold\"] = (0, _core_utils.getLookupTableFactory)(function (t) {\n    t.space = 278;\n    t.exclam = 333;\n    t.quotedbl = 474;\n    t.numbersign = 556;\n    t.dollar = 556;\n    t.percent = 889;\n    t.ampersand = 722;\n    t.quoteright = 278;\n    t.parenleft = 333;\n    t.parenright = 333;\n    t.asterisk = 389;\n    t.plus = 584;\n    t.comma = 278;\n    t.hyphen = 333;\n    t.period = 278;\n    t.slash = 278;\n    t.zero = 556;\n    t.one = 556;\n    t.two = 556;\n    t.three = 556;\n    t.four = 556;\n    t.five = 556;\n    t.six = 556;\n    t.seven = 556;\n    t.eight = 556;\n    t.nine = 556;\n    t.colon = 333;\n    t.semicolon = 333;\n    t.less = 584;\n    t.equal = 584;\n    t.greater = 584;\n    t.question = 611;\n    t.at = 975;\n    t.A = 722;\n    t.B = 722;\n    t.C = 722;\n    t.D = 722;\n    t.E = 667;\n    t.F = 611;\n    t.G = 778;\n    t.H = 722;\n    t.I = 278;\n    t.J = 556;\n    t.K = 722;\n    t.L = 611;\n    t.M = 833;\n    t.N = 722;\n    t.O = 778;\n    t.P = 667;\n    t.Q = 778;\n    t.R = 722;\n    t.S = 667;\n    t.T = 611;\n    t.U = 722;\n    t.V = 667;\n    t.W = 944;\n    t.X = 667;\n    t.Y = 667;\n    t.Z = 611;\n    t.bracketleft = 333;\n    t.backslash = 278;\n    t.bracketright = 333;\n    t.asciicircum = 584;\n    t.underscore = 556;\n    t.quoteleft = 278;\n    t.a = 556;\n    t.b = 611;\n    t.c = 556;\n    t.d = 611;\n    t.e = 556;\n    t.f = 333;\n    t.g = 611;\n    t.h = 611;\n    t.i = 278;\n    t.j = 278;\n    t.k = 556;\n    t.l = 278;\n    t.m = 889;\n    t.n = 611;\n    t.o = 611;\n    t.p = 611;\n    t.q = 611;\n    t.r = 389;\n    t.s = 556;\n    t.t = 333;\n    t.u = 611;\n    t.v = 556;\n    t.w = 778;\n    t.x = 556;\n    t.y = 556;\n    t.z = 500;\n    t.braceleft = 389;\n    t.bar = 280;\n    t.braceright = 389;\n    t.asciitilde = 584;\n    t.exclamdown = 333;\n    t.cent = 556;\n    t.sterling = 556;\n    t.fraction = 167;\n    t.yen = 556;\n    t.florin = 556;\n    t.section = 556;\n    t.currency = 556;\n    t.quotesingle = 238;\n    t.quotedblleft = 500;\n    t.guillemotleft = 556;\n    t.guilsinglleft = 333;\n    t.guilsinglright = 333;\n    t.fi = 611;\n    t.fl = 611;\n    t.endash = 556;\n    t.dagger = 556;\n    t.daggerdbl = 556;\n    t.periodcentered = 278;\n    t.paragraph = 556;\n    t.bullet = 350;\n    t.quotesinglbase = 278;\n    t.quotedblbase = 500;\n    t.quotedblright = 500;\n    t.guillemotright = 556;\n    t.ellipsis = 1000;\n    t.perthousand = 1000;\n    t.questiondown = 611;\n    t.grave = 333;\n    t.acute = 333;\n    t.circumflex = 333;\n    t.tilde = 333;\n    t.macron = 333;\n    t.breve = 333;\n    t.dotaccent = 333;\n    t.dieresis = 333;\n    t.ring = 333;\n    t.cedilla = 333;\n    t.hungarumlaut = 333;\n    t.ogonek = 333;\n    t.caron = 333;\n    t.emdash = 1000;\n    t.AE = 1000;\n    t.ordfeminine = 370;\n    t.Lslash = 611;\n    t.Oslash = 778;\n    t.OE = 1000;\n    t.ordmasculine = 365;\n    t.ae = 889;\n    t.dotlessi = 278;\n    t.lslash = 278;\n    t.oslash = 611;\n    t.oe = 944;\n    t.germandbls = 611;\n    t.Idieresis = 278;\n    t.eacute = 556;\n    t.abreve = 556;\n    t.uhungarumlaut = 611;\n    t.ecaron = 556;\n    t.Ydieresis = 667;\n    t.divide = 584;\n    t.Yacute = 667;\n    t.Acircumflex = 722;\n    t.aacute = 556;\n    t.Ucircumflex = 722;\n    t.yacute = 556;\n    t.scommaaccent = 556;\n    t.ecircumflex = 556;\n    t.Uring = 722;\n    t.Udieresis = 722;\n    t.aogonek = 556;\n    t.Uacute = 722;\n    t.uogonek = 611;\n    t.Edieresis = 667;\n    t.Dcroat = 722;\n    t.commaaccent = 250;\n    t.copyright = 737;\n    t.Emacron = 667;\n    t.ccaron = 556;\n    t.aring = 556;\n    t.Ncommaaccent = 722;\n    t.lacute = 278;\n    t.agrave = 556;\n    t.Tcommaaccent = 611;\n    t.Cacute = 722;\n    t.atilde = 556;\n    t.Edotaccent = 667;\n    t.scaron = 556;\n    t.scedilla = 556;\n    t.iacute = 278;\n    t.lozenge = 494;\n    t.Rcaron = 722;\n    t.Gcommaaccent = 778;\n    t.ucircumflex = 611;\n    t.acircumflex = 556;\n    t.Amacron = 722;\n    t.rcaron = 389;\n    t.ccedilla = 556;\n    t.Zdotaccent = 611;\n    t.Thorn = 667;\n    t.Omacron = 778;\n    t.Racute = 722;\n    t.Sacute = 667;\n    t.dcaron = 743;\n    t.Umacron = 722;\n    t.uring = 611;\n    t.threesuperior = 333;\n    t.Ograve = 778;\n    t.Agrave = 722;\n    t.Abreve = 722;\n    t.multiply = 584;\n    t.uacute = 611;\n    t.Tcaron = 611;\n    t.partialdiff = 494;\n    t.ydieresis = 556;\n    t.Nacute = 722;\n    t.icircumflex = 278;\n    t.Ecircumflex = 667;\n    t.adieresis = 556;\n    t.edieresis = 556;\n    t.cacute = 556;\n    t.nacute = 611;\n    t.umacron = 611;\n    t.Ncaron = 722;\n    t.Iacute = 278;\n    t.plusminus = 584;\n    t.brokenbar = 280;\n    t.registered = 737;\n    t.Gbreve = 778;\n    t.Idotaccent = 278;\n    t.summation = 600;\n    t.Egrave = 667;\n    t.racute = 389;\n    t.omacron = 611;\n    t.Zacute = 611;\n    t.Zcaron = 611;\n    t.greaterequal = 549;\n    t.Eth = 722;\n    t.Ccedilla = 722;\n    t.lcommaaccent = 278;\n    t.tcaron = 389;\n    t.eogonek = 556;\n    t.Uogonek = 722;\n    t.Aacute = 722;\n    t.Adieresis = 722;\n    t.egrave = 556;\n    t.zacute = 500;\n    t.iogonek = 278;\n    t.Oacute = 778;\n    t.oacute = 611;\n    t.amacron = 556;\n    t.sacute = 556;\n    t.idieresis = 278;\n    t.Ocircumflex = 778;\n    t.Ugrave = 722;\n    t.Delta = 612;\n    t.thorn = 611;\n    t.twosuperior = 333;\n    t.Odieresis = 778;\n    t.mu = 611;\n    t.igrave = 278;\n    t.ohungarumlaut = 611;\n    t.Eogonek = 667;\n    t.dcroat = 611;\n    t.threequarters = 834;\n    t.Scedilla = 667;\n    t.lcaron = 400;\n    t.Kcommaaccent = 722;\n    t.Lacute = 611;\n    t.trademark = 1000;\n    t.edotaccent = 556;\n    t.Igrave = 278;\n    t.Imacron = 278;\n    t.Lcaron = 611;\n    t.onehalf = 834;\n    t.lessequal = 549;\n    t.ocircumflex = 611;\n    t.ntilde = 611;\n    t.Uhungarumlaut = 722;\n    t.Eacute = 667;\n    t.emacron = 556;\n    t.gbreve = 611;\n    t.onequarter = 834;\n    t.Scaron = 667;\n    t.Scommaaccent = 667;\n    t.Ohungarumlaut = 778;\n    t.degree = 400;\n    t.ograve = 611;\n    t.Ccaron = 722;\n    t.ugrave = 611;\n    t.radical = 549;\n    t.Dcaron = 722;\n    t.rcommaaccent = 389;\n    t.Ntilde = 722;\n    t.otilde = 611;\n    t.Rcommaaccent = 722;\n    t.Lcommaaccent = 611;\n    t.Atilde = 722;\n    t.Aogonek = 722;\n    t.Aring = 722;\n    t.Otilde = 778;\n    t.zdotaccent = 500;\n    t.Ecaron = 667;\n    t.Iogonek = 278;\n    t.kcommaaccent = 556;\n    t.minus = 584;\n    t.Icircumflex = 278;\n    t.ncaron = 611;\n    t.tcommaaccent = 333;\n    t.logicalnot = 584;\n    t.odieresis = 611;\n    t.udieresis = 611;\n    t.notequal = 549;\n    t.gcommaaccent = 611;\n    t.eth = 611;\n    t.zcaron = 500;\n    t.ncommaaccent = 611;\n    t.onesuperior = 333;\n    t.imacron = 278;\n    t.Euro = 556;\n  });\n  t[\"Helvetica-BoldOblique\"] = (0, _core_utils.getLookupTableFactory)(function (t) {\n    t.space = 278;\n    t.exclam = 333;\n    t.quotedbl = 474;\n    t.numbersign = 556;\n    t.dollar = 556;\n    t.percent = 889;\n    t.ampersand = 722;\n    t.quoteright = 278;\n    t.parenleft = 333;\n    t.parenright = 333;\n    t.asterisk = 389;\n    t.plus = 584;\n    t.comma = 278;\n    t.hyphen = 333;\n    t.period = 278;\n    t.slash = 278;\n    t.zero = 556;\n    t.one = 556;\n    t.two = 556;\n    t.three = 556;\n    t.four = 556;\n    t.five = 556;\n    t.six = 556;\n    t.seven = 556;\n    t.eight = 556;\n    t.nine = 556;\n    t.colon = 333;\n    t.semicolon = 333;\n    t.less = 584;\n    t.equal = 584;\n    t.greater = 584;\n    t.question = 611;\n    t.at = 975;\n    t.A = 722;\n    t.B = 722;\n    t.C = 722;\n    t.D = 722;\n    t.E = 667;\n    t.F = 611;\n    t.G = 778;\n    t.H = 722;\n    t.I = 278;\n    t.J = 556;\n    t.K = 722;\n    t.L = 611;\n    t.M = 833;\n    t.N = 722;\n    t.O = 778;\n    t.P = 667;\n    t.Q = 778;\n    t.R = 722;\n    t.S = 667;\n    t.T = 611;\n    t.U = 722;\n    t.V = 667;\n    t.W = 944;\n    t.X = 667;\n    t.Y = 667;\n    t.Z = 611;\n    t.bracketleft = 333;\n    t.backslash = 278;\n    t.bracketright = 333;\n    t.asciicircum = 584;\n    t.underscore = 556;\n    t.quoteleft = 278;\n    t.a = 556;\n    t.b = 611;\n    t.c = 556;\n    t.d = 611;\n    t.e = 556;\n    t.f = 333;\n    t.g = 611;\n    t.h = 611;\n    t.i = 278;\n    t.j = 278;\n    t.k = 556;\n    t.l = 278;\n    t.m = 889;\n    t.n = 611;\n    t.o = 611;\n    t.p = 611;\n    t.q = 611;\n    t.r = 389;\n    t.s = 556;\n    t.t = 333;\n    t.u = 611;\n    t.v = 556;\n    t.w = 778;\n    t.x = 556;\n    t.y = 556;\n    t.z = 500;\n    t.braceleft = 389;\n    t.bar = 280;\n    t.braceright = 389;\n    t.asciitilde = 584;\n    t.exclamdown = 333;\n    t.cent = 556;\n    t.sterling = 556;\n    t.fraction = 167;\n    t.yen = 556;\n    t.florin = 556;\n    t.section = 556;\n    t.currency = 556;\n    t.quotesingle = 238;\n    t.quotedblleft = 500;\n    t.guillemotleft = 556;\n    t.guilsinglleft = 333;\n    t.guilsinglright = 333;\n    t.fi = 611;\n    t.fl = 611;\n    t.endash = 556;\n    t.dagger = 556;\n    t.daggerdbl = 556;\n    t.periodcentered = 278;\n    t.paragraph = 556;\n    t.bullet = 350;\n    t.quotesinglbase = 278;\n    t.quotedblbase = 500;\n    t.quotedblright = 500;\n    t.guillemotright = 556;\n    t.ellipsis = 1000;\n    t.perthousand = 1000;\n    t.questiondown = 611;\n    t.grave = 333;\n    t.acute = 333;\n    t.circumflex = 333;\n    t.tilde = 333;\n    t.macron = 333;\n    t.breve = 333;\n    t.dotaccent = 333;\n    t.dieresis = 333;\n    t.ring = 333;\n    t.cedilla = 333;\n    t.hungarumlaut = 333;\n    t.ogonek = 333;\n    t.caron = 333;\n    t.emdash = 1000;\n    t.AE = 1000;\n    t.ordfeminine = 370;\n    t.Lslash = 611;\n    t.Oslash = 778;\n    t.OE = 1000;\n    t.ordmasculine = 365;\n    t.ae = 889;\n    t.dotlessi = 278;\n    t.lslash = 278;\n    t.oslash = 611;\n    t.oe = 944;\n    t.germandbls = 611;\n    t.Idieresis = 278;\n    t.eacute = 556;\n    t.abreve = 556;\n    t.uhungarumlaut = 611;\n    t.ecaron = 556;\n    t.Ydieresis = 667;\n    t.divide = 584;\n    t.Yacute = 667;\n    t.Acircumflex = 722;\n    t.aacute = 556;\n    t.Ucircumflex = 722;\n    t.yacute = 556;\n    t.scommaaccent = 556;\n    t.ecircumflex = 556;\n    t.Uring = 722;\n    t.Udieresis = 722;\n    t.aogonek = 556;\n    t.Uacute = 722;\n    t.uogonek = 611;\n    t.Edieresis = 667;\n    t.Dcroat = 722;\n    t.commaaccent = 250;\n    t.copyright = 737;\n    t.Emacron = 667;\n    t.ccaron = 556;\n    t.aring = 556;\n    t.Ncommaaccent = 722;\n    t.lacute = 278;\n    t.agrave = 556;\n    t.Tcommaaccent = 611;\n    t.Cacute = 722;\n    t.atilde = 556;\n    t.Edotaccent = 667;\n    t.scaron = 556;\n    t.scedilla = 556;\n    t.iacute = 278;\n    t.lozenge = 494;\n    t.Rcaron = 722;\n    t.Gcommaaccent = 778;\n    t.ucircumflex = 611;\n    t.acircumflex = 556;\n    t.Amacron = 722;\n    t.rcaron = 389;\n    t.ccedilla = 556;\n    t.Zdotaccent = 611;\n    t.Thorn = 667;\n    t.Omacron = 778;\n    t.Racute = 722;\n    t.Sacute = 667;\n    t.dcaron = 743;\n    t.Umacron = 722;\n    t.uring = 611;\n    t.threesuperior = 333;\n    t.Ograve = 778;\n    t.Agrave = 722;\n    t.Abreve = 722;\n    t.multiply = 584;\n    t.uacute = 611;\n    t.Tcaron = 611;\n    t.partialdiff = 494;\n    t.ydieresis = 556;\n    t.Nacute = 722;\n    t.icircumflex = 278;\n    t.Ecircumflex = 667;\n    t.adieresis = 556;\n    t.edieresis = 556;\n    t.cacute = 556;\n    t.nacute = 611;\n    t.umacron = 611;\n    t.Ncaron = 722;\n    t.Iacute = 278;\n    t.plusminus = 584;\n    t.brokenbar = 280;\n    t.registered = 737;\n    t.Gbreve = 778;\n    t.Idotaccent = 278;\n    t.summation = 600;\n    t.Egrave = 667;\n    t.racute = 389;\n    t.omacron = 611;\n    t.Zacute = 611;\n    t.Zcaron = 611;\n    t.greaterequal = 549;\n    t.Eth = 722;\n    t.Ccedilla = 722;\n    t.lcommaaccent = 278;\n    t.tcaron = 389;\n    t.eogonek = 556;\n    t.Uogonek = 722;\n    t.Aacute = 722;\n    t.Adieresis = 722;\n    t.egrave = 556;\n    t.zacute = 500;\n    t.iogonek = 278;\n    t.Oacute = 778;\n    t.oacute = 611;\n    t.amacron = 556;\n    t.sacute = 556;\n    t.idieresis = 278;\n    t.Ocircumflex = 778;\n    t.Ugrave = 722;\n    t.Delta = 612;\n    t.thorn = 611;\n    t.twosuperior = 333;\n    t.Odieresis = 778;\n    t.mu = 611;\n    t.igrave = 278;\n    t.ohungarumlaut = 611;\n    t.Eogonek = 667;\n    t.dcroat = 611;\n    t.threequarters = 834;\n    t.Scedilla = 667;\n    t.lcaron = 400;\n    t.Kcommaaccent = 722;\n    t.Lacute = 611;\n    t.trademark = 1000;\n    t.edotaccent = 556;\n    t.Igrave = 278;\n    t.Imacron = 278;\n    t.Lcaron = 611;\n    t.onehalf = 834;\n    t.lessequal = 549;\n    t.ocircumflex = 611;\n    t.ntilde = 611;\n    t.Uhungarumlaut = 722;\n    t.Eacute = 667;\n    t.emacron = 556;\n    t.gbreve = 611;\n    t.onequarter = 834;\n    t.Scaron = 667;\n    t.Scommaaccent = 667;\n    t.Ohungarumlaut = 778;\n    t.degree = 400;\n    t.ograve = 611;\n    t.Ccaron = 722;\n    t.ugrave = 611;\n    t.radical = 549;\n    t.Dcaron = 722;\n    t.rcommaaccent = 389;\n    t.Ntilde = 722;\n    t.otilde = 611;\n    t.Rcommaaccent = 722;\n    t.Lcommaaccent = 611;\n    t.Atilde = 722;\n    t.Aogonek = 722;\n    t.Aring = 722;\n    t.Otilde = 778;\n    t.zdotaccent = 500;\n    t.Ecaron = 667;\n    t.Iogonek = 278;\n    t.kcommaaccent = 556;\n    t.minus = 584;\n    t.Icircumflex = 278;\n    t.ncaron = 611;\n    t.tcommaaccent = 333;\n    t.logicalnot = 584;\n    t.odieresis = 611;\n    t.udieresis = 611;\n    t.notequal = 549;\n    t.gcommaaccent = 611;\n    t.eth = 611;\n    t.zcaron = 500;\n    t.ncommaaccent = 611;\n    t.onesuperior = 333;\n    t.imacron = 278;\n    t.Euro = 556;\n  });\n  t[\"Helvetica-Oblique\"] = (0, _core_utils.getLookupTableFactory)(function (t) {\n    t.space = 278;\n    t.exclam = 278;\n    t.quotedbl = 355;\n    t.numbersign = 556;\n    t.dollar = 556;\n    t.percent = 889;\n    t.ampersand = 667;\n    t.quoteright = 222;\n    t.parenleft = 333;\n    t.parenright = 333;\n    t.asterisk = 389;\n    t.plus = 584;\n    t.comma = 278;\n    t.hyphen = 333;\n    t.period = 278;\n    t.slash = 278;\n    t.zero = 556;\n    t.one = 556;\n    t.two = 556;\n    t.three = 556;\n    t.four = 556;\n    t.five = 556;\n    t.six = 556;\n    t.seven = 556;\n    t.eight = 556;\n    t.nine = 556;\n    t.colon = 278;\n    t.semicolon = 278;\n    t.less = 584;\n    t.equal = 584;\n    t.greater = 584;\n    t.question = 556;\n    t.at = 1015;\n    t.A = 667;\n    t.B = 667;\n    t.C = 722;\n    t.D = 722;\n    t.E = 667;\n    t.F = 611;\n    t.G = 778;\n    t.H = 722;\n    t.I = 278;\n    t.J = 500;\n    t.K = 667;\n    t.L = 556;\n    t.M = 833;\n    t.N = 722;\n    t.O = 778;\n    t.P = 667;\n    t.Q = 778;\n    t.R = 722;\n    t.S = 667;\n    t.T = 611;\n    t.U = 722;\n    t.V = 667;\n    t.W = 944;\n    t.X = 667;\n    t.Y = 667;\n    t.Z = 611;\n    t.bracketleft = 278;\n    t.backslash = 278;\n    t.bracketright = 278;\n    t.asciicircum = 469;\n    t.underscore = 556;\n    t.quoteleft = 222;\n    t.a = 556;\n    t.b = 556;\n    t.c = 500;\n    t.d = 556;\n    t.e = 556;\n    t.f = 278;\n    t.g = 556;\n    t.h = 556;\n    t.i = 222;\n    t.j = 222;\n    t.k = 500;\n    t.l = 222;\n    t.m = 833;\n    t.n = 556;\n    t.o = 556;\n    t.p = 556;\n    t.q = 556;\n    t.r = 333;\n    t.s = 500;\n    t.t = 278;\n    t.u = 556;\n    t.v = 500;\n    t.w = 722;\n    t.x = 500;\n    t.y = 500;\n    t.z = 500;\n    t.braceleft = 334;\n    t.bar = 260;\n    t.braceright = 334;\n    t.asciitilde = 584;\n    t.exclamdown = 333;\n    t.cent = 556;\n    t.sterling = 556;\n    t.fraction = 167;\n    t.yen = 556;\n    t.florin = 556;\n    t.section = 556;\n    t.currency = 556;\n    t.quotesingle = 191;\n    t.quotedblleft = 333;\n    t.guillemotleft = 556;\n    t.guilsinglleft = 333;\n    t.guilsinglright = 333;\n    t.fi = 500;\n    t.fl = 500;\n    t.endash = 556;\n    t.dagger = 556;\n    t.daggerdbl = 556;\n    t.periodcentered = 278;\n    t.paragraph = 537;\n    t.bullet = 350;\n    t.quotesinglbase = 222;\n    t.quotedblbase = 333;\n    t.quotedblright = 333;\n    t.guillemotright = 556;\n    t.ellipsis = 1000;\n    t.perthousand = 1000;\n    t.questiondown = 611;\n    t.grave = 333;\n    t.acute = 333;\n    t.circumflex = 333;\n    t.tilde = 333;\n    t.macron = 333;\n    t.breve = 333;\n    t.dotaccent = 333;\n    t.dieresis = 333;\n    t.ring = 333;\n    t.cedilla = 333;\n    t.hungarumlaut = 333;\n    t.ogonek = 333;\n    t.caron = 333;\n    t.emdash = 1000;\n    t.AE = 1000;\n    t.ordfeminine = 370;\n    t.Lslash = 556;\n    t.Oslash = 778;\n    t.OE = 1000;\n    t.ordmasculine = 365;\n    t.ae = 889;\n    t.dotlessi = 278;\n    t.lslash = 222;\n    t.oslash = 611;\n    t.oe = 944;\n    t.germandbls = 611;\n    t.Idieresis = 278;\n    t.eacute = 556;\n    t.abreve = 556;\n    t.uhungarumlaut = 556;\n    t.ecaron = 556;\n    t.Ydieresis = 667;\n    t.divide = 584;\n    t.Yacute = 667;\n    t.Acircumflex = 667;\n    t.aacute = 556;\n    t.Ucircumflex = 722;\n    t.yacute = 500;\n    t.scommaaccent = 500;\n    t.ecircumflex = 556;\n    t.Uring = 722;\n    t.Udieresis = 722;\n    t.aogonek = 556;\n    t.Uacute = 722;\n    t.uogonek = 556;\n    t.Edieresis = 667;\n    t.Dcroat = 722;\n    t.commaaccent = 250;\n    t.copyright = 737;\n    t.Emacron = 667;\n    t.ccaron = 500;\n    t.aring = 556;\n    t.Ncommaaccent = 722;\n    t.lacute = 222;\n    t.agrave = 556;\n    t.Tcommaaccent = 611;\n    t.Cacute = 722;\n    t.atilde = 556;\n    t.Edotaccent = 667;\n    t.scaron = 500;\n    t.scedilla = 500;\n    t.iacute = 278;\n    t.lozenge = 471;\n    t.Rcaron = 722;\n    t.Gcommaaccent = 778;\n    t.ucircumflex = 556;\n    t.acircumflex = 556;\n    t.Amacron = 667;\n    t.rcaron = 333;\n    t.ccedilla = 500;\n    t.Zdotaccent = 611;\n    t.Thorn = 667;\n    t.Omacron = 778;\n    t.Racute = 722;\n    t.Sacute = 667;\n    t.dcaron = 643;\n    t.Umacron = 722;\n    t.uring = 556;\n    t.threesuperior = 333;\n    t.Ograve = 778;\n    t.Agrave = 667;\n    t.Abreve = 667;\n    t.multiply = 584;\n    t.uacute = 556;\n    t.Tcaron = 611;\n    t.partialdiff = 476;\n    t.ydieresis = 500;\n    t.Nacute = 722;\n    t.icircumflex = 278;\n    t.Ecircumflex = 667;\n    t.adieresis = 556;\n    t.edieresis = 556;\n    t.cacute = 500;\n    t.nacute = 556;\n    t.umacron = 556;\n    t.Ncaron = 722;\n    t.Iacute = 278;\n    t.plusminus = 584;\n    t.brokenbar = 260;\n    t.registered = 737;\n    t.Gbreve = 778;\n    t.Idotaccent = 278;\n    t.summation = 600;\n    t.Egrave = 667;\n    t.racute = 333;\n    t.omacron = 556;\n    t.Zacute = 611;\n    t.Zcaron = 611;\n    t.greaterequal = 549;\n    t.Eth = 722;\n    t.Ccedilla = 722;\n    t.lcommaaccent = 222;\n    t.tcaron = 317;\n    t.eogonek = 556;\n    t.Uogonek = 722;\n    t.Aacute = 667;\n    t.Adieresis = 667;\n    t.egrave = 556;\n    t.zacute = 500;\n    t.iogonek = 222;\n    t.Oacute = 778;\n    t.oacute = 556;\n    t.amacron = 556;\n    t.sacute = 500;\n    t.idieresis = 278;\n    t.Ocircumflex = 778;\n    t.Ugrave = 722;\n    t.Delta = 612;\n    t.thorn = 556;\n    t.twosuperior = 333;\n    t.Odieresis = 778;\n    t.mu = 556;\n    t.igrave = 278;\n    t.ohungarumlaut = 556;\n    t.Eogonek = 667;\n    t.dcroat = 556;\n    t.threequarters = 834;\n    t.Scedilla = 667;\n    t.lcaron = 299;\n    t.Kcommaaccent = 667;\n    t.Lacute = 556;\n    t.trademark = 1000;\n    t.edotaccent = 556;\n    t.Igrave = 278;\n    t.Imacron = 278;\n    t.Lcaron = 556;\n    t.onehalf = 834;\n    t.lessequal = 549;\n    t.ocircumflex = 556;\n    t.ntilde = 556;\n    t.Uhungarumlaut = 722;\n    t.Eacute = 667;\n    t.emacron = 556;\n    t.gbreve = 556;\n    t.onequarter = 834;\n    t.Scaron = 667;\n    t.Scommaaccent = 667;\n    t.Ohungarumlaut = 778;\n    t.degree = 400;\n    t.ograve = 556;\n    t.Ccaron = 722;\n    t.ugrave = 556;\n    t.radical = 453;\n    t.Dcaron = 722;\n    t.rcommaaccent = 333;\n    t.Ntilde = 722;\n    t.otilde = 556;\n    t.Rcommaaccent = 722;\n    t.Lcommaaccent = 556;\n    t.Atilde = 667;\n    t.Aogonek = 667;\n    t.Aring = 667;\n    t.Otilde = 778;\n    t.zdotaccent = 500;\n    t.Ecaron = 667;\n    t.Iogonek = 278;\n    t.kcommaaccent = 500;\n    t.minus = 584;\n    t.Icircumflex = 278;\n    t.ncaron = 556;\n    t.tcommaaccent = 278;\n    t.logicalnot = 584;\n    t.odieresis = 556;\n    t.udieresis = 556;\n    t.notequal = 549;\n    t.gcommaaccent = 556;\n    t.eth = 556;\n    t.zcaron = 500;\n    t.ncommaaccent = 556;\n    t.onesuperior = 333;\n    t.imacron = 278;\n    t.Euro = 556;\n  });\n  t.Symbol = (0, _core_utils.getLookupTableFactory)(function (t) {\n    t.space = 250;\n    t.exclam = 333;\n    t.universal = 713;\n    t.numbersign = 500;\n    t.existential = 549;\n    t.percent = 833;\n    t.ampersand = 778;\n    t.suchthat = 439;\n    t.parenleft = 333;\n    t.parenright = 333;\n    t.asteriskmath = 500;\n    t.plus = 549;\n    t.comma = 250;\n    t.minus = 549;\n    t.period = 250;\n    t.slash = 278;\n    t.zero = 500;\n    t.one = 500;\n    t.two = 500;\n    t.three = 500;\n    t.four = 500;\n    t.five = 500;\n    t.six = 500;\n    t.seven = 500;\n    t.eight = 500;\n    t.nine = 500;\n    t.colon = 278;\n    t.semicolon = 278;\n    t.less = 549;\n    t.equal = 549;\n    t.greater = 549;\n    t.question = 444;\n    t.congruent = 549;\n    t.Alpha = 722;\n    t.Beta = 667;\n    t.Chi = 722;\n    t.Delta = 612;\n    t.Epsilon = 611;\n    t.Phi = 763;\n    t.Gamma = 603;\n    t.Eta = 722;\n    t.Iota = 333;\n    t.theta1 = 631;\n    t.Kappa = 722;\n    t.Lambda = 686;\n    t.Mu = 889;\n    t.Nu = 722;\n    t.Omicron = 722;\n    t.Pi = 768;\n    t.Theta = 741;\n    t.Rho = 556;\n    t.Sigma = 592;\n    t.Tau = 611;\n    t.Upsilon = 690;\n    t.sigma1 = 439;\n    t.Omega = 768;\n    t.Xi = 645;\n    t.Psi = 795;\n    t.Zeta = 611;\n    t.bracketleft = 333;\n    t.therefore = 863;\n    t.bracketright = 333;\n    t.perpendicular = 658;\n    t.underscore = 500;\n    t.radicalex = 500;\n    t.alpha = 631;\n    t.beta = 549;\n    t.chi = 549;\n    t.delta = 494;\n    t.epsilon = 439;\n    t.phi = 521;\n    t.gamma = 411;\n    t.eta = 603;\n    t.iota = 329;\n    t.phi1 = 603;\n    t.kappa = 549;\n    t.lambda = 549;\n    t.mu = 576;\n    t.nu = 521;\n    t.omicron = 549;\n    t.pi = 549;\n    t.theta = 521;\n    t.rho = 549;\n    t.sigma = 603;\n    t.tau = 439;\n    t.upsilon = 576;\n    t.omega1 = 713;\n    t.omega = 686;\n    t.xi = 493;\n    t.psi = 686;\n    t.zeta = 494;\n    t.braceleft = 480;\n    t.bar = 200;\n    t.braceright = 480;\n    t.similar = 549;\n    t.Euro = 750;\n    t.Upsilon1 = 620;\n    t.minute = 247;\n    t.lessequal = 549;\n    t.fraction = 167;\n    t.infinity = 713;\n    t.florin = 500;\n    t.club = 753;\n    t.diamond = 753;\n    t.heart = 753;\n    t.spade = 753;\n    t.arrowboth = 1042;\n    t.arrowleft = 987;\n    t.arrowup = 603;\n    t.arrowright = 987;\n    t.arrowdown = 603;\n    t.degree = 400;\n    t.plusminus = 549;\n    t.second = 411;\n    t.greaterequal = 549;\n    t.multiply = 549;\n    t.proportional = 713;\n    t.partialdiff = 494;\n    t.bullet = 460;\n    t.divide = 549;\n    t.notequal = 549;\n    t.equivalence = 549;\n    t.approxequal = 549;\n    t.ellipsis = 1000;\n    t.arrowvertex = 603;\n    t.arrowhorizex = 1000;\n    t.carriagereturn = 658;\n    t.aleph = 823;\n    t.Ifraktur = 686;\n    t.Rfraktur = 795;\n    t.weierstrass = 987;\n    t.circlemultiply = 768;\n    t.circleplus = 768;\n    t.emptyset = 823;\n    t.intersection = 768;\n    t.union = 768;\n    t.propersuperset = 713;\n    t.reflexsuperset = 713;\n    t.notsubset = 713;\n    t.propersubset = 713;\n    t.reflexsubset = 713;\n    t.element = 713;\n    t.notelement = 713;\n    t.angle = 768;\n    t.gradient = 713;\n    t.registerserif = 790;\n    t.copyrightserif = 790;\n    t.trademarkserif = 890;\n    t.product = 823;\n    t.radical = 549;\n    t.dotmath = 250;\n    t.logicalnot = 713;\n    t.logicaland = 603;\n    t.logicalor = 603;\n    t.arrowdblboth = 1042;\n    t.arrowdblleft = 987;\n    t.arrowdblup = 603;\n    t.arrowdblright = 987;\n    t.arrowdbldown = 603;\n    t.lozenge = 494;\n    t.angleleft = 329;\n    t.registersans = 790;\n    t.copyrightsans = 790;\n    t.trademarksans = 786;\n    t.summation = 713;\n    t.parenlefttp = 384;\n    t.parenleftex = 384;\n    t.parenleftbt = 384;\n    t.bracketlefttp = 384;\n    t.bracketleftex = 384;\n    t.bracketleftbt = 384;\n    t.bracelefttp = 494;\n    t.braceleftmid = 494;\n    t.braceleftbt = 494;\n    t.braceex = 494;\n    t.angleright = 329;\n    t.integral = 274;\n    t.integraltp = 686;\n    t.integralex = 686;\n    t.integralbt = 686;\n    t.parenrighttp = 384;\n    t.parenrightex = 384;\n    t.parenrightbt = 384;\n    t.bracketrighttp = 384;\n    t.bracketrightex = 384;\n    t.bracketrightbt = 384;\n    t.bracerighttp = 494;\n    t.bracerightmid = 494;\n    t.bracerightbt = 494;\n    t.apple = 790;\n  });\n  t[\"Times-Roman\"] = (0, _core_utils.getLookupTableFactory)(function (t) {\n    t.space = 250;\n    t.exclam = 333;\n    t.quotedbl = 408;\n    t.numbersign = 500;\n    t.dollar = 500;\n    t.percent = 833;\n    t.ampersand = 778;\n    t.quoteright = 333;\n    t.parenleft = 333;\n    t.parenright = 333;\n    t.asterisk = 500;\n    t.plus = 564;\n    t.comma = 250;\n    t.hyphen = 333;\n    t.period = 250;\n    t.slash = 278;\n    t.zero = 500;\n    t.one = 500;\n    t.two = 500;\n    t.three = 500;\n    t.four = 500;\n    t.five = 500;\n    t.six = 500;\n    t.seven = 500;\n    t.eight = 500;\n    t.nine = 500;\n    t.colon = 278;\n    t.semicolon = 278;\n    t.less = 564;\n    t.equal = 564;\n    t.greater = 564;\n    t.question = 444;\n    t.at = 921;\n    t.A = 722;\n    t.B = 667;\n    t.C = 667;\n    t.D = 722;\n    t.E = 611;\n    t.F = 556;\n    t.G = 722;\n    t.H = 722;\n    t.I = 333;\n    t.J = 389;\n    t.K = 722;\n    t.L = 611;\n    t.M = 889;\n    t.N = 722;\n    t.O = 722;\n    t.P = 556;\n    t.Q = 722;\n    t.R = 667;\n    t.S = 556;\n    t.T = 611;\n    t.U = 722;\n    t.V = 722;\n    t.W = 944;\n    t.X = 722;\n    t.Y = 722;\n    t.Z = 611;\n    t.bracketleft = 333;\n    t.backslash = 278;\n    t.bracketright = 333;\n    t.asciicircum = 469;\n    t.underscore = 500;\n    t.quoteleft = 333;\n    t.a = 444;\n    t.b = 500;\n    t.c = 444;\n    t.d = 500;\n    t.e = 444;\n    t.f = 333;\n    t.g = 500;\n    t.h = 500;\n    t.i = 278;\n    t.j = 278;\n    t.k = 500;\n    t.l = 278;\n    t.m = 778;\n    t.n = 500;\n    t.o = 500;\n    t.p = 500;\n    t.q = 500;\n    t.r = 333;\n    t.s = 389;\n    t.t = 278;\n    t.u = 500;\n    t.v = 500;\n    t.w = 722;\n    t.x = 500;\n    t.y = 500;\n    t.z = 444;\n    t.braceleft = 480;\n    t.bar = 200;\n    t.braceright = 480;\n    t.asciitilde = 541;\n    t.exclamdown = 333;\n    t.cent = 500;\n    t.sterling = 500;\n    t.fraction = 167;\n    t.yen = 500;\n    t.florin = 500;\n    t.section = 500;\n    t.currency = 500;\n    t.quotesingle = 180;\n    t.quotedblleft = 444;\n    t.guillemotleft = 500;\n    t.guilsinglleft = 333;\n    t.guilsinglright = 333;\n    t.fi = 556;\n    t.fl = 556;\n    t.endash = 500;\n    t.dagger = 500;\n    t.daggerdbl = 500;\n    t.periodcentered = 250;\n    t.paragraph = 453;\n    t.bullet = 350;\n    t.quotesinglbase = 333;\n    t.quotedblbase = 444;\n    t.quotedblright = 444;\n    t.guillemotright = 500;\n    t.ellipsis = 1000;\n    t.perthousand = 1000;\n    t.questiondown = 444;\n    t.grave = 333;\n    t.acute = 333;\n    t.circumflex = 333;\n    t.tilde = 333;\n    t.macron = 333;\n    t.breve = 333;\n    t.dotaccent = 333;\n    t.dieresis = 333;\n    t.ring = 333;\n    t.cedilla = 333;\n    t.hungarumlaut = 333;\n    t.ogonek = 333;\n    t.caron = 333;\n    t.emdash = 1000;\n    t.AE = 889;\n    t.ordfeminine = 276;\n    t.Lslash = 611;\n    t.Oslash = 722;\n    t.OE = 889;\n    t.ordmasculine = 310;\n    t.ae = 667;\n    t.dotlessi = 278;\n    t.lslash = 278;\n    t.oslash = 500;\n    t.oe = 722;\n    t.germandbls = 500;\n    t.Idieresis = 333;\n    t.eacute = 444;\n    t.abreve = 444;\n    t.uhungarumlaut = 500;\n    t.ecaron = 444;\n    t.Ydieresis = 722;\n    t.divide = 564;\n    t.Yacute = 722;\n    t.Acircumflex = 722;\n    t.aacute = 444;\n    t.Ucircumflex = 722;\n    t.yacute = 500;\n    t.scommaaccent = 389;\n    t.ecircumflex = 444;\n    t.Uring = 722;\n    t.Udieresis = 722;\n    t.aogonek = 444;\n    t.Uacute = 722;\n    t.uogonek = 500;\n    t.Edieresis = 611;\n    t.Dcroat = 722;\n    t.commaaccent = 250;\n    t.copyright = 760;\n    t.Emacron = 611;\n    t.ccaron = 444;\n    t.aring = 444;\n    t.Ncommaaccent = 722;\n    t.lacute = 278;\n    t.agrave = 444;\n    t.Tcommaaccent = 611;\n    t.Cacute = 667;\n    t.atilde = 444;\n    t.Edotaccent = 611;\n    t.scaron = 389;\n    t.scedilla = 389;\n    t.iacute = 278;\n    t.lozenge = 471;\n    t.Rcaron = 667;\n    t.Gcommaaccent = 722;\n    t.ucircumflex = 500;\n    t.acircumflex = 444;\n    t.Amacron = 722;\n    t.rcaron = 333;\n    t.ccedilla = 444;\n    t.Zdotaccent = 611;\n    t.Thorn = 556;\n    t.Omacron = 722;\n    t.Racute = 667;\n    t.Sacute = 556;\n    t.dcaron = 588;\n    t.Umacron = 722;\n    t.uring = 500;\n    t.threesuperior = 300;\n    t.Ograve = 722;\n    t.Agrave = 722;\n    t.Abreve = 722;\n    t.multiply = 564;\n    t.uacute = 500;\n    t.Tcaron = 611;\n    t.partialdiff = 476;\n    t.ydieresis = 500;\n    t.Nacute = 722;\n    t.icircumflex = 278;\n    t.Ecircumflex = 611;\n    t.adieresis = 444;\n    t.edieresis = 444;\n    t.cacute = 444;\n    t.nacute = 500;\n    t.umacron = 500;\n    t.Ncaron = 722;\n    t.Iacute = 333;\n    t.plusminus = 564;\n    t.brokenbar = 200;\n    t.registered = 760;\n    t.Gbreve = 722;\n    t.Idotaccent = 333;\n    t.summation = 600;\n    t.Egrave = 611;\n    t.racute = 333;\n    t.omacron = 500;\n    t.Zacute = 611;\n    t.Zcaron = 611;\n    t.greaterequal = 549;\n    t.Eth = 722;\n    t.Ccedilla = 667;\n    t.lcommaaccent = 278;\n    t.tcaron = 326;\n    t.eogonek = 444;\n    t.Uogonek = 722;\n    t.Aacute = 722;\n    t.Adieresis = 722;\n    t.egrave = 444;\n    t.zacute = 444;\n    t.iogonek = 278;\n    t.Oacute = 722;\n    t.oacute = 500;\n    t.amacron = 444;\n    t.sacute = 389;\n    t.idieresis = 278;\n    t.Ocircumflex = 722;\n    t.Ugrave = 722;\n    t.Delta = 612;\n    t.thorn = 500;\n    t.twosuperior = 300;\n    t.Odieresis = 722;\n    t.mu = 500;\n    t.igrave = 278;\n    t.ohungarumlaut = 500;\n    t.Eogonek = 611;\n    t.dcroat = 500;\n    t.threequarters = 750;\n    t.Scedilla = 556;\n    t.lcaron = 344;\n    t.Kcommaaccent = 722;\n    t.Lacute = 611;\n    t.trademark = 980;\n    t.edotaccent = 444;\n    t.Igrave = 333;\n    t.Imacron = 333;\n    t.Lcaron = 611;\n    t.onehalf = 750;\n    t.lessequal = 549;\n    t.ocircumflex = 500;\n    t.ntilde = 500;\n    t.Uhungarumlaut = 722;\n    t.Eacute = 611;\n    t.emacron = 444;\n    t.gbreve = 500;\n    t.onequarter = 750;\n    t.Scaron = 556;\n    t.Scommaaccent = 556;\n    t.Ohungarumlaut = 722;\n    t.degree = 400;\n    t.ograve = 500;\n    t.Ccaron = 667;\n    t.ugrave = 500;\n    t.radical = 453;\n    t.Dcaron = 722;\n    t.rcommaaccent = 333;\n    t.Ntilde = 722;\n    t.otilde = 500;\n    t.Rcommaaccent = 667;\n    t.Lcommaaccent = 611;\n    t.Atilde = 722;\n    t.Aogonek = 722;\n    t.Aring = 722;\n    t.Otilde = 722;\n    t.zdotaccent = 444;\n    t.Ecaron = 611;\n    t.Iogonek = 333;\n    t.kcommaaccent = 500;\n    t.minus = 564;\n    t.Icircumflex = 333;\n    t.ncaron = 500;\n    t.tcommaaccent = 278;\n    t.logicalnot = 564;\n    t.odieresis = 500;\n    t.udieresis = 500;\n    t.notequal = 549;\n    t.gcommaaccent = 500;\n    t.eth = 500;\n    t.zcaron = 444;\n    t.ncommaaccent = 500;\n    t.onesuperior = 300;\n    t.imacron = 278;\n    t.Euro = 500;\n  });\n  t[\"Times-Bold\"] = (0, _core_utils.getLookupTableFactory)(function (t) {\n    t.space = 250;\n    t.exclam = 333;\n    t.quotedbl = 555;\n    t.numbersign = 500;\n    t.dollar = 500;\n    t.percent = 1000;\n    t.ampersand = 833;\n    t.quoteright = 333;\n    t.parenleft = 333;\n    t.parenright = 333;\n    t.asterisk = 500;\n    t.plus = 570;\n    t.comma = 250;\n    t.hyphen = 333;\n    t.period = 250;\n    t.slash = 278;\n    t.zero = 500;\n    t.one = 500;\n    t.two = 500;\n    t.three = 500;\n    t.four = 500;\n    t.five = 500;\n    t.six = 500;\n    t.seven = 500;\n    t.eight = 500;\n    t.nine = 500;\n    t.colon = 333;\n    t.semicolon = 333;\n    t.less = 570;\n    t.equal = 570;\n    t.greater = 570;\n    t.question = 500;\n    t.at = 930;\n    t.A = 722;\n    t.B = 667;\n    t.C = 722;\n    t.D = 722;\n    t.E = 667;\n    t.F = 611;\n    t.G = 778;\n    t.H = 778;\n    t.I = 389;\n    t.J = 500;\n    t.K = 778;\n    t.L = 667;\n    t.M = 944;\n    t.N = 722;\n    t.O = 778;\n    t.P = 611;\n    t.Q = 778;\n    t.R = 722;\n    t.S = 556;\n    t.T = 667;\n    t.U = 722;\n    t.V = 722;\n    t.W = 1000;\n    t.X = 722;\n    t.Y = 722;\n    t.Z = 667;\n    t.bracketleft = 333;\n    t.backslash = 278;\n    t.bracketright = 333;\n    t.asciicircum = 581;\n    t.underscore = 500;\n    t.quoteleft = 333;\n    t.a = 500;\n    t.b = 556;\n    t.c = 444;\n    t.d = 556;\n    t.e = 444;\n    t.f = 333;\n    t.g = 500;\n    t.h = 556;\n    t.i = 278;\n    t.j = 333;\n    t.k = 556;\n    t.l = 278;\n    t.m = 833;\n    t.n = 556;\n    t.o = 500;\n    t.p = 556;\n    t.q = 556;\n    t.r = 444;\n    t.s = 389;\n    t.t = 333;\n    t.u = 556;\n    t.v = 500;\n    t.w = 722;\n    t.x = 500;\n    t.y = 500;\n    t.z = 444;\n    t.braceleft = 394;\n    t.bar = 220;\n    t.braceright = 394;\n    t.asciitilde = 520;\n    t.exclamdown = 333;\n    t.cent = 500;\n    t.sterling = 500;\n    t.fraction = 167;\n    t.yen = 500;\n    t.florin = 500;\n    t.section = 500;\n    t.currency = 500;\n    t.quotesingle = 278;\n    t.quotedblleft = 500;\n    t.guillemotleft = 500;\n    t.guilsinglleft = 333;\n    t.guilsinglright = 333;\n    t.fi = 556;\n    t.fl = 556;\n    t.endash = 500;\n    t.dagger = 500;\n    t.daggerdbl = 500;\n    t.periodcentered = 250;\n    t.paragraph = 540;\n    t.bullet = 350;\n    t.quotesinglbase = 333;\n    t.quotedblbase = 500;\n    t.quotedblright = 500;\n    t.guillemotright = 500;\n    t.ellipsis = 1000;\n    t.perthousand = 1000;\n    t.questiondown = 500;\n    t.grave = 333;\n    t.acute = 333;\n    t.circumflex = 333;\n    t.tilde = 333;\n    t.macron = 333;\n    t.breve = 333;\n    t.dotaccent = 333;\n    t.dieresis = 333;\n    t.ring = 333;\n    t.cedilla = 333;\n    t.hungarumlaut = 333;\n    t.ogonek = 333;\n    t.caron = 333;\n    t.emdash = 1000;\n    t.AE = 1000;\n    t.ordfeminine = 300;\n    t.Lslash = 667;\n    t.Oslash = 778;\n    t.OE = 1000;\n    t.ordmasculine = 330;\n    t.ae = 722;\n    t.dotlessi = 278;\n    t.lslash = 278;\n    t.oslash = 500;\n    t.oe = 722;\n    t.germandbls = 556;\n    t.Idieresis = 389;\n    t.eacute = 444;\n    t.abreve = 500;\n    t.uhungarumlaut = 556;\n    t.ecaron = 444;\n    t.Ydieresis = 722;\n    t.divide = 570;\n    t.Yacute = 722;\n    t.Acircumflex = 722;\n    t.aacute = 500;\n    t.Ucircumflex = 722;\n    t.yacute = 500;\n    t.scommaaccent = 389;\n    t.ecircumflex = 444;\n    t.Uring = 722;\n    t.Udieresis = 722;\n    t.aogonek = 500;\n    t.Uacute = 722;\n    t.uogonek = 556;\n    t.Edieresis = 667;\n    t.Dcroat = 722;\n    t.commaaccent = 250;\n    t.copyright = 747;\n    t.Emacron = 667;\n    t.ccaron = 444;\n    t.aring = 500;\n    t.Ncommaaccent = 722;\n    t.lacute = 278;\n    t.agrave = 500;\n    t.Tcommaaccent = 667;\n    t.Cacute = 722;\n    t.atilde = 500;\n    t.Edotaccent = 667;\n    t.scaron = 389;\n    t.scedilla = 389;\n    t.iacute = 278;\n    t.lozenge = 494;\n    t.Rcaron = 722;\n    t.Gcommaaccent = 778;\n    t.ucircumflex = 556;\n    t.acircumflex = 500;\n    t.Amacron = 722;\n    t.rcaron = 444;\n    t.ccedilla = 444;\n    t.Zdotaccent = 667;\n    t.Thorn = 611;\n    t.Omacron = 778;\n    t.Racute = 722;\n    t.Sacute = 556;\n    t.dcaron = 672;\n    t.Umacron = 722;\n    t.uring = 556;\n    t.threesuperior = 300;\n    t.Ograve = 778;\n    t.Agrave = 722;\n    t.Abreve = 722;\n    t.multiply = 570;\n    t.uacute = 556;\n    t.Tcaron = 667;\n    t.partialdiff = 494;\n    t.ydieresis = 500;\n    t.Nacute = 722;\n    t.icircumflex = 278;\n    t.Ecircumflex = 667;\n    t.adieresis = 500;\n    t.edieresis = 444;\n    t.cacute = 444;\n    t.nacute = 556;\n    t.umacron = 556;\n    t.Ncaron = 722;\n    t.Iacute = 389;\n    t.plusminus = 570;\n    t.brokenbar = 220;\n    t.registered = 747;\n    t.Gbreve = 778;\n    t.Idotaccent = 389;\n    t.summation = 600;\n    t.Egrave = 667;\n    t.racute = 444;\n    t.omacron = 500;\n    t.Zacute = 667;\n    t.Zcaron = 667;\n    t.greaterequal = 549;\n    t.Eth = 722;\n    t.Ccedilla = 722;\n    t.lcommaaccent = 278;\n    t.tcaron = 416;\n    t.eogonek = 444;\n    t.Uogonek = 722;\n    t.Aacute = 722;\n    t.Adieresis = 722;\n    t.egrave = 444;\n    t.zacute = 444;\n    t.iogonek = 278;\n    t.Oacute = 778;\n    t.oacute = 500;\n    t.amacron = 500;\n    t.sacute = 389;\n    t.idieresis = 278;\n    t.Ocircumflex = 778;\n    t.Ugrave = 722;\n    t.Delta = 612;\n    t.thorn = 556;\n    t.twosuperior = 300;\n    t.Odieresis = 778;\n    t.mu = 556;\n    t.igrave = 278;\n    t.ohungarumlaut = 500;\n    t.Eogonek = 667;\n    t.dcroat = 556;\n    t.threequarters = 750;\n    t.Scedilla = 556;\n    t.lcaron = 394;\n    t.Kcommaaccent = 778;\n    t.Lacute = 667;\n    t.trademark = 1000;\n    t.edotaccent = 444;\n    t.Igrave = 389;\n    t.Imacron = 389;\n    t.Lcaron = 667;\n    t.onehalf = 750;\n    t.lessequal = 549;\n    t.ocircumflex = 500;\n    t.ntilde = 556;\n    t.Uhungarumlaut = 722;\n    t.Eacute = 667;\n    t.emacron = 444;\n    t.gbreve = 500;\n    t.onequarter = 750;\n    t.Scaron = 556;\n    t.Scommaaccent = 556;\n    t.Ohungarumlaut = 778;\n    t.degree = 400;\n    t.ograve = 500;\n    t.Ccaron = 722;\n    t.ugrave = 556;\n    t.radical = 549;\n    t.Dcaron = 722;\n    t.rcommaaccent = 444;\n    t.Ntilde = 722;\n    t.otilde = 500;\n    t.Rcommaaccent = 722;\n    t.Lcommaaccent = 667;\n    t.Atilde = 722;\n    t.Aogonek = 722;\n    t.Aring = 722;\n    t.Otilde = 778;\n    t.zdotaccent = 444;\n    t.Ecaron = 667;\n    t.Iogonek = 389;\n    t.kcommaaccent = 556;\n    t.minus = 570;\n    t.Icircumflex = 389;\n    t.ncaron = 556;\n    t.tcommaaccent = 333;\n    t.logicalnot = 570;\n    t.odieresis = 500;\n    t.udieresis = 556;\n    t.notequal = 549;\n    t.gcommaaccent = 500;\n    t.eth = 500;\n    t.zcaron = 444;\n    t.ncommaaccent = 556;\n    t.onesuperior = 300;\n    t.imacron = 278;\n    t.Euro = 500;\n  });\n  t[\"Times-BoldItalic\"] = (0, _core_utils.getLookupTableFactory)(function (t) {\n    t.space = 250;\n    t.exclam = 389;\n    t.quotedbl = 555;\n    t.numbersign = 500;\n    t.dollar = 500;\n    t.percent = 833;\n    t.ampersand = 778;\n    t.quoteright = 333;\n    t.parenleft = 333;\n    t.parenright = 333;\n    t.asterisk = 500;\n    t.plus = 570;\n    t.comma = 250;\n    t.hyphen = 333;\n    t.period = 250;\n    t.slash = 278;\n    t.zero = 500;\n    t.one = 500;\n    t.two = 500;\n    t.three = 500;\n    t.four = 500;\n    t.five = 500;\n    t.six = 500;\n    t.seven = 500;\n    t.eight = 500;\n    t.nine = 500;\n    t.colon = 333;\n    t.semicolon = 333;\n    t.less = 570;\n    t.equal = 570;\n    t.greater = 570;\n    t.question = 500;\n    t.at = 832;\n    t.A = 667;\n    t.B = 667;\n    t.C = 667;\n    t.D = 722;\n    t.E = 667;\n    t.F = 667;\n    t.G = 722;\n    t.H = 778;\n    t.I = 389;\n    t.J = 500;\n    t.K = 667;\n    t.L = 611;\n    t.M = 889;\n    t.N = 722;\n    t.O = 722;\n    t.P = 611;\n    t.Q = 722;\n    t.R = 667;\n    t.S = 556;\n    t.T = 611;\n    t.U = 722;\n    t.V = 667;\n    t.W = 889;\n    t.X = 667;\n    t.Y = 611;\n    t.Z = 611;\n    t.bracketleft = 333;\n    t.backslash = 278;\n    t.bracketright = 333;\n    t.asciicircum = 570;\n    t.underscore = 500;\n    t.quoteleft = 333;\n    t.a = 500;\n    t.b = 500;\n    t.c = 444;\n    t.d = 500;\n    t.e = 444;\n    t.f = 333;\n    t.g = 500;\n    t.h = 556;\n    t.i = 278;\n    t.j = 278;\n    t.k = 500;\n    t.l = 278;\n    t.m = 778;\n    t.n = 556;\n    t.o = 500;\n    t.p = 500;\n    t.q = 500;\n    t.r = 389;\n    t.s = 389;\n    t.t = 278;\n    t.u = 556;\n    t.v = 444;\n    t.w = 667;\n    t.x = 500;\n    t.y = 444;\n    t.z = 389;\n    t.braceleft = 348;\n    t.bar = 220;\n    t.braceright = 348;\n    t.asciitilde = 570;\n    t.exclamdown = 389;\n    t.cent = 500;\n    t.sterling = 500;\n    t.fraction = 167;\n    t.yen = 500;\n    t.florin = 500;\n    t.section = 500;\n    t.currency = 500;\n    t.quotesingle = 278;\n    t.quotedblleft = 500;\n    t.guillemotleft = 500;\n    t.guilsinglleft = 333;\n    t.guilsinglright = 333;\n    t.fi = 556;\n    t.fl = 556;\n    t.endash = 500;\n    t.dagger = 500;\n    t.daggerdbl = 500;\n    t.periodcentered = 250;\n    t.paragraph = 500;\n    t.bullet = 350;\n    t.quotesinglbase = 333;\n    t.quotedblbase = 500;\n    t.quotedblright = 500;\n    t.guillemotright = 500;\n    t.ellipsis = 1000;\n    t.perthousand = 1000;\n    t.questiondown = 500;\n    t.grave = 333;\n    t.acute = 333;\n    t.circumflex = 333;\n    t.tilde = 333;\n    t.macron = 333;\n    t.breve = 333;\n    t.dotaccent = 333;\n    t.dieresis = 333;\n    t.ring = 333;\n    t.cedilla = 333;\n    t.hungarumlaut = 333;\n    t.ogonek = 333;\n    t.caron = 333;\n    t.emdash = 1000;\n    t.AE = 944;\n    t.ordfeminine = 266;\n    t.Lslash = 611;\n    t.Oslash = 722;\n    t.OE = 944;\n    t.ordmasculine = 300;\n    t.ae = 722;\n    t.dotlessi = 278;\n    t.lslash = 278;\n    t.oslash = 500;\n    t.oe = 722;\n    t.germandbls = 500;\n    t.Idieresis = 389;\n    t.eacute = 444;\n    t.abreve = 500;\n    t.uhungarumlaut = 556;\n    t.ecaron = 444;\n    t.Ydieresis = 611;\n    t.divide = 570;\n    t.Yacute = 611;\n    t.Acircumflex = 667;\n    t.aacute = 500;\n    t.Ucircumflex = 722;\n    t.yacute = 444;\n    t.scommaaccent = 389;\n    t.ecircumflex = 444;\n    t.Uring = 722;\n    t.Udieresis = 722;\n    t.aogonek = 500;\n    t.Uacute = 722;\n    t.uogonek = 556;\n    t.Edieresis = 667;\n    t.Dcroat = 722;\n    t.commaaccent = 250;\n    t.copyright = 747;\n    t.Emacron = 667;\n    t.ccaron = 444;\n    t.aring = 500;\n    t.Ncommaaccent = 722;\n    t.lacute = 278;\n    t.agrave = 500;\n    t.Tcommaaccent = 611;\n    t.Cacute = 667;\n    t.atilde = 500;\n    t.Edotaccent = 667;\n    t.scaron = 389;\n    t.scedilla = 389;\n    t.iacute = 278;\n    t.lozenge = 494;\n    t.Rcaron = 667;\n    t.Gcommaaccent = 722;\n    t.ucircumflex = 556;\n    t.acircumflex = 500;\n    t.Amacron = 667;\n    t.rcaron = 389;\n    t.ccedilla = 444;\n    t.Zdotaccent = 611;\n    t.Thorn = 611;\n    t.Omacron = 722;\n    t.Racute = 667;\n    t.Sacute = 556;\n    t.dcaron = 608;\n    t.Umacron = 722;\n    t.uring = 556;\n    t.threesuperior = 300;\n    t.Ograve = 722;\n    t.Agrave = 667;\n    t.Abreve = 667;\n    t.multiply = 570;\n    t.uacute = 556;\n    t.Tcaron = 611;\n    t.partialdiff = 494;\n    t.ydieresis = 444;\n    t.Nacute = 722;\n    t.icircumflex = 278;\n    t.Ecircumflex = 667;\n    t.adieresis = 500;\n    t.edieresis = 444;\n    t.cacute = 444;\n    t.nacute = 556;\n    t.umacron = 556;\n    t.Ncaron = 722;\n    t.Iacute = 389;\n    t.plusminus = 570;\n    t.brokenbar = 220;\n    t.registered = 747;\n    t.Gbreve = 722;\n    t.Idotaccent = 389;\n    t.summation = 600;\n    t.Egrave = 667;\n    t.racute = 389;\n    t.omacron = 500;\n    t.Zacute = 611;\n    t.Zcaron = 611;\n    t.greaterequal = 549;\n    t.Eth = 722;\n    t.Ccedilla = 667;\n    t.lcommaaccent = 278;\n    t.tcaron = 366;\n    t.eogonek = 444;\n    t.Uogonek = 722;\n    t.Aacute = 667;\n    t.Adieresis = 667;\n    t.egrave = 444;\n    t.zacute = 389;\n    t.iogonek = 278;\n    t.Oacute = 722;\n    t.oacute = 500;\n    t.amacron = 500;\n    t.sacute = 389;\n    t.idieresis = 278;\n    t.Ocircumflex = 722;\n    t.Ugrave = 722;\n    t.Delta = 612;\n    t.thorn = 500;\n    t.twosuperior = 300;\n    t.Odieresis = 722;\n    t.mu = 576;\n    t.igrave = 278;\n    t.ohungarumlaut = 500;\n    t.Eogonek = 667;\n    t.dcroat = 500;\n    t.threequarters = 750;\n    t.Scedilla = 556;\n    t.lcaron = 382;\n    t.Kcommaaccent = 667;\n    t.Lacute = 611;\n    t.trademark = 1000;\n    t.edotaccent = 444;\n    t.Igrave = 389;\n    t.Imacron = 389;\n    t.Lcaron = 611;\n    t.onehalf = 750;\n    t.lessequal = 549;\n    t.ocircumflex = 500;\n    t.ntilde = 556;\n    t.Uhungarumlaut = 722;\n    t.Eacute = 667;\n    t.emacron = 444;\n    t.gbreve = 500;\n    t.onequarter = 750;\n    t.Scaron = 556;\n    t.Scommaaccent = 556;\n    t.Ohungarumlaut = 722;\n    t.degree = 400;\n    t.ograve = 500;\n    t.Ccaron = 667;\n    t.ugrave = 556;\n    t.radical = 549;\n    t.Dcaron = 722;\n    t.rcommaaccent = 389;\n    t.Ntilde = 722;\n    t.otilde = 500;\n    t.Rcommaaccent = 667;\n    t.Lcommaaccent = 611;\n    t.Atilde = 667;\n    t.Aogonek = 667;\n    t.Aring = 667;\n    t.Otilde = 722;\n    t.zdotaccent = 389;\n    t.Ecaron = 667;\n    t.Iogonek = 389;\n    t.kcommaaccent = 500;\n    t.minus = 606;\n    t.Icircumflex = 389;\n    t.ncaron = 556;\n    t.tcommaaccent = 278;\n    t.logicalnot = 606;\n    t.odieresis = 500;\n    t.udieresis = 556;\n    t.notequal = 549;\n    t.gcommaaccent = 500;\n    t.eth = 500;\n    t.zcaron = 389;\n    t.ncommaaccent = 556;\n    t.onesuperior = 300;\n    t.imacron = 278;\n    t.Euro = 500;\n  });\n  t[\"Times-Italic\"] = (0, _core_utils.getLookupTableFactory)(function (t) {\n    t.space = 250;\n    t.exclam = 333;\n    t.quotedbl = 420;\n    t.numbersign = 500;\n    t.dollar = 500;\n    t.percent = 833;\n    t.ampersand = 778;\n    t.quoteright = 333;\n    t.parenleft = 333;\n    t.parenright = 333;\n    t.asterisk = 500;\n    t.plus = 675;\n    t.comma = 250;\n    t.hyphen = 333;\n    t.period = 250;\n    t.slash = 278;\n    t.zero = 500;\n    t.one = 500;\n    t.two = 500;\n    t.three = 500;\n    t.four = 500;\n    t.five = 500;\n    t.six = 500;\n    t.seven = 500;\n    t.eight = 500;\n    t.nine = 500;\n    t.colon = 333;\n    t.semicolon = 333;\n    t.less = 675;\n    t.equal = 675;\n    t.greater = 675;\n    t.question = 500;\n    t.at = 920;\n    t.A = 611;\n    t.B = 611;\n    t.C = 667;\n    t.D = 722;\n    t.E = 611;\n    t.F = 611;\n    t.G = 722;\n    t.H = 722;\n    t.I = 333;\n    t.J = 444;\n    t.K = 667;\n    t.L = 556;\n    t.M = 833;\n    t.N = 667;\n    t.O = 722;\n    t.P = 611;\n    t.Q = 722;\n    t.R = 611;\n    t.S = 500;\n    t.T = 556;\n    t.U = 722;\n    t.V = 611;\n    t.W = 833;\n    t.X = 611;\n    t.Y = 556;\n    t.Z = 556;\n    t.bracketleft = 389;\n    t.backslash = 278;\n    t.bracketright = 389;\n    t.asciicircum = 422;\n    t.underscore = 500;\n    t.quoteleft = 333;\n    t.a = 500;\n    t.b = 500;\n    t.c = 444;\n    t.d = 500;\n    t.e = 444;\n    t.f = 278;\n    t.g = 500;\n    t.h = 500;\n    t.i = 278;\n    t.j = 278;\n    t.k = 444;\n    t.l = 278;\n    t.m = 722;\n    t.n = 500;\n    t.o = 500;\n    t.p = 500;\n    t.q = 500;\n    t.r = 389;\n    t.s = 389;\n    t.t = 278;\n    t.u = 500;\n    t.v = 444;\n    t.w = 667;\n    t.x = 444;\n    t.y = 444;\n    t.z = 389;\n    t.braceleft = 400;\n    t.bar = 275;\n    t.braceright = 400;\n    t.asciitilde = 541;\n    t.exclamdown = 389;\n    t.cent = 500;\n    t.sterling = 500;\n    t.fraction = 167;\n    t.yen = 500;\n    t.florin = 500;\n    t.section = 500;\n    t.currency = 500;\n    t.quotesingle = 214;\n    t.quotedblleft = 556;\n    t.guillemotleft = 500;\n    t.guilsinglleft = 333;\n    t.guilsinglright = 333;\n    t.fi = 500;\n    t.fl = 500;\n    t.endash = 500;\n    t.dagger = 500;\n    t.daggerdbl = 500;\n    t.periodcentered = 250;\n    t.paragraph = 523;\n    t.bullet = 350;\n    t.quotesinglbase = 333;\n    t.quotedblbase = 556;\n    t.quotedblright = 556;\n    t.guillemotright = 500;\n    t.ellipsis = 889;\n    t.perthousand = 1000;\n    t.questiondown = 500;\n    t.grave = 333;\n    t.acute = 333;\n    t.circumflex = 333;\n    t.tilde = 333;\n    t.macron = 333;\n    t.breve = 333;\n    t.dotaccent = 333;\n    t.dieresis = 333;\n    t.ring = 333;\n    t.cedilla = 333;\n    t.hungarumlaut = 333;\n    t.ogonek = 333;\n    t.caron = 333;\n    t.emdash = 889;\n    t.AE = 889;\n    t.ordfeminine = 276;\n    t.Lslash = 556;\n    t.Oslash = 722;\n    t.OE = 944;\n    t.ordmasculine = 310;\n    t.ae = 667;\n    t.dotlessi = 278;\n    t.lslash = 278;\n    t.oslash = 500;\n    t.oe = 667;\n    t.germandbls = 500;\n    t.Idieresis = 333;\n    t.eacute = 444;\n    t.abreve = 500;\n    t.uhungarumlaut = 500;\n    t.ecaron = 444;\n    t.Ydieresis = 556;\n    t.divide = 675;\n    t.Yacute = 556;\n    t.Acircumflex = 611;\n    t.aacute = 500;\n    t.Ucircumflex = 722;\n    t.yacute = 444;\n    t.scommaaccent = 389;\n    t.ecircumflex = 444;\n    t.Uring = 722;\n    t.Udieresis = 722;\n    t.aogonek = 500;\n    t.Uacute = 722;\n    t.uogonek = 500;\n    t.Edieresis = 611;\n    t.Dcroat = 722;\n    t.commaaccent = 250;\n    t.copyright = 760;\n    t.Emacron = 611;\n    t.ccaron = 444;\n    t.aring = 500;\n    t.Ncommaaccent = 667;\n    t.lacute = 278;\n    t.agrave = 500;\n    t.Tcommaaccent = 556;\n    t.Cacute = 667;\n    t.atilde = 500;\n    t.Edotaccent = 611;\n    t.scaron = 389;\n    t.scedilla = 389;\n    t.iacute = 278;\n    t.lozenge = 471;\n    t.Rcaron = 611;\n    t.Gcommaaccent = 722;\n    t.ucircumflex = 500;\n    t.acircumflex = 500;\n    t.Amacron = 611;\n    t.rcaron = 389;\n    t.ccedilla = 444;\n    t.Zdotaccent = 556;\n    t.Thorn = 611;\n    t.Omacron = 722;\n    t.Racute = 611;\n    t.Sacute = 500;\n    t.dcaron = 544;\n    t.Umacron = 722;\n    t.uring = 500;\n    t.threesuperior = 300;\n    t.Ograve = 722;\n    t.Agrave = 611;\n    t.Abreve = 611;\n    t.multiply = 675;\n    t.uacute = 500;\n    t.Tcaron = 556;\n    t.partialdiff = 476;\n    t.ydieresis = 444;\n    t.Nacute = 667;\n    t.icircumflex = 278;\n    t.Ecircumflex = 611;\n    t.adieresis = 500;\n    t.edieresis = 444;\n    t.cacute = 444;\n    t.nacute = 500;\n    t.umacron = 500;\n    t.Ncaron = 667;\n    t.Iacute = 333;\n    t.plusminus = 675;\n    t.brokenbar = 275;\n    t.registered = 760;\n    t.Gbreve = 722;\n    t.Idotaccent = 333;\n    t.summation = 600;\n    t.Egrave = 611;\n    t.racute = 389;\n    t.omacron = 500;\n    t.Zacute = 556;\n    t.Zcaron = 556;\n    t.greaterequal = 549;\n    t.Eth = 722;\n    t.Ccedilla = 667;\n    t.lcommaaccent = 278;\n    t.tcaron = 300;\n    t.eogonek = 444;\n    t.Uogonek = 722;\n    t.Aacute = 611;\n    t.Adieresis = 611;\n    t.egrave = 444;\n    t.zacute = 389;\n    t.iogonek = 278;\n    t.Oacute = 722;\n    t.oacute = 500;\n    t.amacron = 500;\n    t.sacute = 389;\n    t.idieresis = 278;\n    t.Ocircumflex = 722;\n    t.Ugrave = 722;\n    t.Delta = 612;\n    t.thorn = 500;\n    t.twosuperior = 300;\n    t.Odieresis = 722;\n    t.mu = 500;\n    t.igrave = 278;\n    t.ohungarumlaut = 500;\n    t.Eogonek = 611;\n    t.dcroat = 500;\n    t.threequarters = 750;\n    t.Scedilla = 500;\n    t.lcaron = 300;\n    t.Kcommaaccent = 667;\n    t.Lacute = 556;\n    t.trademark = 980;\n    t.edotaccent = 444;\n    t.Igrave = 333;\n    t.Imacron = 333;\n    t.Lcaron = 611;\n    t.onehalf = 750;\n    t.lessequal = 549;\n    t.ocircumflex = 500;\n    t.ntilde = 500;\n    t.Uhungarumlaut = 722;\n    t.Eacute = 611;\n    t.emacron = 444;\n    t.gbreve = 500;\n    t.onequarter = 750;\n    t.Scaron = 500;\n    t.Scommaaccent = 500;\n    t.Ohungarumlaut = 722;\n    t.degree = 400;\n    t.ograve = 500;\n    t.Ccaron = 667;\n    t.ugrave = 500;\n    t.radical = 453;\n    t.Dcaron = 722;\n    t.rcommaaccent = 389;\n    t.Ntilde = 667;\n    t.otilde = 500;\n    t.Rcommaaccent = 611;\n    t.Lcommaaccent = 556;\n    t.Atilde = 611;\n    t.Aogonek = 611;\n    t.Aring = 611;\n    t.Otilde = 722;\n    t.zdotaccent = 389;\n    t.Ecaron = 611;\n    t.Iogonek = 333;\n    t.kcommaaccent = 444;\n    t.minus = 675;\n    t.Icircumflex = 333;\n    t.ncaron = 500;\n    t.tcommaaccent = 278;\n    t.logicalnot = 675;\n    t.odieresis = 500;\n    t.udieresis = 500;\n    t.notequal = 549;\n    t.gcommaaccent = 500;\n    t.eth = 500;\n    t.zcaron = 389;\n    t.ncommaaccent = 500;\n    t.onesuperior = 300;\n    t.imacron = 278;\n    t.Euro = 500;\n  });\n  t.ZapfDingbats = (0, _core_utils.getLookupTableFactory)(function (t) {\n    t.space = 278;\n    t.a1 = 974;\n    t.a2 = 961;\n    t.a202 = 974;\n    t.a3 = 980;\n    t.a4 = 719;\n    t.a5 = 789;\n    t.a119 = 790;\n    t.a118 = 791;\n    t.a117 = 690;\n    t.a11 = 960;\n    t.a12 = 939;\n    t.a13 = 549;\n    t.a14 = 855;\n    t.a15 = 911;\n    t.a16 = 933;\n    t.a105 = 911;\n    t.a17 = 945;\n    t.a18 = 974;\n    t.a19 = 755;\n    t.a20 = 846;\n    t.a21 = 762;\n    t.a22 = 761;\n    t.a23 = 571;\n    t.a24 = 677;\n    t.a25 = 763;\n    t.a26 = 760;\n    t.a27 = 759;\n    t.a28 = 754;\n    t.a6 = 494;\n    t.a7 = 552;\n    t.a8 = 537;\n    t.a9 = 577;\n    t.a10 = 692;\n    t.a29 = 786;\n    t.a30 = 788;\n    t.a31 = 788;\n    t.a32 = 790;\n    t.a33 = 793;\n    t.a34 = 794;\n    t.a35 = 816;\n    t.a36 = 823;\n    t.a37 = 789;\n    t.a38 = 841;\n    t.a39 = 823;\n    t.a40 = 833;\n    t.a41 = 816;\n    t.a42 = 831;\n    t.a43 = 923;\n    t.a44 = 744;\n    t.a45 = 723;\n    t.a46 = 749;\n    t.a47 = 790;\n    t.a48 = 792;\n    t.a49 = 695;\n    t.a50 = 776;\n    t.a51 = 768;\n    t.a52 = 792;\n    t.a53 = 759;\n    t.a54 = 707;\n    t.a55 = 708;\n    t.a56 = 682;\n    t.a57 = 701;\n    t.a58 = 826;\n    t.a59 = 815;\n    t.a60 = 789;\n    t.a61 = 789;\n    t.a62 = 707;\n    t.a63 = 687;\n    t.a64 = 696;\n    t.a65 = 689;\n    t.a66 = 786;\n    t.a67 = 787;\n    t.a68 = 713;\n    t.a69 = 791;\n    t.a70 = 785;\n    t.a71 = 791;\n    t.a72 = 873;\n    t.a73 = 761;\n    t.a74 = 762;\n    t.a203 = 762;\n    t.a75 = 759;\n    t.a204 = 759;\n    t.a76 = 892;\n    t.a77 = 892;\n    t.a78 = 788;\n    t.a79 = 784;\n    t.a81 = 438;\n    t.a82 = 138;\n    t.a83 = 277;\n    t.a84 = 415;\n    t.a97 = 392;\n    t.a98 = 392;\n    t.a99 = 668;\n    t.a100 = 668;\n    t.a89 = 390;\n    t.a90 = 390;\n    t.a93 = 317;\n    t.a94 = 317;\n    t.a91 = 276;\n    t.a92 = 276;\n    t.a205 = 509;\n    t.a85 = 509;\n    t.a206 = 410;\n    t.a86 = 410;\n    t.a87 = 234;\n    t.a88 = 234;\n    t.a95 = 334;\n    t.a96 = 334;\n    t.a101 = 732;\n    t.a102 = 544;\n    t.a103 = 544;\n    t.a104 = 910;\n    t.a106 = 667;\n    t.a107 = 760;\n    t.a108 = 760;\n    t.a112 = 776;\n    t.a111 = 595;\n    t.a110 = 694;\n    t.a109 = 626;\n    t.a120 = 788;\n    t.a121 = 788;\n    t.a122 = 788;\n    t.a123 = 788;\n    t.a124 = 788;\n    t.a125 = 788;\n    t.a126 = 788;\n    t.a127 = 788;\n    t.a128 = 788;\n    t.a129 = 788;\n    t.a130 = 788;\n    t.a131 = 788;\n    t.a132 = 788;\n    t.a133 = 788;\n    t.a134 = 788;\n    t.a135 = 788;\n    t.a136 = 788;\n    t.a137 = 788;\n    t.a138 = 788;\n    t.a139 = 788;\n    t.a140 = 788;\n    t.a141 = 788;\n    t.a142 = 788;\n    t.a143 = 788;\n    t.a144 = 788;\n    t.a145 = 788;\n    t.a146 = 788;\n    t.a147 = 788;\n    t.a148 = 788;\n    t.a149 = 788;\n    t.a150 = 788;\n    t.a151 = 788;\n    t.a152 = 788;\n    t.a153 = 788;\n    t.a154 = 788;\n    t.a155 = 788;\n    t.a156 = 788;\n    t.a157 = 788;\n    t.a158 = 788;\n    t.a159 = 788;\n    t.a160 = 894;\n    t.a161 = 838;\n    t.a163 = 1016;\n    t.a164 = 458;\n    t.a196 = 748;\n    t.a165 = 924;\n    t.a192 = 748;\n    t.a166 = 918;\n    t.a167 = 927;\n    t.a168 = 928;\n    t.a169 = 928;\n    t.a170 = 834;\n    t.a171 = 873;\n    t.a172 = 828;\n    t.a173 = 924;\n    t.a162 = 924;\n    t.a174 = 917;\n    t.a175 = 930;\n    t.a176 = 931;\n    t.a177 = 463;\n    t.a178 = 883;\n    t.a179 = 836;\n    t.a193 = 836;\n    t.a180 = 867;\n    t.a199 = 867;\n    t.a181 = 696;\n    t.a200 = 696;\n    t.a182 = 874;\n    t.a201 = 874;\n    t.a183 = 760;\n    t.a184 = 946;\n    t.a197 = 771;\n    t.a185 = 865;\n    t.a194 = 771;\n    t.a198 = 888;\n    t.a186 = 967;\n    t.a195 = 888;\n    t.a187 = 831;\n    t.a188 = 873;\n    t.a189 = 927;\n    t.a190 = 970;\n    t.a191 = 918;\n  });\n});\nexports.getMetrics = getMetrics;\nconst getFontBasicMetrics = (0, _core_utils.getLookupTableFactory)(function (t) {\n  t.Courier = {\n    ascent: 629,\n    descent: -157,\n    capHeight: 562,\n    xHeight: -426\n  };\n  t[\"Courier-Bold\"] = {\n    ascent: 629,\n    descent: -157,\n    capHeight: 562,\n    xHeight: 439\n  };\n  t[\"Courier-Oblique\"] = {\n    ascent: 629,\n    descent: -157,\n    capHeight: 562,\n    xHeight: 426\n  };\n  t[\"Courier-BoldOblique\"] = {\n    ascent: 629,\n    descent: -157,\n    capHeight: 562,\n    xHeight: 426\n  };\n  t.Helvetica = {\n    ascent: 718,\n    descent: -207,\n    capHeight: 718,\n    xHeight: 523\n  };\n  t[\"Helvetica-Bold\"] = {\n    ascent: 718,\n    descent: -207,\n    capHeight: 718,\n    xHeight: 532\n  };\n  t[\"Helvetica-Oblique\"] = {\n    ascent: 718,\n    descent: -207,\n    capHeight: 718,\n    xHeight: 523\n  };\n  t[\"Helvetica-BoldOblique\"] = {\n    ascent: 718,\n    descent: -207,\n    capHeight: 718,\n    xHeight: 532\n  };\n  t[\"Times-Roman\"] = {\n    ascent: 683,\n    descent: -217,\n    capHeight: 662,\n    xHeight: 450\n  };\n  t[\"Times-Bold\"] = {\n    ascent: 683,\n    descent: -217,\n    capHeight: 676,\n    xHeight: 461\n  };\n  t[\"Times-Italic\"] = {\n    ascent: 683,\n    descent: -217,\n    capHeight: 653,\n    xHeight: 441\n  };\n  t[\"Times-BoldItalic\"] = {\n    ascent: 683,\n    descent: -217,\n    capHeight: 669,\n    xHeight: 462\n  };\n  t.Symbol = {\n    ascent: Math.NaN,\n    descent: Math.NaN,\n    capHeight: Math.NaN,\n    xHeight: Math.NaN\n  };\n  t.ZapfDingbats = {\n    ascent: Math.NaN,\n    descent: Math.NaN,\n    capHeight: Math.NaN,\n    xHeight: Math.NaN\n  };\n});\nexports.getFontBasicMetrics = getFontBasicMetrics;\n\n/***/ }),\n/* 52 */\n/***/ ((__unused_webpack_module, exports) => {\n\n\n\nObject.defineProperty(exports, \"__esModule\", ({\n  value: true\n}));\nexports.GlyfTable = void 0;\nconst ON_CURVE_POINT = 1 << 0;\nconst X_SHORT_VECTOR = 1 << 1;\nconst Y_SHORT_VECTOR = 1 << 2;\nconst REPEAT_FLAG = 1 << 3;\nconst X_IS_SAME_OR_POSITIVE_X_SHORT_VECTOR = 1 << 4;\nconst Y_IS_SAME_OR_POSITIVE_Y_SHORT_VECTOR = 1 << 5;\nconst OVERLAP_SIMPLE = 1 << 6;\nconst ARG_1_AND_2_ARE_WORDS = 1 << 0;\nconst ARGS_ARE_XY_VALUES = 1 << 1;\nconst WE_HAVE_A_SCALE = 1 << 3;\nconst MORE_COMPONENTS = 1 << 5;\nconst WE_HAVE_AN_X_AND_Y_SCALE = 1 << 6;\nconst WE_HAVE_A_TWO_BY_TWO = 1 << 7;\nconst WE_HAVE_INSTRUCTIONS = 1 << 8;\n\nclass GlyfTable {\n  constructor({\n    glyfTable,\n    isGlyphLocationsLong,\n    locaTable,\n    numGlyphs\n  }) {\n    this.glyphs = [];\n    const loca = new DataView(locaTable.buffer, locaTable.byteOffset, locaTable.byteLength);\n    const glyf = new DataView(glyfTable.buffer, glyfTable.byteOffset, glyfTable.byteLength);\n    const offsetSize = isGlyphLocationsLong ? 4 : 2;\n    let prev = isGlyphLocationsLong ? loca.getUint32(0) : 2 * loca.getUint16(0);\n    let pos = 0;\n\n    for (let i = 0; i < numGlyphs; i++) {\n      pos += offsetSize;\n      const next = isGlyphLocationsLong ? loca.getUint32(pos) : 2 * loca.getUint16(pos);\n\n      if (next === prev) {\n        this.glyphs.push(new Glyph({}));\n        continue;\n      }\n\n      const glyph = Glyph.parse(prev, glyf);\n      this.glyphs.push(glyph);\n      prev = next;\n    }\n  }\n\n  getSize() {\n    return this.glyphs.reduce((a, g) => {\n      const size = g.getSize();\n      return a + (size + 3 & ~3);\n    }, 0);\n  }\n\n  write() {\n    const totalSize = this.getSize();\n    const glyfTable = new DataView(new ArrayBuffer(totalSize));\n    const isLocationLong = totalSize > 0x1fffe;\n    const offsetSize = isLocationLong ? 4 : 2;\n    const locaTable = new DataView(new ArrayBuffer((this.glyphs.length + 1) * offsetSize));\n\n    if (isLocationLong) {\n      locaTable.setUint32(0, 0);\n    } else {\n      locaTable.setUint16(0, 0);\n    }\n\n    let pos = 0;\n    let locaIndex = 0;\n\n    for (const glyph of this.glyphs) {\n      pos += glyph.write(pos, glyfTable);\n      pos = pos + 3 & ~3;\n      locaIndex += offsetSize;\n\n      if (isLocationLong) {\n        locaTable.setUint32(locaIndex, pos);\n      } else {\n        locaTable.setUint16(locaIndex, pos >> 1);\n      }\n    }\n\n    return {\n      isLocationLong,\n      loca: new Uint8Array(locaTable.buffer),\n      glyf: new Uint8Array(glyfTable.buffer)\n    };\n  }\n\n  scale(factors) {\n    for (let i = 0, ii = this.glyphs.length; i < ii; i++) {\n      this.glyphs[i].scale(factors[i]);\n    }\n  }\n\n}\n\nexports.GlyfTable = GlyfTable;\n\nclass Glyph {\n  constructor({\n    header = null,\n    simple = null,\n    composites = null\n  }) {\n    this.header = header;\n    this.simple = simple;\n    this.composites = composites;\n  }\n\n  static parse(pos, glyf) {\n    const [read, header] = GlyphHeader.parse(pos, glyf);\n    pos += read;\n\n    if (header.numberOfContours < 0) {\n      const composites = [];\n\n      while (true) {\n        const [n, composite] = CompositeGlyph.parse(pos, glyf);\n        pos += n;\n        composites.push(composite);\n\n        if (!(composite.flags & MORE_COMPONENTS)) {\n          break;\n        }\n      }\n\n      return new Glyph({\n        header,\n        composites\n      });\n    }\n\n    const simple = SimpleGlyph.parse(pos, glyf, header.numberOfContours);\n    return new Glyph({\n      header,\n      simple\n    });\n  }\n\n  getSize() {\n    if (!this.header) {\n      return 0;\n    }\n\n    const size = this.simple ? this.simple.getSize() : this.composites.reduce((a, c) => a + c.getSize(), 0);\n    return this.header.getSize() + size;\n  }\n\n  write(pos, buf) {\n    if (!this.header) {\n      return 0;\n    }\n\n    const spos = pos;\n    pos += this.header.write(pos, buf);\n\n    if (this.simple) {\n      pos += this.simple.write(pos, buf);\n    } else {\n      for (const composite of this.composites) {\n        pos += composite.write(pos, buf);\n      }\n    }\n\n    return pos - spos;\n  }\n\n  scale(factor) {\n    if (!this.header) {\n      return;\n    }\n\n    const xMiddle = (this.header.xMin + this.header.xMax) / 2;\n    this.header.scale(xMiddle, factor);\n\n    if (this.simple) {\n      this.simple.scale(xMiddle, factor);\n    } else {\n      for (const composite of this.composites) {\n        composite.scale(xMiddle, factor);\n      }\n    }\n  }\n\n}\n\nclass GlyphHeader {\n  constructor({\n    numberOfContours,\n    xMin,\n    yMin,\n    xMax,\n    yMax\n  }) {\n    this.numberOfContours = numberOfContours;\n    this.xMin = xMin;\n    this.yMin = yMin;\n    this.xMax = xMax;\n    this.yMax = yMax;\n  }\n\n  static parse(pos, glyf) {\n    return [10, new GlyphHeader({\n      numberOfContours: glyf.getInt16(pos),\n      xMin: glyf.getInt16(pos + 2),\n      yMin: glyf.getInt16(pos + 4),\n      xMax: glyf.getInt16(pos + 6),\n      yMax: glyf.getInt16(pos + 8)\n    })];\n  }\n\n  getSize() {\n    return 10;\n  }\n\n  write(pos, buf) {\n    buf.setInt16(pos, this.numberOfContours);\n    buf.setInt16(pos + 2, this.xMin);\n    buf.setInt16(pos + 4, this.yMin);\n    buf.setInt16(pos + 6, this.xMax);\n    buf.setInt16(pos + 8, this.yMax);\n    return 10;\n  }\n\n  scale(x, factor) {\n    this.xMin = Math.round(x + (this.xMin - x) * factor);\n    this.xMax = Math.round(x + (this.xMax - x) * factor);\n  }\n\n}\n\nclass Contour {\n  constructor({\n    flags,\n    xCoordinates,\n    yCoordinates\n  }) {\n    this.xCoordinates = xCoordinates;\n    this.yCoordinates = yCoordinates;\n    this.flags = flags;\n  }\n\n}\n\nclass SimpleGlyph {\n  constructor({\n    contours,\n    instructions\n  }) {\n    this.contours = contours;\n    this.instructions = instructions;\n  }\n\n  static parse(pos, glyf, numberOfContours) {\n    const endPtsOfContours = [];\n\n    for (let i = 0; i < numberOfContours; i++) {\n      const endPt = glyf.getUint16(pos);\n      pos += 2;\n      endPtsOfContours.push(endPt);\n    }\n\n    const numberOfPt = endPtsOfContours[numberOfContours - 1] + 1;\n    const instructionLength = glyf.getUint16(pos);\n    pos += 2;\n    const instructions = new Uint8Array(glyf).slice(pos, pos + instructionLength);\n    pos += instructionLength;\n    const flags = [];\n\n    for (let i = 0; i < numberOfPt; pos++, i++) {\n      let flag = glyf.getUint8(pos);\n      flags.push(flag);\n\n      if (flag & REPEAT_FLAG) {\n        const count = glyf.getUint8(++pos);\n        flag ^= REPEAT_FLAG;\n\n        for (let m = 0; m < count; m++) {\n          flags.push(flag);\n        }\n\n        i += count;\n      }\n    }\n\n    const allXCoordinates = [];\n    let xCoordinates = [];\n    let yCoordinates = [];\n    let pointFlags = [];\n    const contours = [];\n    let endPtsOfContoursIndex = 0;\n    let lastCoordinate = 0;\n\n    for (let i = 0; i < numberOfPt; i++) {\n      const flag = flags[i];\n\n      if (flag & X_SHORT_VECTOR) {\n        const x = glyf.getUint8(pos++);\n        lastCoordinate += flag & X_IS_SAME_OR_POSITIVE_X_SHORT_VECTOR ? x : -x;\n        xCoordinates.push(lastCoordinate);\n      } else if (flag & X_IS_SAME_OR_POSITIVE_X_SHORT_VECTOR) {\n        xCoordinates.push(lastCoordinate);\n      } else {\n        lastCoordinate += glyf.getInt16(pos);\n        pos += 2;\n        xCoordinates.push(lastCoordinate);\n      }\n\n      if (endPtsOfContours[endPtsOfContoursIndex] === i) {\n        endPtsOfContoursIndex++;\n        allXCoordinates.push(xCoordinates);\n        xCoordinates = [];\n      }\n    }\n\n    lastCoordinate = 0;\n    endPtsOfContoursIndex = 0;\n\n    for (let i = 0; i < numberOfPt; i++) {\n      const flag = flags[i];\n\n      if (flag & Y_SHORT_VECTOR) {\n        const y = glyf.getUint8(pos++);\n        lastCoordinate += flag & Y_IS_SAME_OR_POSITIVE_Y_SHORT_VECTOR ? y : -y;\n        yCoordinates.push(lastCoordinate);\n      } else if (flag & Y_IS_SAME_OR_POSITIVE_Y_SHORT_VECTOR) {\n        yCoordinates.push(lastCoordinate);\n      } else {\n        lastCoordinate += glyf.getInt16(pos);\n        pos += 2;\n        yCoordinates.push(lastCoordinate);\n      }\n\n      pointFlags.push(flag & ON_CURVE_POINT | flag & OVERLAP_SIMPLE);\n\n      if (endPtsOfContours[endPtsOfContoursIndex] === i) {\n        xCoordinates = allXCoordinates[endPtsOfContoursIndex];\n        endPtsOfContoursIndex++;\n        contours.push(new Contour({\n          flags: pointFlags,\n          xCoordinates,\n          yCoordinates\n        }));\n        yCoordinates = [];\n        pointFlags = [];\n      }\n    }\n\n    return new SimpleGlyph({\n      contours,\n      instructions\n    });\n  }\n\n  getSize() {\n    let size = this.contours.length * 2 + 2 + this.instructions.length;\n    let lastX = 0;\n    let lastY = 0;\n\n    for (const contour of this.contours) {\n      size += contour.flags.length;\n\n      for (let i = 0, ii = contour.xCoordinates.length; i < ii; i++) {\n        const x = contour.xCoordinates[i];\n        const y = contour.yCoordinates[i];\n        let abs = Math.abs(x - lastX);\n\n        if (abs > 255) {\n          size += 2;\n        } else if (abs > 0) {\n          size += 1;\n        }\n\n        lastX = x;\n        abs = Math.abs(y - lastY);\n\n        if (abs > 255) {\n          size += 2;\n        } else if (abs > 0) {\n          size += 1;\n        }\n\n        lastY = y;\n      }\n    }\n\n    return size;\n  }\n\n  write(pos, buf) {\n    const spos = pos;\n    const xCoordinates = [];\n    const yCoordinates = [];\n    const flags = [];\n    let lastX = 0;\n    let lastY = 0;\n\n    for (const contour of this.contours) {\n      for (let i = 0, ii = contour.xCoordinates.length; i < ii; i++) {\n        let flag = contour.flags[i];\n        const x = contour.xCoordinates[i];\n        let delta = x - lastX;\n\n        if (delta === 0) {\n          flag |= X_IS_SAME_OR_POSITIVE_X_SHORT_VECTOR;\n          xCoordinates.push(0);\n        } else {\n          const abs = Math.abs(delta);\n\n          if (abs <= 255) {\n            flag |= delta >= 0 ? X_SHORT_VECTOR | X_IS_SAME_OR_POSITIVE_X_SHORT_VECTOR : X_SHORT_VECTOR;\n            xCoordinates.push(abs);\n          } else {\n            xCoordinates.push(delta);\n          }\n        }\n\n        lastX = x;\n        const y = contour.yCoordinates[i];\n        delta = y - lastY;\n\n        if (delta === 0) {\n          flag |= Y_IS_SAME_OR_POSITIVE_Y_SHORT_VECTOR;\n          yCoordinates.push(0);\n        } else {\n          const abs = Math.abs(delta);\n\n          if (abs <= 255) {\n            flag |= delta >= 0 ? Y_SHORT_VECTOR | Y_IS_SAME_OR_POSITIVE_Y_SHORT_VECTOR : Y_SHORT_VECTOR;\n            yCoordinates.push(abs);\n          } else {\n            yCoordinates.push(delta);\n          }\n        }\n\n        lastY = y;\n        flags.push(flag);\n      }\n\n      buf.setUint16(pos, xCoordinates.length - 1);\n      pos += 2;\n    }\n\n    buf.setUint16(pos, this.instructions.length);\n    pos += 2;\n\n    if (this.instructions.length) {\n      new Uint8Array(buf.buffer, 0, buf.buffer.byteLength).set(this.instructions, pos);\n      pos += this.instructions.length;\n    }\n\n    for (const flag of flags) {\n      buf.setUint8(pos++, flag);\n    }\n\n    for (let i = 0, ii = xCoordinates.length; i < ii; i++) {\n      const x = xCoordinates[i];\n      const flag = flags[i];\n\n      if (flag & X_SHORT_VECTOR) {\n        buf.setUint8(pos++, x);\n      } else if (!(flag & X_IS_SAME_OR_POSITIVE_X_SHORT_VECTOR)) {\n        buf.setInt16(pos, x);\n        pos += 2;\n      }\n    }\n\n    for (let i = 0, ii = yCoordinates.length; i < ii; i++) {\n      const y = yCoordinates[i];\n      const flag = flags[i];\n\n      if (flag & Y_SHORT_VECTOR) {\n        buf.setUint8(pos++, y);\n      } else if (!(flag & Y_IS_SAME_OR_POSITIVE_Y_SHORT_VECTOR)) {\n        buf.setInt16(pos, y);\n        pos += 2;\n      }\n    }\n\n    return pos - spos;\n  }\n\n  scale(x, factor) {\n    for (const contour of this.contours) {\n      if (contour.xCoordinates.length === 0) {\n        continue;\n      }\n\n      for (let i = 0, ii = contour.xCoordinates.length; i < ii; i++) {\n        contour.xCoordinates[i] = Math.round(x + (contour.xCoordinates[i] - x) * factor);\n      }\n    }\n  }\n\n}\n\nclass CompositeGlyph {\n  constructor({\n    flags,\n    glyphIndex,\n    argument1,\n    argument2,\n    transf,\n    instructions\n  }) {\n    this.flags = flags;\n    this.glyphIndex = glyphIndex;\n    this.argument1 = argument1;\n    this.argument2 = argument2;\n    this.transf = transf;\n    this.instructions = instructions;\n  }\n\n  static parse(pos, glyf) {\n    const spos = pos;\n    const transf = [];\n    let flags = glyf.getUint16(pos);\n    const glyphIndex = glyf.getUint16(pos + 2);\n    pos += 4;\n    let argument1, argument2;\n\n    if (flags & ARG_1_AND_2_ARE_WORDS) {\n      if (flags & ARGS_ARE_XY_VALUES) {\n        argument1 = glyf.getInt16(pos);\n        argument2 = glyf.getInt16(pos + 2);\n      } else {\n        argument1 = glyf.getUint16(pos);\n        argument2 = glyf.getUint16(pos + 2);\n      }\n\n      pos += 4;\n      flags ^= ARG_1_AND_2_ARE_WORDS;\n    } else {\n      if (flags & ARGS_ARE_XY_VALUES) {\n        argument1 = glyf.getInt8(pos);\n        argument2 = glyf.getInt8(pos + 1);\n      } else {\n        argument1 = glyf.getUint8(pos);\n        argument2 = glyf.getUint8(pos + 1);\n      }\n\n      pos += 2;\n    }\n\n    if (flags & WE_HAVE_A_SCALE) {\n      transf.push(glyf.getUint16(pos));\n      pos += 2;\n    } else if (flags & WE_HAVE_AN_X_AND_Y_SCALE) {\n      transf.push(glyf.getUint16(pos), glyf.getUint16(pos + 2));\n      pos += 4;\n    } else if (flags & WE_HAVE_A_TWO_BY_TWO) {\n      transf.push(glyf.getUint16(pos), glyf.getUint16(pos + 2), glyf.getUint16(pos + 4), glyf.getUint16(pos + 6));\n      pos += 8;\n    }\n\n    let instructions = null;\n\n    if (flags & WE_HAVE_INSTRUCTIONS) {\n      const instructionLength = glyf.getUint16(pos);\n      pos += 2;\n      instructions = new Uint8Array(glyf).slice(pos, pos + instructionLength);\n      pos += instructionLength;\n    }\n\n    return [pos - spos, new CompositeGlyph({\n      flags,\n      glyphIndex,\n      argument1,\n      argument2,\n      transf,\n      instructions\n    })];\n  }\n\n  getSize() {\n    let size = 2 + 2 + this.transf.length * 2;\n\n    if (this.flags & WE_HAVE_INSTRUCTIONS) {\n      size += 2 + this.instructions.length;\n    }\n\n    size += 2;\n\n    if (this.flags & 2) {\n      if (!(this.argument1 >= -128 && this.argument1 <= 127 && this.argument2 >= -128 && this.argument2 <= 127)) {\n        size += 2;\n      }\n    } else {\n      if (!(this.argument1 >= 0 && this.argument1 <= 255 && this.argument2 >= 0 && this.argument2 <= 255)) {\n        size += 2;\n      }\n    }\n\n    return size;\n  }\n\n  write(pos, buf) {\n    const spos = pos;\n\n    if (this.flags & ARGS_ARE_XY_VALUES) {\n      if (!(this.argument1 >= -128 && this.argument1 <= 127 && this.argument2 >= -128 && this.argument2 <= 127)) {\n        this.flags |= ARG_1_AND_2_ARE_WORDS;\n      }\n    } else {\n      if (!(this.argument1 >= 0 && this.argument1 <= 255 && this.argument2 >= 0 && this.argument2 <= 255)) {\n        this.flags |= ARG_1_AND_2_ARE_WORDS;\n      }\n    }\n\n    buf.setUint16(pos, this.flags);\n    buf.setUint16(pos + 2, this.glyphIndex);\n    pos += 4;\n\n    if (this.flags & ARG_1_AND_2_ARE_WORDS) {\n      if (this.flags & ARGS_ARE_XY_VALUES) {\n        buf.setInt16(pos, this.argument1);\n        buf.setInt16(pos + 2, this.argument2);\n      } else {\n        buf.setUint16(pos, this.argument1);\n        buf.setUint16(pos + 2, this.argument2);\n      }\n\n      pos += 4;\n    } else {\n      buf.setUint8(pos, this.argument1);\n      buf.setUint8(pos + 1, this.argument2);\n      pos += 2;\n    }\n\n    if (this.flags & WE_HAVE_INSTRUCTIONS) {\n      buf.setUint16(pos, this.instructions.length);\n      pos += 2;\n\n      if (this.instructions.length) {\n        new Uint8Array(buf.buffer, 0, buf.buffer.byteLength).set(this.instructions, pos);\n        pos += this.instructions.length;\n      }\n    }\n\n    return pos - spos;\n  }\n\n  scale(x, factor) {}\n\n}\n\n/***/ }),\n/* 53 */\n/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {\n\n\n\nObject.defineProperty(exports, \"__esModule\", ({\n  value: true\n}));\nexports.OpenTypeFileBuilder = void 0;\n\nvar _core_utils = __w_pdfjs_require__(8);\n\nvar _util = __w_pdfjs_require__(2);\n\nfunction writeInt16(dest, offset, num) {\n  dest[offset] = num >> 8 & 0xff;\n  dest[offset + 1] = num & 0xff;\n}\n\nfunction writeInt32(dest, offset, num) {\n  dest[offset] = num >> 24 & 0xff;\n  dest[offset + 1] = num >> 16 & 0xff;\n  dest[offset + 2] = num >> 8 & 0xff;\n  dest[offset + 3] = num & 0xff;\n}\n\nfunction writeData(dest, offset, data) {\n  if (data instanceof Uint8Array) {\n    dest.set(data, offset);\n  } else if (typeof data === \"string\") {\n    for (let i = 0, ii = data.length; i < ii; i++) {\n      dest[offset++] = data.charCodeAt(i) & 0xff;\n    }\n  } else {\n    for (let i = 0, ii = data.length; i < ii; i++) {\n      dest[offset++] = data[i] & 0xff;\n    }\n  }\n}\n\nconst OTF_HEADER_SIZE = 12;\nconst OTF_TABLE_ENTRY_SIZE = 16;\n\nclass OpenTypeFileBuilder {\n  constructor(sfnt) {\n    this.sfnt = sfnt;\n    this.tables = Object.create(null);\n  }\n\n  static getSearchParams(entriesCount, entrySize) {\n    let maxPower2 = 1,\n        log2 = 0;\n\n    while ((maxPower2 ^ entriesCount) > maxPower2) {\n      maxPower2 <<= 1;\n      log2++;\n    }\n\n    const searchRange = maxPower2 * entrySize;\n    return {\n      range: searchRange,\n      entry: log2,\n      rangeShift: entrySize * entriesCount - searchRange\n    };\n  }\n\n  toArray() {\n    let sfnt = this.sfnt;\n    const tables = this.tables;\n    const tablesNames = Object.keys(tables);\n    tablesNames.sort();\n    const numTables = tablesNames.length;\n    let i, j, jj, table, tableName;\n    let offset = OTF_HEADER_SIZE + numTables * OTF_TABLE_ENTRY_SIZE;\n    const tableOffsets = [offset];\n\n    for (i = 0; i < numTables; i++) {\n      table = tables[tablesNames[i]];\n      const paddedLength = (table.length + 3 & ~3) >>> 0;\n      offset += paddedLength;\n      tableOffsets.push(offset);\n    }\n\n    const file = new Uint8Array(offset);\n\n    for (i = 0; i < numTables; i++) {\n      table = tables[tablesNames[i]];\n      writeData(file, tableOffsets[i], table);\n    }\n\n    if (sfnt === \"true\") {\n      sfnt = (0, _util.string32)(0x00010000);\n    }\n\n    file[0] = sfnt.charCodeAt(0) & 0xff;\n    file[1] = sfnt.charCodeAt(1) & 0xff;\n    file[2] = sfnt.charCodeAt(2) & 0xff;\n    file[3] = sfnt.charCodeAt(3) & 0xff;\n    writeInt16(file, 4, numTables);\n    const searchParams = OpenTypeFileBuilder.getSearchParams(numTables, 16);\n    writeInt16(file, 6, searchParams.range);\n    writeInt16(file, 8, searchParams.entry);\n    writeInt16(file, 10, searchParams.rangeShift);\n    offset = OTF_HEADER_SIZE;\n\n    for (i = 0; i < numTables; i++) {\n      tableName = tablesNames[i];\n      file[offset] = tableName.charCodeAt(0) & 0xff;\n      file[offset + 1] = tableName.charCodeAt(1) & 0xff;\n      file[offset + 2] = tableName.charCodeAt(2) & 0xff;\n      file[offset + 3] = tableName.charCodeAt(3) & 0xff;\n      let checksum = 0;\n\n      for (j = tableOffsets[i], jj = tableOffsets[i + 1]; j < jj; j += 4) {\n        const quad = (0, _core_utils.readUint32)(file, j);\n        checksum = checksum + quad >>> 0;\n      }\n\n      writeInt32(file, offset + 4, checksum);\n      writeInt32(file, offset + 8, tableOffsets[i]);\n      writeInt32(file, offset + 12, tables[tableName].length);\n      offset += OTF_TABLE_ENTRY_SIZE;\n    }\n\n    return file;\n  }\n\n  addTable(tag, data) {\n    if (tag in this.tables) {\n      throw new Error(\"Table \" + tag + \" already exists\");\n    }\n\n    this.tables[tag] = data;\n  }\n\n}\n\nexports.OpenTypeFileBuilder = OpenTypeFileBuilder;\n\n/***/ }),\n/* 54 */\n/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {\n\n\n\nObject.defineProperty(exports, \"__esModule\", ({\n  value: true\n}));\nexports.Type1Font = void 0;\n\nvar _cff_parser = __w_pdfjs_require__(45);\n\nvar _fonts_utils = __w_pdfjs_require__(18);\n\nvar _core_utils = __w_pdfjs_require__(8);\n\nvar _stream = __w_pdfjs_require__(10);\n\nvar _type1_parser = __w_pdfjs_require__(55);\n\nvar _util = __w_pdfjs_require__(2);\n\nfunction findBlock(streamBytes, signature, startIndex) {\n  const streamBytesLength = streamBytes.length;\n  const signatureLength = signature.length;\n  const scanLength = streamBytesLength - signatureLength;\n  let i = startIndex,\n      found = false;\n\n  while (i < scanLength) {\n    let j = 0;\n\n    while (j < signatureLength && streamBytes[i + j] === signature[j]) {\n      j++;\n    }\n\n    if (j >= signatureLength) {\n      i += j;\n\n      while (i < streamBytesLength && (0, _core_utils.isWhiteSpace)(streamBytes[i])) {\n        i++;\n      }\n\n      found = true;\n      break;\n    }\n\n    i++;\n  }\n\n  return {\n    found,\n    length: i\n  };\n}\n\nfunction getHeaderBlock(stream, suggestedLength) {\n  const EEXEC_SIGNATURE = [0x65, 0x65, 0x78, 0x65, 0x63];\n  const streamStartPos = stream.pos;\n  let headerBytes, headerBytesLength, block;\n\n  try {\n    headerBytes = stream.getBytes(suggestedLength);\n    headerBytesLength = headerBytes.length;\n  } catch (ex) {}\n\n  if (headerBytesLength === suggestedLength) {\n    block = findBlock(headerBytes, EEXEC_SIGNATURE, suggestedLength - 2 * EEXEC_SIGNATURE.length);\n\n    if (block.found && block.length === suggestedLength) {\n      return {\n        stream: new _stream.Stream(headerBytes),\n        length: suggestedLength\n      };\n    }\n  }\n\n  (0, _util.warn)('Invalid \"Length1\" property in Type1 font -- trying to recover.');\n  stream.pos = streamStartPos;\n  const SCAN_BLOCK_LENGTH = 2048;\n  let actualLength;\n\n  while (true) {\n    const scanBytes = stream.peekBytes(SCAN_BLOCK_LENGTH);\n    block = findBlock(scanBytes, EEXEC_SIGNATURE, 0);\n\n    if (block.length === 0) {\n      break;\n    }\n\n    stream.pos += block.length;\n\n    if (block.found) {\n      actualLength = stream.pos - streamStartPos;\n      break;\n    }\n  }\n\n  stream.pos = streamStartPos;\n\n  if (actualLength) {\n    return {\n      stream: new _stream.Stream(stream.getBytes(actualLength)),\n      length: actualLength\n    };\n  }\n\n  (0, _util.warn)('Unable to recover \"Length1\" property in Type1 font -- using as is.');\n  return {\n    stream: new _stream.Stream(stream.getBytes(suggestedLength)),\n    length: suggestedLength\n  };\n}\n\nfunction getEexecBlock(stream, suggestedLength) {\n  const eexecBytes = stream.getBytes();\n  return {\n    stream: new _stream.Stream(eexecBytes),\n    length: eexecBytes.length\n  };\n}\n\nclass Type1Font {\n  constructor(name, file, properties) {\n    const PFB_HEADER_SIZE = 6;\n    let headerBlockLength = properties.length1;\n    let eexecBlockLength = properties.length2;\n    let pfbHeader = file.peekBytes(PFB_HEADER_SIZE);\n    const pfbHeaderPresent = pfbHeader[0] === 0x80 && pfbHeader[1] === 0x01;\n\n    if (pfbHeaderPresent) {\n      file.skip(PFB_HEADER_SIZE);\n      headerBlockLength = pfbHeader[5] << 24 | pfbHeader[4] << 16 | pfbHeader[3] << 8 | pfbHeader[2];\n    }\n\n    const headerBlock = getHeaderBlock(file, headerBlockLength);\n    const headerBlockParser = new _type1_parser.Type1Parser(headerBlock.stream, false, _fonts_utils.SEAC_ANALYSIS_ENABLED);\n    headerBlockParser.extractFontHeader(properties);\n\n    if (pfbHeaderPresent) {\n      pfbHeader = file.getBytes(PFB_HEADER_SIZE);\n      eexecBlockLength = pfbHeader[5] << 24 | pfbHeader[4] << 16 | pfbHeader[3] << 8 | pfbHeader[2];\n    }\n\n    const eexecBlock = getEexecBlock(file, eexecBlockLength);\n    const eexecBlockParser = new _type1_parser.Type1Parser(eexecBlock.stream, true, _fonts_utils.SEAC_ANALYSIS_ENABLED);\n    const data = eexecBlockParser.extractFontProgram(properties);\n\n    for (const key in data.properties) {\n      properties[key] = data.properties[key];\n    }\n\n    const charstrings = data.charstrings;\n    const type2Charstrings = this.getType2Charstrings(charstrings);\n    const subrs = this.getType2Subrs(data.subrs);\n    this.charstrings = charstrings;\n    this.data = this.wrap(name, type2Charstrings, this.charstrings, subrs, properties);\n    this.seacs = this.getSeacs(data.charstrings);\n  }\n\n  get numGlyphs() {\n    return this.charstrings.length + 1;\n  }\n\n  getCharset() {\n    const charset = [\".notdef\"];\n    const charstrings = this.charstrings;\n\n    for (let glyphId = 0; glyphId < charstrings.length; glyphId++) {\n      charset.push(charstrings[glyphId].glyphName);\n    }\n\n    return charset;\n  }\n\n  getGlyphMapping(properties) {\n    const charstrings = this.charstrings;\n\n    if (properties.composite) {\n      const charCodeToGlyphId = Object.create(null);\n\n      for (let glyphId = 0, charstringsLen = charstrings.length; glyphId < charstringsLen; glyphId++) {\n        const charCode = properties.cMap.charCodeOf(glyphId);\n        charCodeToGlyphId[charCode] = glyphId + 1;\n      }\n\n      return charCodeToGlyphId;\n    }\n\n    const glyphNames = [\".notdef\"];\n    let builtInEncoding, glyphId;\n\n    for (glyphId = 0; glyphId < charstrings.length; glyphId++) {\n      glyphNames.push(charstrings[glyphId].glyphName);\n    }\n\n    const encoding = properties.builtInEncoding;\n\n    if (encoding) {\n      builtInEncoding = Object.create(null);\n\n      for (const charCode in encoding) {\n        glyphId = glyphNames.indexOf(encoding[charCode]);\n\n        if (glyphId >= 0) {\n          builtInEncoding[charCode] = glyphId;\n        }\n      }\n    }\n\n    return (0, _fonts_utils.type1FontGlyphMapping)(properties, builtInEncoding, glyphNames);\n  }\n\n  hasGlyphId(id) {\n    if (id < 0 || id >= this.numGlyphs) {\n      return false;\n    }\n\n    if (id === 0) {\n      return true;\n    }\n\n    const glyph = this.charstrings[id - 1];\n    return glyph.charstring.length > 0;\n  }\n\n  getSeacs(charstrings) {\n    const seacMap = [];\n\n    for (let i = 0, ii = charstrings.length; i < ii; i++) {\n      const charstring = charstrings[i];\n\n      if (charstring.seac) {\n        seacMap[i + 1] = charstring.seac;\n      }\n    }\n\n    return seacMap;\n  }\n\n  getType2Charstrings(type1Charstrings) {\n    const type2Charstrings = [];\n\n    for (let i = 0, ii = type1Charstrings.length; i < ii; i++) {\n      type2Charstrings.push(type1Charstrings[i].charstring);\n    }\n\n    return type2Charstrings;\n  }\n\n  getType2Subrs(type1Subrs) {\n    let bias = 0;\n    const count = type1Subrs.length;\n\n    if (count < 1133) {\n      bias = 107;\n    } else if (count < 33769) {\n      bias = 1131;\n    } else {\n      bias = 32768;\n    }\n\n    const type2Subrs = [];\n    let i;\n\n    for (i = 0; i < bias; i++) {\n      type2Subrs.push([0x0b]);\n    }\n\n    for (i = 0; i < count; i++) {\n      type2Subrs.push(type1Subrs[i]);\n    }\n\n    return type2Subrs;\n  }\n\n  wrap(name, glyphs, charstrings, subrs, properties) {\n    const cff = new _cff_parser.CFF();\n    cff.header = new _cff_parser.CFFHeader(1, 0, 4, 4);\n    cff.names = [name];\n    const topDict = new _cff_parser.CFFTopDict();\n    topDict.setByName(\"version\", 391);\n    topDict.setByName(\"Notice\", 392);\n    topDict.setByName(\"FullName\", 393);\n    topDict.setByName(\"FamilyName\", 394);\n    topDict.setByName(\"Weight\", 395);\n    topDict.setByName(\"Encoding\", null);\n    topDict.setByName(\"FontMatrix\", properties.fontMatrix);\n    topDict.setByName(\"FontBBox\", properties.bbox);\n    topDict.setByName(\"charset\", null);\n    topDict.setByName(\"CharStrings\", null);\n    topDict.setByName(\"Private\", null);\n    cff.topDict = topDict;\n    const strings = new _cff_parser.CFFStrings();\n    strings.add(\"Version 0.11\");\n    strings.add(\"See original notice\");\n    strings.add(name);\n    strings.add(name);\n    strings.add(\"Medium\");\n    cff.strings = strings;\n    cff.globalSubrIndex = new _cff_parser.CFFIndex();\n    const count = glyphs.length;\n    const charsetArray = [\".notdef\"];\n    let i, ii;\n\n    for (i = 0; i < count; i++) {\n      const glyphName = charstrings[i].glyphName;\n\n      const index = _cff_parser.CFFStandardStrings.indexOf(glyphName);\n\n      if (index === -1) {\n        strings.add(glyphName);\n      }\n\n      charsetArray.push(glyphName);\n    }\n\n    cff.charset = new _cff_parser.CFFCharset(false, 0, charsetArray);\n    const charStringsIndex = new _cff_parser.CFFIndex();\n    charStringsIndex.add([0x8b, 0x0e]);\n\n    for (i = 0; i < count; i++) {\n      charStringsIndex.add(glyphs[i]);\n    }\n\n    cff.charStrings = charStringsIndex;\n    const privateDict = new _cff_parser.CFFPrivateDict();\n    privateDict.setByName(\"Subrs\", null);\n    const fields = [\"BlueValues\", \"OtherBlues\", \"FamilyBlues\", \"FamilyOtherBlues\", \"StemSnapH\", \"StemSnapV\", \"BlueShift\", \"BlueFuzz\", \"BlueScale\", \"LanguageGroup\", \"ExpansionFactor\", \"ForceBold\", \"StdHW\", \"StdVW\"];\n\n    for (i = 0, ii = fields.length; i < ii; i++) {\n      const field = fields[i];\n\n      if (!(field in properties.privateData)) {\n        continue;\n      }\n\n      const value = properties.privateData[field];\n\n      if (Array.isArray(value)) {\n        for (let j = value.length - 1; j > 0; j--) {\n          value[j] -= value[j - 1];\n        }\n      }\n\n      privateDict.setByName(field, value);\n    }\n\n    cff.topDict.privateDict = privateDict;\n    const subrIndex = new _cff_parser.CFFIndex();\n\n    for (i = 0, ii = subrs.length; i < ii; i++) {\n      subrIndex.add(subrs[i]);\n    }\n\n    privateDict.subrsIndex = subrIndex;\n    const compiler = new _cff_parser.CFFCompiler(cff);\n    return compiler.compile();\n  }\n\n}\n\nexports.Type1Font = Type1Font;\n\n/***/ }),\n/* 55 */\n/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {\n\n\n\nObject.defineProperty(exports, \"__esModule\", ({\n  value: true\n}));\nexports.Type1Parser = void 0;\n\nvar _encodings = __w_pdfjs_require__(19);\n\nvar _core_utils = __w_pdfjs_require__(8);\n\nvar _stream = __w_pdfjs_require__(10);\n\nvar _util = __w_pdfjs_require__(2);\n\nconst HINTING_ENABLED = false;\n\nconst Type1CharString = function Type1CharStringClosure() {\n  const COMMAND_MAP = {\n    hstem: [1],\n    vstem: [3],\n    vmoveto: [4],\n    rlineto: [5],\n    hlineto: [6],\n    vlineto: [7],\n    rrcurveto: [8],\n    callsubr: [10],\n    flex: [12, 35],\n    drop: [12, 18],\n    endchar: [14],\n    rmoveto: [21],\n    hmoveto: [22],\n    vhcurveto: [30],\n    hvcurveto: [31]\n  };\n\n  class Type1CharString {\n    constructor() {\n      this.width = 0;\n      this.lsb = 0;\n      this.flexing = false;\n      this.output = [];\n      this.stack = [];\n    }\n\n    convert(encoded, subrs, seacAnalysisEnabled) {\n      const count = encoded.length;\n      let error = false;\n      let wx, sbx, subrNumber;\n\n      for (let i = 0; i < count; i++) {\n        let value = encoded[i];\n\n        if (value < 32) {\n          if (value === 12) {\n            value = (value << 8) + encoded[++i];\n          }\n\n          switch (value) {\n            case 1:\n              if (!HINTING_ENABLED) {\n                this.stack = [];\n                break;\n              }\n\n              error = this.executeCommand(2, COMMAND_MAP.hstem);\n              break;\n\n            case 3:\n              if (!HINTING_ENABLED) {\n                this.stack = [];\n                break;\n              }\n\n              error = this.executeCommand(2, COMMAND_MAP.vstem);\n              break;\n\n            case 4:\n              if (this.flexing) {\n                if (this.stack.length < 1) {\n                  error = true;\n                  break;\n                }\n\n                const dy = this.stack.pop();\n                this.stack.push(0, dy);\n                break;\n              }\n\n              error = this.executeCommand(1, COMMAND_MAP.vmoveto);\n              break;\n\n            case 5:\n              error = this.executeCommand(2, COMMAND_MAP.rlineto);\n              break;\n\n            case 6:\n              error = this.executeCommand(1, COMMAND_MAP.hlineto);\n              break;\n\n            case 7:\n              error = this.executeCommand(1, COMMAND_MAP.vlineto);\n              break;\n\n            case 8:\n              error = this.executeCommand(6, COMMAND_MAP.rrcurveto);\n              break;\n\n            case 9:\n              this.stack = [];\n              break;\n\n            case 10:\n              if (this.stack.length < 1) {\n                error = true;\n                break;\n              }\n\n              subrNumber = this.stack.pop();\n\n              if (!subrs[subrNumber]) {\n                error = true;\n                break;\n              }\n\n              error = this.convert(subrs[subrNumber], subrs, seacAnalysisEnabled);\n              break;\n\n            case 11:\n              return error;\n\n            case 13:\n              if (this.stack.length < 2) {\n                error = true;\n                break;\n              }\n\n              wx = this.stack.pop();\n              sbx = this.stack.pop();\n              this.lsb = sbx;\n              this.width = wx;\n              this.stack.push(wx, sbx);\n              error = this.executeCommand(2, COMMAND_MAP.hmoveto);\n              break;\n\n            case 14:\n              this.output.push(COMMAND_MAP.endchar[0]);\n              break;\n\n            case 21:\n              if (this.flexing) {\n                break;\n              }\n\n              error = this.executeCommand(2, COMMAND_MAP.rmoveto);\n              break;\n\n            case 22:\n              if (this.flexing) {\n                this.stack.push(0);\n                break;\n              }\n\n              error = this.executeCommand(1, COMMAND_MAP.hmoveto);\n              break;\n\n            case 30:\n              error = this.executeCommand(4, COMMAND_MAP.vhcurveto);\n              break;\n\n            case 31:\n              error = this.executeCommand(4, COMMAND_MAP.hvcurveto);\n              break;\n\n            case (12 << 8) + 0:\n              this.stack = [];\n              break;\n\n            case (12 << 8) + 1:\n              if (!HINTING_ENABLED) {\n                this.stack = [];\n                break;\n              }\n\n              error = this.executeCommand(2, COMMAND_MAP.vstem);\n              break;\n\n            case (12 << 8) + 2:\n              if (!HINTING_ENABLED) {\n                this.stack = [];\n                break;\n              }\n\n              error = this.executeCommand(2, COMMAND_MAP.hstem);\n              break;\n\n            case (12 << 8) + 6:\n              if (seacAnalysisEnabled) {\n                const asb = this.stack[this.stack.length - 5];\n                this.seac = this.stack.splice(-4, 4);\n                this.seac[0] += this.lsb - asb;\n                error = this.executeCommand(0, COMMAND_MAP.endchar);\n              } else {\n                error = this.executeCommand(4, COMMAND_MAP.endchar);\n              }\n\n              break;\n\n            case (12 << 8) + 7:\n              if (this.stack.length < 4) {\n                error = true;\n                break;\n              }\n\n              this.stack.pop();\n              wx = this.stack.pop();\n              const sby = this.stack.pop();\n              sbx = this.stack.pop();\n              this.lsb = sbx;\n              this.width = wx;\n              this.stack.push(wx, sbx, sby);\n              error = this.executeCommand(3, COMMAND_MAP.rmoveto);\n              break;\n\n            case (12 << 8) + 12:\n              if (this.stack.length < 2) {\n                error = true;\n                break;\n              }\n\n              const num2 = this.stack.pop();\n              const num1 = this.stack.pop();\n              this.stack.push(num1 / num2);\n              break;\n\n            case (12 << 8) + 16:\n              if (this.stack.length < 2) {\n                error = true;\n                break;\n              }\n\n              subrNumber = this.stack.pop();\n              const numArgs = this.stack.pop();\n\n              if (subrNumber === 0 && numArgs === 3) {\n                const flexArgs = this.stack.splice(this.stack.length - 17, 17);\n                this.stack.push(flexArgs[2] + flexArgs[0], flexArgs[3] + flexArgs[1], flexArgs[4], flexArgs[5], flexArgs[6], flexArgs[7], flexArgs[8], flexArgs[9], flexArgs[10], flexArgs[11], flexArgs[12], flexArgs[13], flexArgs[14]);\n                error = this.executeCommand(13, COMMAND_MAP.flex, true);\n                this.flexing = false;\n                this.stack.push(flexArgs[15], flexArgs[16]);\n              } else if (subrNumber === 1 && numArgs === 0) {\n                this.flexing = true;\n              }\n\n              break;\n\n            case (12 << 8) + 17:\n              break;\n\n            case (12 << 8) + 33:\n              this.stack = [];\n              break;\n\n            default:\n              (0, _util.warn)('Unknown type 1 charstring command of \"' + value + '\"');\n              break;\n          }\n\n          if (error) {\n            break;\n          }\n\n          continue;\n        } else if (value <= 246) {\n          value -= 139;\n        } else if (value <= 250) {\n          value = (value - 247) * 256 + encoded[++i] + 108;\n        } else if (value <= 254) {\n          value = -((value - 251) * 256) - encoded[++i] - 108;\n        } else {\n          value = (encoded[++i] & 0xff) << 24 | (encoded[++i] & 0xff) << 16 | (encoded[++i] & 0xff) << 8 | (encoded[++i] & 0xff) << 0;\n        }\n\n        this.stack.push(value);\n      }\n\n      return error;\n    }\n\n    executeCommand(howManyArgs, command, keepStack) {\n      const stackLength = this.stack.length;\n\n      if (howManyArgs > stackLength) {\n        return true;\n      }\n\n      const start = stackLength - howManyArgs;\n\n      for (let i = start; i < stackLength; i++) {\n        let value = this.stack[i];\n\n        if (Number.isInteger(value)) {\n          this.output.push(28, value >> 8 & 0xff, value & 0xff);\n        } else {\n          value = 65536 * value | 0;\n          this.output.push(255, value >> 24 & 0xff, value >> 16 & 0xff, value >> 8 & 0xff, value & 0xff);\n        }\n      }\n\n      this.output.push.apply(this.output, command);\n\n      if (keepStack) {\n        this.stack.splice(start, howManyArgs);\n      } else {\n        this.stack.length = 0;\n      }\n\n      return false;\n    }\n\n  }\n\n  return Type1CharString;\n}();\n\nconst Type1Parser = function Type1ParserClosure() {\n  const EEXEC_ENCRYPT_KEY = 55665;\n  const CHAR_STRS_ENCRYPT_KEY = 4330;\n\n  function isHexDigit(code) {\n    return code >= 48 && code <= 57 || code >= 65 && code <= 70 || code >= 97 && code <= 102;\n  }\n\n  function decrypt(data, key, discardNumber) {\n    if (discardNumber >= data.length) {\n      return new Uint8Array(0);\n    }\n\n    const c1 = 52845,\n          c2 = 22719;\n    let r = key | 0,\n        i,\n        j;\n\n    for (i = 0; i < discardNumber; i++) {\n      r = (data[i] + r) * c1 + c2 & (1 << 16) - 1;\n    }\n\n    const count = data.length - discardNumber;\n    const decrypted = new Uint8Array(count);\n\n    for (i = discardNumber, j = 0; j < count; i++, j++) {\n      const value = data[i];\n      decrypted[j] = value ^ r >> 8;\n      r = (value + r) * c1 + c2 & (1 << 16) - 1;\n    }\n\n    return decrypted;\n  }\n\n  function decryptAscii(data, key, discardNumber) {\n    const c1 = 52845,\n          c2 = 22719;\n    let r = key | 0;\n    const count = data.length,\n          maybeLength = count >>> 1;\n    const decrypted = new Uint8Array(maybeLength);\n    let i, j;\n\n    for (i = 0, j = 0; i < count; i++) {\n      const digit1 = data[i];\n\n      if (!isHexDigit(digit1)) {\n        continue;\n      }\n\n      i++;\n      let digit2;\n\n      while (i < count && !isHexDigit(digit2 = data[i])) {\n        i++;\n      }\n\n      if (i < count) {\n        const value = parseInt(String.fromCharCode(digit1, digit2), 16);\n        decrypted[j++] = value ^ r >> 8;\n        r = (value + r) * c1 + c2 & (1 << 16) - 1;\n      }\n    }\n\n    return decrypted.slice(discardNumber, j);\n  }\n\n  function isSpecial(c) {\n    return c === 0x2f || c === 0x5b || c === 0x5d || c === 0x7b || c === 0x7d || c === 0x28 || c === 0x29;\n  }\n\n  class Type1Parser {\n    constructor(stream, encrypted, seacAnalysisEnabled) {\n      if (encrypted) {\n        const data = stream.getBytes();\n        const isBinary = !((isHexDigit(data[0]) || (0, _core_utils.isWhiteSpace)(data[0])) && isHexDigit(data[1]) && isHexDigit(data[2]) && isHexDigit(data[3]) && isHexDigit(data[4]) && isHexDigit(data[5]) && isHexDigit(data[6]) && isHexDigit(data[7]));\n        stream = new _stream.Stream(isBinary ? decrypt(data, EEXEC_ENCRYPT_KEY, 4) : decryptAscii(data, EEXEC_ENCRYPT_KEY, 4));\n      }\n\n      this.seacAnalysisEnabled = !!seacAnalysisEnabled;\n      this.stream = stream;\n      this.nextChar();\n    }\n\n    readNumberArray() {\n      this.getToken();\n      const array = [];\n\n      while (true) {\n        const token = this.getToken();\n\n        if (token === null || token === \"]\" || token === \"}\") {\n          break;\n        }\n\n        array.push(parseFloat(token || 0));\n      }\n\n      return array;\n    }\n\n    readNumber() {\n      const token = this.getToken();\n      return parseFloat(token || 0);\n    }\n\n    readInt() {\n      const token = this.getToken();\n      return parseInt(token || 0, 10) | 0;\n    }\n\n    readBoolean() {\n      const token = this.getToken();\n      return token === \"true\" ? 1 : 0;\n    }\n\n    nextChar() {\n      return this.currentChar = this.stream.getByte();\n    }\n\n    prevChar() {\n      this.stream.skip(-2);\n      return this.currentChar = this.stream.getByte();\n    }\n\n    getToken() {\n      let comment = false;\n      let ch = this.currentChar;\n\n      while (true) {\n        if (ch === -1) {\n          return null;\n        }\n\n        if (comment) {\n          if (ch === 0x0a || ch === 0x0d) {\n            comment = false;\n          }\n        } else if (ch === 0x25) {\n          comment = true;\n        } else if (!(0, _core_utils.isWhiteSpace)(ch)) {\n          break;\n        }\n\n        ch = this.nextChar();\n      }\n\n      if (isSpecial(ch)) {\n        this.nextChar();\n        return String.fromCharCode(ch);\n      }\n\n      let token = \"\";\n\n      do {\n        token += String.fromCharCode(ch);\n        ch = this.nextChar();\n      } while (ch >= 0 && !(0, _core_utils.isWhiteSpace)(ch) && !isSpecial(ch));\n\n      return token;\n    }\n\n    readCharStrings(bytes, lenIV) {\n      if (lenIV === -1) {\n        return bytes;\n      }\n\n      return decrypt(bytes, CHAR_STRS_ENCRYPT_KEY, lenIV);\n    }\n\n    extractFontProgram(properties) {\n      const stream = this.stream;\n      const subrs = [],\n            charstrings = [];\n      const privateData = Object.create(null);\n      privateData.lenIV = 4;\n      const program = {\n        subrs: [],\n        charstrings: [],\n        properties: {\n          privateData\n        }\n      };\n      let token, length, data, lenIV, encoded;\n\n      while ((token = this.getToken()) !== null) {\n        if (token !== \"/\") {\n          continue;\n        }\n\n        token = this.getToken();\n\n        switch (token) {\n          case \"CharStrings\":\n            this.getToken();\n            this.getToken();\n            this.getToken();\n            this.getToken();\n\n            while (true) {\n              token = this.getToken();\n\n              if (token === null || token === \"end\") {\n                break;\n              }\n\n              if (token !== \"/\") {\n                continue;\n              }\n\n              const glyph = this.getToken();\n              length = this.readInt();\n              this.getToken();\n              data = length > 0 ? stream.getBytes(length) : new Uint8Array(0);\n              lenIV = program.properties.privateData.lenIV;\n              encoded = this.readCharStrings(data, lenIV);\n              this.nextChar();\n              token = this.getToken();\n\n              if (token === \"noaccess\") {\n                this.getToken();\n              } else if (token === \"/\") {\n                this.prevChar();\n              }\n\n              charstrings.push({\n                glyph,\n                encoded\n              });\n            }\n\n            break;\n\n          case \"Subrs\":\n            this.readInt();\n            this.getToken();\n\n            while (this.getToken() === \"dup\") {\n              const index = this.readInt();\n              length = this.readInt();\n              this.getToken();\n              data = length > 0 ? stream.getBytes(length) : new Uint8Array(0);\n              lenIV = program.properties.privateData.lenIV;\n              encoded = this.readCharStrings(data, lenIV);\n              this.nextChar();\n              token = this.getToken();\n\n              if (token === \"noaccess\") {\n                this.getToken();\n              }\n\n              subrs[index] = encoded;\n            }\n\n            break;\n\n          case \"BlueValues\":\n          case \"OtherBlues\":\n          case \"FamilyBlues\":\n          case \"FamilyOtherBlues\":\n            const blueArray = this.readNumberArray();\n\n            if (blueArray.length > 0 && blueArray.length % 2 === 0 && HINTING_ENABLED) {\n              program.properties.privateData[token] = blueArray;\n            }\n\n            break;\n\n          case \"StemSnapH\":\n          case \"StemSnapV\":\n            program.properties.privateData[token] = this.readNumberArray();\n            break;\n\n          case \"StdHW\":\n          case \"StdVW\":\n            program.properties.privateData[token] = this.readNumberArray()[0];\n            break;\n\n          case \"BlueShift\":\n          case \"lenIV\":\n          case \"BlueFuzz\":\n          case \"BlueScale\":\n          case \"LanguageGroup\":\n          case \"ExpansionFactor\":\n            program.properties.privateData[token] = this.readNumber();\n            break;\n\n          case \"ForceBold\":\n            program.properties.privateData[token] = this.readBoolean();\n            break;\n        }\n      }\n\n      for (let i = 0; i < charstrings.length; i++) {\n        const glyph = charstrings[i].glyph;\n        encoded = charstrings[i].encoded;\n        const charString = new Type1CharString();\n        const error = charString.convert(encoded, subrs, this.seacAnalysisEnabled);\n        let output = charString.output;\n\n        if (error) {\n          output = [14];\n        }\n\n        const charStringObject = {\n          glyphName: glyph,\n          charstring: output,\n          width: charString.width,\n          lsb: charString.lsb,\n          seac: charString.seac\n        };\n\n        if (glyph === \".notdef\") {\n          program.charstrings.unshift(charStringObject);\n        } else {\n          program.charstrings.push(charStringObject);\n        }\n\n        if (properties.builtInEncoding) {\n          const index = properties.builtInEncoding.indexOf(glyph);\n\n          if (index > -1 && properties.widths[index] === undefined && index >= properties.firstChar && index <= properties.lastChar) {\n            properties.widths[index] = charString.width;\n          }\n        }\n      }\n\n      return program;\n    }\n\n    extractFontHeader(properties) {\n      let token;\n\n      while ((token = this.getToken()) !== null) {\n        if (token !== \"/\") {\n          continue;\n        }\n\n        token = this.getToken();\n\n        switch (token) {\n          case \"FontMatrix\":\n            const matrix = this.readNumberArray();\n            properties.fontMatrix = matrix;\n            break;\n\n          case \"Encoding\":\n            const encodingArg = this.getToken();\n            let encoding;\n\n            if (!/^\\d+$/.test(encodingArg)) {\n              encoding = (0, _encodings.getEncoding)(encodingArg);\n            } else {\n              encoding = [];\n              const size = parseInt(encodingArg, 10) | 0;\n              this.getToken();\n\n              for (let j = 0; j < size; j++) {\n                token = this.getToken();\n\n                while (token !== \"dup\" && token !== \"def\") {\n                  token = this.getToken();\n\n                  if (token === null) {\n                    return;\n                  }\n                }\n\n                if (token === \"def\") {\n                  break;\n                }\n\n                const index = this.readInt();\n                this.getToken();\n                const glyph = this.getToken();\n                encoding[index] = glyph;\n                this.getToken();\n              }\n            }\n\n            properties.builtInEncoding = encoding;\n            break;\n\n          case \"FontBBox\":\n            const fontBBox = this.readNumberArray();\n            properties.ascent = Math.max(fontBBox[3], fontBBox[1]);\n            properties.descent = Math.min(fontBBox[1], fontBBox[3]);\n            properties.ascentScaled = true;\n            break;\n        }\n      }\n    }\n\n  }\n\n  return Type1Parser;\n}();\n\nexports.Type1Parser = Type1Parser;\n\n/***/ }),\n/* 56 */\n/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {\n\n\n\nObject.defineProperty(exports, \"__esModule\", ({\n  value: true\n}));\nexports.Pattern = void 0;\nexports.getTilingPatternIR = getTilingPatternIR;\n\nvar _util = __w_pdfjs_require__(2);\n\nvar _base_stream = __w_pdfjs_require__(9);\n\nvar _colorspace = __w_pdfjs_require__(24);\n\nvar _core_utils = __w_pdfjs_require__(8);\n\nconst ShadingType = {\n  FUNCTION_BASED: 1,\n  AXIAL: 2,\n  RADIAL: 3,\n  FREE_FORM_MESH: 4,\n  LATTICE_FORM_MESH: 5,\n  COONS_PATCH_MESH: 6,\n  TENSOR_PATCH_MESH: 7\n};\n\nclass Pattern {\n  constructor() {\n    (0, _util.unreachable)(\"Cannot initialize Pattern.\");\n  }\n\n  static parseShading(shading, xref, res, handler, pdfFunctionFactory, localColorSpaceCache) {\n    const dict = shading instanceof _base_stream.BaseStream ? shading.dict : shading;\n    const type = dict.get(\"ShadingType\");\n\n    try {\n      switch (type) {\n        case ShadingType.AXIAL:\n        case ShadingType.RADIAL:\n          return new RadialAxialShading(dict, xref, res, pdfFunctionFactory, localColorSpaceCache);\n\n        case ShadingType.FREE_FORM_MESH:\n        case ShadingType.LATTICE_FORM_MESH:\n        case ShadingType.COONS_PATCH_MESH:\n        case ShadingType.TENSOR_PATCH_MESH:\n          return new MeshShading(shading, xref, res, pdfFunctionFactory, localColorSpaceCache);\n\n        default:\n          throw new _util.FormatError(\"Unsupported ShadingType: \" + type);\n      }\n    } catch (ex) {\n      if (ex instanceof _core_utils.MissingDataException) {\n        throw ex;\n      }\n\n      handler.send(\"UnsupportedFeature\", {\n        featureId: _util.UNSUPPORTED_FEATURES.shadingPattern\n      });\n      (0, _util.warn)(ex);\n      return new DummyShading();\n    }\n  }\n\n}\n\nexports.Pattern = Pattern;\n\nclass BaseShading {\n  static get SMALL_NUMBER() {\n    return (0, _util.shadow)(this, \"SMALL_NUMBER\", 1e-6);\n  }\n\n  constructor() {\n    if (this.constructor === BaseShading) {\n      (0, _util.unreachable)(\"Cannot initialize BaseShading.\");\n    }\n  }\n\n  getIR() {\n    (0, _util.unreachable)(\"Abstract method `getIR` called.\");\n  }\n\n}\n\nclass RadialAxialShading extends BaseShading {\n  constructor(dict, xref, resources, pdfFunctionFactory, localColorSpaceCache) {\n    super();\n    this.coordsArr = dict.getArray(\"Coords\");\n    this.shadingType = dict.get(\"ShadingType\");\n\n    const cs = _colorspace.ColorSpace.parse({\n      cs: dict.getRaw(\"CS\") || dict.getRaw(\"ColorSpace\"),\n      xref,\n      resources,\n      pdfFunctionFactory,\n      localColorSpaceCache\n    });\n\n    const bbox = dict.getArray(\"BBox\");\n\n    if (Array.isArray(bbox) && bbox.length === 4) {\n      this.bbox = _util.Util.normalizeRect(bbox);\n    } else {\n      this.bbox = null;\n    }\n\n    let t0 = 0.0,\n        t1 = 1.0;\n\n    if (dict.has(\"Domain\")) {\n      const domainArr = dict.getArray(\"Domain\");\n      t0 = domainArr[0];\n      t1 = domainArr[1];\n    }\n\n    let extendStart = false,\n        extendEnd = false;\n\n    if (dict.has(\"Extend\")) {\n      const extendArr = dict.getArray(\"Extend\");\n      extendStart = extendArr[0];\n      extendEnd = extendArr[1];\n    }\n\n    if (this.shadingType === ShadingType.RADIAL && (!extendStart || !extendEnd)) {\n      const [x1, y1, r1, x2, y2, r2] = this.coordsArr;\n      const distance = Math.hypot(x1 - x2, y1 - y2);\n\n      if (r1 <= r2 + distance && r2 <= r1 + distance) {\n        (0, _util.warn)(\"Unsupported radial gradient.\");\n      }\n    }\n\n    this.extendStart = extendStart;\n    this.extendEnd = extendEnd;\n    const fnObj = dict.getRaw(\"Function\");\n    const fn = pdfFunctionFactory.createFromArray(fnObj);\n    const NUMBER_OF_SAMPLES = 10;\n    const step = (t1 - t0) / NUMBER_OF_SAMPLES;\n    const colorStops = this.colorStops = [];\n\n    if (t0 >= t1 || step <= 0) {\n      (0, _util.info)(\"Bad shading domain.\");\n      return;\n    }\n\n    const color = new Float32Array(cs.numComps),\n          ratio = new Float32Array(1);\n    let rgbColor;\n\n    for (let i = 0; i <= NUMBER_OF_SAMPLES; i++) {\n      ratio[0] = t0 + i * step;\n      fn(ratio, 0, color, 0);\n      rgbColor = cs.getRgb(color, 0);\n\n      const cssColor = _util.Util.makeHexColor(rgbColor[0], rgbColor[1], rgbColor[2]);\n\n      colorStops.push([i / NUMBER_OF_SAMPLES, cssColor]);\n    }\n\n    let background = \"transparent\";\n\n    if (dict.has(\"Background\")) {\n      rgbColor = cs.getRgb(dict.get(\"Background\"), 0);\n      background = _util.Util.makeHexColor(rgbColor[0], rgbColor[1], rgbColor[2]);\n    }\n\n    if (!extendStart) {\n      colorStops.unshift([0, background]);\n      colorStops[1][0] += BaseShading.SMALL_NUMBER;\n    }\n\n    if (!extendEnd) {\n      colorStops[colorStops.length - 1][0] -= BaseShading.SMALL_NUMBER;\n      colorStops.push([1, background]);\n    }\n\n    this.colorStops = colorStops;\n  }\n\n  getIR() {\n    const coordsArr = this.coordsArr;\n    const shadingType = this.shadingType;\n    let type, p0, p1, r0, r1;\n\n    if (shadingType === ShadingType.AXIAL) {\n      p0 = [coordsArr[0], coordsArr[1]];\n      p1 = [coordsArr[2], coordsArr[3]];\n      r0 = null;\n      r1 = null;\n      type = \"axial\";\n    } else if (shadingType === ShadingType.RADIAL) {\n      p0 = [coordsArr[0], coordsArr[1]];\n      p1 = [coordsArr[3], coordsArr[4]];\n      r0 = coordsArr[2];\n      r1 = coordsArr[5];\n      type = \"radial\";\n    } else {\n      (0, _util.unreachable)(`getPattern type unknown: ${shadingType}`);\n    }\n\n    return [\"RadialAxial\", type, this.bbox, this.colorStops, p0, p1, r0, r1];\n  }\n\n}\n\nclass MeshStreamReader {\n  constructor(stream, context) {\n    this.stream = stream;\n    this.context = context;\n    this.buffer = 0;\n    this.bufferLength = 0;\n    const numComps = context.numComps;\n    this.tmpCompsBuf = new Float32Array(numComps);\n    const csNumComps = context.colorSpace.numComps;\n    this.tmpCsCompsBuf = context.colorFn ? new Float32Array(csNumComps) : this.tmpCompsBuf;\n  }\n\n  get hasData() {\n    if (this.stream.end) {\n      return this.stream.pos < this.stream.end;\n    }\n\n    if (this.bufferLength > 0) {\n      return true;\n    }\n\n    const nextByte = this.stream.getByte();\n\n    if (nextByte < 0) {\n      return false;\n    }\n\n    this.buffer = nextByte;\n    this.bufferLength = 8;\n    return true;\n  }\n\n  readBits(n) {\n    let buffer = this.buffer;\n    let bufferLength = this.bufferLength;\n\n    if (n === 32) {\n      if (bufferLength === 0) {\n        return (this.stream.getByte() << 24 | this.stream.getByte() << 16 | this.stream.getByte() << 8 | this.stream.getByte()) >>> 0;\n      }\n\n      buffer = buffer << 24 | this.stream.getByte() << 16 | this.stream.getByte() << 8 | this.stream.getByte();\n      const nextByte = this.stream.getByte();\n      this.buffer = nextByte & (1 << bufferLength) - 1;\n      return (buffer << 8 - bufferLength | (nextByte & 0xff) >> bufferLength) >>> 0;\n    }\n\n    if (n === 8 && bufferLength === 0) {\n      return this.stream.getByte();\n    }\n\n    while (bufferLength < n) {\n      buffer = buffer << 8 | this.stream.getByte();\n      bufferLength += 8;\n    }\n\n    bufferLength -= n;\n    this.bufferLength = bufferLength;\n    this.buffer = buffer & (1 << bufferLength) - 1;\n    return buffer >> bufferLength;\n  }\n\n  align() {\n    this.buffer = 0;\n    this.bufferLength = 0;\n  }\n\n  readFlag() {\n    return this.readBits(this.context.bitsPerFlag);\n  }\n\n  readCoordinate() {\n    const bitsPerCoordinate = this.context.bitsPerCoordinate;\n    const xi = this.readBits(bitsPerCoordinate);\n    const yi = this.readBits(bitsPerCoordinate);\n    const decode = this.context.decode;\n    const scale = bitsPerCoordinate < 32 ? 1 / ((1 << bitsPerCoordinate) - 1) : 2.3283064365386963e-10;\n    return [xi * scale * (decode[1] - decode[0]) + decode[0], yi * scale * (decode[3] - decode[2]) + decode[2]];\n  }\n\n  readComponents() {\n    const numComps = this.context.numComps;\n    const bitsPerComponent = this.context.bitsPerComponent;\n    const scale = bitsPerComponent < 32 ? 1 / ((1 << bitsPerComponent) - 1) : 2.3283064365386963e-10;\n    const decode = this.context.decode;\n    const components = this.tmpCompsBuf;\n\n    for (let i = 0, j = 4; i < numComps; i++, j += 2) {\n      const ci = this.readBits(bitsPerComponent);\n      components[i] = ci * scale * (decode[j + 1] - decode[j]) + decode[j];\n    }\n\n    const color = this.tmpCsCompsBuf;\n\n    if (this.context.colorFn) {\n      this.context.colorFn(components, 0, color, 0);\n    }\n\n    return this.context.colorSpace.getRgb(color, 0);\n  }\n\n}\n\nconst getB = function getBClosure() {\n  function buildB(count) {\n    const lut = [];\n\n    for (let i = 0; i <= count; i++) {\n      const t = i / count,\n            t_ = 1 - t;\n      lut.push(new Float32Array([t_ * t_ * t_, 3 * t * t_ * t_, 3 * t * t * t_, t * t * t]));\n    }\n\n    return lut;\n  }\n\n  const cache = [];\n  return function (count) {\n    if (!cache[count]) {\n      cache[count] = buildB(count);\n    }\n\n    return cache[count];\n  };\n}();\n\nclass MeshShading extends BaseShading {\n  static get MIN_SPLIT_PATCH_CHUNKS_AMOUNT() {\n    return (0, _util.shadow)(this, \"MIN_SPLIT_PATCH_CHUNKS_AMOUNT\", 3);\n  }\n\n  static get MAX_SPLIT_PATCH_CHUNKS_AMOUNT() {\n    return (0, _util.shadow)(this, \"MAX_SPLIT_PATCH_CHUNKS_AMOUNT\", 20);\n  }\n\n  static get TRIANGLE_DENSITY() {\n    return (0, _util.shadow)(this, \"TRIANGLE_DENSITY\", 20);\n  }\n\n  constructor(stream, xref, resources, pdfFunctionFactory, localColorSpaceCache) {\n    super();\n\n    if (!(stream instanceof _base_stream.BaseStream)) {\n      throw new _util.FormatError(\"Mesh data is not a stream\");\n    }\n\n    const dict = stream.dict;\n    this.shadingType = dict.get(\"ShadingType\");\n    const bbox = dict.getArray(\"BBox\");\n\n    if (Array.isArray(bbox) && bbox.length === 4) {\n      this.bbox = _util.Util.normalizeRect(bbox);\n    } else {\n      this.bbox = null;\n    }\n\n    const cs = _colorspace.ColorSpace.parse({\n      cs: dict.getRaw(\"CS\") || dict.getRaw(\"ColorSpace\"),\n      xref,\n      resources,\n      pdfFunctionFactory,\n      localColorSpaceCache\n    });\n\n    this.background = dict.has(\"Background\") ? cs.getRgb(dict.get(\"Background\"), 0) : null;\n    const fnObj = dict.getRaw(\"Function\");\n    const fn = fnObj ? pdfFunctionFactory.createFromArray(fnObj) : null;\n    this.coords = [];\n    this.colors = [];\n    this.figures = [];\n    const decodeContext = {\n      bitsPerCoordinate: dict.get(\"BitsPerCoordinate\"),\n      bitsPerComponent: dict.get(\"BitsPerComponent\"),\n      bitsPerFlag: dict.get(\"BitsPerFlag\"),\n      decode: dict.getArray(\"Decode\"),\n      colorFn: fn,\n      colorSpace: cs,\n      numComps: fn ? 1 : cs.numComps\n    };\n    const reader = new MeshStreamReader(stream, decodeContext);\n    let patchMesh = false;\n\n    switch (this.shadingType) {\n      case ShadingType.FREE_FORM_MESH:\n        this._decodeType4Shading(reader);\n\n        break;\n\n      case ShadingType.LATTICE_FORM_MESH:\n        const verticesPerRow = dict.get(\"VerticesPerRow\") | 0;\n\n        if (verticesPerRow < 2) {\n          throw new _util.FormatError(\"Invalid VerticesPerRow\");\n        }\n\n        this._decodeType5Shading(reader, verticesPerRow);\n\n        break;\n\n      case ShadingType.COONS_PATCH_MESH:\n        this._decodeType6Shading(reader);\n\n        patchMesh = true;\n        break;\n\n      case ShadingType.TENSOR_PATCH_MESH:\n        this._decodeType7Shading(reader);\n\n        patchMesh = true;\n        break;\n\n      default:\n        (0, _util.unreachable)(\"Unsupported mesh type.\");\n        break;\n    }\n\n    if (patchMesh) {\n      this._updateBounds();\n\n      for (let i = 0, ii = this.figures.length; i < ii; i++) {\n        this._buildFigureFromPatch(i);\n      }\n    }\n\n    this._updateBounds();\n\n    this._packData();\n  }\n\n  _decodeType4Shading(reader) {\n    const coords = this.coords;\n    const colors = this.colors;\n    const operators = [];\n    const ps = [];\n    let verticesLeft = 0;\n\n    while (reader.hasData) {\n      const f = reader.readFlag();\n      const coord = reader.readCoordinate();\n      const color = reader.readComponents();\n\n      if (verticesLeft === 0) {\n        if (!(0 <= f && f <= 2)) {\n          throw new _util.FormatError(\"Unknown type4 flag\");\n        }\n\n        switch (f) {\n          case 0:\n            verticesLeft = 3;\n            break;\n\n          case 1:\n            ps.push(ps[ps.length - 2], ps[ps.length - 1]);\n            verticesLeft = 1;\n            break;\n\n          case 2:\n            ps.push(ps[ps.length - 3], ps[ps.length - 1]);\n            verticesLeft = 1;\n            break;\n        }\n\n        operators.push(f);\n      }\n\n      ps.push(coords.length);\n      coords.push(coord);\n      colors.push(color);\n      verticesLeft--;\n      reader.align();\n    }\n\n    this.figures.push({\n      type: \"triangles\",\n      coords: new Int32Array(ps),\n      colors: new Int32Array(ps)\n    });\n  }\n\n  _decodeType5Shading(reader, verticesPerRow) {\n    const coords = this.coords;\n    const colors = this.colors;\n    const ps = [];\n\n    while (reader.hasData) {\n      const coord = reader.readCoordinate();\n      const color = reader.readComponents();\n      ps.push(coords.length);\n      coords.push(coord);\n      colors.push(color);\n    }\n\n    this.figures.push({\n      type: \"lattice\",\n      coords: new Int32Array(ps),\n      colors: new Int32Array(ps),\n      verticesPerRow\n    });\n  }\n\n  _decodeType6Shading(reader) {\n    const coords = this.coords;\n    const colors = this.colors;\n    const ps = new Int32Array(16);\n    const cs = new Int32Array(4);\n\n    while (reader.hasData) {\n      const f = reader.readFlag();\n\n      if (!(0 <= f && f <= 3)) {\n        throw new _util.FormatError(\"Unknown type6 flag\");\n      }\n\n      const pi = coords.length;\n\n      for (let i = 0, ii = f !== 0 ? 8 : 12; i < ii; i++) {\n        coords.push(reader.readCoordinate());\n      }\n\n      const ci = colors.length;\n\n      for (let i = 0, ii = f !== 0 ? 2 : 4; i < ii; i++) {\n        colors.push(reader.readComponents());\n      }\n\n      let tmp1, tmp2, tmp3, tmp4;\n\n      switch (f) {\n        case 0:\n          ps[12] = pi + 3;\n          ps[13] = pi + 4;\n          ps[14] = pi + 5;\n          ps[15] = pi + 6;\n          ps[8] = pi + 2;\n          ps[11] = pi + 7;\n          ps[4] = pi + 1;\n          ps[7] = pi + 8;\n          ps[0] = pi;\n          ps[1] = pi + 11;\n          ps[2] = pi + 10;\n          ps[3] = pi + 9;\n          cs[2] = ci + 1;\n          cs[3] = ci + 2;\n          cs[0] = ci;\n          cs[1] = ci + 3;\n          break;\n\n        case 1:\n          tmp1 = ps[12];\n          tmp2 = ps[13];\n          tmp3 = ps[14];\n          tmp4 = ps[15];\n          ps[12] = tmp4;\n          ps[13] = pi + 0;\n          ps[14] = pi + 1;\n          ps[15] = pi + 2;\n          ps[8] = tmp3;\n          ps[11] = pi + 3;\n          ps[4] = tmp2;\n          ps[7] = pi + 4;\n          ps[0] = tmp1;\n          ps[1] = pi + 7;\n          ps[2] = pi + 6;\n          ps[3] = pi + 5;\n          tmp1 = cs[2];\n          tmp2 = cs[3];\n          cs[2] = tmp2;\n          cs[3] = ci;\n          cs[0] = tmp1;\n          cs[1] = ci + 1;\n          break;\n\n        case 2:\n          tmp1 = ps[15];\n          tmp2 = ps[11];\n          ps[12] = ps[3];\n          ps[13] = pi + 0;\n          ps[14] = pi + 1;\n          ps[15] = pi + 2;\n          ps[8] = ps[7];\n          ps[11] = pi + 3;\n          ps[4] = tmp2;\n          ps[7] = pi + 4;\n          ps[0] = tmp1;\n          ps[1] = pi + 7;\n          ps[2] = pi + 6;\n          ps[3] = pi + 5;\n          tmp1 = cs[3];\n          cs[2] = cs[1];\n          cs[3] = ci;\n          cs[0] = tmp1;\n          cs[1] = ci + 1;\n          break;\n\n        case 3:\n          ps[12] = ps[0];\n          ps[13] = pi + 0;\n          ps[14] = pi + 1;\n          ps[15] = pi + 2;\n          ps[8] = ps[1];\n          ps[11] = pi + 3;\n          ps[4] = ps[2];\n          ps[7] = pi + 4;\n          ps[0] = ps[3];\n          ps[1] = pi + 7;\n          ps[2] = pi + 6;\n          ps[3] = pi + 5;\n          cs[2] = cs[0];\n          cs[3] = ci;\n          cs[0] = cs[1];\n          cs[1] = ci + 1;\n          break;\n      }\n\n      ps[5] = coords.length;\n      coords.push([(-4 * coords[ps[0]][0] - coords[ps[15]][0] + 6 * (coords[ps[4]][0] + coords[ps[1]][0]) - 2 * (coords[ps[12]][0] + coords[ps[3]][0]) + 3 * (coords[ps[13]][0] + coords[ps[7]][0])) / 9, (-4 * coords[ps[0]][1] - coords[ps[15]][1] + 6 * (coords[ps[4]][1] + coords[ps[1]][1]) - 2 * (coords[ps[12]][1] + coords[ps[3]][1]) + 3 * (coords[ps[13]][1] + coords[ps[7]][1])) / 9]);\n      ps[6] = coords.length;\n      coords.push([(-4 * coords[ps[3]][0] - coords[ps[12]][0] + 6 * (coords[ps[2]][0] + coords[ps[7]][0]) - 2 * (coords[ps[0]][0] + coords[ps[15]][0]) + 3 * (coords[ps[4]][0] + coords[ps[14]][0])) / 9, (-4 * coords[ps[3]][1] - coords[ps[12]][1] + 6 * (coords[ps[2]][1] + coords[ps[7]][1]) - 2 * (coords[ps[0]][1] + coords[ps[15]][1]) + 3 * (coords[ps[4]][1] + coords[ps[14]][1])) / 9]);\n      ps[9] = coords.length;\n      coords.push([(-4 * coords[ps[12]][0] - coords[ps[3]][0] + 6 * (coords[ps[8]][0] + coords[ps[13]][0]) - 2 * (coords[ps[0]][0] + coords[ps[15]][0]) + 3 * (coords[ps[11]][0] + coords[ps[1]][0])) / 9, (-4 * coords[ps[12]][1] - coords[ps[3]][1] + 6 * (coords[ps[8]][1] + coords[ps[13]][1]) - 2 * (coords[ps[0]][1] + coords[ps[15]][1]) + 3 * (coords[ps[11]][1] + coords[ps[1]][1])) / 9]);\n      ps[10] = coords.length;\n      coords.push([(-4 * coords[ps[15]][0] - coords[ps[0]][0] + 6 * (coords[ps[11]][0] + coords[ps[14]][0]) - 2 * (coords[ps[12]][0] + coords[ps[3]][0]) + 3 * (coords[ps[2]][0] + coords[ps[8]][0])) / 9, (-4 * coords[ps[15]][1] - coords[ps[0]][1] + 6 * (coords[ps[11]][1] + coords[ps[14]][1]) - 2 * (coords[ps[12]][1] + coords[ps[3]][1]) + 3 * (coords[ps[2]][1] + coords[ps[8]][1])) / 9]);\n      this.figures.push({\n        type: \"patch\",\n        coords: new Int32Array(ps),\n        colors: new Int32Array(cs)\n      });\n    }\n  }\n\n  _decodeType7Shading(reader) {\n    const coords = this.coords;\n    const colors = this.colors;\n    const ps = new Int32Array(16);\n    const cs = new Int32Array(4);\n\n    while (reader.hasData) {\n      const f = reader.readFlag();\n\n      if (!(0 <= f && f <= 3)) {\n        throw new _util.FormatError(\"Unknown type7 flag\");\n      }\n\n      const pi = coords.length;\n\n      for (let i = 0, ii = f !== 0 ? 12 : 16; i < ii; i++) {\n        coords.push(reader.readCoordinate());\n      }\n\n      const ci = colors.length;\n\n      for (let i = 0, ii = f !== 0 ? 2 : 4; i < ii; i++) {\n        colors.push(reader.readComponents());\n      }\n\n      let tmp1, tmp2, tmp3, tmp4;\n\n      switch (f) {\n        case 0:\n          ps[12] = pi + 3;\n          ps[13] = pi + 4;\n          ps[14] = pi + 5;\n          ps[15] = pi + 6;\n          ps[8] = pi + 2;\n          ps[9] = pi + 13;\n          ps[10] = pi + 14;\n          ps[11] = pi + 7;\n          ps[4] = pi + 1;\n          ps[5] = pi + 12;\n          ps[6] = pi + 15;\n          ps[7] = pi + 8;\n          ps[0] = pi;\n          ps[1] = pi + 11;\n          ps[2] = pi + 10;\n          ps[3] = pi + 9;\n          cs[2] = ci + 1;\n          cs[3] = ci + 2;\n          cs[0] = ci;\n          cs[1] = ci + 3;\n          break;\n\n        case 1:\n          tmp1 = ps[12];\n          tmp2 = ps[13];\n          tmp3 = ps[14];\n          tmp4 = ps[15];\n          ps[12] = tmp4;\n          ps[13] = pi + 0;\n          ps[14] = pi + 1;\n          ps[15] = pi + 2;\n          ps[8] = tmp3;\n          ps[9] = pi + 9;\n          ps[10] = pi + 10;\n          ps[11] = pi + 3;\n          ps[4] = tmp2;\n          ps[5] = pi + 8;\n          ps[6] = pi + 11;\n          ps[7] = pi + 4;\n          ps[0] = tmp1;\n          ps[1] = pi + 7;\n          ps[2] = pi + 6;\n          ps[3] = pi + 5;\n          tmp1 = cs[2];\n          tmp2 = cs[3];\n          cs[2] = tmp2;\n          cs[3] = ci;\n          cs[0] = tmp1;\n          cs[1] = ci + 1;\n          break;\n\n        case 2:\n          tmp1 = ps[15];\n          tmp2 = ps[11];\n          ps[12] = ps[3];\n          ps[13] = pi + 0;\n          ps[14] = pi + 1;\n          ps[15] = pi + 2;\n          ps[8] = ps[7];\n          ps[9] = pi + 9;\n          ps[10] = pi + 10;\n          ps[11] = pi + 3;\n          ps[4] = tmp2;\n          ps[5] = pi + 8;\n          ps[6] = pi + 11;\n          ps[7] = pi + 4;\n          ps[0] = tmp1;\n          ps[1] = pi + 7;\n          ps[2] = pi + 6;\n          ps[3] = pi + 5;\n          tmp1 = cs[3];\n          cs[2] = cs[1];\n          cs[3] = ci;\n          cs[0] = tmp1;\n          cs[1] = ci + 1;\n          break;\n\n        case 3:\n          ps[12] = ps[0];\n          ps[13] = pi + 0;\n          ps[14] = pi + 1;\n          ps[15] = pi + 2;\n          ps[8] = ps[1];\n          ps[9] = pi + 9;\n          ps[10] = pi + 10;\n          ps[11] = pi + 3;\n          ps[4] = ps[2];\n          ps[5] = pi + 8;\n          ps[6] = pi + 11;\n          ps[7] = pi + 4;\n          ps[0] = ps[3];\n          ps[1] = pi + 7;\n          ps[2] = pi + 6;\n          ps[3] = pi + 5;\n          cs[2] = cs[0];\n          cs[3] = ci;\n          cs[0] = cs[1];\n          cs[1] = ci + 1;\n          break;\n      }\n\n      this.figures.push({\n        type: \"patch\",\n        coords: new Int32Array(ps),\n        colors: new Int32Array(cs)\n      });\n    }\n  }\n\n  _buildFigureFromPatch(index) {\n    const figure = this.figures[index];\n    (0, _util.assert)(figure.type === \"patch\", \"Unexpected patch mesh figure\");\n    const coords = this.coords,\n          colors = this.colors;\n    const pi = figure.coords;\n    const ci = figure.colors;\n    const figureMinX = Math.min(coords[pi[0]][0], coords[pi[3]][0], coords[pi[12]][0], coords[pi[15]][0]);\n    const figureMinY = Math.min(coords[pi[0]][1], coords[pi[3]][1], coords[pi[12]][1], coords[pi[15]][1]);\n    const figureMaxX = Math.max(coords[pi[0]][0], coords[pi[3]][0], coords[pi[12]][0], coords[pi[15]][0]);\n    const figureMaxY = Math.max(coords[pi[0]][1], coords[pi[3]][1], coords[pi[12]][1], coords[pi[15]][1]);\n    let splitXBy = Math.ceil((figureMaxX - figureMinX) * MeshShading.TRIANGLE_DENSITY / (this.bounds[2] - this.bounds[0]));\n    splitXBy = Math.max(MeshShading.MIN_SPLIT_PATCH_CHUNKS_AMOUNT, Math.min(MeshShading.MAX_SPLIT_PATCH_CHUNKS_AMOUNT, splitXBy));\n    let splitYBy = Math.ceil((figureMaxY - figureMinY) * MeshShading.TRIANGLE_DENSITY / (this.bounds[3] - this.bounds[1]));\n    splitYBy = Math.max(MeshShading.MIN_SPLIT_PATCH_CHUNKS_AMOUNT, Math.min(MeshShading.MAX_SPLIT_PATCH_CHUNKS_AMOUNT, splitYBy));\n    const verticesPerRow = splitXBy + 1;\n    const figureCoords = new Int32Array((splitYBy + 1) * verticesPerRow);\n    const figureColors = new Int32Array((splitYBy + 1) * verticesPerRow);\n    let k = 0;\n    const cl = new Uint8Array(3),\n          cr = new Uint8Array(3);\n    const c0 = colors[ci[0]],\n          c1 = colors[ci[1]],\n          c2 = colors[ci[2]],\n          c3 = colors[ci[3]];\n    const bRow = getB(splitYBy),\n          bCol = getB(splitXBy);\n\n    for (let row = 0; row <= splitYBy; row++) {\n      cl[0] = (c0[0] * (splitYBy - row) + c2[0] * row) / splitYBy | 0;\n      cl[1] = (c0[1] * (splitYBy - row) + c2[1] * row) / splitYBy | 0;\n      cl[2] = (c0[2] * (splitYBy - row) + c2[2] * row) / splitYBy | 0;\n      cr[0] = (c1[0] * (splitYBy - row) + c3[0] * row) / splitYBy | 0;\n      cr[1] = (c1[1] * (splitYBy - row) + c3[1] * row) / splitYBy | 0;\n      cr[2] = (c1[2] * (splitYBy - row) + c3[2] * row) / splitYBy | 0;\n\n      for (let col = 0; col <= splitXBy; col++, k++) {\n        if ((row === 0 || row === splitYBy) && (col === 0 || col === splitXBy)) {\n          continue;\n        }\n\n        let x = 0,\n            y = 0;\n        let q = 0;\n\n        for (let i = 0; i <= 3; i++) {\n          for (let j = 0; j <= 3; j++, q++) {\n            const m = bRow[row][i] * bCol[col][j];\n            x += coords[pi[q]][0] * m;\n            y += coords[pi[q]][1] * m;\n          }\n        }\n\n        figureCoords[k] = coords.length;\n        coords.push([x, y]);\n        figureColors[k] = colors.length;\n        const newColor = new Uint8Array(3);\n        newColor[0] = (cl[0] * (splitXBy - col) + cr[0] * col) / splitXBy | 0;\n        newColor[1] = (cl[1] * (splitXBy - col) + cr[1] * col) / splitXBy | 0;\n        newColor[2] = (cl[2] * (splitXBy - col) + cr[2] * col) / splitXBy | 0;\n        colors.push(newColor);\n      }\n    }\n\n    figureCoords[0] = pi[0];\n    figureColors[0] = ci[0];\n    figureCoords[splitXBy] = pi[3];\n    figureColors[splitXBy] = ci[1];\n    figureCoords[verticesPerRow * splitYBy] = pi[12];\n    figureColors[verticesPerRow * splitYBy] = ci[2];\n    figureCoords[verticesPerRow * splitYBy + splitXBy] = pi[15];\n    figureColors[verticesPerRow * splitYBy + splitXBy] = ci[3];\n    this.figures[index] = {\n      type: \"lattice\",\n      coords: figureCoords,\n      colors: figureColors,\n      verticesPerRow\n    };\n  }\n\n  _updateBounds() {\n    let minX = this.coords[0][0],\n        minY = this.coords[0][1],\n        maxX = minX,\n        maxY = minY;\n\n    for (let i = 1, ii = this.coords.length; i < ii; i++) {\n      const x = this.coords[i][0],\n            y = this.coords[i][1];\n      minX = minX > x ? x : minX;\n      minY = minY > y ? y : minY;\n      maxX = maxX < x ? x : maxX;\n      maxY = maxY < y ? y : maxY;\n    }\n\n    this.bounds = [minX, minY, maxX, maxY];\n  }\n\n  _packData() {\n    let i, ii, j, jj;\n    const coords = this.coords;\n    const coordsPacked = new Float32Array(coords.length * 2);\n\n    for (i = 0, j = 0, ii = coords.length; i < ii; i++) {\n      const xy = coords[i];\n      coordsPacked[j++] = xy[0];\n      coordsPacked[j++] = xy[1];\n    }\n\n    this.coords = coordsPacked;\n    const colors = this.colors;\n    const colorsPacked = new Uint8Array(colors.length * 3);\n\n    for (i = 0, j = 0, ii = colors.length; i < ii; i++) {\n      const c = colors[i];\n      colorsPacked[j++] = c[0];\n      colorsPacked[j++] = c[1];\n      colorsPacked[j++] = c[2];\n    }\n\n    this.colors = colorsPacked;\n    const figures = this.figures;\n\n    for (i = 0, ii = figures.length; i < ii; i++) {\n      const figure = figures[i],\n            ps = figure.coords,\n            cs = figure.colors;\n\n      for (j = 0, jj = ps.length; j < jj; j++) {\n        ps[j] *= 2;\n        cs[j] *= 3;\n      }\n    }\n  }\n\n  getIR() {\n    return [\"Mesh\", this.shadingType, this.coords, this.colors, this.figures, this.bounds, this.bbox, this.background];\n  }\n\n}\n\nclass DummyShading extends BaseShading {\n  getIR() {\n    return [\"Dummy\"];\n  }\n\n}\n\nfunction getTilingPatternIR(operatorList, dict, color) {\n  const matrix = dict.getArray(\"Matrix\");\n\n  const bbox = _util.Util.normalizeRect(dict.getArray(\"BBox\"));\n\n  const xstep = dict.get(\"XStep\");\n  const ystep = dict.get(\"YStep\");\n  const paintType = dict.get(\"PaintType\");\n  const tilingType = dict.get(\"TilingType\");\n\n  if (bbox[2] - bbox[0] === 0 || bbox[3] - bbox[1] === 0) {\n    throw new _util.FormatError(`Invalid getTilingPatternIR /BBox array: [${bbox}].`);\n  }\n\n  return [\"TilingPattern\", color, operatorList, matrix, bbox, xstep, ystep, paintType, tilingType];\n}\n\n/***/ }),\n/* 57 */\n/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {\n\n\n\nObject.defineProperty(exports, \"__esModule\", ({\n  value: true\n}));\nexports.PostScriptEvaluator = exports.PostScriptCompiler = exports.PDFFunctionFactory = void 0;\nexports.isPDFFunction = isPDFFunction;\n\nvar _primitives = __w_pdfjs_require__(5);\n\nvar _util = __w_pdfjs_require__(2);\n\nvar _ps_parser = __w_pdfjs_require__(58);\n\nvar _base_stream = __w_pdfjs_require__(9);\n\nvar _image_utils = __w_pdfjs_require__(59);\n\nclass PDFFunctionFactory {\n  constructor({\n    xref,\n    isEvalSupported = true\n  }) {\n    this.xref = xref;\n    this.isEvalSupported = isEvalSupported !== false;\n  }\n\n  create(fn) {\n    const cachedFunction = this.getCached(fn);\n\n    if (cachedFunction) {\n      return cachedFunction;\n    }\n\n    const parsedFunction = PDFFunction.parse({\n      xref: this.xref,\n      isEvalSupported: this.isEvalSupported,\n      fn: fn instanceof _primitives.Ref ? this.xref.fetch(fn) : fn\n    });\n\n    this._cache(fn, parsedFunction);\n\n    return parsedFunction;\n  }\n\n  createFromArray(fnObj) {\n    const cachedFunction = this.getCached(fnObj);\n\n    if (cachedFunction) {\n      return cachedFunction;\n    }\n\n    const parsedFunction = PDFFunction.parseArray({\n      xref: this.xref,\n      isEvalSupported: this.isEvalSupported,\n      fnObj: fnObj instanceof _primitives.Ref ? this.xref.fetch(fnObj) : fnObj\n    });\n\n    this._cache(fnObj, parsedFunction);\n\n    return parsedFunction;\n  }\n\n  getCached(cacheKey) {\n    let fnRef;\n\n    if (cacheKey instanceof _primitives.Ref) {\n      fnRef = cacheKey;\n    } else if (cacheKey instanceof _primitives.Dict) {\n      fnRef = cacheKey.objId;\n    } else if (cacheKey instanceof _base_stream.BaseStream) {\n      fnRef = cacheKey.dict && cacheKey.dict.objId;\n    }\n\n    if (fnRef) {\n      const localFunction = this._localFunctionCache.getByRef(fnRef);\n\n      if (localFunction) {\n        return localFunction;\n      }\n    }\n\n    return null;\n  }\n\n  _cache(cacheKey, parsedFunction) {\n    if (!parsedFunction) {\n      throw new Error('PDFFunctionFactory._cache - expected \"parsedFunction\" argument.');\n    }\n\n    let fnRef;\n\n    if (cacheKey instanceof _primitives.Ref) {\n      fnRef = cacheKey;\n    } else if (cacheKey instanceof _primitives.Dict) {\n      fnRef = cacheKey.objId;\n    } else if (cacheKey instanceof _base_stream.BaseStream) {\n      fnRef = cacheKey.dict && cacheKey.dict.objId;\n    }\n\n    if (fnRef) {\n      this._localFunctionCache.set(null, fnRef, parsedFunction);\n    }\n  }\n\n  get _localFunctionCache() {\n    return (0, _util.shadow)(this, \"_localFunctionCache\", new _image_utils.LocalFunctionCache());\n  }\n\n}\n\nexports.PDFFunctionFactory = PDFFunctionFactory;\n\nfunction toNumberArray(arr) {\n  if (!Array.isArray(arr)) {\n    return null;\n  }\n\n  const length = arr.length;\n\n  for (let i = 0; i < length; i++) {\n    if (typeof arr[i] !== \"number\") {\n      const result = new Array(length);\n\n      for (let j = 0; j < length; j++) {\n        result[j] = +arr[j];\n      }\n\n      return result;\n    }\n  }\n\n  return arr;\n}\n\nclass PDFFunction {\n  static getSampleArray(size, outputSize, bps, stream) {\n    let i, ii;\n    let length = 1;\n\n    for (i = 0, ii = size.length; i < ii; i++) {\n      length *= size[i];\n    }\n\n    length *= outputSize;\n    const array = new Array(length);\n    let codeSize = 0;\n    let codeBuf = 0;\n    const sampleMul = 1.0 / (2.0 ** bps - 1);\n    const strBytes = stream.getBytes((length * bps + 7) / 8);\n    let strIdx = 0;\n\n    for (i = 0; i < length; i++) {\n      while (codeSize < bps) {\n        codeBuf <<= 8;\n        codeBuf |= strBytes[strIdx++];\n        codeSize += 8;\n      }\n\n      codeSize -= bps;\n      array[i] = (codeBuf >> codeSize) * sampleMul;\n      codeBuf &= (1 << codeSize) - 1;\n    }\n\n    return array;\n  }\n\n  static parse({\n    xref,\n    isEvalSupported,\n    fn\n  }) {\n    const dict = fn.dict || fn;\n    const typeNum = dict.get(\"FunctionType\");\n\n    switch (typeNum) {\n      case 0:\n        return this.constructSampled({\n          xref,\n          isEvalSupported,\n          fn,\n          dict\n        });\n\n      case 1:\n        break;\n\n      case 2:\n        return this.constructInterpolated({\n          xref,\n          isEvalSupported,\n          dict\n        });\n\n      case 3:\n        return this.constructStiched({\n          xref,\n          isEvalSupported,\n          dict\n        });\n\n      case 4:\n        return this.constructPostScript({\n          xref,\n          isEvalSupported,\n          fn,\n          dict\n        });\n    }\n\n    throw new _util.FormatError(\"Unknown type of function\");\n  }\n\n  static parseArray({\n    xref,\n    isEvalSupported,\n    fnObj\n  }) {\n    if (!Array.isArray(fnObj)) {\n      return this.parse({\n        xref,\n        isEvalSupported,\n        fn: fnObj\n      });\n    }\n\n    const fnArray = [];\n\n    for (let j = 0, jj = fnObj.length; j < jj; j++) {\n      fnArray.push(this.parse({\n        xref,\n        isEvalSupported,\n        fn: xref.fetchIfRef(fnObj[j])\n      }));\n    }\n\n    return function (src, srcOffset, dest, destOffset) {\n      for (let i = 0, ii = fnArray.length; i < ii; i++) {\n        fnArray[i](src, srcOffset, dest, destOffset + i);\n      }\n    };\n  }\n\n  static constructSampled({\n    xref,\n    isEvalSupported,\n    fn,\n    dict\n  }) {\n    function toMultiArray(arr) {\n      const inputLength = arr.length;\n      const out = [];\n      let index = 0;\n\n      for (let i = 0; i < inputLength; i += 2) {\n        out[index++] = [arr[i], arr[i + 1]];\n      }\n\n      return out;\n    }\n\n    function interpolate(x, xmin, xmax, ymin, ymax) {\n      return ymin + (x - xmin) * ((ymax - ymin) / (xmax - xmin));\n    }\n\n    let domain = toNumberArray(dict.getArray(\"Domain\"));\n    let range = toNumberArray(dict.getArray(\"Range\"));\n\n    if (!domain || !range) {\n      throw new _util.FormatError(\"No domain or range\");\n    }\n\n    const inputSize = domain.length / 2;\n    const outputSize = range.length / 2;\n    domain = toMultiArray(domain);\n    range = toMultiArray(range);\n    const size = toNumberArray(dict.getArray(\"Size\"));\n    const bps = dict.get(\"BitsPerSample\");\n    const order = dict.get(\"Order\") || 1;\n\n    if (order !== 1) {\n      (0, _util.info)(\"No support for cubic spline interpolation: \" + order);\n    }\n\n    let encode = toNumberArray(dict.getArray(\"Encode\"));\n\n    if (!encode) {\n      encode = [];\n\n      for (let i = 0; i < inputSize; ++i) {\n        encode.push([0, size[i] - 1]);\n      }\n    } else {\n      encode = toMultiArray(encode);\n    }\n\n    let decode = toNumberArray(dict.getArray(\"Decode\"));\n\n    if (!decode) {\n      decode = range;\n    } else {\n      decode = toMultiArray(decode);\n    }\n\n    const samples = this.getSampleArray(size, outputSize, bps, fn);\n    return function constructSampledFn(src, srcOffset, dest, destOffset) {\n      const cubeVertices = 1 << inputSize;\n      const cubeN = new Float64Array(cubeVertices);\n      const cubeVertex = new Uint32Array(cubeVertices);\n      let i, j;\n\n      for (j = 0; j < cubeVertices; j++) {\n        cubeN[j] = 1;\n      }\n\n      let k = outputSize,\n          pos = 1;\n\n      for (i = 0; i < inputSize; ++i) {\n        const domain_2i = domain[i][0];\n        const domain_2i_1 = domain[i][1];\n        const xi = Math.min(Math.max(src[srcOffset + i], domain_2i), domain_2i_1);\n        let e = interpolate(xi, domain_2i, domain_2i_1, encode[i][0], encode[i][1]);\n        const size_i = size[i];\n        e = Math.min(Math.max(e, 0), size_i - 1);\n        const e0 = e < size_i - 1 ? Math.floor(e) : e - 1;\n        const n0 = e0 + 1 - e;\n        const n1 = e - e0;\n        const offset0 = e0 * k;\n        const offset1 = offset0 + k;\n\n        for (j = 0; j < cubeVertices; j++) {\n          if (j & pos) {\n            cubeN[j] *= n1;\n            cubeVertex[j] += offset1;\n          } else {\n            cubeN[j] *= n0;\n            cubeVertex[j] += offset0;\n          }\n        }\n\n        k *= size_i;\n        pos <<= 1;\n      }\n\n      for (j = 0; j < outputSize; ++j) {\n        let rj = 0;\n\n        for (i = 0; i < cubeVertices; i++) {\n          rj += samples[cubeVertex[i] + j] * cubeN[i];\n        }\n\n        rj = interpolate(rj, 0, 1, decode[j][0], decode[j][1]);\n        dest[destOffset + j] = Math.min(Math.max(rj, range[j][0]), range[j][1]);\n      }\n    };\n  }\n\n  static constructInterpolated({\n    xref,\n    isEvalSupported,\n    dict\n  }) {\n    const c0 = toNumberArray(dict.getArray(\"C0\")) || [0];\n    const c1 = toNumberArray(dict.getArray(\"C1\")) || [1];\n    const n = dict.get(\"N\");\n    const diff = [];\n\n    for (let i = 0, ii = c0.length; i < ii; ++i) {\n      diff.push(c1[i] - c0[i]);\n    }\n\n    const length = diff.length;\n    return function constructInterpolatedFn(src, srcOffset, dest, destOffset) {\n      const x = n === 1 ? src[srcOffset] : src[srcOffset] ** n;\n\n      for (let j = 0; j < length; ++j) {\n        dest[destOffset + j] = c0[j] + x * diff[j];\n      }\n    };\n  }\n\n  static constructStiched({\n    xref,\n    isEvalSupported,\n    dict\n  }) {\n    const domain = toNumberArray(dict.getArray(\"Domain\"));\n\n    if (!domain) {\n      throw new _util.FormatError(\"No domain\");\n    }\n\n    const inputSize = domain.length / 2;\n\n    if (inputSize !== 1) {\n      throw new _util.FormatError(\"Bad domain for stiched function\");\n    }\n\n    const fnRefs = dict.get(\"Functions\");\n    const fns = [];\n\n    for (let i = 0, ii = fnRefs.length; i < ii; ++i) {\n      fns.push(this.parse({\n        xref,\n        isEvalSupported,\n        fn: xref.fetchIfRef(fnRefs[i])\n      }));\n    }\n\n    const bounds = toNumberArray(dict.getArray(\"Bounds\"));\n    const encode = toNumberArray(dict.getArray(\"Encode\"));\n    const tmpBuf = new Float32Array(1);\n    return function constructStichedFn(src, srcOffset, dest, destOffset) {\n      const clip = function constructStichedFromIRClip(v, min, max) {\n        if (v > max) {\n          v = max;\n        } else if (v < min) {\n          v = min;\n        }\n\n        return v;\n      };\n\n      const v = clip(src[srcOffset], domain[0], domain[1]);\n      const length = bounds.length;\n      let i;\n\n      for (i = 0; i < length; ++i) {\n        if (v < bounds[i]) {\n          break;\n        }\n      }\n\n      let dmin = domain[0];\n\n      if (i > 0) {\n        dmin = bounds[i - 1];\n      }\n\n      let dmax = domain[1];\n\n      if (i < bounds.length) {\n        dmax = bounds[i];\n      }\n\n      const rmin = encode[2 * i];\n      const rmax = encode[2 * i + 1];\n      tmpBuf[0] = dmin === dmax ? rmin : rmin + (v - dmin) * (rmax - rmin) / (dmax - dmin);\n      fns[i](tmpBuf, 0, dest, destOffset);\n    };\n  }\n\n  static constructPostScript({\n    xref,\n    isEvalSupported,\n    fn,\n    dict\n  }) {\n    const domain = toNumberArray(dict.getArray(\"Domain\"));\n    const range = toNumberArray(dict.getArray(\"Range\"));\n\n    if (!domain) {\n      throw new _util.FormatError(\"No domain.\");\n    }\n\n    if (!range) {\n      throw new _util.FormatError(\"No range.\");\n    }\n\n    const lexer = new _ps_parser.PostScriptLexer(fn);\n    const parser = new _ps_parser.PostScriptParser(lexer);\n    const code = parser.parse();\n\n    if (isEvalSupported && _util.IsEvalSupportedCached.value) {\n      const compiled = new PostScriptCompiler().compile(code, domain, range);\n\n      if (compiled) {\n        return new Function(\"src\", \"srcOffset\", \"dest\", \"destOffset\", compiled);\n      }\n    }\n\n    (0, _util.info)(\"Unable to compile PS function\");\n    const numOutputs = range.length >> 1;\n    const numInputs = domain.length >> 1;\n    const evaluator = new PostScriptEvaluator(code);\n    const cache = Object.create(null);\n    const MAX_CACHE_SIZE = 2048 * 4;\n    let cache_available = MAX_CACHE_SIZE;\n    const tmpBuf = new Float32Array(numInputs);\n    return function constructPostScriptFn(src, srcOffset, dest, destOffset) {\n      let i, value;\n      let key = \"\";\n      const input = tmpBuf;\n\n      for (i = 0; i < numInputs; i++) {\n        value = src[srcOffset + i];\n        input[i] = value;\n        key += value + \"_\";\n      }\n\n      const cachedValue = cache[key];\n\n      if (cachedValue !== undefined) {\n        dest.set(cachedValue, destOffset);\n        return;\n      }\n\n      const output = new Float32Array(numOutputs);\n      const stack = evaluator.execute(input);\n      const stackIndex = stack.length - numOutputs;\n\n      for (i = 0; i < numOutputs; i++) {\n        value = stack[stackIndex + i];\n        let bound = range[i * 2];\n\n        if (value < bound) {\n          value = bound;\n        } else {\n          bound = range[i * 2 + 1];\n\n          if (value > bound) {\n            value = bound;\n          }\n        }\n\n        output[i] = value;\n      }\n\n      if (cache_available > 0) {\n        cache_available--;\n        cache[key] = output;\n      }\n\n      dest.set(output, destOffset);\n    };\n  }\n\n}\n\nfunction isPDFFunction(v) {\n  let fnDict;\n\n  if (typeof v !== \"object\") {\n    return false;\n  } else if (v instanceof _primitives.Dict) {\n    fnDict = v;\n  } else if (v instanceof _base_stream.BaseStream) {\n    fnDict = v.dict;\n  } else {\n    return false;\n  }\n\n  return fnDict.has(\"FunctionType\");\n}\n\nclass PostScriptStack {\n  static get MAX_STACK_SIZE() {\n    return (0, _util.shadow)(this, \"MAX_STACK_SIZE\", 100);\n  }\n\n  constructor(initialStack) {\n    this.stack = !initialStack ? [] : Array.prototype.slice.call(initialStack, 0);\n  }\n\n  push(value) {\n    if (this.stack.length >= PostScriptStack.MAX_STACK_SIZE) {\n      throw new Error(\"PostScript function stack overflow.\");\n    }\n\n    this.stack.push(value);\n  }\n\n  pop() {\n    if (this.stack.length <= 0) {\n      throw new Error(\"PostScript function stack underflow.\");\n    }\n\n    return this.stack.pop();\n  }\n\n  copy(n) {\n    if (this.stack.length + n >= PostScriptStack.MAX_STACK_SIZE) {\n      throw new Error(\"PostScript function stack overflow.\");\n    }\n\n    const stack = this.stack;\n\n    for (let i = stack.length - n, j = n - 1; j >= 0; j--, i++) {\n      stack.push(stack[i]);\n    }\n  }\n\n  index(n) {\n    this.push(this.stack[this.stack.length - n - 1]);\n  }\n\n  roll(n, p) {\n    const stack = this.stack;\n    const l = stack.length - n;\n    const r = stack.length - 1;\n    const c = l + (p - Math.floor(p / n) * n);\n\n    for (let i = l, j = r; i < j; i++, j--) {\n      const t = stack[i];\n      stack[i] = stack[j];\n      stack[j] = t;\n    }\n\n    for (let i = l, j = c - 1; i < j; i++, j--) {\n      const t = stack[i];\n      stack[i] = stack[j];\n      stack[j] = t;\n    }\n\n    for (let i = c, j = r; i < j; i++, j--) {\n      const t = stack[i];\n      stack[i] = stack[j];\n      stack[j] = t;\n    }\n  }\n\n}\n\nclass PostScriptEvaluator {\n  constructor(operators) {\n    this.operators = operators;\n  }\n\n  execute(initialStack) {\n    const stack = new PostScriptStack(initialStack);\n    let counter = 0;\n    const operators = this.operators;\n    const length = operators.length;\n    let operator, a, b;\n\n    while (counter < length) {\n      operator = operators[counter++];\n\n      if (typeof operator === \"number\") {\n        stack.push(operator);\n        continue;\n      }\n\n      switch (operator) {\n        case \"jz\":\n          b = stack.pop();\n          a = stack.pop();\n\n          if (!a) {\n            counter = b;\n          }\n\n          break;\n\n        case \"j\":\n          a = stack.pop();\n          counter = a;\n          break;\n\n        case \"abs\":\n          a = stack.pop();\n          stack.push(Math.abs(a));\n          break;\n\n        case \"add\":\n          b = stack.pop();\n          a = stack.pop();\n          stack.push(a + b);\n          break;\n\n        case \"and\":\n          b = stack.pop();\n          a = stack.pop();\n\n          if (typeof a === \"boolean\" && typeof b === \"boolean\") {\n            stack.push(a && b);\n          } else {\n            stack.push(a & b);\n          }\n\n          break;\n\n        case \"atan\":\n          a = stack.pop();\n          stack.push(Math.atan(a));\n          break;\n\n        case \"bitshift\":\n          b = stack.pop();\n          a = stack.pop();\n\n          if (a > 0) {\n            stack.push(a << b);\n          } else {\n            stack.push(a >> b);\n          }\n\n          break;\n\n        case \"ceiling\":\n          a = stack.pop();\n          stack.push(Math.ceil(a));\n          break;\n\n        case \"copy\":\n          a = stack.pop();\n          stack.copy(a);\n          break;\n\n        case \"cos\":\n          a = stack.pop();\n          stack.push(Math.cos(a));\n          break;\n\n        case \"cvi\":\n          a = stack.pop() | 0;\n          stack.push(a);\n          break;\n\n        case \"cvr\":\n          break;\n\n        case \"div\":\n          b = stack.pop();\n          a = stack.pop();\n          stack.push(a / b);\n          break;\n\n        case \"dup\":\n          stack.copy(1);\n          break;\n\n        case \"eq\":\n          b = stack.pop();\n          a = stack.pop();\n          stack.push(a === b);\n          break;\n\n        case \"exch\":\n          stack.roll(2, 1);\n          break;\n\n        case \"exp\":\n          b = stack.pop();\n          a = stack.pop();\n          stack.push(a ** b);\n          break;\n\n        case \"false\":\n          stack.push(false);\n          break;\n\n        case \"floor\":\n          a = stack.pop();\n          stack.push(Math.floor(a));\n          break;\n\n        case \"ge\":\n          b = stack.pop();\n          a = stack.pop();\n          stack.push(a >= b);\n          break;\n\n        case \"gt\":\n          b = stack.pop();\n          a = stack.pop();\n          stack.push(a > b);\n          break;\n\n        case \"idiv\":\n          b = stack.pop();\n          a = stack.pop();\n          stack.push(a / b | 0);\n          break;\n\n        case \"index\":\n          a = stack.pop();\n          stack.index(a);\n          break;\n\n        case \"le\":\n          b = stack.pop();\n          a = stack.pop();\n          stack.push(a <= b);\n          break;\n\n        case \"ln\":\n          a = stack.pop();\n          stack.push(Math.log(a));\n          break;\n\n        case \"log\":\n          a = stack.pop();\n          stack.push(Math.log(a) / Math.LN10);\n          break;\n\n        case \"lt\":\n          b = stack.pop();\n          a = stack.pop();\n          stack.push(a < b);\n          break;\n\n        case \"mod\":\n          b = stack.pop();\n          a = stack.pop();\n          stack.push(a % b);\n          break;\n\n        case \"mul\":\n          b = stack.pop();\n          a = stack.pop();\n          stack.push(a * b);\n          break;\n\n        case \"ne\":\n          b = stack.pop();\n          a = stack.pop();\n          stack.push(a !== b);\n          break;\n\n        case \"neg\":\n          a = stack.pop();\n          stack.push(-a);\n          break;\n\n        case \"not\":\n          a = stack.pop();\n\n          if (typeof a === \"boolean\") {\n            stack.push(!a);\n          } else {\n            stack.push(~a);\n          }\n\n          break;\n\n        case \"or\":\n          b = stack.pop();\n          a = stack.pop();\n\n          if (typeof a === \"boolean\" && typeof b === \"boolean\") {\n            stack.push(a || b);\n          } else {\n            stack.push(a | b);\n          }\n\n          break;\n\n        case \"pop\":\n          stack.pop();\n          break;\n\n        case \"roll\":\n          b = stack.pop();\n          a = stack.pop();\n          stack.roll(a, b);\n          break;\n\n        case \"round\":\n          a = stack.pop();\n          stack.push(Math.round(a));\n          break;\n\n        case \"sin\":\n          a = stack.pop();\n          stack.push(Math.sin(a));\n          break;\n\n        case \"sqrt\":\n          a = stack.pop();\n          stack.push(Math.sqrt(a));\n          break;\n\n        case \"sub\":\n          b = stack.pop();\n          a = stack.pop();\n          stack.push(a - b);\n          break;\n\n        case \"true\":\n          stack.push(true);\n          break;\n\n        case \"truncate\":\n          a = stack.pop();\n          a = a < 0 ? Math.ceil(a) : Math.floor(a);\n          stack.push(a);\n          break;\n\n        case \"xor\":\n          b = stack.pop();\n          a = stack.pop();\n\n          if (typeof a === \"boolean\" && typeof b === \"boolean\") {\n            stack.push(a !== b);\n          } else {\n            stack.push(a ^ b);\n          }\n\n          break;\n\n        default:\n          throw new _util.FormatError(`Unknown operator ${operator}`);\n      }\n    }\n\n    return stack.stack;\n  }\n\n}\n\nexports.PostScriptEvaluator = PostScriptEvaluator;\n\nconst PostScriptCompiler = function PostScriptCompilerClosure() {\n  class AstNode {\n    constructor(type) {\n      this.type = type;\n    }\n\n    visit(visitor) {\n      (0, _util.unreachable)(\"abstract method\");\n    }\n\n  }\n\n  class AstArgument extends AstNode {\n    constructor(index, min, max) {\n      super(\"args\");\n      this.index = index;\n      this.min = min;\n      this.max = max;\n    }\n\n    visit(visitor) {\n      visitor.visitArgument(this);\n    }\n\n  }\n\n  class AstLiteral extends AstNode {\n    constructor(number) {\n      super(\"literal\");\n      this.number = number;\n      this.min = number;\n      this.max = number;\n    }\n\n    visit(visitor) {\n      visitor.visitLiteral(this);\n    }\n\n  }\n\n  class AstBinaryOperation extends AstNode {\n    constructor(op, arg1, arg2, min, max) {\n      super(\"binary\");\n      this.op = op;\n      this.arg1 = arg1;\n      this.arg2 = arg2;\n      this.min = min;\n      this.max = max;\n    }\n\n    visit(visitor) {\n      visitor.visitBinaryOperation(this);\n    }\n\n  }\n\n  class AstMin extends AstNode {\n    constructor(arg, max) {\n      super(\"max\");\n      this.arg = arg;\n      this.min = arg.min;\n      this.max = max;\n    }\n\n    visit(visitor) {\n      visitor.visitMin(this);\n    }\n\n  }\n\n  class AstVariable extends AstNode {\n    constructor(index, min, max) {\n      super(\"var\");\n      this.index = index;\n      this.min = min;\n      this.max = max;\n    }\n\n    visit(visitor) {\n      visitor.visitVariable(this);\n    }\n\n  }\n\n  class AstVariableDefinition extends AstNode {\n    constructor(variable, arg) {\n      super(\"definition\");\n      this.variable = variable;\n      this.arg = arg;\n    }\n\n    visit(visitor) {\n      visitor.visitVariableDefinition(this);\n    }\n\n  }\n\n  class ExpressionBuilderVisitor {\n    constructor() {\n      this.parts = [];\n    }\n\n    visitArgument(arg) {\n      this.parts.push(\"Math.max(\", arg.min, \", Math.min(\", arg.max, \", src[srcOffset + \", arg.index, \"]))\");\n    }\n\n    visitVariable(variable) {\n      this.parts.push(\"v\", variable.index);\n    }\n\n    visitLiteral(literal) {\n      this.parts.push(literal.number);\n    }\n\n    visitBinaryOperation(operation) {\n      this.parts.push(\"(\");\n      operation.arg1.visit(this);\n      this.parts.push(\" \", operation.op, \" \");\n      operation.arg2.visit(this);\n      this.parts.push(\")\");\n    }\n\n    visitVariableDefinition(definition) {\n      this.parts.push(\"var \");\n      definition.variable.visit(this);\n      this.parts.push(\" = \");\n      definition.arg.visit(this);\n      this.parts.push(\";\");\n    }\n\n    visitMin(max) {\n      this.parts.push(\"Math.min(\");\n      max.arg.visit(this);\n      this.parts.push(\", \", max.max, \")\");\n    }\n\n    toString() {\n      return this.parts.join(\"\");\n    }\n\n  }\n\n  function buildAddOperation(num1, num2) {\n    if (num2.type === \"literal\" && num2.number === 0) {\n      return num1;\n    }\n\n    if (num1.type === \"literal\" && num1.number === 0) {\n      return num2;\n    }\n\n    if (num2.type === \"literal\" && num1.type === \"literal\") {\n      return new AstLiteral(num1.number + num2.number);\n    }\n\n    return new AstBinaryOperation(\"+\", num1, num2, num1.min + num2.min, num1.max + num2.max);\n  }\n\n  function buildMulOperation(num1, num2) {\n    if (num2.type === \"literal\") {\n      if (num2.number === 0) {\n        return new AstLiteral(0);\n      } else if (num2.number === 1) {\n        return num1;\n      } else if (num1.type === \"literal\") {\n        return new AstLiteral(num1.number * num2.number);\n      }\n    }\n\n    if (num1.type === \"literal\") {\n      if (num1.number === 0) {\n        return new AstLiteral(0);\n      } else if (num1.number === 1) {\n        return num2;\n      }\n    }\n\n    const min = Math.min(num1.min * num2.min, num1.min * num2.max, num1.max * num2.min, num1.max * num2.max);\n    const max = Math.max(num1.min * num2.min, num1.min * num2.max, num1.max * num2.min, num1.max * num2.max);\n    return new AstBinaryOperation(\"*\", num1, num2, min, max);\n  }\n\n  function buildSubOperation(num1, num2) {\n    if (num2.type === \"literal\") {\n      if (num2.number === 0) {\n        return num1;\n      } else if (num1.type === \"literal\") {\n        return new AstLiteral(num1.number - num2.number);\n      }\n    }\n\n    if (num2.type === \"binary\" && num2.op === \"-\" && num1.type === \"literal\" && num1.number === 1 && num2.arg1.type === \"literal\" && num2.arg1.number === 1) {\n      return num2.arg2;\n    }\n\n    return new AstBinaryOperation(\"-\", num1, num2, num1.min - num2.max, num1.max - num2.min);\n  }\n\n  function buildMinOperation(num1, max) {\n    if (num1.min >= max) {\n      return new AstLiteral(max);\n    } else if (num1.max <= max) {\n      return num1;\n    }\n\n    return new AstMin(num1, max);\n  }\n\n  class PostScriptCompiler {\n    compile(code, domain, range) {\n      const stack = [];\n      const instructions = [];\n      const inputSize = domain.length >> 1,\n            outputSize = range.length >> 1;\n      let lastRegister = 0;\n      let n, j;\n      let num1, num2, ast1, ast2, tmpVar, item;\n\n      for (let i = 0; i < inputSize; i++) {\n        stack.push(new AstArgument(i, domain[i * 2], domain[i * 2 + 1]));\n      }\n\n      for (let i = 0, ii = code.length; i < ii; i++) {\n        item = code[i];\n\n        if (typeof item === \"number\") {\n          stack.push(new AstLiteral(item));\n          continue;\n        }\n\n        switch (item) {\n          case \"add\":\n            if (stack.length < 2) {\n              return null;\n            }\n\n            num2 = stack.pop();\n            num1 = stack.pop();\n            stack.push(buildAddOperation(num1, num2));\n            break;\n\n          case \"cvr\":\n            if (stack.length < 1) {\n              return null;\n            }\n\n            break;\n\n          case \"mul\":\n            if (stack.length < 2) {\n              return null;\n            }\n\n            num2 = stack.pop();\n            num1 = stack.pop();\n            stack.push(buildMulOperation(num1, num2));\n            break;\n\n          case \"sub\":\n            if (stack.length < 2) {\n              return null;\n            }\n\n            num2 = stack.pop();\n            num1 = stack.pop();\n            stack.push(buildSubOperation(num1, num2));\n            break;\n\n          case \"exch\":\n            if (stack.length < 2) {\n              return null;\n            }\n\n            ast1 = stack.pop();\n            ast2 = stack.pop();\n            stack.push(ast1, ast2);\n            break;\n\n          case \"pop\":\n            if (stack.length < 1) {\n              return null;\n            }\n\n            stack.pop();\n            break;\n\n          case \"index\":\n            if (stack.length < 1) {\n              return null;\n            }\n\n            num1 = stack.pop();\n\n            if (num1.type !== \"literal\") {\n              return null;\n            }\n\n            n = num1.number;\n\n            if (n < 0 || !Number.isInteger(n) || stack.length < n) {\n              return null;\n            }\n\n            ast1 = stack[stack.length - n - 1];\n\n            if (ast1.type === \"literal\" || ast1.type === \"var\") {\n              stack.push(ast1);\n              break;\n            }\n\n            tmpVar = new AstVariable(lastRegister++, ast1.min, ast1.max);\n            stack[stack.length - n - 1] = tmpVar;\n            stack.push(tmpVar);\n            instructions.push(new AstVariableDefinition(tmpVar, ast1));\n            break;\n\n          case \"dup\":\n            if (stack.length < 1) {\n              return null;\n            }\n\n            if (typeof code[i + 1] === \"number\" && code[i + 2] === \"gt\" && code[i + 3] === i + 7 && code[i + 4] === \"jz\" && code[i + 5] === \"pop\" && code[i + 6] === code[i + 1]) {\n              num1 = stack.pop();\n              stack.push(buildMinOperation(num1, code[i + 1]));\n              i += 6;\n              break;\n            }\n\n            ast1 = stack[stack.length - 1];\n\n            if (ast1.type === \"literal\" || ast1.type === \"var\") {\n              stack.push(ast1);\n              break;\n            }\n\n            tmpVar = new AstVariable(lastRegister++, ast1.min, ast1.max);\n            stack[stack.length - 1] = tmpVar;\n            stack.push(tmpVar);\n            instructions.push(new AstVariableDefinition(tmpVar, ast1));\n            break;\n\n          case \"roll\":\n            if (stack.length < 2) {\n              return null;\n            }\n\n            num2 = stack.pop();\n            num1 = stack.pop();\n\n            if (num2.type !== \"literal\" || num1.type !== \"literal\") {\n              return null;\n            }\n\n            j = num2.number;\n            n = num1.number;\n\n            if (n <= 0 || !Number.isInteger(n) || !Number.isInteger(j) || stack.length < n) {\n              return null;\n            }\n\n            j = (j % n + n) % n;\n\n            if (j === 0) {\n              break;\n            }\n\n            Array.prototype.push.apply(stack, stack.splice(stack.length - n, n - j));\n            break;\n\n          default:\n            return null;\n        }\n      }\n\n      if (stack.length !== outputSize) {\n        return null;\n      }\n\n      const result = [];\n\n      for (const instruction of instructions) {\n        const statementBuilder = new ExpressionBuilderVisitor();\n        instruction.visit(statementBuilder);\n        result.push(statementBuilder.toString());\n      }\n\n      for (let i = 0, ii = stack.length; i < ii; i++) {\n        const expr = stack[i],\n              statementBuilder = new ExpressionBuilderVisitor();\n        expr.visit(statementBuilder);\n        const min = range[i * 2],\n              max = range[i * 2 + 1];\n        const out = [statementBuilder.toString()];\n\n        if (min > expr.min) {\n          out.unshift(\"Math.max(\", min, \", \");\n          out.push(\")\");\n        }\n\n        if (max < expr.max) {\n          out.unshift(\"Math.min(\", max, \", \");\n          out.push(\")\");\n        }\n\n        out.unshift(\"dest[destOffset + \", i, \"] = \");\n        out.push(\";\");\n        result.push(out.join(\"\"));\n      }\n\n      return result.join(\"\\n\");\n    }\n\n  }\n\n  return PostScriptCompiler;\n}();\n\nexports.PostScriptCompiler = PostScriptCompiler;\n\n/***/ }),\n/* 58 */\n/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {\n\n\n\nObject.defineProperty(exports, \"__esModule\", ({\n  value: true\n}));\nexports.PostScriptParser = exports.PostScriptLexer = void 0;\n\nvar _util = __w_pdfjs_require__(2);\n\nvar _primitives = __w_pdfjs_require__(5);\n\nvar _core_utils = __w_pdfjs_require__(8);\n\nclass PostScriptParser {\n  constructor(lexer) {\n    this.lexer = lexer;\n    this.operators = [];\n    this.token = null;\n    this.prev = null;\n  }\n\n  nextToken() {\n    this.prev = this.token;\n    this.token = this.lexer.getToken();\n  }\n\n  accept(type) {\n    if (this.token.type === type) {\n      this.nextToken();\n      return true;\n    }\n\n    return false;\n  }\n\n  expect(type) {\n    if (this.accept(type)) {\n      return true;\n    }\n\n    throw new _util.FormatError(`Unexpected symbol: found ${this.token.type} expected ${type}.`);\n  }\n\n  parse() {\n    this.nextToken();\n    this.expect(PostScriptTokenTypes.LBRACE);\n    this.parseBlock();\n    this.expect(PostScriptTokenTypes.RBRACE);\n    return this.operators;\n  }\n\n  parseBlock() {\n    while (true) {\n      if (this.accept(PostScriptTokenTypes.NUMBER)) {\n        this.operators.push(this.prev.value);\n      } else if (this.accept(PostScriptTokenTypes.OPERATOR)) {\n        this.operators.push(this.prev.value);\n      } else if (this.accept(PostScriptTokenTypes.LBRACE)) {\n        this.parseCondition();\n      } else {\n        return;\n      }\n    }\n  }\n\n  parseCondition() {\n    const conditionLocation = this.operators.length;\n    this.operators.push(null, null);\n    this.parseBlock();\n    this.expect(PostScriptTokenTypes.RBRACE);\n\n    if (this.accept(PostScriptTokenTypes.IF)) {\n      this.operators[conditionLocation] = this.operators.length;\n      this.operators[conditionLocation + 1] = \"jz\";\n    } else if (this.accept(PostScriptTokenTypes.LBRACE)) {\n      const jumpLocation = this.operators.length;\n      this.operators.push(null, null);\n      const endOfTrue = this.operators.length;\n      this.parseBlock();\n      this.expect(PostScriptTokenTypes.RBRACE);\n      this.expect(PostScriptTokenTypes.IFELSE);\n      this.operators[jumpLocation] = this.operators.length;\n      this.operators[jumpLocation + 1] = \"j\";\n      this.operators[conditionLocation] = endOfTrue;\n      this.operators[conditionLocation + 1] = \"jz\";\n    } else {\n      throw new _util.FormatError(\"PS Function: error parsing conditional.\");\n    }\n  }\n\n}\n\nexports.PostScriptParser = PostScriptParser;\nconst PostScriptTokenTypes = {\n  LBRACE: 0,\n  RBRACE: 1,\n  NUMBER: 2,\n  OPERATOR: 3,\n  IF: 4,\n  IFELSE: 5\n};\n\nclass PostScriptToken {\n  static get opCache() {\n    return (0, _util.shadow)(this, \"opCache\", Object.create(null));\n  }\n\n  constructor(type, value) {\n    this.type = type;\n    this.value = value;\n  }\n\n  static getOperator(op) {\n    const opValue = PostScriptToken.opCache[op];\n\n    if (opValue) {\n      return opValue;\n    }\n\n    return PostScriptToken.opCache[op] = new PostScriptToken(PostScriptTokenTypes.OPERATOR, op);\n  }\n\n  static get LBRACE() {\n    return (0, _util.shadow)(this, \"LBRACE\", new PostScriptToken(PostScriptTokenTypes.LBRACE, \"{\"));\n  }\n\n  static get RBRACE() {\n    return (0, _util.shadow)(this, \"RBRACE\", new PostScriptToken(PostScriptTokenTypes.RBRACE, \"}\"));\n  }\n\n  static get IF() {\n    return (0, _util.shadow)(this, \"IF\", new PostScriptToken(PostScriptTokenTypes.IF, \"IF\"));\n  }\n\n  static get IFELSE() {\n    return (0, _util.shadow)(this, \"IFELSE\", new PostScriptToken(PostScriptTokenTypes.IFELSE, \"IFELSE\"));\n  }\n\n}\n\nclass PostScriptLexer {\n  constructor(stream) {\n    this.stream = stream;\n    this.nextChar();\n    this.strBuf = [];\n  }\n\n  nextChar() {\n    return this.currentChar = this.stream.getByte();\n  }\n\n  getToken() {\n    let comment = false;\n    let ch = this.currentChar;\n\n    while (true) {\n      if (ch < 0) {\n        return _primitives.EOF;\n      }\n\n      if (comment) {\n        if (ch === 0x0a || ch === 0x0d) {\n          comment = false;\n        }\n      } else if (ch === 0x25) {\n        comment = true;\n      } else if (!(0, _core_utils.isWhiteSpace)(ch)) {\n        break;\n      }\n\n      ch = this.nextChar();\n    }\n\n    switch (ch | 0) {\n      case 0x30:\n      case 0x31:\n      case 0x32:\n      case 0x33:\n      case 0x34:\n      case 0x35:\n      case 0x36:\n      case 0x37:\n      case 0x38:\n      case 0x39:\n      case 0x2b:\n      case 0x2d:\n      case 0x2e:\n        return new PostScriptToken(PostScriptTokenTypes.NUMBER, this.getNumber());\n\n      case 0x7b:\n        this.nextChar();\n        return PostScriptToken.LBRACE;\n\n      case 0x7d:\n        this.nextChar();\n        return PostScriptToken.RBRACE;\n    }\n\n    const strBuf = this.strBuf;\n    strBuf.length = 0;\n    strBuf[0] = String.fromCharCode(ch);\n\n    while ((ch = this.nextChar()) >= 0 && (ch >= 0x41 && ch <= 0x5a || ch >= 0x61 && ch <= 0x7a)) {\n      strBuf.push(String.fromCharCode(ch));\n    }\n\n    const str = strBuf.join(\"\");\n\n    switch (str.toLowerCase()) {\n      case \"if\":\n        return PostScriptToken.IF;\n\n      case \"ifelse\":\n        return PostScriptToken.IFELSE;\n\n      default:\n        return PostScriptToken.getOperator(str);\n    }\n  }\n\n  getNumber() {\n    let ch = this.currentChar;\n    const strBuf = this.strBuf;\n    strBuf.length = 0;\n    strBuf[0] = String.fromCharCode(ch);\n\n    while ((ch = this.nextChar()) >= 0) {\n      if (ch >= 0x30 && ch <= 0x39 || ch === 0x2d || ch === 0x2e) {\n        strBuf.push(String.fromCharCode(ch));\n      } else {\n        break;\n      }\n    }\n\n    const value = parseFloat(strBuf.join(\"\"));\n\n    if (isNaN(value)) {\n      throw new _util.FormatError(`Invalid floating point number: ${value}`);\n    }\n\n    return value;\n  }\n\n}\n\nexports.PostScriptLexer = PostScriptLexer;\n\n/***/ }),\n/* 59 */\n/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {\n\n\n\nObject.defineProperty(exports, \"__esModule\", ({\n  value: true\n}));\nexports.LocalTilingPatternCache = exports.LocalImageCache = exports.LocalGStateCache = exports.LocalFunctionCache = exports.LocalColorSpaceCache = exports.GlobalImageCache = void 0;\n\nvar _util = __w_pdfjs_require__(2);\n\nvar _primitives = __w_pdfjs_require__(5);\n\nclass BaseLocalCache {\n  constructor(options) {\n    if (this.constructor === BaseLocalCache) {\n      (0, _util.unreachable)(\"Cannot initialize BaseLocalCache.\");\n    }\n\n    this._onlyRefs = (options && options.onlyRefs) === true;\n\n    if (!this._onlyRefs) {\n      this._nameRefMap = new Map();\n      this._imageMap = new Map();\n    }\n\n    this._imageCache = new _primitives.RefSetCache();\n  }\n\n  getByName(name) {\n    if (this._onlyRefs) {\n      (0, _util.unreachable)(\"Should not call `getByName` method.\");\n    }\n\n    const ref = this._nameRefMap.get(name);\n\n    if (ref) {\n      return this.getByRef(ref);\n    }\n\n    return this._imageMap.get(name) || null;\n  }\n\n  getByRef(ref) {\n    return this._imageCache.get(ref) || null;\n  }\n\n  set(name, ref, data) {\n    (0, _util.unreachable)(\"Abstract method `set` called.\");\n  }\n\n}\n\nclass LocalImageCache extends BaseLocalCache {\n  set(name, ref = null, data) {\n    if (typeof name !== \"string\") {\n      throw new Error('LocalImageCache.set - expected \"name\" argument.');\n    }\n\n    if (ref) {\n      if (this._imageCache.has(ref)) {\n        return;\n      }\n\n      this._nameRefMap.set(name, ref);\n\n      this._imageCache.put(ref, data);\n\n      return;\n    }\n\n    if (this._imageMap.has(name)) {\n      return;\n    }\n\n    this._imageMap.set(name, data);\n  }\n\n}\n\nexports.LocalImageCache = LocalImageCache;\n\nclass LocalColorSpaceCache extends BaseLocalCache {\n  set(name = null, ref = null, data) {\n    if (typeof name !== \"string\" && !ref) {\n      throw new Error('LocalColorSpaceCache.set - expected \"name\" and/or \"ref\" argument.');\n    }\n\n    if (ref) {\n      if (this._imageCache.has(ref)) {\n        return;\n      }\n\n      if (name !== null) {\n        this._nameRefMap.set(name, ref);\n      }\n\n      this._imageCache.put(ref, data);\n\n      return;\n    }\n\n    if (this._imageMap.has(name)) {\n      return;\n    }\n\n    this._imageMap.set(name, data);\n  }\n\n}\n\nexports.LocalColorSpaceCache = LocalColorSpaceCache;\n\nclass LocalFunctionCache extends BaseLocalCache {\n  constructor(options) {\n    super({\n      onlyRefs: true\n    });\n  }\n\n  set(name = null, ref, data) {\n    if (!ref) {\n      throw new Error('LocalFunctionCache.set - expected \"ref\" argument.');\n    }\n\n    if (this._imageCache.has(ref)) {\n      return;\n    }\n\n    this._imageCache.put(ref, data);\n  }\n\n}\n\nexports.LocalFunctionCache = LocalFunctionCache;\n\nclass LocalGStateCache extends BaseLocalCache {\n  set(name, ref = null, data) {\n    if (typeof name !== \"string\") {\n      throw new Error('LocalGStateCache.set - expected \"name\" argument.');\n    }\n\n    if (ref) {\n      if (this._imageCache.has(ref)) {\n        return;\n      }\n\n      this._nameRefMap.set(name, ref);\n\n      this._imageCache.put(ref, data);\n\n      return;\n    }\n\n    if (this._imageMap.has(name)) {\n      return;\n    }\n\n    this._imageMap.set(name, data);\n  }\n\n}\n\nexports.LocalGStateCache = LocalGStateCache;\n\nclass LocalTilingPatternCache extends BaseLocalCache {\n  constructor(options) {\n    super({\n      onlyRefs: true\n    });\n  }\n\n  set(name = null, ref, data) {\n    if (!ref) {\n      throw new Error('LocalTilingPatternCache.set - expected \"ref\" argument.');\n    }\n\n    if (this._imageCache.has(ref)) {\n      return;\n    }\n\n    this._imageCache.put(ref, data);\n  }\n\n}\n\nexports.LocalTilingPatternCache = LocalTilingPatternCache;\n\nclass GlobalImageCache {\n  static get NUM_PAGES_THRESHOLD() {\n    return (0, _util.shadow)(this, \"NUM_PAGES_THRESHOLD\", 2);\n  }\n\n  static get MIN_IMAGES_TO_CACHE() {\n    return (0, _util.shadow)(this, \"MIN_IMAGES_TO_CACHE\", 10);\n  }\n\n  static get MAX_BYTE_SIZE() {\n    return (0, _util.shadow)(this, \"MAX_BYTE_SIZE\", 40e6);\n  }\n\n  constructor() {\n    this._refCache = new _primitives.RefSetCache();\n    this._imageCache = new _primitives.RefSetCache();\n  }\n\n  get _byteSize() {\n    let byteSize = 0;\n\n    this._imageCache.forEach(imageData => {\n      byteSize += imageData.byteSize;\n    });\n\n    return byteSize;\n  }\n\n  get _cacheLimitReached() {\n    if (this._imageCache.size < GlobalImageCache.MIN_IMAGES_TO_CACHE) {\n      return false;\n    }\n\n    if (this._byteSize < GlobalImageCache.MAX_BYTE_SIZE) {\n      return false;\n    }\n\n    return true;\n  }\n\n  shouldCache(ref, pageIndex) {\n    const pageIndexSet = this._refCache.get(ref);\n\n    const numPages = pageIndexSet ? pageIndexSet.size + (pageIndexSet.has(pageIndex) ? 0 : 1) : 1;\n\n    if (numPages < GlobalImageCache.NUM_PAGES_THRESHOLD) {\n      return false;\n    }\n\n    if (!this._imageCache.has(ref) && this._cacheLimitReached) {\n      return false;\n    }\n\n    return true;\n  }\n\n  addPageIndex(ref, pageIndex) {\n    let pageIndexSet = this._refCache.get(ref);\n\n    if (!pageIndexSet) {\n      pageIndexSet = new Set();\n\n      this._refCache.put(ref, pageIndexSet);\n    }\n\n    pageIndexSet.add(pageIndex);\n  }\n\n  addByteSize(ref, byteSize) {\n    const imageData = this._imageCache.get(ref);\n\n    if (!imageData) {\n      return;\n    }\n\n    if (imageData.byteSize) {\n      return;\n    }\n\n    imageData.byteSize = byteSize;\n  }\n\n  getData(ref, pageIndex) {\n    const pageIndexSet = this._refCache.get(ref);\n\n    if (!pageIndexSet) {\n      return null;\n    }\n\n    if (pageIndexSet.size < GlobalImageCache.NUM_PAGES_THRESHOLD) {\n      return null;\n    }\n\n    const imageData = this._imageCache.get(ref);\n\n    if (!imageData) {\n      return null;\n    }\n\n    pageIndexSet.add(pageIndex);\n    return imageData;\n  }\n\n  setData(ref, data) {\n    if (!this._refCache.has(ref)) {\n      throw new Error('GlobalImageCache.setData - expected \"addPageIndex\" to have been called.');\n    }\n\n    if (this._imageCache.has(ref)) {\n      return;\n    }\n\n    if (this._cacheLimitReached) {\n      (0, _util.warn)(\"GlobalImageCache.setData - cache limit reached.\");\n      return;\n    }\n\n    this._imageCache.put(ref, data);\n  }\n\n  clear(onlyData = false) {\n    if (!onlyData) {\n      this._refCache.clear();\n    }\n\n    this._imageCache.clear();\n  }\n\n}\n\nexports.GlobalImageCache = GlobalImageCache;\n\n/***/ }),\n/* 60 */\n/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {\n\n\n\nObject.defineProperty(exports, \"__esModule\", ({\n  value: true\n}));\nexports.bidi = bidi;\n\nvar _util = __w_pdfjs_require__(2);\n\nconst baseTypes = [\"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"S\", \"B\", \"S\", \"WS\", \"B\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"B\", \"B\", \"B\", \"S\", \"WS\", \"ON\", \"ON\", \"ET\", \"ET\", \"ET\", \"ON\", \"ON\", \"ON\", \"ON\", \"ON\", \"ES\", \"CS\", \"ES\", \"CS\", \"CS\", \"EN\", \"EN\", \"EN\", \"EN\", \"EN\", \"EN\", \"EN\", \"EN\", \"EN\", \"EN\", \"CS\", \"ON\", \"ON\", \"ON\", \"ON\", \"ON\", \"ON\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"ON\", \"ON\", \"ON\", \"ON\", \"ON\", \"ON\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"ON\", \"ON\", \"ON\", \"ON\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"B\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"BN\", \"CS\", \"ON\", \"ET\", \"ET\", \"ET\", \"ET\", \"ON\", \"ON\", \"ON\", \"ON\", \"L\", \"ON\", \"ON\", \"BN\", \"ON\", \"ON\", \"ET\", \"ET\", \"EN\", \"EN\", \"ON\", \"L\", \"ON\", \"ON\", \"ON\", \"EN\", \"L\", \"ON\", \"ON\", \"ON\", \"ON\", \"ON\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"ON\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"ON\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\", \"L\"];\nconst arabicTypes = [\"AN\", \"AN\", \"AN\", \"AN\", \"AN\", \"AN\", \"ON\", \"ON\", \"AL\", \"ET\", \"ET\", \"AL\", \"CS\", \"AL\", \"ON\", \"ON\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"AL\", \"AL\", \"\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"AN\", \"AN\", \"AN\", \"AN\", \"AN\", \"AN\", \"AN\", \"AN\", \"AN\", \"AN\", \"ET\", \"AN\", \"AN\", \"AL\", \"AL\", \"AL\", \"NSM\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"AN\", \"ON\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"AL\", \"AL\", \"NSM\", \"NSM\", \"ON\", \"NSM\", \"NSM\", \"NSM\", \"NSM\", \"AL\", \"AL\", \"EN\", \"EN\", \"EN\", \"EN\", \"EN\", \"EN\", \"EN\", \"EN\", \"EN\", \"EN\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\", \"AL\"];\n\nfunction isOdd(i) {\n  return (i & 1) !== 0;\n}\n\nfunction isEven(i) {\n  return (i & 1) === 0;\n}\n\nfunction findUnequal(arr, start, value) {\n  let j, jj;\n\n  for (j = start, jj = arr.length; j < jj; ++j) {\n    if (arr[j] !== value) {\n      return j;\n    }\n  }\n\n  return j;\n}\n\nfunction setValues(arr, start, end, value) {\n  for (let j = start; j < end; ++j) {\n    arr[j] = value;\n  }\n}\n\nfunction reverseValues(arr, start, end) {\n  for (let i = start, j = end - 1; i < j; ++i, --j) {\n    const temp = arr[i];\n    arr[i] = arr[j];\n    arr[j] = temp;\n  }\n}\n\nfunction createBidiText(str, isLTR, vertical = false) {\n  let dir = \"ltr\";\n\n  if (vertical) {\n    dir = \"ttb\";\n  } else if (!isLTR) {\n    dir = \"rtl\";\n  }\n\n  return {\n    str,\n    dir\n  };\n}\n\nconst chars = [];\nconst types = [];\n\nfunction bidi(str, startLevel = -1, vertical = false) {\n  let isLTR = true;\n  const strLength = str.length;\n\n  if (strLength === 0 || vertical) {\n    return createBidiText(str, isLTR, vertical);\n  }\n\n  chars.length = strLength;\n  types.length = strLength;\n  let numBidi = 0;\n  let i, ii;\n\n  for (i = 0; i < strLength; ++i) {\n    chars[i] = str.charAt(i);\n    const charCode = str.charCodeAt(i);\n    let charType = \"L\";\n\n    if (charCode <= 0x00ff) {\n      charType = baseTypes[charCode];\n    } else if (0x0590 <= charCode && charCode <= 0x05f4) {\n      charType = \"R\";\n    } else if (0x0600 <= charCode && charCode <= 0x06ff) {\n      charType = arabicTypes[charCode & 0xff];\n\n      if (!charType) {\n        (0, _util.warn)(\"Bidi: invalid Unicode character \" + charCode.toString(16));\n      }\n    } else if (0x0700 <= charCode && charCode <= 0x08ac) {\n      charType = \"AL\";\n    }\n\n    if (charType === \"R\" || charType === \"AL\" || charType === \"AN\") {\n      numBidi++;\n    }\n\n    types[i] = charType;\n  }\n\n  if (numBidi === 0) {\n    isLTR = true;\n    return createBidiText(str, isLTR);\n  }\n\n  if (startLevel === -1) {\n    if (numBidi / strLength < 0.3 && strLength > 4) {\n      isLTR = true;\n      startLevel = 0;\n    } else {\n      isLTR = false;\n      startLevel = 1;\n    }\n  }\n\n  const levels = [];\n\n  for (i = 0; i < strLength; ++i) {\n    levels[i] = startLevel;\n  }\n\n  const e = isOdd(startLevel) ? \"R\" : \"L\";\n  const sor = e;\n  const eor = sor;\n  let lastType = sor;\n\n  for (i = 0; i < strLength; ++i) {\n    if (types[i] === \"NSM\") {\n      types[i] = lastType;\n    } else {\n      lastType = types[i];\n    }\n  }\n\n  lastType = sor;\n  let t;\n\n  for (i = 0; i < strLength; ++i) {\n    t = types[i];\n\n    if (t === \"EN\") {\n      types[i] = lastType === \"AL\" ? \"AN\" : \"EN\";\n    } else if (t === \"R\" || t === \"L\" || t === \"AL\") {\n      lastType = t;\n    }\n  }\n\n  for (i = 0; i < strLength; ++i) {\n    t = types[i];\n\n    if (t === \"AL\") {\n      types[i] = \"R\";\n    }\n  }\n\n  for (i = 1; i < strLength - 1; ++i) {\n    if (types[i] === \"ES\" && types[i - 1] === \"EN\" && types[i + 1] === \"EN\") {\n      types[i] = \"EN\";\n    }\n\n    if (types[i] === \"CS\" && (types[i - 1] === \"EN\" || types[i - 1] === \"AN\") && types[i + 1] === types[i - 1]) {\n      types[i] = types[i - 1];\n    }\n  }\n\n  for (i = 0; i < strLength; ++i) {\n    if (types[i] === \"EN\") {\n      for (let j = i - 1; j >= 0; --j) {\n        if (types[j] !== \"ET\") {\n          break;\n        }\n\n        types[j] = \"EN\";\n      }\n\n      for (let j = i + 1; j < strLength; ++j) {\n        if (types[j] !== \"ET\") {\n          break;\n        }\n\n        types[j] = \"EN\";\n      }\n    }\n  }\n\n  for (i = 0; i < strLength; ++i) {\n    t = types[i];\n\n    if (t === \"WS\" || t === \"ES\" || t === \"ET\" || t === \"CS\") {\n      types[i] = \"ON\";\n    }\n  }\n\n  lastType = sor;\n\n  for (i = 0; i < strLength; ++i) {\n    t = types[i];\n\n    if (t === \"EN\") {\n      types[i] = lastType === \"L\" ? \"L\" : \"EN\";\n    } else if (t === \"R\" || t === \"L\") {\n      lastType = t;\n    }\n  }\n\n  for (i = 0; i < strLength; ++i) {\n    if (types[i] === \"ON\") {\n      const end = findUnequal(types, i + 1, \"ON\");\n      let before = sor;\n\n      if (i > 0) {\n        before = types[i - 1];\n      }\n\n      let after = eor;\n\n      if (end + 1 < strLength) {\n        after = types[end + 1];\n      }\n\n      if (before !== \"L\") {\n        before = \"R\";\n      }\n\n      if (after !== \"L\") {\n        after = \"R\";\n      }\n\n      if (before === after) {\n        setValues(types, i, end, before);\n      }\n\n      i = end - 1;\n    }\n  }\n\n  for (i = 0; i < strLength; ++i) {\n    if (types[i] === \"ON\") {\n      types[i] = e;\n    }\n  }\n\n  for (i = 0; i < strLength; ++i) {\n    t = types[i];\n\n    if (isEven(levels[i])) {\n      if (t === \"R\") {\n        levels[i] += 1;\n      } else if (t === \"AN\" || t === \"EN\") {\n        levels[i] += 2;\n      }\n    } else {\n      if (t === \"L\" || t === \"AN\" || t === \"EN\") {\n        levels[i] += 1;\n      }\n    }\n  }\n\n  let highestLevel = -1;\n  let lowestOddLevel = 99;\n  let level;\n\n  for (i = 0, ii = levels.length; i < ii; ++i) {\n    level = levels[i];\n\n    if (highestLevel < level) {\n      highestLevel = level;\n    }\n\n    if (lowestOddLevel > level && isOdd(level)) {\n      lowestOddLevel = level;\n    }\n  }\n\n  for (level = highestLevel; level >= lowestOddLevel; --level) {\n    let start = -1;\n\n    for (i = 0, ii = levels.length; i < ii; ++i) {\n      if (levels[i] < level) {\n        if (start >= 0) {\n          reverseValues(chars, start, i);\n          start = -1;\n        }\n      } else if (start < 0) {\n        start = i;\n      }\n    }\n\n    if (start >= 0) {\n      reverseValues(chars, start, levels.length);\n    }\n  }\n\n  for (i = 0, ii = chars.length; i < ii; ++i) {\n    const ch = chars[i];\n\n    if (ch === \"<\" || ch === \">\") {\n      chars[i] = \"\";\n    }\n  }\n\n  return createBidiText(chars.join(\"\"), isLTR);\n}\n\n/***/ }),\n/* 61 */\n/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {\n\n\n\nObject.defineProperty(exports, \"__esModule\", ({\n  value: true\n}));\nexports.MurmurHash3_64 = void 0;\n\nvar _util = __w_pdfjs_require__(2);\n\nconst SEED = 0xc3d2e1f0;\nconst MASK_HIGH = 0xffff0000;\nconst MASK_LOW = 0xffff;\n\nclass MurmurHash3_64 {\n  constructor(seed) {\n    this.h1 = seed ? seed & 0xffffffff : SEED;\n    this.h2 = seed ? seed & 0xffffffff : SEED;\n  }\n\n  update(input) {\n    let data, length;\n\n    if (typeof input === \"string\") {\n      data = new Uint8Array(input.length * 2);\n      length = 0;\n\n      for (let i = 0, ii = input.length; i < ii; i++) {\n        const code = input.charCodeAt(i);\n\n        if (code <= 0xff) {\n          data[length++] = code;\n        } else {\n          data[length++] = code >>> 8;\n          data[length++] = code & 0xff;\n        }\n      }\n    } else if ((0, _util.isArrayBuffer)(input)) {\n      data = input.slice();\n      length = data.byteLength;\n    } else {\n      throw new Error(\"Wrong data format in MurmurHash3_64_update. \" + \"Input must be a string or array.\");\n    }\n\n    const blockCounts = length >> 2;\n    const tailLength = length - blockCounts * 4;\n    const dataUint32 = new Uint32Array(data.buffer, 0, blockCounts);\n    let k1 = 0,\n        k2 = 0;\n    let h1 = this.h1,\n        h2 = this.h2;\n    const C1 = 0xcc9e2d51,\n          C2 = 0x1b873593;\n    const C1_LOW = C1 & MASK_LOW,\n          C2_LOW = C2 & MASK_LOW;\n\n    for (let i = 0; i < blockCounts; i++) {\n      if (i & 1) {\n        k1 = dataUint32[i];\n        k1 = k1 * C1 & MASK_HIGH | k1 * C1_LOW & MASK_LOW;\n        k1 = k1 << 15 | k1 >>> 17;\n        k1 = k1 * C2 & MASK_HIGH | k1 * C2_LOW & MASK_LOW;\n        h1 ^= k1;\n        h1 = h1 << 13 | h1 >>> 19;\n        h1 = h1 * 5 + 0xe6546b64;\n      } else {\n        k2 = dataUint32[i];\n        k2 = k2 * C1 & MASK_HIGH | k2 * C1_LOW & MASK_LOW;\n        k2 = k2 << 15 | k2 >>> 17;\n        k2 = k2 * C2 & MASK_HIGH | k2 * C2_LOW & MASK_LOW;\n        h2 ^= k2;\n        h2 = h2 << 13 | h2 >>> 19;\n        h2 = h2 * 5 + 0xe6546b64;\n      }\n    }\n\n    k1 = 0;\n\n    switch (tailLength) {\n      case 3:\n        k1 ^= data[blockCounts * 4 + 2] << 16;\n\n      case 2:\n        k1 ^= data[blockCounts * 4 + 1] << 8;\n\n      case 1:\n        k1 ^= data[blockCounts * 4];\n        k1 = k1 * C1 & MASK_HIGH | k1 * C1_LOW & MASK_LOW;\n        k1 = k1 << 15 | k1 >>> 17;\n        k1 = k1 * C2 & MASK_HIGH | k1 * C2_LOW & MASK_LOW;\n\n        if (blockCounts & 1) {\n          h1 ^= k1;\n        } else {\n          h2 ^= k1;\n        }\n\n    }\n\n    this.h1 = h1;\n    this.h2 = h2;\n  }\n\n  hexdigest() {\n    let h1 = this.h1,\n        h2 = this.h2;\n    h1 ^= h2 >>> 1;\n    h1 = h1 * 0xed558ccd & MASK_HIGH | h1 * 0x8ccd & MASK_LOW;\n    h2 = h2 * 0xff51afd7 & MASK_HIGH | ((h2 << 16 | h1 >>> 16) * 0xafd7ed55 & MASK_HIGH) >>> 16;\n    h1 ^= h2 >>> 1;\n    h1 = h1 * 0x1a85ec53 & MASK_HIGH | h1 * 0xec53 & MASK_LOW;\n    h2 = h2 * 0xc4ceb9fe & MASK_HIGH | ((h2 << 16 | h1 >>> 16) * 0xb9fe1a85 & MASK_HIGH) >>> 16;\n    h1 ^= h2 >>> 1;\n    const hex1 = (h1 >>> 0).toString(16),\n          hex2 = (h2 >>> 0).toString(16);\n    return hex1.padStart(8, \"0\") + hex2.padStart(8, \"0\");\n  }\n\n}\n\nexports.MurmurHash3_64 = MurmurHash3_64;\n\n/***/ }),\n/* 62 */\n/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {\n\n\n\nObject.defineProperty(exports, \"__esModule\", ({\n  value: true\n}));\nexports.OperatorList = void 0;\n\nvar _util = __w_pdfjs_require__(2);\n\nfunction addState(parentState, pattern, checkFn, iterateFn, processFn) {\n  let state = parentState;\n\n  for (let i = 0, ii = pattern.length - 1; i < ii; i++) {\n    const item = pattern[i];\n    state = state[item] || (state[item] = []);\n  }\n\n  state[pattern[pattern.length - 1]] = {\n    checkFn,\n    iterateFn,\n    processFn\n  };\n}\n\nfunction handlePaintSolidColorImageMask(iFirstSave, count, fnArray, argsArray) {\n  const iFirstPIMXO = iFirstSave + 2;\n  let i;\n\n  for (i = 0; i < count; i++) {\n    const arg = argsArray[iFirstPIMXO + 4 * i];\n    const imageMask = arg.length === 1 && arg[0];\n\n    if (imageMask && imageMask.width === 1 && imageMask.height === 1 && (!imageMask.data.length || imageMask.data.length === 1 && imageMask.data[0] === 0)) {\n      fnArray[iFirstPIMXO + 4 * i] = _util.OPS.paintSolidColorImageMask;\n      continue;\n    }\n\n    break;\n  }\n\n  return count - i;\n}\n\nconst InitialState = [];\naddState(InitialState, [_util.OPS.save, _util.OPS.transform, _util.OPS.paintInlineImageXObject, _util.OPS.restore], null, function iterateInlineImageGroup(context, i) {\n  const fnArray = context.fnArray;\n  const iFirstSave = context.iCurr - 3;\n  const pos = (i - iFirstSave) % 4;\n\n  switch (pos) {\n    case 0:\n      return fnArray[i] === _util.OPS.save;\n\n    case 1:\n      return fnArray[i] === _util.OPS.transform;\n\n    case 2:\n      return fnArray[i] === _util.OPS.paintInlineImageXObject;\n\n    case 3:\n      return fnArray[i] === _util.OPS.restore;\n  }\n\n  throw new Error(`iterateInlineImageGroup - invalid pos: ${pos}`);\n}, function foundInlineImageGroup(context, i) {\n  const MIN_IMAGES_IN_INLINE_IMAGES_BLOCK = 10;\n  const MAX_IMAGES_IN_INLINE_IMAGES_BLOCK = 200;\n  const MAX_WIDTH = 1000;\n  const IMAGE_PADDING = 1;\n  const fnArray = context.fnArray,\n        argsArray = context.argsArray;\n  const curr = context.iCurr;\n  const iFirstSave = curr - 3;\n  const iFirstTransform = curr - 2;\n  const iFirstPIIXO = curr - 1;\n  const count = Math.min(Math.floor((i - iFirstSave) / 4), MAX_IMAGES_IN_INLINE_IMAGES_BLOCK);\n\n  if (count < MIN_IMAGES_IN_INLINE_IMAGES_BLOCK) {\n    return i - (i - iFirstSave) % 4;\n  }\n\n  let maxX = 0;\n  const map = [];\n  let maxLineHeight = 0;\n  let currentX = IMAGE_PADDING,\n      currentY = IMAGE_PADDING;\n\n  for (let q = 0; q < count; q++) {\n    const transform = argsArray[iFirstTransform + (q << 2)];\n    const img = argsArray[iFirstPIIXO + (q << 2)][0];\n\n    if (currentX + img.width > MAX_WIDTH) {\n      maxX = Math.max(maxX, currentX);\n      currentY += maxLineHeight + 2 * IMAGE_PADDING;\n      currentX = 0;\n      maxLineHeight = 0;\n    }\n\n    map.push({\n      transform,\n      x: currentX,\n      y: currentY,\n      w: img.width,\n      h: img.height\n    });\n    currentX += img.width + 2 * IMAGE_PADDING;\n    maxLineHeight = Math.max(maxLineHeight, img.height);\n  }\n\n  const imgWidth = Math.max(maxX, currentX) + IMAGE_PADDING;\n  const imgHeight = currentY + maxLineHeight + IMAGE_PADDING;\n  const imgData = new Uint8ClampedArray(imgWidth * imgHeight * 4);\n  const imgRowSize = imgWidth << 2;\n\n  for (let q = 0; q < count; q++) {\n    const data = argsArray[iFirstPIIXO + (q << 2)][0].data;\n    const rowSize = map[q].w << 2;\n    let dataOffset = 0;\n    let offset = map[q].x + map[q].y * imgWidth << 2;\n    imgData.set(data.subarray(0, rowSize), offset - imgRowSize);\n\n    for (let k = 0, kk = map[q].h; k < kk; k++) {\n      imgData.set(data.subarray(dataOffset, dataOffset + rowSize), offset);\n      dataOffset += rowSize;\n      offset += imgRowSize;\n    }\n\n    imgData.set(data.subarray(dataOffset - rowSize, dataOffset), offset);\n\n    while (offset >= 0) {\n      data[offset - 4] = data[offset];\n      data[offset - 3] = data[offset + 1];\n      data[offset - 2] = data[offset + 2];\n      data[offset - 1] = data[offset + 3];\n      data[offset + rowSize] = data[offset + rowSize - 4];\n      data[offset + rowSize + 1] = data[offset + rowSize - 3];\n      data[offset + rowSize + 2] = data[offset + rowSize - 2];\n      data[offset + rowSize + 3] = data[offset + rowSize - 1];\n      offset -= imgRowSize;\n    }\n  }\n\n  fnArray.splice(iFirstSave, count * 4, _util.OPS.paintInlineImageXObjectGroup);\n  argsArray.splice(iFirstSave, count * 4, [{\n    width: imgWidth,\n    height: imgHeight,\n    kind: _util.ImageKind.RGBA_32BPP,\n    data: imgData\n  }, map]);\n  return iFirstSave + 1;\n});\naddState(InitialState, [_util.OPS.save, _util.OPS.transform, _util.OPS.paintImageMaskXObject, _util.OPS.restore], null, function iterateImageMaskGroup(context, i) {\n  const fnArray = context.fnArray;\n  const iFirstSave = context.iCurr - 3;\n  const pos = (i - iFirstSave) % 4;\n\n  switch (pos) {\n    case 0:\n      return fnArray[i] === _util.OPS.save;\n\n    case 1:\n      return fnArray[i] === _util.OPS.transform;\n\n    case 2:\n      return fnArray[i] === _util.OPS.paintImageMaskXObject;\n\n    case 3:\n      return fnArray[i] === _util.OPS.restore;\n  }\n\n  throw new Error(`iterateImageMaskGroup - invalid pos: ${pos}`);\n}, function foundImageMaskGroup(context, i) {\n  const MIN_IMAGES_IN_MASKS_BLOCK = 10;\n  const MAX_IMAGES_IN_MASKS_BLOCK = 100;\n  const MAX_SAME_IMAGES_IN_MASKS_BLOCK = 1000;\n  const fnArray = context.fnArray,\n        argsArray = context.argsArray;\n  const curr = context.iCurr;\n  const iFirstSave = curr - 3;\n  const iFirstTransform = curr - 2;\n  const iFirstPIMXO = curr - 1;\n  let count = Math.floor((i - iFirstSave) / 4);\n  count = handlePaintSolidColorImageMask(iFirstSave, count, fnArray, argsArray);\n\n  if (count < MIN_IMAGES_IN_MASKS_BLOCK) {\n    return i - (i - iFirstSave) % 4;\n  }\n\n  let isSameImage = false;\n  let iTransform, transformArgs;\n  const firstPIMXOArg0 = argsArray[iFirstPIMXO][0];\n  const firstTransformArg0 = argsArray[iFirstTransform][0],\n        firstTransformArg1 = argsArray[iFirstTransform][1],\n        firstTransformArg2 = argsArray[iFirstTransform][2],\n        firstTransformArg3 = argsArray[iFirstTransform][3];\n\n  if (firstTransformArg1 === firstTransformArg2) {\n    isSameImage = true;\n    iTransform = iFirstTransform + 4;\n    let iPIMXO = iFirstPIMXO + 4;\n\n    for (let q = 1; q < count; q++, iTransform += 4, iPIMXO += 4) {\n      transformArgs = argsArray[iTransform];\n\n      if (argsArray[iPIMXO][0] !== firstPIMXOArg0 || transformArgs[0] !== firstTransformArg0 || transformArgs[1] !== firstTransformArg1 || transformArgs[2] !== firstTransformArg2 || transformArgs[3] !== firstTransformArg3) {\n        if (q < MIN_IMAGES_IN_MASKS_BLOCK) {\n          isSameImage = false;\n        } else {\n          count = q;\n        }\n\n        break;\n      }\n    }\n  }\n\n  if (isSameImage) {\n    count = Math.min(count, MAX_SAME_IMAGES_IN_MASKS_BLOCK);\n    const positions = new Float32Array(count * 2);\n    iTransform = iFirstTransform;\n\n    for (let q = 0; q < count; q++, iTransform += 4) {\n      transformArgs = argsArray[iTransform];\n      positions[q << 1] = transformArgs[4];\n      positions[(q << 1) + 1] = transformArgs[5];\n    }\n\n    fnArray.splice(iFirstSave, count * 4, _util.OPS.paintImageMaskXObjectRepeat);\n    argsArray.splice(iFirstSave, count * 4, [firstPIMXOArg0, firstTransformArg0, firstTransformArg1, firstTransformArg2, firstTransformArg3, positions]);\n  } else {\n    count = Math.min(count, MAX_IMAGES_IN_MASKS_BLOCK);\n    const images = [];\n\n    for (let q = 0; q < count; q++) {\n      transformArgs = argsArray[iFirstTransform + (q << 2)];\n      const maskParams = argsArray[iFirstPIMXO + (q << 2)][0];\n      images.push({\n        data: maskParams.data,\n        width: maskParams.width,\n        height: maskParams.height,\n        transform: transformArgs\n      });\n    }\n\n    fnArray.splice(iFirstSave, count * 4, _util.OPS.paintImageMaskXObjectGroup);\n    argsArray.splice(iFirstSave, count * 4, [images]);\n  }\n\n  return iFirstSave + 1;\n});\naddState(InitialState, [_util.OPS.save, _util.OPS.transform, _util.OPS.paintImageXObject, _util.OPS.restore], function (context) {\n  const argsArray = context.argsArray;\n  const iFirstTransform = context.iCurr - 2;\n  return argsArray[iFirstTransform][1] === 0 && argsArray[iFirstTransform][2] === 0;\n}, function iterateImageGroup(context, i) {\n  const fnArray = context.fnArray,\n        argsArray = context.argsArray;\n  const iFirstSave = context.iCurr - 3;\n  const pos = (i - iFirstSave) % 4;\n\n  switch (pos) {\n    case 0:\n      return fnArray[i] === _util.OPS.save;\n\n    case 1:\n      if (fnArray[i] !== _util.OPS.transform) {\n        return false;\n      }\n\n      const iFirstTransform = context.iCurr - 2;\n      const firstTransformArg0 = argsArray[iFirstTransform][0];\n      const firstTransformArg3 = argsArray[iFirstTransform][3];\n\n      if (argsArray[i][0] !== firstTransformArg0 || argsArray[i][1] !== 0 || argsArray[i][2] !== 0 || argsArray[i][3] !== firstTransformArg3) {\n        return false;\n      }\n\n      return true;\n\n    case 2:\n      if (fnArray[i] !== _util.OPS.paintImageXObject) {\n        return false;\n      }\n\n      const iFirstPIXO = context.iCurr - 1;\n      const firstPIXOArg0 = argsArray[iFirstPIXO][0];\n\n      if (argsArray[i][0] !== firstPIXOArg0) {\n        return false;\n      }\n\n      return true;\n\n    case 3:\n      return fnArray[i] === _util.OPS.restore;\n  }\n\n  throw new Error(`iterateImageGroup - invalid pos: ${pos}`);\n}, function (context, i) {\n  const MIN_IMAGES_IN_BLOCK = 3;\n  const MAX_IMAGES_IN_BLOCK = 1000;\n  const fnArray = context.fnArray,\n        argsArray = context.argsArray;\n  const curr = context.iCurr;\n  const iFirstSave = curr - 3;\n  const iFirstTransform = curr - 2;\n  const iFirstPIXO = curr - 1;\n  const firstPIXOArg0 = argsArray[iFirstPIXO][0];\n  const firstTransformArg0 = argsArray[iFirstTransform][0];\n  const firstTransformArg3 = argsArray[iFirstTransform][3];\n  const count = Math.min(Math.floor((i - iFirstSave) / 4), MAX_IMAGES_IN_BLOCK);\n\n  if (count < MIN_IMAGES_IN_BLOCK) {\n    return i - (i - iFirstSave) % 4;\n  }\n\n  const positions = new Float32Array(count * 2);\n  let iTransform = iFirstTransform;\n\n  for (let q = 0; q < count; q++, iTransform += 4) {\n    const transformArgs = argsArray[iTransform];\n    positions[q << 1] = transformArgs[4];\n    positions[(q << 1) + 1] = transformArgs[5];\n  }\n\n  const args = [firstPIXOArg0, firstTransformArg0, firstTransformArg3, positions];\n  fnArray.splice(iFirstSave, count * 4, _util.OPS.paintImageXObjectRepeat);\n  argsArray.splice(iFirstSave, count * 4, args);\n  return iFirstSave + 1;\n});\naddState(InitialState, [_util.OPS.beginText, _util.OPS.setFont, _util.OPS.setTextMatrix, _util.OPS.showText, _util.OPS.endText], null, function iterateShowTextGroup(context, i) {\n  const fnArray = context.fnArray,\n        argsArray = context.argsArray;\n  const iFirstSave = context.iCurr - 4;\n  const pos = (i - iFirstSave) % 5;\n\n  switch (pos) {\n    case 0:\n      return fnArray[i] === _util.OPS.beginText;\n\n    case 1:\n      return fnArray[i] === _util.OPS.setFont;\n\n    case 2:\n      return fnArray[i] === _util.OPS.setTextMatrix;\n\n    case 3:\n      if (fnArray[i] !== _util.OPS.showText) {\n        return false;\n      }\n\n      const iFirstSetFont = context.iCurr - 3;\n      const firstSetFontArg0 = argsArray[iFirstSetFont][0];\n      const firstSetFontArg1 = argsArray[iFirstSetFont][1];\n\n      if (argsArray[i][0] !== firstSetFontArg0 || argsArray[i][1] !== firstSetFontArg1) {\n        return false;\n      }\n\n      return true;\n\n    case 4:\n      return fnArray[i] === _util.OPS.endText;\n  }\n\n  throw new Error(`iterateShowTextGroup - invalid pos: ${pos}`);\n}, function (context, i) {\n  const MIN_CHARS_IN_BLOCK = 3;\n  const MAX_CHARS_IN_BLOCK = 1000;\n  const fnArray = context.fnArray,\n        argsArray = context.argsArray;\n  const curr = context.iCurr;\n  const iFirstBeginText = curr - 4;\n  const iFirstSetFont = curr - 3;\n  const iFirstSetTextMatrix = curr - 2;\n  const iFirstShowText = curr - 1;\n  const iFirstEndText = curr;\n  const firstSetFontArg0 = argsArray[iFirstSetFont][0];\n  const firstSetFontArg1 = argsArray[iFirstSetFont][1];\n  let count = Math.min(Math.floor((i - iFirstBeginText) / 5), MAX_CHARS_IN_BLOCK);\n\n  if (count < MIN_CHARS_IN_BLOCK) {\n    return i - (i - iFirstBeginText) % 5;\n  }\n\n  let iFirst = iFirstBeginText;\n\n  if (iFirstBeginText >= 4 && fnArray[iFirstBeginText - 4] === fnArray[iFirstSetFont] && fnArray[iFirstBeginText - 3] === fnArray[iFirstSetTextMatrix] && fnArray[iFirstBeginText - 2] === fnArray[iFirstShowText] && fnArray[iFirstBeginText - 1] === fnArray[iFirstEndText] && argsArray[iFirstBeginText - 4][0] === firstSetFontArg0 && argsArray[iFirstBeginText - 4][1] === firstSetFontArg1) {\n    count++;\n    iFirst -= 5;\n  }\n\n  let iEndText = iFirst + 4;\n\n  for (let q = 1; q < count; q++) {\n    fnArray.splice(iEndText, 3);\n    argsArray.splice(iEndText, 3);\n    iEndText += 2;\n  }\n\n  return iEndText + 1;\n});\n\nclass NullOptimizer {\n  constructor(queue) {\n    this.queue = queue;\n  }\n\n  _optimize() {}\n\n  push(fn, args) {\n    this.queue.fnArray.push(fn);\n    this.queue.argsArray.push(args);\n\n    this._optimize();\n  }\n\n  flush() {}\n\n  reset() {}\n\n}\n\nclass QueueOptimizer extends NullOptimizer {\n  constructor(queue) {\n    super(queue);\n    this.state = null;\n    this.context = {\n      iCurr: 0,\n      fnArray: queue.fnArray,\n      argsArray: queue.argsArray\n    };\n    this.match = null;\n    this.lastProcessed = 0;\n  }\n\n  _optimize() {\n    const fnArray = this.queue.fnArray;\n    let i = this.lastProcessed,\n        ii = fnArray.length;\n    let state = this.state;\n    let match = this.match;\n\n    if (!state && !match && i + 1 === ii && !InitialState[fnArray[i]]) {\n      this.lastProcessed = ii;\n      return;\n    }\n\n    const context = this.context;\n\n    while (i < ii) {\n      if (match) {\n        const iterate = (0, match.iterateFn)(context, i);\n\n        if (iterate) {\n          i++;\n          continue;\n        }\n\n        i = (0, match.processFn)(context, i + 1);\n        ii = fnArray.length;\n        match = null;\n        state = null;\n\n        if (i >= ii) {\n          break;\n        }\n      }\n\n      state = (state || InitialState)[fnArray[i]];\n\n      if (!state || Array.isArray(state)) {\n        i++;\n        continue;\n      }\n\n      context.iCurr = i;\n      i++;\n\n      if (state.checkFn && !(0, state.checkFn)(context)) {\n        state = null;\n        continue;\n      }\n\n      match = state;\n      state = null;\n    }\n\n    this.state = state;\n    this.match = match;\n    this.lastProcessed = i;\n  }\n\n  flush() {\n    while (this.match) {\n      const length = this.queue.fnArray.length;\n      this.lastProcessed = (0, this.match.processFn)(this.context, length);\n      this.match = null;\n      this.state = null;\n\n      this._optimize();\n    }\n  }\n\n  reset() {\n    this.state = null;\n    this.match = null;\n    this.lastProcessed = 0;\n  }\n\n}\n\nclass OperatorList {\n  static get CHUNK_SIZE() {\n    return (0, _util.shadow)(this, \"CHUNK_SIZE\", 1000);\n  }\n\n  static get CHUNK_SIZE_ABOUT() {\n    return (0, _util.shadow)(this, \"CHUNK_SIZE_ABOUT\", this.CHUNK_SIZE - 5);\n  }\n\n  constructor(intent = 0, streamSink) {\n    this._streamSink = streamSink;\n    this.fnArray = [];\n    this.argsArray = [];\n\n    if (streamSink && !(intent & _util.RenderingIntentFlag.OPLIST)) {\n      this.optimizer = new QueueOptimizer(this);\n    } else {\n      this.optimizer = new NullOptimizer(this);\n    }\n\n    this.dependencies = new Set();\n    this._totalLength = 0;\n    this.weight = 0;\n    this._resolved = streamSink ? null : Promise.resolve();\n  }\n\n  get length() {\n    return this.argsArray.length;\n  }\n\n  get ready() {\n    return this._resolved || this._streamSink.ready;\n  }\n\n  get totalLength() {\n    return this._totalLength + this.length;\n  }\n\n  addOp(fn, args) {\n    this.optimizer.push(fn, args);\n    this.weight++;\n\n    if (this._streamSink) {\n      if (this.weight >= OperatorList.CHUNK_SIZE) {\n        this.flush();\n      } else if (this.weight >= OperatorList.CHUNK_SIZE_ABOUT && (fn === _util.OPS.restore || fn === _util.OPS.endText)) {\n        this.flush();\n      }\n    }\n  }\n\n  addDependency(dependency) {\n    if (this.dependencies.has(dependency)) {\n      return;\n    }\n\n    this.dependencies.add(dependency);\n    this.addOp(_util.OPS.dependency, [dependency]);\n  }\n\n  addDependencies(dependencies) {\n    for (const dependency of dependencies) {\n      this.addDependency(dependency);\n    }\n  }\n\n  addOpList(opList) {\n    if (!(opList instanceof OperatorList)) {\n      (0, _util.warn)('addOpList - ignoring invalid \"opList\" parameter.');\n      return;\n    }\n\n    for (const dependency of opList.dependencies) {\n      this.dependencies.add(dependency);\n    }\n\n    for (let i = 0, ii = opList.length; i < ii; i++) {\n      this.addOp(opList.fnArray[i], opList.argsArray[i]);\n    }\n  }\n\n  getIR() {\n    return {\n      fnArray: this.fnArray,\n      argsArray: this.argsArray,\n      length: this.length\n    };\n  }\n\n  get _transfers() {\n    const transfers = [];\n    const {\n      fnArray,\n      argsArray,\n      length\n    } = this;\n\n    for (let i = 0; i < length; i++) {\n      switch (fnArray[i]) {\n        case _util.OPS.paintInlineImageXObject:\n        case _util.OPS.paintInlineImageXObjectGroup:\n        case _util.OPS.paintImageMaskXObject:\n          const arg = argsArray[i][0];\n          ;\n\n          if (!arg.cached) {\n            transfers.push(arg.data.buffer);\n          }\n\n          break;\n      }\n    }\n\n    return transfers;\n  }\n\n  flush(lastChunk = false) {\n    this.optimizer.flush();\n    const length = this.length;\n    this._totalLength += length;\n\n    this._streamSink.enqueue({\n      fnArray: this.fnArray,\n      argsArray: this.argsArray,\n      lastChunk,\n      length\n    }, 1, this._transfers);\n\n    this.dependencies.clear();\n    this.fnArray.length = 0;\n    this.argsArray.length = 0;\n    this.weight = 0;\n    this.optimizer.reset();\n  }\n\n}\n\nexports.OperatorList = OperatorList;\n\n/***/ }),\n/* 63 */\n/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {\n\n\n\nObject.defineProperty(exports, \"__esModule\", ({\n  value: true\n}));\nexports.PDFImage = void 0;\n\nvar _util = __w_pdfjs_require__(2);\n\nvar _base_stream = __w_pdfjs_require__(9);\n\nvar _colorspace = __w_pdfjs_require__(24);\n\nvar _decode_stream = __w_pdfjs_require__(29);\n\nvar _jpeg_stream = __w_pdfjs_require__(37);\n\nvar _jpx = __w_pdfjs_require__(40);\n\nvar _primitives = __w_pdfjs_require__(5);\n\nfunction decodeAndClamp(value, addend, coefficient, max) {\n  value = addend + value * coefficient;\n\n  if (value < 0) {\n    value = 0;\n  } else if (value > max) {\n    value = max;\n  }\n\n  return value;\n}\n\nfunction resizeImageMask(src, bpc, w1, h1, w2, h2) {\n  const length = w2 * h2;\n  let dest;\n\n  if (bpc <= 8) {\n    dest = new Uint8Array(length);\n  } else if (bpc <= 16) {\n    dest = new Uint16Array(length);\n  } else {\n    dest = new Uint32Array(length);\n  }\n\n  const xRatio = w1 / w2;\n  const yRatio = h1 / h2;\n  let i,\n      j,\n      py,\n      newIndex = 0,\n      oldIndex;\n  const xScaled = new Uint16Array(w2);\n  const w1Scanline = w1;\n\n  for (i = 0; i < w2; i++) {\n    xScaled[i] = Math.floor(i * xRatio);\n  }\n\n  for (i = 0; i < h2; i++) {\n    py = Math.floor(i * yRatio) * w1Scanline;\n\n    for (j = 0; j < w2; j++) {\n      oldIndex = py + xScaled[j];\n      dest[newIndex++] = src[oldIndex];\n    }\n  }\n\n  return dest;\n}\n\nclass PDFImage {\n  constructor({\n    xref,\n    res,\n    image,\n    isInline = false,\n    smask = null,\n    mask = null,\n    isMask = false,\n    pdfFunctionFactory,\n    localColorSpaceCache\n  }) {\n    this.image = image;\n    const dict = image.dict;\n    const filter = dict.get(\"F\", \"Filter\");\n\n    if (filter instanceof _primitives.Name) {\n      switch (filter.name) {\n        case \"JPXDecode\":\n          const jpxImage = new _jpx.JpxImage();\n          jpxImage.parseImageProperties(image.stream);\n          image.stream.reset();\n          image.width = jpxImage.width;\n          image.height = jpxImage.height;\n          image.bitsPerComponent = jpxImage.bitsPerComponent;\n          image.numComps = jpxImage.componentsCount;\n          break;\n\n        case \"JBIG2Decode\":\n          image.bitsPerComponent = 1;\n          image.numComps = 1;\n          break;\n      }\n    }\n\n    let width = dict.get(\"W\", \"Width\");\n    let height = dict.get(\"H\", \"Height\");\n\n    if (Number.isInteger(image.width) && image.width > 0 && Number.isInteger(image.height) && image.height > 0 && (image.width !== width || image.height !== height)) {\n      (0, _util.warn)(\"PDFImage - using the Width/Height of the image data, \" + \"rather than the image dictionary.\");\n      width = image.width;\n      height = image.height;\n    }\n\n    if (width < 1 || height < 1) {\n      throw new _util.FormatError(`Invalid image width: ${width} or height: ${height}`);\n    }\n\n    this.width = width;\n    this.height = height;\n    this.interpolate = dict.get(\"I\", \"Interpolate\");\n    this.imageMask = dict.get(\"IM\", \"ImageMask\") || false;\n    this.matte = dict.get(\"Matte\") || false;\n    let bitsPerComponent = image.bitsPerComponent;\n\n    if (!bitsPerComponent) {\n      bitsPerComponent = dict.get(\"BPC\", \"BitsPerComponent\");\n\n      if (!bitsPerComponent) {\n        if (this.imageMask) {\n          bitsPerComponent = 1;\n        } else {\n          throw new _util.FormatError(`Bits per component missing in image: ${this.imageMask}`);\n        }\n      }\n    }\n\n    this.bpc = bitsPerComponent;\n\n    if (!this.imageMask) {\n      let colorSpace = dict.getRaw(\"CS\") || dict.getRaw(\"ColorSpace\");\n\n      if (!colorSpace) {\n        (0, _util.info)(\"JPX images (which do not require color spaces)\");\n\n        switch (image.numComps) {\n          case 1:\n            colorSpace = _primitives.Name.get(\"DeviceGray\");\n            break;\n\n          case 3:\n            colorSpace = _primitives.Name.get(\"DeviceRGB\");\n            break;\n\n          case 4:\n            colorSpace = _primitives.Name.get(\"DeviceCMYK\");\n            break;\n\n          default:\n            throw new Error(`JPX images with ${image.numComps} color components not supported.`);\n        }\n      }\n\n      this.colorSpace = _colorspace.ColorSpace.parse({\n        cs: colorSpace,\n        xref,\n        resources: isInline ? res : null,\n        pdfFunctionFactory,\n        localColorSpaceCache\n      });\n      this.numComps = this.colorSpace.numComps;\n    }\n\n    this.decode = dict.getArray(\"D\", \"Decode\");\n    this.needsDecode = false;\n\n    if (this.decode && (this.colorSpace && !this.colorSpace.isDefaultDecode(this.decode, bitsPerComponent) || isMask && !_colorspace.ColorSpace.isDefaultDecode(this.decode, 1))) {\n      this.needsDecode = true;\n      const max = (1 << bitsPerComponent) - 1;\n      this.decodeCoefficients = [];\n      this.decodeAddends = [];\n      const isIndexed = this.colorSpace && this.colorSpace.name === \"Indexed\";\n\n      for (let i = 0, j = 0; i < this.decode.length; i += 2, ++j) {\n        const dmin = this.decode[i];\n        const dmax = this.decode[i + 1];\n        this.decodeCoefficients[j] = isIndexed ? (dmax - dmin) / max : dmax - dmin;\n        this.decodeAddends[j] = isIndexed ? dmin : max * dmin;\n      }\n    }\n\n    if (smask) {\n      this.smask = new PDFImage({\n        xref,\n        res,\n        image: smask,\n        isInline,\n        pdfFunctionFactory,\n        localColorSpaceCache\n      });\n    } else if (mask) {\n      if (mask instanceof _base_stream.BaseStream) {\n        const maskDict = mask.dict,\n              imageMask = maskDict.get(\"IM\", \"ImageMask\");\n\n        if (!imageMask) {\n          (0, _util.warn)(\"Ignoring /Mask in image without /ImageMask.\");\n        } else {\n          this.mask = new PDFImage({\n            xref,\n            res,\n            image: mask,\n            isInline,\n            isMask: true,\n            pdfFunctionFactory,\n            localColorSpaceCache\n          });\n        }\n      } else {\n        this.mask = mask;\n      }\n    }\n  }\n\n  static async buildImage({\n    xref,\n    res,\n    image,\n    isInline = false,\n    pdfFunctionFactory,\n    localColorSpaceCache\n  }) {\n    const imageData = image;\n    let smaskData = null;\n    let maskData = null;\n    const smask = image.dict.get(\"SMask\");\n    const mask = image.dict.get(\"Mask\");\n\n    if (smask) {\n      smaskData = smask;\n    } else if (mask) {\n      if (mask instanceof _base_stream.BaseStream || Array.isArray(mask)) {\n        maskData = mask;\n      } else {\n        (0, _util.warn)(\"Unsupported mask format.\");\n      }\n    }\n\n    return new PDFImage({\n      xref,\n      res,\n      image: imageData,\n      isInline,\n      smask: smaskData,\n      mask: maskData,\n      pdfFunctionFactory,\n      localColorSpaceCache\n    });\n  }\n\n  static createMask({\n    imgArray,\n    width,\n    height,\n    imageIsFromDecodeStream,\n    inverseDecode,\n    interpolate\n  }) {\n    const computedLength = (width + 7 >> 3) * height;\n    const actualLength = imgArray.byteLength;\n    const haveFullData = computedLength === actualLength;\n    let data, i;\n\n    if (imageIsFromDecodeStream && (!inverseDecode || haveFullData)) {\n      data = imgArray;\n    } else if (!inverseDecode) {\n      data = new Uint8ClampedArray(actualLength);\n      data.set(imgArray);\n    } else {\n      data = new Uint8ClampedArray(computedLength);\n      data.set(imgArray);\n\n      for (i = actualLength; i < computedLength; i++) {\n        data[i] = 0xff;\n      }\n    }\n\n    if (inverseDecode) {\n      for (i = 0; i < actualLength; i++) {\n        data[i] ^= 0xff;\n      }\n    }\n\n    return {\n      data,\n      width,\n      height,\n      interpolate\n    };\n  }\n\n  get drawWidth() {\n    return Math.max(this.width, this.smask && this.smask.width || 0, this.mask && this.mask.width || 0);\n  }\n\n  get drawHeight() {\n    return Math.max(this.height, this.smask && this.smask.height || 0, this.mask && this.mask.height || 0);\n  }\n\n  decodeBuffer(buffer) {\n    const bpc = this.bpc;\n    const numComps = this.numComps;\n    const decodeAddends = this.decodeAddends;\n    const decodeCoefficients = this.decodeCoefficients;\n    const max = (1 << bpc) - 1;\n    let i, ii;\n\n    if (bpc === 1) {\n      for (i = 0, ii = buffer.length; i < ii; i++) {\n        buffer[i] = +!buffer[i];\n      }\n\n      return;\n    }\n\n    let index = 0;\n\n    for (i = 0, ii = this.width * this.height; i < ii; i++) {\n      for (let j = 0; j < numComps; j++) {\n        buffer[index] = decodeAndClamp(buffer[index], decodeAddends[j], decodeCoefficients[j], max);\n        index++;\n      }\n    }\n  }\n\n  getComponents(buffer) {\n    const bpc = this.bpc;\n\n    if (bpc === 8) {\n      return buffer;\n    }\n\n    const width = this.width;\n    const height = this.height;\n    const numComps = this.numComps;\n    const length = width * height * numComps;\n    let bufferPos = 0;\n    let output;\n\n    if (bpc <= 8) {\n      output = new Uint8Array(length);\n    } else if (bpc <= 16) {\n      output = new Uint16Array(length);\n    } else {\n      output = new Uint32Array(length);\n    }\n\n    const rowComps = width * numComps;\n    const max = (1 << bpc) - 1;\n    let i = 0,\n        ii,\n        buf;\n\n    if (bpc === 1) {\n      let mask, loop1End, loop2End;\n\n      for (let j = 0; j < height; j++) {\n        loop1End = i + (rowComps & ~7);\n        loop2End = i + rowComps;\n\n        while (i < loop1End) {\n          buf = buffer[bufferPos++];\n          output[i] = buf >> 7 & 1;\n          output[i + 1] = buf >> 6 & 1;\n          output[i + 2] = buf >> 5 & 1;\n          output[i + 3] = buf >> 4 & 1;\n          output[i + 4] = buf >> 3 & 1;\n          output[i + 5] = buf >> 2 & 1;\n          output[i + 6] = buf >> 1 & 1;\n          output[i + 7] = buf & 1;\n          i += 8;\n        }\n\n        if (i < loop2End) {\n          buf = buffer[bufferPos++];\n          mask = 128;\n\n          while (i < loop2End) {\n            output[i++] = +!!(buf & mask);\n            mask >>= 1;\n          }\n        }\n      }\n    } else {\n      let bits = 0;\n      buf = 0;\n\n      for (i = 0, ii = length; i < ii; ++i) {\n        if (i % rowComps === 0) {\n          buf = 0;\n          bits = 0;\n        }\n\n        while (bits < bpc) {\n          buf = buf << 8 | buffer[bufferPos++];\n          bits += 8;\n        }\n\n        const remainingBits = bits - bpc;\n        let value = buf >> remainingBits;\n\n        if (value < 0) {\n          value = 0;\n        } else if (value > max) {\n          value = max;\n        }\n\n        output[i] = value;\n        buf &= (1 << remainingBits) - 1;\n        bits = remainingBits;\n      }\n    }\n\n    return output;\n  }\n\n  fillOpacity(rgbaBuf, width, height, actualHeight, image) {\n    const smask = this.smask;\n    const mask = this.mask;\n    let alphaBuf, sw, sh, i, ii, j;\n\n    if (smask) {\n      sw = smask.width;\n      sh = smask.height;\n      alphaBuf = new Uint8ClampedArray(sw * sh);\n      smask.fillGrayBuffer(alphaBuf);\n\n      if (sw !== width || sh !== height) {\n        alphaBuf = resizeImageMask(alphaBuf, smask.bpc, sw, sh, width, height);\n      }\n    } else if (mask) {\n      if (mask instanceof PDFImage) {\n        sw = mask.width;\n        sh = mask.height;\n        alphaBuf = new Uint8ClampedArray(sw * sh);\n        mask.numComps = 1;\n        mask.fillGrayBuffer(alphaBuf);\n\n        for (i = 0, ii = sw * sh; i < ii; ++i) {\n          alphaBuf[i] = 255 - alphaBuf[i];\n        }\n\n        if (sw !== width || sh !== height) {\n          alphaBuf = resizeImageMask(alphaBuf, mask.bpc, sw, sh, width, height);\n        }\n      } else if (Array.isArray(mask)) {\n        alphaBuf = new Uint8ClampedArray(width * height);\n        const numComps = this.numComps;\n\n        for (i = 0, ii = width * height; i < ii; ++i) {\n          let opacity = 0;\n          const imageOffset = i * numComps;\n\n          for (j = 0; j < numComps; ++j) {\n            const color = image[imageOffset + j];\n            const maskOffset = j * 2;\n\n            if (color < mask[maskOffset] || color > mask[maskOffset + 1]) {\n              opacity = 255;\n              break;\n            }\n          }\n\n          alphaBuf[i] = opacity;\n        }\n      } else {\n        throw new _util.FormatError(\"Unknown mask format.\");\n      }\n    }\n\n    if (alphaBuf) {\n      for (i = 0, j = 3, ii = width * actualHeight; i < ii; ++i, j += 4) {\n        rgbaBuf[j] = alphaBuf[i];\n      }\n    } else {\n      for (i = 0, j = 3, ii = width * actualHeight; i < ii; ++i, j += 4) {\n        rgbaBuf[j] = 255;\n      }\n    }\n  }\n\n  undoPreblend(buffer, width, height) {\n    const matte = this.smask && this.smask.matte;\n\n    if (!matte) {\n      return;\n    }\n\n    const matteRgb = this.colorSpace.getRgb(matte, 0);\n    const matteR = matteRgb[0];\n    const matteG = matteRgb[1];\n    const matteB = matteRgb[2];\n    const length = width * height * 4;\n\n    for (let i = 0; i < length; i += 4) {\n      const alpha = buffer[i + 3];\n\n      if (alpha === 0) {\n        buffer[i] = 255;\n        buffer[i + 1] = 255;\n        buffer[i + 2] = 255;\n        continue;\n      }\n\n      const k = 255 / alpha;\n      buffer[i] = (buffer[i] - matteR) * k + matteR;\n      buffer[i + 1] = (buffer[i + 1] - matteG) * k + matteG;\n      buffer[i + 2] = (buffer[i + 2] - matteB) * k + matteB;\n    }\n  }\n\n  createImageData(forceRGBA = false) {\n    const drawWidth = this.drawWidth;\n    const drawHeight = this.drawHeight;\n    const imgData = {\n      width: drawWidth,\n      height: drawHeight,\n      interpolate: this.interpolate,\n      kind: 0,\n      data: null\n    };\n    const numComps = this.numComps;\n    const originalWidth = this.width;\n    const originalHeight = this.height;\n    const bpc = this.bpc;\n    const rowBytes = originalWidth * numComps * bpc + 7 >> 3;\n    let imgArray;\n\n    if (!forceRGBA) {\n      let kind;\n\n      if (this.colorSpace.name === \"DeviceGray\" && bpc === 1) {\n        kind = _util.ImageKind.GRAYSCALE_1BPP;\n      } else if (this.colorSpace.name === \"DeviceRGB\" && bpc === 8 && !this.needsDecode) {\n        kind = _util.ImageKind.RGB_24BPP;\n      }\n\n      if (kind && !this.smask && !this.mask && drawWidth === originalWidth && drawHeight === originalHeight) {\n        imgData.kind = kind;\n        imgArray = this.getImageBytes(originalHeight * rowBytes);\n\n        if (this.image instanceof _decode_stream.DecodeStream) {\n          imgData.data = imgArray;\n        } else {\n          const newArray = new Uint8ClampedArray(imgArray.length);\n          newArray.set(imgArray);\n          imgData.data = newArray;\n        }\n\n        if (this.needsDecode) {\n          (0, _util.assert)(kind === _util.ImageKind.GRAYSCALE_1BPP, \"PDFImage.createImageData: The image must be grayscale.\");\n          const buffer = imgData.data;\n\n          for (let i = 0, ii = buffer.length; i < ii; i++) {\n            buffer[i] ^= 0xff;\n          }\n        }\n\n        return imgData;\n      }\n\n      if (this.image instanceof _jpeg_stream.JpegStream && !this.smask && !this.mask) {\n        let imageLength = originalHeight * rowBytes;\n\n        switch (this.colorSpace.name) {\n          case \"DeviceGray\":\n            imageLength *= 3;\n\n          case \"DeviceRGB\":\n          case \"DeviceCMYK\":\n            imgData.kind = _util.ImageKind.RGB_24BPP;\n            imgData.data = this.getImageBytes(imageLength, drawWidth, drawHeight, true);\n            return imgData;\n        }\n      }\n    }\n\n    imgArray = this.getImageBytes(originalHeight * rowBytes);\n    const actualHeight = 0 | imgArray.length / rowBytes * drawHeight / originalHeight;\n    const comps = this.getComponents(imgArray);\n    let alpha01, maybeUndoPreblend;\n\n    if (!forceRGBA && !this.smask && !this.mask) {\n      imgData.kind = _util.ImageKind.RGB_24BPP;\n      imgData.data = new Uint8ClampedArray(drawWidth * drawHeight * 3);\n      alpha01 = 0;\n      maybeUndoPreblend = false;\n    } else {\n      imgData.kind = _util.ImageKind.RGBA_32BPP;\n      imgData.data = new Uint8ClampedArray(drawWidth * drawHeight * 4);\n      alpha01 = 1;\n      maybeUndoPreblend = true;\n      this.fillOpacity(imgData.data, drawWidth, drawHeight, actualHeight, comps);\n    }\n\n    if (this.needsDecode) {\n      this.decodeBuffer(comps);\n    }\n\n    this.colorSpace.fillRgb(imgData.data, originalWidth, originalHeight, drawWidth, drawHeight, actualHeight, bpc, comps, alpha01);\n\n    if (maybeUndoPreblend) {\n      this.undoPreblend(imgData.data, drawWidth, actualHeight);\n    }\n\n    return imgData;\n  }\n\n  fillGrayBuffer(buffer) {\n    const numComps = this.numComps;\n\n    if (numComps !== 1) {\n      throw new _util.FormatError(`Reading gray scale from a color image: ${numComps}`);\n    }\n\n    const width = this.width;\n    const height = this.height;\n    const bpc = this.bpc;\n    const rowBytes = width * numComps * bpc + 7 >> 3;\n    const imgArray = this.getImageBytes(height * rowBytes);\n    const comps = this.getComponents(imgArray);\n    let i, length;\n\n    if (bpc === 1) {\n      length = width * height;\n\n      if (this.needsDecode) {\n        for (i = 0; i < length; ++i) {\n          buffer[i] = comps[i] - 1 & 255;\n        }\n      } else {\n        for (i = 0; i < length; ++i) {\n          buffer[i] = -comps[i] & 255;\n        }\n      }\n\n      return;\n    }\n\n    if (this.needsDecode) {\n      this.decodeBuffer(comps);\n    }\n\n    length = width * height;\n    const scale = 255 / ((1 << bpc) - 1);\n\n    for (i = 0; i < length; ++i) {\n      buffer[i] = scale * comps[i];\n    }\n  }\n\n  getImageBytes(length, drawWidth, drawHeight, forceRGB = false) {\n    this.image.reset();\n    this.image.drawWidth = drawWidth || this.width;\n    this.image.drawHeight = drawHeight || this.height;\n    this.image.forceRGB = !!forceRGB;\n    return this.image.getBytes(length, true);\n  }\n\n}\n\nexports.PDFImage = PDFImage;\n\n/***/ }),\n/* 64 */\n/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {\n\n\n\nObject.defineProperty(exports, \"__esModule\", ({\n  value: true\n}));\nexports.Catalog = void 0;\n\nvar _core_utils = __w_pdfjs_require__(8);\n\nvar _util = __w_pdfjs_require__(2);\n\nvar _primitives = __w_pdfjs_require__(5);\n\nvar _name_number_tree = __w_pdfjs_require__(65);\n\nvar _base_stream = __w_pdfjs_require__(9);\n\nvar _cleanup_helper = __w_pdfjs_require__(66);\n\nvar _colorspace = __w_pdfjs_require__(24);\n\nvar _file_spec = __w_pdfjs_require__(67);\n\nvar _image_utils = __w_pdfjs_require__(59);\n\nvar _metadata_parser = __w_pdfjs_require__(68);\n\nvar _struct_tree = __w_pdfjs_require__(70);\n\nfunction fetchDestination(dest) {\n  if (dest instanceof _primitives.Dict) {\n    dest = dest.get(\"D\");\n  }\n\n  return Array.isArray(dest) ? dest : null;\n}\n\nclass Catalog {\n  constructor(pdfManager, xref) {\n    this.pdfManager = pdfManager;\n    this.xref = xref;\n    this._catDict = xref.getCatalogObj();\n\n    if (!(this._catDict instanceof _primitives.Dict)) {\n      throw new _util.FormatError(\"Catalog object is not a dictionary.\");\n    }\n\n    this.toplevelPagesDict;\n    this._actualNumPages = null;\n    this.fontCache = new _primitives.RefSetCache();\n    this.builtInCMapCache = new Map();\n    this.standardFontDataCache = new Map();\n    this.globalImageCache = new _image_utils.GlobalImageCache();\n    this.pageKidsCountCache = new _primitives.RefSetCache();\n    this.pageIndexCache = new _primitives.RefSetCache();\n    this.nonBlendModesSet = new _primitives.RefSet();\n  }\n\n  get version() {\n    const version = this._catDict.get(\"Version\");\n\n    return (0, _util.shadow)(this, \"version\", version instanceof _primitives.Name ? version.name : null);\n  }\n\n  get lang() {\n    const lang = this._catDict.get(\"Lang\");\n\n    return (0, _util.shadow)(this, \"lang\", typeof lang === \"string\" ? (0, _util.stringToPDFString)(lang) : null);\n  }\n\n  get needsRendering() {\n    const needsRendering = this._catDict.get(\"NeedsRendering\");\n\n    return (0, _util.shadow)(this, \"needsRendering\", typeof needsRendering === \"boolean\" ? needsRendering : false);\n  }\n\n  get collection() {\n    let collection = null;\n\n    try {\n      const obj = this._catDict.get(\"Collection\");\n\n      if (obj instanceof _primitives.Dict && obj.size > 0) {\n        collection = obj;\n      }\n    } catch (ex) {\n      if (ex instanceof _core_utils.MissingDataException) {\n        throw ex;\n      }\n\n      (0, _util.info)(\"Cannot fetch Collection entry; assuming no collection is present.\");\n    }\n\n    return (0, _util.shadow)(this, \"collection\", collection);\n  }\n\n  get acroForm() {\n    let acroForm = null;\n\n    try {\n      const obj = this._catDict.get(\"AcroForm\");\n\n      if (obj instanceof _primitives.Dict && obj.size > 0) {\n        acroForm = obj;\n      }\n    } catch (ex) {\n      if (ex instanceof _core_utils.MissingDataException) {\n        throw ex;\n      }\n\n      (0, _util.info)(\"Cannot fetch AcroForm entry; assuming no forms are present.\");\n    }\n\n    return (0, _util.shadow)(this, \"acroForm\", acroForm);\n  }\n\n  get acroFormRef() {\n    const value = this._catDict.getRaw(\"AcroForm\");\n\n    return (0, _util.shadow)(this, \"acroFormRef\", value instanceof _primitives.Ref ? value : null);\n  }\n\n  get metadata() {\n    const streamRef = this._catDict.getRaw(\"Metadata\");\n\n    if (!(streamRef instanceof _primitives.Ref)) {\n      return (0, _util.shadow)(this, \"metadata\", null);\n    }\n\n    let metadata = null;\n\n    try {\n      const suppressEncryption = !(this.xref.encrypt && this.xref.encrypt.encryptMetadata);\n      const stream = this.xref.fetch(streamRef, suppressEncryption);\n\n      if (stream instanceof _base_stream.BaseStream && stream.dict instanceof _primitives.Dict) {\n        const type = stream.dict.get(\"Type\");\n        const subtype = stream.dict.get(\"Subtype\");\n\n        if ((0, _primitives.isName)(type, \"Metadata\") && (0, _primitives.isName)(subtype, \"XML\")) {\n          const data = (0, _util.stringToUTF8String)(stream.getString());\n\n          if (data) {\n            metadata = new _metadata_parser.MetadataParser(data).serializable;\n          }\n        }\n      }\n    } catch (ex) {\n      if (ex instanceof _core_utils.MissingDataException) {\n        throw ex;\n      }\n\n      (0, _util.info)(`Skipping invalid Metadata: \"${ex}\".`);\n    }\n\n    return (0, _util.shadow)(this, \"metadata\", metadata);\n  }\n\n  get markInfo() {\n    let markInfo = null;\n\n    try {\n      markInfo = this._readMarkInfo();\n    } catch (ex) {\n      if (ex instanceof _core_utils.MissingDataException) {\n        throw ex;\n      }\n\n      (0, _util.warn)(\"Unable to read mark info.\");\n    }\n\n    return (0, _util.shadow)(this, \"markInfo\", markInfo);\n  }\n\n  _readMarkInfo() {\n    const obj = this._catDict.get(\"MarkInfo\");\n\n    if (!(obj instanceof _primitives.Dict)) {\n      return null;\n    }\n\n    const markInfo = Object.assign(Object.create(null), {\n      Marked: false,\n      UserProperties: false,\n      Suspects: false\n    });\n\n    for (const key in markInfo) {\n      if (!obj.has(key)) {\n        continue;\n      }\n\n      const value = obj.get(key);\n\n      if (typeof value !== \"boolean\") {\n        continue;\n      }\n\n      markInfo[key] = value;\n    }\n\n    return markInfo;\n  }\n\n  get structTreeRoot() {\n    let structTree = null;\n\n    try {\n      structTree = this._readStructTreeRoot();\n    } catch (ex) {\n      if (ex instanceof _core_utils.MissingDataException) {\n        throw ex;\n      }\n\n      (0, _util.warn)(\"Unable read to structTreeRoot info.\");\n    }\n\n    return (0, _util.shadow)(this, \"structTreeRoot\", structTree);\n  }\n\n  _readStructTreeRoot() {\n    const obj = this._catDict.get(\"StructTreeRoot\");\n\n    if (!(obj instanceof _primitives.Dict)) {\n      return null;\n    }\n\n    const root = new _struct_tree.StructTreeRoot(obj);\n    root.init();\n    return root;\n  }\n\n  get toplevelPagesDict() {\n    const pagesObj = this._catDict.get(\"Pages\");\n\n    if (!(pagesObj instanceof _primitives.Dict)) {\n      throw new _util.FormatError(\"Invalid top-level pages dictionary.\");\n    }\n\n    return (0, _util.shadow)(this, \"toplevelPagesDict\", pagesObj);\n  }\n\n  get documentOutline() {\n    let obj = null;\n\n    try {\n      obj = this._readDocumentOutline();\n    } catch (ex) {\n      if (ex instanceof _core_utils.MissingDataException) {\n        throw ex;\n      }\n\n      (0, _util.warn)(\"Unable to read document outline.\");\n    }\n\n    return (0, _util.shadow)(this, \"documentOutline\", obj);\n  }\n\n  _readDocumentOutline() {\n    let obj = this._catDict.get(\"Outlines\");\n\n    if (!(obj instanceof _primitives.Dict)) {\n      return null;\n    }\n\n    obj = obj.getRaw(\"First\");\n\n    if (!(obj instanceof _primitives.Ref)) {\n      return null;\n    }\n\n    const root = {\n      items: []\n    };\n    const queue = [{\n      obj,\n      parent: root\n    }];\n    const processed = new _primitives.RefSet();\n    processed.put(obj);\n    const xref = this.xref,\n          blackColor = new Uint8ClampedArray(3);\n\n    while (queue.length > 0) {\n      const i = queue.shift();\n      const outlineDict = xref.fetchIfRef(i.obj);\n\n      if (outlineDict === null) {\n        continue;\n      }\n\n      if (!outlineDict.has(\"Title\")) {\n        throw new _util.FormatError(\"Invalid outline item encountered.\");\n      }\n\n      const data = {\n        url: null,\n        dest: null\n      };\n      Catalog.parseDestDictionary({\n        destDict: outlineDict,\n        resultObj: data,\n        docBaseUrl: this.pdfManager.docBaseUrl\n      });\n      const title = outlineDict.get(\"Title\");\n      const flags = outlineDict.get(\"F\") || 0;\n      const color = outlineDict.getArray(\"C\");\n      const count = outlineDict.get(\"Count\");\n      let rgbColor = blackColor;\n\n      if (Array.isArray(color) && color.length === 3 && (color[0] !== 0 || color[1] !== 0 || color[2] !== 0)) {\n        rgbColor = _colorspace.ColorSpace.singletons.rgb.getRgb(color, 0);\n      }\n\n      const outlineItem = {\n        dest: data.dest,\n        url: data.url,\n        unsafeUrl: data.unsafeUrl,\n        newWindow: data.newWindow,\n        title: (0, _util.stringToPDFString)(title),\n        color: rgbColor,\n        count: Number.isInteger(count) ? count : undefined,\n        bold: !!(flags & 2),\n        italic: !!(flags & 1),\n        items: []\n      };\n      i.parent.items.push(outlineItem);\n      obj = outlineDict.getRaw(\"First\");\n\n      if (obj instanceof _primitives.Ref && !processed.has(obj)) {\n        queue.push({\n          obj,\n          parent: outlineItem\n        });\n        processed.put(obj);\n      }\n\n      obj = outlineDict.getRaw(\"Next\");\n\n      if (obj instanceof _primitives.Ref && !processed.has(obj)) {\n        queue.push({\n          obj,\n          parent: i.parent\n        });\n        processed.put(obj);\n      }\n    }\n\n    return root.items.length > 0 ? root.items : null;\n  }\n\n  get permissions() {\n    let permissions = null;\n\n    try {\n      permissions = this._readPermissions();\n    } catch (ex) {\n      if (ex instanceof _core_utils.MissingDataException) {\n        throw ex;\n      }\n\n      (0, _util.warn)(\"Unable to read permissions.\");\n    }\n\n    return (0, _util.shadow)(this, \"permissions\", permissions);\n  }\n\n  _readPermissions() {\n    const encrypt = this.xref.trailer.get(\"Encrypt\");\n\n    if (!(encrypt instanceof _primitives.Dict)) {\n      return null;\n    }\n\n    let flags = encrypt.get(\"P\");\n\n    if (typeof flags !== \"number\") {\n      return null;\n    }\n\n    flags += 2 ** 32;\n    const permissions = [];\n\n    for (const key in _util.PermissionFlag) {\n      const value = _util.PermissionFlag[key];\n\n      if (flags & value) {\n        permissions.push(value);\n      }\n    }\n\n    return permissions;\n  }\n\n  get optionalContentConfig() {\n    let config = null;\n\n    try {\n      const properties = this._catDict.get(\"OCProperties\");\n\n      if (!properties) {\n        return (0, _util.shadow)(this, \"optionalContentConfig\", null);\n      }\n\n      const defaultConfig = properties.get(\"D\");\n\n      if (!defaultConfig) {\n        return (0, _util.shadow)(this, \"optionalContentConfig\", null);\n      }\n\n      const groupsData = properties.get(\"OCGs\");\n\n      if (!Array.isArray(groupsData)) {\n        return (0, _util.shadow)(this, \"optionalContentConfig\", null);\n      }\n\n      const groups = [];\n      const groupRefs = [];\n\n      for (const groupRef of groupsData) {\n        if (!(groupRef instanceof _primitives.Ref)) {\n          continue;\n        }\n\n        groupRefs.push(groupRef);\n        const group = this.xref.fetchIfRef(groupRef);\n        groups.push({\n          id: groupRef.toString(),\n          name: typeof group.get(\"Name\") === \"string\" ? (0, _util.stringToPDFString)(group.get(\"Name\")) : null,\n          intent: typeof group.get(\"Intent\") === \"string\" ? (0, _util.stringToPDFString)(group.get(\"Intent\")) : null\n        });\n      }\n\n      config = this._readOptionalContentConfig(defaultConfig, groupRefs);\n      config.groups = groups;\n    } catch (ex) {\n      if (ex instanceof _core_utils.MissingDataException) {\n        throw ex;\n      }\n\n      (0, _util.warn)(`Unable to read optional content config: ${ex}`);\n    }\n\n    return (0, _util.shadow)(this, \"optionalContentConfig\", config);\n  }\n\n  _readOptionalContentConfig(config, contentGroupRefs) {\n    function parseOnOff(refs) {\n      const onParsed = [];\n\n      if (Array.isArray(refs)) {\n        for (const value of refs) {\n          if (!(value instanceof _primitives.Ref)) {\n            continue;\n          }\n\n          if (contentGroupRefs.includes(value)) {\n            onParsed.push(value.toString());\n          }\n        }\n      }\n\n      return onParsed;\n    }\n\n    function parseOrder(refs, nestedLevels = 0) {\n      if (!Array.isArray(refs)) {\n        return null;\n      }\n\n      const order = [];\n\n      for (const value of refs) {\n        if (value instanceof _primitives.Ref && contentGroupRefs.includes(value)) {\n          parsedOrderRefs.put(value);\n          order.push(value.toString());\n          continue;\n        }\n\n        const nestedOrder = parseNestedOrder(value, nestedLevels);\n\n        if (nestedOrder) {\n          order.push(nestedOrder);\n        }\n      }\n\n      if (nestedLevels > 0) {\n        return order;\n      }\n\n      const hiddenGroups = [];\n\n      for (const groupRef of contentGroupRefs) {\n        if (parsedOrderRefs.has(groupRef)) {\n          continue;\n        }\n\n        hiddenGroups.push(groupRef.toString());\n      }\n\n      if (hiddenGroups.length) {\n        order.push({\n          name: null,\n          order: hiddenGroups\n        });\n      }\n\n      return order;\n    }\n\n    function parseNestedOrder(ref, nestedLevels) {\n      if (++nestedLevels > MAX_NESTED_LEVELS) {\n        (0, _util.warn)(\"parseNestedOrder - reached MAX_NESTED_LEVELS.\");\n        return null;\n      }\n\n      const value = xref.fetchIfRef(ref);\n\n      if (!Array.isArray(value)) {\n        return null;\n      }\n\n      const nestedName = xref.fetchIfRef(value[0]);\n\n      if (typeof nestedName !== \"string\") {\n        return null;\n      }\n\n      const nestedOrder = parseOrder(value.slice(1), nestedLevels);\n\n      if (!nestedOrder || !nestedOrder.length) {\n        return null;\n      }\n\n      return {\n        name: (0, _util.stringToPDFString)(nestedName),\n        order: nestedOrder\n      };\n    }\n\n    const xref = this.xref,\n          parsedOrderRefs = new _primitives.RefSet(),\n          MAX_NESTED_LEVELS = 10;\n    return {\n      name: typeof config.get(\"Name\") === \"string\" ? (0, _util.stringToPDFString)(config.get(\"Name\")) : null,\n      creator: typeof config.get(\"Creator\") === \"string\" ? (0, _util.stringToPDFString)(config.get(\"Creator\")) : null,\n      baseState: config.get(\"BaseState\") instanceof _primitives.Name ? config.get(\"BaseState\").name : null,\n      on: parseOnOff(config.get(\"ON\")),\n      off: parseOnOff(config.get(\"OFF\")),\n      order: parseOrder(config.get(\"Order\")),\n      groups: null\n    };\n  }\n\n  setActualNumPages(num = null) {\n    this._actualNumPages = num;\n  }\n\n  get hasActualNumPages() {\n    return this._actualNumPages !== null;\n  }\n\n  get _pagesCount() {\n    const obj = this.toplevelPagesDict.get(\"Count\");\n\n    if (!Number.isInteger(obj)) {\n      throw new _util.FormatError(\"Page count in top-level pages dictionary is not an integer.\");\n    }\n\n    return (0, _util.shadow)(this, \"_pagesCount\", obj);\n  }\n\n  get numPages() {\n    return this.hasActualNumPages ? this._actualNumPages : this._pagesCount;\n  }\n\n  get destinations() {\n    const obj = this._readDests(),\n          dests = Object.create(null);\n\n    if (obj instanceof _name_number_tree.NameTree) {\n      for (const [key, value] of obj.getAll()) {\n        const dest = fetchDestination(value);\n\n        if (dest) {\n          dests[key] = dest;\n        }\n      }\n    } else if (obj instanceof _primitives.Dict) {\n      obj.forEach(function (key, value) {\n        const dest = fetchDestination(value);\n\n        if (dest) {\n          dests[key] = dest;\n        }\n      });\n    }\n\n    return (0, _util.shadow)(this, \"destinations\", dests);\n  }\n\n  getDestination(id) {\n    const obj = this._readDests();\n\n    if (obj instanceof _name_number_tree.NameTree) {\n      const dest = fetchDestination(obj.get(id));\n\n      if (dest) {\n        return dest;\n      }\n\n      const allDest = this.destinations[id];\n\n      if (allDest) {\n        (0, _util.warn)(`Found \"${id}\" at an incorrect position in the NameTree.`);\n        return allDest;\n      }\n    } else if (obj instanceof _primitives.Dict) {\n      const dest = fetchDestination(obj.get(id));\n\n      if (dest) {\n        return dest;\n      }\n    }\n\n    return null;\n  }\n\n  _readDests() {\n    const obj = this._catDict.get(\"Names\");\n\n    if (obj && obj.has(\"Dests\")) {\n      return new _name_number_tree.NameTree(obj.getRaw(\"Dests\"), this.xref);\n    } else if (this._catDict.has(\"Dests\")) {\n      return this._catDict.get(\"Dests\");\n    }\n\n    return undefined;\n  }\n\n  get pageLabels() {\n    let obj = null;\n\n    try {\n      obj = this._readPageLabels();\n    } catch (ex) {\n      if (ex instanceof _core_utils.MissingDataException) {\n        throw ex;\n      }\n\n      (0, _util.warn)(\"Unable to read page labels.\");\n    }\n\n    return (0, _util.shadow)(this, \"pageLabels\", obj);\n  }\n\n  _readPageLabels() {\n    const obj = this._catDict.getRaw(\"PageLabels\");\n\n    if (!obj) {\n      return null;\n    }\n\n    const pageLabels = new Array(this.numPages);\n    let style = null,\n        prefix = \"\";\n    const numberTree = new _name_number_tree.NumberTree(obj, this.xref);\n    const nums = numberTree.getAll();\n    let currentLabel = \"\",\n        currentIndex = 1;\n\n    for (let i = 0, ii = this.numPages; i < ii; i++) {\n      const labelDict = nums.get(i);\n\n      if (labelDict !== undefined) {\n        if (!(labelDict instanceof _primitives.Dict)) {\n          throw new _util.FormatError(\"PageLabel is not a dictionary.\");\n        }\n\n        if (labelDict.has(\"Type\") && !(0, _primitives.isName)(labelDict.get(\"Type\"), \"PageLabel\")) {\n          throw new _util.FormatError(\"Invalid type in PageLabel dictionary.\");\n        }\n\n        if (labelDict.has(\"S\")) {\n          const s = labelDict.get(\"S\");\n\n          if (!(s instanceof _primitives.Name)) {\n            throw new _util.FormatError(\"Invalid style in PageLabel dictionary.\");\n          }\n\n          style = s.name;\n        } else {\n          style = null;\n        }\n\n        if (labelDict.has(\"P\")) {\n          const p = labelDict.get(\"P\");\n\n          if (typeof p !== \"string\") {\n            throw new _util.FormatError(\"Invalid prefix in PageLabel dictionary.\");\n          }\n\n          prefix = (0, _util.stringToPDFString)(p);\n        } else {\n          prefix = \"\";\n        }\n\n        if (labelDict.has(\"St\")) {\n          const st = labelDict.get(\"St\");\n\n          if (!(Number.isInteger(st) && st >= 1)) {\n            throw new _util.FormatError(\"Invalid start in PageLabel dictionary.\");\n          }\n\n          currentIndex = st;\n        } else {\n          currentIndex = 1;\n        }\n      }\n\n      switch (style) {\n        case \"D\":\n          currentLabel = currentIndex;\n          break;\n\n        case \"R\":\n        case \"r\":\n          currentLabel = (0, _core_utils.toRomanNumerals)(currentIndex, style === \"r\");\n          break;\n\n        case \"A\":\n        case \"a\":\n          const LIMIT = 26;\n          const A_UPPER_CASE = 0x41,\n                A_LOWER_CASE = 0x61;\n          const baseCharCode = style === \"a\" ? A_LOWER_CASE : A_UPPER_CASE;\n          const letterIndex = currentIndex - 1;\n          const character = String.fromCharCode(baseCharCode + letterIndex % LIMIT);\n          const charBuf = [];\n\n          for (let j = 0, jj = letterIndex / LIMIT | 0; j <= jj; j++) {\n            charBuf.push(character);\n          }\n\n          currentLabel = charBuf.join(\"\");\n          break;\n\n        default:\n          if (style) {\n            throw new _util.FormatError(`Invalid style \"${style}\" in PageLabel dictionary.`);\n          }\n\n          currentLabel = \"\";\n      }\n\n      pageLabels[i] = prefix + currentLabel;\n      currentIndex++;\n    }\n\n    return pageLabels;\n  }\n\n  get pageLayout() {\n    const obj = this._catDict.get(\"PageLayout\");\n\n    let pageLayout = \"\";\n\n    if (obj instanceof _primitives.Name) {\n      switch (obj.name) {\n        case \"SinglePage\":\n        case \"OneColumn\":\n        case \"TwoColumnLeft\":\n        case \"TwoColumnRight\":\n        case \"TwoPageLeft\":\n        case \"TwoPageRight\":\n          pageLayout = obj.name;\n      }\n    }\n\n    return (0, _util.shadow)(this, \"pageLayout\", pageLayout);\n  }\n\n  get pageMode() {\n    const obj = this._catDict.get(\"PageMode\");\n\n    let pageMode = \"UseNone\";\n\n    if (obj instanceof _primitives.Name) {\n      switch (obj.name) {\n        case \"UseNone\":\n        case \"UseOutlines\":\n        case \"UseThumbs\":\n        case \"FullScreen\":\n        case \"UseOC\":\n        case \"UseAttachments\":\n          pageMode = obj.name;\n      }\n    }\n\n    return (0, _util.shadow)(this, \"pageMode\", pageMode);\n  }\n\n  get viewerPreferences() {\n    const obj = this._catDict.get(\"ViewerPreferences\");\n\n    if (!(obj instanceof _primitives.Dict)) {\n      return (0, _util.shadow)(this, \"viewerPreferences\", null);\n    }\n\n    let prefs = null;\n\n    for (const key of obj.getKeys()) {\n      const value = obj.get(key);\n      let prefValue;\n\n      switch (key) {\n        case \"HideToolbar\":\n        case \"HideMenubar\":\n        case \"HideWindowUI\":\n        case \"FitWindow\":\n        case \"CenterWindow\":\n        case \"DisplayDocTitle\":\n        case \"PickTrayByPDFSize\":\n          if (typeof value === \"boolean\") {\n            prefValue = value;\n          }\n\n          break;\n\n        case \"NonFullScreenPageMode\":\n          if (value instanceof _primitives.Name) {\n            switch (value.name) {\n              case \"UseNone\":\n              case \"UseOutlines\":\n              case \"UseThumbs\":\n              case \"UseOC\":\n                prefValue = value.name;\n                break;\n\n              default:\n                prefValue = \"UseNone\";\n            }\n          }\n\n          break;\n\n        case \"Direction\":\n          if (value instanceof _primitives.Name) {\n            switch (value.name) {\n              case \"L2R\":\n              case \"R2L\":\n                prefValue = value.name;\n                break;\n\n              default:\n                prefValue = \"L2R\";\n            }\n          }\n\n          break;\n\n        case \"ViewArea\":\n        case \"ViewClip\":\n        case \"PrintArea\":\n        case \"PrintClip\":\n          if (value instanceof _primitives.Name) {\n            switch (value.name) {\n              case \"MediaBox\":\n              case \"CropBox\":\n              case \"BleedBox\":\n              case \"TrimBox\":\n              case \"ArtBox\":\n                prefValue = value.name;\n                break;\n\n              default:\n                prefValue = \"CropBox\";\n            }\n          }\n\n          break;\n\n        case \"PrintScaling\":\n          if (value instanceof _primitives.Name) {\n            switch (value.name) {\n              case \"None\":\n              case \"AppDefault\":\n                prefValue = value.name;\n                break;\n\n              default:\n                prefValue = \"AppDefault\";\n            }\n          }\n\n          break;\n\n        case \"Duplex\":\n          if (value instanceof _primitives.Name) {\n            switch (value.name) {\n              case \"Simplex\":\n              case \"DuplexFlipShortEdge\":\n              case \"DuplexFlipLongEdge\":\n                prefValue = value.name;\n                break;\n\n              default:\n                prefValue = \"None\";\n            }\n          }\n\n          break;\n\n        case \"PrintPageRange\":\n          if (Array.isArray(value) && value.length % 2 === 0) {\n            const isValid = value.every((page, i, arr) => {\n              return Number.isInteger(page) && page > 0 && (i === 0 || page >= arr[i - 1]) && page <= this.numPages;\n            });\n\n            if (isValid) {\n              prefValue = value;\n            }\n          }\n\n          break;\n\n        case \"NumCopies\":\n          if (Number.isInteger(value) && value > 0) {\n            prefValue = value;\n          }\n\n          break;\n\n        default:\n          (0, _util.warn)(`Ignoring non-standard key in ViewerPreferences: ${key}.`);\n          continue;\n      }\n\n      if (prefValue === undefined) {\n        (0, _util.warn)(`Bad value, for key \"${key}\", in ViewerPreferences: ${value}.`);\n        continue;\n      }\n\n      if (!prefs) {\n        prefs = Object.create(null);\n      }\n\n      prefs[key] = prefValue;\n    }\n\n    return (0, _util.shadow)(this, \"viewerPreferences\", prefs);\n  }\n\n  get openAction() {\n    const obj = this._catDict.get(\"OpenAction\");\n\n    const openAction = Object.create(null);\n\n    if (obj instanceof _primitives.Dict) {\n      const destDict = new _primitives.Dict(this.xref);\n      destDict.set(\"A\", obj);\n      const resultObj = {\n        url: null,\n        dest: null,\n        action: null\n      };\n      Catalog.parseDestDictionary({\n        destDict,\n        resultObj\n      });\n\n      if (Array.isArray(resultObj.dest)) {\n        openAction.dest = resultObj.dest;\n      } else if (resultObj.action) {\n        openAction.action = resultObj.action;\n      }\n    } else if (Array.isArray(obj)) {\n      openAction.dest = obj;\n    }\n\n    return (0, _util.shadow)(this, \"openAction\", (0, _util.objectSize)(openAction) > 0 ? openAction : null);\n  }\n\n  get attachments() {\n    const obj = this._catDict.get(\"Names\");\n\n    let attachments = null;\n\n    if (obj instanceof _primitives.Dict && obj.has(\"EmbeddedFiles\")) {\n      const nameTree = new _name_number_tree.NameTree(obj.getRaw(\"EmbeddedFiles\"), this.xref);\n\n      for (const [key, value] of nameTree.getAll()) {\n        const fs = new _file_spec.FileSpec(value, this.xref);\n\n        if (!attachments) {\n          attachments = Object.create(null);\n        }\n\n        attachments[(0, _util.stringToPDFString)(key)] = fs.serializable;\n      }\n    }\n\n    return (0, _util.shadow)(this, \"attachments\", attachments);\n  }\n\n  get xfaImages() {\n    const obj = this._catDict.get(\"Names\");\n\n    let xfaImages = null;\n\n    if (obj instanceof _primitives.Dict && obj.has(\"XFAImages\")) {\n      const nameTree = new _name_number_tree.NameTree(obj.getRaw(\"XFAImages\"), this.xref);\n\n      for (const [key, value] of nameTree.getAll()) {\n        if (!xfaImages) {\n          xfaImages = new _primitives.Dict(this.xref);\n        }\n\n        xfaImages.set(key, value);\n      }\n    }\n\n    return (0, _util.shadow)(this, \"xfaImages\", xfaImages);\n  }\n\n  _collectJavaScript() {\n    const obj = this._catDict.get(\"Names\");\n\n    let javaScript = null;\n\n    function appendIfJavaScriptDict(name, jsDict) {\n      if (!(jsDict instanceof _primitives.Dict)) {\n        return;\n      }\n\n      if (!(0, _primitives.isName)(jsDict.get(\"S\"), \"JavaScript\")) {\n        return;\n      }\n\n      let js = jsDict.get(\"JS\");\n\n      if (js instanceof _base_stream.BaseStream) {\n        js = js.getString();\n      } else if (typeof js !== \"string\") {\n        return;\n      }\n\n      if (javaScript === null) {\n        javaScript = new Map();\n      }\n\n      javaScript.set(name, (0, _util.stringToPDFString)(js));\n    }\n\n    if (obj instanceof _primitives.Dict && obj.has(\"JavaScript\")) {\n      const nameTree = new _name_number_tree.NameTree(obj.getRaw(\"JavaScript\"), this.xref);\n\n      for (const [key, value] of nameTree.getAll()) {\n        appendIfJavaScriptDict(key, value);\n      }\n    }\n\n    const openAction = this._catDict.get(\"OpenAction\");\n\n    if (openAction) {\n      appendIfJavaScriptDict(\"OpenAction\", openAction);\n    }\n\n    return javaScript;\n  }\n\n  get javaScript() {\n    const javaScript = this._collectJavaScript();\n\n    return (0, _util.shadow)(this, \"javaScript\", javaScript ? [...javaScript.values()] : null);\n  }\n\n  get jsActions() {\n    const javaScript = this._collectJavaScript();\n\n    let actions = (0, _core_utils.collectActions)(this.xref, this._catDict, _util.DocumentActionEventType);\n\n    if (javaScript) {\n      if (!actions) {\n        actions = Object.create(null);\n      }\n\n      for (const [key, val] of javaScript) {\n        if (key in actions) {\n          actions[key].push(val);\n        } else {\n          actions[key] = [val];\n        }\n      }\n    }\n\n    return (0, _util.shadow)(this, \"jsActions\", actions);\n  }\n\n  fontFallback(id, handler) {\n    const promises = [];\n    this.fontCache.forEach(function (promise) {\n      promises.push(promise);\n    });\n    return Promise.all(promises).then(translatedFonts => {\n      for (const translatedFont of translatedFonts) {\n        if (translatedFont.loadedName === id) {\n          translatedFont.fallback(handler);\n          return;\n        }\n      }\n    });\n  }\n\n  cleanup(manuallyTriggered = false) {\n    (0, _cleanup_helper.clearGlobalCaches)();\n    this.globalImageCache.clear(manuallyTriggered);\n    this.pageKidsCountCache.clear();\n    this.pageIndexCache.clear();\n    this.nonBlendModesSet.clear();\n    const promises = [];\n    this.fontCache.forEach(function (promise) {\n      promises.push(promise);\n    });\n    return Promise.all(promises).then(translatedFonts => {\n      for (const {\n        dict\n      } of translatedFonts) {\n        delete dict.cacheKey;\n      }\n\n      this.fontCache.clear();\n      this.builtInCMapCache.clear();\n      this.standardFontDataCache.clear();\n    });\n  }\n\n  async getPageDict(pageIndex) {\n    const nodesToVisit = [this.toplevelPagesDict];\n    const visitedNodes = new _primitives.RefSet();\n\n    const pagesRef = this._catDict.getRaw(\"Pages\");\n\n    if (pagesRef instanceof _primitives.Ref) {\n      visitedNodes.put(pagesRef);\n    }\n\n    const xref = this.xref,\n          pageKidsCountCache = this.pageKidsCountCache,\n          pageIndexCache = this.pageIndexCache;\n    let currentPageIndex = 0;\n\n    while (nodesToVisit.length) {\n      const currentNode = nodesToVisit.pop();\n\n      if (currentNode instanceof _primitives.Ref) {\n        const count = pageKidsCountCache.get(currentNode);\n\n        if (count >= 0 && currentPageIndex + count <= pageIndex) {\n          currentPageIndex += count;\n          continue;\n        }\n\n        if (visitedNodes.has(currentNode)) {\n          throw new _util.FormatError(\"Pages tree contains circular reference.\");\n        }\n\n        visitedNodes.put(currentNode);\n        const obj = await xref.fetchAsync(currentNode);\n\n        if (obj instanceof _primitives.Dict) {\n          let type = obj.getRaw(\"Type\");\n\n          if (type instanceof _primitives.Ref) {\n            type = await xref.fetchAsync(type);\n          }\n\n          if ((0, _primitives.isName)(type, \"Page\") || !obj.has(\"Kids\")) {\n            if (!pageKidsCountCache.has(currentNode)) {\n              pageKidsCountCache.put(currentNode, 1);\n            }\n\n            if (!pageIndexCache.has(currentNode)) {\n              pageIndexCache.put(currentNode, currentPageIndex);\n            }\n\n            if (currentPageIndex === pageIndex) {\n              return [obj, currentNode];\n            }\n\n            currentPageIndex++;\n            continue;\n          }\n        }\n\n        nodesToVisit.push(obj);\n        continue;\n      }\n\n      if (!(currentNode instanceof _primitives.Dict)) {\n        throw new _util.FormatError(\"Page dictionary kid reference points to wrong type of object.\");\n      }\n\n      const {\n        objId\n      } = currentNode;\n      let count = currentNode.getRaw(\"Count\");\n\n      if (count instanceof _primitives.Ref) {\n        count = await xref.fetchAsync(count);\n      }\n\n      if (Number.isInteger(count) && count >= 0) {\n        if (objId && !pageKidsCountCache.has(objId)) {\n          pageKidsCountCache.put(objId, count);\n        }\n\n        if (currentPageIndex + count <= pageIndex) {\n          currentPageIndex += count;\n          continue;\n        }\n      }\n\n      let kids = currentNode.getRaw(\"Kids\");\n\n      if (kids instanceof _primitives.Ref) {\n        kids = await xref.fetchAsync(kids);\n      }\n\n      if (!Array.isArray(kids)) {\n        let type = currentNode.getRaw(\"Type\");\n\n        if (type instanceof _primitives.Ref) {\n          type = await xref.fetchAsync(type);\n        }\n\n        if ((0, _primitives.isName)(type, \"Page\") || !currentNode.has(\"Kids\")) {\n          if (currentPageIndex === pageIndex) {\n            return [currentNode, null];\n          }\n\n          currentPageIndex++;\n          continue;\n        }\n\n        throw new _util.FormatError(\"Page dictionary kids object is not an array.\");\n      }\n\n      for (let last = kids.length - 1; last >= 0; last--) {\n        nodesToVisit.push(kids[last]);\n      }\n    }\n\n    throw new Error(`Page index ${pageIndex} not found.`);\n  }\n\n  async getAllPageDicts(recoveryMode = false) {\n    const queue = [{\n      currentNode: this.toplevelPagesDict,\n      posInKids: 0\n    }];\n    const visitedNodes = new _primitives.RefSet();\n\n    const pagesRef = this._catDict.getRaw(\"Pages\");\n\n    if (pagesRef instanceof _primitives.Ref) {\n      visitedNodes.put(pagesRef);\n    }\n\n    const map = new Map(),\n          xref = this.xref,\n          pageIndexCache = this.pageIndexCache;\n    let pageIndex = 0;\n\n    function addPageDict(pageDict, pageRef) {\n      if (pageRef && !pageIndexCache.has(pageRef)) {\n        pageIndexCache.put(pageRef, pageIndex);\n      }\n\n      map.set(pageIndex++, [pageDict, pageRef]);\n    }\n\n    function addPageError(error) {\n      if (error instanceof _core_utils.XRefEntryException && !recoveryMode) {\n        throw error;\n      }\n\n      map.set(pageIndex++, [error, null]);\n    }\n\n    while (queue.length > 0) {\n      const queueItem = queue[queue.length - 1];\n      const {\n        currentNode,\n        posInKids\n      } = queueItem;\n      let kids = currentNode.getRaw(\"Kids\");\n\n      if (kids instanceof _primitives.Ref) {\n        try {\n          kids = await xref.fetchAsync(kids);\n        } catch (ex) {\n          addPageError(ex);\n          break;\n        }\n      }\n\n      if (!Array.isArray(kids)) {\n        addPageError(new _util.FormatError(\"Page dictionary kids object is not an array.\"));\n        break;\n      }\n\n      if (posInKids >= kids.length) {\n        queue.pop();\n        continue;\n      }\n\n      const kidObj = kids[posInKids];\n      let obj;\n\n      if (kidObj instanceof _primitives.Ref) {\n        if (visitedNodes.has(kidObj)) {\n          addPageError(new _util.FormatError(\"Pages tree contains circular reference.\"));\n          break;\n        }\n\n        visitedNodes.put(kidObj);\n\n        try {\n          obj = await xref.fetchAsync(kidObj);\n        } catch (ex) {\n          addPageError(ex);\n          break;\n        }\n      } else {\n        obj = kidObj;\n      }\n\n      if (!(obj instanceof _primitives.Dict)) {\n        addPageError(new _util.FormatError(\"Page dictionary kid reference points to wrong type of object.\"));\n        break;\n      }\n\n      let type = obj.getRaw(\"Type\");\n\n      if (type instanceof _primitives.Ref) {\n        try {\n          type = await xref.fetchAsync(type);\n        } catch (ex) {\n          addPageError(ex);\n          break;\n        }\n      }\n\n      if ((0, _primitives.isName)(type, \"Page\") || !obj.has(\"Kids\")) {\n        addPageDict(obj, kidObj instanceof _primitives.Ref ? kidObj : null);\n      } else {\n        queue.push({\n          currentNode: obj,\n          posInKids: 0\n        });\n      }\n\n      queueItem.posInKids++;\n    }\n\n    return map;\n  }\n\n  getPageIndex(pageRef) {\n    const cachedPageIndex = this.pageIndexCache.get(pageRef);\n\n    if (cachedPageIndex !== undefined) {\n      return Promise.resolve(cachedPageIndex);\n    }\n\n    const xref = this.xref;\n\n    function pagesBeforeRef(kidRef) {\n      let total = 0,\n          parentRef;\n      return xref.fetchAsync(kidRef).then(function (node) {\n        if ((0, _primitives.isRefsEqual)(kidRef, pageRef) && !(0, _primitives.isDict)(node, \"Page\") && !(node instanceof _primitives.Dict && !node.has(\"Type\") && node.has(\"Contents\"))) {\n          throw new _util.FormatError(\"The reference does not point to a /Page dictionary.\");\n        }\n\n        if (!node) {\n          return null;\n        }\n\n        if (!(node instanceof _primitives.Dict)) {\n          throw new _util.FormatError(\"Node must be a dictionary.\");\n        }\n\n        parentRef = node.getRaw(\"Parent\");\n        return node.getAsync(\"Parent\");\n      }).then(function (parent) {\n        if (!parent) {\n          return null;\n        }\n\n        if (!(parent instanceof _primitives.Dict)) {\n          throw new _util.FormatError(\"Parent must be a dictionary.\");\n        }\n\n        return parent.getAsync(\"Kids\");\n      }).then(function (kids) {\n        if (!kids) {\n          return null;\n        }\n\n        const kidPromises = [];\n        let found = false;\n\n        for (let i = 0, ii = kids.length; i < ii; i++) {\n          const kid = kids[i];\n\n          if (!(kid instanceof _primitives.Ref)) {\n            throw new _util.FormatError(\"Kid must be a reference.\");\n          }\n\n          if ((0, _primitives.isRefsEqual)(kid, kidRef)) {\n            found = true;\n            break;\n          }\n\n          kidPromises.push(xref.fetchAsync(kid).then(function (obj) {\n            if (!(obj instanceof _primitives.Dict)) {\n              throw new _util.FormatError(\"Kid node must be a dictionary.\");\n            }\n\n            if (obj.has(\"Count\")) {\n              total += obj.get(\"Count\");\n            } else {\n              total++;\n            }\n          }));\n        }\n\n        if (!found) {\n          throw new _util.FormatError(\"Kid reference not found in parent's kids.\");\n        }\n\n        return Promise.all(kidPromises).then(function () {\n          return [total, parentRef];\n        });\n      });\n    }\n\n    let total = 0;\n\n    const next = ref => pagesBeforeRef(ref).then(args => {\n      if (!args) {\n        this.pageIndexCache.put(pageRef, total);\n        return total;\n      }\n\n      const [count, parentRef] = args;\n      total += count;\n      return next(parentRef);\n    });\n\n    return next(pageRef);\n  }\n\n  static parseDestDictionary(params) {\n    const destDict = params.destDict;\n\n    if (!(destDict instanceof _primitives.Dict)) {\n      (0, _util.warn)(\"parseDestDictionary: `destDict` must be a dictionary.\");\n      return;\n    }\n\n    const resultObj = params.resultObj;\n\n    if (typeof resultObj !== \"object\") {\n      (0, _util.warn)(\"parseDestDictionary: `resultObj` must be an object.\");\n      return;\n    }\n\n    const docBaseUrl = params.docBaseUrl || null;\n    let action = destDict.get(\"A\"),\n        url,\n        dest;\n\n    if (!(action instanceof _primitives.Dict)) {\n      if (destDict.has(\"Dest\")) {\n        action = destDict.get(\"Dest\");\n      } else {\n        action = destDict.get(\"AA\");\n\n        if (action instanceof _primitives.Dict) {\n          if (action.has(\"D\")) {\n            action = action.get(\"D\");\n          } else if (action.has(\"U\")) {\n            action = action.get(\"U\");\n          }\n        }\n      }\n    }\n\n    if (action instanceof _primitives.Dict) {\n      const actionType = action.get(\"S\");\n\n      if (!(actionType instanceof _primitives.Name)) {\n        (0, _util.warn)(\"parseDestDictionary: Invalid type in Action dictionary.\");\n        return;\n      }\n\n      const actionName = actionType.name;\n\n      switch (actionName) {\n        case \"ResetForm\":\n          const flags = action.get(\"Flags\");\n          const include = ((typeof flags === \"number\" ? flags : 0) & 1) === 0;\n          const fields = [];\n          const refs = [];\n\n          for (const obj of action.get(\"Fields\") || []) {\n            if (obj instanceof _primitives.Ref) {\n              refs.push(obj.toString());\n            } else if (typeof obj === \"string\") {\n              fields.push((0, _util.stringToPDFString)(obj));\n            }\n          }\n\n          resultObj.resetForm = {\n            fields,\n            refs,\n            include\n          };\n          break;\n\n        case \"URI\":\n          url = action.get(\"URI\");\n\n          if (url instanceof _primitives.Name) {\n            url = \"/\" + url.name;\n          }\n\n          break;\n\n        case \"GoTo\":\n          dest = action.get(\"D\");\n          break;\n\n        case \"Launch\":\n        case \"GoToR\":\n          const urlDict = action.get(\"F\");\n\n          if (urlDict instanceof _primitives.Dict) {\n            url = urlDict.get(\"F\") || null;\n          } else if (typeof urlDict === \"string\") {\n            url = urlDict;\n          }\n\n          let remoteDest = action.get(\"D\");\n\n          if (remoteDest) {\n            if (remoteDest instanceof _primitives.Name) {\n              remoteDest = remoteDest.name;\n            }\n\n            if (typeof url === \"string\") {\n              const baseUrl = url.split(\"#\")[0];\n\n              if (typeof remoteDest === \"string\") {\n                url = baseUrl + \"#\" + remoteDest;\n              } else if (Array.isArray(remoteDest)) {\n                url = baseUrl + \"#\" + JSON.stringify(remoteDest);\n              }\n            }\n          }\n\n          const newWindow = action.get(\"NewWindow\");\n\n          if (typeof newWindow === \"boolean\") {\n            resultObj.newWindow = newWindow;\n          }\n\n          break;\n\n        case \"Named\":\n          const namedAction = action.get(\"N\");\n\n          if (namedAction instanceof _primitives.Name) {\n            resultObj.action = namedAction.name;\n          }\n\n          break;\n\n        case \"JavaScript\":\n          const jsAction = action.get(\"JS\");\n          let js;\n\n          if (jsAction instanceof _base_stream.BaseStream) {\n            js = jsAction.getString();\n          } else if (typeof jsAction === \"string\") {\n            js = jsAction;\n          }\n\n          const jsURL = js && (0, _core_utils.recoverJsURL)((0, _util.stringToPDFString)(js));\n\n          if (jsURL) {\n            url = jsURL.url;\n            resultObj.newWindow = jsURL.newWindow;\n            break;\n          }\n\n        default:\n          if (actionName === \"JavaScript\" || actionName === \"SubmitForm\") {\n            break;\n          }\n\n          (0, _util.warn)(`parseDestDictionary - unsupported action: \"${actionName}\".`);\n          break;\n      }\n    } else if (destDict.has(\"Dest\")) {\n      dest = destDict.get(\"Dest\");\n    }\n\n    if (typeof url === \"string\") {\n      const absoluteUrl = (0, _util.createValidAbsoluteUrl)(url, docBaseUrl, {\n        addDefaultProtocol: true,\n        tryConvertEncoding: true\n      });\n\n      if (absoluteUrl) {\n        resultObj.url = absoluteUrl.href;\n      }\n\n      resultObj.unsafeUrl = url;\n    }\n\n    if (dest) {\n      if (dest instanceof _primitives.Name) {\n        dest = dest.name;\n      }\n\n      if (typeof dest === \"string\" || Array.isArray(dest)) {\n        resultObj.dest = dest;\n      }\n    }\n  }\n\n}\n\nexports.Catalog = Catalog;\n\n/***/ }),\n/* 65 */\n/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {\n\n\n\nObject.defineProperty(exports, \"__esModule\", ({\n  value: true\n}));\nexports.NumberTree = exports.NameTree = void 0;\n\nvar _primitives = __w_pdfjs_require__(5);\n\nvar _util = __w_pdfjs_require__(2);\n\nclass NameOrNumberTree {\n  constructor(root, xref, type) {\n    if (this.constructor === NameOrNumberTree) {\n      (0, _util.unreachable)(\"Cannot initialize NameOrNumberTree.\");\n    }\n\n    this.root = root;\n    this.xref = xref;\n    this._type = type;\n  }\n\n  getAll() {\n    const map = new Map();\n\n    if (!this.root) {\n      return map;\n    }\n\n    const xref = this.xref;\n    const processed = new _primitives.RefSet();\n    processed.put(this.root);\n    const queue = [this.root];\n\n    while (queue.length > 0) {\n      const obj = xref.fetchIfRef(queue.shift());\n\n      if (!(obj instanceof _primitives.Dict)) {\n        continue;\n      }\n\n      if (obj.has(\"Kids\")) {\n        const kids = obj.get(\"Kids\");\n\n        for (let i = 0, ii = kids.length; i < ii; i++) {\n          const kid = kids[i];\n\n          if (processed.has(kid)) {\n            throw new _util.FormatError(`Duplicate entry in \"${this._type}\" tree.`);\n          }\n\n          queue.push(kid);\n          processed.put(kid);\n        }\n\n        continue;\n      }\n\n      const entries = obj.get(this._type);\n\n      if (!Array.isArray(entries)) {\n        continue;\n      }\n\n      for (let i = 0, ii = entries.length; i < ii; i += 2) {\n        map.set(xref.fetchIfRef(entries[i]), xref.fetchIfRef(entries[i + 1]));\n      }\n    }\n\n    return map;\n  }\n\n  get(key) {\n    if (!this.root) {\n      return null;\n    }\n\n    const xref = this.xref;\n    let kidsOrEntries = xref.fetchIfRef(this.root);\n    let loopCount = 0;\n    const MAX_LEVELS = 10;\n\n    while (kidsOrEntries.has(\"Kids\")) {\n      if (++loopCount > MAX_LEVELS) {\n        (0, _util.warn)(`Search depth limit reached for \"${this._type}\" tree.`);\n        return null;\n      }\n\n      const kids = kidsOrEntries.get(\"Kids\");\n\n      if (!Array.isArray(kids)) {\n        return null;\n      }\n\n      let l = 0,\n          r = kids.length - 1;\n\n      while (l <= r) {\n        const m = l + r >> 1;\n        const kid = xref.fetchIfRef(kids[m]);\n        const limits = kid.get(\"Limits\");\n\n        if (key < xref.fetchIfRef(limits[0])) {\n          r = m - 1;\n        } else if (key > xref.fetchIfRef(limits[1])) {\n          l = m + 1;\n        } else {\n          kidsOrEntries = xref.fetchIfRef(kids[m]);\n          break;\n        }\n      }\n\n      if (l > r) {\n        return null;\n      }\n    }\n\n    const entries = kidsOrEntries.get(this._type);\n\n    if (Array.isArray(entries)) {\n      let l = 0,\n          r = entries.length - 2;\n\n      while (l <= r) {\n        const tmp = l + r >> 1,\n              m = tmp + (tmp & 1);\n        const currentKey = xref.fetchIfRef(entries[m]);\n\n        if (key < currentKey) {\n          r = m - 2;\n        } else if (key > currentKey) {\n          l = m + 2;\n        } else {\n          return xref.fetchIfRef(entries[m + 1]);\n        }\n      }\n    }\n\n    return null;\n  }\n\n}\n\nclass NameTree extends NameOrNumberTree {\n  constructor(root, xref) {\n    super(root, xref, \"Names\");\n  }\n\n}\n\nexports.NameTree = NameTree;\n\nclass NumberTree extends NameOrNumberTree {\n  constructor(root, xref) {\n    super(root, xref, \"Nums\");\n  }\n\n}\n\nexports.NumberTree = NumberTree;\n\n/***/ }),\n/* 66 */\n/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {\n\n\n\nObject.defineProperty(exports, \"__esModule\", ({\n  value: true\n}));\nexports.clearGlobalCaches = clearGlobalCaches;\n\nvar _primitives = __w_pdfjs_require__(5);\n\nvar _unicode = __w_pdfjs_require__(21);\n\nfunction clearGlobalCaches() {\n  (0, _primitives.clearPrimitiveCaches)();\n  (0, _unicode.clearUnicodeCaches)();\n}\n\n/***/ }),\n/* 67 */\n/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {\n\n\n\nObject.defineProperty(exports, \"__esModule\", ({\n  value: true\n}));\nexports.FileSpec = void 0;\n\nvar _util = __w_pdfjs_require__(2);\n\nvar _base_stream = __w_pdfjs_require__(9);\n\nvar _primitives = __w_pdfjs_require__(5);\n\nfunction pickPlatformItem(dict) {\n  if (dict.has(\"UF\")) {\n    return dict.get(\"UF\");\n  } else if (dict.has(\"F\")) {\n    return dict.get(\"F\");\n  } else if (dict.has(\"Unix\")) {\n    return dict.get(\"Unix\");\n  } else if (dict.has(\"Mac\")) {\n    return dict.get(\"Mac\");\n  } else if (dict.has(\"DOS\")) {\n    return dict.get(\"DOS\");\n  }\n\n  return null;\n}\n\nclass FileSpec {\n  constructor(root, xref) {\n    if (!(root instanceof _primitives.Dict)) {\n      return;\n    }\n\n    this.xref = xref;\n    this.root = root;\n\n    if (root.has(\"FS\")) {\n      this.fs = root.get(\"FS\");\n    }\n\n    this.description = root.has(\"Desc\") ? (0, _util.stringToPDFString)(root.get(\"Desc\")) : \"\";\n\n    if (root.has(\"RF\")) {\n      (0, _util.warn)(\"Related file specifications are not supported\");\n    }\n\n    this.contentAvailable = true;\n\n    if (!root.has(\"EF\")) {\n      this.contentAvailable = false;\n      (0, _util.warn)(\"Non-embedded file specifications are not supported\");\n    }\n  }\n\n  get filename() {\n    if (!this._filename && this.root) {\n      const filename = pickPlatformItem(this.root) || \"unnamed\";\n      this._filename = (0, _util.stringToPDFString)(filename).replace(/\\\\\\\\/g, \"\\\\\").replace(/\\\\\\//g, \"/\").replace(/\\\\/g, \"/\");\n    }\n\n    return this._filename;\n  }\n\n  get content() {\n    if (!this.contentAvailable) {\n      return null;\n    }\n\n    if (!this.contentRef && this.root) {\n      this.contentRef = pickPlatformItem(this.root.get(\"EF\"));\n    }\n\n    let content = null;\n\n    if (this.contentRef) {\n      const fileObj = this.xref.fetchIfRef(this.contentRef);\n\n      if (fileObj instanceof _base_stream.BaseStream) {\n        content = fileObj.getBytes();\n      } else {\n        (0, _util.warn)(\"Embedded file specification points to non-existing/invalid content\");\n      }\n    } else {\n      (0, _util.warn)(\"Embedded file specification does not have a content\");\n    }\n\n    return content;\n  }\n\n  get serializable() {\n    return {\n      filename: this.filename,\n      content: this.content\n    };\n  }\n\n}\n\nexports.FileSpec = FileSpec;\n\n/***/ }),\n/* 68 */\n/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {\n\n\n\nObject.defineProperty(exports, \"__esModule\", ({\n  value: true\n}));\nexports.MetadataParser = void 0;\n\nvar _xml_parser = __w_pdfjs_require__(69);\n\nclass MetadataParser {\n  constructor(data) {\n    data = this._repair(data);\n    const parser = new _xml_parser.SimpleXMLParser({\n      lowerCaseName: true\n    });\n    const xmlDocument = parser.parseFromString(data);\n    this._metadataMap = new Map();\n    this._data = data;\n\n    if (xmlDocument) {\n      this._parse(xmlDocument);\n    }\n  }\n\n  _repair(data) {\n    return data.replace(/^[^<]+/, \"\").replace(/>\\\\376\\\\377([^<]+)/g, function (all, codes) {\n      const bytes = codes.replace(/\\\\([0-3])([0-7])([0-7])/g, function (code, d1, d2, d3) {\n        return String.fromCharCode(d1 * 64 + d2 * 8 + d3 * 1);\n      }).replace(/&(amp|apos|gt|lt|quot);/g, function (str, name) {\n        switch (name) {\n          case \"amp\":\n            return \"&\";\n\n          case \"apos\":\n            return \"'\";\n\n          case \"gt\":\n            return \">\";\n\n          case \"lt\":\n            return \"<\";\n\n          case \"quot\":\n            return '\"';\n        }\n\n        throw new Error(`_repair: ${name} isn't defined.`);\n      });\n      const charBuf = [];\n\n      for (let i = 0, ii = bytes.length; i < ii; i += 2) {\n        const code = bytes.charCodeAt(i) * 256 + bytes.charCodeAt(i + 1);\n\n        if (code >= 32 && code < 127 && code !== 60 && code !== 62 && code !== 38) {\n          charBuf.push(String.fromCharCode(code));\n        } else {\n          charBuf.push(\"&#x\" + (0x10000 + code).toString(16).substring(1) + \";\");\n        }\n      }\n\n      return \">\" + charBuf.join(\"\");\n    });\n  }\n\n  _getSequence(entry) {\n    const name = entry.nodeName;\n\n    if (name !== \"rdf:bag\" && name !== \"rdf:seq\" && name !== \"rdf:alt\") {\n      return null;\n    }\n\n    return entry.childNodes.filter(node => node.nodeName === \"rdf:li\");\n  }\n\n  _parseArray(entry) {\n    if (!entry.hasChildNodes()) {\n      return;\n    }\n\n    const [seqNode] = entry.childNodes;\n    const sequence = this._getSequence(seqNode) || [];\n\n    this._metadataMap.set(entry.nodeName, sequence.map(node => node.textContent.trim()));\n  }\n\n  _parse(xmlDocument) {\n    let rdf = xmlDocument.documentElement;\n\n    if (rdf.nodeName !== \"rdf:rdf\") {\n      rdf = rdf.firstChild;\n\n      while (rdf && rdf.nodeName !== \"rdf:rdf\") {\n        rdf = rdf.nextSibling;\n      }\n    }\n\n    if (!rdf || rdf.nodeName !== \"rdf:rdf\" || !rdf.hasChildNodes()) {\n      return;\n    }\n\n    for (const desc of rdf.childNodes) {\n      if (desc.nodeName !== \"rdf:description\") {\n        continue;\n      }\n\n      for (const entry of desc.childNodes) {\n        const name = entry.nodeName;\n\n        switch (name) {\n          case \"#text\":\n            continue;\n\n          case \"dc:creator\":\n          case \"dc:subject\":\n            this._parseArray(entry);\n\n            continue;\n        }\n\n        this._metadataMap.set(name, entry.textContent.trim());\n      }\n    }\n  }\n\n  get serializable() {\n    return {\n      parsedData: this._metadataMap,\n      rawData: this._data\n    };\n  }\n\n}\n\nexports.MetadataParser = MetadataParser;\n\n/***/ }),\n/* 69 */\n/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {\n\n\n\nObject.defineProperty(exports, \"__esModule\", ({\n  value: true\n}));\nexports.XMLParserErrorCode = exports.XMLParserBase = exports.SimpleXMLParser = exports.SimpleDOMNode = void 0;\n\nvar _core_utils = __w_pdfjs_require__(8);\n\nconst XMLParserErrorCode = {\n  NoError: 0,\n  EndOfDocument: -1,\n  UnterminatedCdat: -2,\n  UnterminatedXmlDeclaration: -3,\n  UnterminatedDoctypeDeclaration: -4,\n  UnterminatedComment: -5,\n  MalformedElement: -6,\n  OutOfMemory: -7,\n  UnterminatedAttributeValue: -8,\n  UnterminatedElement: -9,\n  ElementNeverBegun: -10\n};\nexports.XMLParserErrorCode = XMLParserErrorCode;\n\nfunction isWhitespace(s, index) {\n  const ch = s[index];\n  return ch === \" \" || ch === \"\\n\" || ch === \"\\r\" || ch === \"\\t\";\n}\n\nfunction isWhitespaceString(s) {\n  for (let i = 0, ii = s.length; i < ii; i++) {\n    if (!isWhitespace(s, i)) {\n      return false;\n    }\n  }\n\n  return true;\n}\n\nclass XMLParserBase {\n  _resolveEntities(s) {\n    return s.replace(/&([^;]+);/g, (all, entity) => {\n      if (entity.substring(0, 2) === \"#x\") {\n        return String.fromCodePoint(parseInt(entity.substring(2), 16));\n      } else if (entity.substring(0, 1) === \"#\") {\n        return String.fromCodePoint(parseInt(entity.substring(1), 10));\n      }\n\n      switch (entity) {\n        case \"lt\":\n          return \"<\";\n\n        case \"gt\":\n          return \">\";\n\n        case \"amp\":\n          return \"&\";\n\n        case \"quot\":\n          return '\"';\n\n        case \"apos\":\n          return \"'\";\n      }\n\n      return this.onResolveEntity(entity);\n    });\n  }\n\n  _parseContent(s, start) {\n    const attributes = [];\n    let pos = start;\n\n    function skipWs() {\n      while (pos < s.length && isWhitespace(s, pos)) {\n        ++pos;\n      }\n    }\n\n    while (pos < s.length && !isWhitespace(s, pos) && s[pos] !== \">\" && s[pos] !== \"/\") {\n      ++pos;\n    }\n\n    const name = s.substring(start, pos);\n    skipWs();\n\n    while (pos < s.length && s[pos] !== \">\" && s[pos] !== \"/\" && s[pos] !== \"?\") {\n      skipWs();\n      let attrName = \"\",\n          attrValue = \"\";\n\n      while (pos < s.length && !isWhitespace(s, pos) && s[pos] !== \"=\") {\n        attrName += s[pos];\n        ++pos;\n      }\n\n      skipWs();\n\n      if (s[pos] !== \"=\") {\n        return null;\n      }\n\n      ++pos;\n      skipWs();\n      const attrEndChar = s[pos];\n\n      if (attrEndChar !== '\"' && attrEndChar !== \"'\") {\n        return null;\n      }\n\n      const attrEndIndex = s.indexOf(attrEndChar, ++pos);\n\n      if (attrEndIndex < 0) {\n        return null;\n      }\n\n      attrValue = s.substring(pos, attrEndIndex);\n      attributes.push({\n        name: attrName,\n        value: this._resolveEntities(attrValue)\n      });\n      pos = attrEndIndex + 1;\n      skipWs();\n    }\n\n    return {\n      name,\n      attributes,\n      parsed: pos - start\n    };\n  }\n\n  _parseProcessingInstruction(s, start) {\n    let pos = start;\n\n    function skipWs() {\n      while (pos < s.length && isWhitespace(s, pos)) {\n        ++pos;\n      }\n    }\n\n    while (pos < s.length && !isWhitespace(s, pos) && s[pos] !== \">\" && s[pos] !== \"?\" && s[pos] !== \"/\") {\n      ++pos;\n    }\n\n    const name = s.substring(start, pos);\n    skipWs();\n    const attrStart = pos;\n\n    while (pos < s.length && (s[pos] !== \"?\" || s[pos + 1] !== \">\")) {\n      ++pos;\n    }\n\n    const value = s.substring(attrStart, pos);\n    return {\n      name,\n      value,\n      parsed: pos - start\n    };\n  }\n\n  parseXml(s) {\n    let i = 0;\n\n    while (i < s.length) {\n      const ch = s[i];\n      let j = i;\n\n      if (ch === \"<\") {\n        ++j;\n        const ch2 = s[j];\n        let q;\n\n        switch (ch2) {\n          case \"/\":\n            ++j;\n            q = s.indexOf(\">\", j);\n\n            if (q < 0) {\n              this.onError(XMLParserErrorCode.UnterminatedElement);\n              return;\n            }\n\n            this.onEndElement(s.substring(j, q));\n            j = q + 1;\n            break;\n\n          case \"?\":\n            ++j;\n\n            const pi = this._parseProcessingInstruction(s, j);\n\n            if (s.substring(j + pi.parsed, j + pi.parsed + 2) !== \"?>\") {\n              this.onError(XMLParserErrorCode.UnterminatedXmlDeclaration);\n              return;\n            }\n\n            this.onPi(pi.name, pi.value);\n            j += pi.parsed + 2;\n            break;\n\n          case \"!\":\n            if (s.substring(j + 1, j + 3) === \"--\") {\n              q = s.indexOf(\"-->\", j + 3);\n\n              if (q < 0) {\n                this.onError(XMLParserErrorCode.UnterminatedComment);\n                return;\n              }\n\n              this.onComment(s.substring(j + 3, q));\n              j = q + 3;\n            } else if (s.substring(j + 1, j + 8) === \"[CDATA[\") {\n              q = s.indexOf(\"]]>\", j + 8);\n\n              if (q < 0) {\n                this.onError(XMLParserErrorCode.UnterminatedCdat);\n                return;\n              }\n\n              this.onCdata(s.substring(j + 8, q));\n              j = q + 3;\n            } else if (s.substring(j + 1, j + 8) === \"DOCTYPE\") {\n              const q2 = s.indexOf(\"[\", j + 8);\n              let complexDoctype = false;\n              q = s.indexOf(\">\", j + 8);\n\n              if (q < 0) {\n                this.onError(XMLParserErrorCode.UnterminatedDoctypeDeclaration);\n                return;\n              }\n\n              if (q2 > 0 && q > q2) {\n                q = s.indexOf(\"]>\", j + 8);\n\n                if (q < 0) {\n                  this.onError(XMLParserErrorCode.UnterminatedDoctypeDeclaration);\n                  return;\n                }\n\n                complexDoctype = true;\n              }\n\n              const doctypeContent = s.substring(j + 8, q + (complexDoctype ? 1 : 0));\n              this.onDoctype(doctypeContent);\n              j = q + (complexDoctype ? 2 : 1);\n            } else {\n              this.onError(XMLParserErrorCode.MalformedElement);\n              return;\n            }\n\n            break;\n\n          default:\n            const content = this._parseContent(s, j);\n\n            if (content === null) {\n              this.onError(XMLParserErrorCode.MalformedElement);\n              return;\n            }\n\n            let isClosed = false;\n\n            if (s.substring(j + content.parsed, j + content.parsed + 2) === \"/>\") {\n              isClosed = true;\n            } else if (s.substring(j + content.parsed, j + content.parsed + 1) !== \">\") {\n              this.onError(XMLParserErrorCode.UnterminatedElement);\n              return;\n            }\n\n            this.onBeginElement(content.name, content.attributes, isClosed);\n            j += content.parsed + (isClosed ? 2 : 1);\n            break;\n        }\n      } else {\n        while (j < s.length && s[j] !== \"<\") {\n          j++;\n        }\n\n        const text = s.substring(i, j);\n        this.onText(this._resolveEntities(text));\n      }\n\n      i = j;\n    }\n  }\n\n  onResolveEntity(name) {\n    return `&${name};`;\n  }\n\n  onPi(name, value) {}\n\n  onComment(text) {}\n\n  onCdata(text) {}\n\n  onDoctype(doctypeContent) {}\n\n  onText(text) {}\n\n  onBeginElement(name, attributes, isEmpty) {}\n\n  onEndElement(name) {}\n\n  onError(code) {}\n\n}\n\nexports.XMLParserBase = XMLParserBase;\n\nclass SimpleDOMNode {\n  constructor(nodeName, nodeValue) {\n    this.nodeName = nodeName;\n    this.nodeValue = nodeValue;\n    Object.defineProperty(this, \"parentNode\", {\n      value: null,\n      writable: true\n    });\n  }\n\n  get firstChild() {\n    return this.childNodes && this.childNodes[0];\n  }\n\n  get nextSibling() {\n    const childNodes = this.parentNode.childNodes;\n\n    if (!childNodes) {\n      return undefined;\n    }\n\n    const index = childNodes.indexOf(this);\n\n    if (index === -1) {\n      return undefined;\n    }\n\n    return childNodes[index + 1];\n  }\n\n  get textContent() {\n    if (!this.childNodes) {\n      return this.nodeValue || \"\";\n    }\n\n    return this.childNodes.map(function (child) {\n      return child.textContent;\n    }).join(\"\");\n  }\n\n  hasChildNodes() {\n    return this.childNodes && this.childNodes.length > 0;\n  }\n\n  searchNode(paths, pos) {\n    if (pos >= paths.length) {\n      return this;\n    }\n\n    const component = paths[pos];\n    const stack = [];\n    let node = this;\n\n    while (true) {\n      if (component.name === node.nodeName) {\n        if (component.pos === 0) {\n          const res = node.searchNode(paths, pos + 1);\n\n          if (res !== null) {\n            return res;\n          }\n        } else if (stack.length === 0) {\n          return null;\n        } else {\n          const [parent] = stack.pop();\n          let siblingPos = 0;\n\n          for (const child of parent.childNodes) {\n            if (component.name === child.nodeName) {\n              if (siblingPos === component.pos) {\n                return child.searchNode(paths, pos + 1);\n              }\n\n              siblingPos++;\n            }\n          }\n\n          return node.searchNode(paths, pos + 1);\n        }\n      }\n\n      if (node.childNodes && node.childNodes.length !== 0) {\n        stack.push([node, 0]);\n        node = node.childNodes[0];\n      } else if (stack.length === 0) {\n        return null;\n      } else {\n        while (stack.length !== 0) {\n          const [parent, currentPos] = stack.pop();\n          const newPos = currentPos + 1;\n\n          if (newPos < parent.childNodes.length) {\n            stack.push([parent, newPos]);\n            node = parent.childNodes[newPos];\n            break;\n          }\n        }\n\n        if (stack.length === 0) {\n          return null;\n        }\n      }\n    }\n  }\n\n  dump(buffer) {\n    if (this.nodeName === \"#text\") {\n      buffer.push((0, _core_utils.encodeToXmlString)(this.nodeValue));\n      return;\n    }\n\n    buffer.push(`<${this.nodeName}`);\n\n    if (this.attributes) {\n      for (const attribute of this.attributes) {\n        buffer.push(` ${attribute.name}=\"${(0, _core_utils.encodeToXmlString)(attribute.value)}\"`);\n      }\n    }\n\n    if (this.hasChildNodes()) {\n      buffer.push(\">\");\n\n      for (const child of this.childNodes) {\n        child.dump(buffer);\n      }\n\n      buffer.push(`</${this.nodeName}>`);\n    } else if (this.nodeValue) {\n      buffer.push(`>${(0, _core_utils.encodeToXmlString)(this.nodeValue)}</${this.nodeName}>`);\n    } else {\n      buffer.push(\"/>\");\n    }\n  }\n\n}\n\nexports.SimpleDOMNode = SimpleDOMNode;\n\nclass SimpleXMLParser extends XMLParserBase {\n  constructor({\n    hasAttributes = false,\n    lowerCaseName = false\n  }) {\n    super();\n    this._currentFragment = null;\n    this._stack = null;\n    this._errorCode = XMLParserErrorCode.NoError;\n    this._hasAttributes = hasAttributes;\n    this._lowerCaseName = lowerCaseName;\n  }\n\n  parseFromString(data) {\n    this._currentFragment = [];\n    this._stack = [];\n    this._errorCode = XMLParserErrorCode.NoError;\n    this.parseXml(data);\n\n    if (this._errorCode !== XMLParserErrorCode.NoError) {\n      return undefined;\n    }\n\n    const [documentElement] = this._currentFragment;\n\n    if (!documentElement) {\n      return undefined;\n    }\n\n    return {\n      documentElement\n    };\n  }\n\n  onText(text) {\n    if (isWhitespaceString(text)) {\n      return;\n    }\n\n    const node = new SimpleDOMNode(\"#text\", text);\n\n    this._currentFragment.push(node);\n  }\n\n  onCdata(text) {\n    const node = new SimpleDOMNode(\"#text\", text);\n\n    this._currentFragment.push(node);\n  }\n\n  onBeginElement(name, attributes, isEmpty) {\n    if (this._lowerCaseName) {\n      name = name.toLowerCase();\n    }\n\n    const node = new SimpleDOMNode(name);\n    node.childNodes = [];\n\n    if (this._hasAttributes) {\n      node.attributes = attributes;\n    }\n\n    this._currentFragment.push(node);\n\n    if (isEmpty) {\n      return;\n    }\n\n    this._stack.push(this._currentFragment);\n\n    this._currentFragment = node.childNodes;\n  }\n\n  onEndElement(name) {\n    this._currentFragment = this._stack.pop() || [];\n    const lastElement = this._currentFragment[this._currentFragment.length - 1];\n\n    if (!lastElement) {\n      return;\n    }\n\n    for (let i = 0, ii = lastElement.childNodes.length; i < ii; i++) {\n      lastElement.childNodes[i].parentNode = lastElement;\n    }\n  }\n\n  onError(code) {\n    this._errorCode = code;\n  }\n\n}\n\nexports.SimpleXMLParser = SimpleXMLParser;\n\n/***/ }),\n/* 70 */\n/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {\n\n\n\nObject.defineProperty(exports, \"__esModule\", ({\n  value: true\n}));\nexports.StructTreeRoot = exports.StructTreePage = void 0;\n\nvar _primitives = __w_pdfjs_require__(5);\n\nvar _util = __w_pdfjs_require__(2);\n\nvar _name_number_tree = __w_pdfjs_require__(65);\n\nconst MAX_DEPTH = 40;\nconst StructElementType = {\n  PAGE_CONTENT: \"PAGE_CONTENT\",\n  STREAM_CONTENT: \"STREAM_CONTENT\",\n  OBJECT: \"OBJECT\",\n  ELEMENT: \"ELEMENT\"\n};\n\nclass StructTreeRoot {\n  constructor(rootDict) {\n    this.dict = rootDict;\n    this.roleMap = new Map();\n  }\n\n  init() {\n    this.readRoleMap();\n  }\n\n  readRoleMap() {\n    const roleMapDict = this.dict.get(\"RoleMap\");\n\n    if (!(roleMapDict instanceof _primitives.Dict)) {\n      return;\n    }\n\n    roleMapDict.forEach((key, value) => {\n      if (!(value instanceof _primitives.Name)) {\n        return;\n      }\n\n      this.roleMap.set(key, value.name);\n    });\n  }\n\n}\n\nexports.StructTreeRoot = StructTreeRoot;\n\nclass StructElementNode {\n  constructor(tree, dict) {\n    this.tree = tree;\n    this.dict = dict;\n    this.kids = [];\n    this.parseKids();\n  }\n\n  get role() {\n    const nameObj = this.dict.get(\"S\");\n    const name = nameObj instanceof _primitives.Name ? nameObj.name : \"\";\n    const {\n      root\n    } = this.tree;\n\n    if (root.roleMap.has(name)) {\n      return root.roleMap.get(name);\n    }\n\n    return name;\n  }\n\n  parseKids() {\n    let pageObjId = null;\n    const objRef = this.dict.getRaw(\"Pg\");\n\n    if (objRef instanceof _primitives.Ref) {\n      pageObjId = objRef.toString();\n    }\n\n    const kids = this.dict.get(\"K\");\n\n    if (Array.isArray(kids)) {\n      for (const kid of kids) {\n        const element = this.parseKid(pageObjId, kid);\n\n        if (element) {\n          this.kids.push(element);\n        }\n      }\n    } else {\n      const element = this.parseKid(pageObjId, kids);\n\n      if (element) {\n        this.kids.push(element);\n      }\n    }\n  }\n\n  parseKid(pageObjId, kid) {\n    if (Number.isInteger(kid)) {\n      if (this.tree.pageDict.objId !== pageObjId) {\n        return null;\n      }\n\n      return new StructElement({\n        type: StructElementType.PAGE_CONTENT,\n        mcid: kid,\n        pageObjId\n      });\n    }\n\n    let kidDict = null;\n\n    if (kid instanceof _primitives.Ref) {\n      kidDict = this.dict.xref.fetch(kid);\n    } else if (kid instanceof _primitives.Dict) {\n      kidDict = kid;\n    }\n\n    if (!kidDict) {\n      return null;\n    }\n\n    const pageRef = kidDict.getRaw(\"Pg\");\n\n    if (pageRef instanceof _primitives.Ref) {\n      pageObjId = pageRef.toString();\n    }\n\n    const type = kidDict.get(\"Type\") instanceof _primitives.Name ? kidDict.get(\"Type\").name : null;\n\n    if (type === \"MCR\") {\n      if (this.tree.pageDict.objId !== pageObjId) {\n        return null;\n      }\n\n      return new StructElement({\n        type: StructElementType.STREAM_CONTENT,\n        refObjId: kidDict.getRaw(\"Stm\") instanceof _primitives.Ref ? kidDict.getRaw(\"Stm\").toString() : null,\n        pageObjId,\n        mcid: kidDict.get(\"MCID\")\n      });\n    }\n\n    if (type === \"OBJR\") {\n      if (this.tree.pageDict.objId !== pageObjId) {\n        return null;\n      }\n\n      return new StructElement({\n        type: StructElementType.OBJECT,\n        refObjId: kidDict.getRaw(\"Obj\") instanceof _primitives.Ref ? kidDict.getRaw(\"Obj\").toString() : null,\n        pageObjId\n      });\n    }\n\n    return new StructElement({\n      type: StructElementType.ELEMENT,\n      dict: kidDict\n    });\n  }\n\n}\n\nclass StructElement {\n  constructor({\n    type,\n    dict = null,\n    mcid = null,\n    pageObjId = null,\n    refObjId = null\n  }) {\n    this.type = type;\n    this.dict = dict;\n    this.mcid = mcid;\n    this.pageObjId = pageObjId;\n    this.refObjId = refObjId;\n    this.parentNode = null;\n  }\n\n}\n\nclass StructTreePage {\n  constructor(structTreeRoot, pageDict) {\n    this.root = structTreeRoot;\n    this.rootDict = structTreeRoot ? structTreeRoot.dict : null;\n    this.pageDict = pageDict;\n    this.nodes = [];\n  }\n\n  parse() {\n    if (!this.root || !this.rootDict) {\n      return;\n    }\n\n    const parentTree = this.rootDict.get(\"ParentTree\");\n\n    if (!parentTree) {\n      return;\n    }\n\n    const id = this.pageDict.get(\"StructParents\");\n\n    if (!Number.isInteger(id)) {\n      return;\n    }\n\n    const numberTree = new _name_number_tree.NumberTree(parentTree, this.rootDict.xref);\n    const parentArray = numberTree.get(id);\n\n    if (!Array.isArray(parentArray)) {\n      return;\n    }\n\n    const map = new Map();\n\n    for (const ref of parentArray) {\n      if (ref instanceof _primitives.Ref) {\n        this.addNode(this.rootDict.xref.fetch(ref), map);\n      }\n    }\n  }\n\n  addNode(dict, map, level = 0) {\n    if (level > MAX_DEPTH) {\n      (0, _util.warn)(\"StructTree MAX_DEPTH reached.\");\n      return null;\n    }\n\n    if (map.has(dict)) {\n      return map.get(dict);\n    }\n\n    const element = new StructElementNode(this, dict);\n    map.set(dict, element);\n    const parent = dict.get(\"P\");\n\n    if (!parent || (0, _primitives.isName)(parent.get(\"Type\"), \"StructTreeRoot\")) {\n      if (!this.addTopLevelNode(dict, element)) {\n        map.delete(dict);\n      }\n\n      return element;\n    }\n\n    const parentNode = this.addNode(parent, map, level + 1);\n\n    if (!parentNode) {\n      return element;\n    }\n\n    let save = false;\n\n    for (const kid of parentNode.kids) {\n      if (kid.type === StructElementType.ELEMENT && kid.dict === dict) {\n        kid.parentNode = element;\n        save = true;\n      }\n    }\n\n    if (!save) {\n      map.delete(dict);\n    }\n\n    return element;\n  }\n\n  addTopLevelNode(dict, element) {\n    const obj = this.rootDict.get(\"K\");\n\n    if (!obj) {\n      return false;\n    }\n\n    if (obj instanceof _primitives.Dict) {\n      if (obj.objId !== dict.objId) {\n        return false;\n      }\n\n      this.nodes[0] = element;\n      return true;\n    }\n\n    if (!Array.isArray(obj)) {\n      return true;\n    }\n\n    let save = false;\n\n    for (let i = 0; i < obj.length; i++) {\n      const kidRef = obj[i];\n\n      if (kidRef && kidRef.toString() === dict.objId) {\n        this.nodes[i] = element;\n        save = true;\n      }\n    }\n\n    return save;\n  }\n\n  get serializable() {\n    function nodeToSerializable(node, parent, level = 0) {\n      if (level > MAX_DEPTH) {\n        (0, _util.warn)(\"StructTree too deep to be fully serialized.\");\n        return;\n      }\n\n      const obj = Object.create(null);\n      obj.role = node.role;\n      obj.children = [];\n      parent.children.push(obj);\n      const alt = node.dict.get(\"Alt\");\n\n      if (typeof alt === \"string\") {\n        obj.alt = (0, _util.stringToPDFString)(alt);\n      }\n\n      const lang = node.dict.get(\"Lang\");\n\n      if (typeof lang === \"string\") {\n        obj.lang = (0, _util.stringToPDFString)(lang);\n      }\n\n      for (const kid of node.kids) {\n        const kidElement = kid.type === StructElementType.ELEMENT ? kid.parentNode : null;\n\n        if (kidElement) {\n          nodeToSerializable(kidElement, obj, level + 1);\n          continue;\n        } else if (kid.type === StructElementType.PAGE_CONTENT || kid.type === StructElementType.STREAM_CONTENT) {\n          obj.children.push({\n            type: \"content\",\n            id: `page${kid.pageObjId}_mcid${kid.mcid}`\n          });\n        } else if (kid.type === StructElementType.OBJECT) {\n          obj.children.push({\n            type: \"object\",\n            id: kid.refObjId\n          });\n        }\n      }\n    }\n\n    const root = Object.create(null);\n    root.children = [];\n    root.role = \"Root\";\n\n    for (const child of this.nodes) {\n      if (!child) {\n        continue;\n      }\n\n      nodeToSerializable(child, root);\n    }\n\n    return root;\n  }\n\n}\n\nexports.StructTreePage = StructTreePage;\n\n/***/ }),\n/* 71 */\n/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {\n\n\n\nObject.defineProperty(exports, \"__esModule\", ({\n  value: true\n}));\nexports.ObjectLoader = void 0;\n\nvar _primitives = __w_pdfjs_require__(5);\n\nvar _base_stream = __w_pdfjs_require__(9);\n\nvar _core_utils = __w_pdfjs_require__(8);\n\nvar _util = __w_pdfjs_require__(2);\n\nfunction mayHaveChildren(value) {\n  return value instanceof _primitives.Ref || value instanceof _primitives.Dict || value instanceof _base_stream.BaseStream || Array.isArray(value);\n}\n\nfunction addChildren(node, nodesToVisit) {\n  if (node instanceof _primitives.Dict) {\n    node = node.getRawValues();\n  } else if (node instanceof _base_stream.BaseStream) {\n    node = node.dict.getRawValues();\n  } else if (!Array.isArray(node)) {\n    return;\n  }\n\n  for (const rawValue of node) {\n    if (mayHaveChildren(rawValue)) {\n      nodesToVisit.push(rawValue);\n    }\n  }\n}\n\nclass ObjectLoader {\n  constructor(dict, keys, xref) {\n    this.dict = dict;\n    this.keys = keys;\n    this.xref = xref;\n    this.refSet = null;\n  }\n\n  async load() {\n    if (this.xref.stream.isDataLoaded) {\n      return undefined;\n    }\n\n    const {\n      keys,\n      dict\n    } = this;\n    this.refSet = new _primitives.RefSet();\n    const nodesToVisit = [];\n\n    for (let i = 0, ii = keys.length; i < ii; i++) {\n      const rawValue = dict.getRaw(keys[i]);\n\n      if (rawValue !== undefined) {\n        nodesToVisit.push(rawValue);\n      }\n    }\n\n    return this._walk(nodesToVisit);\n  }\n\n  async _walk(nodesToVisit) {\n    const nodesToRevisit = [];\n    const pendingRequests = [];\n\n    while (nodesToVisit.length) {\n      let currentNode = nodesToVisit.pop();\n\n      if (currentNode instanceof _primitives.Ref) {\n        if (this.refSet.has(currentNode)) {\n          continue;\n        }\n\n        try {\n          this.refSet.put(currentNode);\n          currentNode = this.xref.fetch(currentNode);\n        } catch (ex) {\n          if (!(ex instanceof _core_utils.MissingDataException)) {\n            (0, _util.warn)(`ObjectLoader._walk - requesting all data: \"${ex}\".`);\n            this.refSet = null;\n            const {\n              manager\n            } = this.xref.stream;\n            return manager.requestAllChunks();\n          }\n\n          nodesToRevisit.push(currentNode);\n          pendingRequests.push({\n            begin: ex.begin,\n            end: ex.end\n          });\n        }\n      }\n\n      if (currentNode instanceof _base_stream.BaseStream) {\n        const baseStreams = currentNode.getBaseStreams();\n\n        if (baseStreams) {\n          let foundMissingData = false;\n\n          for (const stream of baseStreams) {\n            if (stream.isDataLoaded) {\n              continue;\n            }\n\n            foundMissingData = true;\n            pendingRequests.push({\n              begin: stream.start,\n              end: stream.end\n            });\n          }\n\n          if (foundMissingData) {\n            nodesToRevisit.push(currentNode);\n          }\n        }\n      }\n\n      addChildren(currentNode, nodesToVisit);\n    }\n\n    if (pendingRequests.length) {\n      await this.xref.stream.manager.requestRanges(pendingRequests);\n\n      for (const node of nodesToRevisit) {\n        if (node instanceof _primitives.Ref) {\n          this.refSet.remove(node);\n        }\n      }\n\n      return this._walk(nodesToRevisit);\n    }\n\n    this.refSet = null;\n    return undefined;\n  }\n\n}\n\nexports.ObjectLoader = ObjectLoader;\n\n/***/ }),\n/* 72 */\n/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {\n\n\n\nObject.defineProperty(exports, \"__esModule\", ({\n  value: true\n}));\nexports.incrementalUpdate = incrementalUpdate;\nexports.writeDict = writeDict;\n\nvar _util = __w_pdfjs_require__(2);\n\nvar _primitives = __w_pdfjs_require__(5);\n\nvar _core_utils = __w_pdfjs_require__(8);\n\nvar _xml_parser = __w_pdfjs_require__(69);\n\nvar _base_stream = __w_pdfjs_require__(9);\n\nvar _crypto = __w_pdfjs_require__(73);\n\nfunction writeDict(dict, buffer, transform) {\n  buffer.push(\"<<\");\n\n  for (const key of dict.getKeys()) {\n    buffer.push(` /${(0, _core_utils.escapePDFName)(key)} `);\n    writeValue(dict.getRaw(key), buffer, transform);\n  }\n\n  buffer.push(\">>\");\n}\n\nfunction writeStream(stream, buffer, transform) {\n  writeDict(stream.dict, buffer, transform);\n  buffer.push(\" stream\\n\");\n  let string = stream.getString();\n\n  if (transform !== null) {\n    string = transform.encryptString(string);\n  }\n\n  buffer.push(string, \"\\nendstream\\n\");\n}\n\nfunction writeArray(array, buffer, transform) {\n  buffer.push(\"[\");\n  let first = true;\n\n  for (const val of array) {\n    if (!first) {\n      buffer.push(\" \");\n    } else {\n      first = false;\n    }\n\n    writeValue(val, buffer, transform);\n  }\n\n  buffer.push(\"]\");\n}\n\nfunction numberToString(value) {\n  if (Number.isInteger(value)) {\n    return value.toString();\n  }\n\n  const roundedValue = Math.round(value * 100);\n\n  if (roundedValue % 100 === 0) {\n    return (roundedValue / 100).toString();\n  }\n\n  if (roundedValue % 10 === 0) {\n    return value.toFixed(1);\n  }\n\n  return value.toFixed(2);\n}\n\nfunction writeValue(value, buffer, transform) {\n  if (value instanceof _primitives.Name) {\n    buffer.push(`/${(0, _core_utils.escapePDFName)(value.name)}`);\n  } else if (value instanceof _primitives.Ref) {\n    buffer.push(`${value.num} ${value.gen} R`);\n  } else if (Array.isArray(value)) {\n    writeArray(value, buffer, transform);\n  } else if (typeof value === \"string\") {\n    if (transform !== null) {\n      value = transform.encryptString(value);\n    }\n\n    buffer.push(`(${(0, _util.escapeString)(value)})`);\n  } else if (typeof value === \"number\") {\n    buffer.push(numberToString(value));\n  } else if (typeof value === \"boolean\") {\n    buffer.push(value.toString());\n  } else if (value instanceof _primitives.Dict) {\n    writeDict(value, buffer, transform);\n  } else if (value instanceof _base_stream.BaseStream) {\n    writeStream(value, buffer, transform);\n  } else if (value === null) {\n    buffer.push(\"null\");\n  } else {\n    (0, _util.warn)(`Unhandled value in writer: ${typeof value}, please file a bug.`);\n  }\n}\n\nfunction writeInt(number, size, offset, buffer) {\n  for (let i = size + offset - 1; i > offset - 1; i--) {\n    buffer[i] = number & 0xff;\n    number >>= 8;\n  }\n\n  return offset + size;\n}\n\nfunction writeString(string, offset, buffer) {\n  for (let i = 0, len = string.length; i < len; i++) {\n    buffer[offset + i] = string.charCodeAt(i) & 0xff;\n  }\n}\n\nfunction computeMD5(filesize, xrefInfo) {\n  const time = Math.floor(Date.now() / 1000);\n  const filename = xrefInfo.filename || \"\";\n  const md5Buffer = [time.toString(), filename, filesize.toString()];\n  let md5BufferLen = md5Buffer.reduce((a, str) => a + str.length, 0);\n\n  for (const value of Object.values(xrefInfo.info)) {\n    md5Buffer.push(value);\n    md5BufferLen += value.length;\n  }\n\n  const array = new Uint8Array(md5BufferLen);\n  let offset = 0;\n\n  for (const str of md5Buffer) {\n    writeString(str, offset, array);\n    offset += str.length;\n  }\n\n  return (0, _util.bytesToString)((0, _crypto.calculateMD5)(array));\n}\n\nfunction writeXFADataForAcroform(str, newRefs) {\n  const xml = new _xml_parser.SimpleXMLParser({\n    hasAttributes: true\n  }).parseFromString(str);\n\n  for (const {\n    xfa\n  } of newRefs) {\n    if (!xfa) {\n      continue;\n    }\n\n    const {\n      path,\n      value\n    } = xfa;\n\n    if (!path) {\n      continue;\n    }\n\n    const node = xml.documentElement.searchNode((0, _core_utils.parseXFAPath)(path), 0);\n\n    if (node) {\n      node.childNodes = [new _xml_parser.SimpleDOMNode(\"#text\", value)];\n    } else {\n      (0, _util.warn)(`Node not found for path: ${path}`);\n    }\n  }\n\n  const buffer = [];\n  xml.documentElement.dump(buffer);\n  return buffer.join(\"\");\n}\n\nfunction updateXFA({\n  xfaData,\n  xfaDatasetsRef,\n  hasXfaDatasetsEntry,\n  acroFormRef,\n  acroForm,\n  newRefs,\n  xref,\n  xrefInfo\n}) {\n  if (xref === null) {\n    return;\n  }\n\n  if (!hasXfaDatasetsEntry) {\n    if (!acroFormRef) {\n      (0, _util.warn)(\"XFA - Cannot save it\");\n      return;\n    }\n\n    const oldXfa = acroForm.get(\"XFA\");\n    const newXfa = oldXfa.slice();\n    newXfa.splice(2, 0, \"datasets\");\n    newXfa.splice(3, 0, xfaDatasetsRef);\n    acroForm.set(\"XFA\", newXfa);\n    const encrypt = xref.encrypt;\n    let transform = null;\n\n    if (encrypt) {\n      transform = encrypt.createCipherTransform(acroFormRef.num, acroFormRef.gen);\n    }\n\n    const buffer = [`${acroFormRef.num} ${acroFormRef.gen} obj\\n`];\n    writeDict(acroForm, buffer, transform);\n    buffer.push(\"\\n\");\n    acroForm.set(\"XFA\", oldXfa);\n    newRefs.push({\n      ref: acroFormRef,\n      data: buffer.join(\"\")\n    });\n  }\n\n  if (xfaData === null) {\n    const datasets = xref.fetchIfRef(xfaDatasetsRef);\n    xfaData = writeXFADataForAcroform(datasets.getString(), newRefs);\n  }\n\n  const encrypt = xref.encrypt;\n\n  if (encrypt) {\n    const transform = encrypt.createCipherTransform(xfaDatasetsRef.num, xfaDatasetsRef.gen);\n    xfaData = transform.encryptString(xfaData);\n  }\n\n  const data = `${xfaDatasetsRef.num} ${xfaDatasetsRef.gen} obj\\n` + `<< /Type /EmbeddedFile /Length ${xfaData.length}>>\\nstream\\n` + xfaData + \"\\nendstream\\nendobj\\n\";\n  newRefs.push({\n    ref: xfaDatasetsRef,\n    data\n  });\n}\n\nfunction incrementalUpdate({\n  originalData,\n  xrefInfo,\n  newRefs,\n  xref = null,\n  hasXfa = false,\n  xfaDatasetsRef = null,\n  hasXfaDatasetsEntry = false,\n  acroFormRef = null,\n  acroForm = null,\n  xfaData = null\n}) {\n  if (hasXfa) {\n    updateXFA({\n      xfaData,\n      xfaDatasetsRef,\n      hasXfaDatasetsEntry,\n      acroFormRef,\n      acroForm,\n      newRefs,\n      xref,\n      xrefInfo\n    });\n  }\n\n  const newXref = new _primitives.Dict(null);\n  const refForXrefTable = xrefInfo.newRef;\n  let buffer, baseOffset;\n  const lastByte = originalData[originalData.length - 1];\n\n  if (lastByte === 0x0a || lastByte === 0x0d) {\n    buffer = [];\n    baseOffset = originalData.length;\n  } else {\n    buffer = [\"\\n\"];\n    baseOffset = originalData.length + 1;\n  }\n\n  newXref.set(\"Size\", refForXrefTable.num + 1);\n  newXref.set(\"Prev\", xrefInfo.startXRef);\n  newXref.set(\"Type\", _primitives.Name.get(\"XRef\"));\n\n  if (xrefInfo.rootRef !== null) {\n    newXref.set(\"Root\", xrefInfo.rootRef);\n  }\n\n  if (xrefInfo.infoRef !== null) {\n    newXref.set(\"Info\", xrefInfo.infoRef);\n  }\n\n  if (xrefInfo.encryptRef !== null) {\n    newXref.set(\"Encrypt\", xrefInfo.encryptRef);\n  }\n\n  newRefs.push({\n    ref: refForXrefTable,\n    data: \"\"\n  });\n  newRefs = newRefs.sort((a, b) => {\n    return a.ref.num - b.ref.num;\n  });\n  const xrefTableData = [[0, 1, 0xffff]];\n  const indexes = [0, 1];\n  let maxOffset = 0;\n\n  for (const {\n    ref,\n    data\n  } of newRefs) {\n    maxOffset = Math.max(maxOffset, baseOffset);\n    xrefTableData.push([1, baseOffset, Math.min(ref.gen, 0xffff)]);\n    baseOffset += data.length;\n    indexes.push(ref.num, 1);\n    buffer.push(data);\n  }\n\n  newXref.set(\"Index\", indexes);\n\n  if (Array.isArray(xrefInfo.fileIds) && xrefInfo.fileIds.length > 0) {\n    const md5 = computeMD5(baseOffset, xrefInfo);\n    newXref.set(\"ID\", [xrefInfo.fileIds[0], md5]);\n  }\n\n  const offsetSize = Math.ceil(Math.log2(maxOffset) / 8);\n  const sizes = [1, offsetSize, 2];\n  const structSize = sizes[0] + sizes[1] + sizes[2];\n  const tableLength = structSize * xrefTableData.length;\n  newXref.set(\"W\", sizes);\n  newXref.set(\"Length\", tableLength);\n  buffer.push(`${refForXrefTable.num} ${refForXrefTable.gen} obj\\n`);\n  writeDict(newXref, buffer, null);\n  buffer.push(\" stream\\n\");\n  const bufferLen = buffer.reduce((a, str) => a + str.length, 0);\n  const footer = `\\nendstream\\nendobj\\nstartxref\\n${baseOffset}\\n%%EOF\\n`;\n  const array = new Uint8Array(originalData.length + bufferLen + tableLength + footer.length);\n  array.set(originalData);\n  let offset = originalData.length;\n\n  for (const str of buffer) {\n    writeString(str, offset, array);\n    offset += str.length;\n  }\n\n  for (const [type, objOffset, gen] of xrefTableData) {\n    offset = writeInt(type, sizes[0], offset, array);\n    offset = writeInt(objOffset, sizes[1], offset, array);\n    offset = writeInt(gen, sizes[2], offset, array);\n  }\n\n  writeString(footer, offset, array);\n  return array;\n}\n\n/***/ }),\n/* 73 */\n/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {\n\n\n\nObject.defineProperty(exports, \"__esModule\", ({\n  value: true\n}));\nexports.calculateSHA256 = exports.calculateMD5 = exports.PDF20 = exports.PDF17 = exports.CipherTransformFactory = exports.ARCFourCipher = exports.AES256Cipher = exports.AES128Cipher = void 0;\nexports.calculateSHA384 = calculateSHA384;\nexports.calculateSHA512 = void 0;\n\nvar _util = __w_pdfjs_require__(2);\n\nvar _primitives = __w_pdfjs_require__(5);\n\nvar _decrypt_stream = __w_pdfjs_require__(74);\n\nclass ARCFourCipher {\n  constructor(key) {\n    this.a = 0;\n    this.b = 0;\n    const s = new Uint8Array(256);\n    const keyLength = key.length;\n\n    for (let i = 0; i < 256; ++i) {\n      s[i] = i;\n    }\n\n    for (let i = 0, j = 0; i < 256; ++i) {\n      const tmp = s[i];\n      j = j + tmp + key[i % keyLength] & 0xff;\n      s[i] = s[j];\n      s[j] = tmp;\n    }\n\n    this.s = s;\n  }\n\n  encryptBlock(data) {\n    let a = this.a,\n        b = this.b;\n    const s = this.s;\n    const n = data.length;\n    const output = new Uint8Array(n);\n\n    for (let i = 0; i < n; ++i) {\n      a = a + 1 & 0xff;\n      const tmp = s[a];\n      b = b + tmp & 0xff;\n      const tmp2 = s[b];\n      s[a] = tmp2;\n      s[b] = tmp;\n      output[i] = data[i] ^ s[tmp + tmp2 & 0xff];\n    }\n\n    this.a = a;\n    this.b = b;\n    return output;\n  }\n\n  decryptBlock(data) {\n    return this.encryptBlock(data);\n  }\n\n  encrypt(data) {\n    return this.encryptBlock(data);\n  }\n\n}\n\nexports.ARCFourCipher = ARCFourCipher;\n\nconst calculateMD5 = function calculateMD5Closure() {\n  const r = new Uint8Array([7, 12, 17, 22, 7, 12, 17, 22, 7, 12, 17, 22, 7, 12, 17, 22, 5, 9, 14, 20, 5, 9, 14, 20, 5, 9, 14, 20, 5, 9, 14, 20, 4, 11, 16, 23, 4, 11, 16, 23, 4, 11, 16, 23, 4, 11, 16, 23, 6, 10, 15, 21, 6, 10, 15, 21, 6, 10, 15, 21, 6, 10, 15, 21]);\n  const k = new Int32Array([-680876936, -389564586, 606105819, -1044525330, -176418897, 1200080426, -1473231341, -45705983, 1770035416, -1958414417, -42063, -1990404162, 1804603682, -40341101, -1502002290, 1236535329, -165796510, -1069501632, 643717713, -373897302, -701558691, 38016083, -660478335, -405537848, 568446438, -1019803690, -187363961, 1163531501, -1444681467, -51403784, 1735328473, -1926607734, -378558, -2022574463, 1839030562, -35309556, -1530992060, 1272893353, -155497632, -1094730640, 681279174, -358537222, -722521979, 76029189, -640364487, -421815835, 530742520, -995338651, -198630844, 1126891415, -1416354905, -57434055, 1700485571, -1894986606, -1051523, -2054922799, 1873313359, -30611744, -1560198380, 1309151649, -145523070, -1120210379, 718787259, -343485551]);\n\n  function hash(data, offset, length) {\n    let h0 = 1732584193,\n        h1 = -271733879,\n        h2 = -1732584194,\n        h3 = 271733878;\n    const paddedLength = length + 72 & ~63;\n    const padded = new Uint8Array(paddedLength);\n    let i, j;\n\n    for (i = 0; i < length; ++i) {\n      padded[i] = data[offset++];\n    }\n\n    padded[i++] = 0x80;\n    const n = paddedLength - 8;\n\n    while (i < n) {\n      padded[i++] = 0;\n    }\n\n    padded[i++] = length << 3 & 0xff;\n    padded[i++] = length >> 5 & 0xff;\n    padded[i++] = length >> 13 & 0xff;\n    padded[i++] = length >> 21 & 0xff;\n    padded[i++] = length >>> 29 & 0xff;\n    padded[i++] = 0;\n    padded[i++] = 0;\n    padded[i++] = 0;\n    const w = new Int32Array(16);\n\n    for (i = 0; i < paddedLength;) {\n      for (j = 0; j < 16; ++j, i += 4) {\n        w[j] = padded[i] | padded[i + 1] << 8 | padded[i + 2] << 16 | padded[i + 3] << 24;\n      }\n\n      let a = h0,\n          b = h1,\n          c = h2,\n          d = h3,\n          f,\n          g;\n\n      for (j = 0; j < 64; ++j) {\n        if (j < 16) {\n          f = b & c | ~b & d;\n          g = j;\n        } else if (j < 32) {\n          f = d & b | ~d & c;\n          g = 5 * j + 1 & 15;\n        } else if (j < 48) {\n          f = b ^ c ^ d;\n          g = 3 * j + 5 & 15;\n        } else {\n          f = c ^ (b | ~d);\n          g = 7 * j & 15;\n        }\n\n        const tmp = d,\n              rotateArg = a + f + k[j] + w[g] | 0,\n              rotate = r[j];\n        d = c;\n        c = b;\n        b = b + (rotateArg << rotate | rotateArg >>> 32 - rotate) | 0;\n        a = tmp;\n      }\n\n      h0 = h0 + a | 0;\n      h1 = h1 + b | 0;\n      h2 = h2 + c | 0;\n      h3 = h3 + d | 0;\n    }\n\n    return new Uint8Array([h0 & 0xFF, h0 >> 8 & 0xFF, h0 >> 16 & 0xFF, h0 >>> 24 & 0xFF, h1 & 0xFF, h1 >> 8 & 0xFF, h1 >> 16 & 0xFF, h1 >>> 24 & 0xFF, h2 & 0xFF, h2 >> 8 & 0xFF, h2 >> 16 & 0xFF, h2 >>> 24 & 0xFF, h3 & 0xFF, h3 >> 8 & 0xFF, h3 >> 16 & 0xFF, h3 >>> 24 & 0xFF]);\n  }\n\n  return hash;\n}();\n\nexports.calculateMD5 = calculateMD5;\n\nclass Word64 {\n  constructor(highInteger, lowInteger) {\n    this.high = highInteger | 0;\n    this.low = lowInteger | 0;\n  }\n\n  and(word) {\n    this.high &= word.high;\n    this.low &= word.low;\n  }\n\n  xor(word) {\n    this.high ^= word.high;\n    this.low ^= word.low;\n  }\n\n  or(word) {\n    this.high |= word.high;\n    this.low |= word.low;\n  }\n\n  shiftRight(places) {\n    if (places >= 32) {\n      this.low = this.high >>> places - 32 | 0;\n      this.high = 0;\n    } else {\n      this.low = this.low >>> places | this.high << 32 - places;\n      this.high = this.high >>> places | 0;\n    }\n  }\n\n  shiftLeft(places) {\n    if (places >= 32) {\n      this.high = this.low << places - 32;\n      this.low = 0;\n    } else {\n      this.high = this.high << places | this.low >>> 32 - places;\n      this.low <<= places;\n    }\n  }\n\n  rotateRight(places) {\n    let low, high;\n\n    if (places & 32) {\n      high = this.low;\n      low = this.high;\n    } else {\n      low = this.low;\n      high = this.high;\n    }\n\n    places &= 31;\n    this.low = low >>> places | high << 32 - places;\n    this.high = high >>> places | low << 32 - places;\n  }\n\n  not() {\n    this.high = ~this.high;\n    this.low = ~this.low;\n  }\n\n  add(word) {\n    const lowAdd = (this.low >>> 0) + (word.low >>> 0);\n    let highAdd = (this.high >>> 0) + (word.high >>> 0);\n\n    if (lowAdd > 0xffffffff) {\n      highAdd += 1;\n    }\n\n    this.low = lowAdd | 0;\n    this.high = highAdd | 0;\n  }\n\n  copyTo(bytes, offset) {\n    bytes[offset] = this.high >>> 24 & 0xff;\n    bytes[offset + 1] = this.high >> 16 & 0xff;\n    bytes[offset + 2] = this.high >> 8 & 0xff;\n    bytes[offset + 3] = this.high & 0xff;\n    bytes[offset + 4] = this.low >>> 24 & 0xff;\n    bytes[offset + 5] = this.low >> 16 & 0xff;\n    bytes[offset + 6] = this.low >> 8 & 0xff;\n    bytes[offset + 7] = this.low & 0xff;\n  }\n\n  assign(word) {\n    this.high = word.high;\n    this.low = word.low;\n  }\n\n}\n\nconst calculateSHA256 = function calculateSHA256Closure() {\n  function rotr(x, n) {\n    return x >>> n | x << 32 - n;\n  }\n\n  function ch(x, y, z) {\n    return x & y ^ ~x & z;\n  }\n\n  function maj(x, y, z) {\n    return x & y ^ x & z ^ y & z;\n  }\n\n  function sigma(x) {\n    return rotr(x, 2) ^ rotr(x, 13) ^ rotr(x, 22);\n  }\n\n  function sigmaPrime(x) {\n    return rotr(x, 6) ^ rotr(x, 11) ^ rotr(x, 25);\n  }\n\n  function littleSigma(x) {\n    return rotr(x, 7) ^ rotr(x, 18) ^ x >>> 3;\n  }\n\n  function littleSigmaPrime(x) {\n    return rotr(x, 17) ^ rotr(x, 19) ^ x >>> 10;\n  }\n\n  const k = [0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5, 0x3956c25b, 0x59f111f1, 0x923f82a4, 0xab1c5ed5, 0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3, 0x72be5d74, 0x80deb1fe, 0x9bdc06a7, 0xc19bf174, 0xe49b69c1, 0xefbe4786, 0x0fc19dc6, 0x240ca1cc, 0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da, 0x983e5152, 0xa831c66d, 0xb00327c8, 0xbf597fc7, 0xc6e00bf3, 0xd5a79147, 0x06ca6351, 0x14292967, 0x27b70a85, 0x2e1b2138, 0x4d2c6dfc, 0x53380d13, 0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85, 0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3, 0xd192e819, 0xd6990624, 0xf40e3585, 0x106aa070, 0x19a4c116, 0x1e376c08, 0x2748774c, 0x34b0bcb5, 0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f, 0x682e6ff3, 0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208, 0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2];\n\n  function hash(data, offset, length) {\n    let h0 = 0x6a09e667,\n        h1 = 0xbb67ae85,\n        h2 = 0x3c6ef372,\n        h3 = 0xa54ff53a,\n        h4 = 0x510e527f,\n        h5 = 0x9b05688c,\n        h6 = 0x1f83d9ab,\n        h7 = 0x5be0cd19;\n    const paddedLength = Math.ceil((length + 9) / 64) * 64;\n    const padded = new Uint8Array(paddedLength);\n    let i, j;\n\n    for (i = 0; i < length; ++i) {\n      padded[i] = data[offset++];\n    }\n\n    padded[i++] = 0x80;\n    const n = paddedLength - 8;\n\n    while (i < n) {\n      padded[i++] = 0;\n    }\n\n    padded[i++] = 0;\n    padded[i++] = 0;\n    padded[i++] = 0;\n    padded[i++] = length >>> 29 & 0xff;\n    padded[i++] = length >> 21 & 0xff;\n    padded[i++] = length >> 13 & 0xff;\n    padded[i++] = length >> 5 & 0xff;\n    padded[i++] = length << 3 & 0xff;\n    const w = new Uint32Array(64);\n\n    for (i = 0; i < paddedLength;) {\n      for (j = 0; j < 16; ++j) {\n        w[j] = padded[i] << 24 | padded[i + 1] << 16 | padded[i + 2] << 8 | padded[i + 3];\n        i += 4;\n      }\n\n      for (j = 16; j < 64; ++j) {\n        w[j] = littleSigmaPrime(w[j - 2]) + w[j - 7] + littleSigma(w[j - 15]) + w[j - 16] | 0;\n      }\n\n      let a = h0,\n          b = h1,\n          c = h2,\n          d = h3,\n          e = h4,\n          f = h5,\n          g = h6,\n          h = h7,\n          t1,\n          t2;\n\n      for (j = 0; j < 64; ++j) {\n        t1 = h + sigmaPrime(e) + ch(e, f, g) + k[j] + w[j];\n        t2 = sigma(a) + maj(a, b, c);\n        h = g;\n        g = f;\n        f = e;\n        e = d + t1 | 0;\n        d = c;\n        c = b;\n        b = a;\n        a = t1 + t2 | 0;\n      }\n\n      h0 = h0 + a | 0;\n      h1 = h1 + b | 0;\n      h2 = h2 + c | 0;\n      h3 = h3 + d | 0;\n      h4 = h4 + e | 0;\n      h5 = h5 + f | 0;\n      h6 = h6 + g | 0;\n      h7 = h7 + h | 0;\n    }\n\n    return new Uint8Array([h0 >> 24 & 0xFF, h0 >> 16 & 0xFF, h0 >> 8 & 0xFF, h0 & 0xFF, h1 >> 24 & 0xFF, h1 >> 16 & 0xFF, h1 >> 8 & 0xFF, h1 & 0xFF, h2 >> 24 & 0xFF, h2 >> 16 & 0xFF, h2 >> 8 & 0xFF, h2 & 0xFF, h3 >> 24 & 0xFF, h3 >> 16 & 0xFF, h3 >> 8 & 0xFF, h3 & 0xFF, h4 >> 24 & 0xFF, h4 >> 16 & 0xFF, h4 >> 8 & 0xFF, h4 & 0xFF, h5 >> 24 & 0xFF, h5 >> 16 & 0xFF, h5 >> 8 & 0xFF, h5 & 0xFF, h6 >> 24 & 0xFF, h6 >> 16 & 0xFF, h6 >> 8 & 0xFF, h6 & 0xFF, h7 >> 24 & 0xFF, h7 >> 16 & 0xFF, h7 >> 8 & 0xFF, h7 & 0xFF]);\n  }\n\n  return hash;\n}();\n\nexports.calculateSHA256 = calculateSHA256;\n\nconst calculateSHA512 = function calculateSHA512Closure() {\n  function ch(result, x, y, z, tmp) {\n    result.assign(x);\n    result.and(y);\n    tmp.assign(x);\n    tmp.not();\n    tmp.and(z);\n    result.xor(tmp);\n  }\n\n  function maj(result, x, y, z, tmp) {\n    result.assign(x);\n    result.and(y);\n    tmp.assign(x);\n    tmp.and(z);\n    result.xor(tmp);\n    tmp.assign(y);\n    tmp.and(z);\n    result.xor(tmp);\n  }\n\n  function sigma(result, x, tmp) {\n    result.assign(x);\n    result.rotateRight(28);\n    tmp.assign(x);\n    tmp.rotateRight(34);\n    result.xor(tmp);\n    tmp.assign(x);\n    tmp.rotateRight(39);\n    result.xor(tmp);\n  }\n\n  function sigmaPrime(result, x, tmp) {\n    result.assign(x);\n    result.rotateRight(14);\n    tmp.assign(x);\n    tmp.rotateRight(18);\n    result.xor(tmp);\n    tmp.assign(x);\n    tmp.rotateRight(41);\n    result.xor(tmp);\n  }\n\n  function littleSigma(result, x, tmp) {\n    result.assign(x);\n    result.rotateRight(1);\n    tmp.assign(x);\n    tmp.rotateRight(8);\n    result.xor(tmp);\n    tmp.assign(x);\n    tmp.shiftRight(7);\n    result.xor(tmp);\n  }\n\n  function littleSigmaPrime(result, x, tmp) {\n    result.assign(x);\n    result.rotateRight(19);\n    tmp.assign(x);\n    tmp.rotateRight(61);\n    result.xor(tmp);\n    tmp.assign(x);\n    tmp.shiftRight(6);\n    result.xor(tmp);\n  }\n\n  const k = [new Word64(0x428a2f98, 0xd728ae22), new Word64(0x71374491, 0x23ef65cd), new Word64(0xb5c0fbcf, 0xec4d3b2f), new Word64(0xe9b5dba5, 0x8189dbbc), new Word64(0x3956c25b, 0xf348b538), new Word64(0x59f111f1, 0xb605d019), new Word64(0x923f82a4, 0xaf194f9b), new Word64(0xab1c5ed5, 0xda6d8118), new Word64(0xd807aa98, 0xa3030242), new Word64(0x12835b01, 0x45706fbe), new Word64(0x243185be, 0x4ee4b28c), new Word64(0x550c7dc3, 0xd5ffb4e2), new Word64(0x72be5d74, 0xf27b896f), new Word64(0x80deb1fe, 0x3b1696b1), new Word64(0x9bdc06a7, 0x25c71235), new Word64(0xc19bf174, 0xcf692694), new Word64(0xe49b69c1, 0x9ef14ad2), new Word64(0xefbe4786, 0x384f25e3), new Word64(0x0fc19dc6, 0x8b8cd5b5), new Word64(0x240ca1cc, 0x77ac9c65), new Word64(0x2de92c6f, 0x592b0275), new Word64(0x4a7484aa, 0x6ea6e483), new Word64(0x5cb0a9dc, 0xbd41fbd4), new Word64(0x76f988da, 0x831153b5), new Word64(0x983e5152, 0xee66dfab), new Word64(0xa831c66d, 0x2db43210), new Word64(0xb00327c8, 0x98fb213f), new Word64(0xbf597fc7, 0xbeef0ee4), new Word64(0xc6e00bf3, 0x3da88fc2), new Word64(0xd5a79147, 0x930aa725), new Word64(0x06ca6351, 0xe003826f), new Word64(0x14292967, 0x0a0e6e70), new Word64(0x27b70a85, 0x46d22ffc), new Word64(0x2e1b2138, 0x5c26c926), new Word64(0x4d2c6dfc, 0x5ac42aed), new Word64(0x53380d13, 0x9d95b3df), new Word64(0x650a7354, 0x8baf63de), new Word64(0x766a0abb, 0x3c77b2a8), new Word64(0x81c2c92e, 0x47edaee6), new Word64(0x92722c85, 0x1482353b), new Word64(0xa2bfe8a1, 0x4cf10364), new Word64(0xa81a664b, 0xbc423001), new Word64(0xc24b8b70, 0xd0f89791), new Word64(0xc76c51a3, 0x0654be30), new Word64(0xd192e819, 0xd6ef5218), new Word64(0xd6990624, 0x5565a910), new Word64(0xf40e3585, 0x5771202a), new Word64(0x106aa070, 0x32bbd1b8), new Word64(0x19a4c116, 0xb8d2d0c8), new Word64(0x1e376c08, 0x5141ab53), new Word64(0x2748774c, 0xdf8eeb99), new Word64(0x34b0bcb5, 0xe19b48a8), new Word64(0x391c0cb3, 0xc5c95a63), new Word64(0x4ed8aa4a, 0xe3418acb), new Word64(0x5b9cca4f, 0x7763e373), new Word64(0x682e6ff3, 0xd6b2b8a3), new Word64(0x748f82ee, 0x5defb2fc), new Word64(0x78a5636f, 0x43172f60), new Word64(0x84c87814, 0xa1f0ab72), new Word64(0x8cc70208, 0x1a6439ec), new Word64(0x90befffa, 0x23631e28), new Word64(0xa4506ceb, 0xde82bde9), new Word64(0xbef9a3f7, 0xb2c67915), new Word64(0xc67178f2, 0xe372532b), new Word64(0xca273ece, 0xea26619c), new Word64(0xd186b8c7, 0x21c0c207), new Word64(0xeada7dd6, 0xcde0eb1e), new Word64(0xf57d4f7f, 0xee6ed178), new Word64(0x06f067aa, 0x72176fba), new Word64(0x0a637dc5, 0xa2c898a6), new Word64(0x113f9804, 0xbef90dae), new Word64(0x1b710b35, 0x131c471b), new Word64(0x28db77f5, 0x23047d84), new Word64(0x32caab7b, 0x40c72493), new Word64(0x3c9ebe0a, 0x15c9bebc), new Word64(0x431d67c4, 0x9c100d4c), new Word64(0x4cc5d4be, 0xcb3e42b6), new Word64(0x597f299c, 0xfc657e2a), new Word64(0x5fcb6fab, 0x3ad6faec), new Word64(0x6c44198c, 0x4a475817)];\n\n  function hash(data, offset, length, mode384 = false) {\n    let h0, h1, h2, h3, h4, h5, h6, h7;\n\n    if (!mode384) {\n      h0 = new Word64(0x6a09e667, 0xf3bcc908);\n      h1 = new Word64(0xbb67ae85, 0x84caa73b);\n      h2 = new Word64(0x3c6ef372, 0xfe94f82b);\n      h3 = new Word64(0xa54ff53a, 0x5f1d36f1);\n      h4 = new Word64(0x510e527f, 0xade682d1);\n      h5 = new Word64(0x9b05688c, 0x2b3e6c1f);\n      h6 = new Word64(0x1f83d9ab, 0xfb41bd6b);\n      h7 = new Word64(0x5be0cd19, 0x137e2179);\n    } else {\n      h0 = new Word64(0xcbbb9d5d, 0xc1059ed8);\n      h1 = new Word64(0x629a292a, 0x367cd507);\n      h2 = new Word64(0x9159015a, 0x3070dd17);\n      h3 = new Word64(0x152fecd8, 0xf70e5939);\n      h4 = new Word64(0x67332667, 0xffc00b31);\n      h5 = new Word64(0x8eb44a87, 0x68581511);\n      h6 = new Word64(0xdb0c2e0d, 0x64f98fa7);\n      h7 = new Word64(0x47b5481d, 0xbefa4fa4);\n    }\n\n    const paddedLength = Math.ceil((length + 17) / 128) * 128;\n    const padded = new Uint8Array(paddedLength);\n    let i, j;\n\n    for (i = 0; i < length; ++i) {\n      padded[i] = data[offset++];\n    }\n\n    padded[i++] = 0x80;\n    const n = paddedLength - 16;\n\n    while (i < n) {\n      padded[i++] = 0;\n    }\n\n    padded[i++] = 0;\n    padded[i++] = 0;\n    padded[i++] = 0;\n    padded[i++] = 0;\n    padded[i++] = 0;\n    padded[i++] = 0;\n    padded[i++] = 0;\n    padded[i++] = 0;\n    padded[i++] = 0;\n    padded[i++] = 0;\n    padded[i++] = 0;\n    padded[i++] = length >>> 29 & 0xff;\n    padded[i++] = length >> 21 & 0xff;\n    padded[i++] = length >> 13 & 0xff;\n    padded[i++] = length >> 5 & 0xff;\n    padded[i++] = length << 3 & 0xff;\n    const w = new Array(80);\n\n    for (i = 0; i < 80; i++) {\n      w[i] = new Word64(0, 0);\n    }\n\n    let a = new Word64(0, 0),\n        b = new Word64(0, 0),\n        c = new Word64(0, 0);\n    let d = new Word64(0, 0),\n        e = new Word64(0, 0),\n        f = new Word64(0, 0);\n    let g = new Word64(0, 0),\n        h = new Word64(0, 0);\n    const t1 = new Word64(0, 0),\n          t2 = new Word64(0, 0);\n    const tmp1 = new Word64(0, 0),\n          tmp2 = new Word64(0, 0);\n    let tmp3;\n\n    for (i = 0; i < paddedLength;) {\n      for (j = 0; j < 16; ++j) {\n        w[j].high = padded[i] << 24 | padded[i + 1] << 16 | padded[i + 2] << 8 | padded[i + 3];\n        w[j].low = padded[i + 4] << 24 | padded[i + 5] << 16 | padded[i + 6] << 8 | padded[i + 7];\n        i += 8;\n      }\n\n      for (j = 16; j < 80; ++j) {\n        tmp3 = w[j];\n        littleSigmaPrime(tmp3, w[j - 2], tmp2);\n        tmp3.add(w[j - 7]);\n        littleSigma(tmp1, w[j - 15], tmp2);\n        tmp3.add(tmp1);\n        tmp3.add(w[j - 16]);\n      }\n\n      a.assign(h0);\n      b.assign(h1);\n      c.assign(h2);\n      d.assign(h3);\n      e.assign(h4);\n      f.assign(h5);\n      g.assign(h6);\n      h.assign(h7);\n\n      for (j = 0; j < 80; ++j) {\n        t1.assign(h);\n        sigmaPrime(tmp1, e, tmp2);\n        t1.add(tmp1);\n        ch(tmp1, e, f, g, tmp2);\n        t1.add(tmp1);\n        t1.add(k[j]);\n        t1.add(w[j]);\n        sigma(t2, a, tmp2);\n        maj(tmp1, a, b, c, tmp2);\n        t2.add(tmp1);\n        tmp3 = h;\n        h = g;\n        g = f;\n        f = e;\n        d.add(t1);\n        e = d;\n        d = c;\n        c = b;\n        b = a;\n        tmp3.assign(t1);\n        tmp3.add(t2);\n        a = tmp3;\n      }\n\n      h0.add(a);\n      h1.add(b);\n      h2.add(c);\n      h3.add(d);\n      h4.add(e);\n      h5.add(f);\n      h6.add(g);\n      h7.add(h);\n    }\n\n    let result;\n\n    if (!mode384) {\n      result = new Uint8Array(64);\n      h0.copyTo(result, 0);\n      h1.copyTo(result, 8);\n      h2.copyTo(result, 16);\n      h3.copyTo(result, 24);\n      h4.copyTo(result, 32);\n      h5.copyTo(result, 40);\n      h6.copyTo(result, 48);\n      h7.copyTo(result, 56);\n    } else {\n      result = new Uint8Array(48);\n      h0.copyTo(result, 0);\n      h1.copyTo(result, 8);\n      h2.copyTo(result, 16);\n      h3.copyTo(result, 24);\n      h4.copyTo(result, 32);\n      h5.copyTo(result, 40);\n    }\n\n    return result;\n  }\n\n  return hash;\n}();\n\nexports.calculateSHA512 = calculateSHA512;\n\nfunction calculateSHA384(data, offset, length) {\n  return calculateSHA512(data, offset, length, true);\n}\n\nclass NullCipher {\n  decryptBlock(data) {\n    return data;\n  }\n\n  encrypt(data) {\n    return data;\n  }\n\n}\n\nclass AESBaseCipher {\n  constructor() {\n    if (this.constructor === AESBaseCipher) {\n      (0, _util.unreachable)(\"Cannot initialize AESBaseCipher.\");\n    }\n\n    this._s = new Uint8Array([0x63, 0x7c, 0x77, 0x7b, 0xf2, 0x6b, 0x6f, 0xc5, 0x30, 0x01, 0x67, 0x2b, 0xfe, 0xd7, 0xab, 0x76, 0xca, 0x82, 0xc9, 0x7d, 0xfa, 0x59, 0x47, 0xf0, 0xad, 0xd4, 0xa2, 0xaf, 0x9c, 0xa4, 0x72, 0xc0, 0xb7, 0xfd, 0x93, 0x26, 0x36, 0x3f, 0xf7, 0xcc, 0x34, 0xa5, 0xe5, 0xf1, 0x71, 0xd8, 0x31, 0x15, 0x04, 0xc7, 0x23, 0xc3, 0x18, 0x96, 0x05, 0x9a, 0x07, 0x12, 0x80, 0xe2, 0xeb, 0x27, 0xb2, 0x75, 0x09, 0x83, 0x2c, 0x1a, 0x1b, 0x6e, 0x5a, 0xa0, 0x52, 0x3b, 0xd6, 0xb3, 0x29, 0xe3, 0x2f, 0x84, 0x53, 0xd1, 0x00, 0xed, 0x20, 0xfc, 0xb1, 0x5b, 0x6a, 0xcb, 0xbe, 0x39, 0x4a, 0x4c, 0x58, 0xcf, 0xd0, 0xef, 0xaa, 0xfb, 0x43, 0x4d, 0x33, 0x85, 0x45, 0xf9, 0x02, 0x7f, 0x50, 0x3c, 0x9f, 0xa8, 0x51, 0xa3, 0x40, 0x8f, 0x92, 0x9d, 0x38, 0xf5, 0xbc, 0xb6, 0xda, 0x21, 0x10, 0xff, 0xf3, 0xd2, 0xcd, 0x0c, 0x13, 0xec, 0x5f, 0x97, 0x44, 0x17, 0xc4, 0xa7, 0x7e, 0x3d, 0x64, 0x5d, 0x19, 0x73, 0x60, 0x81, 0x4f, 0xdc, 0x22, 0x2a, 0x90, 0x88, 0x46, 0xee, 0xb8, 0x14, 0xde, 0x5e, 0x0b, 0xdb, 0xe0, 0x32, 0x3a, 0x0a, 0x49, 0x06, 0x24, 0x5c, 0xc2, 0xd3, 0xac, 0x62, 0x91, 0x95, 0xe4, 0x79, 0xe7, 0xc8, 0x37, 0x6d, 0x8d, 0xd5, 0x4e, 0xa9, 0x6c, 0x56, 0xf4, 0xea, 0x65, 0x7a, 0xae, 0x08, 0xba, 0x78, 0x25, 0x2e, 0x1c, 0xa6, 0xb4, 0xc6, 0xe8, 0xdd, 0x74, 0x1f, 0x4b, 0xbd, 0x8b, 0x8a, 0x70, 0x3e, 0xb5, 0x66, 0x48, 0x03, 0xf6, 0x0e, 0x61, 0x35, 0x57, 0xb9, 0x86, 0xc1, 0x1d, 0x9e, 0xe1, 0xf8, 0x98, 0x11, 0x69, 0xd9, 0x8e, 0x94, 0x9b, 0x1e, 0x87, 0xe9, 0xce, 0x55, 0x28, 0xdf, 0x8c, 0xa1, 0x89, 0x0d, 0xbf, 0xe6, 0x42, 0x68, 0x41, 0x99, 0x2d, 0x0f, 0xb0, 0x54, 0xbb, 0x16]);\n    this._inv_s = new Uint8Array([0x52, 0x09, 0x6a, 0xd5, 0x30, 0x36, 0xa5, 0x38, 0xbf, 0x40, 0xa3, 0x9e, 0x81, 0xf3, 0xd7, 0xfb, 0x7c, 0xe3, 0x39, 0x82, 0x9b, 0x2f, 0xff, 0x87, 0x34, 0x8e, 0x43, 0x44, 0xc4, 0xde, 0xe9, 0xcb, 0x54, 0x7b, 0x94, 0x32, 0xa6, 0xc2, 0x23, 0x3d, 0xee, 0x4c, 0x95, 0x0b, 0x42, 0xfa, 0xc3, 0x4e, 0x08, 0x2e, 0xa1, 0x66, 0x28, 0xd9, 0x24, 0xb2, 0x76, 0x5b, 0xa2, 0x49, 0x6d, 0x8b, 0xd1, 0x25, 0x72, 0xf8, 0xf6, 0x64, 0x86, 0x68, 0x98, 0x16, 0xd4, 0xa4, 0x5c, 0xcc, 0x5d, 0x65, 0xb6, 0x92, 0x6c, 0x70, 0x48, 0x50, 0xfd, 0xed, 0xb9, 0xda, 0x5e, 0x15, 0x46, 0x57, 0xa7, 0x8d, 0x9d, 0x84, 0x90, 0xd8, 0xab, 0x00, 0x8c, 0xbc, 0xd3, 0x0a, 0xf7, 0xe4, 0x58, 0x05, 0xb8, 0xb3, 0x45, 0x06, 0xd0, 0x2c, 0x1e, 0x8f, 0xca, 0x3f, 0x0f, 0x02, 0xc1, 0xaf, 0xbd, 0x03, 0x01, 0x13, 0x8a, 0x6b, 0x3a, 0x91, 0x11, 0x41, 0x4f, 0x67, 0xdc, 0xea, 0x97, 0xf2, 0xcf, 0xce, 0xf0, 0xb4, 0xe6, 0x73, 0x96, 0xac, 0x74, 0x22, 0xe7, 0xad, 0x35, 0x85, 0xe2, 0xf9, 0x37, 0xe8, 0x1c, 0x75, 0xdf, 0x6e, 0x47, 0xf1, 0x1a, 0x71, 0x1d, 0x29, 0xc5, 0x89, 0x6f, 0xb7, 0x62, 0x0e, 0xaa, 0x18, 0xbe, 0x1b, 0xfc, 0x56, 0x3e, 0x4b, 0xc6, 0xd2, 0x79, 0x20, 0x9a, 0xdb, 0xc0, 0xfe, 0x78, 0xcd, 0x5a, 0xf4, 0x1f, 0xdd, 0xa8, 0x33, 0x88, 0x07, 0xc7, 0x31, 0xb1, 0x12, 0x10, 0x59, 0x27, 0x80, 0xec, 0x5f, 0x60, 0x51, 0x7f, 0xa9, 0x19, 0xb5, 0x4a, 0x0d, 0x2d, 0xe5, 0x7a, 0x9f, 0x93, 0xc9, 0x9c, 0xef, 0xa0, 0xe0, 0x3b, 0x4d, 0xae, 0x2a, 0xf5, 0xb0, 0xc8, 0xeb, 0xbb, 0x3c, 0x83, 0x53, 0x99, 0x61, 0x17, 0x2b, 0x04, 0x7e, 0xba, 0x77, 0xd6, 0x26, 0xe1, 0x69, 0x14, 0x63, 0x55, 0x21, 0x0c, 0x7d]);\n    this._mix = new Uint32Array([0x00000000, 0x0e090d0b, 0x1c121a16, 0x121b171d, 0x3824342c, 0x362d3927, 0x24362e3a, 0x2a3f2331, 0x70486858, 0x7e416553, 0x6c5a724e, 0x62537f45, 0x486c5c74, 0x4665517f, 0x547e4662, 0x5a774b69, 0xe090d0b0, 0xee99ddbb, 0xfc82caa6, 0xf28bc7ad, 0xd8b4e49c, 0xd6bde997, 0xc4a6fe8a, 0xcaaff381, 0x90d8b8e8, 0x9ed1b5e3, 0x8ccaa2fe, 0x82c3aff5, 0xa8fc8cc4, 0xa6f581cf, 0xb4ee96d2, 0xbae79bd9, 0xdb3bbb7b, 0xd532b670, 0xc729a16d, 0xc920ac66, 0xe31f8f57, 0xed16825c, 0xff0d9541, 0xf104984a, 0xab73d323, 0xa57ade28, 0xb761c935, 0xb968c43e, 0x9357e70f, 0x9d5eea04, 0x8f45fd19, 0x814cf012, 0x3bab6bcb, 0x35a266c0, 0x27b971dd, 0x29b07cd6, 0x038f5fe7, 0x0d8652ec, 0x1f9d45f1, 0x119448fa, 0x4be30393, 0x45ea0e98, 0x57f11985, 0x59f8148e, 0x73c737bf, 0x7dce3ab4, 0x6fd52da9, 0x61dc20a2, 0xad766df6, 0xa37f60fd, 0xb16477e0, 0xbf6d7aeb, 0x955259da, 0x9b5b54d1, 0x894043cc, 0x87494ec7, 0xdd3e05ae, 0xd33708a5, 0xc12c1fb8, 0xcf2512b3, 0xe51a3182, 0xeb133c89, 0xf9082b94, 0xf701269f, 0x4de6bd46, 0x43efb04d, 0x51f4a750, 0x5ffdaa5b, 0x75c2896a, 0x7bcb8461, 0x69d0937c, 0x67d99e77, 0x3daed51e, 0x33a7d815, 0x21bccf08, 0x2fb5c203, 0x058ae132, 0x0b83ec39, 0x1998fb24, 0x1791f62f, 0x764dd68d, 0x7844db86, 0x6a5fcc9b, 0x6456c190, 0x4e69e2a1, 0x4060efaa, 0x527bf8b7, 0x5c72f5bc, 0x0605bed5, 0x080cb3de, 0x1a17a4c3, 0x141ea9c8, 0x3e218af9, 0x302887f2, 0x223390ef, 0x2c3a9de4, 0x96dd063d, 0x98d40b36, 0x8acf1c2b, 0x84c61120, 0xaef93211, 0xa0f03f1a, 0xb2eb2807, 0xbce2250c, 0xe6956e65, 0xe89c636e, 0xfa877473, 0xf48e7978, 0xdeb15a49, 0xd0b85742, 0xc2a3405f, 0xccaa4d54, 0x41ecdaf7, 0x4fe5d7fc, 0x5dfec0e1, 0x53f7cdea, 0x79c8eedb, 0x77c1e3d0, 0x65daf4cd, 0x6bd3f9c6, 0x31a4b2af, 0x3fadbfa4, 0x2db6a8b9, 0x23bfa5b2, 0x09808683, 0x07898b88, 0x15929c95, 0x1b9b919e, 0xa17c0a47, 0xaf75074c, 0xbd6e1051, 0xb3671d5a, 0x99583e6b, 0x97513360, 0x854a247d, 0x8b432976, 0xd134621f, 0xdf3d6f14, 0xcd267809, 0xc32f7502, 0xe9105633, 0xe7195b38, 0xf5024c25, 0xfb0b412e, 0x9ad7618c, 0x94de6c87, 0x86c57b9a, 0x88cc7691, 0xa2f355a0, 0xacfa58ab, 0xbee14fb6, 0xb0e842bd, 0xea9f09d4, 0xe49604df, 0xf68d13c2, 0xf8841ec9, 0xd2bb3df8, 0xdcb230f3, 0xcea927ee, 0xc0a02ae5, 0x7a47b13c, 0x744ebc37, 0x6655ab2a, 0x685ca621, 0x42638510, 0x4c6a881b, 0x5e719f06, 0x5078920d, 0x0a0fd964, 0x0406d46f, 0x161dc372, 0x1814ce79, 0x322bed48, 0x3c22e043, 0x2e39f75e, 0x2030fa55, 0xec9ab701, 0xe293ba0a, 0xf088ad17, 0xfe81a01c, 0xd4be832d, 0xdab78e26, 0xc8ac993b, 0xc6a59430, 0x9cd2df59, 0x92dbd252, 0x80c0c54f, 0x8ec9c844, 0xa4f6eb75, 0xaaffe67e, 0xb8e4f163, 0xb6edfc68, 0x0c0a67b1, 0x02036aba, 0x10187da7, 0x1e1170ac, 0x342e539d, 0x3a275e96, 0x283c498b, 0x26354480, 0x7c420fe9, 0x724b02e2, 0x605015ff, 0x6e5918f4, 0x44663bc5, 0x4a6f36ce, 0x587421d3, 0x567d2cd8, 0x37a10c7a, 0x39a80171, 0x2bb3166c, 0x25ba1b67, 0x0f853856, 0x018c355d, 0x13972240, 0x1d9e2f4b, 0x47e96422, 0x49e06929, 0x5bfb7e34, 0x55f2733f, 0x7fcd500e, 0x71c45d05, 0x63df4a18, 0x6dd64713, 0xd731dcca, 0xd938d1c1, 0xcb23c6dc, 0xc52acbd7, 0xef15e8e6, 0xe11ce5ed, 0xf307f2f0, 0xfd0efffb, 0xa779b492, 0xa970b999, 0xbb6bae84, 0xb562a38f, 0x9f5d80be, 0x91548db5, 0x834f9aa8, 0x8d4697a3]);\n    this._mixCol = new Uint8Array(256);\n\n    for (let i = 0; i < 256; i++) {\n      if (i < 128) {\n        this._mixCol[i] = i << 1;\n      } else {\n        this._mixCol[i] = i << 1 ^ 0x1b;\n      }\n    }\n\n    this.buffer = new Uint8Array(16);\n    this.bufferPosition = 0;\n  }\n\n  _expandKey(cipherKey) {\n    (0, _util.unreachable)(\"Cannot call `_expandKey` on the base class\");\n  }\n\n  _decrypt(input, key) {\n    let t, u, v;\n    const state = new Uint8Array(16);\n    state.set(input);\n\n    for (let j = 0, k = this._keySize; j < 16; ++j, ++k) {\n      state[j] ^= key[k];\n    }\n\n    for (let i = this._cyclesOfRepetition - 1; i >= 1; --i) {\n      t = state[13];\n      state[13] = state[9];\n      state[9] = state[5];\n      state[5] = state[1];\n      state[1] = t;\n      t = state[14];\n      u = state[10];\n      state[14] = state[6];\n      state[10] = state[2];\n      state[6] = t;\n      state[2] = u;\n      t = state[15];\n      u = state[11];\n      v = state[7];\n      state[15] = state[3];\n      state[11] = t;\n      state[7] = u;\n      state[3] = v;\n\n      for (let j = 0; j < 16; ++j) {\n        state[j] = this._inv_s[state[j]];\n      }\n\n      for (let j = 0, k = i * 16; j < 16; ++j, ++k) {\n        state[j] ^= key[k];\n      }\n\n      for (let j = 0; j < 16; j += 4) {\n        const s0 = this._mix[state[j]];\n        const s1 = this._mix[state[j + 1]];\n        const s2 = this._mix[state[j + 2]];\n        const s3 = this._mix[state[j + 3]];\n        t = s0 ^ s1 >>> 8 ^ s1 << 24 ^ s2 >>> 16 ^ s2 << 16 ^ s3 >>> 24 ^ s3 << 8;\n        state[j] = t >>> 24 & 0xff;\n        state[j + 1] = t >> 16 & 0xff;\n        state[j + 2] = t >> 8 & 0xff;\n        state[j + 3] = t & 0xff;\n      }\n    }\n\n    t = state[13];\n    state[13] = state[9];\n    state[9] = state[5];\n    state[5] = state[1];\n    state[1] = t;\n    t = state[14];\n    u = state[10];\n    state[14] = state[6];\n    state[10] = state[2];\n    state[6] = t;\n    state[2] = u;\n    t = state[15];\n    u = state[11];\n    v = state[7];\n    state[15] = state[3];\n    state[11] = t;\n    state[7] = u;\n    state[3] = v;\n\n    for (let j = 0; j < 16; ++j) {\n      state[j] = this._inv_s[state[j]];\n      state[j] ^= key[j];\n    }\n\n    return state;\n  }\n\n  _encrypt(input, key) {\n    const s = this._s;\n    let t, u, v;\n    const state = new Uint8Array(16);\n    state.set(input);\n\n    for (let j = 0; j < 16; ++j) {\n      state[j] ^= key[j];\n    }\n\n    for (let i = 1; i < this._cyclesOfRepetition; i++) {\n      for (let j = 0; j < 16; ++j) {\n        state[j] = s[state[j]];\n      }\n\n      v = state[1];\n      state[1] = state[5];\n      state[5] = state[9];\n      state[9] = state[13];\n      state[13] = v;\n      v = state[2];\n      u = state[6];\n      state[2] = state[10];\n      state[6] = state[14];\n      state[10] = v;\n      state[14] = u;\n      v = state[3];\n      u = state[7];\n      t = state[11];\n      state[3] = state[15];\n      state[7] = v;\n      state[11] = u;\n      state[15] = t;\n\n      for (let j = 0; j < 16; j += 4) {\n        const s0 = state[j + 0];\n        const s1 = state[j + 1];\n        const s2 = state[j + 2];\n        const s3 = state[j + 3];\n        t = s0 ^ s1 ^ s2 ^ s3;\n        state[j + 0] ^= t ^ this._mixCol[s0 ^ s1];\n        state[j + 1] ^= t ^ this._mixCol[s1 ^ s2];\n        state[j + 2] ^= t ^ this._mixCol[s2 ^ s3];\n        state[j + 3] ^= t ^ this._mixCol[s3 ^ s0];\n      }\n\n      for (let j = 0, k = i * 16; j < 16; ++j, ++k) {\n        state[j] ^= key[k];\n      }\n    }\n\n    for (let j = 0; j < 16; ++j) {\n      state[j] = s[state[j]];\n    }\n\n    v = state[1];\n    state[1] = state[5];\n    state[5] = state[9];\n    state[9] = state[13];\n    state[13] = v;\n    v = state[2];\n    u = state[6];\n    state[2] = state[10];\n    state[6] = state[14];\n    state[10] = v;\n    state[14] = u;\n    v = state[3];\n    u = state[7];\n    t = state[11];\n    state[3] = state[15];\n    state[7] = v;\n    state[11] = u;\n    state[15] = t;\n\n    for (let j = 0, k = this._keySize; j < 16; ++j, ++k) {\n      state[j] ^= key[k];\n    }\n\n    return state;\n  }\n\n  _decryptBlock2(data, finalize) {\n    const sourceLength = data.length;\n    let buffer = this.buffer,\n        bufferLength = this.bufferPosition;\n    const result = [];\n    let iv = this.iv;\n\n    for (let i = 0; i < sourceLength; ++i) {\n      buffer[bufferLength] = data[i];\n      ++bufferLength;\n\n      if (bufferLength < 16) {\n        continue;\n      }\n\n      const plain = this._decrypt(buffer, this._key);\n\n      for (let j = 0; j < 16; ++j) {\n        plain[j] ^= iv[j];\n      }\n\n      iv = buffer;\n      result.push(plain);\n      buffer = new Uint8Array(16);\n      bufferLength = 0;\n    }\n\n    this.buffer = buffer;\n    this.bufferLength = bufferLength;\n    this.iv = iv;\n\n    if (result.length === 0) {\n      return new Uint8Array(0);\n    }\n\n    let outputLength = 16 * result.length;\n\n    if (finalize) {\n      const lastBlock = result[result.length - 1];\n      let psLen = lastBlock[15];\n\n      if (psLen <= 16) {\n        for (let i = 15, ii = 16 - psLen; i >= ii; --i) {\n          if (lastBlock[i] !== psLen) {\n            psLen = 0;\n            break;\n          }\n        }\n\n        outputLength -= psLen;\n        result[result.length - 1] = lastBlock.subarray(0, 16 - psLen);\n      }\n    }\n\n    const output = new Uint8Array(outputLength);\n\n    for (let i = 0, j = 0, ii = result.length; i < ii; ++i, j += 16) {\n      output.set(result[i], j);\n    }\n\n    return output;\n  }\n\n  decryptBlock(data, finalize, iv = null) {\n    const sourceLength = data.length;\n    const buffer = this.buffer;\n    let bufferLength = this.bufferPosition;\n\n    if (iv) {\n      this.iv = iv;\n    } else {\n      for (let i = 0; bufferLength < 16 && i < sourceLength; ++i, ++bufferLength) {\n        buffer[bufferLength] = data[i];\n      }\n\n      if (bufferLength < 16) {\n        this.bufferLength = bufferLength;\n        return new Uint8Array(0);\n      }\n\n      this.iv = buffer;\n      data = data.subarray(16);\n    }\n\n    this.buffer = new Uint8Array(16);\n    this.bufferLength = 0;\n    this.decryptBlock = this._decryptBlock2;\n    return this.decryptBlock(data, finalize);\n  }\n\n  encrypt(data, iv) {\n    const sourceLength = data.length;\n    let buffer = this.buffer,\n        bufferLength = this.bufferPosition;\n    const result = [];\n\n    if (!iv) {\n      iv = new Uint8Array(16);\n    }\n\n    for (let i = 0; i < sourceLength; ++i) {\n      buffer[bufferLength] = data[i];\n      ++bufferLength;\n\n      if (bufferLength < 16) {\n        continue;\n      }\n\n      for (let j = 0; j < 16; ++j) {\n        buffer[j] ^= iv[j];\n      }\n\n      const cipher = this._encrypt(buffer, this._key);\n\n      iv = cipher;\n      result.push(cipher);\n      buffer = new Uint8Array(16);\n      bufferLength = 0;\n    }\n\n    this.buffer = buffer;\n    this.bufferLength = bufferLength;\n    this.iv = iv;\n\n    if (result.length === 0) {\n      return new Uint8Array(0);\n    }\n\n    const outputLength = 16 * result.length;\n    const output = new Uint8Array(outputLength);\n\n    for (let i = 0, j = 0, ii = result.length; i < ii; ++i, j += 16) {\n      output.set(result[i], j);\n    }\n\n    return output;\n  }\n\n}\n\nclass AES128Cipher extends AESBaseCipher {\n  constructor(key) {\n    super();\n    this._cyclesOfRepetition = 10;\n    this._keySize = 160;\n    this._rcon = new Uint8Array([0x8d, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x1b, 0x36, 0x6c, 0xd8, 0xab, 0x4d, 0x9a, 0x2f, 0x5e, 0xbc, 0x63, 0xc6, 0x97, 0x35, 0x6a, 0xd4, 0xb3, 0x7d, 0xfa, 0xef, 0xc5, 0x91, 0x39, 0x72, 0xe4, 0xd3, 0xbd, 0x61, 0xc2, 0x9f, 0x25, 0x4a, 0x94, 0x33, 0x66, 0xcc, 0x83, 0x1d, 0x3a, 0x74, 0xe8, 0xcb, 0x8d, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x1b, 0x36, 0x6c, 0xd8, 0xab, 0x4d, 0x9a, 0x2f, 0x5e, 0xbc, 0x63, 0xc6, 0x97, 0x35, 0x6a, 0xd4, 0xb3, 0x7d, 0xfa, 0xef, 0xc5, 0x91, 0x39, 0x72, 0xe4, 0xd3, 0xbd, 0x61, 0xc2, 0x9f, 0x25, 0x4a, 0x94, 0x33, 0x66, 0xcc, 0x83, 0x1d, 0x3a, 0x74, 0xe8, 0xcb, 0x8d, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x1b, 0x36, 0x6c, 0xd8, 0xab, 0x4d, 0x9a, 0x2f, 0x5e, 0xbc, 0x63, 0xc6, 0x97, 0x35, 0x6a, 0xd4, 0xb3, 0x7d, 0xfa, 0xef, 0xc5, 0x91, 0x39, 0x72, 0xe4, 0xd3, 0xbd, 0x61, 0xc2, 0x9f, 0x25, 0x4a, 0x94, 0x33, 0x66, 0xcc, 0x83, 0x1d, 0x3a, 0x74, 0xe8, 0xcb, 0x8d, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x1b, 0x36, 0x6c, 0xd8, 0xab, 0x4d, 0x9a, 0x2f, 0x5e, 0xbc, 0x63, 0xc6, 0x97, 0x35, 0x6a, 0xd4, 0xb3, 0x7d, 0xfa, 0xef, 0xc5, 0x91, 0x39, 0x72, 0xe4, 0xd3, 0xbd, 0x61, 0xc2, 0x9f, 0x25, 0x4a, 0x94, 0x33, 0x66, 0xcc, 0x83, 0x1d, 0x3a, 0x74, 0xe8, 0xcb, 0x8d, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x1b, 0x36, 0x6c, 0xd8, 0xab, 0x4d, 0x9a, 0x2f, 0x5e, 0xbc, 0x63, 0xc6, 0x97, 0x35, 0x6a, 0xd4, 0xb3, 0x7d, 0xfa, 0xef, 0xc5, 0x91, 0x39, 0x72, 0xe4, 0xd3, 0xbd, 0x61, 0xc2, 0x9f, 0x25, 0x4a, 0x94, 0x33, 0x66, 0xcc, 0x83, 0x1d, 0x3a, 0x74, 0xe8, 0xcb, 0x8d]);\n    this._key = this._expandKey(key);\n  }\n\n  _expandKey(cipherKey) {\n    const b = 176;\n    const s = this._s;\n    const rcon = this._rcon;\n    const result = new Uint8Array(b);\n    result.set(cipherKey);\n\n    for (let j = 16, i = 1; j < b; ++i) {\n      let t1 = result[j - 3];\n      let t2 = result[j - 2];\n      let t3 = result[j - 1];\n      let t4 = result[j - 4];\n      t1 = s[t1];\n      t2 = s[t2];\n      t3 = s[t3];\n      t4 = s[t4];\n      t1 ^= rcon[i];\n\n      for (let n = 0; n < 4; ++n) {\n        result[j] = t1 ^= result[j - 16];\n        j++;\n        result[j] = t2 ^= result[j - 16];\n        j++;\n        result[j] = t3 ^= result[j - 16];\n        j++;\n        result[j] = t4 ^= result[j - 16];\n        j++;\n      }\n    }\n\n    return result;\n  }\n\n}\n\nexports.AES128Cipher = AES128Cipher;\n\nclass AES256Cipher extends AESBaseCipher {\n  constructor(key) {\n    super();\n    this._cyclesOfRepetition = 14;\n    this._keySize = 224;\n    this._key = this._expandKey(key);\n  }\n\n  _expandKey(cipherKey) {\n    const b = 240;\n    const s = this._s;\n    const result = new Uint8Array(b);\n    result.set(cipherKey);\n    let r = 1;\n    let t1, t2, t3, t4;\n\n    for (let j = 32, i = 1; j < b; ++i) {\n      if (j % 32 === 16) {\n        t1 = s[t1];\n        t2 = s[t2];\n        t3 = s[t3];\n        t4 = s[t4];\n      } else if (j % 32 === 0) {\n        t1 = result[j - 3];\n        t2 = result[j - 2];\n        t3 = result[j - 1];\n        t4 = result[j - 4];\n        t1 = s[t1];\n        t2 = s[t2];\n        t3 = s[t3];\n        t4 = s[t4];\n        t1 ^= r;\n\n        if ((r <<= 1) >= 256) {\n          r = (r ^ 0x1b) & 0xff;\n        }\n      }\n\n      for (let n = 0; n < 4; ++n) {\n        result[j] = t1 ^= result[j - 32];\n        j++;\n        result[j] = t2 ^= result[j - 32];\n        j++;\n        result[j] = t3 ^= result[j - 32];\n        j++;\n        result[j] = t4 ^= result[j - 32];\n        j++;\n      }\n    }\n\n    return result;\n  }\n\n}\n\nexports.AES256Cipher = AES256Cipher;\n\nclass PDF17 {\n  checkOwnerPassword(password, ownerValidationSalt, userBytes, ownerPassword) {\n    const hashData = new Uint8Array(password.length + 56);\n    hashData.set(password, 0);\n    hashData.set(ownerValidationSalt, password.length);\n    hashData.set(userBytes, password.length + ownerValidationSalt.length);\n    const result = calculateSHA256(hashData, 0, hashData.length);\n    return (0, _util.isArrayEqual)(result, ownerPassword);\n  }\n\n  checkUserPassword(password, userValidationSalt, userPassword) {\n    const hashData = new Uint8Array(password.length + 8);\n    hashData.set(password, 0);\n    hashData.set(userValidationSalt, password.length);\n    const result = calculateSHA256(hashData, 0, hashData.length);\n    return (0, _util.isArrayEqual)(result, userPassword);\n  }\n\n  getOwnerKey(password, ownerKeySalt, userBytes, ownerEncryption) {\n    const hashData = new Uint8Array(password.length + 56);\n    hashData.set(password, 0);\n    hashData.set(ownerKeySalt, password.length);\n    hashData.set(userBytes, password.length + ownerKeySalt.length);\n    const key = calculateSHA256(hashData, 0, hashData.length);\n    const cipher = new AES256Cipher(key);\n    return cipher.decryptBlock(ownerEncryption, false, new Uint8Array(16));\n  }\n\n  getUserKey(password, userKeySalt, userEncryption) {\n    const hashData = new Uint8Array(password.length + 8);\n    hashData.set(password, 0);\n    hashData.set(userKeySalt, password.length);\n    const key = calculateSHA256(hashData, 0, hashData.length);\n    const cipher = new AES256Cipher(key);\n    return cipher.decryptBlock(userEncryption, false, new Uint8Array(16));\n  }\n\n}\n\nexports.PDF17 = PDF17;\n\nconst PDF20 = function PDF20Closure() {\n  function calculatePDF20Hash(password, input, userBytes) {\n    let k = calculateSHA256(input, 0, input.length).subarray(0, 32);\n    let e = [0];\n    let i = 0;\n\n    while (i < 64 || e[e.length - 1] > i - 32) {\n      const combinedLength = password.length + k.length + userBytes.length,\n            combinedArray = new Uint8Array(combinedLength);\n      let writeOffset = 0;\n      combinedArray.set(password, writeOffset);\n      writeOffset += password.length;\n      combinedArray.set(k, writeOffset);\n      writeOffset += k.length;\n      combinedArray.set(userBytes, writeOffset);\n      const k1 = new Uint8Array(combinedLength * 64);\n\n      for (let j = 0, pos = 0; j < 64; j++, pos += combinedLength) {\n        k1.set(combinedArray, pos);\n      }\n\n      const cipher = new AES128Cipher(k.subarray(0, 16));\n      e = cipher.encrypt(k1, k.subarray(16, 32));\n      let remainder = 0;\n\n      for (let z = 0; z < 16; z++) {\n        remainder *= 256 % 3;\n        remainder %= 3;\n        remainder += (e[z] >>> 0) % 3;\n        remainder %= 3;\n      }\n\n      if (remainder === 0) {\n        k = calculateSHA256(e, 0, e.length);\n      } else if (remainder === 1) {\n        k = calculateSHA384(e, 0, e.length);\n      } else if (remainder === 2) {\n        k = calculateSHA512(e, 0, e.length);\n      }\n\n      i++;\n    }\n\n    return k.subarray(0, 32);\n  }\n\n  class PDF20 {\n    hash(password, concatBytes, userBytes) {\n      return calculatePDF20Hash(password, concatBytes, userBytes);\n    }\n\n    checkOwnerPassword(password, ownerValidationSalt, userBytes, ownerPassword) {\n      const hashData = new Uint8Array(password.length + 56);\n      hashData.set(password, 0);\n      hashData.set(ownerValidationSalt, password.length);\n      hashData.set(userBytes, password.length + ownerValidationSalt.length);\n      const result = calculatePDF20Hash(password, hashData, userBytes);\n      return (0, _util.isArrayEqual)(result, ownerPassword);\n    }\n\n    checkUserPassword(password, userValidationSalt, userPassword) {\n      const hashData = new Uint8Array(password.length + 8);\n      hashData.set(password, 0);\n      hashData.set(userValidationSalt, password.length);\n      const result = calculatePDF20Hash(password, hashData, []);\n      return (0, _util.isArrayEqual)(result, userPassword);\n    }\n\n    getOwnerKey(password, ownerKeySalt, userBytes, ownerEncryption) {\n      const hashData = new Uint8Array(password.length + 56);\n      hashData.set(password, 0);\n      hashData.set(ownerKeySalt, password.length);\n      hashData.set(userBytes, password.length + ownerKeySalt.length);\n      const key = calculatePDF20Hash(password, hashData, userBytes);\n      const cipher = new AES256Cipher(key);\n      return cipher.decryptBlock(ownerEncryption, false, new Uint8Array(16));\n    }\n\n    getUserKey(password, userKeySalt, userEncryption) {\n      const hashData = new Uint8Array(password.length + 8);\n      hashData.set(password, 0);\n      hashData.set(userKeySalt, password.length);\n      const key = calculatePDF20Hash(password, hashData, []);\n      const cipher = new AES256Cipher(key);\n      return cipher.decryptBlock(userEncryption, false, new Uint8Array(16));\n    }\n\n  }\n\n  return PDF20;\n}();\n\nexports.PDF20 = PDF20;\n\nclass CipherTransform {\n  constructor(stringCipherConstructor, streamCipherConstructor) {\n    this.StringCipherConstructor = stringCipherConstructor;\n    this.StreamCipherConstructor = streamCipherConstructor;\n  }\n\n  createStream(stream, length) {\n    const cipher = new this.StreamCipherConstructor();\n    return new _decrypt_stream.DecryptStream(stream, length, function cipherTransformDecryptStream(data, finalize) {\n      return cipher.decryptBlock(data, finalize);\n    });\n  }\n\n  decryptString(s) {\n    const cipher = new this.StringCipherConstructor();\n    let data = (0, _util.stringToBytes)(s);\n    data = cipher.decryptBlock(data, true);\n    return (0, _util.bytesToString)(data);\n  }\n\n  encryptString(s) {\n    const cipher = new this.StringCipherConstructor();\n\n    if (cipher instanceof AESBaseCipher) {\n      const strLen = s.length;\n      const pad = 16 - strLen % 16;\n      s += String.fromCharCode(pad).repeat(pad);\n      const iv = new Uint8Array(16);\n\n      if (typeof crypto !== \"undefined\") {\n        crypto.getRandomValues(iv);\n      } else {\n        for (let i = 0; i < 16; i++) {\n          iv[i] = Math.floor(256 * Math.random());\n        }\n      }\n\n      let data = (0, _util.stringToBytes)(s);\n      data = cipher.encrypt(data, iv);\n      const buf = new Uint8Array(16 + data.length);\n      buf.set(iv);\n      buf.set(data, 16);\n      return (0, _util.bytesToString)(buf);\n    }\n\n    let data = (0, _util.stringToBytes)(s);\n    data = cipher.encrypt(data);\n    return (0, _util.bytesToString)(data);\n  }\n\n}\n\nconst CipherTransformFactory = function CipherTransformFactoryClosure() {\n  const defaultPasswordBytes = new Uint8Array([0x28, 0xbf, 0x4e, 0x5e, 0x4e, 0x75, 0x8a, 0x41, 0x64, 0x00, 0x4e, 0x56, 0xff, 0xfa, 0x01, 0x08, 0x2e, 0x2e, 0x00, 0xb6, 0xd0, 0x68, 0x3e, 0x80, 0x2f, 0x0c, 0xa9, 0xfe, 0x64, 0x53, 0x69, 0x7a]);\n\n  function createEncryptionKey20(revision, password, ownerPassword, ownerValidationSalt, ownerKeySalt, uBytes, userPassword, userValidationSalt, userKeySalt, ownerEncryption, userEncryption, perms) {\n    if (password) {\n      const passwordLength = Math.min(127, password.length);\n      password = password.subarray(0, passwordLength);\n    } else {\n      password = [];\n    }\n\n    let pdfAlgorithm;\n\n    if (revision === 6) {\n      pdfAlgorithm = new PDF20();\n    } else {\n      pdfAlgorithm = new PDF17();\n    }\n\n    if (pdfAlgorithm.checkUserPassword(password, userValidationSalt, userPassword)) {\n      return pdfAlgorithm.getUserKey(password, userKeySalt, userEncryption);\n    } else if (password.length && pdfAlgorithm.checkOwnerPassword(password, ownerValidationSalt, uBytes, ownerPassword)) {\n      return pdfAlgorithm.getOwnerKey(password, ownerKeySalt, uBytes, ownerEncryption);\n    }\n\n    return null;\n  }\n\n  function prepareKeyData(fileId, password, ownerPassword, userPassword, flags, revision, keyLength, encryptMetadata) {\n    const hashDataSize = 40 + ownerPassword.length + fileId.length;\n    const hashData = new Uint8Array(hashDataSize);\n    let i = 0,\n        j,\n        n;\n\n    if (password) {\n      n = Math.min(32, password.length);\n\n      for (; i < n; ++i) {\n        hashData[i] = password[i];\n      }\n    }\n\n    j = 0;\n\n    while (i < 32) {\n      hashData[i++] = defaultPasswordBytes[j++];\n    }\n\n    for (j = 0, n = ownerPassword.length; j < n; ++j) {\n      hashData[i++] = ownerPassword[j];\n    }\n\n    hashData[i++] = flags & 0xff;\n    hashData[i++] = flags >> 8 & 0xff;\n    hashData[i++] = flags >> 16 & 0xff;\n    hashData[i++] = flags >>> 24 & 0xff;\n\n    for (j = 0, n = fileId.length; j < n; ++j) {\n      hashData[i++] = fileId[j];\n    }\n\n    if (revision >= 4 && !encryptMetadata) {\n      hashData[i++] = 0xff;\n      hashData[i++] = 0xff;\n      hashData[i++] = 0xff;\n      hashData[i++] = 0xff;\n    }\n\n    let hash = calculateMD5(hashData, 0, i);\n    const keyLengthInBytes = keyLength >> 3;\n\n    if (revision >= 3) {\n      for (j = 0; j < 50; ++j) {\n        hash = calculateMD5(hash, 0, keyLengthInBytes);\n      }\n    }\n\n    const encryptionKey = hash.subarray(0, keyLengthInBytes);\n    let cipher, checkData;\n\n    if (revision >= 3) {\n      for (i = 0; i < 32; ++i) {\n        hashData[i] = defaultPasswordBytes[i];\n      }\n\n      for (j = 0, n = fileId.length; j < n; ++j) {\n        hashData[i++] = fileId[j];\n      }\n\n      cipher = new ARCFourCipher(encryptionKey);\n      checkData = cipher.encryptBlock(calculateMD5(hashData, 0, i));\n      n = encryptionKey.length;\n      const derivedKey = new Uint8Array(n);\n\n      for (j = 1; j <= 19; ++j) {\n        for (let k = 0; k < n; ++k) {\n          derivedKey[k] = encryptionKey[k] ^ j;\n        }\n\n        cipher = new ARCFourCipher(derivedKey);\n        checkData = cipher.encryptBlock(checkData);\n      }\n\n      for (j = 0, n = checkData.length; j < n; ++j) {\n        if (userPassword[j] !== checkData[j]) {\n          return null;\n        }\n      }\n    } else {\n      cipher = new ARCFourCipher(encryptionKey);\n      checkData = cipher.encryptBlock(defaultPasswordBytes);\n\n      for (j = 0, n = checkData.length; j < n; ++j) {\n        if (userPassword[j] !== checkData[j]) {\n          return null;\n        }\n      }\n    }\n\n    return encryptionKey;\n  }\n\n  function decodeUserPassword(password, ownerPassword, revision, keyLength) {\n    const hashData = new Uint8Array(32);\n    let i = 0;\n    const n = Math.min(32, password.length);\n\n    for (; i < n; ++i) {\n      hashData[i] = password[i];\n    }\n\n    let j = 0;\n\n    while (i < 32) {\n      hashData[i++] = defaultPasswordBytes[j++];\n    }\n\n    let hash = calculateMD5(hashData, 0, i);\n    const keyLengthInBytes = keyLength >> 3;\n\n    if (revision >= 3) {\n      for (j = 0; j < 50; ++j) {\n        hash = calculateMD5(hash, 0, hash.length);\n      }\n    }\n\n    let cipher, userPassword;\n\n    if (revision >= 3) {\n      userPassword = ownerPassword;\n      const derivedKey = new Uint8Array(keyLengthInBytes);\n\n      for (j = 19; j >= 0; j--) {\n        for (let k = 0; k < keyLengthInBytes; ++k) {\n          derivedKey[k] = hash[k] ^ j;\n        }\n\n        cipher = new ARCFourCipher(derivedKey);\n        userPassword = cipher.encryptBlock(userPassword);\n      }\n    } else {\n      cipher = new ARCFourCipher(hash.subarray(0, keyLengthInBytes));\n      userPassword = cipher.encryptBlock(ownerPassword);\n    }\n\n    return userPassword;\n  }\n\n  const identityName = _primitives.Name.get(\"Identity\");\n\n  function buildObjectKey(num, gen, encryptionKey, isAes = false) {\n    const key = new Uint8Array(encryptionKey.length + 9);\n    const n = encryptionKey.length;\n    let i;\n\n    for (i = 0; i < n; ++i) {\n      key[i] = encryptionKey[i];\n    }\n\n    key[i++] = num & 0xff;\n    key[i++] = num >> 8 & 0xff;\n    key[i++] = num >> 16 & 0xff;\n    key[i++] = gen & 0xff;\n    key[i++] = gen >> 8 & 0xff;\n\n    if (isAes) {\n      key[i++] = 0x73;\n      key[i++] = 0x41;\n      key[i++] = 0x6c;\n      key[i++] = 0x54;\n    }\n\n    const hash = calculateMD5(key, 0, i);\n    return hash.subarray(0, Math.min(encryptionKey.length + 5, 16));\n  }\n\n  function buildCipherConstructor(cf, name, num, gen, key) {\n    if (!(name instanceof _primitives.Name)) {\n      throw new _util.FormatError(\"Invalid crypt filter name.\");\n    }\n\n    const cryptFilter = cf.get(name.name);\n    let cfm;\n\n    if (cryptFilter !== null && cryptFilter !== undefined) {\n      cfm = cryptFilter.get(\"CFM\");\n    }\n\n    if (!cfm || cfm.name === \"None\") {\n      return function cipherTransformFactoryBuildCipherConstructorNone() {\n        return new NullCipher();\n      };\n    }\n\n    if (cfm.name === \"V2\") {\n      return function cipherTransformFactoryBuildCipherConstructorV2() {\n        return new ARCFourCipher(buildObjectKey(num, gen, key, false));\n      };\n    }\n\n    if (cfm.name === \"AESV2\") {\n      return function cipherTransformFactoryBuildCipherConstructorAESV2() {\n        return new AES128Cipher(buildObjectKey(num, gen, key, true));\n      };\n    }\n\n    if (cfm.name === \"AESV3\") {\n      return function cipherTransformFactoryBuildCipherConstructorAESV3() {\n        return new AES256Cipher(key);\n      };\n    }\n\n    throw new _util.FormatError(\"Unknown crypto method\");\n  }\n\n  class CipherTransformFactory {\n    constructor(dict, fileId, password) {\n      const filter = dict.get(\"Filter\");\n\n      if (!(0, _primitives.isName)(filter, \"Standard\")) {\n        throw new _util.FormatError(\"unknown encryption method\");\n      }\n\n      this.filterName = filter.name;\n      this.dict = dict;\n      const algorithm = dict.get(\"V\");\n\n      if (!Number.isInteger(algorithm) || algorithm !== 1 && algorithm !== 2 && algorithm !== 4 && algorithm !== 5) {\n        throw new _util.FormatError(\"unsupported encryption algorithm\");\n      }\n\n      this.algorithm = algorithm;\n      let keyLength = dict.get(\"Length\");\n\n      if (!keyLength) {\n        if (algorithm <= 3) {\n          keyLength = 40;\n        } else {\n          const cfDict = dict.get(\"CF\");\n          const streamCryptoName = dict.get(\"StmF\");\n\n          if (cfDict instanceof _primitives.Dict && streamCryptoName instanceof _primitives.Name) {\n            cfDict.suppressEncryption = true;\n            const handlerDict = cfDict.get(streamCryptoName.name);\n            keyLength = handlerDict && handlerDict.get(\"Length\") || 128;\n\n            if (keyLength < 40) {\n              keyLength <<= 3;\n            }\n          }\n        }\n      }\n\n      if (!Number.isInteger(keyLength) || keyLength < 40 || keyLength % 8 !== 0) {\n        throw new _util.FormatError(\"invalid key length\");\n      }\n\n      const ownerPassword = (0, _util.stringToBytes)(dict.get(\"O\")).subarray(0, 32);\n      const userPassword = (0, _util.stringToBytes)(dict.get(\"U\")).subarray(0, 32);\n      const flags = dict.get(\"P\");\n      const revision = dict.get(\"R\");\n      const encryptMetadata = (algorithm === 4 || algorithm === 5) && dict.get(\"EncryptMetadata\") !== false;\n      this.encryptMetadata = encryptMetadata;\n      const fileIdBytes = (0, _util.stringToBytes)(fileId);\n      let passwordBytes;\n\n      if (password) {\n        if (revision === 6) {\n          try {\n            password = (0, _util.utf8StringToString)(password);\n          } catch (ex) {\n            (0, _util.warn)(\"CipherTransformFactory: \" + \"Unable to convert UTF8 encoded password.\");\n          }\n        }\n\n        passwordBytes = (0, _util.stringToBytes)(password);\n      }\n\n      let encryptionKey;\n\n      if (algorithm !== 5) {\n        encryptionKey = prepareKeyData(fileIdBytes, passwordBytes, ownerPassword, userPassword, flags, revision, keyLength, encryptMetadata);\n      } else {\n        const ownerValidationSalt = (0, _util.stringToBytes)(dict.get(\"O\")).subarray(32, 40);\n        const ownerKeySalt = (0, _util.stringToBytes)(dict.get(\"O\")).subarray(40, 48);\n        const uBytes = (0, _util.stringToBytes)(dict.get(\"U\")).subarray(0, 48);\n        const userValidationSalt = (0, _util.stringToBytes)(dict.get(\"U\")).subarray(32, 40);\n        const userKeySalt = (0, _util.stringToBytes)(dict.get(\"U\")).subarray(40, 48);\n        const ownerEncryption = (0, _util.stringToBytes)(dict.get(\"OE\"));\n        const userEncryption = (0, _util.stringToBytes)(dict.get(\"UE\"));\n        const perms = (0, _util.stringToBytes)(dict.get(\"Perms\"));\n        encryptionKey = createEncryptionKey20(revision, passwordBytes, ownerPassword, ownerValidationSalt, ownerKeySalt, uBytes, userPassword, userValidationSalt, userKeySalt, ownerEncryption, userEncryption, perms);\n      }\n\n      if (!encryptionKey && !password) {\n        throw new _util.PasswordException(\"No password given\", _util.PasswordResponses.NEED_PASSWORD);\n      } else if (!encryptionKey && password) {\n        const decodedPassword = decodeUserPassword(passwordBytes, ownerPassword, revision, keyLength);\n        encryptionKey = prepareKeyData(fileIdBytes, decodedPassword, ownerPassword, userPassword, flags, revision, keyLength, encryptMetadata);\n      }\n\n      if (!encryptionKey) {\n        throw new _util.PasswordException(\"Incorrect Password\", _util.PasswordResponses.INCORRECT_PASSWORD);\n      }\n\n      this.encryptionKey = encryptionKey;\n\n      if (algorithm >= 4) {\n        const cf = dict.get(\"CF\");\n\n        if (cf instanceof _primitives.Dict) {\n          cf.suppressEncryption = true;\n        }\n\n        this.cf = cf;\n        this.stmf = dict.get(\"StmF\") || identityName;\n        this.strf = dict.get(\"StrF\") || identityName;\n        this.eff = dict.get(\"EFF\") || this.stmf;\n      }\n    }\n\n    createCipherTransform(num, gen) {\n      if (this.algorithm === 4 || this.algorithm === 5) {\n        return new CipherTransform(buildCipherConstructor(this.cf, this.stmf, num, gen, this.encryptionKey), buildCipherConstructor(this.cf, this.strf, num, gen, this.encryptionKey));\n      }\n\n      const key = buildObjectKey(num, gen, this.encryptionKey, false);\n\n      const cipherConstructor = function buildCipherCipherConstructor() {\n        return new ARCFourCipher(key);\n      };\n\n      return new CipherTransform(cipherConstructor, cipherConstructor);\n    }\n\n  }\n\n  return CipherTransformFactory;\n}();\n\nexports.CipherTransformFactory = CipherTransformFactory;\n\n/***/ }),\n/* 74 */\n/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {\n\n\n\nObject.defineProperty(exports, \"__esModule\", ({\n  value: true\n}));\nexports.DecryptStream = void 0;\n\nvar _decode_stream = __w_pdfjs_require__(29);\n\nconst chunkSize = 512;\n\nclass DecryptStream extends _decode_stream.DecodeStream {\n  constructor(str, maybeLength, decrypt) {\n    super(maybeLength);\n    this.str = str;\n    this.dict = str.dict;\n    this.decrypt = decrypt;\n    this.nextChunk = null;\n    this.initialized = false;\n  }\n\n  readBlock() {\n    let chunk;\n\n    if (this.initialized) {\n      chunk = this.nextChunk;\n    } else {\n      chunk = this.str.getBytes(chunkSize);\n      this.initialized = true;\n    }\n\n    if (!chunk || chunk.length === 0) {\n      this.eof = true;\n      return;\n    }\n\n    this.nextChunk = this.str.getBytes(chunkSize);\n    const hasMoreData = this.nextChunk && this.nextChunk.length > 0;\n    const decrypt = this.decrypt;\n    chunk = decrypt(chunk, !hasMoreData);\n    let bufferLength = this.bufferLength;\n    const n = chunk.length,\n          buffer = this.ensureBuffer(bufferLength + n);\n\n    for (let i = 0; i < n; i++) {\n      buffer[bufferLength++] = chunk[i];\n    }\n\n    this.bufferLength = bufferLength;\n  }\n\n}\n\nexports.DecryptStream = DecryptStream;\n\n/***/ }),\n/* 75 */\n/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {\n\n\n\nObject.defineProperty(exports, \"__esModule\", ({\n  value: true\n}));\nexports.XFAFactory = void 0;\n\nvar _xfa_object = __w_pdfjs_require__(76);\n\nvar _bind = __w_pdfjs_require__(80);\n\nvar _data = __w_pdfjs_require__(86);\n\nvar _fonts = __w_pdfjs_require__(84);\n\nvar _utils = __w_pdfjs_require__(77);\n\nvar _util = __w_pdfjs_require__(2);\n\nvar _parser = __w_pdfjs_require__(87);\n\nvar _xhtml = __w_pdfjs_require__(97);\n\nclass XFAFactory {\n  constructor(data) {\n    try {\n      this.root = new _parser.XFAParser().parse(XFAFactory._createDocument(data));\n      const binder = new _bind.Binder(this.root);\n      this.form = binder.bind();\n      this.dataHandler = new _data.DataHandler(this.root, binder.getData());\n      this.form[_xfa_object.$globalData].template = this.form;\n    } catch (e) {\n      (0, _util.warn)(`XFA - an error occurred during parsing and binding: ${e}`);\n    }\n  }\n\n  isValid() {\n    return this.root && this.form;\n  }\n\n  _createPagesHelper() {\n    const iterator = this.form[_xfa_object.$toPages]();\n\n    return new Promise((resolve, reject) => {\n      const nextIteration = () => {\n        try {\n          const value = iterator.next();\n\n          if (value.done) {\n            resolve(value.value);\n          } else {\n            setTimeout(nextIteration, 0);\n          }\n        } catch (e) {\n          reject(e);\n        }\n      };\n\n      setTimeout(nextIteration, 0);\n    });\n  }\n\n  async _createPages() {\n    try {\n      this.pages = await this._createPagesHelper();\n      this.dims = this.pages.children.map(c => {\n        const {\n          width,\n          height\n        } = c.attributes.style;\n        return [0, 0, parseInt(width), parseInt(height)];\n      });\n    } catch (e) {\n      (0, _util.warn)(`XFA - an error occurred during layout: ${e}`);\n    }\n  }\n\n  getBoundingBox(pageIndex) {\n    return this.dims[pageIndex];\n  }\n\n  async getNumPages() {\n    if (!this.pages) {\n      await this._createPages();\n    }\n\n    return this.dims.length;\n  }\n\n  setImages(images) {\n    this.form[_xfa_object.$globalData].images = images;\n  }\n\n  setFonts(fonts) {\n    this.form[_xfa_object.$globalData].fontFinder = new _fonts.FontFinder(fonts);\n    const missingFonts = [];\n\n    for (let typeface of this.form[_xfa_object.$globalData].usedTypefaces) {\n      typeface = (0, _utils.stripQuotes)(typeface);\n\n      const font = this.form[_xfa_object.$globalData].fontFinder.find(typeface);\n\n      if (!font) {\n        missingFonts.push(typeface);\n      }\n    }\n\n    if (missingFonts.length > 0) {\n      return missingFonts;\n    }\n\n    return null;\n  }\n\n  appendFonts(fonts, reallyMissingFonts) {\n    this.form[_xfa_object.$globalData].fontFinder.add(fonts, reallyMissingFonts);\n  }\n\n  async getPages() {\n    if (!this.pages) {\n      await this._createPages();\n    }\n\n    const pages = this.pages;\n    this.pages = null;\n    return pages;\n  }\n\n  serializeData(storage) {\n    return this.dataHandler.serialize(storage);\n  }\n\n  static _createDocument(data) {\n    if (!data[\"/xdp:xdp\"]) {\n      return data[\"xdp:xdp\"];\n    }\n\n    return Object.values(data).join(\"\");\n  }\n\n  static getRichTextAsHtml(rc) {\n    if (!rc || typeof rc !== \"string\") {\n      return null;\n    }\n\n    try {\n      let root = new _parser.XFAParser(_xhtml.XhtmlNamespace, true).parse(rc);\n\n      if (![\"body\", \"xhtml\"].includes(root[_xfa_object.$nodeName])) {\n        const newRoot = _xhtml.XhtmlNamespace.body({});\n\n        newRoot[_xfa_object.$appendChild](root);\n\n        root = newRoot;\n      }\n\n      const result = root[_xfa_object.$toHTML]();\n\n      if (!result.success) {\n        return null;\n      }\n\n      const {\n        html\n      } = result;\n      const {\n        attributes\n      } = html;\n\n      if (attributes) {\n        if (attributes.class) {\n          attributes.class = attributes.class.filter(attr => !attr.startsWith(\"xfa\"));\n        }\n\n        attributes.dir = \"auto\";\n      }\n\n      return {\n        html,\n        str: root[_xfa_object.$text]()\n      };\n    } catch (e) {\n      (0, _util.warn)(`XFA - an error occurred during parsing of rich text: ${e}`);\n    }\n\n    return null;\n  }\n\n}\n\nexports.XFAFactory = XFAFactory;\n\n/***/ }),\n/* 76 */\n/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {\n\n\n\nObject.defineProperty(exports, \"__esModule\", ({\n  value: true\n}));\nexports.XmlObject = exports.XFAObjectArray = exports.XFAObject = exports.XFAAttribute = exports.StringObject = exports.OptionObject = exports.Option10 = exports.Option01 = exports.IntegerObject = exports.ContentObject = exports.$uid = exports.$toStyle = exports.$toString = exports.$toPages = exports.$toHTML = exports.$text = exports.$tabIndex = exports.$setValue = exports.$setSetAttributes = exports.$setId = exports.$searchNode = exports.$root = exports.$resolvePrototypes = exports.$removeChild = exports.$pushPara = exports.$pushGlyphs = exports.$popPara = exports.$onText = exports.$onChildCheck = exports.$onChild = exports.$nsAttributes = exports.$nodeName = exports.$namespaceId = exports.$isUsable = exports.$isTransparent = exports.$isThereMoreWidth = exports.$isSplittable = exports.$isNsAgnostic = exports.$isDescendent = exports.$isDataValue = exports.$isCDATAXml = exports.$isBindable = exports.$insertAt = exports.$indexOf = exports.$ids = exports.$hasSettableValue = exports.$globalData = exports.$getTemplateRoot = exports.$getSubformParent = exports.$getRealChildrenByNameIt = exports.$getParent = exports.$getNextPage = exports.$getExtra = exports.$getDataValue = exports.$getContainedChildren = exports.$getChildrenByNameIt = exports.$getChildrenByName = exports.$getChildrenByClass = exports.$getChildren = exports.$getAvailableSpace = exports.$getAttributes = exports.$getAttributeIt = exports.$flushHTML = exports.$finalize = exports.$extra = exports.$dump = exports.$data = exports.$content = exports.$consumed = exports.$clone = exports.$cleanup = exports.$cleanPage = exports.$clean = exports.$childrenToHTML = exports.$appendChild = exports.$addHTML = exports.$acceptWhitespace = void 0;\n\nvar _utils = __w_pdfjs_require__(77);\n\nvar _util = __w_pdfjs_require__(2);\n\nvar _core_utils = __w_pdfjs_require__(8);\n\nvar _namespaces = __w_pdfjs_require__(78);\n\nvar _som = __w_pdfjs_require__(79);\n\nconst $acceptWhitespace = Symbol();\nexports.$acceptWhitespace = $acceptWhitespace;\nconst $addHTML = Symbol();\nexports.$addHTML = $addHTML;\nconst $appendChild = Symbol();\nexports.$appendChild = $appendChild;\nconst $childrenToHTML = Symbol();\nexports.$childrenToHTML = $childrenToHTML;\nconst $clean = Symbol();\nexports.$clean = $clean;\nconst $cleanPage = Symbol();\nexports.$cleanPage = $cleanPage;\nconst $cleanup = Symbol();\nexports.$cleanup = $cleanup;\nconst $clone = Symbol();\nexports.$clone = $clone;\nconst $consumed = Symbol();\nexports.$consumed = $consumed;\nconst $content = Symbol(\"content\");\nexports.$content = $content;\nconst $data = Symbol(\"data\");\nexports.$data = $data;\nconst $dump = Symbol();\nexports.$dump = $dump;\nconst $extra = Symbol(\"extra\");\nexports.$extra = $extra;\nconst $finalize = Symbol();\nexports.$finalize = $finalize;\nconst $flushHTML = Symbol();\nexports.$flushHTML = $flushHTML;\nconst $getAttributeIt = Symbol();\nexports.$getAttributeIt = $getAttributeIt;\nconst $getAttributes = Symbol();\nexports.$getAttributes = $getAttributes;\nconst $getAvailableSpace = Symbol();\nexports.$getAvailableSpace = $getAvailableSpace;\nconst $getChildrenByClass = Symbol();\nexports.$getChildrenByClass = $getChildrenByClass;\nconst $getChildrenByName = Symbol();\nexports.$getChildrenByName = $getChildrenByName;\nconst $getChildrenByNameIt = Symbol();\nexports.$getChildrenByNameIt = $getChildrenByNameIt;\nconst $getDataValue = Symbol();\nexports.$getDataValue = $getDataValue;\nconst $getExtra = Symbol();\nexports.$getExtra = $getExtra;\nconst $getRealChildrenByNameIt = Symbol();\nexports.$getRealChildrenByNameIt = $getRealChildrenByNameIt;\nconst $getChildren = Symbol();\nexports.$getChildren = $getChildren;\nconst $getContainedChildren = Symbol();\nexports.$getContainedChildren = $getContainedChildren;\nconst $getNextPage = Symbol();\nexports.$getNextPage = $getNextPage;\nconst $getSubformParent = Symbol();\nexports.$getSubformParent = $getSubformParent;\nconst $getParent = Symbol();\nexports.$getParent = $getParent;\nconst $getTemplateRoot = Symbol();\nexports.$getTemplateRoot = $getTemplateRoot;\nconst $globalData = Symbol();\nexports.$globalData = $globalData;\nconst $hasSettableValue = Symbol();\nexports.$hasSettableValue = $hasSettableValue;\nconst $ids = Symbol();\nexports.$ids = $ids;\nconst $indexOf = Symbol();\nexports.$indexOf = $indexOf;\nconst $insertAt = Symbol();\nexports.$insertAt = $insertAt;\nconst $isCDATAXml = Symbol();\nexports.$isCDATAXml = $isCDATAXml;\nconst $isBindable = Symbol();\nexports.$isBindable = $isBindable;\nconst $isDataValue = Symbol();\nexports.$isDataValue = $isDataValue;\nconst $isDescendent = Symbol();\nexports.$isDescendent = $isDescendent;\nconst $isNsAgnostic = Symbol();\nexports.$isNsAgnostic = $isNsAgnostic;\nconst $isSplittable = Symbol();\nexports.$isSplittable = $isSplittable;\nconst $isThereMoreWidth = Symbol();\nexports.$isThereMoreWidth = $isThereMoreWidth;\nconst $isTransparent = Symbol();\nexports.$isTransparent = $isTransparent;\nconst $isUsable = Symbol();\nexports.$isUsable = $isUsable;\nconst $lastAttribute = Symbol();\nconst $namespaceId = Symbol(\"namespaceId\");\nexports.$namespaceId = $namespaceId;\nconst $nodeName = Symbol(\"nodeName\");\nexports.$nodeName = $nodeName;\nconst $nsAttributes = Symbol();\nexports.$nsAttributes = $nsAttributes;\nconst $onChild = Symbol();\nexports.$onChild = $onChild;\nconst $onChildCheck = Symbol();\nexports.$onChildCheck = $onChildCheck;\nconst $onText = Symbol();\nexports.$onText = $onText;\nconst $pushGlyphs = Symbol();\nexports.$pushGlyphs = $pushGlyphs;\nconst $popPara = Symbol();\nexports.$popPara = $popPara;\nconst $pushPara = Symbol();\nexports.$pushPara = $pushPara;\nconst $removeChild = Symbol();\nexports.$removeChild = $removeChild;\nconst $root = Symbol(\"root\");\nexports.$root = $root;\nconst $resolvePrototypes = Symbol();\nexports.$resolvePrototypes = $resolvePrototypes;\nconst $searchNode = Symbol();\nexports.$searchNode = $searchNode;\nconst $setId = Symbol();\nexports.$setId = $setId;\nconst $setSetAttributes = Symbol();\nexports.$setSetAttributes = $setSetAttributes;\nconst $setValue = Symbol();\nexports.$setValue = $setValue;\nconst $tabIndex = Symbol();\nexports.$tabIndex = $tabIndex;\nconst $text = Symbol();\nexports.$text = $text;\nconst $toPages = Symbol();\nexports.$toPages = $toPages;\nconst $toHTML = Symbol();\nexports.$toHTML = $toHTML;\nconst $toString = Symbol();\nexports.$toString = $toString;\nconst $toStyle = Symbol();\nexports.$toStyle = $toStyle;\nconst $uid = Symbol(\"uid\");\nexports.$uid = $uid;\n\nconst _applyPrototype = Symbol();\n\nconst _attributes = Symbol();\n\nconst _attributeNames = Symbol();\n\nconst _children = Symbol(\"_children\");\n\nconst _cloneAttribute = Symbol();\n\nconst _dataValue = Symbol();\n\nconst _defaultValue = Symbol();\n\nconst _filteredChildrenGenerator = Symbol();\n\nconst _getPrototype = Symbol();\n\nconst _getUnsetAttributes = Symbol();\n\nconst _hasChildren = Symbol();\n\nconst _max = Symbol();\n\nconst _options = Symbol();\n\nconst _parent = Symbol(\"parent\");\n\nconst _resolvePrototypesHelper = Symbol();\n\nconst _setAttributes = Symbol();\n\nconst _validator = Symbol();\n\nlet uid = 0;\nconst NS_DATASETS = _namespaces.NamespaceIds.datasets.id;\n\nclass XFAObject {\n  constructor(nsId, name, hasChildren = false) {\n    this[$namespaceId] = nsId;\n    this[$nodeName] = name;\n    this[_hasChildren] = hasChildren;\n    this[_parent] = null;\n    this[_children] = [];\n    this[$uid] = `${name}${uid++}`;\n    this[$globalData] = null;\n  }\n\n  [$onChild](child) {\n    if (!this[_hasChildren] || !this[$onChildCheck](child)) {\n      return false;\n    }\n\n    const name = child[$nodeName];\n    const node = this[name];\n\n    if (node instanceof XFAObjectArray) {\n      if (node.push(child)) {\n        this[$appendChild](child);\n        return true;\n      }\n    } else {\n      if (node !== null) {\n        this[$removeChild](node);\n      }\n\n      this[name] = child;\n      this[$appendChild](child);\n      return true;\n    }\n\n    let id = \"\";\n\n    if (this.id) {\n      id = ` (id: ${this.id})`;\n    } else if (this.name) {\n      id = ` (name: ${this.name} ${this.h.value})`;\n    }\n\n    (0, _util.warn)(`XFA - node \"${this[$nodeName]}\"${id} has already enough \"${name}\"!`);\n    return false;\n  }\n\n  [$onChildCheck](child) {\n    return this.hasOwnProperty(child[$nodeName]) && child[$namespaceId] === this[$namespaceId];\n  }\n\n  [$isNsAgnostic]() {\n    return false;\n  }\n\n  [$acceptWhitespace]() {\n    return false;\n  }\n\n  [$isCDATAXml]() {\n    return false;\n  }\n\n  [$isBindable]() {\n    return false;\n  }\n\n  [$popPara]() {\n    if (this.para) {\n      this[$getTemplateRoot]()[$extra].paraStack.pop();\n    }\n  }\n\n  [$pushPara]() {\n    this[$getTemplateRoot]()[$extra].paraStack.push(this.para);\n  }\n\n  [$setId](ids) {\n    if (this.id && this[$namespaceId] === _namespaces.NamespaceIds.template.id) {\n      ids.set(this.id, this);\n    }\n  }\n\n  [$getTemplateRoot]() {\n    return this[$globalData].template;\n  }\n\n  [$isSplittable]() {\n    return false;\n  }\n\n  [$isThereMoreWidth]() {\n    return false;\n  }\n\n  [$appendChild](child) {\n    child[_parent] = this;\n\n    this[_children].push(child);\n\n    if (!child[$globalData] && this[$globalData]) {\n      child[$globalData] = this[$globalData];\n    }\n  }\n\n  [$removeChild](child) {\n    const i = this[_children].indexOf(child);\n\n    this[_children].splice(i, 1);\n  }\n\n  [$hasSettableValue]() {\n    return this.hasOwnProperty(\"value\");\n  }\n\n  [$setValue](_) {}\n\n  [$onText](_) {}\n\n  [$finalize]() {}\n\n  [$clean](builder) {\n    delete this[_hasChildren];\n\n    if (this[$cleanup]) {\n      builder.clean(this[$cleanup]);\n      delete this[$cleanup];\n    }\n  }\n\n  [$indexOf](child) {\n    return this[_children].indexOf(child);\n  }\n\n  [$insertAt](i, child) {\n    child[_parent] = this;\n\n    this[_children].splice(i, 0, child);\n\n    if (!child[$globalData] && this[$globalData]) {\n      child[$globalData] = this[$globalData];\n    }\n  }\n\n  [$isTransparent]() {\n    return !this.name;\n  }\n\n  [$lastAttribute]() {\n    return \"\";\n  }\n\n  [$text]() {\n    if (this[_children].length === 0) {\n      return this[$content];\n    }\n\n    return this[_children].map(c => c[$text]()).join(\"\");\n  }\n\n  get [_attributeNames]() {\n    const proto = Object.getPrototypeOf(this);\n\n    if (!proto._attributes) {\n      const attributes = proto._attributes = new Set();\n\n      for (const name of Object.getOwnPropertyNames(this)) {\n        if (this[name] === null || this[name] instanceof XFAObject || this[name] instanceof XFAObjectArray) {\n          break;\n        }\n\n        attributes.add(name);\n      }\n    }\n\n    return (0, _util.shadow)(this, _attributeNames, proto._attributes);\n  }\n\n  [$isDescendent](parent) {\n    let node = this;\n\n    while (node) {\n      if (node === parent) {\n        return true;\n      }\n\n      node = node[$getParent]();\n    }\n\n    return false;\n  }\n\n  [$getParent]() {\n    return this[_parent];\n  }\n\n  [$getSubformParent]() {\n    return this[$getParent]();\n  }\n\n  [$getChildren](name = null) {\n    if (!name) {\n      return this[_children];\n    }\n\n    return this[name];\n  }\n\n  [$dump]() {\n    const dumped = Object.create(null);\n\n    if (this[$content]) {\n      dumped.$content = this[$content];\n    }\n\n    for (const name of Object.getOwnPropertyNames(this)) {\n      const value = this[name];\n\n      if (value === null) {\n        continue;\n      }\n\n      if (value instanceof XFAObject) {\n        dumped[name] = value[$dump]();\n      } else if (value instanceof XFAObjectArray) {\n        if (!value.isEmpty()) {\n          dumped[name] = value.dump();\n        }\n      } else {\n        dumped[name] = value;\n      }\n    }\n\n    return dumped;\n  }\n\n  [$toStyle]() {\n    return null;\n  }\n\n  [$toHTML]() {\n    return _utils.HTMLResult.EMPTY;\n  }\n\n  *[$getContainedChildren]() {\n    for (const node of this[$getChildren]()) {\n      yield node;\n    }\n  }\n\n  *[_filteredChildrenGenerator](filter, include) {\n    for (const node of this[$getContainedChildren]()) {\n      if (!filter || include === filter.has(node[$nodeName])) {\n        const availableSpace = this[$getAvailableSpace]();\n        const res = node[$toHTML](availableSpace);\n\n        if (!res.success) {\n          this[$extra].failingNode = node;\n        }\n\n        yield res;\n      }\n    }\n  }\n\n  [$flushHTML]() {\n    return null;\n  }\n\n  [$addHTML](html, bbox) {\n    this[$extra].children.push(html);\n  }\n\n  [$getAvailableSpace]() {}\n\n  [$childrenToHTML]({\n    filter = null,\n    include = true\n  }) {\n    if (!this[$extra].generator) {\n      this[$extra].generator = this[_filteredChildrenGenerator](filter, include);\n    } else {\n      const availableSpace = this[$getAvailableSpace]();\n      const res = this[$extra].failingNode[$toHTML](availableSpace);\n\n      if (!res.success) {\n        return res;\n      }\n\n      if (res.html) {\n        this[$addHTML](res.html, res.bbox);\n      }\n\n      delete this[$extra].failingNode;\n    }\n\n    while (true) {\n      const gen = this[$extra].generator.next();\n\n      if (gen.done) {\n        break;\n      }\n\n      const res = gen.value;\n\n      if (!res.success) {\n        return res;\n      }\n\n      if (res.html) {\n        this[$addHTML](res.html, res.bbox);\n      }\n    }\n\n    this[$extra].generator = null;\n    return _utils.HTMLResult.EMPTY;\n  }\n\n  [$setSetAttributes](attributes) {\n    this[_setAttributes] = new Set(Object.keys(attributes));\n  }\n\n  [_getUnsetAttributes](protoAttributes) {\n    const allAttr = this[_attributeNames];\n    const setAttr = this[_setAttributes];\n    return [...protoAttributes].filter(x => allAttr.has(x) && !setAttr.has(x));\n  }\n\n  [$resolvePrototypes](ids, ancestors = new Set()) {\n    for (const child of this[_children]) {\n      child[_resolvePrototypesHelper](ids, ancestors);\n    }\n  }\n\n  [_resolvePrototypesHelper](ids, ancestors) {\n    const proto = this[_getPrototype](ids, ancestors);\n\n    if (proto) {\n      this[_applyPrototype](proto, ids, ancestors);\n    } else {\n      this[$resolvePrototypes](ids, ancestors);\n    }\n  }\n\n  [_getPrototype](ids, ancestors) {\n    const {\n      use,\n      usehref\n    } = this;\n\n    if (!use && !usehref) {\n      return null;\n    }\n\n    let proto = null;\n    let somExpression = null;\n    let id = null;\n    let ref = use;\n\n    if (usehref) {\n      ref = usehref;\n\n      if (usehref.startsWith(\"#som(\") && usehref.endsWith(\")\")) {\n        somExpression = usehref.slice(\"#som(\".length, usehref.length - 1);\n      } else if (usehref.startsWith(\".#som(\") && usehref.endsWith(\")\")) {\n        somExpression = usehref.slice(\".#som(\".length, usehref.length - 1);\n      } else if (usehref.startsWith(\"#\")) {\n        id = usehref.slice(1);\n      } else if (usehref.startsWith(\".#\")) {\n        id = usehref.slice(2);\n      }\n    } else if (use.startsWith(\"#\")) {\n      id = use.slice(1);\n    } else {\n      somExpression = use;\n    }\n\n    this.use = this.usehref = \"\";\n\n    if (id) {\n      proto = ids.get(id);\n    } else {\n      proto = (0, _som.searchNode)(ids.get($root), this, somExpression, true, false);\n\n      if (proto) {\n        proto = proto[0];\n      }\n    }\n\n    if (!proto) {\n      (0, _util.warn)(`XFA - Invalid prototype reference: ${ref}.`);\n      return null;\n    }\n\n    if (proto[$nodeName] !== this[$nodeName]) {\n      (0, _util.warn)(`XFA - Incompatible prototype: ${proto[$nodeName]} !== ${this[$nodeName]}.`);\n      return null;\n    }\n\n    if (ancestors.has(proto)) {\n      (0, _util.warn)(`XFA - Cycle detected in prototypes use.`);\n      return null;\n    }\n\n    ancestors.add(proto);\n\n    const protoProto = proto[_getPrototype](ids, ancestors);\n\n    if (protoProto) {\n      proto[_applyPrototype](protoProto, ids, ancestors);\n    }\n\n    proto[$resolvePrototypes](ids, ancestors);\n    ancestors.delete(proto);\n    return proto;\n  }\n\n  [_applyPrototype](proto, ids, ancestors) {\n    if (ancestors.has(proto)) {\n      (0, _util.warn)(`XFA - Cycle detected in prototypes use.`);\n      return;\n    }\n\n    if (!this[$content] && proto[$content]) {\n      this[$content] = proto[$content];\n    }\n\n    const newAncestors = new Set(ancestors);\n    newAncestors.add(proto);\n\n    for (const unsetAttrName of this[_getUnsetAttributes](proto[_setAttributes])) {\n      this[unsetAttrName] = proto[unsetAttrName];\n\n      if (this[_setAttributes]) {\n        this[_setAttributes].add(unsetAttrName);\n      }\n    }\n\n    for (const name of Object.getOwnPropertyNames(this)) {\n      if (this[_attributeNames].has(name)) {\n        continue;\n      }\n\n      const value = this[name];\n      const protoValue = proto[name];\n\n      if (value instanceof XFAObjectArray) {\n        for (const child of value[_children]) {\n          child[_resolvePrototypesHelper](ids, ancestors);\n        }\n\n        for (let i = value[_children].length, ii = protoValue[_children].length; i < ii; i++) {\n          const child = proto[_children][i][$clone]();\n\n          if (value.push(child)) {\n            child[_parent] = this;\n\n            this[_children].push(child);\n\n            child[_resolvePrototypesHelper](ids, ancestors);\n          } else {\n            break;\n          }\n        }\n\n        continue;\n      }\n\n      if (value !== null) {\n        value[$resolvePrototypes](ids, ancestors);\n\n        if (protoValue) {\n          value[_applyPrototype](protoValue, ids, ancestors);\n        }\n\n        continue;\n      }\n\n      if (protoValue !== null) {\n        const child = protoValue[$clone]();\n        child[_parent] = this;\n        this[name] = child;\n\n        this[_children].push(child);\n\n        child[_resolvePrototypesHelper](ids, ancestors);\n      }\n    }\n  }\n\n  static [_cloneAttribute](obj) {\n    if (Array.isArray(obj)) {\n      return obj.map(x => XFAObject[_cloneAttribute](x));\n    }\n\n    if (typeof obj === \"object\" && obj !== null) {\n      return Object.assign({}, obj);\n    }\n\n    return obj;\n  }\n\n  [$clone]() {\n    const clone = Object.create(Object.getPrototypeOf(this));\n\n    for (const $symbol of Object.getOwnPropertySymbols(this)) {\n      try {\n        clone[$symbol] = this[$symbol];\n      } catch (_) {\n        (0, _util.shadow)(clone, $symbol, this[$symbol]);\n      }\n    }\n\n    clone[$uid] = `${clone[$nodeName]}${uid++}`;\n    clone[_children] = [];\n\n    for (const name of Object.getOwnPropertyNames(this)) {\n      if (this[_attributeNames].has(name)) {\n        clone[name] = XFAObject[_cloneAttribute](this[name]);\n        continue;\n      }\n\n      const value = this[name];\n\n      if (value instanceof XFAObjectArray) {\n        clone[name] = new XFAObjectArray(value[_max]);\n      } else {\n        clone[name] = null;\n      }\n    }\n\n    for (const child of this[_children]) {\n      const name = child[$nodeName];\n      const clonedChild = child[$clone]();\n\n      clone[_children].push(clonedChild);\n\n      clonedChild[_parent] = clone;\n\n      if (clone[name] === null) {\n        clone[name] = clonedChild;\n      } else {\n        clone[name][_children].push(clonedChild);\n      }\n    }\n\n    return clone;\n  }\n\n  [$getChildren](name = null) {\n    if (!name) {\n      return this[_children];\n    }\n\n    return this[_children].filter(c => c[$nodeName] === name);\n  }\n\n  [$getChildrenByClass](name) {\n    return this[name];\n  }\n\n  [$getChildrenByName](name, allTransparent, first = true) {\n    return Array.from(this[$getChildrenByNameIt](name, allTransparent, first));\n  }\n\n  *[$getChildrenByNameIt](name, allTransparent, first = true) {\n    if (name === \"parent\") {\n      yield this[_parent];\n      return;\n    }\n\n    for (const child of this[_children]) {\n      if (child[$nodeName] === name) {\n        yield child;\n      }\n\n      if (child.name === name) {\n        yield child;\n      }\n\n      if (allTransparent || child[$isTransparent]()) {\n        yield* child[$getChildrenByNameIt](name, allTransparent, false);\n      }\n    }\n\n    if (first && this[_attributeNames].has(name)) {\n      yield new XFAAttribute(this, name, this[name]);\n    }\n  }\n\n}\n\nexports.XFAObject = XFAObject;\n\nclass XFAObjectArray {\n  constructor(max = Infinity) {\n    this[_max] = max;\n    this[_children] = [];\n  }\n\n  push(child) {\n    const len = this[_children].length;\n\n    if (len <= this[_max]) {\n      this[_children].push(child);\n\n      return true;\n    }\n\n    (0, _util.warn)(`XFA - node \"${child[$nodeName]}\" accepts no more than ${this[_max]} children`);\n    return false;\n  }\n\n  isEmpty() {\n    return this[_children].length === 0;\n  }\n\n  dump() {\n    return this[_children].length === 1 ? this[_children][0][$dump]() : this[_children].map(x => x[$dump]());\n  }\n\n  [$clone]() {\n    const clone = new XFAObjectArray(this[_max]);\n    clone[_children] = this[_children].map(c => c[$clone]());\n    return clone;\n  }\n\n  get children() {\n    return this[_children];\n  }\n\n  clear() {\n    this[_children].length = 0;\n  }\n\n}\n\nexports.XFAObjectArray = XFAObjectArray;\n\nclass XFAAttribute {\n  constructor(node, name, value) {\n    this[_parent] = node;\n    this[$nodeName] = name;\n    this[$content] = value;\n    this[$consumed] = false;\n    this[$uid] = `attribute${uid++}`;\n  }\n\n  [$getParent]() {\n    return this[_parent];\n  }\n\n  [$isDataValue]() {\n    return true;\n  }\n\n  [$getDataValue]() {\n    return this[$content].trim();\n  }\n\n  [$setValue](value) {\n    value = value.value || \"\";\n    this[$content] = value.toString();\n  }\n\n  [$text]() {\n    return this[$content];\n  }\n\n  [$isDescendent](parent) {\n    return this[_parent] === parent || this[_parent][$isDescendent](parent);\n  }\n\n}\n\nexports.XFAAttribute = XFAAttribute;\n\nclass XmlObject extends XFAObject {\n  constructor(nsId, name, attributes = {}) {\n    super(nsId, name);\n    this[$content] = \"\";\n    this[_dataValue] = null;\n\n    if (name !== \"#text\") {\n      const map = new Map();\n      this[_attributes] = map;\n\n      for (const [attrName, value] of Object.entries(attributes)) {\n        map.set(attrName, new XFAAttribute(this, attrName, value));\n      }\n\n      if (attributes.hasOwnProperty($nsAttributes)) {\n        const dataNode = attributes[$nsAttributes].xfa.dataNode;\n\n        if (dataNode !== undefined) {\n          if (dataNode === \"dataGroup\") {\n            this[_dataValue] = false;\n          } else if (dataNode === \"dataValue\") {\n            this[_dataValue] = true;\n          }\n        }\n      }\n    }\n\n    this[$consumed] = false;\n  }\n\n  [$toString](buf) {\n    const tagName = this[$nodeName];\n\n    if (tagName === \"#text\") {\n      buf.push((0, _core_utils.encodeToXmlString)(this[$content]));\n      return;\n    }\n\n    const utf8TagName = (0, _util.utf8StringToString)(tagName);\n    const prefix = this[$namespaceId] === NS_DATASETS ? \"xfa:\" : \"\";\n    buf.push(`<${prefix}${utf8TagName}`);\n\n    for (const [name, value] of this[_attributes].entries()) {\n      const utf8Name = (0, _util.utf8StringToString)(name);\n      buf.push(` ${utf8Name}=\"${(0, _core_utils.encodeToXmlString)(value[$content])}\"`);\n    }\n\n    if (this[_dataValue] !== null) {\n      if (this[_dataValue]) {\n        buf.push(` xfa:dataNode=\"dataValue\"`);\n      } else {\n        buf.push(` xfa:dataNode=\"dataGroup\"`);\n      }\n    }\n\n    if (!this[$content] && this[_children].length === 0) {\n      buf.push(\"/>\");\n      return;\n    }\n\n    buf.push(\">\");\n\n    if (this[$content]) {\n      if (typeof this[$content] === \"string\") {\n        buf.push((0, _core_utils.encodeToXmlString)(this[$content]));\n      } else {\n        this[$content][$toString](buf);\n      }\n    } else {\n      for (const child of this[_children]) {\n        child[$toString](buf);\n      }\n    }\n\n    buf.push(`</${prefix}${utf8TagName}>`);\n  }\n\n  [$onChild](child) {\n    if (this[$content]) {\n      const node = new XmlObject(this[$namespaceId], \"#text\");\n      this[$appendChild](node);\n      node[$content] = this[$content];\n      this[$content] = \"\";\n    }\n\n    this[$appendChild](child);\n    return true;\n  }\n\n  [$onText](str) {\n    this[$content] += str;\n  }\n\n  [$finalize]() {\n    if (this[$content] && this[_children].length > 0) {\n      const node = new XmlObject(this[$namespaceId], \"#text\");\n      this[$appendChild](node);\n      node[$content] = this[$content];\n      delete this[$content];\n    }\n  }\n\n  [$toHTML]() {\n    if (this[$nodeName] === \"#text\") {\n      return _utils.HTMLResult.success({\n        name: \"#text\",\n        value: this[$content]\n      });\n    }\n\n    return _utils.HTMLResult.EMPTY;\n  }\n\n  [$getChildren](name = null) {\n    if (!name) {\n      return this[_children];\n    }\n\n    return this[_children].filter(c => c[$nodeName] === name);\n  }\n\n  [$getAttributes]() {\n    return this[_attributes];\n  }\n\n  [$getChildrenByClass](name) {\n    const value = this[_attributes].get(name);\n\n    if (value !== undefined) {\n      return value;\n    }\n\n    return this[$getChildren](name);\n  }\n\n  *[$getChildrenByNameIt](name, allTransparent) {\n    const value = this[_attributes].get(name);\n\n    if (value) {\n      yield value;\n    }\n\n    for (const child of this[_children]) {\n      if (child[$nodeName] === name) {\n        yield child;\n      }\n\n      if (allTransparent) {\n        yield* child[$getChildrenByNameIt](name, allTransparent);\n      }\n    }\n  }\n\n  *[$getAttributeIt](name, skipConsumed) {\n    const value = this[_attributes].get(name);\n\n    if (value && (!skipConsumed || !value[$consumed])) {\n      yield value;\n    }\n\n    for (const child of this[_children]) {\n      yield* child[$getAttributeIt](name, skipConsumed);\n    }\n  }\n\n  *[$getRealChildrenByNameIt](name, allTransparent, skipConsumed) {\n    for (const child of this[_children]) {\n      if (child[$nodeName] === name && (!skipConsumed || !child[$consumed])) {\n        yield child;\n      }\n\n      if (allTransparent) {\n        yield* child[$getRealChildrenByNameIt](name, allTransparent, skipConsumed);\n      }\n    }\n  }\n\n  [$isDataValue]() {\n    if (this[_dataValue] === null) {\n      return this[_children].length === 0 || this[_children][0][$namespaceId] === _namespaces.NamespaceIds.xhtml.id;\n    }\n\n    return this[_dataValue];\n  }\n\n  [$getDataValue]() {\n    if (this[_dataValue] === null) {\n      if (this[_children].length === 0) {\n        return this[$content].trim();\n      }\n\n      if (this[_children][0][$namespaceId] === _namespaces.NamespaceIds.xhtml.id) {\n        return this[_children][0][$text]().trim();\n      }\n\n      return null;\n    }\n\n    return this[$content].trim();\n  }\n\n  [$setValue](value) {\n    value = value.value || \"\";\n    this[$content] = value.toString();\n  }\n\n  [$dump](hasNS = false) {\n    const dumped = Object.create(null);\n\n    if (hasNS) {\n      dumped.$ns = this[$namespaceId];\n    }\n\n    if (this[$content]) {\n      dumped.$content = this[$content];\n    }\n\n    dumped.$name = this[$nodeName];\n    dumped.children = [];\n\n    for (const child of this[_children]) {\n      dumped.children.push(child[$dump](hasNS));\n    }\n\n    dumped.attributes = Object.create(null);\n\n    for (const [name, value] of this[_attributes]) {\n      dumped.attributes[name] = value[$content];\n    }\n\n    return dumped;\n  }\n\n}\n\nexports.XmlObject = XmlObject;\n\nclass ContentObject extends XFAObject {\n  constructor(nsId, name) {\n    super(nsId, name);\n    this[$content] = \"\";\n  }\n\n  [$onText](text) {\n    this[$content] += text;\n  }\n\n  [$finalize]() {}\n\n}\n\nexports.ContentObject = ContentObject;\n\nclass OptionObject extends ContentObject {\n  constructor(nsId, name, options) {\n    super(nsId, name);\n    this[_options] = options;\n  }\n\n  [$finalize]() {\n    this[$content] = (0, _utils.getKeyword)({\n      data: this[$content],\n      defaultValue: this[_options][0],\n      validate: k => this[_options].includes(k)\n    });\n  }\n\n  [$clean](builder) {\n    super[$clean](builder);\n    delete this[_options];\n  }\n\n}\n\nexports.OptionObject = OptionObject;\n\nclass StringObject extends ContentObject {\n  [$finalize]() {\n    this[$content] = this[$content].trim();\n  }\n\n}\n\nexports.StringObject = StringObject;\n\nclass IntegerObject extends ContentObject {\n  constructor(nsId, name, defaultValue, validator) {\n    super(nsId, name);\n    this[_defaultValue] = defaultValue;\n    this[_validator] = validator;\n  }\n\n  [$finalize]() {\n    this[$content] = (0, _utils.getInteger)({\n      data: this[$content],\n      defaultValue: this[_defaultValue],\n      validate: this[_validator]\n    });\n  }\n\n  [$clean](builder) {\n    super[$clean](builder);\n    delete this[_defaultValue];\n    delete this[_validator];\n  }\n\n}\n\nexports.IntegerObject = IntegerObject;\n\nclass Option01 extends IntegerObject {\n  constructor(nsId, name) {\n    super(nsId, name, 0, n => n === 1);\n  }\n\n}\n\nexports.Option01 = Option01;\n\nclass Option10 extends IntegerObject {\n  constructor(nsId, name) {\n    super(nsId, name, 1, n => n === 0);\n  }\n\n}\n\nexports.Option10 = Option10;\n\n/***/ }),\n/* 77 */\n/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {\n\n\n\nObject.defineProperty(exports, \"__esModule\", ({\n  value: true\n}));\nexports.HTMLResult = void 0;\nexports.getBBox = getBBox;\nexports.getColor = getColor;\nexports.getFloat = getFloat;\nexports.getInteger = getInteger;\nexports.getKeyword = getKeyword;\nexports.getMeasurement = getMeasurement;\nexports.getRatio = getRatio;\nexports.getRelevant = getRelevant;\nexports.getStringOption = getStringOption;\nexports.stripQuotes = stripQuotes;\n\nvar _util = __w_pdfjs_require__(2);\n\nconst dimConverters = {\n  pt: x => x,\n  cm: x => x / 2.54 * 72,\n  mm: x => x / (10 * 2.54) * 72,\n  in: x => x * 72,\n  px: x => x\n};\nconst measurementPattern = /([+-]?\\d+\\.?\\d*)(.*)/;\n\nfunction stripQuotes(str) {\n  if (str.startsWith(\"'\") || str.startsWith('\"')) {\n    return str.slice(1, str.length - 1);\n  }\n\n  return str;\n}\n\nfunction getInteger({\n  data,\n  defaultValue,\n  validate\n}) {\n  if (!data) {\n    return defaultValue;\n  }\n\n  data = data.trim();\n  const n = parseInt(data, 10);\n\n  if (!isNaN(n) && validate(n)) {\n    return n;\n  }\n\n  return defaultValue;\n}\n\nfunction getFloat({\n  data,\n  defaultValue,\n  validate\n}) {\n  if (!data) {\n    return defaultValue;\n  }\n\n  data = data.trim();\n  const n = parseFloat(data);\n\n  if (!isNaN(n) && validate(n)) {\n    return n;\n  }\n\n  return defaultValue;\n}\n\nfunction getKeyword({\n  data,\n  defaultValue,\n  validate\n}) {\n  if (!data) {\n    return defaultValue;\n  }\n\n  data = data.trim();\n\n  if (validate(data)) {\n    return data;\n  }\n\n  return defaultValue;\n}\n\nfunction getStringOption(data, options) {\n  return getKeyword({\n    data,\n    defaultValue: options[0],\n    validate: k => options.includes(k)\n  });\n}\n\nfunction getMeasurement(str, def = \"0\") {\n  def = def || \"0\";\n\n  if (!str) {\n    return getMeasurement(def);\n  }\n\n  const match = str.trim().match(measurementPattern);\n\n  if (!match) {\n    return getMeasurement(def);\n  }\n\n  const [, valueStr, unit] = match;\n  const value = parseFloat(valueStr);\n\n  if (isNaN(value)) {\n    return getMeasurement(def);\n  }\n\n  if (value === 0) {\n    return 0;\n  }\n\n  const conv = dimConverters[unit];\n\n  if (conv) {\n    return conv(value);\n  }\n\n  return value;\n}\n\nfunction getRatio(data) {\n  if (!data) {\n    return {\n      num: 1,\n      den: 1\n    };\n  }\n\n  const ratio = data.trim().split(/\\s*:\\s*/).map(x => parseFloat(x)).filter(x => !isNaN(x));\n\n  if (ratio.length === 1) {\n    ratio.push(1);\n  }\n\n  if (ratio.length === 0) {\n    return {\n      num: 1,\n      den: 1\n    };\n  }\n\n  const [num, den] = ratio;\n  return {\n    num,\n    den\n  };\n}\n\nfunction getRelevant(data) {\n  if (!data) {\n    return [];\n  }\n\n  return data.trim().split(/\\s+/).map(e => {\n    return {\n      excluded: e[0] === \"-\",\n      viewname: e.substring(1)\n    };\n  });\n}\n\nfunction getColor(data, def = [0, 0, 0]) {\n  let [r, g, b] = def;\n\n  if (!data) {\n    return {\n      r,\n      g,\n      b\n    };\n  }\n\n  const color = data.trim().split(/\\s*,\\s*/).map(c => Math.min(Math.max(0, parseInt(c.trim(), 10)), 255)).map(c => isNaN(c) ? 0 : c);\n\n  if (color.length < 3) {\n    return {\n      r,\n      g,\n      b\n    };\n  }\n\n  [r, g, b] = color;\n  return {\n    r,\n    g,\n    b\n  };\n}\n\nfunction getBBox(data) {\n  const def = -1;\n\n  if (!data) {\n    return {\n      x: def,\n      y: def,\n      width: def,\n      height: def\n    };\n  }\n\n  const bbox = data.trim().split(/\\s*,\\s*/).map(m => getMeasurement(m, \"-1\"));\n\n  if (bbox.length < 4 || bbox[2] < 0 || bbox[3] < 0) {\n    return {\n      x: def,\n      y: def,\n      width: def,\n      height: def\n    };\n  }\n\n  const [x, y, width, height] = bbox;\n  return {\n    x,\n    y,\n    width,\n    height\n  };\n}\n\nclass HTMLResult {\n  static get FAILURE() {\n    return (0, _util.shadow)(this, \"FAILURE\", new HTMLResult(false, null, null, null));\n  }\n\n  static get EMPTY() {\n    return (0, _util.shadow)(this, \"EMPTY\", new HTMLResult(true, null, null, null));\n  }\n\n  constructor(success, html, bbox, breakNode) {\n    this.success = success;\n    this.html = html;\n    this.bbox = bbox;\n    this.breakNode = breakNode;\n  }\n\n  isBreak() {\n    return !!this.breakNode;\n  }\n\n  static breakNode(node) {\n    return new HTMLResult(false, null, null, node);\n  }\n\n  static success(html, bbox = null) {\n    return new HTMLResult(true, html, bbox, null);\n  }\n\n}\n\nexports.HTMLResult = HTMLResult;\n\n/***/ }),\n/* 78 */\n/***/ ((__unused_webpack_module, exports) => {\n\n\n\nObject.defineProperty(exports, \"__esModule\", ({\n  value: true\n}));\nexports.NamespaceIds = exports.$buildXFAObject = void 0;\nconst $buildXFAObject = Symbol();\nexports.$buildXFAObject = $buildXFAObject;\nconst NamespaceIds = {\n  config: {\n    id: 0,\n    check: ns => ns.startsWith(\"http://www.xfa.org/schema/xci/\")\n  },\n  connectionSet: {\n    id: 1,\n    check: ns => ns.startsWith(\"http://www.xfa.org/schema/xfa-connection-set/\")\n  },\n  datasets: {\n    id: 2,\n    check: ns => ns.startsWith(\"http://www.xfa.org/schema/xfa-data/\")\n  },\n  form: {\n    id: 3,\n    check: ns => ns.startsWith(\"http://www.xfa.org/schema/xfa-form/\")\n  },\n  localeSet: {\n    id: 4,\n    check: ns => ns.startsWith(\"http://www.xfa.org/schema/xfa-locale-set/\")\n  },\n  pdf: {\n    id: 5,\n    check: ns => ns === \"http://ns.adobe.com/xdp/pdf/\"\n  },\n  signature: {\n    id: 6,\n    check: ns => ns === \"http://www.w3.org/2000/09/xmldsig#\"\n  },\n  sourceSet: {\n    id: 7,\n    check: ns => ns.startsWith(\"http://www.xfa.org/schema/xfa-source-set/\")\n  },\n  stylesheet: {\n    id: 8,\n    check: ns => ns === \"http://www.w3.org/1999/XSL/Transform\"\n  },\n  template: {\n    id: 9,\n    check: ns => ns.startsWith(\"http://www.xfa.org/schema/xfa-template/\")\n  },\n  xdc: {\n    id: 10,\n    check: ns => ns.startsWith(\"http://www.xfa.org/schema/xdc/\")\n  },\n  xdp: {\n    id: 11,\n    check: ns => ns === \"http://ns.adobe.com/xdp/\"\n  },\n  xfdf: {\n    id: 12,\n    check: ns => ns === \"http://ns.adobe.com/xfdf/\"\n  },\n  xhtml: {\n    id: 13,\n    check: ns => ns === \"http://www.w3.org/1999/xhtml\"\n  },\n  xmpmeta: {\n    id: 14,\n    check: ns => ns === \"http://ns.adobe.com/xmpmeta/\"\n  }\n};\nexports.NamespaceIds = NamespaceIds;\n\n/***/ }),\n/* 79 */\n/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {\n\n\n\nObject.defineProperty(exports, \"__esModule\", ({\n  value: true\n}));\nexports.createDataNode = createDataNode;\nexports.searchNode = searchNode;\n\nvar _xfa_object = __w_pdfjs_require__(76);\n\nvar _namespaces = __w_pdfjs_require__(78);\n\nvar _util = __w_pdfjs_require__(2);\n\nconst namePattern = /^[^.[]+/;\nconst indexPattern = /^[^\\]]+/;\nconst operators = {\n  dot: 0,\n  dotDot: 1,\n  dotHash: 2,\n  dotBracket: 3,\n  dotParen: 4\n};\nconst shortcuts = new Map([[\"$data\", (root, current) => root.datasets ? root.datasets.data : root], [\"$record\", (root, current) => (root.datasets ? root.datasets.data : root)[_xfa_object.$getChildren]()[0]], [\"$template\", (root, current) => root.template], [\"$connectionSet\", (root, current) => root.connectionSet], [\"$form\", (root, current) => root.form], [\"$layout\", (root, current) => root.layout], [\"$host\", (root, current) => root.host], [\"$dataWindow\", (root, current) => root.dataWindow], [\"$event\", (root, current) => root.event], [\"!\", (root, current) => root.datasets], [\"$xfa\", (root, current) => root], [\"xfa\", (root, current) => root], [\"$\", (root, current) => current]]);\nconst somCache = new WeakMap();\nconst NS_DATASETS = _namespaces.NamespaceIds.datasets.id;\n\nfunction parseIndex(index) {\n  index = index.trim();\n\n  if (index === \"*\") {\n    return Infinity;\n  }\n\n  return parseInt(index, 10) || 0;\n}\n\nfunction parseExpression(expr, dotDotAllowed, noExpr = true) {\n  let match = expr.match(namePattern);\n\n  if (!match) {\n    return null;\n  }\n\n  let [name] = match;\n  const parsed = [{\n    name,\n    cacheName: \".\" + name,\n    index: 0,\n    js: null,\n    formCalc: null,\n    operator: operators.dot\n  }];\n  let pos = name.length;\n\n  while (pos < expr.length) {\n    const spos = pos;\n    const char = expr.charAt(pos++);\n\n    if (char === \"[\") {\n      match = expr.slice(pos).match(indexPattern);\n\n      if (!match) {\n        (0, _util.warn)(\"XFA - Invalid index in SOM expression\");\n        return null;\n      }\n\n      parsed[parsed.length - 1].index = parseIndex(match[0]);\n      pos += match[0].length + 1;\n      continue;\n    }\n\n    let operator;\n\n    switch (expr.charAt(pos)) {\n      case \".\":\n        if (!dotDotAllowed) {\n          return null;\n        }\n\n        pos++;\n        operator = operators.dotDot;\n        break;\n\n      case \"#\":\n        pos++;\n        operator = operators.dotHash;\n        break;\n\n      case \"[\":\n        if (noExpr) {\n          (0, _util.warn)(\"XFA - SOM expression contains a FormCalc subexpression which is not supported for now.\");\n          return null;\n        }\n\n        operator = operators.dotBracket;\n        break;\n\n      case \"(\":\n        if (noExpr) {\n          (0, _util.warn)(\"XFA - SOM expression contains a JavaScript subexpression which is not supported for now.\");\n          return null;\n        }\n\n        operator = operators.dotParen;\n        break;\n\n      default:\n        operator = operators.dot;\n        break;\n    }\n\n    match = expr.slice(pos).match(namePattern);\n\n    if (!match) {\n      break;\n    }\n\n    [name] = match;\n    pos += name.length;\n    parsed.push({\n      name,\n      cacheName: expr.slice(spos, pos),\n      operator,\n      index: 0,\n      js: null,\n      formCalc: null\n    });\n  }\n\n  return parsed;\n}\n\nfunction searchNode(root, container, expr, dotDotAllowed = true, useCache = true) {\n  const parsed = parseExpression(expr, dotDotAllowed);\n\n  if (!parsed) {\n    return null;\n  }\n\n  const fn = shortcuts.get(parsed[0].name);\n  let i = 0;\n  let isQualified;\n\n  if (fn) {\n    isQualified = true;\n    root = [fn(root, container)];\n    i = 1;\n  } else {\n    isQualified = container === null;\n    root = [container || root];\n  }\n\n  for (let ii = parsed.length; i < ii; i++) {\n    const {\n      name,\n      cacheName,\n      operator,\n      index\n    } = parsed[i];\n    const nodes = [];\n\n    for (const node of root) {\n      if (!(node instanceof _xfa_object.XFAObject)) {\n        continue;\n      }\n\n      let children, cached;\n\n      if (useCache) {\n        cached = somCache.get(node);\n\n        if (!cached) {\n          cached = new Map();\n          somCache.set(node, cached);\n        }\n\n        children = cached.get(cacheName);\n      }\n\n      if (!children) {\n        switch (operator) {\n          case operators.dot:\n            children = node[_xfa_object.$getChildrenByName](name, false);\n            break;\n\n          case operators.dotDot:\n            children = node[_xfa_object.$getChildrenByName](name, true);\n            break;\n\n          case operators.dotHash:\n            children = node[_xfa_object.$getChildrenByClass](name);\n\n            if (children instanceof _xfa_object.XFAObjectArray) {\n              children = children.children;\n            } else {\n              children = [children];\n            }\n\n            break;\n\n          default:\n            break;\n        }\n\n        if (useCache) {\n          cached.set(cacheName, children);\n        }\n      }\n\n      if (children.length > 0) {\n        nodes.push(children);\n      }\n    }\n\n    if (nodes.length === 0 && !isQualified && i === 0) {\n      const parent = container[_xfa_object.$getParent]();\n\n      container = parent;\n\n      if (!container) {\n        return null;\n      }\n\n      i = -1;\n      root = [container];\n      continue;\n    }\n\n    if (isFinite(index)) {\n      root = nodes.filter(node => index < node.length).map(node => node[index]);\n    } else {\n      root = nodes.reduce((acc, node) => acc.concat(node), []);\n    }\n  }\n\n  if (root.length === 0) {\n    return null;\n  }\n\n  return root;\n}\n\nfunction createNodes(root, path) {\n  let node = null;\n\n  for (const {\n    name,\n    index\n  } of path) {\n    for (let i = 0, ii = !isFinite(index) ? 0 : index; i <= ii; i++) {\n      const nsId = root[_xfa_object.$namespaceId] === NS_DATASETS ? -1 : root[_xfa_object.$namespaceId];\n      node = new _xfa_object.XmlObject(nsId, name);\n\n      root[_xfa_object.$appendChild](node);\n    }\n\n    root = node;\n  }\n\n  return node;\n}\n\nfunction createDataNode(root, container, expr) {\n  const parsed = parseExpression(expr);\n\n  if (!parsed) {\n    return null;\n  }\n\n  if (parsed.some(x => x.operator === operators.dotDot)) {\n    return null;\n  }\n\n  const fn = shortcuts.get(parsed[0].name);\n  let i = 0;\n\n  if (fn) {\n    root = fn(root, container);\n    i = 1;\n  } else {\n    root = container || root;\n  }\n\n  for (let ii = parsed.length; i < ii; i++) {\n    const {\n      name,\n      operator,\n      index\n    } = parsed[i];\n\n    if (!isFinite(index)) {\n      parsed[i].index = 0;\n      return createNodes(root, parsed.slice(i));\n    }\n\n    let children;\n\n    switch (operator) {\n      case operators.dot:\n        children = root[_xfa_object.$getChildrenByName](name, false);\n        break;\n\n      case operators.dotDot:\n        children = root[_xfa_object.$getChildrenByName](name, true);\n        break;\n\n      case operators.dotHash:\n        children = root[_xfa_object.$getChildrenByClass](name);\n\n        if (children instanceof _xfa_object.XFAObjectArray) {\n          children = children.children;\n        } else {\n          children = [children];\n        }\n\n        break;\n\n      default:\n        break;\n    }\n\n    if (children.length === 0) {\n      return createNodes(root, parsed.slice(i));\n    }\n\n    if (index < children.length) {\n      const child = children[index];\n\n      if (!(child instanceof _xfa_object.XFAObject)) {\n        (0, _util.warn)(`XFA - Cannot create a node.`);\n        return null;\n      }\n\n      root = child;\n    } else {\n      parsed[i].index = index - children.length;\n      return createNodes(root, parsed.slice(i));\n    }\n  }\n\n  return null;\n}\n\n/***/ }),\n/* 80 */\n/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {\n\n\n\nObject.defineProperty(exports, \"__esModule\", ({\n  value: true\n}));\nexports.Binder = void 0;\n\nvar _xfa_object = __w_pdfjs_require__(76);\n\nvar _template = __w_pdfjs_require__(81);\n\nvar _som = __w_pdfjs_require__(79);\n\nvar _namespaces = __w_pdfjs_require__(78);\n\nvar _util = __w_pdfjs_require__(2);\n\nconst NS_DATASETS = _namespaces.NamespaceIds.datasets.id;\n\nfunction createText(content) {\n  const node = new _template.Text({});\n  node[_xfa_object.$content] = content;\n  return node;\n}\n\nclass Binder {\n  constructor(root) {\n    this.root = root;\n    this.datasets = root.datasets;\n\n    if (root.datasets && root.datasets.data) {\n      this.data = root.datasets.data;\n    } else {\n      this.data = new _xfa_object.XmlObject(_namespaces.NamespaceIds.datasets.id, \"data\");\n    }\n\n    this.emptyMerge = this.data[_xfa_object.$getChildren]().length === 0;\n    this.root.form = this.form = root.template[_xfa_object.$clone]();\n  }\n\n  _isConsumeData() {\n    return !this.emptyMerge && this._mergeMode;\n  }\n\n  _isMatchTemplate() {\n    return !this._isConsumeData();\n  }\n\n  bind() {\n    this._bindElement(this.form, this.data);\n\n    return this.form;\n  }\n\n  getData() {\n    return this.data;\n  }\n\n  _bindValue(formNode, data, picture) {\n    formNode[_xfa_object.$data] = data;\n\n    if (formNode[_xfa_object.$hasSettableValue]()) {\n      if (data[_xfa_object.$isDataValue]()) {\n        const value = data[_xfa_object.$getDataValue]();\n\n        formNode[_xfa_object.$setValue](createText(value));\n      } else if (formNode instanceof _template.Field && formNode.ui && formNode.ui.choiceList && formNode.ui.choiceList.open === \"multiSelect\") {\n        const value = data[_xfa_object.$getChildren]().map(child => child[_xfa_object.$content].trim()).join(\"\\n\");\n\n        formNode[_xfa_object.$setValue](createText(value));\n      } else if (this._isConsumeData()) {\n        (0, _util.warn)(`XFA - Nodes haven't the same type.`);\n      }\n    } else if (!data[_xfa_object.$isDataValue]() || this._isMatchTemplate()) {\n      this._bindElement(formNode, data);\n    } else {\n      (0, _util.warn)(`XFA - Nodes haven't the same type.`);\n    }\n  }\n\n  _findDataByNameToConsume(name, isValue, dataNode, global) {\n    if (!name) {\n      return null;\n    }\n\n    let generator, match;\n\n    for (let i = 0; i < 3; i++) {\n      generator = dataNode[_xfa_object.$getRealChildrenByNameIt](name, false, true);\n\n      while (true) {\n        match = generator.next().value;\n\n        if (!match) {\n          break;\n        }\n\n        if (isValue === match[_xfa_object.$isDataValue]()) {\n          return match;\n        }\n      }\n\n      if (dataNode[_xfa_object.$namespaceId] === _namespaces.NamespaceIds.datasets.id && dataNode[_xfa_object.$nodeName] === \"data\") {\n        break;\n      }\n\n      dataNode = dataNode[_xfa_object.$getParent]();\n    }\n\n    if (!global) {\n      return null;\n    }\n\n    generator = this.data[_xfa_object.$getRealChildrenByNameIt](name, true, false);\n    match = generator.next().value;\n\n    if (match) {\n      return match;\n    }\n\n    generator = this.data[_xfa_object.$getAttributeIt](name, true);\n    match = generator.next().value;\n\n    if (match && match[_xfa_object.$isDataValue]()) {\n      return match;\n    }\n\n    return null;\n  }\n\n  _setProperties(formNode, dataNode) {\n    if (!formNode.hasOwnProperty(\"setProperty\")) {\n      return;\n    }\n\n    for (const {\n      ref,\n      target,\n      connection\n    } of formNode.setProperty.children) {\n      if (connection) {\n        continue;\n      }\n\n      if (!ref) {\n        continue;\n      }\n\n      const nodes = (0, _som.searchNode)(this.root, dataNode, ref, false, false);\n\n      if (!nodes) {\n        (0, _util.warn)(`XFA - Invalid reference: ${ref}.`);\n        continue;\n      }\n\n      const [node] = nodes;\n\n      if (!node[_xfa_object.$isDescendent](this.data)) {\n        (0, _util.warn)(`XFA - Invalid node: must be a data node.`);\n        continue;\n      }\n\n      const targetNodes = (0, _som.searchNode)(this.root, formNode, target, false, false);\n\n      if (!targetNodes) {\n        (0, _util.warn)(`XFA - Invalid target: ${target}.`);\n        continue;\n      }\n\n      const [targetNode] = targetNodes;\n\n      if (!targetNode[_xfa_object.$isDescendent](formNode)) {\n        (0, _util.warn)(`XFA - Invalid target: must be a property or subproperty.`);\n        continue;\n      }\n\n      const targetParent = targetNode[_xfa_object.$getParent]();\n\n      if (targetNode instanceof _template.SetProperty || targetParent instanceof _template.SetProperty) {\n        (0, _util.warn)(`XFA - Invalid target: cannot be a setProperty or one of its properties.`);\n        continue;\n      }\n\n      if (targetNode instanceof _template.BindItems || targetParent instanceof _template.BindItems) {\n        (0, _util.warn)(`XFA - Invalid target: cannot be a bindItems or one of its properties.`);\n        continue;\n      }\n\n      const content = node[_xfa_object.$text]();\n\n      const name = targetNode[_xfa_object.$nodeName];\n\n      if (targetNode instanceof _xfa_object.XFAAttribute) {\n        const attrs = Object.create(null);\n        attrs[name] = content;\n        const obj = Reflect.construct(Object.getPrototypeOf(targetParent).constructor, [attrs]);\n        targetParent[name] = obj[name];\n        continue;\n      }\n\n      if (!targetNode.hasOwnProperty(_xfa_object.$content)) {\n        (0, _util.warn)(`XFA - Invalid node to use in setProperty`);\n        continue;\n      }\n\n      targetNode[_xfa_object.$data] = node;\n      targetNode[_xfa_object.$content] = content;\n\n      targetNode[_xfa_object.$finalize]();\n    }\n  }\n\n  _bindItems(formNode, dataNode) {\n    if (!formNode.hasOwnProperty(\"items\") || !formNode.hasOwnProperty(\"bindItems\") || formNode.bindItems.isEmpty()) {\n      return;\n    }\n\n    for (const item of formNode.items.children) {\n      formNode[_xfa_object.$removeChild](item);\n    }\n\n    formNode.items.clear();\n    const labels = new _template.Items({});\n    const values = new _template.Items({});\n\n    formNode[_xfa_object.$appendChild](labels);\n\n    formNode.items.push(labels);\n\n    formNode[_xfa_object.$appendChild](values);\n\n    formNode.items.push(values);\n\n    for (const {\n      ref,\n      labelRef,\n      valueRef,\n      connection\n    } of formNode.bindItems.children) {\n      if (connection) {\n        continue;\n      }\n\n      if (!ref) {\n        continue;\n      }\n\n      const nodes = (0, _som.searchNode)(this.root, dataNode, ref, false, false);\n\n      if (!nodes) {\n        (0, _util.warn)(`XFA - Invalid reference: ${ref}.`);\n        continue;\n      }\n\n      for (const node of nodes) {\n        if (!node[_xfa_object.$isDescendent](this.datasets)) {\n          (0, _util.warn)(`XFA - Invalid ref (${ref}): must be a datasets child.`);\n          continue;\n        }\n\n        const labelNodes = (0, _som.searchNode)(this.root, node, labelRef, true, false);\n\n        if (!labelNodes) {\n          (0, _util.warn)(`XFA - Invalid label: ${labelRef}.`);\n          continue;\n        }\n\n        const [labelNode] = labelNodes;\n\n        if (!labelNode[_xfa_object.$isDescendent](this.datasets)) {\n          (0, _util.warn)(`XFA - Invalid label: must be a datasets child.`);\n          continue;\n        }\n\n        const valueNodes = (0, _som.searchNode)(this.root, node, valueRef, true, false);\n\n        if (!valueNodes) {\n          (0, _util.warn)(`XFA - Invalid value: ${valueRef}.`);\n          continue;\n        }\n\n        const [valueNode] = valueNodes;\n\n        if (!valueNode[_xfa_object.$isDescendent](this.datasets)) {\n          (0, _util.warn)(`XFA - Invalid value: must be a datasets child.`);\n          continue;\n        }\n\n        const label = createText(labelNode[_xfa_object.$text]());\n        const value = createText(valueNode[_xfa_object.$text]());\n\n        labels[_xfa_object.$appendChild](label);\n\n        labels.text.push(label);\n\n        values[_xfa_object.$appendChild](value);\n\n        values.text.push(value);\n      }\n    }\n  }\n\n  _bindOccurrences(formNode, matches, picture) {\n    let baseClone;\n\n    if (matches.length > 1) {\n      baseClone = formNode[_xfa_object.$clone]();\n\n      baseClone[_xfa_object.$removeChild](baseClone.occur);\n\n      baseClone.occur = null;\n    }\n\n    this._bindValue(formNode, matches[0], picture);\n\n    this._setProperties(formNode, matches[0]);\n\n    this._bindItems(formNode, matches[0]);\n\n    if (matches.length === 1) {\n      return;\n    }\n\n    const parent = formNode[_xfa_object.$getParent]();\n\n    const name = formNode[_xfa_object.$nodeName];\n\n    const pos = parent[_xfa_object.$indexOf](formNode);\n\n    for (let i = 1, ii = matches.length; i < ii; i++) {\n      const match = matches[i];\n\n      const clone = baseClone[_xfa_object.$clone]();\n\n      parent[name].push(clone);\n\n      parent[_xfa_object.$insertAt](pos + i, clone);\n\n      this._bindValue(clone, match, picture);\n\n      this._setProperties(clone, match);\n\n      this._bindItems(clone, match);\n    }\n  }\n\n  _createOccurrences(formNode) {\n    if (!this.emptyMerge) {\n      return;\n    }\n\n    const {\n      occur\n    } = formNode;\n\n    if (!occur || occur.initial <= 1) {\n      return;\n    }\n\n    const parent = formNode[_xfa_object.$getParent]();\n\n    const name = formNode[_xfa_object.$nodeName];\n\n    if (!(parent[name] instanceof _xfa_object.XFAObjectArray)) {\n      return;\n    }\n\n    let currentNumber;\n\n    if (formNode.name) {\n      currentNumber = parent[name].children.filter(e => e.name === formNode.name).length;\n    } else {\n      currentNumber = parent[name].children.length;\n    }\n\n    const pos = parent[_xfa_object.$indexOf](formNode) + 1;\n    const ii = occur.initial - currentNumber;\n\n    if (ii) {\n      const nodeClone = formNode[_xfa_object.$clone]();\n\n      nodeClone[_xfa_object.$removeChild](nodeClone.occur);\n\n      nodeClone.occur = null;\n      parent[name].push(nodeClone);\n\n      parent[_xfa_object.$insertAt](pos, nodeClone);\n\n      for (let i = 1; i < ii; i++) {\n        const clone = nodeClone[_xfa_object.$clone]();\n\n        parent[name].push(clone);\n\n        parent[_xfa_object.$insertAt](pos + i, clone);\n      }\n    }\n  }\n\n  _getOccurInfo(formNode) {\n    const {\n      name,\n      occur\n    } = formNode;\n\n    if (!occur || !name) {\n      return [1, 1];\n    }\n\n    const max = occur.max === -1 ? Infinity : occur.max;\n    return [occur.min, max];\n  }\n\n  _setAndBind(formNode, dataNode) {\n    this._setProperties(formNode, dataNode);\n\n    this._bindItems(formNode, dataNode);\n\n    this._bindElement(formNode, dataNode);\n  }\n\n  _bindElement(formNode, dataNode) {\n    const uselessNodes = [];\n\n    this._createOccurrences(formNode);\n\n    for (const child of formNode[_xfa_object.$getChildren]()) {\n      if (child[_xfa_object.$data]) {\n        continue;\n      }\n\n      if (this._mergeMode === undefined && child[_xfa_object.$nodeName] === \"subform\") {\n        this._mergeMode = child.mergeMode === \"consumeData\";\n\n        const dataChildren = dataNode[_xfa_object.$getChildren]();\n\n        if (dataChildren.length > 0) {\n          this._bindOccurrences(child, [dataChildren[0]], null);\n        } else if (this.emptyMerge) {\n          const nsId = dataNode[_xfa_object.$namespaceId] === NS_DATASETS ? -1 : dataNode[_xfa_object.$namespaceId];\n          const dataChild = child[_xfa_object.$data] = new _xfa_object.XmlObject(nsId, child.name || \"root\");\n\n          dataNode[_xfa_object.$appendChild](dataChild);\n\n          this._bindElement(child, dataChild);\n        }\n\n        continue;\n      }\n\n      if (!child[_xfa_object.$isBindable]()) {\n        continue;\n      }\n\n      let global = false;\n      let picture = null;\n      let ref = null;\n      let match = null;\n\n      if (child.bind) {\n        switch (child.bind.match) {\n          case \"none\":\n            this._setAndBind(child, dataNode);\n\n            continue;\n\n          case \"global\":\n            global = true;\n            break;\n\n          case \"dataRef\":\n            if (!child.bind.ref) {\n              (0, _util.warn)(`XFA - ref is empty in node ${child[_xfa_object.$nodeName]}.`);\n\n              this._setAndBind(child, dataNode);\n\n              continue;\n            }\n\n            ref = child.bind.ref;\n            break;\n\n          default:\n            break;\n        }\n\n        if (child.bind.picture) {\n          picture = child.bind.picture[_xfa_object.$content];\n        }\n      }\n\n      const [min, max] = this._getOccurInfo(child);\n\n      if (ref) {\n        match = (0, _som.searchNode)(this.root, dataNode, ref, true, false);\n\n        if (match === null) {\n          match = (0, _som.createDataNode)(this.data, dataNode, ref);\n\n          if (!match) {\n            continue;\n          }\n\n          if (this._isConsumeData()) {\n            match[_xfa_object.$consumed] = true;\n          }\n\n          this._setAndBind(child, match);\n\n          continue;\n        } else {\n          if (this._isConsumeData()) {\n            match = match.filter(node => !node[_xfa_object.$consumed]);\n          }\n\n          if (match.length > max) {\n            match = match.slice(0, max);\n          } else if (match.length === 0) {\n            match = null;\n          }\n\n          if (match && this._isConsumeData()) {\n            match.forEach(node => {\n              node[_xfa_object.$consumed] = true;\n            });\n          }\n        }\n      } else {\n        if (!child.name) {\n          this._setAndBind(child, dataNode);\n\n          continue;\n        }\n\n        if (this._isConsumeData()) {\n          const matches = [];\n\n          while (matches.length < max) {\n            const found = this._findDataByNameToConsume(child.name, child[_xfa_object.$hasSettableValue](), dataNode, global);\n\n            if (!found) {\n              break;\n            }\n\n            found[_xfa_object.$consumed] = true;\n            matches.push(found);\n          }\n\n          match = matches.length > 0 ? matches : null;\n        } else {\n          match = dataNode[_xfa_object.$getRealChildrenByNameIt](child.name, false, this.emptyMerge).next().value;\n\n          if (!match) {\n            if (min === 0) {\n              uselessNodes.push(child);\n              continue;\n            }\n\n            const nsId = dataNode[_xfa_object.$namespaceId] === NS_DATASETS ? -1 : dataNode[_xfa_object.$namespaceId];\n            match = child[_xfa_object.$data] = new _xfa_object.XmlObject(nsId, child.name);\n\n            if (this.emptyMerge) {\n              match[_xfa_object.$consumed] = true;\n            }\n\n            dataNode[_xfa_object.$appendChild](match);\n\n            this._setAndBind(child, match);\n\n            continue;\n          }\n\n          if (this.emptyMerge) {\n            match[_xfa_object.$consumed] = true;\n          }\n\n          match = [match];\n        }\n      }\n\n      if (match) {\n        this._bindOccurrences(child, match, picture);\n      } else if (min > 0) {\n        this._setAndBind(child, dataNode);\n      } else {\n        uselessNodes.push(child);\n      }\n    }\n\n    uselessNodes.forEach(node => node[_xfa_object.$getParent]()[_xfa_object.$removeChild](node));\n  }\n\n}\n\nexports.Binder = Binder;\n\n/***/ }),\n/* 81 */\n/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {\n\n\n\nObject.defineProperty(exports, \"__esModule\", ({\n  value: true\n}));\nexports.Value = exports.Text = exports.TemplateNamespace = exports.Template = exports.SetProperty = exports.Items = exports.Field = exports.BindItems = void 0;\n\nvar _xfa_object = __w_pdfjs_require__(76);\n\nvar _namespaces = __w_pdfjs_require__(78);\n\nvar _layout = __w_pdfjs_require__(82);\n\nvar _html_utils = __w_pdfjs_require__(83);\n\nvar _utils = __w_pdfjs_require__(77);\n\nvar _util = __w_pdfjs_require__(2);\n\nvar _fonts = __w_pdfjs_require__(84);\n\nvar _core_utils = __w_pdfjs_require__(8);\n\nvar _som = __w_pdfjs_require__(79);\n\nconst TEMPLATE_NS_ID = _namespaces.NamespaceIds.template.id;\nconst SVG_NS = \"http://www.w3.org/2000/svg\";\nconst MAX_ATTEMPTS_FOR_LRTB_LAYOUT = 2;\nconst MAX_EMPTY_PAGES = 3;\nconst DEFAULT_TAB_INDEX = 5000;\nconst HEADING_PATTERN = /^H(\\d+)$/;\nconst MIMES = new Set([\"image/gif\", \"image/jpeg\", \"image/jpg\", \"image/pjpeg\", \"image/png\", \"image/apng\", \"image/x-png\", \"image/bmp\", \"image/x-ms-bmp\", \"image/tiff\", \"image/tif\", \"application/octet-stream\"]);\nconst IMAGES_HEADERS = [[[0x42, 0x4d], \"image/bmp\"], [[0xff, 0xd8, 0xff], \"image/jpeg\"], [[0x49, 0x49, 0x2a, 0x00], \"image/tiff\"], [[0x4d, 0x4d, 0x00, 0x2a], \"image/tiff\"], [[0x47, 0x49, 0x46, 0x38, 0x39, 0x61], \"image/gif\"], [[0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a], \"image/png\"]];\n\nfunction getBorderDims(node) {\n  if (!node || !node.border) {\n    return {\n      w: 0,\n      h: 0\n    };\n  }\n\n  const borderExtra = node.border[_xfa_object.$getExtra]();\n\n  if (!borderExtra) {\n    return {\n      w: 0,\n      h: 0\n    };\n  }\n\n  return {\n    w: borderExtra.widths[0] + borderExtra.widths[2] + borderExtra.insets[0] + borderExtra.insets[2],\n    h: borderExtra.widths[1] + borderExtra.widths[3] + borderExtra.insets[1] + borderExtra.insets[3]\n  };\n}\n\nfunction hasMargin(node) {\n  return node.margin && (node.margin.topInset || node.margin.rightInset || node.margin.bottomInset || node.margin.leftInset);\n}\n\nfunction _setValue(templateNode, value) {\n  if (!templateNode.value) {\n    const nodeValue = new Value({});\n\n    templateNode[_xfa_object.$appendChild](nodeValue);\n\n    templateNode.value = nodeValue;\n  }\n\n  templateNode.value[_xfa_object.$setValue](value);\n}\n\nfunction* getContainedChildren(node) {\n  for (const child of node[_xfa_object.$getChildren]()) {\n    if (child instanceof SubformSet) {\n      yield* child[_xfa_object.$getContainedChildren]();\n      continue;\n    }\n\n    yield child;\n  }\n}\n\nfunction setTabIndex(node) {\n  while (node) {\n    if (!node.traversal) {\n      node[_xfa_object.$tabIndex] = node[_xfa_object.$getParent]()[_xfa_object.$tabIndex];\n      return;\n    }\n\n    if (node[_xfa_object.$tabIndex]) {\n      return;\n    }\n\n    let next = null;\n\n    for (const child of node.traversal[_xfa_object.$getChildren]()) {\n      if (child.operation === \"next\") {\n        next = child;\n        break;\n      }\n    }\n\n    if (!next || !next.ref) {\n      node[_xfa_object.$tabIndex] = node[_xfa_object.$getParent]()[_xfa_object.$tabIndex];\n      return;\n    }\n\n    const root = node[_xfa_object.$getTemplateRoot]();\n\n    node[_xfa_object.$tabIndex] = ++root[_xfa_object.$tabIndex];\n\n    const ref = root[_xfa_object.$searchNode](next.ref, node);\n\n    if (!ref) {\n      return;\n    }\n\n    node = ref[0];\n  }\n}\n\nfunction applyAssist(obj, attributes) {\n  const assist = obj.assist;\n\n  if (assist) {\n    const assistTitle = assist[_xfa_object.$toHTML]();\n\n    if (assistTitle) {\n      attributes.title = assistTitle;\n    }\n\n    const role = assist.role;\n    const match = role.match(HEADING_PATTERN);\n\n    if (match) {\n      const ariaRole = \"heading\";\n      const ariaLevel = match[1];\n      attributes.role = ariaRole;\n      attributes[\"aria-level\"] = ariaLevel;\n    }\n  }\n\n  if (obj.layout === \"table\") {\n    attributes.role = \"table\";\n  } else if (obj.layout === \"row\") {\n    attributes.role = \"row\";\n  } else {\n    const parent = obj[_xfa_object.$getParent]();\n\n    if (parent.layout === \"row\") {\n      if (parent.assist && parent.assist.role === \"TH\") {\n        attributes.role = \"columnheader\";\n      } else {\n        attributes.role = \"cell\";\n      }\n    }\n  }\n}\n\nfunction ariaLabel(obj) {\n  if (!obj.assist) {\n    return null;\n  }\n\n  const assist = obj.assist;\n\n  if (assist.speak && assist.speak[_xfa_object.$content] !== \"\") {\n    return assist.speak[_xfa_object.$content];\n  }\n\n  if (assist.toolTip) {\n    return assist.toolTip[_xfa_object.$content];\n  }\n\n  return null;\n}\n\nfunction valueToHtml(value) {\n  return _utils.HTMLResult.success({\n    name: \"div\",\n    attributes: {\n      class: [\"xfaRich\"],\n      style: Object.create(null)\n    },\n    children: [{\n      name: \"span\",\n      attributes: {\n        style: Object.create(null)\n      },\n      value\n    }]\n  });\n}\n\nfunction setFirstUnsplittable(node) {\n  const root = node[_xfa_object.$getTemplateRoot]();\n\n  if (root[_xfa_object.$extra].firstUnsplittable === null) {\n    root[_xfa_object.$extra].firstUnsplittable = node;\n    root[_xfa_object.$extra].noLayoutFailure = true;\n  }\n}\n\nfunction unsetFirstUnsplittable(node) {\n  const root = node[_xfa_object.$getTemplateRoot]();\n\n  if (root[_xfa_object.$extra].firstUnsplittable === node) {\n    root[_xfa_object.$extra].noLayoutFailure = false;\n  }\n}\n\nfunction handleBreak(node) {\n  if (node[_xfa_object.$extra]) {\n    return false;\n  }\n\n  node[_xfa_object.$extra] = Object.create(null);\n\n  if (node.targetType === \"auto\") {\n    return false;\n  }\n\n  const root = node[_xfa_object.$getTemplateRoot]();\n\n  let target = null;\n\n  if (node.target) {\n    target = root[_xfa_object.$searchNode](node.target, node[_xfa_object.$getParent]());\n\n    if (!target) {\n      return false;\n    }\n\n    target = target[0];\n  }\n\n  const {\n    currentPageArea,\n    currentContentArea\n  } = root[_xfa_object.$extra];\n\n  if (node.targetType === \"pageArea\") {\n    if (!(target instanceof PageArea)) {\n      target = null;\n    }\n\n    if (node.startNew) {\n      node[_xfa_object.$extra].target = target || currentPageArea;\n      return true;\n    } else if (target && target !== currentPageArea) {\n      node[_xfa_object.$extra].target = target;\n      return true;\n    }\n\n    return false;\n  }\n\n  if (!(target instanceof ContentArea)) {\n    target = null;\n  }\n\n  const pageArea = target && target[_xfa_object.$getParent]();\n\n  let index;\n  let nextPageArea = pageArea;\n\n  if (node.startNew) {\n    if (target) {\n      const contentAreas = pageArea.contentArea.children;\n      const indexForCurrent = contentAreas.indexOf(currentContentArea);\n      const indexForTarget = contentAreas.indexOf(target);\n\n      if (indexForCurrent !== -1 && indexForCurrent < indexForTarget) {\n        nextPageArea = null;\n      }\n\n      index = indexForTarget - 1;\n    } else {\n      index = currentPageArea.contentArea.children.indexOf(currentContentArea);\n    }\n  } else if (target && target !== currentContentArea) {\n    const contentAreas = pageArea.contentArea.children;\n    index = contentAreas.indexOf(target) - 1;\n    nextPageArea = pageArea === currentPageArea ? null : pageArea;\n  } else {\n    return false;\n  }\n\n  node[_xfa_object.$extra].target = nextPageArea;\n  node[_xfa_object.$extra].index = index;\n  return true;\n}\n\nfunction handleOverflow(node, extraNode, space) {\n  const root = node[_xfa_object.$getTemplateRoot]();\n\n  const saved = root[_xfa_object.$extra].noLayoutFailure;\n  const savedMethod = extraNode[_xfa_object.$getSubformParent];\n\n  extraNode[_xfa_object.$getSubformParent] = () => node;\n\n  root[_xfa_object.$extra].noLayoutFailure = true;\n\n  const res = extraNode[_xfa_object.$toHTML](space);\n\n  node[_xfa_object.$addHTML](res.html, res.bbox);\n\n  root[_xfa_object.$extra].noLayoutFailure = saved;\n  extraNode[_xfa_object.$getSubformParent] = savedMethod;\n}\n\nclass AppearanceFilter extends _xfa_object.StringObject {\n  constructor(attributes) {\n    super(TEMPLATE_NS_ID, \"appearanceFilter\");\n    this.id = attributes.id || \"\";\n    this.type = (0, _utils.getStringOption)(attributes.type, [\"optional\", \"required\"]);\n    this.use = attributes.use || \"\";\n    this.usehref = attributes.usehref || \"\";\n  }\n\n}\n\nclass Arc extends _xfa_object.XFAObject {\n  constructor(attributes) {\n    super(TEMPLATE_NS_ID, \"arc\", true);\n    this.circular = (0, _utils.getInteger)({\n      data: attributes.circular,\n      defaultValue: 0,\n      validate: x => x === 1\n    });\n    this.hand = (0, _utils.getStringOption)(attributes.hand, [\"even\", \"left\", \"right\"]);\n    this.id = attributes.id || \"\";\n    this.startAngle = (0, _utils.getFloat)({\n      data: attributes.startAngle,\n      defaultValue: 0,\n      validate: x => true\n    });\n    this.sweepAngle = (0, _utils.getFloat)({\n      data: attributes.sweepAngle,\n      defaultValue: 360,\n      validate: x => true\n    });\n    this.use = attributes.use || \"\";\n    this.usehref = attributes.usehref || \"\";\n    this.edge = null;\n    this.fill = null;\n  }\n\n  [_xfa_object.$toHTML]() {\n    const edge = this.edge ? this.edge : new Edge({});\n\n    const edgeStyle = edge[_xfa_object.$toStyle]();\n\n    const style = Object.create(null);\n\n    if (this.fill && this.fill.presence === \"visible\") {\n      Object.assign(style, this.fill[_xfa_object.$toStyle]());\n    } else {\n      style.fill = \"transparent\";\n    }\n\n    style.strokeWidth = (0, _html_utils.measureToString)(edge.presence === \"visible\" ? edge.thickness : 0);\n    style.stroke = edgeStyle.color;\n    let arc;\n    const attributes = {\n      xmlns: SVG_NS,\n      style: {\n        width: \"100%\",\n        height: \"100%\",\n        overflow: \"visible\"\n      }\n    };\n\n    if (this.sweepAngle === 360) {\n      arc = {\n        name: \"ellipse\",\n        attributes: {\n          xmlns: SVG_NS,\n          cx: \"50%\",\n          cy: \"50%\",\n          rx: \"50%\",\n          ry: \"50%\",\n          style\n        }\n      };\n    } else {\n      const startAngle = this.startAngle * Math.PI / 180;\n      const sweepAngle = this.sweepAngle * Math.PI / 180;\n      const largeArc = this.sweepAngle > 180 ? 1 : 0;\n      const [x1, y1, x2, y2] = [50 * (1 + Math.cos(startAngle)), 50 * (1 - Math.sin(startAngle)), 50 * (1 + Math.cos(startAngle + sweepAngle)), 50 * (1 - Math.sin(startAngle + sweepAngle))];\n      arc = {\n        name: \"path\",\n        attributes: {\n          xmlns: SVG_NS,\n          d: `M ${x1} ${y1} A 50 50 0 ${largeArc} 0 ${x2} ${y2}`,\n          vectorEffect: \"non-scaling-stroke\",\n          style\n        }\n      };\n      Object.assign(attributes, {\n        viewBox: \"0 0 100 100\",\n        preserveAspectRatio: \"none\"\n      });\n    }\n\n    const svg = {\n      name: \"svg\",\n      children: [arc],\n      attributes\n    };\n\n    const parent = this[_xfa_object.$getParent]()[_xfa_object.$getParent]();\n\n    if (hasMargin(parent)) {\n      return _utils.HTMLResult.success({\n        name: \"div\",\n        attributes: {\n          style: {\n            display: \"inline\",\n            width: \"100%\",\n            height: \"100%\"\n          }\n        },\n        children: [svg]\n      });\n    }\n\n    svg.attributes.style.position = \"absolute\";\n    return _utils.HTMLResult.success(svg);\n  }\n\n}\n\nclass Area extends _xfa_object.XFAObject {\n  constructor(attributes) {\n    super(TEMPLATE_NS_ID, \"area\", true);\n    this.colSpan = (0, _utils.getInteger)({\n      data: attributes.colSpan,\n      defaultValue: 1,\n      validate: n => n >= 1 || n === -1\n    });\n    this.id = attributes.id || \"\";\n    this.name = attributes.name || \"\";\n    this.relevant = (0, _utils.getRelevant)(attributes.relevant);\n    this.use = attributes.use || \"\";\n    this.usehref = attributes.usehref || \"\";\n    this.x = (0, _utils.getMeasurement)(attributes.x, \"0pt\");\n    this.y = (0, _utils.getMeasurement)(attributes.y, \"0pt\");\n    this.desc = null;\n    this.extras = null;\n    this.area = new _xfa_object.XFAObjectArray();\n    this.draw = new _xfa_object.XFAObjectArray();\n    this.exObject = new _xfa_object.XFAObjectArray();\n    this.exclGroup = new _xfa_object.XFAObjectArray();\n    this.field = new _xfa_object.XFAObjectArray();\n    this.subform = new _xfa_object.XFAObjectArray();\n    this.subformSet = new _xfa_object.XFAObjectArray();\n  }\n\n  *[_xfa_object.$getContainedChildren]() {\n    yield* getContainedChildren(this);\n  }\n\n  [_xfa_object.$isTransparent]() {\n    return true;\n  }\n\n  [_xfa_object.$isBindable]() {\n    return true;\n  }\n\n  [_xfa_object.$addHTML](html, bbox) {\n    const [x, y, w, h] = bbox;\n    this[_xfa_object.$extra].width = Math.max(this[_xfa_object.$extra].width, x + w);\n    this[_xfa_object.$extra].height = Math.max(this[_xfa_object.$extra].height, y + h);\n\n    this[_xfa_object.$extra].children.push(html);\n  }\n\n  [_xfa_object.$getAvailableSpace]() {\n    return this[_xfa_object.$extra].availableSpace;\n  }\n\n  [_xfa_object.$toHTML](availableSpace) {\n    const style = (0, _html_utils.toStyle)(this, \"position\");\n    const attributes = {\n      style,\n      id: this[_xfa_object.$uid],\n      class: [\"xfaArea\"]\n    };\n\n    if ((0, _html_utils.isPrintOnly)(this)) {\n      attributes.class.push(\"xfaPrintOnly\");\n    }\n\n    if (this.name) {\n      attributes.xfaName = this.name;\n    }\n\n    const children = [];\n    this[_xfa_object.$extra] = {\n      children,\n      width: 0,\n      height: 0,\n      availableSpace\n    };\n\n    const result = this[_xfa_object.$childrenToHTML]({\n      filter: new Set([\"area\", \"draw\", \"field\", \"exclGroup\", \"subform\", \"subformSet\"]),\n      include: true\n    });\n\n    if (!result.success) {\n      if (result.isBreak()) {\n        return result;\n      }\n\n      delete this[_xfa_object.$extra];\n      return _utils.HTMLResult.FAILURE;\n    }\n\n    style.width = (0, _html_utils.measureToString)(this[_xfa_object.$extra].width);\n    style.height = (0, _html_utils.measureToString)(this[_xfa_object.$extra].height);\n    const html = {\n      name: \"div\",\n      attributes,\n      children\n    };\n    const bbox = [this.x, this.y, this[_xfa_object.$extra].width, this[_xfa_object.$extra].height];\n    delete this[_xfa_object.$extra];\n    return _utils.HTMLResult.success(html, bbox);\n  }\n\n}\n\nclass Assist extends _xfa_object.XFAObject {\n  constructor(attributes) {\n    super(TEMPLATE_NS_ID, \"assist\", true);\n    this.id = attributes.id || \"\";\n    this.role = attributes.role || \"\";\n    this.use = attributes.use || \"\";\n    this.usehref = attributes.usehref || \"\";\n    this.speak = null;\n    this.toolTip = null;\n  }\n\n  [_xfa_object.$toHTML]() {\n    return this.toolTip && this.toolTip[_xfa_object.$content] ? this.toolTip[_xfa_object.$content] : null;\n  }\n\n}\n\nclass Barcode extends _xfa_object.XFAObject {\n  constructor(attributes) {\n    super(TEMPLATE_NS_ID, \"barcode\", true);\n    this.charEncoding = (0, _utils.getKeyword)({\n      data: attributes.charEncoding ? attributes.charEncoding.toLowerCase() : \"\",\n      defaultValue: \"\",\n      validate: k => [\"utf-8\", \"big-five\", \"fontspecific\", \"gbk\", \"gb-18030\", \"gb-2312\", \"ksc-5601\", \"none\", \"shift-jis\", \"ucs-2\", \"utf-16\"].includes(k) || k.match(/iso-8859-\\d{2}/)\n    });\n    this.checksum = (0, _utils.getStringOption)(attributes.checksum, [\"none\", \"1mod10\", \"1mod10_1mod11\", \"2mod10\", \"auto\"]);\n    this.dataColumnCount = (0, _utils.getInteger)({\n      data: attributes.dataColumnCount,\n      defaultValue: -1,\n      validate: x => x >= 0\n    });\n    this.dataLength = (0, _utils.getInteger)({\n      data: attributes.dataLength,\n      defaultValue: -1,\n      validate: x => x >= 0\n    });\n    this.dataPrep = (0, _utils.getStringOption)(attributes.dataPrep, [\"none\", \"flateCompress\"]);\n    this.dataRowCount = (0, _utils.getInteger)({\n      data: attributes.dataRowCount,\n      defaultValue: -1,\n      validate: x => x >= 0\n    });\n    this.endChar = attributes.endChar || \"\";\n    this.errorCorrectionLevel = (0, _utils.getInteger)({\n      data: attributes.errorCorrectionLevel,\n      defaultValue: -1,\n      validate: x => x >= 0 && x <= 8\n    });\n    this.id = attributes.id || \"\";\n    this.moduleHeight = (0, _utils.getMeasurement)(attributes.moduleHeight, \"5mm\");\n    this.moduleWidth = (0, _utils.getMeasurement)(attributes.moduleWidth, \"0.25mm\");\n    this.printCheckDigit = (0, _utils.getInteger)({\n      data: attributes.printCheckDigit,\n      defaultValue: 0,\n      validate: x => x === 1\n    });\n    this.rowColumnRatio = (0, _utils.getRatio)(attributes.rowColumnRatio);\n    this.startChar = attributes.startChar || \"\";\n    this.textLocation = (0, _utils.getStringOption)(attributes.textLocation, [\"below\", \"above\", \"aboveEmbedded\", \"belowEmbedded\", \"none\"]);\n    this.truncate = (0, _utils.getInteger)({\n      data: attributes.truncate,\n      defaultValue: 0,\n      validate: x => x === 1\n    });\n    this.type = (0, _utils.getStringOption)(attributes.type ? attributes.type.toLowerCase() : \"\", [\"aztec\", \"codabar\", \"code2of5industrial\", \"code2of5interleaved\", \"code2of5matrix\", \"code2of5standard\", \"code3of9\", \"code3of9extended\", \"code11\", \"code49\", \"code93\", \"code128\", \"code128a\", \"code128b\", \"code128c\", \"code128sscc\", \"datamatrix\", \"ean8\", \"ean8add2\", \"ean8add5\", \"ean13\", \"ean13add2\", \"ean13add5\", \"ean13pwcd\", \"fim\", \"logmars\", \"maxicode\", \"msi\", \"pdf417\", \"pdf417macro\", \"plessey\", \"postauscust2\", \"postauscust3\", \"postausreplypaid\", \"postausstandard\", \"postukrm4scc\", \"postusdpbc\", \"postusimb\", \"postusstandard\", \"postus5zip\", \"qrcode\", \"rfid\", \"rss14\", \"rss14expanded\", \"rss14limited\", \"rss14stacked\", \"rss14stackedomni\", \"rss14truncated\", \"telepen\", \"ucc128\", \"ucc128random\", \"ucc128sscc\", \"upca\", \"upcaadd2\", \"upcaadd5\", \"upcapwcd\", \"upce\", \"upceadd2\", \"upceadd5\", \"upcean2\", \"upcean5\", \"upsmaxicode\"]);\n    this.upsMode = (0, _utils.getStringOption)(attributes.upsMode, [\"usCarrier\", \"internationalCarrier\", \"secureSymbol\", \"standardSymbol\"]);\n    this.use = attributes.use || \"\";\n    this.usehref = attributes.usehref || \"\";\n    this.wideNarrowRatio = (0, _utils.getRatio)(attributes.wideNarrowRatio);\n    this.encrypt = null;\n    this.extras = null;\n  }\n\n}\n\nclass Bind extends _xfa_object.XFAObject {\n  constructor(attributes) {\n    super(TEMPLATE_NS_ID, \"bind\", true);\n    this.match = (0, _utils.getStringOption)(attributes.match, [\"once\", \"dataRef\", \"global\", \"none\"]);\n    this.ref = attributes.ref || \"\";\n    this.picture = null;\n  }\n\n}\n\nclass BindItems extends _xfa_object.XFAObject {\n  constructor(attributes) {\n    super(TEMPLATE_NS_ID, \"bindItems\");\n    this.connection = attributes.connection || \"\";\n    this.labelRef = attributes.labelRef || \"\";\n    this.ref = attributes.ref || \"\";\n    this.valueRef = attributes.valueRef || \"\";\n  }\n\n}\n\nexports.BindItems = BindItems;\n\nclass Bookend extends _xfa_object.XFAObject {\n  constructor(attributes) {\n    super(TEMPLATE_NS_ID, \"bookend\");\n    this.id = attributes.id || \"\";\n    this.leader = attributes.leader || \"\";\n    this.trailer = attributes.trailer || \"\";\n    this.use = attributes.use || \"\";\n    this.usehref = attributes.usehref || \"\";\n  }\n\n}\n\nclass BooleanElement extends _xfa_object.Option01 {\n  constructor(attributes) {\n    super(TEMPLATE_NS_ID, \"boolean\");\n    this.id = attributes.id || \"\";\n    this.name = attributes.name || \"\";\n    this.use = attributes.use || \"\";\n    this.usehref = attributes.usehref || \"\";\n  }\n\n  [_xfa_object.$toHTML](availableSpace) {\n    return valueToHtml(this[_xfa_object.$content] === 1 ? \"1\" : \"0\");\n  }\n\n}\n\nclass Border extends _xfa_object.XFAObject {\n  constructor(attributes) {\n    super(TEMPLATE_NS_ID, \"border\", true);\n    this.break = (0, _utils.getStringOption)(attributes.break, [\"close\", \"open\"]);\n    this.hand = (0, _utils.getStringOption)(attributes.hand, [\"even\", \"left\", \"right\"]);\n    this.id = attributes.id || \"\";\n    this.presence = (0, _utils.getStringOption)(attributes.presence, [\"visible\", \"hidden\", \"inactive\", \"invisible\"]);\n    this.relevant = (0, _utils.getRelevant)(attributes.relevant);\n    this.use = attributes.use || \"\";\n    this.usehref = attributes.usehref || \"\";\n    this.corner = new _xfa_object.XFAObjectArray(4);\n    this.edge = new _xfa_object.XFAObjectArray(4);\n    this.extras = null;\n    this.fill = null;\n    this.margin = null;\n  }\n\n  [_xfa_object.$getExtra]() {\n    if (!this[_xfa_object.$extra]) {\n      const edges = this.edge.children.slice();\n\n      if (edges.length < 4) {\n        const defaultEdge = edges[edges.length - 1] || new Edge({});\n\n        for (let i = edges.length; i < 4; i++) {\n          edges.push(defaultEdge);\n        }\n      }\n\n      const widths = edges.map(edge => edge.thickness);\n      const insets = [0, 0, 0, 0];\n\n      if (this.margin) {\n        insets[0] = this.margin.topInset;\n        insets[1] = this.margin.rightInset;\n        insets[2] = this.margin.bottomInset;\n        insets[3] = this.margin.leftInset;\n      }\n\n      this[_xfa_object.$extra] = {\n        widths,\n        insets,\n        edges\n      };\n    }\n\n    return this[_xfa_object.$extra];\n  }\n\n  [_xfa_object.$toStyle]() {\n    const {\n      edges\n    } = this[_xfa_object.$getExtra]();\n\n    const edgeStyles = edges.map(node => {\n      const style = node[_xfa_object.$toStyle]();\n\n      style.color = style.color || \"#000000\";\n      return style;\n    });\n    const style = Object.create(null);\n\n    if (this.margin) {\n      Object.assign(style, this.margin[_xfa_object.$toStyle]());\n    }\n\n    if (this.fill && this.fill.presence === \"visible\") {\n      Object.assign(style, this.fill[_xfa_object.$toStyle]());\n    }\n\n    if (this.corner.children.some(node => node.radius !== 0)) {\n      const cornerStyles = this.corner.children.map(node => node[_xfa_object.$toStyle]());\n\n      if (cornerStyles.length === 2 || cornerStyles.length === 3) {\n        const last = cornerStyles[cornerStyles.length - 1];\n\n        for (let i = cornerStyles.length; i < 4; i++) {\n          cornerStyles.push(last);\n        }\n      }\n\n      style.borderRadius = cornerStyles.map(s => s.radius).join(\" \");\n    }\n\n    switch (this.presence) {\n      case \"invisible\":\n      case \"hidden\":\n        style.borderStyle = \"\";\n        break;\n\n      case \"inactive\":\n        style.borderStyle = \"none\";\n        break;\n\n      default:\n        style.borderStyle = edgeStyles.map(s => s.style).join(\" \");\n        break;\n    }\n\n    style.borderWidth = edgeStyles.map(s => s.width).join(\" \");\n    style.borderColor = edgeStyles.map(s => s.color).join(\" \");\n    return style;\n  }\n\n}\n\nclass Break extends _xfa_object.XFAObject {\n  constructor(attributes) {\n    super(TEMPLATE_NS_ID, \"break\", true);\n    this.after = (0, _utils.getStringOption)(attributes.after, [\"auto\", \"contentArea\", \"pageArea\", \"pageEven\", \"pageOdd\"]);\n    this.afterTarget = attributes.afterTarget || \"\";\n    this.before = (0, _utils.getStringOption)(attributes.before, [\"auto\", \"contentArea\", \"pageArea\", \"pageEven\", \"pageOdd\"]);\n    this.beforeTarget = attributes.beforeTarget || \"\";\n    this.bookendLeader = attributes.bookendLeader || \"\";\n    this.bookendTrailer = attributes.bookendTrailer || \"\";\n    this.id = attributes.id || \"\";\n    this.overflowLeader = attributes.overflowLeader || \"\";\n    this.overflowTarget = attributes.overflowTarget || \"\";\n    this.overflowTrailer = attributes.overflowTrailer || \"\";\n    this.startNew = (0, _utils.getInteger)({\n      data: attributes.startNew,\n      defaultValue: 0,\n      validate: x => x === 1\n    });\n    this.use = attributes.use || \"\";\n    this.usehref = attributes.usehref || \"\";\n    this.extras = null;\n  }\n\n}\n\nclass BreakAfter extends _xfa_object.XFAObject {\n  constructor(attributes) {\n    super(TEMPLATE_NS_ID, \"breakAfter\", true);\n    this.id = attributes.id || \"\";\n    this.leader = attributes.leader || \"\";\n    this.startNew = (0, _utils.getInteger)({\n      data: attributes.startNew,\n      defaultValue: 0,\n      validate: x => x === 1\n    });\n    this.target = attributes.target || \"\";\n    this.targetType = (0, _utils.getStringOption)(attributes.targetType, [\"auto\", \"contentArea\", \"pageArea\"]);\n    this.trailer = attributes.trailer || \"\";\n    this.use = attributes.use || \"\";\n    this.usehref = attributes.usehref || \"\";\n    this.script = null;\n  }\n\n}\n\nclass BreakBefore extends _xfa_object.XFAObject {\n  constructor(attributes) {\n    super(TEMPLATE_NS_ID, \"breakBefore\", true);\n    this.id = attributes.id || \"\";\n    this.leader = attributes.leader || \"\";\n    this.startNew = (0, _utils.getInteger)({\n      data: attributes.startNew,\n      defaultValue: 0,\n      validate: x => x === 1\n    });\n    this.target = attributes.target || \"\";\n    this.targetType = (0, _utils.getStringOption)(attributes.targetType, [\"auto\", \"contentArea\", \"pageArea\"]);\n    this.trailer = attributes.trailer || \"\";\n    this.use = attributes.use || \"\";\n    this.usehref = attributes.usehref || \"\";\n    this.script = null;\n  }\n\n  [_xfa_object.$toHTML](availableSpace) {\n    this[_xfa_object.$extra] = {};\n    return _utils.HTMLResult.FAILURE;\n  }\n\n}\n\nclass Button extends _xfa_object.XFAObject {\n  constructor(attributes) {\n    super(TEMPLATE_NS_ID, \"button\", true);\n    this.highlight = (0, _utils.getStringOption)(attributes.highlight, [\"inverted\", \"none\", \"outline\", \"push\"]);\n    this.id = attributes.id || \"\";\n    this.use = attributes.use || \"\";\n    this.usehref = attributes.usehref || \"\";\n    this.extras = null;\n  }\n\n  [_xfa_object.$toHTML](availableSpace) {\n    const parent = this[_xfa_object.$getParent]();\n\n    const grandpa = parent[_xfa_object.$getParent]();\n\n    const htmlButton = {\n      name: \"button\",\n      attributes: {\n        id: this[_xfa_object.$uid],\n        class: [\"xfaButton\"],\n        style: {}\n      },\n      children: []\n    };\n\n    for (const event of grandpa.event.children) {\n      if (event.activity !== \"click\" || !event.script) {\n        continue;\n      }\n\n      const jsURL = (0, _core_utils.recoverJsURL)(event.script[_xfa_object.$content]);\n\n      if (!jsURL) {\n        continue;\n      }\n\n      const href = (0, _html_utils.fixURL)(jsURL.url);\n\n      if (!href) {\n        continue;\n      }\n\n      htmlButton.children.push({\n        name: \"a\",\n        attributes: {\n          id: \"link\" + this[_xfa_object.$uid],\n          href,\n          newWindow: jsURL.newWindow,\n          class: [\"xfaLink\"],\n          style: {}\n        },\n        children: []\n      });\n    }\n\n    return _utils.HTMLResult.success(htmlButton);\n  }\n\n}\n\nclass Calculate extends _xfa_object.XFAObject {\n  constructor(attributes) {\n    super(TEMPLATE_NS_ID, \"calculate\", true);\n    this.id = attributes.id || \"\";\n    this.override = (0, _utils.getStringOption)(attributes.override, [\"disabled\", \"error\", \"ignore\", \"warning\"]);\n    this.use = attributes.use || \"\";\n    this.usehref = attributes.usehref || \"\";\n    this.extras = null;\n    this.message = null;\n    this.script = null;\n  }\n\n}\n\nclass Caption extends _xfa_object.XFAObject {\n  constructor(attributes) {\n    super(TEMPLATE_NS_ID, \"caption\", true);\n    this.id = attributes.id || \"\";\n    this.placement = (0, _utils.getStringOption)(attributes.placement, [\"left\", \"bottom\", \"inline\", \"right\", \"top\"]);\n    this.presence = (0, _utils.getStringOption)(attributes.presence, [\"visible\", \"hidden\", \"inactive\", \"invisible\"]);\n    this.reserve = Math.ceil((0, _utils.getMeasurement)(attributes.reserve));\n    this.use = attributes.use || \"\";\n    this.usehref = attributes.usehref || \"\";\n    this.extras = null;\n    this.font = null;\n    this.margin = null;\n    this.para = null;\n    this.value = null;\n  }\n\n  [_xfa_object.$setValue](value) {\n    _setValue(this, value);\n  }\n\n  [_xfa_object.$getExtra](availableSpace) {\n    if (!this[_xfa_object.$extra]) {\n      let {\n        width,\n        height\n      } = availableSpace;\n\n      switch (this.placement) {\n        case \"left\":\n        case \"right\":\n        case \"inline\":\n          width = this.reserve <= 0 ? width : this.reserve;\n          break;\n\n        case \"top\":\n        case \"bottom\":\n          height = this.reserve <= 0 ? height : this.reserve;\n          break;\n      }\n\n      this[_xfa_object.$extra] = (0, _html_utils.layoutNode)(this, {\n        width,\n        height\n      });\n    }\n\n    return this[_xfa_object.$extra];\n  }\n\n  [_xfa_object.$toHTML](availableSpace) {\n    if (!this.value) {\n      return _utils.HTMLResult.EMPTY;\n    }\n\n    this[_xfa_object.$pushPara]();\n\n    const value = this.value[_xfa_object.$toHTML](availableSpace).html;\n\n    if (!value) {\n      this[_xfa_object.$popPara]();\n\n      return _utils.HTMLResult.EMPTY;\n    }\n\n    const savedReserve = this.reserve;\n\n    if (this.reserve <= 0) {\n      const {\n        w,\n        h\n      } = this[_xfa_object.$getExtra](availableSpace);\n\n      switch (this.placement) {\n        case \"left\":\n        case \"right\":\n        case \"inline\":\n          this.reserve = w;\n          break;\n\n        case \"top\":\n        case \"bottom\":\n          this.reserve = h;\n          break;\n      }\n    }\n\n    const children = [];\n\n    if (typeof value === \"string\") {\n      children.push({\n        name: \"#text\",\n        value\n      });\n    } else {\n      children.push(value);\n    }\n\n    const style = (0, _html_utils.toStyle)(this, \"font\", \"margin\", \"visibility\");\n\n    switch (this.placement) {\n      case \"left\":\n      case \"right\":\n        if (this.reserve > 0) {\n          style.width = (0, _html_utils.measureToString)(this.reserve);\n        }\n\n        break;\n\n      case \"top\":\n      case \"bottom\":\n        if (this.reserve > 0) {\n          style.height = (0, _html_utils.measureToString)(this.reserve);\n        }\n\n        break;\n    }\n\n    (0, _html_utils.setPara)(this, null, value);\n\n    this[_xfa_object.$popPara]();\n\n    this.reserve = savedReserve;\n    return _utils.HTMLResult.success({\n      name: \"div\",\n      attributes: {\n        style,\n        class: [\"xfaCaption\"]\n      },\n      children\n    });\n  }\n\n}\n\nclass Certificate extends _xfa_object.StringObject {\n  constructor(attributes) {\n    super(TEMPLATE_NS_ID, \"certificate\");\n    this.id = attributes.id || \"\";\n    this.name = attributes.name || \"\";\n    this.use = attributes.use || \"\";\n    this.usehref = attributes.usehref || \"\";\n  }\n\n}\n\nclass Certificates extends _xfa_object.XFAObject {\n  constructor(attributes) {\n    super(TEMPLATE_NS_ID, \"certificates\", true);\n    this.credentialServerPolicy = (0, _utils.getStringOption)(attributes.credentialServerPolicy, [\"optional\", \"required\"]);\n    this.id = attributes.id || \"\";\n    this.url = attributes.url || \"\";\n    this.urlPolicy = attributes.urlPolicy || \"\";\n    this.use = attributes.use || \"\";\n    this.usehref = attributes.usehref || \"\";\n    this.encryption = null;\n    this.issuers = null;\n    this.keyUsage = null;\n    this.oids = null;\n    this.signing = null;\n    this.subjectDNs = null;\n  }\n\n}\n\nclass CheckButton extends _xfa_object.XFAObject {\n  constructor(attributes) {\n    super(TEMPLATE_NS_ID, \"checkButton\", true);\n    this.id = attributes.id || \"\";\n    this.mark = (0, _utils.getStringOption)(attributes.mark, [\"default\", \"check\", \"circle\", \"cross\", \"diamond\", \"square\", \"star\"]);\n    this.shape = (0, _utils.getStringOption)(attributes.shape, [\"square\", \"round\"]);\n    this.size = (0, _utils.getMeasurement)(attributes.size, \"10pt\");\n    this.use = attributes.use || \"\";\n    this.usehref = attributes.usehref || \"\";\n    this.border = null;\n    this.extras = null;\n    this.margin = null;\n  }\n\n  [_xfa_object.$toHTML](availableSpace) {\n    const style = (0, _html_utils.toStyle)(\"margin\");\n    const size = (0, _html_utils.measureToString)(this.size);\n    style.width = style.height = size;\n    let type;\n    let className;\n    let groupId;\n\n    const field = this[_xfa_object.$getParent]()[_xfa_object.$getParent]();\n\n    const items = field.items.children.length && field.items.children[0][_xfa_object.$toHTML]().html || [];\n    const exportedValue = {\n      on: (items[0] !== undefined ? items[0] : \"on\").toString(),\n      off: (items[1] !== undefined ? items[1] : \"off\").toString()\n    };\n    const value = field.value && field.value[_xfa_object.$text]() || \"off\";\n    const checked = value === exportedValue.on || undefined;\n\n    const container = field[_xfa_object.$getSubformParent]();\n\n    const fieldId = field[_xfa_object.$uid];\n    let dataId;\n\n    if (container instanceof ExclGroup) {\n      groupId = container[_xfa_object.$uid];\n      type = \"radio\";\n      className = \"xfaRadio\";\n      dataId = container[_xfa_object.$data] && container[_xfa_object.$data][_xfa_object.$uid] || container[_xfa_object.$uid];\n    } else {\n      type = \"checkbox\";\n      className = \"xfaCheckbox\";\n      dataId = field[_xfa_object.$data] && field[_xfa_object.$data][_xfa_object.$uid] || field[_xfa_object.$uid];\n    }\n\n    const input = {\n      name: \"input\",\n      attributes: {\n        class: [className],\n        style,\n        fieldId,\n        dataId,\n        type,\n        checked,\n        xfaOn: exportedValue.on,\n        xfaOff: exportedValue.off,\n        \"aria-label\": ariaLabel(field)\n      }\n    };\n\n    if (groupId) {\n      input.attributes.name = groupId;\n    }\n\n    return _utils.HTMLResult.success({\n      name: \"label\",\n      attributes: {\n        class: [\"xfaLabel\"]\n      },\n      children: [input]\n    });\n  }\n\n}\n\nclass ChoiceList extends _xfa_object.XFAObject {\n  constructor(attributes) {\n    super(TEMPLATE_NS_ID, \"choiceList\", true);\n    this.commitOn = (0, _utils.getStringOption)(attributes.commitOn, [\"select\", \"exit\"]);\n    this.id = attributes.id || \"\";\n    this.open = (0, _utils.getStringOption)(attributes.open, [\"userControl\", \"always\", \"multiSelect\", \"onEntry\"]);\n    this.textEntry = (0, _utils.getInteger)({\n      data: attributes.textEntry,\n      defaultValue: 0,\n      validate: x => x === 1\n    });\n    this.use = attributes.use || \"\";\n    this.usehref = attributes.usehref || \"\";\n    this.border = null;\n    this.extras = null;\n    this.margin = null;\n  }\n\n  [_xfa_object.$toHTML](availableSpace) {\n    const style = (0, _html_utils.toStyle)(this, \"border\", \"margin\");\n\n    const ui = this[_xfa_object.$getParent]();\n\n    const field = ui[_xfa_object.$getParent]();\n\n    const fontSize = field.font && field.font.size || 10;\n    const optionStyle = {\n      fontSize: `calc(${fontSize}px * var(--zoom-factor))`\n    };\n    const children = [];\n\n    if (field.items.children.length > 0) {\n      const items = field.items;\n      let displayedIndex = 0;\n      let saveIndex = 0;\n\n      if (items.children.length === 2) {\n        displayedIndex = items.children[0].save;\n        saveIndex = 1 - displayedIndex;\n      }\n\n      const displayed = items.children[displayedIndex][_xfa_object.$toHTML]().html;\n\n      const values = items.children[saveIndex][_xfa_object.$toHTML]().html;\n\n      let selected = false;\n      const value = field.value && field.value[_xfa_object.$text]() || \"\";\n\n      for (let i = 0, ii = displayed.length; i < ii; i++) {\n        const option = {\n          name: \"option\",\n          attributes: {\n            value: values[i] || displayed[i],\n            style: optionStyle\n          },\n          value: displayed[i]\n        };\n\n        if (values[i] === value) {\n          option.attributes.selected = selected = true;\n        }\n\n        children.push(option);\n      }\n\n      if (!selected) {\n        children.splice(0, 0, {\n          name: \"option\",\n          attributes: {\n            hidden: true,\n            selected: true\n          },\n          value: \" \"\n        });\n      }\n    }\n\n    const selectAttributes = {\n      class: [\"xfaSelect\"],\n      fieldId: field[_xfa_object.$uid],\n      dataId: field[_xfa_object.$data] && field[_xfa_object.$data][_xfa_object.$uid] || field[_xfa_object.$uid],\n      style,\n      \"aria-label\": ariaLabel(field)\n    };\n\n    if (this.open === \"multiSelect\") {\n      selectAttributes.multiple = true;\n    }\n\n    return _utils.HTMLResult.success({\n      name: \"label\",\n      attributes: {\n        class: [\"xfaLabel\"]\n      },\n      children: [{\n        name: \"select\",\n        children,\n        attributes: selectAttributes\n      }]\n    });\n  }\n\n}\n\nclass Color extends _xfa_object.XFAObject {\n  constructor(attributes) {\n    super(TEMPLATE_NS_ID, \"color\", true);\n    this.cSpace = (0, _utils.getStringOption)(attributes.cSpace, [\"SRGB\"]);\n    this.id = attributes.id || \"\";\n    this.use = attributes.use || \"\";\n    this.usehref = attributes.usehref || \"\";\n    this.value = attributes.value ? (0, _utils.getColor)(attributes.value) : \"\";\n    this.extras = null;\n  }\n\n  [_xfa_object.$hasSettableValue]() {\n    return false;\n  }\n\n  [_xfa_object.$toStyle]() {\n    return this.value ? _util.Util.makeHexColor(this.value.r, this.value.g, this.value.b) : null;\n  }\n\n}\n\nclass Comb extends _xfa_object.XFAObject {\n  constructor(attributes) {\n    super(TEMPLATE_NS_ID, \"comb\");\n    this.id = attributes.id || \"\";\n    this.numberOfCells = (0, _utils.getInteger)({\n      data: attributes.numberOfCells,\n      defaultValue: 0,\n      validate: x => x >= 0\n    });\n    this.use = attributes.use || \"\";\n    this.usehref = attributes.usehref || \"\";\n  }\n\n}\n\nclass Connect extends _xfa_object.XFAObject {\n  constructor(attributes) {\n    super(TEMPLATE_NS_ID, \"connect\", true);\n    this.connection = attributes.connection || \"\";\n    this.id = attributes.id || \"\";\n    this.ref = attributes.ref || \"\";\n    this.usage = (0, _utils.getStringOption)(attributes.usage, [\"exportAndImport\", \"exportOnly\", \"importOnly\"]);\n    this.use = attributes.use || \"\";\n    this.usehref = attributes.usehref || \"\";\n    this.picture = null;\n  }\n\n}\n\nclass ContentArea extends _xfa_object.XFAObject {\n  constructor(attributes) {\n    super(TEMPLATE_NS_ID, \"contentArea\", true);\n    this.h = (0, _utils.getMeasurement)(attributes.h);\n    this.id = attributes.id || \"\";\n    this.name = attributes.name || \"\";\n    this.relevant = (0, _utils.getRelevant)(attributes.relevant);\n    this.use = attributes.use || \"\";\n    this.usehref = attributes.usehref || \"\";\n    this.w = (0, _utils.getMeasurement)(attributes.w);\n    this.x = (0, _utils.getMeasurement)(attributes.x, \"0pt\");\n    this.y = (0, _utils.getMeasurement)(attributes.y, \"0pt\");\n    this.desc = null;\n    this.extras = null;\n  }\n\n  [_xfa_object.$toHTML](availableSpace) {\n    const left = (0, _html_utils.measureToString)(this.x);\n    const top = (0, _html_utils.measureToString)(this.y);\n    const style = {\n      left,\n      top,\n      width: (0, _html_utils.measureToString)(this.w),\n      height: (0, _html_utils.measureToString)(this.h)\n    };\n    const classNames = [\"xfaContentarea\"];\n\n    if ((0, _html_utils.isPrintOnly)(this)) {\n      classNames.push(\"xfaPrintOnly\");\n    }\n\n    return _utils.HTMLResult.success({\n      name: \"div\",\n      children: [],\n      attributes: {\n        style,\n        class: classNames,\n        id: this[_xfa_object.$uid]\n      }\n    });\n  }\n\n}\n\nclass Corner extends _xfa_object.XFAObject {\n  constructor(attributes) {\n    super(TEMPLATE_NS_ID, \"corner\", true);\n    this.id = attributes.id || \"\";\n    this.inverted = (0, _utils.getInteger)({\n      data: attributes.inverted,\n      defaultValue: 0,\n      validate: x => x === 1\n    });\n    this.join = (0, _utils.getStringOption)(attributes.join, [\"square\", \"round\"]);\n    this.presence = (0, _utils.getStringOption)(attributes.presence, [\"visible\", \"hidden\", \"inactive\", \"invisible\"]);\n    this.radius = (0, _utils.getMeasurement)(attributes.radius);\n    this.stroke = (0, _utils.getStringOption)(attributes.stroke, [\"solid\", \"dashDot\", \"dashDotDot\", \"dashed\", \"dotted\", \"embossed\", \"etched\", \"lowered\", \"raised\"]);\n    this.thickness = (0, _utils.getMeasurement)(attributes.thickness, \"0.5pt\");\n    this.use = attributes.use || \"\";\n    this.usehref = attributes.usehref || \"\";\n    this.color = null;\n    this.extras = null;\n  }\n\n  [_xfa_object.$toStyle]() {\n    const style = (0, _html_utils.toStyle)(this, \"visibility\");\n    style.radius = (0, _html_utils.measureToString)(this.join === \"square\" ? 0 : this.radius);\n    return style;\n  }\n\n}\n\nclass DateElement extends _xfa_object.ContentObject {\n  constructor(attributes) {\n    super(TEMPLATE_NS_ID, \"date\");\n    this.id = attributes.id || \"\";\n    this.name = attributes.name || \"\";\n    this.use = attributes.use || \"\";\n    this.usehref = attributes.usehref || \"\";\n  }\n\n  [_xfa_object.$finalize]() {\n    const date = this[_xfa_object.$content].trim();\n\n    this[_xfa_object.$content] = date ? new Date(date) : null;\n  }\n\n  [_xfa_object.$toHTML](availableSpace) {\n    return valueToHtml(this[_xfa_object.$content] ? this[_xfa_object.$content].toString() : \"\");\n  }\n\n}\n\nclass DateTime extends _xfa_object.ContentObject {\n  constructor(attributes) {\n    super(TEMPLATE_NS_ID, \"dateTime\");\n    this.id = attributes.id || \"\";\n    this.name = attributes.name || \"\";\n    this.use = attributes.use || \"\";\n    this.usehref = attributes.usehref || \"\";\n  }\n\n  [_xfa_object.$finalize]() {\n    const date = this[_xfa_object.$content].trim();\n\n    this[_xfa_object.$content] = date ? new Date(date) : null;\n  }\n\n  [_xfa_object.$toHTML](availableSpace) {\n    return valueToHtml(this[_xfa_object.$content] ? this[_xfa_object.$content].toString() : \"\");\n  }\n\n}\n\nclass DateTimeEdit extends _xfa_object.XFAObject {\n  constructor(attributes) {\n    super(TEMPLATE_NS_ID, \"dateTimeEdit\", true);\n    this.hScrollPolicy = (0, _utils.getStringOption)(attributes.hScrollPolicy, [\"auto\", \"off\", \"on\"]);\n    this.id = attributes.id || \"\";\n    this.picker = (0, _utils.getStringOption)(attributes.picker, [\"host\", \"none\"]);\n    this.use = attributes.use || \"\";\n    this.usehref = attributes.usehref || \"\";\n    this.border = null;\n    this.comb = null;\n    this.extras = null;\n    this.margin = null;\n  }\n\n  [_xfa_object.$toHTML](availableSpace) {\n    const style = (0, _html_utils.toStyle)(this, \"border\", \"font\", \"margin\");\n\n    const field = this[_xfa_object.$getParent]()[_xfa_object.$getParent]();\n\n    const html = {\n      name: \"input\",\n      attributes: {\n        type: \"text\",\n        fieldId: field[_xfa_object.$uid],\n        dataId: field[_xfa_object.$data] && field[_xfa_object.$data][_xfa_object.$uid] || field[_xfa_object.$uid],\n        class: [\"xfaTextfield\"],\n        style,\n        \"aria-label\": ariaLabel(field)\n      }\n    };\n    return _utils.HTMLResult.success({\n      name: \"label\",\n      attributes: {\n        class: [\"xfaLabel\"]\n      },\n      children: [html]\n    });\n  }\n\n}\n\nclass Decimal extends _xfa_object.ContentObject {\n  constructor(attributes) {\n    super(TEMPLATE_NS_ID, \"decimal\");\n    this.fracDigits = (0, _utils.getInteger)({\n      data: attributes.fracDigits,\n      defaultValue: 2,\n      validate: x => true\n    });\n    this.id = attributes.id || \"\";\n    this.leadDigits = (0, _utils.getInteger)({\n      data: attributes.leadDigits,\n      defaultValue: -1,\n      validate: x => true\n    });\n    this.name = attributes.name || \"\";\n    this.use = attributes.use || \"\";\n    this.usehref = attributes.usehref || \"\";\n  }\n\n  [_xfa_object.$finalize]() {\n    const number = parseFloat(this[_xfa_object.$content].trim());\n    this[_xfa_object.$content] = isNaN(number) ? null : number;\n  }\n\n  [_xfa_object.$toHTML](availableSpace) {\n    return valueToHtml(this[_xfa_object.$content] !== null ? this[_xfa_object.$content].toString() : \"\");\n  }\n\n}\n\nclass DefaultUi extends _xfa_object.XFAObject {\n  constructor(attributes) {\n    super(TEMPLATE_NS_ID, \"defaultUi\", true);\n    this.id = attributes.id || \"\";\n    this.use = attributes.use || \"\";\n    this.usehref = attributes.usehref || \"\";\n    this.extras = null;\n  }\n\n}\n\nclass Desc extends _xfa_object.XFAObject {\n  constructor(attributes) {\n    super(TEMPLATE_NS_ID, \"desc\", true);\n    this.id = attributes.id || \"\";\n    this.use = attributes.use || \"\";\n    this.usehref = attributes.usehref || \"\";\n    this.boolean = new _xfa_object.XFAObjectArray();\n    this.date = new _xfa_object.XFAObjectArray();\n    this.dateTime = new _xfa_object.XFAObjectArray();\n    this.decimal = new _xfa_object.XFAObjectArray();\n    this.exData = new _xfa_object.XFAObjectArray();\n    this.float = new _xfa_object.XFAObjectArray();\n    this.image = new _xfa_object.XFAObjectArray();\n    this.integer = new _xfa_object.XFAObjectArray();\n    this.text = new _xfa_object.XFAObjectArray();\n    this.time = new _xfa_object.XFAObjectArray();\n  }\n\n}\n\nclass DigestMethod extends _xfa_object.OptionObject {\n  constructor(attributes) {\n    super(TEMPLATE_NS_ID, \"digestMethod\", [\"\", \"SHA1\", \"SHA256\", \"SHA512\", \"RIPEMD160\"]);\n    this.id = attributes.id || \"\";\n    this.use = attributes.use || \"\";\n    this.usehref = attributes.usehref || \"\";\n  }\n\n}\n\nclass DigestMethods extends _xfa_object.XFAObject {\n  constructor(attributes) {\n    super(TEMPLATE_NS_ID, \"digestMethods\", true);\n    this.id = attributes.id || \"\";\n    this.type = (0, _utils.getStringOption)(attributes.type, [\"optional\", \"required\"]);\n    this.use = attributes.use || \"\";\n    this.usehref = attributes.usehref || \"\";\n    this.digestMethod = new _xfa_object.XFAObjectArray();\n  }\n\n}\n\nclass Draw extends _xfa_object.XFAObject {\n  constructor(attributes) {\n    super(TEMPLATE_NS_ID, \"draw\", true);\n    this.anchorType = (0, _utils.getStringOption)(attributes.anchorType, [\"topLeft\", \"bottomCenter\", \"bottomLeft\", \"bottomRight\", \"middleCenter\", \"middleLeft\", \"middleRight\", \"topCenter\", \"topRight\"]);\n    this.colSpan = (0, _utils.getInteger)({\n      data: attributes.colSpan,\n      defaultValue: 1,\n      validate: n => n >= 1 || n === -1\n    });\n    this.h = attributes.h ? (0, _utils.getMeasurement)(attributes.h) : \"\";\n    this.hAlign = (0, _utils.getStringOption)(attributes.hAlign, [\"left\", \"center\", \"justify\", \"justifyAll\", \"radix\", \"right\"]);\n    this.id = attributes.id || \"\";\n    this.locale = attributes.locale || \"\";\n    this.maxH = (0, _utils.getMeasurement)(attributes.maxH, \"0pt\");\n    this.maxW = (0, _utils.getMeasurement)(attributes.maxW, \"0pt\");\n    this.minH = (0, _utils.getMeasurement)(attributes.minH, \"0pt\");\n    this.minW = (0, _utils.getMeasurement)(attributes.minW, \"0pt\");\n    this.name = attributes.name || \"\";\n    this.presence = (0, _utils.getStringOption)(attributes.presence, [\"visible\", \"hidden\", \"inactive\", \"invisible\"]);\n    this.relevant = (0, _utils.getRelevant)(attributes.relevant);\n    this.rotate = (0, _utils.getInteger)({\n      data: attributes.rotate,\n      defaultValue: 0,\n      validate: x => x % 90 === 0\n    });\n    this.use = attributes.use || \"\";\n    this.usehref = attributes.usehref || \"\";\n    this.w = attributes.w ? (0, _utils.getMeasurement)(attributes.w) : \"\";\n    this.x = (0, _utils.getMeasurement)(attributes.x, \"0pt\");\n    this.y = (0, _utils.getMeasurement)(attributes.y, \"0pt\");\n    this.assist = null;\n    this.border = null;\n    this.caption = null;\n    this.desc = null;\n    this.extras = null;\n    this.font = null;\n    this.keep = null;\n    this.margin = null;\n    this.para = null;\n    this.traversal = null;\n    this.ui = null;\n    this.value = null;\n    this.setProperty = new _xfa_object.XFAObjectArray();\n  }\n\n  [_xfa_object.$setValue](value) {\n    _setValue(this, value);\n  }\n\n  [_xfa_object.$toHTML](availableSpace) {\n    setTabIndex(this);\n\n    if (this.presence === \"hidden\" || this.presence === \"inactive\") {\n      return _utils.HTMLResult.EMPTY;\n    }\n\n    (0, _html_utils.fixDimensions)(this);\n\n    this[_xfa_object.$pushPara]();\n\n    const savedW = this.w;\n    const savedH = this.h;\n    const {\n      w,\n      h,\n      isBroken\n    } = (0, _html_utils.layoutNode)(this, availableSpace);\n\n    if (w && this.w === \"\") {\n      if (isBroken && this[_xfa_object.$getSubformParent]()[_xfa_object.$isThereMoreWidth]()) {\n        this[_xfa_object.$popPara]();\n\n        return _utils.HTMLResult.FAILURE;\n      }\n\n      this.w = w;\n    }\n\n    if (h && this.h === \"\") {\n      this.h = h;\n    }\n\n    setFirstUnsplittable(this);\n\n    if (!(0, _layout.checkDimensions)(this, availableSpace)) {\n      this.w = savedW;\n      this.h = savedH;\n\n      this[_xfa_object.$popPara]();\n\n      return _utils.HTMLResult.FAILURE;\n    }\n\n    unsetFirstUnsplittable(this);\n    const style = (0, _html_utils.toStyle)(this, \"font\", \"hAlign\", \"dimensions\", \"position\", \"presence\", \"rotate\", \"anchorType\", \"border\", \"margin\");\n    (0, _html_utils.setMinMaxDimensions)(this, style);\n\n    if (style.margin) {\n      style.padding = style.margin;\n      delete style.margin;\n    }\n\n    const classNames = [\"xfaDraw\"];\n\n    if (this.font) {\n      classNames.push(\"xfaFont\");\n    }\n\n    if ((0, _html_utils.isPrintOnly)(this)) {\n      classNames.push(\"xfaPrintOnly\");\n    }\n\n    const attributes = {\n      style,\n      id: this[_xfa_object.$uid],\n      class: classNames\n    };\n\n    if (this.name) {\n      attributes.xfaName = this.name;\n    }\n\n    const html = {\n      name: \"div\",\n      attributes,\n      children: []\n    };\n    applyAssist(this, attributes);\n    const bbox = (0, _html_utils.computeBbox)(this, html, availableSpace);\n    const value = this.value ? this.value[_xfa_object.$toHTML](availableSpace).html : null;\n\n    if (value === null) {\n      this.w = savedW;\n      this.h = savedH;\n\n      this[_xfa_object.$popPara]();\n\n      return _utils.HTMLResult.success((0, _html_utils.createWrapper)(this, html), bbox);\n    }\n\n    html.children.push(value);\n    (0, _html_utils.setPara)(this, style, value);\n    this.w = savedW;\n    this.h = savedH;\n\n    this[_xfa_object.$popPara]();\n\n    return _utils.HTMLResult.success((0, _html_utils.createWrapper)(this, html), bbox);\n  }\n\n}\n\nclass Edge extends _xfa_object.XFAObject {\n  constructor(attributes) {\n    super(TEMPLATE_NS_ID, \"edge\", true);\n    this.cap = (0, _utils.getStringOption)(attributes.cap, [\"square\", \"butt\", \"round\"]);\n    this.id = attributes.id || \"\";\n    this.presence = (0, _utils.getStringOption)(attributes.presence, [\"visible\", \"hidden\", \"inactive\", \"invisible\"]);\n    this.stroke = (0, _utils.getStringOption)(attributes.stroke, [\"solid\", \"dashDot\", \"dashDotDot\", \"dashed\", \"dotted\", \"embossed\", \"etched\", \"lowered\", \"raised\"]);\n    this.thickness = (0, _utils.getMeasurement)(attributes.thickness, \"0.5pt\");\n    this.use = attributes.use || \"\";\n    this.usehref = attributes.usehref || \"\";\n    this.color = null;\n    this.extras = null;\n  }\n\n  [_xfa_object.$toStyle]() {\n    const style = (0, _html_utils.toStyle)(this, \"visibility\");\n    Object.assign(style, {\n      linecap: this.cap,\n      width: (0, _html_utils.measureToString)(this.thickness),\n      color: this.color ? this.color[_xfa_object.$toStyle]() : \"#000000\",\n      style: \"\"\n    });\n\n    if (this.presence !== \"visible\") {\n      style.style = \"none\";\n    } else {\n      switch (this.stroke) {\n        case \"solid\":\n          style.style = \"solid\";\n          break;\n\n        case \"dashDot\":\n          style.style = \"dashed\";\n          break;\n\n        case \"dashDotDot\":\n          style.style = \"dashed\";\n          break;\n\n        case \"dashed\":\n          style.style = \"dashed\";\n          break;\n\n        case \"dotted\":\n          style.style = \"dotted\";\n          break;\n\n        case \"embossed\":\n          style.style = \"ridge\";\n          break;\n\n        case \"etched\":\n          style.style = \"groove\";\n          break;\n\n        case \"lowered\":\n          style.style = \"inset\";\n          break;\n\n        case \"raised\":\n          style.style = \"outset\";\n          break;\n      }\n    }\n\n    return style;\n  }\n\n}\n\nclass Encoding extends _xfa_object.OptionObject {\n  constructor(attributes) {\n    super(TEMPLATE_NS_ID, \"encoding\", [\"adbe.x509.rsa_sha1\", \"adbe.pkcs7.detached\", \"adbe.pkcs7.sha1\"]);\n    this.id = attributes.id || \"\";\n    this.use = attributes.use || \"\";\n    this.usehref = attributes.usehref || \"\";\n  }\n\n}\n\nclass Encodings extends _xfa_object.XFAObject {\n  constructor(attributes) {\n    super(TEMPLATE_NS_ID, \"encodings\", true);\n    this.id = attributes.id || \"\";\n    this.type = (0, _utils.getStringOption)(attributes.type, [\"optional\", \"required\"]);\n    this.use = attributes.use || \"\";\n    this.usehref = attributes.usehref || \"\";\n    this.encoding = new _xfa_object.XFAObjectArray();\n  }\n\n}\n\nclass Encrypt extends _xfa_object.XFAObject {\n  constructor(attributes) {\n    super(TEMPLATE_NS_ID, \"encrypt\", true);\n    this.id = attributes.id || \"\";\n    this.use = attributes.use || \"\";\n    this.usehref = attributes.usehref || \"\";\n    this.certificate = null;\n  }\n\n}\n\nclass EncryptData extends _xfa_object.XFAObject {\n  constructor(attributes) {\n    super(TEMPLATE_NS_ID, \"encryptData\", true);\n    this.id = attributes.id || \"\";\n    this.operation = (0, _utils.getStringOption)(attributes.operation, [\"encrypt\", \"decrypt\"]);\n    this.target = attributes.target || \"\";\n    this.use = attributes.use || \"\";\n    this.usehref = attributes.usehref || \"\";\n    this.filter = null;\n    this.manifest = null;\n  }\n\n}\n\nclass Encryption extends _xfa_object.XFAObject {\n  constructor(attributes) {\n    super(TEMPLATE_NS_ID, \"encryption\", true);\n    this.id = attributes.id || \"\";\n    this.type = (0, _utils.getStringOption)(attributes.type, [\"optional\", \"required\"]);\n    this.use = attributes.use || \"\";\n    this.usehref = attributes.usehref || \"\";\n    this.certificate = new _xfa_object.XFAObjectArray();\n  }\n\n}\n\nclass EncryptionMethod extends _xfa_object.OptionObject {\n  constructor(attributes) {\n    super(TEMPLATE_NS_ID, \"encryptionMethod\", [\"\", \"AES256-CBC\", \"TRIPLEDES-CBC\", \"AES128-CBC\", \"AES192-CBC\"]);\n    this.id = attributes.id || \"\";\n    this.use = attributes.use || \"\";\n    this.usehref = attributes.usehref || \"\";\n  }\n\n}\n\nclass EncryptionMethods extends _xfa_object.XFAObject {\n  constructor(attributes) {\n    super(TEMPLATE_NS_ID, \"encryptionMethods\", true);\n    this.id = attributes.id || \"\";\n    this.type = (0, _utils.getStringOption)(attributes.type, [\"optional\", \"required\"]);\n    this.use = attributes.use || \"\";\n    this.usehref = attributes.usehref || \"\";\n    this.encryptionMethod = new _xfa_object.XFAObjectArray();\n  }\n\n}\n\nclass Event extends _xfa_object.XFAObject {\n  constructor(attributes) {\n    super(TEMPLATE_NS_ID, \"event\", true);\n    this.activity = (0, _utils.getStringOption)(attributes.activity, [\"click\", \"change\", \"docClose\", \"docReady\", \"enter\", \"exit\", \"full\", \"indexChange\", \"initialize\", \"mouseDown\", \"mouseEnter\", \"mouseExit\", \"mouseUp\", \"postExecute\", \"postOpen\", \"postPrint\", \"postSave\", \"postSign\", \"postSubmit\", \"preExecute\", \"preOpen\", \"prePrint\", \"preSave\", \"preSign\", \"preSubmit\", \"ready\", \"validationState\"]);\n    this.id = attributes.id || \"\";\n    this.listen = (0, _utils.getStringOption)(attributes.listen, [\"refOnly\", \"refAndDescendents\"]);\n    this.name = attributes.name || \"\";\n    this.ref = attributes.ref || \"\";\n    this.use = attributes.use || \"\";\n    this.usehref = attributes.usehref || \"\";\n    this.extras = null;\n    this.encryptData = null;\n    this.execute = null;\n    this.script = null;\n    this.signData = null;\n    this.submit = null;\n  }\n\n}\n\nclass ExData extends _xfa_object.ContentObject {\n  constructor(attributes) {\n    super(TEMPLATE_NS_ID, \"exData\");\n    this.contentType = attributes.contentType || \"\";\n    this.href = attributes.href || \"\";\n    this.id = attributes.id || \"\";\n    this.maxLength = (0, _utils.getInteger)({\n      data: attributes.maxLength,\n      defaultValue: -1,\n      validate: x => x >= -1\n    });\n    this.name = attributes.name || \"\";\n    this.rid = attributes.rid || \"\";\n    this.transferEncoding = (0, _utils.getStringOption)(attributes.transferEncoding, [\"none\", \"base64\", \"package\"]);\n    this.use = attributes.use || \"\";\n    this.usehref = attributes.usehref || \"\";\n  }\n\n  [_xfa_object.$isCDATAXml]() {\n    return this.contentType === \"text/html\";\n  }\n\n  [_xfa_object.$onChild](child) {\n    if (this.contentType === \"text/html\" && child[_xfa_object.$namespaceId] === _namespaces.NamespaceIds.xhtml.id) {\n      this[_xfa_object.$content] = child;\n      return true;\n    }\n\n    if (this.contentType === \"text/xml\") {\n      this[_xfa_object.$content] = child;\n      return true;\n    }\n\n    return false;\n  }\n\n  [_xfa_object.$toHTML](availableSpace) {\n    if (this.contentType !== \"text/html\" || !this[_xfa_object.$content]) {\n      return _utils.HTMLResult.EMPTY;\n    }\n\n    return this[_xfa_object.$content][_xfa_object.$toHTML](availableSpace);\n  }\n\n}\n\nclass ExObject extends _xfa_object.XFAObject {\n  constructor(attributes) {\n    super(TEMPLATE_NS_ID, \"exObject\", true);\n    this.archive = attributes.archive || \"\";\n    this.classId = attributes.classId || \"\";\n    this.codeBase = attributes.codeBase || \"\";\n    this.codeType = attributes.codeType || \"\";\n    this.id = attributes.id || \"\";\n    this.name = attributes.name || \"\";\n    this.use = attributes.use || \"\";\n    this.usehref = attributes.usehref || \"\";\n    this.extras = null;\n    this.boolean = new _xfa_object.XFAObjectArray();\n    this.date = new _xfa_object.XFAObjectArray();\n    this.dateTime = new _xfa_object.XFAObjectArray();\n    this.decimal = new _xfa_object.XFAObjectArray();\n    this.exData = new _xfa_object.XFAObjectArray();\n    this.exObject = new _xfa_object.XFAObjectArray();\n    this.float = new _xfa_object.XFAObjectArray();\n    this.image = new _xfa_object.XFAObjectArray();\n    this.integer = new _xfa_object.XFAObjectArray();\n    this.text = new _xfa_object.XFAObjectArray();\n    this.time = new _xfa_object.XFAObjectArray();\n  }\n\n}\n\nclass ExclGroup extends _xfa_object.XFAObject {\n  constructor(attributes) {\n    super(TEMPLATE_NS_ID, \"exclGroup\", true);\n    this.access = (0, _utils.getStringOption)(attributes.access, [\"open\", \"nonInteractive\", \"protected\", \"readOnly\"]);\n    this.accessKey = attributes.accessKey || \"\";\n    this.anchorType = (0, _utils.getStringOption)(attributes.anchorType, [\"topLeft\", \"bottomCenter\", \"bottomLeft\", \"bottomRight\", \"middleCenter\", \"middleLeft\", \"middleRight\", \"topCenter\", \"topRight\"]);\n    this.colSpan = (0, _utils.getInteger)({\n      data: attributes.colSpan,\n      defaultValue: 1,\n      validate: n => n >= 1 || n === -1\n    });\n    this.h = attributes.h ? (0, _utils.getMeasurement)(attributes.h) : \"\";\n    this.hAlign = (0, _utils.getStringOption)(attributes.hAlign, [\"left\", \"center\", \"justify\", \"justifyAll\", \"radix\", \"right\"]);\n    this.id = attributes.id || \"\";\n    this.layout = (0, _utils.getStringOption)(attributes.layout, [\"position\", \"lr-tb\", \"rl-row\", \"rl-tb\", \"row\", \"table\", \"tb\"]);\n    this.maxH = (0, _utils.getMeasurement)(attributes.maxH, \"0pt\");\n    this.maxW = (0, _utils.getMeasurement)(attributes.maxW, \"0pt\");\n    this.minH = (0, _utils.getMeasurement)(attributes.minH, \"0pt\");\n    this.minW = (0, _utils.getMeasurement)(attributes.minW, \"0pt\");\n    this.name = attributes.name || \"\";\n    this.presence = (0, _utils.getStringOption)(attributes.presence, [\"visible\", \"hidden\", \"inactive\", \"invisible\"]);\n    this.relevant = (0, _utils.getRelevant)(attributes.relevant);\n    this.use = attributes.use || \"\";\n    this.usehref = attributes.usehref || \"\";\n    this.w = attributes.w ? (0, _utils.getMeasurement)(attributes.w) : \"\";\n    this.x = (0, _utils.getMeasurement)(attributes.x, \"0pt\");\n    this.y = (0, _utils.getMeasurement)(attributes.y, \"0pt\");\n    this.assist = null;\n    this.bind = null;\n    this.border = null;\n    this.calculate = null;\n    this.caption = null;\n    this.desc = null;\n    this.extras = null;\n    this.margin = null;\n    this.para = null;\n    this.traversal = null;\n    this.validate = null;\n    this.connect = new _xfa_object.XFAObjectArray();\n    this.event = new _xfa_object.XFAObjectArray();\n    this.field = new _xfa_object.XFAObjectArray();\n    this.setProperty = new _xfa_object.XFAObjectArray();\n  }\n\n  [_xfa_object.$isBindable]() {\n    return true;\n  }\n\n  [_xfa_object.$hasSettableValue]() {\n    return true;\n  }\n\n  [_xfa_object.$setValue](value) {\n    for (const field of this.field.children) {\n      if (!field.value) {\n        const nodeValue = new Value({});\n\n        field[_xfa_object.$appendChild](nodeValue);\n\n        field.value = nodeValue;\n      }\n\n      field.value[_xfa_object.$setValue](value);\n    }\n  }\n\n  [_xfa_object.$isThereMoreWidth]() {\n    return this.layout.endsWith(\"-tb\") && this[_xfa_object.$extra].attempt === 0 && this[_xfa_object.$extra].numberInLine > 0 || this[_xfa_object.$getParent]()[_xfa_object.$isThereMoreWidth]();\n  }\n\n  [_xfa_object.$isSplittable]() {\n    const parent = this[_xfa_object.$getSubformParent]();\n\n    if (!parent[_xfa_object.$isSplittable]()) {\n      return false;\n    }\n\n    if (this[_xfa_object.$extra]._isSplittable !== undefined) {\n      return this[_xfa_object.$extra]._isSplittable;\n    }\n\n    if (this.layout === \"position\" || this.layout.includes(\"row\")) {\n      this[_xfa_object.$extra]._isSplittable = false;\n      return false;\n    }\n\n    if (parent.layout && parent.layout.endsWith(\"-tb\") && parent[_xfa_object.$extra].numberInLine !== 0) {\n      return false;\n    }\n\n    this[_xfa_object.$extra]._isSplittable = true;\n    return true;\n  }\n\n  [_xfa_object.$flushHTML]() {\n    return (0, _layout.flushHTML)(this);\n  }\n\n  [_xfa_object.$addHTML](html, bbox) {\n    (0, _layout.addHTML)(this, html, bbox);\n  }\n\n  [_xfa_object.$getAvailableSpace]() {\n    return (0, _layout.getAvailableSpace)(this);\n  }\n\n  [_xfa_object.$toHTML](availableSpace) {\n    setTabIndex(this);\n\n    if (this.presence === \"hidden\" || this.presence === \"inactive\" || this.h === 0 || this.w === 0) {\n      return _utils.HTMLResult.EMPTY;\n    }\n\n    (0, _html_utils.fixDimensions)(this);\n    const children = [];\n    const attributes = {\n      id: this[_xfa_object.$uid],\n      class: []\n    };\n    (0, _html_utils.setAccess)(this, attributes.class);\n\n    if (!this[_xfa_object.$extra]) {\n      this[_xfa_object.$extra] = Object.create(null);\n    }\n\n    Object.assign(this[_xfa_object.$extra], {\n      children,\n      attributes,\n      attempt: 0,\n      line: null,\n      numberInLine: 0,\n      availableSpace: {\n        width: Math.min(this.w || Infinity, availableSpace.width),\n        height: Math.min(this.h || Infinity, availableSpace.height)\n      },\n      width: 0,\n      height: 0,\n      prevHeight: 0,\n      currentWidth: 0\n    });\n\n    const isSplittable = this[_xfa_object.$isSplittable]();\n\n    if (!isSplittable) {\n      setFirstUnsplittable(this);\n    }\n\n    if (!(0, _layout.checkDimensions)(this, availableSpace)) {\n      return _utils.HTMLResult.FAILURE;\n    }\n\n    const filter = new Set([\"field\"]);\n\n    if (this.layout.includes(\"row\")) {\n      const columnWidths = this[_xfa_object.$getSubformParent]().columnWidths;\n\n      if (Array.isArray(columnWidths) && columnWidths.length > 0) {\n        this[_xfa_object.$extra].columnWidths = columnWidths;\n        this[_xfa_object.$extra].currentColumn = 0;\n      }\n    }\n\n    const style = (0, _html_utils.toStyle)(this, \"anchorType\", \"dimensions\", \"position\", \"presence\", \"border\", \"margin\", \"hAlign\");\n    const classNames = [\"xfaExclgroup\"];\n    const cl = (0, _html_utils.layoutClass)(this);\n\n    if (cl) {\n      classNames.push(cl);\n    }\n\n    if ((0, _html_utils.isPrintOnly)(this)) {\n      classNames.push(\"xfaPrintOnly\");\n    }\n\n    attributes.style = style;\n    attributes.class = classNames;\n\n    if (this.name) {\n      attributes.xfaName = this.name;\n    }\n\n    this[_xfa_object.$pushPara]();\n\n    const isLrTb = this.layout === \"lr-tb\" || this.layout === \"rl-tb\";\n    const maxRun = isLrTb ? MAX_ATTEMPTS_FOR_LRTB_LAYOUT : 1;\n\n    for (; this[_xfa_object.$extra].attempt < maxRun; this[_xfa_object.$extra].attempt++) {\n      if (isLrTb && this[_xfa_object.$extra].attempt === MAX_ATTEMPTS_FOR_LRTB_LAYOUT - 1) {\n        this[_xfa_object.$extra].numberInLine = 0;\n      }\n\n      const result = this[_xfa_object.$childrenToHTML]({\n        filter,\n        include: true\n      });\n\n      if (result.success) {\n        break;\n      }\n\n      if (result.isBreak()) {\n        this[_xfa_object.$popPara]();\n\n        return result;\n      }\n\n      if (isLrTb && this[_xfa_object.$extra].attempt === 0 && this[_xfa_object.$extra].numberInLine === 0 && !this[_xfa_object.$getTemplateRoot]()[_xfa_object.$extra].noLayoutFailure) {\n        this[_xfa_object.$extra].attempt = maxRun;\n        break;\n      }\n    }\n\n    this[_xfa_object.$popPara]();\n\n    if (!isSplittable) {\n      unsetFirstUnsplittable(this);\n    }\n\n    if (this[_xfa_object.$extra].attempt === maxRun) {\n      if (!isSplittable) {\n        delete this[_xfa_object.$extra];\n      }\n\n      return _utils.HTMLResult.FAILURE;\n    }\n\n    let marginH = 0;\n    let marginV = 0;\n\n    if (this.margin) {\n      marginH = this.margin.leftInset + this.margin.rightInset;\n      marginV = this.margin.topInset + this.margin.bottomInset;\n    }\n\n    const width = Math.max(this[_xfa_object.$extra].width + marginH, this.w || 0);\n    const height = Math.max(this[_xfa_object.$extra].height + marginV, this.h || 0);\n    const bbox = [this.x, this.y, width, height];\n\n    if (this.w === \"\") {\n      style.width = (0, _html_utils.measureToString)(width);\n    }\n\n    if (this.h === \"\") {\n      style.height = (0, _html_utils.measureToString)(height);\n    }\n\n    const html = {\n      name: \"div\",\n      attributes,\n      children\n    };\n    applyAssist(this, attributes);\n    delete this[_xfa_object.$extra];\n    return _utils.HTMLResult.success((0, _html_utils.createWrapper)(this, html), bbox);\n  }\n\n}\n\nclass Execute extends _xfa_object.XFAObject {\n  constructor(attributes) {\n    super(TEMPLATE_NS_ID, \"execute\");\n    this.connection = attributes.connection || \"\";\n    this.executeType = (0, _utils.getStringOption)(attributes.executeType, [\"import\", \"remerge\"]);\n    this.id = attributes.id || \"\";\n    this.runAt = (0, _utils.getStringOption)(attributes.runAt, [\"client\", \"both\", \"server\"]);\n    this.use = attributes.use || \"\";\n    this.usehref = attributes.usehref || \"\";\n  }\n\n}\n\nclass Extras extends _xfa_object.XFAObject {\n  constructor(attributes) {\n    super(TEMPLATE_NS_ID, \"extras\", true);\n    this.id = attributes.id || \"\";\n    this.name = attributes.name || \"\";\n    this.use = attributes.use || \"\";\n    this.usehref = attributes.usehref || \"\";\n    this.boolean = new _xfa_object.XFAObjectArray();\n    this.date = new _xfa_object.XFAObjectArray();\n    this.dateTime = new _xfa_object.XFAObjectArray();\n    this.decimal = new _xfa_object.XFAObjectArray();\n    this.exData = new _xfa_object.XFAObjectArray();\n    this.extras = new _xfa_object.XFAObjectArray();\n    this.float = new _xfa_object.XFAObjectArray();\n    this.image = new _xfa_object.XFAObjectArray();\n    this.integer = new _xfa_object.XFAObjectArray();\n    this.text = new _xfa_object.XFAObjectArray();\n    this.time = new _xfa_object.XFAObjectArray();\n  }\n\n}\n\nclass Field extends _xfa_object.XFAObject {\n  constructor(attributes) {\n    super(TEMPLATE_NS_ID, \"field\", true);\n    this.access = (0, _utils.getStringOption)(attributes.access, [\"open\", \"nonInteractive\", \"protected\", \"readOnly\"]);\n    this.accessKey = attributes.accessKey || \"\";\n    this.anchorType = (0, _utils.getStringOption)(attributes.anchorType, [\"topLeft\", \"bottomCenter\", \"bottomLeft\", \"bottomRight\", \"middleCenter\", \"middleLeft\", \"middleRight\", \"topCenter\", \"topRight\"]);\n    this.colSpan = (0, _utils.getInteger)({\n      data: attributes.colSpan,\n      defaultValue: 1,\n      validate: n => n >= 1 || n === -1\n    });\n    this.h = attributes.h ? (0, _utils.getMeasurement)(attributes.h) : \"\";\n    this.hAlign = (0, _utils.getStringOption)(attributes.hAlign, [\"left\", \"center\", \"justify\", \"justifyAll\", \"radix\", \"right\"]);\n    this.id = attributes.id || \"\";\n    this.locale = attributes.locale || \"\";\n    this.maxH = (0, _utils.getMeasurement)(attributes.maxH, \"0pt\");\n    this.maxW = (0, _utils.getMeasurement)(attributes.maxW, \"0pt\");\n    this.minH = (0, _utils.getMeasurement)(attributes.minH, \"0pt\");\n    this.minW = (0, _utils.getMeasurement)(attributes.minW, \"0pt\");\n    this.name = attributes.name || \"\";\n    this.presence = (0, _utils.getStringOption)(attributes.presence, [\"visible\", \"hidden\", \"inactive\", \"invisible\"]);\n    this.relevant = (0, _utils.getRelevant)(attributes.relevant);\n    this.rotate = (0, _utils.getInteger)({\n      data: attributes.rotate,\n      defaultValue: 0,\n      validate: x => x % 90 === 0\n    });\n    this.use = attributes.use || \"\";\n    this.usehref = attributes.usehref || \"\";\n    this.w = attributes.w ? (0, _utils.getMeasurement)(attributes.w) : \"\";\n    this.x = (0, _utils.getMeasurement)(attributes.x, \"0pt\");\n    this.y = (0, _utils.getMeasurement)(attributes.y, \"0pt\");\n    this.assist = null;\n    this.bind = null;\n    this.border = null;\n    this.calculate = null;\n    this.caption = null;\n    this.desc = null;\n    this.extras = null;\n    this.font = null;\n    this.format = null;\n    this.items = new _xfa_object.XFAObjectArray(2);\n    this.keep = null;\n    this.margin = null;\n    this.para = null;\n    this.traversal = null;\n    this.ui = null;\n    this.validate = null;\n    this.value = null;\n    this.bindItems = new _xfa_object.XFAObjectArray();\n    this.connect = new _xfa_object.XFAObjectArray();\n    this.event = new _xfa_object.XFAObjectArray();\n    this.setProperty = new _xfa_object.XFAObjectArray();\n  }\n\n  [_xfa_object.$isBindable]() {\n    return true;\n  }\n\n  [_xfa_object.$setValue](value) {\n    _setValue(this, value);\n  }\n\n  [_xfa_object.$toHTML](availableSpace) {\n    setTabIndex(this);\n\n    if (!this.ui) {\n      this.ui = new Ui({});\n      this.ui[_xfa_object.$globalData] = this[_xfa_object.$globalData];\n\n      this[_xfa_object.$appendChild](this.ui);\n\n      let node;\n\n      switch (this.items.children.length) {\n        case 0:\n          node = new TextEdit({});\n          this.ui.textEdit = node;\n          break;\n\n        case 1:\n          node = new CheckButton({});\n          this.ui.checkButton = node;\n          break;\n\n        case 2:\n          node = new ChoiceList({});\n          this.ui.choiceList = node;\n          break;\n      }\n\n      this.ui[_xfa_object.$appendChild](node);\n    }\n\n    if (!this.ui || this.presence === \"hidden\" || this.presence === \"inactive\" || this.h === 0 || this.w === 0) {\n      return _utils.HTMLResult.EMPTY;\n    }\n\n    if (this.caption) {\n      delete this.caption[_xfa_object.$extra];\n    }\n\n    this[_xfa_object.$pushPara]();\n\n    const caption = this.caption ? this.caption[_xfa_object.$toHTML](availableSpace).html : null;\n    const savedW = this.w;\n    const savedH = this.h;\n    let marginH = 0;\n    let marginV = 0;\n\n    if (this.margin) {\n      marginH = this.margin.leftInset + this.margin.rightInset;\n      marginV = this.margin.topInset + this.margin.bottomInset;\n    }\n\n    let borderDims = null;\n\n    if (this.w === \"\" || this.h === \"\") {\n      let width = null;\n      let height = null;\n      let uiW = 0;\n      let uiH = 0;\n\n      if (this.ui.checkButton) {\n        uiW = uiH = this.ui.checkButton.size;\n      } else {\n        const {\n          w,\n          h\n        } = (0, _html_utils.layoutNode)(this, availableSpace);\n\n        if (w !== null) {\n          uiW = w;\n          uiH = h;\n        } else {\n          uiH = (0, _fonts.getMetrics)(this.font, true).lineNoGap;\n        }\n      }\n\n      borderDims = getBorderDims(this.ui[_xfa_object.$getExtra]());\n      uiW += borderDims.w;\n      uiH += borderDims.h;\n\n      if (this.caption) {\n        const {\n          w,\n          h,\n          isBroken\n        } = this.caption[_xfa_object.$getExtra](availableSpace);\n\n        if (isBroken && this[_xfa_object.$getSubformParent]()[_xfa_object.$isThereMoreWidth]()) {\n          this[_xfa_object.$popPara]();\n\n          return _utils.HTMLResult.FAILURE;\n        }\n\n        width = w;\n        height = h;\n\n        switch (this.caption.placement) {\n          case \"left\":\n          case \"right\":\n          case \"inline\":\n            width += uiW;\n            break;\n\n          case \"top\":\n          case \"bottom\":\n            height += uiH;\n            break;\n        }\n      } else {\n        width = uiW;\n        height = uiH;\n      }\n\n      if (width && this.w === \"\") {\n        width += marginH;\n        this.w = Math.min(this.maxW <= 0 ? Infinity : this.maxW, this.minW + 1 < width ? width : this.minW);\n      }\n\n      if (height && this.h === \"\") {\n        height += marginV;\n        this.h = Math.min(this.maxH <= 0 ? Infinity : this.maxH, this.minH + 1 < height ? height : this.minH);\n      }\n    }\n\n    this[_xfa_object.$popPara]();\n\n    (0, _html_utils.fixDimensions)(this);\n    setFirstUnsplittable(this);\n\n    if (!(0, _layout.checkDimensions)(this, availableSpace)) {\n      this.w = savedW;\n      this.h = savedH;\n\n      this[_xfa_object.$popPara]();\n\n      return _utils.HTMLResult.FAILURE;\n    }\n\n    unsetFirstUnsplittable(this);\n    const style = (0, _html_utils.toStyle)(this, \"font\", \"dimensions\", \"position\", \"rotate\", \"anchorType\", \"presence\", \"margin\", \"hAlign\");\n    (0, _html_utils.setMinMaxDimensions)(this, style);\n    const classNames = [\"xfaField\"];\n\n    if (this.font) {\n      classNames.push(\"xfaFont\");\n    }\n\n    if ((0, _html_utils.isPrintOnly)(this)) {\n      classNames.push(\"xfaPrintOnly\");\n    }\n\n    const attributes = {\n      style,\n      id: this[_xfa_object.$uid],\n      class: classNames\n    };\n\n    if (style.margin) {\n      style.padding = style.margin;\n      delete style.margin;\n    }\n\n    (0, _html_utils.setAccess)(this, classNames);\n\n    if (this.name) {\n      attributes.xfaName = this.name;\n    }\n\n    const children = [];\n    const html = {\n      name: \"div\",\n      attributes,\n      children\n    };\n    applyAssist(this, attributes);\n    const borderStyle = this.border ? this.border[_xfa_object.$toStyle]() : null;\n    const bbox = (0, _html_utils.computeBbox)(this, html, availableSpace);\n\n    const ui = this.ui[_xfa_object.$toHTML]().html;\n\n    if (!ui) {\n      Object.assign(style, borderStyle);\n      return _utils.HTMLResult.success((0, _html_utils.createWrapper)(this, html), bbox);\n    }\n\n    if (this[_xfa_object.$tabIndex]) {\n      if (ui.children && ui.children[0]) {\n        ui.children[0].attributes.tabindex = this[_xfa_object.$tabIndex];\n      } else {\n        ui.attributes.tabindex = this[_xfa_object.$tabIndex];\n      }\n    }\n\n    if (!ui.attributes.style) {\n      ui.attributes.style = Object.create(null);\n    }\n\n    let aElement = null;\n\n    if (this.ui.button) {\n      if (ui.children.length === 1) {\n        [aElement] = ui.children.splice(0, 1);\n      }\n\n      Object.assign(ui.attributes.style, borderStyle);\n    } else {\n      Object.assign(style, borderStyle);\n    }\n\n    children.push(ui);\n\n    if (this.value) {\n      if (this.ui.imageEdit) {\n        ui.children.push(this.value[_xfa_object.$toHTML]().html);\n      } else if (!this.ui.button) {\n        let value = \"\";\n\n        if (this.value.exData) {\n          value = this.value.exData[_xfa_object.$text]();\n        } else if (this.value.text) {\n          value = this.value.text[_xfa_object.$getExtra]();\n        } else {\n          const htmlValue = this.value[_xfa_object.$toHTML]().html;\n\n          if (htmlValue !== null) {\n            value = htmlValue.children[0].value;\n          }\n        }\n\n        if (this.ui.textEdit && this.value.text && this.value.text.maxChars) {\n          ui.children[0].attributes.maxLength = this.value.text.maxChars;\n        }\n\n        if (value) {\n          if (this.ui.numericEdit) {\n            value = parseFloat(value);\n            value = isNaN(value) ? \"\" : value.toString();\n          }\n\n          if (ui.children[0].name === \"textarea\") {\n            ui.children[0].attributes.textContent = value;\n          } else {\n            ui.children[0].attributes.value = value;\n          }\n        }\n      }\n    }\n\n    if (!this.ui.imageEdit && ui.children && ui.children[0] && this.h) {\n      borderDims = borderDims || getBorderDims(this.ui[_xfa_object.$getExtra]());\n      let captionHeight = 0;\n\n      if (this.caption && [\"top\", \"bottom\"].includes(this.caption.placement)) {\n        captionHeight = this.caption.reserve;\n\n        if (captionHeight <= 0) {\n          captionHeight = this.caption[_xfa_object.$getExtra](availableSpace).h;\n        }\n\n        const inputHeight = this.h - captionHeight - marginV - borderDims.h;\n        ui.children[0].attributes.style.height = (0, _html_utils.measureToString)(inputHeight);\n      } else {\n        ui.children[0].attributes.style.height = \"100%\";\n      }\n    }\n\n    if (aElement) {\n      ui.children.push(aElement);\n    }\n\n    if (!caption) {\n      if (ui.attributes.class) {\n        ui.attributes.class.push(\"xfaLeft\");\n      }\n\n      this.w = savedW;\n      this.h = savedH;\n      return _utils.HTMLResult.success((0, _html_utils.createWrapper)(this, html), bbox);\n    }\n\n    if (this.ui.button) {\n      if (style.padding) {\n        delete style.padding;\n      }\n\n      if (caption.name === \"div\") {\n        caption.name = \"span\";\n      }\n\n      ui.children.push(caption);\n      return _utils.HTMLResult.success(html, bbox);\n    } else if (this.ui.checkButton) {\n      caption.attributes.class[0] = \"xfaCaptionForCheckButton\";\n    }\n\n    if (!ui.attributes.class) {\n      ui.attributes.class = [];\n    }\n\n    ui.children.splice(0, 0, caption);\n\n    switch (this.caption.placement) {\n      case \"left\":\n        ui.attributes.class.push(\"xfaLeft\");\n        break;\n\n      case \"right\":\n        ui.attributes.class.push(\"xfaRight\");\n        break;\n\n      case \"top\":\n        ui.attributes.class.push(\"xfaTop\");\n        break;\n\n      case \"bottom\":\n        ui.attributes.class.push(\"xfaBottom\");\n        break;\n\n      case \"inline\":\n        ui.attributes.class.push(\"xfaLeft\");\n        break;\n    }\n\n    this.w = savedW;\n    this.h = savedH;\n    return _utils.HTMLResult.success((0, _html_utils.createWrapper)(this, html), bbox);\n  }\n\n}\n\nexports.Field = Field;\n\nclass Fill extends _xfa_object.XFAObject {\n  constructor(attributes) {\n    super(TEMPLATE_NS_ID, \"fill\", true);\n    this.id = attributes.id || \"\";\n    this.presence = (0, _utils.getStringOption)(attributes.presence, [\"visible\", \"hidden\", \"inactive\", \"invisible\"]);\n    this.use = attributes.use || \"\";\n    this.usehref = attributes.usehref || \"\";\n    this.color = null;\n    this.extras = null;\n    this.linear = null;\n    this.pattern = null;\n    this.radial = null;\n    this.solid = null;\n    this.stipple = null;\n  }\n\n  [_xfa_object.$toStyle]() {\n    const parent = this[_xfa_object.$getParent]();\n\n    const grandpa = parent[_xfa_object.$getParent]();\n\n    const ggrandpa = grandpa[_xfa_object.$getParent]();\n\n    const style = Object.create(null);\n    let propName = \"color\";\n    let altPropName = propName;\n\n    if (parent instanceof Border) {\n      propName = \"background-color\";\n      altPropName = \"background\";\n\n      if (ggrandpa instanceof Ui) {\n        style.backgroundColor = \"white\";\n      }\n    }\n\n    if (parent instanceof Rectangle || parent instanceof Arc) {\n      propName = altPropName = \"fill\";\n      style.fill = \"white\";\n    }\n\n    for (const name of Object.getOwnPropertyNames(this)) {\n      if (name === \"extras\" || name === \"color\") {\n        continue;\n      }\n\n      const obj = this[name];\n\n      if (!(obj instanceof _xfa_object.XFAObject)) {\n        continue;\n      }\n\n      const color = obj[_xfa_object.$toStyle](this.color);\n\n      if (color) {\n        style[color.startsWith(\"#\") ? propName : altPropName] = color;\n      }\n\n      return style;\n    }\n\n    if (this.color && this.color.value) {\n      const color = this.color[_xfa_object.$toStyle]();\n\n      style[color.startsWith(\"#\") ? propName : altPropName] = color;\n    }\n\n    return style;\n  }\n\n}\n\nclass Filter extends _xfa_object.XFAObject {\n  constructor(attributes) {\n    super(TEMPLATE_NS_ID, \"filter\", true);\n    this.addRevocationInfo = (0, _utils.getStringOption)(attributes.addRevocationInfo, [\"\", \"required\", \"optional\", \"none\"]);\n    this.id = attributes.id || \"\";\n    this.name = attributes.name || \"\";\n    this.use = attributes.use || \"\";\n    this.usehref = attributes.usehref || \"\";\n    this.version = (0, _utils.getInteger)({\n      data: this.version,\n      defaultValue: 5,\n      validate: x => x >= 1 && x <= 5\n    });\n    this.appearanceFilter = null;\n    this.certificates = null;\n    this.digestMethods = null;\n    this.encodings = null;\n    this.encryptionMethods = null;\n    this.handler = null;\n    this.lockDocument = null;\n    this.mdp = null;\n    this.reasons = null;\n    this.timeStamp = null;\n  }\n\n}\n\nclass Float extends _xfa_object.ContentObject {\n  constructor(attributes) {\n    super(TEMPLATE_NS_ID, \"float\");\n    this.id = attributes.id || \"\";\n    this.name = attributes.name || \"\";\n    this.use = attributes.use || \"\";\n    this.usehref = attributes.usehref || \"\";\n  }\n\n  [_xfa_object.$finalize]() {\n    const number = parseFloat(this[_xfa_object.$content].trim());\n    this[_xfa_object.$content] = isNaN(number) ? null : number;\n  }\n\n  [_xfa_object.$toHTML](availableSpace) {\n    return valueToHtml(this[_xfa_object.$content] !== null ? this[_xfa_object.$content].toString() : \"\");\n  }\n\n}\n\nclass Font extends _xfa_object.XFAObject {\n  constructor(attributes) {\n    super(TEMPLATE_NS_ID, \"font\", true);\n    this.baselineShift = (0, _utils.getMeasurement)(attributes.baselineShift);\n    this.fontHorizontalScale = (0, _utils.getFloat)({\n      data: attributes.fontHorizontalScale,\n      defaultValue: 100,\n      validate: x => x >= 0\n    });\n    this.fontVerticalScale = (0, _utils.getFloat)({\n      data: attributes.fontVerticalScale,\n      defaultValue: 100,\n      validate: x => x >= 0\n    });\n    this.id = attributes.id || \"\";\n    this.kerningMode = (0, _utils.getStringOption)(attributes.kerningMode, [\"none\", \"pair\"]);\n    this.letterSpacing = (0, _utils.getMeasurement)(attributes.letterSpacing, \"0\");\n    this.lineThrough = (0, _utils.getInteger)({\n      data: attributes.lineThrough,\n      defaultValue: 0,\n      validate: x => x === 1 || x === 2\n    });\n    this.lineThroughPeriod = (0, _utils.getStringOption)(attributes.lineThroughPeriod, [\"all\", \"word\"]);\n    this.overline = (0, _utils.getInteger)({\n      data: attributes.overline,\n      defaultValue: 0,\n      validate: x => x === 1 || x === 2\n    });\n    this.overlinePeriod = (0, _utils.getStringOption)(attributes.overlinePeriod, [\"all\", \"word\"]);\n    this.posture = (0, _utils.getStringOption)(attributes.posture, [\"normal\", \"italic\"]);\n    this.size = (0, _utils.getMeasurement)(attributes.size, \"10pt\");\n    this.typeface = attributes.typeface || \"Courier\";\n    this.underline = (0, _utils.getInteger)({\n      data: attributes.underline,\n      defaultValue: 0,\n      validate: x => x === 1 || x === 2\n    });\n    this.underlinePeriod = (0, _utils.getStringOption)(attributes.underlinePeriod, [\"all\", \"word\"]);\n    this.use = attributes.use || \"\";\n    this.usehref = attributes.usehref || \"\";\n    this.weight = (0, _utils.getStringOption)(attributes.weight, [\"normal\", \"bold\"]);\n    this.extras = null;\n    this.fill = null;\n  }\n\n  [_xfa_object.$clean](builder) {\n    super[_xfa_object.$clean](builder);\n\n    this[_xfa_object.$globalData].usedTypefaces.add(this.typeface);\n  }\n\n  [_xfa_object.$toStyle]() {\n    const style = (0, _html_utils.toStyle)(this, \"fill\");\n    const color = style.color;\n\n    if (color) {\n      if (color === \"#000000\") {\n        delete style.color;\n      } else if (!color.startsWith(\"#\")) {\n        style.background = color;\n        style.backgroundClip = \"text\";\n        style.color = \"transparent\";\n      }\n    }\n\n    if (this.baselineShift) {\n      style.verticalAlign = (0, _html_utils.measureToString)(this.baselineShift);\n    }\n\n    style.fontKerning = this.kerningMode === \"none\" ? \"none\" : \"normal\";\n    style.letterSpacing = (0, _html_utils.measureToString)(this.letterSpacing);\n\n    if (this.lineThrough !== 0) {\n      style.textDecoration = \"line-through\";\n\n      if (this.lineThrough === 2) {\n        style.textDecorationStyle = \"double\";\n      }\n    }\n\n    if (this.overline !== 0) {\n      style.textDecoration = \"overline\";\n\n      if (this.overline === 2) {\n        style.textDecorationStyle = \"double\";\n      }\n    }\n\n    style.fontStyle = this.posture;\n    style.fontSize = (0, _html_utils.measureToString)(0.99 * this.size);\n    (0, _html_utils.setFontFamily)(this, this, this[_xfa_object.$globalData].fontFinder, style);\n\n    if (this.underline !== 0) {\n      style.textDecoration = \"underline\";\n\n      if (this.underline === 2) {\n        style.textDecorationStyle = \"double\";\n      }\n    }\n\n    style.fontWeight = this.weight;\n    return style;\n  }\n\n}\n\nclass Format extends _xfa_object.XFAObject {\n  constructor(attributes) {\n    super(TEMPLATE_NS_ID, \"format\", true);\n    this.id = attributes.id || \"\";\n    this.use = attributes.use || \"\";\n    this.usehref = attributes.usehref || \"\";\n    this.extras = null;\n    this.picture = null;\n  }\n\n}\n\nclass Handler extends _xfa_object.StringObject {\n  constructor(attributes) {\n    super(TEMPLATE_NS_ID, \"handler\");\n    this.id = attributes.id || \"\";\n    this.type = (0, _utils.getStringOption)(attributes.type, [\"optional\", \"required\"]);\n    this.use = attributes.use || \"\";\n    this.usehref = attributes.usehref || \"\";\n  }\n\n}\n\nclass Hyphenation extends _xfa_object.XFAObject {\n  constructor(attributes) {\n    super(TEMPLATE_NS_ID, \"hyphenation\");\n    this.excludeAllCaps = (0, _utils.getInteger)({\n      data: attributes.excludeAllCaps,\n      defaultValue: 0,\n      validate: x => x === 1\n    });\n    this.excludeInitialCap = (0, _utils.getInteger)({\n      data: attributes.excludeInitialCap,\n      defaultValue: 0,\n      validate: x => x === 1\n    });\n    this.hyphenate = (0, _utils.getInteger)({\n      data: attributes.hyphenate,\n      defaultValue: 0,\n      validate: x => x === 1\n    });\n    this.id = attributes.id || \"\";\n    this.pushCharacterCount = (0, _utils.getInteger)({\n      data: attributes.pushCharacterCount,\n      defaultValue: 3,\n      validate: x => x >= 0\n    });\n    this.remainCharacterCount = (0, _utils.getInteger)({\n      data: attributes.remainCharacterCount,\n      defaultValue: 3,\n      validate: x => x >= 0\n    });\n    this.use = attributes.use || \"\";\n    this.usehref = attributes.usehref || \"\";\n    this.wordCharacterCount = (0, _utils.getInteger)({\n      data: attributes.wordCharacterCount,\n      defaultValue: 7,\n      validate: x => x >= 0\n    });\n  }\n\n}\n\nclass Image extends _xfa_object.StringObject {\n  constructor(attributes) {\n    super(TEMPLATE_NS_ID, \"image\");\n    this.aspect = (0, _utils.getStringOption)(attributes.aspect, [\"fit\", \"actual\", \"height\", \"none\", \"width\"]);\n    this.contentType = attributes.contentType || \"\";\n    this.href = attributes.href || \"\";\n    this.id = attributes.id || \"\";\n    this.name = attributes.name || \"\";\n    this.transferEncoding = (0, _utils.getStringOption)(attributes.transferEncoding, [\"base64\", \"none\", \"package\"]);\n    this.use = attributes.use || \"\";\n    this.usehref = attributes.usehref || \"\";\n  }\n\n  [_xfa_object.$toHTML]() {\n    if (this.contentType && !MIMES.has(this.contentType.toLowerCase())) {\n      return _utils.HTMLResult.EMPTY;\n    }\n\n    let buffer = this[_xfa_object.$globalData].images && this[_xfa_object.$globalData].images.get(this.href);\n\n    if (!buffer && (this.href || !this[_xfa_object.$content])) {\n      return _utils.HTMLResult.EMPTY;\n    }\n\n    if (!buffer && this.transferEncoding === \"base64\") {\n      buffer = (0, _util.stringToBytes)(atob(this[_xfa_object.$content]));\n    }\n\n    if (!buffer) {\n      return _utils.HTMLResult.EMPTY;\n    }\n\n    if (!this.contentType) {\n      for (const [header, type] of IMAGES_HEADERS) {\n        if (buffer.length > header.length && header.every((x, i) => x === buffer[i])) {\n          this.contentType = type;\n          break;\n        }\n      }\n\n      if (!this.contentType) {\n        return _utils.HTMLResult.EMPTY;\n      }\n    }\n\n    const blob = new Blob([buffer], {\n      type: this.contentType\n    });\n    let style;\n\n    switch (this.aspect) {\n      case \"fit\":\n      case \"actual\":\n        break;\n\n      case \"height\":\n        style = {\n          height: \"100%\",\n          objectFit: \"fill\"\n        };\n        break;\n\n      case \"none\":\n        style = {\n          width: \"100%\",\n          height: \"100%\",\n          objectFit: \"fill\"\n        };\n        break;\n\n      case \"width\":\n        style = {\n          width: \"100%\",\n          objectFit: \"fill\"\n        };\n        break;\n    }\n\n    const parent = this[_xfa_object.$getParent]();\n\n    return _utils.HTMLResult.success({\n      name: \"img\",\n      attributes: {\n        class: [\"xfaImage\"],\n        style,\n        src: URL.createObjectURL(blob),\n        alt: parent ? ariaLabel(parent[_xfa_object.$getParent]()) : null\n      }\n    });\n  }\n\n}\n\nclass ImageEdit extends _xfa_object.XFAObject {\n  constructor(attributes) {\n    super(TEMPLATE_NS_ID, \"imageEdit\", true);\n    this.data = (0, _utils.getStringOption)(attributes.data, [\"link\", \"embed\"]);\n    this.id = attributes.id || \"\";\n    this.use = attributes.use || \"\";\n    this.usehref = attributes.usehref || \"\";\n    this.border = null;\n    this.extras = null;\n    this.margin = null;\n  }\n\n  [_xfa_object.$toHTML](availableSpace) {\n    if (this.data === \"embed\") {\n      return _utils.HTMLResult.success({\n        name: \"div\",\n        children: [],\n        attributes: {}\n      });\n    }\n\n    return _utils.HTMLResult.EMPTY;\n  }\n\n}\n\nclass Integer extends _xfa_object.ContentObject {\n  constructor(attributes) {\n    super(TEMPLATE_NS_ID, \"integer\");\n    this.id = attributes.id || \"\";\n    this.name = attributes.name || \"\";\n    this.use = attributes.use || \"\";\n    this.usehref = attributes.usehref || \"\";\n  }\n\n  [_xfa_object.$finalize]() {\n    const number = parseInt(this[_xfa_object.$content].trim(), 10);\n    this[_xfa_object.$content] = isNaN(number) ? null : number;\n  }\n\n  [_xfa_object.$toHTML](availableSpace) {\n    return valueToHtml(this[_xfa_object.$content] !== null ? this[_xfa_object.$content].toString() : \"\");\n  }\n\n}\n\nclass Issuers extends _xfa_object.XFAObject {\n  constructor(attributes) {\n    super(TEMPLATE_NS_ID, \"issuers\", true);\n    this.id = attributes.id || \"\";\n    this.type = (0, _utils.getStringOption)(attributes.type, [\"optional\", \"required\"]);\n    this.use = attributes.use || \"\";\n    this.usehref = attributes.usehref || \"\";\n    this.certificate = new _xfa_object.XFAObjectArray();\n  }\n\n}\n\nclass Items extends _xfa_object.XFAObject {\n  constructor(attributes) {\n    super(TEMPLATE_NS_ID, \"items\", true);\n    this.id = attributes.id || \"\";\n    this.name = attributes.name || \"\";\n    this.presence = (0, _utils.getStringOption)(attributes.presence, [\"visible\", \"hidden\", \"inactive\", \"invisible\"]);\n    this.ref = attributes.ref || \"\";\n    this.save = (0, _utils.getInteger)({\n      data: attributes.save,\n      defaultValue: 0,\n      validate: x => x === 1\n    });\n    this.use = attributes.use || \"\";\n    this.usehref = attributes.usehref || \"\";\n    this.boolean = new _xfa_object.XFAObjectArray();\n    this.date = new _xfa_object.XFAObjectArray();\n    this.dateTime = new _xfa_object.XFAObjectArray();\n    this.decimal = new _xfa_object.XFAObjectArray();\n    this.exData = new _xfa_object.XFAObjectArray();\n    this.float = new _xfa_object.XFAObjectArray();\n    this.image = new _xfa_object.XFAObjectArray();\n    this.integer = new _xfa_object.XFAObjectArray();\n    this.text = new _xfa_object.XFAObjectArray();\n    this.time = new _xfa_object.XFAObjectArray();\n  }\n\n  [_xfa_object.$toHTML]() {\n    const output = [];\n\n    for (const child of this[_xfa_object.$getChildren]()) {\n      output.push(child[_xfa_object.$text]());\n    }\n\n    return _utils.HTMLResult.success(output);\n  }\n\n}\n\nexports.Items = Items;\n\nclass Keep extends _xfa_object.XFAObject {\n  constructor(attributes) {\n    super(TEMPLATE_NS_ID, \"keep\", true);\n    this.id = attributes.id || \"\";\n    const options = [\"none\", \"contentArea\", \"pageArea\"];\n    this.intact = (0, _utils.getStringOption)(attributes.intact, options);\n    this.next = (0, _utils.getStringOption)(attributes.next, options);\n    this.previous = (0, _utils.getStringOption)(attributes.previous, options);\n    this.use = attributes.use || \"\";\n    this.usehref = attributes.usehref || \"\";\n    this.extras = null;\n  }\n\n}\n\nclass KeyUsage extends _xfa_object.XFAObject {\n  constructor(attributes) {\n    super(TEMPLATE_NS_ID, \"keyUsage\");\n    const options = [\"\", \"yes\", \"no\"];\n    this.crlSign = (0, _utils.getStringOption)(attributes.crlSign, options);\n    this.dataEncipherment = (0, _utils.getStringOption)(attributes.dataEncipherment, options);\n    this.decipherOnly = (0, _utils.getStringOption)(attributes.decipherOnly, options);\n    this.digitalSignature = (0, _utils.getStringOption)(attributes.digitalSignature, options);\n    this.encipherOnly = (0, _utils.getStringOption)(attributes.encipherOnly, options);\n    this.id = attributes.id || \"\";\n    this.keyAgreement = (0, _utils.getStringOption)(attributes.keyAgreement, options);\n    this.keyCertSign = (0, _utils.getStringOption)(attributes.keyCertSign, options);\n    this.keyEncipherment = (0, _utils.getStringOption)(attributes.keyEncipherment, options);\n    this.nonRepudiation = (0, _utils.getStringOption)(attributes.nonRepudiation, options);\n    this.type = (0, _utils.getStringOption)(attributes.type, [\"optional\", \"required\"]);\n    this.use = attributes.use || \"\";\n    this.usehref = attributes.usehref || \"\";\n  }\n\n}\n\nclass Line extends _xfa_object.XFAObject {\n  constructor(attributes) {\n    super(TEMPLATE_NS_ID, \"line\", true);\n    this.hand = (0, _utils.getStringOption)(attributes.hand, [\"even\", \"left\", \"right\"]);\n    this.id = attributes.id || \"\";\n    this.slope = (0, _utils.getStringOption)(attributes.slope, [\"\\\\\", \"/\"]);\n    this.use = attributes.use || \"\";\n    this.usehref = attributes.usehref || \"\";\n    this.edge = null;\n  }\n\n  [_xfa_object.$toHTML]() {\n    const parent = this[_xfa_object.$getParent]()[_xfa_object.$getParent]();\n\n    const edge = this.edge ? this.edge : new Edge({});\n\n    const edgeStyle = edge[_xfa_object.$toStyle]();\n\n    const style = Object.create(null);\n    const thickness = edge.presence === \"visible\" ? edge.thickness : 0;\n    style.strokeWidth = (0, _html_utils.measureToString)(thickness);\n    style.stroke = edgeStyle.color;\n    let x1, y1, x2, y2;\n    let width = \"100%\";\n    let height = \"100%\";\n\n    if (parent.w <= thickness) {\n      [x1, y1, x2, y2] = [\"50%\", 0, \"50%\", \"100%\"];\n      width = style.strokeWidth;\n    } else if (parent.h <= thickness) {\n      [x1, y1, x2, y2] = [0, \"50%\", \"100%\", \"50%\"];\n      height = style.strokeWidth;\n    } else {\n      if (this.slope === \"\\\\\") {\n        [x1, y1, x2, y2] = [0, 0, \"100%\", \"100%\"];\n      } else {\n        [x1, y1, x2, y2] = [0, \"100%\", \"100%\", 0];\n      }\n    }\n\n    const line = {\n      name: \"line\",\n      attributes: {\n        xmlns: SVG_NS,\n        x1,\n        y1,\n        x2,\n        y2,\n        style\n      }\n    };\n    const svg = {\n      name: \"svg\",\n      children: [line],\n      attributes: {\n        xmlns: SVG_NS,\n        width,\n        height,\n        style: {\n          overflow: \"visible\"\n        }\n      }\n    };\n\n    if (hasMargin(parent)) {\n      return _utils.HTMLResult.success({\n        name: \"div\",\n        attributes: {\n          style: {\n            display: \"inline\",\n            width: \"100%\",\n            height: \"100%\"\n          }\n        },\n        children: [svg]\n      });\n    }\n\n    svg.attributes.style.position = \"absolute\";\n    return _utils.HTMLResult.success(svg);\n  }\n\n}\n\nclass Linear extends _xfa_object.XFAObject {\n  constructor(attributes) {\n    super(TEMPLATE_NS_ID, \"linear\", true);\n    this.id = attributes.id || \"\";\n    this.type = (0, _utils.getStringOption)(attributes.type, [\"toRight\", \"toBottom\", \"toLeft\", \"toTop\"]);\n    this.use = attributes.use || \"\";\n    this.usehref = attributes.usehref || \"\";\n    this.color = null;\n    this.extras = null;\n  }\n\n  [_xfa_object.$toStyle](startColor) {\n    startColor = startColor ? startColor[_xfa_object.$toStyle]() : \"#FFFFFF\";\n    const transf = this.type.replace(/([RBLT])/, \" $1\").toLowerCase();\n    const endColor = this.color ? this.color[_xfa_object.$toStyle]() : \"#000000\";\n    return `linear-gradient(${transf}, ${startColor}, ${endColor})`;\n  }\n\n}\n\nclass LockDocument extends _xfa_object.ContentObject {\n  constructor(attributes) {\n    super(TEMPLATE_NS_ID, \"lockDocument\");\n    this.id = attributes.id || \"\";\n    this.type = (0, _utils.getStringOption)(attributes.type, [\"optional\", \"required\"]);\n    this.use = attributes.use || \"\";\n    this.usehref = attributes.usehref || \"\";\n  }\n\n  [_xfa_object.$finalize]() {\n    this[_xfa_object.$content] = (0, _utils.getStringOption)(this[_xfa_object.$content], [\"auto\", \"0\", \"1\"]);\n  }\n\n}\n\nclass Manifest extends _xfa_object.XFAObject {\n  constructor(attributes) {\n    super(TEMPLATE_NS_ID, \"manifest\", true);\n    this.action = (0, _utils.getStringOption)(attributes.action, [\"include\", \"all\", \"exclude\"]);\n    this.id = attributes.id || \"\";\n    this.name = attributes.name || \"\";\n    this.use = attributes.use || \"\";\n    this.usehref = attributes.usehref || \"\";\n    this.extras = null;\n    this.ref = new _xfa_object.XFAObjectArray();\n  }\n\n}\n\nclass Margin extends _xfa_object.XFAObject {\n  constructor(attributes) {\n    super(TEMPLATE_NS_ID, \"margin\", true);\n    this.bottomInset = (0, _utils.getMeasurement)(attributes.bottomInset, \"0\");\n    this.id = attributes.id || \"\";\n    this.leftInset = (0, _utils.getMeasurement)(attributes.leftInset, \"0\");\n    this.rightInset = (0, _utils.getMeasurement)(attributes.rightInset, \"0\");\n    this.topInset = (0, _utils.getMeasurement)(attributes.topInset, \"0\");\n    this.use = attributes.use || \"\";\n    this.usehref = attributes.usehref || \"\";\n    this.extras = null;\n  }\n\n  [_xfa_object.$toStyle]() {\n    return {\n      margin: (0, _html_utils.measureToString)(this.topInset) + \" \" + (0, _html_utils.measureToString)(this.rightInset) + \" \" + (0, _html_utils.measureToString)(this.bottomInset) + \" \" + (0, _html_utils.measureToString)(this.leftInset)\n    };\n  }\n\n}\n\nclass Mdp extends _xfa_object.XFAObject {\n  constructor(attributes) {\n    super(TEMPLATE_NS_ID, \"mdp\");\n    this.id = attributes.id || \"\";\n    this.permissions = (0, _utils.getInteger)({\n      data: attributes.permissions,\n      defaultValue: 2,\n      validate: x => x === 1 || x === 3\n    });\n    this.signatureType = (0, _utils.getStringOption)(attributes.signatureType, [\"filler\", \"author\"]);\n    this.use = attributes.use || \"\";\n    this.usehref = attributes.usehref || \"\";\n  }\n\n}\n\nclass Medium extends _xfa_object.XFAObject {\n  constructor(attributes) {\n    super(TEMPLATE_NS_ID, \"medium\");\n    this.id = attributes.id || \"\";\n    this.imagingBBox = (0, _utils.getBBox)(attributes.imagingBBox);\n    this.long = (0, _utils.getMeasurement)(attributes.long);\n    this.orientation = (0, _utils.getStringOption)(attributes.orientation, [\"portrait\", \"landscape\"]);\n    this.short = (0, _utils.getMeasurement)(attributes.short);\n    this.stock = attributes.stock || \"\";\n    this.trayIn = (0, _utils.getStringOption)(attributes.trayIn, [\"auto\", \"delegate\", \"pageFront\"]);\n    this.trayOut = (0, _utils.getStringOption)(attributes.trayOut, [\"auto\", \"delegate\"]);\n    this.use = attributes.use || \"\";\n    this.usehref = attributes.usehref || \"\";\n  }\n\n}\n\nclass Message extends _xfa_object.XFAObject {\n  constructor(attributes) {\n    super(TEMPLATE_NS_ID, \"message\", true);\n    this.id = attributes.id || \"\";\n    this.use = attributes.use || \"\";\n    this.usehref = attributes.usehref || \"\";\n    this.text = new _xfa_object.XFAObjectArray();\n  }\n\n}\n\nclass NumericEdit extends _xfa_object.XFAObject {\n  constructor(attributes) {\n    super(TEMPLATE_NS_ID, \"numericEdit\", true);\n    this.hScrollPolicy = (0, _utils.getStringOption)(attributes.hScrollPolicy, [\"auto\", \"off\", \"on\"]);\n    this.id = attributes.id || \"\";\n    this.use = attributes.use || \"\";\n    this.usehref = attributes.usehref || \"\";\n    this.border = null;\n    this.comb = null;\n    this.extras = null;\n    this.margin = null;\n  }\n\n  [_xfa_object.$toHTML](availableSpace) {\n    const style = (0, _html_utils.toStyle)(this, \"border\", \"font\", \"margin\");\n\n    const field = this[_xfa_object.$getParent]()[_xfa_object.$getParent]();\n\n    const html = {\n      name: \"input\",\n      attributes: {\n        type: \"text\",\n        fieldId: field[_xfa_object.$uid],\n        dataId: field[_xfa_object.$data] && field[_xfa_object.$data][_xfa_object.$uid] || field[_xfa_object.$uid],\n        class: [\"xfaTextfield\"],\n        style,\n        \"aria-label\": ariaLabel(field)\n      }\n    };\n    return _utils.HTMLResult.success({\n      name: \"label\",\n      attributes: {\n        class: [\"xfaLabel\"]\n      },\n      children: [html]\n    });\n  }\n\n}\n\nclass Occur extends _xfa_object.XFAObject {\n  constructor(attributes) {\n    super(TEMPLATE_NS_ID, \"occur\", true);\n    this.id = attributes.id || \"\";\n    this.initial = attributes.initial !== \"\" ? (0, _utils.getInteger)({\n      data: attributes.initial,\n      defaultValue: \"\",\n      validate: x => true\n    }) : \"\";\n    this.max = attributes.max !== \"\" ? (0, _utils.getInteger)({\n      data: attributes.max,\n      defaultValue: 1,\n      validate: x => true\n    }) : \"\";\n    this.min = attributes.min !== \"\" ? (0, _utils.getInteger)({\n      data: attributes.min,\n      defaultValue: 1,\n      validate: x => true\n    }) : \"\";\n    this.use = attributes.use || \"\";\n    this.usehref = attributes.usehref || \"\";\n    this.extras = null;\n  }\n\n  [_xfa_object.$clean]() {\n    const parent = this[_xfa_object.$getParent]();\n\n    const originalMin = this.min;\n\n    if (this.min === \"\") {\n      this.min = parent instanceof PageArea || parent instanceof PageSet ? 0 : 1;\n    }\n\n    if (this.max === \"\") {\n      if (originalMin === \"\") {\n        this.max = parent instanceof PageArea || parent instanceof PageSet ? -1 : 1;\n      } else {\n        this.max = this.min;\n      }\n    }\n\n    if (this.max !== -1 && this.max < this.min) {\n      this.max = this.min;\n    }\n\n    if (this.initial === \"\") {\n      this.initial = parent instanceof Template ? 1 : this.min;\n    }\n  }\n\n}\n\nclass Oid extends _xfa_object.StringObject {\n  constructor(attributes) {\n    super(TEMPLATE_NS_ID, \"oid\");\n    this.id = attributes.id || \"\";\n    this.name = attributes.name || \"\";\n    this.use = attributes.use || \"\";\n    this.usehref = attributes.usehref || \"\";\n  }\n\n}\n\nclass Oids extends _xfa_object.XFAObject {\n  constructor(attributes) {\n    super(TEMPLATE_NS_ID, \"oids\", true);\n    this.id = attributes.id || \"\";\n    this.type = (0, _utils.getStringOption)(attributes.type, [\"optional\", \"required\"]);\n    this.use = attributes.use || \"\";\n    this.usehref = attributes.usehref || \"\";\n    this.oid = new _xfa_object.XFAObjectArray();\n  }\n\n}\n\nclass Overflow extends _xfa_object.XFAObject {\n  constructor(attributes) {\n    super(TEMPLATE_NS_ID, \"overflow\");\n    this.id = attributes.id || \"\";\n    this.leader = attributes.leader || \"\";\n    this.target = attributes.target || \"\";\n    this.trailer = attributes.trailer || \"\";\n    this.use = attributes.use || \"\";\n    this.usehref = attributes.usehref || \"\";\n  }\n\n  [_xfa_object.$getExtra]() {\n    if (!this[_xfa_object.$extra]) {\n      const parent = this[_xfa_object.$getParent]();\n\n      const root = this[_xfa_object.$getTemplateRoot]();\n\n      const target = root[_xfa_object.$searchNode](this.target, parent);\n\n      const leader = root[_xfa_object.$searchNode](this.leader, parent);\n\n      const trailer = root[_xfa_object.$searchNode](this.trailer, parent);\n\n      this[_xfa_object.$extra] = {\n        target: target && target[0] || null,\n        leader: leader && leader[0] || null,\n        trailer: trailer && trailer[0] || null,\n        addLeader: false,\n        addTrailer: false\n      };\n    }\n\n    return this[_xfa_object.$extra];\n  }\n\n}\n\nclass PageArea extends _xfa_object.XFAObject {\n  constructor(attributes) {\n    super(TEMPLATE_NS_ID, \"pageArea\", true);\n    this.blankOrNotBlank = (0, _utils.getStringOption)(attributes.blankOrNotBlank, [\"any\", \"blank\", \"notBlank\"]);\n    this.id = attributes.id || \"\";\n    this.initialNumber = (0, _utils.getInteger)({\n      data: attributes.initialNumber,\n      defaultValue: 1,\n      validate: x => true\n    });\n    this.name = attributes.name || \"\";\n    this.numbered = (0, _utils.getInteger)({\n      data: attributes.numbered,\n      defaultValue: 1,\n      validate: x => true\n    });\n    this.oddOrEven = (0, _utils.getStringOption)(attributes.oddOrEven, [\"any\", \"even\", \"odd\"]);\n    this.pagePosition = (0, _utils.getStringOption)(attributes.pagePosition, [\"any\", \"first\", \"last\", \"only\", \"rest\"]);\n    this.relevant = (0, _utils.getRelevant)(attributes.relevant);\n    this.use = attributes.use || \"\";\n    this.usehref = attributes.usehref || \"\";\n    this.desc = null;\n    this.extras = null;\n    this.medium = null;\n    this.occur = null;\n    this.area = new _xfa_object.XFAObjectArray();\n    this.contentArea = new _xfa_object.XFAObjectArray();\n    this.draw = new _xfa_object.XFAObjectArray();\n    this.exclGroup = new _xfa_object.XFAObjectArray();\n    this.field = new _xfa_object.XFAObjectArray();\n    this.subform = new _xfa_object.XFAObjectArray();\n  }\n\n  [_xfa_object.$isUsable]() {\n    if (!this[_xfa_object.$extra]) {\n      this[_xfa_object.$extra] = {\n        numberOfUse: 0\n      };\n      return true;\n    }\n\n    return !this.occur || this.occur.max === -1 || this[_xfa_object.$extra].numberOfUse < this.occur.max;\n  }\n\n  [_xfa_object.$cleanPage]() {\n    delete this[_xfa_object.$extra];\n  }\n\n  [_xfa_object.$getNextPage]() {\n    if (!this[_xfa_object.$extra]) {\n      this[_xfa_object.$extra] = {\n        numberOfUse: 0\n      };\n    }\n\n    const parent = this[_xfa_object.$getParent]();\n\n    if (parent.relation === \"orderedOccurrence\") {\n      if (this[_xfa_object.$isUsable]()) {\n        this[_xfa_object.$extra].numberOfUse += 1;\n        return this;\n      }\n    }\n\n    return parent[_xfa_object.$getNextPage]();\n  }\n\n  [_xfa_object.$getAvailableSpace]() {\n    return this[_xfa_object.$extra].space || {\n      width: 0,\n      height: 0\n    };\n  }\n\n  [_xfa_object.$toHTML]() {\n    if (!this[_xfa_object.$extra]) {\n      this[_xfa_object.$extra] = {\n        numberOfUse: 1\n      };\n    }\n\n    const children = [];\n    this[_xfa_object.$extra].children = children;\n    const style = Object.create(null);\n\n    if (this.medium && this.medium.short && this.medium.long) {\n      style.width = (0, _html_utils.measureToString)(this.medium.short);\n      style.height = (0, _html_utils.measureToString)(this.medium.long);\n      this[_xfa_object.$extra].space = {\n        width: this.medium.short,\n        height: this.medium.long\n      };\n\n      if (this.medium.orientation === \"landscape\") {\n        const x = style.width;\n        style.width = style.height;\n        style.height = x;\n        this[_xfa_object.$extra].space = {\n          width: this.medium.long,\n          height: this.medium.short\n        };\n      }\n    } else {\n      (0, _util.warn)(\"XFA - No medium specified in pageArea: please file a bug.\");\n    }\n\n    this[_xfa_object.$childrenToHTML]({\n      filter: new Set([\"area\", \"draw\", \"field\", \"subform\"]),\n      include: true\n    });\n\n    this[_xfa_object.$childrenToHTML]({\n      filter: new Set([\"contentArea\"]),\n      include: true\n    });\n\n    return _utils.HTMLResult.success({\n      name: \"div\",\n      children,\n      attributes: {\n        class: [\"xfaPage\"],\n        id: this[_xfa_object.$uid],\n        style,\n        xfaName: this.name\n      }\n    });\n  }\n\n}\n\nclass PageSet extends _xfa_object.XFAObject {\n  constructor(attributes) {\n    super(TEMPLATE_NS_ID, \"pageSet\", true);\n    this.duplexImposition = (0, _utils.getStringOption)(attributes.duplexImposition, [\"longEdge\", \"shortEdge\"]);\n    this.id = attributes.id || \"\";\n    this.name = attributes.name || \"\";\n    this.relation = (0, _utils.getStringOption)(attributes.relation, [\"orderedOccurrence\", \"duplexPaginated\", \"simplexPaginated\"]);\n    this.relevant = (0, _utils.getRelevant)(attributes.relevant);\n    this.use = attributes.use || \"\";\n    this.usehref = attributes.usehref || \"\";\n    this.extras = null;\n    this.occur = null;\n    this.pageArea = new _xfa_object.XFAObjectArray();\n    this.pageSet = new _xfa_object.XFAObjectArray();\n  }\n\n  [_xfa_object.$cleanPage]() {\n    for (const page of this.pageArea.children) {\n      page[_xfa_object.$cleanPage]();\n    }\n\n    for (const page of this.pageSet.children) {\n      page[_xfa_object.$cleanPage]();\n    }\n  }\n\n  [_xfa_object.$isUsable]() {\n    return !this.occur || this.occur.max === -1 || this[_xfa_object.$extra].numberOfUse < this.occur.max;\n  }\n\n  [_xfa_object.$getNextPage]() {\n    if (!this[_xfa_object.$extra]) {\n      this[_xfa_object.$extra] = {\n        numberOfUse: 1,\n        pageIndex: -1,\n        pageSetIndex: -1\n      };\n    }\n\n    if (this.relation === \"orderedOccurrence\") {\n      if (this[_xfa_object.$extra].pageIndex + 1 < this.pageArea.children.length) {\n        this[_xfa_object.$extra].pageIndex += 1;\n        const pageArea = this.pageArea.children[this[_xfa_object.$extra].pageIndex];\n        return pageArea[_xfa_object.$getNextPage]();\n      }\n\n      if (this[_xfa_object.$extra].pageSetIndex + 1 < this.pageSet.children.length) {\n        this[_xfa_object.$extra].pageSetIndex += 1;\n        return this.pageSet.children[this[_xfa_object.$extra].pageSetIndex][_xfa_object.$getNextPage]();\n      }\n\n      if (this[_xfa_object.$isUsable]()) {\n        this[_xfa_object.$extra].numberOfUse += 1;\n        this[_xfa_object.$extra].pageIndex = -1;\n        this[_xfa_object.$extra].pageSetIndex = -1;\n        return this[_xfa_object.$getNextPage]();\n      }\n\n      const parent = this[_xfa_object.$getParent]();\n\n      if (parent instanceof PageSet) {\n        return parent[_xfa_object.$getNextPage]();\n      }\n\n      this[_xfa_object.$cleanPage]();\n\n      return this[_xfa_object.$getNextPage]();\n    }\n\n    const pageNumber = this[_xfa_object.$getTemplateRoot]()[_xfa_object.$extra].pageNumber;\n\n    const parity = pageNumber % 2 === 0 ? \"even\" : \"odd\";\n    const position = pageNumber === 0 ? \"first\" : \"rest\";\n    let page = this.pageArea.children.find(p => p.oddOrEven === parity && p.pagePosition === position);\n\n    if (page) {\n      return page;\n    }\n\n    page = this.pageArea.children.find(p => p.oddOrEven === \"any\" && p.pagePosition === position);\n\n    if (page) {\n      return page;\n    }\n\n    page = this.pageArea.children.find(p => p.oddOrEven === \"any\" && p.pagePosition === \"any\");\n\n    if (page) {\n      return page;\n    }\n\n    return this.pageArea.children[0];\n  }\n\n}\n\nclass Para extends _xfa_object.XFAObject {\n  constructor(attributes) {\n    super(TEMPLATE_NS_ID, \"para\", true);\n    this.hAlign = (0, _utils.getStringOption)(attributes.hAlign, [\"left\", \"center\", \"justify\", \"justifyAll\", \"radix\", \"right\"]);\n    this.id = attributes.id || \"\";\n    this.lineHeight = attributes.lineHeight ? (0, _utils.getMeasurement)(attributes.lineHeight, \"0pt\") : \"\";\n    this.marginLeft = attributes.marginLeft ? (0, _utils.getMeasurement)(attributes.marginLeft, \"0pt\") : \"\";\n    this.marginRight = attributes.marginRight ? (0, _utils.getMeasurement)(attributes.marginRight, \"0pt\") : \"\";\n    this.orphans = (0, _utils.getInteger)({\n      data: attributes.orphans,\n      defaultValue: 0,\n      validate: x => x >= 0\n    });\n    this.preserve = attributes.preserve || \"\";\n    this.radixOffset = attributes.radixOffset ? (0, _utils.getMeasurement)(attributes.radixOffset, \"0pt\") : \"\";\n    this.spaceAbove = attributes.spaceAbove ? (0, _utils.getMeasurement)(attributes.spaceAbove, \"0pt\") : \"\";\n    this.spaceBelow = attributes.spaceBelow ? (0, _utils.getMeasurement)(attributes.spaceBelow, \"0pt\") : \"\";\n    this.tabDefault = attributes.tabDefault ? (0, _utils.getMeasurement)(this.tabDefault) : \"\";\n    this.tabStops = (attributes.tabStops || \"\").trim().split(/\\s+/).map((x, i) => i % 2 === 1 ? (0, _utils.getMeasurement)(x) : x);\n    this.textIndent = attributes.textIndent ? (0, _utils.getMeasurement)(attributes.textIndent, \"0pt\") : \"\";\n    this.use = attributes.use || \"\";\n    this.usehref = attributes.usehref || \"\";\n    this.vAlign = (0, _utils.getStringOption)(attributes.vAlign, [\"top\", \"bottom\", \"middle\"]);\n    this.widows = (0, _utils.getInteger)({\n      data: attributes.widows,\n      defaultValue: 0,\n      validate: x => x >= 0\n    });\n    this.hyphenation = null;\n  }\n\n  [_xfa_object.$toStyle]() {\n    const style = (0, _html_utils.toStyle)(this, \"hAlign\");\n\n    if (this.marginLeft !== \"\") {\n      style.paddingLeft = (0, _html_utils.measureToString)(this.marginLeft);\n    }\n\n    if (this.marginRight !== \"\") {\n      style.paddingight = (0, _html_utils.measureToString)(this.marginRight);\n    }\n\n    if (this.spaceAbove !== \"\") {\n      style.paddingTop = (0, _html_utils.measureToString)(this.spaceAbove);\n    }\n\n    if (this.spaceBelow !== \"\") {\n      style.paddingBottom = (0, _html_utils.measureToString)(this.spaceBelow);\n    }\n\n    if (this.textIndent !== \"\") {\n      style.textIndent = (0, _html_utils.measureToString)(this.textIndent);\n      (0, _html_utils.fixTextIndent)(style);\n    }\n\n    if (this.lineHeight > 0) {\n      style.lineHeight = (0, _html_utils.measureToString)(this.lineHeight);\n    }\n\n    if (this.tabDefault !== \"\") {\n      style.tabSize = (0, _html_utils.measureToString)(this.tabDefault);\n    }\n\n    if (this.tabStops.length > 0) {}\n\n    if (this.hyphenatation) {\n      Object.assign(style, this.hyphenatation[_xfa_object.$toStyle]());\n    }\n\n    return style;\n  }\n\n}\n\nclass PasswordEdit extends _xfa_object.XFAObject {\n  constructor(attributes) {\n    super(TEMPLATE_NS_ID, \"passwordEdit\", true);\n    this.hScrollPolicy = (0, _utils.getStringOption)(attributes.hScrollPolicy, [\"auto\", \"off\", \"on\"]);\n    this.id = attributes.id || \"\";\n    this.passwordChar = attributes.passwordChar || \"*\";\n    this.use = attributes.use || \"\";\n    this.usehref = attributes.usehref || \"\";\n    this.border = null;\n    this.extras = null;\n    this.margin = null;\n  }\n\n}\n\nclass Pattern extends _xfa_object.XFAObject {\n  constructor(attributes) {\n    super(TEMPLATE_NS_ID, \"pattern\", true);\n    this.id = attributes.id || \"\";\n    this.type = (0, _utils.getStringOption)(attributes.type, [\"crossHatch\", \"crossDiagonal\", \"diagonalLeft\", \"diagonalRight\", \"horizontal\", \"vertical\"]);\n    this.use = attributes.use || \"\";\n    this.usehref = attributes.usehref || \"\";\n    this.color = null;\n    this.extras = null;\n  }\n\n  [_xfa_object.$toStyle](startColor) {\n    startColor = startColor ? startColor[_xfa_object.$toStyle]() : \"#FFFFFF\";\n    const endColor = this.color ? this.color[_xfa_object.$toStyle]() : \"#000000\";\n    const width = 5;\n    const cmd = \"repeating-linear-gradient\";\n    const colors = `${startColor},${startColor} ${width}px,${endColor} ${width}px,${endColor} ${2 * width}px`;\n\n    switch (this.type) {\n      case \"crossHatch\":\n        return `${cmd}(to top,${colors}) ${cmd}(to right,${colors})`;\n\n      case \"crossDiagonal\":\n        return `${cmd}(45deg,${colors}) ${cmd}(-45deg,${colors})`;\n\n      case \"diagonalLeft\":\n        return `${cmd}(45deg,${colors})`;\n\n      case \"diagonalRight\":\n        return `${cmd}(-45deg,${colors})`;\n\n      case \"horizontal\":\n        return `${cmd}(to top,${colors})`;\n\n      case \"vertical\":\n        return `${cmd}(to right,${colors})`;\n    }\n\n    return \"\";\n  }\n\n}\n\nclass Picture extends _xfa_object.StringObject {\n  constructor(attributes) {\n    super(TEMPLATE_NS_ID, \"picture\");\n    this.id = attributes.id || \"\";\n    this.use = attributes.use || \"\";\n    this.usehref = attributes.usehref || \"\";\n  }\n\n}\n\nclass Proto extends _xfa_object.XFAObject {\n  constructor(attributes) {\n    super(TEMPLATE_NS_ID, \"proto\", true);\n    this.appearanceFilter = new _xfa_object.XFAObjectArray();\n    this.arc = new _xfa_object.XFAObjectArray();\n    this.area = new _xfa_object.XFAObjectArray();\n    this.assist = new _xfa_object.XFAObjectArray();\n    this.barcode = new _xfa_object.XFAObjectArray();\n    this.bindItems = new _xfa_object.XFAObjectArray();\n    this.bookend = new _xfa_object.XFAObjectArray();\n    this.boolean = new _xfa_object.XFAObjectArray();\n    this.border = new _xfa_object.XFAObjectArray();\n    this.break = new _xfa_object.XFAObjectArray();\n    this.breakAfter = new _xfa_object.XFAObjectArray();\n    this.breakBefore = new _xfa_object.XFAObjectArray();\n    this.button = new _xfa_object.XFAObjectArray();\n    this.calculate = new _xfa_object.XFAObjectArray();\n    this.caption = new _xfa_object.XFAObjectArray();\n    this.certificate = new _xfa_object.XFAObjectArray();\n    this.certificates = new _xfa_object.XFAObjectArray();\n    this.checkButton = new _xfa_object.XFAObjectArray();\n    this.choiceList = new _xfa_object.XFAObjectArray();\n    this.color = new _xfa_object.XFAObjectArray();\n    this.comb = new _xfa_object.XFAObjectArray();\n    this.connect = new _xfa_object.XFAObjectArray();\n    this.contentArea = new _xfa_object.XFAObjectArray();\n    this.corner = new _xfa_object.XFAObjectArray();\n    this.date = new _xfa_object.XFAObjectArray();\n    this.dateTime = new _xfa_object.XFAObjectArray();\n    this.dateTimeEdit = new _xfa_object.XFAObjectArray();\n    this.decimal = new _xfa_object.XFAObjectArray();\n    this.defaultUi = new _xfa_object.XFAObjectArray();\n    this.desc = new _xfa_object.XFAObjectArray();\n    this.digestMethod = new _xfa_object.XFAObjectArray();\n    this.digestMethods = new _xfa_object.XFAObjectArray();\n    this.draw = new _xfa_object.XFAObjectArray();\n    this.edge = new _xfa_object.XFAObjectArray();\n    this.encoding = new _xfa_object.XFAObjectArray();\n    this.encodings = new _xfa_object.XFAObjectArray();\n    this.encrypt = new _xfa_object.XFAObjectArray();\n    this.encryptData = new _xfa_object.XFAObjectArray();\n    this.encryption = new _xfa_object.XFAObjectArray();\n    this.encryptionMethod = new _xfa_object.XFAObjectArray();\n    this.encryptionMethods = new _xfa_object.XFAObjectArray();\n    this.event = new _xfa_object.XFAObjectArray();\n    this.exData = new _xfa_object.XFAObjectArray();\n    this.exObject = new _xfa_object.XFAObjectArray();\n    this.exclGroup = new _xfa_object.XFAObjectArray();\n    this.execute = new _xfa_object.XFAObjectArray();\n    this.extras = new _xfa_object.XFAObjectArray();\n    this.field = new _xfa_object.XFAObjectArray();\n    this.fill = new _xfa_object.XFAObjectArray();\n    this.filter = new _xfa_object.XFAObjectArray();\n    this.float = new _xfa_object.XFAObjectArray();\n    this.font = new _xfa_object.XFAObjectArray();\n    this.format = new _xfa_object.XFAObjectArray();\n    this.handler = new _xfa_object.XFAObjectArray();\n    this.hyphenation = new _xfa_object.XFAObjectArray();\n    this.image = new _xfa_object.XFAObjectArray();\n    this.imageEdit = new _xfa_object.XFAObjectArray();\n    this.integer = new _xfa_object.XFAObjectArray();\n    this.issuers = new _xfa_object.XFAObjectArray();\n    this.items = new _xfa_object.XFAObjectArray();\n    this.keep = new _xfa_object.XFAObjectArray();\n    this.keyUsage = new _xfa_object.XFAObjectArray();\n    this.line = new _xfa_object.XFAObjectArray();\n    this.linear = new _xfa_object.XFAObjectArray();\n    this.lockDocument = new _xfa_object.XFAObjectArray();\n    this.manifest = new _xfa_object.XFAObjectArray();\n    this.margin = new _xfa_object.XFAObjectArray();\n    this.mdp = new _xfa_object.XFAObjectArray();\n    this.medium = new _xfa_object.XFAObjectArray();\n    this.message = new _xfa_object.XFAObjectArray();\n    this.numericEdit = new _xfa_object.XFAObjectArray();\n    this.occur = new _xfa_object.XFAObjectArray();\n    this.oid = new _xfa_object.XFAObjectArray();\n    this.oids = new _xfa_object.XFAObjectArray();\n    this.overflow = new _xfa_object.XFAObjectArray();\n    this.pageArea = new _xfa_object.XFAObjectArray();\n    this.pageSet = new _xfa_object.XFAObjectArray();\n    this.para = new _xfa_object.XFAObjectArray();\n    this.passwordEdit = new _xfa_object.XFAObjectArray();\n    this.pattern = new _xfa_object.XFAObjectArray();\n    this.picture = new _xfa_object.XFAObjectArray();\n    this.radial = new _xfa_object.XFAObjectArray();\n    this.reason = new _xfa_object.XFAObjectArray();\n    this.reasons = new _xfa_object.XFAObjectArray();\n    this.rectangle = new _xfa_object.XFAObjectArray();\n    this.ref = new _xfa_object.XFAObjectArray();\n    this.script = new _xfa_object.XFAObjectArray();\n    this.setProperty = new _xfa_object.XFAObjectArray();\n    this.signData = new _xfa_object.XFAObjectArray();\n    this.signature = new _xfa_object.XFAObjectArray();\n    this.signing = new _xfa_object.XFAObjectArray();\n    this.solid = new _xfa_object.XFAObjectArray();\n    this.speak = new _xfa_object.XFAObjectArray();\n    this.stipple = new _xfa_object.XFAObjectArray();\n    this.subform = new _xfa_object.XFAObjectArray();\n    this.subformSet = new _xfa_object.XFAObjectArray();\n    this.subjectDN = new _xfa_object.XFAObjectArray();\n    this.subjectDNs = new _xfa_object.XFAObjectArray();\n    this.submit = new _xfa_object.XFAObjectArray();\n    this.text = new _xfa_object.XFAObjectArray();\n    this.textEdit = new _xfa_object.XFAObjectArray();\n    this.time = new _xfa_object.XFAObjectArray();\n    this.timeStamp = new _xfa_object.XFAObjectArray();\n    this.toolTip = new _xfa_object.XFAObjectArray();\n    this.traversal = new _xfa_object.XFAObjectArray();\n    this.traverse = new _xfa_object.XFAObjectArray();\n    this.ui = new _xfa_object.XFAObjectArray();\n    this.validate = new _xfa_object.XFAObjectArray();\n    this.value = new _xfa_object.XFAObjectArray();\n    this.variables = new _xfa_object.XFAObjectArray();\n  }\n\n}\n\nclass Radial extends _xfa_object.XFAObject {\n  constructor(attributes) {\n    super(TEMPLATE_NS_ID, \"radial\", true);\n    this.id = attributes.id || \"\";\n    this.type = (0, _utils.getStringOption)(attributes.type, [\"toEdge\", \"toCenter\"]);\n    this.use = attributes.use || \"\";\n    this.usehref = attributes.usehref || \"\";\n    this.color = null;\n    this.extras = null;\n  }\n\n  [_xfa_object.$toStyle](startColor) {\n    startColor = startColor ? startColor[_xfa_object.$toStyle]() : \"#FFFFFF\";\n    const endColor = this.color ? this.color[_xfa_object.$toStyle]() : \"#000000\";\n    const colors = this.type === \"toEdge\" ? `${startColor},${endColor}` : `${endColor},${startColor}`;\n    return `radial-gradient(circle at center, ${colors})`;\n  }\n\n}\n\nclass Reason extends _xfa_object.StringObject {\n  constructor(attributes) {\n    super(TEMPLATE_NS_ID, \"reason\");\n    this.id = attributes.id || \"\";\n    this.name = attributes.name || \"\";\n    this.use = attributes.use || \"\";\n    this.usehref = attributes.usehref || \"\";\n  }\n\n}\n\nclass Reasons extends _xfa_object.XFAObject {\n  constructor(attributes) {\n    super(TEMPLATE_NS_ID, \"reasons\", true);\n    this.id = attributes.id || \"\";\n    this.type = (0, _utils.getStringOption)(attributes.type, [\"optional\", \"required\"]);\n    this.use = attributes.use || \"\";\n    this.usehref = attributes.usehref || \"\";\n    this.reason = new _xfa_object.XFAObjectArray();\n  }\n\n}\n\nclass Rectangle extends _xfa_object.XFAObject {\n  constructor(attributes) {\n    super(TEMPLATE_NS_ID, \"rectangle\", true);\n    this.hand = (0, _utils.getStringOption)(attributes.hand, [\"even\", \"left\", \"right\"]);\n    this.id = attributes.id || \"\";\n    this.use = attributes.use || \"\";\n    this.usehref = attributes.usehref || \"\";\n    this.corner = new _xfa_object.XFAObjectArray(4);\n    this.edge = new _xfa_object.XFAObjectArray(4);\n    this.fill = null;\n  }\n\n  [_xfa_object.$toHTML]() {\n    const edge = this.edge.children.length ? this.edge.children[0] : new Edge({});\n\n    const edgeStyle = edge[_xfa_object.$toStyle]();\n\n    const style = Object.create(null);\n\n    if (this.fill && this.fill.presence === \"visible\") {\n      Object.assign(style, this.fill[_xfa_object.$toStyle]());\n    } else {\n      style.fill = \"transparent\";\n    }\n\n    style.strokeWidth = (0, _html_utils.measureToString)(edge.presence === \"visible\" ? edge.thickness : 0);\n    style.stroke = edgeStyle.color;\n    const corner = this.corner.children.length ? this.corner.children[0] : new Corner({});\n\n    const cornerStyle = corner[_xfa_object.$toStyle]();\n\n    const rect = {\n      name: \"rect\",\n      attributes: {\n        xmlns: SVG_NS,\n        width: \"100%\",\n        height: \"100%\",\n        x: 0,\n        y: 0,\n        rx: cornerStyle.radius,\n        ry: cornerStyle.radius,\n        style\n      }\n    };\n    const svg = {\n      name: \"svg\",\n      children: [rect],\n      attributes: {\n        xmlns: SVG_NS,\n        style: {\n          overflow: \"visible\"\n        },\n        width: \"100%\",\n        height: \"100%\"\n      }\n    };\n\n    const parent = this[_xfa_object.$getParent]()[_xfa_object.$getParent]();\n\n    if (hasMargin(parent)) {\n      return _utils.HTMLResult.success({\n        name: \"div\",\n        attributes: {\n          style: {\n            display: \"inline\",\n            width: \"100%\",\n            height: \"100%\"\n          }\n        },\n        children: [svg]\n      });\n    }\n\n    svg.attributes.style.position = \"absolute\";\n    return _utils.HTMLResult.success(svg);\n  }\n\n}\n\nclass RefElement extends _xfa_object.StringObject {\n  constructor(attributes) {\n    super(TEMPLATE_NS_ID, \"ref\");\n    this.id = attributes.id || \"\";\n    this.use = attributes.use || \"\";\n    this.usehref = attributes.usehref || \"\";\n  }\n\n}\n\nclass Script extends _xfa_object.StringObject {\n  constructor(attributes) {\n    super(TEMPLATE_NS_ID, \"script\");\n    this.binding = attributes.binding || \"\";\n    this.contentType = attributes.contentType || \"\";\n    this.id = attributes.id || \"\";\n    this.name = attributes.name || \"\";\n    this.runAt = (0, _utils.getStringOption)(attributes.runAt, [\"client\", \"both\", \"server\"]);\n    this.use = attributes.use || \"\";\n    this.usehref = attributes.usehref || \"\";\n  }\n\n}\n\nclass SetProperty extends _xfa_object.XFAObject {\n  constructor(attributes) {\n    super(TEMPLATE_NS_ID, \"setProperty\");\n    this.connection = attributes.connection || \"\";\n    this.ref = attributes.ref || \"\";\n    this.target = attributes.target || \"\";\n  }\n\n}\n\nexports.SetProperty = SetProperty;\n\nclass SignData extends _xfa_object.XFAObject {\n  constructor(attributes) {\n    super(TEMPLATE_NS_ID, \"signData\", true);\n    this.id = attributes.id || \"\";\n    this.operation = (0, _utils.getStringOption)(attributes.operation, [\"sign\", \"clear\", \"verify\"]);\n    this.ref = attributes.ref || \"\";\n    this.target = attributes.target || \"\";\n    this.use = attributes.use || \"\";\n    this.usehref = attributes.usehref || \"\";\n    this.filter = null;\n    this.manifest = null;\n  }\n\n}\n\nclass Signature extends _xfa_object.XFAObject {\n  constructor(attributes) {\n    super(TEMPLATE_NS_ID, \"signature\", true);\n    this.id = attributes.id || \"\";\n    this.type = (0, _utils.getStringOption)(attributes.type, [\"PDF1.3\", \"PDF1.6\"]);\n    this.use = attributes.use || \"\";\n    this.usehref = attributes.usehref || \"\";\n    this.border = null;\n    this.extras = null;\n    this.filter = null;\n    this.manifest = null;\n    this.margin = null;\n  }\n\n}\n\nclass Signing extends _xfa_object.XFAObject {\n  constructor(attributes) {\n    super(TEMPLATE_NS_ID, \"signing\", true);\n    this.id = attributes.id || \"\";\n    this.type = (0, _utils.getStringOption)(attributes.type, [\"optional\", \"required\"]);\n    this.use = attributes.use || \"\";\n    this.usehref = attributes.usehref || \"\";\n    this.certificate = new _xfa_object.XFAObjectArray();\n  }\n\n}\n\nclass Solid extends _xfa_object.XFAObject {\n  constructor(attributes) {\n    super(TEMPLATE_NS_ID, \"solid\", true);\n    this.id = attributes.id || \"\";\n    this.use = attributes.use || \"\";\n    this.usehref = attributes.usehref || \"\";\n    this.extras = null;\n  }\n\n  [_xfa_object.$toStyle](startColor) {\n    return startColor ? startColor[_xfa_object.$toStyle]() : \"#FFFFFF\";\n  }\n\n}\n\nclass Speak extends _xfa_object.StringObject {\n  constructor(attributes) {\n    super(TEMPLATE_NS_ID, \"speak\");\n    this.disable = (0, _utils.getInteger)({\n      data: attributes.disable,\n      defaultValue: 0,\n      validate: x => x === 1\n    });\n    this.id = attributes.id || \"\";\n    this.priority = (0, _utils.getStringOption)(attributes.priority, [\"custom\", \"caption\", \"name\", \"toolTip\"]);\n    this.rid = attributes.rid || \"\";\n    this.use = attributes.use || \"\";\n    this.usehref = attributes.usehref || \"\";\n  }\n\n}\n\nclass Stipple extends _xfa_object.XFAObject {\n  constructor(attributes) {\n    super(TEMPLATE_NS_ID, \"stipple\", true);\n    this.id = attributes.id || \"\";\n    this.rate = (0, _utils.getInteger)({\n      data: attributes.rate,\n      defaultValue: 50,\n      validate: x => x >= 0 && x <= 100\n    });\n    this.use = attributes.use || \"\";\n    this.usehref = attributes.usehref || \"\";\n    this.color = null;\n    this.extras = null;\n  }\n\n  [_xfa_object.$toStyle](bgColor) {\n    const alpha = this.rate / 100;\n    return _util.Util.makeHexColor(Math.round(bgColor.value.r * (1 - alpha) + this.value.r * alpha), Math.round(bgColor.value.g * (1 - alpha) + this.value.g * alpha), Math.round(bgColor.value.b * (1 - alpha) + this.value.b * alpha));\n  }\n\n}\n\nclass Subform extends _xfa_object.XFAObject {\n  constructor(attributes) {\n    super(TEMPLATE_NS_ID, \"subform\", true);\n    this.access = (0, _utils.getStringOption)(attributes.access, [\"open\", \"nonInteractive\", \"protected\", \"readOnly\"]);\n    this.allowMacro = (0, _utils.getInteger)({\n      data: attributes.allowMacro,\n      defaultValue: 0,\n      validate: x => x === 1\n    });\n    this.anchorType = (0, _utils.getStringOption)(attributes.anchorType, [\"topLeft\", \"bottomCenter\", \"bottomLeft\", \"bottomRight\", \"middleCenter\", \"middleLeft\", \"middleRight\", \"topCenter\", \"topRight\"]);\n    this.colSpan = (0, _utils.getInteger)({\n      data: attributes.colSpan,\n      defaultValue: 1,\n      validate: n => n >= 1 || n === -1\n    });\n    this.columnWidths = (attributes.columnWidths || \"\").trim().split(/\\s+/).map(x => x === \"-1\" ? -1 : (0, _utils.getMeasurement)(x));\n    this.h = attributes.h ? (0, _utils.getMeasurement)(attributes.h) : \"\";\n    this.hAlign = (0, _utils.getStringOption)(attributes.hAlign, [\"left\", \"center\", \"justify\", \"justifyAll\", \"radix\", \"right\"]);\n    this.id = attributes.id || \"\";\n    this.layout = (0, _utils.getStringOption)(attributes.layout, [\"position\", \"lr-tb\", \"rl-row\", \"rl-tb\", \"row\", \"table\", \"tb\"]);\n    this.locale = attributes.locale || \"\";\n    this.maxH = (0, _utils.getMeasurement)(attributes.maxH, \"0pt\");\n    this.maxW = (0, _utils.getMeasurement)(attributes.maxW, \"0pt\");\n    this.mergeMode = (0, _utils.getStringOption)(attributes.mergeMode, [\"consumeData\", \"matchTemplate\"]);\n    this.minH = (0, _utils.getMeasurement)(attributes.minH, \"0pt\");\n    this.minW = (0, _utils.getMeasurement)(attributes.minW, \"0pt\");\n    this.name = attributes.name || \"\";\n    this.presence = (0, _utils.getStringOption)(attributes.presence, [\"visible\", \"hidden\", \"inactive\", \"invisible\"]);\n    this.relevant = (0, _utils.getRelevant)(attributes.relevant);\n    this.restoreState = (0, _utils.getStringOption)(attributes.restoreState, [\"manual\", \"auto\"]);\n    this.scope = (0, _utils.getStringOption)(attributes.scope, [\"name\", \"none\"]);\n    this.use = attributes.use || \"\";\n    this.usehref = attributes.usehref || \"\";\n    this.w = attributes.w ? (0, _utils.getMeasurement)(attributes.w) : \"\";\n    this.x = (0, _utils.getMeasurement)(attributes.x, \"0pt\");\n    this.y = (0, _utils.getMeasurement)(attributes.y, \"0pt\");\n    this.assist = null;\n    this.bind = null;\n    this.bookend = null;\n    this.border = null;\n    this.break = null;\n    this.calculate = null;\n    this.desc = null;\n    this.extras = null;\n    this.keep = null;\n    this.margin = null;\n    this.occur = null;\n    this.overflow = null;\n    this.pageSet = null;\n    this.para = null;\n    this.traversal = null;\n    this.validate = null;\n    this.variables = null;\n    this.area = new _xfa_object.XFAObjectArray();\n    this.breakAfter = new _xfa_object.XFAObjectArray();\n    this.breakBefore = new _xfa_object.XFAObjectArray();\n    this.connect = new _xfa_object.XFAObjectArray();\n    this.draw = new _xfa_object.XFAObjectArray();\n    this.event = new _xfa_object.XFAObjectArray();\n    this.exObject = new _xfa_object.XFAObjectArray();\n    this.exclGroup = new _xfa_object.XFAObjectArray();\n    this.field = new _xfa_object.XFAObjectArray();\n    this.proto = new _xfa_object.XFAObjectArray();\n    this.setProperty = new _xfa_object.XFAObjectArray();\n    this.subform = new _xfa_object.XFAObjectArray();\n    this.subformSet = new _xfa_object.XFAObjectArray();\n  }\n\n  [_xfa_object.$getSubformParent]() {\n    const parent = this[_xfa_object.$getParent]();\n\n    if (parent instanceof SubformSet) {\n      return parent[_xfa_object.$getSubformParent]();\n    }\n\n    return parent;\n  }\n\n  [_xfa_object.$isBindable]() {\n    return true;\n  }\n\n  [_xfa_object.$isThereMoreWidth]() {\n    return this.layout.endsWith(\"-tb\") && this[_xfa_object.$extra].attempt === 0 && this[_xfa_object.$extra].numberInLine > 0 || this[_xfa_object.$getParent]()[_xfa_object.$isThereMoreWidth]();\n  }\n\n  *[_xfa_object.$getContainedChildren]() {\n    yield* getContainedChildren(this);\n  }\n\n  [_xfa_object.$flushHTML]() {\n    return (0, _layout.flushHTML)(this);\n  }\n\n  [_xfa_object.$addHTML](html, bbox) {\n    (0, _layout.addHTML)(this, html, bbox);\n  }\n\n  [_xfa_object.$getAvailableSpace]() {\n    return (0, _layout.getAvailableSpace)(this);\n  }\n\n  [_xfa_object.$isSplittable]() {\n    const parent = this[_xfa_object.$getSubformParent]();\n\n    if (!parent[_xfa_object.$isSplittable]()) {\n      return false;\n    }\n\n    if (this[_xfa_object.$extra]._isSplittable !== undefined) {\n      return this[_xfa_object.$extra]._isSplittable;\n    }\n\n    if (this.layout === \"position\" || this.layout.includes(\"row\")) {\n      this[_xfa_object.$extra]._isSplittable = false;\n      return false;\n    }\n\n    if (this.keep && this.keep.intact !== \"none\") {\n      this[_xfa_object.$extra]._isSplittable = false;\n      return false;\n    }\n\n    if (parent.layout && parent.layout.endsWith(\"-tb\") && parent[_xfa_object.$extra].numberInLine !== 0) {\n      return false;\n    }\n\n    this[_xfa_object.$extra]._isSplittable = true;\n    return true;\n  }\n\n  [_xfa_object.$toHTML](availableSpace) {\n    setTabIndex(this);\n\n    if (this.break) {\n      if (this.break.after !== \"auto\" || this.break.afterTarget !== \"\") {\n        const node = new BreakAfter({\n          targetType: this.break.after,\n          target: this.break.afterTarget,\n          startNew: this.break.startNew.toString()\n        });\n        node[_xfa_object.$globalData] = this[_xfa_object.$globalData];\n\n        this[_xfa_object.$appendChild](node);\n\n        this.breakAfter.push(node);\n      }\n\n      if (this.break.before !== \"auto\" || this.break.beforeTarget !== \"\") {\n        const node = new BreakBefore({\n          targetType: this.break.before,\n          target: this.break.beforeTarget,\n          startNew: this.break.startNew.toString()\n        });\n        node[_xfa_object.$globalData] = this[_xfa_object.$globalData];\n\n        this[_xfa_object.$appendChild](node);\n\n        this.breakBefore.push(node);\n      }\n\n      if (this.break.overflowTarget !== \"\") {\n        const node = new Overflow({\n          target: this.break.overflowTarget,\n          leader: this.break.overflowLeader,\n          trailer: this.break.overflowTrailer\n        });\n        node[_xfa_object.$globalData] = this[_xfa_object.$globalData];\n\n        this[_xfa_object.$appendChild](node);\n\n        this.overflow.push(node);\n      }\n\n      this[_xfa_object.$removeChild](this.break);\n\n      this.break = null;\n    }\n\n    if (this.presence === \"hidden\" || this.presence === \"inactive\") {\n      return _utils.HTMLResult.EMPTY;\n    }\n\n    if (this.breakBefore.children.length > 1 || this.breakAfter.children.length > 1) {\n      (0, _util.warn)(\"XFA - Several breakBefore or breakAfter in subforms: please file a bug.\");\n    }\n\n    if (this.breakBefore.children.length >= 1) {\n      const breakBefore = this.breakBefore.children[0];\n\n      if (handleBreak(breakBefore)) {\n        return _utils.HTMLResult.breakNode(breakBefore);\n      }\n    }\n\n    if (this[_xfa_object.$extra] && this[_xfa_object.$extra].afterBreakAfter) {\n      return _utils.HTMLResult.EMPTY;\n    }\n\n    (0, _html_utils.fixDimensions)(this);\n    const children = [];\n    const attributes = {\n      id: this[_xfa_object.$uid],\n      class: []\n    };\n    (0, _html_utils.setAccess)(this, attributes.class);\n\n    if (!this[_xfa_object.$extra]) {\n      this[_xfa_object.$extra] = Object.create(null);\n    }\n\n    Object.assign(this[_xfa_object.$extra], {\n      children,\n      line: null,\n      attributes,\n      attempt: 0,\n      numberInLine: 0,\n      availableSpace: {\n        width: Math.min(this.w || Infinity, availableSpace.width),\n        height: Math.min(this.h || Infinity, availableSpace.height)\n      },\n      width: 0,\n      height: 0,\n      prevHeight: 0,\n      currentWidth: 0\n    });\n\n    const root = this[_xfa_object.$getTemplateRoot]();\n\n    const savedNoLayoutFailure = root[_xfa_object.$extra].noLayoutFailure;\n\n    const isSplittable = this[_xfa_object.$isSplittable]();\n\n    if (!isSplittable) {\n      setFirstUnsplittable(this);\n    }\n\n    if (!(0, _layout.checkDimensions)(this, availableSpace)) {\n      return _utils.HTMLResult.FAILURE;\n    }\n\n    const filter = new Set([\"area\", \"draw\", \"exclGroup\", \"field\", \"subform\", \"subformSet\"]);\n\n    if (this.layout.includes(\"row\")) {\n      const columnWidths = this[_xfa_object.$getSubformParent]().columnWidths;\n\n      if (Array.isArray(columnWidths) && columnWidths.length > 0) {\n        this[_xfa_object.$extra].columnWidths = columnWidths;\n        this[_xfa_object.$extra].currentColumn = 0;\n      }\n    }\n\n    const style = (0, _html_utils.toStyle)(this, \"anchorType\", \"dimensions\", \"position\", \"presence\", \"border\", \"margin\", \"hAlign\");\n    const classNames = [\"xfaSubform\"];\n    const cl = (0, _html_utils.layoutClass)(this);\n\n    if (cl) {\n      classNames.push(cl);\n    }\n\n    attributes.style = style;\n    attributes.class = classNames;\n\n    if (this.name) {\n      attributes.xfaName = this.name;\n    }\n\n    if (this.overflow) {\n      const overflowExtra = this.overflow[_xfa_object.$getExtra]();\n\n      if (overflowExtra.addLeader) {\n        overflowExtra.addLeader = false;\n        handleOverflow(this, overflowExtra.leader, availableSpace);\n      }\n    }\n\n    this[_xfa_object.$pushPara]();\n\n    const isLrTb = this.layout === \"lr-tb\" || this.layout === \"rl-tb\";\n    const maxRun = isLrTb ? MAX_ATTEMPTS_FOR_LRTB_LAYOUT : 1;\n\n    for (; this[_xfa_object.$extra].attempt < maxRun; this[_xfa_object.$extra].attempt++) {\n      if (isLrTb && this[_xfa_object.$extra].attempt === MAX_ATTEMPTS_FOR_LRTB_LAYOUT - 1) {\n        this[_xfa_object.$extra].numberInLine = 0;\n      }\n\n      const result = this[_xfa_object.$childrenToHTML]({\n        filter,\n        include: true\n      });\n\n      if (result.success) {\n        break;\n      }\n\n      if (result.isBreak()) {\n        this[_xfa_object.$popPara]();\n\n        return result;\n      }\n\n      if (isLrTb && this[_xfa_object.$extra].attempt === 0 && this[_xfa_object.$extra].numberInLine === 0 && !root[_xfa_object.$extra].noLayoutFailure) {\n        this[_xfa_object.$extra].attempt = maxRun;\n        break;\n      }\n    }\n\n    this[_xfa_object.$popPara]();\n\n    if (!isSplittable) {\n      unsetFirstUnsplittable(this);\n    }\n\n    root[_xfa_object.$extra].noLayoutFailure = savedNoLayoutFailure;\n\n    if (this[_xfa_object.$extra].attempt === maxRun) {\n      if (this.overflow) {\n        this[_xfa_object.$getTemplateRoot]()[_xfa_object.$extra].overflowNode = this.overflow;\n      }\n\n      if (!isSplittable) {\n        delete this[_xfa_object.$extra];\n      }\n\n      return _utils.HTMLResult.FAILURE;\n    }\n\n    if (this.overflow) {\n      const overflowExtra = this.overflow[_xfa_object.$getExtra]();\n\n      if (overflowExtra.addTrailer) {\n        overflowExtra.addTrailer = false;\n        handleOverflow(this, overflowExtra.trailer, availableSpace);\n      }\n    }\n\n    let marginH = 0;\n    let marginV = 0;\n\n    if (this.margin) {\n      marginH = this.margin.leftInset + this.margin.rightInset;\n      marginV = this.margin.topInset + this.margin.bottomInset;\n    }\n\n    const width = Math.max(this[_xfa_object.$extra].width + marginH, this.w || 0);\n    const height = Math.max(this[_xfa_object.$extra].height + marginV, this.h || 0);\n    const bbox = [this.x, this.y, width, height];\n\n    if (this.w === \"\") {\n      style.width = (0, _html_utils.measureToString)(width);\n    }\n\n    if (this.h === \"\") {\n      style.height = (0, _html_utils.measureToString)(height);\n    }\n\n    if ((style.width === \"0px\" || style.height === \"0px\") && children.length === 0) {\n      return _utils.HTMLResult.EMPTY;\n    }\n\n    const html = {\n      name: \"div\",\n      attributes,\n      children\n    };\n    applyAssist(this, attributes);\n\n    const result = _utils.HTMLResult.success((0, _html_utils.createWrapper)(this, html), bbox);\n\n    if (this.breakAfter.children.length >= 1) {\n      const breakAfter = this.breakAfter.children[0];\n\n      if (handleBreak(breakAfter)) {\n        this[_xfa_object.$extra].afterBreakAfter = result;\n        return _utils.HTMLResult.breakNode(breakAfter);\n      }\n    }\n\n    delete this[_xfa_object.$extra];\n    return result;\n  }\n\n}\n\nclass SubformSet extends _xfa_object.XFAObject {\n  constructor(attributes) {\n    super(TEMPLATE_NS_ID, \"subformSet\", true);\n    this.id = attributes.id || \"\";\n    this.name = attributes.name || \"\";\n    this.relation = (0, _utils.getStringOption)(attributes.relation, [\"ordered\", \"choice\", \"unordered\"]);\n    this.relevant = (0, _utils.getRelevant)(attributes.relevant);\n    this.use = attributes.use || \"\";\n    this.usehref = attributes.usehref || \"\";\n    this.bookend = null;\n    this.break = null;\n    this.desc = null;\n    this.extras = null;\n    this.occur = null;\n    this.overflow = null;\n    this.breakAfter = new _xfa_object.XFAObjectArray();\n    this.breakBefore = new _xfa_object.XFAObjectArray();\n    this.subform = new _xfa_object.XFAObjectArray();\n    this.subformSet = new _xfa_object.XFAObjectArray();\n  }\n\n  *[_xfa_object.$getContainedChildren]() {\n    yield* getContainedChildren(this);\n  }\n\n  [_xfa_object.$getSubformParent]() {\n    let parent = this[_xfa_object.$getParent]();\n\n    while (!(parent instanceof Subform)) {\n      parent = parent[_xfa_object.$getParent]();\n    }\n\n    return parent;\n  }\n\n  [_xfa_object.$isBindable]() {\n    return true;\n  }\n\n}\n\nclass SubjectDN extends _xfa_object.ContentObject {\n  constructor(attributes) {\n    super(TEMPLATE_NS_ID, \"subjectDN\");\n    this.delimiter = attributes.delimiter || \",\";\n    this.id = attributes.id || \"\";\n    this.name = attributes.name || \"\";\n    this.use = attributes.use || \"\";\n    this.usehref = attributes.usehref || \"\";\n  }\n\n  [_xfa_object.$finalize]() {\n    this[_xfa_object.$content] = new Map(this[_xfa_object.$content].split(this.delimiter).map(kv => {\n      kv = kv.split(\"=\", 2);\n      kv[0] = kv[0].trim();\n      return kv;\n    }));\n  }\n\n}\n\nclass SubjectDNs extends _xfa_object.XFAObject {\n  constructor(attributes) {\n    super(TEMPLATE_NS_ID, \"subjectDNs\", true);\n    this.id = attributes.id || \"\";\n    this.type = (0, _utils.getStringOption)(attributes.type, [\"optional\", \"required\"]);\n    this.use = attributes.use || \"\";\n    this.usehref = attributes.usehref || \"\";\n    this.subjectDN = new _xfa_object.XFAObjectArray();\n  }\n\n}\n\nclass Submit extends _xfa_object.XFAObject {\n  constructor(attributes) {\n    super(TEMPLATE_NS_ID, \"submit\", true);\n    this.embedPDF = (0, _utils.getInteger)({\n      data: attributes.embedPDF,\n      defaultValue: 0,\n      validate: x => x === 1\n    });\n    this.format = (0, _utils.getStringOption)(attributes.format, [\"xdp\", \"formdata\", \"pdf\", \"urlencoded\", \"xfd\", \"xml\"]);\n    this.id = attributes.id || \"\";\n    this.target = attributes.target || \"\";\n    this.textEncoding = (0, _utils.getKeyword)({\n      data: attributes.textEncoding ? attributes.textEncoding.toLowerCase() : \"\",\n      defaultValue: \"\",\n      validate: k => [\"utf-8\", \"big-five\", \"fontspecific\", \"gbk\", \"gb-18030\", \"gb-2312\", \"ksc-5601\", \"none\", \"shift-jis\", \"ucs-2\", \"utf-16\"].includes(k) || k.match(/iso-8859-\\d{2}/)\n    });\n    this.use = attributes.use || \"\";\n    this.usehref = attributes.usehref || \"\";\n    this.xdpContent = attributes.xdpContent || \"\";\n    this.encrypt = null;\n    this.encryptData = new _xfa_object.XFAObjectArray();\n    this.signData = new _xfa_object.XFAObjectArray();\n  }\n\n}\n\nclass Template extends _xfa_object.XFAObject {\n  constructor(attributes) {\n    super(TEMPLATE_NS_ID, \"template\", true);\n    this.baseProfile = (0, _utils.getStringOption)(attributes.baseProfile, [\"full\", \"interactiveForms\"]);\n    this.extras = null;\n    this.subform = new _xfa_object.XFAObjectArray();\n  }\n\n  [_xfa_object.$finalize]() {\n    if (this.subform.children.length === 0) {\n      (0, _util.warn)(\"XFA - No subforms in template node.\");\n    }\n\n    if (this.subform.children.length >= 2) {\n      (0, _util.warn)(\"XFA - Several subforms in template node: please file a bug.\");\n    }\n\n    this[_xfa_object.$tabIndex] = DEFAULT_TAB_INDEX;\n  }\n\n  [_xfa_object.$isSplittable]() {\n    return true;\n  }\n\n  [_xfa_object.$searchNode](expr, container) {\n    if (expr.startsWith(\"#\")) {\n      return [this[_xfa_object.$ids].get(expr.slice(1))];\n    }\n\n    return (0, _som.searchNode)(this, container, expr, true, true);\n  }\n\n  *[_xfa_object.$toPages]() {\n    if (!this.subform.children.length) {\n      return _utils.HTMLResult.success({\n        name: \"div\",\n        children: []\n      });\n    }\n\n    this[_xfa_object.$extra] = {\n      overflowNode: null,\n      firstUnsplittable: null,\n      currentContentArea: null,\n      currentPageArea: null,\n      noLayoutFailure: false,\n      pageNumber: 1,\n      pagePosition: \"first\",\n      oddOrEven: \"odd\",\n      blankOrNotBlank: \"nonBlank\",\n      paraStack: []\n    };\n    const root = this.subform.children[0];\n\n    root.pageSet[_xfa_object.$cleanPage]();\n\n    const pageAreas = root.pageSet.pageArea.children;\n    const mainHtml = {\n      name: \"div\",\n      children: []\n    };\n    let pageArea = null;\n    let breakBefore = null;\n    let breakBeforeTarget = null;\n\n    if (root.breakBefore.children.length >= 1) {\n      breakBefore = root.breakBefore.children[0];\n      breakBeforeTarget = breakBefore.target;\n    } else if (root.subform.children.length >= 1 && root.subform.children[0].breakBefore.children.length >= 1) {\n      breakBefore = root.subform.children[0].breakBefore.children[0];\n      breakBeforeTarget = breakBefore.target;\n    } else if (root.break && root.break.beforeTarget) {\n      breakBefore = root.break;\n      breakBeforeTarget = breakBefore.beforeTarget;\n    } else if (root.subform.children.length >= 1 && root.subform.children[0].break && root.subform.children[0].break.beforeTarget) {\n      breakBefore = root.subform.children[0].break;\n      breakBeforeTarget = breakBefore.beforeTarget;\n    }\n\n    if (breakBefore) {\n      const target = this[_xfa_object.$searchNode](breakBeforeTarget, breakBefore[_xfa_object.$getParent]());\n\n      if (target instanceof PageArea) {\n        pageArea = target;\n        breakBefore[_xfa_object.$extra] = {};\n      }\n    }\n\n    if (!pageArea) {\n      pageArea = pageAreas[0];\n    }\n\n    pageArea[_xfa_object.$extra] = {\n      numberOfUse: 1\n    };\n\n    const pageAreaParent = pageArea[_xfa_object.$getParent]();\n\n    pageAreaParent[_xfa_object.$extra] = {\n      numberOfUse: 1,\n      pageIndex: pageAreaParent.pageArea.children.indexOf(pageArea),\n      pageSetIndex: 0\n    };\n    let targetPageArea;\n    let leader = null;\n    let trailer = null;\n    let hasSomething = true;\n    let hasSomethingCounter = 0;\n    let startIndex = 0;\n\n    while (true) {\n      if (!hasSomething) {\n        mainHtml.children.pop();\n\n        if (++hasSomethingCounter === MAX_EMPTY_PAGES) {\n          (0, _util.warn)(\"XFA - Something goes wrong: please file a bug.\");\n          return mainHtml;\n        }\n      } else {\n        hasSomethingCounter = 0;\n      }\n\n      targetPageArea = null;\n      this[_xfa_object.$extra].currentPageArea = pageArea;\n\n      const page = pageArea[_xfa_object.$toHTML]().html;\n\n      mainHtml.children.push(page);\n\n      if (leader) {\n        this[_xfa_object.$extra].noLayoutFailure = true;\n        page.children.push(leader[_xfa_object.$toHTML](pageArea[_xfa_object.$extra].space).html);\n        leader = null;\n      }\n\n      if (trailer) {\n        this[_xfa_object.$extra].noLayoutFailure = true;\n        page.children.push(trailer[_xfa_object.$toHTML](pageArea[_xfa_object.$extra].space).html);\n        trailer = null;\n      }\n\n      const contentAreas = pageArea.contentArea.children;\n      const htmlContentAreas = page.children.filter(node => node.attributes.class.includes(\"xfaContentarea\"));\n      hasSomething = false;\n      this[_xfa_object.$extra].firstUnsplittable = null;\n      this[_xfa_object.$extra].noLayoutFailure = false;\n\n      const flush = index => {\n        const html = root[_xfa_object.$flushHTML]();\n\n        if (html) {\n          hasSomething = hasSomething || html.children && html.children.length !== 0;\n          htmlContentAreas[index].children.push(html);\n        }\n      };\n\n      for (let i = startIndex, ii = contentAreas.length; i < ii; i++) {\n        const contentArea = this[_xfa_object.$extra].currentContentArea = contentAreas[i];\n        const space = {\n          width: contentArea.w,\n          height: contentArea.h\n        };\n        startIndex = 0;\n\n        if (leader) {\n          htmlContentAreas[i].children.push(leader[_xfa_object.$toHTML](space).html);\n          leader = null;\n        }\n\n        if (trailer) {\n          htmlContentAreas[i].children.push(trailer[_xfa_object.$toHTML](space).html);\n          trailer = null;\n        }\n\n        const html = root[_xfa_object.$toHTML](space);\n\n        if (html.success) {\n          if (html.html) {\n            hasSomething = hasSomething || html.html.children && html.html.children.length !== 0;\n            htmlContentAreas[i].children.push(html.html);\n          } else if (!hasSomething && mainHtml.children.length > 1) {\n            mainHtml.children.pop();\n          }\n\n          return mainHtml;\n        }\n\n        if (html.isBreak()) {\n          const node = html.breakNode;\n          flush(i);\n\n          if (node.targetType === \"auto\") {\n            continue;\n          }\n\n          if (node.leader) {\n            leader = this[_xfa_object.$searchNode](node.leader, node[_xfa_object.$getParent]());\n            leader = leader ? leader[0] : null;\n          }\n\n          if (node.trailer) {\n            trailer = this[_xfa_object.$searchNode](node.trailer, node[_xfa_object.$getParent]());\n            trailer = trailer ? trailer[0] : null;\n          }\n\n          if (node.targetType === \"pageArea\") {\n            targetPageArea = node[_xfa_object.$extra].target;\n            i = Infinity;\n          } else if (!node[_xfa_object.$extra].target) {\n            i = node[_xfa_object.$extra].index;\n          } else {\n            targetPageArea = node[_xfa_object.$extra].target;\n            startIndex = node[_xfa_object.$extra].index + 1;\n            i = Infinity;\n          }\n\n          continue;\n        }\n\n        if (this[_xfa_object.$extra].overflowNode) {\n          const node = this[_xfa_object.$extra].overflowNode;\n          this[_xfa_object.$extra].overflowNode = null;\n\n          const overflowExtra = node[_xfa_object.$getExtra]();\n\n          const target = overflowExtra.target;\n          overflowExtra.addLeader = overflowExtra.leader !== null;\n          overflowExtra.addTrailer = overflowExtra.trailer !== null;\n          flush(i);\n          const currentIndex = i;\n          i = Infinity;\n\n          if (target instanceof PageArea) {\n            targetPageArea = target;\n          } else if (target instanceof ContentArea) {\n            const index = contentAreas.findIndex(e => e === target);\n\n            if (index !== -1) {\n              if (index > currentIndex) {\n                i = index - 1;\n              } else {\n                startIndex = index;\n              }\n            } else {\n              targetPageArea = target[_xfa_object.$getParent]();\n              startIndex = targetPageArea.contentArea.children.findIndex(e => e === target);\n            }\n          }\n\n          continue;\n        }\n\n        flush(i);\n      }\n\n      this[_xfa_object.$extra].pageNumber += 1;\n\n      if (targetPageArea) {\n        if (targetPageArea[_xfa_object.$isUsable]()) {\n          targetPageArea[_xfa_object.$extra].numberOfUse += 1;\n        } else {\n          targetPageArea = null;\n        }\n      }\n\n      pageArea = targetPageArea || pageArea[_xfa_object.$getNextPage]();\n      yield null;\n    }\n  }\n\n}\n\nexports.Template = Template;\n\nclass Text extends _xfa_object.ContentObject {\n  constructor(attributes) {\n    super(TEMPLATE_NS_ID, \"text\");\n    this.id = attributes.id || \"\";\n    this.maxChars = (0, _utils.getInteger)({\n      data: attributes.maxChars,\n      defaultValue: 0,\n      validate: x => x >= 0\n    });\n    this.name = attributes.name || \"\";\n    this.rid = attributes.rid || \"\";\n    this.use = attributes.use || \"\";\n    this.usehref = attributes.usehref || \"\";\n  }\n\n  [_xfa_object.$acceptWhitespace]() {\n    return true;\n  }\n\n  [_xfa_object.$onChild](child) {\n    if (child[_xfa_object.$namespaceId] === _namespaces.NamespaceIds.xhtml.id) {\n      this[_xfa_object.$content] = child;\n      return true;\n    }\n\n    (0, _util.warn)(`XFA - Invalid content in Text: ${child[_xfa_object.$nodeName]}.`);\n    return false;\n  }\n\n  [_xfa_object.$onText](str) {\n    if (this[_xfa_object.$content] instanceof _xfa_object.XFAObject) {\n      return;\n    }\n\n    super[_xfa_object.$onText](str);\n  }\n\n  [_xfa_object.$finalize]() {\n    if (typeof this[_xfa_object.$content] === \"string\") {\n      this[_xfa_object.$content] = this[_xfa_object.$content].replace(/\\r\\n/g, \"\\n\");\n    }\n  }\n\n  [_xfa_object.$getExtra]() {\n    if (typeof this[_xfa_object.$content] === \"string\") {\n      return this[_xfa_object.$content].split(/[\\u2029\\u2028\\n]/).reduce((acc, line) => {\n        if (line) {\n          acc.push(line);\n        }\n\n        return acc;\n      }, []).join(\"\\n\");\n    }\n\n    return this[_xfa_object.$content][_xfa_object.$text]();\n  }\n\n  [_xfa_object.$toHTML](availableSpace) {\n    if (typeof this[_xfa_object.$content] === \"string\") {\n      const html = valueToHtml(this[_xfa_object.$content]).html;\n\n      if (this[_xfa_object.$content].includes(\"\\u2029\")) {\n        html.name = \"div\";\n        html.children = [];\n\n        this[_xfa_object.$content].split(\"\\u2029\").map(para => para.split(/[\\u2028\\n]/).reduce((acc, line) => {\n          acc.push({\n            name: \"span\",\n            value: line\n          }, {\n            name: \"br\"\n          });\n          return acc;\n        }, [])).forEach(lines => {\n          html.children.push({\n            name: \"p\",\n            children: lines\n          });\n        });\n      } else if (/[\\u2028\\n]/.test(this[_xfa_object.$content])) {\n        html.name = \"div\";\n        html.children = [];\n\n        this[_xfa_object.$content].split(/[\\u2028\\n]/).forEach(line => {\n          html.children.push({\n            name: \"span\",\n            value: line\n          }, {\n            name: \"br\"\n          });\n        });\n      }\n\n      return _utils.HTMLResult.success(html);\n    }\n\n    return this[_xfa_object.$content][_xfa_object.$toHTML](availableSpace);\n  }\n\n}\n\nexports.Text = Text;\n\nclass TextEdit extends _xfa_object.XFAObject {\n  constructor(attributes) {\n    super(TEMPLATE_NS_ID, \"textEdit\", true);\n    this.allowRichText = (0, _utils.getInteger)({\n      data: attributes.allowRichText,\n      defaultValue: 0,\n      validate: x => x === 1\n    });\n    this.hScrollPolicy = (0, _utils.getStringOption)(attributes.hScrollPolicy, [\"auto\", \"off\", \"on\"]);\n    this.id = attributes.id || \"\";\n    this.multiLine = (0, _utils.getInteger)({\n      data: attributes.multiLine,\n      defaultValue: \"\",\n      validate: x => x === 0 || x === 1\n    });\n    this.use = attributes.use || \"\";\n    this.usehref = attributes.usehref || \"\";\n    this.vScrollPolicy = (0, _utils.getStringOption)(attributes.vScrollPolicy, [\"auto\", \"off\", \"on\"]);\n    this.border = null;\n    this.comb = null;\n    this.extras = null;\n    this.margin = null;\n  }\n\n  [_xfa_object.$toHTML](availableSpace) {\n    const style = (0, _html_utils.toStyle)(this, \"border\", \"font\", \"margin\");\n    let html;\n\n    const field = this[_xfa_object.$getParent]()[_xfa_object.$getParent]();\n\n    if (this.multiLine === \"\") {\n      this.multiLine = field instanceof Draw ? 1 : 0;\n    }\n\n    if (this.multiLine === 1) {\n      html = {\n        name: \"textarea\",\n        attributes: {\n          dataId: field[_xfa_object.$data] && field[_xfa_object.$data][_xfa_object.$uid] || field[_xfa_object.$uid],\n          fieldId: field[_xfa_object.$uid],\n          class: [\"xfaTextfield\"],\n          style,\n          \"aria-label\": ariaLabel(field)\n        }\n      };\n    } else {\n      html = {\n        name: \"input\",\n        attributes: {\n          type: \"text\",\n          dataId: field[_xfa_object.$data] && field[_xfa_object.$data][_xfa_object.$uid] || field[_xfa_object.$uid],\n          fieldId: field[_xfa_object.$uid],\n          class: [\"xfaTextfield\"],\n          style,\n          \"aria-label\": ariaLabel(field)\n        }\n      };\n    }\n\n    return _utils.HTMLResult.success({\n      name: \"label\",\n      attributes: {\n        class: [\"xfaLabel\"]\n      },\n      children: [html]\n    });\n  }\n\n}\n\nclass Time extends _xfa_object.StringObject {\n  constructor(attributes) {\n    super(TEMPLATE_NS_ID, \"time\");\n    this.id = attributes.id || \"\";\n    this.name = attributes.name || \"\";\n    this.use = attributes.use || \"\";\n    this.usehref = attributes.usehref || \"\";\n  }\n\n  [_xfa_object.$finalize]() {\n    const date = this[_xfa_object.$content].trim();\n\n    this[_xfa_object.$content] = date ? new Date(date) : null;\n  }\n\n  [_xfa_object.$toHTML](availableSpace) {\n    return valueToHtml(this[_xfa_object.$content] ? this[_xfa_object.$content].toString() : \"\");\n  }\n\n}\n\nclass TimeStamp extends _xfa_object.XFAObject {\n  constructor(attributes) {\n    super(TEMPLATE_NS_ID, \"timeStamp\");\n    this.id = attributes.id || \"\";\n    this.server = attributes.server || \"\";\n    this.type = (0, _utils.getStringOption)(attributes.type, [\"optional\", \"required\"]);\n    this.use = attributes.use || \"\";\n    this.usehref = attributes.usehref || \"\";\n  }\n\n}\n\nclass ToolTip extends _xfa_object.StringObject {\n  constructor(attributes) {\n    super(TEMPLATE_NS_ID, \"toolTip\");\n    this.id = attributes.id || \"\";\n    this.rid = attributes.rid || \"\";\n    this.use = attributes.use || \"\";\n    this.usehref = attributes.usehref || \"\";\n  }\n\n}\n\nclass Traversal extends _xfa_object.XFAObject {\n  constructor(attributes) {\n    super(TEMPLATE_NS_ID, \"traversal\", true);\n    this.id = attributes.id || \"\";\n    this.use = attributes.use || \"\";\n    this.usehref = attributes.usehref || \"\";\n    this.extras = null;\n    this.traverse = new _xfa_object.XFAObjectArray();\n  }\n\n}\n\nclass Traverse extends _xfa_object.XFAObject {\n  constructor(attributes) {\n    super(TEMPLATE_NS_ID, \"traverse\", true);\n    this.id = attributes.id || \"\";\n    this.operation = (0, _utils.getStringOption)(attributes.operation, [\"next\", \"back\", \"down\", \"first\", \"left\", \"right\", \"up\"]);\n    this.ref = attributes.ref || \"\";\n    this.use = attributes.use || \"\";\n    this.usehref = attributes.usehref || \"\";\n    this.extras = null;\n    this.script = null;\n  }\n\n  get name() {\n    return this.operation;\n  }\n\n  [_xfa_object.$isTransparent]() {\n    return false;\n  }\n\n}\n\nclass Ui extends _xfa_object.XFAObject {\n  constructor(attributes) {\n    super(TEMPLATE_NS_ID, \"ui\", true);\n    this.id = attributes.id || \"\";\n    this.use = attributes.use || \"\";\n    this.usehref = attributes.usehref || \"\";\n    this.extras = null;\n    this.picture = null;\n    this.barcode = null;\n    this.button = null;\n    this.checkButton = null;\n    this.choiceList = null;\n    this.dateTimeEdit = null;\n    this.defaultUi = null;\n    this.imageEdit = null;\n    this.numericEdit = null;\n    this.passwordEdit = null;\n    this.signature = null;\n    this.textEdit = null;\n  }\n\n  [_xfa_object.$getExtra]() {\n    if (this[_xfa_object.$extra] === undefined) {\n      for (const name of Object.getOwnPropertyNames(this)) {\n        if (name === \"extras\" || name === \"picture\") {\n          continue;\n        }\n\n        const obj = this[name];\n\n        if (!(obj instanceof _xfa_object.XFAObject)) {\n          continue;\n        }\n\n        this[_xfa_object.$extra] = obj;\n        return obj;\n      }\n\n      this[_xfa_object.$extra] = null;\n    }\n\n    return this[_xfa_object.$extra];\n  }\n\n  [_xfa_object.$toHTML](availableSpace) {\n    const obj = this[_xfa_object.$getExtra]();\n\n    if (obj) {\n      return obj[_xfa_object.$toHTML](availableSpace);\n    }\n\n    return _utils.HTMLResult.EMPTY;\n  }\n\n}\n\nclass Validate extends _xfa_object.XFAObject {\n  constructor(attributes) {\n    super(TEMPLATE_NS_ID, \"validate\", true);\n    this.formatTest = (0, _utils.getStringOption)(attributes.formatTest, [\"warning\", \"disabled\", \"error\"]);\n    this.id = attributes.id || \"\";\n    this.nullTest = (0, _utils.getStringOption)(attributes.nullTest, [\"disabled\", \"error\", \"warning\"]);\n    this.scriptTest = (0, _utils.getStringOption)(attributes.scriptTest, [\"error\", \"disabled\", \"warning\"]);\n    this.use = attributes.use || \"\";\n    this.usehref = attributes.usehref || \"\";\n    this.extras = null;\n    this.message = null;\n    this.picture = null;\n    this.script = null;\n  }\n\n}\n\nclass Value extends _xfa_object.XFAObject {\n  constructor(attributes) {\n    super(TEMPLATE_NS_ID, \"value\", true);\n    this.id = attributes.id || \"\";\n    this.override = (0, _utils.getInteger)({\n      data: attributes.override,\n      defaultValue: 0,\n      validate: x => x === 1\n    });\n    this.relevant = (0, _utils.getRelevant)(attributes.relevant);\n    this.use = attributes.use || \"\";\n    this.usehref = attributes.usehref || \"\";\n    this.arc = null;\n    this.boolean = null;\n    this.date = null;\n    this.dateTime = null;\n    this.decimal = null;\n    this.exData = null;\n    this.float = null;\n    this.image = null;\n    this.integer = null;\n    this.line = null;\n    this.rectangle = null;\n    this.text = null;\n    this.time = null;\n  }\n\n  [_xfa_object.$setValue](value) {\n    const parent = this[_xfa_object.$getParent]();\n\n    if (parent instanceof Field) {\n      if (parent.ui && parent.ui.imageEdit) {\n        if (!this.image) {\n          this.image = new Image({});\n\n          this[_xfa_object.$appendChild](this.image);\n        }\n\n        this.image[_xfa_object.$content] = value[_xfa_object.$content];\n        return;\n      }\n    }\n\n    const valueName = value[_xfa_object.$nodeName];\n\n    if (this[valueName] !== null) {\n      this[valueName][_xfa_object.$content] = value[_xfa_object.$content];\n      return;\n    }\n\n    for (const name of Object.getOwnPropertyNames(this)) {\n      const obj = this[name];\n\n      if (obj instanceof _xfa_object.XFAObject) {\n        this[name] = null;\n\n        this[_xfa_object.$removeChild](obj);\n      }\n    }\n\n    this[value[_xfa_object.$nodeName]] = value;\n\n    this[_xfa_object.$appendChild](value);\n  }\n\n  [_xfa_object.$text]() {\n    if (this.exData) {\n      if (typeof this.exData[_xfa_object.$content] === \"string\") {\n        return this.exData[_xfa_object.$content].trim();\n      }\n\n      return this.exData[_xfa_object.$content][_xfa_object.$text]().trim();\n    }\n\n    for (const name of Object.getOwnPropertyNames(this)) {\n      if (name === \"image\") {\n        continue;\n      }\n\n      const obj = this[name];\n\n      if (obj instanceof _xfa_object.XFAObject) {\n        return (obj[_xfa_object.$content] || \"\").toString().trim();\n      }\n    }\n\n    return null;\n  }\n\n  [_xfa_object.$toHTML](availableSpace) {\n    for (const name of Object.getOwnPropertyNames(this)) {\n      const obj = this[name];\n\n      if (!(obj instanceof _xfa_object.XFAObject)) {\n        continue;\n      }\n\n      return obj[_xfa_object.$toHTML](availableSpace);\n    }\n\n    return _utils.HTMLResult.EMPTY;\n  }\n\n}\n\nexports.Value = Value;\n\nclass Variables extends _xfa_object.XFAObject {\n  constructor(attributes) {\n    super(TEMPLATE_NS_ID, \"variables\", true);\n    this.id = attributes.id || \"\";\n    this.use = attributes.use || \"\";\n    this.usehref = attributes.usehref || \"\";\n    this.boolean = new _xfa_object.XFAObjectArray();\n    this.date = new _xfa_object.XFAObjectArray();\n    this.dateTime = new _xfa_object.XFAObjectArray();\n    this.decimal = new _xfa_object.XFAObjectArray();\n    this.exData = new _xfa_object.XFAObjectArray();\n    this.float = new _xfa_object.XFAObjectArray();\n    this.image = new _xfa_object.XFAObjectArray();\n    this.integer = new _xfa_object.XFAObjectArray();\n    this.manifest = new _xfa_object.XFAObjectArray();\n    this.script = new _xfa_object.XFAObjectArray();\n    this.text = new _xfa_object.XFAObjectArray();\n    this.time = new _xfa_object.XFAObjectArray();\n  }\n\n  [_xfa_object.$isTransparent]() {\n    return true;\n  }\n\n}\n\nclass TemplateNamespace {\n  static [_namespaces.$buildXFAObject](name, attributes) {\n    if (TemplateNamespace.hasOwnProperty(name)) {\n      const node = TemplateNamespace[name](attributes);\n\n      node[_xfa_object.$setSetAttributes](attributes);\n\n      return node;\n    }\n\n    return undefined;\n  }\n\n  static appearanceFilter(attrs) {\n    return new AppearanceFilter(attrs);\n  }\n\n  static arc(attrs) {\n    return new Arc(attrs);\n  }\n\n  static area(attrs) {\n    return new Area(attrs);\n  }\n\n  static assist(attrs) {\n    return new Assist(attrs);\n  }\n\n  static barcode(attrs) {\n    return new Barcode(attrs);\n  }\n\n  static bind(attrs) {\n    return new Bind(attrs);\n  }\n\n  static bindItems(attrs) {\n    return new BindItems(attrs);\n  }\n\n  static bookend(attrs) {\n    return new Bookend(attrs);\n  }\n\n  static boolean(attrs) {\n    return new BooleanElement(attrs);\n  }\n\n  static border(attrs) {\n    return new Border(attrs);\n  }\n\n  static break(attrs) {\n    return new Break(attrs);\n  }\n\n  static breakAfter(attrs) {\n    return new BreakAfter(attrs);\n  }\n\n  static breakBefore(attrs) {\n    return new BreakBefore(attrs);\n  }\n\n  static button(attrs) {\n    return new Button(attrs);\n  }\n\n  static calculate(attrs) {\n    return new Calculate(attrs);\n  }\n\n  static caption(attrs) {\n    return new Caption(attrs);\n  }\n\n  static certificate(attrs) {\n    return new Certificate(attrs);\n  }\n\n  static certificates(attrs) {\n    return new Certificates(attrs);\n  }\n\n  static checkButton(attrs) {\n    return new CheckButton(attrs);\n  }\n\n  static choiceList(attrs) {\n    return new ChoiceList(attrs);\n  }\n\n  static color(attrs) {\n    return new Color(attrs);\n  }\n\n  static comb(attrs) {\n    return new Comb(attrs);\n  }\n\n  static connect(attrs) {\n    return new Connect(attrs);\n  }\n\n  static contentArea(attrs) {\n    return new ContentArea(attrs);\n  }\n\n  static corner(attrs) {\n    return new Corner(attrs);\n  }\n\n  static date(attrs) {\n    return new DateElement(attrs);\n  }\n\n  static dateTime(attrs) {\n    return new DateTime(attrs);\n  }\n\n  static dateTimeEdit(attrs) {\n    return new DateTimeEdit(attrs);\n  }\n\n  static decimal(attrs) {\n    return new Decimal(attrs);\n  }\n\n  static defaultUi(attrs) {\n    return new DefaultUi(attrs);\n  }\n\n  static desc(attrs) {\n    return new Desc(attrs);\n  }\n\n  static digestMethod(attrs) {\n    return new DigestMethod(attrs);\n  }\n\n  static digestMethods(attrs) {\n    return new DigestMethods(attrs);\n  }\n\n  static draw(attrs) {\n    return new Draw(attrs);\n  }\n\n  static edge(attrs) {\n    return new Edge(attrs);\n  }\n\n  static encoding(attrs) {\n    return new Encoding(attrs);\n  }\n\n  static encodings(attrs) {\n    return new Encodings(attrs);\n  }\n\n  static encrypt(attrs) {\n    return new Encrypt(attrs);\n  }\n\n  static encryptData(attrs) {\n    return new EncryptData(attrs);\n  }\n\n  static encryption(attrs) {\n    return new Encryption(attrs);\n  }\n\n  static encryptionMethod(attrs) {\n    return new EncryptionMethod(attrs);\n  }\n\n  static encryptionMethods(attrs) {\n    return new EncryptionMethods(attrs);\n  }\n\n  static event(attrs) {\n    return new Event(attrs);\n  }\n\n  static exData(attrs) {\n    return new ExData(attrs);\n  }\n\n  static exObject(attrs) {\n    return new ExObject(attrs);\n  }\n\n  static exclGroup(attrs) {\n    return new ExclGroup(attrs);\n  }\n\n  static execute(attrs) {\n    return new Execute(attrs);\n  }\n\n  static extras(attrs) {\n    return new Extras(attrs);\n  }\n\n  static field(attrs) {\n    return new Field(attrs);\n  }\n\n  static fill(attrs) {\n    return new Fill(attrs);\n  }\n\n  static filter(attrs) {\n    return new Filter(attrs);\n  }\n\n  static float(attrs) {\n    return new Float(attrs);\n  }\n\n  static font(attrs) {\n    return new Font(attrs);\n  }\n\n  static format(attrs) {\n    return new Format(attrs);\n  }\n\n  static handler(attrs) {\n    return new Handler(attrs);\n  }\n\n  static hyphenation(attrs) {\n    return new Hyphenation(attrs);\n  }\n\n  static image(attrs) {\n    return new Image(attrs);\n  }\n\n  static imageEdit(attrs) {\n    return new ImageEdit(attrs);\n  }\n\n  static integer(attrs) {\n    return new Integer(attrs);\n  }\n\n  static issuers(attrs) {\n    return new Issuers(attrs);\n  }\n\n  static items(attrs) {\n    return new Items(attrs);\n  }\n\n  static keep(attrs) {\n    return new Keep(attrs);\n  }\n\n  static keyUsage(attrs) {\n    return new KeyUsage(attrs);\n  }\n\n  static line(attrs) {\n    return new Line(attrs);\n  }\n\n  static linear(attrs) {\n    return new Linear(attrs);\n  }\n\n  static lockDocument(attrs) {\n    return new LockDocument(attrs);\n  }\n\n  static manifest(attrs) {\n    return new Manifest(attrs);\n  }\n\n  static margin(attrs) {\n    return new Margin(attrs);\n  }\n\n  static mdp(attrs) {\n    return new Mdp(attrs);\n  }\n\n  static medium(attrs) {\n    return new Medium(attrs);\n  }\n\n  static message(attrs) {\n    return new Message(attrs);\n  }\n\n  static numericEdit(attrs) {\n    return new NumericEdit(attrs);\n  }\n\n  static occur(attrs) {\n    return new Occur(attrs);\n  }\n\n  static oid(attrs) {\n    return new Oid(attrs);\n  }\n\n  static oids(attrs) {\n    return new Oids(attrs);\n  }\n\n  static overflow(attrs) {\n    return new Overflow(attrs);\n  }\n\n  static pageArea(attrs) {\n    return new PageArea(attrs);\n  }\n\n  static pageSet(attrs) {\n    return new PageSet(attrs);\n  }\n\n  static para(attrs) {\n    return new Para(attrs);\n  }\n\n  static passwordEdit(attrs) {\n    return new PasswordEdit(attrs);\n  }\n\n  static pattern(attrs) {\n    return new Pattern(attrs);\n  }\n\n  static picture(attrs) {\n    return new Picture(attrs);\n  }\n\n  static proto(attrs) {\n    return new Proto(attrs);\n  }\n\n  static radial(attrs) {\n    return new Radial(attrs);\n  }\n\n  static reason(attrs) {\n    return new Reason(attrs);\n  }\n\n  static reasons(attrs) {\n    return new Reasons(attrs);\n  }\n\n  static rectangle(attrs) {\n    return new Rectangle(attrs);\n  }\n\n  static ref(attrs) {\n    return new RefElement(attrs);\n  }\n\n  static script(attrs) {\n    return new Script(attrs);\n  }\n\n  static setProperty(attrs) {\n    return new SetProperty(attrs);\n  }\n\n  static signData(attrs) {\n    return new SignData(attrs);\n  }\n\n  static signature(attrs) {\n    return new Signature(attrs);\n  }\n\n  static signing(attrs) {\n    return new Signing(attrs);\n  }\n\n  static solid(attrs) {\n    return new Solid(attrs);\n  }\n\n  static speak(attrs) {\n    return new Speak(attrs);\n  }\n\n  static stipple(attrs) {\n    return new Stipple(attrs);\n  }\n\n  static subform(attrs) {\n    return new Subform(attrs);\n  }\n\n  static subformSet(attrs) {\n    return new SubformSet(attrs);\n  }\n\n  static subjectDN(attrs) {\n    return new SubjectDN(attrs);\n  }\n\n  static subjectDNs(attrs) {\n    return new SubjectDNs(attrs);\n  }\n\n  static submit(attrs) {\n    return new Submit(attrs);\n  }\n\n  static template(attrs) {\n    return new Template(attrs);\n  }\n\n  static text(attrs) {\n    return new Text(attrs);\n  }\n\n  static textEdit(attrs) {\n    return new TextEdit(attrs);\n  }\n\n  static time(attrs) {\n    return new Time(attrs);\n  }\n\n  static timeStamp(attrs) {\n    return new TimeStamp(attrs);\n  }\n\n  static toolTip(attrs) {\n    return new ToolTip(attrs);\n  }\n\n  static traversal(attrs) {\n    return new Traversal(attrs);\n  }\n\n  static traverse(attrs) {\n    return new Traverse(attrs);\n  }\n\n  static ui(attrs) {\n    return new Ui(attrs);\n  }\n\n  static validate(attrs) {\n    return new Validate(attrs);\n  }\n\n  static value(attrs) {\n    return new Value(attrs);\n  }\n\n  static variables(attrs) {\n    return new Variables(attrs);\n  }\n\n}\n\nexports.TemplateNamespace = TemplateNamespace;\n\n/***/ }),\n/* 82 */\n/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {\n\n\n\nObject.defineProperty(exports, \"__esModule\", ({\n  value: true\n}));\nexports.addHTML = addHTML;\nexports.checkDimensions = checkDimensions;\nexports.flushHTML = flushHTML;\nexports.getAvailableSpace = getAvailableSpace;\n\nvar _xfa_object = __w_pdfjs_require__(76);\n\nvar _html_utils = __w_pdfjs_require__(83);\n\nfunction createLine(node, children) {\n  return {\n    name: \"div\",\n    attributes: {\n      class: [node.layout === \"lr-tb\" ? \"xfaLr\" : \"xfaRl\"]\n    },\n    children\n  };\n}\n\nfunction flushHTML(node) {\n  if (!node[_xfa_object.$extra]) {\n    return null;\n  }\n\n  const attributes = node[_xfa_object.$extra].attributes;\n  const html = {\n    name: \"div\",\n    attributes,\n    children: node[_xfa_object.$extra].children\n  };\n\n  if (node[_xfa_object.$extra].failingNode) {\n    const htmlFromFailing = node[_xfa_object.$extra].failingNode[_xfa_object.$flushHTML]();\n\n    if (htmlFromFailing) {\n      if (node.layout.endsWith(\"-tb\")) {\n        html.children.push(createLine(node, [htmlFromFailing]));\n      } else {\n        html.children.push(htmlFromFailing);\n      }\n    }\n  }\n\n  if (html.children.length === 0) {\n    return null;\n  }\n\n  return html;\n}\n\nfunction addHTML(node, html, bbox) {\n  const extra = node[_xfa_object.$extra];\n  const availableSpace = extra.availableSpace;\n  const [x, y, w, h] = bbox;\n\n  switch (node.layout) {\n    case \"position\":\n      {\n        extra.width = Math.max(extra.width, x + w);\n        extra.height = Math.max(extra.height, y + h);\n        extra.children.push(html);\n        break;\n      }\n\n    case \"lr-tb\":\n    case \"rl-tb\":\n      if (!extra.line || extra.attempt === 1) {\n        extra.line = createLine(node, []);\n        extra.children.push(extra.line);\n        extra.numberInLine = 0;\n      }\n\n      extra.numberInLine += 1;\n      extra.line.children.push(html);\n\n      if (extra.attempt === 0) {\n        extra.currentWidth += w;\n        extra.height = Math.max(extra.height, extra.prevHeight + h);\n      } else {\n        extra.currentWidth = w;\n        extra.prevHeight = extra.height;\n        extra.height += h;\n        extra.attempt = 0;\n      }\n\n      extra.width = Math.max(extra.width, extra.currentWidth);\n      break;\n\n    case \"rl-row\":\n    case \"row\":\n      {\n        extra.children.push(html);\n        extra.width += w;\n        extra.height = Math.max(extra.height, h);\n        const height = (0, _html_utils.measureToString)(extra.height);\n\n        for (const child of extra.children) {\n          child.attributes.style.height = height;\n        }\n\n        break;\n      }\n\n    case \"table\":\n      {\n        extra.width = Math.min(availableSpace.width, Math.max(extra.width, w));\n        extra.height += h;\n        extra.children.push(html);\n        break;\n      }\n\n    case \"tb\":\n      {\n        extra.width = Math.min(availableSpace.width, Math.max(extra.width, w));\n        extra.height += h;\n        extra.children.push(html);\n        break;\n      }\n  }\n}\n\nfunction getAvailableSpace(node) {\n  const availableSpace = node[_xfa_object.$extra].availableSpace;\n  const marginV = node.margin ? node.margin.topInset + node.margin.bottomInset : 0;\n  const marginH = node.margin ? node.margin.leftInset + node.margin.rightInset : 0;\n\n  switch (node.layout) {\n    case \"lr-tb\":\n    case \"rl-tb\":\n      if (node[_xfa_object.$extra].attempt === 0) {\n        return {\n          width: availableSpace.width - marginH - node[_xfa_object.$extra].currentWidth,\n          height: availableSpace.height - marginV - node[_xfa_object.$extra].prevHeight\n        };\n      }\n\n      return {\n        width: availableSpace.width - marginH,\n        height: availableSpace.height - marginV - node[_xfa_object.$extra].height\n      };\n\n    case \"rl-row\":\n    case \"row\":\n      const width = node[_xfa_object.$extra].columnWidths.slice(node[_xfa_object.$extra].currentColumn).reduce((a, x) => a + x);\n\n      return {\n        width,\n        height: availableSpace.height - marginH\n      };\n\n    case \"table\":\n    case \"tb\":\n      return {\n        width: availableSpace.width - marginH,\n        height: availableSpace.height - marginV - node[_xfa_object.$extra].height\n      };\n\n    case \"position\":\n    default:\n      return availableSpace;\n  }\n}\n\nfunction getTransformedBBox(node) {\n  let w = node.w === \"\" ? NaN : node.w;\n  let h = node.h === \"\" ? NaN : node.h;\n  let [centerX, centerY] = [0, 0];\n\n  switch (node.anchorType || \"\") {\n    case \"bottomCenter\":\n      [centerX, centerY] = [w / 2, h];\n      break;\n\n    case \"bottomLeft\":\n      [centerX, centerY] = [0, h];\n      break;\n\n    case \"bottomRight\":\n      [centerX, centerY] = [w, h];\n      break;\n\n    case \"middleCenter\":\n      [centerX, centerY] = [w / 2, h / 2];\n      break;\n\n    case \"middleLeft\":\n      [centerX, centerY] = [0, h / 2];\n      break;\n\n    case \"middleRight\":\n      [centerX, centerY] = [w, h / 2];\n      break;\n\n    case \"topCenter\":\n      [centerX, centerY] = [w / 2, 0];\n      break;\n\n    case \"topRight\":\n      [centerX, centerY] = [w, 0];\n      break;\n  }\n\n  let x, y;\n\n  switch (node.rotate || 0) {\n    case 0:\n      [x, y] = [-centerX, -centerY];\n      break;\n\n    case 90:\n      [x, y] = [-centerY, centerX];\n      [w, h] = [h, -w];\n      break;\n\n    case 180:\n      [x, y] = [centerX, centerY];\n      [w, h] = [-w, -h];\n      break;\n\n    case 270:\n      [x, y] = [centerY, -centerX];\n      [w, h] = [-h, w];\n      break;\n  }\n\n  return [node.x + x + Math.min(0, w), node.y + y + Math.min(0, h), Math.abs(w), Math.abs(h)];\n}\n\nfunction checkDimensions(node, space) {\n  if (node[_xfa_object.$getTemplateRoot]()[_xfa_object.$extra].firstUnsplittable === null) {\n    return true;\n  }\n\n  if (node.w === 0 || node.h === 0) {\n    return true;\n  }\n\n  const ERROR = 2;\n\n  const parent = node[_xfa_object.$getSubformParent]();\n\n  const attempt = parent[_xfa_object.$extra] && parent[_xfa_object.$extra].attempt || 0;\n  const [, y, w, h] = getTransformedBBox(node);\n\n  switch (parent.layout) {\n    case \"lr-tb\":\n    case \"rl-tb\":\n      if (attempt === 0) {\n        if (!node[_xfa_object.$getTemplateRoot]()[_xfa_object.$extra].noLayoutFailure) {\n          if (node.h !== \"\" && Math.round(h - space.height) > ERROR) {\n            return false;\n          }\n\n          if (node.w !== \"\") {\n            if (Math.round(w - space.width) <= ERROR) {\n              return true;\n            }\n\n            if (parent[_xfa_object.$extra].numberInLine === 0) {\n              return space.height > ERROR;\n            }\n\n            return false;\n          }\n\n          return space.width > ERROR;\n        }\n\n        if (node.w !== \"\") {\n          return Math.round(w - space.width) <= ERROR;\n        }\n\n        return space.width > ERROR;\n      }\n\n      if (node[_xfa_object.$getTemplateRoot]()[_xfa_object.$extra].noLayoutFailure) {\n        return true;\n      }\n\n      if (node.h !== \"\" && Math.round(h - space.height) > ERROR) {\n        return false;\n      }\n\n      if (node.w === \"\" || Math.round(w - space.width) <= ERROR) {\n        return space.height > ERROR;\n      }\n\n      if (parent[_xfa_object.$isThereMoreWidth]()) {\n        return false;\n      }\n\n      return space.height > ERROR;\n\n    case \"table\":\n    case \"tb\":\n      if (node[_xfa_object.$getTemplateRoot]()[_xfa_object.$extra].noLayoutFailure) {\n        return true;\n      }\n\n      if (node.h !== \"\" && !node[_xfa_object.$isSplittable]()) {\n        return Math.round(h - space.height) <= ERROR;\n      }\n\n      if (node.w === \"\" || Math.round(w - space.width) <= ERROR) {\n        return space.height > ERROR;\n      }\n\n      if (parent[_xfa_object.$isThereMoreWidth]()) {\n        return false;\n      }\n\n      return space.height > ERROR;\n\n    case \"position\":\n      if (node[_xfa_object.$getTemplateRoot]()[_xfa_object.$extra].noLayoutFailure) {\n        return true;\n      }\n\n      if (node.h === \"\" || Math.round(h + y - space.height) <= ERROR) {\n        return true;\n      }\n\n      const area = node[_xfa_object.$getTemplateRoot]()[_xfa_object.$extra].currentContentArea;\n\n      return h + y > area.h;\n\n    case \"rl-row\":\n    case \"row\":\n      if (node[_xfa_object.$getTemplateRoot]()[_xfa_object.$extra].noLayoutFailure) {\n        return true;\n      }\n\n      if (node.h !== \"\") {\n        return Math.round(h - space.height) <= ERROR;\n      }\n\n      return true;\n\n    default:\n      return true;\n  }\n}\n\n/***/ }),\n/* 83 */\n/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {\n\n\n\nObject.defineProperty(exports, \"__esModule\", ({\n  value: true\n}));\nexports.computeBbox = computeBbox;\nexports.createWrapper = createWrapper;\nexports.fixDimensions = fixDimensions;\nexports.fixTextIndent = fixTextIndent;\nexports.fixURL = fixURL;\nexports.isPrintOnly = isPrintOnly;\nexports.layoutClass = layoutClass;\nexports.layoutNode = layoutNode;\nexports.measureToString = measureToString;\nexports.setAccess = setAccess;\nexports.setFontFamily = setFontFamily;\nexports.setMinMaxDimensions = setMinMaxDimensions;\nexports.setPara = setPara;\nexports.toStyle = toStyle;\n\nvar _xfa_object = __w_pdfjs_require__(76);\n\nvar _util = __w_pdfjs_require__(2);\n\nvar _utils = __w_pdfjs_require__(77);\n\nvar _fonts = __w_pdfjs_require__(84);\n\nvar _text = __w_pdfjs_require__(85);\n\nfunction measureToString(m) {\n  if (typeof m === \"string\") {\n    return \"0px\";\n  }\n\n  return Number.isInteger(m) ? `${m}px` : `${m.toFixed(2)}px`;\n}\n\nconst converters = {\n  anchorType(node, style) {\n    const parent = node[_xfa_object.$getSubformParent]();\n\n    if (!parent || parent.layout && parent.layout !== \"position\") {\n      return;\n    }\n\n    if (!(\"transform\" in style)) {\n      style.transform = \"\";\n    }\n\n    switch (node.anchorType) {\n      case \"bottomCenter\":\n        style.transform += \"translate(-50%, -100%)\";\n        break;\n\n      case \"bottomLeft\":\n        style.transform += \"translate(0,-100%)\";\n        break;\n\n      case \"bottomRight\":\n        style.transform += \"translate(-100%,-100%)\";\n        break;\n\n      case \"middleCenter\":\n        style.transform += \"translate(-50%,-50%)\";\n        break;\n\n      case \"middleLeft\":\n        style.transform += \"translate(0,-50%)\";\n        break;\n\n      case \"middleRight\":\n        style.transform += \"translate(-100%,-50%)\";\n        break;\n\n      case \"topCenter\":\n        style.transform += \"translate(-50%,0)\";\n        break;\n\n      case \"topRight\":\n        style.transform += \"translate(-100%,0)\";\n        break;\n    }\n  },\n\n  dimensions(node, style) {\n    const parent = node[_xfa_object.$getSubformParent]();\n\n    let width = node.w;\n    const height = node.h;\n\n    if (parent.layout && parent.layout.includes(\"row\")) {\n      const extra = parent[_xfa_object.$extra];\n      const colSpan = node.colSpan;\n      let w;\n\n      if (colSpan === -1) {\n        w = extra.columnWidths.slice(extra.currentColumn).reduce((a, x) => a + x, 0);\n        extra.currentColumn = 0;\n      } else {\n        w = extra.columnWidths.slice(extra.currentColumn, extra.currentColumn + colSpan).reduce((a, x) => a + x, 0);\n        extra.currentColumn = (extra.currentColumn + node.colSpan) % extra.columnWidths.length;\n      }\n\n      if (!isNaN(w)) {\n        width = node.w = w;\n      }\n    }\n\n    if (width !== \"\") {\n      style.width = measureToString(width);\n    } else {\n      style.width = \"auto\";\n    }\n\n    if (height !== \"\") {\n      style.height = measureToString(height);\n    } else {\n      style.height = \"auto\";\n    }\n  },\n\n  position(node, style) {\n    const parent = node[_xfa_object.$getSubformParent]();\n\n    if (parent && parent.layout && parent.layout !== \"position\") {\n      return;\n    }\n\n    style.position = \"absolute\";\n    style.left = measureToString(node.x);\n    style.top = measureToString(node.y);\n  },\n\n  rotate(node, style) {\n    if (node.rotate) {\n      if (!(\"transform\" in style)) {\n        style.transform = \"\";\n      }\n\n      style.transform += `rotate(-${node.rotate}deg)`;\n      style.transformOrigin = \"top left\";\n    }\n  },\n\n  presence(node, style) {\n    switch (node.presence) {\n      case \"invisible\":\n        style.visibility = \"hidden\";\n        break;\n\n      case \"hidden\":\n      case \"inactive\":\n        style.display = \"none\";\n        break;\n    }\n  },\n\n  hAlign(node, style) {\n    if (node[_xfa_object.$nodeName] === \"para\") {\n      switch (node.hAlign) {\n        case \"justifyAll\":\n          style.textAlign = \"justify-all\";\n          break;\n\n        case \"radix\":\n          style.textAlign = \"left\";\n          break;\n\n        default:\n          style.textAlign = node.hAlign;\n      }\n    } else {\n      switch (node.hAlign) {\n        case \"left\":\n          style.alignSelf = \"start\";\n          break;\n\n        case \"center\":\n          style.alignSelf = \"center\";\n          break;\n\n        case \"right\":\n          style.alignSelf = \"end\";\n          break;\n      }\n    }\n  },\n\n  margin(node, style) {\n    if (node.margin) {\n      style.margin = node.margin[_xfa_object.$toStyle]().margin;\n    }\n  }\n\n};\n\nfunction setMinMaxDimensions(node, style) {\n  const parent = node[_xfa_object.$getSubformParent]();\n\n  if (parent.layout === \"position\") {\n    if (node.minW > 0) {\n      style.minWidth = measureToString(node.minW);\n    }\n\n    if (node.maxW > 0) {\n      style.maxWidth = measureToString(node.maxW);\n    }\n\n    if (node.minH > 0) {\n      style.minHeight = measureToString(node.minH);\n    }\n\n    if (node.maxH > 0) {\n      style.maxHeight = measureToString(node.maxH);\n    }\n  }\n}\n\nfunction layoutText(text, xfaFont, margin, lineHeight, fontFinder, width) {\n  const measure = new _text.TextMeasure(xfaFont, margin, lineHeight, fontFinder);\n\n  if (typeof text === \"string\") {\n    measure.addString(text);\n  } else {\n    text[_xfa_object.$pushGlyphs](measure);\n  }\n\n  return measure.compute(width);\n}\n\nfunction layoutNode(node, availableSpace) {\n  let height = null;\n  let width = null;\n  let isBroken = false;\n\n  if ((!node.w || !node.h) && node.value) {\n    let marginH = 0;\n    let marginV = 0;\n\n    if (node.margin) {\n      marginH = node.margin.leftInset + node.margin.rightInset;\n      marginV = node.margin.topInset + node.margin.bottomInset;\n    }\n\n    let lineHeight = null;\n    let margin = null;\n\n    if (node.para) {\n      margin = Object.create(null);\n      lineHeight = node.para.lineHeight === \"\" ? null : node.para.lineHeight;\n      margin.top = node.para.spaceAbove === \"\" ? 0 : node.para.spaceAbove;\n      margin.bottom = node.para.spaceBelow === \"\" ? 0 : node.para.spaceBelow;\n      margin.left = node.para.marginLeft === \"\" ? 0 : node.para.marginLeft;\n      margin.right = node.para.marginRight === \"\" ? 0 : node.para.marginRight;\n    }\n\n    let font = node.font;\n\n    if (!font) {\n      const root = node[_xfa_object.$getTemplateRoot]();\n\n      let parent = node[_xfa_object.$getParent]();\n\n      while (parent && parent !== root) {\n        if (parent.font) {\n          font = parent.font;\n          break;\n        }\n\n        parent = parent[_xfa_object.$getParent]();\n      }\n    }\n\n    const maxWidth = (!node.w ? availableSpace.width : node.w) - marginH;\n    const fontFinder = node[_xfa_object.$globalData].fontFinder;\n\n    if (node.value.exData && node.value.exData[_xfa_object.$content] && node.value.exData.contentType === \"text/html\") {\n      const res = layoutText(node.value.exData[_xfa_object.$content], font, margin, lineHeight, fontFinder, maxWidth);\n      width = res.width;\n      height = res.height;\n      isBroken = res.isBroken;\n    } else {\n      const text = node.value[_xfa_object.$text]();\n\n      if (text) {\n        const res = layoutText(text, font, margin, lineHeight, fontFinder, maxWidth);\n        width = res.width;\n        height = res.height;\n        isBroken = res.isBroken;\n      }\n    }\n\n    if (width !== null && !node.w) {\n      width += marginH;\n    }\n\n    if (height !== null && !node.h) {\n      height += marginV;\n    }\n  }\n\n  return {\n    w: width,\n    h: height,\n    isBroken\n  };\n}\n\nfunction computeBbox(node, html, availableSpace) {\n  let bbox;\n\n  if (node.w !== \"\" && node.h !== \"\") {\n    bbox = [node.x, node.y, node.w, node.h];\n  } else {\n    if (!availableSpace) {\n      return null;\n    }\n\n    let width = node.w;\n\n    if (width === \"\") {\n      if (node.maxW === 0) {\n        const parent = node[_xfa_object.$getSubformParent]();\n\n        if (parent.layout === \"position\" && parent.w !== \"\") {\n          width = 0;\n        } else {\n          width = node.minW;\n        }\n      } else {\n        width = Math.min(node.maxW, availableSpace.width);\n      }\n\n      html.attributes.style.width = measureToString(width);\n    }\n\n    let height = node.h;\n\n    if (height === \"\") {\n      if (node.maxH === 0) {\n        const parent = node[_xfa_object.$getSubformParent]();\n\n        if (parent.layout === \"position\" && parent.h !== \"\") {\n          height = 0;\n        } else {\n          height = node.minH;\n        }\n      } else {\n        height = Math.min(node.maxH, availableSpace.height);\n      }\n\n      html.attributes.style.height = measureToString(height);\n    }\n\n    bbox = [node.x, node.y, width, height];\n  }\n\n  return bbox;\n}\n\nfunction fixDimensions(node) {\n  const parent = node[_xfa_object.$getSubformParent]();\n\n  if (parent.layout && parent.layout.includes(\"row\")) {\n    const extra = parent[_xfa_object.$extra];\n    const colSpan = node.colSpan;\n    let width;\n\n    if (colSpan === -1) {\n      width = extra.columnWidths.slice(extra.currentColumn).reduce((a, w) => a + w, 0);\n    } else {\n      width = extra.columnWidths.slice(extra.currentColumn, extra.currentColumn + colSpan).reduce((a, w) => a + w, 0);\n    }\n\n    if (!isNaN(width)) {\n      node.w = width;\n    }\n  }\n\n  if (parent.layout && parent.layout !== \"position\") {\n    node.x = node.y = 0;\n  }\n\n  if (node.layout === \"table\") {\n    if (node.w === \"\" && Array.isArray(node.columnWidths)) {\n      node.w = node.columnWidths.reduce((a, x) => a + x, 0);\n    }\n  }\n}\n\nfunction layoutClass(node) {\n  switch (node.layout) {\n    case \"position\":\n      return \"xfaPosition\";\n\n    case \"lr-tb\":\n      return \"xfaLrTb\";\n\n    case \"rl-row\":\n      return \"xfaRlRow\";\n\n    case \"rl-tb\":\n      return \"xfaRlTb\";\n\n    case \"row\":\n      return \"xfaRow\";\n\n    case \"table\":\n      return \"xfaTable\";\n\n    case \"tb\":\n      return \"xfaTb\";\n\n    default:\n      return \"xfaPosition\";\n  }\n}\n\nfunction toStyle(node, ...names) {\n  const style = Object.create(null);\n\n  for (const name of names) {\n    const value = node[name];\n\n    if (value === null) {\n      continue;\n    }\n\n    if (converters.hasOwnProperty(name)) {\n      converters[name](node, style);\n      continue;\n    }\n\n    if (value instanceof _xfa_object.XFAObject) {\n      const newStyle = value[_xfa_object.$toStyle]();\n\n      if (newStyle) {\n        Object.assign(style, newStyle);\n      } else {\n        (0, _util.warn)(`(DEBUG) - XFA - style for ${name} not implemented yet`);\n      }\n    }\n  }\n\n  return style;\n}\n\nfunction createWrapper(node, html) {\n  const {\n    attributes\n  } = html;\n  const {\n    style\n  } = attributes;\n  const wrapper = {\n    name: \"div\",\n    attributes: {\n      class: [\"xfaWrapper\"],\n      style: Object.create(null)\n    },\n    children: []\n  };\n  attributes.class.push(\"xfaWrapped\");\n\n  if (node.border) {\n    const {\n      widths,\n      insets\n    } = node.border[_xfa_object.$extra];\n    let width, height;\n    let top = insets[0];\n    let left = insets[3];\n    const insetsH = insets[0] + insets[2];\n    const insetsW = insets[1] + insets[3];\n\n    switch (node.border.hand) {\n      case \"even\":\n        top -= widths[0] / 2;\n        left -= widths[3] / 2;\n        width = `calc(100% + ${(widths[1] + widths[3]) / 2 - insetsW}px)`;\n        height = `calc(100% + ${(widths[0] + widths[2]) / 2 - insetsH}px)`;\n        break;\n\n      case \"left\":\n        top -= widths[0];\n        left -= widths[3];\n        width = `calc(100% + ${widths[1] + widths[3] - insetsW}px)`;\n        height = `calc(100% + ${widths[0] + widths[2] - insetsH}px)`;\n        break;\n\n      case \"right\":\n        width = insetsW ? `calc(100% - ${insetsW}px)` : \"100%\";\n        height = insetsH ? `calc(100% - ${insetsH}px)` : \"100%\";\n        break;\n    }\n\n    const classNames = [\"xfaBorder\"];\n\n    if (isPrintOnly(node.border)) {\n      classNames.push(\"xfaPrintOnly\");\n    }\n\n    const border = {\n      name: \"div\",\n      attributes: {\n        class: classNames,\n        style: {\n          top: `${top}px`,\n          left: `${left}px`,\n          width,\n          height\n        }\n      },\n      children: []\n    };\n\n    for (const key of [\"border\", \"borderWidth\", \"borderColor\", \"borderRadius\", \"borderStyle\"]) {\n      if (style[key] !== undefined) {\n        border.attributes.style[key] = style[key];\n        delete style[key];\n      }\n    }\n\n    wrapper.children.push(border, html);\n  } else {\n    wrapper.children.push(html);\n  }\n\n  for (const key of [\"background\", \"backgroundClip\", \"top\", \"left\", \"width\", \"height\", \"minWidth\", \"minHeight\", \"maxWidth\", \"maxHeight\", \"transform\", \"transformOrigin\", \"visibility\"]) {\n    if (style[key] !== undefined) {\n      wrapper.attributes.style[key] = style[key];\n      delete style[key];\n    }\n  }\n\n  if (style.position === \"absolute\") {\n    wrapper.attributes.style.position = \"absolute\";\n  } else {\n    wrapper.attributes.style.position = \"relative\";\n  }\n\n  delete style.position;\n\n  if (style.alignSelf) {\n    wrapper.attributes.style.alignSelf = style.alignSelf;\n    delete style.alignSelf;\n  }\n\n  return wrapper;\n}\n\nfunction fixTextIndent(styles) {\n  const indent = (0, _utils.getMeasurement)(styles.textIndent, \"0px\");\n\n  if (indent >= 0) {\n    return;\n  }\n\n  const align = styles.textAlign === \"right\" ? \"right\" : \"left\";\n  const name = \"padding\" + (align === \"left\" ? \"Left\" : \"Right\");\n  const padding = (0, _utils.getMeasurement)(styles[name], \"0px\");\n  styles[name] = `${padding - indent}px`;\n}\n\nfunction setAccess(node, classNames) {\n  switch (node.access) {\n    case \"nonInteractive\":\n      classNames.push(\"xfaNonInteractive\");\n      break;\n\n    case \"readOnly\":\n      classNames.push(\"xfaReadOnly\");\n      break;\n\n    case \"protected\":\n      classNames.push(\"xfaDisabled\");\n      break;\n  }\n}\n\nfunction isPrintOnly(node) {\n  return node.relevant.length > 0 && !node.relevant[0].excluded && node.relevant[0].viewname === \"print\";\n}\n\nfunction getCurrentPara(node) {\n  const stack = node[_xfa_object.$getTemplateRoot]()[_xfa_object.$extra].paraStack;\n\n  return stack.length ? stack[stack.length - 1] : null;\n}\n\nfunction setPara(node, nodeStyle, value) {\n  if (value.attributes.class && value.attributes.class.includes(\"xfaRich\")) {\n    if (nodeStyle) {\n      if (node.h === \"\") {\n        nodeStyle.height = \"auto\";\n      }\n\n      if (node.w === \"\") {\n        nodeStyle.width = \"auto\";\n      }\n    }\n\n    const para = getCurrentPara(node);\n\n    if (para) {\n      const valueStyle = value.attributes.style;\n      valueStyle.display = \"flex\";\n      valueStyle.flexDirection = \"column\";\n\n      switch (para.vAlign) {\n        case \"top\":\n          valueStyle.justifyContent = \"start\";\n          break;\n\n        case \"bottom\":\n          valueStyle.justifyContent = \"end\";\n          break;\n\n        case \"middle\":\n          valueStyle.justifyContent = \"center\";\n          break;\n      }\n\n      const paraStyle = para[_xfa_object.$toStyle]();\n\n      for (const [key, val] of Object.entries(paraStyle)) {\n        if (!(key in valueStyle)) {\n          valueStyle[key] = val;\n        }\n      }\n    }\n  }\n}\n\nfunction setFontFamily(xfaFont, node, fontFinder, style) {\n  if (!fontFinder) {\n    delete style.fontFamily;\n    return;\n  }\n\n  const name = (0, _utils.stripQuotes)(xfaFont.typeface);\n  style.fontFamily = `\"${name}\"`;\n  const typeface = fontFinder.find(name);\n\n  if (typeface) {\n    const {\n      fontFamily\n    } = typeface.regular.cssFontInfo;\n\n    if (fontFamily !== name) {\n      style.fontFamily = `\"${fontFamily}\"`;\n    }\n\n    const para = getCurrentPara(node);\n\n    if (para && para.lineHeight !== \"\") {\n      return;\n    }\n\n    if (style.lineHeight) {\n      return;\n    }\n\n    const pdfFont = (0, _fonts.selectFont)(xfaFont, typeface);\n\n    if (pdfFont) {\n      style.lineHeight = Math.max(1.2, pdfFont.lineHeight);\n    }\n  }\n}\n\nfunction fixURL(str) {\n  const absoluteUrl = (0, _util.createValidAbsoluteUrl)(str, null, {\n    addDefaultProtocol: true,\n    tryConvertEncoding: true\n  });\n  return absoluteUrl ? absoluteUrl.href : null;\n}\n\n/***/ }),\n/* 84 */\n/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {\n\n\n\nObject.defineProperty(exports, \"__esModule\", ({\n  value: true\n}));\nexports.FontFinder = void 0;\nexports.getMetrics = getMetrics;\nexports.selectFont = selectFont;\n\nvar _xfa_object = __w_pdfjs_require__(76);\n\nvar _utils = __w_pdfjs_require__(77);\n\nvar _util = __w_pdfjs_require__(2);\n\nclass FontFinder {\n  constructor(pdfFonts) {\n    this.fonts = new Map();\n    this.cache = new Map();\n    this.warned = new Set();\n    this.defaultFont = null;\n    this.add(pdfFonts);\n  }\n\n  add(pdfFonts, reallyMissingFonts = null) {\n    for (const pdfFont of pdfFonts) {\n      this.addPdfFont(pdfFont);\n    }\n\n    for (const pdfFont of this.fonts.values()) {\n      if (!pdfFont.regular) {\n        pdfFont.regular = pdfFont.italic || pdfFont.bold || pdfFont.bolditalic;\n      }\n    }\n\n    if (!reallyMissingFonts || reallyMissingFonts.size === 0) {\n      return;\n    }\n\n    const myriad = this.fonts.get(\"PdfJS-Fallback-PdfJS-XFA\");\n\n    for (const missing of reallyMissingFonts) {\n      this.fonts.set(missing, myriad);\n    }\n  }\n\n  addPdfFont(pdfFont) {\n    const cssFontInfo = pdfFont.cssFontInfo;\n    const name = cssFontInfo.fontFamily;\n    let font = this.fonts.get(name);\n\n    if (!font) {\n      font = Object.create(null);\n      this.fonts.set(name, font);\n\n      if (!this.defaultFont) {\n        this.defaultFont = font;\n      }\n    }\n\n    let property = \"\";\n    const fontWeight = parseFloat(cssFontInfo.fontWeight);\n\n    if (parseFloat(cssFontInfo.italicAngle) !== 0) {\n      property = fontWeight >= 700 ? \"bolditalic\" : \"italic\";\n    } else if (fontWeight >= 700) {\n      property = \"bold\";\n    }\n\n    if (!property) {\n      if (pdfFont.name.includes(\"Bold\") || pdfFont.psName && pdfFont.psName.includes(\"Bold\")) {\n        property = \"bold\";\n      }\n\n      if (pdfFont.name.includes(\"Italic\") || pdfFont.name.endsWith(\"It\") || pdfFont.psName && (pdfFont.psName.includes(\"Italic\") || pdfFont.psName.endsWith(\"It\"))) {\n        property += \"italic\";\n      }\n    }\n\n    if (!property) {\n      property = \"regular\";\n    }\n\n    font[property] = pdfFont;\n  }\n\n  getDefault() {\n    return this.defaultFont;\n  }\n\n  find(fontName, mustWarn = true) {\n    let font = this.fonts.get(fontName) || this.cache.get(fontName);\n\n    if (font) {\n      return font;\n    }\n\n    const pattern = /,|-|_| |bolditalic|bold|italic|regular|it/gi;\n    let name = fontName.replace(pattern, \"\");\n    font = this.fonts.get(name);\n\n    if (font) {\n      this.cache.set(fontName, font);\n      return font;\n    }\n\n    name = name.toLowerCase();\n    const maybe = [];\n\n    for (const [family, pdfFont] of this.fonts.entries()) {\n      if (family.replace(pattern, \"\").toLowerCase().startsWith(name)) {\n        maybe.push(pdfFont);\n      }\n    }\n\n    if (maybe.length === 0) {\n      for (const [, pdfFont] of this.fonts.entries()) {\n        if (pdfFont.regular.name && pdfFont.regular.name.replace(pattern, \"\").toLowerCase().startsWith(name)) {\n          maybe.push(pdfFont);\n        }\n      }\n    }\n\n    if (maybe.length === 0) {\n      name = name.replace(/psmt|mt/gi, \"\");\n\n      for (const [family, pdfFont] of this.fonts.entries()) {\n        if (family.replace(pattern, \"\").toLowerCase().startsWith(name)) {\n          maybe.push(pdfFont);\n        }\n      }\n    }\n\n    if (maybe.length === 0) {\n      for (const pdfFont of this.fonts.values()) {\n        if (pdfFont.regular.name && pdfFont.regular.name.replace(pattern, \"\").toLowerCase().startsWith(name)) {\n          maybe.push(pdfFont);\n        }\n      }\n    }\n\n    if (maybe.length >= 1) {\n      if (maybe.length !== 1 && mustWarn) {\n        (0, _util.warn)(`XFA - Too many choices to guess the correct font: ${fontName}`);\n      }\n\n      this.cache.set(fontName, maybe[0]);\n      return maybe[0];\n    }\n\n    if (mustWarn && !this.warned.has(fontName)) {\n      this.warned.add(fontName);\n      (0, _util.warn)(`XFA - Cannot find the font: ${fontName}`);\n    }\n\n    return null;\n  }\n\n}\n\nexports.FontFinder = FontFinder;\n\nfunction selectFont(xfaFont, typeface) {\n  if (xfaFont.posture === \"italic\") {\n    if (xfaFont.weight === \"bold\") {\n      return typeface.bolditalic;\n    }\n\n    return typeface.italic;\n  } else if (xfaFont.weight === \"bold\") {\n    return typeface.bold;\n  }\n\n  return typeface.regular;\n}\n\nfunction getMetrics(xfaFont, real = false) {\n  let pdfFont = null;\n\n  if (xfaFont) {\n    const name = (0, _utils.stripQuotes)(xfaFont.typeface);\n\n    const typeface = xfaFont[_xfa_object.$globalData].fontFinder.find(name);\n\n    pdfFont = selectFont(xfaFont, typeface);\n  }\n\n  if (!pdfFont) {\n    return {\n      lineHeight: 12,\n      lineGap: 2,\n      lineNoGap: 10\n    };\n  }\n\n  const size = xfaFont.size || 10;\n  const lineHeight = pdfFont.lineHeight ? Math.max(real ? 0 : 1.2, pdfFont.lineHeight) : 1.2;\n  const lineGap = pdfFont.lineGap === undefined ? 0.2 : pdfFont.lineGap;\n  return {\n    lineHeight: lineHeight * size,\n    lineGap: lineGap * size,\n    lineNoGap: Math.max(1, lineHeight - lineGap) * size\n  };\n}\n\n/***/ }),\n/* 85 */\n/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {\n\n\n\nObject.defineProperty(exports, \"__esModule\", ({\n  value: true\n}));\nexports.TextMeasure = void 0;\n\nvar _fonts = __w_pdfjs_require__(84);\n\nconst WIDTH_FACTOR = 1.02;\n\nclass FontInfo {\n  constructor(xfaFont, margin, lineHeight, fontFinder) {\n    this.lineHeight = lineHeight;\n    this.paraMargin = margin || {\n      top: 0,\n      bottom: 0,\n      left: 0,\n      right: 0\n    };\n\n    if (!xfaFont) {\n      [this.pdfFont, this.xfaFont] = this.defaultFont(fontFinder);\n      return;\n    }\n\n    this.xfaFont = {\n      typeface: xfaFont.typeface,\n      posture: xfaFont.posture,\n      weight: xfaFont.weight,\n      size: xfaFont.size,\n      letterSpacing: xfaFont.letterSpacing\n    };\n    const typeface = fontFinder.find(xfaFont.typeface);\n\n    if (!typeface) {\n      [this.pdfFont, this.xfaFont] = this.defaultFont(fontFinder);\n      return;\n    }\n\n    this.pdfFont = (0, _fonts.selectFont)(xfaFont, typeface);\n\n    if (!this.pdfFont) {\n      [this.pdfFont, this.xfaFont] = this.defaultFont(fontFinder);\n    }\n  }\n\n  defaultFont(fontFinder) {\n    const font = fontFinder.find(\"Helvetica\", false) || fontFinder.find(\"Myriad Pro\", false) || fontFinder.find(\"Arial\", false) || fontFinder.getDefault();\n\n    if (font && font.regular) {\n      const pdfFont = font.regular;\n      const info = pdfFont.cssFontInfo;\n      const xfaFont = {\n        typeface: info.fontFamily,\n        posture: \"normal\",\n        weight: \"normal\",\n        size: 10,\n        letterSpacing: 0\n      };\n      return [pdfFont, xfaFont];\n    }\n\n    const xfaFont = {\n      typeface: \"Courier\",\n      posture: \"normal\",\n      weight: \"normal\",\n      size: 10,\n      letterSpacing: 0\n    };\n    return [null, xfaFont];\n  }\n\n}\n\nclass FontSelector {\n  constructor(defaultXfaFont, defaultParaMargin, defaultLineHeight, fontFinder) {\n    this.fontFinder = fontFinder;\n    this.stack = [new FontInfo(defaultXfaFont, defaultParaMargin, defaultLineHeight, fontFinder)];\n  }\n\n  pushData(xfaFont, margin, lineHeight) {\n    const lastFont = this.stack[this.stack.length - 1];\n\n    for (const name of [\"typeface\", \"posture\", \"weight\", \"size\", \"letterSpacing\"]) {\n      if (!xfaFont[name]) {\n        xfaFont[name] = lastFont.xfaFont[name];\n      }\n    }\n\n    for (const name of [\"top\", \"bottom\", \"left\", \"right\"]) {\n      if (isNaN(margin[name])) {\n        margin[name] = lastFont.paraMargin[name];\n      }\n    }\n\n    const fontInfo = new FontInfo(xfaFont, margin, lineHeight || lastFont.lineHeight, this.fontFinder);\n\n    if (!fontInfo.pdfFont) {\n      fontInfo.pdfFont = lastFont.pdfFont;\n    }\n\n    this.stack.push(fontInfo);\n  }\n\n  popFont() {\n    this.stack.pop();\n  }\n\n  topFont() {\n    return this.stack[this.stack.length - 1];\n  }\n\n}\n\nclass TextMeasure {\n  constructor(defaultXfaFont, defaultParaMargin, defaultLineHeight, fonts) {\n    this.glyphs = [];\n    this.fontSelector = new FontSelector(defaultXfaFont, defaultParaMargin, defaultLineHeight, fonts);\n    this.extraHeight = 0;\n  }\n\n  pushData(xfaFont, margin, lineHeight) {\n    this.fontSelector.pushData(xfaFont, margin, lineHeight);\n  }\n\n  popFont(xfaFont) {\n    return this.fontSelector.popFont();\n  }\n\n  addPara() {\n    const lastFont = this.fontSelector.topFont();\n    this.extraHeight += lastFont.paraMargin.top + lastFont.paraMargin.bottom;\n  }\n\n  addString(str) {\n    if (!str) {\n      return;\n    }\n\n    const lastFont = this.fontSelector.topFont();\n    const fontSize = lastFont.xfaFont.size;\n\n    if (lastFont.pdfFont) {\n      const letterSpacing = lastFont.xfaFont.letterSpacing;\n      const pdfFont = lastFont.pdfFont;\n      const fontLineHeight = pdfFont.lineHeight || 1.2;\n      const lineHeight = lastFont.lineHeight || Math.max(1.2, fontLineHeight) * fontSize;\n      const lineGap = pdfFont.lineGap === undefined ? 0.2 : pdfFont.lineGap;\n      const noGap = fontLineHeight - lineGap;\n      const firstLineHeight = Math.max(1, noGap) * fontSize;\n      const scale = fontSize / 1000;\n      const fallbackWidth = pdfFont.defaultWidth || pdfFont.charsToGlyphs(\" \")[0].width;\n\n      for (const line of str.split(/[\\u2029\\n]/)) {\n        const encodedLine = pdfFont.encodeString(line).join(\"\");\n        const glyphs = pdfFont.charsToGlyphs(encodedLine);\n\n        for (const glyph of glyphs) {\n          const width = glyph.width || fallbackWidth;\n          this.glyphs.push([width * scale + letterSpacing, lineHeight, firstLineHeight, glyph.unicode, false]);\n        }\n\n        this.glyphs.push([0, 0, 0, \"\\n\", true]);\n      }\n\n      this.glyphs.pop();\n      return;\n    }\n\n    for (const line of str.split(/[\\u2029\\n]/)) {\n      for (const char of line.split(\"\")) {\n        this.glyphs.push([fontSize, 1.2 * fontSize, fontSize, char, false]);\n      }\n\n      this.glyphs.push([0, 0, 0, \"\\n\", true]);\n    }\n\n    this.glyphs.pop();\n  }\n\n  compute(maxWidth) {\n    let lastSpacePos = -1,\n        lastSpaceWidth = 0,\n        width = 0,\n        height = 0,\n        currentLineWidth = 0,\n        currentLineHeight = 0;\n    let isBroken = false;\n    let isFirstLine = true;\n\n    for (let i = 0, ii = this.glyphs.length; i < ii; i++) {\n      const [glyphWidth, lineHeight, firstLineHeight, char, isEOL] = this.glyphs[i];\n      const isSpace = char === \" \";\n      const glyphHeight = isFirstLine ? firstLineHeight : lineHeight;\n\n      if (isEOL) {\n        width = Math.max(width, currentLineWidth);\n        currentLineWidth = 0;\n        height += currentLineHeight;\n        currentLineHeight = glyphHeight;\n        lastSpacePos = -1;\n        lastSpaceWidth = 0;\n        isFirstLine = false;\n        continue;\n      }\n\n      if (isSpace) {\n        if (currentLineWidth + glyphWidth > maxWidth) {\n          width = Math.max(width, currentLineWidth);\n          currentLineWidth = 0;\n          height += currentLineHeight;\n          currentLineHeight = glyphHeight;\n          lastSpacePos = -1;\n          lastSpaceWidth = 0;\n          isBroken = true;\n          isFirstLine = false;\n        } else {\n          currentLineHeight = Math.max(glyphHeight, currentLineHeight);\n          lastSpaceWidth = currentLineWidth;\n          currentLineWidth += glyphWidth;\n          lastSpacePos = i;\n        }\n\n        continue;\n      }\n\n      if (currentLineWidth + glyphWidth > maxWidth) {\n        height += currentLineHeight;\n        currentLineHeight = glyphHeight;\n\n        if (lastSpacePos !== -1) {\n          i = lastSpacePos;\n          width = Math.max(width, lastSpaceWidth);\n          currentLineWidth = 0;\n          lastSpacePos = -1;\n          lastSpaceWidth = 0;\n        } else {\n          width = Math.max(width, currentLineWidth);\n          currentLineWidth = glyphWidth;\n        }\n\n        isBroken = true;\n        isFirstLine = false;\n        continue;\n      }\n\n      currentLineWidth += glyphWidth;\n      currentLineHeight = Math.max(glyphHeight, currentLineHeight);\n    }\n\n    width = Math.max(width, currentLineWidth);\n    height += currentLineHeight + this.extraHeight;\n    return {\n      width: WIDTH_FACTOR * width,\n      height,\n      isBroken\n    };\n  }\n\n}\n\nexports.TextMeasure = TextMeasure;\n\n/***/ }),\n/* 86 */\n/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {\n\n\n\nObject.defineProperty(exports, \"__esModule\", ({\n  value: true\n}));\nexports.DataHandler = void 0;\n\nvar _xfa_object = __w_pdfjs_require__(76);\n\nclass DataHandler {\n  constructor(root, data) {\n    this.data = data;\n    this.dataset = root.datasets || null;\n  }\n\n  serialize(storage) {\n    const stack = [[-1, this.data[_xfa_object.$getChildren]()]];\n\n    while (stack.length > 0) {\n      const last = stack[stack.length - 1];\n      const [i, children] = last;\n\n      if (i + 1 === children.length) {\n        stack.pop();\n        continue;\n      }\n\n      const child = children[++last[0]];\n      const storageEntry = storage.get(child[_xfa_object.$uid]);\n\n      if (storageEntry) {\n        child[_xfa_object.$setValue](storageEntry);\n      } else {\n        const attributes = child[_xfa_object.$getAttributes]();\n\n        for (const value of attributes.values()) {\n          const entry = storage.get(value[_xfa_object.$uid]);\n\n          if (entry) {\n            value[_xfa_object.$setValue](entry);\n\n            break;\n          }\n        }\n      }\n\n      const nodes = child[_xfa_object.$getChildren]();\n\n      if (nodes.length > 0) {\n        stack.push([-1, nodes]);\n      }\n    }\n\n    const buf = [`<xfa:datasets xmlns:xfa=\"http://www.xfa.org/schema/xfa-data/1.0/\">`];\n\n    if (this.dataset) {\n      for (const child of this.dataset[_xfa_object.$getChildren]()) {\n        if (child[_xfa_object.$nodeName] !== \"data\") {\n          child[_xfa_object.$toString](buf);\n        }\n      }\n    }\n\n    this.data[_xfa_object.$toString](buf);\n\n    buf.push(\"</xfa:datasets>\");\n    return buf.join(\"\");\n  }\n\n}\n\nexports.DataHandler = DataHandler;\n\n/***/ }),\n/* 87 */\n/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {\n\n\n\nObject.defineProperty(exports, \"__esModule\", ({\n  value: true\n}));\nexports.XFAParser = void 0;\n\nvar _xfa_object = __w_pdfjs_require__(76);\n\nvar _xml_parser = __w_pdfjs_require__(69);\n\nvar _builder = __w_pdfjs_require__(88);\n\nvar _util = __w_pdfjs_require__(2);\n\nclass XFAParser extends _xml_parser.XMLParserBase {\n  constructor(rootNameSpace = null, richText = false) {\n    super();\n    this._builder = new _builder.Builder(rootNameSpace);\n    this._stack = [];\n    this._globalData = {\n      usedTypefaces: new Set()\n    };\n    this._ids = new Map();\n    this._current = this._builder.buildRoot(this._ids);\n    this._errorCode = _xml_parser.XMLParserErrorCode.NoError;\n    this._whiteRegex = /^\\s+$/;\n    this._nbsps = /\\xa0+/g;\n    this._richText = richText;\n  }\n\n  parse(data) {\n    this.parseXml(data);\n\n    if (this._errorCode !== _xml_parser.XMLParserErrorCode.NoError) {\n      return undefined;\n    }\n\n    this._current[_xfa_object.$finalize]();\n\n    return this._current.element;\n  }\n\n  onText(text) {\n    text = text.replace(this._nbsps, match => match.slice(1) + \" \");\n\n    if (this._richText || this._current[_xfa_object.$acceptWhitespace]()) {\n      this._current[_xfa_object.$onText](text, this._richText);\n\n      return;\n    }\n\n    if (this._whiteRegex.test(text)) {\n      return;\n    }\n\n    this._current[_xfa_object.$onText](text.trim());\n  }\n\n  onCdata(text) {\n    this._current[_xfa_object.$onText](text);\n  }\n\n  _mkAttributes(attributes, tagName) {\n    let namespace = null;\n    let prefixes = null;\n    const attributeObj = Object.create({});\n\n    for (const {\n      name,\n      value\n    } of attributes) {\n      if (name === \"xmlns\") {\n        if (!namespace) {\n          namespace = value;\n        } else {\n          (0, _util.warn)(`XFA - multiple namespace definition in <${tagName}>`);\n        }\n      } else if (name.startsWith(\"xmlns:\")) {\n        const prefix = name.substring(\"xmlns:\".length);\n\n        if (!prefixes) {\n          prefixes = [];\n        }\n\n        prefixes.push({\n          prefix,\n          value\n        });\n      } else {\n        const i = name.indexOf(\":\");\n\n        if (i === -1) {\n          attributeObj[name] = value;\n        } else {\n          let nsAttrs = attributeObj[_xfa_object.$nsAttributes];\n\n          if (!nsAttrs) {\n            nsAttrs = attributeObj[_xfa_object.$nsAttributes] = Object.create(null);\n          }\n\n          const [ns, attrName] = [name.slice(0, i), name.slice(i + 1)];\n          let attrs = nsAttrs[ns];\n\n          if (!attrs) {\n            attrs = nsAttrs[ns] = Object.create(null);\n          }\n\n          attrs[attrName] = value;\n        }\n      }\n    }\n\n    return [namespace, prefixes, attributeObj];\n  }\n\n  _getNameAndPrefix(name, nsAgnostic) {\n    const i = name.indexOf(\":\");\n\n    if (i === -1) {\n      return [name, null];\n    }\n\n    return [name.substring(i + 1), nsAgnostic ? \"\" : name.substring(0, i)];\n  }\n\n  onBeginElement(tagName, attributes, isEmpty) {\n    const [namespace, prefixes, attributesObj] = this._mkAttributes(attributes, tagName);\n\n    const [name, nsPrefix] = this._getNameAndPrefix(tagName, this._builder.isNsAgnostic());\n\n    const node = this._builder.build({\n      nsPrefix,\n      name,\n      attributes: attributesObj,\n      namespace,\n      prefixes\n    });\n\n    node[_xfa_object.$globalData] = this._globalData;\n\n    if (isEmpty) {\n      node[_xfa_object.$finalize]();\n\n      if (this._current[_xfa_object.$onChild](node)) {\n        node[_xfa_object.$setId](this._ids);\n      }\n\n      node[_xfa_object.$clean](this._builder);\n\n      return;\n    }\n\n    this._stack.push(this._current);\n\n    this._current = node;\n  }\n\n  onEndElement(name) {\n    const node = this._current;\n\n    if (node[_xfa_object.$isCDATAXml]() && typeof node[_xfa_object.$content] === \"string\") {\n      const parser = new XFAParser();\n      parser._globalData = this._globalData;\n      const root = parser.parse(node[_xfa_object.$content]);\n      node[_xfa_object.$content] = null;\n\n      node[_xfa_object.$onChild](root);\n    }\n\n    node[_xfa_object.$finalize]();\n\n    this._current = this._stack.pop();\n\n    if (this._current[_xfa_object.$onChild](node)) {\n      node[_xfa_object.$setId](this._ids);\n    }\n\n    node[_xfa_object.$clean](this._builder);\n  }\n\n  onError(code) {\n    this._errorCode = code;\n  }\n\n}\n\nexports.XFAParser = XFAParser;\n\n/***/ }),\n/* 88 */\n/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {\n\n\n\nObject.defineProperty(exports, \"__esModule\", ({\n  value: true\n}));\nexports.Builder = void 0;\n\nvar _namespaces = __w_pdfjs_require__(78);\n\nvar _xfa_object = __w_pdfjs_require__(76);\n\nvar _setup = __w_pdfjs_require__(89);\n\nvar _template = __w_pdfjs_require__(81);\n\nvar _unknown = __w_pdfjs_require__(98);\n\nvar _util = __w_pdfjs_require__(2);\n\nclass Root extends _xfa_object.XFAObject {\n  constructor(ids) {\n    super(-1, \"root\", Object.create(null));\n    this.element = null;\n    this[_xfa_object.$ids] = ids;\n  }\n\n  [_xfa_object.$onChild](child) {\n    this.element = child;\n    return true;\n  }\n\n  [_xfa_object.$finalize]() {\n    super[_xfa_object.$finalize]();\n\n    if (this.element.template instanceof _template.Template) {\n      this[_xfa_object.$ids].set(_xfa_object.$root, this.element);\n\n      this.element.template[_xfa_object.$resolvePrototypes](this[_xfa_object.$ids]);\n\n      this.element.template[_xfa_object.$ids] = this[_xfa_object.$ids];\n    }\n  }\n\n}\n\nclass Empty extends _xfa_object.XFAObject {\n  constructor() {\n    super(-1, \"\", Object.create(null));\n  }\n\n  [_xfa_object.$onChild](_) {\n    return false;\n  }\n\n}\n\nclass Builder {\n  constructor(rootNameSpace = null) {\n    this._namespaceStack = [];\n    this._nsAgnosticLevel = 0;\n    this._namespacePrefixes = new Map();\n    this._namespaces = new Map();\n    this._nextNsId = Math.max(...Object.values(_namespaces.NamespaceIds).map(({\n      id\n    }) => id));\n    this._currentNamespace = rootNameSpace || new _unknown.UnknownNamespace(++this._nextNsId);\n  }\n\n  buildRoot(ids) {\n    return new Root(ids);\n  }\n\n  build({\n    nsPrefix,\n    name,\n    attributes,\n    namespace,\n    prefixes\n  }) {\n    const hasNamespaceDef = namespace !== null;\n\n    if (hasNamespaceDef) {\n      this._namespaceStack.push(this._currentNamespace);\n\n      this._currentNamespace = this._searchNamespace(namespace);\n    }\n\n    if (prefixes) {\n      this._addNamespacePrefix(prefixes);\n    }\n\n    if (attributes.hasOwnProperty(_xfa_object.$nsAttributes)) {\n      const dataTemplate = _setup.NamespaceSetUp.datasets;\n      const nsAttrs = attributes[_xfa_object.$nsAttributes];\n      let xfaAttrs = null;\n\n      for (const [ns, attrs] of Object.entries(nsAttrs)) {\n        const nsToUse = this._getNamespaceToUse(ns);\n\n        if (nsToUse === dataTemplate) {\n          xfaAttrs = {\n            xfa: attrs\n          };\n          break;\n        }\n      }\n\n      if (xfaAttrs) {\n        attributes[_xfa_object.$nsAttributes] = xfaAttrs;\n      } else {\n        delete attributes[_xfa_object.$nsAttributes];\n      }\n    }\n\n    const namespaceToUse = this._getNamespaceToUse(nsPrefix);\n\n    const node = namespaceToUse && namespaceToUse[_namespaces.$buildXFAObject](name, attributes) || new Empty();\n\n    if (node[_xfa_object.$isNsAgnostic]()) {\n      this._nsAgnosticLevel++;\n    }\n\n    if (hasNamespaceDef || prefixes || node[_xfa_object.$isNsAgnostic]()) {\n      node[_xfa_object.$cleanup] = {\n        hasNamespace: hasNamespaceDef,\n        prefixes,\n        nsAgnostic: node[_xfa_object.$isNsAgnostic]()\n      };\n    }\n\n    return node;\n  }\n\n  isNsAgnostic() {\n    return this._nsAgnosticLevel > 0;\n  }\n\n  _searchNamespace(nsName) {\n    let ns = this._namespaces.get(nsName);\n\n    if (ns) {\n      return ns;\n    }\n\n    for (const [name, {\n      check\n    }] of Object.entries(_namespaces.NamespaceIds)) {\n      if (check(nsName)) {\n        ns = _setup.NamespaceSetUp[name];\n\n        if (ns) {\n          this._namespaces.set(nsName, ns);\n\n          return ns;\n        }\n\n        break;\n      }\n    }\n\n    ns = new _unknown.UnknownNamespace(++this._nextNsId);\n\n    this._namespaces.set(nsName, ns);\n\n    return ns;\n  }\n\n  _addNamespacePrefix(prefixes) {\n    for (const {\n      prefix,\n      value\n    } of prefixes) {\n      const namespace = this._searchNamespace(value);\n\n      let prefixStack = this._namespacePrefixes.get(prefix);\n\n      if (!prefixStack) {\n        prefixStack = [];\n\n        this._namespacePrefixes.set(prefix, prefixStack);\n      }\n\n      prefixStack.push(namespace);\n    }\n  }\n\n  _getNamespaceToUse(prefix) {\n    if (!prefix) {\n      return this._currentNamespace;\n    }\n\n    const prefixStack = this._namespacePrefixes.get(prefix);\n\n    if (prefixStack && prefixStack.length > 0) {\n      return prefixStack[prefixStack.length - 1];\n    }\n\n    (0, _util.warn)(`Unknown namespace prefix: ${prefix}.`);\n    return null;\n  }\n\n  clean(data) {\n    const {\n      hasNamespace,\n      prefixes,\n      nsAgnostic\n    } = data;\n\n    if (hasNamespace) {\n      this._currentNamespace = this._namespaceStack.pop();\n    }\n\n    if (prefixes) {\n      prefixes.forEach(({\n        prefix\n      }) => {\n        this._namespacePrefixes.get(prefix).pop();\n      });\n    }\n\n    if (nsAgnostic) {\n      this._nsAgnosticLevel--;\n    }\n  }\n\n}\n\nexports.Builder = Builder;\n\n/***/ }),\n/* 89 */\n/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {\n\n\n\nObject.defineProperty(exports, \"__esModule\", ({\n  value: true\n}));\nexports.NamespaceSetUp = void 0;\n\nvar _config = __w_pdfjs_require__(90);\n\nvar _connection_set = __w_pdfjs_require__(91);\n\nvar _datasets = __w_pdfjs_require__(92);\n\nvar _locale_set = __w_pdfjs_require__(93);\n\nvar _signature = __w_pdfjs_require__(94);\n\nvar _stylesheet = __w_pdfjs_require__(95);\n\nvar _template = __w_pdfjs_require__(81);\n\nvar _xdp = __w_pdfjs_require__(96);\n\nvar _xhtml = __w_pdfjs_require__(97);\n\nconst NamespaceSetUp = {\n  config: _config.ConfigNamespace,\n  connection: _connection_set.ConnectionSetNamespace,\n  datasets: _datasets.DatasetsNamespace,\n  localeSet: _locale_set.LocaleSetNamespace,\n  signature: _signature.SignatureNamespace,\n  stylesheet: _stylesheet.StylesheetNamespace,\n  template: _template.TemplateNamespace,\n  xdp: _xdp.XdpNamespace,\n  xhtml: _xhtml.XhtmlNamespace\n};\nexports.NamespaceSetUp = NamespaceSetUp;\n\n/***/ }),\n/* 90 */\n/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {\n\n\n\nObject.defineProperty(exports, \"__esModule\", ({\n  value: true\n}));\nexports.ConfigNamespace = void 0;\n\nvar _namespaces = __w_pdfjs_require__(78);\n\nvar _xfa_object = __w_pdfjs_require__(76);\n\nvar _utils = __w_pdfjs_require__(77);\n\nvar _util = __w_pdfjs_require__(2);\n\nconst CONFIG_NS_ID = _namespaces.NamespaceIds.config.id;\n\nclass Acrobat extends _xfa_object.XFAObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"acrobat\", true);\n    this.acrobat7 = null;\n    this.autoSave = null;\n    this.common = null;\n    this.validate = null;\n    this.validateApprovalSignatures = null;\n    this.submitUrl = new _xfa_object.XFAObjectArray();\n  }\n\n}\n\nclass Acrobat7 extends _xfa_object.XFAObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"acrobat7\", true);\n    this.dynamicRender = null;\n  }\n\n}\n\nclass ADBE_JSConsole extends _xfa_object.OptionObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"ADBE_JSConsole\", [\"delegate\", \"Enable\", \"Disable\"]);\n  }\n\n}\n\nclass ADBE_JSDebugger extends _xfa_object.OptionObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"ADBE_JSDebugger\", [\"delegate\", \"Enable\", \"Disable\"]);\n  }\n\n}\n\nclass AddSilentPrint extends _xfa_object.Option01 {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"addSilentPrint\");\n  }\n\n}\n\nclass AddViewerPreferences extends _xfa_object.Option01 {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"addViewerPreferences\");\n  }\n\n}\n\nclass AdjustData extends _xfa_object.Option10 {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"adjustData\");\n  }\n\n}\n\nclass AdobeExtensionLevel extends _xfa_object.IntegerObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"adobeExtensionLevel\", 0, n => n >= 1 && n <= 8);\n  }\n\n}\n\nclass Agent extends _xfa_object.XFAObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"agent\", true);\n    this.name = attributes.name ? attributes.name.trim() : \"\";\n    this.common = new _xfa_object.XFAObjectArray();\n  }\n\n}\n\nclass AlwaysEmbed extends _xfa_object.ContentObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"alwaysEmbed\");\n  }\n\n}\n\nclass Amd extends _xfa_object.StringObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"amd\");\n  }\n\n}\n\nclass Area extends _xfa_object.XFAObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"area\");\n    this.level = (0, _utils.getInteger)({\n      data: attributes.level,\n      defaultValue: 0,\n      validate: n => n >= 1 && n <= 3\n    });\n    this.name = (0, _utils.getStringOption)(attributes.name, [\"\", \"barcode\", \"coreinit\", \"deviceDriver\", \"font\", \"general\", \"layout\", \"merge\", \"script\", \"signature\", \"sourceSet\", \"templateCache\"]);\n  }\n\n}\n\nclass Attributes extends _xfa_object.OptionObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"attributes\", [\"preserve\", \"delegate\", \"ignore\"]);\n  }\n\n}\n\nclass AutoSave extends _xfa_object.OptionObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"autoSave\", [\"disabled\", \"enabled\"]);\n  }\n\n}\n\nclass Base extends _xfa_object.StringObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"base\");\n  }\n\n}\n\nclass BatchOutput extends _xfa_object.XFAObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"batchOutput\");\n    this.format = (0, _utils.getStringOption)(attributes.format, [\"none\", \"concat\", \"zip\", \"zipCompress\"]);\n  }\n\n}\n\nclass BehaviorOverride extends _xfa_object.ContentObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"behaviorOverride\");\n  }\n\n  [_xfa_object.$finalize]() {\n    this[_xfa_object.$content] = new Map(this[_xfa_object.$content].trim().split(/\\s+/).filter(x => x.includes(\":\")).map(x => x.split(\":\", 2)));\n  }\n\n}\n\nclass Cache extends _xfa_object.XFAObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"cache\", true);\n    this.templateCache = null;\n  }\n\n}\n\nclass Change extends _xfa_object.Option01 {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"change\");\n  }\n\n}\n\nclass Common extends _xfa_object.XFAObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"common\", true);\n    this.data = null;\n    this.locale = null;\n    this.localeSet = null;\n    this.messaging = null;\n    this.suppressBanner = null;\n    this.template = null;\n    this.validationMessaging = null;\n    this.versionControl = null;\n    this.log = new _xfa_object.XFAObjectArray();\n  }\n\n}\n\nclass Compress extends _xfa_object.XFAObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"compress\");\n    this.scope = (0, _utils.getStringOption)(attributes.scope, [\"imageOnly\", \"document\"]);\n  }\n\n}\n\nclass CompressLogicalStructure extends _xfa_object.Option01 {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"compressLogicalStructure\");\n  }\n\n}\n\nclass CompressObjectStream extends _xfa_object.Option10 {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"compressObjectStream\");\n  }\n\n}\n\nclass Compression extends _xfa_object.XFAObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"compression\", true);\n    this.compressLogicalStructure = null;\n    this.compressObjectStream = null;\n    this.level = null;\n    this.type = null;\n  }\n\n}\n\nclass Config extends _xfa_object.XFAObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"config\", true);\n    this.acrobat = null;\n    this.present = null;\n    this.trace = null;\n    this.agent = new _xfa_object.XFAObjectArray();\n  }\n\n}\n\nclass Conformance extends _xfa_object.OptionObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"conformance\", [\"A\", \"B\"]);\n  }\n\n}\n\nclass ContentCopy extends _xfa_object.Option01 {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"contentCopy\");\n  }\n\n}\n\nclass Copies extends _xfa_object.IntegerObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"copies\", 1, n => n >= 1);\n  }\n\n}\n\nclass Creator extends _xfa_object.StringObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"creator\");\n  }\n\n}\n\nclass CurrentPage extends _xfa_object.IntegerObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"currentPage\", 0, n => n >= 0);\n  }\n\n}\n\nclass Data extends _xfa_object.XFAObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"data\", true);\n    this.adjustData = null;\n    this.attributes = null;\n    this.incrementalLoad = null;\n    this.outputXSL = null;\n    this.range = null;\n    this.record = null;\n    this.startNode = null;\n    this.uri = null;\n    this.window = null;\n    this.xsl = null;\n    this.excludeNS = new _xfa_object.XFAObjectArray();\n    this.transform = new _xfa_object.XFAObjectArray();\n  }\n\n}\n\nclass Debug extends _xfa_object.XFAObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"debug\", true);\n    this.uri = null;\n  }\n\n}\n\nclass DefaultTypeface extends _xfa_object.ContentObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"defaultTypeface\");\n    this.writingScript = (0, _utils.getStringOption)(attributes.writingScript, [\"*\", \"Arabic\", \"Cyrillic\", \"EastEuropeanRoman\", \"Greek\", \"Hebrew\", \"Japanese\", \"Korean\", \"Roman\", \"SimplifiedChinese\", \"Thai\", \"TraditionalChinese\", \"Vietnamese\"]);\n  }\n\n}\n\nclass Destination extends _xfa_object.OptionObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"destination\", [\"pdf\", \"pcl\", \"ps\", \"webClient\", \"zpl\"]);\n  }\n\n}\n\nclass DocumentAssembly extends _xfa_object.Option01 {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"documentAssembly\");\n  }\n\n}\n\nclass Driver extends _xfa_object.XFAObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"driver\", true);\n    this.name = attributes.name ? attributes.name.trim() : \"\";\n    this.fontInfo = null;\n    this.xdc = null;\n  }\n\n}\n\nclass DuplexOption extends _xfa_object.OptionObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"duplexOption\", [\"simplex\", \"duplexFlipLongEdge\", \"duplexFlipShortEdge\"]);\n  }\n\n}\n\nclass DynamicRender extends _xfa_object.OptionObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"dynamicRender\", [\"forbidden\", \"required\"]);\n  }\n\n}\n\nclass Embed extends _xfa_object.Option01 {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"embed\");\n  }\n\n}\n\nclass Encrypt extends _xfa_object.Option01 {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"encrypt\");\n  }\n\n}\n\nclass Encryption extends _xfa_object.XFAObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"encryption\", true);\n    this.encrypt = null;\n    this.encryptionLevel = null;\n    this.permissions = null;\n  }\n\n}\n\nclass EncryptionLevel extends _xfa_object.OptionObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"encryptionLevel\", [\"40bit\", \"128bit\"]);\n  }\n\n}\n\nclass Enforce extends _xfa_object.StringObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"enforce\");\n  }\n\n}\n\nclass Equate extends _xfa_object.XFAObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"equate\");\n    this.force = (0, _utils.getInteger)({\n      data: attributes.force,\n      defaultValue: 1,\n      validate: n => n === 0\n    });\n    this.from = attributes.from || \"\";\n    this.to = attributes.to || \"\";\n  }\n\n}\n\nclass EquateRange extends _xfa_object.XFAObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"equateRange\");\n    this.from = attributes.from || \"\";\n    this.to = attributes.to || \"\";\n    this._unicodeRange = attributes.unicodeRange || \"\";\n  }\n\n  get unicodeRange() {\n    const ranges = [];\n    const unicodeRegex = /U\\+([0-9a-fA-F]+)/;\n    const unicodeRange = this._unicodeRange;\n\n    for (let range of unicodeRange.split(\",\").map(x => x.trim()).filter(x => !!x)) {\n      range = range.split(\"-\", 2).map(x => {\n        const found = x.match(unicodeRegex);\n\n        if (!found) {\n          return 0;\n        }\n\n        return parseInt(found[1], 16);\n      });\n\n      if (range.length === 1) {\n        range.push(range[0]);\n      }\n\n      ranges.push(range);\n    }\n\n    return (0, _util.shadow)(this, \"unicodeRange\", ranges);\n  }\n\n}\n\nclass Exclude extends _xfa_object.ContentObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"exclude\");\n  }\n\n  [_xfa_object.$finalize]() {\n    this[_xfa_object.$content] = this[_xfa_object.$content].trim().split(/\\s+/).filter(x => x && [\"calculate\", \"close\", \"enter\", \"exit\", \"initialize\", \"ready\", \"validate\"].includes(x));\n  }\n\n}\n\nclass ExcludeNS extends _xfa_object.StringObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"excludeNS\");\n  }\n\n}\n\nclass FlipLabel extends _xfa_object.OptionObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"flipLabel\", [\"usePrinterSetting\", \"on\", \"off\"]);\n  }\n\n}\n\nclass FontInfo extends _xfa_object.XFAObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"fontInfo\", true);\n    this.embed = null;\n    this.map = null;\n    this.subsetBelow = null;\n    this.alwaysEmbed = new _xfa_object.XFAObjectArray();\n    this.defaultTypeface = new _xfa_object.XFAObjectArray();\n    this.neverEmbed = new _xfa_object.XFAObjectArray();\n  }\n\n}\n\nclass FormFieldFilling extends _xfa_object.Option01 {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"formFieldFilling\");\n  }\n\n}\n\nclass GroupParent extends _xfa_object.StringObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"groupParent\");\n  }\n\n}\n\nclass IfEmpty extends _xfa_object.OptionObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"ifEmpty\", [\"dataValue\", \"dataGroup\", \"ignore\", \"remove\"]);\n  }\n\n}\n\nclass IncludeXDPContent extends _xfa_object.StringObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"includeXDPContent\");\n  }\n\n}\n\nclass IncrementalLoad extends _xfa_object.OptionObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"incrementalLoad\", [\"none\", \"forwardOnly\"]);\n  }\n\n}\n\nclass IncrementalMerge extends _xfa_object.Option01 {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"incrementalMerge\");\n  }\n\n}\n\nclass Interactive extends _xfa_object.Option01 {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"interactive\");\n  }\n\n}\n\nclass Jog extends _xfa_object.OptionObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"jog\", [\"usePrinterSetting\", \"none\", \"pageSet\"]);\n  }\n\n}\n\nclass LabelPrinter extends _xfa_object.XFAObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"labelPrinter\", true);\n    this.name = (0, _utils.getStringOption)(attributes.name, [\"zpl\", \"dpl\", \"ipl\", \"tcpl\"]);\n    this.batchOutput = null;\n    this.flipLabel = null;\n    this.fontInfo = null;\n    this.xdc = null;\n  }\n\n}\n\nclass Layout extends _xfa_object.OptionObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"layout\", [\"paginate\", \"panel\"]);\n  }\n\n}\n\nclass Level extends _xfa_object.IntegerObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"level\", 0, n => n > 0);\n  }\n\n}\n\nclass Linearized extends _xfa_object.Option01 {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"linearized\");\n  }\n\n}\n\nclass Locale extends _xfa_object.StringObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"locale\");\n  }\n\n}\n\nclass LocaleSet extends _xfa_object.StringObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"localeSet\");\n  }\n\n}\n\nclass Log extends _xfa_object.XFAObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"log\", true);\n    this.mode = null;\n    this.threshold = null;\n    this.to = null;\n    this.uri = null;\n  }\n\n}\n\nclass MapElement extends _xfa_object.XFAObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"map\", true);\n    this.equate = new _xfa_object.XFAObjectArray();\n    this.equateRange = new _xfa_object.XFAObjectArray();\n  }\n\n}\n\nclass MediumInfo extends _xfa_object.XFAObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"mediumInfo\", true);\n    this.map = null;\n  }\n\n}\n\nclass Message extends _xfa_object.XFAObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"message\", true);\n    this.msgId = null;\n    this.severity = null;\n  }\n\n}\n\nclass Messaging extends _xfa_object.XFAObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"messaging\", true);\n    this.message = new _xfa_object.XFAObjectArray();\n  }\n\n}\n\nclass Mode extends _xfa_object.OptionObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"mode\", [\"append\", \"overwrite\"]);\n  }\n\n}\n\nclass ModifyAnnots extends _xfa_object.Option01 {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"modifyAnnots\");\n  }\n\n}\n\nclass MsgId extends _xfa_object.IntegerObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"msgId\", 1, n => n >= 1);\n  }\n\n}\n\nclass NameAttr extends _xfa_object.StringObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"nameAttr\");\n  }\n\n}\n\nclass NeverEmbed extends _xfa_object.ContentObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"neverEmbed\");\n  }\n\n}\n\nclass NumberOfCopies extends _xfa_object.IntegerObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"numberOfCopies\", null, n => n >= 2 && n <= 5);\n  }\n\n}\n\nclass OpenAction extends _xfa_object.XFAObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"openAction\", true);\n    this.destination = null;\n  }\n\n}\n\nclass Output extends _xfa_object.XFAObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"output\", true);\n    this.to = null;\n    this.type = null;\n    this.uri = null;\n  }\n\n}\n\nclass OutputBin extends _xfa_object.StringObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"outputBin\");\n  }\n\n}\n\nclass OutputXSL extends _xfa_object.XFAObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"outputXSL\", true);\n    this.uri = null;\n  }\n\n}\n\nclass Overprint extends _xfa_object.OptionObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"overprint\", [\"none\", \"both\", \"draw\", \"field\"]);\n  }\n\n}\n\nclass Packets extends _xfa_object.StringObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"packets\");\n  }\n\n  [_xfa_object.$finalize]() {\n    if (this[_xfa_object.$content] === \"*\") {\n      return;\n    }\n\n    this[_xfa_object.$content] = this[_xfa_object.$content].trim().split(/\\s+/).filter(x => [\"config\", \"datasets\", \"template\", \"xfdf\", \"xslt\"].includes(x));\n  }\n\n}\n\nclass PageOffset extends _xfa_object.XFAObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"pageOffset\");\n    this.x = (0, _utils.getInteger)({\n      data: attributes.x,\n      defaultValue: \"useXDCSetting\",\n      validate: n => true\n    });\n    this.y = (0, _utils.getInteger)({\n      data: attributes.y,\n      defaultValue: \"useXDCSetting\",\n      validate: n => true\n    });\n  }\n\n}\n\nclass PageRange extends _xfa_object.StringObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"pageRange\");\n  }\n\n  [_xfa_object.$finalize]() {\n    const numbers = this[_xfa_object.$content].trim().split(/\\s+/).map(x => parseInt(x, 10));\n\n    const ranges = [];\n\n    for (let i = 0, ii = numbers.length; i < ii; i += 2) {\n      ranges.push(numbers.slice(i, i + 2));\n    }\n\n    this[_xfa_object.$content] = ranges;\n  }\n\n}\n\nclass Pagination extends _xfa_object.OptionObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"pagination\", [\"simplex\", \"duplexShortEdge\", \"duplexLongEdge\"]);\n  }\n\n}\n\nclass PaginationOverride extends _xfa_object.OptionObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"paginationOverride\", [\"none\", \"forceDuplex\", \"forceDuplexLongEdge\", \"forceDuplexShortEdge\", \"forceSimplex\"]);\n  }\n\n}\n\nclass Part extends _xfa_object.IntegerObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"part\", 1, n => false);\n  }\n\n}\n\nclass Pcl extends _xfa_object.XFAObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"pcl\", true);\n    this.name = attributes.name || \"\";\n    this.batchOutput = null;\n    this.fontInfo = null;\n    this.jog = null;\n    this.mediumInfo = null;\n    this.outputBin = null;\n    this.pageOffset = null;\n    this.staple = null;\n    this.xdc = null;\n  }\n\n}\n\nclass Pdf extends _xfa_object.XFAObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"pdf\", true);\n    this.name = attributes.name || \"\";\n    this.adobeExtensionLevel = null;\n    this.batchOutput = null;\n    this.compression = null;\n    this.creator = null;\n    this.encryption = null;\n    this.fontInfo = null;\n    this.interactive = null;\n    this.linearized = null;\n    this.openAction = null;\n    this.pdfa = null;\n    this.producer = null;\n    this.renderPolicy = null;\n    this.scriptModel = null;\n    this.silentPrint = null;\n    this.submitFormat = null;\n    this.tagged = null;\n    this.version = null;\n    this.viewerPreferences = null;\n    this.xdc = null;\n  }\n\n}\n\nclass Pdfa extends _xfa_object.XFAObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"pdfa\", true);\n    this.amd = null;\n    this.conformance = null;\n    this.includeXDPContent = null;\n    this.part = null;\n  }\n\n}\n\nclass Permissions extends _xfa_object.XFAObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"permissions\", true);\n    this.accessibleContent = null;\n    this.change = null;\n    this.contentCopy = null;\n    this.documentAssembly = null;\n    this.formFieldFilling = null;\n    this.modifyAnnots = null;\n    this.plaintextMetadata = null;\n    this.print = null;\n    this.printHighQuality = null;\n  }\n\n}\n\nclass PickTrayByPDFSize extends _xfa_object.Option01 {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"pickTrayByPDFSize\");\n  }\n\n}\n\nclass Picture extends _xfa_object.StringObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"picture\");\n  }\n\n}\n\nclass PlaintextMetadata extends _xfa_object.Option01 {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"plaintextMetadata\");\n  }\n\n}\n\nclass Presence extends _xfa_object.OptionObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"presence\", [\"preserve\", \"dissolve\", \"dissolveStructure\", \"ignore\", \"remove\"]);\n  }\n\n}\n\nclass Present extends _xfa_object.XFAObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"present\", true);\n    this.behaviorOverride = null;\n    this.cache = null;\n    this.common = null;\n    this.copies = null;\n    this.destination = null;\n    this.incrementalMerge = null;\n    this.layout = null;\n    this.output = null;\n    this.overprint = null;\n    this.pagination = null;\n    this.paginationOverride = null;\n    this.script = null;\n    this.validate = null;\n    this.xdp = null;\n    this.driver = new _xfa_object.XFAObjectArray();\n    this.labelPrinter = new _xfa_object.XFAObjectArray();\n    this.pcl = new _xfa_object.XFAObjectArray();\n    this.pdf = new _xfa_object.XFAObjectArray();\n    this.ps = new _xfa_object.XFAObjectArray();\n    this.submitUrl = new _xfa_object.XFAObjectArray();\n    this.webClient = new _xfa_object.XFAObjectArray();\n    this.zpl = new _xfa_object.XFAObjectArray();\n  }\n\n}\n\nclass Print extends _xfa_object.Option01 {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"print\");\n  }\n\n}\n\nclass PrintHighQuality extends _xfa_object.Option01 {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"printHighQuality\");\n  }\n\n}\n\nclass PrintScaling extends _xfa_object.OptionObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"printScaling\", [\"appdefault\", \"noScaling\"]);\n  }\n\n}\n\nclass PrinterName extends _xfa_object.StringObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"printerName\");\n  }\n\n}\n\nclass Producer extends _xfa_object.StringObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"producer\");\n  }\n\n}\n\nclass Ps extends _xfa_object.XFAObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"ps\", true);\n    this.name = attributes.name || \"\";\n    this.batchOutput = null;\n    this.fontInfo = null;\n    this.jog = null;\n    this.mediumInfo = null;\n    this.outputBin = null;\n    this.staple = null;\n    this.xdc = null;\n  }\n\n}\n\nclass Range extends _xfa_object.ContentObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"range\");\n  }\n\n  [_xfa_object.$finalize]() {\n    this[_xfa_object.$content] = this[_xfa_object.$content].trim().split(/\\s*,\\s*/, 2).map(range => range.split(\"-\").map(x => parseInt(x.trim(), 10))).filter(range => range.every(x => !isNaN(x))).map(range => {\n      if (range.length === 1) {\n        range.push(range[0]);\n      }\n\n      return range;\n    });\n  }\n\n}\n\nclass Record extends _xfa_object.ContentObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"record\");\n  }\n\n  [_xfa_object.$finalize]() {\n    this[_xfa_object.$content] = this[_xfa_object.$content].trim();\n    const n = parseInt(this[_xfa_object.$content], 10);\n\n    if (!isNaN(n) && n >= 0) {\n      this[_xfa_object.$content] = n;\n    }\n  }\n\n}\n\nclass Relevant extends _xfa_object.ContentObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"relevant\");\n  }\n\n  [_xfa_object.$finalize]() {\n    this[_xfa_object.$content] = this[_xfa_object.$content].trim().split(/\\s+/);\n  }\n\n}\n\nclass Rename extends _xfa_object.ContentObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"rename\");\n  }\n\n  [_xfa_object.$finalize]() {\n    this[_xfa_object.$content] = this[_xfa_object.$content].trim();\n\n    if (this[_xfa_object.$content].toLowerCase().startsWith(\"xml\") || this[_xfa_object.$content].match(new RegExp(\"[\\\\p{L}_][\\\\p{L}\\\\d._\\\\p{M}-]*\", \"u\"))) {\n      (0, _util.warn)(\"XFA - Rename: invalid XFA name\");\n    }\n  }\n\n}\n\nclass RenderPolicy extends _xfa_object.OptionObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"renderPolicy\", [\"server\", \"client\"]);\n  }\n\n}\n\nclass RunScripts extends _xfa_object.OptionObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"runScripts\", [\"both\", \"client\", \"none\", \"server\"]);\n  }\n\n}\n\nclass Script extends _xfa_object.XFAObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"script\", true);\n    this.currentPage = null;\n    this.exclude = null;\n    this.runScripts = null;\n  }\n\n}\n\nclass ScriptModel extends _xfa_object.OptionObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"scriptModel\", [\"XFA\", \"none\"]);\n  }\n\n}\n\nclass Severity extends _xfa_object.OptionObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"severity\", [\"ignore\", \"error\", \"information\", \"trace\", \"warning\"]);\n  }\n\n}\n\nclass SilentPrint extends _xfa_object.XFAObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"silentPrint\", true);\n    this.addSilentPrint = null;\n    this.printerName = null;\n  }\n\n}\n\nclass Staple extends _xfa_object.XFAObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"staple\");\n    this.mode = (0, _utils.getStringOption)(attributes.mode, [\"usePrinterSetting\", \"on\", \"off\"]);\n  }\n\n}\n\nclass StartNode extends _xfa_object.StringObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"startNode\");\n  }\n\n}\n\nclass StartPage extends _xfa_object.IntegerObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"startPage\", 0, n => true);\n  }\n\n}\n\nclass SubmitFormat extends _xfa_object.OptionObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"submitFormat\", [\"html\", \"delegate\", \"fdf\", \"xml\", \"pdf\"]);\n  }\n\n}\n\nclass SubmitUrl extends _xfa_object.StringObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"submitUrl\");\n  }\n\n}\n\nclass SubsetBelow extends _xfa_object.IntegerObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"subsetBelow\", 100, n => n >= 0 && n <= 100);\n  }\n\n}\n\nclass SuppressBanner extends _xfa_object.Option01 {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"suppressBanner\");\n  }\n\n}\n\nclass Tagged extends _xfa_object.Option01 {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"tagged\");\n  }\n\n}\n\nclass Template extends _xfa_object.XFAObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"template\", true);\n    this.base = null;\n    this.relevant = null;\n    this.startPage = null;\n    this.uri = null;\n    this.xsl = null;\n  }\n\n}\n\nclass Threshold extends _xfa_object.OptionObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"threshold\", [\"trace\", \"error\", \"information\", \"warning\"]);\n  }\n\n}\n\nclass To extends _xfa_object.OptionObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"to\", [\"null\", \"memory\", \"stderr\", \"stdout\", \"system\", \"uri\"]);\n  }\n\n}\n\nclass TemplateCache extends _xfa_object.XFAObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"templateCache\");\n    this.maxEntries = (0, _utils.getInteger)({\n      data: attributes.maxEntries,\n      defaultValue: 5,\n      validate: n => n >= 0\n    });\n  }\n\n}\n\nclass Trace extends _xfa_object.XFAObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"trace\", true);\n    this.area = new _xfa_object.XFAObjectArray();\n  }\n\n}\n\nclass Transform extends _xfa_object.XFAObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"transform\", true);\n    this.groupParent = null;\n    this.ifEmpty = null;\n    this.nameAttr = null;\n    this.picture = null;\n    this.presence = null;\n    this.rename = null;\n    this.whitespace = null;\n  }\n\n}\n\nclass Type extends _xfa_object.OptionObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"type\", [\"none\", \"ascii85\", \"asciiHex\", \"ccittfax\", \"flate\", \"lzw\", \"runLength\", \"native\", \"xdp\", \"mergedXDP\"]);\n  }\n\n}\n\nclass Uri extends _xfa_object.StringObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"uri\");\n  }\n\n}\n\nclass Validate extends _xfa_object.OptionObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"validate\", [\"preSubmit\", \"prePrint\", \"preExecute\", \"preSave\"]);\n  }\n\n}\n\nclass ValidateApprovalSignatures extends _xfa_object.ContentObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"validateApprovalSignatures\");\n  }\n\n  [_xfa_object.$finalize]() {\n    this[_xfa_object.$content] = this[_xfa_object.$content].trim().split(/\\s+/).filter(x => [\"docReady\", \"postSign\"].includes(x));\n  }\n\n}\n\nclass ValidationMessaging extends _xfa_object.OptionObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"validationMessaging\", [\"allMessagesIndividually\", \"allMessagesTogether\", \"firstMessageOnly\", \"noMessages\"]);\n  }\n\n}\n\nclass Version extends _xfa_object.OptionObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"version\", [\"1.7\", \"1.6\", \"1.5\", \"1.4\", \"1.3\", \"1.2\"]);\n  }\n\n}\n\nclass VersionControl extends _xfa_object.XFAObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"VersionControl\");\n    this.outputBelow = (0, _utils.getStringOption)(attributes.outputBelow, [\"warn\", \"error\", \"update\"]);\n    this.sourceAbove = (0, _utils.getStringOption)(attributes.sourceAbove, [\"warn\", \"error\"]);\n    this.sourceBelow = (0, _utils.getStringOption)(attributes.sourceBelow, [\"update\", \"maintain\"]);\n  }\n\n}\n\nclass ViewerPreferences extends _xfa_object.XFAObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"viewerPreferences\", true);\n    this.ADBE_JSConsole = null;\n    this.ADBE_JSDebugger = null;\n    this.addViewerPreferences = null;\n    this.duplexOption = null;\n    this.enforce = null;\n    this.numberOfCopies = null;\n    this.pageRange = null;\n    this.pickTrayByPDFSize = null;\n    this.printScaling = null;\n  }\n\n}\n\nclass WebClient extends _xfa_object.XFAObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"webClient\", true);\n    this.name = attributes.name ? attributes.name.trim() : \"\";\n    this.fontInfo = null;\n    this.xdc = null;\n  }\n\n}\n\nclass Whitespace extends _xfa_object.OptionObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"whitespace\", [\"preserve\", \"ltrim\", \"normalize\", \"rtrim\", \"trim\"]);\n  }\n\n}\n\nclass Window extends _xfa_object.ContentObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"window\");\n  }\n\n  [_xfa_object.$finalize]() {\n    const pair = this[_xfa_object.$content].trim().split(/\\s*,\\s*/, 2).map(x => parseInt(x, 10));\n\n    if (pair.some(x => isNaN(x))) {\n      this[_xfa_object.$content] = [0, 0];\n      return;\n    }\n\n    if (pair.length === 1) {\n      pair.push(pair[0]);\n    }\n\n    this[_xfa_object.$content] = pair;\n  }\n\n}\n\nclass Xdc extends _xfa_object.XFAObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"xdc\", true);\n    this.uri = new _xfa_object.XFAObjectArray();\n    this.xsl = new _xfa_object.XFAObjectArray();\n  }\n\n}\n\nclass Xdp extends _xfa_object.XFAObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"xdp\", true);\n    this.packets = null;\n  }\n\n}\n\nclass Xsl extends _xfa_object.XFAObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"xsl\", true);\n    this.debug = null;\n    this.uri = null;\n  }\n\n}\n\nclass Zpl extends _xfa_object.XFAObject {\n  constructor(attributes) {\n    super(CONFIG_NS_ID, \"zpl\", true);\n    this.name = attributes.name ? attributes.name.trim() : \"\";\n    this.batchOutput = null;\n    this.flipLabel = null;\n    this.fontInfo = null;\n    this.xdc = null;\n  }\n\n}\n\nclass ConfigNamespace {\n  static [_namespaces.$buildXFAObject](name, attributes) {\n    if (ConfigNamespace.hasOwnProperty(name)) {\n      return ConfigNamespace[name](attributes);\n    }\n\n    return undefined;\n  }\n\n  static acrobat(attrs) {\n    return new Acrobat(attrs);\n  }\n\n  static acrobat7(attrs) {\n    return new Acrobat7(attrs);\n  }\n\n  static ADBE_JSConsole(attrs) {\n    return new ADBE_JSConsole(attrs);\n  }\n\n  static ADBE_JSDebugger(attrs) {\n    return new ADBE_JSDebugger(attrs);\n  }\n\n  static addSilentPrint(attrs) {\n    return new AddSilentPrint(attrs);\n  }\n\n  static addViewerPreferences(attrs) {\n    return new AddViewerPreferences(attrs);\n  }\n\n  static adjustData(attrs) {\n    return new AdjustData(attrs);\n  }\n\n  static adobeExtensionLevel(attrs) {\n    return new AdobeExtensionLevel(attrs);\n  }\n\n  static agent(attrs) {\n    return new Agent(attrs);\n  }\n\n  static alwaysEmbed(attrs) {\n    return new AlwaysEmbed(attrs);\n  }\n\n  static amd(attrs) {\n    return new Amd(attrs);\n  }\n\n  static area(attrs) {\n    return new Area(attrs);\n  }\n\n  static attributes(attrs) {\n    return new Attributes(attrs);\n  }\n\n  static autoSave(attrs) {\n    return new AutoSave(attrs);\n  }\n\n  static base(attrs) {\n    return new Base(attrs);\n  }\n\n  static batchOutput(attrs) {\n    return new BatchOutput(attrs);\n  }\n\n  static behaviorOverride(attrs) {\n    return new BehaviorOverride(attrs);\n  }\n\n  static cache(attrs) {\n    return new Cache(attrs);\n  }\n\n  static change(attrs) {\n    return new Change(attrs);\n  }\n\n  static common(attrs) {\n    return new Common(attrs);\n  }\n\n  static compress(attrs) {\n    return new Compress(attrs);\n  }\n\n  static compressLogicalStructure(attrs) {\n    return new CompressLogicalStructure(attrs);\n  }\n\n  static compressObjectStream(attrs) {\n    return new CompressObjectStream(attrs);\n  }\n\n  static compression(attrs) {\n    return new Compression(attrs);\n  }\n\n  static config(attrs) {\n    return new Config(attrs);\n  }\n\n  static conformance(attrs) {\n    return new Conformance(attrs);\n  }\n\n  static contentCopy(attrs) {\n    return new ContentCopy(attrs);\n  }\n\n  static copies(attrs) {\n    return new Copies(attrs);\n  }\n\n  static creator(attrs) {\n    return new Creator(attrs);\n  }\n\n  static currentPage(attrs) {\n    return new CurrentPage(attrs);\n  }\n\n  static data(attrs) {\n    return new Data(attrs);\n  }\n\n  static debug(attrs) {\n    return new Debug(attrs);\n  }\n\n  static defaultTypeface(attrs) {\n    return new DefaultTypeface(attrs);\n  }\n\n  static destination(attrs) {\n    return new Destination(attrs);\n  }\n\n  static documentAssembly(attrs) {\n    return new DocumentAssembly(attrs);\n  }\n\n  static driver(attrs) {\n    return new Driver(attrs);\n  }\n\n  static duplexOption(attrs) {\n    return new DuplexOption(attrs);\n  }\n\n  static dynamicRender(attrs) {\n    return new DynamicRender(attrs);\n  }\n\n  static embed(attrs) {\n    return new Embed(attrs);\n  }\n\n  static encrypt(attrs) {\n    return new Encrypt(attrs);\n  }\n\n  static encryption(attrs) {\n    return new Encryption(attrs);\n  }\n\n  static encryptionLevel(attrs) {\n    return new EncryptionLevel(attrs);\n  }\n\n  static enforce(attrs) {\n    return new Enforce(attrs);\n  }\n\n  static equate(attrs) {\n    return new Equate(attrs);\n  }\n\n  static equateRange(attrs) {\n    return new EquateRange(attrs);\n  }\n\n  static exclude(attrs) {\n    return new Exclude(attrs);\n  }\n\n  static excludeNS(attrs) {\n    return new ExcludeNS(attrs);\n  }\n\n  static flipLabel(attrs) {\n    return new FlipLabel(attrs);\n  }\n\n  static fontInfo(attrs) {\n    return new FontInfo(attrs);\n  }\n\n  static formFieldFilling(attrs) {\n    return new FormFieldFilling(attrs);\n  }\n\n  static groupParent(attrs) {\n    return new GroupParent(attrs);\n  }\n\n  static ifEmpty(attrs) {\n    return new IfEmpty(attrs);\n  }\n\n  static includeXDPContent(attrs) {\n    return new IncludeXDPContent(attrs);\n  }\n\n  static incrementalLoad(attrs) {\n    return new IncrementalLoad(attrs);\n  }\n\n  static incrementalMerge(attrs) {\n    return new IncrementalMerge(attrs);\n  }\n\n  static interactive(attrs) {\n    return new Interactive(attrs);\n  }\n\n  static jog(attrs) {\n    return new Jog(attrs);\n  }\n\n  static labelPrinter(attrs) {\n    return new LabelPrinter(attrs);\n  }\n\n  static layout(attrs) {\n    return new Layout(attrs);\n  }\n\n  static level(attrs) {\n    return new Level(attrs);\n  }\n\n  static linearized(attrs) {\n    return new Linearized(attrs);\n  }\n\n  static locale(attrs) {\n    return new Locale(attrs);\n  }\n\n  static localeSet(attrs) {\n    return new LocaleSet(attrs);\n  }\n\n  static log(attrs) {\n    return new Log(attrs);\n  }\n\n  static map(attrs) {\n    return new MapElement(attrs);\n  }\n\n  static mediumInfo(attrs) {\n    return new MediumInfo(attrs);\n  }\n\n  static message(attrs) {\n    return new Message(attrs);\n  }\n\n  static messaging(attrs) {\n    return new Messaging(attrs);\n  }\n\n  static mode(attrs) {\n    return new Mode(attrs);\n  }\n\n  static modifyAnnots(attrs) {\n    return new ModifyAnnots(attrs);\n  }\n\n  static msgId(attrs) {\n    return new MsgId(attrs);\n  }\n\n  static nameAttr(attrs) {\n    return new NameAttr(attrs);\n  }\n\n  static neverEmbed(attrs) {\n    return new NeverEmbed(attrs);\n  }\n\n  static numberOfCopies(attrs) {\n    return new NumberOfCopies(attrs);\n  }\n\n  static openAction(attrs) {\n    return new OpenAction(attrs);\n  }\n\n  static output(attrs) {\n    return new Output(attrs);\n  }\n\n  static outputBin(attrs) {\n    return new OutputBin(attrs);\n  }\n\n  static outputXSL(attrs) {\n    return new OutputXSL(attrs);\n  }\n\n  static overprint(attrs) {\n    return new Overprint(attrs);\n  }\n\n  static packets(attrs) {\n    return new Packets(attrs);\n  }\n\n  static pageOffset(attrs) {\n    return new PageOffset(attrs);\n  }\n\n  static pageRange(attrs) {\n    return new PageRange(attrs);\n  }\n\n  static pagination(attrs) {\n    return new Pagination(attrs);\n  }\n\n  static paginationOverride(attrs) {\n    return new PaginationOverride(attrs);\n  }\n\n  static part(attrs) {\n    return new Part(attrs);\n  }\n\n  static pcl(attrs) {\n    return new Pcl(attrs);\n  }\n\n  static pdf(attrs) {\n    return new Pdf(attrs);\n  }\n\n  static pdfa(attrs) {\n    return new Pdfa(attrs);\n  }\n\n  static permissions(attrs) {\n    return new Permissions(attrs);\n  }\n\n  static pickTrayByPDFSize(attrs) {\n    return new PickTrayByPDFSize(attrs);\n  }\n\n  static picture(attrs) {\n    return new Picture(attrs);\n  }\n\n  static plaintextMetadata(attrs) {\n    return new PlaintextMetadata(attrs);\n  }\n\n  static presence(attrs) {\n    return new Presence(attrs);\n  }\n\n  static present(attrs) {\n    return new Present(attrs);\n  }\n\n  static print(attrs) {\n    return new Print(attrs);\n  }\n\n  static printHighQuality(attrs) {\n    return new PrintHighQuality(attrs);\n  }\n\n  static printScaling(attrs) {\n    return new PrintScaling(attrs);\n  }\n\n  static printerName(attrs) {\n    return new PrinterName(attrs);\n  }\n\n  static producer(attrs) {\n    return new Producer(attrs);\n  }\n\n  static ps(attrs) {\n    return new Ps(attrs);\n  }\n\n  static range(attrs) {\n    return new Range(attrs);\n  }\n\n  static record(attrs) {\n    return new Record(attrs);\n  }\n\n  static relevant(attrs) {\n    return new Relevant(attrs);\n  }\n\n  static rename(attrs) {\n    return new Rename(attrs);\n  }\n\n  static renderPolicy(attrs) {\n    return new RenderPolicy(attrs);\n  }\n\n  static runScripts(attrs) {\n    return new RunScripts(attrs);\n  }\n\n  static script(attrs) {\n    return new Script(attrs);\n  }\n\n  static scriptModel(attrs) {\n    return new ScriptModel(attrs);\n  }\n\n  static severity(attrs) {\n    return new Severity(attrs);\n  }\n\n  static silentPrint(attrs) {\n    return new SilentPrint(attrs);\n  }\n\n  static staple(attrs) {\n    return new Staple(attrs);\n  }\n\n  static startNode(attrs) {\n    return new StartNode(attrs);\n  }\n\n  static startPage(attrs) {\n    return new StartPage(attrs);\n  }\n\n  static submitFormat(attrs) {\n    return new SubmitFormat(attrs);\n  }\n\n  static submitUrl(attrs) {\n    return new SubmitUrl(attrs);\n  }\n\n  static subsetBelow(attrs) {\n    return new SubsetBelow(attrs);\n  }\n\n  static suppressBanner(attrs) {\n    return new SuppressBanner(attrs);\n  }\n\n  static tagged(attrs) {\n    return new Tagged(attrs);\n  }\n\n  static template(attrs) {\n    return new Template(attrs);\n  }\n\n  static templateCache(attrs) {\n    return new TemplateCache(attrs);\n  }\n\n  static threshold(attrs) {\n    return new Threshold(attrs);\n  }\n\n  static to(attrs) {\n    return new To(attrs);\n  }\n\n  static trace(attrs) {\n    return new Trace(attrs);\n  }\n\n  static transform(attrs) {\n    return new Transform(attrs);\n  }\n\n  static type(attrs) {\n    return new Type(attrs);\n  }\n\n  static uri(attrs) {\n    return new Uri(attrs);\n  }\n\n  static validate(attrs) {\n    return new Validate(attrs);\n  }\n\n  static validateApprovalSignatures(attrs) {\n    return new ValidateApprovalSignatures(attrs);\n  }\n\n  static validationMessaging(attrs) {\n    return new ValidationMessaging(attrs);\n  }\n\n  static version(attrs) {\n    return new Version(attrs);\n  }\n\n  static versionControl(attrs) {\n    return new VersionControl(attrs);\n  }\n\n  static viewerPreferences(attrs) {\n    return new ViewerPreferences(attrs);\n  }\n\n  static webClient(attrs) {\n    return new WebClient(attrs);\n  }\n\n  static whitespace(attrs) {\n    return new Whitespace(attrs);\n  }\n\n  static window(attrs) {\n    return new Window(attrs);\n  }\n\n  static xdc(attrs) {\n    return new Xdc(attrs);\n  }\n\n  static xdp(attrs) {\n    return new Xdp(attrs);\n  }\n\n  static xsl(attrs) {\n    return new Xsl(attrs);\n  }\n\n  static zpl(attrs) {\n    return new Zpl(attrs);\n  }\n\n}\n\nexports.ConfigNamespace = ConfigNamespace;\n\n/***/ }),\n/* 91 */\n/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {\n\n\n\nObject.defineProperty(exports, \"__esModule\", ({\n  value: true\n}));\nexports.ConnectionSetNamespace = void 0;\n\nvar _namespaces = __w_pdfjs_require__(78);\n\nvar _xfa_object = __w_pdfjs_require__(76);\n\nconst CONNECTION_SET_NS_ID = _namespaces.NamespaceIds.connectionSet.id;\n\nclass ConnectionSet extends _xfa_object.XFAObject {\n  constructor(attributes) {\n    super(CONNECTION_SET_NS_ID, \"connectionSet\", true);\n    this.wsdlConnection = new _xfa_object.XFAObjectArray();\n    this.xmlConnection = new _xfa_object.XFAObjectArray();\n    this.xsdConnection = new _xfa_object.XFAObjectArray();\n  }\n\n}\n\nclass EffectiveInputPolicy extends _xfa_object.XFAObject {\n  constructor(attributes) {\n    super(CONNECTION_SET_NS_ID, \"effectiveInputPolicy\");\n    this.id = attributes.id || \"\";\n    this.name = attributes.name || \"\";\n    this.use = attributes.use || \"\";\n    this.usehref = attributes.usehref || \"\";\n  }\n\n}\n\nclass EffectiveOutputPolicy extends _xfa_object.XFAObject {\n  constructor(attributes) {\n    super(CONNECTION_SET_NS_ID, \"effectiveOutputPolicy\");\n    this.id = attributes.id || \"\";\n    this.name = attributes.name || \"\";\n    this.use = attributes.use || \"\";\n    this.usehref = attributes.usehref || \"\";\n  }\n\n}\n\nclass Operation extends _xfa_object.StringObject {\n  constructor(attributes) {\n    super(CONNECTION_SET_NS_ID, \"operation\");\n    this.id = attributes.id || \"\";\n    this.input = attributes.input || \"\";\n    this.name = attributes.name || \"\";\n    this.output = attributes.output || \"\";\n    this.use = attributes.use || \"\";\n    this.usehref = attributes.usehref || \"\";\n  }\n\n}\n\nclass RootElement extends _xfa_object.StringObject {\n  constructor(attributes) {\n    super(CONNECTION_SET_NS_ID, \"rootElement\");\n    this.id = attributes.id || \"\";\n    this.name = attributes.name || \"\";\n    this.use = attributes.use || \"\";\n    this.usehref = attributes.usehref || \"\";\n  }\n\n}\n\nclass SoapAction extends _xfa_object.StringObject {\n  constructor(attributes) {\n    super(CONNECTION_SET_NS_ID, \"soapAction\");\n    this.id = attributes.id || \"\";\n    this.name = attributes.name || \"\";\n    this.use = attributes.use || \"\";\n    this.usehref = attributes.usehref || \"\";\n  }\n\n}\n\nclass SoapAddress extends _xfa_object.StringObject {\n  constructor(attributes) {\n    super(CONNECTION_SET_NS_ID, \"soapAddress\");\n    this.id = attributes.id || \"\";\n    this.name = attributes.name || \"\";\n    this.use = attributes.use || \"\";\n    this.usehref = attributes.usehref || \"\";\n  }\n\n}\n\nclass Uri extends _xfa_object.StringObject {\n  constructor(attributes) {\n    super(CONNECTION_SET_NS_ID, \"uri\");\n    this.id = attributes.id || \"\";\n    this.name = attributes.name || \"\";\n    this.use = attributes.use || \"\";\n    this.usehref = attributes.usehref || \"\";\n  }\n\n}\n\nclass WsdlAddress extends _xfa_object.StringObject {\n  constructor(attributes) {\n    super(CONNECTION_SET_NS_ID, \"wsdlAddress\");\n    this.id = attributes.id || \"\";\n    this.name = attributes.name || \"\";\n    this.use = attributes.use || \"\";\n    this.usehref = attributes.usehref || \"\";\n  }\n\n}\n\nclass WsdlConnection extends _xfa_object.XFAObject {\n  constructor(attributes) {\n    super(CONNECTION_SET_NS_ID, \"wsdlConnection\", true);\n    this.dataDescription = attributes.dataDescription || \"\";\n    this.name = attributes.name || \"\";\n    this.effectiveInputPolicy = null;\n    this.effectiveOutputPolicy = null;\n    this.operation = null;\n    this.soapAction = null;\n    this.soapAddress = null;\n    this.wsdlAddress = null;\n  }\n\n}\n\nclass XmlConnection extends _xfa_object.XFAObject {\n  constructor(attributes) {\n    super(CONNECTION_SET_NS_ID, \"xmlConnection\", true);\n    this.dataDescription = attributes.dataDescription || \"\";\n    this.name = attributes.name || \"\";\n    this.uri = null;\n  }\n\n}\n\nclass XsdConnection extends _xfa_object.XFAObject {\n  constructor(attributes) {\n    super(CONNECTION_SET_NS_ID, \"xsdConnection\", true);\n    this.dataDescription = attributes.dataDescription || \"\";\n    this.name = attributes.name || \"\";\n    this.rootElement = null;\n    this.uri = null;\n  }\n\n}\n\nclass ConnectionSetNamespace {\n  static [_namespaces.$buildXFAObject](name, attributes) {\n    if (ConnectionSetNamespace.hasOwnProperty(name)) {\n      return ConnectionSetNamespace[name](attributes);\n    }\n\n    return undefined;\n  }\n\n  static connectionSet(attrs) {\n    return new ConnectionSet(attrs);\n  }\n\n  static effectiveInputPolicy(attrs) {\n    return new EffectiveInputPolicy(attrs);\n  }\n\n  static effectiveOutputPolicy(attrs) {\n    return new EffectiveOutputPolicy(attrs);\n  }\n\n  static operation(attrs) {\n    return new Operation(attrs);\n  }\n\n  static rootElement(attrs) {\n    return new RootElement(attrs);\n  }\n\n  static soapAction(attrs) {\n    return new SoapAction(attrs);\n  }\n\n  static soapAddress(attrs) {\n    return new SoapAddress(attrs);\n  }\n\n  static uri(attrs) {\n    return new Uri(attrs);\n  }\n\n  static wsdlAddress(attrs) {\n    return new WsdlAddress(attrs);\n  }\n\n  static wsdlConnection(attrs) {\n    return new WsdlConnection(attrs);\n  }\n\n  static xmlConnection(attrs) {\n    return new XmlConnection(attrs);\n  }\n\n  static xsdConnection(attrs) {\n    return new XsdConnection(attrs);\n  }\n\n}\n\nexports.ConnectionSetNamespace = ConnectionSetNamespace;\n\n/***/ }),\n/* 92 */\n/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {\n\n\n\nObject.defineProperty(exports, \"__esModule\", ({\n  value: true\n}));\nexports.DatasetsNamespace = void 0;\n\nvar _xfa_object = __w_pdfjs_require__(76);\n\nvar _namespaces = __w_pdfjs_require__(78);\n\nconst DATASETS_NS_ID = _namespaces.NamespaceIds.datasets.id;\n\nclass Data extends _xfa_object.XmlObject {\n  constructor(attributes) {\n    super(DATASETS_NS_ID, \"data\", attributes);\n  }\n\n  [_xfa_object.$isNsAgnostic]() {\n    return true;\n  }\n\n}\n\nclass Datasets extends _xfa_object.XFAObject {\n  constructor(attributes) {\n    super(DATASETS_NS_ID, \"datasets\", true);\n    this.data = null;\n    this.Signature = null;\n  }\n\n  [_xfa_object.$onChild](child) {\n    const name = child[_xfa_object.$nodeName];\n\n    if (name === \"data\" && child[_xfa_object.$namespaceId] === DATASETS_NS_ID || name === \"Signature\" && child[_xfa_object.$namespaceId] === _namespaces.NamespaceIds.signature.id) {\n      this[name] = child;\n    }\n\n    this[_xfa_object.$appendChild](child);\n  }\n\n}\n\nclass DatasetsNamespace {\n  static [_namespaces.$buildXFAObject](name, attributes) {\n    if (DatasetsNamespace.hasOwnProperty(name)) {\n      return DatasetsNamespace[name](attributes);\n    }\n\n    return undefined;\n  }\n\n  static datasets(attributes) {\n    return new Datasets(attributes);\n  }\n\n  static data(attributes) {\n    return new Data(attributes);\n  }\n\n}\n\nexports.DatasetsNamespace = DatasetsNamespace;\n\n/***/ }),\n/* 93 */\n/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {\n\n\n\nObject.defineProperty(exports, \"__esModule\", ({\n  value: true\n}));\nexports.LocaleSetNamespace = void 0;\n\nvar _namespaces = __w_pdfjs_require__(78);\n\nvar _xfa_object = __w_pdfjs_require__(76);\n\nvar _utils = __w_pdfjs_require__(77);\n\nconst LOCALE_SET_NS_ID = _namespaces.NamespaceIds.localeSet.id;\n\nclass CalendarSymbols extends _xfa_object.XFAObject {\n  constructor(attributes) {\n    super(LOCALE_SET_NS_ID, \"calendarSymbols\", true);\n    this.name = \"gregorian\";\n    this.dayNames = new _xfa_object.XFAObjectArray(2);\n    this.eraNames = null;\n    this.meridiemNames = null;\n    this.monthNames = new _xfa_object.XFAObjectArray(2);\n  }\n\n}\n\nclass CurrencySymbol extends _xfa_object.StringObject {\n  constructor(attributes) {\n    super(LOCALE_SET_NS_ID, \"currencySymbol\");\n    this.name = (0, _utils.getStringOption)(attributes.name, [\"symbol\", \"isoname\", \"decimal\"]);\n  }\n\n}\n\nclass CurrencySymbols extends _xfa_object.XFAObject {\n  constructor(attributes) {\n    super(LOCALE_SET_NS_ID, \"currencySymbols\", true);\n    this.currencySymbol = new _xfa_object.XFAObjectArray(3);\n  }\n\n}\n\nclass DatePattern extends _xfa_object.StringObject {\n  constructor(attributes) {\n    super(LOCALE_SET_NS_ID, \"datePattern\");\n    this.name = (0, _utils.getStringOption)(attributes.name, [\"full\", \"long\", \"med\", \"short\"]);\n  }\n\n}\n\nclass DatePatterns extends _xfa_object.XFAObject {\n  constructor(attributes) {\n    super(LOCALE_SET_NS_ID, \"datePatterns\", true);\n    this.datePattern = new _xfa_object.XFAObjectArray(4);\n  }\n\n}\n\nclass DateTimeSymbols extends _xfa_object.ContentObject {\n  constructor(attributes) {\n    super(LOCALE_SET_NS_ID, \"dateTimeSymbols\");\n  }\n\n}\n\nclass Day extends _xfa_object.StringObject {\n  constructor(attributes) {\n    super(LOCALE_SET_NS_ID, \"day\");\n  }\n\n}\n\nclass DayNames extends _xfa_object.XFAObject {\n  constructor(attributes) {\n    super(LOCALE_SET_NS_ID, \"dayNames\", true);\n    this.abbr = (0, _utils.getInteger)({\n      data: attributes.abbr,\n      defaultValue: 0,\n      validate: x => x === 1\n    });\n    this.day = new _xfa_object.XFAObjectArray(7);\n  }\n\n}\n\nclass Era extends _xfa_object.StringObject {\n  constructor(attributes) {\n    super(LOCALE_SET_NS_ID, \"era\");\n  }\n\n}\n\nclass EraNames extends _xfa_object.XFAObject {\n  constructor(attributes) {\n    super(LOCALE_SET_NS_ID, \"eraNames\", true);\n    this.era = new _xfa_object.XFAObjectArray(2);\n  }\n\n}\n\nclass Locale extends _xfa_object.XFAObject {\n  constructor(attributes) {\n    super(LOCALE_SET_NS_ID, \"locale\", true);\n    this.desc = attributes.desc || \"\";\n    this.name = \"isoname\";\n    this.calendarSymbols = null;\n    this.currencySymbols = null;\n    this.datePatterns = null;\n    this.dateTimeSymbols = null;\n    this.numberPatterns = null;\n    this.numberSymbols = null;\n    this.timePatterns = null;\n    this.typeFaces = null;\n  }\n\n}\n\nclass LocaleSet extends _xfa_object.XFAObject {\n  constructor(attributes) {\n    super(LOCALE_SET_NS_ID, \"localeSet\", true);\n    this.locale = new _xfa_object.XFAObjectArray();\n  }\n\n}\n\nclass Meridiem extends _xfa_object.StringObject {\n  constructor(attributes) {\n    super(LOCALE_SET_NS_ID, \"meridiem\");\n  }\n\n}\n\nclass MeridiemNames extends _xfa_object.XFAObject {\n  constructor(attributes) {\n    super(LOCALE_SET_NS_ID, \"meridiemNames\", true);\n    this.meridiem = new _xfa_object.XFAObjectArray(2);\n  }\n\n}\n\nclass Month extends _xfa_object.StringObject {\n  constructor(attributes) {\n    super(LOCALE_SET_NS_ID, \"month\");\n  }\n\n}\n\nclass MonthNames extends _xfa_object.XFAObject {\n  constructor(attributes) {\n    super(LOCALE_SET_NS_ID, \"monthNames\", true);\n    this.abbr = (0, _utils.getInteger)({\n      data: attributes.abbr,\n      defaultValue: 0,\n      validate: x => x === 1\n    });\n    this.month = new _xfa_object.XFAObjectArray(12);\n  }\n\n}\n\nclass NumberPattern extends _xfa_object.StringObject {\n  constructor(attributes) {\n    super(LOCALE_SET_NS_ID, \"numberPattern\");\n    this.name = (0, _utils.getStringOption)(attributes.name, [\"full\", \"long\", \"med\", \"short\"]);\n  }\n\n}\n\nclass NumberPatterns extends _xfa_object.XFAObject {\n  constructor(attributes) {\n    super(LOCALE_SET_NS_ID, \"numberPatterns\", true);\n    this.numberPattern = new _xfa_object.XFAObjectArray(4);\n  }\n\n}\n\nclass NumberSymbol extends _xfa_object.StringObject {\n  constructor(attributes) {\n    super(LOCALE_SET_NS_ID, \"numberSymbol\");\n    this.name = (0, _utils.getStringOption)(attributes.name, [\"decimal\", \"grouping\", \"percent\", \"minus\", \"zero\"]);\n  }\n\n}\n\nclass NumberSymbols extends _xfa_object.XFAObject {\n  constructor(attributes) {\n    super(LOCALE_SET_NS_ID, \"numberSymbols\", true);\n    this.numberSymbol = new _xfa_object.XFAObjectArray(5);\n  }\n\n}\n\nclass TimePattern extends _xfa_object.StringObject {\n  constructor(attributes) {\n    super(LOCALE_SET_NS_ID, \"timePattern\");\n    this.name = (0, _utils.getStringOption)(attributes.name, [\"full\", \"long\", \"med\", \"short\"]);\n  }\n\n}\n\nclass TimePatterns extends _xfa_object.XFAObject {\n  constructor(attributes) {\n    super(LOCALE_SET_NS_ID, \"timePatterns\", true);\n    this.timePattern = new _xfa_object.XFAObjectArray(4);\n  }\n\n}\n\nclass TypeFace extends _xfa_object.XFAObject {\n  constructor(attributes) {\n    super(LOCALE_SET_NS_ID, \"typeFace\", true);\n    this.name = attributes.name | \"\";\n  }\n\n}\n\nclass TypeFaces extends _xfa_object.XFAObject {\n  constructor(attributes) {\n    super(LOCALE_SET_NS_ID, \"typeFaces\", true);\n    this.typeFace = new _xfa_object.XFAObjectArray();\n  }\n\n}\n\nclass LocaleSetNamespace {\n  static [_namespaces.$buildXFAObject](name, attributes) {\n    if (LocaleSetNamespace.hasOwnProperty(name)) {\n      return LocaleSetNamespace[name](attributes);\n    }\n\n    return undefined;\n  }\n\n  static calendarSymbols(attrs) {\n    return new CalendarSymbols(attrs);\n  }\n\n  static currencySymbol(attrs) {\n    return new CurrencySymbol(attrs);\n  }\n\n  static currencySymbols(attrs) {\n    return new CurrencySymbols(attrs);\n  }\n\n  static datePattern(attrs) {\n    return new DatePattern(attrs);\n  }\n\n  static datePatterns(attrs) {\n    return new DatePatterns(attrs);\n  }\n\n  static dateTimeSymbols(attrs) {\n    return new DateTimeSymbols(attrs);\n  }\n\n  static day(attrs) {\n    return new Day(attrs);\n  }\n\n  static dayNames(attrs) {\n    return new DayNames(attrs);\n  }\n\n  static era(attrs) {\n    return new Era(attrs);\n  }\n\n  static eraNames(attrs) {\n    return new EraNames(attrs);\n  }\n\n  static locale(attrs) {\n    return new Locale(attrs);\n  }\n\n  static localeSet(attrs) {\n    return new LocaleSet(attrs);\n  }\n\n  static meridiem(attrs) {\n    return new Meridiem(attrs);\n  }\n\n  static meridiemNames(attrs) {\n    return new MeridiemNames(attrs);\n  }\n\n  static month(attrs) {\n    return new Month(attrs);\n  }\n\n  static monthNames(attrs) {\n    return new MonthNames(attrs);\n  }\n\n  static numberPattern(attrs) {\n    return new NumberPattern(attrs);\n  }\n\n  static numberPatterns(attrs) {\n    return new NumberPatterns(attrs);\n  }\n\n  static numberSymbol(attrs) {\n    return new NumberSymbol(attrs);\n  }\n\n  static numberSymbols(attrs) {\n    return new NumberSymbols(attrs);\n  }\n\n  static timePattern(attrs) {\n    return new TimePattern(attrs);\n  }\n\n  static timePatterns(attrs) {\n    return new TimePatterns(attrs);\n  }\n\n  static typeFace(attrs) {\n    return new TypeFace(attrs);\n  }\n\n  static typeFaces(attrs) {\n    return new TypeFaces(attrs);\n  }\n\n}\n\nexports.LocaleSetNamespace = LocaleSetNamespace;\n\n/***/ }),\n/* 94 */\n/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {\n\n\n\nObject.defineProperty(exports, \"__esModule\", ({\n  value: true\n}));\nexports.SignatureNamespace = void 0;\n\nvar _namespaces = __w_pdfjs_require__(78);\n\nvar _xfa_object = __w_pdfjs_require__(76);\n\nconst SIGNATURE_NS_ID = _namespaces.NamespaceIds.signature.id;\n\nclass Signature extends _xfa_object.XFAObject {\n  constructor(attributes) {\n    super(SIGNATURE_NS_ID, \"signature\", true);\n  }\n\n}\n\nclass SignatureNamespace {\n  static [_namespaces.$buildXFAObject](name, attributes) {\n    if (SignatureNamespace.hasOwnProperty(name)) {\n      return SignatureNamespace[name](attributes);\n    }\n\n    return undefined;\n  }\n\n  static signature(attributes) {\n    return new Signature(attributes);\n  }\n\n}\n\nexports.SignatureNamespace = SignatureNamespace;\n\n/***/ }),\n/* 95 */\n/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {\n\n\n\nObject.defineProperty(exports, \"__esModule\", ({\n  value: true\n}));\nexports.StylesheetNamespace = void 0;\n\nvar _namespaces = __w_pdfjs_require__(78);\n\nvar _xfa_object = __w_pdfjs_require__(76);\n\nconst STYLESHEET_NS_ID = _namespaces.NamespaceIds.stylesheet.id;\n\nclass Stylesheet extends _xfa_object.XFAObject {\n  constructor(attributes) {\n    super(STYLESHEET_NS_ID, \"stylesheet\", true);\n  }\n\n}\n\nclass StylesheetNamespace {\n  static [_namespaces.$buildXFAObject](name, attributes) {\n    if (StylesheetNamespace.hasOwnProperty(name)) {\n      return StylesheetNamespace[name](attributes);\n    }\n\n    return undefined;\n  }\n\n  static stylesheet(attributes) {\n    return new Stylesheet(attributes);\n  }\n\n}\n\nexports.StylesheetNamespace = StylesheetNamespace;\n\n/***/ }),\n/* 96 */\n/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {\n\n\n\nObject.defineProperty(exports, \"__esModule\", ({\n  value: true\n}));\nexports.XdpNamespace = void 0;\n\nvar _namespaces = __w_pdfjs_require__(78);\n\nvar _xfa_object = __w_pdfjs_require__(76);\n\nconst XDP_NS_ID = _namespaces.NamespaceIds.xdp.id;\n\nclass Xdp extends _xfa_object.XFAObject {\n  constructor(attributes) {\n    super(XDP_NS_ID, \"xdp\", true);\n    this.uuid = attributes.uuid || \"\";\n    this.timeStamp = attributes.timeStamp || \"\";\n    this.config = null;\n    this.connectionSet = null;\n    this.datasets = null;\n    this.localeSet = null;\n    this.stylesheet = new _xfa_object.XFAObjectArray();\n    this.template = null;\n  }\n\n  [_xfa_object.$onChildCheck](child) {\n    const ns = _namespaces.NamespaceIds[child[_xfa_object.$nodeName]];\n    return ns && child[_xfa_object.$namespaceId] === ns.id;\n  }\n\n}\n\nclass XdpNamespace {\n  static [_namespaces.$buildXFAObject](name, attributes) {\n    if (XdpNamespace.hasOwnProperty(name)) {\n      return XdpNamespace[name](attributes);\n    }\n\n    return undefined;\n  }\n\n  static xdp(attributes) {\n    return new Xdp(attributes);\n  }\n\n}\n\nexports.XdpNamespace = XdpNamespace;\n\n/***/ }),\n/* 97 */\n/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {\n\n\n\nObject.defineProperty(exports, \"__esModule\", ({\n  value: true\n}));\nexports.XhtmlNamespace = void 0;\n\nvar _xfa_object = __w_pdfjs_require__(76);\n\nvar _namespaces = __w_pdfjs_require__(78);\n\nvar _html_utils = __w_pdfjs_require__(83);\n\nvar _utils = __w_pdfjs_require__(77);\n\nconst XHTML_NS_ID = _namespaces.NamespaceIds.xhtml.id;\nconst $richText = Symbol();\nconst VALID_STYLES = new Set([\"color\", \"font\", \"font-family\", \"font-size\", \"font-stretch\", \"font-style\", \"font-weight\", \"margin\", \"margin-bottom\", \"margin-left\", \"margin-right\", \"margin-top\", \"letter-spacing\", \"line-height\", \"orphans\", \"page-break-after\", \"page-break-before\", \"page-break-inside\", \"tab-interval\", \"tab-stop\", \"text-align\", \"text-decoration\", \"text-indent\", \"vertical-align\", \"widows\", \"kerning-mode\", \"xfa-font-horizontal-scale\", \"xfa-font-vertical-scale\", \"xfa-spacerun\", \"xfa-tab-stops\"]);\nconst StyleMapping = new Map([[\"page-break-after\", \"breakAfter\"], [\"page-break-before\", \"breakBefore\"], [\"page-break-inside\", \"breakInside\"], [\"kerning-mode\", value => value === \"none\" ? \"none\" : \"normal\"], [\"xfa-font-horizontal-scale\", value => `scaleX(${Math.max(0, Math.min(parseInt(value) / 100)).toFixed(2)})`], [\"xfa-font-vertical-scale\", value => `scaleY(${Math.max(0, Math.min(parseInt(value) / 100)).toFixed(2)})`], [\"xfa-spacerun\", \"\"], [\"xfa-tab-stops\", \"\"], [\"font-size\", (value, original) => {\n  value = original.fontSize = (0, _utils.getMeasurement)(value);\n  return (0, _html_utils.measureToString)(0.99 * value);\n}], [\"letter-spacing\", value => (0, _html_utils.measureToString)((0, _utils.getMeasurement)(value))], [\"line-height\", value => (0, _html_utils.measureToString)((0, _utils.getMeasurement)(value))], [\"margin\", value => (0, _html_utils.measureToString)((0, _utils.getMeasurement)(value))], [\"margin-bottom\", value => (0, _html_utils.measureToString)((0, _utils.getMeasurement)(value))], [\"margin-left\", value => (0, _html_utils.measureToString)((0, _utils.getMeasurement)(value))], [\"margin-right\", value => (0, _html_utils.measureToString)((0, _utils.getMeasurement)(value))], [\"margin-top\", value => (0, _html_utils.measureToString)((0, _utils.getMeasurement)(value))], [\"text-indent\", value => (0, _html_utils.measureToString)((0, _utils.getMeasurement)(value))], [\"font-family\", value => value], [\"vertical-align\", value => (0, _html_utils.measureToString)((0, _utils.getMeasurement)(value))]]);\nconst spacesRegExp = /\\s+/g;\nconst crlfRegExp = /[\\r\\n]+/g;\nconst crlfForRichTextRegExp = /\\r\\n?/g;\n\nfunction mapStyle(styleStr, node, richText) {\n  const style = Object.create(null);\n\n  if (!styleStr) {\n    return style;\n  }\n\n  const original = Object.create(null);\n\n  for (const [key, value] of styleStr.split(\";\").map(s => s.split(\":\", 2))) {\n    const mapping = StyleMapping.get(key);\n\n    if (mapping === \"\") {\n      continue;\n    }\n\n    let newValue = value;\n\n    if (mapping) {\n      if (typeof mapping === \"string\") {\n        newValue = mapping;\n      } else {\n        newValue = mapping(value, original);\n      }\n    }\n\n    if (key.endsWith(\"scale\")) {\n      if (style.transform) {\n        style.transform = `${style[key]} ${newValue}`;\n      } else {\n        style.transform = newValue;\n      }\n    } else {\n      style[key.replaceAll(/-([a-zA-Z])/g, (_, x) => x.toUpperCase())] = newValue;\n    }\n  }\n\n  if (style.fontFamily) {\n    (0, _html_utils.setFontFamily)({\n      typeface: style.fontFamily,\n      weight: style.fontWeight || \"normal\",\n      posture: style.fontStyle || \"normal\",\n      size: original.fontSize || 0\n    }, node, node[_xfa_object.$globalData].fontFinder, style);\n  }\n\n  if (richText && style.verticalAlign && style.verticalAlign !== \"0px\" && style.fontSize) {\n    const SUB_SUPER_SCRIPT_FACTOR = 0.583;\n    const VERTICAL_FACTOR = 0.333;\n    const fontSize = (0, _utils.getMeasurement)(style.fontSize);\n    style.fontSize = (0, _html_utils.measureToString)(fontSize * SUB_SUPER_SCRIPT_FACTOR);\n    style.verticalAlign = (0, _html_utils.measureToString)(Math.sign((0, _utils.getMeasurement)(style.verticalAlign)) * fontSize * VERTICAL_FACTOR);\n  }\n\n  (0, _html_utils.fixTextIndent)(style);\n  return style;\n}\n\nfunction checkStyle(node) {\n  if (!node.style) {\n    return \"\";\n  }\n\n  return node.style.trim().split(/\\s*;\\s*/).filter(s => !!s).map(s => s.split(/\\s*:\\s*/, 2)).filter(([key, value]) => {\n    if (key === \"font-family\") {\n      node[_xfa_object.$globalData].usedTypefaces.add(value);\n    }\n\n    return VALID_STYLES.has(key);\n  }).map(kv => kv.join(\":\")).join(\";\");\n}\n\nconst NoWhites = new Set([\"body\", \"html\"]);\n\nclass XhtmlObject extends _xfa_object.XmlObject {\n  constructor(attributes, name) {\n    super(XHTML_NS_ID, name);\n    this[$richText] = false;\n    this.style = attributes.style || \"\";\n  }\n\n  [_xfa_object.$clean](builder) {\n    super[_xfa_object.$clean](builder);\n\n    this.style = checkStyle(this);\n  }\n\n  [_xfa_object.$acceptWhitespace]() {\n    return !NoWhites.has(this[_xfa_object.$nodeName]);\n  }\n\n  [_xfa_object.$onText](str, richText = false) {\n    if (!richText) {\n      str = str.replace(crlfRegExp, \"\");\n\n      if (!this.style.includes(\"xfa-spacerun:yes\")) {\n        str = str.replace(spacesRegExp, \" \");\n      }\n    } else {\n      this[$richText] = true;\n    }\n\n    if (str) {\n      this[_xfa_object.$content] += str;\n    }\n  }\n\n  [_xfa_object.$pushGlyphs](measure, mustPop = true) {\n    const xfaFont = Object.create(null);\n    const margin = {\n      top: NaN,\n      bottom: NaN,\n      left: NaN,\n      right: NaN\n    };\n    let lineHeight = null;\n\n    for (const [key, value] of this.style.split(\";\").map(s => s.split(\":\", 2))) {\n      switch (key) {\n        case \"font-family\":\n          xfaFont.typeface = (0, _utils.stripQuotes)(value);\n          break;\n\n        case \"font-size\":\n          xfaFont.size = (0, _utils.getMeasurement)(value);\n          break;\n\n        case \"font-weight\":\n          xfaFont.weight = value;\n          break;\n\n        case \"font-style\":\n          xfaFont.posture = value;\n          break;\n\n        case \"letter-spacing\":\n          xfaFont.letterSpacing = (0, _utils.getMeasurement)(value);\n          break;\n\n        case \"margin\":\n          const values = value.split(/ \\t/).map(x => (0, _utils.getMeasurement)(x));\n\n          switch (values.length) {\n            case 1:\n              margin.top = margin.bottom = margin.left = margin.right = values[0];\n              break;\n\n            case 2:\n              margin.top = margin.bottom = values[0];\n              margin.left = margin.right = values[1];\n              break;\n\n            case 3:\n              margin.top = values[0];\n              margin.bottom = values[2];\n              margin.left = margin.right = values[1];\n              break;\n\n            case 4:\n              margin.top = values[0];\n              margin.left = values[1];\n              margin.bottom = values[2];\n              margin.right = values[3];\n              break;\n          }\n\n          break;\n\n        case \"margin-top\":\n          margin.top = (0, _utils.getMeasurement)(value);\n          break;\n\n        case \"margin-bottom\":\n          margin.bottom = (0, _utils.getMeasurement)(value);\n          break;\n\n        case \"margin-left\":\n          margin.left = (0, _utils.getMeasurement)(value);\n          break;\n\n        case \"margin-right\":\n          margin.right = (0, _utils.getMeasurement)(value);\n          break;\n\n        case \"line-height\":\n          lineHeight = (0, _utils.getMeasurement)(value);\n          break;\n      }\n    }\n\n    measure.pushData(xfaFont, margin, lineHeight);\n\n    if (this[_xfa_object.$content]) {\n      measure.addString(this[_xfa_object.$content]);\n    } else {\n      for (const child of this[_xfa_object.$getChildren]()) {\n        if (child[_xfa_object.$nodeName] === \"#text\") {\n          measure.addString(child[_xfa_object.$content]);\n          continue;\n        }\n\n        child[_xfa_object.$pushGlyphs](measure);\n      }\n    }\n\n    if (mustPop) {\n      measure.popFont();\n    }\n  }\n\n  [_xfa_object.$toHTML](availableSpace) {\n    const children = [];\n    this[_xfa_object.$extra] = {\n      children\n    };\n\n    this[_xfa_object.$childrenToHTML]({});\n\n    if (children.length === 0 && !this[_xfa_object.$content]) {\n      return _utils.HTMLResult.EMPTY;\n    }\n\n    let value;\n\n    if (this[$richText]) {\n      value = this[_xfa_object.$content] ? this[_xfa_object.$content].replace(crlfForRichTextRegExp, \"\\n\") : undefined;\n    } else {\n      value = this[_xfa_object.$content] || undefined;\n    }\n\n    return _utils.HTMLResult.success({\n      name: this[_xfa_object.$nodeName],\n      attributes: {\n        href: this.href,\n        style: mapStyle(this.style, this, this[$richText])\n      },\n      children,\n      value\n    });\n  }\n\n}\n\nclass A extends XhtmlObject {\n  constructor(attributes) {\n    super(attributes, \"a\");\n    this.href = (0, _html_utils.fixURL)(attributes.href) || \"\";\n  }\n\n}\n\nclass B extends XhtmlObject {\n  constructor(attributes) {\n    super(attributes, \"b\");\n  }\n\n  [_xfa_object.$pushGlyphs](measure) {\n    measure.pushFont({\n      weight: \"bold\"\n    });\n\n    super[_xfa_object.$pushGlyphs](measure);\n\n    measure.popFont();\n  }\n\n}\n\nclass Body extends XhtmlObject {\n  constructor(attributes) {\n    super(attributes, \"body\");\n  }\n\n  [_xfa_object.$toHTML](availableSpace) {\n    const res = super[_xfa_object.$toHTML](availableSpace);\n\n    const {\n      html\n    } = res;\n\n    if (!html) {\n      return _utils.HTMLResult.EMPTY;\n    }\n\n    html.name = \"div\";\n    html.attributes.class = [\"xfaRich\"];\n    return res;\n  }\n\n}\n\nclass Br extends XhtmlObject {\n  constructor(attributes) {\n    super(attributes, \"br\");\n  }\n\n  [_xfa_object.$text]() {\n    return \"\\n\";\n  }\n\n  [_xfa_object.$pushGlyphs](measure) {\n    measure.addString(\"\\n\");\n  }\n\n  [_xfa_object.$toHTML](availableSpace) {\n    return _utils.HTMLResult.success({\n      name: \"br\"\n    });\n  }\n\n}\n\nclass Html extends XhtmlObject {\n  constructor(attributes) {\n    super(attributes, \"html\");\n  }\n\n  [_xfa_object.$toHTML](availableSpace) {\n    const children = [];\n    this[_xfa_object.$extra] = {\n      children\n    };\n\n    this[_xfa_object.$childrenToHTML]({});\n\n    if (children.length === 0) {\n      return _utils.HTMLResult.success({\n        name: \"div\",\n        attributes: {\n          class: [\"xfaRich\"],\n          style: {}\n        },\n        value: this[_xfa_object.$content] || \"\"\n      });\n    }\n\n    if (children.length === 1) {\n      const child = children[0];\n\n      if (child.attributes && child.attributes.class.includes(\"xfaRich\")) {\n        return _utils.HTMLResult.success(child);\n      }\n    }\n\n    return _utils.HTMLResult.success({\n      name: \"div\",\n      attributes: {\n        class: [\"xfaRich\"],\n        style: {}\n      },\n      children\n    });\n  }\n\n}\n\nclass I extends XhtmlObject {\n  constructor(attributes) {\n    super(attributes, \"i\");\n  }\n\n  [_xfa_object.$pushGlyphs](measure) {\n    measure.pushFont({\n      posture: \"italic\"\n    });\n\n    super[_xfa_object.$pushGlyphs](measure);\n\n    measure.popFont();\n  }\n\n}\n\nclass Li extends XhtmlObject {\n  constructor(attributes) {\n    super(attributes, \"li\");\n  }\n\n}\n\nclass Ol extends XhtmlObject {\n  constructor(attributes) {\n    super(attributes, \"ol\");\n  }\n\n}\n\nclass P extends XhtmlObject {\n  constructor(attributes) {\n    super(attributes, \"p\");\n  }\n\n  [_xfa_object.$pushGlyphs](measure) {\n    super[_xfa_object.$pushGlyphs](measure, false);\n\n    measure.addString(\"\\n\");\n    measure.addPara();\n    measure.popFont();\n  }\n\n  [_xfa_object.$text]() {\n    const siblings = this[_xfa_object.$getParent]()[_xfa_object.$getChildren]();\n\n    if (siblings[siblings.length - 1] === this) {\n      return super[_xfa_object.$text]();\n    }\n\n    return super[_xfa_object.$text]() + \"\\n\";\n  }\n\n}\n\nclass Span extends XhtmlObject {\n  constructor(attributes) {\n    super(attributes, \"span\");\n  }\n\n}\n\nclass Sub extends XhtmlObject {\n  constructor(attributes) {\n    super(attributes, \"sub\");\n  }\n\n}\n\nclass Sup extends XhtmlObject {\n  constructor(attributes) {\n    super(attributes, \"sup\");\n  }\n\n}\n\nclass Ul extends XhtmlObject {\n  constructor(attributes) {\n    super(attributes, \"ul\");\n  }\n\n}\n\nclass XhtmlNamespace {\n  static [_namespaces.$buildXFAObject](name, attributes) {\n    if (XhtmlNamespace.hasOwnProperty(name)) {\n      return XhtmlNamespace[name](attributes);\n    }\n\n    return undefined;\n  }\n\n  static a(attributes) {\n    return new A(attributes);\n  }\n\n  static b(attributes) {\n    return new B(attributes);\n  }\n\n  static body(attributes) {\n    return new Body(attributes);\n  }\n\n  static br(attributes) {\n    return new Br(attributes);\n  }\n\n  static html(attributes) {\n    return new Html(attributes);\n  }\n\n  static i(attributes) {\n    return new I(attributes);\n  }\n\n  static li(attributes) {\n    return new Li(attributes);\n  }\n\n  static ol(attributes) {\n    return new Ol(attributes);\n  }\n\n  static p(attributes) {\n    return new P(attributes);\n  }\n\n  static span(attributes) {\n    return new Span(attributes);\n  }\n\n  static sub(attributes) {\n    return new Sub(attributes);\n  }\n\n  static sup(attributes) {\n    return new Sup(attributes);\n  }\n\n  static ul(attributes) {\n    return new Ul(attributes);\n  }\n\n}\n\nexports.XhtmlNamespace = XhtmlNamespace;\n\n/***/ }),\n/* 98 */\n/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {\n\n\n\nObject.defineProperty(exports, \"__esModule\", ({\n  value: true\n}));\nexports.UnknownNamespace = void 0;\n\nvar _namespaces = __w_pdfjs_require__(78);\n\nvar _xfa_object = __w_pdfjs_require__(76);\n\nclass UnknownNamespace {\n  constructor(nsId) {\n    this.namespaceId = nsId;\n  }\n\n  [_namespaces.$buildXFAObject](name, attributes) {\n    return new _xfa_object.XmlObject(this.namespaceId, name, attributes);\n  }\n\n}\n\nexports.UnknownNamespace = UnknownNamespace;\n\n/***/ }),\n/* 99 */\n/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {\n\n\n\nObject.defineProperty(exports, \"__esModule\", ({\n  value: true\n}));\nexports.XRef = void 0;\n\nvar _util = __w_pdfjs_require__(2);\n\nvar _primitives = __w_pdfjs_require__(5);\n\nvar _core_utils = __w_pdfjs_require__(8);\n\nvar _parser = __w_pdfjs_require__(27);\n\nvar _base_stream = __w_pdfjs_require__(9);\n\nvar _crypto = __w_pdfjs_require__(73);\n\nclass XRef {\n  constructor(stream, pdfManager) {\n    this.stream = stream;\n    this.pdfManager = pdfManager;\n    this.entries = [];\n    this.xrefstms = Object.create(null);\n    this._cacheMap = new Map();\n    this._pendingRefs = new _primitives.RefSet();\n    this.stats = new _core_utils.DocStats(pdfManager.msgHandler);\n    this._newRefNum = null;\n  }\n\n  getNewRef() {\n    if (this._newRefNum === null) {\n      this._newRefNum = this.entries.length;\n    }\n\n    return _primitives.Ref.get(this._newRefNum++, 0);\n  }\n\n  resetNewRef() {\n    this._newRefNum = null;\n  }\n\n  setStartXRef(startXRef) {\n    this.startXRefQueue = [startXRef];\n  }\n\n  parse(recoveryMode = false) {\n    let trailerDict;\n\n    if (!recoveryMode) {\n      trailerDict = this.readXRef();\n    } else {\n      (0, _util.warn)(\"Indexing all PDF objects\");\n      trailerDict = this.indexObjects();\n    }\n\n    trailerDict.assignXref(this);\n    this.trailer = trailerDict;\n    let encrypt;\n\n    try {\n      encrypt = trailerDict.get(\"Encrypt\");\n    } catch (ex) {\n      if (ex instanceof _core_utils.MissingDataException) {\n        throw ex;\n      }\n\n      (0, _util.warn)(`XRef.parse - Invalid \"Encrypt\" reference: \"${ex}\".`);\n    }\n\n    if (encrypt instanceof _primitives.Dict) {\n      const ids = trailerDict.get(\"ID\");\n      const fileId = ids && ids.length ? ids[0] : \"\";\n      encrypt.suppressEncryption = true;\n      this.encrypt = new _crypto.CipherTransformFactory(encrypt, fileId, this.pdfManager.password);\n    }\n\n    let root;\n\n    try {\n      root = trailerDict.get(\"Root\");\n    } catch (ex) {\n      if (ex instanceof _core_utils.MissingDataException) {\n        throw ex;\n      }\n\n      (0, _util.warn)(`XRef.parse - Invalid \"Root\" reference: \"${ex}\".`);\n    }\n\n    if (root instanceof _primitives.Dict) {\n      try {\n        const pages = root.get(\"Pages\");\n\n        if (pages instanceof _primitives.Dict) {\n          this.root = root;\n          return;\n        }\n      } catch (ex) {\n        if (ex instanceof _core_utils.MissingDataException) {\n          throw ex;\n        }\n\n        (0, _util.warn)(`XRef.parse - Invalid \"Pages\" reference: \"${ex}\".`);\n      }\n    }\n\n    if (!recoveryMode) {\n      throw new _core_utils.XRefParseException();\n    }\n\n    throw new _util.InvalidPDFException(\"Invalid Root reference.\");\n  }\n\n  processXRefTable(parser) {\n    if (!(\"tableState\" in this)) {\n      this.tableState = {\n        entryNum: 0,\n        streamPos: parser.lexer.stream.pos,\n        parserBuf1: parser.buf1,\n        parserBuf2: parser.buf2\n      };\n    }\n\n    const obj = this.readXRefTable(parser);\n\n    if (!(0, _primitives.isCmd)(obj, \"trailer\")) {\n      throw new _util.FormatError(\"Invalid XRef table: could not find trailer dictionary\");\n    }\n\n    let dict = parser.getObj();\n\n    if (!(dict instanceof _primitives.Dict) && dict.dict) {\n      dict = dict.dict;\n    }\n\n    if (!(dict instanceof _primitives.Dict)) {\n      throw new _util.FormatError(\"Invalid XRef table: could not parse trailer dictionary\");\n    }\n\n    delete this.tableState;\n    return dict;\n  }\n\n  readXRefTable(parser) {\n    const stream = parser.lexer.stream;\n    const tableState = this.tableState;\n    stream.pos = tableState.streamPos;\n    parser.buf1 = tableState.parserBuf1;\n    parser.buf2 = tableState.parserBuf2;\n    let obj;\n\n    while (true) {\n      if (!(\"firstEntryNum\" in tableState) || !(\"entryCount\" in tableState)) {\n        if ((0, _primitives.isCmd)(obj = parser.getObj(), \"trailer\")) {\n          break;\n        }\n\n        tableState.firstEntryNum = obj;\n        tableState.entryCount = parser.getObj();\n      }\n\n      let first = tableState.firstEntryNum;\n      const count = tableState.entryCount;\n\n      if (!Number.isInteger(first) || !Number.isInteger(count)) {\n        throw new _util.FormatError(\"Invalid XRef table: wrong types in subsection header\");\n      }\n\n      for (let i = tableState.entryNum; i < count; i++) {\n        tableState.streamPos = stream.pos;\n        tableState.entryNum = i;\n        tableState.parserBuf1 = parser.buf1;\n        tableState.parserBuf2 = parser.buf2;\n        const entry = {};\n        entry.offset = parser.getObj();\n        entry.gen = parser.getObj();\n        const type = parser.getObj();\n\n        if (type instanceof _primitives.Cmd) {\n          switch (type.cmd) {\n            case \"f\":\n              entry.free = true;\n              break;\n\n            case \"n\":\n              entry.uncompressed = true;\n              break;\n          }\n        }\n\n        if (!Number.isInteger(entry.offset) || !Number.isInteger(entry.gen) || !(entry.free || entry.uncompressed)) {\n          throw new _util.FormatError(`Invalid entry in XRef subsection: ${first}, ${count}`);\n        }\n\n        if (i === 0 && entry.free && first === 1) {\n          first = 0;\n        }\n\n        if (!this.entries[i + first]) {\n          this.entries[i + first] = entry;\n        }\n      }\n\n      tableState.entryNum = 0;\n      tableState.streamPos = stream.pos;\n      tableState.parserBuf1 = parser.buf1;\n      tableState.parserBuf2 = parser.buf2;\n      delete tableState.firstEntryNum;\n      delete tableState.entryCount;\n    }\n\n    if (this.entries[0] && !this.entries[0].free) {\n      throw new _util.FormatError(\"Invalid XRef table: unexpected first object\");\n    }\n\n    return obj;\n  }\n\n  processXRefStream(stream) {\n    if (!(\"streamState\" in this)) {\n      const streamParameters = stream.dict;\n      const byteWidths = streamParameters.get(\"W\");\n      let range = streamParameters.get(\"Index\");\n\n      if (!range) {\n        range = [0, streamParameters.get(\"Size\")];\n      }\n\n      this.streamState = {\n        entryRanges: range,\n        byteWidths,\n        entryNum: 0,\n        streamPos: stream.pos\n      };\n    }\n\n    this.readXRefStream(stream);\n    delete this.streamState;\n    return stream.dict;\n  }\n\n  readXRefStream(stream) {\n    const streamState = this.streamState;\n    stream.pos = streamState.streamPos;\n    const [typeFieldWidth, offsetFieldWidth, generationFieldWidth] = streamState.byteWidths;\n    const entryRanges = streamState.entryRanges;\n\n    while (entryRanges.length > 0) {\n      const [first, n] = entryRanges;\n\n      if (!Number.isInteger(first) || !Number.isInteger(n)) {\n        throw new _util.FormatError(`Invalid XRef range fields: ${first}, ${n}`);\n      }\n\n      if (!Number.isInteger(typeFieldWidth) || !Number.isInteger(offsetFieldWidth) || !Number.isInteger(generationFieldWidth)) {\n        throw new _util.FormatError(`Invalid XRef entry fields length: ${first}, ${n}`);\n      }\n\n      for (let i = streamState.entryNum; i < n; ++i) {\n        streamState.entryNum = i;\n        streamState.streamPos = stream.pos;\n        let type = 0,\n            offset = 0,\n            generation = 0;\n\n        for (let j = 0; j < typeFieldWidth; ++j) {\n          const typeByte = stream.getByte();\n\n          if (typeByte === -1) {\n            throw new _util.FormatError(\"Invalid XRef byteWidths 'type'.\");\n          }\n\n          type = type << 8 | typeByte;\n        }\n\n        if (typeFieldWidth === 0) {\n          type = 1;\n        }\n\n        for (let j = 0; j < offsetFieldWidth; ++j) {\n          const offsetByte = stream.getByte();\n\n          if (offsetByte === -1) {\n            throw new _util.FormatError(\"Invalid XRef byteWidths 'offset'.\");\n          }\n\n          offset = offset << 8 | offsetByte;\n        }\n\n        for (let j = 0; j < generationFieldWidth; ++j) {\n          const generationByte = stream.getByte();\n\n          if (generationByte === -1) {\n            throw new _util.FormatError(\"Invalid XRef byteWidths 'generation'.\");\n          }\n\n          generation = generation << 8 | generationByte;\n        }\n\n        const entry = {};\n        entry.offset = offset;\n        entry.gen = generation;\n\n        switch (type) {\n          case 0:\n            entry.free = true;\n            break;\n\n          case 1:\n            entry.uncompressed = true;\n            break;\n\n          case 2:\n            break;\n\n          default:\n            throw new _util.FormatError(`Invalid XRef entry type: ${type}`);\n        }\n\n        if (!this.entries[first + i]) {\n          this.entries[first + i] = entry;\n        }\n      }\n\n      streamState.entryNum = 0;\n      streamState.streamPos = stream.pos;\n      entryRanges.splice(0, 2);\n    }\n  }\n\n  indexObjects() {\n    const TAB = 0x9,\n          LF = 0xa,\n          CR = 0xd,\n          SPACE = 0x20;\n    const PERCENT = 0x25,\n          LT = 0x3c;\n\n    function readToken(data, offset) {\n      let token = \"\",\n          ch = data[offset];\n\n      while (ch !== LF && ch !== CR && ch !== LT) {\n        if (++offset >= data.length) {\n          break;\n        }\n\n        token += String.fromCharCode(ch);\n        ch = data[offset];\n      }\n\n      return token;\n    }\n\n    function skipUntil(data, offset, what) {\n      const length = what.length,\n            dataLength = data.length;\n      let skipped = 0;\n\n      while (offset < dataLength) {\n        let i = 0;\n\n        while (i < length && data[offset + i] === what[i]) {\n          ++i;\n        }\n\n        if (i >= length) {\n          break;\n        }\n\n        offset++;\n        skipped++;\n      }\n\n      return skipped;\n    }\n\n    const objRegExp = /^(\\d+)\\s+(\\d+)\\s+obj\\b/;\n    const endobjRegExp = /\\bendobj[\\b\\s]$/;\n    const nestedObjRegExp = /\\s+(\\d+\\s+\\d+\\s+obj[\\b\\s<])$/;\n    const CHECK_CONTENT_LENGTH = 25;\n    const trailerBytes = new Uint8Array([116, 114, 97, 105, 108, 101, 114]);\n    const startxrefBytes = new Uint8Array([115, 116, 97, 114, 116, 120, 114, 101, 102]);\n    const objBytes = new Uint8Array([111, 98, 106]);\n    const xrefBytes = new Uint8Array([47, 88, 82, 101, 102]);\n    this.entries.length = 0;\n\n    this._cacheMap.clear();\n\n    const stream = this.stream;\n    stream.pos = 0;\n    const buffer = stream.getBytes(),\n          length = buffer.length;\n    let position = stream.start;\n    const trailers = [],\n          xrefStms = [];\n\n    while (position < length) {\n      let ch = buffer[position];\n\n      if (ch === TAB || ch === LF || ch === CR || ch === SPACE) {\n        ++position;\n        continue;\n      }\n\n      if (ch === PERCENT) {\n        do {\n          ++position;\n\n          if (position >= length) {\n            break;\n          }\n\n          ch = buffer[position];\n        } while (ch !== LF && ch !== CR);\n\n        continue;\n      }\n\n      const token = readToken(buffer, position);\n      let m;\n\n      if (token.startsWith(\"xref\") && (token.length === 4 || /\\s/.test(token[4]))) {\n        position += skipUntil(buffer, position, trailerBytes);\n        trailers.push(position);\n        position += skipUntil(buffer, position, startxrefBytes);\n      } else if (m = objRegExp.exec(token)) {\n        const num = m[1] | 0,\n              gen = m[2] | 0;\n        let contentLength,\n            startPos = position + token.length,\n            updateEntries = false;\n\n        if (!this.entries[num]) {\n          updateEntries = true;\n        } else if (this.entries[num].gen === gen) {\n          try {\n            const parser = new _parser.Parser({\n              lexer: new _parser.Lexer(stream.makeSubStream(startPos))\n            });\n            parser.getObj();\n            updateEntries = true;\n          } catch (ex) {\n            if (ex instanceof _core_utils.ParserEOFException) {\n              (0, _util.warn)(`indexObjects -- checking object (${token}): \"${ex}\".`);\n            } else {\n              updateEntries = true;\n            }\n          }\n        }\n\n        if (updateEntries) {\n          this.entries[num] = {\n            offset: position - stream.start,\n            gen,\n            uncompressed: true\n          };\n        }\n\n        while (startPos < buffer.length) {\n          const endPos = startPos + skipUntil(buffer, startPos, objBytes) + 4;\n          contentLength = endPos - position;\n          const checkPos = Math.max(endPos - CHECK_CONTENT_LENGTH, startPos);\n          const tokenStr = (0, _util.bytesToString)(buffer.subarray(checkPos, endPos));\n\n          if (endobjRegExp.test(tokenStr)) {\n            break;\n          } else {\n            const objToken = nestedObjRegExp.exec(tokenStr);\n\n            if (objToken && objToken[1]) {\n              (0, _util.warn)('indexObjects: Found new \"obj\" inside of another \"obj\", ' + 'caused by missing \"endobj\" -- trying to recover.');\n              contentLength -= objToken[1].length;\n              break;\n            }\n          }\n\n          startPos = endPos;\n        }\n\n        const content = buffer.subarray(position, position + contentLength);\n        const xrefTagOffset = skipUntil(content, 0, xrefBytes);\n\n        if (xrefTagOffset < contentLength && content[xrefTagOffset + 5] < 64) {\n          xrefStms.push(position - stream.start);\n          this.xrefstms[position - stream.start] = 1;\n        }\n\n        position += contentLength;\n      } else if (token.startsWith(\"trailer\") && (token.length === 7 || /\\s/.test(token[7]))) {\n        trailers.push(position);\n        position += skipUntil(buffer, position, startxrefBytes);\n      } else {\n        position += token.length + 1;\n      }\n    }\n\n    for (let i = 0, ii = xrefStms.length; i < ii; ++i) {\n      this.startXRefQueue.push(xrefStms[i]);\n      this.readXRef(true);\n    }\n\n    let trailerDict;\n\n    for (let i = 0, ii = trailers.length; i < ii; ++i) {\n      stream.pos = trailers[i];\n      const parser = new _parser.Parser({\n        lexer: new _parser.Lexer(stream),\n        xref: this,\n        allowStreams: true,\n        recoveryMode: true\n      });\n      const obj = parser.getObj();\n\n      if (!(0, _primitives.isCmd)(obj, \"trailer\")) {\n        continue;\n      }\n\n      const dict = parser.getObj();\n\n      if (!(dict instanceof _primitives.Dict)) {\n        continue;\n      }\n\n      try {\n        const rootDict = dict.get(\"Root\");\n\n        if (!(rootDict instanceof _primitives.Dict)) {\n          continue;\n        }\n\n        const pagesDict = rootDict.get(\"Pages\");\n\n        if (!(pagesDict instanceof _primitives.Dict)) {\n          continue;\n        }\n\n        const pagesCount = pagesDict.get(\"Count\");\n\n        if (!Number.isInteger(pagesCount)) {\n          continue;\n        }\n      } catch (ex) {\n        continue;\n      }\n\n      if (dict.has(\"ID\")) {\n        return dict;\n      }\n\n      trailerDict = dict;\n    }\n\n    if (trailerDict) {\n      return trailerDict;\n    }\n\n    if (this.topDict) {\n      return this.topDict;\n    }\n\n    throw new _util.InvalidPDFException(\"Invalid PDF structure.\");\n  }\n\n  readXRef(recoveryMode = false) {\n    const stream = this.stream;\n    const startXRefParsedCache = new Set();\n\n    try {\n      while (this.startXRefQueue.length) {\n        const startXRef = this.startXRefQueue[0];\n\n        if (startXRefParsedCache.has(startXRef)) {\n          (0, _util.warn)(\"readXRef - skipping XRef table since it was already parsed.\");\n          this.startXRefQueue.shift();\n          continue;\n        }\n\n        startXRefParsedCache.add(startXRef);\n        stream.pos = startXRef + stream.start;\n        const parser = new _parser.Parser({\n          lexer: new _parser.Lexer(stream),\n          xref: this,\n          allowStreams: true\n        });\n        let obj = parser.getObj();\n        let dict;\n\n        if ((0, _primitives.isCmd)(obj, \"xref\")) {\n          dict = this.processXRefTable(parser);\n\n          if (!this.topDict) {\n            this.topDict = dict;\n          }\n\n          obj = dict.get(\"XRefStm\");\n\n          if (Number.isInteger(obj)) {\n            const pos = obj;\n\n            if (!(pos in this.xrefstms)) {\n              this.xrefstms[pos] = 1;\n              this.startXRefQueue.push(pos);\n            }\n          }\n        } else if (Number.isInteger(obj)) {\n          if (!Number.isInteger(parser.getObj()) || !(0, _primitives.isCmd)(parser.getObj(), \"obj\") || !((obj = parser.getObj()) instanceof _base_stream.BaseStream)) {\n            throw new _util.FormatError(\"Invalid XRef stream\");\n          }\n\n          dict = this.processXRefStream(obj);\n\n          if (!this.topDict) {\n            this.topDict = dict;\n          }\n\n          if (!dict) {\n            throw new _util.FormatError(\"Failed to read XRef stream\");\n          }\n        } else {\n          throw new _util.FormatError(\"Invalid XRef stream header\");\n        }\n\n        obj = dict.get(\"Prev\");\n\n        if (Number.isInteger(obj)) {\n          this.startXRefQueue.push(obj);\n        } else if (obj instanceof _primitives.Ref) {\n          this.startXRefQueue.push(obj.num);\n        }\n\n        this.startXRefQueue.shift();\n      }\n\n      return this.topDict;\n    } catch (e) {\n      if (e instanceof _core_utils.MissingDataException) {\n        throw e;\n      }\n\n      (0, _util.info)(\"(while reading XRef): \" + e);\n      this.startXRefQueue.shift();\n    }\n\n    if (recoveryMode) {\n      return undefined;\n    }\n\n    throw new _core_utils.XRefParseException();\n  }\n\n  getEntry(i) {\n    const xrefEntry = this.entries[i];\n\n    if (xrefEntry && !xrefEntry.free && xrefEntry.offset) {\n      return xrefEntry;\n    }\n\n    return null;\n  }\n\n  fetchIfRef(obj, suppressEncryption = false) {\n    if (obj instanceof _primitives.Ref) {\n      return this.fetch(obj, suppressEncryption);\n    }\n\n    return obj;\n  }\n\n  fetch(ref, suppressEncryption = false) {\n    if (!(ref instanceof _primitives.Ref)) {\n      throw new Error(\"ref object is not a reference\");\n    }\n\n    const num = ref.num;\n\n    const cacheEntry = this._cacheMap.get(num);\n\n    if (cacheEntry !== undefined) {\n      if (cacheEntry instanceof _primitives.Dict && !cacheEntry.objId) {\n        cacheEntry.objId = ref.toString();\n      }\n\n      return cacheEntry;\n    }\n\n    let xrefEntry = this.getEntry(num);\n\n    if (xrefEntry === null) {\n      this._cacheMap.set(num, xrefEntry);\n\n      return xrefEntry;\n    }\n\n    if (this._pendingRefs.has(ref)) {\n      this._pendingRefs.remove(ref);\n\n      (0, _util.warn)(`Ignoring circular reference: ${ref}.`);\n      return _primitives.CIRCULAR_REF;\n    }\n\n    this._pendingRefs.put(ref);\n\n    try {\n      if (xrefEntry.uncompressed) {\n        xrefEntry = this.fetchUncompressed(ref, xrefEntry, suppressEncryption);\n      } else {\n        xrefEntry = this.fetchCompressed(ref, xrefEntry, suppressEncryption);\n      }\n\n      this._pendingRefs.remove(ref);\n    } catch (ex) {\n      this._pendingRefs.remove(ref);\n\n      throw ex;\n    }\n\n    if (xrefEntry instanceof _primitives.Dict) {\n      xrefEntry.objId = ref.toString();\n    } else if (xrefEntry instanceof _base_stream.BaseStream) {\n      xrefEntry.dict.objId = ref.toString();\n    }\n\n    return xrefEntry;\n  }\n\n  fetchUncompressed(ref, xrefEntry, suppressEncryption = false) {\n    const gen = ref.gen;\n    let num = ref.num;\n\n    if (xrefEntry.gen !== gen) {\n      throw new _core_utils.XRefEntryException(`Inconsistent generation in XRef: ${ref}`);\n    }\n\n    const stream = this.stream.makeSubStream(xrefEntry.offset + this.stream.start);\n    const parser = new _parser.Parser({\n      lexer: new _parser.Lexer(stream),\n      xref: this,\n      allowStreams: true\n    });\n    const obj1 = parser.getObj();\n    const obj2 = parser.getObj();\n    const obj3 = parser.getObj();\n\n    if (obj1 !== num || obj2 !== gen || !(obj3 instanceof _primitives.Cmd)) {\n      throw new _core_utils.XRefEntryException(`Bad (uncompressed) XRef entry: ${ref}`);\n    }\n\n    if (obj3.cmd !== \"obj\") {\n      if (obj3.cmd.startsWith(\"obj\")) {\n        num = parseInt(obj3.cmd.substring(3), 10);\n\n        if (!Number.isNaN(num)) {\n          return num;\n        }\n      }\n\n      throw new _core_utils.XRefEntryException(`Bad (uncompressed) XRef entry: ${ref}`);\n    }\n\n    if (this.encrypt && !suppressEncryption) {\n      xrefEntry = parser.getObj(this.encrypt.createCipherTransform(num, gen));\n    } else {\n      xrefEntry = parser.getObj();\n    }\n\n    if (!(xrefEntry instanceof _base_stream.BaseStream)) {\n      this._cacheMap.set(num, xrefEntry);\n    }\n\n    return xrefEntry;\n  }\n\n  fetchCompressed(ref, xrefEntry, suppressEncryption = false) {\n    const tableOffset = xrefEntry.offset;\n    const stream = this.fetch(_primitives.Ref.get(tableOffset, 0));\n\n    if (!(stream instanceof _base_stream.BaseStream)) {\n      throw new _util.FormatError(\"bad ObjStm stream\");\n    }\n\n    const first = stream.dict.get(\"First\");\n    const n = stream.dict.get(\"N\");\n\n    if (!Number.isInteger(first) || !Number.isInteger(n)) {\n      throw new _util.FormatError(\"invalid first and n parameters for ObjStm stream\");\n    }\n\n    let parser = new _parser.Parser({\n      lexer: new _parser.Lexer(stream),\n      xref: this,\n      allowStreams: true\n    });\n    const nums = new Array(n);\n    const offsets = new Array(n);\n\n    for (let i = 0; i < n; ++i) {\n      const num = parser.getObj();\n\n      if (!Number.isInteger(num)) {\n        throw new _util.FormatError(`invalid object number in the ObjStm stream: ${num}`);\n      }\n\n      const offset = parser.getObj();\n\n      if (!Number.isInteger(offset)) {\n        throw new _util.FormatError(`invalid object offset in the ObjStm stream: ${offset}`);\n      }\n\n      nums[i] = num;\n      offsets[i] = offset;\n    }\n\n    const start = (stream.start || 0) + first;\n    const entries = new Array(n);\n\n    for (let i = 0; i < n; ++i) {\n      const length = i < n - 1 ? offsets[i + 1] - offsets[i] : undefined;\n\n      if (length < 0) {\n        throw new _util.FormatError(\"Invalid offset in the ObjStm stream.\");\n      }\n\n      parser = new _parser.Parser({\n        lexer: new _parser.Lexer(stream.makeSubStream(start + offsets[i], length, stream.dict)),\n        xref: this,\n        allowStreams: true\n      });\n      const obj = parser.getObj();\n      entries[i] = obj;\n\n      if (obj instanceof _base_stream.BaseStream) {\n        continue;\n      }\n\n      const num = nums[i],\n            entry = this.entries[num];\n\n      if (entry && entry.offset === tableOffset && entry.gen === i) {\n        this._cacheMap.set(num, obj);\n      }\n    }\n\n    xrefEntry = entries[xrefEntry.gen];\n\n    if (xrefEntry === undefined) {\n      throw new _core_utils.XRefEntryException(`Bad (compressed) XRef entry: ${ref}`);\n    }\n\n    return xrefEntry;\n  }\n\n  async fetchIfRefAsync(obj, suppressEncryption) {\n    if (obj instanceof _primitives.Ref) {\n      return this.fetchAsync(obj, suppressEncryption);\n    }\n\n    return obj;\n  }\n\n  async fetchAsync(ref, suppressEncryption) {\n    try {\n      return this.fetch(ref, suppressEncryption);\n    } catch (ex) {\n      if (!(ex instanceof _core_utils.MissingDataException)) {\n        throw ex;\n      }\n\n      await this.pdfManager.requestRange(ex.begin, ex.end);\n      return this.fetchAsync(ref, suppressEncryption);\n    }\n  }\n\n  getCatalogObj() {\n    return this.root;\n  }\n\n}\n\nexports.XRef = XRef;\n\n/***/ }),\n/* 100 */\n/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {\n\n\n\nObject.defineProperty(exports, \"__esModule\", ({\n  value: true\n}));\nexports.MessageHandler = void 0;\n\nvar _util = __w_pdfjs_require__(2);\n\nconst CallbackKind = {\n  UNKNOWN: 0,\n  DATA: 1,\n  ERROR: 2\n};\nconst StreamKind = {\n  UNKNOWN: 0,\n  CANCEL: 1,\n  CANCEL_COMPLETE: 2,\n  CLOSE: 3,\n  ENQUEUE: 4,\n  ERROR: 5,\n  PULL: 6,\n  PULL_COMPLETE: 7,\n  START_COMPLETE: 8\n};\n\nfunction wrapReason(reason) {\n  if (!(reason instanceof Error || typeof reason === \"object\" && reason !== null)) {\n    (0, _util.unreachable)('wrapReason: Expected \"reason\" to be a (possibly cloned) Error.');\n  }\n\n  switch (reason.name) {\n    case \"AbortException\":\n      return new _util.AbortException(reason.message);\n\n    case \"MissingPDFException\":\n      return new _util.MissingPDFException(reason.message);\n\n    case \"PasswordException\":\n      return new _util.PasswordException(reason.message, reason.code);\n\n    case \"UnexpectedResponseException\":\n      return new _util.UnexpectedResponseException(reason.message, reason.status);\n\n    case \"UnknownErrorException\":\n      return new _util.UnknownErrorException(reason.message, reason.details);\n\n    default:\n      return new _util.UnknownErrorException(reason.message, reason.toString());\n  }\n}\n\nclass MessageHandler {\n  constructor(sourceName, targetName, comObj) {\n    this.sourceName = sourceName;\n    this.targetName = targetName;\n    this.comObj = comObj;\n    this.callbackId = 1;\n    this.streamId = 1;\n    this.streamSinks = Object.create(null);\n    this.streamControllers = Object.create(null);\n    this.callbackCapabilities = Object.create(null);\n    this.actionHandler = Object.create(null);\n\n    this._onComObjOnMessage = event => {\n      const data = event.data;\n\n      if (data.targetName !== this.sourceName) {\n        return;\n      }\n\n      if (data.stream) {\n        this._processStreamMessage(data);\n\n        return;\n      }\n\n      if (data.callback) {\n        const callbackId = data.callbackId;\n        const capability = this.callbackCapabilities[callbackId];\n\n        if (!capability) {\n          throw new Error(`Cannot resolve callback ${callbackId}`);\n        }\n\n        delete this.callbackCapabilities[callbackId];\n\n        if (data.callback === CallbackKind.DATA) {\n          capability.resolve(data.data);\n        } else if (data.callback === CallbackKind.ERROR) {\n          capability.reject(wrapReason(data.reason));\n        } else {\n          throw new Error(\"Unexpected callback case\");\n        }\n\n        return;\n      }\n\n      const action = this.actionHandler[data.action];\n\n      if (!action) {\n        throw new Error(`Unknown action from worker: ${data.action}`);\n      }\n\n      if (data.callbackId) {\n        const cbSourceName = this.sourceName;\n        const cbTargetName = data.sourceName;\n        new Promise(function (resolve) {\n          resolve(action(data.data));\n        }).then(function (result) {\n          comObj.postMessage({\n            sourceName: cbSourceName,\n            targetName: cbTargetName,\n            callback: CallbackKind.DATA,\n            callbackId: data.callbackId,\n            data: result\n          });\n        }, function (reason) {\n          comObj.postMessage({\n            sourceName: cbSourceName,\n            targetName: cbTargetName,\n            callback: CallbackKind.ERROR,\n            callbackId: data.callbackId,\n            reason: wrapReason(reason)\n          });\n        });\n        return;\n      }\n\n      if (data.streamId) {\n        this._createStreamSink(data);\n\n        return;\n      }\n\n      action(data.data);\n    };\n\n    comObj.addEventListener(\"message\", this._onComObjOnMessage);\n  }\n\n  on(actionName, handler) {\n    const ah = this.actionHandler;\n\n    if (ah[actionName]) {\n      throw new Error(`There is already an actionName called \"${actionName}\"`);\n    }\n\n    ah[actionName] = handler;\n  }\n\n  send(actionName, data, transfers) {\n    this.comObj.postMessage({\n      sourceName: this.sourceName,\n      targetName: this.targetName,\n      action: actionName,\n      data\n    }, transfers);\n  }\n\n  sendWithPromise(actionName, data, transfers) {\n    const callbackId = this.callbackId++;\n    const capability = (0, _util.createPromiseCapability)();\n    this.callbackCapabilities[callbackId] = capability;\n\n    try {\n      this.comObj.postMessage({\n        sourceName: this.sourceName,\n        targetName: this.targetName,\n        action: actionName,\n        callbackId,\n        data\n      }, transfers);\n    } catch (ex) {\n      capability.reject(ex);\n    }\n\n    return capability.promise;\n  }\n\n  sendWithStream(actionName, data, queueingStrategy, transfers) {\n    const streamId = this.streamId++,\n          sourceName = this.sourceName,\n          targetName = this.targetName,\n          comObj = this.comObj;\n    return new ReadableStream({\n      start: controller => {\n        const startCapability = (0, _util.createPromiseCapability)();\n        this.streamControllers[streamId] = {\n          controller,\n          startCall: startCapability,\n          pullCall: null,\n          cancelCall: null,\n          isClosed: false\n        };\n        comObj.postMessage({\n          sourceName,\n          targetName,\n          action: actionName,\n          streamId,\n          data,\n          desiredSize: controller.desiredSize\n        }, transfers);\n        return startCapability.promise;\n      },\n      pull: controller => {\n        const pullCapability = (0, _util.createPromiseCapability)();\n        this.streamControllers[streamId].pullCall = pullCapability;\n        comObj.postMessage({\n          sourceName,\n          targetName,\n          stream: StreamKind.PULL,\n          streamId,\n          desiredSize: controller.desiredSize\n        });\n        return pullCapability.promise;\n      },\n      cancel: reason => {\n        (0, _util.assert)(reason instanceof Error, \"cancel must have a valid reason\");\n        const cancelCapability = (0, _util.createPromiseCapability)();\n        this.streamControllers[streamId].cancelCall = cancelCapability;\n        this.streamControllers[streamId].isClosed = true;\n        comObj.postMessage({\n          sourceName,\n          targetName,\n          stream: StreamKind.CANCEL,\n          streamId,\n          reason: wrapReason(reason)\n        });\n        return cancelCapability.promise;\n      }\n    }, queueingStrategy);\n  }\n\n  _createStreamSink(data) {\n    const streamId = data.streamId,\n          sourceName = this.sourceName,\n          targetName = data.sourceName,\n          comObj = this.comObj;\n    const self = this,\n          action = this.actionHandler[data.action];\n    const streamSink = {\n      enqueue(chunk, size = 1, transfers) {\n        if (this.isCancelled) {\n          return;\n        }\n\n        const lastDesiredSize = this.desiredSize;\n        this.desiredSize -= size;\n\n        if (lastDesiredSize > 0 && this.desiredSize <= 0) {\n          this.sinkCapability = (0, _util.createPromiseCapability)();\n          this.ready = this.sinkCapability.promise;\n        }\n\n        comObj.postMessage({\n          sourceName,\n          targetName,\n          stream: StreamKind.ENQUEUE,\n          streamId,\n          chunk\n        }, transfers);\n      },\n\n      close() {\n        if (this.isCancelled) {\n          return;\n        }\n\n        this.isCancelled = true;\n        comObj.postMessage({\n          sourceName,\n          targetName,\n          stream: StreamKind.CLOSE,\n          streamId\n        });\n        delete self.streamSinks[streamId];\n      },\n\n      error(reason) {\n        (0, _util.assert)(reason instanceof Error, \"error must have a valid reason\");\n\n        if (this.isCancelled) {\n          return;\n        }\n\n        this.isCancelled = true;\n        comObj.postMessage({\n          sourceName,\n          targetName,\n          stream: StreamKind.ERROR,\n          streamId,\n          reason: wrapReason(reason)\n        });\n      },\n\n      sinkCapability: (0, _util.createPromiseCapability)(),\n      onPull: null,\n      onCancel: null,\n      isCancelled: false,\n      desiredSize: data.desiredSize,\n      ready: null\n    };\n    streamSink.sinkCapability.resolve();\n    streamSink.ready = streamSink.sinkCapability.promise;\n    this.streamSinks[streamId] = streamSink;\n    new Promise(function (resolve) {\n      resolve(action(data.data, streamSink));\n    }).then(function () {\n      comObj.postMessage({\n        sourceName,\n        targetName,\n        stream: StreamKind.START_COMPLETE,\n        streamId,\n        success: true\n      });\n    }, function (reason) {\n      comObj.postMessage({\n        sourceName,\n        targetName,\n        stream: StreamKind.START_COMPLETE,\n        streamId,\n        reason: wrapReason(reason)\n      });\n    });\n  }\n\n  _processStreamMessage(data) {\n    const streamId = data.streamId,\n          sourceName = this.sourceName,\n          targetName = data.sourceName,\n          comObj = this.comObj;\n    const streamController = this.streamControllers[streamId],\n          streamSink = this.streamSinks[streamId];\n\n    switch (data.stream) {\n      case StreamKind.START_COMPLETE:\n        if (data.success) {\n          streamController.startCall.resolve();\n        } else {\n          streamController.startCall.reject(wrapReason(data.reason));\n        }\n\n        break;\n\n      case StreamKind.PULL_COMPLETE:\n        if (data.success) {\n          streamController.pullCall.resolve();\n        } else {\n          streamController.pullCall.reject(wrapReason(data.reason));\n        }\n\n        break;\n\n      case StreamKind.PULL:\n        if (!streamSink) {\n          comObj.postMessage({\n            sourceName,\n            targetName,\n            stream: StreamKind.PULL_COMPLETE,\n            streamId,\n            success: true\n          });\n          break;\n        }\n\n        if (streamSink.desiredSize <= 0 && data.desiredSize > 0) {\n          streamSink.sinkCapability.resolve();\n        }\n\n        streamSink.desiredSize = data.desiredSize;\n        new Promise(function (resolve) {\n          resolve(streamSink.onPull && streamSink.onPull());\n        }).then(function () {\n          comObj.postMessage({\n            sourceName,\n            targetName,\n            stream: StreamKind.PULL_COMPLETE,\n            streamId,\n            success: true\n          });\n        }, function (reason) {\n          comObj.postMessage({\n            sourceName,\n            targetName,\n            stream: StreamKind.PULL_COMPLETE,\n            streamId,\n            reason: wrapReason(reason)\n          });\n        });\n        break;\n\n      case StreamKind.ENQUEUE:\n        (0, _util.assert)(streamController, \"enqueue should have stream controller\");\n\n        if (streamController.isClosed) {\n          break;\n        }\n\n        streamController.controller.enqueue(data.chunk);\n        break;\n\n      case StreamKind.CLOSE:\n        (0, _util.assert)(streamController, \"close should have stream controller\");\n\n        if (streamController.isClosed) {\n          break;\n        }\n\n        streamController.isClosed = true;\n        streamController.controller.close();\n\n        this._deleteStreamController(streamController, streamId);\n\n        break;\n\n      case StreamKind.ERROR:\n        (0, _util.assert)(streamController, \"error should have stream controller\");\n        streamController.controller.error(wrapReason(data.reason));\n\n        this._deleteStreamController(streamController, streamId);\n\n        break;\n\n      case StreamKind.CANCEL_COMPLETE:\n        if (data.success) {\n          streamController.cancelCall.resolve();\n        } else {\n          streamController.cancelCall.reject(wrapReason(data.reason));\n        }\n\n        this._deleteStreamController(streamController, streamId);\n\n        break;\n\n      case StreamKind.CANCEL:\n        if (!streamSink) {\n          break;\n        }\n\n        new Promise(function (resolve) {\n          resolve(streamSink.onCancel && streamSink.onCancel(wrapReason(data.reason)));\n        }).then(function () {\n          comObj.postMessage({\n            sourceName,\n            targetName,\n            stream: StreamKind.CANCEL_COMPLETE,\n            streamId,\n            success: true\n          });\n        }, function (reason) {\n          comObj.postMessage({\n            sourceName,\n            targetName,\n            stream: StreamKind.CANCEL_COMPLETE,\n            streamId,\n            reason: wrapReason(reason)\n          });\n        });\n        streamSink.sinkCapability.reject(wrapReason(data.reason));\n        streamSink.isCancelled = true;\n        delete this.streamSinks[streamId];\n        break;\n\n      default:\n        throw new Error(\"Unexpected stream case\");\n    }\n  }\n\n  async _deleteStreamController(streamController, streamId) {\n    await Promise.allSettled([streamController.startCall && streamController.startCall.promise, streamController.pullCall && streamController.pullCall.promise, streamController.cancelCall && streamController.cancelCall.promise]);\n    delete this.streamControllers[streamId];\n  }\n\n  destroy() {\n    this.comObj.removeEventListener(\"message\", this._onComObjOnMessage);\n  }\n\n}\n\nexports.MessageHandler = MessageHandler;\n\n/***/ }),\n/* 101 */\n/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {\n\n\n\nObject.defineProperty(exports, \"__esModule\", ({\n  value: true\n}));\nexports.PDFWorkerStream = void 0;\n\nvar _util = __w_pdfjs_require__(2);\n\nclass PDFWorkerStream {\n  constructor(msgHandler) {\n    this._msgHandler = msgHandler;\n    this._contentLength = null;\n    this._fullRequestReader = null;\n    this._rangeRequestReaders = [];\n  }\n\n  getFullReader() {\n    (0, _util.assert)(!this._fullRequestReader, \"PDFWorkerStream.getFullReader can only be called once.\");\n    this._fullRequestReader = new PDFWorkerStreamReader(this._msgHandler);\n    return this._fullRequestReader;\n  }\n\n  getRangeReader(begin, end) {\n    const reader = new PDFWorkerStreamRangeReader(begin, end, this._msgHandler);\n\n    this._rangeRequestReaders.push(reader);\n\n    return reader;\n  }\n\n  cancelAllRequests(reason) {\n    if (this._fullRequestReader) {\n      this._fullRequestReader.cancel(reason);\n    }\n\n    for (const reader of this._rangeRequestReaders.slice(0)) {\n      reader.cancel(reason);\n    }\n  }\n\n}\n\nexports.PDFWorkerStream = PDFWorkerStream;\n\nclass PDFWorkerStreamReader {\n  constructor(msgHandler) {\n    this._msgHandler = msgHandler;\n    this.onProgress = null;\n    this._contentLength = null;\n    this._isRangeSupported = false;\n    this._isStreamingSupported = false;\n\n    const readableStream = this._msgHandler.sendWithStream(\"GetReader\");\n\n    this._reader = readableStream.getReader();\n    this._headersReady = this._msgHandler.sendWithPromise(\"ReaderHeadersReady\").then(data => {\n      this._isStreamingSupported = data.isStreamingSupported;\n      this._isRangeSupported = data.isRangeSupported;\n      this._contentLength = data.contentLength;\n    });\n  }\n\n  get headersReady() {\n    return this._headersReady;\n  }\n\n  get contentLength() {\n    return this._contentLength;\n  }\n\n  get isStreamingSupported() {\n    return this._isStreamingSupported;\n  }\n\n  get isRangeSupported() {\n    return this._isRangeSupported;\n  }\n\n  async read() {\n    const {\n      value,\n      done\n    } = await this._reader.read();\n\n    if (done) {\n      return {\n        value: undefined,\n        done: true\n      };\n    }\n\n    return {\n      value: value.buffer,\n      done: false\n    };\n  }\n\n  cancel(reason) {\n    this._reader.cancel(reason);\n  }\n\n}\n\nclass PDFWorkerStreamRangeReader {\n  constructor(begin, end, msgHandler) {\n    this._msgHandler = msgHandler;\n    this.onProgress = null;\n\n    const readableStream = this._msgHandler.sendWithStream(\"GetRangeReader\", {\n      begin,\n      end\n    });\n\n    this._reader = readableStream.getReader();\n  }\n\n  get isStreamingSupported() {\n    return false;\n  }\n\n  async read() {\n    const {\n      value,\n      done\n    } = await this._reader.read();\n\n    if (done) {\n      return {\n        value: undefined,\n        done: true\n      };\n    }\n\n    return {\n      value: value.buffer,\n      done: false\n    };\n  }\n\n  cancel(reason) {\n    this._reader.cancel(reason);\n  }\n\n}\n\n/***/ })\n/******/ \t]);\n/************************************************************************/\n/******/ \t// The module cache\n/******/ \tvar __webpack_module_cache__ = {};\n/******/ \t\n/******/ \t// The require function\n/******/ \tfunction __w_pdfjs_require__(moduleId) {\n/******/ \t\t// Check if module is in cache\n/******/ \t\tvar cachedModule = __webpack_module_cache__[moduleId];\n/******/ \t\tif (cachedModule !== undefined) {\n/******/ \t\t\treturn cachedModule.exports;\n/******/ \t\t}\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = __webpack_module_cache__[moduleId] = {\n/******/ \t\t\t// no module.id needed\n/******/ \t\t\t// no module.loaded needed\n/******/ \t\t\texports: {}\n/******/ \t\t};\n/******/ \t\n/******/ \t\t// Execute the module function\n/******/ \t\t__webpack_modules__[moduleId](module, module.exports, __w_pdfjs_require__);\n/******/ \t\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/ \t\n/************************************************************************/\n/******/ \t/* webpack/runtime/define property getters */\n/******/ \t(() => {\n/******/ \t\t// define getter functions for harmony exports\n/******/ \t\t__w_pdfjs_require__.d = (exports, definition) => {\n/******/ \t\t\tfor(var key in definition) {\n/******/ \t\t\t\tif(__w_pdfjs_require__.o(definition, key) && !__w_pdfjs_require__.o(exports, key)) {\n/******/ \t\t\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n/******/ \t\t\t\t}\n/******/ \t\t\t}\n/******/ \t\t};\n/******/ \t})();\n/******/ \t\n/******/ \t/* webpack/runtime/hasOwnProperty shorthand */\n/******/ \t(() => {\n/******/ \t\t__w_pdfjs_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))\n/******/ \t})();\n/******/ \t\n/******/ \t/* webpack/runtime/make namespace object */\n/******/ \t(() => {\n/******/ \t\t// define __esModule on exports\n/******/ \t\t__w_pdfjs_require__.r = (exports) => {\n/******/ \t\t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n/******/ \t\t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n/******/ \t\t\t}\n/******/ \t\t\tObject.defineProperty(exports, '__esModule', { value: true });\n/******/ \t\t};\n/******/ \t})();\n/******/ \t\n/************************************************************************/\nvar __webpack_exports__ = {};\n// This entry need to be wrapped in an IIFE because it need to be isolated against other modules in the chunk.\n(() => {\nvar exports = __webpack_exports__;\n\n\nObject.defineProperty(exports, \"__esModule\", ({\n  value: true\n}));\nObject.defineProperty(exports, \"WorkerMessageHandler\", ({\n  enumerable: true,\n  get: function () {\n    return _worker.WorkerMessageHandler;\n  }\n}));\n\nvar _worker = __w_pdfjs_require__(1);\n\nconst pdfjsVersion = '2.14.73';\nconst pdfjsBuild = '489e9ff7d';\n})();\n\n/******/ \treturn __webpack_exports__;\n/******/ })()\n;\n});\n//# sourceMappingURL=pdf.worker.js.map"
  },
  {
    "path": "application/public/opds-opensearch.xml",
    "content": "<OpenSearchDescription xmlns=\"http://a9.com/-/spec/opensearch/1.1/\">\n<ShortName>Библиотека</ShortName>\n<Description>Библиотека</Description>\n<Tags/>\n<Contact/>\n<Url type=\"application/atom+xml\" indexOffset=\"0\" pageOffset=\"0\" template=\"/opds/search?searchTerm={searchTerms}&searchType=books&pageNumber={startPage?}\"/>\n<SearchForm>/opds/search</SearchForm>\n<LongName>Библиотека</LongName>\n<Image>/favicon.ico</Image>\n<Developer/>\n<Attribution/>\n<SyndicationRight>open</SyndicationRight>\n<AdultContent>false</AdultContent>\n<Language>*</Language>\n<OutputEncoding>UTF-8</OutputEncoding>\n<InputEncoding>UTF-8</InputEncoding>\n</OpenSearchDescription>\n"
  },
  {
    "path": "application/public/opds-opensearch.xml.php",
    "content": "<?php\ninclude(\"../init.php\");\necho <<< __HTML\n<OpenSearchDescription xmlns=\"http://a9.com/-/spec/opensearch/1.1/\">\n<ShortName>Библиотека</ShortName>\n<Description>Библиотека</Description>\n<Tags/>\n<Contact/>\n<Url type=\"application/atom+xml\" indexOffset=\"0\" pageOffset=\"0\" template=\"$webroot/opds/search?searchTerm={searchTerms}&searchType=books&pageNumber={startPage?}\"/>\n<SearchForm>$webroot/opds/search</SearchForm>\n<LongName>Библиотека</LongName>\n<Image>/favicon.ico</Image>\n<Developer/>\n<Attribution/>\n<SyndicationRight>open</SyndicationRight>\n<AdultContent>false</AdultContent>\n<Language>*</Language>\n<OutputEncoding>UTF-8</OutputEncoding>\n<InputEncoding>UTF-8</InputEncoding>\n</OpenSearchDescription>\n__HTML\n?>"
  },
  {
    "path": "application/public/save_position.php",
    "content": "<?php\ninclude('../init.php');\nsession_start();\n\nif (!isset($_GET['user_uuid'])) {\n\tdie();\n}\n\n$user_uuid = $_GET['user_uuid'];\nif ($user_uuid == \"\") {\n\tdie();\n}\n$bookid = intval($_GET['bookid']);\n$pos = floatval($_GET['pos']);\n\nif ($pos == 0) {\n\t$stmt = $dbh->prepare(\"DELETE FROM progress WHERE user_uuid=:uuid AND bookid=:id\");\n\t$stmt->bindParam(\":uuid\", $user_uuid);\n\t$stmt->bindParam(\":id\", $bookid);\n\t$stmt->execute();\n\tdie();\n}\n\n$stmt = $dbh->prepare(\"INSERT INTO progress (user_uuid, bookid, pos) VALUES (:uuid, :id, :pos) ON CONFLICT(user_uuid, bookid) DO UPDATE set pos=:pos2\");\n$stmt->bindParam(\":uuid\", $user_uuid);\n$stmt->bindParam(\":id\", $bookid);\n$stmt->bindParam(\":pos\", $pos);\n$stmt->bindParam(\":pos2\", $pos);\n$stmt->execute();\n"
  },
  {
    "path": "application/public/usr.php",
    "content": "<?php\nif (isset($_GET['id'])) {\n\t$id = $_GET['id'];\n} else {\n\tdie();\n}\nerror_reporting(E_ALL);\ninclude('../init.php');\n\n$stmt = $dbh->prepare(\"SELECT libbook.Title BookTitle, libfilename.filename, libbook.filetype,\n\tCONCAT(libavtorname.LastName, ' ', libavtorname.FirstName) author_name\n\t\tFROM libbook \n\t\tLEFT JOIN libavtor USING(BookId) \n\t\tLEFT JOIN libfilename USING(BookId) \n\t\tLEFT JOIN libavtorname USING(AvtorId) \n\t\tWHERE libbook.BookId=:id\");\n$stmt->bindParam(\":id\", $id);\n$stmt->execute();\n$book = $stmt->fetch();\n\n\n$stmt = $dbh->prepare(\"SELECT * FROM book_zip WHERE $id BETWEEN start_id AND end_id AND usr=1\");\n$stmt->execute();\n$zip_name = $stmt->fetch()->filename;\n$zip = new ZipArchive();\n\nif ($zip->open(ROOT_PATH . \"flibusta/\" . $zip_name)) {\n\t$filename = $book->author_name . \" - \" . $book->booktitle . \" \" . $id . \".\" . $book->filename . \".\" . trim($book->filetype);\n\theader('Content-Description: File Transfer');\n\theader('Content-Type: application/octet-stream');\n\theader('Content-Disposition: attachment; filename=' . basename(rawurlencode($filename)));\n\theader('Content-Transfer-Encoding: binary');\n\theader('Expires: 0');\n\theader('Cache-Control: must-revalidate');\n\theader('Pragma: public');\n\n\tif (isset($book->filename)) {\n\t\techo $zip->getFromName($book->filename);\n\t} else {\n\t\techo $zip->getFromName(\"$id.\" . trim($book->filetype));\n\t}\n\t$zip->close();\n} else {\n\techo \"NO ZIP\";\n}\n\n\n\n"
  },
  {
    "path": "application/renderer.php",
    "content": "<!doctype html>\n<html lang=\"ru\">\n<head>\n\n<meta charset=\"utf-8\">\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1, shrink-to-fit=no\">\n<meta name='wmail-verification' content='7404cc552213a233445be2fe20acca8c' />\n\n<?php\n\tif ($url->description != '') {\n\t\techo \"<meta name='description' content='$url->description' />\";\n\t}\n\n\tif ($url->title != '') {\n\t\t$title = $url->title;\n\t} else {\n\t\t$title = 'Библиотека';\n\t}\n\techo \"<title>$title</title>\";\n\tinclude_once(ROOT_PATH . 'webroot.php');\necho <<< __HTML\n\n<link href=\"$webroot/bootstrap/css/bootstrap.min.css\" rel=\"stylesheet\">\n<script src=\"$webroot/bootstrap/js/bootstrap.bundle.min.js\"></script>\n\n<link rel=\"icon\" href=\"$webroot/favicon.svg\" sizes=\"any\" type=\"image/svg+xml\">\n\n<link href=\"$webroot/css/all.min.css\" rel=\"stylesheet\">\n<link href=\"$webroot/css/style.css\" rel=\"stylesheet\">\n__HTML\n?>\n<style>\n.pagination>li.active>a {\n  background-color: #777 !important;\n  border-color: #6d6d6d !important;\n}\n\n.badge {\n    white-space: break-spaces;\n}\n\n.author {\n        background: #dddddd;\n}\n\n.author a {\n\tcolor: #333;\n\tline-height: 24px;\n\tpadding-left: 3px;\n}\n\n.contact {\n         width: 24px;\n         height: 24px;\n}\n\n</style>\n\n</head>\n<?php\n$c1 = '';\n$c2 = '';\n$c3 = '';\n$c4 = '';\n$c5 = '';\n$c6 = '';\n\nswitch ($url->mod) {\n\tcase '':\n\t\t$c1 = 'active';\n\t\tbreak;\n\tcase 'genres':\n\t\t$c2 = 'active';\n\t\tbreak;\n\tcase 'genres':\n\t\t$c3 = 'active';\n\t\tbreak;\n\tcase 'authors':\n\t\t$c4 = 'active';\n\t\tbreak;\n\tcase 'fav':\n\t\t$c5 = 'active';\n\t\tbreak;\n\tcase 'service':\n\t\t$c6 = 'active';\n\t\tbreak;\n\tdefault:\n\t\t$c1 = 'active';\n}\n\n\n\necho <<< __HTML\n\n<body style='background-color: #343a40;'>\n\n<div class=\"container whb\">\n<nav class=\"navbar navbar-expand-lg navbar-dark rounded-bottom shadow\" style=\"background-color: #3e3b6c;\">\n<div class=\"container-fluid\">\n  <a class=\"navbar-brand\" href=\"$webroot/\" title=\"Библиотека\">\n   &nbsp;Библиотека\n  </a>\n\t\t<ul class=\"navbar-nav mr-auto\">\n\t\t\t<li class=\"nav-item $c1\"><a title=\"\" class=\"nav-link\" href=\"$webroot/\">Книги</a></li>\n\t\t\t<li class=\"nav-item $c2\"><a title=\"\" class=\"nav-link\" href=\"$webroot/genres/\">Жанры</a></li>\n\t\t\t<li class=\"nav-item $c4\"><a title=\"\" class=\"nav-link\" href=\"$webroot/authors/\">Авторы</a></li>\n\t\t\t<li class=\"nav-item $c3\"><a title=\"\" class=\"nav-link\" href=\"$webroot/series/\">Серии</a></li>\n\t\t\t<li class=\"nav-item $c5\"><a title=\"\" class=\"nav-link\" href=\"$webroot/fav/\">Полка</a></li>\n\t\t\t<li class=\"nav-item $c6\"><a title=\"\" class=\"nav-link\" href=\"$webroot/service/\">Сервис</a></li>\n\t\t</ul>\n\n<div class=\"d-flex\">\n\n<a href='$webroot/favlist/' class='btn btn-outline-success' type='submit'>$user_name</a>\n__HTML\n?>\n</div>\n\n</div>\n</nav>\n</div>\n<div class=\"container whb\">\n<br />\n<?php\nif (file_exists($url->module)) {\n//\techo \"<h1>$url->title</h1>\";\n\tinclude($url->module);\n} else {\n\techo 'Раздел не найден', 'Вы ввели неверный адрес, либо раздел находится в разработке.';\n\theader(\"HTTP/1.0 404 Not Found\");\n}\n?>\n<div>&nbsp;</div>\n</div>\n\n\n\n<div class=\"container whb rounded-bottom mb-3\">\n\t<nav class=\"navbar navbar-expand-lg rounded-top shadow navbar-dark bg-dark\" style=\"background-color: #768fa8;\">\n\t\t<ul class=\"navbar-nav mr-auto\">\n\t\t</ul>\n\t</nav>\n</div>\n\n\n\n\n</body>\n</html>\n\n"
  },
  {
    "path": "application/tools/app_db_converter.py",
    "content": "#!/usr/bin/env python\n\n\"\"\"\nFixes a MySQL dump made with the right format so it can be directly\nimported to a new PostgreSQL database.\n\nDump using:\nmysqldump --compatible=postgresql --default-character-set=utf8 -r databasename.mysql -u root databasename\n\"\"\"\n\nimport re\nimport sys\nimport os\nimport time\nimport subprocess\n\n\ndef parse(input_filename, output_filename):\n    \"Feed it a file, and it'll output a fixed one\"\n\n    # State storage\n    if input_filename == \"-\":\n        num_lines = -1\n    else:\n        num_lines = int(subprocess.check_output([\"wc\", \"-l\", input_filename]).strip().split()[0])\n    tables = {}\n    current_table = None\n    creation_lines = []\n    enum_types = []\n    foreign_key_lines = []\n    fulltext_key_lines = []\n    sequence_lines = []\n    cast_lines = []\n    num_inserts = 0\n    started = time.time()\n\n    # Open output file and write header. Logging file handle will be stdout\n    # unless we're writing output to stdout, in which case NO PROGRESS FOR YOU.\n    if output_filename == \"-\":\n        output = sys.stdout\n        logging = open(os.devnull, \"w\")\n    else:\n        output = open(output_filename, \"w\")\n        logging = sys.stdout\n\n    if input_filename == \"-\":\n        input_fh = sys.stdin\n    else:\n        input_fh = open(input_filename)\n\n\n    output.write(\"-- Converted by db_converter\\n\")\n    output.write(\"START TRANSACTION;\\n\")\n    output.write(\"SET standard_conforming_strings=off;\\n\")\n    output.write(\"SET escape_string_warning=off;\\n\")\n    output.write(\"SET CONSTRAINTS ALL DEFERRED;\\n\\n\")\n\n    for i, line in enumerate(input_fh):\n        time_taken = time.time() - started\n        percentage_done = (i+1) / float(num_lines)\n        secs_left = (time_taken / percentage_done) - time_taken\n        logging.write(\"\\rLine %i (of %s: %.2f%%) [%s tables] [%s inserts] [ETA: %i min %i sec]\" % (\n            i + 1,\n            num_lines,\n            ((i+1)/float(num_lines))*100,\n            len(tables),\n            num_inserts,\n            secs_left // 60,\n            secs_left % 60,\n        ))\n        logging.flush()\n        line = line.strip().replace(r\"\\\\\", \"WUBWUBREALSLASHWUB\").replace(r\"\\'\", \"''\").replace(\"WUBWUBREALSLASHWUB\", r\"\\\\\")\n        # Ignore comment lines\n        if line.startswith(\"--\") or line.startswith(\"/*\") or line.startswith(\"LOCK TABLES\") or line.startswith(\"DROP TABLE\") or line.startswith(\"UNLOCK TABLES\") or not line:\n            continue\n\n        # Outside of anything handling\n        if current_table is None:\n            # Start of a table creation statement?\n            if line.startswith(\"CREATE TABLE\"):\n                current_table = line.split('\"')[1]\n                tables[current_table] = {\"columns\": []}\n                creation_lines = []\n            # Inserting data into a table?\n            elif line.startswith(\"INSERT INTO\"):\n                output.write(line.replace(\"'0000-00-00 00:00:00'\", \"NULL\") + \"\\n\")\n                num_inserts += 1\n            # ???\n            elif line.startswith(\"TRUNCATE\"):\n                output.write(line.replace(\"'0000-00-00 00:00:00'\", \"NULL\") + \"\\n\")\n                num_inserts += 1\n            else:\n                print(\"\\n ! Unknown line in main body: {}\".format(line))\n\n        # Inside-create-statement handling\n        else:\n            # Is it a column?\n            if line.startswith('\"'):\n                useless, name, definition = line.strip(\",\").split('\"',2)\n                try:\n                    type, extra = definition.strip().split(\" \", 1)\n\n                    # This must be a tricky enum\n                    if ')' in extra:\n                        type, extra = definition.strip().split(\")\")\n\n                except ValueError:\n                    type = definition.strip()\n                    extra = \"\"\n                extra = re.sub(r\"CHARACTER SET [\\w\\d]+\\s*\", \"\", extra.replace(\"unsigned\", \"\"))\n                extra = re.sub(r\"COLLATE [\\w\\d]+\\s*\", \"\", extra.replace(\"unsigned\", \"\"))\n\n                # See if it needs type conversion\n                final_type = None\n                set_sequence = None\n                if type.startswith(\"tinyint(\"):\n                    type = \"int4\"\n                    set_sequence = True\n                    final_type = \"boolean\"\n                elif type.startswith(\"int(\"):\n                    type = \"integer\"\n                    set_sequence = True\n                elif type.startswith(\"bigint(\"):\n                    type = \"bigint\"\n                    set_sequence = True\n                elif type == \"longtext\":\n                    type = \"text\"\n                elif type == \"mediumtext\":\n                    type = \"text\"\n                elif type == \"tinytext\":\n                    type = \"text\"\n                elif type.startswith(\"varchar(\"):\n                    size = int(type.split(\"(\")[1].rstrip(\")\"))\n                    type = \"varchar(%s)\" % (size * 2)\n                elif type.startswith(\"smallint(\"):\n                    type = \"int2\"\n                    set_sequence = True\n                elif type == \"datetime\":\n                    type = \"timestamp with time zone\"\n                elif type == \"double\":\n                    type = \"double precision\"\n                elif type.endswith(\"blob\"):\n                    type = \"bytea\"\n                elif type.startswith(\"enum(\") or type.startswith(\"set(\"):\n\n                    types_str = type.split(\"(\")[1].rstrip(\")\").rstrip('\"')\n                    types_arr = [type_str.strip('\\'') for type_str in types_str.split(\",\")]\n\n                    # Considered using values to make a name, but its dodgy\n                    # enum_name = '_'.join(types_arr)\n                    enum_name = \"{0}_{1}\".format(current_table, name)\n\n                    if enum_name not in enum_types:\n                        output.write(\"CREATE TYPE {0} AS ENUM ({1}); \\n\".format(enum_name, types_str));\n                        enum_types.append(enum_name)\n\n                    type = enum_name\n\n                if final_type:\n                    cast_lines.append(\"ALTER TABLE \\\"%s\\\" ALTER COLUMN \\\"%s\\\" DROP DEFAULT, ALTER COLUMN \\\"%s\\\" TYPE %s USING CAST(\\\"%s\\\" as %s)\" % (current_table, name, name, final_type, name, final_type))\n                # ID fields need sequences [if they are integers?]\n                if name == \"id\" and set_sequence is True:\n                    sequence_lines.append(\"CREATE SEQUENCE %s_id_seq\" % (current_table))\n                    sequence_lines.append(\"SELECT setval('%s_id_seq', max(id)) FROM %s\" % (current_table, current_table))\n                    sequence_lines.append(\"ALTER TABLE \\\"%s\\\" ALTER COLUMN \\\"id\\\" SET DEFAULT nextval('%s_id_seq')\" % (current_table, current_table))\n                # Record it\n                creation_lines.append('\"%s\" %s %s' % (name, type, extra))\n                tables[current_table]['columns'].append((name, type, extra))\n            # Is it a constraint or something?\n            elif line.startswith(\"PRIMARY KEY\"):\n                creation_lines.append(line.rstrip(\",\"))\n            elif line.startswith(\"CONSTRAINT\"):\n                foreign_key_lines.append(\"ALTER TABLE \\\"%s\\\" ADD CONSTRAINT %s DEFERRABLE INITIALLY DEFERRED\" % (current_table, line.split(\"CONSTRAINT\")[1].strip().rstrip(\",\")))\n                foreign_key_lines.append(\"CREATE INDEX ON \\\"%s\\\" %s\" % (current_table, line.split(\"FOREIGN KEY\")[1].split(\"REFERENCES\")[0].strip().rstrip(\",\")))\n            elif line.startswith(\"UNIQUE KEY\"):\n                creation_lines.append(\"UNIQUE (%s)\" % line.split(\"(\")[1].split(\")\")[0])\n            elif line.startswith(\"FULLTEXT KEY\"):\n\n                fulltext_keys = \" || ' ' || \".join( line.split('(')[-1].split(')')[0].replace('\"', '').split(',') )\n                fulltext_key_lines.append(\"CREATE INDEX ON %s USING gin(to_tsvector('english', %s))\" % (current_table, fulltext_keys))\n\n            elif line.startswith(\"KEY\"):\n                pass\n            # Is it the end of the table?\n            elif line == \");\":\n                output.write(\"CREATE TABLE \\\"%s\\\" (\\n\" % current_table)\n                for i, line in enumerate(creation_lines):\n                    output.write(\"    %s%s\\n\" % (line, \",\" if i != (len(creation_lines) - 1) else \"\"))\n                output.write(');\\n\\n')\n                current_table = None\n            # ???\n            else:\n                print(\"\\n ! Unknown line inside table creation: {}\".format(line))\n\n\n    # Finish file\n    output.write(\"\\n-- Post-data save --\\n\")\n    output.write(\"COMMIT;\\n\")\n    output.write(\"START TRANSACTION;\\n\")\n\n    # Write typecasts out\n    output.write(\"\\n-- Typecasts --\\n\")\n    for line in cast_lines:\n        output.write(\"%s;\\n\" % line)\n\n    # Write FK constraints out\n    output.write(\"\\n-- Foreign keys --\\n\")\n    for line in foreign_key_lines:\n        output.write(\"%s;\\n\" % line)\n\n    # Write sequences out\n    output.write(\"\\n-- Sequences --\\n\")\n    for line in sequence_lines:\n        output.write(\"%s;\\n\" % line)\n\n    # Write full-text indexkeyses out\n    output.write(\"\\n-- Full Text keys --\\n\")\n    for line in fulltext_key_lines:\n        output.write(\"%s;\\n\" % line)\n\n    # Finish file\n    output.write(\"\\n\")\n    output.write(\"COMMIT;\\n\")\n    print(\"\")\n\n\nif __name__ == \"__main__\":\n    parse(sys.argv[1], sys.argv[2])\n"
  },
  {
    "path": "application/tools/app_import_sql.sh",
    "content": "#!/bin/sh\nsource /application/tools/dbinit.sh\n\nmkdir -p /application/sql/psql\nmkdir -p /application/cache/authors\nmkdir -p /application/cache/covers\nmkdir -p /application/cache/tmp\n\necho \"Распаковка sql.gz\">/application/sql/status\ngzip -f -d /application/sql/*.gz\n\n/application/tools/app_topg lib.a.annotations_pics.sql\n/application/tools/app_topg lib.b.annotations_pics.sql\n/application/tools/app_topg lib.a.annotations.sql\n/application/tools/app_topg lib.b.annotations.sql\n/application/tools/app_topg lib.libavtorname.sql\n/application/tools/app_topg lib.libavtor.sql\n/application/tools/app_topg lib.libbook.sql\n/application/tools/app_topg lib.libfilename.sql\n/application/tools/app_topg lib.libgenrelist.sql\n/application/tools/app_topg lib.libgenre.sql\n/application/tools/app_topg lib.libjoinedbooks.sql\n/application/tools/app_topg lib.librate.sql\n/application/tools/app_topg lib.librecs.sql\n/application/tools/app_topg lib.libseqname.sql\n/application/tools/app_topg lib.libseq.sql\n/application/tools/app_topg lib.libtranslator.sql\n/application/tools/app_topg lib.reviews.sql\n\necho \"Подчистка БД. Стираем авторов, серии и жанры у которых нет ни одной книги\" >>/application/sql/status\n$SQL_CMD -f /application/tools/cleanup_db.sql\n\necho \"Обновление полнотекстовых индексов\">>/application/sql/status\n$SQL_CMD -f /application/tools/update_vectors.sql\n\necho \"Создание индекса zip-файлов\">>/application/sql/status\nphp /application/tools/app_update_zip_list.php\n\necho \"\">/application/sql/status\n\n"
  },
  {
    "path": "application/tools/app_reindex.sh",
    "content": "#!/bin/sh\necho \"Создание индекса zip-файлов\">>/application/sql/status\nphp /application/tools/app_update_zip_list.php\n\necho \"\">/application/sql/status\n\n\n"
  },
  {
    "path": "application/tools/app_topg",
    "content": "#/bin/sh\necho \"Конвертация $1\">>/application/sql/status\nif ! grep -q INSERT \"/application/sql/$1\"; then   \n  echo \"Empty table\">>/application/sql/status;\n  exit 1\nfi\n\n\n\nxtable=\"cat /application/sql/$1|grep 'CREATE TABLE'|awk '{print \\$3}'| sed 's/^.//;s/.$//'\"\ntable=$(eval \"$xtable\")\n\necho $1\necho \"TRUNCATE $table;\">/application/sql/tmp.sql\necho $table\ncat /application/sql/$1|grep INSERT|tr -d \\`|sed \"s/$table/$table/g\">>/application/sql/tmp.sql\n/application/tools/app_db_converter.py /application/sql/tmp.sql /application/sql/psql/$1\nrm /application/sql/tmp.sql\n\necho \"Импорт $1\">>/application/sql/status\n$SQL_CMD -f /application/sql/psql/$1\n\n"
  },
  {
    "path": "application/tools/app_update_zip_list.php",
    "content": "<?php\nerror_reporting(E_ALL);\ninclude('../dbinit.php');\n\nif ($handle = opendir('/application/flibusta')) {\n\t$stmt = $dbh->prepare(\"TRUNCATE book_zip;\");\n\t$stmt->execute();\n\n\t$dbh->beginTransaction();\n\n\twhile (false !== ($entry = readdir($handle))) {   \n\t\tif (strpos($entry, \"-\") !== false && strpos($entry, \".zip\") !== false && substr($entry, -9) !== \".zip.part\") {\n        \t\t$dt = str_replace(\".zip\", \"\", $entry);\n\t\t        $dt = str_replace(\"f.n.\", \"f.n-\", $dt);\n        \t\t$dt = str_replace(\"f.fb2.\", \"f.n-\", $dt);\n\t\t\techo \"[$dt]\";\n\t\t        $fn = explode(\"-\", $dt);\n\t\t\t$u = 1;\n\t\t\tif (strpos($entry, \"fb2\") !== false) {\n\t\t\t\t$u = 0;\n\t\t\t}\n\t\t\tif (strpos($entry, \"d.fb2-009\") !== false) {\n\t\t\t} else {\n\t\t\t\t$stmt = $dbh->prepare(\"INSERT INTO book_zip (filename, start_id, end_id, usr) VALUES (:fn, :start, :end, :usr)\");\n\t\t\t\t$stmt->bindParam(\":fn\", $entry);\n\t\t\t\t$stmt->bindParam(\":start\", $fn[1]);\n\t\t\t\t$stmt->bindParam(\":end\", $fn[2]);\n\t\t\t\t$stmt->bindParam(\":usr\", $u);\n\t\t\t\t$stmt->execute();\n\t\t\t}\n\t\t}\n\t\techo \"\\n\";\n\t}\n\t$dbh->commit();\n\tclosedir($handle);\n}\n"
  },
  {
    "path": "application/tools/cleanup_db.sql",
    "content": "delete from libgenrelist where not exists (select 1 from libgenre where libgenrelist.genreid = libgenre.genreid);\ndelete from libseqname where not exists ( select 1 from libseq where libseqname.seqid = libseq.seqid);\ndelete from libavtorname where not exists (select 1 from libavtor where libavtorname.avtorid = libavtor.avtorid);\n"
  },
  {
    "path": "application/tools/dbinit.sh",
    "content": "#!/bin/sh\n\nif [ -z \"$FLIBUSTA_DBNAME\" ]; then\n  export FLIBUSTA_DBNAME=flibusta\nfi\n\nif [ -z \"$FLIBUSTA_DBHOST\" ]; then\n  export FLIBUSTA_DBHOST=postgres\nfi\n\nif [ -z \"$FLIBUSTA_DBUSER\" ]; then\n  export FLIBUSTA_DBUSER=flibusta\nfi\n\nif [ -z \"$FLIBUSTA_DBTYPE\" ] || [ \"$FLIBUSTA_DBTYPE\" == 'postgres' ]; then\n  export SQL_CMD=\"psql -h $FLIBUSTA_DBHOST -d $FLIBUSTA_DBNAME -U $FLIBUSTA_DBUSER\"\n  export SQL_PASSWORD_VAR=PGPASSWORD\n\n  if [ ! -z \"$FLIBUSTA_DBPASSWORD_FILE\" ] && [ -e $FLIBUSTA_DBPASSWORD_FILE ]; then\n    FPGPASSWORD=`cat $FLIBUSTA_DBPASSWORD_FILE`\n  fi\n\n  if [ ! -z \"$FLIBUSTA_DBPASSWORD\" ] && [ -z \"$FPGPASSWORD\" ]; then\n    FPGPASSWORD=$FLIBUSTA_DBPASSWORD\n  fi\n\n  if [ ! -z \"$FPGPASSWORD\" ]; then\n    export PGPASSWORD=$FPGPASSWORD\n  fi\n\n  if [ -z \"$PGPASSWORD\" ]; then\n    export PGPASSWORD=flibusta\n  fi\nfi\n"
  },
  {
    "path": "application/tools/external_services_config/README.md",
    "content": "# Конфигурация docker container для работы с reverse proxy и внешним сервером базы данных\n\n## Почему Вы можете предпочесть такую конфигурацию\n\nГлавное преимущество конфигурации с reverse proxy и внешним сервером базы данных- это экономия ресурсов. Как правило ресурсы NAS довольно ограничены, а дополнительные процессы потребляют память и CPU которому  вероятно есть более полезное применение.\n\n\"Обычный\" docker-compose.yaml определяет 3 сервиса,  бекенд на php-fpm , база данных Postgres и nginx в качестве front end.  Вместо 2 последних можно использовать существующие сервисы, если они есть. Сервисы не зависят друг от друга, так что можмо \"экстернализаровать\" оба или только один.\n\n## Работа с внешней Postgres базой данных.\nЕсть 2 главных отличия в конфигурации внешней и \"внутренней\" базы данных.\n1.  При использовании внутренней базы данных  для траффика между бекендом о БД используется default netwrok автоматически определяемая Docker engine для каждого  docker-compose file. Если БД определена в другом файле, нужно явным образом разрешить коммуникацию межды сервисами. Это делается с помощью explicite network, в [docker-compose.yaml](docker-compose.yaml) из этой директории такой сетью служит postgres_db_net. Сеть с таким же именем дожна быть определана в файле определения сервиса постгресс и эта сеть должна быть прописана в списке сетей для сервиса (конфигурация практически идентична той что есть в примере в этой директории). В таком случае можно создать сеть отдельно, с помощью docker network create (Кроме того во многих GUI/ web interface есть возможность определить такую сеть без command line). Затем можно определить ее как external во всех релевантных docker compose files..\n2. Образ созданный в главном docker-compose, определяет юзера БД, таблицы, индексы и т.д. во время создания image. В случае с внешней базой все необходимое должно быть создано при запуске контейнера бекенда Флибусты. Для этого слижит скрипт flibusta_entrypoint.sh . Скрипт проверяет есть ли postgres account определенный как FLIBUSTA_DBUSER в environment docker_compose.yml (default - account flibusta, password - flibusta). Если удается подключиться с таким юзером к БД, скрипт считает что инитиализация уже состоялась при прошлых запусках. Если такая попытка не успешна, скрипт пытается инитиализировать нужные обьекты : создается счет с именем  из переменной окружения FLIBUSTA_DBUSER ( default flibusta) и паролем из /run/secrets/FLIBUSTA_PWD, создается база данных и в ней все нужные таблицы, индексы и т.д. Создание нового счета и базы данных - это привeлигированные опреации, для них используется счет с именем из POSTGRES_ADMIN_USER (default - postgres) и паролем из фаила указанного в POSTGRES_ADMIN_DBPASSWORD_FILE . Проверьте что этот account  имеет необходимые  grants... Административный account используется толкько в скрипте и только если скрипт решает что инициализация необходима. После успешной инициализации можно заменить пароль в POSTGRES_ADMIN_DBPASSWORD_FILE на неправильный если Вы боитесь компрометации этого счета.\n\n\n## Работа с reverse proxy\n\nСуществуют 2 наиболее распространненых типа подключения к  reverse proxy : subdomain и subdir . При подключении как subdomain, ресурс ( в данном случае библиотека)  для адреса https://example.com будет доступна как https://mylib.example.com/ . При подключении как subdir адрес библиотеки https://example.com/mylib. Второй вариант конфигурации ПМСМ сложнее, и поэтому здесь обьясняется именно он.\n\nВ качестве reverse proxy в примере в данной директории используется nginx . Если у Вас другой reverse proxy, вместо nginx конфигурации flibusta.conf Вам нужно будет использовать конфигурационные файлы специфичные для Вашего proxy.\nВ конфигурации в этой директории используется вариант subdir. Для адреса она будет доступна как https://addres of my server/mylib . \n\nДля конфигурации используются следующие значения\n1.  /mylib - путь до \"корня\" библиотеки. Определяется переменной FLIBUSTA_WEBROOT в environment сервиса flibusta-fpm в  docker_compose.yml\n2. flibusta_net - сеть по которой backend  и  reverse proxy связываются, и определяется subnet 172.101.0.0/16\n3. 172.101.0.101 адрес бекенда   ( должен быть адресом в сети из предыдущего пункта), задается параметром  ipv4_address сервиса flibusta-fpm\n4. 192.168.1.0/24 -локальная сеть . Это значение используется для контроля доступа ( см. обсуждение ниже)  в директиве \n```\nallow 192.168.1.0/24;\n```\n в конфигурации flibusta.conf для nginx.\n5. Файлы из  application/public доступны в докер контейнере nginx как /srv/mylib\n\nШаги для конфигурации работы с reverse proxy\n1. Создайте docker netwrork с именем flibusta_net и subnet 172.101.0.0/16 . Важно чтобы subnet соответствовал адресу flibusta-fpm, который прописан в nginx конфигурационном файле flibusta.conf. Добавьте эту сеть в докер контейнер nginx как external  (похоже на то как она определена в docker-compose.yml из этой директории)\n2. Добавьте  volume /srv/mylib : \n\n```\n- <path to flibusta files>/flibusta/application/public:/srv/mylib:v,ro\n```\n3. Добавьте (предпологается что конфигурация внутри докера находится в /config/nginx, если нет, например часто бывает /etc/etc/config/nginx , соответственно измените  mount) \n\n```\n- <path to flibusta>/flibusta/application/tools/external_services_config/flibusta.conf:/config/nginx/flibusta.conf:v,ro\n```\n  и сделайте   include конфиг файла flibusta.conf в  server блок в конфигурации nginx, скорее всего конфигурация находится в /config/nginx/site-confs/default.conf  или /etc/config/nginx/site-conf/default.conf \n\n```\n# main server block\nserver {\n\n    listen 443 ssl default_server;\n    listen [::]:443 ssl default_server;\n    http2 on;\n\n.......................\n\n   location <something> {\n\n   }\n\n   location <something else> {\n\n   }\n\n   include /config/nginx/flibusta.conf;\n\n   .......\n\n}\n ```\n\n ## Доступ к Вашему зеркалу Флибусты\n\n reverse proxy скорее всего дает доступ из интернета к Вашим сервисам ( он скорее всего и нужен чтобы  был доступ к докер контейнерам на Вашем NAS). Я думаю , понятно, что предоставлять неконтролируемый доступ всему интернету к Вашему зеркалу Флибусты не очень хорошая идея. Nginx позволяет давать доступ к определенному ресурсу ( например к директории https://my address/mylib) только определенный  IP адресам или только авторизированным пользователям. flibusta.conf ограничевает дотуп только локальными адресами ( из сети 192.168.1.0/24). Если subnet вашей домашней сети другой - соответственным образом измените файл. Для доступа к библеотеке из интернета для авторизованных пользователей проще всего воспользоваться механизмом Basic authenitcation ( htpassword) примерно так\n ```\nlocation ^~ /mylib {\n    #...\n    satisfy any;\n    allow 192.168.1.0/24;\n    deny  all;\n\n    auth_basic \"Flibusta forever\";\n    auth_basic_user_file conf/htpasswd;\n    ...\n}\n ```\n\n"
  },
  {
    "path": "application/tools/external_services_config/docker-compose.yml",
    "content": "services:\n\n   flibusta-fpm:\n        build: phpdocker/php-fpm\n        working_dir: /application\n        container_name: flibusta-fpm\n        environment:\n           - PUID=${APPUSER_PUID}\n           - PGID=${APPUSER_PGID}\n           - TZ=${TIME_ZONE_VALUE}\n           - FLIBUSTA_WEBROOT=/mylib\n           - FLIBUSTA_DBUSER=flibusta\n           - FLIBUSTA_DBNAME=flibusta\n           - FLIBUSTA_DBTYPE=postgres\n           - FLIBUSTA_DBHOST=postgresdb\n           - FLIBUSTA_DBPASSWORD_FILE=/run/secrets/FLIBUSTA_PWD\n           - POSTGRES_ADMIN_USER=postgres\n           - POSTGRES_ADMIN_DBPASSWORD_FILE=/run/secrets/POSTGRES_ADMIN_PWD\n           - DB_HOST_PINGS=3\n        command: /application/tools/external_services_config/flibusta_entrypoint.sh\n        networks:\n           flibusta_net:\n             ipv4_address: 172.101.0.101\n           postgres_db_net:\n        volumes:\n            - './application:/application'\n            - './cache:/application/cache'\n            - './Flibusta.Net:/application/flibusta'\n            - './FlibustaSQL:/application/sql'\n            - './phpdocker/php-fpm/php-ini-overrides.ini:/usr/local/etc/php/conf.d/local-custom.ini'\n            - './phpdocker/php-fpm/php-fpm.conf:/usr/local/etc/php-fpm.d/zz-php-fpm.conf'\n            - './FlibustaSQL/lib.a.attached.zip:/application/cache/lib.a.attached.zip:ro'\n            - './FlibustaSQL/lib.b.attached.zip:/application/cache/lib.b.attached.zip:ro'\n        secrets:\n            - FLIBUSTA_PWD\n            - POSTGRES_ADMIN_PWD\n\nsecrets:\n   FLIBUSTA_PWD:\n      file: ./secrets/flibusta_pwd.txt\n   POSTGRES_ADMIN_PWD:\n      file: ./secrets/postgres_admin_pwd.txt\n\nnetworks:\n   postgres_db_net:\n     external: true\n   flibusta_net:\n     external: true\n"
  },
  {
    "path": "application/tools/external_services_config/external_postgres_init.sql",
    "content": "-- parameters of the script FLIBUSTA_DBUSER FLIBUSTA_DBPASSWORD FLIBUSTA_DBNAME\n--                                                                          \n\nselect :'FLIBUSTA_DBNAME' as DBNAME, :'FLIBUSTA_DBPASSWORD' as password, :'FLIBUSTA_DBUSER' as DBUSER;\n                                                                        \ncreate database :FLIBUSTA_DBNAME;                                           \ncreate user :FLIBUSTA_DBUSER with encrypted password :'FLIBUSTA_DBPASSWORD';\ngrant all privileges on database :FLIBUSTA_DBNAME to :FLIBUSTA_DBUSER;\n\\connect :FLIBUSTA_DBNAME\ngrant all privileges on schema public to :FLIBUSTA_DBUSER;\n\n--\n-- PostgreSQL database dump\n--\n\n-- Dumped from database version 13.4 (Debian 13.4-4.pgdg110+1)\n-- Dumped by pg_dump version 13.6\n\n-- Started on 2022-03-30 10:39:37 UTC\n\nSET statement_timeout = 0;\nSET lock_timeout = 0;\nSET idle_in_transaction_session_timeout = 0;\nSET client_encoding = 'UTF8';\nSET standard_conforming_strings = on;\nSELECT pg_catalog.set_config('search_path', '', false);\nSET check_function_bodies = false;\nSET xmloption = content;\nSET client_min_messages = warning;\nSET row_security = off;\n\n--\n-- TOC entry 2 (class 3079 OID 16386)\n-- Name: pg_trgm; Type: EXTENSION; Schema: -; Owner: -\n--\n\nCREATE EXTENSION IF NOT EXISTS pg_trgm WITH SCHEMA public;\n\n\n--\n-- TOC entry 3276 (class 0 OID 0)\n-- Dependencies: 2\n-- Name: EXTENSION pg_trgm; Type: COMMENT; Schema: -; Owner: \n--\n\nCOMMENT ON EXTENSION pg_trgm IS 'text similarity measurement and index searching based on trigrams';\n\n\n--\n-- TOC entry 3 (class 3079 OID 2183851)\n-- Name: uuid-ossp; Type: EXTENSION; Schema: -; Owner: -\n--\n\nCREATE EXTENSION IF NOT EXISTS \"uuid-ossp\" WITH SCHEMA public;\n\n\n--\n-- TOC entry 3277 (class 0 OID 0)\n-- Dependencies: 3\n-- Name: EXTENSION \"uuid-ossp\"; Type: COMMENT; Schema: -; Owner: \n--\n\nCOMMENT ON EXTENSION \"uuid-ossp\" IS 'generate universally unique identifiers (UUIDs)';\n\n\nSET default_tablespace = '';\n\nSET default_table_access_method = heap;\n\n--\n-- TOC entry 202 (class 1259 OID 16490)\n-- Name: book_zip; Type: TABLE; Schema: public; Owner: flibusta\n--\n\nCREATE TABLE public.book_zip (\n    id bigint NOT NULL,\n    filename character varying(64) NOT NULL,\n    start_id bigint NOT NULL,\n    end_id bigint NOT NULL,\n    usr bigint DEFAULT '0'::bigint NOT NULL\n);\n\n\nALTER TABLE public.book_zip OWNER TO flibusta;\n\n--\n-- TOC entry 203 (class 1259 OID 16494)\n-- Name: book_zip_id_seq; Type: SEQUENCE; Schema: public; Owner: flibusta\n--\n\nCREATE SEQUENCE public.book_zip_id_seq\n    START WITH 1\n    INCREMENT BY 1\n    NO MINVALUE\n    NO MAXVALUE\n    CACHE 1;\n\n\nALTER TABLE public.book_zip_id_seq OWNER TO flibusta;\n\n--\n-- TOC entry 3278 (class 0 OID 0)\n-- Dependencies: 203\n-- Name: book_zip_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: flibusta\n--\n\nALTER SEQUENCE public.book_zip_id_seq OWNED BY public.book_zip.id;\n\n\n--\n-- TOC entry 237 (class 1259 OID 206113)\n-- Name: fav; Type: TABLE; Schema: public; Owner: flibusta\n--\n\nCREATE TABLE public.fav (\n    id integer NOT NULL,\n    user_uuid uuid,\n    bookid bigint,\n    avtorid bigint,\n    seqid bigint\n);\n\n\nALTER TABLE public.fav OWNER TO flibusta;\n\n--\n-- TOC entry 236 (class 1259 OID 206111)\n-- Name: fav_id_seq; Type: SEQUENCE; Schema: public; Owner: flibusta\n--\n\nCREATE SEQUENCE public.fav_id_seq\n    AS integer\n    START WITH 1\n    INCREMENT BY 1\n    NO MINVALUE\n    NO MAXVALUE\n    CACHE 1;\n\n\nALTER TABLE public.fav_id_seq OWNER TO flibusta;\n\n--\n-- TOC entry 3279 (class 0 OID 0)\n-- Dependencies: 236\n-- Name: fav_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: flibusta\n--\n\nALTER SEQUENCE public.fav_id_seq OWNED BY public.fav.id;\n\n\n--\n-- TOC entry 238 (class 1259 OID 206121)\n-- Name: fav_users; Type: TABLE; Schema: public; Owner: flibusta\n--\n\nCREATE TABLE public.fav_users (\n    user_uuid uuid NOT NULL,\n    name character varying(32) NOT NULL\n);\n\n\nALTER TABLE public.fav_users OWNER TO flibusta;\n\n--\n-- TOC entry 204 (class 1259 OID 16530)\n-- Name: libaannotations; Type: TABLE; Schema: public; Owner: flibusta\n--\n\nCREATE TABLE public.libaannotations (\n    avtorid bigint NOT NULL,\n    nid bigint NOT NULL,\n    title character varying(255) NOT NULL,\n    body text\n);\n\n\nALTER TABLE public.libaannotations OWNER TO flibusta;\n\n--\n-- TOC entry 205 (class 1259 OID 16536)\n-- Name: libapics; Type: TABLE; Schema: public; Owner: flibusta\n--\n\nCREATE TABLE public.libapics (\n    avtorid bigint NOT NULL,\n    nid bigint NOT NULL,\n    file character varying(255) NOT NULL\n);\n\n\nALTER TABLE public.libapics OWNER TO flibusta;\n\n--\n-- TOC entry 206 (class 1259 OID 16539)\n-- Name: libavtor; Type: TABLE; Schema: public; Owner: flibusta\n--\n\nCREATE TABLE public.libavtor (\n    bookid bigint DEFAULT '0'::bigint NOT NULL,\n    avtorid bigint DEFAULT '0'::bigint NOT NULL,\n    pos smallint DEFAULT '0'::smallint NOT NULL\n);\n\n\nALTER TABLE public.libavtor OWNER TO flibusta;\n\n--\n-- TOC entry 207 (class 1259 OID 16545)\n-- Name: libavtoraliase; Type: TABLE; Schema: public; Owner: flibusta\n--\n\nCREATE TABLE public.libavtoraliase (\n    aliaseid bigint NOT NULL,\n    badid bigint DEFAULT '0'::bigint NOT NULL,\n    goodid bigint DEFAULT '0'::bigint NOT NULL\n);\n\n\nALTER TABLE public.libavtoraliase OWNER TO flibusta;\n\n--\n-- TOC entry 208 (class 1259 OID 16550)\n-- Name: libavtoraliase_aliaseid_seq; Type: SEQUENCE; Schema: public; Owner: flibusta\n--\n\nCREATE SEQUENCE public.libavtoraliase_aliaseid_seq\n    START WITH 1\n    INCREMENT BY 1\n    NO MINVALUE\n    NO MAXVALUE\n    CACHE 1;\n\n\nALTER TABLE public.libavtoraliase_aliaseid_seq OWNER TO flibusta;\n\n--\n-- TOC entry 3280 (class 0 OID 0)\n-- Dependencies: 208\n-- Name: libavtoraliase_aliaseid_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: flibusta\n--\n\nALTER SEQUENCE public.libavtoraliase_aliaseid_seq OWNED BY public.libavtoraliase.aliaseid;\n\n\n--\n-- TOC entry 209 (class 1259 OID 16552)\n-- Name: libavtorname; Type: TABLE; Schema: public; Owner: flibusta\n--\n\nCREATE TABLE public.libavtorname (\n    avtorid bigint NOT NULL,\n    firstname character varying(99) DEFAULT ''::character varying NOT NULL,\n    middlename character varying(99) DEFAULT ''::character varying NOT NULL,\n    lastname character varying(99) DEFAULT ''::character varying NOT NULL,\n    nickname character varying(33) DEFAULT ''::character varying NOT NULL,\n    uid bigint DEFAULT '0'::bigint NOT NULL,\n    email character varying(255) NOT NULL,\n    homepage character varying(255) NOT NULL,\n    gender character(1) DEFAULT ''::bpchar NOT NULL,\n    masterid bigint DEFAULT '0'::bigint NOT NULL\n);\n\n\nALTER TABLE public.libavtorname OWNER TO flibusta;\n\n--\n-- TOC entry 210 (class 1259 OID 16565)\n-- Name: libavtorname_avtorid_seq; Type: SEQUENCE; Schema: public; Owner: flibusta\n--\n\nCREATE SEQUENCE public.libavtorname_avtorid_seq\n    START WITH 1\n    INCREMENT BY 1\n    NO MINVALUE\n    NO MAXVALUE\n    CACHE 1;\n\n\nALTER TABLE public.libavtorname_avtorid_seq OWNER TO flibusta;\n\n--\n-- TOC entry 3281 (class 0 OID 0)\n-- Dependencies: 210\n-- Name: libavtorname_avtorid_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: flibusta\n--\n\nALTER SEQUENCE public.libavtorname_avtorid_seq OWNED BY public.libavtorname.avtorid;\n\n\n--\n-- TOC entry 211 (class 1259 OID 16567)\n-- Name: libavtorname_ts; Type: TABLE; Schema: public; Owner: flibusta\n--\n\nCREATE TABLE public.libavtorname_ts (\n    avtorid bigint NOT NULL,\n    vector tsvector\n);\n\n\nALTER TABLE public.libavtorname_ts OWNER TO flibusta;\n\n--\n-- TOC entry 212 (class 1259 OID 16573)\n-- Name: libbannotations; Type: TABLE; Schema: public; Owner: flibusta\n--\n\nCREATE TABLE public.libbannotations (\n    bookid bigint NOT NULL,\n    nid bigint NOT NULL,\n    title character varying(255) NOT NULL,\n    body text\n);\n\n\nALTER TABLE public.libbannotations OWNER TO flibusta;\n\n--\n-- TOC entry 213 (class 1259 OID 16579)\n-- Name: libbook; Type: TABLE; Schema: public; Owner: flibusta\n--\n\nCREATE TABLE public.libbook (\n    bookid bigint NOT NULL,\n    filesize bigint DEFAULT '0'::bigint NOT NULL,\n    \"time\" timestamp with time zone DEFAULT CURRENT_TIMESTAMP NOT NULL,\n    title character varying(254) DEFAULT ''::character varying NOT NULL,\n    title1 character varying(254) NOT NULL,\n    lang character(3) DEFAULT 'ru'::bpchar NOT NULL,\n    langex integer DEFAULT 0 NOT NULL,\n    srclang character(3) DEFAULT ''::bpchar NOT NULL,\n    filetype character(4) NOT NULL,\n    encoding character varying(32) DEFAULT ''::character varying NOT NULL,\n    year smallint DEFAULT '0'::smallint NOT NULL,\n    deleted character(1) DEFAULT '0'::bpchar NOT NULL,\n    ver character varying(8) DEFAULT ''::character varying NOT NULL,\n    fileauthor character varying(64) NOT NULL,\n    n bigint DEFAULT '0'::bigint NOT NULL,\n    keywords character varying(255) NOT NULL,\n    md5 bytea NOT NULL,\n    modified timestamp with time zone DEFAULT '2009-11-29 05:00:00+00'::timestamp with time zone NOT NULL,\n    pmd5 character(32) DEFAULT ''::bpchar NOT NULL,\n    infocode smallint DEFAULT '0'::smallint NOT NULL,\n    pages bigint DEFAULT '0'::bigint NOT NULL,\n    chars bigint DEFAULT '0'::bigint NOT NULL\n);\n\n\nALTER TABLE public.libbook OWNER TO flibusta;\n\n--\n-- TOC entry 214 (class 1259 OID 16601)\n-- Name: libbook_bookid_seq; Type: SEQUENCE; Schema: public; Owner: flibusta\n--\n\nCREATE SEQUENCE public.libbook_bookid_seq\n    START WITH 1\n    INCREMENT BY 1\n    NO MINVALUE\n    NO MAXVALUE\n    CACHE 1;\n\n\nALTER TABLE public.libbook_bookid_seq OWNER TO flibusta;\n\n--\n-- TOC entry 3282 (class 0 OID 0)\n-- Dependencies: 214\n-- Name: libbook_bookid_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: flibusta\n--\n\nALTER SEQUENCE public.libbook_bookid_seq OWNED BY public.libbook.bookid;\n\n\n--\n-- TOC entry 215 (class 1259 OID 16603)\n-- Name: libbook_ts; Type: TABLE; Schema: public; Owner: flibusta\n--\n\nCREATE TABLE public.libbook_ts (\n    bookid bigint NOT NULL,\n    vector tsvector\n);\n\n\nALTER TABLE public.libbook_ts OWNER TO flibusta;\n\n--\n-- TOC entry 216 (class 1259 OID 16609)\n-- Name: libbpics; Type: TABLE; Schema: public; Owner: flibusta\n--\n\nCREATE TABLE public.libbpics (\n    bookid bigint NOT NULL,\n    nid bigint NOT NULL,\n    file character varying(255) NOT NULL\n);\n\n\nALTER TABLE public.libbpics OWNER TO flibusta;\n\n--\n-- TOC entry 217 (class 1259 OID 16612)\n-- Name: libfilename; Type: TABLE; Schema: public; Owner: flibusta\n--\n\nCREATE TABLE public.libfilename (\n    bookid bigint NOT NULL,\n    filename character varying(255) NOT NULL\n);\n\n\nALTER TABLE public.libfilename OWNER TO flibusta;\n\n--\n-- TOC entry 218 (class 1259 OID 16615)\n-- Name: libgenre; Type: TABLE; Schema: public; Owner: flibusta\n--\n\nCREATE TABLE public.libgenre (\n    id bigint NOT NULL,\n    bookid bigint DEFAULT '0'::bigint NOT NULL,\n    genreid bigint DEFAULT '0'::bigint NOT NULL\n);\n\n\nALTER TABLE public.libgenre OWNER TO flibusta;\n\n--\n-- TOC entry 219 (class 1259 OID 16620)\n-- Name: libgenre_id_seq; Type: SEQUENCE; Schema: public; Owner: flibusta\n--\n\nCREATE SEQUENCE public.libgenre_id_seq\n    START WITH 1\n    INCREMENT BY 1\n    NO MINVALUE\n    NO MAXVALUE\n    CACHE 1;\n\n\nALTER TABLE public.libgenre_id_seq OWNER TO flibusta;\n\n--\n-- TOC entry 3283 (class 0 OID 0)\n-- Dependencies: 219\n-- Name: libgenre_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: flibusta\n--\n\nALTER SEQUENCE public.libgenre_id_seq OWNED BY public.libgenre.id;\n\n\n--\n-- TOC entry 220 (class 1259 OID 16622)\n-- Name: libgenrelist; Type: TABLE; Schema: public; Owner: flibusta\n--\n\nCREATE TABLE public.libgenrelist (\n    genreid bigint NOT NULL,\n    genrecode character varying(45) DEFAULT ''::character varying NOT NULL,\n    genredesc character varying(99) DEFAULT ''::character varying NOT NULL,\n    genremeta character varying(45) DEFAULT ''::character varying NOT NULL\n);\n\n\nALTER TABLE public.libgenrelist OWNER TO flibusta;\n\n--\n-- TOC entry 221 (class 1259 OID 16628)\n-- Name: libgenrelist_genreid_seq; Type: SEQUENCE; Schema: public; Owner: flibusta\n--\n\nCREATE SEQUENCE public.libgenrelist_genreid_seq\n    START WITH 1\n    INCREMENT BY 1\n    NO MINVALUE\n    NO MAXVALUE\n    CACHE 1;\n\n\nALTER TABLE public.libgenrelist_genreid_seq OWNER TO flibusta;\n\n--\n-- TOC entry 3284 (class 0 OID 0)\n-- Dependencies: 221\n-- Name: libgenrelist_genreid_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: flibusta\n--\n\nALTER SEQUENCE public.libgenrelist_genreid_seq OWNED BY public.libgenrelist.genreid;\n\n\n--\n-- TOC entry 222 (class 1259 OID 16630)\n-- Name: libjoinedbooks; Type: TABLE; Schema: public; Owner: flibusta\n--\n\nCREATE TABLE public.libjoinedbooks (\n    id bigint NOT NULL,\n    \"time\" timestamp with time zone DEFAULT CURRENT_TIMESTAMP NOT NULL,\n    badid bigint DEFAULT '0'::bigint NOT NULL,\n    goodid bigint DEFAULT '0'::bigint NOT NULL,\n    realid bigint\n);\n\n\nALTER TABLE public.libjoinedbooks OWNER TO flibusta;\n\n--\n-- TOC entry 223 (class 1259 OID 16636)\n-- Name: libjoinedbooks_id_seq; Type: SEQUENCE; Schema: public; Owner: flibusta\n--\n\nCREATE SEQUENCE public.libjoinedbooks_id_seq\n    START WITH 1\n    INCREMENT BY 1\n    NO MINVALUE\n    NO MAXVALUE\n    CACHE 1;\n\n\nALTER TABLE public.libjoinedbooks_id_seq OWNER TO flibusta;\n\n--\n-- TOC entry 3285 (class 0 OID 0)\n-- Dependencies: 223\n-- Name: libjoinedbooks_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: flibusta\n--\n\nALTER SEQUENCE public.libjoinedbooks_id_seq OWNED BY public.libjoinedbooks.id;\n\n\n--\n-- TOC entry 224 (class 1259 OID 16638)\n-- Name: librate; Type: TABLE; Schema: public; Owner: flibusta\n--\n\nCREATE TABLE public.librate (\n    id bigint NOT NULL,\n    bookid bigint,\n    userid bigint,\n    rate \"char\"\n);\n\n\nALTER TABLE public.librate OWNER TO flibusta;\n\n--\n-- TOC entry 225 (class 1259 OID 16641)\n-- Name: librecs; Type: TABLE; Schema: public; Owner: flibusta\n--\n\nCREATE TABLE public.librecs (\n    id bigint NOT NULL,\n    uid bigint,\n    bid bigint,\n    \"timestamp\" timestamp with time zone\n);\n\n\nALTER TABLE public.librecs OWNER TO flibusta;\n\n--\n-- TOC entry 226 (class 1259 OID 16644)\n-- Name: librecs_id_seq; Type: SEQUENCE; Schema: public; Owner: flibusta\n--\n\nCREATE SEQUENCE public.librecs_id_seq\n    START WITH 1\n    INCREMENT BY 1\n    NO MINVALUE\n    NO MAXVALUE\n    CACHE 1;\n\n\nALTER TABLE public.librecs_id_seq OWNER TO flibusta;\n\n--\n-- TOC entry 3286 (class 0 OID 0)\n-- Dependencies: 226\n-- Name: librecs_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: flibusta\n--\n\nALTER SEQUENCE public.librecs_id_seq OWNED BY public.librecs.id;\n\n\n--\n-- TOC entry 227 (class 1259 OID 16646)\n-- Name: libreviews; Type: TABLE; Schema: public; Owner: flibusta\n--\n\nCREATE TABLE public.libreviews (\n    name character varying(255) NOT NULL,\n    \"time\" timestamp with time zone,\n    bookid bigint NOT NULL,\n    text text NOT NULL\n);\n\n\nALTER TABLE public.libreviews OWNER TO flibusta;\n\n--\n-- TOC entry 228 (class 1259 OID 16652)\n-- Name: libseq; Type: TABLE; Schema: public; Owner: flibusta\n--\n\nCREATE TABLE public.libseq (\n    bookid bigint NOT NULL,\n    seqid bigint NOT NULL,\n    seqnumb bigint NOT NULL,\n    level smallint DEFAULT '0'::smallint NOT NULL,\n    \"Type\" smallint DEFAULT 0\n);\n\n\nALTER TABLE public.libseq OWNER TO flibusta;\n\n--\n-- TOC entry 235 (class 1259 OID 34060)\n-- Name: libseqname; Type: TABLE; Schema: public; Owner: flibusta\n--\n\nCREATE TABLE public.libseqname (\n    seqid bigint NOT NULL,\n    seqname character varying(254) DEFAULT ''::character varying NOT NULL\n);\n\n\nALTER TABLE public.libseqname OWNER TO flibusta;\n\n--\n-- TOC entry 229 (class 1259 OID 16663)\n-- Name: libseqname_ts; Type: TABLE; Schema: public; Owner: flibusta\n--\n\nCREATE TABLE public.libseqname_ts (\n    seqid bigint NOT NULL,\n    vector tsvector\n);\n\n\nALTER TABLE public.libseqname_ts OWNER TO flibusta;\n\n--\n-- TOC entry 230 (class 1259 OID 16669)\n-- Name: libsrclang; Type: TABLE; Schema: public; Owner: flibusta\n--\n\nCREATE TABLE public.libsrclang (\n    bookid bigint NOT NULL,\n    srclang character(2) NOT NULL\n);\n\n\nALTER TABLE public.libsrclang OWNER TO flibusta;\n\n--\n-- TOC entry 231 (class 1259 OID 16672)\n-- Name: libtranslator; Type: TABLE; Schema: public; Owner: flibusta\n--\n\nCREATE TABLE public.libtranslator (\n    bookid bigint NOT NULL,\n    translatorid bigint NOT NULL,\n    pos smallint DEFAULT '0'::smallint NOT NULL\n);\n\n\nALTER TABLE public.libtranslator OWNER TO flibusta;\n\n--\n-- TOC entry 239 (class 1259 OID 257812)\n-- Name: progress; Type: TABLE; Schema: public; Owner: flibusta\n--\n\nCREATE TABLE public.progress (\n    user_uuid uuid NOT NULL,\n    bookid bigint NOT NULL,\n    pos double precision\n);\n\n\nALTER TABLE public.progress OWNER TO flibusta;\n\n--\n-- TOC entry 232 (class 1259 OID 16684)\n-- Name: seq; Type: TABLE; Schema: public; Owner: flibusta\n--\n\nCREATE TABLE public.seq (\n    book_id integer NOT NULL,\n    seq_id integer NOT NULL,\n    num integer NOT NULL\n);\n\n\nALTER TABLE public.seq OWNER TO flibusta;\n\n--\n-- TOC entry 233 (class 1259 OID 16687)\n-- Name: seqname; Type: TABLE; Schema: public; Owner: flibusta\n--\n\nCREATE TABLE public.seqname (\n    seq_id integer NOT NULL,\n    name character varying(255) NOT NULL,\n    search_content tsvector NOT NULL\n);\n\n\nALTER TABLE public.seqname OWNER TO flibusta;\n\n--\n-- TOC entry 234 (class 1259 OID 16698)\n-- Name: translation; Type: TABLE; Schema: public; Owner: flibusta\n--\n\nCREATE TABLE public.translation (\n    book_id integer NOT NULL,\n    translator_id integer NOT NULL,\n    pos integer NOT NULL\n);\n\n\nALTER TABLE public.translation OWNER TO flibusta;\n\n--\n-- TOC entry 3001 (class 2604 OID 16707)\n-- Name: book_zip id; Type: DEFAULT; Schema: public; Owner: flibusta\n--\n\nALTER TABLE ONLY public.book_zip ALTER COLUMN id SET DEFAULT nextval('public.book_zip_id_seq'::regclass);\n\n\n--\n-- TOC entry 3049 (class 2604 OID 206116)\n-- Name: fav id; Type: DEFAULT; Schema: public; Owner: flibusta\n--\n\nALTER TABLE ONLY public.fav ALTER COLUMN id SET DEFAULT nextval('public.fav_id_seq'::regclass);\n\n\n--\n-- TOC entry 3007 (class 2604 OID 16712)\n-- Name: libavtoraliase aliaseid; Type: DEFAULT; Schema: public; Owner: flibusta\n--\n\nALTER TABLE ONLY public.libavtoraliase ALTER COLUMN aliaseid SET DEFAULT nextval('public.libavtoraliase_aliaseid_seq'::regclass);\n\n\n--\n-- TOC entry 3015 (class 2604 OID 16713)\n-- Name: libavtorname avtorid; Type: DEFAULT; Schema: public; Owner: flibusta\n--\n\nALTER TABLE ONLY public.libavtorname ALTER COLUMN avtorid SET DEFAULT nextval('public.libavtorname_avtorid_seq'::regclass);\n\n\n--\n-- TOC entry 3032 (class 2604 OID 16714)\n-- Name: libbook bookid; Type: DEFAULT; Schema: public; Owner: flibusta\n--\n\nALTER TABLE ONLY public.libbook ALTER COLUMN bookid SET DEFAULT nextval('public.libbook_bookid_seq'::regclass);\n\n\n--\n-- TOC entry 3035 (class 2604 OID 16715)\n-- Name: libgenre id; Type: DEFAULT; Schema: public; Owner: flibusta\n--\n\nALTER TABLE ONLY public.libgenre ALTER COLUMN id SET DEFAULT nextval('public.libgenre_id_seq'::regclass);\n\n\n--\n-- TOC entry 3039 (class 2604 OID 16716)\n-- Name: libgenrelist genreid; Type: DEFAULT; Schema: public; Owner: flibusta\n--\n\nALTER TABLE ONLY public.libgenrelist ALTER COLUMN genreid SET DEFAULT nextval('public.libgenrelist_genreid_seq'::regclass);\n\n\n--\n-- TOC entry 3043 (class 2604 OID 16717)\n-- Name: libjoinedbooks id; Type: DEFAULT; Schema: public; Owner: flibusta\n--\n\nALTER TABLE ONLY public.libjoinedbooks ALTER COLUMN id SET DEFAULT nextval('public.libjoinedbooks_id_seq'::regclass);\n\n\n--\n-- TOC entry 3044 (class 2604 OID 16718)\n-- Name: librecs id; Type: DEFAULT; Schema: public; Owner: flibusta\n--\n\nALTER TABLE ONLY public.librecs ALTER COLUMN id SET DEFAULT nextval('public.librecs_id_seq'::regclass);\n\n\n--\n-- TOC entry 3134 (class 2606 OID 206118)\n-- Name: fav fav_pkey; Type: CONSTRAINT; Schema: public; Owner: flibusta\n--\n\nALTER TABLE ONLY public.fav\n    ADD CONSTRAINT fav_pkey PRIMARY KEY (id);\n\n\n--\n-- TOC entry 3137 (class 2606 OID 206125)\n-- Name: fav_users fav_users_pkey; Type: CONSTRAINT; Schema: public; Owner: flibusta\n--\n\nALTER TABLE ONLY public.fav_users\n    ADD CONSTRAINT fav_users_pkey PRIMARY KEY (user_uuid, name);\n\n\n--\n-- TOC entry 3071 (class 2606 OID 33825)\n-- Name: libavtorname_ts libavtorname_ts_pkey; Type: CONSTRAINT; Schema: public; Owner: flibusta\n--\n\nALTER TABLE ONLY public.libavtorname_ts\n    ADD CONSTRAINT libavtorname_ts_pkey PRIMARY KEY (avtorid);\n\n\n--\n-- TOC entry 3091 (class 2606 OID 33827)\n-- Name: libbook_ts libbook_ts_pkey; Type: CONSTRAINT; Schema: public; Owner: flibusta\n--\n\nALTER TABLE ONLY public.libbook_ts\n    ADD CONSTRAINT libbook_ts_pkey PRIMARY KEY (bookid);\n\n\n--\n-- TOC entry 3109 (class 2606 OID 33836)\n-- Name: librate librate_pkey; Type: CONSTRAINT; Schema: public; Owner: flibusta\n--\n\nALTER TABLE ONLY public.librate\n    ADD CONSTRAINT librate_pkey PRIMARY KEY (id);\n\n\n--\n-- TOC entry 3118 (class 2606 OID 33839)\n-- Name: libseqname_ts libseqname_ts_pkey; Type: CONSTRAINT; Schema: public; Owner: flibusta\n--\n\nALTER TABLE ONLY public.libseqname_ts\n    ADD CONSTRAINT libseqname_ts_pkey PRIMARY KEY (seqid);\n\n\n--\n-- TOC entry 3139 (class 2606 OID 257816)\n-- Name: progress progress_pkey; Type: CONSTRAINT; Schema: public; Owner: flibusta\n--\n\nALTER TABLE ONLY public.progress\n    ADD CONSTRAINT progress_pkey PRIMARY KEY (user_uuid, bookid);\n\n\n--\n-- TOC entry 3124 (class 2606 OID 33841)\n-- Name: seq seq_pkey; Type: CONSTRAINT; Schema: public; Owner: flibusta\n--\n\nALTER TABLE ONLY public.seq\n    ADD CONSTRAINT seq_pkey PRIMARY KEY (book_id, seq_id);\n\n\n--\n-- TOC entry 3128 (class 2606 OID 33843)\n-- Name: seqname seqname_seq; Type: CONSTRAINT; Schema: public; Owner: flibusta\n--\n\nALTER TABLE ONLY public.seqname\n    ADD CONSTRAINT seqname_seq PRIMARY KEY (seq_id);\n\n\n--\n-- TOC entry 3131 (class 2606 OID 33845)\n-- Name: translation translation_pkey; Type: CONSTRAINT; Schema: public; Owner: flibusta\n--\n\nALTER TABLE ONLY public.translation\n    ADD CONSTRAINT translation_pkey PRIMARY KEY (book_id, translator_id);\n\n\n--\n-- TOC entry 3089 (class 1259 OID 33852)\n-- Name: i_book_vector; Type: INDEX; Schema: public; Owner: flibusta\n--\n\nCREATE INDEX i_book_vector ON public.libbook_ts USING gin (vector);\n\n\n--\n-- TOC entry 3135 (class 1259 OID 206120)\n-- Name: i_fav_uniq; Type: INDEX; Schema: public; Owner: flibusta\n--\n\nCREATE UNIQUE INDEX i_fav_uniq ON public.fav USING btree (user_uuid, bookid, avtorid, seqid);\n\n\n--\n-- TOC entry 3069 (class 1259 OID 33856)\n-- Name: i_libavroename_ts; Type: INDEX; Schema: public; Owner: flibusta\n--\n\nCREATE INDEX i_libavroename_ts ON public.libavtorname_ts USING gin (vector);\n\n\n--\n-- TOC entry 3107 (class 1259 OID 33857)\n-- Name: i_rate_bid; Type: INDEX; Schema: public; Owner: flibusta\n--\n\nCREATE INDEX i_rate_bid ON public.librate USING btree (bookid);\n\n\n--\n-- TOC entry 3116 (class 1259 OID 33858)\n-- Name: i_seq_vec; Type: INDEX; Schema: public; Owner: flibusta\n--\n\nCREATE INDEX i_seq_vec ON public.libseqname_ts USING gin (vector);\n\n\n--\n-- TOC entry 3050 (class 1259 OID 33861)\n-- Name: idx_88856_aa; Type: INDEX; Schema: public; Owner: flibusta\n--\n\nCREATE INDEX idx_88856_aa ON public.book_zip USING btree (usr);\n\n\n--\n-- TOC entry 3051 (class 1259 OID 33862)\n-- Name: idx_88856_primary; Type: INDEX; Schema: public; Owner: flibusta\n--\n\nCREATE UNIQUE INDEX idx_88856_primary ON public.book_zip USING btree (id);\n\n\n--\n-- TOC entry 3052 (class 1259 OID 33863)\n-- Name: idx_88856_s1; Type: INDEX; Schema: public; Owner: flibusta\n--\n\nCREATE INDEX idx_88856_s1 ON public.book_zip USING btree (start_id);\n\n\n--\n-- TOC entry 3053 (class 1259 OID 33864)\n-- Name: idx_88856_s2; Type: INDEX; Schema: public; Owner: flibusta\n--\n\nCREATE INDEX idx_88856_s2 ON public.book_zip USING btree (end_id);\n\n\n--\n-- TOC entry 3054 (class 1259 OID 33865)\n-- Name: idx_88856_ss; Type: INDEX; Schema: public; Owner: flibusta\n--\n\nCREATE INDEX idx_88856_ss ON public.book_zip USING btree (filename);\n\n\n--\n-- TOC entry 3055 (class 1259 OID 33885)\n-- Name: idx_88886_avtorid; Type: INDEX; Schema: public; Owner: flibusta\n--\n\nCREATE INDEX idx_88886_avtorid ON public.libaannotations USING btree (avtorid);\n\n\n--\n-- TOC entry 3056 (class 1259 OID 33886)\n-- Name: idx_88892_avtorid; Type: INDEX; Schema: public; Owner: flibusta\n--\n\nCREATE INDEX idx_88892_avtorid ON public.libapics USING btree (avtorid);\n\n\n--\n-- TOC entry 3057 (class 1259 OID 33916)\n-- Name: idx_88895_iav; Type: INDEX; Schema: public; Owner: flibusta\n--\n\nCREATE INDEX idx_88895_iav ON public.libavtor USING btree (avtorid);\n\n\n--\n-- TOC entry 3058 (class 1259 OID 33917)\n-- Name: idx_88895_primary; Type: INDEX; Schema: public; Owner: flibusta\n--\n\nCREATE UNIQUE INDEX idx_88895_primary ON public.libavtor USING btree (bookid, avtorid);\n\n\n--\n-- TOC entry 3059 (class 1259 OID 33918)\n-- Name: idx_88903_goodid; Type: INDEX; Schema: public; Owner: flibusta\n--\n\nCREATE INDEX idx_88903_goodid ON public.libavtoraliase USING btree (goodid);\n\n\n--\n-- TOC entry 3060 (class 1259 OID 33919)\n-- Name: idx_88903_primary; Type: INDEX; Schema: public; Owner: flibusta\n--\n\nCREATE UNIQUE INDEX idx_88903_primary ON public.libavtoraliase USING btree (aliaseid);\n\n\n--\n-- TOC entry 3061 (class 1259 OID 33920)\n-- Name: idx_88903_uids; Type: INDEX; Schema: public; Owner: flibusta\n--\n\nCREATE UNIQUE INDEX idx_88903_uids ON public.libavtoraliase USING btree (badid, goodid);\n\n\n--\n-- TOC entry 3062 (class 1259 OID 33921)\n-- Name: idx_88911_email; Type: INDEX; Schema: public; Owner: flibusta\n--\n\nCREATE INDEX idx_88911_email ON public.libavtorname USING btree (email);\n\n\n--\n-- TOC entry 3063 (class 1259 OID 33922)\n-- Name: idx_88911_firstname; Type: INDEX; Schema: public; Owner: flibusta\n--\n\nCREATE INDEX idx_88911_firstname ON public.libavtorname USING btree (firstname);\n\n\n--\n-- TOC entry 3064 (class 1259 OID 33923)\n-- Name: idx_88911_homepage; Type: INDEX; Schema: public; Owner: flibusta\n--\n\nCREATE INDEX idx_88911_homepage ON public.libavtorname USING btree (homepage);\n\n\n--\n-- TOC entry 3065 (class 1259 OID 33924)\n-- Name: idx_88911_lastname; Type: INDEX; Schema: public; Owner: flibusta\n--\n\nCREATE INDEX idx_88911_lastname ON public.libavtorname USING btree (lastname);\n\n\n--\n-- TOC entry 3066 (class 1259 OID 33925)\n-- Name: idx_88911_masterid; Type: INDEX; Schema: public; Owner: flibusta\n--\n\nCREATE INDEX idx_88911_masterid ON public.libavtorname USING btree (masterid);\n\n\n--\n-- TOC entry 3067 (class 1259 OID 33926)\n-- Name: idx_88911_primary; Type: INDEX; Schema: public; Owner: flibusta\n--\n\nCREATE UNIQUE INDEX idx_88911_primary ON public.libavtorname USING btree (avtorid);\n\n\n--\n-- TOC entry 3068 (class 1259 OID 33927)\n-- Name: idx_88911_uid; Type: INDEX; Schema: public; Owner: flibusta\n--\n\nCREATE INDEX idx_88911_uid ON public.libavtorname USING btree (uid);\n\n\n--\n-- TOC entry 3072 (class 1259 OID 33928)\n-- Name: idx_88925_bookid; Type: INDEX; Schema: public; Owner: flibusta\n--\n\nCREATE INDEX idx_88925_bookid ON public.libbannotations USING btree (bookid);\n\n\n--\n-- TOC entry 3073 (class 1259 OID 33929)\n-- Name: idx_88933_bookdel; Type: INDEX; Schema: public; Owner: flibusta\n--\n\nCREATE UNIQUE INDEX idx_88933_bookdel ON public.libbook USING btree (deleted, bookid);\n\n\n--\n-- TOC entry 3074 (class 1259 OID 33930)\n-- Name: idx_88933_deleted; Type: INDEX; Schema: public; Owner: flibusta\n--\n\nCREATE INDEX idx_88933_deleted ON public.libbook USING btree (deleted);\n\n\n--\n-- TOC entry 3075 (class 1259 OID 33931)\n-- Name: idx_88933_fileauthor; Type: INDEX; Schema: public; Owner: flibusta\n--\n\nCREATE INDEX idx_88933_fileauthor ON public.libbook USING btree (fileauthor);\n\n\n--\n-- TOC entry 3076 (class 1259 OID 33932)\n-- Name: idx_88933_filesize; Type: INDEX; Schema: public; Owner: flibusta\n--\n\nCREATE INDEX idx_88933_filesize ON public.libbook USING btree (filesize);\n\n\n--\n-- TOC entry 3077 (class 1259 OID 33933)\n-- Name: idx_88933_filetype; Type: INDEX; Schema: public; Owner: flibusta\n--\n\nCREATE INDEX idx_88933_filetype ON public.libbook USING btree (filetype);\n\n\n--\n-- TOC entry 3078 (class 1259 OID 33934)\n-- Name: idx_88933_filetypedel; Type: INDEX; Schema: public; Owner: flibusta\n--\n\nCREATE INDEX idx_88933_filetypedel ON public.libbook USING btree (deleted, filetype);\n\n\n--\n-- TOC entry 3079 (class 1259 OID 33935)\n-- Name: idx_88933_lang; Type: INDEX; Schema: public; Owner: flibusta\n--\n\nCREATE INDEX idx_88933_lang ON public.libbook USING btree (lang);\n\n\n--\n-- TOC entry 3080 (class 1259 OID 33936)\n-- Name: idx_88933_langdel; Type: INDEX; Schema: public; Owner: flibusta\n--\n\nCREATE INDEX idx_88933_langdel ON public.libbook USING btree (deleted, lang);\n\n\n--\n-- TOC entry 3081 (class 1259 OID 33937)\n-- Name: idx_88933_md5; Type: INDEX; Schema: public; Owner: flibusta\n--\n\nCREATE UNIQUE INDEX idx_88933_md5 ON public.libbook USING btree (md5);\n\n\n--\n-- TOC entry 3082 (class 1259 OID 33938)\n-- Name: idx_88933_n; Type: INDEX; Schema: public; Owner: flibusta\n--\n\nCREATE INDEX idx_88933_n ON public.libbook USING btree (n);\n\n\n--\n-- TOC entry 3083 (class 1259 OID 33939)\n-- Name: idx_88933_primary; Type: INDEX; Schema: public; Owner: flibusta\n--\n\nCREATE UNIQUE INDEX idx_88933_primary ON public.libbook USING btree (bookid);\n\n\n--\n-- TOC entry 3084 (class 1259 OID 33940)\n-- Name: idx_88933_time; Type: INDEX; Schema: public; Owner: flibusta\n--\n\nCREATE INDEX idx_88933_time ON public.libbook USING btree (\"time\");\n\n\n--\n-- TOC entry 3085 (class 1259 OID 33941)\n-- Name: idx_88933_title; Type: INDEX; Schema: public; Owner: flibusta\n--\n\nCREATE INDEX idx_88933_title ON public.libbook USING btree (title);\n\n\n--\n-- TOC entry 3086 (class 1259 OID 33942)\n-- Name: idx_88933_title1; Type: INDEX; Schema: public; Owner: flibusta\n--\n\nCREATE INDEX idx_88933_title1 ON public.libbook USING btree (title1);\n\n\n--\n-- TOC entry 3087 (class 1259 OID 33943)\n-- Name: idx_88933_year; Type: INDEX; Schema: public; Owner: flibusta\n--\n\nCREATE INDEX idx_88933_year ON public.libbook USING btree (year);\n\n\n--\n-- TOC entry 3092 (class 1259 OID 33944)\n-- Name: idx_88956_bookid; Type: INDEX; Schema: public; Owner: flibusta\n--\n\nCREATE INDEX idx_88956_bookid ON public.libbpics USING btree (bookid);\n\n\n--\n-- TOC entry 3093 (class 1259 OID 33970)\n-- Name: idx_88959_filename; Type: INDEX; Schema: public; Owner: flibusta\n--\n\nCREATE UNIQUE INDEX idx_88959_filename ON public.libfilename USING btree (filename);\n\n\n--\n-- TOC entry 3094 (class 1259 OID 33971)\n-- Name: idx_88959_primary; Type: INDEX; Schema: public; Owner: flibusta\n--\n\nCREATE UNIQUE INDEX idx_88959_primary ON public.libfilename USING btree (bookid);\n\n\n--\n-- TOC entry 3095 (class 1259 OID 33972)\n-- Name: idx_88964_ibook; Type: INDEX; Schema: public; Owner: flibusta\n--\n\nCREATE INDEX idx_88964_ibook ON public.libgenre USING btree (bookid);\n\n\n--\n-- TOC entry 3096 (class 1259 OID 33973)\n-- Name: idx_88964_igenre; Type: INDEX; Schema: public; Owner: flibusta\n--\n\nCREATE INDEX idx_88964_igenre ON public.libgenre USING btree (genreid);\n\n\n--\n-- TOC entry 3097 (class 1259 OID 33974)\n-- Name: idx_88964_primary; Type: INDEX; Schema: public; Owner: flibusta\n--\n\nCREATE UNIQUE INDEX idx_88964_primary ON public.libgenre USING btree (id);\n\n\n--\n-- TOC entry 3098 (class 1259 OID 33975)\n-- Name: idx_88964_u; Type: INDEX; Schema: public; Owner: flibusta\n--\n\nCREATE UNIQUE INDEX idx_88964_u ON public.libgenre USING btree (bookid, genreid);\n\n\n--\n-- TOC entry 3099 (class 1259 OID 33976)\n-- Name: idx_88972_genreid; Type: INDEX; Schema: public; Owner: flibusta\n--\n\nCREATE INDEX idx_88972_genreid ON public.libgenrelist USING btree (genreid);\n\n\n--\n-- TOC entry 3100 (class 1259 OID 33977)\n-- Name: idx_88972_meta; Type: INDEX; Schema: public; Owner: flibusta\n--\n\nCREATE INDEX idx_88972_meta ON public.libgenrelist USING btree (genremeta);\n\n\n--\n-- TOC entry 3101 (class 1259 OID 33978)\n-- Name: idx_88972_primary; Type: INDEX; Schema: public; Owner: flibusta\n--\n\nCREATE UNIQUE INDEX idx_88972_primary ON public.libgenrelist USING btree (genreid, genrecode);\n\n\n--\n-- TOC entry 3102 (class 1259 OID 33979)\n-- Name: idx_88981_badid; Type: INDEX; Schema: public; Owner: flibusta\n--\n\nCREATE UNIQUE INDEX idx_88981_badid ON public.libjoinedbooks USING btree (badid);\n\n\n--\n-- TOC entry 3103 (class 1259 OID 33980)\n-- Name: idx_88981_goodid; Type: INDEX; Schema: public; Owner: flibusta\n--\n\nCREATE INDEX idx_88981_goodid ON public.libjoinedbooks USING btree (goodid);\n\n\n--\n-- TOC entry 3104 (class 1259 OID 33981)\n-- Name: idx_88981_primary; Type: INDEX; Schema: public; Owner: flibusta\n--\n\nCREATE UNIQUE INDEX idx_88981_primary ON public.libjoinedbooks USING btree (id);\n\n\n--\n-- TOC entry 3105 (class 1259 OID 33982)\n-- Name: idx_88981_realid; Type: INDEX; Schema: public; Owner: flibusta\n--\n\nCREATE INDEX idx_88981_realid ON public.libjoinedbooks USING btree (realid);\n\n\n--\n-- TOC entry 3106 (class 1259 OID 33983)\n-- Name: idx_88981_time; Type: INDEX; Schema: public; Owner: flibusta\n--\n\nCREATE INDEX idx_88981_time ON public.libjoinedbooks USING btree (\"time\");\n\n\n--\n-- TOC entry 3110 (class 1259 OID 33984)\n-- Name: idx_88990_bu; Type: INDEX; Schema: public; Owner: flibusta\n--\n\nCREATE UNIQUE INDEX idx_88990_bu ON public.librecs USING btree (bid, uid);\n\n\n--\n-- TOC entry 3111 (class 1259 OID 33985)\n-- Name: idx_88990_primary; Type: INDEX; Schema: public; Owner: flibusta\n--\n\nCREATE UNIQUE INDEX idx_88990_primary ON public.librecs USING btree (id);\n\n\n--\n-- TOC entry 3112 (class 1259 OID 33986)\n-- Name: idx_88994_bookid; Type: INDEX; Schema: public; Owner: flibusta\n--\n\nCREATE INDEX idx_88994_bookid ON public.libreviews USING btree (bookid);\n\n\n--\n-- TOC entry 3113 (class 1259 OID 33987)\n-- Name: idx_89000_bookid; Type: INDEX; Schema: public; Owner: flibusta\n--\n\nCREATE INDEX idx_89000_bookid ON public.libseq USING btree (bookid);\n\n\n--\n-- TOC entry 3114 (class 1259 OID 33988)\n-- Name: idx_89000_primary; Type: INDEX; Schema: public; Owner: flibusta\n--\n\nCREATE UNIQUE INDEX idx_89000_primary ON public.libseq USING btree (bookid, seqid);\n\n\n--\n-- TOC entry 3115 (class 1259 OID 33989)\n-- Name: idx_89000_seqid; Type: INDEX; Schema: public; Owner: flibusta\n--\n\nCREATE INDEX idx_89000_seqid ON public.libseq USING btree (seqid);\n\n\n--\n-- TOC entry 3119 (class 1259 OID 33990)\n-- Name: idx_89012_primary; Type: INDEX; Schema: public; Owner: flibusta\n--\n\nCREATE UNIQUE INDEX idx_89012_primary ON public.libsrclang USING btree (bookid);\n\n\n--\n-- TOC entry 3120 (class 1259 OID 33991)\n-- Name: idx_89012_srclang; Type: INDEX; Schema: public; Owner: flibusta\n--\n\nCREATE INDEX idx_89012_srclang ON public.libsrclang USING btree (srclang);\n\n\n--\n-- TOC entry 3121 (class 1259 OID 33992)\n-- Name: idx_89015_primary; Type: INDEX; Schema: public; Owner: flibusta\n--\n\nCREATE UNIQUE INDEX idx_89015_primary ON public.libtranslator USING btree (bookid, translatorid);\n\n\n--\n-- TOC entry 3122 (class 1259 OID 33993)\n-- Name: idx_89015_translatorid; Type: INDEX; Schema: public; Owner: flibusta\n--\n\nCREATE INDEX idx_89015_translatorid ON public.libtranslator USING btree (translatorid);\n\n\n--\n-- TOC entry 3088 (class 1259 OID 102767)\n-- Name: idx_libb_lower_p; Type: INDEX; Schema: public; Owner: flibusta\n--\n\nCREATE INDEX idx_libb_lower_p ON public.libbook USING btree (lower((title)::text) varchar_pattern_ops);\n\n\n--\n-- TOC entry 3132 (class 1259 OID 102766)\n-- Name: idx_seqn_lower_p; Type: INDEX; Schema: public; Owner: flibusta\n--\n\nCREATE INDEX idx_seqn_lower_p ON public.libseqname USING btree (lower((seqname)::text) varchar_pattern_ops);\n\n\n--\n-- TOC entry 3126 (class 1259 OID 34005)\n-- Name: seqname_search_content2; Type: INDEX; Schema: public; Owner: flibusta\n--\n\nCREATE INDEX seqname_search_content2 ON public.seqname USING gin (name public.gin_trgm_ops);\n\n\n--\n-- TOC entry 3125 (class 1259 OID 34006)\n-- Name: sequence_book_id; Type: INDEX; Schema: public; Owner: flibusta\n--\n\nCREATE INDEX sequence_book_id ON public.seq USING btree (book_id);\n\n\n--\n-- TOC entry 3129 (class 1259 OID 34007)\n-- Name: translation_book_id; Type: INDEX; Schema: public; Owner: flibusta\n--\n\nCREATE INDEX translation_book_id ON public.translation USING btree (book_id);\n\n\n--\n-- TOC entry 3140 (class 2606 OID 34033)\n-- Name: seq seq_seq_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: flibusta\n--\n\nALTER TABLE ONLY public.seq\n    ADD CONSTRAINT seq_seq_id_fkey FOREIGN KEY (seq_id) REFERENCES public.seqname(seq_id);\n\n\n-- Completed on 2022-03-30 10:39:37 UTC\n\n--\n-- PostgreSQL database dump complete\n--\n\n"
  },
  {
    "path": "application/tools/external_services_config/flibusta.conf",
    "content": "location ^~ /mylib {\n    allow 192.168.1.0/24;\n    deny all;\n    root /srv;\n    index index.php;\n    try_files $uri /mylib/index.php$is_args$args;\n    if (!-e $request_filename) {\n     rewrite ^.*$ /mylib/index.php last;\n    }\n    location ~ \\.php$ {\n        add_header 'Content-Security-Policy' 'worker-src * blob:';\n        \n        fastcgi_split_path_info ^\\/mylib(.+?\\.php)(.*)$;\n        set $path_info $fastcgi_path_info;\n\n        include fastcgi_params;\n        fastcgi_param SCRIPT_FILENAME /application/public/$fastcgi_script_name;\n        fastcgi_param PATH_INFO $path_info;\n        fastcgi_param PATH_TRANSLATED /applicaition/public/$path_info;\n        fastcgi_intercept_errors on;\n        fastcgi_param PHP_VALUE \"error_log=/var/log/nginx/application_php_errors.log\";\n        fastcgi_buffers 16 16k;\n        fastcgi_buffer_size 32k;\n        fastcgi_pass 172.101.0.101:9000;\n        fastcgi_index index.php;\n    }\n\n}\n"
  },
  {
    "path": "application/tools/external_services_config/flibusta_entrypoint.sh",
    "content": "#!/bin/sh\n. /application/tools/dbinit.sh\n\nif [ -z \"$DB_HOST_PINGS\" ]; then\n   DB_HOST_PINGS=3\nfi\n\nfor i in `seq 1 $DB_HOST_PINGS`\ndo\n ping -q -c 1 $FLIBUSTA_DBHOST\n EXITCODE=$?\n if [ $EXITCODE -eq 0 ]; then\n  break\n fi\n if [ $i -lt $DB_HOST_PINGS ]; then\n  sleep 1\n fi\ndone\n\nif [ $EXITCODE -ne 0 ]; then\n   echo $FLIBUSTA_DBHOST is unreachable, can not access DB, exiting\n   exit 1\nfi\n\n\nif [ `$SQL_CMD -c \"select 1 from pg_roles where rolname='flibusta'\"  | wc -l` -eq 0 ]; then\n    echo attempt to connect to postgres db has failed. Trying to initialize the DB\n\n    FLIBUSTA_DBPASSWORD=$PGPASSWORD\n\n    if [ -z \"$POSTGRES_ADMIN_USER\" ]; then\n        POSTGRES_ADMIN_USER=postgres\n    fi\n    \n    if [ ! -z \"$POSTGRES_ADMIN_DBPASSWORD_FILE\" ] && [ -e $POSTGRES_ADMIN_DBPASSWORD_FILE ]; then\n        TPOSTGRES_ADMIN_PASSWD=`cat $POSTGRES_ADMIN_DBPASSWORD_FILE`\n    fi\n    if [ ! -z \"$TPOSTGRES_ADMIN_PASSWD\" ]; then\n        PGPASSWORD=$TPOSTGRES_ADMIN_PASSWD\n    fi\n    \n    if [ ! -z \"$POSTGRES_ADMIN_PASSWD\" ]; then\n        PGPASSWORD=$POSTGRES_ADMIN_PASSWD\n    fi\n    \n    if [ -z \"$PGPASSWORD\" ]; then\n        echo Attempt to initialize postgres DB has failed. Cant obtain PG admin password\n        exit 1\n    fi\n\n    psql -h $FLIBUSTA_DBHOST -d $POSTGRES_ADMIN_USER -U $POSTGRES_ADMIN_USER -v FLIBUSTA_DBUSER=\"$FLIBUSTA_DBUSER\"  -v FLIBUSTA_DBPASSWORD=\"$FLIBUSTA_DBPASSWORD\" -v FLIBUSTA_DBNAME=\"$FLIBUSTA_DBNAME\" -f /application/tools/external_services_config/external_postgres_init.sql\n    #restore flibusta password\n    export PGPASSWORD=$FLIBUSTA_DBPASSWORD\n\n    if [ `$SQL_CMD -c \"select 1 from pg_roles where rolname='flibusta'\"  | wc -l` -eq 0 ]; then\n        echo \"Can't connect to the DB after initialization attempt, exiting\"\n        exit 1\n    fi\nfi\n\nexec php-fpm"
  },
  {
    "path": "application/tools/update_vectors.sql",
    "content": "INSERT INTO  libavtorname_ts\nselect avtorid, to_tsvector('russian', concat(lastname, ' ', middlename, ' ', firstname, ' ', nickname)) vector\nFROM libavtorname\nON CONFLICT DO NOTHING;\n\nINSERT INTO  libbook_ts\nselect bookid, to_tsvector('russian',title) vector\nFROM libbook\nON CONFLICT DO NOTHING;\n\nINSERT INTO  libseqname_ts\nselect seqid, to_tsvector('russian', seqname) vector\nFROM libseqname\nON CONFLICT DO NOTHING;\n\n"
  },
  {
    "path": "application/webroot.php",
    "content": "<?php\n$webroot = getenv('FLIBUSTA_WEBROOT')?getenv('FLIBUSTA_WEBROOT'):'';\n?>"
  },
  {
    "path": "blob/1",
    "content": "\n"
  },
  {
    "path": "docker-compose.yml",
    "content": "version: '3.1'\nservices:\n    postgres:\n        build: phpdocker/pg\n        working_dir: /application\n        volumes:\n            - 'db-data:/var/lib/postgresql/data'\n            - './application:/application'\n        environment:\n            - POSTGRES_USER=flibusta\n            - POSTGRES_PASSWORD=flibusta\n            - POSTGRES_DB=flibusta\n        ports:\n            - '27101:5432'\n\n    webserver:\n        image: 'nginx:alpine'\n        working_dir: /application\n        volumes:\n            - './application:/application'\n            - './cache:/application/cache'\n            - './Flibusta.Net:/application/flibusta'\n            - './phpdocker/nginx/nginx.conf:/etc/nginx/conf.d/default.conf'\n        ports:\n            - '27100:80'\n\n    php-fpm:\n        build: phpdocker/php-fpm\n        working_dir: /application\n        volumes:\n            - './application:/application'\n            - './cache:/application/cache'\n            - './Flibusta.Net:/application/flibusta'\n            - './FlibustaSQL:/application/sql'\n            - './phpdocker/php-fpm/php-ini-overrides.ini:/usr/local/etc/php/conf.d/local-custom.ini'\n            - './phpdocker/php-fpm/php-fpm.conf:/usr/local/etc/php-fpm.d/zz-php-fpm.conf'\n        environment:\n            - FLIBUSTA_DBUSER=flibusta\n            - FLIBUSTA_DBNAME=flibusta\n            - FLIBUSTA_DBTYPE=postgres\n            - FLIBUSTA_DBHOST=postgres\n            - FLIBUSTA_DBPASSWORD_FILE=/run/secrets/FLIBUSTA_PWD\n        secrets:\n            - FLIBUSTA_PWD\n\n\nvolumes:\n    db-data:\nsecrets:\n    FLIBUSTA_PWD:\n        file: ./secrets/flibusta_pwd.txt"
  },
  {
    "path": "getcovers.sh",
    "content": "#!/bin/sh\n\n#zipchkcdm='zip -T'\nzipchkcmd='7z -bsp0 -bso0 t'\n\necho \"Backup old zip files\"\nmv cache/lib.a.attached.zip cache/lib.a.attached.zip.old\nmv cache/lib.b.attached.zip cache/lib.b.attached.zip.old\n\nwget --directory-prefix=cache -c -nc https://flibusta.is/sql/lib.a.attached.zip\nres=$?\nif test \"$res\" != \"0\"; then\n   echo \"the wget command failed with: $res\"\n   echo \"Restore lib.a.attached.zip\"\n   mv cache/lib.a.attached.zip.old cache/lib.a.attached.zip\nfi\nwget --directory-prefix=cache -c -nc https://flibusta.is/sql/lib.b.attached.zip\nres=$?\nif test \"$res\" != \"0\"; then\n   echo \"the wget command failed with: $res\"\n   echo \"Restore lib.b.attached.zip\"\n   mv cache/lib.b.attached.zip.old cache/lib.b.attached.zip\nfi\n\n\neval $zipchkcmd cache/lib.a.attached.zip\nres=$?\nif test \"$res\" == \"0\"; then\n   echo \"Remove backup lib.a.attached.zip\"\n   rm cache/lib.a.attached.zip.old\nfi\n\neval $zipchkcmd cache/lib.b.attached.zip\nres=$?\nif test \"$res\" == \"0\"; then\n   echo \"Remove backup lib.b.attached.zip\"\n   rm cache/lib.b.attached.zip.old\nfi\n\n"
  },
  {
    "path": "getsql.sh",
    "content": "#!/bin/sh\nwget --directory-prefix=FlibustaSQL -c -nc http://flibusta.is/sql/lib.libavtor.sql.gz\nwget --directory-prefix=FlibustaSQL -c -nc http://flibusta.is/sql/lib.libtranslator.sql.gz\nwget --directory-prefix=FlibustaSQL -c -nc http://flibusta.is/sql/lib.libavtorname.sql.gz\nwget --directory-prefix=FlibustaSQL -c -nc http://flibusta.is/sql/lib.libbook.sql.gz\nwget --directory-prefix=FlibustaSQL -c -nc http://flibusta.is/sql/lib.libfilename.sql.gz\nwget --directory-prefix=FlibustaSQL -c -nc http://flibusta.is/sql/lib.libgenre.sql.gz\nwget --directory-prefix=FlibustaSQL -c -nc http://flibusta.is/sql/lib.libgenrelist.sql.gz\nwget --directory-prefix=FlibustaSQL -c -nc http://flibusta.is/sql/lib.libjoinedbooks.sql.gz\nwget --directory-prefix=FlibustaSQL -c -nc http://flibusta.is/sql/lib.librate.sql.gz\nwget --directory-prefix=FlibustaSQL -c -nc http://flibusta.is/sql/lib.librecs.sql.gz\nwget --directory-prefix=FlibustaSQL -c -nc http://flibusta.is/sql/lib.libseqname.sql.gz\nwget --directory-prefix=FlibustaSQL -c -nc http://flibusta.is/sql/lib.libseq.sql.gz\nwget --directory-prefix=FlibustaSQL -c -nc http://flibusta.is/sql/lib.reviews.sql.gz\nwget --directory-prefix=FlibustaSQL -c -nc http://flibusta.is/sql/lib.b.annotations.sql.gz\nwget --directory-prefix=FlibustaSQL -c -nc http://flibusta.is/sql/lib.a.annotations.sql.gz\nwget --directory-prefix=FlibustaSQL -c -nc http://flibusta.is/sql/lib.b.annotations_pics.sql.gz\nwget --directory-prefix=FlibustaSQL -c -nc http://flibusta.is/sql/lib.a.annotations_pics.sql.gz\ndocker exec $(docker ps -q --filter \"ancestor=flibusta_php-fpm\") /application/tools/app_import_sql.sh\n"
  },
  {
    "path": "phpdocker/nginx/nginx.conf",
    "content": "server {\n    listen 80 default;\n\n    client_max_body_size 508M;\n\n    access_log /var/log/nginx/application.access.log;\n\n\n    root /application/public;\n    index index.php;\n\n    # try to serve file directly, fallback to index.php\n    location / {\n        try_files $uri /index.php$is_args$args;\n    }\n\n    if (!-e $request_filename) {\n        rewrite ^.*$ /index.php last;\n    }\n\n    location ~ \\.php$ {\nadd_header 'Content-Security-Policy' 'worker-src * blob:';\n\t\n        fastcgi_pass php-fpm:9000;\n        fastcgi_index index.php;\n        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;\n        fastcgi_param PHP_VALUE \"error_log=/var/log/nginx/application_php_errors.log\";\n        fastcgi_buffers 16 16k;\n        fastcgi_buffer_size 32k;\n        include fastcgi_params;\n    }\n    \n}\n"
  },
  {
    "path": "phpdocker/pg/Dockerfile",
    "content": "FROM postgres:16\nWORKDIR /docker-entrypoint-initdb.d\nENV POSTGRES_DB flibusta\nCOPY init_db.sql /docker-entrypoint-initdb.d/\n"
  },
  {
    "path": "phpdocker/pg/init_db.sql",
    "content": "--\n-- PostgreSQL database dump\n--\n\n-- Dumped from database version 13.4 (Debian 13.4-4.pgdg110+1)\n-- Dumped by pg_dump version 13.6\n\n-- Started on 2022-03-30 10:39:37 UTC\n\nSET statement_timeout = 0;\nSET lock_timeout = 0;\nSET idle_in_transaction_session_timeout = 0;\nSET client_encoding = 'UTF8';\nSET standard_conforming_strings = on;\nSELECT pg_catalog.set_config('search_path', '', false);\nSET check_function_bodies = false;\nSET xmloption = content;\nSET client_min_messages = warning;\nSET row_security = off;\n\n--\n-- TOC entry 2 (class 3079 OID 16386)\n-- Name: pg_trgm; Type: EXTENSION; Schema: -; Owner: -\n--\n\nCREATE EXTENSION IF NOT EXISTS pg_trgm WITH SCHEMA public;\n\n\n--\n-- TOC entry 3276 (class 0 OID 0)\n-- Dependencies: 2\n-- Name: EXTENSION pg_trgm; Type: COMMENT; Schema: -; Owner: \n--\n\nCOMMENT ON EXTENSION pg_trgm IS 'text similarity measurement and index searching based on trigrams';\n\n\n--\n-- TOC entry 3 (class 3079 OID 2183851)\n-- Name: uuid-ossp; Type: EXTENSION; Schema: -; Owner: -\n--\n\nCREATE EXTENSION IF NOT EXISTS \"uuid-ossp\" WITH SCHEMA public;\n\n\n--\n-- TOC entry 3277 (class 0 OID 0)\n-- Dependencies: 3\n-- Name: EXTENSION \"uuid-ossp\"; Type: COMMENT; Schema: -; Owner: \n--\n\nCOMMENT ON EXTENSION \"uuid-ossp\" IS 'generate universally unique identifiers (UUIDs)';\n\n\nSET default_tablespace = '';\n\nSET default_table_access_method = heap;\n\n--\n-- TOC entry 202 (class 1259 OID 16490)\n-- Name: book_zip; Type: TABLE; Schema: public; Owner: flibusta\n--\n\nCREATE TABLE public.book_zip (\n    id bigint NOT NULL,\n    filename character varying(64) NOT NULL,\n    start_id bigint NOT NULL,\n    end_id bigint NOT NULL,\n    usr bigint DEFAULT '0'::bigint NOT NULL\n);\n\n\nALTER TABLE public.book_zip OWNER TO flibusta;\n\n--\n-- TOC entry 203 (class 1259 OID 16494)\n-- Name: book_zip_id_seq; Type: SEQUENCE; Schema: public; Owner: flibusta\n--\n\nCREATE SEQUENCE public.book_zip_id_seq\n    START WITH 1\n    INCREMENT BY 1\n    NO MINVALUE\n    NO MAXVALUE\n    CACHE 1;\n\n\nALTER TABLE public.book_zip_id_seq OWNER TO flibusta;\n\n--\n-- TOC entry 3278 (class 0 OID 0)\n-- Dependencies: 203\n-- Name: book_zip_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: flibusta\n--\n\nALTER SEQUENCE public.book_zip_id_seq OWNED BY public.book_zip.id;\n\n\n--\n-- TOC entry 237 (class 1259 OID 206113)\n-- Name: fav; Type: TABLE; Schema: public; Owner: flibusta\n--\n\nCREATE TABLE public.fav (\n    id integer NOT NULL,\n    user_uuid uuid,\n    bookid bigint,\n    avtorid bigint,\n    seqid bigint\n);\n\n\nALTER TABLE public.fav OWNER TO flibusta;\n\n--\n-- TOC entry 236 (class 1259 OID 206111)\n-- Name: fav_id_seq; Type: SEQUENCE; Schema: public; Owner: flibusta\n--\n\nCREATE SEQUENCE public.fav_id_seq\n    AS integer\n    START WITH 1\n    INCREMENT BY 1\n    NO MINVALUE\n    NO MAXVALUE\n    CACHE 1;\n\n\nALTER TABLE public.fav_id_seq OWNER TO flibusta;\n\n--\n-- TOC entry 3279 (class 0 OID 0)\n-- Dependencies: 236\n-- Name: fav_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: flibusta\n--\n\nALTER SEQUENCE public.fav_id_seq OWNED BY public.fav.id;\n\n\n--\n-- TOC entry 238 (class 1259 OID 206121)\n-- Name: fav_users; Type: TABLE; Schema: public; Owner: flibusta\n--\n\nCREATE TABLE public.fav_users (\n    user_uuid uuid NOT NULL,\n    name character varying(32) NOT NULL\n);\n\n\nALTER TABLE public.fav_users OWNER TO flibusta;\n\n--\n-- TOC entry 204 (class 1259 OID 16530)\n-- Name: libaannotations; Type: TABLE; Schema: public; Owner: flibusta\n--\n\nCREATE TABLE public.libaannotations (\n    avtorid bigint NOT NULL,\n    nid bigint NOT NULL,\n    title character varying(255) NOT NULL,\n    body text\n);\n\n\nALTER TABLE public.libaannotations OWNER TO flibusta;\n\n--\n-- TOC entry 205 (class 1259 OID 16536)\n-- Name: libapics; Type: TABLE; Schema: public; Owner: flibusta\n--\n\nCREATE TABLE public.libapics (\n    avtorid bigint NOT NULL,\n    nid bigint NOT NULL,\n    file character varying(255) NOT NULL\n);\n\n\nALTER TABLE public.libapics OWNER TO flibusta;\n\n--\n-- TOC entry 206 (class 1259 OID 16539)\n-- Name: libavtor; Type: TABLE; Schema: public; Owner: flibusta\n--\n\nCREATE TABLE public.libavtor (\n    bookid bigint DEFAULT '0'::bigint NOT NULL,\n    avtorid bigint DEFAULT '0'::bigint NOT NULL,\n    pos smallint DEFAULT '0'::smallint NOT NULL\n);\n\n\nALTER TABLE public.libavtor OWNER TO flibusta;\n\n--\n-- TOC entry 207 (class 1259 OID 16545)\n-- Name: libavtoraliase; Type: TABLE; Schema: public; Owner: flibusta\n--\n\nCREATE TABLE public.libavtoraliase (\n    aliaseid bigint NOT NULL,\n    badid bigint DEFAULT '0'::bigint NOT NULL,\n    goodid bigint DEFAULT '0'::bigint NOT NULL\n);\n\n\nALTER TABLE public.libavtoraliase OWNER TO flibusta;\n\n--\n-- TOC entry 208 (class 1259 OID 16550)\n-- Name: libavtoraliase_aliaseid_seq; Type: SEQUENCE; Schema: public; Owner: flibusta\n--\n\nCREATE SEQUENCE public.libavtoraliase_aliaseid_seq\n    START WITH 1\n    INCREMENT BY 1\n    NO MINVALUE\n    NO MAXVALUE\n    CACHE 1;\n\n\nALTER TABLE public.libavtoraliase_aliaseid_seq OWNER TO flibusta;\n\n--\n-- TOC entry 3280 (class 0 OID 0)\n-- Dependencies: 208\n-- Name: libavtoraliase_aliaseid_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: flibusta\n--\n\nALTER SEQUENCE public.libavtoraliase_aliaseid_seq OWNED BY public.libavtoraliase.aliaseid;\n\n\n--\n-- TOC entry 209 (class 1259 OID 16552)\n-- Name: libavtorname; Type: TABLE; Schema: public; Owner: flibusta\n--\n\nCREATE TABLE public.libavtorname (\n    avtorid bigint NOT NULL,\n    firstname character varying(99) DEFAULT ''::character varying NOT NULL,\n    middlename character varying(99) DEFAULT ''::character varying NOT NULL,\n    lastname character varying(99) DEFAULT ''::character varying NOT NULL,\n    nickname character varying(33) DEFAULT ''::character varying NOT NULL,\n    uid bigint DEFAULT '0'::bigint NOT NULL,\n    email character varying(255) NOT NULL,\n    homepage character varying(255) NOT NULL,\n    gender character(1) DEFAULT ''::bpchar NOT NULL,\n    masterid bigint DEFAULT '0'::bigint NOT NULL\n);\n\n\nALTER TABLE public.libavtorname OWNER TO flibusta;\n\n--\n-- TOC entry 210 (class 1259 OID 16565)\n-- Name: libavtorname_avtorid_seq; Type: SEQUENCE; Schema: public; Owner: flibusta\n--\n\nCREATE SEQUENCE public.libavtorname_avtorid_seq\n    START WITH 1\n    INCREMENT BY 1\n    NO MINVALUE\n    NO MAXVALUE\n    CACHE 1;\n\n\nALTER TABLE public.libavtorname_avtorid_seq OWNER TO flibusta;\n\n--\n-- TOC entry 3281 (class 0 OID 0)\n-- Dependencies: 210\n-- Name: libavtorname_avtorid_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: flibusta\n--\n\nALTER SEQUENCE public.libavtorname_avtorid_seq OWNED BY public.libavtorname.avtorid;\n\n\n--\n-- TOC entry 211 (class 1259 OID 16567)\n-- Name: libavtorname_ts; Type: TABLE; Schema: public; Owner: flibusta\n--\n\nCREATE TABLE public.libavtorname_ts (\n    avtorid bigint NOT NULL,\n    vector tsvector\n);\n\n\nALTER TABLE public.libavtorname_ts OWNER TO flibusta;\n\n--\n-- TOC entry 212 (class 1259 OID 16573)\n-- Name: libbannotations; Type: TABLE; Schema: public; Owner: flibusta\n--\n\nCREATE TABLE public.libbannotations (\n    bookid bigint NOT NULL,\n    nid bigint NOT NULL,\n    title character varying(255) NOT NULL,\n    body text\n);\n\n\nALTER TABLE public.libbannotations OWNER TO flibusta;\n\n--\n-- TOC entry 213 (class 1259 OID 16579)\n-- Name: libbook; Type: TABLE; Schema: public; Owner: flibusta\n--\n\nCREATE TABLE public.libbook (\n    bookid bigint NOT NULL,\n    filesize bigint DEFAULT '0'::bigint NOT NULL,\n    \"time\" timestamp with time zone DEFAULT CURRENT_TIMESTAMP NOT NULL,\n    title character varying(254) DEFAULT ''::character varying NOT NULL,\n    title1 character varying(254) NOT NULL,\n    lang character(3) DEFAULT 'ru'::bpchar NOT NULL,\n    langex integer DEFAULT 0 NOT NULL,\n    srclang character(3) DEFAULT ''::bpchar NOT NULL,\n    filetype character(4) NOT NULL,\n    encoding character varying(32) DEFAULT ''::character varying NOT NULL,\n    year smallint DEFAULT '0'::smallint NOT NULL,\n    deleted character(1) DEFAULT '0'::bpchar NOT NULL,\n    ver character varying(8) DEFAULT ''::character varying NOT NULL,\n    fileauthor character varying(64) NOT NULL,\n    n bigint DEFAULT '0'::bigint NOT NULL,\n    keywords character varying(255) NOT NULL,\n    md5 bytea NOT NULL,\n    modified timestamp with time zone DEFAULT '2009-11-29 05:00:00+00'::timestamp with time zone NOT NULL,\n    pmd5 character(32) DEFAULT ''::bpchar NOT NULL,\n    infocode smallint DEFAULT '0'::smallint NOT NULL,\n    pages bigint DEFAULT '0'::bigint NOT NULL,\n    chars bigint DEFAULT '0'::bigint NOT NULL\n);\n\n\nALTER TABLE public.libbook OWNER TO flibusta;\n\n--\n-- TOC entry 214 (class 1259 OID 16601)\n-- Name: libbook_bookid_seq; Type: SEQUENCE; Schema: public; Owner: flibusta\n--\n\nCREATE SEQUENCE public.libbook_bookid_seq\n    START WITH 1\n    INCREMENT BY 1\n    NO MINVALUE\n    NO MAXVALUE\n    CACHE 1;\n\n\nALTER TABLE public.libbook_bookid_seq OWNER TO flibusta;\n\n--\n-- TOC entry 3282 (class 0 OID 0)\n-- Dependencies: 214\n-- Name: libbook_bookid_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: flibusta\n--\n\nALTER SEQUENCE public.libbook_bookid_seq OWNED BY public.libbook.bookid;\n\n\n--\n-- TOC entry 215 (class 1259 OID 16603)\n-- Name: libbook_ts; Type: TABLE; Schema: public; Owner: flibusta\n--\n\nCREATE TABLE public.libbook_ts (\n    bookid bigint NOT NULL,\n    vector tsvector\n);\n\n\nALTER TABLE public.libbook_ts OWNER TO flibusta;\n\n--\n-- TOC entry 216 (class 1259 OID 16609)\n-- Name: libbpics; Type: TABLE; Schema: public; Owner: flibusta\n--\n\nCREATE TABLE public.libbpics (\n    bookid bigint NOT NULL,\n    nid bigint NOT NULL,\n    file character varying(255) NOT NULL\n);\n\n\nALTER TABLE public.libbpics OWNER TO flibusta;\n\n--\n-- TOC entry 217 (class 1259 OID 16612)\n-- Name: libfilename; Type: TABLE; Schema: public; Owner: flibusta\n--\n\nCREATE TABLE public.libfilename (\n    bookid bigint NOT NULL,\n    filename character varying(255) NOT NULL\n);\n\n\nALTER TABLE public.libfilename OWNER TO flibusta;\n\n--\n-- TOC entry 218 (class 1259 OID 16615)\n-- Name: libgenre; Type: TABLE; Schema: public; Owner: flibusta\n--\n\nCREATE TABLE public.libgenre (\n    id bigint NOT NULL,\n    bookid bigint DEFAULT '0'::bigint NOT NULL,\n    genreid bigint DEFAULT '0'::bigint NOT NULL\n);\n\n\nALTER TABLE public.libgenre OWNER TO flibusta;\n\n--\n-- TOC entry 219 (class 1259 OID 16620)\n-- Name: libgenre_id_seq; Type: SEQUENCE; Schema: public; Owner: flibusta\n--\n\nCREATE SEQUENCE public.libgenre_id_seq\n    START WITH 1\n    INCREMENT BY 1\n    NO MINVALUE\n    NO MAXVALUE\n    CACHE 1;\n\n\nALTER TABLE public.libgenre_id_seq OWNER TO flibusta;\n\n--\n-- TOC entry 3283 (class 0 OID 0)\n-- Dependencies: 219\n-- Name: libgenre_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: flibusta\n--\n\nALTER SEQUENCE public.libgenre_id_seq OWNED BY public.libgenre.id;\n\n\n--\n-- TOC entry 220 (class 1259 OID 16622)\n-- Name: libgenrelist; Type: TABLE; Schema: public; Owner: flibusta\n--\n\nCREATE TABLE public.libgenrelist (\n    genreid bigint NOT NULL,\n    genrecode character varying(45) DEFAULT ''::character varying NOT NULL,\n    genredesc character varying(99) DEFAULT ''::character varying NOT NULL,\n    genremeta character varying(45) DEFAULT ''::character varying NOT NULL\n);\n\n\nALTER TABLE public.libgenrelist OWNER TO flibusta;\n\n--\n-- TOC entry 221 (class 1259 OID 16628)\n-- Name: libgenrelist_genreid_seq; Type: SEQUENCE; Schema: public; Owner: flibusta\n--\n\nCREATE SEQUENCE public.libgenrelist_genreid_seq\n    START WITH 1\n    INCREMENT BY 1\n    NO MINVALUE\n    NO MAXVALUE\n    CACHE 1;\n\n\nALTER TABLE public.libgenrelist_genreid_seq OWNER TO flibusta;\n\n--\n-- TOC entry 3284 (class 0 OID 0)\n-- Dependencies: 221\n-- Name: libgenrelist_genreid_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: flibusta\n--\n\nALTER SEQUENCE public.libgenrelist_genreid_seq OWNED BY public.libgenrelist.genreid;\n\n\n--\n-- TOC entry 222 (class 1259 OID 16630)\n-- Name: libjoinedbooks; Type: TABLE; Schema: public; Owner: flibusta\n--\n\nCREATE TABLE public.libjoinedbooks (\n    id bigint NOT NULL,\n    \"time\" timestamp with time zone DEFAULT CURRENT_TIMESTAMP NOT NULL,\n    badid bigint DEFAULT '0'::bigint NOT NULL,\n    goodid bigint DEFAULT '0'::bigint NOT NULL,\n    realid bigint\n);\n\n\nALTER TABLE public.libjoinedbooks OWNER TO flibusta;\n\n--\n-- TOC entry 223 (class 1259 OID 16636)\n-- Name: libjoinedbooks_id_seq; Type: SEQUENCE; Schema: public; Owner: flibusta\n--\n\nCREATE SEQUENCE public.libjoinedbooks_id_seq\n    START WITH 1\n    INCREMENT BY 1\n    NO MINVALUE\n    NO MAXVALUE\n    CACHE 1;\n\n\nALTER TABLE public.libjoinedbooks_id_seq OWNER TO flibusta;\n\n--\n-- TOC entry 3285 (class 0 OID 0)\n-- Dependencies: 223\n-- Name: libjoinedbooks_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: flibusta\n--\n\nALTER SEQUENCE public.libjoinedbooks_id_seq OWNED BY public.libjoinedbooks.id;\n\n\n--\n-- TOC entry 224 (class 1259 OID 16638)\n-- Name: librate; Type: TABLE; Schema: public; Owner: flibusta\n--\n\nCREATE TABLE public.librate (\n    id bigint NOT NULL,\n    bookid bigint,\n    userid bigint,\n    rate \"char\"\n);\n\n\nALTER TABLE public.librate OWNER TO flibusta;\n\n--\n-- TOC entry 225 (class 1259 OID 16641)\n-- Name: librecs; Type: TABLE; Schema: public; Owner: flibusta\n--\n\nCREATE TABLE public.librecs (\n    id bigint NOT NULL,\n    uid bigint,\n    bid bigint,\n    \"timestamp\" timestamp with time zone\n);\n\n\nALTER TABLE public.librecs OWNER TO flibusta;\n\n--\n-- TOC entry 226 (class 1259 OID 16644)\n-- Name: librecs_id_seq; Type: SEQUENCE; Schema: public; Owner: flibusta\n--\n\nCREATE SEQUENCE public.librecs_id_seq\n    START WITH 1\n    INCREMENT BY 1\n    NO MINVALUE\n    NO MAXVALUE\n    CACHE 1;\n\n\nALTER TABLE public.librecs_id_seq OWNER TO flibusta;\n\n--\n-- TOC entry 3286 (class 0 OID 0)\n-- Dependencies: 226\n-- Name: librecs_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: flibusta\n--\n\nALTER SEQUENCE public.librecs_id_seq OWNED BY public.librecs.id;\n\n\n--\n-- TOC entry 227 (class 1259 OID 16646)\n-- Name: libreviews; Type: TABLE; Schema: public; Owner: flibusta\n--\n\nCREATE TABLE public.libreviews (\n    name character varying(255) NOT NULL,\n    \"time\" timestamp with time zone,\n    bookid bigint NOT NULL,\n    text text NOT NULL\n);\n\n\nALTER TABLE public.libreviews OWNER TO flibusta;\n\n--\n-- TOC entry 228 (class 1259 OID 16652)\n-- Name: libseq; Type: TABLE; Schema: public; Owner: flibusta\n--\n\nCREATE TABLE public.libseq (\n    bookid bigint NOT NULL,\n    seqid bigint NOT NULL,\n    seqnumb bigint NOT NULL,\n    level smallint DEFAULT '0'::smallint NOT NULL,\n    \"Type\" smallint DEFAULT 0\n);\n\n\nALTER TABLE public.libseq OWNER TO flibusta;\n\n--\n-- TOC entry 235 (class 1259 OID 34060)\n-- Name: libseqname; Type: TABLE; Schema: public; Owner: flibusta\n--\n\nCREATE TABLE public.libseqname (\n    seqid bigint NOT NULL,\n    seqname character varying(254) DEFAULT ''::character varying NOT NULL\n);\n\n\nALTER TABLE public.libseqname OWNER TO flibusta;\n\n--\n-- TOC entry 229 (class 1259 OID 16663)\n-- Name: libseqname_ts; Type: TABLE; Schema: public; Owner: flibusta\n--\n\nCREATE TABLE public.libseqname_ts (\n    seqid bigint NOT NULL,\n    vector tsvector\n);\n\n\nALTER TABLE public.libseqname_ts OWNER TO flibusta;\n\n--\n-- TOC entry 230 (class 1259 OID 16669)\n-- Name: libsrclang; Type: TABLE; Schema: public; Owner: flibusta\n--\n\nCREATE TABLE public.libsrclang (\n    bookid bigint NOT NULL,\n    srclang character(2) NOT NULL\n);\n\n\nALTER TABLE public.libsrclang OWNER TO flibusta;\n\n--\n-- TOC entry 231 (class 1259 OID 16672)\n-- Name: libtranslator; Type: TABLE; Schema: public; Owner: flibusta\n--\n\nCREATE TABLE public.libtranslator (\n    bookid bigint NOT NULL,\n    translatorid bigint NOT NULL,\n    pos smallint DEFAULT '0'::smallint NOT NULL\n);\n\n\nALTER TABLE public.libtranslator OWNER TO flibusta;\n\n--\n-- TOC entry 239 (class 1259 OID 257812)\n-- Name: progress; Type: TABLE; Schema: public; Owner: flibusta\n--\n\nCREATE TABLE public.progress (\n    user_uuid uuid NOT NULL,\n    bookid bigint NOT NULL,\n    pos double precision\n);\n\n\nALTER TABLE public.progress OWNER TO flibusta;\n\n--\n-- TOC entry 232 (class 1259 OID 16684)\n-- Name: seq; Type: TABLE; Schema: public; Owner: flibusta\n--\n\nCREATE TABLE public.seq (\n    book_id integer NOT NULL,\n    seq_id integer NOT NULL,\n    num integer NOT NULL\n);\n\n\nALTER TABLE public.seq OWNER TO flibusta;\n\n--\n-- TOC entry 233 (class 1259 OID 16687)\n-- Name: seqname; Type: TABLE; Schema: public; Owner: flibusta\n--\n\nCREATE TABLE public.seqname (\n    seq_id integer NOT NULL,\n    name character varying(255) NOT NULL,\n    search_content tsvector NOT NULL\n);\n\n\nALTER TABLE public.seqname OWNER TO flibusta;\n\n--\n-- TOC entry 234 (class 1259 OID 16698)\n-- Name: translation; Type: TABLE; Schema: public; Owner: flibusta\n--\n\nCREATE TABLE public.translation (\n    book_id integer NOT NULL,\n    translator_id integer NOT NULL,\n    pos integer NOT NULL\n);\n\n\nALTER TABLE public.translation OWNER TO flibusta;\n\n--\n-- TOC entry 3001 (class 2604 OID 16707)\n-- Name: book_zip id; Type: DEFAULT; Schema: public; Owner: flibusta\n--\n\nALTER TABLE ONLY public.book_zip ALTER COLUMN id SET DEFAULT nextval('public.book_zip_id_seq'::regclass);\n\n\n--\n-- TOC entry 3049 (class 2604 OID 206116)\n-- Name: fav id; Type: DEFAULT; Schema: public; Owner: flibusta\n--\n\nALTER TABLE ONLY public.fav ALTER COLUMN id SET DEFAULT nextval('public.fav_id_seq'::regclass);\n\n\n--\n-- TOC entry 3007 (class 2604 OID 16712)\n-- Name: libavtoraliase aliaseid; Type: DEFAULT; Schema: public; Owner: flibusta\n--\n\nALTER TABLE ONLY public.libavtoraliase ALTER COLUMN aliaseid SET DEFAULT nextval('public.libavtoraliase_aliaseid_seq'::regclass);\n\n\n--\n-- TOC entry 3015 (class 2604 OID 16713)\n-- Name: libavtorname avtorid; Type: DEFAULT; Schema: public; Owner: flibusta\n--\n\nALTER TABLE ONLY public.libavtorname ALTER COLUMN avtorid SET DEFAULT nextval('public.libavtorname_avtorid_seq'::regclass);\n\n\n--\n-- TOC entry 3032 (class 2604 OID 16714)\n-- Name: libbook bookid; Type: DEFAULT; Schema: public; Owner: flibusta\n--\n\nALTER TABLE ONLY public.libbook ALTER COLUMN bookid SET DEFAULT nextval('public.libbook_bookid_seq'::regclass);\n\n\n--\n-- TOC entry 3035 (class 2604 OID 16715)\n-- Name: libgenre id; Type: DEFAULT; Schema: public; Owner: flibusta\n--\n\nALTER TABLE ONLY public.libgenre ALTER COLUMN id SET DEFAULT nextval('public.libgenre_id_seq'::regclass);\n\n\n--\n-- TOC entry 3039 (class 2604 OID 16716)\n-- Name: libgenrelist genreid; Type: DEFAULT; Schema: public; Owner: flibusta\n--\n\nALTER TABLE ONLY public.libgenrelist ALTER COLUMN genreid SET DEFAULT nextval('public.libgenrelist_genreid_seq'::regclass);\n\n\n--\n-- TOC entry 3043 (class 2604 OID 16717)\n-- Name: libjoinedbooks id; Type: DEFAULT; Schema: public; Owner: flibusta\n--\n\nALTER TABLE ONLY public.libjoinedbooks ALTER COLUMN id SET DEFAULT nextval('public.libjoinedbooks_id_seq'::regclass);\n\n\n--\n-- TOC entry 3044 (class 2604 OID 16718)\n-- Name: librecs id; Type: DEFAULT; Schema: public; Owner: flibusta\n--\n\nALTER TABLE ONLY public.librecs ALTER COLUMN id SET DEFAULT nextval('public.librecs_id_seq'::regclass);\n\n\n--\n-- TOC entry 3134 (class 2606 OID 206118)\n-- Name: fav fav_pkey; Type: CONSTRAINT; Schema: public; Owner: flibusta\n--\n\nALTER TABLE ONLY public.fav\n    ADD CONSTRAINT fav_pkey PRIMARY KEY (id);\n\n\n--\n-- TOC entry 3137 (class 2606 OID 206125)\n-- Name: fav_users fav_users_pkey; Type: CONSTRAINT; Schema: public; Owner: flibusta\n--\n\nALTER TABLE ONLY public.fav_users\n    ADD CONSTRAINT fav_users_pkey PRIMARY KEY (user_uuid, name);\n\n\n--\n-- TOC entry 3071 (class 2606 OID 33825)\n-- Name: libavtorname_ts libavtorname_ts_pkey; Type: CONSTRAINT; Schema: public; Owner: flibusta\n--\n\nALTER TABLE ONLY public.libavtorname_ts\n    ADD CONSTRAINT libavtorname_ts_pkey PRIMARY KEY (avtorid);\n\n\n--\n-- TOC entry 3091 (class 2606 OID 33827)\n-- Name: libbook_ts libbook_ts_pkey; Type: CONSTRAINT; Schema: public; Owner: flibusta\n--\n\nALTER TABLE ONLY public.libbook_ts\n    ADD CONSTRAINT libbook_ts_pkey PRIMARY KEY (bookid);\n\n\n--\n-- TOC entry 3109 (class 2606 OID 33836)\n-- Name: librate librate_pkey; Type: CONSTRAINT; Schema: public; Owner: flibusta\n--\n\nALTER TABLE ONLY public.librate\n    ADD CONSTRAINT librate_pkey PRIMARY KEY (id);\n\n\n--\n-- TOC entry 3118 (class 2606 OID 33839)\n-- Name: libseqname_ts libseqname_ts_pkey; Type: CONSTRAINT; Schema: public; Owner: flibusta\n--\n\nALTER TABLE ONLY public.libseqname_ts\n    ADD CONSTRAINT libseqname_ts_pkey PRIMARY KEY (seqid);\n\n\n--\n-- TOC entry 3139 (class 2606 OID 257816)\n-- Name: progress progress_pkey; Type: CONSTRAINT; Schema: public; Owner: flibusta\n--\n\nALTER TABLE ONLY public.progress\n    ADD CONSTRAINT progress_pkey PRIMARY KEY (user_uuid, bookid);\n\n\n--\n-- TOC entry 3124 (class 2606 OID 33841)\n-- Name: seq seq_pkey; Type: CONSTRAINT; Schema: public; Owner: flibusta\n--\n\nALTER TABLE ONLY public.seq\n    ADD CONSTRAINT seq_pkey PRIMARY KEY (book_id, seq_id);\n\n\n--\n-- TOC entry 3128 (class 2606 OID 33843)\n-- Name: seqname seqname_seq; Type: CONSTRAINT; Schema: public; Owner: flibusta\n--\n\nALTER TABLE ONLY public.seqname\n    ADD CONSTRAINT seqname_seq PRIMARY KEY (seq_id);\n\n\n--\n-- TOC entry 3131 (class 2606 OID 33845)\n-- Name: translation translation_pkey; Type: CONSTRAINT; Schema: public; Owner: flibusta\n--\n\nALTER TABLE ONLY public.translation\n    ADD CONSTRAINT translation_pkey PRIMARY KEY (book_id, translator_id);\n\n\n--\n-- TOC entry 3089 (class 1259 OID 33852)\n-- Name: i_book_vector; Type: INDEX; Schema: public; Owner: flibusta\n--\n\nCREATE INDEX i_book_vector ON public.libbook_ts USING gin (vector);\n\n\n--\n-- TOC entry 3135 (class 1259 OID 206120)\n-- Name: i_fav_uniq; Type: INDEX; Schema: public; Owner: flibusta\n--\n\nCREATE UNIQUE INDEX i_fav_uniq ON public.fav USING btree (user_uuid, bookid, avtorid, seqid);\n\n\n--\n-- TOC entry 3069 (class 1259 OID 33856)\n-- Name: i_libavroename_ts; Type: INDEX; Schema: public; Owner: flibusta\n--\n\nCREATE INDEX i_libavroename_ts ON public.libavtorname_ts USING gin (vector);\n\n\n--\n-- TOC entry 3107 (class 1259 OID 33857)\n-- Name: i_rate_bid; Type: INDEX; Schema: public; Owner: flibusta\n--\n\nCREATE INDEX i_rate_bid ON public.librate USING btree (bookid);\n\n\n--\n-- TOC entry 3116 (class 1259 OID 33858)\n-- Name: i_seq_vec; Type: INDEX; Schema: public; Owner: flibusta\n--\n\nCREATE INDEX i_seq_vec ON public.libseqname_ts USING gin (vector);\n\n\n--\n-- TOC entry 3050 (class 1259 OID 33861)\n-- Name: idx_88856_aa; Type: INDEX; Schema: public; Owner: flibusta\n--\n\nCREATE INDEX idx_88856_aa ON public.book_zip USING btree (usr);\n\n\n--\n-- TOC entry 3051 (class 1259 OID 33862)\n-- Name: idx_88856_primary; Type: INDEX; Schema: public; Owner: flibusta\n--\n\nCREATE UNIQUE INDEX idx_88856_primary ON public.book_zip USING btree (id);\n\n\n--\n-- TOC entry 3052 (class 1259 OID 33863)\n-- Name: idx_88856_s1; Type: INDEX; Schema: public; Owner: flibusta\n--\n\nCREATE INDEX idx_88856_s1 ON public.book_zip USING btree (start_id);\n\n\n--\n-- TOC entry 3053 (class 1259 OID 33864)\n-- Name: idx_88856_s2; Type: INDEX; Schema: public; Owner: flibusta\n--\n\nCREATE INDEX idx_88856_s2 ON public.book_zip USING btree (end_id);\n\n\n--\n-- TOC entry 3054 (class 1259 OID 33865)\n-- Name: idx_88856_ss; Type: INDEX; Schema: public; Owner: flibusta\n--\n\nCREATE INDEX idx_88856_ss ON public.book_zip USING btree (filename);\n\n\n--\n-- TOC entry 3055 (class 1259 OID 33885)\n-- Name: idx_88886_avtorid; Type: INDEX; Schema: public; Owner: flibusta\n--\n\nCREATE INDEX idx_88886_avtorid ON public.libaannotations USING btree (avtorid);\n\n\n--\n-- TOC entry 3056 (class 1259 OID 33886)\n-- Name: idx_88892_avtorid; Type: INDEX; Schema: public; Owner: flibusta\n--\n\nCREATE INDEX idx_88892_avtorid ON public.libapics USING btree (avtorid);\n\n\n--\n-- TOC entry 3057 (class 1259 OID 33916)\n-- Name: idx_88895_iav; Type: INDEX; Schema: public; Owner: flibusta\n--\n\nCREATE INDEX idx_88895_iav ON public.libavtor USING btree (avtorid);\n\n\n--\n-- TOC entry 3058 (class 1259 OID 33917)\n-- Name: idx_88895_primary; Type: INDEX; Schema: public; Owner: flibusta\n--\n\nCREATE UNIQUE INDEX idx_88895_primary ON public.libavtor USING btree (bookid, avtorid);\n\n\n--\n-- TOC entry 3059 (class 1259 OID 33918)\n-- Name: idx_88903_goodid; Type: INDEX; Schema: public; Owner: flibusta\n--\n\nCREATE INDEX idx_88903_goodid ON public.libavtoraliase USING btree (goodid);\n\n\n--\n-- TOC entry 3060 (class 1259 OID 33919)\n-- Name: idx_88903_primary; Type: INDEX; Schema: public; Owner: flibusta\n--\n\nCREATE UNIQUE INDEX idx_88903_primary ON public.libavtoraliase USING btree (aliaseid);\n\n\n--\n-- TOC entry 3061 (class 1259 OID 33920)\n-- Name: idx_88903_uids; Type: INDEX; Schema: public; Owner: flibusta\n--\n\nCREATE UNIQUE INDEX idx_88903_uids ON public.libavtoraliase USING btree (badid, goodid);\n\n\n--\n-- TOC entry 3062 (class 1259 OID 33921)\n-- Name: idx_88911_email; Type: INDEX; Schema: public; Owner: flibusta\n--\n\nCREATE INDEX idx_88911_email ON public.libavtorname USING btree (email);\n\n\n--\n-- TOC entry 3063 (class 1259 OID 33922)\n-- Name: idx_88911_firstname; Type: INDEX; Schema: public; Owner: flibusta\n--\n\nCREATE INDEX idx_88911_firstname ON public.libavtorname USING btree (firstname);\n\n\n--\n-- TOC entry 3064 (class 1259 OID 33923)\n-- Name: idx_88911_homepage; Type: INDEX; Schema: public; Owner: flibusta\n--\n\nCREATE INDEX idx_88911_homepage ON public.libavtorname USING btree (homepage);\n\n\n--\n-- TOC entry 3065 (class 1259 OID 33924)\n-- Name: idx_88911_lastname; Type: INDEX; Schema: public; Owner: flibusta\n--\n\nCREATE INDEX idx_88911_lastname ON public.libavtorname USING btree (lastname);\n\n\n--\n-- TOC entry 3066 (class 1259 OID 33925)\n-- Name: idx_88911_masterid; Type: INDEX; Schema: public; Owner: flibusta\n--\n\nCREATE INDEX idx_88911_masterid ON public.libavtorname USING btree (masterid);\n\n\n--\n-- TOC entry 3067 (class 1259 OID 33926)\n-- Name: idx_88911_primary; Type: INDEX; Schema: public; Owner: flibusta\n--\n\nCREATE UNIQUE INDEX idx_88911_primary ON public.libavtorname USING btree (avtorid);\n\n\n--\n-- TOC entry 3068 (class 1259 OID 33927)\n-- Name: idx_88911_uid; Type: INDEX; Schema: public; Owner: flibusta\n--\n\nCREATE INDEX idx_88911_uid ON public.libavtorname USING btree (uid);\n\n\n--\n-- TOC entry 3072 (class 1259 OID 33928)\n-- Name: idx_88925_bookid; Type: INDEX; Schema: public; Owner: flibusta\n--\n\nCREATE INDEX idx_88925_bookid ON public.libbannotations USING btree (bookid);\n\n\n--\n-- TOC entry 3073 (class 1259 OID 33929)\n-- Name: idx_88933_bookdel; Type: INDEX; Schema: public; Owner: flibusta\n--\n\nCREATE UNIQUE INDEX idx_88933_bookdel ON public.libbook USING btree (deleted, bookid);\n\n\n--\n-- TOC entry 3074 (class 1259 OID 33930)\n-- Name: idx_88933_deleted; Type: INDEX; Schema: public; Owner: flibusta\n--\n\nCREATE INDEX idx_88933_deleted ON public.libbook USING btree (deleted);\n\n\n--\n-- TOC entry 3075 (class 1259 OID 33931)\n-- Name: idx_88933_fileauthor; Type: INDEX; Schema: public; Owner: flibusta\n--\n\nCREATE INDEX idx_88933_fileauthor ON public.libbook USING btree (fileauthor);\n\n\n--\n-- TOC entry 3076 (class 1259 OID 33932)\n-- Name: idx_88933_filesize; Type: INDEX; Schema: public; Owner: flibusta\n--\n\nCREATE INDEX idx_88933_filesize ON public.libbook USING btree (filesize);\n\n\n--\n-- TOC entry 3077 (class 1259 OID 33933)\n-- Name: idx_88933_filetype; Type: INDEX; Schema: public; Owner: flibusta\n--\n\nCREATE INDEX idx_88933_filetype ON public.libbook USING btree (filetype);\n\n\n--\n-- TOC entry 3078 (class 1259 OID 33934)\n-- Name: idx_88933_filetypedel; Type: INDEX; Schema: public; Owner: flibusta\n--\n\nCREATE INDEX idx_88933_filetypedel ON public.libbook USING btree (deleted, filetype);\n\n\n--\n-- TOC entry 3079 (class 1259 OID 33935)\n-- Name: idx_88933_lang; Type: INDEX; Schema: public; Owner: flibusta\n--\n\nCREATE INDEX idx_88933_lang ON public.libbook USING btree (lang);\n\n\n--\n-- TOC entry 3080 (class 1259 OID 33936)\n-- Name: idx_88933_langdel; Type: INDEX; Schema: public; Owner: flibusta\n--\n\nCREATE INDEX idx_88933_langdel ON public.libbook USING btree (deleted, lang);\n\n\n--\n-- TOC entry 3081 (class 1259 OID 33937)\n-- Name: idx_88933_md5; Type: INDEX; Schema: public; Owner: flibusta\n--\n\nCREATE UNIQUE INDEX idx_88933_md5 ON public.libbook USING btree (md5);\n\n\n--\n-- TOC entry 3082 (class 1259 OID 33938)\n-- Name: idx_88933_n; Type: INDEX; Schema: public; Owner: flibusta\n--\n\nCREATE INDEX idx_88933_n ON public.libbook USING btree (n);\n\n\n--\n-- TOC entry 3083 (class 1259 OID 33939)\n-- Name: idx_88933_primary; Type: INDEX; Schema: public; Owner: flibusta\n--\n\nCREATE UNIQUE INDEX idx_88933_primary ON public.libbook USING btree (bookid);\n\n\n--\n-- TOC entry 3084 (class 1259 OID 33940)\n-- Name: idx_88933_time; Type: INDEX; Schema: public; Owner: flibusta\n--\n\nCREATE INDEX idx_88933_time ON public.libbook USING btree (\"time\");\n\n\n--\n-- TOC entry 3085 (class 1259 OID 33941)\n-- Name: idx_88933_title; Type: INDEX; Schema: public; Owner: flibusta\n--\n\nCREATE INDEX idx_88933_title ON public.libbook USING btree (title);\n\n\n--\n-- TOC entry 3086 (class 1259 OID 33942)\n-- Name: idx_88933_title1; Type: INDEX; Schema: public; Owner: flibusta\n--\n\nCREATE INDEX idx_88933_title1 ON public.libbook USING btree (title1);\n\n\n--\n-- TOC entry 3087 (class 1259 OID 33943)\n-- Name: idx_88933_year; Type: INDEX; Schema: public; Owner: flibusta\n--\n\nCREATE INDEX idx_88933_year ON public.libbook USING btree (year);\n\n\n--\n-- TOC entry 3092 (class 1259 OID 33944)\n-- Name: idx_88956_bookid; Type: INDEX; Schema: public; Owner: flibusta\n--\n\nCREATE INDEX idx_88956_bookid ON public.libbpics USING btree (bookid);\n\n\n--\n-- TOC entry 3093 (class 1259 OID 33970)\n-- Name: idx_88959_filename; Type: INDEX; Schema: public; Owner: flibusta\n--\n\nCREATE UNIQUE INDEX idx_88959_filename ON public.libfilename USING btree (filename);\n\n\n--\n-- TOC entry 3094 (class 1259 OID 33971)\n-- Name: idx_88959_primary; Type: INDEX; Schema: public; Owner: flibusta\n--\n\nCREATE UNIQUE INDEX idx_88959_primary ON public.libfilename USING btree (bookid);\n\n\n--\n-- TOC entry 3095 (class 1259 OID 33972)\n-- Name: idx_88964_ibook; Type: INDEX; Schema: public; Owner: flibusta\n--\n\nCREATE INDEX idx_88964_ibook ON public.libgenre USING btree (bookid);\n\n\n--\n-- TOC entry 3096 (class 1259 OID 33973)\n-- Name: idx_88964_igenre; Type: INDEX; Schema: public; Owner: flibusta\n--\n\nCREATE INDEX idx_88964_igenre ON public.libgenre USING btree (genreid);\n\n\n--\n-- TOC entry 3097 (class 1259 OID 33974)\n-- Name: idx_88964_primary; Type: INDEX; Schema: public; Owner: flibusta\n--\n\nCREATE UNIQUE INDEX idx_88964_primary ON public.libgenre USING btree (id);\n\n\n--\n-- TOC entry 3098 (class 1259 OID 33975)\n-- Name: idx_88964_u; Type: INDEX; Schema: public; Owner: flibusta\n--\n\nCREATE UNIQUE INDEX idx_88964_u ON public.libgenre USING btree (bookid, genreid);\n\n\n--\n-- TOC entry 3099 (class 1259 OID 33976)\n-- Name: idx_88972_genreid; Type: INDEX; Schema: public; Owner: flibusta\n--\n\nCREATE INDEX idx_88972_genreid ON public.libgenrelist USING btree (genreid);\n\n\n--\n-- TOC entry 3100 (class 1259 OID 33977)\n-- Name: idx_88972_meta; Type: INDEX; Schema: public; Owner: flibusta\n--\n\nCREATE INDEX idx_88972_meta ON public.libgenrelist USING btree (genremeta);\n\n\n--\n-- TOC entry 3101 (class 1259 OID 33978)\n-- Name: idx_88972_primary; Type: INDEX; Schema: public; Owner: flibusta\n--\n\nCREATE UNIQUE INDEX idx_88972_primary ON public.libgenrelist USING btree (genreid, genrecode);\n\n\n--\n-- TOC entry 3102 (class 1259 OID 33979)\n-- Name: idx_88981_badid; Type: INDEX; Schema: public; Owner: flibusta\n--\n\nCREATE UNIQUE INDEX idx_88981_badid ON public.libjoinedbooks USING btree (badid);\n\n\n--\n-- TOC entry 3103 (class 1259 OID 33980)\n-- Name: idx_88981_goodid; Type: INDEX; Schema: public; Owner: flibusta\n--\n\nCREATE INDEX idx_88981_goodid ON public.libjoinedbooks USING btree (goodid);\n\n\n--\n-- TOC entry 3104 (class 1259 OID 33981)\n-- Name: idx_88981_primary; Type: INDEX; Schema: public; Owner: flibusta\n--\n\nCREATE UNIQUE INDEX idx_88981_primary ON public.libjoinedbooks USING btree (id);\n\n\n--\n-- TOC entry 3105 (class 1259 OID 33982)\n-- Name: idx_88981_realid; Type: INDEX; Schema: public; Owner: flibusta\n--\n\nCREATE INDEX idx_88981_realid ON public.libjoinedbooks USING btree (realid);\n\n\n--\n-- TOC entry 3106 (class 1259 OID 33983)\n-- Name: idx_88981_time; Type: INDEX; Schema: public; Owner: flibusta\n--\n\nCREATE INDEX idx_88981_time ON public.libjoinedbooks USING btree (\"time\");\n\n\n--\n-- TOC entry 3110 (class 1259 OID 33984)\n-- Name: idx_88990_bu; Type: INDEX; Schema: public; Owner: flibusta\n--\n\nCREATE UNIQUE INDEX idx_88990_bu ON public.librecs USING btree (bid, uid);\n\n\n--\n-- TOC entry 3111 (class 1259 OID 33985)\n-- Name: idx_88990_primary; Type: INDEX; Schema: public; Owner: flibusta\n--\n\nCREATE UNIQUE INDEX idx_88990_primary ON public.librecs USING btree (id);\n\n\n--\n-- TOC entry 3112 (class 1259 OID 33986)\n-- Name: idx_88994_bookid; Type: INDEX; Schema: public; Owner: flibusta\n--\n\nCREATE INDEX idx_88994_bookid ON public.libreviews USING btree (bookid);\n\n\n--\n-- TOC entry 3113 (class 1259 OID 33987)\n-- Name: idx_89000_bookid; Type: INDEX; Schema: public; Owner: flibusta\n--\n\nCREATE INDEX idx_89000_bookid ON public.libseq USING btree (bookid);\n\n\n--\n-- TOC entry 3114 (class 1259 OID 33988)\n-- Name: idx_89000_primary; Type: INDEX; Schema: public; Owner: flibusta\n--\n\nCREATE UNIQUE INDEX idx_89000_primary ON public.libseq USING btree (bookid, seqid);\n\n\n--\n-- TOC entry 3115 (class 1259 OID 33989)\n-- Name: idx_89000_seqid; Type: INDEX; Schema: public; Owner: flibusta\n--\n\nCREATE INDEX idx_89000_seqid ON public.libseq USING btree (seqid);\n\n\n--\n-- TOC entry 3119 (class 1259 OID 33990)\n-- Name: idx_89012_primary; Type: INDEX; Schema: public; Owner: flibusta\n--\n\nCREATE UNIQUE INDEX idx_89012_primary ON public.libsrclang USING btree (bookid);\n\n\n--\n-- TOC entry 3120 (class 1259 OID 33991)\n-- Name: idx_89012_srclang; Type: INDEX; Schema: public; Owner: flibusta\n--\n\nCREATE INDEX idx_89012_srclang ON public.libsrclang USING btree (srclang);\n\n\n--\n-- TOC entry 3121 (class 1259 OID 33992)\n-- Name: idx_89015_primary; Type: INDEX; Schema: public; Owner: flibusta\n--\n\nCREATE UNIQUE INDEX idx_89015_primary ON public.libtranslator USING btree (bookid, translatorid);\n\n\n--\n-- TOC entry 3122 (class 1259 OID 33993)\n-- Name: idx_89015_translatorid; Type: INDEX; Schema: public; Owner: flibusta\n--\n\nCREATE INDEX idx_89015_translatorid ON public.libtranslator USING btree (translatorid);\n\n\n--\n-- TOC entry 3088 (class 1259 OID 102767)\n-- Name: idx_libb_lower_p; Type: INDEX; Schema: public; Owner: flibusta\n--\n\nCREATE INDEX idx_libb_lower_p ON public.libbook USING btree (lower((title)::text) varchar_pattern_ops);\n\n\n--\n-- TOC entry 3132 (class 1259 OID 102766)\n-- Name: idx_seqn_lower_p; Type: INDEX; Schema: public; Owner: flibusta\n--\n\nCREATE INDEX idx_seqn_lower_p ON public.libseqname USING btree (lower((seqname)::text) varchar_pattern_ops);\n\n\n--\n-- TOC entry 3126 (class 1259 OID 34005)\n-- Name: seqname_search_content2; Type: INDEX; Schema: public; Owner: flibusta\n--\n\nCREATE INDEX seqname_search_content2 ON public.seqname USING gin (name public.gin_trgm_ops);\n\n\n--\n-- TOC entry 3125 (class 1259 OID 34006)\n-- Name: sequence_book_id; Type: INDEX; Schema: public; Owner: flibusta\n--\n\nCREATE INDEX sequence_book_id ON public.seq USING btree (book_id);\n\n\n--\n-- TOC entry 3129 (class 1259 OID 34007)\n-- Name: translation_book_id; Type: INDEX; Schema: public; Owner: flibusta\n--\n\nCREATE INDEX translation_book_id ON public.translation USING btree (book_id);\n\n\n--\n-- TOC entry 3140 (class 2606 OID 34033)\n-- Name: seq seq_seq_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: flibusta\n--\n\nALTER TABLE ONLY public.seq\n    ADD CONSTRAINT seq_seq_id_fkey FOREIGN KEY (seq_id) REFERENCES public.seqname(seq_id);\n\n\n-- Completed on 2022-03-30 10:39:37 UTC\n\n--\n-- PostgreSQL database dump complete\n--\n\n"
  },
  {
    "path": "phpdocker/php-fpm/Dockerfile",
    "content": "FROM php:8.1-fpm-alpine\n\nADD https://github.com/mlocati/docker-php-extension-installer/releases/latest/download/install-php-extensions /usr/local/bin/\n\nWORKDIR \"/application\"\n\nRUN apk --update add postgresql-client;\\\n  apk add python3;\\\n  apk add coreutils;\nRUN chmod +x /usr/local/bin/install-php-extensions; install-php-extensions gd bz2 pdo_pgsql zip\n"
  },
  {
    "path": "phpdocker/php-fpm/php-fpm.conf",
    "content": "php_flag[display_errors] = off\nphp_admin_flag[log_errors] = on\n[www]\npm.max_children = 10\n"
  },
  {
    "path": "phpdocker/php-fpm/php-ini-overrides.ini",
    "content": "upload_max_filesize = 500M\npost_max_size = 508M\n"
  },
  {
    "path": "secrets/flibusta_pwd.txt",
    "content": ""
  },
  {
    "path": "secrets/postgres_admin_pwd.txt",
    "content": "flibusta"
  },
  {
    "path": "update_daily.sh",
    "content": "#!/bin/sh\nURL=\"http://flibusta.is/daily/\"\nDEST_DIR=\"./Flibusta.Net\"\nmkdir -p \"$DEST_DIR\"\ncurl -s \"$URL\" > page.html\ngrep -Eo 'href=\"f\\.(fb2|n)\\.[0-9\\-]+\\.zip\"' page.html | sed 's/href=\"//;s/\"//' > links.txt\n\nwhile IFS= read -r file; do\n    wget -c -P \"$DEST_DIR\" \"$URL$file\"\ndone < links.txt\n\nrm page.html links.txt\n"
  }
]